@appium/base-driver 8.5.7 → 8.7.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.
Files changed (74) hide show
  1. package/build/lib/basedriver/capabilities.js +2 -2
  2. package/build/lib/basedriver/commands/execute.d.ts +11 -0
  3. package/build/lib/basedriver/commands/execute.d.ts.map +1 -0
  4. package/build/lib/basedriver/commands/execute.js +62 -0
  5. package/build/lib/basedriver/commands/index.d.ts +1 -1
  6. package/build/lib/basedriver/commands/index.d.ts.map +1 -1
  7. package/build/lib/basedriver/commands/index.js +5 -2
  8. package/build/lib/basedriver/commands/log.js +2 -4
  9. package/build/lib/basedriver/core.d.ts +11 -0
  10. package/build/lib/basedriver/core.d.ts.map +1 -1
  11. package/build/lib/basedriver/core.js +6 -1
  12. package/build/lib/basedriver/helpers.js +2 -2
  13. package/build/lib/express/server.d.ts +70 -7
  14. package/build/lib/express/server.d.ts.map +1 -1
  15. package/build/lib/express/server.js +19 -16
  16. package/build/lib/express/websocket.d.ts +12 -30
  17. package/build/lib/express/websocket.d.ts.map +1 -1
  18. package/build/lib/express/websocket.js +6 -4
  19. package/build/lib/index.d.ts +12 -180
  20. package/build/lib/index.d.ts.map +1 -1
  21. package/build/lib/index.js +107 -80
  22. package/build/lib/jsonwp-proxy/protocol-converter.js +2 -4
  23. package/build/lib/jsonwp-proxy/proxy.js +3 -7
  24. package/build/lib/protocol/index.d.ts +3 -1
  25. package/build/lib/protocol/index.js +13 -1
  26. package/build/lib/protocol/protocol.d.ts +8 -4
  27. package/build/lib/protocol/protocol.d.ts.map +1 -1
  28. package/build/lib/protocol/protocol.js +7 -7
  29. package/build/lib/protocol/routes.js +2 -6
  30. package/build/tsconfig.tsbuildinfo +1 -1
  31. package/lib/basedriver/commands/execute.js +65 -0
  32. package/lib/basedriver/commands/index.js +3 -1
  33. package/lib/basedriver/core.js +15 -0
  34. package/lib/express/server.js +126 -36
  35. package/lib/express/websocket.js +13 -11
  36. package/lib/index.js +19 -61
  37. package/lib/protocol/index.js +4 -0
  38. package/lib/protocol/protocol.js +10 -3
  39. package/package.json +17 -15
  40. package/build/test/basedriver/README.md +0 -5
  41. package/build/test/basedriver/driver-e2e-tests.js +0 -413
  42. package/build/test/basedriver/driver-tests.js +0 -572
  43. package/build/test/basedriver/index.js +0 -26
  44. package/build/test/e2e/basedriver/driver.e2e.spec.js +0 -15
  45. package/build/test/e2e/basedriver/helpers.e2e.spec.js +0 -192
  46. package/build/test/e2e/basedriver/websockets.e2e.spec.js +0 -87
  47. package/build/test/e2e/express/server.e2e.spec.js +0 -159
  48. package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +0 -59
  49. package/build/test/e2e/protocol/fake-driver.js +0 -163
  50. package/build/test/e2e/protocol/helpers.js +0 -25
  51. package/build/test/e2e/protocol/protocol.e2e.spec.js +0 -1186
  52. package/build/test/helpers.js +0 -55
  53. package/build/test/unit/basedriver/capabilities.spec.js +0 -672
  54. package/build/test/unit/basedriver/capability.spec.js +0 -353
  55. package/build/test/unit/basedriver/commands/event.spec.js +0 -110
  56. package/build/test/unit/basedriver/commands/log.spec.js +0 -92
  57. package/build/test/unit/basedriver/device-settings.spec.js +0 -97
  58. package/build/test/unit/basedriver/driver.spec.js +0 -15
  59. package/build/test/unit/basedriver/helpers.spec.js +0 -151
  60. package/build/test/unit/basedriver/timeout.spec.js +0 -135
  61. package/build/test/unit/express/server.spec.js +0 -155
  62. package/build/test/unit/express/static.spec.js +0 -26
  63. package/build/test/unit/jsonwp-proxy/mock-request.js +0 -91
  64. package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +0 -171
  65. package/build/test/unit/jsonwp-proxy/proxy.spec.js +0 -292
  66. package/build/test/unit/jsonwp-proxy/url.spec.js +0 -165
  67. package/build/test/unit/jsonwp-status/status.spec.js +0 -34
  68. package/build/test/unit/protocol/errors.spec.js +0 -390
  69. package/build/test/unit/protocol/routes.spec.js +0 -80
  70. package/build/test/unit/protocol/validator.spec.js +0 -149
  71. package/test/basedriver/README.md +0 -5
  72. package/test/basedriver/driver-e2e-tests.js +0 -386
  73. package/test/basedriver/driver-tests.js +0 -624
  74. package/test/basedriver/index.js +0 -6
@@ -61,9 +61,7 @@ class ProtocolConverter {
61
61
  }
62
62
 
63
63
  get log() {
64
- var _this$_log;
65
-
66
- return (_this$_log = this._log) !== null && _this$_log !== void 0 ? _this$_log : DEFAULT_LOG;
64
+ return this._log ?? DEFAULT_LOG;
67
65
  }
68
66
 
