Comparing version 0.1.12 to 0.1.13
@@ -54,2 +54,9 @@ 'use strict'; | ||
function ioMock() { | ||
var _console; | ||
for (var _len = arguments.length, initParams = Array(_len), _key = 0; _key < _len; _key++) { | ||
initParams[_key] = arguments[_key]; | ||
} | ||
__DEV__ && (_console = console).log.apply(_console, ['ioMock'].concat(initParams)); | ||
// const socket = io(...params) | ||
@@ -62,4 +69,4 @@ var mock = { | ||
on: function on() { | ||
for (var _len = arguments.length, params = Array(_len), _key = 0; _key < _len; _key++) { | ||
params[_key] = arguments[_key]; | ||
for (var _len2 = arguments.length, params = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { | ||
params[_key2] = arguments[_key2]; | ||
} | ||
@@ -70,4 +77,4 @@ | ||
use: function use() { | ||
for (var _len2 = arguments.length, params = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { | ||
params[_key2] = arguments[_key2]; | ||
for (var _len3 = arguments.length, params = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { | ||
params[_key3] = arguments[_key3]; | ||
} | ||
@@ -83,6 +90,13 @@ | ||
recreateSocket: function recreateSocket() { | ||
var _console2; | ||
for (var _len4 = arguments.length, newInitParams = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { | ||
newInitParams[_key4] = arguments[_key4]; | ||
} | ||
__DEV__ && (_console2 = console).log.apply(_console2, ['recreateSocket'].concat(newInitParams)); | ||
if (mock.connection && mock.connection.disconnect) { | ||
mock.connection.disconnect(); | ||
} | ||
mock.connection = _socketIoUniversal2.default.apply(undefined, arguments); | ||
mock.connection = _socketIoUniversal2.default.apply(undefined, newInitParams); | ||
mock.events.forEach(function (event) { | ||
@@ -100,3 +114,3 @@ var _mock$connection2; | ||
}; | ||
return mock.recreateSocket.apply(mock, arguments); | ||
return mock.recreateSocket.apply(mock, initParams); | ||
} | ||
@@ -152,3 +166,3 @@ | ||
// console.log('ApiClient', params); | ||
this.io = _socketIoUniversal2.default; | ||
this.io = ioMock; | ||
this.log = params.log; | ||
@@ -463,2 +477,3 @@ this.root = params.root; | ||
} | ||
Object.keys(this.wsConnections).forEach(function (key) { | ||
@@ -470,4 +485,5 @@ var _wsConnections$key = _slicedToArray(_this3.wsConnections[key], 3), | ||
socket.disconnect(); | ||
_this3.ws(path, options); | ||
socket.recreateSocket(path, options); | ||
// socket.disconnect(); | ||
// this.ws(path, options); | ||
}); | ||
@@ -570,2 +586,2 @@ } | ||
exports.default = ApiClient; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGlxdWVyeS5qcyJdLCJuYW1lcyI6WyJGRVRDSF9QQVJBTVMiLCJpb01vY2siLCJtb2NrIiwiTWFuYWdlciIsIlNvY2tldCIsImNvbm5lY3Rpb24iLCJldmVudHMiLCJvbiIsInBhcmFtcyIsInB1c2giLCJ1c2UiLCJkaXNjb25uZWN0IiwicmVjcmVhdGVTb2NrZXQiLCJmb3JFYWNoIiwiZXZlbnQiLCJuYW1lIiwiQXBpQ2xpZW50IiwidGhyb3dFcnJvciIsImVyciIsInJlcyIsInJlcSIsInNob3dFcnJvciIsImxvZyIsInN0ciIsIkpTT04iLCJzdHJpbmdpZnkiLCJqc29uIiwiZXJyb3IiLCJtZXNzYWdlIiwiZXJyMiIsIkVycm9yIiwiaW8iLCJyb290IiwiYmFzZSIsInVybCIsIndzQ29uZmlnIiwid3MiLCJ3c0Nvbm5lY3Rpb25zIiwiYXV0aFRva2VuIiwid3NSZWNvbm5lY3QiLCJjdHgiLCJ0eXBlIiwic3RhdHVzIiwic3RhdHVzVGV4dCIsInRleHRFcnIiLCJqc29uRXJyIiwicGF0aCIsIm9wdGlvbnMiLCJzdWJzdHIiLCJwb3J0IiwibGVuZ3RoIiwic2VhcmNoIiwicmVwbGFjZSIsImFycmF5IiwibWFwIiwiYSIsImZpbHRlciIsImkiLCJqb2luIiwicXMiLCJpbmRleE9mIiwiY29uc3RydWN0b3IiLCJPYmplY3QiLCJhc3NpZ24iLCJib2R5IiwiZGF0YSIsImhlYWRlcnMiLCJBY2NlcHQiLCJfYm9keSIsImluY2x1ZGVzIiwiZm9ybSIsImtleXMiLCJrZXkiLCJhcHBlbmQiLCJBdXRob3JpemF0aW9uIiwicXVlcnlQYXJhbXMiLCJjcmVhdGVVcmwiLCJtZXRob2QiLCJhZnRlckZldGNoIiwicGFyc2VSZXN1bHQiLCJ0aW1lb3V0IiwicmVzdWx0IiwidGV4dCIsInBhcnNlIiwiZ2V0Q3R4IiwiZmV0Y2giLCJ0cmFjZSIsInRoZW4iLCJQcm9taXNlIiwicmFjZSIsInJlc29sdmUiLCJyZWplY3QiLCJzZXRUaW1lb3V0Iiwic29ja2V0IiwiY29uc29sZSIsIm9wdHMiLCJ0b2tlbkluQ29va2llIiwicXVlcnkiLCJ0b2tlbiIsInBhcmFtczIiLCJjcmVhdGUiLCJtZXJnZSIsImdsb2JhbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7Ozs4RUFOQTs7O0FBT0E7QUFDQSxJQUFNQSxlQUFlLENBQ25CLFFBRG1CLEVBRW5CLEtBRm1CLEVBR25CLFNBSG1CLEVBSW5CLFNBSm1CLEVBS25CLFVBTG1CLEVBTW5CLGdCQU5tQixFQU9uQixNQVBtQixFQVFuQixhQVJtQixFQVNuQixVQVRtQixFQVVuQixXQVZtQixFQVduQixPQVhtQixDQUFyQjs7QUFjQSxTQUFTQyxNQUFULEdBQStCO0FBQzdCO0FBQ0EsTUFBTUMsT0FBTztBQUNYQyxhQUFTLDRCQUFHQSxPQUREO0FBRVhDLFlBQVEsNEJBQUdBLE1BRkE7QUFHWEMsZ0JBQVksSUFIRDtBQUlYQyxZQUFRLEVBSkc7QUFLWEMsTUFMVyxnQkFLRztBQUFBLHdDQUFSQyxNQUFRO0FBQVJBLGNBQVE7QUFBQTs7QUFDWk4sV0FBS0ksTUFBTCxDQUFZRyxJQUFaLEVBQWtCLElBQWxCLFNBQTJCRCxNQUEzQjtBQUNELEtBUFU7QUFRWEUsT0FSVyxpQkFRSTtBQUFBLHlDQUFSRixNQUFRO0FBQVJBLGNBQVE7QUFBQTs7QUFDYk4sV0FBS0ksTUFBTCxDQUFZRyxJQUFaLEVBQWtCLEtBQWxCLFNBQTRCRCxNQUE1QjtBQUNELEtBVlU7QUFXWEcsY0FYVyx3QkFXVztBQUFBOztBQUNwQiwrQkFBS04sVUFBTCxFQUFnQk0sVUFBaEI7QUFDRCxLQWJVO0FBY1hDLGtCQWRXLDRCQWNzQjtBQUMvQixVQUFJVixLQUFLRyxVQUFMLElBQW1CSCxLQUFLRyxVQUFMLENBQWdCTSxVQUF2QyxFQUFtRDtBQUNqRFQsYUFBS0csVUFBTCxDQUFnQk0sVUFBaEI7QUFDRDtBQUNEVCxXQUFLRyxVQUFMLEdBQWtCLHVEQUFsQjtB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RUFBTCxDQUFRbEMsU0FBUixDQUFrQmpCLE1BQWxCLENBQWQ7QUFDQSxpQkFBTyxDQUFDLEtBQUtzQyxJQUFMLElBQWEsR0FBZCxLQUFzQm1ELGNBQVlBLEtBQVosR0FBc0IsRUFBNUMsQ0FBUDtBQUNELFNBTEg7QUFNRUksYUFORixpQkFNUTdGLE1BTlIsRUFNZ0I7QUFDWixpQkFBTyxLQUFLNEYsTUFBTCxjQUNGLEtBQUtILEtBREgsRUFFRnpGLE1BRkUsRUFBUDtBQUlEO0FBWEg7QUFhRDs7Ozs7O0FBdENrQlEsUyxDQUNacUUsSyxHQUFRaUIsT0FBT2pCLEs7QUFESHJFLFMsQ0FFWjJDLEU7a0JBRlkzQyxTIiwiZmlsZSI6ImFwaXF1ZXJ5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IGZldGNoIGZyb20gJ25vZGUtZmV0Y2gnO1xuaW1wb3J0IGlzUGxhaW5PYmplY3QgZnJvbSAnbG9kYXNoLmlzcGxhaW5vYmplY3QnO1xuaW1wb3J0IHBpY2sgZnJvbSAnbG9kYXNoLnBpY2snO1xuaW1wb3J0IHFzIGZyb20gJ3FzJztcbmltcG9ydCBGb3JtRGF0YSBmcm9tICdmb3JtLWRhdGEnO1xuaW1wb3J0IGlvIGZyb20gJy4vc29ja2V0LWlvLXVuaXZlcnNhbCc7XG5pbXBvcnQgdHJpbSBmcm9tICcuL3RyaW0nO1xuLy8gaW1wb3J0IGZldGNoIGZyb20gJ2lzb21vcnBoaWMtZmV0Y2gnO1xuY29uc3QgRkVUQ0hfUEFSQU1TID0gW1xuICAnbWV0aG9kJyxcbiAgJ3VybCcsXG4gICdoZWFkZXJzJyxcbiAgJ2NvbnRleHQnLFxuICAncmVmZXJyZXInLFxuICAncmVmZXJyZXJQb2xpY3knLFxuICAnbW9kZScsXG4gICdjcmVkZW50aWFscycsXG4gICdyZWRpcmVjdCcsXG4gICdpbnRlZ3JpdHknLFxuICAnY2FjaGUnLFxuXTtcblxuZnVuY3Rpb24gaW9Nb2NrKC4uLmluaXRQYXJhbXMpIHtcbiAgLy8gY29uc3Qgc29ja2V0ID0gaW8oLi4ucGFyYW1zKVxuICBjb25zdCBtb2NrID0ge1xuICAgIE1hbmFnZXI6IGlvLk1hbmFnZXIsXG4gICAgU29ja2V0OiBpby5Tb2NrZXQsXG4gICAgY29ubmVjdGlvbjogbnVsbCxcbiAgICBldmVudHM6IFtdLFxuICAgIG9uKC4uLnBhcmFtcykge1xuICAgICAgbW9jay5ldmVudHMucHVzaChbJ29uJywgLi4ucGFyYW1zXSk7XG4gICAgfSxcbiAgICB1c2UoLi4ucGFyYW1zKSB7XG4gICAgICBtb2NrLmV2ZW50cy5wdXNoKFsndXNlJywgLi4ucGFyYW1zXSk7XG4gICAgfSxcbiAgICBkaXNjb25uZWN0KC4uLnBhcmFtcykge1xuICAgICAgbW9jay5jb25uZWN0aW9uLmRpc2Nvbm5lY3QoLi4ucGFyYW1zKTtcbiAgICB9LFxuICAgIHJlY3JlYXRlU29ja2V0KC4uLm5ld0luaXRQYXJhbXMpIHtcbiAgICAgIGlmIChtb2NrLmNvbm5lY3Rpb24gJiYgbW9jay5jb25uZWN0aW9uLmRpc2Nvbm5lY3QpIHtcbiAgICAgICAgbW9jay5jb25uZWN0aW9uLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICAgIG1vY2suY29ubmVjdGlvbiA9IGlvKC4uLm5ld0luaXRQYXJhbXMpO1xuICAgICAgbW9jay5ldmVudHMuZm9yRWFjaCgoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgW25hbWUsIC4uLnBhcmFtc10gPSBldmVudDtcbiAgICAgICAgbW9jay5jb25uZWN0aW9uW25hbWVdKC4uLnBhcmFtcyk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBtb2NrLmNvbm5lY3Rpb247XG4gICAgfSxcbiAgfTtcbiAgcmV0dXJuIG1vY2sucmVjcmVhdGVTb2NrZXQoLi4uaW5pdFBhcmFtcyk7XG59XG5cbi8vIGNvbnN0IERFQlVHID0gX19ERVZfXztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpQ2xpZW50IHtcbiAgc3RhdGljIGZldGNoID0gZ2xvYmFsLmZldGNoO1xuICBzdGF0aWMgcXMgPSBxc1xuICAvLyBpbyA9IGlvXG5cbiAgY29uc3RydWN0b3IocGFyYW1zID0ge30pIHtcbiAgICAvLyBjb25zb2xlLmxvZygnQXBpQ2xpZW50JywgcGFyYW1zKTtcbiAgICB0aGlzLmlvID0gaW87XG4gICAgdGhpcy5sb2cgPSBwYXJhbXMubG9nO1xuICAgIHRoaXMucm9vdCA9IHBhcmFtcy5yb290O1xuICAgIHRoaXMuYmFzZSA9IHBhcmFtcy5iYXNlO1xuICAgIHRoaXMudXJsID0gcGFyYW1zLnVybDtcbiAgICB0aGlzLndzQ29uZmlnID0gcGFyYW1zLndzO1xuICAgIHRoaXMud3NDb25uZWN0aW9ucyA9IHt9O1xuICAgIHRoaXMuYXV0aFRva2VuID0gcGFyYW1zLmF1dGhUb2tlbiB8fCBudWxsO1xuICB9XG5cbiAgc2V0QXV0aFRva2VuKGF1dGhUb2tlbikge1xuICAgIHRoaXMuYXV0aFRva2VuID0gYXV0aFRva2VuO1xuICAgIHRoaXMud3NSZWNvbm5lY3QoKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVSZXEocmVxKSB7XG4gICAgLy8gcmVxLnBhdGgsXG4gICAgLy8gcmVxLnF1ZXJ5LFxuICAgIHJldHVybiB7XG4gICAgICAuLi5yZXEsXG4gICAgICBjcmVhdGUocGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5xcy5zdHJpbmdpZnkocGFyYW1zKTtcbiAgICAgICAgcmV0dXJuICh0aGlzLnBhdGggfHwgJy8nKSArIChxdWVyeSA/IGA/JHtxdWVyeX1gIDogJycpO1xuICAgICAgfSxcbiAgICAgIG1lcmdlKHBhcmFtcykge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGUoe1xuICAgICAgICAgIC4uLnRoaXMucXVlcnksXG4gICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHRocm93RXJyb3IgPSBhc3luYyAoeyBlcnIsIHJlcywgcmVxIH0pID0+IHtcbiAgICBpZiAodGhpcy5zaG93RXJyb3IgJiYgdGhpcy5sb2cpIHtcbiAgICAgIGNvbnN0IHN0ciA9IGBcXFxuPT09PT09PT09PT09PT1cbiAgZmV0Y2ggZXJyb3I6XG4ke2lzUGxhaW5PYmplY3QoZXJyKSA/IEpTT04uc3RyaW5naWZ5KGVyciwgbnVsbCwgMikgOiBlcnJ9XG4gIHJlcTpcbiR7SlNPTi5zdHJpbmdpZnkocmVxLCBudWxsLCAyKX1cbiAganNvbjpcbiR7SlNPTi5zdHJpbmdpZnkocmVzLmpzb24sIG51bGwsIDIpfVxuPT09PT09PT09PT09PT1cXFxuYDtcbiAgICAgIHRoaXMubG9nLmVycm9yKHN0cik7XG4gICAgfVxuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyO1xuICAgIGNvbnN0IGVycjIgPSBuZXcgRXJyb3IoaXNQbGFpbk9iamVjdChtZXNzYWdlKSA/IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpIDogbWVzc2FnZSk7XG4gICAgZXJyMi5yZXMgPSByZXM7XG4gICAgZXJyMi5yZXEgPSByZXE7XG4gICAgdGhyb3cgZXJyMjtcbiAgfVxuXG4gIGFzeW5jIGFmdGVyRmV0Y2goY3R4KSB7XG4gICAgY29uc3QgeyByZXMsIHRocm93RXJyb3IgfSA9IGN0eDtcbiAgICBpZiAocmVzLmpzb24gJiYgcmVzLmpzb24uZXJyKSB7XG4gICAgICBhd2FpdCB0aHJvd0Vycm9yKHtcbiAgICAgICAgLi4uY3R4LFxuICAgICAgICBlcnI6IHtcbiAgICAgICAgICB0eXBlOiAnQ1VTVE9NX0VSUk9SJyxcbiAgICAgICAgICAuLi5yZXMuanNvbi5lcnIsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHJlcy5zdGF0dXMgPj0gNDAwKSB7XG4gICAgICBjb25zdCB0eXBlID0gJ1JFU19TVEFUVVNfRVJST1InO1xuICAgICAgYXdhaXQgdGhyb3dFcnJvcih7XG4gICAgICAgIC4uLmN0eCxcbiAgICAgICAgZXJyOiB7XG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBzdGF0dXM6IHJlcy5zdGF0dXMsXG4gICAgICAgICAgc3RhdHVzVGV4dDogcmVzLnN0YXR1c1RleHQsXG4gICAgICAgICAgbWVzc2FnZTogYCR7dHlwZX06ICR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH1gLFxuICAgICAgICAgIC4uLihyZXMuanNvbiB8fCB7fSksXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHJlcy50ZXh0RXJyKSB7XG4gICAgICBjb25zdCB0eXBlID0gJ1RFWFRfUEFSU0VfRVJST1InO1xuICAgICAgYXdhaXQgY3R4LnRocm93RXJyb3Ioe1xuICAgICAgICAuLi5jdHgsXG4gICAgICAgIHJlcyxcbiAgICAgICAgZXJyOiB7XG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBtZXNzYWdlOiAn0J7RiNC40LHQutCwINC/0LXRgNC10LTQsNGH0Lgg0LTQsNC90L3Ri9GFJyxcbiAgICAgICAgICBlcnI6IHJlcy50ZXh0RXJyLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChyZXMuanNvbkVycikge1xuICAgICAgY29uc3QgdHlwZSA9ICdKU09OX1BBUlNFX0VSUk9SJztcbiAgICAgIGF3YWl0IGN0eC50aHJvd0Vycm9yKHtcbiAgICAgICAgLi4uY3R4LFxuICAgICAgICByZXMsXG4gICAgICAgIGVycjoge1xuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgbWVzc2FnZTogJ9Ce0YjQuNCx0LrQsCDRgdC10YDQstC10YDQsCcsXG4gICAgICAgICAgLy8gbWVzc2FnZTogdHlwZSxcbiAgICAgICAgICBlcnI6IHJlcy5qc29uRXJyLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuanNvbjtcbiAgfVxuXG4gIGNyZWF0ZVVybChwYXRoLCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAocGF0aC5zdWJzdHIoMCwgNSkgPT09ICdodHRwOicgfHwgcGF0aC5zdWJzdHIoMCwgNikgPT09ICdodHRwczonKSB7XG4gICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgbGV0IHVybCA9IG9wdGlvbnMudXJsIHx8IHRoaXMudXJsIHx8ICcvJztcbiAgICBjb25zdCBwb3J0ID0gb3B0aW9ucy5wb3J0IHx8IHRoaXMucG9ydCB8fCBudWxsO1xuXG4gICAgaWYgKHVybCAmJiB1cmwubGVuZ3RoID4gMSAmJiBwb3J0KSB7XG4gICAgICBpZiAodXJsLnNlYXJjaCgvOihcXGQrKS8pICE9PSAtMSkge1xuICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgvOihcXGQrKS8sIGA6JHtwb3J0fWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXJsID0gYCR7dXJsfToke3BvcnR9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBiYXNlID0gb3B0aW9ucy5iYXNlIHx8IHRoaXMuYmFzZTtcbiAgICBjb25zdCBhcnJheSA9IFt1cmwsIHBhdGhbMF0gPT09ICcvJyA/IG51bGwgOiB0cmltKGJhc2UpLCB0cmltKHBhdGgpXTtcbiAgICB1cmwgPSBhcnJheVxuICAgICAgLm1hcChhID0+IHRyaW0oYSkpXG4gICAgICAuZmlsdGVyKChhLCBpKSA9PiAoaSA9PT0gMCB8fCBhKSlcbiAgICAgIC5qb2luKCcvJyk7XG4gICAgaWYgKG9wdGlvbnMucXMpIHtcbiAgICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgdGhpcy5jb25zdHJ1Y3Rvci5xcy5zdHJpbmdpZnkob3B0aW9ucy5xcyk7XG4gICAgfVxuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICBnZXRDdHgodXJsLCBwYXJhbXMgPSB7fSkge1xuICAgIGNvbnN0IHJlcSA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7IHVybCB9LFxuICAgICAgcGljayhwYXJhbXMsIEZFVENIX1BBUkFNUyksXG4gICAgKTtcblxuICAgIGNvbnN0IGJvZHkgPSBwYXJhbXMuYm9keSB8fCBwYXJhbXMuZGF0YTtcblxuICAgIGlmICghcmVxLmhlYWRlcnMpIHJlcS5oZWFkZXJzID0ge307XG4gICAgaWYgKCFyZXEuaGVhZGVycy5BY2NlcHQpIHJlcS5oZWFkZXJzLkFjY2VwdCA9ICdhcHBsaWNhdGlvbi9qc29uJztcbiAgICBpZiAoIXJlcS5oZWFkZXJzWydDb250ZW50LVR5cGUnXSkgcmVxLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnO1xuICAgIGlmIChyZXEuaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPT09ICchJykge1xuICAgICAgZGVsZXRlIHJlcS5oZWFkZXJzWydDb250ZW50LVR5cGUnXTtcbiAgICB9XG5cbiAgICByZXEuX2JvZHkgPSBib2R5O1xuICAgIHJlcS5ib2R5ID0gYm9keTtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChib2R5KSkge1xuICAgICAgaWYgKHJlcS5oZWFkZXJzWydDb250ZW50LVR5cGUnXSAmJiByZXEuaGVhZGVyc1snQ29udGVudC1UeXBlJ10uaW5jbHVkZXMoJ2FwcGxpY2F0aW9uL2pzb24nKSkge1xuICAgICAgICByZXEuYm9keSA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBPYmplY3Qua2V5cyhib2R5KS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICBmb3JtLmFwcGVuZChrZXksIGJvZHlba2V5XSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXEuYm9keSA9IGZvcm07XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGF1dGhUb2tlbiA9IChwYXJhbXMuYXV0aFRva2VuIHx8IHRoaXMuYXV0aFRva2VuKTtcbiAgICBpZiAoIXJlcS5oZWFkZXJzLkF1dGhvcml6YXRpb24gJiYgYXV0aFRva2VuKSB7XG4gICAgICByZXEuaGVhZGVycy5BdXRob3JpemF0aW9uID0gYEJlYXJlciAke2F1dGhUb2tlbn1gO1xuICAgIH1cblxuICAgIHJlcS5xcyA9IHBhcmFtcy5xdWVyeVBhcmFtcyB8fCBwYXJhbXMucXM7XG4gICAgaWYgKHJlcS5xcykge1xuICAgICAgcmVxLnVybCArPSAocmVxLnVybC5pbmRleE9mKCc/JykgPT09IC0xID8gJz8nIDogJyYnKSArIHRoaXMuY29uc3RydWN0b3IucXMuc3RyaW5naWZ5KHJlcS5xcyk7XG4gICAgfVxuICAgIHJlcS51cmwgPSB0aGlzLmNyZWF0ZVVybChyZXEudXJsKTtcblxuICAgIGlmICghcmVxLm1ldGhvZCkge1xuICAgICAgcmVxLm1ldGhvZCA9ICdHRVQnO1xuICAgIH1cbiAgICBjb25zdCB0aHJvd0Vycm9yID0gcGFyYW1zLnRocm93RXJyb3IgfHwgdGhpcy50aHJvd0Vycm9yO1xuICAgIGNvbnN0IGFmdGVyRmV0Y2ggPSBwYXJhbXMuYWZ0ZXJGZXRjaCB8fCB0aGlzLmFmdGVyRmV0Y2g7XG4gICAgY29uc3QgcGFyc2VSZXN1bHQgPSBwYXJhbXMucGFyc2VSZXN1bHQgfHwgdGhpcy5wYXJzZVJlc3VsdDtcbiAgICBjb25zdCB0aW1lb3V0ID0gcGFyYW1zLnRpbWVvdXQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVxLFxuICAgICAgdGltZW91dCxcbiAgICAgIGF1dGhUb2tlbixcbiAgICAgIHRocm93RXJyb3IsXG4gICAgICBhZnRlckZldGNoLFxuICAgICAgcGFyc2VSZXN1bHQsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHBhcnNlUmVzdWx0KGN0eCwgcmVzdWx0KSB7XG4gICAgY29uc3QgcmVzID0ge1xuICAgICAgcmVzdWx0LFxuICAgICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogcmVzdWx0LnN0YXR1c1RleHQsXG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgcmVzLnRleHQgPSBhd2FpdCByZXN1bHQudGV4dCgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmVzLnRleHRFcnIgPSBlcnI7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICByZXMuanNvbiA9IEpTT04ucGFyc2UocmVzLnRleHQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmVzLmpzb25FcnIgPSBlcnI7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBmZXRjaCguLi5hcmdzKSB7XG4gICAgY29uc3QgY3R4ID0gdGhpcy5nZXRDdHgoLi4uYXJncyk7XG4gICAgY29uc3QgeyBmZXRjaCB9ID0gdGhpcy5jb25zdHJ1Y3RvcjtcbiAgICBjb25zdCB7IHJlcSwgcGFyc2VSZXN1bHQsIGFmdGVyRmV0Y2ggfSA9IGN0eDtcbiAgICBpZiAodGhpcy5sb2cgJiYgdGhpcy5sb2cudHJhY2UpIHtcbiAgICAgIHRoaXMubG9nLnRyYWNlKCdbYXBpXScsIHJlcS5tZXRob2QsIHJlcS51cmwsIHJlcS5fYm9keSk7XG4gICAgICAvLyB0aGlzLmxvZy50cmFjZSgnW2FwaV0nLCByZXEubWV0aG9kLCByZXEudXJsLCByZXEuX2JvZHksIHJlcSk7XG4gICAgfVxuICAgIGNvbnN0IHsgdXJsLCAuLi5wYXJhbXMgfSA9IHJlcTtcbiAgICAvLyBjb25zb2xlLmxvZygnQEBAZmV0Y2gnLCB1cmwsIHBhcmFtcyk7XG4gICAgY29uc3QgcmVzID0gZmV0Y2godXJsLCBwYXJhbXMpXG4gICAgICAudGhlbihhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgIGN0eC5yZXMgPSBhd2FpdCBwYXJzZVJlc3VsdChjdHgsIHJlc3VsdCk7XG4gICAgICAgIHJldHVybiBjdHg7XG4gICAgICB9KVxuICAgICAgLnRoZW4oYWZ0ZXJGZXRjaCk7XG4gICAgaWYgKCFjdHgudGltZW91dCkgcmV0dXJuIHJlcztcblxuICAgIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgICAgcmVzLFxuICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ2ZldGNoIHRpbWVvdXQnKSksIGN0eC50aW1lb3V0KTtcbiAgICAgIH0pLFxuICAgIF0pO1xuICB9XG5cbiAgd3NSZWNvbm5lY3QoKSB7XG4gICAgaWYgKHRoaXMubG9nICYmIHRoaXMubG9nLnRyYWNlKSB7XG4gICAgICB0aGlzLmxvZy50cmFjZSgnW2FwaV0gV1Mud3NSZWNvbm5lY3QnLCBPYmplY3Qua2V5cyh0aGlzLndzQ29ubmVjdGlvbnMpKTtcbiAgICB9XG4gICAgT2JqZWN0LmtleXModGhpcy53c0Nvbm5lY3Rpb25zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IFtwYXRoLCBvcHRpb25zLCBzb2NrZXRdID0gdGhpcy53c0Nvbm5lY3Rpb25zW2tleV07XG4gICAgICBzb2NrZXQuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy53cyhwYXRoLCBvcHRpb25zKTtcbiAgICB9KTtcbiAgfVxuXG4gIHdzKHBhdGggPSAnJywgb3B0aW9ucyA9IHt9KSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2FwaS53cycsIHBhdGgpXG4gICAgY29uc3Qga2V5ID0gcGF0aCArIEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpO1xuICAgIGlmICh0aGlzLndzQ29ubmVjdGlvbnNba2V5XSkgcmV0dXJuIHRoaXMud3NDb25uZWN0aW9uc1trZXldO1xuICAgIGlmICghdGhpcy53c0NvbmZpZykge1xuICAgICAgY29uc29sZS5lcnJvcign0JLRiyDQvdC1INC80L7QttC10YLQtSDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0YwgYXBpLndzINCx0LXQtyDRgdC+0LrQtdGCINC60L7QvdGE0LjQs9C+0LInKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBvcHRzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy53c0NvbmZpZyAmJiB0aGlzLndzQ29uZmlnLm9wdGlvbnMsIG9wdGlvbnMpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdXUyBXUyBXUycsXG4gICAgLy8gICB7XG4gICAgLy8gICAgIHE6IHRoaXMud3NDb25maWcgJiYgdGhpcy53c0NvbmZpZy5vcHRpb25zLFxuICAgIC8vICAgICB3OiBvcHRpb25zLFxuICAgIC8vICAgICBlOiBvcHRzLFxuICAgIC8vICAgICByOiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLndzQ29uZmlnICYmIHRoaXMud3NDb25maWcub3B0aW9ucywgb3B0aW9ucylcbiAgICAvLyAgIH1cbiAgICAvLyApO1xuICAgIC8vIGNvbnNvbGUubG9nKG9wdHMucXVlcnksIG9wdHMucXVlcnkudG9rZW4sIHRoaXMuYXV0aFRva2VuKTtcbiAgICBpZiAoISh0aGlzLndzQ29uZmlnICYmIHRoaXMud3NDb25maWcudG9rZW5JbkNvb2tpZSkpIHtcbiAgICAgIGlmIChvcHRzLnF1ZXJ5ICYmICFvcHRzLnF1ZXJ5LnRva2VuICYmIHRoaXMuYXV0aFRva2VuKSBvcHRzLnF1ZXJ5LnRva2VuID0gdGhpcy5hdXRoVG9rZW47XG4gICAgfVxuICAgIGNvbnN0IHBhcmFtczIgPSB7fTtcbiAgICBpZiAoIXRoaXMud3NDb25maWcudG9rZW5JbkNvb2tpZSkge1xuICAgICAgaWYgKCFwYXJhbXMyLnFzKSB7XG4gICAgICAgIHBhcmFtczIucXMgPSB7XG4gICAgICAgICAgLi4uKG9wdHMucXVlcnkgfHwge30pLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKHBhcmFtczIucXMgJiYgIXBhcmFtczIucXMudG9rZW4gJiYgdGhpcy5hdXRoVG9rZW4pIHBhcmFtczIucXMudG9rZW4gPSB0aGlzLmF1dGhUb2tlbjtcbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZygnV1Mgb3B0cy5xdWVyeSwgb3B0cy5xdWVyeS50b2tlbiwgdGhpcy5hdXRoVG9rZW4nLCBvcHRzLnF1ZXJ5LCBvcHRzLnF1ZXJ5LnRva2VuLCB0aGlzLmF1dGhUb2tlbik7XG4gICAgY29uc3QgdXJsID0gdGhpcy5jcmVhdGVVcmwocGF0aCwgeyAuLi50aGlzLndzQ29uZmlnLCAuLi5wYXJhbXMyIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKCd3cyB1cmwnLCB7d3NDb25maWc6IHRoaXMud3NDb25maWcsIHBhdGgsIG9wdGlvbnMsIHVybCwgb3B0cyx9ICk7XG4gICAgaWYgKHRoaXMubG9nICYmIHRoaXMubG9nLnRyYWNlKSB7XG4gICAgICB0aGlzLmxvZy50cmFjZSgnW2FwaV0gV1MnLCB1cmwsIG9wdGlvbnMpO1xuICAgICAgLy8gdGhpcy5sb2cudHJhY2UoJ1thcGldJywgcmVxLm1ldGhvZCwgcmVxLnVybCwgcmVxLl9ib2R5LCByZXEpO1xuICAgIH1cbiAgICBjb25zdCBzb2NrZXQgPSBpbyhcbiAgICAgIHVybCxcbiAgICAgIG9wdHMsXG4gICAgKTtcblxuICAgIHRoaXMud3NDb25uZWN0aW9uc1trZXldID0gW3BhdGgsIG9wdGlvbnMsIHNvY2tldF07XG4gICAgc29ja2V0Lm9uKCdkaXNjb25uZWN0JywgKCkgPT4ge1xuICAgICAgZGVsZXRlIHRoaXMud3NDb25uZWN0aW9uc1trZXldO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNvY2tldDtcbiAgfVxuICB3czIocGF0aCA9ICcnLCBwYXJhbXMgPSB7fSkge1xuICAgIGlmICghdGhpcy53c0NvbmZpZykge1xuICAgICAgY29uc29sZS5lcnJvcign0JLRiyDQvdC1INC80L7QttC10YLQtSDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0YwgYXBpLndzINCx0LXQtyDRgdC+0LrQtdGCINC60L7QvdGE0LjQs9C+0LInKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBwYXJhbXMyID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy53c0NvbmZpZywgcGFyYW1zKTtcblxuICAgIGlmICghdGhpcy53c0NvbmZpZy50b2tlbkluQ29va2llKSB7XG4gICAgICBpZiAoIXBhcmFtczIucXMpIHBhcmFtczIucXMgPSB7fTtcbiAgICAgIGlmIChwYXJhbXMyLnFzICYmICFwYXJhbXMyLnFzLnRva2VuICYmIHRoaXMuYXV0aFRva2VuKSBwYXJhbXMyLnFzLnRva2VuID0gdGhpcy5hdXRoVG9rZW47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzID0gdGhpcy5pbyhcbiAgICAgIHRoaXMuY3JlYXRlVXJsKHBhdGgsIHBhcmFtczIpLFxuICAgICAge1xuICAgICAgICAuLi50aGlzLndzQ29uZmlnLm9wdGlvbnMsXG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hcGlxdWVyeS5qcyJdLCJuYW1lcyI6WyJGRVRDSF9QQVJBTVMiLCJpb01vY2siLCJpbml0UGFyYW1zIiwiX19ERVZfXyIsImxvZyIsIm1vY2siLCJNYW5hZ2VyIiwiU29ja2V0IiwiY29ubmVjdGlvbiIsImV2ZW50cyIsIm9uIiwicGFyYW1zIiwicHVzaCIsInVzZSIsImRpc2Nvbm5lY3QiLCJyZWNyZWF0ZVNvY2tldCIsIm5ld0luaXRQYXJhbXMiLCJmb3JFYWNoIiwiZXZlbnQiLCJuYW1lIiwiQXBpQ2xpZW50IiwidGhyb3dFcnJvciIsImVyciIsInJlcyIsInJlcSIsInNob3dFcnJvciIsInN0ciIsIkpTT04iLCJzdHJpbmdpZnkiLCJqc29uIiwiZXJyb3IiLCJtZXNzYWdlIiwiZXJyMiIsIkVycm9yIiwiaW8iLCJyb290IiwiYmFzZSIsInVybCIsIndzQ29uZmlnIiwid3MiLCJ3c0Nvbm5lY3Rpb25zIiwiYXV0aFRva2VuIiwid3NSZWNvbm5lY3QiLCJjdHgiLCJ0eXBlIiwic3RhdHVzIiwic3RhdHVzVGV4dCIsInRleHRFcnIiLCJqc29uRXJyIiwicGF0aCIsIm9wdGlvbnMiLCJzdWJzdHIiLCJwb3J0IiwibGVuZ3RoIiwic2VhcmNoIiwicmVwbGFjZSIsImFycmF5IiwibWFwIiwiYSIsImZpbHRlciIsImkiLCJqb2luIiwicXMiLCJpbmRleE9mIiwiY29uc3RydWN0b3IiLCJPYmplY3QiLCJhc3NpZ24iLCJib2R5IiwiZGF0YSIsImhlYWRlcnMiLCJBY2NlcHQiLCJfYm9keSIsImluY2x1ZGVzIiwiZm9ybSIsImtleXMiLCJrZXkiLCJhcHBlbmQiLCJBdXRob3JpemF0aW9uIiwicXVlcnlQYXJhbXMiLCJjcmVhdGVVcmwiLCJtZXRob2QiLCJhZnRlckZldGNoIiwicGFyc2VSZXN1bHQiLCJ0aW1lb3V0IiwicmVzdWx0IiwidGV4dCIsInBhcnNlIiwiZ2V0Q3R4IiwiZmV0Y2giLCJ0cmFjZSIsInRoZW4iLCJQcm9taXNlIiwicmFjZSIsInJlc29sdmUiLCJyZWplY3QiLCJzZXRUaW1lb3V0Iiwic29ja2V0IiwiY29uc29sZSIsIm9wdHMiLCJ0b2tlbkluQ29va2llIiwicXVlcnkiLCJ0b2tlbiIsInBhcmFtczIiLCJjcmVhdGUiLCJtZXJnZSIsImdsb2JhbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7Ozs4RUFOQTs7O0FBT0E7QUFDQSxJQUFNQSxlQUFlLENBQ25CLFFBRG1CLEVBRW5CLEtBRm1CLEVBR25CLFNBSG1CLEVBSW5CLFNBSm1CLEVBS25CLFVBTG1CLEVBTW5CLGdCQU5tQixFQU9uQixNQVBtQixFQVFuQixhQVJtQixFQVNuQixVQVRtQixFQVVuQixXQVZtQixFQVduQixPQVhtQixDQUFyQjs7QUFjQSxTQUFTQyxNQUFULEdBQStCO0FBQUE7O0FBQUEsb0NBQVpDLFVBQVk7QUFBWkEsY0FBWTtBQUFBOztBQUM3QkMsYUFBVyxxQkFBUUMsR0FBUixrQkFBWSxRQUFaLFNBQXlCRixVQUF6QixFQUFYO0FBQ0E7QUFDQSxNQUFNRyxPQUFPO0FBQ1hDLGFBQVMsNEJBQUdBLE9BREQ7QUFFWEMsWUFBUSw0QkFBR0EsTUFGQTtBQUdYQyxnQkFBWSxJQUhEO0FBSVhDLFlBQVEsRUFKRztBQUtYQyxNQUxXLGdCQUtHO0FBQUEseUNBQVJDLE1BQVE7QUFBUkEsY0FBUTtBQUFBOztBQUNaTixXQUFLSSxNQUFMLENBQVlHLElBQVosRUFBa0IsSUFBbEIsU0FBMkJELE1BQTNCO0FBQ0QsS0FQVTtBQVFYRSxPQVJXLGlCQVFJO0FBQUEseUNBQVJGLE1BQVE7QUFBUkEsY0FBUTtBQUFBOztBQUNiTixXQUFLSSxNQUFMLENBQVlHLElBQVosRUFBa0IsS0FBbEIsU0FBNEJELE1BQTVCO0FBQ0QsS0FWVTtBQVdYRyxjQVhXLHdCQVdXO0FBQUE7O0FBQ3BCLCtCQUFLTixVQUFMLEVBQWdCTSxVQUFoQjtBQUNELEtBYlU7QUFjWEMsa0JBZFcsNEJB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bUIsS0FBSzVELFNBQXhCO0FBQ3hEOztBQUVELFVBQU1sQixNQUFNLEtBQUtXLEVBQUwsQ0FDVixLQUFLNkMsU0FBTCxDQUFlOUIsSUFBZixFQUFxQnFELE9BQXJCLENBRFUsZUFHTCxLQUFLaEUsUUFBTCxDQUFjWSxPQUhULEVBSUx2QyxNQUpLLEVBQVo7QUFPQSxhQUFPWSxHQUFQO0FBQ0Q7Ozs4QkEvU2dCQyxHLEVBQUs7QUFDcEI7QUFDQTtBQUNBLDBCQUNLQSxHQURMO0FBRUUrRSxjQUZGLGtCQUVTNUYsTUFGVCxFQUVpQjtBQUNiLGNBQU15RixRQUFRLEtBQUt0QyxFQUFMLENBQVFsQyxTQUFSLENBQWtCakIsTUFBbEIsQ0FBZDtBQUNBLGlCQUFPLENBQUMsS0FBS3NDLElBQUwsSUFBYSxHQUFkLEtBQXNCbUQsY0FBWUEsS0FBWixHQUFzQixFQUE1QyxDQUFQO0FBQ0QsU0FMSDtBQU1FSSxhQU5GLGlCQU1RN0YsTUFOUixFQU1nQjtBQUNaLGlCQUFPLEtBQUs0RixNQUFMLGNBQ0YsS0FBS0gsS0FESCxFQUVGekYsTUFGRSxFQUFQO0FBSUQ7QUFYSDtBQWFEOzs7Ozs7QUF0Q2tCUyxTLENBQ1pvRSxLLEdBQVFpQixPQUFPakIsSztBQURIcEUsUyxDQUVaMEMsRTtrQkFGWTFDLFMiLCJmaWxlIjoiYXBpcXVlcnkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgZmV0Y2ggZnJvbSAnbm9kZS1mZXRjaCc7XG5pbXBvcnQgaXNQbGFpbk9iamVjdCBmcm9tICdsb2Rhc2guaXNwbGFpbm9iamVjdCc7XG5pbXBvcnQgcGljayBmcm9tICdsb2Rhc2gucGljayc7XG5pbXBvcnQgcXMgZnJvbSAncXMnO1xuaW1wb3J0IEZvcm1EYXRhIGZyb20gJ2Zvcm0tZGF0YSc7XG5pbXBvcnQgaW8gZnJvbSAnLi9zb2NrZXQtaW8tdW5pdmVyc2FsJztcbmltcG9ydCB0cmltIGZyb20gJy4vdHJpbSc7XG4vLyBpbXBvcnQgZmV0Y2ggZnJvbSAnaXNvbW9ycGhpYy1mZXRjaCc7XG5jb25zdCBGRVRDSF9QQVJBTVMgPSBbXG4gICdtZXRob2QnLFxuICAndXJsJyxcbiAgJ2hlYWRlcnMnLFxuICAnY29udGV4dCcsXG4gICdyZWZlcnJlcicsXG4gICdyZWZlcnJlclBvbGljeScsXG4gICdtb2RlJyxcbiAgJ2NyZWRlbnRpYWxzJyxcbiAgJ3JlZGlyZWN0JyxcbiAgJ2ludGVncml0eScsXG4gICdjYWNoZScsXG5dO1xuXG5mdW5jdGlvbiBpb01vY2soLi4uaW5pdFBhcmFtcykge1xuICBfX0RFVl9fICYmIGNvbnNvbGUubG9nKCdpb01vY2snLCAuLi5pbml0UGFyYW1zKTtcbiAgLy8gY29uc3Qgc29ja2V0ID0gaW8oLi4ucGFyYW1zKVxuICBjb25zdCBtb2NrID0ge1xuICAgIE1hbmFnZXI6IGlvLk1hbmFnZXIsXG4gICAgU29ja2V0OiBpby5Tb2NrZXQsXG4gICAgY29ubmVjdGlvbjogbnVsbCxcbiAgICBldmVudHM6IFtdLFxuICAgIG9uKC4uLnBhcmFtcykge1xuICAgICAgbW9jay5ldmVudHMucHVzaChbJ29uJywgLi4ucGFyYW1zXSk7XG4gICAgfSxcbiAgICB1c2UoLi4ucGFyYW1zKSB7XG4gICAgICBtb2NrLmV2ZW50cy5wdXNoKFsndXNlJywgLi4ucGFyYW1zXSk7XG4gICAgfSxcbiAgICBkaXNjb25uZWN0KC4uLnBhcmFtcykge1xuICAgICAgbW9jay5jb25uZWN0aW9uLmRpc2Nvbm5lY3QoLi4ucGFyYW1zKTtcbiAgICB9LFxuICAgIHJlY3JlYXRlU29ja2V0KC4uLm5ld0luaXRQYXJhbXMpIHtcbiAgICAgIF9fREVWX18gJiYgY29uc29sZS5sb2coJ3JlY3JlYXRlU29ja2V0JywgLi4ubmV3SW5pdFBhcmFtcyk7XG4gICAgICBpZiAobW9jay5jb25uZWN0aW9uICYmIG1vY2suY29ubmVjdGlvbi5kaXNjb25uZWN0KSB7XG4gICAgICAgIG1vY2suY29ubmVjdGlvbi5kaXNjb25uZWN0KCk7XG4gICAgICB9XG4gICAgICBtb2NrLmNvbm5lY3Rpb24gPSBpbyguLi5uZXdJbml0UGFyYW1zKTtcbiAgICAgIG1vY2suZXZlbnRzLmZvckVhY2goKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IFtuYW1lLCAuLi5wYXJhbXNdID0gZXZlbnQ7XG4gICAgICAgIG1vY2suY29ubmVjdGlvbltuYW1lXSguLi5wYXJhbXMpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbW9jay5jb25uZWN0aW9uO1xuICAgIH0sXG4gIH07XG4gIHJldHVybiBtb2NrLnJlY3JlYXRlU29ja2V0KC4uLmluaXRQYXJhbXMpO1xufVxuXG4vLyBjb25zdCBERUJVRyA9IF9fREVWX187XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwaUNsaWVudCB7XG4gIHN0YXRpYyBmZXRjaCA9IGdsb2JhbC5mZXRjaDtcbiAgc3RhdGljIHFzID0gcXNcbiAgLy8gaW8gPSBpb1xuXG4gIGNvbnN0cnVjdG9yKHBhcmFtcyA9IHt9KSB7XG4gICAgLy8gY29uc29sZS5sb2coJ0FwaUNsaWVudCcsIHBhcmFtcyk7XG4gICAgdGhpcy5pbyA9IGlvTW9jaztcbiAgICB0aGlzLmxvZyA9IHBhcmFtcy5sb2c7XG4gICAgdGhpcy5yb290ID0gcGFyYW1zLnJvb3Q7XG4gICAgdGhpcy5iYXNlID0gcGFyYW1zLmJhc2U7XG4gICAgdGhpcy51cmwgPSBwYXJhbXMudXJsO1xuICAgIHRoaXMud3NDb25maWcgPSBwYXJhbXMud3M7XG4gICAgdGhpcy53c0Nvbm5lY3Rpb25zID0ge307XG4gICAgdGhpcy5hdXRoVG9rZW4gPSBwYXJhbXMuYXV0aFRva2VuIHx8IG51bGw7XG4gIH1cblxuICBzZXRBdXRoVG9rZW4oYXV0aFRva2VuKSB7XG4gICAgdGhpcy5hdXRoVG9rZW4gPSBhdXRoVG9rZW47XG4gICAgdGhpcy53c1JlY29ubmVjdCgpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVJlcShyZXEpIHtcbiAgICAvLyByZXEucGF0aCxcbiAgICAvLyByZXEucXVlcnksXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJlcSxcbiAgICAgIGNyZWF0ZShwYXJhbXMpIHtcbiAgICAgICAgY29uc3QgcXVlcnkgPSB0aGlzLnFzLnN0cmluZ2lmeShwYXJhbXMpO1xuICAgICAgICByZXR1cm4gKHRoaXMucGF0aCB8fCAnLycpICsgKHF1ZXJ5ID8gYD8ke3F1ZXJ5fWAgOiAnJyk7XG4gICAgICB9LFxuICAgICAgbWVyZ2UocGFyYW1zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZSh7XG4gICAgICAgICAgLi4udGhpcy5xdWVyeSxcbiAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgdGhyb3dFcnJvciA9IGFzeW5jICh7IGVyciwgcmVzLCByZXEgfSkgPT4ge1xuICAgIGlmICh0aGlzLnNob3dFcnJvciAmJiB0aGlzLmxvZykge1xuICAgICAgY29uc3Qgc3RyID0gYFxcXG49PT09PT09PT09PT09PVxuICBmZXRjaCBlcnJvcjpcbiR7aXNQbGFpbk9iamVjdChlcnIpID8gSlNPTi5zdHJpbmdpZnkoZXJyLCBudWxsLCAyKSA6IGVycn1cbiAgcmVxOlxuJHtKU09OLnN0cmluZ2lmeShyZXEsIG51bGwsIDIpfVxuICBqc29uOlxuJHtKU09OLnN0cmluZ2lmeShyZXMuanNvbiwgbnVsbCwgMil9XG49PT09PT09PT09PT09PVxcXG5gO1xuICAgICAgdGhpcy5sb2cuZXJyb3Ioc3RyKTtcbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZSA9IGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnI7XG4gICAgY29uc3QgZXJyMiA9IG5ldyBFcnJvcihpc1BsYWluT2JqZWN0KG1lc3NhZ2UpID8gSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkgOiBtZXNzYWdlKTtcbiAgICBlcnIyLnJlcyA9IHJlcztcbiAgICBlcnIyLnJlcSA9IHJlcTtcbiAgICB0aHJvdyBlcnIyO1xuICB9XG5cbiAgYXN5bmMgYWZ0ZXJGZXRjaChjdHgpIHtcbiAgICBjb25zdCB7IHJlcywgdGhyb3dFcnJvciB9ID0gY3R4O1xuICAgIGlmIChyZXMuanNvbiAmJiByZXMuanNvbi5lcnIpIHtcbiAgICAgIGF3YWl0IHRocm93RXJyb3Ioe1xuICAgICAgICAuLi5jdHgsXG4gICAgICAgIGVycjoge1xuICAgICAgICAgIHR5cGU6ICdDVVNUT01fRVJST1InLFxuICAgICAgICAgIC4uLnJlcy5qc29uLmVycixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAocmVzLnN0YXR1cyA+PSA0MDApIHtcbiAgICAgIGNvbnN0IHR5cGUgPSAnUkVTX1NUQVRVU19FUlJPUic7XG4gICAgICBhd2FpdCB0aHJvd0Vycm9yKHtcbiAgICAgICAgLi4uY3R4LFxuICAgICAgICBlcnI6IHtcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHN0YXR1czogcmVzLnN0YXR1cyxcbiAgICAgICAgICBzdGF0dXNUZXh0OiByZXMuc3RhdHVzVGV4dCxcbiAgICAgICAgICBtZXNzYWdlOiBgJHt0eXBlfTogJHtyZXMuc3RhdHVzfSAke3Jlcy5zdGF0dXNUZXh0fWAsXG4gICAgICAgICAgLi4uKHJlcy5qc29uIHx8IHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAocmVzLnRleHRFcnIpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSAnVEVYVF9QQVJTRV9FUlJPUic7XG4gICAgICBhd2FpdCBjdHgudGhyb3dFcnJvcih7XG4gICAgICAgIC4uLmN0eCxcbiAgICAgICAgcmVzLFxuICAgICAgICBlcnI6IHtcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIG1lc3NhZ2U6ICfQntGI0LjQsdC60LAg0L/QtdGA0LXQtNCw0YfQuCDQtNCw0L3QvdGL0YUnLFxuICAgICAgICAgIGVycjogcmVzLnRleHRFcnIsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHJlcy5qc29uRXJyKSB7XG4gICAgICBjb25zdCB0eXBlID0gJ0pTT05fUEFSU0VfRVJST1InO1xuICAgICAgYXdhaXQgY3R4LnRocm93RXJyb3Ioe1xuICAgICAgICAuLi5jdHgsXG4gICAgICAgIHJlcyxcbiAgICAgICAgZXJyOiB7XG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBtZXNzYWdlOiAn0J7RiNC40LHQutCwINGB0LXRgNCy0LXRgNCwJyxcbiAgICAgICAgICAvLyBtZXNzYWdlOiB0eXBlLFxuICAgICAgICAgIGVycjogcmVzLmpzb25FcnIsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5qc29uO1xuICB9XG5cbiAgY3JlYXRlVXJsKHBhdGgsIG9wdGlvbnMgPSB7fSkge1xuICAgIGlmIChwYXRoLnN1YnN0cigwLCA1KSA9PT0gJ2h0dHA6JyB8fCBwYXRoLnN1YnN0cigwLCA2KSA9PT0gJ2h0dHBzOicpIHtcbiAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICBsZXQgdXJsID0gb3B0aW9ucy51cmwgfHwgdGhpcy51cmwgfHwgJy8nO1xuICAgIGNvbnN0IHBvcnQgPSBvcHRpb25zLnBvcnQgfHwgdGhpcy5wb3J0IHx8IG51bGw7XG5cbiAgICBpZiAodXJsICYmIHVybC5sZW5ndGggPiAxICYmIHBvcnQpIHtcbiAgICAgIGlmICh1cmwuc2VhcmNoKC86KFxcZCspLykgIT09IC0xKSB7XG4gICAgICAgIHVybCA9IHVybC5yZXBsYWNlKC86KFxcZCspLywgYDoke3BvcnR9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cmwgPSBgJHt1cmx9OiR7cG9ydH1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGJhc2UgPSBvcHRpb25zLmJhc2UgfHwgdGhpcy5iYXNlO1xuICAgIGNvbnN0IGFycmF5ID0gW3VybCwgcGF0aFswXSA9PT0gJy8nID8gbnVsbCA6IHRyaW0oYmFzZSksIHRyaW0ocGF0aCldO1xuICAgIHVybCA9IGFycmF5XG4gICAgICAubWFwKGEgPT4gdHJpbShhKSlcbiAgICAgIC5maWx0ZXIoKGEsIGkpID0+IChpID09PSAwIHx8IGEpKVxuICAgICAgLmpvaW4oJy8nKTtcbiAgICBpZiAob3B0aW9ucy5xcykge1xuICAgICAgdXJsICs9ICh1cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKyB0aGlzLmNvbnN0cnVjdG9yLnFzLnN0cmluZ2lmeShvcHRpb25zLnFzKTtcbiAgICB9XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIGdldEN0eCh1cmwsIHBhcmFtcyA9IHt9KSB7XG4gICAgY29uc3QgcmVxID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHsgdXJsIH0sXG4gICAgICBwaWNrKHBhcmFtcywgRkVUQ0hfUEFSQU1TKSxcbiAgICApO1xuXG4gICAgY29uc3QgYm9keSA9IHBhcmFtcy5ib2R5IHx8IHBhcmFtcy5kYXRhO1xuXG4gICAgaWYgKCFyZXEuaGVhZGVycykgcmVxLmhlYWRlcnMgPSB7fTtcbiAgICBpZiAoIXJlcS5oZWFkZXJzLkFjY2VwdCkgcmVxLmhlYWRlcnMuQWNjZXB0ID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICAgIGlmICghcmVxLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddKSByZXEuaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCc7XG4gICAgaWYgKHJlcS5oZWFkZXJzWydDb250ZW50LVR5cGUnXSA9PT0gJyEnKSB7XG4gICAgICBkZWxldGUgcmVxLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddO1xuICAgIH1cblxuICAgIHJlcS5fYm9keSA9IGJvZHk7XG4gICAgcmVxLmJvZHkgPSBib2R5O1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGJvZHkpKSB7XG4gICAgICBpZiAocmVxLmhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddICYmIHJlcS5oZWFkZXJzWydDb250ZW50LVR5cGUnXS5pbmNsdWRlcygnYXBwbGljYXRpb24vanNvbicpKSB7XG4gICAgICAgIHJlcS5ib2R5ID0gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmb3JtID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIE9iamVjdC5rZXlzKGJvZHkpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIGZvcm0uYXBwZW5kKGtleSwgYm9keVtrZXldKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJlcS5ib2R5ID0gZm9ybTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgYXV0aFRva2VuID0gKHBhcmFtcy5hdXRoVG9rZW4gfHwgdGhpcy5hdXRoVG9rZW4pO1xuICAgIGlmICghcmVxLmhlYWRlcnMuQXV0aG9yaXphdGlvbiAmJiBhdXRoVG9rZW4pIHtcbiAgICAgIHJlcS5oZWFkZXJzLkF1dGhvcml6YXRpb24gPSBgQmVhcmVyICR7YXV0aFRva2VufWA7XG4gICAgfVxuXG4gICAgcmVxLnFzID0gcGFyYW1zLnF1ZXJ5UGFyYW1zIHx8IHBhcmFtcy5xcztcbiAgICBpZiAocmVxLnFzKSB7XG4gICAgICByZXEudXJsICs9IChyZXEudXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgdGhpcy5jb25zdHJ1Y3Rvci5xcy5zdHJpbmdpZnkocmVxLnFzKTtcbiAgICB9XG4gICAgcmVxLnVybCA9IHRoaXMuY3JlYXRlVXJsKHJlcS51cmwpO1xuXG4gICAgaWYgKCFyZXEubWV0aG9kKSB7XG4gICAgICByZXEubWV0aG9kID0gJ0dFVCc7XG4gICAgfVxuICAgIGNvbnN0IHRocm93RXJyb3IgPSBwYXJhbXMudGhyb3dFcnJvciB8fCB0aGlzLnRocm93RXJyb3I7XG4gICAgY29uc3QgYWZ0ZXJGZXRjaCA9IHBhcmFtcy5hZnRlckZldGNoIHx8IHRoaXMuYWZ0ZXJGZXRjaDtcbiAgICBjb25zdCBwYXJzZVJlc3VsdCA9IHBhcmFtcy5wYXJzZVJlc3VsdCB8fCB0aGlzLnBhcnNlUmVzdWx0O1xuICAgIGNvbnN0IHRpbWVvdXQgPSBwYXJhbXMudGltZW91dDtcblxuICAgIHJldHVybiB7XG4gICAgICByZXEsXG4gICAgICB0aW1lb3V0LFxuICAgICAgYXV0aFRva2VuLFxuICAgICAgdGhyb3dFcnJvcixcbiAgICAgIGFmdGVyRmV0Y2gsXG4gICAgICBwYXJzZVJlc3VsdCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgcGFyc2VSZXN1bHQoY3R4LCByZXN1bHQpIHtcbiAgICBjb25zdCByZXMgPSB7XG4gICAgICByZXN1bHQsXG4gICAgICBzdGF0dXM6IHJlc3VsdC5zdGF0dXMsXG4gICAgICBzdGF0dXNUZXh0OiByZXN1bHQuc3RhdHVzVGV4dCxcbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICByZXMudGV4dCA9IGF3YWl0IHJlc3VsdC50ZXh0KCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXMudGV4dEVyciA9IGVycjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHJlcy5qc29uID0gSlNPTi5wYXJzZShyZXMudGV4dCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXMuanNvbkVyciA9IGVycjtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIGZldGNoKC4uLmFyZ3MpIHtcbiAgICBjb25zdCBjdHggPSB0aGlzLmdldEN0eCguLi5hcmdzKTtcbiAgICBjb25zdCB7IGZldGNoIH0gPSB0aGlzLmNvbnN0cnVjdG9yO1xuICAgIGNvbnN0IHsgcmVxLCBwYXJzZVJlc3VsdCwgYWZ0ZXJGZXRjaCB9ID0gY3R4O1xuICAgIGlmICh0aGlzLmxvZyAmJiB0aGlzLmxvZy50cmFjZSkge1xuICAgICAgdGhpcy5sb2cudHJhY2UoJ1thcGldJywgcmVxLm1ldGhvZCwgcmVxLnVybCwgcmVxLl9ib2R5KTtcbiAgICAgIC8vIHRoaXMubG9nLnRyYWNlKCdbYXBpXScsIHJlcS5tZXRob2QsIHJlcS51cmwsIHJlcS5fYm9keSwgcmVxKTtcbiAgICB9XG4gICAgY29uc3QgeyB1cmwsIC4uLnBhcmFtcyB9ID0gcmVxO1xuICAgIC8vIGNvbnNvbGUubG9nKCdAQEBmZXRjaCcsIHVybCwgcGFyYW1zKTtcbiAgICBjb25zdCByZXMgPSBmZXRjaCh1cmwsIHBhcmFtcylcbiAgICAgIC50aGVuKGFzeW5jIChyZXN1bHQpID0+IHtcbiAgICAgICAgY3R4LnJlcyA9IGF3YWl0IHBhcnNlUmVzdWx0KGN0eCwgcmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIGN0eDtcbiAgICAgIH0pXG4gICAgICAudGhlbihhZnRlckZldGNoKTtcbiAgICBpZiAoIWN0eC50aW1lb3V0KSByZXR1cm4gcmVzO1xuXG4gICAgcmV0dXJuIFByb21pc2UucmFjZShbXG4gICAgICByZXMsXG4gICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignZmV0Y2ggdGltZW91dCcpKSwgY3R4LnRpbWVvdXQpO1xuICAgICAgfSksXG4gICAgXSk7XG4gIH1cblxuICB3c1JlY29ubmVjdCgpIHtcbiAgICBpZiAodGhpcy5sb2cgJiYgdGhpcy5sb2cudHJhY2UpIHtcbiAgICAgIHRoaXMubG9nLnRyYWNlKCdbYXBpXSBXUy53c1JlY29ubmVjdCcsIE9iamVjdC5rZXlzKHRoaXMud3NDb25uZWN0aW9ucykpO1xuICAgIH1cblxuICAgIE9iamVjdC5rZXlzKHRoaXMud3NDb25uZWN0aW9ucykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBbcGF0aCwgb3B0aW9ucywgc29ja2V0XSA9IHRoaXMud3NDb25uZWN0aW9uc1trZXldO1xuICAgICAgc29ja2V0LnJlY3JlYXRlU29ja2V0KHBhdGgsIG9wdGlvbnMpO1xuICAgICAgLy8gc29ja2V0LmRpc2Nvbm5lY3QoKTtcbiAgICAgIC8vIHRoaXMud3MocGF0aCwgb3B0aW9ucyk7XG4gICAgfSk7XG4gIH1cblxuICB3cyhwYXRoID0gJycsIG9wdGlvbnMgPSB7fSkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdhcGkud3MnLCBwYXRoKVxuICAgIGNvbnN0IGtleSA9IHBhdGggKyBKU09OLnN0cmluZ2lmeShvcHRpb25zKTtcbiAgICBpZiAodGhpcy53c0Nvbm5lY3Rpb25zW2tleV0pIHJldHVybiB0aGlzLndzQ29ubmVjdGlvbnNba2V5XTtcbiAgICBpZiAoIXRoaXMud3NDb25maWcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ9CS0Ysg0L3QtSDQvNC+0LbQtdGC0LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMIGFwaS53cyDQsdC10Lcg0YHQvtC60LXRgiDQutC+0L3RhNC40LPQvtCyJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgb3B0cyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMud3NDb25maWcgJiYgdGhpcy53c0NvbmZpZy5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAvLyBjb25zb2xlLmxvZygnV1MgV1MgV1MnLFxuICAgIC8vICAge1xuICAgIC8vICAgICBxOiB0aGlzLndzQ29uZmlnICYmIHRoaXMud3NDb25maWcub3B0aW9ucyxcbiAgICAvLyAgICAgdzogb3B0aW9ucyxcbiAgICAvLyAgICAgZTogb3B0cyxcbiAgICAvLyAgICAgcjogT2JqZWN0LmFzc2lnbih7fSwgdGhpcy53c0NvbmZpZyAmJiB0aGlzLndzQ29uZmlnLm9wdGlvbnMsIG9wdGlvbnMpXG4gICAgLy8gICB9XG4gICAgLy8gKTtcbiAgICAvLyBjb25zb2xlLmxvZyhvcHRzLnF1ZXJ5LCBvcHRzLnF1ZXJ5LnRva2VuLCB0aGlzLmF1dGhUb2tlbik7XG4gICAgaWYgKCEodGhpcy53c0NvbmZpZyAmJiB0aGlzLndzQ29uZmlnLnRva2VuSW5Db29raWUpKSB7XG4gICAgICBpZiAob3B0cy5xdWVyeSAmJiAhb3B0cy5xdWVyeS50b2tlbiAmJiB0aGlzLmF1dGhUb2tlbikgb3B0cy5xdWVyeS50b2tlbiA9IHRoaXMuYXV0aFRva2VuO1xuICAgIH1cbiAgICBjb25zdCBwYXJhbXMyID0ge307XG4gICAgaWYgKCF0aGlzLndzQ29uZmlnLnRva2VuSW5Db29raWUpIHtcbiAgICAgIGlmICghcGFyYW1zMi5xcykge1xuICAgICAgICBwYXJhbXMyLnFzID0ge1xuICAgICAgICAgIC4uLihvcHRzLnF1ZXJ5IHx8IHt9KSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJhbXMyLnFzICYmICFwYXJhbXMyLnFzLnRva2VuICYmIHRoaXMuYXV0aFRva2VuKSBwYXJhbXMyLnFzLnRva2VuID0gdGhpcy5hdXRoVG9rZW47XG4gICAgfVxuXG4gICAgLy8gY29uc29sZS5sb2coJ1dTIG9wdHMucXVlcnksIG9wdHMucXVlcnkudG9rZW4sIHRoaXMuYXV0aFRva2VuJywgb3B0cy5xdWVyeSwgb3B0cy5xdWVyeS50b2tlbiwgdGhpcy5hdXRoVG9rZW4pO1xuICAgIGNvbnN0IHVybCA9IHRoaXMuY3JlYXRlVXJsKHBhdGgsIHsgLi4udGhpcy53c0NvbmZpZywgLi4ucGFyYW1zMiB9KTtcbiAgICAvLyBjb25zb2xlLmxvZygnd3MgdXJsJywge3dzQ29uZmlnOiB0aGlzLndzQ29uZmlnLCBwYXRoLCBvcHRpb25zLCB1cmwsIG9wdHMsfSApO1xuICAgIGlmICh0aGlzLmxvZyAmJiB0aGlzLmxvZy50cmFjZSkge1xuICAgICAgdGhpcy5sb2cudHJhY2UoJ1thcGldIFdTJywgdXJsLCBvcHRpb25zKTtcbiAgICAgIC8vIHRoaXMubG9nLnRyYWNlKCdbYXBpXScsIHJlcS5tZXRob2QsIHJlcS51cmwsIHJlcS5fYm9keSwgcmVxKTtcbiAgICB9XG4gICAgY29uc3Qgc29ja2V0ID0gaW8oXG4gICAgICB1cmwsXG4gICAgICBvcHRzLFxuICAgICk7XG5cbiAgICB0aGlzLndzQ29ubmVjdGlvbnNba2V5XSA9IFtwYXRoLCBvcHRpb25zLCBzb2NrZXRdO1xuICAgIHNvY2tldC5vbignZGlzY29ubmVjdCcsICgpID0+IHtcbiAgICAgIGRlbGV0ZSB0aGlzLndzQ29ubmVjdGlvbnNba2V5XTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzb2NrZXQ7XG4gIH1cbiAgd3MyKHBhdGggPSAnJywgcGFyYW1zID0ge30pIHtcbiAgICBpZiAoIXRoaXMud3NDb25maWcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ9CS0Ysg0L3QtSDQvNC+0LbQtdGC0LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMIGFwaS53cyDQsdC10Lcg0YHQvtC60LXRgiDQutC+0L3RhNC40LPQvtCyJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcGFyYW1zMiA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMud3NDb25maWcsIHBhcmFtcyk7XG5cbiAgICBpZiAoIXRoaXMud3NDb25maWcudG9rZW5JbkNvb2tpZSkge1xuICAgICAgaWYgKCFwYXJhbXMyLnFzKSBwYXJhbXMyLnFzID0ge307XG4gICAgICBpZiAocGFyYW1zMi5xcyAmJiAhcGFyYW1zMi5xcy50b2tlbiAmJiB0aGlzLmF1dGhUb2tlbikgcGFyYW1zMi5xcy50b2tlbiA9IHRoaXMuYXV0aFRva2VuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyA9IHRoaXMuaW8oXG4gICAgICB0aGlzLmNyZWF0ZVVybChwYXRoLCBwYXJhbXMyKSxcbiAgICAgIHtcbiAgICAgICAgLi4udGhpcy53c0NvbmZpZy5vcHRpb25zLFxuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICB9LFxuICAgICk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG59XG4iXX0= |
{ | ||
"name": "apiquery", | ||
"version": "0.1.12", | ||
"version": "0.1.13", | ||
"description": "http + websockets api client for Web, Node.js and React Native", | ||
@@ -5,0 +5,0 @@ "repository": { |
162082
587