@appium/base-driver 8.4.0 → 8.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.
@@ -105,7 +105,7 @@ function cacheResponse(key, req, res) {
105
105
  if (writeError) {
106
106
  _logger.default.info(`Could not cache the response identified by '${key}': ${writeError.message}`);
107
107
 
108
- IDEMPOTENT_RESPONSES.del(key);
108
+ IDEMPOTENT_RESPONSES.delete(key);
109
109
  return responseStateListener.emit('ready', null);
110
110
  }
111
111
 
@@ -114,7 +114,7 @@ function cacheResponse(key, req, res) {
114
114
 
115
115
  _logger.default.info('Does the client terminate connections too early?');
116
116
 
117
- IDEMPOTENT_RESPONSES.del(key);
117
+ IDEMPOTENT_RESPONSES.delete(key);
118
118
  return responseStateListener.emit('ready', null);
119
119
  }
120
120
 
@@ -158,7 +158,7 @@ async function handleIdempotency(req, res, next) {
158
158
 
159
159
  const rerouteCachedResponse = async cachedResPath => {
160
160
  if (!(await _support.fs.exists(cachedResPath))) {
161
- IDEMPOTENT_RESPONSES.del(key);
161
+ IDEMPOTENT_RESPONSES.delete(key);
162
162
 
163
163
  _logger.default.warn(`Could not read the cached response identified by key '${key}'`);
164
164
 
@@ -190,4 +190,4 @@ async function handleIdempotency(req, res, next) {
190
190
  });
191
191
  }
192
192
  }
193
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL2lkZW1wb3RlbmN5LmpzIl0sIm5hbWVzIjpbIkNBQ0hFX1NJWkUiLCJJREVNUE9URU5UX1JFU1BPTlNFUyIsIkxSVSIsIm1heCIsInVwZGF0ZUFnZU9uR2V0IiwiZGlzcG9zZSIsImtleSIsInJlc3BvbnNlIiwiZnMiLCJyaW1yYWZTeW5jIiwiTU9OSVRPUkVEX01FVEhPRFMiLCJJREVNUE9URU5DWV9LRVlfSEVBREVSIiwicHJvY2VzcyIsIm9uIiwicmVzUGF0aHMiLCJ2YWx1ZXMiLCJtYXAiLCJmaWx0ZXIiLCJCb29sZWFuIiwicmVzUGF0aCIsImlnbiIsImNhY2hlUmVzcG9uc2UiLCJyZXEiLCJyZXMiLCJyZXNwb25zZVN0YXRlTGlzdGVuZXIiLCJFdmVudEVtaXR0ZXIiLCJzZXQiLCJtZXRob2QiLCJwYXRoIiwidG1wRmlsZSIsInJlc29sdmUiLCJvcyIsInRtcGRpciIsInV0aWwiLCJ1dWlkVjQiLCJyZXNwb25zZUxpc3RlbmVyIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJlbWl0Q2xvc2UiLCJvcmlnaW5hbFNvY2tldFdyaXRlciIsInNvY2tldCIsIndyaXRlIiwiYmluZCIsInBhdGNoZWRXcml0ZXIiLCJjaHVuayIsImVuY29kaW5nIiwibmV4dCIsIndyaXRhYmxlIiwid3JpdGVFcnJvciIsImlzUmVzcG9uc2VGdWxseVNlbnQiLCJvbmNlIiwiZSIsImVuZCIsImhhcyIsImxvZyIsImluZm8iLCJlbWl0IiwibWVzc2FnZSIsImRlbCIsImdldCIsImhhbmRsZUlkZW1wb3RlbmN5IiwiaGVhZGVycyIsImluY2x1ZGVzIiwiZGVidWciLCJzdG9yZWRNZXRob2QiLCJzdG9yZWRQYXRoIiwid2FybiIsInJlcm91dGVDYWNoZWRSZXNwb25zZSIsImNhY2hlZFJlc1BhdGgiLCJleGlzdHMiLCJjcmVhdGVSZWFkU3RyZWFtIiwicGlwZSIsImNhY2hlZFJlc3BvbnNlUGF0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxVQUFVLEdBQUcsSUFBbkI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxJQUFJQyxpQkFBSixDQUFRO0FBQ25DQyxFQUFBQSxHQUFHLEVBQUVILFVBRDhCO0FBRW5DSSxFQUFBQSxjQUFjLEVBQUUsSUFGbUI7O0FBR25DQyxFQUFBQSxPQUFPLENBQUVDLEdBQUYsRUFBTztBQUFDQyxJQUFBQTtBQUFELEdBQVAsRUFBbUI7QUFDeEIsUUFBSUEsUUFBSixFQUFjO0FBQ1pDLGtCQUFHQyxVQUFILENBQWNGLFFBQWQ7QUFDRDtBQUNGOztBQVBrQyxDQUFSLENBQTdCO0FBU0EsTUFBTUcsaUJBQWlCLEdBQUcsQ0FBQyxNQUFELEVBQVMsT0FBVCxDQUExQjtBQUNBLE1BQU1DLHNCQUFzQixHQUFHLG1CQUEvQjtBQUVBQyxPQUFPLENBQUNDLEVBQVIsQ0FBVyxNQUFYLEVBQW1CLE1BQU07QUFDdkIsUUFBTUMsUUFBUSxHQUFHLENBQUMsR0FBR2Isb0JBQW9CLENBQUNjLE1BQXJCLEVBQUosRUFDZEMsR0FEYyxDQUNWLENBQUM7QUFBQ1QsSUFBQUE7QUFBRCxHQUFELEtBQWdCQSxRQUROLEVBRWRVLE1BRmMsQ0FFUEMsT0FGTyxDQUFqQjs7QUFHQSxPQUFLLE1BQU1DLE9BQVgsSUFBc0JMLFFBQXRCLEVBQWdDO0FBQzlCLFFBQUk7QUFFRk4sa0JBQUdDLFVBQUgsQ0FBY1UsT0FBZDtBQUNELEtBSEQsQ0FHRSxPQUFPQyxHQUFQLEVBQVksQ0FBRTtBQUNqQjtBQUNGLENBVkQ7O0FBYUEsU0FBU0MsYUFBVCxDQUF3QmYsR0FBeEIsRUFBNkJnQixHQUE3QixFQUFrQ0MsR0FBbEMsRUFBdUM7QUFDckMsUUFBTUMscUJBQXFCLEdBQUcsSUFBSUMsb0JBQUosRUFBOUI7QUFDQXhCLEVBQUFBLG9CQUFvQixDQUFDeUIsR0FBckIsQ0FBeUJwQixHQUF6QixFQUE4QjtBQUM1QnFCLElBQUFBLE1BQU0sRUFBRUwsR0FBRyxDQUFDSyxNQURnQjtBQUU1QkMsSUFBQUEsSUFBSSxFQUFFTixHQUFHLENBQUNNLElBRmtCO0FBRzVCckIsSUFBQUEsUUFBUSxFQUFFLElBSGtCO0FBSTVCaUIsSUFBQUE7QUFKNEIsR0FBOUI7O0FBTUEsUUFBTUssT0FBTyxHQUFHRCxjQUFLRSxPQUFMLENBQWFDLFlBQUdDLE1BQUgsRUFBYixFQUEyQixHQUFFQyxjQUFLQyxNQUFMLEVBQWMsV0FBM0MsQ0FBaEI7O0FBQ0EsUUFBTUMsZ0JBQWdCLEdBQUczQixZQUFHNEIsaUJBQUgsQ0FBcUJQLE9BQXJCLEVBQThCO0FBQ3JEUSxJQUFBQSxTQUFTLEVBQUU7QUFEMEMsR0FBOUIsQ0FBekI7O0FBR0EsUUFBTUMsb0JBQW9CLEdBQUdmLEdBQUcsQ0FBQ2dCLE1BQUosQ0FBV0MsS0FBWCxDQUFpQkMsSUFBakIsQ0FBc0JsQixHQUFHLENBQUNnQixNQUExQixDQUE3Qjs7QUFDQSxRQUFNRyxhQUFhLEdBQUcsQ0FBQ0MsS0FBRCxFQUFRQyxRQUFSLEVBQWtCQyxJQUFsQixLQUEyQjtBQUMvQyxRQUFJVixnQkFBZ0IsQ0FBQ1csUUFBckIsRUFBK0I7QUFDN0JYLE1BQUFBLGdCQUFnQixDQUFDSyxLQUFqQixDQUF1QkcsS0FBdkI7QUFDRDs7QUFDRCxXQUFPTCxvQkFBb0IsQ0FBQ0ssS0FBRCxFQUFRQyxRQUFSLEVBQWtCQyxJQUFsQixDQUEzQjtBQUNELEdBTEQ7O0FBTUF0QixFQUFBQSxHQUFHLENBQUNnQixNQUFKLENBQVdDLEtBQVgsR0FBbUJFLGFBQW5CO0FBQ0EsTUFBSUssVUFBVSxHQUFHLElBQWpCO0FBQ0EsTUFBSUMsbUJBQW1CLEdBQUcsS0FBMUI7QUFDQWIsRUFBQUEsZ0JBQWdCLENBQUNjLElBQWpCLENBQXNCLE9BQXRCLEVBQWdDQyxDQUFELElBQU87QUFDcENILElBQUFBLFVBQVUsR0FBR0csQ0FBYjtBQUNELEdBRkQ7QUFHQTNCLEVBQUFBLEdBQUcsQ0FBQzBCLElBQUosQ0FBUyxRQUFULEVBQW1CLE1BQU07QUFDdkJELElBQUFBLG1CQUFtQixHQUFHLElBQXRCO0FBQ0FiLElBQUFBLGdCQUFnQixDQUFDZ0IsR0FBakI7QUFDRCxHQUhEO0FBSUE1QixFQUFBQSxHQUFHLENBQUMwQixJQUFKLENBQVMsT0FBVCxFQUFrQixNQUFNO0FBQ3RCLFFBQUksQ0FBQ0QsbUJBQUwsRUFBMEI7QUFDeEJiLE1BQUFBLGdCQUFnQixDQUFDZ0IsR0FBakI7QUFDRDtBQUNGLEdBSkQ7QUFLQWhCLEVBQUFBLGdCQUFnQixDQUFDYyxJQUFqQixDQUFzQixPQUF0QixFQUErQixNQUFNO0FBQUE7O0FBQ25DLFFBQUksZ0JBQUExQixHQUFHLENBQUNnQixNQUFKLDREQUFZQyxLQUFaLE1BQXNCRSxhQUExQixFQUF5QztBQUN2Q25CLE1BQUFBLEdBQUcsQ0FBQ2dCLE1BQUosQ0FBV0MsS0FBWCxHQUFtQkYsb0JBQW5CO0FBQ0Q7O0FBRUQsUUFBSSxDQUFDckMsb0JBQW9CLENBQUNtRCxHQUFyQixDQUF5QjlDLEdBQXpCLENBQUwsRUFBb0M7QUFDbEMrQyxzQkFBSUMsSUFBSixDQUFVLCtDQUE4Q2hELEdBQUksS0FBbkQsR0FDTixvQ0FESDs7QUFFQSxhQUFPa0IscUJBQXFCLENBQUMrQixJQUF0QixDQUEyQixPQUEzQixFQUFvQyxJQUFwQyxDQUFQO0FBQ0Q7O0FBQ0QsUUFBSVIsVUFBSixFQUFnQjtBQUNkTSxzQkFBSUMsSUFBSixDQUFVLCtDQUE4Q2hELEdBQUksTUFBS3lDLFVBQVUsQ0FBQ1MsT0FBUSxFQUFwRjs7QUFDQXZELE1BQUFBLG9CQUFvQixDQUFDd0QsR0FBckIsQ0FBeUJuRCxHQUF6QjtBQUNBLGFBQU9rQixxQkFBcUIsQ0FBQytCLElBQXRCLENBQTJCLE9BQTNCLEVBQW9DLElBQXBDLENBQVA7QUFDRDs7QUFDRCxRQUFJLENBQUNQLG1CQUFMLEVBQTBCO0FBQ3hCSyxzQkFBSUMsSUFBSixDQUFVLCtDQUE4Q2hELEdBQUksS0FBbkQsR0FDTixtQ0FESDs7QUFFQStDLHNCQUFJQyxJQUFKLENBQVMsa0RBQVQ7O0FBQ0FyRCxNQUFBQSxvQkFBb0IsQ0FBQ3dELEdBQXJCLENBQXlCbkQsR0FBekI7QUFDQSxhQUFPa0IscUJBQXFCLENBQUMrQixJQUF0QixDQUEyQixPQUEzQixFQUFvQyxJQUFwQyxDQUFQO0FBQ0Q7O0FBRUR0RCxJQUFBQSxvQkFBb0IsQ0FBQ3lELEdBQXJCLENBQXlCcEQsR0FBekIsRUFBOEJDLFFBQTlCLEdBQXlDc0IsT0FBekM7QUFDQUwsSUFBQUEscUJBQXFCLENBQUMrQixJQUF0QixDQUEyQixPQUEzQixFQUFvQzFCLE9BQXBDO0FBQ0QsR0F6QkQ7QUEwQkQ7O0FBRUQsZUFBZThCLGlCQUFmLENBQWtDckMsR0FBbEMsRUFBdUNDLEdBQXZDLEVBQTRDc0IsSUFBNUMsRUFBa0Q7QUFDaEQsUUFBTXZDLEdBQUcsR0FBR2dCLEdBQUcsQ0FBQ3NDLE9BQUosQ0FBWWpELHNCQUFaLENBQVo7O0FBQ0EsTUFBSSxDQUFDTCxHQUFMLEVBQVU7QUFDUixXQUFPdUMsSUFBSSxFQUFYO0FBQ0Q7O0FBQ0QsTUFBSSxDQUFDbkMsaUJBQWlCLENBQUNtRCxRQUFsQixDQUEyQnZDLEdBQUcsQ0FBQ0ssTUFBL0IsQ0FBTCxFQUE2QztBQUczQyxXQUFPa0IsSUFBSSxFQUFYO0FBQ0Q7O0FBRURRLGtCQUFJUyxLQUFKLENBQVcsNEJBQTJCeEQsR0FBSSxFQUExQzs7QUFDQSxNQUFJLENBQUNMLG9CQUFvQixDQUFDbUQsR0FBckIsQ0FBeUI5QyxHQUF6QixDQUFMLEVBQW9DO0FBQ2xDZSxJQUFBQSxhQUFhLENBQUNmLEdBQUQsRUFBTWdCLEdBQU4sRUFBV0MsR0FBWCxDQUFiO0FBQ0EsV0FBT3NCLElBQUksRUFBWDtBQUNEOztBQUVELFFBQU07QUFDSmxCLElBQUFBLE1BQU0sRUFBRW9DLFlBREo7QUFFSm5DLElBQUFBLElBQUksRUFBRW9DLFVBRkY7QUFHSnpELElBQUFBLFFBSEk7QUFJSmlCLElBQUFBO0FBSkksTUFLRnZCLG9CQUFvQixDQUFDeUQsR0FBckIsQ0FBeUJwRCxHQUF6QixDQUxKOztBQU1BLE1BQUlnQixHQUFHLENBQUNLLE1BQUosS0FBZW9DLFlBQWYsSUFBK0J6QyxHQUFHLENBQUNNLElBQUosS0FBYW9DLFVBQWhELEVBQTREO0FBQzFEWCxvQkFBSVksSUFBSixDQUFVLDZEQUE0RDNELEdBQUksR0FBMUU7O0FBQ0ErQyxvQkFBSVksSUFBSixDQUFTLHFEQUFUOztBQUNBLFdBQU9wQixJQUFJLEVBQVg7QUFDRDs7QUFFRCxRQUFNcUIscUJBQXFCLEdBQUcsTUFBT0MsYUFBUCxJQUF5QjtBQUNyRCxRQUFJLEVBQUMsTUFBTTNELFlBQUc0RCxNQUFILENBQVVELGFBQVYsQ0FBUCxDQUFKLEVBQXFDO0FBQ25DbEUsTUFBQUEsb0JBQW9CLENBQUN3RCxHQUFyQixDQUF5Qm5ELEdBQXpCOztBQUNBK0Msc0JBQUlZLElBQUosQ0FBVSx5REFBd0QzRCxHQUFJLEdBQXRFOztBQUNBK0Msc0JBQUlZLElBQUosQ0FBUyxpREFBVDs7QUFDQSxhQUFPcEIsSUFBSSxFQUFYO0FBQ0Q7O0FBQ0RyQyxnQkFBRzZELGdCQUFILENBQW9CRixhQUFwQixFQUFtQ0csSUFBbkMsQ0FBd0MvQyxHQUFHLENBQUNnQixNQUE1QztBQUNELEdBUkQ7O0FBVUEsTUFBSWhDLFFBQUosRUFBYztBQUNaOEMsb0JBQUlDLElBQUosQ0FBVSw4Q0FBNkNoRCxHQUFJLDhCQUEzRDs7QUFDQStDLG9CQUFJQyxJQUFKLENBQVUsK0NBQVY7O0FBQ0EsVUFBTVkscUJBQXFCLENBQUMzRCxRQUFELENBQTNCO0FBQ0QsR0FKRCxNQUlPO0FBQ0w4QyxvQkFBSUMsSUFBSixDQUFVLDhDQUE2Q2hELEdBQUksc0JBQTNEOztBQUNBK0Msb0JBQUlDLElBQUosQ0FBVSxnRUFBVjs7QUFDQTlCLElBQUFBLHFCQUFxQixDQUFDeUIsSUFBdEIsQ0FBMkIsT0FBM0IsRUFBb0MsTUFBT3NCLGtCQUFQLElBQThCO0FBQ2hFLFVBQUksQ0FBQ0Esa0JBQUwsRUFBeUI7QUFDdkIsZUFBTzFCLElBQUksRUFBWDtBQUNEOztBQUNELFlBQU1xQixxQkFBcUIsQ0FBQ0ssa0JBQUQsQ0FBM0I7QUFDRCxLQUxEO0FBTUQ7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IHsgZnMsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuXG5jb25zdCBDQUNIRV9TSVpFID0gMTAyNDtcbmNvbnN0IElERU1QT1RFTlRfUkVTUE9OU0VTID0gbmV3IExSVSh7XG4gIG1heDogQ0FDSEVfU0laRSxcbiAgdXBkYXRlQWdlT25HZXQ6IHRydWUsXG4gIGRpc3Bvc2UgKGtleSwge3Jlc3BvbnNlfSkge1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgZnMucmltcmFmU3luYyhyZXNwb25zZSk7XG4gICAgfVxuICB9LFxufSk7XG5jb25zdCBNT05JVE9SRURfTUVUSE9EUyA9IFsnUE9TVCcsICdQQVRDSCddO1xuY29uc3QgSURFTVBPVEVOQ1lfS0VZX0hFQURFUiA9ICd4LWlkZW1wb3RlbmN5LWtleSc7XG5cbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gIGNvbnN0IHJlc1BhdGhzID0gWy4uLklERU1QT1RFTlRfUkVTUE9OU0VTLnZhbHVlcygpXVxuICAgIC5tYXAoKHtyZXNwb25zZX0pID0+IHJlc3BvbnNlKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gIGZvciAoY29uc3QgcmVzUGF0aCBvZiByZXNQYXRocykge1xuICAgIHRyeSB7XG4gICAgICAvLyBBc3luY2hyb25vdXMgY2FsbHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gb25FeGl0IGhhbmRsZXJcbiAgICAgIGZzLnJpbXJhZlN5bmMocmVzUGF0aCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG59KTtcblxuXG5mdW5jdGlvbiBjYWNoZVJlc3BvbnNlIChrZXksIHJlcSwgcmVzKSB7XG4gIGNvbnN0IHJlc3BvbnNlU3RhdGVMaXN0ZW5lciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgSURFTVBPVEVOVF9SRVNQT05TRVMuc2V0KGtleSwge1xuICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICBwYXRoOiByZXEucGF0aCxcbiAgICByZXNwb25zZTogbnVsbCxcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIsXG4gIH0pO1xuICBjb25zdCB0bXBGaWxlID0gcGF0aC5yZXNvbHZlKG9zLnRtcGRpcigpLCBgJHt1dGlsLnV1aWRWNCgpfS5yZXNwb25zZWApO1xuICBjb25zdCByZXNwb25zZUxpc3RlbmVyID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0odG1wRmlsZSwge1xuICAgIGVtaXRDbG9zZTogdHJ1ZSxcbiAgfSk7XG4gIGNvbnN0IG9yaWdpbmFsU29ja2V0V3JpdGVyID0gcmVzLnNvY2tldC53cml0ZS5iaW5kKHJlcy5zb2NrZXQpO1xuICBjb25zdCBwYXRjaGVkV3JpdGVyID0gKGNodW5rLCBlbmNvZGluZywgbmV4dCkgPT4ge1xuICAgIGlmIChyZXNwb25zZUxpc3RlbmVyLndyaXRhYmxlKSB7XG4gICAgICByZXNwb25zZUxpc3RlbmVyLndyaXRlKGNodW5rKTtcbiAgICB9XG4gICAgcmV0dXJuIG9yaWdpbmFsU29ja2V0V3JpdGVyKGNodW5rLCBlbmNvZGluZywgbmV4dCk7XG4gIH07XG4gIHJlcy5zb2NrZXQud3JpdGUgPSBwYXRjaGVkV3JpdGVyO1xuICBsZXQgd3JpdGVFcnJvciA9IG51bGw7XG4gIGxldCBpc1Jlc3BvbnNlRnVsbHlTZW50ID0gZmFsc2U7XG4gIHJlc3BvbnNlTGlzdGVuZXIub25jZSgnZXJyb3InLCAoZSkgPT4ge1xuICAgIHdyaXRlRXJyb3IgPSBlO1xuICB9KTtcbiAgcmVzLm9uY2UoJ2ZpbmlzaCcsICgpID0+IHtcbiAgICBpc1Jlc3BvbnNlRnVsbHlTZW50ID0gdHJ1ZTtcbiAgICByZXNwb25zZUxpc3RlbmVyLmVuZCgpO1xuICB9KTtcbiAgcmVzLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmICghaXNSZXNwb25zZUZ1bGx5U2VudCkge1xuICAgICAgcmVzcG9uc2VMaXN0ZW5lci5lbmQoKTtcbiAgICB9XG4gIH0pO1xuICByZXNwb25zZUxpc3RlbmVyLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmIChyZXMuc29ja2V0Py53cml0ZSA9PT0gcGF0Y2hlZFdyaXRlcikge1xuICAgICAgcmVzLnNvY2tldC53cml0ZSA9IG9yaWdpbmFsU29ja2V0V3JpdGVyO1xuICAgIH1cblxuICAgIGlmICghSURFTVBPVEVOVF9SRVNQT05TRVMuaGFzKGtleSkpIHtcbiAgICAgIGxvZy5pbmZvKGBDb3VsZCBub3QgY2FjaGUgdGhlIHJlc3BvbnNlIGlkZW50aWZpZWQgYnkgJyR7a2V5fScuIGAgK1xuICAgICAgICBgQ2FjaGUgY29uc2lzdGVuY3kgaGFzIGJlZW4gZGFtYWdlZGApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIG51bGwpO1xuICAgIH1cbiAgICBpZiAod3JpdGVFcnJvcikge1xuICAgICAgbG9nLmluZm8oYENvdWxkIG5vdCBjYWNoZSB0aGUgcmVzcG9uc2UgaWRlbnRpZmllZCBieSAnJHtrZXl9JzogJHt3cml0ZUVycm9yLm1lc3NhZ2V9YCk7XG4gICAgICBJREVNUE9URU5UX1JFU1BPTlNFUy5kZWwoa2V5KTtcbiAgICAgIHJldHVybiByZXNwb25zZVN0YXRlTGlzdGVuZXIuZW1pdCgncmVhZHknLCBudWxsKTtcbiAgICB9XG4gICAgaWYgKCFpc1Jlc3BvbnNlRnVsbHlTZW50KSB7XG4gICAgICBsb2cuaW5mbyhgQ291bGQgbm90IGNhY2hlIHRoZSByZXNwb25zZSBpZGVudGlmaWVkIGJ5ICcke2tleX0nLCBgICtcbiAgICAgICAgYGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIGNvbXBsZXRlZGApO1xuICAgICAgbG9nLmluZm8oJ0RvZXMgdGhlIGNsaWVudCB0ZXJtaW5hdGUgY29ubmVjdGlvbnMgdG9vIGVhcmx5PycpO1xuICAgICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZGVsKGtleSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLmVtaXQoJ3JlYWR5JywgbnVsbCk7XG4gICAgfVxuXG4gICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZ2V0KGtleSkucmVzcG9uc2UgPSB0bXBGaWxlO1xuICAgIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIHRtcEZpbGUpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlSWRlbXBvdGVuY3kgKHJlcSwgcmVzLCBuZXh0KSB7XG4gIGNvbnN0IGtleSA9IHJlcS5oZWFkZXJzW0lERU1QT1RFTkNZX0tFWV9IRUFERVJdO1xuICBpZiAoIWtleSkge1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cbiAgaWYgKCFNT05JVE9SRURfTUVUSE9EUy5pbmNsdWRlcyhyZXEubWV0aG9kKSkge1xuICAgIC8vIEdFVCwgREVMRVRFLCBldGMuIHJlcXVlc3RzIGFyZSBpZGVtcG90ZW50IGJ5IGRlZmF1bHRcbiAgICAvLyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhY2hlIHRoZW1cbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBSZXF1ZXN0IGlkZW1wb3RlbmN5IGtleTogJHtrZXl9YCk7XG4gIGlmICghSURFTVBPVEVOVF9SRVNQT05TRVMuaGFzKGtleSkpIHtcbiAgICBjYWNoZVJlc3BvbnNlKGtleSwgcmVxLCByZXMpO1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgbWV0aG9kOiBzdG9yZWRNZXRob2QsXG4gICAgcGF0aDogc3RvcmVkUGF0aCxcbiAgICByZXNwb25zZSxcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIsXG4gIH0gPSBJREVNUE9URU5UX1JFU1BPTlNFUy5nZXQoa2V5KTtcbiAgaWYgKHJlcS5tZXRob2QgIT09IHN0b3JlZE1ldGhvZCB8fCByZXEucGF0aCAhPT0gc3RvcmVkUGF0aCkge1xuICAgIGxvZy53YXJuKGBHb3QgdHdvIGRpZmZlcmVudCByZXF1ZXN0cyB3aXRoIHRoZSBzYW1lIGlkZW1wb3RlbmN5IGtleSAnJHtrZXl9J2ApO1xuICAgIGxvZy53YXJuKCdJcyB0aGUgY2xpZW50IGdlbmVyYXRpbmcgaWRlbXBvdGVuY3kga2V5cyBwcm9wZXJseT8nKTtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgY29uc3QgcmVyb3V0ZUNhY2hlZFJlc3BvbnNlID0gYXN5bmMgKGNhY2hlZFJlc1BhdGgpID0+IHtcbiAgICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhjYWNoZWRSZXNQYXRoKSkge1xuICAgICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZGVsKGtleSk7XG4gICAgICBsb2cud2FybihgQ291bGQgbm90IHJlYWQgdGhlIGNhY2hlZCByZXNwb25zZSBpZGVudGlmaWVkIGJ5IGtleSAnJHtrZXl9J2ApO1xuICAgICAgbG9nLndhcm4oJ1RoZSB0ZW1wb3Jhcnkgc3RvcmFnZSBpcyBub3QgYWNjZXNzaWJsZSBhbnltb3JlJyk7XG4gICAgICByZXR1cm4gbmV4dCgpO1xuICAgIH1cbiAgICBmcy5jcmVhdGVSZWFkU3RyZWFtKGNhY2hlZFJlc1BhdGgpLnBpcGUocmVzLnNvY2tldCk7XG4gIH07XG5cbiAgaWYgKHJlc3BvbnNlKSB7XG4gICAgbG9nLmluZm8oYFRoZSBzYW1lIHJlcXVlc3Qgd2l0aCB0aGUgaWRlbXBvdGVuY3kga2V5ICcke2tleX0nIGhhcyBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkYCk7XG4gICAgbG9nLmluZm8oYFJlcm91dGluZyBpdHMgcmVzcG9uc2UgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdGApO1xuICAgIGF3YWl0IHJlcm91dGVDYWNoZWRSZXNwb25zZShyZXNwb25zZSk7XG4gIH0gZWxzZSB7XG4gICAgbG9nLmluZm8oYFRoZSBzYW1lIHJlcXVlc3Qgd2l0aCB0aGUgaWRlbXBvdGVuY3kga2V5ICcke2tleX0nIGlzIGJlaW5nIHByb2Nlc3NlZGApO1xuICAgIGxvZy5pbmZvKGBXYWl0aW5nIGZvciB0aGUgcmVzcG9uc2UgdG8gYmUgcmVyb3V0ZWQgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdGApO1xuICAgIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5vbmNlKCdyZWFkeScsIGFzeW5jIChjYWNoZWRSZXNwb25zZVBhdGgpID0+IHtcbiAgICAgIGlmICghY2FjaGVkUmVzcG9uc2VQYXRoKSB7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG4gICAgICBhd2FpdCByZXJvdXRlQ2FjaGVkUmVzcG9uc2UoY2FjaGVkUmVzcG9uc2VQYXRoKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgeyBoYW5kbGVJZGVtcG90ZW5jeSB9O1xuIl19
193
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL2lkZW1wb3RlbmN5LmpzIl0sIm5hbWVzIjpbIkNBQ0hFX1NJWkUiLCJJREVNUE9URU5UX1JFU1BPTlNFUyIsIkxSVSIsIm1heCIsInVwZGF0ZUFnZU9uR2V0IiwiZGlzcG9zZSIsImtleSIsInJlc3BvbnNlIiwiZnMiLCJyaW1yYWZTeW5jIiwiTU9OSVRPUkVEX01FVEhPRFMiLCJJREVNUE9URU5DWV9LRVlfSEVBREVSIiwicHJvY2VzcyIsIm9uIiwicmVzUGF0aHMiLCJ2YWx1ZXMiLCJtYXAiLCJmaWx0ZXIiLCJCb29sZWFuIiwicmVzUGF0aCIsImlnbiIsImNhY2hlUmVzcG9uc2UiLCJyZXEiLCJyZXMiLCJyZXNwb25zZVN0YXRlTGlzdGVuZXIiLCJFdmVudEVtaXR0ZXIiLCJzZXQiLCJtZXRob2QiLCJwYXRoIiwidG1wRmlsZSIsInJlc29sdmUiLCJvcyIsInRtcGRpciIsInV0aWwiLCJ1dWlkVjQiLCJyZXNwb25zZUxpc3RlbmVyIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJlbWl0Q2xvc2UiLCJvcmlnaW5hbFNvY2tldFdyaXRlciIsInNvY2tldCIsIndyaXRlIiwiYmluZCIsInBhdGNoZWRXcml0ZXIiLCJjaHVuayIsImVuY29kaW5nIiwibmV4dCIsIndyaXRhYmxlIiwid3JpdGVFcnJvciIsImlzUmVzcG9uc2VGdWxseVNlbnQiLCJvbmNlIiwiZSIsImVuZCIsImhhcyIsImxvZyIsImluZm8iLCJlbWl0IiwibWVzc2FnZSIsImRlbGV0ZSIsImdldCIsImhhbmRsZUlkZW1wb3RlbmN5IiwiaGVhZGVycyIsImluY2x1ZGVzIiwiZGVidWciLCJzdG9yZWRNZXRob2QiLCJzdG9yZWRQYXRoIiwid2FybiIsInJlcm91dGVDYWNoZWRSZXNwb25zZSIsImNhY2hlZFJlc1BhdGgiLCJleGlzdHMiLCJjcmVhdGVSZWFkU3RyZWFtIiwicGlwZSIsImNhY2hlZFJlc3BvbnNlUGF0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7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ZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IHsgZnMsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuXG5jb25zdCBDQUNIRV9TSVpFID0gMTAyNDtcbmNvbnN0IElERU1QT1RFTlRfUkVTUE9OU0VTID0gbmV3IExSVSh7XG4gIG1heDogQ0FDSEVfU0laRSxcbiAgdXBkYXRlQWdlT25HZXQ6IHRydWUsXG4gIGRpc3Bvc2UgKGtleSwge3Jlc3BvbnNlfSkge1xuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgZnMucmltcmFmU3luYyhyZXNwb25zZSk7XG4gICAgfVxuICB9LFxufSk7XG5jb25zdCBNT05JVE9SRURfTUVUSE9EUyA9IFsnUE9TVCcsICdQQVRDSCddO1xuY29uc3QgSURFTVBPVEVOQ1lfS0VZX0hFQURFUiA9ICd4LWlkZW1wb3RlbmN5LWtleSc7XG5cbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gIGNvbnN0IHJlc1BhdGhzID0gWy4uLklERU1QT1RFTlRfUkVTUE9OU0VTLnZhbHVlcygpXVxuICAgIC5tYXAoKHtyZXNwb25zZX0pID0+IHJlc3BvbnNlKVxuICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gIGZvciAoY29uc3QgcmVzUGF0aCBvZiByZXNQYXRocykge1xuICAgIHRyeSB7XG4gICAgICAvLyBBc3luY2hyb25vdXMgY2FsbHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gb25FeGl0IGhhbmRsZXJcbiAgICAgIGZzLnJpbXJhZlN5bmMocmVzUGF0aCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG59KTtcblxuXG5mdW5jdGlvbiBjYWNoZVJlc3BvbnNlIChrZXksIHJlcSwgcmVzKSB7XG4gIGNvbnN0IHJlc3BvbnNlU3RhdGVMaXN0ZW5lciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgSURFTVBPVEVOVF9SRVNQT05TRVMuc2V0KGtleSwge1xuICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICBwYXRoOiByZXEucGF0aCxcbiAgICByZXNwb25zZTogbnVsbCxcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIsXG4gIH0pO1xuICBjb25zdCB0bXBGaWxlID0gcGF0aC5yZXNvbHZlKG9zLnRtcGRpcigpLCBgJHt1dGlsLnV1aWRWNCgpfS5yZXNwb25zZWApO1xuICBjb25zdCByZXNwb25zZUxpc3RlbmVyID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0odG1wRmlsZSwge1xuICAgIGVtaXRDbG9zZTogdHJ1ZSxcbiAgfSk7XG4gIGNvbnN0IG9yaWdpbmFsU29ja2V0V3JpdGVyID0gcmVzLnNvY2tldC53cml0ZS5iaW5kKHJlcy5zb2NrZXQpO1xuICBjb25zdCBwYXRjaGVkV3JpdGVyID0gKGNodW5rLCBlbmNvZGluZywgbmV4dCkgPT4ge1xuICAgIGlmIChyZXNwb25zZUxpc3RlbmVyLndyaXRhYmxlKSB7XG4gICAgICByZXNwb25zZUxpc3RlbmVyLndyaXRlKGNodW5rKTtcbiAgICB9XG4gICAgcmV0dXJuIG9yaWdpbmFsU29ja2V0V3JpdGVyKGNodW5rLCBlbmNvZGluZywgbmV4dCk7XG4gIH07XG4gIHJlcy5zb2NrZXQud3JpdGUgPSBwYXRjaGVkV3JpdGVyO1xuICBsZXQgd3JpdGVFcnJvciA9IG51bGw7XG4gIGxldCBpc1Jlc3BvbnNlRnVsbHlTZW50ID0gZmFsc2U7XG4gIHJlc3BvbnNlTGlzdGVuZXIub25jZSgnZXJyb3InLCAoZSkgPT4ge1xuICAgIHdyaXRlRXJyb3IgPSBlO1xuICB9KTtcbiAgcmVzLm9uY2UoJ2ZpbmlzaCcsICgpID0+IHtcbiAgICBpc1Jlc3BvbnNlRnVsbHlTZW50ID0gdHJ1ZTtcbiAgICByZXNwb25zZUxpc3RlbmVyLmVuZCgpO1xuICB9KTtcbiAgcmVzLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmICghaXNSZXNwb25zZUZ1bGx5U2VudCkge1xuICAgICAgcmVzcG9uc2VMaXN0ZW5lci5lbmQoKTtcbiAgICB9XG4gIH0pO1xuICByZXNwb25zZUxpc3RlbmVyLm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmIChyZXMuc29ja2V0Py53cml0ZSA9PT0gcGF0Y2hlZFdyaXRlcikge1xuICAgICAgcmVzLnNvY2tldC53cml0ZSA9IG9yaWdpbmFsU29ja2V0V3JpdGVyO1xuICAgIH1cblxuICAgIGlmICghSURFTVBPVEVOVF9SRVNQT05TRVMuaGFzKGtleSkpIHtcbiAgICAgIGxvZy5pbmZvKGBDb3VsZCBub3QgY2FjaGUgdGhlIHJlc3BvbnNlIGlkZW50aWZpZWQgYnkgJyR7a2V5fScuIGAgK1xuICAgICAgICBgQ2FjaGUgY29uc2lzdGVuY3kgaGFzIGJlZW4gZGFtYWdlZGApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIG51bGwpO1xuICAgIH1cbiAgICBpZiAod3JpdGVFcnJvcikge1xuICAgICAgbG9nLmluZm8oYENvdWxkIG5vdCBjYWNoZSB0aGUgcmVzcG9uc2UgaWRlbnRpZmllZCBieSAnJHtrZXl9JzogJHt3cml0ZUVycm9yLm1lc3NhZ2V9YCk7XG4gICAgICBJREVNUE9URU5UX1JFU1BPTlNFUy5kZWxldGUoa2V5KTtcbiAgICAgIHJldHVybiByZXNwb25zZVN0YXRlTGlzdGVuZXIuZW1pdCgncmVhZHknLCBudWxsKTtcbiAgICB9XG4gICAgaWYgKCFpc1Jlc3BvbnNlRnVsbHlTZW50KSB7XG4gICAgICBsb2cuaW5mbyhgQ291bGQgbm90IGNhY2hlIHRoZSByZXNwb25zZSBpZGVudGlmaWVkIGJ5ICcke2tleX0nLCBgICtcbiAgICAgICAgYGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIGNvbXBsZXRlZGApO1xuICAgICAgbG9nLmluZm8oJ0RvZXMgdGhlIGNsaWVudCB0ZXJtaW5hdGUgY29ubmVjdGlvbnMgdG9vIGVhcmx5PycpO1xuICAgICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZGVsZXRlKGtleSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2VTdGF0ZUxpc3RlbmVyLmVtaXQoJ3JlYWR5JywgbnVsbCk7XG4gICAgfVxuXG4gICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZ2V0KGtleSkucmVzcG9uc2UgPSB0bXBGaWxlO1xuICAgIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5lbWl0KCdyZWFkeScsIHRtcEZpbGUpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlSWRlbXBvdGVuY3kgKHJlcSwgcmVzLCBuZXh0KSB7XG4gIGNvbnN0IGtleSA9IHJlcS5oZWFkZXJzW0lERU1QT1RFTkNZX0tFWV9IRUFERVJdO1xuICBpZiAoIWtleSkge1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cbiAgaWYgKCFNT05JVE9SRURfTUVUSE9EUy5pbmNsdWRlcyhyZXEubWV0aG9kKSkge1xuICAgIC8vIEdFVCwgREVMRVRFLCBldGMuIHJlcXVlc3RzIGFyZSBpZGVtcG90ZW50IGJ5IGRlZmF1bHRcbiAgICAvLyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhY2hlIHRoZW1cbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgbG9nLmRlYnVnKGBSZXF1ZXN0IGlkZW1wb3RlbmN5IGtleTogJHtrZXl9YCk7XG4gIGlmICghSURFTVBPVEVOVF9SRVNQT05TRVMuaGFzKGtleSkpIHtcbiAgICBjYWNoZVJlc3BvbnNlKGtleSwgcmVxLCByZXMpO1xuICAgIHJldHVybiBuZXh0KCk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgbWV0aG9kOiBzdG9yZWRNZXRob2QsXG4gICAgcGF0aDogc3RvcmVkUGF0aCxcbiAgICByZXNwb25zZSxcbiAgICByZXNwb25zZVN0YXRlTGlzdGVuZXIsXG4gIH0gPSBJREVNUE9URU5UX1JFU1BPTlNFUy5nZXQoa2V5KTtcbiAgaWYgKHJlcS5tZXRob2QgIT09IHN0b3JlZE1ldGhvZCB8fCByZXEucGF0aCAhPT0gc3RvcmVkUGF0aCkge1xuICAgIGxvZy53YXJuKGBHb3QgdHdvIGRpZmZlcmVudCByZXF1ZXN0cyB3aXRoIHRoZSBzYW1lIGlkZW1wb3RlbmN5IGtleSAnJHtrZXl9J2ApO1xuICAgIGxvZy53YXJuKCdJcyB0aGUgY2xpZW50IGdlbmVyYXRpbmcgaWRlbXBvdGVuY3kga2V5cyBwcm9wZXJseT8nKTtcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgY29uc3QgcmVyb3V0ZUNhY2hlZFJlc3BvbnNlID0gYXN5bmMgKGNhY2hlZFJlc1BhdGgpID0+IHtcbiAgICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhjYWNoZWRSZXNQYXRoKSkge1xuICAgICAgSURFTVBPVEVOVF9SRVNQT05TRVMuZGVsZXRlKGtleSk7XG4gICAgICBsb2cud2FybihgQ291bGQgbm90IHJlYWQgdGhlIGNhY2hlZCByZXNwb25zZSBpZGVudGlmaWVkIGJ5IGtleSAnJHtrZXl9J2ApO1xuICAgICAgbG9nLndhcm4oJ1RoZSB0ZW1wb3Jhcnkgc3RvcmFnZSBpcyBub3QgYWNjZXNzaWJsZSBhbnltb3JlJyk7XG4gICAgICByZXR1cm4gbmV4dCgpO1xuICAgIH1cbiAgICBmcy5jcmVhdGVSZWFkU3RyZWFtKGNhY2hlZFJlc1BhdGgpLnBpcGUocmVzLnNvY2tldCk7XG4gIH07XG5cbiAgaWYgKHJlc3BvbnNlKSB7XG4gICAgbG9nLmluZm8oYFRoZSBzYW1lIHJlcXVlc3Qgd2l0aCB0aGUgaWRlbXBvdGVuY3kga2V5ICcke2tleX0nIGhhcyBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkYCk7XG4gICAgbG9nLmluZm8oYFJlcm91dGluZyBpdHMgcmVzcG9uc2UgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdGApO1xuICAgIGF3YWl0IHJlcm91dGVDYWNoZWRSZXNwb25zZShyZXNwb25zZSk7XG4gIH0gZWxzZSB7XG4gICAgbG9nLmluZm8oYFRoZSBzYW1lIHJlcXVlc3Qgd2l0aCB0aGUgaWRlbXBvdGVuY3kga2V5ICcke2tleX0nIGlzIGJlaW5nIHByb2Nlc3NlZGApO1xuICAgIGxvZy5pbmZvKGBXYWl0aW5nIGZvciB0aGUgcmVzcG9uc2UgdG8gYmUgcmVyb3V0ZWQgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdGApO1xuICAgIHJlc3BvbnNlU3RhdGVMaXN0ZW5lci5vbmNlKCdyZWFkeScsIGFzeW5jIChjYWNoZWRSZXNwb25zZVBhdGgpID0+IHtcbiAgICAgIGlmICghY2FjaGVkUmVzcG9uc2VQYXRoKSB7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG4gICAgICBhd2FpdCByZXJvdXRlQ2FjaGVkUmVzcG9uc2UoY2FjaGVkUmVzcG9uc2VQYXRoKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgeyBoYW5kbGVJZGVtcG90ZW5jeSB9O1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../lib/express/websocket.js"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AACH,qDAPW,MAAM,qCA+BhB;;IArCD;;;;;;;;;;;;OAYG;IACH,6BAPW,MAAM,sBA+BhB;IArBG,sBAA2B;;AAgD/B;;;;;;;;;GASG;AACH,wDAHW,MAAM,GACJ,OAAO,CAgBnB;AAED;;;;;;GAMG;AACH,8CAFa,OAAO,CAYnB;AApED;;;;;;;;;;GAUG;AACH,kDALY,MAAM,cAiBjB;AAjED,+CAAyC"}
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../lib/express/websocket.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;GAYG;AACH,qDAPW,MAAM,qCA8BhB;;IApCD;;;;;;;;;;;;OAYG;IACH,6BAPW,MAAM,sBA8BhB;IArBG,sBAA2B;;AA+C/B;;;;;;;;;GASG;AACH,wDAHW,MAAM,GACJ,OAAO,CAoBnB;AAED;;;;;;GAMG;AACH,8CAFa,OAAO,CAYnB;AAvED;;;;;;;;;;GAUG;AACH,kDALY,MAAM,cAgBjB;AA/DD,+CAAyC"}
@@ -15,39 +15,39 @@ require("source-map-support/register");
15
15
 