69
67
  set downstreamProtocol(value) {
@@ -238,4 +236,4 @@ class ProtocolConverter {
238
236
 
239
237
  var _default = ProtocolConverter;
240
238
  exports.default = _default;
241
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT01NQU5EX1VSTFNfQ09ORkxJQ1RTIiwiY29tbWFuZE5hbWVzIiwianNvbndwQ29udmVydGVyIiwidXJsIiwicmVwbGFjZSIsImluY2x1ZGVzIiwidzNjQ29udmVydGVyIiwidGVzdCIsInczY1VybCIsInczY1Byb3BlcnR5UmVnZXgiLCJqc29ud3BVcmwiLCJNSlNPTldQIiwiVzNDIiwiUFJPVE9DT0xTIiwiREVGQVVMVF9MT0ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJQcm90b2NvbENvbnZlcnRlciIsImNvbnN0cnVjdG9yIiwicHJveHlGdW5jIiwibG9nIiwiX2Rvd25zdHJlYW1Qcm90b2NvbCIsIl9sb2ciLCJkb3duc3RyZWFtUHJvdG9jb2wiLCJ2YWx1ZSIsImdldFRpbWVvdXRSZXF1ZXN0T2JqZWN0cyIsImJvZHkiLCJfIiwiaGFzIiwidHlwZVRvVzNDIiwieCIsInR5cGUiLCJtcyIsInR5cGVUb0pTT05XUCIsInRvUGFpcnMiLCJmaWx0ZXIiLCJwYWlyIiwibWFwIiwicHJveHlTZXRUaW1lb3V0cyIsIm1ldGhvZCIsInJlc3BvbnNlIiwicmVzQm9keSIsInRpbWVvdXRSZXF1ZXN0T2JqZWN0cyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsInRpbWVvdXRPYmoiLCJzdGF0dXNDb2RlIiwicHJveHlTZXRXaW5kb3ciLCJib2R5T2JqIiwidXRpbCIsInNhZmVKc29uUGFyc2UiLCJpc1BsYWluT2JqZWN0IiwibmFtZSIsImhhbmRsZSIsInByb3h5U2V0VmFsdWUiLCJoYXNWYWx1ZSIsInRleHQiLCJpc1N0cmluZyIsImlzQXJyYXkiLCJqb2luIiwiT2JqZWN0IiwiYXNzaWduIiwicHJveHlTZXRGcmFtZSIsImlkIiwiZHVwbGljYXRlS2V5cyIsIk1KU09OV1BfRUxFTUVOVF9LRVkiLCJXM0NfRUxFTUVOVF9LRVkiLCJwcm94eVBlcmZvcm1BY3Rpb25zIiwicHJveHlSZWxlYXNlQWN0aW9ucyIsImNvbnZlcnRBbmRQcm94eSIsImNvbW1hbmROYW1lIiwicmV3cml0dGVuVXJsIiwiaW5mbyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9qc29ud3AtcHJveHkvcHJvdG9jb2wtY29udmVydGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge2xvZ2dlciwgdXRpbH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7ZHVwbGljYXRlS2V5c30gZnJvbSAnLi4vYmFzZWRyaXZlci9oZWxwZXJzJztcbmltcG9ydCB7TUpTT05XUF9FTEVNRU5UX0tFWSwgVzNDX0VMRU1FTlRfS0VZLCBQUk9UT0NPTFN9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjb25zdCBDT01NQU5EX1VSTFNfQ09ORkxJQ1RTID0gW1xuICB7XG4gICAgY29tbWFuZE5hbWVzOiBbJ2V4ZWN1dGUnLCAnZXhlY3V0ZUFzeW5jJ10sXG4gICAganNvbndwQ29udmVydGVyOiAodXJsKSA9PlxuICAgICAgdXJsLnJlcGxhY2UoL1xcL2V4ZWN1dGUuKi8sIHVybC5pbmNsdWRlcygnYXN5bmMnKSA/ICcvZXhlY3V0ZV9hc3luYycgOiAnL2V4ZWN1dGUnKSxcbiAgICB3M2NDb252ZXJ0ZXI6ICh1cmwpID0+XG4gICAgICB1cmwucmVwbGFjZSgvXFwvZXhlY3V0ZS4qLywgdXJsLmluY2x1ZGVzKCdhc3luYycpID8gJy9leGVjdXRlL2FzeW5jJyA6ICcvZXhlY3V0ZS9zeW5jJyksXG4gIH0sXG4gIHtcbiAgICBjb21tYW5kTmFtZXM6IFsnZ2V0RWxlbWVudFNjcmVlbnNob3QnXSxcbiAgICBqc29ud3BDb252ZXJ0ZXI6ICh1cmwpID0+IHVybC5yZXBsYWNlKC9cXC9lbGVtZW50XFwvKFteL10rKVxcL3NjcmVlbnNob3QkLywgJy9zY3JlZW5zaG90LyQxJyksXG4gICAgdzNjQ29udmVydGVyOiAodXJsKSA9PiB1cmwucmVwbGFjZSgvXFwvc2NyZWVuc2hvdFxcLyhbXi9dKykvLCAnL2VsZW1lbnQvJDEvc2NyZWVuc2hvdCcpLFxuICB9LFxuICB7XG4gICAgY29tbWFuZE5hbWVzOiBbJ2dldFdpbmRvd0hhbmRsZXMnLCAnZ2V0V2luZG93SGFuZGxlJ10sXG4gICAganNvbndwQ29udmVydGVyKHVybCkge1xuICAgICAgcmV0dXJuIC9cXC93aW5kb3ckLy50ZXN0KHVybClcbiAgICAgICAgPyB1cmwucmVwbGFjZSgvXFwvd2luZG93JC8sICcvd2luZG93X2hhbmRsZScpXG4gICAgICAgIDogdXJsLnJlcGxhY2UoL1xcL3dpbmRvd1xcL2hhbmRsZShzPykkLywgJy93aW5kb3dfaGFuZGxlJDEnKTtcbiAgICB9LFxuICAgIHczY0NvbnZlcnRlcih1cmwpIHtcbiAgICAgIHJldHVybiAvXFwvd2luZG93X2hhbmRsZSQvLnRlc3QodXJsKVxuICAgICAgICA/IHVybC5yZXBsYWNlKC9cXC93aW5kb3dfaGFuZGxlJC8sICcvd2luZG93JylcbiAgICAgICAgOiB1cmwucmVwbGFjZSgvXFwvd2luZG93X2hhbmRsZXMkLywgJy93aW5kb3cvaGFuZGxlcycpO1xuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBjb21tYW5kTmFtZXM6IFsnZ2V0UHJvcGVydHknXSxcbiAgICBqc29ud3BDb252ZXJ0ZXI6ICh3M2NVcmwpID0+IHtcbiAgICAgIGNvbnN0IHczY1Byb3BlcnR5UmVnZXggPSAvXFwvZWxlbWVudFxcLyhbXi9dKylcXC9wcm9wZXJ0eVxcLyhbXi9dKykvO1xuICAgICAgY29uc3QganNvbndwVXJsID0gdzNjVXJsLnJlcGxhY2UodzNjUHJvcGVydHlSZWdleCwgJy9lbGVtZW50LyQxL2F0dHJpYnV0ZS8kMicpO1xuICAgICAgcmV0dXJuIGpzb253cFVybDtcbiAgICB9LFxuICAgIHczY0NvbnZlcnRlcjogKGpzb253cFVybCkgPT4ganNvbndwVXJsLCAvLyBEb24ndCBjb252ZXJ0IEpTT05XUCBVUkwgdG8gVzNDLiBXM0MgYWNjZXB0cyAvYXR0cmlidXRlIGFuZCAvcHJvcGVydHlcbiAgfSxcbl07XG5jb25zdCB7TUpTT05XUCwgVzNDfSA9IFBST1RPQ09MUztcbmNvbnN0IERFRkFVTFRfTE9HID0gbG9nZ2VyLmdldExvZ2dlcignUHJvdG9jb2wgQ29udmVydGVyJyk7XG5cbmNsYXNzIFByb3RvY29sQ29udmVydGVyIHtcbiAgY29uc3RydWN0b3IocHJveHlGdW5jLCBsb2cgPSBudWxsKSB7XG4gICAgdGhpcy5wcm94eUZ1bmMgPSBwcm94eUZ1bmM7XG4gICAgdGhpcy5fZG93bnN0cmVhbVByb3RvY29sID0gbnVsbDtcbiAgICB0aGlzLl9sb2cgPSBsb2c7XG4gIH1cblxuICBnZXQgbG9nKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2cgPz8gREVGQVVMVF9MT0c7XG4gIH1cblxuICBzZXQgZG93bnN0cmVhbVByb3RvY29sKHZhbHVlKSB7XG4gICAgdGhpcy5fZG93bnN0cmVhbVByb3RvY29sID0gdmFsdWU7XG4gIH1cblxuICBnZXQgZG93bnN0cmVhbVByb3RvY29sKCkge1xuICAgIHJldHVybiB0aGlzLl9kb3duc3RyZWFtUHJvdG9jb2w7XG4gIH1cblxuICAvKipcbiAgICogVzNDIC90aW1lb3V0cyBjYW4gdGFrZSBhcyBtYW55IGFzIDMgdGltZW91dCB0eXBlcyBhdCBvbmNlLCBNSlNPTldQIC90aW1lb3V0cyBvbmx5IHRha2VzIG9uZVxuICAgKiBhdCBhIHRpbWUuIFNvIGlmIHdlJ3JlIHVzaW5nIFczQyBhbmQgcHJveHlpbmcgdG8gTUpTT05XUCBhbmQgdGhlcmUncyBtb3JlIHRoYW4gb25lIHRpbWVvdXQgdHlwZVxuICAgKiBwcm92aWRlZCBpbiB0aGUgcmVxdWVzdCwgd2UgbmVlZCB0byBkbyAzIHByb3hpZXMgYW5kIGNvbWJpbmUgdGhlIHJlc3VsdFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gYm9keSBSZXF1ZXN0IGJvZHlcbiAgICogQHJldHVybiB7QXJyYXl9IEFycmF5IG9mIFczQyArIE1KU09OV1AgY29tcGF0aWJsZSB0aW1lb3V0IG9iamVjdHNcbiAgICovXG4gIGdldFRpbWVvdXRSZXF1ZXN0T2JqZWN0cyhib2R5KSB7XG4gICAgaWYgKHRoaXMuZG93bnN0cmVhbVByb3RvY29sID09PSBXM0MgJiYgXy5oYXMoYm9keSwgJ21zJykgJiYgXy5oYXMoYm9keSwgJ3R5cGUnKSkge1xuICAgICAgY29uc3QgdHlwZVRvVzNDID0gKHgpID0+ICh4ID09PSAncGFnZSBsb2FkJyA/ICdwYWdlTG9hZCcgOiB4KTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBbdHlwZVRvVzNDKGJvZHkudHlwZSldOiBib2R5Lm1zLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kb3duc3RyZWFtUHJvdG9jb2wgPT09IE1KU09OV1AgJiYgKCFfLmhhcyhib2R5LCAnbXMnKSB8fCAhXy5oYXMoYm9keSwgJ3R5cGUnKSkpIHtcbiAgICAgIGNvbnN0IHR5cGVUb0pTT05XUCA9ICh4KSA9PiAoeCA9PT0gJ3BhZ2VMb2FkJyA/ICdwYWdlIGxvYWQnIDogeCk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBfLnRvUGFpcnMoYm9keSlcbiAgICAgICAgICAvLyBPbmx5IHRyYW5zZm9ybSB0aGUgZW50cnkgaWYgbXMgdmFsdWUgaXMgYSB2YWxpZCBwb3NpdGl2ZSBmbG9hdCBudW1iZXJcbiAgICAgICAgICAuZmlsdGVyKChwYWlyKSA9PiAvXlxcZCsoPzpbLixdXFxkKj8pPyQvLnRlc3QoYCR7cGFpclsxXX1gKSlcbiAgICAgICAgICAubWFwKGZ1bmN0aW9uIChwYWlyKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0eXBlOiB0eXBlVG9KU09OV1AocGFpclswXSksXG4gICAgICAgICAgICAgIG1zOiBwYWlyWzFdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW2JvZHldO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3h5IGFuIGFycmF5IG9mIHRpbWVvdXQgb2JqZWN0cyBhbmQgbWVyZ2UgdGhlIHJlc3VsdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIEVuZHBvaW50IHVybFxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWV0aG9kIEVuZHBvaW50IG1ldGhvZFxuICAgKiBAcGFyYW0ge09iamVjdH0gYm9keSBSZXF1ZXN0IGJvZHlcbiAgICovXG4gIGFzeW5jIHByb3h5U2V0VGltZW91dHModXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBsZXQgcmVzcG9uc2UsIHJlc0JvZHk7XG5cbiAgICBjb25zdCB0aW1lb3V0UmVxdWVzdE9iamVjdHMgPSB0aGlzLmdldFRpbWVvdXRSZXF1ZXN0T2JqZWN0cyhib2R5KTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhcbiAgICAgIGBXaWxsIHNlbmQgdGhlIGZvbGxvd2luZyByZXF1ZXN0IGJvZGllcyB0byAvdGltZW91dHM6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHRpbWVvdXRSZXF1ZXN0T2JqZWN0c1xuICAgICAgKX1gXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IHRpbWVvdXRPYmogb2YgdGltZW91dFJlcXVlc3RPYmplY3RzKSB7XG4gICAgICBbcmVzcG9uc2UsIHJlc0JvZHldID0gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIHRpbWVvdXRPYmopO1xuXG4gICAgICAvLyBJZiB3ZSBnb3QgYSBub24tTUpTT05XUCByZXNwb25zZSwgcmV0dXJuIHRoZSByZXN1bHQsIG5vdGhpbmcgbGVmdCB0byBkb1xuICAgICAgaWYgKHRoaXMuZG93bnN0cmVhbVByb3RvY29sICE9PSBNSlNPTldQKSB7XG4gICAgICAgIHJldHVybiBbcmVzcG9uc2UsIHJlc0JvZHldO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB3ZSBnb3QgYW4gZXJyb3IsIHJldHVybiB0aGUgZXJyb3IgcmlnaHQgYXdheVxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPj0gNDAwKSB7XG4gICAgICAgIHJldHVybiBbcmVzcG9uc2UsIHJlc0JvZHldO1xuICAgICAgfVxuXG4gICAgICAvLyAuLi5PdGhlcndpc2UsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IHRpbWVvdXRzIGNhbGxcbiAgICB9XG4gICAgcmV0dXJuIFtyZXNwb25zZSwgcmVzQm9keV07XG4gIH1cblxuICBhc3luYyBwcm94eVNldFdpbmRvdyh1cmwsIG1ldGhvZCwgYm9keSkge1xuICAgIGNvbnN0IGJvZHlPYmogPSB1dGlsLnNhZmVKc29uUGFyc2UoYm9keSk7XG4gICAgaWYgKF8uaXNQbGFpbk9iamVjdChib2R5T2JqKSkge1xuICAgICAgaWYgKHRoaXMuZG93bnN0cmVhbVByb3RvY29sID09PSBXM0MgJiYgXy5oYXMoYm9keU9iaiwgJ25hbWUnKSAmJiAhXy5oYXMoYm9keU9iaiwgJ2hhbmRsZScpKSB7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBDb3BpZWQgJ25hbWUnIHZhbHVlICcke2JvZHlPYmoubmFtZX0nIHRvICdoYW5kbGUnIGFzIHBlciBXM0Mgc3BlY2ApO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIHtcbiAgICAgICAgICAuLi5ib2R5T2JqLFxuICAgICAgICAgIGhhbmRsZTogYm9keU9iai5uYW1lLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5kb3duc3RyZWFtUHJvdG9jb2wgPT09IE1KU09OV1AgJiZcbiAgICAgICAgXy5oYXMoYm9keU9iaiwgJ2hhbmRsZScpICYmXG4gICAgICAgICFfLmhhcyhib2R5T2JqLCAnbmFtZScpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYENvcGllZCAnaGFuZGxlJyB2YWx1ZSAnJHtib2R5T2JqLmhhbmRsZX0nIHRvICduYW1lJyBhcyBwZXIgSlNPTldQIHNwZWNgKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCB7XG4gICAgICAgICAgLi4uYm9keU9iaixcbiAgICAgICAgICBuYW1lOiBib2R5T2JqLmhhbmRsZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5U2V0VmFsdWUodXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBjb25zdCBib2R5T2JqID0gdXRpbC5zYWZlSnNvblBhcnNlKGJvZHkpO1xuICAgIGlmIChfLmlzUGxhaW5PYmplY3QoYm9keU9iaikgJiYgKHV0aWwuaGFzVmFsdWUoYm9keU9iai50ZXh0KSB8fCB1dGlsLmhhc1ZhbHVlKGJvZHlPYmoudmFsdWUpKSkge1xuICAgICAgbGV0IHt0ZXh0LCB2YWx1ZX0gPSBib2R5T2JqO1xuICAgICAgaWYgKHV0aWwuaGFzVmFsdWUodGV4dCkgJiYgIXV0aWwuaGFzVmFsdWUodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gXy5pc1N0cmluZyh0ZXh0KSA/IFsuLi50ZXh0XSA6IF8uaXNBcnJheSh0ZXh0KSA/IHRleHQgOiBbXTtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoXG4gICAgICAgICAgYEFkZGVkICd2YWx1ZScgcHJvcGVydHkgJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9IHRvICdzZXRWYWx1ZScgcmVxdWVzdCBib2R5YFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmICghdXRpbC5oYXNWYWx1ZSh0ZXh0KSAmJiB1dGlsLmhhc1ZhbHVlKHZhbHVlKSkge1xuICAgICAgICB0ZXh0ID0gXy5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLmpvaW4oJycpIDogXy5pc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6ICcnO1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgQWRkZWQgJ3RleHQnIHByb3BlcnR5ICR7SlNPTi5zdHJpbmdpZnkodGV4dCl9IHRvICdzZXRWYWx1ZScgcmVxdWVzdCBib2R5YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUZ1bmMoXG4gICAgICAgIHVybCxcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBib2R5T2JqLCB7XG4gICAgICAgICAgdGV4dCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5U2V0RnJhbWUodXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBjb25zdCBib2R5T2JqID0gdXRpbC5zYWZlSnNvblBhcnNlKGJvZHkpO1xuICAgIHJldHVybiBfLmhhcyhib2R5T2JqLCAnaWQnKSAmJiBfLmlzUGxhaW5PYmplY3QoYm9keU9iai5pZClcbiAgICAgID8gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIHtcbiAgICAgICAgICAuLi5ib2R5T2JqLFxuICAgICAgICAgIGlkOiBkdXBsaWNhdGVLZXlzKGJvZHlPYmouaWQsIE1KU09OV1BfRUxFTUVOVF9LRVksIFczQ19FTEVNRU5UX0tFWSksXG4gICAgICAgIH0pXG4gICAgICA6IGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5UGVyZm9ybUFjdGlvbnModXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBjb25zdCBib2R5T2JqID0gdXRpbC5zYWZlSnNvblBhcnNlKGJvZHkpO1xuICAgIHJldHVybiBfLmlzUGxhaW5PYmplY3QoYm9keU9iailcbiAgICAgID8gYXdhaXQgdGhpcy5wcm94eUZ1bmMoXG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBkdXBsaWNhdGVLZXlzKGJvZHlPYmosIE1KU09OV1BfRUxFTUVOVF9LRVksIFczQ19FTEVNRU5UX0tFWSlcbiAgICAgICAgKVxuICAgICAgOiBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cblxuICBhc3luYyBwcm94eVJlbGVhc2VBY3Rpb25zKHVybCwgbWV0aG9kKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgXCJjcm9zc2luZ1wiIGVuZHBvaW50cyBmb3IgdGhlIGNhc2VcbiAgICogd2hlbiB1cHN0cmVhbSBhbmQgZG93bnN0cmVhbSBkcml2ZXJzIG9wZXJhdGUgZGlmZmVyZW50IHByb3RvY29sc1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29tbWFuZE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kXG4gICAqIEBwYXJhbSB7P3N0cmluZ3xvYmplY3R9IGJvZHlcbiAgICogQHJldHVybnMgVGhlIHByb3h5ZnlpbmcgcmVzdWx0IGFzIFtyZXNwb25zZSwgcmVzcG9uc2VCb2R5XSB0dXBsZVxuICAgKi9cbiAgYXN5bmMgY29udmVydEFuZFByb3h5KGNvbW1hbmROYW1lLCB1cmwsIG1ldGhvZCwgYm9keSkge1xuICAgIGlmICghdGhpcy5kb3duc3RyZWFtUHJvdG9jb2wpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgfVxuXG4gICAgLy8gU2FtZSB1cmwsIGJ1dCBkaWZmZXJlbnQgYXJndW1lbnRzXG4gICAgc3dpdGNoIChjb21tYW5kTmFtZSkge1xuICAgICAgY2FzZSAndGltZW91dHMnOlxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eVNldFRpbWVvdXRzKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICAgIGNhc2UgJ3NldFdpbmRvdyc6XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5U2V0V2luZG93KHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICAgIGNhc2UgJ3NldFZhbHVlJzpcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlTZXRWYWx1ZSh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgICBjYXNlICdwZXJmb3JtQWN0aW9ucyc6XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5UGVyZm9ybUFjdGlvbnModXJsLCBtZXRob2QsIGJvZHkpO1xuICAgICAgY2FzZSAncmVsZWFzZUFjdGlvbnMnOlxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eVJlbGVhc2VBY3Rpb25zKHVybCwgbWV0aG9kKTtcbiAgICAgIGNhc2UgJ3NldEZyYW1lJzpcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlTZXRGcmFtZSh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyBTYW1lIGFyZ3VtZW50cywgYnV0IGRpZmZlcmVudCBVUkxzXG4gICAgZm9yIChjb25zdCB7Y29tbWFuZE5hbWVzLCBqc29ud3BDb252ZXJ0ZXIsIHczY0NvbnZlcnRlcn0gb2YgQ09NTUFORF9VUkxTX0NPTkZMSUNUUykge1xuICAgICAgaWYgKCFjb21tYW5kTmFtZXMuaW5jbHVkZXMoY29tbWFuZE5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXdyaXR0ZW5VcmwgPVxuICAgICAgICB0aGlzLmRvd25zdHJlYW1Qcm90b2NvbCA9PT0gTUpTT05XUCA/IGpzb253cENvbnZlcnRlcih1cmwpIDogdzNjQ29udmVydGVyKHVybCk7XG4gICAgICBpZiAocmV3cml0dGVuVXJsID09PSB1cmwpIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoXG4gICAgICAgICAgYERpZCBub3Qga25vdyBob3cgdG8gcmV3cml0ZSB0aGUgb3JpZ2luYWwgVVJMICcke3VybH0nIGAgK1xuICAgICAgICAgICAgYGZvciAke3RoaXMuZG93bnN0cmVhbVByb3RvY29sfSBwcm90b2NvbGBcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZy5pbmZvKFxuICAgICAgICBgUmV3cm90ZSB0aGUgb3JpZ2luYWwgVVJMICcke3VybH0nIHRvICcke3Jld3JpdHRlblVybH0nIGAgK1xuICAgICAgICAgIGBmb3IgJHt0aGlzLmRvd25zdHJlYW1Qcm90b2NvbH0gcHJvdG9jb2xgXG4gICAgICApO1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHJld3JpdHRlblVybCwgbWV0aG9kLCBib2R5KTtcbiAgICB9XG5cbiAgICAvLyBObyBtYXRjaGVzIGZvdW5kLiBQcm9jZWVkIG5vcm1hbGx5XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcm90b2NvbENvbnZlcnRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFTyxNQUFNQSxzQkFBc0IsR0FBRyxDQUNwQztFQUNFQyxZQUFZLEVBQUUsQ0FBQyxTQUFELEVBQVksY0FBWixDQURoQjtFQUVFQyxlQUFlLEVBQUdDLEdBQUQsSUFDZkEsR0FBRyxDQUFDQyxPQUFKLENBQVksYUFBWixFQUEyQkQsR0FBRyxDQUFDRSxRQUFKLENBQWEsT0FBYixJQUF3QixnQkFBeEIsR0FBMkMsVUFBdEUsQ0FISjtFQUlFQyxZQUFZLEVBQUdILEdBQUQsSUFDWkEsR0FBRyxDQUFDQyxPQUFKLENBQVksYUFBWixFQUEyQkQsR0FBRyxDQUFDRSxRQUFKLENBQWEsT0FBYixJQUF3QixnQkFBeEIsR0FBMkMsZUFBdEU7QUFMSixDQURvQyxFQVFwQztFQUNFSixZQUFZLEVBQUUsQ0FBQyxzQkFBRCxDQURoQjtFQUVFQyxlQUFlLEVBQUdDLEdBQUQsSUFBU0EsR0FBRyxDQUFDQyxPQUFKLENBQVksaUNBQVosRUFBK0MsZ0JBQS9DLENBRjVCO0VBR0VFLFlBQVksRUFBR0gsR0FBRCxJQUFTQSxHQUFHLENBQUNDLE9BQUosQ0FBWSx1QkFBWixFQUFxQyx3QkFBckM7QUFIekIsQ0FSb0MsRUFh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
239
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT01NQU5EX1VSTFNfQ09ORkxJQ1RTIiwiY29tbWFuZE5hbWVzIiwianNvbndwQ29udmVydGVyIiwidXJsIiwicmVwbGFjZSIsImluY2x1ZGVzIiwidzNjQ29udmVydGVyIiwidGVzdCIsInczY1VybCIsInczY1Byb3BlcnR5UmVnZXgiLCJqc29ud3BVcmwiLCJNSlNPTldQIiwiVzNDIiwiUFJPVE9DT0xTIiwiREVGQVVMVF9MT0ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJQcm90b2NvbENvbnZlcnRlciIsImNvbnN0cnVjdG9yIiwicHJveHlGdW5jIiwibG9nIiwiX2Rvd25zdHJlYW1Qcm90b2NvbCIsIl9sb2ciLCJkb3duc3RyZWFtUHJvdG9jb2wiLCJ2YWx1ZSIsImdldFRpbWVvdXRSZXF1ZXN0T2JqZWN0cyIsImJvZHkiLCJfIiwiaGFzIiwidHlwZVRvVzNDIiwieCIsInR5cGUiLCJtcyIsInR5cGVUb0pTT05XUCIsInRvUGFpcnMiLCJmaWx0ZXIiLCJwYWlyIiwibWFwIiwicHJveHlTZXRUaW1lb3V0cyIsIm1ldGhvZCIsInJlc3BvbnNlIiwicmVzQm9keSIsInRpbWVvdXRSZXF1ZXN0T2JqZWN0cyIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsInRpbWVvdXRPYmoiLCJzdGF0dXNDb2RlIiwicHJveHlTZXRXaW5kb3ciLCJib2R5T2JqIiwidXRpbCIsInNhZmVKc29uUGFyc2UiLCJpc1BsYWluT2JqZWN0IiwibmFtZSIsImhhbmRsZSIsInByb3h5U2V0VmFsdWUiLCJoYXNWYWx1ZSIsInRleHQiLCJpc1N0cmluZyIsImlzQXJyYXkiLCJqb2luIiwiT2JqZWN0IiwiYXNzaWduIiwicHJveHlTZXRGcmFtZSIsImlkIiwiZHVwbGljYXRlS2V5cyIsIk1KU09OV1BfRUxFTUVOVF9LRVkiLCJXM0NfRUxFTUVOVF9LRVkiLCJwcm94eVBlcmZvcm1BY3Rpb25zIiwicHJveHlSZWxlYXNlQWN0aW9ucyIsImNvbnZlcnRBbmRQcm94eSIsImNvbW1hbmROYW1lIiwicmV3cml0dGVuVXJsIiwiaW5mbyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9qc29ud3AtcHJveHkvcHJvdG9jb2wtY29udmVydGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge2xvZ2dlciwgdXRpbH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7ZHVwbGljYXRlS2V5c30gZnJvbSAnLi4vYmFzZWRyaXZlci9oZWxwZXJzJztcbmltcG9ydCB7TUpTT05XUF9FTEVNRU5UX0tFWSwgVzNDX0VMRU1FTlRfS0VZLCBQUk9UT0NPTFN9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjb25zdCBDT01NQU5EX1VSTFNfQ09ORkxJQ1RTID0gW1xuICB7XG4gICAgY29tbWFuZE5hbWVzOiBbJ2V4ZWN1dGUnLCAnZXhlY3V0ZUFzeW5jJ10sXG4gICAganNvbndwQ29udmVydGVyOiAodXJsKSA9PlxuICAgICAgdXJsLnJlcGxhY2UoL1xcL2V4ZWN1dGUuKi8sIHVybC5pbmNsdWRlcygnYXN5bmMnKSA/ICcvZXhlY3V0ZV9hc3luYycgOiAnL2V4ZWN1dGUnKSxcbiAgICB3M2NDb252ZXJ0ZXI6ICh1cmwpID0+XG4gICAgICB1cmwucmVwbGFjZSgvXFwvZXhlY3V0ZS4qLywgdXJsLmluY2x1ZGVzKCdhc3luYycpID8gJy9leGVjdXRlL2FzeW5jJyA6ICcvZXhlY3V0ZS9zeW5jJyksXG4gIH0sXG4gIHtcbiAgICBjb21tYW5kTmFtZXM6IFsnZ2V0RWxlbWVudFNjcmVlbnNob3QnXSxcbiAgICBqc29ud3BDb252ZXJ0ZXI6ICh1cmwpID0+IHVybC5yZXBsYWNlKC9cXC9lbGVtZW50XFwvKFteL10rKVxcL3NjcmVlbnNob3QkLywgJy9zY3JlZW5zaG90LyQxJyksXG4gICAgdzNjQ29udmVydGVyOiAodXJsKSA9PiB1cmwucmVwbGFjZSgvXFwvc2NyZWVuc2hvdFxcLyhbXi9dKykvLCAnL2VsZW1lbnQvJDEvc2NyZWVuc2hvdCcpLFxuICB9LFxuICB7XG4gICAgY29tbWFuZE5hbWVzOiBbJ2dldFdpbmRvd0hhbmRsZXMnLCAnZ2V0V2luZG93SGFuZGxlJ10sXG4gICAganNvbndwQ29udmVydGVyKHVybCkge1xuICAgICAgcmV0dXJuIC9cXC93aW5kb3ckLy50ZXN0KHVybClcbiAgICAgICAgPyB1cmwucmVwbGFjZSgvXFwvd2luZG93JC8sICcvd2luZG93X2hhbmRsZScpXG4gICAgICAgIDogdXJsLnJlcGxhY2UoL1xcL3dpbmRvd1xcL2hhbmRsZShzPykkLywgJy93aW5kb3dfaGFuZGxlJDEnKTtcbiAgICB9LFxuICAgIHczY0NvbnZlcnRlcih1cmwpIHtcbiAgICAgIHJldHVybiAvXFwvd2luZG93X2hhbmRsZSQvLnRlc3QodXJsKVxuICAgICAgICA/IHVybC5yZXBsYWNlKC9cXC93aW5kb3dfaGFuZGxlJC8sICcvd2luZG93JylcbiAgICAgICAgOiB1cmwucmVwbGFjZSgvXFwvd2luZG93X2hhbmRsZXMkLywgJy93aW5kb3cvaGFuZGxlcycpO1xuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBjb21tYW5kTmFtZXM6IFsnZ2V0UHJvcGVydHknXSxcbiAgICBqc29ud3BDb252ZXJ0ZXI6ICh3M2NVcmwpID0+IHtcbiAgICAgIGNvbnN0IHczY1Byb3BlcnR5UmVnZXggPSAvXFwvZWxlbWVudFxcLyhbXi9dKylcXC9wcm9wZXJ0eVxcLyhbXi9dKykvO1xuICAgICAgY29uc3QganNvbndwVXJsID0gdzNjVXJsLnJlcGxhY2UodzNjUHJvcGVydHlSZWdleCwgJy9lbGVtZW50LyQxL2F0dHJpYnV0ZS8kMicpO1xuICAgICAgcmV0dXJuIGpzb253cFVybDtcbiAgICB9LFxuICAgIHczY0NvbnZlcnRlcjogKGpzb253cFVybCkgPT4ganNvbndwVXJsLCAvLyBEb24ndCBjb252ZXJ0IEpTT05XUCBVUkwgdG8gVzNDLiBXM0MgYWNjZXB0cyAvYXR0cmlidXRlIGFuZCAvcHJvcGVydHlcbiAgfSxcbl07XG5jb25zdCB7TUpTT05XUCwgVzNDfSA9IFBST1RPQ09MUztcbmNvbnN0IERFRkFVTFRfTE9HID0gbG9nZ2VyLmdldExvZ2dlcignUHJvdG9jb2wgQ29udmVydGVyJyk7XG5cbmNsYXNzIFByb3RvY29sQ29udmVydGVyIHtcbiAgY29uc3RydWN0b3IocHJveHlGdW5jLCBsb2cgPSBudWxsKSB7XG4gICAgdGhpcy5wcm94eUZ1bmMgPSBwcm94eUZ1bmM7XG4gICAgdGhpcy5fZG93bnN0cmVhbVByb3RvY29sID0gbnVsbDtcbiAgICB0aGlzLl9sb2cgPSBsb2c7XG4gIH1cblxuICBnZXQgbG9nKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2cgPz8gREVGQVVMVF9MT0c7XG4gIH1cblxuICBzZXQgZG93bnN0cmVhbVByb3RvY29sKHZhbHVlKSB7XG4gICAgdGhpcy5fZG93bnN0cmVhbVByb3RvY29sID0gdmFsdWU7XG4gIH1cblxuICBnZXQgZG93bnN0cmVhbVByb3RvY29sKCkge1xuICAgIHJldHVybiB0aGlzLl9kb3duc3RyZWFtUHJvdG9jb2w7XG4gIH1cblxuICAvKipcbiAgICogVzNDIC90aW1lb3V0cyBjYW4gdGFrZSBhcyBtYW55IGFzIDMgdGltZW91dCB0eXBlcyBhdCBvbmNlLCBNSlNPTldQIC90aW1lb3V0cyBvbmx5IHRha2VzIG9uZVxuICAgKiBhdCBhIHRpbWUuIFNvIGlmIHdlJ3JlIHVzaW5nIFczQyBhbmQgcHJveHlpbmcgdG8gTUpTT05XUCBhbmQgdGhlcmUncyBtb3JlIHRoYW4gb25lIHRpbWVvdXQgdHlwZVxuICAgKiBwcm92aWRlZCBpbiB0aGUgcmVxdWVzdCwgd2UgbmVlZCB0byBkbyAzIHByb3hpZXMgYW5kIGNvbWJpbmUgdGhlIHJlc3VsdFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gYm9keSBSZXF1ZXN0IGJvZHlcbiAgICogQHJldHVybiB7QXJyYXl9IEFycmF5IG9mIFczQyArIE1KU09OV1AgY29tcGF0aWJsZSB0aW1lb3V0IG9iamVjdHNcbiAgICovXG4gIGdldFRpbWVvdXRSZXF1ZXN0T2JqZWN0cyhib2R5KSB7XG4gICAgaWYgKHRoaXMuZG93bnN0cmVhbVByb3RvY29sID09PSBXM0MgJiYgXy5oYXMoYm9keSwgJ21zJykgJiYgXy5oYXMoYm9keSwgJ3R5cGUnKSkge1xuICAgICAgY29uc3QgdHlwZVRvVzNDID0gKHgpID0+ICh4ID09PSAncGFnZSBsb2FkJyA/ICdwYWdlTG9hZCcgOiB4KTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBbdHlwZVRvVzNDKGJvZHkudHlwZSldOiBib2R5Lm1zLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kb3duc3RyZWFtUHJvdG9jb2wgPT09IE1KU09OV1AgJiYgKCFfLmhhcyhib2R5LCAnbXMnKSB8fCAhXy5oYXMoYm9keSwgJ3R5cGUnKSkpIHtcbiAgICAgIGNvbnN0IHR5cGVUb0pTT05XUCA9ICh4KSA9PiAoeCA9PT0gJ3BhZ2VMb2FkJyA/ICdwYWdlIGxvYWQnIDogeCk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBfLnRvUGFpcnMoYm9keSlcbiAgICAgICAgICAvLyBPbmx5IHRyYW5zZm9ybSB0aGUgZW50cnkgaWYgbXMgdmFsdWUgaXMgYSB2YWxpZCBwb3NpdGl2ZSBmbG9hdCBudW1iZXJcbiAgICAgICAgICAuZmlsdGVyKChwYWlyKSA9PiAvXlxcZCsoPzpbLixdXFxkKj8pPyQvLnRlc3QoYCR7cGFpclsxXX1gKSlcbiAgICAgICAgICAubWFwKGZ1bmN0aW9uIChwYWlyKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0eXBlOiB0eXBlVG9KU09OV1AocGFpclswXSksXG4gICAgICAgICAgICAgIG1zOiBwYWlyWzFdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW2JvZHldO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3h5IGFuIGFycmF5IG9mIHRpbWVvdXQgb2JqZWN0cyBhbmQgbWVyZ2UgdGhlIHJlc3VsdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIEVuZHBvaW50IHVybFxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWV0aG9kIEVuZHBvaW50IG1ldGhvZFxuICAgKiBAcGFyYW0ge09iamVjdH0gYm9keSBSZXF1ZXN0IGJvZHlcbiAgICovXG4gIGFzeW5jIHByb3h5U2V0VGltZW91dHModXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBsZXQgcmVzcG9uc2UsIHJlc0JvZHk7XG5cbiAgICBjb25zdCB0aW1lb3V0UmVxdWVzdE9iamVjdHMgPSB0aGlzLmdldFRpbWVvdXRSZXF1ZXN0T2JqZWN0cyhib2R5KTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhcbiAgICAgIGBXaWxsIHNlbmQgdGhlIGZvbGxvd2luZyByZXF1ZXN0IGJvZGllcyB0byAvdGltZW91dHM6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHRpbWVvdXRSZXF1ZXN0T2JqZWN0c1xuICAgICAgKX1gXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IHRpbWVvdXRPYmogb2YgdGltZW91dFJlcXVlc3RPYmplY3RzKSB7XG4gICAgICBbcmVzcG9uc2UsIHJlc0JvZHldID0gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIHRpbWVvdXRPYmopO1xuXG4gICAgICAvLyBJZiB3ZSBnb3QgYSBub24tTUpTT05XUCByZXNwb25zZSwgcmV0dXJuIHRoZSByZXN1bHQsIG5vdGhpbmcgbGVmdCB0byBkb1xuICAgICAgaWYgKHRoaXMuZG93bnN0cmVhbVByb3RvY29sICE9PSBNSlNPTldQKSB7XG4gICAgICAgIHJldHVybiBbcmVzcG9uc2UsIHJlc0JvZHldO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB3ZSBnb3QgYW4gZXJyb3IsIHJldHVybiB0aGUgZXJyb3IgcmlnaHQgYXdheVxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPj0gNDAwKSB7XG4gICAgICAgIHJldHVybiBbcmVzcG9uc2UsIHJlc0JvZHldO1xuICAgICAgfVxuXG4gICAgICAvLyAuLi5PdGhlcndpc2UsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IHRpbWVvdXRzIGNhbGxcbiAgICB9XG4gICAgcmV0dXJuIFtyZXNwb25zZSwgcmVzQm9keV07XG4gIH1cblxuICBhc3luYyBwcm94eVNldFdpbmRvdyh1cmwsIG1ldGhvZCwgYm9keSkge1xuICAgIGNvbnN0IGJvZHlPYmogPSB1dGlsLnNhZmVKc29uUGFyc2UoYm9keSk7XG4gICAgaWYgKF8uaXNQbGFpbk9iamVjdChib2R5T2JqKSkge1xuICAgICAgaWYgKHRoaXMuZG93bnN0cmVhbVByb3RvY29sID09PSBXM0MgJiYgXy5oYXMoYm9keU9iaiwgJ25hbWUnKSAmJiAhXy5oYXMoYm9keU9iaiwgJ2hhbmRsZScpKSB7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBDb3BpZWQgJ25hbWUnIHZhbHVlICcke2JvZHlPYmoubmFtZX0nIHRvICdoYW5kbGUnIGFzIHBlciBXM0Mgc3BlY2ApO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIHtcbiAgICAgICAgICAuLi5ib2R5T2JqLFxuICAgICAgICAgIGhhbmRsZTogYm9keU9iai5uYW1lLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5kb3duc3RyZWFtUHJvdG9jb2wgPT09IE1KU09OV1AgJiZcbiAgICAgICAgXy5oYXMoYm9keU9iaiwgJ2hhbmRsZScpICYmXG4gICAgICAgICFfLmhhcyhib2R5T2JqLCAnbmFtZScpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYENvcGllZCAnaGFuZGxlJyB2YWx1ZSAnJHtib2R5T2JqLmhhbmRsZX0nIHRvICduYW1lJyBhcyBwZXIgSlNPTldQIHNwZWNgKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCB7XG4gICAgICAgICAgLi4uYm9keU9iaixcbiAgICAgICAgICBuYW1lOiBib2R5T2JqLmhhbmRsZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5U2V0VmFsdWUodXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBjb25zdCBib2R5T2JqID0gdXRpbC5zYWZlSnNvblBhcnNlKGJvZHkpO1xuICAgIGlmIChfLmlzUGxhaW5PYmplY3QoYm9keU9iaikgJiYgKHV0aWwuaGFzVmFsdWUoYm9keU9iai50ZXh0KSB8fCB1dGlsLmhhc1ZhbHVlKGJvZHlPYmoudmFsdWUpKSkge1xuICAgICAgbGV0IHt0ZXh0LCB2YWx1ZX0gPSBib2R5T2JqO1xuICAgICAgaWYgKHV0aWwuaGFzVmFsdWUodGV4dCkgJiYgIXV0aWwuaGFzVmFsdWUodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gXy5pc1N0cmluZyh0ZXh0KSA/IFsuLi50ZXh0XSA6IF8uaXNBcnJheSh0ZXh0KSA/IHRleHQgOiBbXTtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoXG4gICAgICAgICAgYEFkZGVkICd2YWx1ZScgcHJvcGVydHkgJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9IHRvICdzZXRWYWx1ZScgcmVxdWVzdCBib2R5YFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmICghdXRpbC5oYXNWYWx1ZSh0ZXh0KSAmJiB1dGlsLmhhc1ZhbHVlKHZhbHVlKSkge1xuICAgICAgICB0ZXh0ID0gXy5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLmpvaW4oJycpIDogXy5pc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6ICcnO1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgQWRkZWQgJ3RleHQnIHByb3BlcnR5ICR7SlNPTi5zdHJpbmdpZnkodGV4dCl9IHRvICdzZXRWYWx1ZScgcmVxdWVzdCBib2R5YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUZ1bmMoXG4gICAgICAgIHVybCxcbiAgICAgICAgbWV0aG9kLFxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBib2R5T2JqLCB7XG4gICAgICAgICAgdGV4dCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5U2V0RnJhbWUodXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBjb25zdCBib2R5T2JqID0gdXRpbC5zYWZlSnNvblBhcnNlKGJvZHkpO1xuICAgIHJldHVybiBfLmhhcyhib2R5T2JqLCAnaWQnKSAmJiBfLmlzUGxhaW5PYmplY3QoYm9keU9iai5pZClcbiAgICAgID8gYXdhaXQgdGhpcy5wcm94eUZ1bmModXJsLCBtZXRob2QsIHtcbiAgICAgICAgICAuLi5ib2R5T2JqLFxuICAgICAgICAgIGlkOiBkdXBsaWNhdGVLZXlzKGJvZHlPYmouaWQsIE1KU09OV1BfRUxFTUVOVF9LRVksIFczQ19FTEVNRU5UX0tFWSksXG4gICAgICAgIH0pXG4gICAgICA6IGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5UGVyZm9ybUFjdGlvbnModXJsLCBtZXRob2QsIGJvZHkpIHtcbiAgICBjb25zdCBib2R5T2JqID0gdXRpbC5zYWZlSnNvblBhcnNlKGJvZHkpO1xuICAgIHJldHVybiBfLmlzUGxhaW5PYmplY3QoYm9keU9iailcbiAgICAgID8gYXdhaXQgdGhpcy5wcm94eUZ1bmMoXG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBkdXBsaWNhdGVLZXlzKGJvZHlPYmosIE1KU09OV1BfRUxFTUVOVF9LRVksIFczQ19FTEVNRU5UX0tFWSlcbiAgICAgICAgKVxuICAgICAgOiBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cblxuICBhc3luYyBwcm94eVJlbGVhc2VBY3Rpb25zKHVybCwgbWV0aG9kKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgXCJjcm9zc2luZ1wiIGVuZHBvaW50cyBmb3IgdGhlIGNhc2VcbiAgICogd2hlbiB1cHN0cmVhbSBhbmQgZG93bnN0cmVhbSBkcml2ZXJzIG9wZXJhdGUgZGlmZmVyZW50IHByb3RvY29sc1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29tbWFuZE5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kXG4gICAqIEBwYXJhbSB7P3N0cmluZ3xvYmplY3R9IGJvZHlcbiAgICogQHJldHVybnMgVGhlIHByb3h5ZnlpbmcgcmVzdWx0IGFzIFtyZXNwb25zZSwgcmVzcG9uc2VCb2R5XSB0dXBsZVxuICAgKi9cbiAgYXN5bmMgY29udmVydEFuZFByb3h5KGNvbW1hbmROYW1lLCB1cmwsIG1ldGhvZCwgYm9keSkge1xuICAgIGlmICghdGhpcy5kb3duc3RyZWFtUHJvdG9jb2wpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5RnVuYyh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgfVxuXG4gICAgLy8gU2FtZSB1cmwsIGJ1dCBkaWZmZXJlbnQgYXJndW1lbnRzXG4gICAgc3dpdGNoIChjb21tYW5kTmFtZSkge1xuICAgICAgY2FzZSAndGltZW91dHMnOlxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eVNldFRpbWVvdXRzKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICAgIGNhc2UgJ3NldFdpbmRvdyc6XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5U2V0V2luZG93KHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICAgIGNhc2UgJ3NldFZhbHVlJzpcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlTZXRWYWx1ZSh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgICBjYXNlICdwZXJmb3JtQWN0aW9ucyc6XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5UGVyZm9ybUFjdGlvbnModXJsLCBtZXRob2QsIGJvZHkpO1xuICAgICAgY2FzZSAncmVsZWFzZUFjdGlvbnMnOlxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eVJlbGVhc2VBY3Rpb25zKHVybCwgbWV0aG9kKTtcbiAgICAgIGNhc2UgJ3NldEZyYW1lJzpcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlTZXRGcmFtZSh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyBTYW1lIGFyZ3VtZW50cywgYnV0IGRpZmZlcmVudCBVUkxzXG4gICAgZm9yIChjb25zdCB7Y29tbWFuZE5hbWVzLCBqc29ud3BDb252ZXJ0ZXIsIHczY0NvbnZlcnRlcn0gb2YgQ09NTUFORF9VUkxTX0NPTkZMSUNUUykge1xuICAgICAgaWYgKCFjb21tYW5kTmFtZXMuaW5jbHVkZXMoY29tbWFuZE5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXdyaXR0ZW5VcmwgPVxuICAgICAgICB0aGlzLmRvd25zdHJlYW1Qcm90b2NvbCA9PT0gTUpTT05XUCA/IGpzb253cENvbnZlcnRlcih1cmwpIDogdzNjQ29udmVydGVyKHVybCk7XG4gICAgICBpZiAocmV3cml0dGVuVXJsID09PSB1cmwpIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoXG4gICAgICAgICAgYERpZCBub3Qga25vdyBob3cgdG8gcmV3cml0ZSB0aGUgb3JpZ2luYWwgVVJMICcke3VybH0nIGAgK1xuICAgICAgICAgICAgYGZvciAke3RoaXMuZG93bnN0cmVhbVByb3RvY29sfSBwcm90b2NvbGBcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZy5pbmZvKFxuICAgICAgICBgUmV3cm90ZSB0aGUgb3JpZ2luYWwgVVJMICcke3VybH0nIHRvICcke3Jld3JpdHRlblVybH0nIGAgK1xuICAgICAgICAgIGBmb3IgJHt0aGlzLmRvd25zdHJlYW1Qcm90b2NvbH0gcHJvdG9jb2xgXG4gICAgICApO1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHJld3JpdHRlblVybCwgbWV0aG9kLCBib2R5KTtcbiAgICB9XG5cbiAgICAvLyBObyBtYXRjaGVzIGZvdW5kLiBQcm9jZWVkIG5vcm1hbGx5XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlGdW5jKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcm90b2NvbENvbnZlcnRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFTyxNQUFNQSxzQkFBc0IsR0FBRyxDQUNwQztFQUNFQyxZQUFZLEVBQUUsQ0FBQyxTQUFELEVBQVksY0FBWixDQURoQjtFQUVFQyxlQUFlLEVBQUdDLEdBQUQsSUFDZkEsR0FBRyxDQUFDQyxPQUFKLENBQVksYUFBWixFQUEyQkQsR0FBRyxDQUFDRSxRQUFKLENBQWEsT0FBYixJQUF3QixnQkFBeEIsR0FBMkMsVUFBdEUsQ0FISjtFQUlFQyxZQUFZLEVBQUdILEdBQUQsSUFDWkEsR0FBRyxDQUFDQyxPQUFKLENBQVksYUFBWixFQUEyQkQsR0FBRyxDQUFDRSxRQUFKLENBQWEsT0FBYixJQUF3QixnQkFBeEIsR0FBMkMsZUFBdEU7QUFMSixDQURvQyxFQVFwQztFQUNFSixZQUFZLEVBQUUsQ0FBQyxzQkFBRCxDQURoQjtFQUVFQyxlQUFlLEVBQUdDLEdBQUQsSUFBU0EsR0FBRyxDQUFDQyxPQUFKLENBQVksaUNBQVosRUFBK0MsZ0JBQS9DLENBRjVCO0VBR0VFLFlBQVksRUFBR0gsR0FBRCxJQUFTQSxHQUFHLENBQUNDLE9BQUosQ0FBWSx1QkFBWixFQUFxQyx3QkFBckM7QUFIekIsQ0FSb0MsRUFh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
@@ -51,8 +51,6 @@ class JWProxy {
51
51
  timeout;
52
52
 
53
53
  constructor(opts = {}) {
54
- var _opts$keepAlive;
55
-
56
54
  opts = _lodash.default.pick(opts, ALLOWED_OPTS);
57
55
 
58
56
  const options = _lodash.default.defaults(_lodash.default.omit(opts, 'log'), {
@@ -70,7 +68,7 @@ class JWProxy {
70
68
  this._activeRequests = [];
71
69
  this._downstreamProtocol = null;
72
70
  const agentOpts = {
73
- keepAlive: (_opts$keepAlive = opts.keepAlive) !== null && _opts$keepAlive !== void 0 ? _opts$keepAlive : true,
71
+ keepAlive: opts.keepAlive ?? true,
74
72
  maxSockets: 10,
75
73
  maxFreeSockets: 5
76
74
  };
@@ -81,9 +79,7 @@ class JWProxy {
81
79
  }
82
80
 
83
81
  get log() {
84
- var _this$_log;
85
-
86
- return (_this$_log = this._log) !== null && _this$_log !== void 0 ? _this$_log : DEFAULT_LOG;
82
+ return this._log ?? DEFAULT_LOG;
87
83
  }
88
84
 
89
85
  async request(requestConfig) {
@@ -420,4 +416,4 @@ class JWProxy {
420
416
  exports.JWProxy = JWProxy;
421
417
  var _default = JWProxy;
422
418
  exports.default = _default;
423
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX0xPRyIsImxvZ2dlciIsImdldExvZ2dlciIsIkRFRkFVTFRfUkVRVUVTVF9USU1FT1VUIiwiQ09NUEFDVF9FUlJPUl9QQVRURVJOUyIsIk1KU09OV1AiLCJXM0MiLCJQUk9UT0NPTFMiLCJBTExPV0VEX09QVFMiLCJKV1Byb3h5Iiwic2NoZW1lIiwic2VydmVyIiwicG9ydCIsImJhc2UiLCJyZXFCYXNlUGF0aCIsInNlc3Npb25JZCIsInRpbWVvdXQiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJfIiwicGljayIsIm9wdGlvbnMiLCJkZWZhdWx0cyIsIm9taXQiLCJERUZBVUxUX0JBU0VfUEFUSCIsInRvTG93ZXJDYXNlIiwiT2JqZWN0IiwiYXNzaWduIiwiX2FjdGl2ZVJlcXVlc3RzIiwiX2Rvd25zdHJlYW1Qcm90b2NvbCIsImFnZW50T3B0cyIsImtlZXBBbGl2ZSIsIm1heFNvY2tldHMiLCJtYXhGcmVlU29ja2V0cyIsImh0dHBBZ2VudCIsImh0dHAiLCJBZ2VudCIsImh0dHBzQWdlbnQiLCJodHRwcyIsInByb3RvY29sQ29udmVydGVyIiwiUHJvdG9jb2xDb252ZXJ0ZXIiLCJwcm94eSIsImJpbmQiLCJsb2ciLCJfbG9nIiwicmVxdWVzdCIsInJlcXVlc3RDb25maWciLCJyZXFQcm9taXNlIiwiYXhpb3MiLCJwdXNoIiwicHVsbCIsImdldEFjdGl2ZVJlcXVlc3RzQ291bnQiLCJsZW5ndGgiLCJjYW5jZWxBY3RpdmVSZXF1ZXN0cyIsImVuZHBvaW50UmVxdWlyZXNTZXNzaW9uSWQiLCJlbmRwb2ludCIsImluY2x1ZGVzIiwiZG93bnN0cmVhbVByb3RvY29sIiwidmFsdWUiLCJnZXRVcmxGb3JQcm94eSIsInVybCIsInByb3h5QmFzZSIsImVuZHBvaW50UmUiLCJyZW1haW5pbmdVcmwiLCJ0ZXN0IiwiZmlyc3QiLCJSZWdFeHAiLCJleGVjIiwiRXJyb3IiLCJyZXBsYWNlIiwic3RyaXBQcmVmaXhSZSIsInJlcXVpcmVzU2Vzc2lvbklkIiwic2Vzc2lvbkJhc2VSZSIsIlJlZmVyZW5jZUVycm9yIiwibWF0Y2giLCJtZXRob2QiLCJib2R5IiwidG9VcHBlckNhc2UiLCJuZXdVcmwiLCJ0cnVuY2F0ZUJvZHkiLCJjb250ZW50IiwidHJ1bmNhdGUiLCJpc1N0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJNQVhfTE9HX0JPRFlfTEVOR1RIIiwicmVxT3B0cyIsImhlYWRlcnMiLCJhY2NlcHQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJkYXRhIiwicGFyc2UiLCJlIiwiZGVidWciLCJ0aHJvd1Byb3h5RXJyb3IiLCJlcnJvciIsImVyciIsInJlc3BvbnNlIiwic3RhdHVzIiwiaXNSZXNwb25zZUxvZ2dlZCIsImlzUGxhaW5PYmplY3QiLCJpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QiLCJnZXRQcm90b2NvbEZyb21SZXNCb2R5IiwiaW5mbyIsImhhcyIsInBhcnNlSW50IiwicmVzIiwic3RhdHVzQ29kZSIsInByb3h5RXJyb3JNc2ciLCJtZXNzYWdlIiwic29tZSIsInAiLCJzdGFjayIsImVycm9ycyIsIlByb3h5UmVxdWVzdEVycm9yIiwicmVzT2JqIiwiaXNJbnRlZ2VyIiwiaXNVbmRlZmluZWQiLCJyZXF1ZXN0VG9Db21tYW5kTmFtZSIsImV4dHJhY3RDb21tYW5kTmFtZSIsInBhdHRlcm4iLCJwYXRoTWF0Y2giLCJyb3V0ZVRvQ29tbWFuZE5hbWUiLCJjb21tYW5kTmFtZSIsImVzY2FwZVJlZ0V4cCIsInByb3h5Q29tbWFuZCIsImNvbnZlcnRBbmRQcm94eSIsImNvbW1hbmQiLCJyZXNCb2R5T2JqIiwiaXNFcnJvclR5cGUiLCJnZXRBY3R1YWxFcnJvciIsIlVua25vd25FcnJvciIsInByb3RvY29sIiwiaXNOYU4iLCJlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZSIsImlzRW1wdHkiLCJnZXRTdW1tYXJ5QnlDb2RlIiwiZXJyb3JGcm9tVzNDSnNvbkNvZGUiLCJzdGFja3RyYWNlIiwiZ2V0U2Vzc2lvbklkRnJvbVVybCIsInByb3h5UmVxUmVzIiwicmVxIiwib3JpZ2luYWxVcmwiLCJnZXRSZXNwb25zZUZvclczQ0Vycm9yIiwic2V0IiwicmVxU2Vzc2lvbklkIiwiZm9ybWF0UmVzcG9uc2VWYWx1ZSIsInNlbmQiLCJmb3JtYXRTdGF0dXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvanNvbndwLXByb3h5L3Byb3h5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge2xvZ2dlciwgdXRpbH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQge2dldFN1bW1hcnlCeUNvZGV9IGZyb20gJy4uL2pzb253cC1zdGF0dXMvc3RhdHVzJztcbmltcG9ydCB7XG4gIGVycm9ycyxcbiAgaXNFcnJvclR5cGUsXG4gIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlLFxuICBlcnJvckZyb21XM0NKc29uQ29kZSxcbiAgZ2V0UmVzcG9uc2VGb3JXM0NFcnJvcixcbn0gZnJvbSAnLi4vcHJvdG9jb2wvZXJyb3JzJztcbmltcG9ydCB7cm91dGVUb0NvbW1hbmROYW1lfSBmcm9tICcuLi9wcm90b2NvbCc7XG5pbXBvcnQge01BWF9MT0dfQk9EWV9MRU5HVEgsIERFRkFVTFRfQkFTRV9QQVRILCBQUk9UT0NPTFN9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgUHJvdG9jb2xDb252ZXJ0ZXIgZnJvbSAnLi9wcm90b2NvbC1jb252ZXJ0ZXInO1xuaW1wb3J0IHtmb3JtYXRSZXNwb25zZVZhbHVlLCBmb3JtYXRTdGF0dXN9IGZyb20gJy4uL3Byb3RvY29sL2hlbHBlcnMnO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuXG5jb25zdCBERUZBVUxUX0xPRyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1dEIFByb3h5Jyk7XG5jb25zdCBERUZBVUxUX1JFUVVFU1RfVElNRU9VVCA9IDI0MDAwMDtcbmNvbnN0IENPTVBBQ1RfRVJST1JfUEFUVEVSTlMgPSBbL1xcYkVDT05OUkVGVVNFRFxcYi8sIC9zb2NrZXQgaGFuZyB1cC9dO1xuXG5jb25zdCB7TUpTT05XUCwgVzNDfSA9IFBST1RPQ09MUztcblxuY29uc3QgQUxMT1dFRF9PUFRTID0gW1xuICAnc2NoZW1lJyxcbiAgJ3NlcnZlcicsXG4gICdwb3J0JyxcbiAgJ2Jhc2UnLFxuICAncmVxQmFzZVBhdGgnLFxuICAnc2Vzc2lvbklkJyxcbiAgJ3RpbWVvdXQnLFxuICAnbG9nJyxcbiAgJ2tlZXBBbGl2ZScsXG5dO1xuXG5jbGFzcyBKV1Byb3h5IHtcbiAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gIHNjaGVtZTtcbiAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gIHNlcnZlcjtcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIHBvcnQ7XG4gIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICBiYXNlO1xuICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgcmVxQmFzZVBhdGg7XG4gIC8qKiBAdHlwZSB7c3RyaW5nP30gKi9cbiAgc2Vzc2lvbklkO1xuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgdGltZW91dDtcblxuICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICBvcHRzID0gXy5waWNrKG9wdHMsIEFMTE9XRURfT1BUUyk7XG5cbiAgICAvLyBvbWl0ICdsb2cnIGluIHRoZSBkZWZhdWx0cyBhc3NpZ25tZW50IGhlcmUgYmVjYXVzZSAnbG9nJyBpcyBhIGdldHRlciBhbmQgd2UgYXJlIGdvaW5nIHRvIHNldFxuICAgIC8vIGl0IHRvIHRoaXMuX2xvZyAod2hpY2ggbGllcyBiZWhpbmQgdGhlIGdldHRlcikgZnVydGhlciBkb3duXG4gICAgY29uc3Qgb3B0aW9ucyA9IF8uZGVmYXVsdHMoXy5vbWl0KG9wdHMsICdsb2cnKSwge1xuICAgICAgc2NoZW1lOiAnaHR0cCcsXG4gICAgICBzZXJ2ZXI6ICdsb2NhbGhvc3QnLFxuICAgICAgcG9ydDogNDQ0NCxcbiAgICAgIGJhc2U6IERFRkFVTFRfQkFTRV9QQVRILFxuICAgICAgcmVxQmFzZVBhdGg6IERFRkFVTFRfQkFTRV9QQVRILFxuICAgICAgc2Vzc2lvbklkOiBudWxsLFxuICAgICAgdGltZW91dDogREVGQVVMVF9SRVFVRVNUX1RJTUVPVVQsXG4gICAgfSk7XG4gICAgb3B0aW9ucy5zY2hlbWUgPSBvcHRpb25zLnNjaGVtZS50b0xvd2VyQ2FzZSgpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgb3B0aW9ucyk7XG5cbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cyA9IFtdO1xuICAgIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbCA9IG51bGw7XG4gICAgY29uc3QgYWdlbnRPcHRzID0ge1xuICAgICAga2VlcEFsaXZlOiBvcHRzLmtlZXBBbGl2ZSA/PyB0cnVlLFxuICAgICAgbWF4U29ja2V0czogMTAsXG4gICAgICBtYXhGcmVlU29ja2V0czogNSxcbiAgICB9O1xuICAgIHRoaXMuaHR0cEFnZW50ID0gbmV3IGh0dHAuQWdlbnQoYWdlbnRPcHRzKTtcbiAgICB0aGlzLmh0dHBzQWdlbnQgPSBuZXcgaHR0cHMuQWdlbnQoYWdlbnRPcHRzKTtcbiAgICB0aGlzLnByb3RvY29sQ29udmVydGVyID0gbmV3IFByb3RvY29sQ29udmVydGVyKHRoaXMucHJveHkuYmluZCh0aGlzKSwgb3B0cy5sb2cpO1xuICAgIHRoaXMuX2xvZyA9IG9wdHMubG9nO1xuICB9XG5cbiAgZ2V0IGxvZygpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9nID8/IERFRkFVTFRfTE9HO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIHJlcXVlc3RzIHRvIHRoZSBkb3duc3RyZWFtIHNlcnZlclxuICAgKlxuICAgKiBAcHJpdmF0ZSAtIERvIG5vdCBjYWxsIHRoaXMgbWV0aG9kIGRpcmVjdGx5LFxuICAgKiBpdCB1c2VzIGNsaWVudC1zcGVjaWZpYyBhcmd1bWVudHMgYW5kIHJlc3BvbnNlcyFcbiAgICpcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2F4aW9zJykuQXhpb3NSZXF1ZXN0Q29uZmlnfSByZXF1ZXN0Q29uZmlnXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydCgnYXhpb3MnKS5BeGlvc1Jlc3BvbnNlPn1cbiAgICovXG4gIGFzeW5jIHJlcXVlc3QocmVxdWVzdENvbmZpZykge1xuICAgIGNvbnN0IHJlcVByb21pc2UgPSBheGlvcyhyZXF1ZXN0Q29uZmlnKTtcbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cy5wdXNoKHJlcVByb21pc2UpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVxUHJvbWlzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgXy5wdWxsKHRoaXMuX2FjdGl2ZVJlcXVlc3RzLCByZXFQcm9taXNlKTtcbiAgICB9XG4gIH1cblxuICBnZXRBY3RpdmVSZXF1ZXN0c0NvdW50KCkge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVSZXF1ZXN0cy5sZW5ndGg7XG4gIH1cblxuICBjYW5jZWxBY3RpdmVSZXF1ZXN0cygpIHtcbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cyA9IFtdO1xuICB9XG5cbiAgZW5kcG9pbnRSZXF1aXJlc1Nlc3Npb25JZChlbmRwb2ludCkge1xuICAgIHJldHVybiAhXy5pbmNsdWRlcyhbJy9zZXNzaW9uJywgJy9zZXNzaW9ucycsICcvc3RhdHVzJ10sIGVuZHBvaW50KTtcbiAgfVxuXG4gIHNldCBkb3duc3RyZWFtUHJvdG9jb2wodmFsdWUpIHtcbiAgICB0aGlzLl9kb3duc3RyZWFtUHJvdG9jb2wgPSB2YWx1ZTtcbiAgICB0aGlzLnByb3RvY29sQ29udmVydGVyLmRvd25zdHJlYW1Qcm90b2NvbCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGRvd25zdHJlYW1Qcm90b2NvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZG93bnN0cmVhbVByb3RvY29sO1xuICB9XG5cbiAgZ2V0VXJsRm9yUHJveHkodXJsKSB7XG4gICAgaWYgKHVybCA9PT0gJycpIHtcbiAgICAgIHVybCA9ICcvJztcbiAgICB9XG4gICAgY29uc3QgcHJveHlCYXNlID0gYCR7dGhpcy5zY2hlbWV9Oi8vJHt0aGlzLnNlcnZlcn06JHt0aGlzLnBvcnR9JHt0aGlzLmJhc2V9YDtcbiAgICBjb25zdCBlbmRwb2ludFJlID0gJygvKHNlc3Npb258c3RhdHVzKSknO1xuICAgIGxldCByZW1haW5pbmdVcmwgPSAnJztcbiAgICBpZiAoL15odHRwLy50ZXN0KHVybCkpIHtcbiAgICAgIGNvbnN0IGZpcnN0ID0gbmV3IFJlZ0V4cChgKGh0dHBzPzovLy4rKSR7ZW5kcG9pbnRSZX1gKS5leGVjKHVybCk7XG4gICAgICBpZiAoIWZpcnN0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignR290IGEgY29tcGxldGUgdXJsIGJ1dCBjb3VsZCBub3QgZXh0cmFjdCBKV1AgZW5kcG9pbnQnKTtcbiAgICAgIH1cbiAgICAgIHJlbWFpbmluZ1VybCA9IHVybC5yZXBsYWNlKGZpcnN0WzFdLCAnJyk7XG4gICAgfSBlbHNlIGlmIChuZXcgUmVnRXhwKCdeLycpLnRlc3QodXJsKSkge1xuICAgICAgcmVtYWluaW5nVXJsID0gdXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpZCBub3Qga25vdyB3aGF0IHRvIGRvIHdpdGggdXJsICcke3VybH0nYCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RyaXBQcmVmaXhSZSA9IG5ldyBSZWdFeHAoJ14uKj8oLyhzZXNzaW9ufHN0YXR1cykuKikkJyk7XG4gICAgaWYgKHN0cmlwUHJlZml4UmUudGVzdChyZW1haW5pbmdVcmwpKSB7XG4gICAgICByZW1haW5pbmdVcmwgPSAvKiogQHR5cGUge1JlZ0V4cEV4ZWNBcnJheX0gKi8gKHN0cmlwUHJlZml4UmUuZXhlYyhyZW1haW5pbmdVcmwpKVsxXTtcbiAgICB9XG5cbiAgICBpZiAoIW5ldyBSZWdFeHAoZW5kcG9pbnRSZSkudGVzdChyZW1haW5pbmdVcmwpKSB7XG4gICAgICByZW1haW5pbmdVcmwgPSBgL3Nlc3Npb24vJHt0aGlzLnNlc3Npb25JZH0ke3JlbWFpbmluZ1VybH1gO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVpcmVzU2Vzc2lvbklkID0gdGhpcy5lbmRwb2ludFJlcXVpcmVzU2Vzc2lvbklkKHJlbWFpbmluZ1VybCk7XG5cbiAgICBpZiAocmVxdWlyZXNTZXNzaW9uSWQgJiYgdGhpcy5zZXNzaW9uSWQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHJ5aW5nIHRvIHByb3h5IGEgc2Vzc2lvbiBjb21tYW5kIHdpdGhvdXQgc2Vzc2lvbiBpZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlc3Npb25CYXNlUmUgPSBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vKFteL10rKScpO1xuICAgIGlmIChzZXNzaW9uQmFzZVJlLnRlc3QocmVtYWluaW5nVXJsKSkge1xuICAgICAgaWYgKHRoaXMuc2Vzc2lvbklkID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcbiAgICAgICAgICBgU2Vzc2lvbiBJRCBpcyBub3Qgc2V0LCBidXQgc2F3IGEgVVJMIHBhdGggcmVmZXJlbmNpbmcgYSBzZXNzaW9uICgke3JlbWFpbmluZ1VybH0pLiBUaGlzIG1heSBiZSBhIGJ1ZyBpbiB5b3VyIGNsaWVudC5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICAvLyB3ZSBoYXZlIHNvbWV0aGluZyBsaWtlIC9zZXNzaW9uLzppZC9mb29iYXIsIHNvIHdlIG5lZWQgdG8gcmVwbGFjZVxuICAgICAgLy8gdGhlIHNlc3Npb24gaWRcbiAgICAgIGNvbnN0IG1hdGNoID0gc2Vzc2lvbkJhc2VSZS5leGVjKHJlbWFpbmluZ1VybCk7XG4gICAgICAvLyBUT0RPOiBpZiBgcmVxdWlyZXNTZXNzaW9uSWRgIGlzIGBmYWxzZWAgYW5kIGBzZXNzaW9uSWRgIGlzIGBudWxsYCwgdGhpcyBpcyBhIGJ1Zy5cbiAgICAgIC8vIGFyZSB3ZSBzdXJlIGBzZXNzaW9uSWRgIGlzIG5vdCBgbnVsbGA/XG4gICAgICByZW1haW5pbmdVcmwgPSByZW1haW5pbmdVcmwucmVwbGFjZShcbiAgICAgICAgLyoqIEB0eXBlIHtSZWdFeHBFeGVjQXJyYXl9ICovIChtYXRjaClbMV0sXG4gICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAodGhpcy5zZXNzaW9uSWQpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAocmVxdWlyZXNTZXNzaW9uSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgOnNlc3Npb24gc2VjdGlvbiBmb3IgdXJsOiAke3JlbWFpbmluZ1VybH1gKTtcbiAgICB9XG4gICAgcmVtYWluaW5nVXJsID0gcmVtYWluaW5nVXJsLnJlcGxhY2UoL1xcLyQvLCAnJyk7IC8vIGNhbid0IGhhdmUgdHJhaWxpbmcgc2xhc2hlc1xuXG4gICAgcmV0dXJuIHByb3h5QmFzZSArIHJlbWFpbmluZ1VybDtcbiAgfVxuXG4gIGFzeW5jIHByb3h5KHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIG1ldGhvZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IG5ld1VybCA9IHRoaXMuZ2V0VXJsRm9yUHJveHkodXJsKTtcbiAgICBjb25zdCB0cnVuY2F0ZUJvZHkgPSAoY29udGVudCkgPT5cbiAgICAgIF8udHJ1bmNhdGUoXy5pc1N0cmluZyhjb250ZW50KSA/IGNvbnRlbnQgOiBKU09OLnN0cmluZ2lmeShjb250ZW50KSwge1xuICAgICAgICBsZW5ndGg6IE1BWF9MT0dfQk9EWV9MRU5HVEgsXG4gICAgICB9KTtcbiAgICAvKiogQHR5cGUge2ltcG9ydCgnYXhpb3MnKS5BeGlvc1JlcXVlc3RDb25maWd9ICovXG4gICAgY29uc3QgcmVxT3B0cyA9IHtcbiAgICAgIHVybDogbmV3VXJsLFxuICAgICAgbWV0aG9kLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnLFxuICAgICAgICAndXNlci1hZ2VudCc6ICdhcHBpdW0nLFxuICAgICAgICBhY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uLCAqLyonLFxuICAgICAgfSxcbiAgICAgIHByb3h5OiBmYWxzZSxcbiAgICAgIHRpbWVvdXQ6IHRoaXMudGltZW91dCxcbiAgICAgIGh0dHBBZ2VudDogdGhpcy5odHRwQWdlbnQsXG4gICAgICBodHRwc0FnZW50OiB0aGlzLmh0dHBzQWdlbnQsXG4gICAgfTtcbiAgICAvLyBHRVQgbWV0aG9kcyBzaG91bGRuJ3QgaGF2ZSBhbnkgYm9keS4gTW9zdCBzZXJ2ZXJzIGFyZSBPSyB3aXRoIHRoaXMsIGJ1dCBXZWJEcml2ZXJBZ2VudCB0aHJvd3MgNDAwIGVycm9yc1xuICAgIGlmICh1dGlsLmhhc1ZhbHVlKGJvZHkpICYmIG1ldGhvZCAhPT0gJ0dFVCcpIHtcbiAgICAgIGlmICh0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXFPcHRzLmRhdGEgPSBKU09OLnBhcnNlKGJvZHkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgaW50ZXJwcmV0IHRoZSByZXF1ZXN0IGJvZHkgYXMgdmFsaWQgSlNPTjogJHt0cnVuY2F0ZUJvZHkoYm9keSl9YCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcU9wdHMuZGF0YSA9IGJvZHk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sb2cuZGVidWcoXG4gICAgICBgUHJveHlpbmcgWyR7bWV0aG9kfSAke3VybCB8fCAnLyd9XSB0byBbJHttZXRob2R9ICR7bmV3VXJsfV0gYCArXG4gICAgICAgIChyZXFPcHRzLmRhdGEgPyBgd2l0aCBib2R5OiAke3RydW5jYXRlQm9keShyZXFPcHRzLmRhdGEpfWAgOiAnd2l0aCBubyBib2R5JylcbiAgICApO1xuXG4gICAgY29uc3QgdGhyb3dQcm94eUVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICBjb25zdCBlcnIgPSAvKiogQHR5cGUge1Byb3h5RXJyb3J9ICovIChuZXcgRXJyb3IoYFRoZSByZXF1ZXN0IHRvICR7dXJsfSBoYXMgZmFpbGVkYCkpO1xuICAgICAgZXJyLnJlc3BvbnNlID0ge1xuICAgICAgICBkYXRhOiBlcnJvcixcbiAgICAgICAgc3RhdHVzOiA1MDAsXG4gICAgICB9O1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH07XG4gICAgbGV0IGlzUmVzcG9uc2VMb2dnZWQgPSBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge2RhdGEsIHN0YXR1cywgaGVhZGVyc30gPSBhd2FpdCB0aGlzLnJlcXVlc3QocmVxT3B0cyk7XG4gICAgICAvLyBgZGF0YWAgbWlnaHQgYmUgcmVhbGx5IGJpZ1xuICAgICAgLy8gQmUgY2FyZWZ1bCB3aGlsZSBoYW5kbGluZyBpdCB0byBhdm9pZCBtZW1vcnkgbGVha3NcbiAgICAgIGlmICghXy5pc1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAgICAgIC8vIFRoZSByZXNwb25zZSBzaG91bGQgYmUgYSB2YWxpZCBKU09OIG9iamVjdFxuICAgICAgICAvLyBJZiBpdCBjYW5ub3QgYmUgY29lcmNlZCB0byBhbiBvYmplY3QgdGhlbiB0aGUgcmVzcG9uc2UgaXMgd3JvbmdcbiAgICAgICAgdGhyb3dQcm94eUVycm9yKGRhdGEpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2cuZGVidWcoYEdvdCByZXNwb25zZSB3aXRoIHN0YXR1cyAke3N0YXR1c306ICR7dHJ1bmNhdGVCb2R5KGRhdGEpfWApO1xuICAgICAgaXNSZXNwb25zZUxvZ2dlZCA9IHRydWU7XG4gICAgICBjb25zdCBpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QgPSAvXFwvc2Vzc2lvbiQvLnRlc3QodXJsKSAmJiBtZXRob2QgPT09ICdQT1NUJztcbiAgICAgIGlmIChpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QpIHtcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgdGhpcy5zZXNzaW9uSWQgPSBkYXRhLnNlc3Npb25JZCB8fCAoZGF0YS52YWx1ZSB8fCB7fSkuc2Vzc2lvbklkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZG93bnN0cmVhbVByb3RvY29sID0gdGhpcy5nZXRQcm90b2NvbEZyb21SZXNCb2R5KGRhdGEpO1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBEZXRlcm1pbmVkIHRoZSBkb3duc3RyZWFtIHByb3RvY29sIGFzICcke3RoaXMuZG93bnN0cmVhbVByb3RvY29sfSdgKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmhhcyhkYXRhLCAnc3RhdHVzJykgJiYgcGFyc2VJbnQoZGF0YS5zdGF0dXMsIDEwKSAhPT0gMCkge1xuICAgICAgICAvLyBTb21lIHNlcnZlcnMsIGxpa2UgY2hyb21lZHJpdmVyIG1heSByZXR1cm4gcmVzcG9uc2UgY29kZSAyMDAgZm9yIG5vbi16ZXJvIEpTT05XUCBzdGF0dXNlc1xuICAgICAgICB0aHJvd1Byb3h5RXJyb3IoZGF0YSk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXMgPSB7c3RhdHVzQ29kZTogc3RhdHVzLCBoZWFkZXJzLCBib2R5OiBkYXRhfTtcbiAgICAgIHJldHVybiBbcmVzLCBkYXRhXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBXZSBvbmx5IGNvbnNpZGVyIGFuIGVycm9yIHVuZXhwZWN0ZWQgaWYgdGhpcyB3YXMgbm90XG4gICAgICAvLyBhbiBhc3luYyByZXF1ZXN0IG1vZHVsZSBlcnJvciBvciBpZiB0aGUgcmVzcG9uc2UgY2Fubm90IGJlIGNhc3QgdG9cbiAgICAgIC8vIGEgdmFsaWQgSlNPTlxuICAgICAgbGV0IHByb3h5RXJyb3JNc2cgPSBlLm1lc3NhZ2U7XG4gICAgICBpZiAodXRpbC5oYXNWYWx1ZShlLnJlc3BvbnNlKSkge1xuICAgICAgICBpZiAoIWlzUmVzcG9uc2VMb2dnZWQpIHtcbiAgICAgICAgICBjb25zdCBlcnJvciA9IHRydW5jYXRlQm9keShlLnJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgIHRoaXMubG9nLmluZm8oXG4gICAgICAgICAgICB1dGlsLmhhc1ZhbHVlKGUucmVzcG9uc2Uuc3RhdHVzKVxuICAgICAgICAgICAgICA/IGBHb3QgcmVzcG9uc2Ugd2l0aCBzdGF0dXMgJHtlLnJlc3BvbnNlLnN0YXR1c306ICR7ZXJyb3J9YFxuICAgICAgICAgICAgICA6IGBHb3QgcmVzcG9uc2Ugd2l0aCB1bmtub3duIHN0YXR1czogJHtlcnJvcn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJveHlFcnJvck1zZyA9IGBDb3VsZCBub3QgcHJveHkgY29tbWFuZCB0byB0aGUgcmVtb3RlIHNlcnZlci4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWA7XG4gICAgICAgIGlmIChDT01QQUNUX0VSUk9SX1BBVFRFUk5TLnNvbWUoKHApID0+IHAudGVzdChlLm1lc3NhZ2UpKSkge1xuICAgICAgICAgIHRoaXMubG9nLmluZm8oZS5tZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKGUuc3RhY2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLlByb3h5UmVxdWVzdEVycm9yKHByb3h5RXJyb3JNc2csIGUucmVzcG9uc2U/LmRhdGEsIGUucmVzcG9uc2U/LnN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJvdG9jb2xGcm9tUmVzQm9keShyZXNPYmopIHtcbiAgICBpZiAoXy5pc0ludGVnZXIocmVzT2JqLnN0YXR1cykpIHtcbiAgICAgIHJldHVybiBNSlNPTldQO1xuICAgIH1cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocmVzT2JqLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIFczQztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkhUVFBNZXRob2R9IG1ldGhvZFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH1cbiAgICovXG4gIHJlcXVlc3RUb0NvbW1hbmROYW1lKHVybCwgbWV0aG9kKSB7XG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gcGF0dGVyblxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfVxuICAgICAqL1xuICAgIGNvbnN0IGV4dHJhY3RDb21tYW5kTmFtZSA9IChwYXR0ZXJuKSA9PiB7XG4gICAgICBjb25zdCBwYXRoTWF0Y2ggPSBwYXR0ZXJuLmV4ZWModXJsKTtcbiAgICAgIGlmIChwYXRoTWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIHJvdXRlVG9Db21tYW5kTmFtZShwYXRoTWF0Y2hbMV0sIG1ldGhvZCwgdGhpcy5yZXFCYXNlUGF0aCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBsZXQgY29tbWFuZE5hbWUgPSByb3V0ZVRvQ29tbWFuZE5hbWUodXJsLCBtZXRob2QsIHRoaXMucmVxQmFzZVBhdGgpO1xuICAgIGlmICghY29tbWFuZE5hbWUgJiYgXy5pbmNsdWRlcyh1cmwsIGAke3RoaXMucmVxQmFzZVBhdGh9L3Nlc3Npb24vYCkpIHtcbiAgICAgIGNvbW1hbmROYW1lID0gZXh0cmFjdENvbW1hbmROYW1lKFxuICAgICAgICBuZXcgUmVnRXhwKGAke18uZXNjYXBlUmVnRXhwKHRoaXMucmVxQmFzZVBhdGgpfS9zZXNzaW9uL1teL10rKC4rKWApXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWNvbW1hbmROYW1lICYmIF8uaW5jbHVkZXModXJsLCB0aGlzLnJlcUJhc2VQYXRoKSkge1xuICAgICAgY29tbWFuZE5hbWUgPSBleHRyYWN0Q29tbWFuZE5hbWUobmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cCh0aGlzLnJlcUJhc2VQYXRoKX0oLy4rKWApKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbW1hbmROYW1lO1xuICB9XG5cbiAgYXN5bmMgcHJveHlDb21tYW5kKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGNvbnN0IGNvbW1hbmROYW1lID0gdGhpcy5yZXF1ZXN0VG9Db21tYW5kTmFtZSh1cmwsIG1ldGhvZCk7XG4gICAgaWYgKCFjb21tYW5kTmFtZSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHkodXJsLCBtZXRob2QsIGJvZHkpO1xuICAgIH1cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgTWF0Y2hlZCAnJHt1cmx9JyB0byBjb21tYW5kIG5hbWUgJyR7Y29tbWFuZE5hbWV9J2ApO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJvdG9jb2xDb252ZXJ0ZXIuY29udmVydEFuZFByb3h5KGNvbW1hbmROYW1lLCB1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cblxuICBhc3luYyBjb21tYW5kKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGxldCByZXNwb25zZTtcbiAgICBsZXQgcmVzQm9keU9iajtcbiAgICB0cnkge1xuICAgICAgW3Jlc3BvbnNlLCByZXNCb2R5T2JqXSA9IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZXJyLmdldEFjdHVhbEVycm9yKCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25FcnJvcihlcnIubWVzc2FnZSk7XG4gICAgfVxuICAgIGNvbnN0IHByb3RvY29sID0gdGhpcy5nZXRQcm90b2NvbEZyb21SZXNCb2R5KHJlc0JvZHlPYmopO1xuICAgIGlmIChwcm90b2NvbCA9PT0gTUpTT05XUCkge1xuICAgICAgLy8gR290IHJlc3BvbnNlIGluIE1KU09OV1AgZm9ybWF0XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA9PT0gMjAwICYmIHJlc0JvZHlPYmouc3RhdHVzID09PSAwKSB7XG4gICAgICAgIHJldHVybiByZXNCb2R5T2JqLnZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3RhdHVzID0gcGFyc2VJbnQocmVzQm9keU9iai5zdGF0dXMsIDEwKTtcbiAgICAgIGlmICghaXNOYU4oc3RhdHVzKSAmJiBzdGF0dXMgIT09IDApIHtcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSByZXNCb2R5T2JqLnZhbHVlO1xuICAgICAgICBpZiAoXy5oYXMobWVzc2FnZSwgJ21lc3NhZ2UnKSkge1xuICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLm1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUoXG4gICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgIF8uaXNFbXB0eShtZXNzYWdlKSA/IGdldFN1bW1hcnlCeUNvZGUoc3RhdHVzKSA6IG1lc3NhZ2VcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb3RvY29sID09PSBXM0MpIHtcbiAgICAgIC8vIEdvdCByZXNwb25zZSBpbiBXM0MgZm9ybWF0XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA8IDMwMCkge1xuICAgICAgICByZXR1cm4gcmVzQm9keU9iai52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzUGxhaW5PYmplY3QocmVzQm9keU9iai52YWx1ZSkgJiYgcmVzQm9keU9iai52YWx1ZS5lcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvckZyb21XM0NKc29uQ29kZShcbiAgICAgICAgICByZXNCb2R5T2JqLnZhbHVlLmVycm9yLFxuICAgICAgICAgIHJlc0JvZHlPYmoudmFsdWUubWVzc2FnZSxcbiAgICAgICAgICByZXNCb2R5T2JqLnZhbHVlLnN0YWNrdHJhY2VcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuICAgICAgLy8gVW5rbm93biBwcm90b2NvbC4gS2VlcGluZyBpdCBiZWNhdXNlIG9mIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICByZXR1cm4gcmVzQm9keU9iajtcbiAgICB9XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duRXJyb3IoXG4gICAgICBgRGlkIG5vdCBrbm93IHdoYXQgdG8gZG8gd2l0aCByZXNwb25zZSBjb2RlICcke3Jlc3BvbnNlLnN0YXR1c0NvZGV9JyBgICtcbiAgICAgICAgYGFuZCByZXNwb25zZSBib2R5ICcke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkocmVzQm9keU9iaiksIHtcbiAgICAgICAgICBsZW5ndGg6IDMwMCxcbiAgICAgICAgfSl9J2BcbiAgICApO1xuICB9XG5cbiAgZ2V0U2Vzc2lvbklkRnJvbVVybCh1cmwpIHtcbiAgICBjb25zdCBtYXRjaCA9IHVybC5tYXRjaCgvXFwvc2Vzc2lvblxcLyhbXi9dKykvKTtcbiAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6IG51bGw7XG4gIH1cblxuICBhc3luYyBwcm94eVJlcVJlcyhyZXEsIHJlcykge1xuICAgIC8vICEgdGhpcyBtZXRob2QgbXVzdCBub3QgdGhyb3cgYW55IGV4Y2VwdGlvbnNcbiAgICAvLyAhIG1ha2Ugc3VyZSB0byBjYWxsIHJlcy5zZW5kIGJlZm9yZSByZXR1cm5cbiAgICBsZXQgc3RhdHVzQ29kZTtcbiAgICBsZXQgcmVzQm9keU9iajtcbiAgICB0cnkge1xuICAgICAgbGV0IHJlc3BvbnNlO1xuICAgICAgW3Jlc3BvbnNlLCByZXNCb2R5T2JqXSA9IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKHJlcS5vcmlnaW5hbFVybCwgcmVxLm1ldGhvZCwgcmVxLmJvZHkpO1xuICAgICAgcmVzLmhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzO1xuICAgICAgc3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1c0NvZGU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBbc3RhdHVzQ29kZSwgcmVzQm9keU9ial0gPSBnZXRSZXNwb25zZUZvclczQ0Vycm9yKFxuICAgICAgICBpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcikgPyBlcnIuZ2V0QWN0dWFsRXJyb3IoKSA6IGVyclxuICAgICAgKTtcbiAgICB9XG4gICAgcmVzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnKTtcbiAgICBpZiAoIV8uaXNQbGFpbk9iamVjdChyZXNCb2R5T2JqKSkge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgZXJyb3JzLlVua25vd25FcnJvcihcbiAgICAgICAgYFRoZSBkb3duc3RyZWFtIHNlcnZlciByZXNwb25zZSB3aXRoIHRoZSBzdGF0dXMgY29kZSAke3N0YXR1c0NvZGV9IGlzIG5vdCBhIHZhbGlkIEpTT04gb2JqZWN0OiBgICtcbiAgICAgICAgICBfLnRydW5jYXRlKGAke3Jlc0JvZHlPYmp9YCwge2xlbmd0aDogMzAwfSlcbiAgICAgICk7XG4gICAgICBbc3RhdHVzQ29kZSwgcmVzQm9keU9ial0gPSBnZXRSZXNwb25zZUZvclczQ0Vycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICAvLyBpZiB0aGUgcHJveGllZCByZXNwb25zZSBjb250YWlucyBhIHNlc3Npb25JZCB0aGF0IHRoZSBkb3duc3RyZWFtXG4gICAgLy8gZHJpdmVyIGhhcyBnZW5lcmF0ZWQsIHdlIGRvbid0IHdhbnQgdG8gcmV0dXJuIHRoYXQgdG8gdGhlIGNsaWVudC5cbiAgICAvLyBJbnN0ZWFkLCByZXR1cm4gdGhlIGlkIGZyb20gdGhlIHJlcXVlc3Qgb3IgZnJvbSBjdXJyZW50IHNlc3Npb25cbiAgICBpZiAoXy5oYXMocmVzQm9keU9iaiwgJ3Nlc3Npb25JZCcpKSB7XG4gICAgICBjb25zdCByZXFTZXNzaW9uSWQgPSB0aGlzLmdldFNlc3Npb25JZEZyb21VcmwocmVxLm9yaWdpbmFsVXJsKTtcbiAgICAgIGlmIChyZXFTZXNzaW9uSWQpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgUmVwbGFjaW5nIHNlc3Npb25JZCAke3Jlc0JvZHlPYmouc2Vzc2lvbklkfSB3aXRoICR7cmVxU2Vzc2lvbklkfWApO1xuICAgICAgICByZXNCb2R5T2JqLnNlc3Npb25JZCA9IHJlcVNlc3Npb25JZDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZXNzaW9uSWQpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgUmVwbGFjaW5nIHNlc3Npb25JZCAke3Jlc0JvZHlPYmouc2Vzc2lvbklkfSB3aXRoICR7dGhpcy5zZXNzaW9uSWR9YCk7XG4gICAgICAgIHJlc0JvZHlPYmouc2Vzc2lvbklkID0gdGhpcy5zZXNzaW9uSWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc0JvZHlPYmoudmFsdWUgPSBmb3JtYXRSZXNwb25zZVZhbHVlKHJlc0JvZHlPYmoudmFsdWUpO1xuICAgIHJlcy5zdGF0dXMoc3RhdHVzQ29kZSkuc2VuZChKU09OLnN0cmluZ2lmeShmb3JtYXRTdGF0dXMocmVzQm9keU9iaikpKTtcbiAgfVxufVxuXG5leHBvcnQge0pXUHJveHl9O1xuZXhwb3J0IGRlZmF1bHQgSldQcm94eTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7RXJyb3IgJiB7cmVzcG9uc2U6IHtkYXRhOiBpbXBvcnQoJ3R5cGUtZmVzdCcpLkpzb25PYmplY3QsIHN0YXR1czogaW1wb3J0KCdodHRwLXN0YXR1cy1jb2RlcycpLlN0YXR1c0NvZGVzfX19IFByb3h5RXJyb3JcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQU9BOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFdBQVcsR0FBR0MsZUFBQSxDQUFPQyxTQUFQLENBQWlCLFVBQWpCLENBQXBCOztBQUNBLE1BQU1DLHVCQUF1QixHQUFHLE1BQWhDO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsQ0FBQyxrQkFBRCxFQUFxQixnQkFBckIsQ0FBL0I7QUFFQSxNQUFNO0VBQUNDLE9B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
419
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX0xPRyIsImxvZ2dlciIsImdldExvZ2dlciIsIkRFRkFVTFRfUkVRVUVTVF9USU1FT1VUIiwiQ09NUEFDVF9FUlJPUl9QQVRURVJOUyIsIk1KU09OV1AiLCJXM0MiLCJQUk9UT0NPTFMiLCJBTExPV0VEX09QVFMiLCJKV1Byb3h5Iiwic2NoZW1lIiwic2VydmVyIiwicG9ydCIsImJhc2UiLCJyZXFCYXNlUGF0aCIsInNlc3Npb25JZCIsInRpbWVvdXQiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJfIiwicGljayIsIm9wdGlvbnMiLCJkZWZhdWx0cyIsIm9taXQiLCJERUZBVUxUX0JBU0VfUEFUSCIsInRvTG93ZXJDYXNlIiwiT2JqZWN0IiwiYXNzaWduIiwiX2FjdGl2ZVJlcXVlc3RzIiwiX2Rvd25zdHJlYW1Qcm90b2NvbCIsImFnZW50T3B0cyIsImtlZXBBbGl2ZSIsIm1heFNvY2tldHMiLCJtYXhGcmVlU29ja2V0cyIsImh0dHBBZ2VudCIsImh0dHAiLCJBZ2VudCIsImh0dHBzQWdlbnQiLCJodHRwcyIsInByb3RvY29sQ29udmVydGVyIiwiUHJvdG9jb2xDb252ZXJ0ZXIiLCJwcm94eSIsImJpbmQiLCJsb2ciLCJfbG9nIiwicmVxdWVzdCIsInJlcXVlc3RDb25maWciLCJyZXFQcm9taXNlIiwiYXhpb3MiLCJwdXNoIiwicHVsbCIsImdldEFjdGl2ZVJlcXVlc3RzQ291bnQiLCJsZW5ndGgiLCJjYW5jZWxBY3RpdmVSZXF1ZXN0cyIsImVuZHBvaW50UmVxdWlyZXNTZXNzaW9uSWQiLCJlbmRwb2ludCIsImluY2x1ZGVzIiwiZG93bnN0cmVhbVByb3RvY29sIiwidmFsdWUiLCJnZXRVcmxGb3JQcm94eSIsInVybCIsInByb3h5QmFzZSIsImVuZHBvaW50UmUiLCJyZW1haW5pbmdVcmwiLCJ0ZXN0IiwiZmlyc3QiLCJSZWdFeHAiLCJleGVjIiwiRXJyb3IiLCJyZXBsYWNlIiwic3RyaXBQcmVmaXhSZSIsInJlcXVpcmVzU2Vzc2lvbklkIiwic2Vzc2lvbkJhc2VSZSIsIlJlZmVyZW5jZUVycm9yIiwibWF0Y2giLCJtZXRob2QiLCJib2R5IiwidG9VcHBlckNhc2UiLCJuZXdVcmwiLCJ0cnVuY2F0ZUJvZHkiLCJjb250ZW50IiwidHJ1bmNhdGUiLCJpc1N0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJNQVhfTE9HX0JPRFlfTEVOR1RIIiwicmVxT3B0cyIsImhlYWRlcnMiLCJhY2NlcHQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJkYXRhIiwicGFyc2UiLCJlIiwiZGVidWciLCJ0aHJvd1Byb3h5RXJyb3IiLCJlcnJvciIsImVyciIsInJlc3BvbnNlIiwic3RhdHVzIiwiaXNSZXNwb25zZUxvZ2dlZCIsImlzUGxhaW5PYmplY3QiLCJpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QiLCJnZXRQcm90b2NvbEZyb21SZXNCb2R5IiwiaW5mbyIsImhhcyIsInBhcnNlSW50IiwicmVzIiwic3RhdHVzQ29kZSIsInByb3h5RXJyb3JNc2ciLCJtZXNzYWdlIiwic29tZSIsInAiLCJzdGFjayIsImVycm9ycyIsIlByb3h5UmVxdWVzdEVycm9yIiwicmVzT2JqIiwiaXNJbnRlZ2VyIiwiaXNVbmRlZmluZWQiLCJyZXF1ZXN0VG9Db21tYW5kTmFtZSIsImV4dHJhY3RDb21tYW5kTmFtZSIsInBhdHRlcm4iLCJwYXRoTWF0Y2giLCJyb3V0ZVRvQ29tbWFuZE5hbWUiLCJjb21tYW5kTmFtZSIsImVzY2FwZVJlZ0V4cCIsInByb3h5Q29tbWFuZCIsImNvbnZlcnRBbmRQcm94eSIsImNvbW1hbmQiLCJyZXNCb2R5T2JqIiwiaXNFcnJvclR5cGUiLCJnZXRBY3R1YWxFcnJvciIsIlVua25vd25FcnJvciIsInByb3RvY29sIiwiaXNOYU4iLCJlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZSIsImlzRW1wdHkiLCJnZXRTdW1tYXJ5QnlDb2RlIiwiZXJyb3JGcm9tVzNDSnNvbkNvZGUiLCJzdGFja3RyYWNlIiwiZ2V0U2Vzc2lvbklkRnJvbVVybCIsInByb3h5UmVxUmVzIiwicmVxIiwib3JpZ2luYWxVcmwiLCJnZXRSZXNwb25zZUZvclczQ0Vycm9yIiwic2V0IiwicmVxU2Vzc2lvbklkIiwiZm9ybWF0UmVzcG9uc2VWYWx1ZSIsInNlbmQiLCJmb3JtYXRTdGF0dXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvanNvbndwLXByb3h5L3Byb3h5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge2xvZ2dlciwgdXRpbH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQge2dldFN1bW1hcnlCeUNvZGV9IGZyb20gJy4uL2pzb253cC1zdGF0dXMvc3RhdHVzJztcbmltcG9ydCB7XG4gIGVycm9ycyxcbiAgaXNFcnJvclR5cGUsXG4gIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlLFxuICBlcnJvckZyb21XM0NKc29uQ29kZSxcbiAgZ2V0UmVzcG9uc2VGb3JXM0NFcnJvcixcbn0gZnJvbSAnLi4vcHJvdG9jb2wvZXJyb3JzJztcbmltcG9ydCB7cm91dGVUb0NvbW1hbmROYW1lfSBmcm9tICcuLi9wcm90b2NvbCc7XG5pbXBvcnQge01BWF9MT0dfQk9EWV9MRU5HVEgsIERFRkFVTFRfQkFTRV9QQVRILCBQUk9UT0NPTFN9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgUHJvdG9jb2xDb252ZXJ0ZXIgZnJvbSAnLi9wcm90b2NvbC1jb252ZXJ0ZXInO1xuaW1wb3J0IHtmb3JtYXRSZXNwb25zZVZhbHVlLCBmb3JtYXRTdGF0dXN9IGZyb20gJy4uL3Byb3RvY29sL2hlbHBlcnMnO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuXG5jb25zdCBERUZBVUxUX0xPRyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1dEIFByb3h5Jyk7XG5jb25zdCBERUZBVUxUX1JFUVVFU1RfVElNRU9VVCA9IDI0MDAwMDtcbmNvbnN0IENPTVBBQ1RfRVJST1JfUEFUVEVSTlMgPSBbL1xcYkVDT05OUkVGVVNFRFxcYi8sIC9zb2NrZXQgaGFuZyB1cC9dO1xuXG5jb25zdCB7TUpTT05XUCwgVzNDfSA9IFBST1RPQ09MUztcblxuY29uc3QgQUxMT1dFRF9PUFRTID0gW1xuICAnc2NoZW1lJyxcbiAgJ3NlcnZlcicsXG4gICdwb3J0JyxcbiAgJ2Jhc2UnLFxuICAncmVxQmFzZVBhdGgnLFxuICAnc2Vzc2lvbklkJyxcbiAgJ3RpbWVvdXQnLFxuICAnbG9nJyxcbiAgJ2tlZXBBbGl2ZScsXG5dO1xuXG5jbGFzcyBKV1Byb3h5IHtcbiAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gIHNjaGVtZTtcbiAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gIHNlcnZlcjtcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIHBvcnQ7XG4gIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICBiYXNlO1xuICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgcmVxQmFzZVBhdGg7XG4gIC8qKiBAdHlwZSB7c3RyaW5nP30gKi9cbiAgc2Vzc2lvbklkO1xuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgdGltZW91dDtcblxuICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICBvcHRzID0gXy5waWNrKG9wdHMsIEFMTE9XRURfT1BUUyk7XG5cbiAgICAvLyBvbWl0ICdsb2cnIGluIHRoZSBkZWZhdWx0cyBhc3NpZ25tZW50IGhlcmUgYmVjYXVzZSAnbG9nJyBpcyBhIGdldHRlciBhbmQgd2UgYXJlIGdvaW5nIHRvIHNldFxuICAgIC8vIGl0IHRvIHRoaXMuX2xvZyAod2hpY2ggbGllcyBiZWhpbmQgdGhlIGdldHRlcikgZnVydGhlciBkb3duXG4gICAgY29uc3Qgb3B0aW9ucyA9IF8uZGVmYXVsdHMoXy5vbWl0KG9wdHMsICdsb2cnKSwge1xuICAgICAgc2NoZW1lOiAnaHR0cCcsXG4gICAgICBzZXJ2ZXI6ICdsb2NhbGhvc3QnLFxuICAgICAgcG9ydDogNDQ0NCxcbiAgICAgIGJhc2U6IERFRkFVTFRfQkFTRV9QQVRILFxuICAgICAgcmVxQmFzZVBhdGg6IERFRkFVTFRfQkFTRV9QQVRILFxuICAgICAgc2Vzc2lvbklkOiBudWxsLFxuICAgICAgdGltZW91dDogREVGQVVMVF9SRVFVRVNUX1RJTUVPVVQsXG4gICAgfSk7XG4gICAgb3B0aW9ucy5zY2hlbWUgPSBvcHRpb25zLnNjaGVtZS50b0xvd2VyQ2FzZSgpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgb3B0aW9ucyk7XG5cbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cyA9IFtdO1xuICAgIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbCA9IG51bGw7XG4gICAgY29uc3QgYWdlbnRPcHRzID0ge1xuICAgICAga2VlcEFsaXZlOiBvcHRzLmtlZXBBbGl2ZSA/PyB0cnVlLFxuICAgICAgbWF4U29ja2V0czogMTAsXG4gICAgICBtYXhGcmVlU29ja2V0czogNSxcbiAgICB9O1xuICAgIHRoaXMuaHR0cEFnZW50ID0gbmV3IGh0dHAuQWdlbnQoYWdlbnRPcHRzKTtcbiAgICB0aGlzLmh0dHBzQWdlbnQgPSBuZXcgaHR0cHMuQWdlbnQoYWdlbnRPcHRzKTtcbiAgICB0aGlzLnByb3RvY29sQ29udmVydGVyID0gbmV3IFByb3RvY29sQ29udmVydGVyKHRoaXMucHJveHkuYmluZCh0aGlzKSwgb3B0cy5sb2cpO1xuICAgIHRoaXMuX2xvZyA9IG9wdHMubG9nO1xuICB9XG5cbiAgZ2V0IGxvZygpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9nID8/IERFRkFVTFRfTE9HO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIHJlcXVlc3RzIHRvIHRoZSBkb3duc3RyZWFtIHNlcnZlclxuICAgKlxuICAgKiBAcHJpdmF0ZSAtIERvIG5vdCBjYWxsIHRoaXMgbWV0aG9kIGRpcmVjdGx5LFxuICAgKiBpdCB1c2VzIGNsaWVudC1zcGVjaWZpYyBhcmd1bWVudHMgYW5kIHJlc3BvbnNlcyFcbiAgICpcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2F4aW9zJykuQXhpb3NSZXF1ZXN0Q29uZmlnfSByZXF1ZXN0Q29uZmlnXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydCgnYXhpb3MnKS5BeGlvc1Jlc3BvbnNlPn1cbiAgICovXG4gIGFzeW5jIHJlcXVlc3QocmVxdWVzdENvbmZpZykge1xuICAgIGNvbnN0IHJlcVByb21pc2UgPSBheGlvcyhyZXF1ZXN0Q29uZmlnKTtcbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cy5wdXNoKHJlcVByb21pc2UpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVxUHJvbWlzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgXy5wdWxsKHRoaXMuX2FjdGl2ZVJlcXVlc3RzLCByZXFQcm9taXNlKTtcbiAgICB9XG4gIH1cblxuICBnZXRBY3RpdmVSZXF1ZXN0c0NvdW50KCkge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVSZXF1ZXN0cy5sZW5ndGg7XG4gIH1cblxuICBjYW5jZWxBY3RpdmVSZXF1ZXN0cygpIHtcbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cyA9IFtdO1xuICB9XG5cbiAgZW5kcG9pbnRSZXF1aXJlc1Nlc3Npb25JZChlbmRwb2ludCkge1xuICAgIHJldHVybiAhXy5pbmNsdWRlcyhbJy9zZXNzaW9uJywgJy9zZXNzaW9ucycsICcvc3RhdHVzJ10sIGVuZHBvaW50KTtcbiAgfVxuXG4gIHNldCBkb3duc3RyZWFtUHJvdG9jb2wodmFsdWUpIHtcbiAgICB0aGlzLl9kb3duc3RyZWFtUHJvdG9jb2wgPSB2YWx1ZTtcbiAgICB0aGlzLnByb3RvY29sQ29udmVydGVyLmRvd25zdHJlYW1Qcm90b2NvbCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGRvd25zdHJlYW1Qcm90b2NvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZG93bnN0cmVhbVByb3RvY29sO1xuICB9XG5cbiAgZ2V0VXJsRm9yUHJveHkodXJsKSB7XG4gICAgaWYgKHVybCA9PT0gJycpIHtcbiAgICAgIHVybCA9ICcvJztcbiAgICB9XG4gICAgY29uc3QgcHJveHlCYXNlID0gYCR7dGhpcy5zY2hlbWV9Oi8vJHt0aGlzLnNlcnZlcn06JHt0aGlzLnBvcnR9JHt0aGlzLmJhc2V9YDtcbiAgICBjb25zdCBlbmRwb2ludFJlID0gJygvKHNlc3Npb258c3RhdHVzKSknO1xuICAgIGxldCByZW1haW5pbmdVcmwgPSAnJztcbiAgICBpZiAoL15odHRwLy50ZXN0KHVybCkpIHtcbiAgICAgIGNvbnN0IGZpcnN0ID0gbmV3IFJlZ0V4cChgKGh0dHBzPzovLy4rKSR7ZW5kcG9pbnRSZX1gKS5leGVjKHVybCk7XG4gICAgICBpZiAoIWZpcnN0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignR290IGEgY29tcGxldGUgdXJsIGJ1dCBjb3VsZCBub3QgZXh0cmFjdCBKV1AgZW5kcG9pbnQnKTtcbiAgICAgIH1cbiAgICAgIHJlbWFpbmluZ1VybCA9IHVybC5yZXBsYWNlKGZpcnN0WzFdLCAnJyk7XG4gICAgfSBlbHNlIGlmIChuZXcgUmVnRXhwKCdeLycpLnRlc3QodXJsKSkge1xuICAgICAgcmVtYWluaW5nVXJsID0gdXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpZCBub3Qga25vdyB3aGF0IHRvIGRvIHdpdGggdXJsICcke3VybH0nYCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RyaXBQcmVmaXhSZSA9IG5ldyBSZWdFeHAoJ14uKj8oLyhzZXNzaW9ufHN0YXR1cykuKikkJyk7XG4gICAgaWYgKHN0cmlwUHJlZml4UmUudGVzdChyZW1haW5pbmdVcmwpKSB7XG4gICAgICByZW1haW5pbmdVcmwgPSAvKiogQHR5cGUge1JlZ0V4cEV4ZWNBcnJheX0gKi8gKHN0cmlwUHJlZml4UmUuZXhlYyhyZW1haW5pbmdVcmwpKVsxXTtcbiAgICB9XG5cbiAgICBpZiAoIW5ldyBSZWdFeHAoZW5kcG9pbnRSZSkudGVzdChyZW1haW5pbmdVcmwpKSB7XG4gICAgICByZW1haW5pbmdVcmwgPSBgL3Nlc3Npb24vJHt0aGlzLnNlc3Npb25JZH0ke3JlbWFpbmluZ1VybH1gO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVpcmVzU2Vzc2lvbklkID0gdGhpcy5lbmRwb2ludFJlcXVpcmVzU2Vzc2lvbklkKHJlbWFpbmluZ1VybCk7XG5cbiAgICBpZiAocmVxdWlyZXNTZXNzaW9uSWQgJiYgdGhpcy5zZXNzaW9uSWQgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHJ5aW5nIHRvIHByb3h5IGEgc2Vzc2lvbiBjb21tYW5kIHdpdGhvdXQgc2Vzc2lvbiBpZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlc3Npb25CYXNlUmUgPSBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vKFteL10rKScpO1xuICAgIGlmIChzZXNzaW9uQmFzZVJlLnRlc3QocmVtYWluaW5nVXJsKSkge1xuICAgICAgaWYgKHRoaXMuc2Vzc2lvbklkID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcbiAgICAgICAgICBgU2Vzc2lvbiBJRCBpcyBub3Qgc2V0LCBidXQgc2F3IGEgVVJMIHBhdGggcmVmZXJlbmNpbmcgYSBzZXNzaW9uICgke3JlbWFpbmluZ1VybH0pLiBUaGlzIG1heSBiZSBhIGJ1ZyBpbiB5b3VyIGNsaWVudC5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICAvLyB3ZSBoYXZlIHNvbWV0aGluZyBsaWtlIC9zZXNzaW9uLzppZC9mb29iYXIsIHNvIHdlIG5lZWQgdG8gcmVwbGFjZVxuICAgICAgLy8gdGhlIHNlc3Npb24gaWRcbiAgICAgIGNvbnN0IG1hdGNoID0gc2Vzc2lvbkJhc2VSZS5leGVjKHJlbWFpbmluZ1VybCk7XG4gICAgICAvLyBUT0RPOiBpZiBgcmVxdWlyZXNTZXNzaW9uSWRgIGlzIGBmYWxzZWAgYW5kIGBzZXNzaW9uSWRgIGlzIGBudWxsYCwgdGhpcyBpcyBhIGJ1Zy5cbiAgICAgIC8vIGFyZSB3ZSBzdXJlIGBzZXNzaW9uSWRgIGlzIG5vdCBgbnVsbGA/XG4gICAgICByZW1haW5pbmdVcmwgPSByZW1haW5pbmdVcmwucmVwbGFjZShcbiAgICAgICAgLyoqIEB0eXBlIHtSZWdFeHBFeGVjQXJyYXl9ICovIChtYXRjaClbMV0sXG4gICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAodGhpcy5zZXNzaW9uSWQpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAocmVxdWlyZXNTZXNzaW9uSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgOnNlc3Npb24gc2VjdGlvbiBmb3IgdXJsOiAke3JlbWFpbmluZ1VybH1gKTtcbiAgICB9XG4gICAgcmVtYWluaW5nVXJsID0gcmVtYWluaW5nVXJsLnJlcGxhY2UoL1xcLyQvLCAnJyk7IC8vIGNhbid0IGhhdmUgdHJhaWxpbmcgc2xhc2hlc1xuXG4gICAgcmV0dXJuIHByb3h5QmFzZSArIHJlbWFpbmluZ1VybDtcbiAgfVxuXG4gIGFzeW5jIHByb3h5KHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIG1ldGhvZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IG5ld1VybCA9IHRoaXMuZ2V0VXJsRm9yUHJveHkodXJsKTtcbiAgICBjb25zdCB0cnVuY2F0ZUJvZHkgPSAoY29udGVudCkgPT5cbiAgICAgIF8udHJ1bmNhdGUoXy5pc1N0cmluZyhjb250ZW50KSA/IGNvbnRlbnQgOiBKU09OLnN0cmluZ2lmeShjb250ZW50KSwge1xuICAgICAgICBsZW5ndGg6IE1BWF9MT0dfQk9EWV9MRU5HVEgsXG4gICAgICB9KTtcbiAgICAvKiogQHR5cGUge2ltcG9ydCgnYXhpb3MnKS5BeGlvc1JlcXVlc3RDb25maWd9ICovXG4gICAgY29uc3QgcmVxT3B0cyA9IHtcbiAgICAgIHVybDogbmV3VXJsLFxuICAgICAgbWV0aG9kLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnLFxuICAgICAgICAndXNlci1hZ2VudCc6ICdhcHBpdW0nLFxuICAgICAgICBhY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uLCAqLyonLFxuICAgICAgfSxcbiAgICAgIHByb3h5OiBmYWxzZSxcbiAgICAgIHRpbWVvdXQ6IHRoaXMudGltZW91dCxcbiAgICAgIGh0dHBBZ2VudDogdGhpcy5odHRwQWdlbnQsXG4gICAgICBodHRwc0FnZW50OiB0aGlzLmh0dHBzQWdlbnQsXG4gICAgfTtcbiAgICAvLyBHRVQgbWV0aG9kcyBzaG91bGRuJ3QgaGF2ZSBhbnkgYm9keS4gTW9zdCBzZXJ2ZXJzIGFyZSBPSyB3aXRoIHRoaXMsIGJ1dCBXZWJEcml2ZXJBZ2VudCB0aHJvd3MgNDAwIGVycm9yc1xuICAgIGlmICh1dGlsLmhhc1ZhbHVlKGJvZHkpICYmIG1ldGhvZCAhPT0gJ0dFVCcpIHtcbiAgICAgIGlmICh0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXFPcHRzLmRhdGEgPSBKU09OLnBhcnNlKGJvZHkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgaW50ZXJwcmV0IHRoZSByZXF1ZXN0IGJvZHkgYXMgdmFsaWQgSlNPTjogJHt0cnVuY2F0ZUJvZHkoYm9keSl9YCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcU9wdHMuZGF0YSA9IGJvZHk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sb2cuZGVidWcoXG4gICAgICBgUHJveHlpbmcgWyR7bWV0aG9kfSAke3VybCB8fCAnLyd9XSB0byBbJHttZXRob2R9ICR7bmV3VXJsfV0gYCArXG4gICAgICAgIChyZXFPcHRzLmRhdGEgPyBgd2l0aCBib2R5OiAke3RydW5jYXRlQm9keShyZXFPcHRzLmRhdGEpfWAgOiAnd2l0aCBubyBib2R5JylcbiAgICApO1xuXG4gICAgY29uc3QgdGhyb3dQcm94eUVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICBjb25zdCBlcnIgPSAvKiogQHR5cGUge1Byb3h5RXJyb3J9ICovIChuZXcgRXJyb3IoYFRoZSByZXF1ZXN0IHRvICR7dXJsfSBoYXMgZmFpbGVkYCkpO1xuICAgICAgZXJyLnJlc3BvbnNlID0ge1xuICAgICAgICBkYXRhOiBlcnJvcixcbiAgICAgICAgc3RhdHVzOiA1MDAsXG4gICAgICB9O1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH07XG4gICAgbGV0IGlzUmVzcG9uc2VMb2dnZWQgPSBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge2RhdGEsIHN0YXR1cywgaGVhZGVyc30gPSBhd2FpdCB0aGlzLnJlcXVlc3QocmVxT3B0cyk7XG4gICAgICAvLyBgZGF0YWAgbWlnaHQgYmUgcmVhbGx5IGJpZ1xuICAgICAgLy8gQmUgY2FyZWZ1bCB3aGlsZSBoYW5kbGluZyBpdCB0byBhdm9pZCBtZW1vcnkgbGVha3NcbiAgICAgIGlmICghXy5pc1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAgICAgIC8vIFRoZSByZXNwb25zZSBzaG91bGQgYmUgYSB2YWxpZCBKU09OIG9iamVjdFxuICAgICAgICAvLyBJZiBpdCBjYW5ub3QgYmUgY29lcmNlZCB0byBhbiBvYmplY3QgdGhlbiB0aGUgcmVzcG9uc2UgaXMgd3JvbmdcbiAgICAgICAgdGhyb3dQcm94eUVycm9yKGRhdGEpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2cuZGVidWcoYEdvdCByZXNwb25zZSB3aXRoIHN0YXR1cyAke3N0YXR1c306ICR7dHJ1bmNhdGVCb2R5KGRhdGEpfWApO1xuICAgICAgaXNSZXNwb25zZUxvZ2dlZCA9IHRydWU7XG4gICAgICBjb25zdCBpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QgPSAvXFwvc2Vzc2lvbiQvLnRlc3QodXJsKSAmJiBtZXRob2QgPT09ICdQT1NUJztcbiAgICAgIGlmIChpc1Nlc3Npb25DcmVhdGlvblJlcXVlc3QpIHtcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgdGhpcy5zZXNzaW9uSWQgPSBkYXRhLnNlc3Npb25JZCB8fCAoZGF0YS52YWx1ZSB8fCB7fSkuc2Vzc2lvbklkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZG93bnN0cmVhbVByb3RvY29sID0gdGhpcy5nZXRQcm90b2NvbEZyb21SZXNCb2R5KGRhdGEpO1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBEZXRlcm1pbmVkIHRoZSBkb3duc3RyZWFtIHByb3RvY29sIGFzICcke3RoaXMuZG93bnN0cmVhbVByb3RvY29sfSdgKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmhhcyhkYXRhLCAnc3RhdHVzJykgJiYgcGFyc2VJbnQoZGF0YS5zdGF0dXMsIDEwKSAhPT0gMCkge1xuICAgICAgICAvLyBTb21lIHNlcnZlcnMsIGxpa2UgY2hyb21lZHJpdmVyIG1heSByZXR1cm4gcmVzcG9uc2UgY29kZSAyMDAgZm9yIG5vbi16ZXJvIEpTT05XUCBzdGF0dXNlc1xuICAgICAgICB0aHJvd1Byb3h5RXJyb3IoZGF0YSk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXMgPSB7c3RhdHVzQ29kZTogc3RhdHVzLCBoZWFkZXJzLCBib2R5OiBkYXRhfTtcbiAgICAgIHJldHVybiBbcmVzLCBkYXRhXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBXZSBvbmx5IGNvbnNpZGVyIGFuIGVycm9yIHVuZXhwZWN0ZWQgaWYgdGhpcyB3YXMgbm90XG4gICAgICAvLyBhbiBhc3luYyByZXF1ZXN0IG1vZHVsZSBlcnJvciBvciBpZiB0aGUgcmVzcG9uc2UgY2Fubm90IGJlIGNhc3QgdG9cbiAgICAgIC8vIGEgdmFsaWQgSlNPTlxuICAgICAgbGV0IHByb3h5RXJyb3JNc2cgPSBlLm1lc3NhZ2U7XG4gICAgICBpZiAodXRpbC5oYXNWYWx1ZShlLnJlc3BvbnNlKSkge1xuICAgICAgICBpZiAoIWlzUmVzcG9uc2VMb2dnZWQpIHtcbiAgICAgICAgICBjb25zdCBlcnJvciA9IHRydW5jYXRlQm9keShlLnJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgIHRoaXMubG9nLmluZm8oXG4gICAgICAgICAgICB1dGlsLmhhc1ZhbHVlKGUucmVzcG9uc2Uuc3RhdHVzKVxuICAgICAgICAgICAgICA/IGBHb3QgcmVzcG9uc2Ugd2l0aCBzdGF0dXMgJHtlLnJlc3BvbnNlLnN0YXR1c306ICR7ZXJyb3J9YFxuICAgICAgICAgICAgICA6IGBHb3QgcmVzcG9uc2Ugd2l0aCB1bmtub3duIHN0YXR1czogJHtlcnJvcn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJveHlFcnJvck1zZyA9IGBDb3VsZCBub3QgcHJveHkgY29tbWFuZCB0byB0aGUgcmVtb3RlIHNlcnZlci4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWA7XG4gICAgICAgIGlmIChDT01QQUNUX0VSUk9SX1BBVFRFUk5TLnNvbWUoKHApID0+IHAudGVzdChlLm1lc3NhZ2UpKSkge1xuICAgICAgICAgIHRoaXMubG9nLmluZm8oZS5tZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKGUuc3RhY2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLlByb3h5UmVxdWVzdEVycm9yKHByb3h5RXJyb3JNc2csIGUucmVzcG9uc2U/LmRhdGEsIGUucmVzcG9uc2U/LnN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJvdG9jb2xGcm9tUmVzQm9keShyZXNPYmopIHtcbiAgICBpZiAoXy5pc0ludGVnZXIocmVzT2JqLnN0YXR1cykpIHtcbiAgICAgIHJldHVybiBNSlNPTldQO1xuICAgIH1cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocmVzT2JqLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIFczQztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkhUVFBNZXRob2R9IG1ldGhvZFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH1cbiAgICovXG4gIHJlcXVlc3RUb0NvbW1hbmROYW1lKHVybCwgbWV0aG9kKSB7XG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gcGF0dGVyblxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfVxuICAgICAqL1xuICAgIGNvbnN0IGV4dHJhY3RDb21tYW5kTmFtZSA9IChwYXR0ZXJuKSA9PiB7XG4gICAgICBjb25zdCBwYXRoTWF0Y2ggPSBwYXR0ZXJuLmV4ZWModXJsKTtcbiAgICAgIGlmIChwYXRoTWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIHJvdXRlVG9Db21tYW5kTmFtZShwYXRoTWF0Y2hbMV0sIG1ldGhvZCwgdGhpcy5yZXFCYXNlUGF0aCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBsZXQgY29tbWFuZE5hbWUgPSByb3V0ZVRvQ29tbWFuZE5hbWUodXJsLCBtZXRob2QsIHRoaXMucmVxQmFzZVBhdGgpO1xuICAgIGlmICghY29tbWFuZE5hbWUgJiYgXy5pbmNsdWRlcyh1cmwsIGAke3RoaXMucmVxQmFzZVBhdGh9L3Nlc3Npb24vYCkpIHtcbiAgICAgIGNvbW1hbmROYW1lID0gZXh0cmFjdENvbW1hbmROYW1lKFxuICAgICAgICBuZXcgUmVnRXhwKGAke18uZXNjYXBlUmVnRXhwKHRoaXMucmVxQmFzZVBhdGgpfS9zZXNzaW9uL1teL10rKC4rKWApXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIWNvbW1hbmROYW1lICYmIF8uaW5jbHVkZXModXJsLCB0aGlzLnJlcUJhc2VQYXRoKSkge1xuICAgICAgY29tbWFuZE5hbWUgPSBleHRyYWN0Q29tbWFuZE5hbWUobmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cCh0aGlzLnJlcUJhc2VQYXRoKX0oLy4rKWApKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbW1hbmROYW1lO1xuICB9XG5cbiAgYXN5bmMgcHJveHlDb21tYW5kKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGNvbnN0IGNvbW1hbmROYW1lID0gdGhpcy5yZXF1ZXN0VG9Db21tYW5kTmFtZSh1cmwsIG1ldGhvZCk7XG4gICAgaWYgKCFjb21tYW5kTmFtZSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHkodXJsLCBtZXRob2QsIGJvZHkpO1xuICAgIH1cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgTWF0Y2hlZCAnJHt1cmx9JyB0byBjb21tYW5kIG5hbWUgJyR7Y29tbWFuZE5hbWV9J2ApO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJvdG9jb2xDb252ZXJ0ZXIuY29udmVydEFuZFByb3h5KGNvbW1hbmROYW1lLCB1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cblxuICBhc3luYyBjb21tYW5kKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGxldCByZXNwb25zZTtcbiAgICBsZXQgcmVzQm9keU9iajtcbiAgICB0cnkge1xuICAgICAgW3Jlc3BvbnNlLCByZXNCb2R5T2JqXSA9IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZXJyLmdldEFjdHVhbEVycm9yKCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25FcnJvcihlcnIubWVzc2FnZSk7XG4gICAgfVxuICAgIGNvbnN0IHByb3RvY29sID0gdGhpcy5nZXRQcm90b2NvbEZyb21SZXNCb2R5KHJlc0JvZHlPYmopO1xuICAgIGlmIChwcm90b2NvbCA9PT0gTUpTT05XUCkge1xuICAgICAgLy8gR290IHJlc3BvbnNlIGluIE1KU09OV1AgZm9ybWF0XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA9PT0gMjAwICYmIHJlc0JvZHlPYmouc3RhdHVzID09PSAwKSB7XG4gICAgICAgIHJldHVybiByZXNCb2R5T2JqLnZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3RhdHVzID0gcGFyc2VJbnQocmVzQm9keU9iai5zdGF0dXMsIDEwKTtcbiAgICAgIGlmICghaXNOYU4oc3RhdHVzKSAmJiBzdGF0dXMgIT09IDApIHtcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSByZXNCb2R5T2JqLnZhbHVlO1xuICAgICAgICBpZiAoXy5oYXMobWVzc2FnZSwgJ21lc3NhZ2UnKSkge1xuICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLm1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUoXG4gICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgIF8uaXNFbXB0eShtZXNzYWdlKSA/IGdldFN1bW1hcnlCeUNvZGUoc3RhdHVzKSA6IG1lc3NhZ2VcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb3RvY29sID09PSBXM0MpIHtcbiAgICAgIC8vIEdvdCByZXNwb25zZSBpbiBXM0MgZm9ybWF0XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA8IDMwMCkge1xuICAgICAgICByZXR1cm4gcmVzQm9keU9iai52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzUGxhaW5PYmplY3QocmVzQm9keU9iai52YWx1ZSkgJiYgcmVzQm9keU9iai52YWx1ZS5lcnJvcikge1xuICAgICAgICB0aHJvdyBlcnJvckZyb21XM0NKc29uQ29kZShcbiAgICAgICAgICByZXNCb2R5T2JqLnZhbHVlLmVycm9yLFxuICAgICAgICAgIHJlc0JvZHlPYmoudmFsdWUubWVzc2FnZSxcbiAgICAgICAgICByZXNCb2R5T2JqLnZhbHVlLnN0YWNrdHJhY2VcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuICAgICAgLy8gVW5rbm93biBwcm90b2NvbC4gS2VlcGluZyBpdCBiZWNhdXNlIG9mIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICByZXR1cm4gcmVzQm9keU9iajtcbiAgICB9XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duRXJyb3IoXG4gICAgICBgRGlkIG5vdCBrbm93IHdoYXQgdG8gZG8gd2l0aCByZXNwb25zZSBjb2RlICcke3Jlc3BvbnNlLnN0YXR1c0NvZGV9JyBgICtcbiAgICAgICAgYGFuZCByZXNwb25zZSBib2R5ICcke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkocmVzQm9keU9iaiksIHtcbiAgICAgICAgICBsZW5ndGg6IDMwMCxcbiAgICAgICAgfSl9J2BcbiAgICApO1xuICB9XG5cbiAgZ2V0U2Vzc2lvbklkRnJvbVVybCh1cmwpIHtcbiAgICBjb25zdCBtYXRjaCA9IHVybC5tYXRjaCgvXFwvc2Vzc2lvblxcLyhbXi9dKykvKTtcbiAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6IG51bGw7XG4gIH1cblxuICBhc3luYyBwcm94eVJlcVJlcyhyZXEsIHJlcykge1xuICAgIC8vICEgdGhpcyBtZXRob2QgbXVzdCBub3QgdGhyb3cgYW55IGV4Y2VwdGlvbnNcbiAgICAvLyAhIG1ha2Ugc3VyZSB0byBjYWxsIHJlcy5zZW5kIGJlZm9yZSByZXR1cm5cbiAgICBsZXQgc3RhdHVzQ29kZTtcbiAgICBsZXQgcmVzQm9keU9iajtcbiAgICB0cnkge1xuICAgICAgbGV0IHJlc3BvbnNlO1xuICAgICAgW3Jlc3BvbnNlLCByZXNCb2R5T2JqXSA9IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKHJlcS5vcmlnaW5hbFVybCwgcmVxLm1ldGhvZCwgcmVxLmJvZHkpO1xuICAgICAgcmVzLmhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzO1xuICAgICAgc3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1c0NvZGU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBbc3RhdHVzQ29kZSwgcmVzQm9keU9ial0gPSBnZXRSZXNwb25zZUZvclczQ0Vycm9yKFxuICAgICAgICBpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcikgPyBlcnIuZ2V0QWN0dWFsRXJyb3IoKSA6IGVyclxuICAgICAgKTtcbiAgICB9XG4gICAgcmVzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnKTtcbiAgICBpZiAoIV8uaXNQbGFpbk9iamVjdChyZXNCb2R5T2JqKSkge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgZXJyb3JzLlVua25vd25FcnJvcihcbiAgICAgICAgYFRoZSBkb3duc3RyZWFtIHNlcnZlciByZXNwb25zZSB3aXRoIHRoZSBzdGF0dXMgY29kZSAke3N0YXR1c0NvZGV9IGlzIG5vdCBhIHZhbGlkIEpTT04gb2JqZWN0OiBgICtcbiAgICAgICAgICBfLnRydW5jYXRlKGAke3Jlc0JvZHlPYmp9YCwge2xlbmd0aDogMzAwfSlcbiAgICAgICk7XG4gICAgICBbc3RhdHVzQ29kZSwgcmVzQm9keU9ial0gPSBnZXRSZXNwb25zZUZvclczQ0Vycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICAvLyBpZiB0aGUgcHJveGllZCByZXNwb25zZSBjb250YWlucyBhIHNlc3Npb25JZCB0aGF0IHRoZSBkb3duc3RyZWFtXG4gICAgLy8gZHJpdmVyIGhhcyBnZW5lcmF0ZWQsIHdlIGRvbid0IHdhbnQgdG8gcmV0dXJuIHRoYXQgdG8gdGhlIGNsaWVudC5cbiAgICAvLyBJbnN0ZWFkLCByZXR1cm4gdGhlIGlkIGZyb20gdGhlIHJlcXVlc3Qgb3IgZnJvbSBjdXJyZW50IHNlc3Npb25cbiAgICBpZiAoXy5oYXMocmVzQm9keU9iaiwgJ3Nlc3Npb25JZCcpKSB7XG4gICAgICBjb25zdCByZXFTZXNzaW9uSWQgPSB0aGlzLmdldFNlc3Npb25JZEZyb21VcmwocmVxLm9yaWdpbmFsVXJsKTtcbiAgICAgIGlmIChyZXFTZXNzaW9uSWQpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgUmVwbGFjaW5nIHNlc3Npb25JZCAke3Jlc0JvZHlPYmouc2Vzc2lvbklkfSB3aXRoICR7cmVxU2Vzc2lvbklkfWApO1xuICAgICAgICByZXNCb2R5T2JqLnNlc3Npb25JZCA9IHJlcVNlc3Npb25JZDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZXNzaW9uSWQpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgUmVwbGFjaW5nIHNlc3Npb25JZCAke3Jlc0JvZHlPYmouc2Vzc2lvbklkfSB3aXRoICR7dGhpcy5zZXNzaW9uSWR9YCk7XG4gICAgICAgIHJlc0JvZHlPYmouc2Vzc2lvbklkID0gdGhpcy5zZXNzaW9uSWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc0JvZHlPYmoudmFsdWUgPSBmb3JtYXRSZXNwb25zZVZhbHVlKHJlc0JvZHlPYmoudmFsdWUpO1xuICAgIHJlcy5zdGF0dXMoc3RhdHVzQ29kZSkuc2VuZChKU09OLnN0cmluZ2lmeShmb3JtYXRTdGF0dXMocmVzQm9keU9iaikpKTtcbiAgfVxufVxuXG5leHBvcnQge0pXUHJveHl9O1xuZXhwb3J0IGRlZmF1bHQgSldQcm94eTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7RXJyb3IgJiB7cmVzcG9uc2U6IHtkYXRhOiBpbXBvcnQoJ3R5cGUtZmVzdCcpLkpzb25PYmplY3QsIHN0YXR1czogaW1wb3J0KCdodHRwLXN0YXR1cy1jb2RlcycpLlN0YXR1c0NvZGVzfX19IFByb3h5RXJyb3JcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQU9BOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFdBQVcsR0FBR0MsZUFBQSxDQUFPQyxTQUFQLENBQWlCLFVBQWpCLENBQXBCOztBQUNBLE1BQU1DLHVCQUF1QixHQUFHLE1BQWhDO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsQ0FBQyxrQkFBRCxFQUFxQixnQkFBckIsQ0FBL0I7QUFFQSxNQUFNO0VBQUNDLE9B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
@@ -1,6 +1,8 @@
1
1
  import { routeConfiguringFunction } from "./protocol";
2
2
  import { errors } from "./errors";
3
3
  import { isErrorType } from "./errors";
4
+ import { makeArgs } from "./protocol";
5
+ import { checkParams } from "./protocol";
4
6
  import { errorFromMJSONWPStatusCode } from "./errors";
5
7
  import { errorFromW3CJsonCode } from "./errors";
6
8
  import { ALL_COMMANDS } from "./routes";
@@ -12,5 +14,5 @@ import { determineProtocol } from "./protocol";
12
14
  import { CREATE_SESSION_COMMAND } from "./protocol";
13
15
  import { DELETE_SESSION_COMMAND } from "./protocol";
14
16
  import { GET_STATUS_COMMAND } from "./protocol";
15
- export { routeConfiguringFunction, errors, isErrorType, errorFromMJSONWPStatusCode, errorFromW3CJsonCode, ALL_COMMANDS, METHOD_MAP, routeToCommandName, NO_SESSION_ID_COMMANDS, isSessionCommand, determineProtocol, CREATE_SESSION_COMMAND, DELETE_SESSION_COMMAND, GET_STATUS_COMMAND };
17
+ export { routeConfiguringFunction, errors, isErrorType, makeArgs, checkParams, errorFromMJSONWPStatusCode, errorFromW3CJsonCode, ALL_COMMANDS, METHOD_MAP, routeToCommandName, NO_SESSION_ID_COMMANDS, isSessionCommand, determineProtocol, CREATE_SESSION_COMMAND, DELETE_SESSION_COMMAND, GET_STATUS_COMMAND };
16
18
  //# sourceMappingURL=index.d.ts.map
@@ -39,6 +39,12 @@ Object.defineProperty(exports, "NO_SESSION_ID_COMMANDS", {
39
39
  return _routes.NO_SESSION_ID_COMMANDS;
40
40
  }
41
41
  });
42
+ Object.defineProperty(exports, "checkParams", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _protocol.checkParams;
46
+ }
47
+ });
42
48
  Object.defineProperty(exports, "determineProtocol", {
43
49
  enumerable: true,
44
50
  get: function () {
@@ -75,6 +81,12 @@ Object.defineProperty(exports, "isSessionCommand", {
75
81
  return _protocol.isSessionCommand;
76
82
  }
77
83
  });
84
+ Object.defineProperty(exports, "makeArgs", {
85
+ enumerable: true,
86
+ get: function () {
87
+ return _protocol.makeArgs;
88
+ }
89
+ });
78
90
  Object.defineProperty(exports, "routeConfiguringFunction", {
79
91
  enumerable: true,
80
92
  get: function () {
@@ -95,4 +107,4 @@ var _protocol = require("./protocol");
95
107
  var _routes = require("./routes");
96
108
 
97
109
  var _errors = require("./errors");
98
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3Byb3RvY29sL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzU2Vzc2lvbkNvbW1hbmQsXG4gIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbixcbiAgZGV0ZXJtaW5lUHJvdG9jb2wsXG4gIENSRUFURV9TRVNTSU9OX0NPTU1BTkQsXG4gIERFTEVURV9TRVNTSU9OX0NPTU1BTkQsXG4gIEdFVF9TVEFUVVNfQ09NTUFORCxcbn0gZnJvbSAnLi9wcm90b2NvbCc7XG5pbXBvcnQge05PX1NFU1NJT05fSURfQ09NTUFORFMsIEFMTF9DT01NQU5EUywgTUVUSE9EX01BUCwgcm91dGVUb0NvbW1hbmROYW1lfSBmcm9tICcuL3JvdXRlcyc7XG5pbXBvcnQge2Vycm9ycywgaXNFcnJvclR5cGUsIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlLCBlcnJvckZyb21XM0NKc29uQ29kZX0gZnJvbSAnLi9lcnJvcnMnO1xuXG5leHBvcnQge1xuICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24sXG4gIGVycm9ycyxcbiAgaXNFcnJvclR5cGUsXG4gIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlLFxuICBlcnJvckZyb21XM0NKc29uQ29kZSxcbiAgQUxMX0NPTU1BTkRTLFxuICBNRVRIT0RfTUFQLFxuICByb3V0ZVRvQ29tbWFuZE5hbWUsXG4gIE5PX1NFU1NJT05fSURfQ09NTUFORFMsXG4gIGlzU2Vzc2lvbkNvbW1hbmQsXG4gIGRldGVybWluZVByb3RvY29sLFxuICBDUkVBVEVfU0VTU0lPTl9DT01NQU5ELFxuICBERUxFVEVfU0VTU0lPTl9DT01NQU5ELFxuICBHRVRfU1RBVFVTX0NPTU1BTkQsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQVFBOztBQUNBIn0=
110
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3Byb3RvY29sL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGlzU2Vzc2lvbkNvbW1hbmQsXG4gIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbixcbiAgZGV0ZXJtaW5lUHJvdG9jb2wsXG4gIENSRUFURV9TRVNTSU9OX0NPTU1BTkQsXG4gIERFTEVURV9TRVNTSU9OX0NPTU1BTkQsXG4gIEdFVF9TVEFUVVNfQ09NTUFORCxcbiAgbWFrZUFyZ3MsXG4gIGNoZWNrUGFyYW1zLFxufSBmcm9tICcuL3Byb3RvY29sJztcbmltcG9ydCB7Tk9fU0VTU0lPTl9JRF9DT01NQU5EUywgQUxMX0NPTU1BTkRTLCBNRVRIT0RfTUFQLCByb3V0ZVRvQ29tbWFuZE5hbWV9IGZyb20gJy4vcm91dGVzJztcbmltcG9ydCB7ZXJyb3JzLCBpc0Vycm9yVHlwZSwgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUsIGVycm9yRnJvbVczQ0pzb25Db2RlfSBmcm9tICcuL2Vycm9ycyc7XG5cbmV4cG9ydCB7XG4gIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbixcbiAgZXJyb3JzLFxuICBpc0Vycm9yVHlwZSxcbiAgbWFrZUFyZ3MsXG4gIGNoZWNrUGFyYW1zLFxuICBlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZSxcbiAgZXJyb3JGcm9tVzNDSnNvbkNvZGUsXG4gIEFMTF9DT01NQU5EUyxcbiAgTUVUSE9EX01BUCxcbiAgcm91dGVUb0NvbW1hbmROYW1lLFxuICBOT19TRVNTSU9OX0lEX0NPTU1BTkRTLFxuICBpc1Nlc3Npb25Db21tYW5kLFxuICBkZXRlcm1pbmVQcm90b2NvbCxcbiAgQ1JFQVRFX1NFU1NJT05fQ09NTUFORCxcbiAgREVMRVRFX1NFU1NJT05fQ09NTUFORCxcbiAgR0VUX1NUQVRVU19DT01NQU5ELFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFVQTs7QUFDQSJ9
@@ -1,7 +1,11 @@
1
- export function routeConfiguringFunction(driver: any): (app: any, { basePath, extraMethodMap }: {
2
- basePath?: string | undefined;
3
- extraMethodMap?: {} | undefined;
4
- }) => void;
1
+ export function checkParams(paramSets: any, jsonObj: any, protocol: any): void;
2
+ export function makeArgs(requestParams: any, jsonObj: any, payloadParams: any, protocol: any): any;
3
+ /**
4
+ *
5
+ * @param {import('@appium/types').Core} driver
6
+ * @returns {import('../express/server').RouteConfiguringFunction}
7
+ */
8
+ export function routeConfiguringFunction(driver: import('@appium/types').Core): import('../express/server').RouteConfiguringFunction;
5
9
  export function isSessionCommand(command: any): boolean;
6
10
  export function driverShouldDoJwpProxy(driver: any, req: any, command: any): boolean;
7
11
  export function determineProtocol(createSessionArgs: any): string;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../lib/protocol/protocol.js"],"names":[],"mappings":"AAsNA;;;WAgCC;AA/MD,wDAEC;AAiaD,qFAmBC;AAzcD,kEAEC;AAND,qDAA+C;AAC/C,qDAA+C;AAC/C,6CAAuC"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../lib/protocol/protocol.js"],"names":[],"mappings":"AAgGA,+EA2DC;AASD,mGAgDC;AAED;;;;GAIG;AACH,iDAHW,OAAO,eAAe,EAAE,IAAI,GAC1B,OAAO,mBAAmB,EAAE,wBAAwB,CAoChE;AAtND,wDAEC;AAwaD,qFAmBC;AAhdD,kEAEC;AAND,qDAA+C;AAC/C,qDAA+C;AAC/C,6CAAuC"}