16
16
  var _lodash = _interopRequireDefault(require("lodash"));
17
17
 
18
- var _url = _interopRequireDefault(require("url"));
18
+ var _url = require("url");
19
+
20
+ var _bluebird = _interopRequireDefault(require("bluebird"));
19
21
 
20
22
  const DEFAULT_WS_PATHNAME_PREFIX = '/ws';
21
23
  exports.DEFAULT_WS_PATHNAME_PREFIX = DEFAULT_WS_PATHNAME_PREFIX;
22
24
 
23
25
  async function addWebSocketHandler(handlerPathname, handlerServer) {
24
- let isUpgradeListenerAssigned = true;
25
-
26
26
  if (_lodash.default.isUndefined(this.webSocketsMapping)) {
27
27
  this.webSocketsMapping = {};
28
- isUpgradeListenerAssigned = false;
29
- }
28
+ this.on('upgrade', (request, socket, head) => {
29
+ let currentPathname;
30
30
 
31
- this.webSocketsMapping[handlerPathname] = handlerServer;
32
-
33
- if (isUpgradeListenerAssigned) {
34
- return;
35
- }
36
-
37
- this.on('upgrade', (request, socket, head) => {
38
- const currentPathname = _url.default.parse(request.url).pathname;
31
+ try {
32
+ currentPathname = new _url.URL(request.url).pathname;
33
+ } catch (ign) {
34
+ currentPathname = request.url;
35
+ }
39
36
 
40
- for (const [pathname, wsServer] of _lodash.default.toPairs(this.webSocketsMapping)) {
41
- if (currentPathname === pathname) {
42
- wsServer.handleUpgrade(request, socket, head, ws => {
43
- wsServer.emit('connection', ws, request);
44
- });
45
- return;
37
+ for (const [pathname, wsServer] of _lodash.default.toPairs(this.webSocketsMapping)) {
38
+ if (currentPathname === pathname) {
39
+ wsServer.handleUpgrade(request, socket, head, ws => {
40
+ wsServer.emit('connection', ws, request);
41
+ });
42
+ return;
43
+ }
46
44
  }
47
- }
48
45
 
49
- socket.destroy();
50
- });
46
+ socket.destroy();
47
+ });
48
+ }
49
+
50
+ this.webSocketsMapping[handlerPathname] = handlerServer;
51
51
  }
52
52
 
53
53
  async function getWebSocketHandlers(keysFilter = null) {
@@ -55,24 +55,31 @@ async function getWebSocketHandlers(keysFilter = null) {
55
55
  return {};
56
56
  }
57
57
 
58
- let result = {};
59
-
60
- for (const [pathname, wsServer] of _lodash.default.toPairs(this.webSocketsMapping)) {
58
+ return _lodash.default.toPairs(this.webSocketsMapping).reduce((acc, [pathname, wsServer]) => {
61
59
  if (!_lodash.default.isString(keysFilter) || pathname.includes(keysFilter)) {
62
- result[pathname] = wsServer;
60
+ acc[pathname] = wsServer;
63
61
  }
64
- }
65
62
 
66
- return result;
63
+ return acc;
64
+ }, {});
67
65
  }
68
66
 
69
67
  async function removeWebSocketHandler(handlerPathname) {
70
- if (!this.webSocketsMapping || !this.webSocketsMapping[handlerPathname]) {
68
+ var _this$webSocketsMappi;
69
+
70
+ const wsServer = (_this$webSocketsMappi = this.webSocketsMapping) === null || _this$webSocketsMappi === void 0 ? void 0 : _this$webSocketsMappi[handlerPathname];
71
+
72
+ if (!wsServer) {
71
73
  return false;
72
74
  }
73
75
 
74
76
  try {
75
- this.webSocketsMapping[handlerPathname].close();
77
+ wsServer.close();
78
+
79
+ for (const client of wsServer.clients || []) {
80
+ client.terminate();
81
+ }
82
+
76
83
  return true;
77
84
  } catch (ign) {} finally {
78
85
  delete this.webSocketsMapping[handlerPathname];
@@ -86,12 +93,6 @@ async function removeAllWebSocketHandlers() {
86
93
  return false;
87
94
  }
88
95
 
89
- let result = false;
90
-
91
- for (const pathname of _lodash.default.keys(this.webSocketsMapping)) {
92
- result = result || (await this.removeWebSocketHandler(pathname));
93
- }
94
-
95
- return result;
96
+ return _lodash.default.some(await _bluebird.default.all(_lodash.default.keys(this.webSocketsMapping).map(pathname => this.removeWebSocketHandler(pathname))));
96
97
  }
97
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL3dlYnNvY2tldC5qcyJdLCJuYW1lcyI6WyJERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWCIsImFkZFdlYlNvY2tldEhhbmRsZXIiLCJoYW5kbGVyUGF0aG5hbWUiLCJoYW5kbGVyU2VydmVyIiwiaXNVcGdyYWRlTGlzdGVuZXJBc3NpZ25lZCIsIl8iLCJpc1VuZGVmaW5lZCIsIndlYlNvY2tldHNNYXBwaW5nIiwib24iLCJyZXF1ZXN0Iiwic29ja2V0IiwiaGVhZCIsImN1cnJlbnRQYXRobmFtZSIsInVybCIsInBhcnNlIiwicGF0aG5hbWUiLCJ3c1NlcnZlciIsInRvUGFpcnMiLCJoYW5kbGVVcGdyYWRlIiwid3MiLCJlbWl0IiwiZGVzdHJveSIsImdldFdlYlNvY2tldEhhbmRsZXJzIiwia2V5c0ZpbHRlciIsImlzRW1wdHkiLCJyZXN1bHQiLCJpc1N0cmluZyIsImluY2x1ZGVzIiwicmVtb3ZlV2ViU29ja2V0SGFuZGxlciIsImNsb3NlIiwiaWduIiwicmVtb3ZlQWxsV2ViU29ja2V0SGFuZGxlcnMiLCJrZXlzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSwwQkFBMEIsR0FBRyxLQUFuQzs7O0FBZ0JBLGVBQWVDLG1CQUFmLENBQW9DQyxlQUFwQyxFQUFxREMsYUFBckQsRUFBb0U7QUFDbEUsTUFBSUMseUJBQXlCLEdBQUcsSUFBaEM7O0FBQ0EsTUFBSUMsZ0JBQUVDLFdBQUYsQ0FBYyxLQUFLQyxpQkFBbkIsQ0FBSixFQUEyQztBQUN6QyxTQUFLQSxpQkFBTCxHQUF5QixFQUF6QjtBQUNBSCxJQUFBQSx5QkFBeUIsR0FBRyxLQUE1QjtBQUNEOztBQUNELE9BQUtHLGlCQUFMLENBQXVCTCxlQUF2QixJQUEwQ0MsYUFBMUM7O0FBQ0EsTUFBSUMseUJBQUosRUFBK0I7QUFDN0I7QUFDRDs7QUFHRCxPQUFLSSxFQUFMLENBQVEsU0FBUixFQUFtQixDQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBa0JDLElBQWxCLEtBQTJCO0FBQzVDLFVBQU1DLGVBQWUsR0FBR0MsYUFBSUMsS0FBSixDQUFVTCxPQUFPLENBQUNJLEdBQWxCLEVBQXVCRSxRQUEvQzs7QUFDQSxTQUFLLE1BQU0sQ0FBQ0EsUUFBRCxFQUFXQyxRQUFYLENBQVgsSUFBbUNYLGdCQUFFWSxPQUFGLENBQVUsS0FBS1YsaUJBQWYsQ0FBbkMsRUFBc0U7QUFDcEUsVUFBSUssZUFBZSxLQUFLRyxRQUF4QixFQUFrQztBQUNoQ0MsUUFBQUEsUUFBUSxDQUFDRSxhQUFULENBQXVCVCxPQUF2QixFQUFnQ0MsTUFBaEMsRUFBd0NDLElBQXhDLEVBQStDUSxFQUFELElBQVE7QUFDcERILFVBQUFBLFFBQVEsQ0FBQ0ksSUFBVCxDQUFjLFlBQWQsRUFBNEJELEVBQTVCLEVBQWdDVixPQUFoQztBQUNELFNBRkQ7QUFHQTtBQUNEO0FBQ0Y7O0FBQ0RDLElBQUFBLE1BQU0sQ0FBQ1csT0FBUDtBQUNELEdBWEQ7QUFZRDs7QUFhRCxlQUFlQyxvQkFBZixDQUFxQ0MsVUFBVSxHQUFHLElBQWxELEVBQXdEO0FBQ3RELE1BQUlsQixnQkFBRW1CLE9BQUYsQ0FBVSxLQUFLakIsaUJBQWYsQ0FBSixFQUF1QztBQUNyQyxXQUFPLEVBQVA7QUFDRDs7QUFFRCxNQUFJa0IsTUFBTSxHQUFHLEVBQWI7O0FBQ0EsT0FBSyxNQUFNLENBQUNWLFFBQUQsRUFBV0MsUUFBWCxDQUFYLElBQW1DWCxnQkFBRVksT0FBRixDQUFVLEtBQUtWLGlCQUFmLENBQW5DLEVBQXNFO0FBQ3BFLFFBQUksQ0FBQ0YsZ0JBQUVxQixRQUFGLENBQVdILFVBQVgsQ0FBRCxJQUEyQlIsUUFBUSxDQUFDWSxRQUFULENBQWtCSixVQUFsQixDQUEvQixFQUE4RDtBQUM1REUsTUFBQUEsTUFBTSxDQUFDVixRQUFELENBQU4sR0FBbUJDLFFBQW5CO0FBQ0Q7QUFDRjs7QUFDRCxTQUFPUyxNQUFQO0FBQ0Q7O0FBWUQsZUFBZUcsc0JBQWYsQ0FBdUMxQixlQUF2QyxFQUF3RDtBQUN0RCxNQUFJLENBQUMsS0FBS0ssaUJBQU4sSUFBMkIsQ0FBQyxLQUFLQSxpQkFBTCxDQUF1QkwsZUFBdkIsQ0FBaEMsRUFBeUU7QUFDdkUsV0FBTyxLQUFQO0FBQ0Q7O0FBRUQsTUFBSTtBQUNGLFNBQUtLLGlCQUFMLENBQXVCTCxlQUF2QixFQUF3QzJCLEtBQXhDO0FBQ0EsV0FBTyxJQUFQO0FBQ0QsR0FIRCxDQUdFLE9BQU9DLEdBQVAsRUFBWSxDQUViLENBTEQsU0FLVTtBQUNSLFdBQU8sS0FBS3ZCLGlCQUFMLENBQXVCTCxlQUF2QixDQUFQO0FBQ0Q7O0FBQ0QsU0FBTyxLQUFQO0FBQ0Q7O0FBU0QsZUFBZTZCLDBCQUFmLEdBQTZDO0FBQzNDLE1BQUkxQixnQkFBRW1CLE9BQUYsQ0FBVSxLQUFLakIsaUJBQWYsQ0FBSixFQUF1QztBQUNyQyxXQUFPLEtBQVA7QUFDRDs7QUFFRCxNQUFJa0IsTUFBTSxHQUFHLEtBQWI7O0FBQ0EsT0FBSyxNQUFNVixRQUFYLElBQXVCVixnQkFBRTJCLElBQUYsQ0FBTyxLQUFLekIsaUJBQVosQ0FBdkIsRUFBdUQ7QUFDckRrQixJQUFBQSxNQUFNLEdBQUdBLE1BQU0sS0FBSSxNQUFNLEtBQUtHLHNCQUFMLENBQTRCYixRQUE1QixDQUFWLENBQWY7QUFDRDs7QUFDRCxTQUFPVSxNQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHVybCBmcm9tICd1cmwnO1xuXG5jb25zdCBERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWCA9ICcvd3MnO1xuXG5cbi8qKlxuICogQWRkcyB3ZWJzb2NrZXQgaGFuZGxlciB0byBleHByZXNzIHNlcnZlciBpbnN0YW5jZS5cbiAqIEl0IGlzIGV4cGVjdGVkIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIEV4cHJlc3NcbiAqIHNlcnZlciBpbnN0YW5jZSBjb250ZXh0LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBzZXJ2ZXIgLSBBbiBpbnN0YW5jZSBvZiBleHByZXNzIEhUVFAgc2VydmVyLlxuICogQHBhcmFtIHtzdHJpbmd9IGhhbmRsZXJQYXRobmFtZSAtIFdlYiBzb2NrZXQgZW5kcG9pbnQgcGF0aCBzdGFydGluZyB3aXRoXG4gKiBhIHNpbmdsZSBzbGFzaCBjaGFyYWN0ZXIuIEl0IGlzIHJlY29tbWVuZGVkIHRvIGFsd2F5cyBhZGRcbiAqIERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYIHRvIGFsbCB3ZWIgc29ja2V0IHBhdGhuYW1lcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBoYW5kbGVyU2VydmVyIC0gV2ViU29ja2V0IHNlcnZlciBpbnN0YW5jZS4gU2VlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vd2Vic29ja2V0cy93cy9wdWxsLzg4NSBmb3IgbW9yZSBkZXRhaWxzXG4gKiBvbiBob3cgdG8gY29uZmlndXJlIHRoZSBoYW5kbGVyIHByb3Blcmx5LlxuICovXG5hc3luYyBmdW5jdGlvbiBhZGRXZWJTb2NrZXRIYW5kbGVyIChoYW5kbGVyUGF0aG5hbWUsIGhhbmRsZXJTZXJ2ZXIpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIGxldCBpc1VwZ3JhZGVMaXN0ZW5lckFzc2lnbmVkID0gdHJ1ZTtcbiAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy53ZWJTb2NrZXRzTWFwcGluZykpIHtcbiAgICB0aGlzLndlYlNvY2tldHNNYXBwaW5nID0ge307XG4gICAgaXNVcGdyYWRlTGlzdGVuZXJBc3NpZ25lZCA9IGZhbHNlO1xuICB9XG4gIHRoaXMud2ViU29ja2V0c01hcHBpbmdbaGFuZGxlclBhdGhuYW1lXSA9IGhhbmRsZXJTZXJ2ZXI7XG4gIGlmIChpc1VwZ3JhZGVMaXN0ZW5lckFzc2lnbmVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3dlYnNvY2tldHMvd3MvcHVsbC84ODVcbiAgdGhpcy5vbigndXBncmFkZScsIChyZXF1ZXN0LCBzb2NrZXQsIGhlYWQpID0+IHtcbiAgICBjb25zdCBjdXJyZW50UGF0aG5hbWUgPSB1cmwucGFyc2UocmVxdWVzdC51cmwpLnBhdGhuYW1lO1xuICAgIGZvciAoY29uc3QgW3BhdGhuYW1lLCB3c1NlcnZlcl0gb2YgXy50b1BhaXJzKHRoaXMud2ViU29ja2V0c01hcHBpbmcpKSB7XG4gICAgICBpZiAoY3VycmVudFBhdGhuYW1lID09PSBwYXRobmFtZSkge1xuICAgICAgICB3c1NlcnZlci5oYW5kbGVVcGdyYWRlKHJlcXVlc3QsIHNvY2tldCwgaGVhZCwgKHdzKSA9PiB7XG4gICAgICAgICAgd3NTZXJ2ZXIuZW1pdCgnY29ubmVjdGlvbicsIHdzLCByZXF1ZXN0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgc29ja2V0LmRlc3Ryb3koKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0dXJucyB3ZWIgc29ja2V0IGhhbmRsZXJzIHJlZ2lzdGVyZWQgZm9yIHRoZSBnaXZlbiBzZXJ2ZXJcbiAqIGluc3RhbmNlLlxuICogSXQgaXMgZXhwZWN0ZWQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gRXhwcmVzc1xuICogc2VydmVyIGluc3RhbmNlIGNvbnRleHQuXG4gKlxuICogQHBhcmFtIHs/c3RyaW5nfSBrZXlzRmlsdGVyIFtudWxsXS0gT25seSBpbmNsdWRlIHBhdGhuYW1lcyB3aXRoIGdpdmVuXG4gKiBga2V5c0ZpbHRlcmAgdmFsdWUgaWYgc2V0LiBBbGwgcGFpcnMgd2lsbCBiZSBpbmNsdWRlZCBieSBkZWZhdWx0LlxuICogQHJldHVybnMge09iamVjdH0gcGF0aG5hbWVzIHRvIHdlYnNvY2tldCBzZXJ2ZXIgaXNudGFuY2VzIG1hcHBpbmdcbiAqIG1hdGNoaW5nIHRoZSBzZWFyY2ggY3JpdGVyaWEgb3IgYW4gZW1wdHkgb2JqZWN0IG90aGVyd2lzZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0V2ViU29ja2V0SGFuZGxlcnMgKGtleXNGaWx0ZXIgPSBudWxsKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICBpZiAoXy5pc0VtcHR5KHRoaXMud2ViU29ja2V0c01hcHBpbmcpKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgbGV0IHJlc3VsdCA9IHt9O1xuICBmb3IgKGNvbnN0IFtwYXRobmFtZSwgd3NTZXJ2ZXJdIG9mIF8udG9QYWlycyh0aGlzLndlYlNvY2tldHNNYXBwaW5nKSkge1xuICAgIGlmICghXy5pc1N0cmluZyhrZXlzRmlsdGVyKSB8fCBwYXRobmFtZS5pbmNsdWRlcyhrZXlzRmlsdGVyKSkge1xuICAgICAgcmVzdWx0W3BhdGhuYW1lXSA9IHdzU2VydmVyO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFJlbW92ZXMgZXhpc3Rpbmcgd2Vic29ja2V0IGhhbmRsZXIgZnJvbSBleHByZXNzIHNlcnZlciBpbnN0YW5jZS5cbiAqIFRoZSBjYWxsIGlzIGlnbm9yZWQgaWYgdGhlIGdpdmVuIGBoYW5kbGVyUGF0aG5hbWVgIGhhbmRsZXJcbiAqIGlzIG5vdCBwcmVzZW50IGluIHRoZSBoYW5kbGVycyBsaXN0LlxuICogSXQgaXMgZXhwZWN0ZWQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gRXhwcmVzc1xuICogc2VydmVyIGluc3RhbmNlIGNvbnRleHQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGhhbmRsZXJQYXRobmFtZSAtIFdlYnNvY2tldCBlbmRwb2ludCBwYXRoLlxuICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIGhhbmRsZXJQYXRobmFtZSB3YXMgZm91bmQgYW5kIGRlbGV0ZWRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVtb3ZlV2ViU29ja2V0SGFuZGxlciAoaGFuZGxlclBhdGhuYW1lKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICBpZiAoIXRoaXMud2ViU29ja2V0c01hcHBpbmcgfHwgIXRoaXMud2ViU29ja2V0c01hcHBpbmdbaGFuZGxlclBhdGhuYW1lXSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgdGhpcy53ZWJTb2NrZXRzTWFwcGluZ1toYW5kbGVyUGF0aG5hbWVdLmNsb3NlKCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGlnbikge1xuICAgIC8vIGlnbm9yZVxuICB9IGZpbmFsbHkge1xuICAgIGRlbGV0ZSB0aGlzLndlYlNvY2tldHNNYXBwaW5nW2hhbmRsZXJQYXRobmFtZV07XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGV4aXN0aW5nIHdlYnNvY2tldCBoYW5kbGVyIGZyb20gZXhwcmVzcyBzZXJ2ZXIgaW5zdGFuY2UuXG4gKiBJdCBpcyBleHBlY3RlZCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBFeHByZXNzXG4gKiBzZXJ2ZXIgaW5zdGFuY2UgY29udGV4dC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgaGFuZGxlciBoYXMgYmVlbiBkZWxldGVkXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlbW92ZUFsbFdlYlNvY2tldEhhbmRsZXJzICgpIHtcbiAgaWYgKF8uaXNFbXB0eSh0aGlzLndlYlNvY2tldHNNYXBwaW5nKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGxldCByZXN1bHQgPSBmYWxzZTtcbiAgZm9yIChjb25zdCBwYXRobmFtZSBvZiBfLmtleXModGhpcy53ZWJTb2NrZXRzTWFwcGluZykpIHtcbiAgICByZXN1bHQgPSByZXN1bHQgfHwgYXdhaXQgdGhpcy5yZW1vdmVXZWJTb2NrZXRIYW5kbGVyKHBhdGhuYW1lKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQge1xuICBhZGRXZWJTb2NrZXRIYW5kbGVyLCByZW1vdmVXZWJTb2NrZXRIYW5kbGVyLCByZW1vdmVBbGxXZWJTb2NrZXRIYW5kbGVycyxcbiAgZ2V0V2ViU29ja2V0SGFuZGxlcnMsIERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYLFxufTtcbiJdfQ==
98
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHByZXNzL3dlYnNvY2tldC5qcyJdLCJuYW1lcyI6WyJERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWCIsImFkZFdlYlNvY2tldEhhbmRsZXIiLCJoYW5kbGVyUGF0aG5hbWUiLCJoYW5kbGVyU2VydmVyIiwiXyIsImlzVW5kZWZpbmVkIiwid2ViU29ja2V0c01hcHBpbmciLCJvbiIsInJlcXVlc3QiLCJzb2NrZXQiLCJoZWFkIiwiY3VycmVudFBhdGhuYW1lIiwiVVJMIiwidXJsIiwicGF0aG5hbWUiLCJpZ24iLCJ3c1NlcnZlciIsInRvUGFpcnMiLCJoYW5kbGVVcGdyYWRlIiwid3MiLCJlbWl0IiwiZGVzdHJveSIsImdldFdlYlNvY2tldEhhbmRsZXJzIiwia2V5c0ZpbHRlciIsImlzRW1wdHkiLCJyZWR1Y2UiLCJhY2MiLCJpc1N0cmluZyIsImluY2x1ZGVzIiwicmVtb3ZlV2ViU29ja2V0SGFuZGxlciIsImNsb3NlIiwiY2xpZW50IiwiY2xpZW50cyIsInRlcm1pbmF0ZSIsInJlbW92ZUFsbFdlYlNvY2tldEhhbmRsZXJzIiwic29tZSIsIkIiLCJhbGwiLCJrZXlzIiwibWFwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSwwQkFBMEIsR0FBRyxLQUFuQzs7O0FBZ0JBLGVBQWVDLG1CQUFmLENBQW9DQyxlQUFwQyxFQUFxREMsYUFBckQsRUFBb0U7QUFDbEUsTUFBSUMsZ0JBQUVDLFdBQUYsQ0FBYyxLQUFLQyxpQkFBbkIsQ0FBSixFQUEyQztBQUN6QyxTQUFLQSxpQkFBTCxHQUF5QixFQUF6QjtBQUVBLFNBQUtDLEVBQUwsQ0FBUSxTQUFSLEVBQW1CLENBQUNDLE9BQUQsRUFBVUMsTUFBVixFQUFrQkMsSUFBbEIsS0FBMkI7QUFDNUMsVUFBSUMsZUFBSjs7QUFDQSxVQUFJO0FBQ0ZBLFFBQUFBLGVBQWUsR0FBSSxJQUFJQyxRQUFKLENBQVFKLE9BQU8sQ0FBQ0ssR0FBaEIsQ0FBRCxDQUF1QkMsUUFBekM7QUFDRCxPQUZELENBRUUsT0FBT0MsR0FBUCxFQUFZO0FBQ1pKLFFBQUFBLGVBQWUsR0FBR0gsT0FBTyxDQUFDSyxHQUExQjtBQUNEOztBQUNELFdBQUssTUFBTSxDQUFDQyxRQUFELEVBQVdFLFFBQVgsQ0FBWCxJQUFtQ1osZ0JBQUVhLE9BQUYsQ0FBVSxLQUFLWCxpQkFBZixDQUFuQyxFQUFzRTtBQUNwRSxZQUFJSyxlQUFlLEtBQUtHLFFBQXhCLEVBQWtDO0FBQ2hDRSxVQUFBQSxRQUFRLENBQUNFLGFBQVQsQ0FBdUJWLE9BQXZCLEVBQWdDQyxNQUFoQyxFQUF3Q0MsSUFBeEMsRUFBK0NTLEVBQUQsSUFBUTtBQUNwREgsWUFBQUEsUUFBUSxDQUFDSSxJQUFULENBQWMsWUFBZCxFQUE0QkQsRUFBNUIsRUFBZ0NYLE9BQWhDO0FBQ0QsV0FGRDtBQUdBO0FBQ0Q7QUFDRjs7QUFDREMsTUFBQUEsTUFBTSxDQUFDWSxPQUFQO0FBQ0QsS0FoQkQ7QUFpQkQ7O0FBQ0QsT0FBS2YsaUJBQUwsQ0FBdUJKLGVBQXZCLElBQTBDQyxhQUExQztBQUNEOztBQWFELGVBQWVtQixvQkFBZixDQUFxQ0MsVUFBVSxHQUFHLElBQWxELEVBQXdEO0FBQ3RELE1BQUluQixnQkFBRW9CLE9BQUYsQ0FBVSxLQUFLbEIsaUJBQWYsQ0FBSixFQUF1QztBQUNyQyxXQUFPLEVBQVA7QUFDRDs7QUFFRCxTQUFPRixnQkFBRWEsT0FBRixDQUFVLEtBQUtYLGlCQUFmLEVBQWtDbUIsTUFBbEMsQ0FBeUMsQ0FBQ0MsR0FBRCxFQUFNLENBQUNaLFFBQUQsRUFBV0UsUUFBWCxDQUFOLEtBQStCO0FBQzdFLFFBQUksQ0FBQ1osZ0JBQUV1QixRQUFGLENBQVdKLFVBQVgsQ0FBRCxJQUEyQlQsUUFBUSxDQUFDYyxRQUFULENBQWtCTCxVQUFsQixDQUEvQixFQUE4RDtBQUM1REcsTUFBQUEsR0FBRyxDQUFDWixRQUFELENBQUgsR0FBZ0JFLFFBQWhCO0FBQ0Q7O0FBQ0QsV0FBT1UsR0FBUDtBQUNELEdBTE0sRUFLSixFQUxJLENBQVA7QUFNRDs7QUFZRCxlQUFlRyxzQkFBZixDQUF1QzNCLGVBQXZDLEVBQXdEO0FBQUE7O0FBQ3RELFFBQU1jLFFBQVEsNEJBQUcsS0FBS1YsaUJBQVIsMERBQUcsc0JBQXlCSixlQUF6QixDQUFqQjs7QUFDQSxNQUFJLENBQUNjLFFBQUwsRUFBZTtBQUNiLFdBQU8sS0FBUDtBQUNEOztBQUVELE1BQUk7QUFDRkEsSUFBQUEsUUFBUSxDQUFDYyxLQUFUOztBQUNBLFNBQUssTUFBTUMsTUFBWCxJQUFzQmYsUUFBUSxDQUFDZ0IsT0FBVCxJQUFvQixFQUExQyxFQUErQztBQUM3Q0QsTUFBQUEsTUFBTSxDQUFDRSxTQUFQO0FBQ0Q7O0FBQ0QsV0FBTyxJQUFQO0FBQ0QsR0FORCxDQU1FLE9BQU9sQixHQUFQLEVBQVksQ0FFYixDQVJELFNBUVU7QUFDUixXQUFPLEtBQUtULGlCQUFMLENBQXVCSixlQUF2QixDQUFQO0FBQ0Q7O0FBQ0QsU0FBTyxLQUFQO0FBQ0Q7O0FBU0QsZUFBZWdDLDBCQUFmLEdBQTZDO0FBQzNDLE1BQUk5QixnQkFBRW9CLE9BQUYsQ0FBVSxLQUFLbEIsaUJBQWYsQ0FBSixFQUF1QztBQUNyQyxXQUFPLEtBQVA7QUFDRDs7QUFFRCxTQUFPRixnQkFBRStCLElBQUYsQ0FDTCxNQUFNQyxrQkFBRUMsR0FBRixDQUNKakMsZ0JBQUVrQyxJQUFGLENBQU8sS0FBS2hDLGlCQUFaLEVBQStCaUMsR0FBL0IsQ0FBb0N6QixRQUFELElBQWMsS0FBS2Usc0JBQUwsQ0FBNEJmLFFBQTVCLENBQWpELENBREksQ0FERCxDQUFQO0FBS0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgVVJMIH0gZnJvbSAndXJsJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxuY29uc3QgREVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVggPSAnL3dzJztcblxuXG4vKipcbiAqIEFkZHMgd2Vic29ja2V0IGhhbmRsZXIgdG8gZXhwcmVzcyBzZXJ2ZXIgaW5zdGFuY2UuXG4gKiBJdCBpcyBleHBlY3RlZCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBFeHByZXNzXG4gKiBzZXJ2ZXIgaW5zdGFuY2UgY29udGV4dC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gc2VydmVyIC0gQW4gaW5zdGFuY2Ugb2YgZXhwcmVzcyBIVFRQIHNlcnZlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBoYW5kbGVyUGF0aG5hbWUgLSBXZWIgc29ja2V0IGVuZHBvaW50IHBhdGggc3RhcnRpbmcgd2l0aFxuICogYSBzaW5nbGUgc2xhc2ggY2hhcmFjdGVyLiBJdCBpcyByZWNvbW1lbmRlZCB0byBhbHdheXMgYWRkXG4gKiBERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWCB0byBhbGwgd2ViIHNvY2tldCBwYXRobmFtZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gaGFuZGxlclNlcnZlciAtIFdlYlNvY2tldCBzZXJ2ZXIgaW5zdGFuY2UuIFNlZVxuICogaHR0cHM6Ly9naXRodWIuY29tL3dlYnNvY2tldHMvd3MvcHVsbC84ODUgZm9yIG1vcmUgZGV0YWlsc1xuICogb24gaG93IHRvIGNvbmZpZ3VyZSB0aGUgaGFuZGxlciBwcm9wZXJseS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gYWRkV2ViU29ja2V0SGFuZGxlciAoaGFuZGxlclBhdGhuYW1lLCBoYW5kbGVyU2VydmVyKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLndlYlNvY2tldHNNYXBwaW5nKSkge1xuICAgIHRoaXMud2ViU29ja2V0c01hcHBpbmcgPSB7fTtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2Vic29ja2V0cy93cy9wdWxsLzg4NVxuICAgIHRoaXMub24oJ3VwZ3JhZGUnLCAocmVxdWVzdCwgc29ja2V0LCBoZWFkKSA9PiB7XG4gICAgICBsZXQgY3VycmVudFBhdGhuYW1lO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY3VycmVudFBhdGhuYW1lID0gKG5ldyBVUkwocmVxdWVzdC51cmwpKS5wYXRobmFtZTtcbiAgICAgIH0gY2F0Y2ggKGlnbikge1xuICAgICAgICBjdXJyZW50UGF0aG5hbWUgPSByZXF1ZXN0LnVybDtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgW3BhdGhuYW1lLCB3c1NlcnZlcl0gb2YgXy50b1BhaXJzKHRoaXMud2ViU29ja2V0c01hcHBpbmcpKSB7XG4gICAgICAgIGlmIChjdXJyZW50UGF0aG5hbWUgPT09IHBhdGhuYW1lKSB7XG4gICAgICAgICAgd3NTZXJ2ZXIuaGFuZGxlVXBncmFkZShyZXF1ZXN0LCBzb2NrZXQsIGhlYWQsICh3cykgPT4ge1xuICAgICAgICAgICAgd3NTZXJ2ZXIuZW1pdCgnY29ubmVjdGlvbicsIHdzLCByZXF1ZXN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNvY2tldC5kZXN0cm95KCk7XG4gICAgfSk7XG4gIH1cbiAgdGhpcy53ZWJTb2NrZXRzTWFwcGluZ1toYW5kbGVyUGF0aG5hbWVdID0gaGFuZGxlclNlcnZlcjtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdlYiBzb2NrZXQgaGFuZGxlcnMgcmVnaXN0ZXJlZCBmb3IgdGhlIGdpdmVuIHNlcnZlclxuICogaW5zdGFuY2UuXG4gKiBJdCBpcyBleHBlY3RlZCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBFeHByZXNzXG4gKiBzZXJ2ZXIgaW5zdGFuY2UgY29udGV4dC5cbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IGtleXNGaWx0ZXIgW251bGxdLSBPbmx5IGluY2x1ZGUgcGF0aG5hbWVzIHdpdGggZ2l2ZW5cbiAqIGBrZXlzRmlsdGVyYCB2YWx1ZSBpZiBzZXQuIEFsbCBwYWlycyB3aWxsIGJlIGluY2x1ZGVkIGJ5IGRlZmF1bHQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBwYXRobmFtZXMgdG8gd2Vic29ja2V0IHNlcnZlciBpc250YW5jZXMgbWFwcGluZ1xuICogbWF0Y2hpbmcgdGhlIHNlYXJjaCBjcml0ZXJpYSBvciBhbiBlbXB0eSBvYmplY3Qgb3RoZXJ3aXNlLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRXZWJTb2NrZXRIYW5kbGVycyAoa2V5c0ZpbHRlciA9IG51bGwpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIGlmIChfLmlzRW1wdHkodGhpcy53ZWJTb2NrZXRzTWFwcGluZykpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICByZXR1cm4gXy50b1BhaXJzKHRoaXMud2ViU29ja2V0c01hcHBpbmcpLnJlZHVjZSgoYWNjLCBbcGF0aG5hbWUsIHdzU2VydmVyXSkgPT4ge1xuICAgIGlmICghXy5pc1N0cmluZyhrZXlzRmlsdGVyKSB8fCBwYXRobmFtZS5pbmNsdWRlcyhrZXlzRmlsdGVyKSkge1xuICAgICAgYWNjW3BhdGhuYW1lXSA9IHdzU2VydmVyO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBleGlzdGluZyB3ZWJzb2NrZXQgaGFuZGxlciBmcm9tIGV4cHJlc3Mgc2VydmVyIGluc3RhbmNlLlxuICogVGhlIGNhbGwgaXMgaWdub3JlZCBpZiB0aGUgZ2l2ZW4gYGhhbmRsZXJQYXRobmFtZWAgaGFuZGxlclxuICogaXMgbm90IHByZXNlbnQgaW4gdGhlIGhhbmRsZXJzIGxpc3QuXG4gKiBJdCBpcyBleHBlY3RlZCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBFeHByZXNzXG4gKiBzZXJ2ZXIgaW5zdGFuY2UgY29udGV4dC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFuZGxlclBhdGhuYW1lIC0gV2Vic29ja2V0IGVuZHBvaW50IHBhdGguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgaGFuZGxlclBhdGhuYW1lIHdhcyBmb3VuZCBhbmQgZGVsZXRlZFxuICovXG5hc3luYyBmdW5jdGlvbiByZW1vdmVXZWJTb2NrZXRIYW5kbGVyIChoYW5kbGVyUGF0aG5hbWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIGNvbnN0IHdzU2VydmVyID0gdGhpcy53ZWJTb2NrZXRzTWFwcGluZz8uW2hhbmRsZXJQYXRobmFtZV07XG4gIGlmICghd3NTZXJ2ZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0cnkge1xuICAgIHdzU2VydmVyLmNsb3NlKCk7XG4gICAgZm9yIChjb25zdCBjbGllbnQgb2YgKHdzU2VydmVyLmNsaWVudHMgfHwgW10pKSB7XG4gICAgICBjbGllbnQudGVybWluYXRlKCk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChpZ24pIHtcbiAgICAvLyBpZ25vcmVcbiAgfSBmaW5hbGx5IHtcbiAgICBkZWxldGUgdGhpcy53ZWJTb2NrZXRzTWFwcGluZ1toYW5kbGVyUGF0aG5hbWVdO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBleGlzdGluZyB3ZWJzb2NrZXQgaGFuZGxlciBmcm9tIGV4cHJlc3Mgc2VydmVyIGluc3RhbmNlLlxuICogSXQgaXMgZXhwZWN0ZWQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gRXhwcmVzc1xuICogc2VydmVyIGluc3RhbmNlIGNvbnRleHQuXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgYXQgbGVhc3Qgb25lIGhhbmRsZXIgaGFzIGJlZW4gZGVsZXRlZFxuICovXG5hc3luYyBmdW5jdGlvbiByZW1vdmVBbGxXZWJTb2NrZXRIYW5kbGVycyAoKSB7XG4gIGlmIChfLmlzRW1wdHkodGhpcy53ZWJTb2NrZXRzTWFwcGluZykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gXy5zb21lKFxuICAgIGF3YWl0IEIuYWxsKFxuICAgICAgXy5rZXlzKHRoaXMud2ViU29ja2V0c01hcHBpbmcpLm1hcCgocGF0aG5hbWUpID0+IHRoaXMucmVtb3ZlV2ViU29ja2V0SGFuZGxlcihwYXRobmFtZSkpXG4gICAgKVxuICApO1xufVxuXG5leHBvcnQge1xuICBhZGRXZWJTb2NrZXRIYW5kbGVyLCByZW1vdmVXZWJTb2NrZXRIYW5kbGVyLCByZW1vdmVBbGxXZWJTb2NrZXRIYW5kbGVycyxcbiAgZ2V0V2ViU29ja2V0SGFuZGxlcnMsIERFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYLFxufTtcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../lib/jsonwp-proxy/proxy.js"],"names":[],"mappings":";;AAuBA;IACE,uBAsBC;IAZC,YAAuC;IACvC,uBAAyB;IACzB,yBAA+B;IAM/B,sBAA0C;IAC1C,wBAA4C;IAC5C,qCAA+E;IAC/E,UAAoB;IAGtB,eAEC;IAED;;;;;;;;OAQG;IACH,gBAQC;IAED,iCAEC;IAED,6BAEC;IAED,kDAEC;IAED,iCAGC;IAED,8BAEC;IAED,iCA8CC;IAED,0DA2FC;IAjCO,eAA+D;IAmCvE,wDAOC;IAED,sGAaC;IAED,+DAQC;IAED,0DAuCC;IAED,mCAGC;IAED,+CAoBC;CACF"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../lib/jsonwp-proxy/proxy.js"],"names":[],"mappings":";;AAwBA;IACE,uBAsBC;IAZC,YAAuC;IACvC,uBAAyB;IACzB,yBAA+B;IAM/B,sBAA0C;IAC1C,wBAA4C;IAC5C,qCAA+E;IAC/E,UAAoB;IAGtB,eAEC;IAED;;;;;;;;OAQG;IACH,gBAQC;IAED,iCAEC;IAED,6BAEC;IAED,kDAEC;IAED,iCAGC;IAED,8BAEC;IAED,iCA8CC;IAED,0DA2FC;IAjCO,eAA+D;IAmCvE,wDAOC;IAED,sGAaC;IAED,+DAQC;IAED,0DAuCC;IAED,mCAGC;IAED,+CAuCC;CACF"}
@@ -359,12 +359,30 @@ class JWProxy {
359
359
  }
360
360
 
361
361
  async proxyReqRes(req, res) {
362
- const [response, resBodyObj] = await this.proxyCommand(req.originalUrl, req.method, req.body);
363
- res.headers = response.headers;
364
- res.set('content-type', response.headers['content-type']);
365
- const reqSessionId = this.getSessionIdFromUrl(req.originalUrl);
362
+ let statusCode;
363
+ let resBodyObj;
364
+
365
+ try {
366
+ let response;
367
+ [response, resBodyObj] = await this.proxyCommand(req.originalUrl, req.method, req.body);
368
+ res.headers = response.headers;
369
+ statusCode = response.statusCode;
370
+ } catch (err) {
371
+ [statusCode, resBodyObj] = (0, _errors.getResponseForW3CError)((0, _errors.isErrorType)(err, _errors.errors.ProxyRequestError) ? err.getActualError() : err);
372
+ }
373
+
374
+ res.set('content-type', 'application/json; charset=utf-8');
375
+
376
+ if (!_lodash.default.isPlainObject(resBodyObj)) {
377
+ const error = new _errors.errors.UnknownError(`The downstream server response with the status code ${statusCode} is not a valid JSON object: ` + _lodash.default.truncate(`${resBodyObj}`, {
378
+ length: 300
379
+ }));
380
+ [statusCode, resBodyObj] = (0, _errors.getResponseForW3CError)(error);
381
+ }
366
382
 
367
383
  if (_lodash.default.has(resBodyObj, 'sessionId')) {
384
+ const reqSessionId = this.getSessionIdFromUrl(req.originalUrl);
385
+
368
386
  if (reqSessionId) {
369
387
  this.log.info(`Replacing sessionId ${resBodyObj.sessionId} with ${reqSessionId}`);
370
388
  resBodyObj.sessionId = reqSessionId;
@@ -375,7 +393,7 @@ class JWProxy {
375
393
  }
376
394
 
377
395
  resBodyObj.value = (0, _helpers.formatResponseValue)(resBodyObj.value);
378
- res.status(response.statusCode).send(JSON.stringify((0, _helpers.formatStatus)(resBodyObj)));
396
+ res.status(statusCode).send(JSON.stringify((0, _helpers.formatStatus)(resBodyObj)));
379
397
  }
380
398
 
381
399
  }
@@ -383,4 +401,4 @@ class JWProxy {
383
401
  exports.JWProxy = JWProxy;
384
402
  var _default = JWProxy;
385
403
  exports.default = _default;
386
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9qc29ud3AtcHJveHkvcHJveHkuanMiXSwibmFtZXMiOlsiREVGQVVMVF9MT0ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJERUZBVUxUX1JFUVVFU1RfVElNRU9VVCIsIkNPTVBBQ1RfRVJST1JfUEFUVEVSTlMiLCJNSlNPTldQIiwiVzNDIiwiUFJPVE9DT0xTIiwiSldQcm94eSIsImNvbnN0cnVjdG9yIiwib3B0cyIsIl8iLCJkZWZhdWx0cyIsInNjaGVtZSIsInNlcnZlciIsInBvcnQiLCJiYXNlIiwiREVGQVVMVF9CQVNFX1BBVEgiLCJyZXFCYXNlUGF0aCIsInNlc3Npb25JZCIsInRpbWVvdXQiLCJ0b0xvd2VyQ2FzZSIsIl9hY3RpdmVSZXF1ZXN0cyIsIl9kb3duc3RyZWFtUHJvdG9jb2wiLCJhZ2VudE9wdHMiLCJrZWVwQWxpdmUiLCJtYXhTb2NrZXRzIiwibWF4RnJlZVNvY2tldHMiLCJodHRwQWdlbnQiLCJodHRwIiwiQWdlbnQiLCJodHRwc0FnZW50IiwiaHR0cHMiLCJwcm90b2NvbENvbnZlcnRlciIsIlByb3RvY29sQ29udmVydGVyIiwicHJveHkiLCJiaW5kIiwibG9nIiwiX2xvZyIsInJlcXVlc3QiLCJyZXF1ZXN0Q29uZmlnIiwicmVxUHJvbWlzZSIsInB1c2giLCJwdWxsIiwiZ2V0QWN0aXZlUmVxdWVzdHNDb3VudCIsImxlbmd0aCIsImNhbmNlbEFjdGl2ZVJlcXVlc3RzIiwiZW5kcG9pbnRSZXF1aXJlc1Nlc3Npb25JZCIsImVuZHBvaW50IiwiaW5jbHVkZXMiLCJkb3duc3RyZWFtUHJvdG9jb2wiLCJ2YWx1ZSIsImdldFVybEZvclByb3h5IiwidXJsIiwicHJveHlCYXNlIiwiZW5kcG9pbnRSZSIsInJlbWFpbmluZ1VybCIsInRlc3QiLCJmaXJzdCIsIlJlZ0V4cCIsImV4ZWMiLCJFcnJvciIsInJlcGxhY2UiLCJzdHJpcFByZWZpeFJlIiwicmVxdWlyZXNTZXNzaW9uSWQiLCJzZXNzaW9uQmFzZVJlIiwibWF0Y2giLCJtZXRob2QiLCJib2R5IiwidG9VcHBlckNhc2UiLCJuZXdVcmwiLCJ0cnVuY2F0ZUJvZHkiLCJjb250ZW50IiwidHJ1bmNhdGUiLCJpc1N0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJNQVhfTE9HX0JPRFlfTEVOR1RIIiwicmVxT3B0cyIsImhlYWRlcnMiLCJhY2NlcHQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJkYXRhIiwicGFyc2UiLCJlIiwiZGVidWciLCJ0aHJvd1Byb3h5RXJyb3IiLCJlcnJvciIsImVyciIsInJlc3BvbnNlIiwic3RhdHVzIiwiaXNSZXNwb25zZUxvZ2dlZCIsImlzUGxhaW5PYmplY3QiLCJpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QiLCJnZXRQcm90b2NvbEZyb21SZXNCb2R5IiwiaW5mbyIsImhhcyIsInBhcnNlSW50IiwicmVzIiwic3RhdHVzQ29kZSIsInByb3h5RXJyb3JNc2ciLCJtZXNzYWdlIiwic29tZSIsInAiLCJzdGFjayIsImVycm9ycyIsIlByb3h5UmVxdWVzdEVycm9yIiwicmVzT2JqIiwiaXNJbnRlZ2VyIiwiaXNVbmRlZmluZWQiLCJyZXF1ZXN0VG9Db21tYW5kTmFtZSIsImV4dHJhY3RDb21tYW5kTmFtZSIsInBhdHRlcm4iLCJwYXRoTWF0Y2giLCJjb21tYW5kTmFtZSIsImVzY2FwZVJlZ0V4cCIsInByb3h5Q29tbWFuZCIsImNvbnZlcnRBbmRQcm94eSIsImNvbW1hbmQiLCJyZXNCb2R5T2JqIiwiZ2V0QWN0dWFsRXJyb3IiLCJVbmtub3duRXJyb3IiLCJwcm90b2NvbCIsImlzTmFOIiwiaXNFbXB0eSIsInN0YWNrdHJhY2UiLCJnZXRTZXNzaW9uSWRGcm9tVXJsIiwicHJveHlSZXFSZXMiLCJyZXEiLCJvcmlnaW5hbFVybCIsInNldCIsInJlcVNlc3Npb25JZCIsInNlbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEs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LENBQXJDO0FBQ0Q7O0FBdFRXOzs7ZUEwVENoSCxPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGxvZ2dlciwgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgZ2V0U3VtbWFyeUJ5Q29kZSB9IGZyb20gJy4uL2pzb253cC1zdGF0dXMvc3RhdHVzJztcbmltcG9ydCB7XG4gIGVycm9ycywgaXNFcnJvclR5cGUsIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlLCBlcnJvckZyb21XM0NKc29uQ29kZVxufSBmcm9tICcuLi9wcm90b2NvbC9lcnJvcnMnO1xuaW1wb3J0IHsgcm91dGVUb0NvbW1hbmROYW1lIH0gZnJvbSAnLi4vcHJvdG9jb2wnO1xuaW1wb3J0IHsgTUFYX0xPR19CT0RZX0xFTkdUSCwgREVGQVVMVF9CQVNFX1BBVEgsIFBST1RPQ09MUyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgUHJvdG9jb2xDb252ZXJ0ZXIgZnJvbSAnLi9wcm90b2NvbC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgZm9ybWF0UmVzcG9uc2VWYWx1ZSwgZm9ybWF0U3RhdHVzIH0gZnJvbSAnLi4vcHJvdG9jb2wvaGVscGVycyc7XG5pbXBvcnQgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCBodHRwcyBmcm9tICdodHRwcyc7XG5cbmNvbnN0IERFRkFVTFRfTE9HID0gbG9nZ2VyLmdldExvZ2dlcignV0QgUHJveHknKTtcbmNvbnN0IERFRkFVTFRfUkVRVUVTVF9USU1FT1VUID0gMjQwMDAwO1xuY29uc3QgQ09NUEFDVF9FUlJPUl9QQVRURVJOUyA9IFtcbiAgL1xcYkVDT05OUkVGVVNFRFxcYi8sXG4gIC9zb2NrZXQgaGFuZyB1cC8sXG5dO1xuXG5jb25zdCB7TUpTT05XUCwgVzNDfSA9IFBST1RPQ09MUztcblxuY2xhc3MgSldQcm94eSB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBfLmRlZmF1bHRzKHRoaXMsIG9wdHMsIHtcbiAgICAgIHNjaGVtZTogJ2h0dHAnLFxuICAgICAgc2VydmVyOiAnbG9jYWxob3N0JyxcbiAgICAgIHBvcnQ6IDQ0NDQsXG4gICAgICBiYXNlOiBERUZBVUxUX0JBU0VfUEFUSCxcbiAgICAgIHJlcUJhc2VQYXRoOiBERUZBVUxUX0JBU0VfUEFUSCxcbiAgICAgIHNlc3Npb25JZDogbnVsbCxcbiAgICAgIHRpbWVvdXQ6IERFRkFVTFRfUkVRVUVTVF9USU1FT1VULFxuICAgIH0pO1xuICAgIHRoaXMuc2NoZW1lID0gdGhpcy5zY2hlbWUudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cyA9IFtdO1xuICAgIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbCA9IG51bGw7XG4gICAgY29uc3QgYWdlbnRPcHRzID0ge1xuICAgICAga2VlcEFsaXZlOiBvcHRzLmtlZXBBbGl2ZSA/PyB0cnVlLFxuICAgICAgbWF4U29ja2V0czogMTAsXG4gICAgICBtYXhGcmVlU29ja2V0czogNSxcbiAgICB9O1xuICAgIHRoaXMuaHR0cEFnZW50ID0gbmV3IGh0dHAuQWdlbnQoYWdlbnRPcHRzKTtcbiAgICB0aGlzLmh0dHBzQWdlbnQgPSBuZXcgaHR0cHMuQWdlbnQoYWdlbnRPcHRzKTtcbiAgICB0aGlzLnByb3RvY29sQ29udmVydGVyID0gbmV3IFByb3RvY29sQ29udmVydGVyKHRoaXMucHJveHkuYmluZCh0aGlzKSwgb3B0cy5sb2cpO1xuICAgIHRoaXMuX2xvZyA9IG9wdHMubG9nO1xuICB9XG5cbiAgZ2V0IGxvZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZyA/PyBERUZBVUxUX0xPRztcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyByZXF1ZXN0cyB0byB0aGUgZG93bnN0cmVhbSBzZXJ2ZXJcbiAgICpcbiAgICogQHByaXZhdGUgLSBEbyBub3QgY2FsbCB0aGlzIG1ldGhvZCBkaXJlY3RseSxcbiAgICogaXQgdXNlcyBjbGllbnQtc3BlY2lmaWMgYXJndW1lbnRzIGFuZCByZXNwb25zZXMhXG4gICAqXG4gICAqIEBwYXJhbSB7QXhpb3NSZXF1ZXN0Q29uZmlnfSByZXF1ZXN0Q29uZmlnXG4gICAqIEByZXR1cm5zIHtBeGlvc1Jlc3BvbnNlfVxuICAgKi9cbiAgYXN5bmMgcmVxdWVzdCAocmVxdWVzdENvbmZpZykge1xuICAgIGNvbnN0IHJlcVByb21pc2UgPSBheGlvcyhyZXF1ZXN0Q29uZmlnKTtcbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cy5wdXNoKHJlcVByb21pc2UpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVxUHJvbWlzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgXy5wdWxsKHRoaXMuX2FjdGl2ZVJlcXVlc3RzLCByZXFQcm9taXNlKTtcbiAgICB9XG4gIH1cblxuICBnZXRBY3RpdmVSZXF1ZXN0c0NvdW50ICgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlUmVxdWVzdHMubGVuZ3RoO1xuICB9XG5cbiAgY2FuY2VsQWN0aXZlUmVxdWVzdHMgKCkge1xuICAgIHRoaXMuX2FjdGl2ZVJlcXVlc3RzID0gW107XG4gIH1cblxuICBlbmRwb2ludFJlcXVpcmVzU2Vzc2lvbklkIChlbmRwb2ludCkge1xuICAgIHJldHVybiAhXy5pbmNsdWRlcyhbJy9zZXNzaW9uJywgJy9zZXNzaW9ucycsICcvc3RhdHVzJ10sIGVuZHBvaW50KTtcbiAgfVxuXG4gIHNldCBkb3duc3RyZWFtUHJvdG9jb2wgKHZhbHVlKSB7XG4gICAgdGhpcy5fZG93bnN0cmVhbVByb3RvY29sID0gdmFsdWU7XG4gICAgdGhpcy5wcm90b2NvbENvbnZlcnRlci5kb3duc3RyZWFtUHJvdG9jb2wgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBkb3duc3RyZWFtUHJvdG9jb2wgKCkge1xuICAgIHJldHVybiB0aGlzLl9kb3duc3RyZWFtUHJvdG9jb2w7XG4gIH1cblxuICBnZXRVcmxGb3JQcm94eSAodXJsKSB7XG4gICAgaWYgKHVybCA9PT0gJycpIHtcbiAgICAgIHVybCA9ICcvJztcbiAgICB9XG4gICAgY29uc3QgcHJveHlCYXNlID0gYCR7dGhpcy5zY2hlbWV9Oi8vJHt0aGlzLnNlcnZlcn06JHt0aGlzLnBvcnR9JHt0aGlzLmJhc2V9YDtcbiAgICBjb25zdCBlbmRwb2ludFJlID0gJygvKHNlc3Npb258c3RhdHVzKSknO1xuICAgIGxldCByZW1haW5pbmdVcmwgPSAnJztcbiAgICBpZiAoL15odHRwLy50ZXN0KHVybCkpIHtcbiAgICAgIGNvbnN0IGZpcnN0ID0gKG5ldyBSZWdFeHAoYChodHRwcz86Ly8uKykke2VuZHBvaW50UmV9YCkpLmV4ZWModXJsKTtcbiAgICAgIGlmICghZmlyc3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHb3QgYSBjb21wbGV0ZSB1cmwgYnV0IGNvdWxkIG5vdCBleHRyYWN0IEpXUCBlbmRwb2ludCcpO1xuICAgICAgfVxuICAgICAgcmVtYWluaW5nVXJsID0gdXJsLnJlcGxhY2UoZmlyc3RbMV0sICcnKTtcbiAgICB9IGVsc2UgaWYgKChuZXcgUmVnRXhwKCdeLycpKS50ZXN0KHVybCkpIHtcbiAgICAgIHJlbWFpbmluZ1VybCA9IHVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaWQgbm90IGtub3cgd2hhdCB0byBkbyB3aXRoIHVybCAnJHt1cmx9J2ApO1xuICAgIH1cblxuICAgIGNvbnN0IHN0cmlwUHJlZml4UmUgPSBuZXcgUmVnRXhwKCdeLio/KC8oc2Vzc2lvbnxzdGF0dXMpLiopJCcpO1xuICAgIGlmIChzdHJpcFByZWZpeFJlLnRlc3QocmVtYWluaW5nVXJsKSkge1xuICAgICAgcmVtYWluaW5nVXJsID0gc3RyaXBQcmVmaXhSZS5leGVjKHJlbWFpbmluZ1VybClbMV07XG4gICAgfVxuXG4gICAgaWYgKCEobmV3IFJlZ0V4cChlbmRwb2ludFJlKSkudGVzdChyZW1haW5pbmdVcmwpKSB7XG4gICAgICByZW1haW5pbmdVcmwgPSBgL3Nlc3Npb24vJHt0aGlzLnNlc3Npb25JZH0ke3JlbWFpbmluZ1VybH1gO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVpcmVzU2Vzc2lvbklkID0gdGhpcy5lbmRwb2ludFJlcXVpcmVzU2Vzc2lvbklkKHJlbWFpbmluZ1VybCk7XG5cbiAgICBpZiAocmVxdWlyZXNTZXNzaW9uSWQgJiYgdGhpcy5zZXNzaW9uSWQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHJ5aW5nIHRvIHByb3h5IGEgc2Vzc2lvbiBjb21tYW5kIHdpdGhvdXQgc2Vzc2lvbiBpZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlc3Npb25CYXNlUmUgPSBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vKFteL10rKScpO1xuICAgIGlmIChzZXNzaW9uQmFzZVJlLnRlc3QocmVtYWluaW5nVXJsKSkge1xuICAgICAgLy8gd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSAvc2Vzc2lvbi86aWQvZm9vYmFyLCBzbyB3ZSBuZWVkIHRvIHJlcGxhY2VcbiAgICAgIC8vIHRoZSBzZXNzaW9uIGlkXG4gICAgICBjb25zdCBtYXRjaCA9IHNlc3Npb25CYXNlUmUuZXhlYyhyZW1haW5pbmdVcmwpO1xuICAgICAgcmVtYWluaW5nVXJsID0gcmVtYWluaW5nVXJsLnJlcGxhY2UobWF0Y2hbMV0sIHRoaXMuc2Vzc2lvbklkKTtcbiAgICB9IGVsc2UgaWYgKHJlcXVpcmVzU2Vzc2lvbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIDpzZXNzaW9uIHNlY3Rpb24gZm9yIHVybDogJHtyZW1haW5pbmdVcmx9YCk7XG4gICAgfVxuICAgIHJlbWFpbmluZ1VybCA9IHJlbWFpbmluZ1VybC5yZXBsYWNlKC9cXC8kLywgJycpOyAvLyBjYW4ndCBoYXZlIHRyYWlsaW5nIHNsYXNoZXNcblxuICAgIHJldHVybiBwcm94eUJhc2UgKyByZW1haW5pbmdVcmw7XG4gIH1cblxuICBhc3luYyBwcm94eSAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgbWV0aG9kID0gbWV0aG9kLnRvVXBwZXJDYXNlKCk7XG4gICAgY29uc3QgbmV3VXJsID0gdGhpcy5nZXRVcmxGb3JQcm94eSh1cmwpO1xuICAgIGNvbnN0IHRydW5jYXRlQm9keSA9IChjb250ZW50KSA9PiBfLnRydW5jYXRlKFxuICAgICAgXy5pc1N0cmluZyhjb250ZW50KSA/IGNvbnRlbnQgOiBKU09OLnN0cmluZ2lmeShjb250ZW50KSxcbiAgICAgIHsgbGVuZ3RoOiBNQVhfTE9HX0JPRFlfTEVOR1RIIH0pO1xuICAgIGNvbnN0IHJlcU9wdHMgPSB7XG4gICAgICB1cmw6IG5ld1VybCxcbiAgICAgIG1ldGhvZCxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JyxcbiAgICAgICAgJ3VzZXItYWdlbnQnOiAnYXBwaXVtJyxcbiAgICAgICAgYWNjZXB0OiAnYXBwbGljYXRpb24vanNvbiwgKi8qJyxcbiAgICAgIH0sXG4gICAgICBwcm94eTogZmFsc2UsXG4gICAgICB0aW1lb3V0OiB0aGlzLnRpbWVvdXQsXG4gICAgICBodHRwQWdlbnQ6IHRoaXMuaHR0cEFnZW50LFxuICAgICAgaHR0cHNBZ2VudDogdGhpcy5odHRwc0FnZW50LFxuICAgIH07XG4gICAgLy8gR0VUIG1ldGhvZHMgc2hvdWxkbid0IGhhdmUgYW55IGJvZHkuIE1vc3Qgc2VydmVycyBhcmUgT0sgd2l0aCB0aGlzLCBidXQgV2ViRHJpdmVyQWdlbnQgdGhyb3dzIDQwMCBlcnJvcnNcbiAgICBpZiAodXRpbC5oYXNWYWx1ZShib2R5KSAmJiBtZXRob2QgIT09ICdHRVQnKSB7XG4gICAgICBpZiAodHlwZW9mIGJvZHkgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVxT3B0cy5kYXRhID0gSlNPTi5wYXJzZShib2R5KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGludGVycHJldCB0aGUgcmVxdWVzdCBib2R5IGFzIHZhbGlkIEpTT046ICR7dHJ1bmNhdGVCb2R5KGJvZHkpfWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXFPcHRzLmRhdGEgPSBib2R5O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubG9nLmRlYnVnKGBQcm94eWluZyBbJHttZXRob2R9ICR7dXJsIHx8ICcvJ31dIHRvIFske21ldGhvZH0gJHtuZXdVcmx9XSBgICtcbiAgICAgIChyZXFPcHRzLmRhdGEgPyBgd2l0aCBib2R5OiAke3RydW5jYXRlQm9keShyZXFPcHRzLmRhdGEpfWAgOiAnd2l0aCBubyBib2R5JykpO1xuXG4gICAgY29uc3QgdGhyb3dQcm94eUVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoYFRoZSByZXF1ZXN0IHRvICR7dXJsfSBoYXMgZmFpbGVkYCk7XG4gICAgICBlcnIucmVzcG9uc2UgPSB7XG4gICAgICAgIGRhdGE6IGVycm9yLFxuICAgICAgICBzdGF0dXM6IDUwMFxuICAgICAgfTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9O1xuICAgIGxldCBpc1Jlc3BvbnNlTG9nZ2VkID0gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtkYXRhLCBzdGF0dXMsIGhlYWRlcnN9ID0gYXdhaXQgdGhpcy5yZXF1ZXN0KHJlcU9wdHMpO1xuICAgICAgLy8gYGRhdGFgIG1pZ2h0IGJlIHJlYWxseSBiaWdcbiAgICAgIC8vIEJlIGNhcmVmdWwgd2hpbGUgaGFuZGxpbmcgaXQgdG8gYXZvaWQgbWVtb3J5IGxlYWtzXG4gICAgICBpZiAoIV8uaXNQbGFpbk9iamVjdChkYXRhKSkge1xuICAgICAgICAvLyBUaGUgcmVzcG9uc2Ugc2hvdWxkIGJlIGEgdmFsaWQgSlNPTiBvYmplY3RcbiAgICAgICAgLy8gSWYgaXQgY2Fubm90IGJlIGNvZXJjZWQgdG8gYW4gb2JqZWN0IHRoZW4gdGhlIHJlc3BvbnNlIGlzIHdyb25nXG4gICAgICAgIHRocm93UHJveHlFcnJvcihkYXRhKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nLmRlYnVnKGBHb3QgcmVzcG9uc2Ugd2l0aCBzdGF0dXMgJHtzdGF0dXN9OiAke3RydW5jYXRlQm9keShkYXRhKX1gKTtcbiAgICAgIGlzUmVzcG9uc2VMb2dnZWQgPSB0cnVlO1xuICAgICAgY29uc3QgaXNTZXNzaW9uQ3JlYXRpb25SZXF1ZXN0ID0gL1xcL3Nlc3Npb24kLy50ZXN0KHVybCkgJiYgbWV0aG9kID09PSAnUE9TVCc7XG4gICAgICBpZiAoaXNTZXNzaW9uQ3JlYXRpb25SZXF1ZXN0KSB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgIHRoaXMuc2Vzc2lvbklkID0gZGF0YS5zZXNzaW9uSWQgfHwgKGRhdGEudmFsdWUgfHwge30pLnNlc3Npb25JZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRvd25zdHJlYW1Qcm90b2NvbCA9IHRoaXMuZ2V0UHJvdG9jb2xGcm9tUmVzQm9keShkYXRhKTtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgRGV0ZXJtaW5lZCB0aGUgZG93bnN0cmVhbSBwcm90b2NvbCBhcyAnJHt0aGlzLmRvd25zdHJlYW1Qcm90b2NvbH0nYCk7XG4gICAgICB9XG4gICAgICBpZiAoXy5oYXMoZGF0YSwgJ3N0YXR1cycpICYmIHBhcnNlSW50KGRhdGEuc3RhdHVzLCAxMCkgIT09IDApIHtcbiAgICAgICAgLy8gU29tZSBzZXJ2ZXJzLCBsaWtlIGNocm9tZWRyaXZlciBtYXkgcmV0dXJuIHJlc3BvbnNlIGNvZGUgMjAwIGZvciBub24temVybyBKU09OV1Agc3RhdHVzZXNcbiAgICAgICAgdGhyb3dQcm94eUVycm9yKGRhdGEpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzID0ge3N0YXR1c0NvZGU6IHN0YXR1cywgaGVhZGVycywgYm9keTogZGF0YX07XG4gICAgICByZXR1cm4gW3JlcywgZGF0YV07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gV2Ugb25seSBjb25zaWRlciBhbiBlcnJvciB1bmV4cGVjdGVkIGlmIHRoaXMgd2FzIG5vdFxuICAgICAgLy8gYW4gYXN5bmMgcmVxdWVzdCBtb2R1bGUgZXJyb3Igb3IgaWYgdGhlIHJlc3BvbnNlIGNhbm5vdCBiZSBjYXN0IHRvXG4gICAgICAvLyBhIHZhbGlkIEpTT05cbiAgICAgIGxldCBwcm94eUVycm9yTXNnID0gZS5tZXNzYWdlO1xuICAgICAgaWYgKHV0aWwuaGFzVmFsdWUoZS5yZXNwb25zZSkpIHtcbiAgICAgICAgaWYgKCFpc1Jlc3BvbnNlTG9nZ2VkKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSB0cnVuY2F0ZUJvZHkoZS5yZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKHV0aWwuaGFzVmFsdWUoZS5yZXNwb25zZS5zdGF0dXMpXG4gICAgICAgICAgICA/IGBHb3QgcmVzcG9uc2Ugd2l0aCBzdGF0dXMgJHtlLnJlc3BvbnNlLnN0YXR1c306ICR7ZXJyb3J9YFxuICAgICAgICAgICAgOiBgR290IHJlc3BvbnNlIHdpdGggdW5rbm93biBzdGF0dXM6ICR7ZXJyb3J9YCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb3h5RXJyb3JNc2cgPSBgQ291bGQgbm90IHByb3h5IGNvbW1hbmQgdG8gdGhlIHJlbW90ZSBzZXJ2ZXIuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gO1xuICAgICAgICBpZiAoQ09NUEFDVF9FUlJPUl9QQVRURVJOUy5zb21lKChwKSA9PiBwLnRlc3QoZS5tZXNzYWdlKSkpIHtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKGUubWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2cuaW5mbyhlLnN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcihwcm94eUVycm9yTXNnLCBlLnJlc3BvbnNlPy5kYXRhLCBlLnJlc3BvbnNlPy5zdGF0dXMpO1xuICAgIH1cbiAgfVxuXG4gIGdldFByb3RvY29sRnJvbVJlc0JvZHkgKHJlc09iaikge1xuICAgIGlmIChfLmlzSW50ZWdlcihyZXNPYmouc3RhdHVzKSkge1xuICAgICAgcmV0dXJuIE1KU09OV1A7XG4gICAgfVxuICAgIGlmICghXy5pc1VuZGVmaW5lZChyZXNPYmoudmFsdWUpKSB7XG4gICAgICByZXR1cm4gVzNDO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RUb0NvbW1hbmROYW1lICh1cmwsIG1ldGhvZCkge1xuICAgIGNvbnN0IGV4dHJhY3RDb21tYW5kTmFtZSA9IChwYXR0ZXJuKSA9PiB7XG4gICAgICBjb25zdCBwYXRoTWF0Y2ggPSBwYXR0ZXJuLmV4ZWModXJsKTtcbiAgICAgIHJldHVybiBwYXRoTWF0Y2ggPyByb3V0ZVRvQ29tbWFuZE5hbWUocGF0aE1hdGNoWzFdLCBtZXRob2QsIHRoaXMucmVxQmFzZVBhdGgpIDogbnVsbDtcbiAgICB9O1xuICAgIGxldCBjb21tYW5kTmFtZSA9IHJvdXRlVG9Db21tYW5kTmFtZSh1cmwsIG1ldGhvZCwgdGhpcy5yZXFCYXNlUGF0aCk7XG4gICAgaWYgKCFjb21tYW5kTmFtZSAmJiBfLmluY2x1ZGVzKHVybCwgYCR7dGhpcy5yZXFCYXNlUGF0aH0vc2Vzc2lvbi9gKSkge1xuICAgICAgY29tbWFuZE5hbWUgPSBleHRyYWN0Q29tbWFuZE5hbWUobmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cCh0aGlzLnJlcUJhc2VQYXRoKX0vc2Vzc2lvbi9bXi9dKyguKylgKSk7XG4gICAgfVxuICAgIGlmICghY29tbWFuZE5hbWUgJiYgXy5pbmNsdWRlcyh1cmwsIHRoaXMucmVxQmFzZVBhdGgpKSB7XG4gICAgICBjb21tYW5kTmFtZSA9IGV4dHJhY3RDb21tYW5kTmFtZShuZXcgUmVnRXhwKGAke18uZXNjYXBlUmVnRXhwKHRoaXMucmVxQmFzZVBhdGgpfSgvLispYCkpO1xuICAgIH1cbiAgICByZXR1cm4gY29tbWFuZE5hbWU7XG4gIH1cblxuICBhc3luYyBwcm94eUNvbW1hbmQgKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGNvbnN0IGNvbW1hbmROYW1lID0gdGhpcy5yZXF1ZXN0VG9Db21tYW5kTmFtZSh1cmwsIG1ldGhvZCk7XG4gICAgaWYgKCFjb21tYW5kTmFtZSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHkodXJsLCBtZXRob2QsIGJvZHkpO1xuICAgIH1cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgTWF0Y2hlZCAnJHt1cmx9JyB0byBjb21tYW5kIG5hbWUgJyR7Y29tbWFuZE5hbWV9J2ApO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJvdG9jb2xDb252ZXJ0ZXIuY29udmVydEFuZFByb3h5KGNvbW1hbmROYW1lLCB1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cblxuICBhc3luYyBjb21tYW5kICh1cmwsIG1ldGhvZCwgYm9keSA9IG51bGwpIHtcbiAgICBsZXQgcmVzcG9uc2U7XG4gICAgbGV0IHJlc0JvZHlPYmo7XG4gICAgdHJ5IHtcbiAgICAgIFtyZXNwb25zZSwgcmVzQm9keU9ial0gPSBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoaXNFcnJvclR5cGUoZXJyLCBlcnJvcnMuUHJveHlSZXF1ZXN0RXJyb3IpKSB7XG4gICAgICAgIHRocm93IGVyci5nZXRBY3R1YWxFcnJvcigpO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duRXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBjb25zdCBwcm90b2NvbCA9IHRoaXMuZ2V0UHJvdG9jb2xGcm9tUmVzQm9keShyZXNCb2R5T2JqKTtcbiAgICBpZiAocHJvdG9jb2wgPT09IE1KU09OV1ApIHtcbiAgICAgIC8vIEdvdCByZXNwb25zZSBpbiBNSlNPTldQIGZvcm1hdFxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPT09IDIwMCAmJiByZXNCb2R5T2JqLnN0YXR1cyA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcmVzQm9keU9iai52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0YXR1cyA9IHBhcnNlSW50KHJlc0JvZHlPYmouc3RhdHVzLCAxMCk7XG4gICAgICBpZiAoIWlzTmFOKHN0YXR1cykgJiYgc3RhdHVzICE9PSAwKSB7XG4gICAgICAgIGxldCBtZXNzYWdlID0gcmVzQm9keU9iai52YWx1ZTtcbiAgICAgICAgaWYgKF8uaGFzKG1lc3NhZ2UsICdtZXNzYWdlJykpIHtcbiAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5tZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlKHN0YXR1cywgXy5pc0VtcHR5KG1lc3NhZ2UpID8gZ2V0U3VtbWFyeUJ5Q29kZShzdGF0dXMpIDogbWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcm90b2NvbCA9PT0gVzNDKSB7XG4gICAgICAvLyBHb3QgcmVzcG9uc2UgaW4gVzNDIGZvcm1hdFxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPCAzMDApIHtcbiAgICAgICAgcmV0dXJuIHJlc0JvZHlPYmoudmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoXy5pc1BsYWluT2JqZWN0KHJlc0JvZHlPYmoudmFsdWUpICYmIHJlc0JvZHlPYmoudmFsdWUuZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3JGcm9tVzNDSnNvbkNvZGUocmVzQm9keU9iai52YWx1ZS5lcnJvciwgcmVzQm9keU9iai52YWx1ZS5tZXNzYWdlLCByZXNCb2R5T2JqLnZhbHVlLnN0YWNrdHJhY2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG4gICAgICAvLyBVbmtub3duIHByb3RvY29sLiBLZWVwaW5nIGl0IGJlY2F1c2Ugb2YgdGhlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgICAgIHJldHVybiByZXNCb2R5T2JqO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25FcnJvcihgRGlkIG5vdCBrbm93IHdoYXQgdG8gZG8gd2l0aCByZXNwb25zZSBjb2RlICcke3Jlc3BvbnNlLnN0YXR1c0NvZGV9JyBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYW5kIHJlc3BvbnNlIGJvZHkgJyR7Xy50cnVuY2F0ZShKU09OLnN0cmluZ2lmeShyZXNCb2R5T2JqKSwge2xlbmd0aDogMzAwfSl9J2ApO1xuICB9XG5cbiAgZ2V0U2Vzc2lvbklkRnJvbVVybCAodXJsKSB7XG4gICAgY29uc3QgbWF0Y2ggPSB1cmwubWF0Y2goL1xcL3Nlc3Npb25cXC8oW14vXSspLyk7XG4gICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiBudWxsO1xuICB9XG5cbiAgYXN5bmMgcHJveHlSZXFSZXMgKHJlcSwgcmVzKSB7XG4gICAgY29uc3QgW3Jlc3BvbnNlLCByZXNCb2R5T2JqXSA9IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKHJlcS5vcmlnaW5hbFVybCwgcmVxLm1ldGhvZCwgcmVxLmJvZHkpO1xuXG4gICAgcmVzLmhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzO1xuICAgIHJlcy5zZXQoJ2NvbnRlbnQtdHlwZScsIHJlc3BvbnNlLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKTtcbiAgICAvLyBpZiB0aGUgcHJveGllZCByZXNwb25zZSBjb250YWlucyBhIHNlc3Npb25JZCB0aGF0IHRoZSBkb3duc3RyZWFtXG4gICAgLy8gZHJpdmVyIGhhcyBnZW5lcmF0ZWQsIHdlIGRvbid0IHdhbnQgdG8gcmV0dXJuIHRoYXQgdG8gdGhlIGNsaWVudC5cbiAgICAvLyBJbnN0ZWFkLCByZXR1cm4gdGhlIGlkIGZyb20gdGhlIHJlcXVlc3Qgb3IgZnJvbSBjdXJyZW50IHNlc3Npb25cbiAgICBjb25zdCByZXFTZXNzaW9uSWQgPSB0aGlzLmdldFNlc3Npb25JZEZyb21VcmwocmVxLm9yaWdpbmFsVXJsKTtcbiAgICBpZiAoXy5oYXMocmVzQm9keU9iaiwgJ3Nlc3Npb25JZCcpKSB7XG4gICAgICBpZiAocmVxU2Vzc2lvbklkKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYFJlcGxhY2luZyBzZXNzaW9uSWQgJHtyZXNCb2R5T2JqLnNlc3Npb25JZH0gd2l0aCAke3JlcVNlc3Npb25JZH1gKTtcbiAgICAgICAgcmVzQm9keU9iai5zZXNzaW9uSWQgPSByZXFTZXNzaW9uSWQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2Vzc2lvbklkKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYFJlcGxhY2luZyBzZXNzaW9uSWQgJHtyZXNCb2R5T2JqLnNlc3Npb25JZH0gd2l0aCAke3RoaXMuc2Vzc2lvbklkfWApO1xuICAgICAgICByZXNCb2R5T2JqLnNlc3Npb25JZCA9IHRoaXMuc2Vzc2lvbklkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXNCb2R5T2JqLnZhbHVlID0gZm9ybWF0UmVzcG9uc2VWYWx1ZShyZXNCb2R5T2JqLnZhbHVlKTtcbiAgICByZXMuc3RhdHVzKHJlc3BvbnNlLnN0YXR1c0NvZGUpLnNlbmQoSlNPTi5zdHJpbmdpZnkoZm9ybWF0U3RhdHVzKHJlc0JvZHlPYmopKSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgSldQcm94eSB9O1xuZXhwb3J0IGRlZmF1bHQgSldQcm94eTtcbiJdfQ==
404
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9qc29ud3AtcHJveHkvcHJveHkuanMiXSwibmFtZXMiOlsiREVGQVVMVF9MT0ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJERUZBVUxUX1JFUVVFU1RfVElNRU9VVCIsIkNPTVBBQ1RfRVJST1JfUEFUVEVSTlMiLCJNSlNPTldQIiwiVzNDIiwiUFJPVE9DT0xTIiwiSldQcm94eSIsImNvbnN0cnVjdG9yIiwib3B0cyIsIl8iLCJkZWZhdWx0cyIsInNjaGVtZSIsInNlcnZlciIsInBvcnQiLCJiYXNlIiwiREVGQVVMVF9CQVNFX1BBVEgiLCJyZXFCYXNlUGF0aCIsInNlc3Npb25JZCIsInRpbWVvdXQiLCJ0b0xvd2VyQ2FzZSIsIl9hY3RpdmVSZXF1ZXN0cyIsIl9kb3duc3RyZWFtUHJvdG9jb2wiLCJhZ2VudE9wdHMiLCJrZWVwQWxpdmUiLCJtYXhTb2NrZXRzIiwibWF4RnJlZVNvY2tldHMiLCJodHRwQWdlbnQiLCJodHRwIiwiQWdlbnQiLCJodHRwc0FnZW50IiwiaHR0cHMiLCJwcm90b2NvbENvbnZlcnRlciIsIlByb3RvY29sQ29udmVydGVyIiwicHJveHkiLCJiaW5kIiwibG9nIiwiX2xvZyIsInJlcXVlc3QiLCJyZXF1ZXN0Q29uZmlnIiwicmVxUHJvbWlzZSIsInB1c2giLCJwdWxsIiwiZ2V0QWN0aXZlUmVxdWVzdHNDb3VudCIsImxlbmd0aCIsImNhbmNlbEFjdGl2ZVJlcXVlc3RzIiwiZW5kcG9pbnRSZXF1aXJlc1Nlc3Npb25JZCIsImVuZHBvaW50IiwiaW5jbHVkZXMiLCJkb3duc3RyZWFtUHJvdG9jb2wiLCJ2YWx1ZSIsImdldFVybEZvclByb3h5IiwidXJsIiwicHJveHlCYXNlIiwiZW5kcG9pbnRSZSIsInJlbWFpbmluZ1VybCIsInRlc3QiLCJmaXJzdCIsIlJlZ0V4cCIsImV4ZWMiLCJFcnJvciIsInJlcGxhY2UiLCJzdHJpcFByZWZpeFJlIiwicmVxdWlyZXNTZXNzaW9uSWQiLCJzZXNzaW9uQmFzZVJlIiwibWF0Y2giLCJtZXRob2QiLCJib2R5IiwidG9VcHBlckNhc2UiLCJuZXdVcmwiLCJ0cnVuY2F0ZUJvZHkiLCJjb250ZW50IiwidHJ1bmNhdGUiLCJpc1N0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJNQVhfTE9HX0JPRFlfTEVOR1RIIiwicmVxT3B0cyIsImhlYWRlcnMiLCJhY2NlcHQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJkYXRhIiwicGFyc2UiLCJlIiwiZGVidWciLCJ0aHJvd1Byb3h5RXJyb3IiLCJlcnJvciIsImVyciIsInJlc3BvbnNlIiwic3RhdHVzIiwiaXNSZXNwb25zZUxvZ2dlZCIsImlzUGxhaW5PYmplY3QiLCJpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QiLCJnZXRQcm90b2NvbEZyb21SZXNCb2R5IiwiaW5mbyIsImhhcyIsInBhcnNlSW50IiwicmVzIiwic3RhdHVzQ29kZSIsInByb3h5RXJyb3JNc2ciLCJtZXNzYWdlIiwic29tZSIsInAiLCJzdGFjayIsImVycm9ycyIsIlByb3h5UmVxdWVzdEVycm9yIiwicmVzT2JqIiwiaXNJbnRlZ2VyIiwiaXNVbmRlZmluZWQiLCJyZXF1ZXN0VG9Db21tYW5kTmFtZSIsImV4dHJhY3RDb21tYW5kTmFtZSIsInBhdHRlcm4iLCJwYXRoTWF0Y2giLCJjb21tYW5kTmFtZSIsImVzY2FwZVJlZ0V4cCIsInByb3h5Q29tbWFuZCIsImNvbnZlcnRBbmRQcm94eSIsImNvbW1hbmQiLCJyZXNCb2R5T2JqIiwiZ2V0QWN0dWFsRXJyb3IiLCJVbmtub3duRXJyb3IiLCJwcm90b2NvbCIsImlzTmFOIiwiaXNFbXB0eSIsInN0YWNrdHJhY2UiLCJnZXRTZXNzaW9uSWRGcm9tVXJsIiwicHJveHlSZXFSZXMiLCJyZXEiLCJvcmlnaW5hbFVybCIsInNldCIsInJlcVNlc3Npb25JZCIsInNlbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsV0FBVyxHQUFHQyxnQkFBT0MsU0FBUCxDQUFpQixVQUFqQixDQUFwQjs7QUFDQSxNQUFNQyx1QkFBdUIsR0FBRyxNQUFoQztBQUNBLE1BQU1DLHNCQUFzQixHQUFHLENBQzdCLGtCQUQ2QixFQUU3QixnQkFGNkIsQ0FBL0I7QUFLQSxNQUFNO0FBQUNDLEVBQUFBLE9BQUQ7QUFBVUMsRUFBQUE7QUFBVixJQUFpQkMsb0JBQXZCOztBQUVBLE1BQU1DLE9BQU4sQ0FBYztBQUNaQyxFQUFBQSxXQUFXLENBQUVDLElBQUksR0FBRyxFQUFULEVBQWE7QUFBQTs7QUFDdEJDLG9CQUFFQyxRQUFGLENBQVcsSUFBWCxFQUFpQkYsSUFBakIsRUFBdUI7QUFDckJHLE1BQUFBLE1BQU0sRUFBRSxNQURhO0FBRXJCQyxNQUFBQSxNQUFNLEVBQUUsV0FGYTtBQUdyQkMsTUFBQUEsSUFBSSxFQUFFLElBSGU7QUFJckJDLE1BQUFBLElBQUksRUFBRUMsNEJBSmU7QUFLckJDLE1BQUFBLFdBQVcsRUFBRUQsNEJBTFE7QUFNckJFLE1BQUFBLFNBQVMsRUFBRSxJQU5VO0FBT3JCQyxNQUFBQSxPQUFPLEVBQUVqQjtBQVBZLEtBQXZCOztBQVNBLFNBQUtVLE1BQUwsR0FBYyxLQUFLQSxNQUFMLENBQVlRLFdBQVosRUFBZDtBQUNBLFNBQUtDLGVBQUwsR0FBdUIsRUFBdkI7QUFDQSxTQUFLQyxtQkFBTCxHQUEyQixJQUEzQjtBQUNBLFVBQU1DLFNBQVMsR0FBRztBQUNoQkMsTUFBQUEsU0FBUyxxQkFBRWYsSUFBSSxDQUFDZSxTQUFQLDZEQUFvQixJQURiO0FBRWhCQyxNQUFBQSxVQUFVLEVBQUUsRUFGSTtBQUdoQkMsTUFBQUEsY0FBYyxFQUFFO0FBSEEsS0FBbEI7QUFLQSxTQUFLQyxTQUFMLEdBQWlCLElBQUlDLGNBQUtDLEtBQVQsQ0FBZU4sU0FBZixDQUFqQjtBQUNBLFNBQUtPLFVBQUwsR0FBa0IsSUFBSUMsZUFBTUYsS0FBVixDQUFnQk4sU0FBaEIsQ0FBbEI7QUFDQSxTQUFLUyxpQkFBTCxHQUF5QixJQUFJQywwQkFBSixDQUFzQixLQUFLQyxLQUFMLENBQVdDLElBQVgsQ0FBZ0IsSUFBaEIsQ0FBdEIsRUFBNkMxQixJQUFJLENBQUMyQixHQUFsRCxDQUF6QjtBQUNBLFNBQUtDLElBQUwsR0FBWTVCLElBQUksQ0FBQzJCLEdBQWpCO0FBQ0Q7O0FBRU0sTUFBSEEsR0FBRyxHQUFJO0FBQUE7O0FBQ1QseUJBQU8sS0FBS0MsSUFBWixtREFBb0J0QyxXQUFwQjtBQUNEOztBQVdZLFFBQVB1QyxPQUFPLENBQUVDLGFBQUYsRUFBaUI7QUFDNUIsVUFBTUMsVUFBVSxHQUFHLG9CQUFNRCxhQUFOLENBQW5COztBQUNBLFNBQUtsQixlQUFMLENBQXFCb0IsSUFBckIsQ0FBMEJELFVBQTFCOztBQUNBLFFBQUk7QUFDRixhQUFPLE1BQU1BLFVBQWI7QUFDRCxLQUZELFNBRVU7QUFDUjlCLHNCQUFFZ0MsSUFBRixDQUFPLEtBQUtyQixlQUFaLEVBQTZCbUIsVUFBN0I7QUFDRDtBQUNGOztBQUVERyxFQUFBQSxzQkFBc0IsR0FBSTtBQUN4QixXQUFPLEtBQUt0QixlQUFMLENBQXFCdUIsTUFBNUI7QUFDRDs7QUFFREMsRUFBQUEsb0JBQW9CLEdBQUk7QUFDdEIsU0FBS3hCLGVBQUwsR0FBdUIsRUFBdkI7QUFDRDs7QUFFRHlCLEVBQUFBLHlCQUF5QixDQUFFQyxRQUFGLEVBQVk7QUFDbkMsV0FBTyxDQUFDckMsZ0JBQUVzQyxRQUFGLENBQVcsQ0FBQyxVQUFELEVBQWEsV0FBYixFQUEwQixTQUExQixDQUFYLEVBQWlERCxRQUFqRCxDQUFSO0FBQ0Q7O0FBRXFCLE1BQWxCRSxrQkFBa0IsQ0FBRUMsS0FBRixFQUFTO0FBQzdCLFNBQUs1QixtQkFBTCxHQUEyQjRCLEtBQTNCO0FBQ0EsU0FBS2xCLGlCQUFMLENBQXVCaUIsa0JBQXZCLEdBQTRDQyxLQUE1QztBQUNEOztBQUVxQixNQUFsQkQsa0JBQWtCLEdBQUk7QUFDeEIsV0FBTyxLQUFLM0IsbUJBQVo7QUFDRDs7QUFFRDZCLEVBQUFBLGNBQWMsQ0FBRUMsR0FBRixFQUFPO0FBQ25CLFFBQUlBLEdBQUcsS0FBSyxFQUFaLEVBQWdCO0FBQ2RBLE1BQUFBLEdBQUcsR0FBRyxHQUFOO0FBQ0Q7O0FBQ0QsVUFBTUMsU0FBUyxHQUFJLEdBQUUsS0FBS3pDLE1BQU8sTUFBSyxLQUFLQyxNQUFPLElBQUcsS0FBS0MsSUFBSyxHQUFFLEtBQUtDLElBQUssRUFBM0U7QUFDQSxVQUFNdUMsVUFBVSxHQUFHLHFCQUFuQjtBQUNBLFFBQUlDLFlBQVksR0FBRyxFQUFuQjs7QUFDQSxRQUFJLFFBQVFDLElBQVIsQ0FBYUosR0FBYixDQUFKLEVBQXVCO0FBQ3JCLFlBQU1LLEtBQUssR0FBSSxJQUFJQyxNQUFKLENBQVksZ0JBQWVKLFVBQVcsRUFBdEMsQ0FBRCxDQUEyQ0ssSUFBM0MsQ0FBZ0RQLEdBQWhELENBQWQ7O0FBQ0EsVUFBSSxDQUFDSyxLQUFMLEVBQVk7QUFDVixjQUFNLElBQUlHLEtBQUosQ0FBVSx1REFBVixDQUFOO0FBQ0Q7O0FBQ0RMLE1BQUFBLFlBQVksR0FBR0gsR0FBRyxDQUFDUyxPQUFKLENBQVlKLEtBQUssQ0FBQyxDQUFELENBQWpCLEVBQXNCLEVBQXRCLENBQWY7QUFDRCxLQU5ELE1BTU8sSUFBSyxJQUFJQyxNQUFKLENBQVcsSUFBWCxDQUFELENBQW1CRixJQUFuQixDQUF3QkosR0FBeEIsQ0FBSixFQUFrQztBQUN2Q0csTUFBQUEsWUFBWSxHQUFHSCxHQUFmO0FBQ0QsS0FGTSxNQUVBO0FBQ0wsWUFBTSxJQUFJUSxLQUFKLENBQVcscUNBQW9DUixHQUFJLEdBQW5ELENBQU47QUFDRDs7QUFFRCxVQUFNVSxhQUFhLEdBQUcsSUFBSUosTUFBSixDQUFXLDRCQUFYLENBQXRCOztBQUNBLFFBQUlJLGFBQWEsQ0FBQ04sSUFBZCxDQUFtQkQsWUFBbkIsQ0FBSixFQUFzQztBQUNwQ0EsTUFBQUEsWUFBWSxHQUFHTyxhQUFhLENBQUNILElBQWQsQ0FBbUJKLFlBQW5CLEVBQWlDLENBQWpDLENBQWY7QUFDRDs7QUFFRCxRQUFJLENBQUUsSUFBSUcsTUFBSixDQUFXSixVQUFYLENBQUQsQ0FBeUJFLElBQXpCLENBQThCRCxZQUE5QixDQUFMLEVBQWtEO0FBQ2hEQSxNQUFBQSxZQUFZLEdBQUksWUFBVyxLQUFLckMsU0FBVSxHQUFFcUMsWUFBYSxFQUF6RDtBQUNEOztBQUVELFVBQU1RLGlCQUFpQixHQUFHLEtBQUtqQix5QkFBTCxDQUErQlMsWUFBL0IsQ0FBMUI7O0FBRUEsUUFBSVEsaUJBQWlCLElBQUksS0FBSzdDLFNBQUwsS0FBbUIsSUFBNUMsRUFBa0Q7QUFDaEQsWUFBTSxJQUFJMEMsS0FBSixDQUFVLHNEQUFWLENBQU47QUFDRDs7QUFFRCxVQUFNSSxhQUFhLEdBQUcsSUFBSU4sTUFBSixDQUFXLG1CQUFYLENBQXRCOztBQUNBLFFBQUlNLGFBQWEsQ0FBQ1IsSUFBZCxDQUFtQkQsWUFBbkIsQ0FBSixFQUFzQztBQUdwQyxZQUFNVSxLQUFLLEdBQUdELGFBQWEsQ0FBQ0wsSUFBZCxDQUFtQkosWUFBbkIsQ0FBZDtBQUNBQSxNQUFBQSxZQUFZLEdBQUdBLFlBQVksQ0FBQ00sT0FBYixDQUFxQkksS0FBSyxDQUFDLENBQUQsQ0FBMUIsRUFBK0IsS0FBSy9DLFNBQXBDLENBQWY7QUFDRCxLQUxELE1BS08sSUFBSTZDLGlCQUFKLEVBQXVCO0FBQzVCLFlBQU0sSUFBSUgsS0FBSixDQUFXLDRDQUEyQ0wsWUFBYSxFQUFuRSxDQUFOO0FBQ0Q7O0FBQ0RBLElBQUFBLFlBQVksR0FBR0EsWUFBWSxDQUFDTSxPQUFiLENBQXFCLEtBQXJCLEVBQTRCLEVBQTVCLENBQWY7QUFFQSxXQUFPUixTQUFTLEdBQUdFLFlBQW5CO0FBQ0Q7O0FBRVUsUUFBTHJCLEtBQUssQ0FBRWtCLEdBQUYsRUFBT2MsTUFBUCxFQUFlQyxJQUFJLEdBQUcsSUFBdEIsRUFBNEI7QUFDckNELElBQUFBLE1BQU0sR0FBR0EsTUFBTSxDQUFDRSxXQUFQLEVBQVQ7QUFDQSxVQUFNQyxNQUFNLEdBQUcsS0FBS2xCLGNBQUwsQ0FBb0JDLEdBQXBCLENBQWY7O0FBQ0EsVUFBTWtCLFlBQVksR0FBSUMsT0FBRCxJQUFhN0QsZ0JBQUU4RCxRQUFGLENBQ2hDOUQsZ0JBQUUrRCxRQUFGLENBQVdGLE9BQVgsSUFBc0JBLE9BQXRCLEdBQWdDRyxJQUFJLENBQUNDLFNBQUwsQ0FBZUosT0FBZixDQURBLEVBRWhDO0FBQUUzQixNQUFBQSxNQUFNLEVBQUVnQztBQUFWLEtBRmdDLENBQWxDOztBQUdBLFVBQU1DLE9BQU8sR0FBRztBQUNkekIsTUFBQUEsR0FBRyxFQUFFaUIsTUFEUztBQUVkSCxNQUFBQSxNQUZjO0FBR2RZLE1BQUFBLE9BQU8sRUFBRTtBQUNQLHdCQUFnQixpQ0FEVDtBQUVQLHNCQUFjLFFBRlA7QUFHUEMsUUFBQUEsTUFBTSxFQUFFO0FBSEQsT0FISztBQVFkN0MsTUFBQUEsS0FBSyxFQUFFLEtBUk87QUFTZGYsTUFBQUEsT0FBTyxFQUFFLEtBQUtBLE9BVEE7QUFVZFEsTUFBQUEsU0FBUyxFQUFFLEtBQUtBLFNBVkY7QUFXZEcsTUFBQUEsVUFBVSxFQUFFLEtBQUtBO0FBWEgsS0FBaEI7O0FBY0EsUUFBSWtELGNBQUtDLFFBQUwsQ0FBY2QsSUFBZCxLQUF1QkQsTUFBTSxLQUFLLEtBQXRDLEVBQTZDO0FBQzNDLFVBQUksT0FBT0MsSUFBUCxLQUFnQixRQUFwQixFQUE4QjtBQUM1QixZQUFJO0FBQ0ZVLFVBQUFBLE9BQU8sQ0FBQ0ssSUFBUixHQUFlUixJQUFJLENBQUNTLEtBQUwsQ0FBV2hCLElBQVgsQ0FBZjtBQUNELFNBRkQsQ0FFRSxPQUFPaUIsQ0FBUCxFQUFVO0FBQ1YsZ0JBQU0sSUFBSXhCLEtBQUosQ0FBVyxvREFBbURVLFlBQVksQ0FBQ0gsSUFBRCxDQUFPLEVBQWpGLENBQU47QUFDRDtBQUNGLE9BTkQsTUFNTztBQUNMVSxRQUFBQSxPQUFPLENBQUNLLElBQVIsR0FBZWYsSUFBZjtBQUNEO0FBQ0Y7O0FBRUQsU0FBSy9CLEdBQUwsQ0FBU2lELEtBQVQsQ0FBZ0IsYUFBWW5CLE1BQU8sSUFBR2QsR0FBRyxJQUFJLEdBQUksU0FBUWMsTUFBTyxJQUFHRyxNQUFPLElBQTNELElBQ1pRLE9BQU8sQ0FBQ0ssSUFBUixHQUFnQixjQUFhWixZQUFZLENBQUNPLE9BQU8sQ0FBQ0ssSUFBVCxDQUFlLEVBQXhELEdBQTRELGNBRGhELENBQWY7O0FBR0EsVUFBTUksZUFBZSxHQUFJQyxLQUFELElBQVc7QUFDakMsWUFBTUMsR0FBRyxHQUFHLElBQUk1QixLQUFKLENBQVcsa0JBQWlCUixHQUFJLGFBQWhDLENBQVo7QUFDQW9DLE1BQUFBLEdBQUcsQ0FBQ0MsUUFBSixHQUFlO0FBQ2JQLFFBQUFBLElBQUksRUFBRUssS0FETztBQUViRyxRQUFBQSxNQUFNLEVBQUU7QUFGSyxPQUFmO0FBSUEsWUFBTUYsR0FBTjtBQUNELEtBUEQ7O0FBUUEsUUFBSUcsZ0JBQWdCLEdBQUcsS0FBdkI7O0FBQ0EsUUFBSTtBQUNGLFlBQU07QUFBQ1QsUUFBQUEsSUFBRDtBQUFPUSxRQUFBQSxNQUFQO0FBQWVaLFFBQUFBO0FBQWYsVUFBMEIsTUFBTSxLQUFLeEMsT0FBTCxDQUFhdUMsT0FBYixDQUF0Qzs7QUFHQSxVQUFJLENBQUNuRSxnQkFBRWtGLGFBQUYsQ0FBZ0JWLElBQWhCLENBQUwsRUFBNEI7QUFHMUJJLFFBQUFBLGVBQWUsQ0FBQ0osSUFBRCxDQUFmO0FBQ0Q7O0FBQ0QsV0FBSzlDLEdBQUwsQ0FBU2lELEtBQVQsQ0FBZ0IsNEJBQTJCSyxNQUFPLEtBQUlwQixZQUFZLENBQUNZLElBQUQsQ0FBTyxFQUF6RTtBQUNBUyxNQUFBQSxnQkFBZ0IsR0FBRyxJQUFuQjtBQUNBLFlBQU1FLHdCQUF3QixHQUFHLGFBQWFyQyxJQUFiLENBQWtCSixHQUFsQixLQUEwQmMsTUFBTSxLQUFLLE1BQXRFOztBQUNBLFVBQUkyQix3QkFBSixFQUE4QjtBQUM1QixZQUFJSCxNQUFNLEtBQUssR0FBZixFQUFvQjtBQUNsQixlQUFLeEUsU0FBTCxHQUFpQmdFLElBQUksQ0FBQ2hFLFNBQUwsSUFBa0IsQ0FBQ2dFLElBQUksQ0FBQ2hDLEtBQUwsSUFBYyxFQUFmLEVBQW1CaEMsU0FBdEQ7QUFDRDs7QUFDRCxhQUFLK0Isa0JBQUwsR0FBMEIsS0FBSzZDLHNCQUFMLENBQTRCWixJQUE1QixDQUExQjtBQUNBLGFBQUs5QyxHQUFMLENBQVMyRCxJQUFULENBQWUsMENBQXlDLEtBQUs5QyxrQkFBbUIsR0FBaEY7QUFDRDs7QUFDRCxVQUFJdkMsZ0JBQUVzRixHQUFGLENBQU1kLElBQU4sRUFBWSxRQUFaLEtBQXlCZSxRQUFRLENBQUNmLElBQUksQ0FBQ1EsTUFBTixFQUFjLEVBQWQsQ0FBUixLQUE4QixDQUEzRCxFQUE4RDtBQUU1REosUUFBQUEsZUFBZSxDQUFDSixJQUFELENBQWY7QUFDRDs7QUFDRCxZQUFNZ0IsR0FBRyxHQUFHO0FBQUNDLFFBQUFBLFVBQVUsRUFBRVQsTUFBYjtBQUFxQlosUUFBQUEsT0FBckI7QUFBOEJYLFFBQUFBLElBQUksRUFBRWU7QUFBcEMsT0FBWjtBQUNBLGFBQU8sQ0FBQ2dCLEdBQUQsRUFBTWhCLElBQU4sQ0FBUDtBQUNELEtBekJELENBeUJFLE9BQU9FLENBQVAsRUFBVTtBQUFBOztBQUlWLFVBQUlnQixhQUFhLEdBQUdoQixDQUFDLENBQUNpQixPQUF0Qjs7QUFDQSxVQUFJckIsY0FBS0MsUUFBTCxDQUFjRyxDQUFDLENBQUNLLFFBQWhCLENBQUosRUFBK0I7QUFDN0IsWUFBSSxDQUFDRSxnQkFBTCxFQUF1QjtBQUNyQixnQkFBTUosS0FBSyxHQUFHakIsWUFBWSxDQUFDYyxDQUFDLENBQUNLLFFBQUYsQ0FBV1AsSUFBWixDQUExQjtBQUNBLGVBQUs5QyxHQUFMLENBQVMyRCxJQUFULENBQWNmLGNBQUtDLFFBQUwsQ0FBY0csQ0FBQyxDQUFDSyxRQUFGLENBQVdDLE1BQXpCLElBQ1QsNEJBQTJCTixDQUFDLENBQUNLLFFBQUYsQ0FBV0MsTUFBTyxLQUFJSCxLQUFNLEVBRDlDLEdBRVQscUNBQW9DQSxLQUFNLEVBRi9DO0FBR0Q7QUFDRixPQVBELE1BT087QUFDTGEsUUFBQUEsYUFBYSxHQUFJLGlFQUFnRWhCLENBQUMsQ0FBQ2lCLE9BQVEsRUFBM0Y7O0FBQ0EsWUFBSWxHLHNCQUFzQixDQUFDbUcsSUFBdkIsQ0FBNkJDLENBQUQsSUFBT0EsQ0FBQyxDQUFDL0MsSUFBRixDQUFPNEIsQ0FBQyxDQUFDaUIsT0FBVCxDQUFuQyxDQUFKLEVBQTJEO0FBQ3pELGVBQUtqRSxHQUFMLENBQVMyRCxJQUFULENBQWNYLENBQUMsQ0FBQ2lCLE9BQWhCO0FBQ0QsU0FGRCxNQUVPO0FBQ0wsZUFBS2pFLEdBQUwsQ0FBUzJELElBQVQsQ0FBY1gsQ0FBQyxDQUFDb0IsS0FBaEI7QUFDRDtBQUNGOztBQUNELFlBQU0sSUFBSUMsZUFBT0MsaUJBQVgsQ0FBNkJOLGFBQTdCLGlCQUE0Q2hCLENBQUMsQ0FBQ0ssUUFBOUMsZ0RBQTRDLFlBQVlQLElBQXhELGtCQUE4REUsQ0FBQyxDQUFDSyxRQUFoRSxpREFBOEQsYUFBWUMsTUFBMUUsQ0FBTjtBQUNEO0FBQ0Y7O0FBRURJLEVBQUFBLHNCQUFzQixDQUFFYSxNQUFGLEVBQVU7QUFDOUIsUUFBSWpHLGdCQUFFa0csU0FBRixDQUFZRCxNQUFNLENBQUNqQixNQUFuQixDQUFKLEVBQWdDO0FBQzlCLGFBQU90RixPQUFQO0FBQ0Q7O0FBQ0QsUUFBSSxDQUFDTSxnQkFBRW1HLFdBQUYsQ0FBY0YsTUFBTSxDQUFDekQsS0FBckIsQ0FBTCxFQUFrQztBQUNoQyxhQUFPN0MsR0FBUDtBQUNEO0FBQ0Y7O0FBRUR5RyxFQUFBQSxvQkFBb0IsQ0FBRTFELEdBQUYsRUFBT2MsTUFBUCxFQUFlO0FBQ2pDLFVBQU02QyxrQkFBa0IsR0FBSUMsT0FBRCxJQUFhO0FBQ3RDLFlBQU1DLFNBQVMsR0FBR0QsT0FBTyxDQUFDckQsSUFBUixDQUFhUCxHQUFiLENBQWxCO0FBQ0EsYUFBTzZELFNBQVMsR0FBRyxrQ0FBbUJBLFNBQVMsQ0FBQyxDQUFELENBQTVCLEVBQWlDL0MsTUFBakMsRUFBeUMsS0FBS2pELFdBQTlDLENBQUgsR0FBZ0UsSUFBaEY7QUFDRCxLQUhEOztBQUlBLFFBQUlpRyxXQUFXLEdBQUcsa0NBQW1COUQsR0FBbkIsRUFBd0JjLE1BQXhCLEVBQWdDLEtBQUtqRCxXQUFyQyxDQUFsQjs7QUFDQSxRQUFJLENBQUNpRyxXQUFELElBQWdCeEcsZ0JBQUVzQyxRQUFGLENBQVdJLEdBQVgsRUFBaUIsR0FBRSxLQUFLbkMsV0FBWSxXQUFwQyxDQUFwQixFQUFxRTtBQUNuRWlHLE1BQUFBLFdBQVcsR0FBR0gsa0JBQWtCLENBQUMsSUFBSXJELE1BQUosQ0FBWSxHQUFFaEQsZ0JBQUV5RyxZQUFGLENBQWUsS0FBS2xHLFdBQXBCLENBQWlDLG9CQUEvQyxDQUFELENBQWhDO0FBQ0Q7O0FBQ0QsUUFBSSxDQUFDaUcsV0FBRCxJQUFnQnhHLGdCQUFFc0MsUUFBRixDQUFXSSxHQUFYLEVBQWdCLEtBQUtuQyxXQUFyQixDQUFwQixFQUF1RDtBQUNyRGlHLE1BQUFBLFdBQVcsR0FBR0gsa0JBQWtCLENBQUMsSUFBSXJELE1BQUosQ0FBWSxHQUFFaEQsZ0JBQUV5RyxZQUFGLENBQWUsS0FBS2xHLFdBQXBCLENBQWlDLE9BQS9DLENBQUQsQ0FBaEM7QUFDRDs7QUFDRCxXQUFPaUcsV0FBUDtBQUNEOztBQUVpQixRQUFaRSxZQUFZLENBQUVoRSxHQUFGLEVBQU9jLE1BQVAsRUFBZUMsSUFBSSxHQUFHLElBQXRCLEVBQTRCO0FBQzVDLFVBQU0rQyxXQUFXLEdBQUcsS0FBS0osb0JBQUwsQ0FBMEIxRCxHQUExQixFQUErQmMsTUFBL0IsQ0FBcEI7O0FBQ0EsUUFBSSxDQUFDZ0QsV0FBTCxFQUFrQjtBQUNoQixhQUFPLE1BQU0sS0FBS2hGLEtBQUwsQ0FBV2tCLEdBQVgsRUFBZ0JjLE1BQWhCLEVBQXdCQyxJQUF4QixDQUFiO0FBQ0Q7O0FBQ0QsU0FBSy9CLEdBQUwsQ0FBU2lELEtBQVQsQ0FBZ0IsWUFBV2pDLEdBQUksc0JBQXFCOEQsV0FBWSxHQUFoRTtBQUVBLFdBQU8sTUFBTSxLQUFLbEYsaUJBQUwsQ0FBdUJxRixlQUF2QixDQUF1Q0gsV0FBdkMsRUFBb0Q5RCxHQUFwRCxFQUF5RGMsTUFBekQsRUFBaUVDLElBQWpFLENBQWI7QUFDRDs7QUFFWSxRQUFQbUQsT0FBTyxDQUFFbEUsR0FBRixFQUFPYyxNQUFQLEVBQWVDLElBQUksR0FBRyxJQUF0QixFQUE0QjtBQUN2QyxRQUFJc0IsUUFBSjtBQUNBLFFBQUk4QixVQUFKOztBQUNBLFFBQUk7QUFDRixPQUFDOUIsUUFBRCxFQUFXOEIsVUFBWCxJQUF5QixNQUFNLEtBQUtILFlBQUwsQ0FBa0JoRSxHQUFsQixFQUF1QmMsTUFBdkIsRUFBK0JDLElBQS9CLENBQS9CO0FBQ0QsS0FGRCxDQUVFLE9BQU9xQixHQUFQLEVBQVk7QUFDWixVQUFJLHlCQUFZQSxHQUFaLEVBQWlCaUIsZUFBT0MsaUJBQXhCLENBQUosRUFBZ0Q7QUFDOUMsY0FBTWxCLEdBQUcsQ0FBQ2dDLGNBQUosRUFBTjtBQUNEOztBQUNELFlBQU0sSUFBSWYsZUFBT2dCLFlBQVgsQ0FBd0JqQyxHQUFHLENBQUNhLE9BQTVCLENBQU47QUFDRDs7QUFDRCxVQUFNcUIsUUFBUSxHQUFHLEtBQUs1QixzQkFBTCxDQUE0QnlCLFVBQTVCLENBQWpCOztBQUNBLFFBQUlHLFFBQVEsS0FBS3RILE9BQWpCLEVBQTBCO0FBRXhCLFVBQUlxRixRQUFRLENBQUNVLFVBQVQsS0FBd0IsR0FBeEIsSUFBK0JvQixVQUFVLENBQUM3QixNQUFYLEtBQXNCLENBQXpELEVBQTREO0FBQzFELGVBQU82QixVQUFVLENBQUNyRSxLQUFsQjtBQUNEOztBQUNELFlBQU13QyxNQUFNLEdBQUdPLFFBQVEsQ0FBQ3NCLFVBQVUsQ0FBQzdCLE1BQVosRUFBb0IsRUFBcEIsQ0FBdkI7O0FBQ0EsVUFBSSxDQUFDaUMsS0FBSyxDQUFDakMsTUFBRCxDQUFOLElBQWtCQSxNQUFNLEtBQUssQ0FBakMsRUFBb0M7QUFDbEMsWUFBSVcsT0FBTyxHQUFHa0IsVUFBVSxDQUFDckUsS0FBekI7O0FBQ0EsWUFBSXhDLGdCQUFFc0YsR0FBRixDQUFNSyxPQUFOLEVBQWUsU0FBZixDQUFKLEVBQStCO0FBQzdCQSxVQUFBQSxPQUFPLEdBQUdBLE9BQU8sQ0FBQ0EsT0FBbEI7QUFDRDs7QUFDRCxjQUFNLHdDQUEyQlgsTUFBM0IsRUFBbUNoRixnQkFBRWtILE9BQUYsQ0FBVXZCLE9BQVYsSUFBcUIsOEJBQWlCWCxNQUFqQixDQUFyQixHQUFnRFcsT0FBbkYsQ0FBTjtBQUNEO0FBQ0YsS0FiRCxNQWFPLElBQUlxQixRQUFRLEtBQUtySCxHQUFqQixFQUFzQjtBQUUzQixVQUFJb0YsUUFBUSxDQUFDVSxVQUFULEdBQXNCLEdBQTFCLEVBQStCO0FBQzdCLGVBQU9vQixVQUFVLENBQUNyRSxLQUFsQjtBQUNEOztBQUNELFVBQUl4QyxnQkFBRWtGLGFBQUYsQ0FBZ0IyQixVQUFVLENBQUNyRSxLQUEzQixLQUFxQ3FFLFVBQVUsQ0FBQ3JFLEtBQVgsQ0FBaUJxQyxLQUExRCxFQUFpRTtBQUMvRCxjQUFNLGtDQUFxQmdDLFVBQVUsQ0FBQ3JFLEtBQVgsQ0FBaUJxQyxLQUF0QyxFQUE2Q2dDLFVBQVUsQ0FBQ3JFLEtBQVgsQ0FBaUJtRCxPQUE5RCxFQUF1RWtCLFVBQVUsQ0FBQ3JFLEtBQVgsQ0FBaUIyRSxVQUF4RixDQUFOO0FBQ0Q7QUFDRixLQVJNLE1BUUEsSUFBSXBDLFFBQVEsQ0FBQ1UsVUFBVCxLQUF3QixHQUE1QixFQUFpQztBQUV0QyxhQUFPb0IsVUFBUDtBQUNEOztBQUNELFVBQU0sSUFBSWQsZUFBT2dCLFlBQVgsQ0FBeUIsK0NBQThDaEMsUUFBUSxDQUFDVSxVQUFXLElBQW5FLEdBQ0Msc0JBQXFCekYsZ0JBQUU4RCxRQUFGLENBQVdFLElBQUksQ0FBQ0MsU0FBTCxDQUFlNEMsVUFBZixDQUFYLEVBQXVDO0FBQUMzRSxNQUFBQSxNQUFNLEVBQUU7QUFBVCxLQUF2QyxDQUFzRCxHQURwRyxDQUFOO0FBRUQ7O0FBRURrRixFQUFBQSxtQkFBbUIsQ0FBRTFFLEdBQUYsRUFBTztBQUN4QixVQUFNYSxLQUFLLEdBQUdiLEdBQUcsQ0FBQ2EsS0FBSixDQUFVLG9CQUFWLENBQWQ7QUFDQSxXQUFPQSxLQUFLLEdBQUdBLEtBQUssQ0FBQyxDQUFELENBQVIsR0FBYyxJQUExQjtBQUNEOztBQUVnQixRQUFYOEQsV0FBVyxDQUFFQyxHQUFGLEVBQU85QixHQUFQLEVBQVk7QUFHM0IsUUFBSUMsVUFBSjtBQUNBLFFBQUlvQixVQUFKOztBQUNBLFFBQUk7QUFDRixVQUFJOUIsUUFBSjtBQUNBLE9BQUNBLFFBQUQsRUFBVzhCLFVBQVgsSUFBeUIsTUFBTSxLQUFLSCxZQUFMLENBQWtCWSxHQUFHLENBQUNDLFdBQXRCLEVBQW1DRCxHQUFHLENBQUM5RCxNQUF2QyxFQUErQzhELEdBQUcsQ0FBQzdELElBQW5ELENBQS9CO0FBQ0ErQixNQUFBQSxHQUFHLENBQUNwQixPQUFKLEdBQWNXLFFBQVEsQ0FBQ1gsT0FBdkI7QUFDQXFCLE1BQUFBLFVBQVUsR0FBR1YsUUFBUSxDQUFDVSxVQUF0QjtBQUNELEtBTEQsQ0FLRSxPQUFPWCxHQUFQLEVBQVk7QUFDWixPQUFDVyxVQUFELEVBQWFvQixVQUFiLElBQTJCLG9DQUN6Qix5QkFBWS9CLEdBQVosRUFBaUJpQixlQUFPQyxpQkFBeEIsSUFBNkNsQixHQUFHLENBQUNnQyxjQUFKLEVBQTdDLEdBQW9FaEMsR0FEM0MsQ0FBM0I7QUFHRDs7QUFDRFUsSUFBQUEsR0FBRyxDQUFDZ0MsR0FBSixDQUFRLGNBQVIsRUFBd0IsaUNBQXhCOztBQUNBLFFBQUksQ0FBQ3hILGdCQUFFa0YsYUFBRixDQUFnQjJCLFVBQWhCLENBQUwsRUFBa0M7QUFDaEMsWUFBTWhDLEtBQUssR0FBRyxJQUFJa0IsZUFBT2dCLFlBQVgsQ0FDWCx1REFBc0R0QixVQUFXLCtCQUFsRSxHQUNBekYsZ0JBQUU4RCxRQUFGLENBQVksR0FBRStDLFVBQVcsRUFBekIsRUFBNEI7QUFBQzNFLFFBQUFBLE1BQU0sRUFBRTtBQUFULE9BQTVCLENBRlksQ0FBZDtBQUlBLE9BQUN1RCxVQUFELEVBQWFvQixVQUFiLElBQTJCLG9DQUF1QmhDLEtBQXZCLENBQTNCO0FBQ0Q7O0FBS0QsUUFBSTdFLGdCQUFFc0YsR0FBRixDQUFNdUIsVUFBTixFQUFrQixXQUFsQixDQUFKLEVBQW9DO0FBQ2xDLFlBQU1ZLFlBQVksR0FBRyxLQUFLTCxtQkFBTCxDQUF5QkUsR0FBRyxDQUFDQyxXQUE3QixDQUFyQjs7QUFDQSxVQUFJRSxZQUFKLEVBQWtCO0FBQ2hCLGFBQUsvRixHQUFMLENBQVMyRCxJQUFULENBQWUsdUJBQXNCd0IsVUFBVSxDQUFDckcsU0FBVSxTQUFRaUgsWUFBYSxFQUEvRTtBQUNBWixRQUFBQSxVQUFVLENBQUNyRyxTQUFYLEdBQXVCaUgsWUFBdkI7QUFDRCxPQUhELE1BR08sSUFBSSxLQUFLakgsU0FBVCxFQUFvQjtBQUN6QixhQUFLa0IsR0FBTCxDQUFTMkQsSUFBVCxDQUFlLHVCQUFzQndCLFVBQVUsQ0FBQ3JHLFNBQVUsU0FBUSxLQUFLQSxTQUFVLEVBQWpGO0FBQ0FxRyxRQUFBQSxVQUFVLENBQUNyRyxTQUFYLEdBQXVCLEtBQUtBLFNBQTVCO0FBQ0Q7QUFDRjs7QUFDRHFHLElBQUFBLFVBQVUsQ0FBQ3JFLEtBQVgsR0FBbUIsa0NBQW9CcUUsVUFBVSxDQUFDckUsS0FBL0IsQ0FBbkI7QUFDQWdELElBQUFBLEdBQUcsQ0FBQ1IsTUFBSixDQUFXUyxVQUFYLEVBQXVCaUMsSUFBdkIsQ0FBNEIxRCxJQUFJLENBQUNDLFNBQUwsQ0FBZSwyQkFBYTRDLFVBQWIsQ0FBZixDQUE1QjtBQUNEOztBQXpVVzs7O2VBNlVDaEgsTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBsb2dnZXIsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IGdldFN1bW1hcnlCeUNvZGUgfSBmcm9tICcuLi9qc29ud3Atc3RhdHVzL3N0YXR1cyc7XG5pbXBvcnQge1xuICBlcnJvcnMsIGlzRXJyb3JUeXBlLCBlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZSwgZXJyb3JGcm9tVzNDSnNvbkNvZGUsXG4gIGdldFJlc3BvbnNlRm9yVzNDRXJyb3IsXG59IGZyb20gJy4uL3Byb3RvY29sL2Vycm9ycyc7XG5pbXBvcnQgeyByb3V0ZVRvQ29tbWFuZE5hbWUgfSBmcm9tICcuLi9wcm90b2NvbCc7XG5pbXBvcnQgeyBNQVhfTE9HX0JPRFlfTEVOR1RILCBERUZBVUxUX0JBU0VfUEFUSCwgUFJPVE9DT0xTIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBQcm90b2NvbENvbnZlcnRlciBmcm9tICcuL3Byb3RvY29sLWNvbnZlcnRlcic7XG5pbXBvcnQgeyBmb3JtYXRSZXNwb25zZVZhbHVlLCBmb3JtYXRTdGF0dXMgfSBmcm9tICcuLi9wcm90b2NvbC9oZWxwZXJzJztcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0IGh0dHBzIGZyb20gJ2h0dHBzJztcblxuY29uc3QgREVGQVVMVF9MT0cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdXRCBQcm94eScpO1xuY29uc3QgREVGQVVMVF9SRVFVRVNUX1RJTUVPVVQgPSAyNDAwMDA7XG5jb25zdCBDT01QQUNUX0VSUk9SX1BBVFRFUk5TID0gW1xuICAvXFxiRUNPTk5SRUZVU0VEXFxiLyxcbiAgL3NvY2tldCBoYW5nIHVwLyxcbl07XG5cbmNvbnN0IHtNSlNPTldQLCBXM0N9ID0gUFJPVE9DT0xTO1xuXG5jbGFzcyBKV1Byb3h5IHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIF8uZGVmYXVsdHModGhpcywgb3B0cywge1xuICAgICAgc2NoZW1lOiAnaHR0cCcsXG4gICAgICBzZXJ2ZXI6ICdsb2NhbGhvc3QnLFxuICAgICAgcG9ydDogNDQ0NCxcbiAgICAgIGJhc2U6IERFRkFVTFRfQkFTRV9QQVRILFxuICAgICAgcmVxQmFzZVBhdGg6IERFRkFVTFRfQkFTRV9QQVRILFxuICAgICAgc2Vzc2lvbklkOiBudWxsLFxuICAgICAgdGltZW91dDogREVGQVVMVF9SRVFVRVNUX1RJTUVPVVQsXG4gICAgfSk7XG4gICAgdGhpcy5zY2hlbWUgPSB0aGlzLnNjaGVtZS50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuX2FjdGl2ZVJlcXVlc3RzID0gW107XG4gICAgdGhpcy5fZG93bnN0cmVhbVByb3RvY29sID0gbnVsbDtcbiAgICBjb25zdCBhZ2VudE9wdHMgPSB7XG4gICAgICBrZWVwQWxpdmU6IG9wdHMua2VlcEFsaXZlID8/IHRydWUsXG4gICAgICBtYXhTb2NrZXRzOiAxMCxcbiAgICAgIG1heEZyZWVTb2NrZXRzOiA1LFxuICAgIH07XG4gICAgdGhpcy5odHRwQWdlbnQgPSBuZXcgaHR0cC5BZ2VudChhZ2VudE9wdHMpO1xuICAgIHRoaXMuaHR0cHNBZ2VudCA9IG5ldyBodHRwcy5BZ2VudChhZ2VudE9wdHMpO1xuICAgIHRoaXMucHJvdG9jb2xDb252ZXJ0ZXIgPSBuZXcgUHJvdG9jb2xDb252ZXJ0ZXIodGhpcy5wcm94eS5iaW5kKHRoaXMpLCBvcHRzLmxvZyk7XG4gICAgdGhpcy5fbG9nID0gb3B0cy5sb2c7XG4gIH1cblxuICBnZXQgbG9nICgpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9nID8/IERFRkFVTFRfTE9HO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIHJlcXVlc3RzIHRvIHRoZSBkb3duc3RyZWFtIHNlcnZlclxuICAgKlxuICAgKiBAcHJpdmF0ZSAtIERvIG5vdCBjYWxsIHRoaXMgbWV0aG9kIGRpcmVjdGx5LFxuICAgKiBpdCB1c2VzIGNsaWVudC1zcGVjaWZpYyBhcmd1bWVudHMgYW5kIHJlc3BvbnNlcyFcbiAgICpcbiAgICogQHBhcmFtIHtBeGlvc1JlcXVlc3RDb25maWd9IHJlcXVlc3RDb25maWdcbiAgICogQHJldHVybnMge0F4aW9zUmVzcG9uc2V9XG4gICAqL1xuICBhc3luYyByZXF1ZXN0IChyZXF1ZXN0Q29uZmlnKSB7XG4gICAgY29uc3QgcmVxUHJvbWlzZSA9IGF4aW9zKHJlcXVlc3RDb25maWcpO1xuICAgIHRoaXMuX2FjdGl2ZVJlcXVlc3RzLnB1c2gocmVxUHJvbWlzZSk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCByZXFQcm9taXNlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBfLnB1bGwodGhpcy5fYWN0aXZlUmVxdWVzdHMsIHJlcVByb21pc2UpO1xuICAgIH1cbiAgfVxuXG4gIGdldEFjdGl2ZVJlcXVlc3RzQ291bnQgKCkge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVSZXF1ZXN0cy5sZW5ndGg7XG4gIH1cblxuICBjYW5jZWxBY3RpdmVSZXF1ZXN0cyAoKSB7XG4gICAgdGhpcy5fYWN0aXZlUmVxdWVzdHMgPSBbXTtcbiAgfVxuXG4gIGVuZHBvaW50UmVxdWlyZXNTZXNzaW9uSWQgKGVuZHBvaW50KSB7XG4gICAgcmV0dXJuICFfLmluY2x1ZGVzKFsnL3Nlc3Npb24nLCAnL3Nlc3Npb25zJywgJy9zdGF0dXMnXSwgZW5kcG9pbnQpO1xuICB9XG5cbiAgc2V0IGRvd25zdHJlYW1Qcm90b2NvbCAodmFsdWUpIHtcbiAgICB0aGlzLl9kb3duc3RyZWFtUHJvdG9jb2wgPSB2YWx1ZTtcbiAgICB0aGlzLnByb3RvY29sQ29udmVydGVyLmRvd25zdHJlYW1Qcm90b2NvbCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGRvd25zdHJlYW1Qcm90b2NvbCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbDtcbiAgfVxuXG4gIGdldFVybEZvclByb3h5ICh1cmwpIHtcbiAgICBpZiAodXJsID09PSAnJykge1xuICAgICAgdXJsID0gJy8nO1xuICAgIH1cbiAgICBjb25zdCBwcm94eUJhc2UgPSBgJHt0aGlzLnNjaGVtZX06Ly8ke3RoaXMuc2VydmVyfToke3RoaXMucG9ydH0ke3RoaXMuYmFzZX1gO1xuICAgIGNvbnN0IGVuZHBvaW50UmUgPSAnKC8oc2Vzc2lvbnxzdGF0dXMpKSc7XG4gICAgbGV0IHJlbWFpbmluZ1VybCA9ICcnO1xuICAgIGlmICgvXmh0dHAvLnRlc3QodXJsKSkge1xuICAgICAgY29uc3QgZmlyc3QgPSAobmV3IFJlZ0V4cChgKGh0dHBzPzovLy4rKSR7ZW5kcG9pbnRSZX1gKSkuZXhlYyh1cmwpO1xuICAgICAgaWYgKCFmaXJzdCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dvdCBhIGNvbXBsZXRlIHVybCBidXQgY291bGQgbm90IGV4dHJhY3QgSldQIGVuZHBvaW50Jyk7XG4gICAgICB9XG4gICAgICByZW1haW5pbmdVcmwgPSB1cmwucmVwbGFjZShmaXJzdFsxXSwgJycpO1xuICAgIH0gZWxzZSBpZiAoKG5ldyBSZWdFeHAoJ14vJykpLnRlc3QodXJsKSkge1xuICAgICAgcmVtYWluaW5nVXJsID0gdXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpZCBub3Qga25vdyB3aGF0IHRvIGRvIHdpdGggdXJsICcke3VybH0nYCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RyaXBQcmVmaXhSZSA9IG5ldyBSZWdFeHAoJ14uKj8oLyhzZXNzaW9ufHN0YXR1cykuKikkJyk7XG4gICAgaWYgKHN0cmlwUHJlZml4UmUudGVzdChyZW1haW5pbmdVcmwpKSB7XG4gICAgICByZW1haW5pbmdVcmwgPSBzdHJpcFByZWZpeFJlLmV4ZWMocmVtYWluaW5nVXJsKVsxXTtcbiAgICB9XG5cbiAgICBpZiAoIShuZXcgUmVnRXhwKGVuZHBvaW50UmUpKS50ZXN0KHJlbWFpbmluZ1VybCkpIHtcbiAgICAgIHJlbWFpbmluZ1VybCA9IGAvc2Vzc2lvbi8ke3RoaXMuc2Vzc2lvbklkfSR7cmVtYWluaW5nVXJsfWA7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWlyZXNTZXNzaW9uSWQgPSB0aGlzLmVuZHBvaW50UmVxdWlyZXNTZXNzaW9uSWQocmVtYWluaW5nVXJsKTtcblxuICAgIGlmIChyZXF1aXJlc1Nlc3Npb25JZCAmJiB0aGlzLnNlc3Npb25JZCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUcnlpbmcgdG8gcHJveHkgYSBzZXNzaW9uIGNvbW1hbmQgd2l0aG91dCBzZXNzaW9uIGlkJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2Vzc2lvbkJhc2VSZSA9IG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi8oW14vXSspJyk7XG4gICAgaWYgKHNlc3Npb25CYXNlUmUudGVzdChyZW1haW5pbmdVcmwpKSB7XG4gICAgICAvLyB3ZSBoYXZlIHNvbWV0aGluZyBsaWtlIC9zZXNzaW9uLzppZC9mb29iYXIsIHNvIHdlIG5lZWQgdG8gcmVwbGFjZVxuICAgICAgLy8gdGhlIHNlc3Npb24gaWRcbiAgICAgIGNvbnN0IG1hdGNoID0gc2Vzc2lvbkJhc2VSZS5leGVjKHJlbWFpbmluZ1VybCk7XG4gICAgICByZW1haW5pbmdVcmwgPSByZW1haW5pbmdVcmwucmVwbGFjZShtYXRjaFsxXSwgdGhpcy5zZXNzaW9uSWQpO1xuICAgIH0gZWxzZSBpZiAocmVxdWlyZXNTZXNzaW9uSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgOnNlc3Npb24gc2VjdGlvbiBmb3IgdXJsOiAke3JlbWFpbmluZ1VybH1gKTtcbiAgICB9XG4gICAgcmVtYWluaW5nVXJsID0gcmVtYWluaW5nVXJsLnJlcGxhY2UoL1xcLyQvLCAnJyk7IC8vIGNhbid0IGhhdmUgdHJhaWxpbmcgc2xhc2hlc1xuXG4gICAgcmV0dXJuIHByb3h5QmFzZSArIHJlbWFpbmluZ1VybDtcbiAgfVxuXG4gIGFzeW5jIHByb3h5ICh1cmwsIG1ldGhvZCwgYm9keSA9IG51bGwpIHtcbiAgICBtZXRob2QgPSBtZXRob2QudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBuZXdVcmwgPSB0aGlzLmdldFVybEZvclByb3h5KHVybCk7XG4gICAgY29uc3QgdHJ1bmNhdGVCb2R5ID0gKGNvbnRlbnQpID0+IF8udHJ1bmNhdGUoXG4gICAgICBfLmlzU3RyaW5nKGNvbnRlbnQpID8gY29udGVudCA6IEpTT04uc3RyaW5naWZ5KGNvbnRlbnQpLFxuICAgICAgeyBsZW5ndGg6IE1BWF9MT0dfQk9EWV9MRU5HVEggfSk7XG4gICAgY29uc3QgcmVxT3B0cyA9IHtcbiAgICAgIHVybDogbmV3VXJsLFxuICAgICAgbWV0aG9kLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnLFxuICAgICAgICAndXNlci1hZ2VudCc6ICdhcHBpdW0nLFxuICAgICAgICBhY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uLCAqLyonLFxuICAgICAgfSxcbiAgICAgIHByb3h5OiBmYWxzZSxcbiAgICAgIHRpbWVvdXQ6IHRoaXMudGltZW91dCxcbiAgICAgIGh0dHBBZ2VudDogdGhpcy5odHRwQWdlbnQsXG4gICAgICBodHRwc0FnZW50OiB0aGlzLmh0dHBzQWdlbnQsXG4gICAgfTtcbiAgICAvLyBHRVQgbWV0aG9kcyBzaG91bGRuJ3QgaGF2ZSBhbnkgYm9keS4gTW9zdCBzZXJ2ZXJzIGFyZSBPSyB3aXRoIHRoaXMsIGJ1dCBXZWJEcml2ZXJBZ2VudCB0aHJvd3MgNDAwIGVycm9yc1xuICAgIGlmICh1dGlsLmhhc1ZhbHVlKGJvZHkpICYmIG1ldGhvZCAhPT0gJ0dFVCcpIHtcbiAgICAgIGlmICh0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXFPcHRzLmRhdGEgPSBKU09OLnBhcnNlKGJvZHkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgaW50ZXJwcmV0IHRoZSByZXF1ZXN0IGJvZHkgYXMgdmFsaWQgSlNPTjogJHt0cnVuY2F0ZUJvZHkoYm9keSl9YCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcU9wdHMuZGF0YSA9IGJvZHk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sb2cuZGVidWcoYFByb3h5aW5nIFske21ldGhvZH0gJHt1cmwgfHwgJy8nfV0gdG8gWyR7bWV0aG9kfSAke25ld1VybH1dIGAgK1xuICAgICAgKHJlcU9wdHMuZGF0YSA/IGB3aXRoIGJvZHk6ICR7dHJ1bmNhdGVCb2R5KHJlcU9wdHMuZGF0YSl9YCA6ICd3aXRoIG5vIGJvZHknKSk7XG5cbiAgICBjb25zdCB0aHJvd1Byb3h5RXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihgVGhlIHJlcXVlc3QgdG8gJHt1cmx9IGhhcyBmYWlsZWRgKTtcbiAgICAgIGVyci5yZXNwb25zZSA9IHtcbiAgICAgICAgZGF0YTogZXJyb3IsXG4gICAgICAgIHN0YXR1czogNTAwXG4gICAgICB9O1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH07XG4gICAgbGV0IGlzUmVzcG9uc2VMb2dnZWQgPSBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge2RhdGEsIHN0YXR1cywgaGVhZGVyc30gPSBhd2FpdCB0aGlzLnJlcXVlc3QocmVxT3B0cyk7XG4gICAgICAvLyBgZGF0YWAgbWlnaHQgYmUgcmVhbGx5IGJpZ1xuICAgICAgLy8gQmUgY2FyZWZ1bCB3aGlsZSBoYW5kbGluZyBpdCB0byBhdm9pZCBtZW1vcnkgbGVha3NcbiAgICAgIGlmICghXy5pc1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAgICAgIC8vIFRoZSByZXNwb25zZSBzaG91bGQgYmUgYSB2YWxpZCBKU09OIG9iamVjdFxuICAgICAgICAvLyBJZiBpdCBjYW5ub3QgYmUgY29lcmNlZCB0byBhbiBvYmplY3QgdGhlbiB0aGUgcmVzcG9uc2UgaXMgd3JvbmdcbiAgICAgICAgdGhyb3dQcm94eUVycm9yKGRhdGEpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2cuZGVidWcoYEdvdCByZXNwb25zZSB3aXRoIHN0YXR1cyAke3N0YXR1c306ICR7dHJ1bmNhdGVCb2R5KGRhdGEpfWApO1xuICAgICAgaXNSZXNwb25zZUxvZ2dlZCA9IHRydWU7XG4gICAgICBjb25zdCBpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QgPSAvXFwvc2Vzc2lvbiQvLnRlc3QodXJsKSAmJiBtZXRob2QgPT09ICdQT1NUJztcbiAgICAgIGlmIChpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QpIHtcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgdGhpcy5zZXNzaW9uSWQgPSBkYXRhLnNlc3Npb25JZCB8fCAoZGF0YS52YWx1ZSB8fCB7fSkuc2Vzc2lvbklkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZG93bnN0cmVhbVByb3RvY29sID0gdGhpcy5nZXRQcm90b2NvbEZyb21SZXNCb2R5KGRhdGEpO1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBEZXRlcm1pbmVkIHRoZSBkb3duc3RyZWFtIHByb3RvY29sIGFzICcke3RoaXMuZG93bnN0cmVhbVByb3RvY29sfSdgKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmhhcyhkYXRhLCAnc3RhdHVzJykgJiYgcGFyc2VJbnQoZGF0YS5zdGF0dXMsIDEwKSAhPT0gMCkge1xuICAgICAgICAvLyBTb21lIHNlcnZlcnMsIGxpa2UgY2hyb21lZHJpdmVyIG1heSByZXR1cm4gcmVzcG9uc2UgY29kZSAyMDAgZm9yIG5vbi16ZXJvIEpTT05XUCBzdGF0dXNlc1xuICAgICAgICB0aHJvd1Byb3h5RXJyb3IoZGF0YSk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXMgPSB7c3RhdHVzQ29kZTogc3RhdHVzLCBoZWFkZXJzLCBib2R5OiBkYXRhfTtcbiAgICAgIHJldHVybiBbcmVzLCBkYXRhXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBXZSBvbmx5IGNvbnNpZGVyIGFuIGVycm9yIHVuZXhwZWN0ZWQgaWYgdGhpcyB3YXMgbm90XG4gICAgICAvLyBhbiBhc3luYyByZXF1ZXN0IG1vZHVsZSBlcnJvciBvciBpZiB0aGUgcmVzcG9uc2UgY2Fubm90IGJlIGNhc3QgdG9cbiAgICAgIC8vIGEgdmFsaWQgSlNPTlxuICAgICAgbGV0IHByb3h5RXJyb3JNc2cgPSBlLm1lc3NhZ2U7XG4gICAgICBpZiAodXRpbC5oYXNWYWx1ZShlLnJlc3BvbnNlKSkge1xuICAgICAgICBpZiAoIWlzUmVzcG9uc2VMb2dnZWQpIHtcbiAgICAgICAgICBjb25zdCBlcnJvciA9IHRydW5jYXRlQm9keShlLnJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgIHRoaXMubG9nLmluZm8odXRpbC5oYXNWYWx1ZShlLnJlc3BvbnNlLnN0YXR1cylcbiAgICAgICAgICAgID8gYEdvdCByZXNwb25zZSB3aXRoIHN0YXR1cyAke2UucmVzcG9uc2Uuc3RhdHVzfTogJHtlcnJvcn1gXG4gICAgICAgICAgICA6IGBHb3QgcmVzcG9uc2Ugd2l0aCB1bmtub3duIHN0YXR1czogJHtlcnJvcn1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJveHlFcnJvck1zZyA9IGBDb3VsZCBub3QgcHJveHkgY29tbWFuZCB0byB0aGUgcmVtb3RlIHNlcnZlci4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWA7XG4gICAgICAgIGlmIChDT01QQUNUX0VSUk9SX1BBVFRFUk5TLnNvbWUoKHApID0+IHAudGVzdChlLm1lc3NhZ2UpKSkge1xuICAgICAgICAgIHRoaXMubG9nLmluZm8oZS5tZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKGUuc3RhY2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLlByb3h5UmVxdWVzdEVycm9yKHByb3h5RXJyb3JNc2csIGUucmVzcG9uc2U/LmRhdGEsIGUucmVzcG9uc2U/LnN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJvdG9jb2xGcm9tUmVzQm9keSAocmVzT2JqKSB7XG4gICAgaWYgKF8uaXNJbnRlZ2VyKHJlc09iai5zdGF0dXMpKSB7XG4gICAgICByZXR1cm4gTUpTT05XUDtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHJlc09iai52YWx1ZSkpIHtcbiAgICAgIHJldHVybiBXM0M7XG4gICAgfVxuICB9XG5cbiAgcmVxdWVzdFRvQ29tbWFuZE5hbWUgKHVybCwgbWV0aG9kKSB7XG4gICAgY29uc3QgZXh0cmFjdENvbW1hbmROYW1lID0gKHBhdHRlcm4pID0+IHtcbiAgICAgIGNvbnN0IHBhdGhNYXRjaCA9IHBhdHRlcm4uZXhlYyh1cmwpO1xuICAgICAgcmV0dXJuIHBhdGhNYXRjaCA/IHJvdXRlVG9Db21tYW5kTmFtZShwYXRoTWF0Y2hbMV0sIG1ldGhvZCwgdGhpcy5yZXFCYXNlUGF0aCkgOiBudWxsO1xuICAgIH07XG4gICAgbGV0IGNvbW1hbmROYW1lID0gcm91dGVUb0NvbW1hbmROYW1lKHVybCwgbWV0aG9kLCB0aGlzLnJlcUJhc2VQYXRoKTtcbiAgICBpZiAoIWNvbW1hbmROYW1lICYmIF8uaW5jbHVkZXModXJsLCBgJHt0aGlzLnJlcUJhc2VQYXRofS9zZXNzaW9uL2ApKSB7XG4gICAgICBjb21tYW5kTmFtZSA9IGV4dHJhY3RDb21tYW5kTmFtZShuZXcgUmVnRXhwKGAke18uZXNjYXBlUmVnRXhwKHRoaXMucmVxQmFzZVBhdGgpfS9zZXNzaW9uL1teL10rKC4rKWApKTtcbiAgICB9XG4gICAgaWYgKCFjb21tYW5kTmFtZSAmJiBfLmluY2x1ZGVzKHVybCwgdGhpcy5yZXFCYXNlUGF0aCkpIHtcbiAgICAgIGNvbW1hbmROYW1lID0gZXh0cmFjdENvbW1hbmROYW1lKG5ldyBSZWdFeHAoYCR7Xy5lc2NhcGVSZWdFeHAodGhpcy5yZXFCYXNlUGF0aCl9KC8uKylgKSk7XG4gICAgfVxuICAgIHJldHVybiBjb21tYW5kTmFtZTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5Q29tbWFuZCAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgY29uc3QgY29tbWFuZE5hbWUgPSB0aGlzLnJlcXVlc3RUb0NvbW1hbmROYW1lKHVybCwgbWV0aG9kKTtcbiAgICBpZiAoIWNvbW1hbmROYW1lKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eSh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgfVxuICAgIHRoaXMubG9nLmRlYnVnKGBNYXRjaGVkICcke3VybH0nIHRvIGNvbW1hbmQgbmFtZSAnJHtjb21tYW5kTmFtZX0nYCk7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm90b2NvbENvbnZlcnRlci5jb252ZXJ0QW5kUHJveHkoY29tbWFuZE5hbWUsIHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIGNvbW1hbmQgKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGxldCByZXNwb25zZTtcbiAgICBsZXQgcmVzQm9keU9iajtcbiAgICB0cnkge1xuICAgICAgW3Jlc3BvbnNlLCByZXNCb2R5T2JqXSA9IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZXJyLmdldEFjdHVhbEVycm9yKCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25FcnJvcihlcnIubWVzc2FnZSk7XG4gICAgfVxuICAgIGNvbnN0IHByb3RvY29sID0gdGhpcy5nZXRQcm90b2NvbEZyb21SZXNCb2R5KHJlc0JvZHlPYmopO1xuICAgIGlmIChwcm90b2NvbCA9PT0gTUpTT05XUCkge1xuICAgICAgLy8gR290IHJlc3BvbnNlIGluIE1KU09OV1AgZm9ybWF0XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA9PT0gMjAwICYmIHJlc0JvZHlPYmouc3RhdHVzID09PSAwKSB7XG4gICAgICAgIHJldHVybiByZXNCb2R5T2JqLnZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3RhdHVzID0gcGFyc2VJbnQocmVzQm9keU9iai5zdGF0dXMsIDEwKTtcbiAgICAgIGlmICghaXNOYU4oc3RhdHVzKSAmJiBzdGF0dXMgIT09IDApIHtcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSByZXNCb2R5T2JqLnZhbHVlO1xuICAgICAgICBpZiAoXy5oYXMobWVzc2FnZSwgJ21lc3NhZ2UnKSkge1xuICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLm1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUoc3RhdHVzLCBfLmlzRW1wdHkobWVzc2FnZSkgPyBnZXRTdW1tYXJ5QnlDb2RlKHN0YXR1cykgOiBtZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb3RvY29sID09PSBXM0MpIHtcbiAgICAgIC8vIEdvdCByZXNwb25zZSBpbiBXM0MgZm9ybWF0XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA8IDMwMCkge1xuICAgICAgICByZXR1cm4gcmVzQm9keU9iai52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzUGxhaW5PYmplY3QocmVzQm9keU9iai52YWx1ZSkgJiYgcmVzQm9keU9iai52YWx1ZS5lcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvckZyb21XM0NKc29uQ29kZShyZXNCb2R5T2JqLnZhbHVlLmVycm9yLCByZXNCb2R5T2JqLnZhbHVlLm1lc3NhZ2UsIHJlc0JvZHlPYmoudmFsdWUuc3RhY2t0cmFjZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlID09PSAyMDApIHtcbiAgICAgIC8vIFVua25vd24gcHJvdG9jb2wuIEtlZXBpbmcgaXQgYmVjYXVzZSBvZiB0aGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgcmV0dXJuIHJlc0JvZHlPYmo7XG4gICAgfVxuICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkVycm9yKGBEaWQgbm90IGtub3cgd2hhdCB0byBkbyB3aXRoIHJlc3BvbnNlIGNvZGUgJyR7cmVzcG9uc2Uuc3RhdHVzQ29kZX0nIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBhbmQgcmVzcG9uc2UgYm9keSAnJHtfLnRydW5jYXRlKEpTT04uc3RyaW5naWZ5KHJlc0JvZHlPYmopLCB7bGVuZ3RoOiAzMDB9KX0nYCk7XG4gIH1cblxuICBnZXRTZXNzaW9uSWRGcm9tVXJsICh1cmwpIHtcbiAgICBjb25zdCBtYXRjaCA9IHVybC5tYXRjaCgvXFwvc2Vzc2lvblxcLyhbXi9dKykvKTtcbiAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6IG51bGw7XG4gIH1cblxuICBhc3luYyBwcm94eVJlcVJlcyAocmVxLCByZXMpIHtcbiAgICAvLyAhIHRoaXMgbWV0aG9kIG11c3Qgbm90IHRocm93IGFueSBleGNlcHRpb25zXG4gICAgLy8gISBtYWtlIHN1cmUgdG8gY2FsbCByZXMuc2VuZCBiZWZvcmUgcmV0dXJuXG4gICAgbGV0IHN0YXR1c0NvZGU7XG4gICAgbGV0IHJlc0JvZHlPYmo7XG4gICAgdHJ5IHtcbiAgICAgIGxldCByZXNwb25zZTtcbiAgICAgIFtyZXNwb25zZSwgcmVzQm9keU9ial0gPSBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChyZXEub3JpZ2luYWxVcmwsIHJlcS5tZXRob2QsIHJlcS5ib2R5KTtcbiAgICAgIHJlcy5oZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVycztcbiAgICAgIHN0YXR1c0NvZGUgPSByZXNwb25zZS5zdGF0dXNDb2RlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgW3N0YXR1c0NvZGUsIHJlc0JvZHlPYmpdID0gZ2V0UmVzcG9uc2VGb3JXM0NFcnJvcihcbiAgICAgICAgaXNFcnJvclR5cGUoZXJyLCBlcnJvcnMuUHJveHlSZXF1ZXN0RXJyb3IpID8gZXJyLmdldEFjdHVhbEVycm9yKCkgOiBlcnJcbiAgICAgICk7XG4gICAgfVxuICAgIHJlcy5zZXQoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04Jyk7XG4gICAgaWYgKCFfLmlzUGxhaW5PYmplY3QocmVzQm9keU9iaikpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IGVycm9ycy5Vbmtub3duRXJyb3IoXG4gICAgICAgIGBUaGUgZG93bnN0cmVhbSBzZXJ2ZXIgcmVzcG9uc2Ugd2l0aCB0aGUgc3RhdHVzIGNvZGUgJHtzdGF0dXNDb2RlfSBpcyBub3QgYSB2YWxpZCBKU09OIG9iamVjdDogYCArXG4gICAgICAgIF8udHJ1bmNhdGUoYCR7cmVzQm9keU9ian1gLCB7bGVuZ3RoOiAzMDB9KVxuICAgICAgKTtcbiAgICAgIFtzdGF0dXNDb2RlLCByZXNCb2R5T2JqXSA9IGdldFJlc3BvbnNlRm9yVzNDRXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSBwcm94aWVkIHJlc3BvbnNlIGNvbnRhaW5zIGEgc2Vzc2lvbklkIHRoYXQgdGhlIGRvd25zdHJlYW1cbiAgICAvLyBkcml2ZXIgaGFzIGdlbmVyYXRlZCwgd2UgZG9uJ3Qgd2FudCB0byByZXR1cm4gdGhhdCB0byB0aGUgY2xpZW50LlxuICAgIC8vIEluc3RlYWQsIHJldHVybiB0aGUgaWQgZnJvbSB0aGUgcmVxdWVzdCBvciBmcm9tIGN1cnJlbnQgc2Vzc2lvblxuICAgIGlmIChfLmhhcyhyZXNCb2R5T2JqLCAnc2Vzc2lvbklkJykpIHtcbiAgICAgIGNvbnN0IHJlcVNlc3Npb25JZCA9IHRoaXMuZ2V0U2Vzc2lvbklkRnJvbVVybChyZXEub3JpZ2luYWxVcmwpO1xuICAgICAgaWYgKHJlcVNlc3Npb25JZCkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBSZXBsYWNpbmcgc2Vzc2lvbklkICR7cmVzQm9keU9iai5zZXNzaW9uSWR9IHdpdGggJHtyZXFTZXNzaW9uSWR9YCk7XG4gICAgICAgIHJlc0JvZHlPYmouc2Vzc2lvbklkID0gcmVxU2Vzc2lvbklkO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlc3Npb25JZCkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBSZXBsYWNpbmcgc2Vzc2lvbklkICR7cmVzQm9keU9iai5zZXNzaW9uSWR9IHdpdGggJHt0aGlzLnNlc3Npb25JZH1gKTtcbiAgICAgICAgcmVzQm9keU9iai5zZXNzaW9uSWQgPSB0aGlzLnNlc3Npb25JZDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVzQm9keU9iai52YWx1ZSA9IGZvcm1hdFJlc3BvbnNlVmFsdWUocmVzQm9keU9iai52YWx1ZSk7XG4gICAgcmVzLnN0YXR1cyhzdGF0dXNDb2RlKS5zZW5kKEpTT04uc3RyaW5naWZ5KGZvcm1hdFN0YXR1cyhyZXNCb2R5T2JqKSkpO1xuICB9XG59XG5cbmV4cG9ydCB7IEpXUHJveHkgfTtcbmV4cG9ydCBkZWZhdWx0IEpXUHJveHk7XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../lib/protocol/routes.js"],"names":[],"mappings":"AAkBA,gDAAgD;AAChD,yBADW,OAAO,eAAe,EAAE,SAAS,CAmvB1C;AAGF,+BAAsB;AAyEtB,8CAA6E;AAjC7E,4IA8BC"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../lib/protocol/routes.js"],"names":[],"mappings":"AAkBA,gDAAgD;AAChD,yBADW,OAAO,eAAe,EAAE,SAAS,CAsvB1C;AAGF,+BAAsB;AAyEtB,8CAA6E;AAjC7E,4IA8BC"}