@appium/base-driver 8.5.3 → 8.5.4

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 (141) hide show
  1. package/build/lib/basedriver/capabilities.d.ts.map +1 -1
  2. package/build/lib/basedriver/capabilities.js +1 -1
  3. package/build/lib/basedriver/commands/event.js +1 -1
  4. package/build/lib/basedriver/commands/find.d.ts.map +1 -1
  5. package/build/lib/basedriver/commands/find.js +1 -1
  6. package/build/lib/basedriver/commands/index.js +1 -1
  7. package/build/lib/basedriver/commands/log.d.ts.map +1 -1
  8. package/build/lib/basedriver/commands/log.js +1 -1
  9. package/build/lib/basedriver/commands/session.js +1 -1
  10. package/build/lib/basedriver/commands/settings.d.ts.map +1 -1
  11. package/build/lib/basedriver/commands/settings.js +1 -1
  12. package/build/lib/basedriver/commands/timeout.d.ts.map +1 -1
  13. package/build/lib/basedriver/commands/timeout.js +1 -1
  14. package/build/lib/basedriver/core.d.ts +120 -139
  15. package/build/lib/basedriver/core.d.ts.map +1 -1
  16. package/build/lib/basedriver/core.js +1 -49
  17. package/build/lib/basedriver/desired-caps.d.ts +5 -2
  18. package/build/lib/basedriver/desired-caps.d.ts.map +1 -1
  19. package/build/lib/basedriver/desired-caps.js +14 -18
  20. package/build/lib/basedriver/device-settings.d.ts +9 -9
  21. package/build/lib/basedriver/device-settings.d.ts.map +1 -1
  22. package/build/lib/basedriver/device-settings.js +4 -4
  23. package/build/lib/basedriver/driver.d.ts +43 -38
  24. package/build/lib/basedriver/driver.d.ts.map +1 -1
  25. package/build/lib/basedriver/driver.js +58 -11
  26. package/build/lib/basedriver/helpers.d.ts +8 -3
  27. package/build/lib/basedriver/helpers.d.ts.map +1 -1
  28. package/build/lib/basedriver/helpers.js +4 -6
  29. package/build/lib/basedriver/logger.d.ts +1 -1
  30. package/build/lib/basedriver/logger.d.ts.map +1 -1
  31. package/build/lib/basedriver/logger.js +1 -1
  32. package/build/lib/constants.js +1 -1
  33. package/build/lib/express/crash.d.ts.map +1 -1
  34. package/build/lib/express/crash.js +1 -1
  35. package/build/lib/express/express-logging.d.ts.map +1 -1
  36. package/build/lib/express/express-logging.js +1 -1
  37. package/build/lib/express/idempotency.js +1 -1
  38. package/build/lib/express/logger.d.ts +1 -1
  39. package/build/lib/express/logger.d.ts.map +1 -1
  40. package/build/lib/express/logger.js +1 -1
  41. package/build/lib/express/middleware.d.ts.map +1 -1
  42. package/build/lib/express/middleware.js +1 -1
  43. package/build/lib/express/server.d.ts +21 -0
  44. package/build/lib/express/server.d.ts.map +1 -1
  45. package/build/lib/express/server.js +4 -9
  46. package/build/lib/express/static.d.ts.map +1 -1
  47. package/build/lib/express/static.js +2 -2
  48. package/build/lib/express/websocket.d.ts +14 -11
  49. package/build/lib/express/websocket.d.ts.map +1 -1
  50. package/build/lib/express/websocket.js +2 -2
  51. package/build/lib/helpers/capabilities.d.ts.map +1 -1
  52. package/build/lib/helpers/capabilities.js +1 -1
  53. package/build/lib/index.d.ts +2 -1
  54. package/build/lib/index.js +7 -1
  55. package/build/lib/jsonwp-proxy/protocol-converter.d.ts.map +1 -1
  56. package/build/lib/jsonwp-proxy/protocol-converter.js +2 -2
  57. package/build/lib/jsonwp-proxy/proxy.d.ts +30 -5
  58. package/build/lib/jsonwp-proxy/proxy.d.ts.map +1 -1
  59. package/build/lib/jsonwp-proxy/proxy.js +20 -4
  60. package/build/lib/jsonwp-status/status.d.ts.map +1 -1
  61. package/build/lib/jsonwp-status/status.js +2 -2
  62. package/build/lib/protocol/errors.d.ts +17 -8
  63. package/build/lib/protocol/errors.d.ts.map +1 -1
  64. package/build/lib/protocol/errors.js +9 -5
  65. package/build/lib/protocol/helpers.js +1 -1
  66. package/build/lib/protocol/index.js +1 -1
  67. package/build/lib/protocol/protocol.d.ts.map +1 -1
  68. package/build/lib/protocol/protocol.js +1 -1
  69. package/build/lib/protocol/routes.d.ts +17 -3
  70. package/build/lib/protocol/routes.d.ts.map +1 -1
  71. package/build/lib/protocol/routes.js +1 -1
  72. package/build/lib/protocol/validators.js +1 -1
  73. package/build/test/basedriver/driver-e2e-tests.js +1 -1
  74. package/build/test/basedriver/driver-tests.js +1 -1
  75. package/build/test/basedriver/index.js +1 -1
  76. package/build/test/e2e/basedriver/driver.e2e.spec.js +1 -1
  77. package/build/test/e2e/basedriver/helpers.e2e.spec.js +1 -1
  78. package/build/test/e2e/basedriver/websockets.e2e.spec.js +1 -1
  79. package/build/test/e2e/express/server.e2e.spec.js +1 -1
  80. package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +1 -1
  81. package/build/test/e2e/protocol/fake-driver.js +1 -1
  82. package/build/test/e2e/protocol/helpers.js +1 -1
  83. package/build/test/e2e/protocol/protocol.e2e.spec.js +13 -13
  84. package/build/test/helpers.js +1 -1
  85. package/build/test/unit/basedriver/capabilities.spec.js +12 -12
  86. package/build/test/unit/basedriver/capability.spec.js +15 -15
  87. package/build/test/unit/basedriver/commands/event.spec.js +1 -1
  88. package/build/test/unit/basedriver/commands/log.spec.js +1 -1
  89. package/build/test/unit/basedriver/device-settings.spec.js +1 -1
  90. package/build/test/unit/basedriver/driver.spec.js +1 -1
  91. package/build/test/unit/basedriver/helpers.spec.js +33 -33
  92. package/build/test/unit/basedriver/timeout.spec.js +1 -1
  93. package/build/test/unit/express/server.spec.js +1 -1
  94. package/build/test/unit/express/static.spec.js +2 -2
  95. package/build/test/unit/jsonwp-proxy/mock-request.js +1 -1
  96. package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +1 -1
  97. package/build/test/unit/jsonwp-proxy/proxy.spec.js +2 -2
  98. package/build/test/unit/jsonwp-proxy/url.spec.js +1 -1
  99. package/build/test/unit/jsonwp-status/status.spec.js +1 -1
  100. package/build/test/unit/protocol/errors.spec.js +1 -1
  101. package/build/test/unit/protocol/routes.spec.js +1 -1
  102. package/build/test/unit/protocol/validator.spec.js +1 -1
  103. package/build/tsconfig.tsbuildinfo +1 -1
  104. package/lib/basedriver/capabilities.js +95 -47
  105. package/lib/basedriver/commands/event.js +4 -4
  106. package/lib/basedriver/commands/find.js +12 -26
  107. package/lib/basedriver/commands/index.js +7 -7
  108. package/lib/basedriver/commands/log.js +5 -7
  109. package/lib/basedriver/commands/session.js +3 -3
  110. package/lib/basedriver/commands/settings.js +3 -5
  111. package/lib/basedriver/commands/timeout.js +18 -23
  112. package/lib/basedriver/core.js +150 -229
  113. package/lib/basedriver/desired-caps.js +30 -29
  114. package/lib/basedriver/device-settings.js +21 -20
  115. package/lib/basedriver/driver.js +131 -96
  116. package/lib/basedriver/helpers.js +124 -81
  117. package/lib/basedriver/logger.js +1 -1
  118. package/lib/constants.js +2 -6
  119. package/lib/express/crash.js +4 -6
  120. package/lib/express/express-logging.js +26 -24
  121. package/lib/express/idempotency.js +16 -16
  122. package/lib/express/logger.js +1 -1
  123. package/lib/express/middleware.js +49 -33
  124. package/lib/express/server.js +68 -44
  125. package/lib/express/static.js +11 -12
  126. package/lib/express/websocket.js +26 -16
  127. package/lib/helpers/capabilities.js +11 -16
  128. package/lib/index.js +50 -33
  129. package/lib/jsonwp-proxy/protocol-converter.js +85 -69
  130. package/lib/jsonwp-proxy/proxy.js +116 -53
  131. package/lib/jsonwp-status/status.js +36 -29
  132. package/lib/protocol/errors.js +469 -292
  133. package/lib/protocol/helpers.js +5 -8
  134. package/lib/protocol/index.js +22 -15
  135. package/lib/protocol/protocol.js +103 -55
  136. package/lib/protocol/routes.js +430 -273
  137. package/lib/protocol/validators.js +5 -5
  138. package/package.json +7 -6
  139. package/test/basedriver/driver-e2e-tests.js +92 -66
  140. package/test/basedriver/driver-tests.js +90 -33
  141. package/test/basedriver/index.js +1 -1
@@ -41,10 +41,18 @@ const {
41
41
  } = _constants.PROTOCOLS;
42
42
 
43
43
  class JWProxy {
44
+ scheme;
45
+ server;
46
+ port;
47
+ base;
48
+ reqBasePath;
49
+ sessionId;
50
+ timeout;
51
+
44
52
  constructor(opts = {}) {
45
53
  var _opts$keepAlive;
46
54
 
47
- _lodash.default.defaults(this, opts, {
55
+ const options = _lodash.default.defaults(opts, {
48
56
  scheme: 'http',
49
57
  server: 'localhost',
50
58
  port: 4444,
@@ -54,7 +62,8 @@ class JWProxy {
54
62
  timeout: DEFAULT_REQUEST_TIMEOUT
55
63
  });
56
64
 
57
- this.scheme = this.scheme.toLowerCase();
65
+ options.scheme = options.scheme.toLowerCase();
66
+ Object.assign(this, options);
58
67
  this._activeRequests = [];
59
68
  this._downstreamProtocol = null;
60
69
  const agentOpts = {
@@ -149,6 +158,10 @@ class JWProxy {
149
158
  const sessionBaseRe = new RegExp('^/session/([^/]+)');
150
159
 
151
160
  if (sessionBaseRe.test(remainingUrl)) {
161
+ if (this.sessionId === null) {
162
+ throw new ReferenceError(`Session ID is not set, but saw a URL path referencing a session (${remainingUrl}). This may be a bug in your client.`);
163
+ }
164
+
152
165
  const match = sessionBaseRe.exec(remainingUrl);
153
166
  remainingUrl = remainingUrl.replace(match[1], this.sessionId);
154
167
  } else if (requiresSessionId) {
@@ -277,7 +290,10 @@ class JWProxy {
277
290
  requestToCommandName(url, method) {
278
291
  const extractCommandName = pattern => {
279
292
  const pathMatch = pattern.exec(url);
280
- return pathMatch ? (0, _protocol.routeToCommandName)(pathMatch[1], method, this.reqBasePath) : null;
293
+
294
+ if (pathMatch) {
295
+ return (0, _protocol.routeToCommandName)(pathMatch[1], method, this.reqBasePath);
296
+ }
281
297
  };
282
298
 
283
299
  let commandName = (0, _protocol.routeToCommandName)(url, method, this.reqBasePath);
@@ -401,4 +417,4 @@ class JWProxy {
401
417
  exports.JWProxy = JWProxy;
402
418
  var _default = JWProxy;
403
419
  exports.default = _default;
404
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX0xPRyIsImxvZ2dlciIsImdldExvZ2dlciIsIkRFRkFVTFRfUkVRVUVTVF9USU1FT1VUIiwiQ09NUEFDVF9FUlJPUl9QQVRURVJOUyIsIk1KU09OV1AiLCJXM0MiLCJQUk9UT0NPTFMiLCJKV1Byb3h5IiwiY29uc3RydWN0b3IiLCJvcHRzIiwiXyIsImRlZmF1bHRzIiwic2NoZW1lIiwic2VydmVyIiwicG9ydCIsImJhc2UiLCJERUZBVUxUX0JBU0VfUEFUSCIsInJlcUJhc2VQYXRoIiwic2Vzc2lvbklkIiwidGltZW91dCIsInRvTG93ZXJDYXNlIiwiX2FjdGl2ZVJlcXVlc3RzIiwiX2Rvd25zdHJlYW1Qcm90b2NvbCIsImFnZW50T3B0cyIsImtlZXBBbGl2ZSIsIm1heFNvY2tldHMiLCJtYXhGcmVlU29ja2V0cyIsImh0dHBBZ2VudCIsImh0dHAiLCJBZ2VudCIsImh0dHBzQWdlbnQiLCJodHRwcyIsInByb3RvY29sQ29udmVydGVyIiwiUHJvdG9jb2xDb252ZXJ0ZXIiLCJwcm94eSIsImJpbmQiLCJsb2ciLCJfbG9nIiwicmVxdWVzdCIsInJlcXVlc3RDb25maWciLCJyZXFQcm9taXNlIiwicHVzaCIsInB1bGwiLCJnZXRBY3RpdmVSZXF1ZXN0c0NvdW50IiwibGVuZ3RoIiwiY2FuY2VsQWN0aXZlUmVxdWVzdHMiLCJlbmRwb2ludFJlcXVpcmVzU2Vzc2lvbklkIiwiZW5kcG9pbnQiLCJpbmNsdWRlcyIsImRvd25zdHJlYW1Qcm90b2NvbCIsInZhbHVlIiwiZ2V0VXJsRm9yUHJveHkiLCJ1cmwiLCJwcm94eUJhc2UiLCJlbmRwb2ludFJlIiwicmVtYWluaW5nVXJsIiwidGVzdCIsImZpcnN0IiwiUmVnRXhwIiwiZXhlYyIsIkVycm9yIiwicmVwbGFjZSIsInN0cmlwUHJlZml4UmUiLCJyZXF1aXJlc1Nlc3Npb25JZCIsInNlc3Npb25CYXNlUmUiLCJtYXRjaCIsIm1ldGhvZCIsImJvZHkiLCJ0b1VwcGVyQ2FzZSIsIm5ld1VybCIsInRydW5jYXRlQm9keSIsImNvbnRlbnQiLCJ0cnVuY2F0ZSIsImlzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsIk1BWF9MT0dfQk9EWV9MRU5HVEgiLCJyZXFPcHRzIiwiaGVhZGVycyIsImFjY2VwdCIsInV0aWwiLCJoYXNWYWx1ZSIsImRhdGEiLCJwYXJzZSIsImUiLCJkZWJ1ZyIsInRocm93UHJveHlFcnJvciIsImVycm9yIiwiZXJyIiwicmVzcG9uc2UiLCJzdGF0dXMiLCJpc1Jlc3BvbnNlTG9nZ2VkIiwiaXNQbGFpbk9iamVjdCIsImlzU2Vzc2lvbkNyZWF0aW9uUmVxdWVzdCIsImdldFByb3RvY29sRnJvbVJlc0JvZHkiLCJpbmZvIiwiaGFzIiwicGFyc2VJbnQiLCJyZXMiLCJzdGF0dXNDb2RlIiwicHJveHlFcnJvck1zZyIsIm1lc3NhZ2UiLCJzb21lIiwicCIsInN0YWNrIiwiZXJyb3JzIiwiUHJveHlSZXF1ZXN0RXJyb3IiLCJyZXNPYmoiLCJpc0ludGVnZXIiLCJpc1VuZGVmaW5lZCIsInJlcXVlc3RUb0NvbW1hbmROYW1lIiwiZXh0cmFjdENvbW1hbmROYW1lIiwicGF0dGVybiIsInBhdGhNYXRjaCIsImNvbW1hbmROYW1lIiwiZXNjYXBlUmVnRXhwIiwicHJveHlDb21tYW5kIiwiY29udmVydEFuZFByb3h5IiwiY29tbWFuZCIsInJlc0JvZHlPYmoiLCJnZXRBY3R1YWxFcnJvciIsIlVua25vd25FcnJvciIsInByb3RvY29sIiwiaXNOYU4iLCJpc0VtcHR5Iiwic3RhY2t0cmFjZSIsImdldFNlc3Npb25JZEZyb21VcmwiLCJwcm94eVJlcVJlcyIsInJlcSIsIm9yaWdpbmFsVXJsIiwic2V0IiwicmVxU2Vzc2lvbklkIiwic2VuZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9qc29ud3AtcHJveHkvcHJveHkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGxvZ2dlciwgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgZ2V0U3VtbWFyeUJ5Q29kZSB9IGZyb20gJy4uL2pzb253cC1zdGF0dXMvc3RhdHVzJztcbmltcG9ydCB7XG4gIGVycm9ycywgaXNFcnJvclR5cGUsIGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlLCBlcnJvckZyb21XM0NKc29uQ29kZSxcbiAgZ2V0UmVzcG9uc2VGb3JXM0NFcnJvcixcbn0gZnJvbSAnLi4vcHJvdG9jb2wvZXJyb3JzJztcbmltcG9ydCB7IHJvdXRlVG9Db21tYW5kTmFtZSB9IGZyb20gJy4uL3Byb3RvY29sJztcbmltcG9ydCB7IE1BWF9MT0dfQk9EWV9MRU5HVEgsIERFRkFVTFRfQkFTRV9QQVRILCBQUk9UT0NPTFMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IFByb3RvY29sQ29udmVydGVyIGZyb20gJy4vcHJvdG9jb2wtY29udmVydGVyJztcbmltcG9ydCB7IGZvcm1hdFJlc3BvbnNlVmFsdWUsIGZvcm1hdFN0YXR1cyB9IGZyb20gJy4uL3Byb3RvY29sL2hlbHBlcnMnO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuXG5jb25zdCBERUZBVUxUX0xPRyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1dEIFByb3h5Jyk7XG5jb25zdCBERUZBVUxUX1JFUVVFU1RfVElNRU9VVCA9IDI0MDAwMDtcbmNvbnN0IENPTVBBQ1RfRVJST1JfUEFUVEVSTlMgPSBbXG4gIC9cXGJFQ09OTlJFRlVTRURcXGIvLFxuICAvc29ja2V0IGhhbmcgdXAvLFxuXTtcblxuY29uc3Qge01KU09OV1AsIFczQ30gPSBQUk9UT0NPTFM7XG5cbmNsYXNzIEpXUHJveHkge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgXy5kZWZhdWx0cyh0aGlzLCBvcHRzLCB7XG4gICAgICBzY2hlbWU6ICdodHRwJyxcbiAgICAgIHNlcnZlcjogJ2xvY2FsaG9zdCcsXG4gICAgICBwb3J0OiA0NDQ0LFxuICAgICAgYmFzZTogREVGQVVMVF9CQVNFX1BBVEgsXG4gICAgICByZXFCYXNlUGF0aDogREVGQVVMVF9CQVNFX1BBVEgsXG4gICAgICBzZXNzaW9uSWQ6IG51bGwsXG4gICAgICB0aW1lb3V0OiBERUZBVUxUX1JFUVVFU1RfVElNRU9VVCxcbiAgICB9KTtcbiAgICB0aGlzLnNjaGVtZSA9IHRoaXMuc2NoZW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5fYWN0aXZlUmVxdWVzdHMgPSBbXTtcbiAgICB0aGlzLl9kb3duc3RyZWFtUHJvdG9jb2wgPSBudWxsO1xuICAgIGNvbnN0IGFnZW50T3B0cyA9IHtcbiAgICAgIGtlZXBBbGl2ZTogb3B0cy5rZWVwQWxpdmUgPz8gdHJ1ZSxcbiAgICAgIG1heFNvY2tldHM6IDEwLFxuICAgICAgbWF4RnJlZVNvY2tldHM6IDUsXG4gICAgfTtcbiAgICB0aGlzLmh0dHBBZ2VudCA9IG5ldyBodHRwLkFnZW50KGFnZW50T3B0cyk7XG4gICAgdGhpcy5odHRwc0FnZW50ID0gbmV3IGh0dHBzLkFnZW50KGFnZW50T3B0cyk7XG4gICAgdGhpcy5wcm90b2NvbENvbnZlcnRlciA9IG5ldyBQcm90b2NvbENvbnZlcnRlcih0aGlzLnByb3h5LmJpbmQodGhpcyksIG9wdHMubG9nKTtcbiAgICB0aGlzLl9sb2cgPSBvcHRzLmxvZztcbiAgfVxuXG4gIGdldCBsb2cgKCkge1xuICAgIHJldHVybiB0aGlzLl9sb2cgPz8gREVGQVVMVF9MT0c7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybXMgcmVxdWVzdHMgdG8gdGhlIGRvd25zdHJlYW0gc2VydmVyXG4gICAqXG4gICAqIEBwcml2YXRlIC0gRG8gbm90IGNhbGwgdGhpcyBtZXRob2QgZGlyZWN0bHksXG4gICAqIGl0IHVzZXMgY2xpZW50LXNwZWNpZmljIGFyZ3VtZW50cyBhbmQgcmVzcG9uc2VzIVxuICAgKlxuICAgKiBAcGFyYW0ge0F4aW9zUmVxdWVzdENvbmZpZ30gcmVxdWVzdENvbmZpZ1xuICAgKiBAcmV0dXJucyB7QXhpb3NSZXNwb25zZX1cbiAgICovXG4gIGFzeW5jIHJlcXVlc3QgKHJlcXVlc3RDb25maWcpIHtcbiAgICBjb25zdCByZXFQcm9taXNlID0gYXhpb3MocmVxdWVzdENvbmZpZyk7XG4gICAgdGhpcy5fYWN0aXZlUmVxdWVzdHMucHVzaChyZXFQcm9taXNlKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHJlcVByb21pc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIF8ucHVsbCh0aGlzLl9hY3RpdmVSZXF1ZXN0cywgcmVxUHJvbWlzZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWN0aXZlUmVxdWVzdHNDb3VudCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVJlcXVlc3RzLmxlbmd0aDtcbiAgfVxuXG4gIGNhbmNlbEFjdGl2ZVJlcXVlc3RzICgpIHtcbiAgICB0aGlzLl9hY3RpdmVSZXF1ZXN0cyA9IFtdO1xuICB9XG5cbiAgZW5kcG9pbnRSZXF1aXJlc1Nlc3Npb25JZCAoZW5kcG9pbnQpIHtcbiAgICByZXR1cm4gIV8uaW5jbHVkZXMoWycvc2Vzc2lvbicsICcvc2Vzc2lvbnMnLCAnL3N0YXR1cyddLCBlbmRwb2ludCk7XG4gIH1cblxuICBzZXQgZG93bnN0cmVhbVByb3RvY29sICh2YWx1ZSkge1xuICAgIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbCA9IHZhbHVlO1xuICAgIHRoaXMucHJvdG9jb2xDb252ZXJ0ZXIuZG93bnN0cmVhbVByb3RvY29sID0gdmFsdWU7XG4gIH1cblxuICBnZXQgZG93bnN0cmVhbVByb3RvY29sICgpIHtcbiAgICByZXR1cm4gdGhpcy5fZG93bnN0cmVhbVByb3RvY29sO1xuICB9XG5cbiAgZ2V0VXJsRm9yUHJveHkgKHVybCkge1xuICAgIGlmICh1cmwgPT09ICcnKSB7XG4gICAgICB1cmwgPSAnLyc7XG4gICAgfVxuICAgIGNvbnN0IHByb3h5QmFzZSA9IGAke3RoaXMuc2NoZW1lfTovLyR7dGhpcy5zZXJ2ZXJ9OiR7dGhpcy5wb3J0fSR7dGhpcy5iYXNlfWA7XG4gICAgY29uc3QgZW5kcG9pbnRSZSA9ICcoLyhzZXNzaW9ufHN0YXR1cykpJztcbiAgICBsZXQgcmVtYWluaW5nVXJsID0gJyc7XG4gICAgaWYgKC9eaHR0cC8udGVzdCh1cmwpKSB7XG4gICAgICBjb25zdCBmaXJzdCA9IChuZXcgUmVnRXhwKGAoaHR0cHM/Oi8vLispJHtlbmRwb2ludFJlfWApKS5leGVjKHVybCk7XG4gICAgICBpZiAoIWZpcnN0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignR290IGEgY29tcGxldGUgdXJsIGJ1dCBjb3VsZCBub3QgZXh0cmFjdCBKV1AgZW5kcG9pbnQnKTtcbiAgICAgIH1cbiAgICAgIHJlbWFpbmluZ1VybCA9IHVybC5yZXBsYWNlKGZpcnN0WzFdLCAnJyk7XG4gICAgfSBlbHNlIGlmICgobmV3IFJlZ0V4cCgnXi8nKSkudGVzdCh1cmwpKSB7XG4gICAgICByZW1haW5pbmdVcmwgPSB1cmw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlkIG5vdCBrbm93IHdoYXQgdG8gZG8gd2l0aCB1cmwgJyR7dXJsfSdgKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJpcFByZWZpeFJlID0gbmV3IFJlZ0V4cCgnXi4qPygvKHNlc3Npb258c3RhdHVzKS4qKSQnKTtcbiAgICBpZiAoc3RyaXBQcmVmaXhSZS50ZXN0KHJlbWFpbmluZ1VybCkpIHtcbiAgICAgIHJlbWFpbmluZ1VybCA9IHN0cmlwUHJlZml4UmUuZXhlYyhyZW1haW5pbmdVcmwpWzFdO1xuICAgIH1cblxuICAgIGlmICghKG5ldyBSZWdFeHAoZW5kcG9pbnRSZSkpLnRlc3QocmVtYWluaW5nVXJsKSkge1xuICAgICAgcmVtYWluaW5nVXJsID0gYC9zZXNzaW9uLyR7dGhpcy5zZXNzaW9uSWR9JHtyZW1haW5pbmdVcmx9YDtcbiAgICB9XG5cbiAgICBjb25zdCByZXF1aXJlc1Nlc3Npb25JZCA9IHRoaXMuZW5kcG9pbnRSZXF1aXJlc1Nlc3Npb25JZChyZW1haW5pbmdVcmwpO1xuXG4gICAgaWYgKHJlcXVpcmVzU2Vzc2lvbklkICYmIHRoaXMuc2Vzc2lvbklkID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyeWluZyB0byBwcm94eSBhIHNlc3Npb24gY29tbWFuZCB3aXRob3V0IHNlc3Npb24gaWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uQmFzZVJlID0gbmV3IFJlZ0V4cCgnXi9zZXNzaW9uLyhbXi9dKyknKTtcbiAgICBpZiAoc2Vzc2lvbkJhc2VSZS50ZXN0KHJlbWFpbmluZ1VybCkpIHtcbiAgICAgIC8vIHdlIGhhdmUgc29tZXRoaW5nIGxpa2UgL3Nlc3Npb24vOmlkL2Zvb2Jhciwgc28gd2UgbmVlZCB0byByZXBsYWNlXG4gICAgICAvLyB0aGUgc2Vzc2lvbiBpZFxuICAgICAgY29uc3QgbWF0Y2ggPSBzZXNzaW9uQmFzZVJlLmV4ZWMocmVtYWluaW5nVXJsKTtcbiAgICAgIHJlbWFpbmluZ1VybCA9IHJlbWFpbmluZ1VybC5yZXBsYWNlKG1hdGNoWzFdLCB0aGlzLnNlc3Npb25JZCk7XG4gICAgfSBlbHNlIGlmIChyZXF1aXJlc1Nlc3Npb25JZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCA6c2Vzc2lvbiBzZWN0aW9uIGZvciB1cmw6ICR7cmVtYWluaW5nVXJsfWApO1xuICAgIH1cbiAgICByZW1haW5pbmdVcmwgPSByZW1haW5pbmdVcmwucmVwbGFjZSgvXFwvJC8sICcnKTsgLy8gY2FuJ3QgaGF2ZSB0cmFpbGluZyBzbGFzaGVzXG5cbiAgICByZXR1cm4gcHJveHlCYXNlICsgcmVtYWluaW5nVXJsO1xuICB9XG5cbiAgYXN5bmMgcHJveHkgKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIG1ldGhvZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IG5ld1VybCA9IHRoaXMuZ2V0VXJsRm9yUHJveHkodXJsKTtcbiAgICBjb25zdCB0cnVuY2F0ZUJvZHkgPSAoY29udGVudCkgPT4gXy50cnVuY2F0ZShcbiAgICAgIF8uaXNTdHJpbmcoY29udGVudCkgPyBjb250ZW50IDogSlNPTi5zdHJpbmdpZnkoY29udGVudCksXG4gICAgICB7IGxlbmd0aDogTUFYX0xPR19CT0RZX0xFTkdUSCB9KTtcbiAgICBjb25zdCByZXFPcHRzID0ge1xuICAgICAgdXJsOiBuZXdVcmwsXG4gICAgICBtZXRob2QsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCcsXG4gICAgICAgICd1c2VyLWFnZW50JzogJ2FwcGl1bScsXG4gICAgICAgIGFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24sICovKicsXG4gICAgICB9LFxuICAgICAgcHJveHk6IGZhbHNlLFxuICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgaHR0cEFnZW50OiB0aGlzLmh0dHBBZ2VudCxcbiAgICAgIGh0dHBzQWdlbnQ6IHRoaXMuaHR0cHNBZ2VudCxcbiAgICB9O1xuICAgIC8vIEdFVCBtZXRob2RzIHNob3VsZG4ndCBoYXZlIGFueSBib2R5LiBNb3N0IHNlcnZlcnMgYXJlIE9LIHdpdGggdGhpcywgYnV0IFdlYkRyaXZlckFnZW50IHRocm93cyA0MDAgZXJyb3JzXG4gICAgaWYgKHV0aWwuaGFzVmFsdWUoYm9keSkgJiYgbWV0aG9kICE9PSAnR0VUJykge1xuICAgICAgaWYgKHR5cGVvZiBib2R5ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlcU9wdHMuZGF0YSA9IEpTT04ucGFyc2UoYm9keSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBpbnRlcnByZXQgdGhlIHJlcXVlc3QgYm9keSBhcyB2YWxpZCBKU09OOiAke3RydW5jYXRlQm9keShib2R5KX1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVxT3B0cy5kYXRhID0gYm9keTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUHJveHlpbmcgWyR7bWV0aG9kfSAke3VybCB8fCAnLyd9XSB0byBbJHttZXRob2R9ICR7bmV3VXJsfV0gYCArXG4gICAgICAocmVxT3B0cy5kYXRhID8gYHdpdGggYm9keTogJHt0cnVuY2F0ZUJvZHkocmVxT3B0cy5kYXRhKX1gIDogJ3dpdGggbm8gYm9keScpKTtcblxuICAgIGNvbnN0IHRocm93UHJveHlFcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGBUaGUgcmVxdWVzdCB0byAke3VybH0gaGFzIGZhaWxlZGApO1xuICAgICAgZXJyLnJlc3BvbnNlID0ge1xuICAgICAgICBkYXRhOiBlcnJvcixcbiAgICAgICAgc3RhdHVzOiA1MDBcbiAgICAgIH07XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfTtcbiAgICBsZXQgaXNSZXNwb25zZUxvZ2dlZCA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7ZGF0YSwgc3RhdHVzLCBoZWFkZXJzfSA9IGF3YWl0IHRoaXMucmVxdWVzdChyZXFPcHRzKTtcbiAgICAgIC8vIGBkYXRhYCBtaWdodCBiZSByZWFsbHkgYmlnXG4gICAgICAvLyBCZSBjYXJlZnVsIHdoaWxlIGhhbmRsaW5nIGl0IHRvIGF2b2lkIG1lbW9yeSBsZWFrc1xuICAgICAgaWYgKCFfLmlzUGxhaW5PYmplY3QoZGF0YSkpIHtcbiAgICAgICAgLy8gVGhlIHJlc3BvbnNlIHNob3VsZCBiZSBhIHZhbGlkIEpTT04gb2JqZWN0XG4gICAgICAgIC8vIElmIGl0IGNhbm5vdCBiZSBjb2VyY2VkIHRvIGFuIG9iamVjdCB0aGVuIHRoZSByZXNwb25zZSBpcyB3cm9uZ1xuICAgICAgICB0aHJvd1Byb3h5RXJyb3IoZGF0YSk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgR290IHJlc3BvbnNlIHdpdGggc3RhdHVzICR7c3RhdHVzfTogJHt0cnVuY2F0ZUJvZHkoZGF0YSl9YCk7XG4gICAgICBpc1Jlc3BvbnNlTG9nZ2VkID0gdHJ1ZTtcbiAgICAgIGNvbnN0IGlzU2Vzc2lvbkNyZWF0aW9uUmVxdWVzdCA9IC9cXC9zZXNzaW9uJC8udGVzdCh1cmwpICYmIG1ldGhvZCA9PT0gJ1BPU1QnO1xuICAgICAgaWYgKGlzU2Vzc2lvbkNyZWF0aW9uUmVxdWVzdCkge1xuICAgICAgICBpZiAoc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICB0aGlzLnNlc3Npb25JZCA9IGRhdGEuc2Vzc2lvbklkIHx8IChkYXRhLnZhbHVlIHx8IHt9KS5zZXNzaW9uSWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kb3duc3RyZWFtUHJvdG9jb2wgPSB0aGlzLmdldFByb3RvY29sRnJvbVJlc0JvZHkoZGF0YSk7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYERldGVybWluZWQgdGhlIGRvd25zdHJlYW0gcHJvdG9jb2wgYXMgJyR7dGhpcy5kb3duc3RyZWFtUHJvdG9jb2x9J2ApO1xuICAgICAgfVxuICAgICAgaWYgKF8uaGFzKGRhdGEsICdzdGF0dXMnKSAmJiBwYXJzZUludChkYXRhLnN0YXR1cywgMTApICE9PSAwKSB7XG4gICAgICAgIC8vIFNvbWUgc2VydmVycywgbGlrZSBjaHJvbWVkcml2ZXIgbWF5IHJldHVybiByZXNwb25zZSBjb2RlIDIwMCBmb3Igbm9uLXplcm8gSlNPTldQIHN0YXR1c2VzXG4gICAgICAgIHRocm93UHJveHlFcnJvcihkYXRhKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlcyA9IHtzdGF0dXNDb2RlOiBzdGF0dXMsIGhlYWRlcnMsIGJvZHk6IGRhdGF9O1xuICAgICAgcmV0dXJuIFtyZXMsIGRhdGFdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIFdlIG9ubHkgY29uc2lkZXIgYW4gZXJyb3IgdW5leHBlY3RlZCBpZiB0aGlzIHdhcyBub3RcbiAgICAgIC8vIGFuIGFzeW5jIHJlcXVlc3QgbW9kdWxlIGVycm9yIG9yIGlmIHRoZSByZXNwb25zZSBjYW5ub3QgYmUgY2FzdCB0b1xuICAgICAgLy8gYSB2YWxpZCBKU09OXG4gICAgICBsZXQgcHJveHlFcnJvck1zZyA9IGUubWVzc2FnZTtcbiAgICAgIGlmICh1dGlsLmhhc1ZhbHVlKGUucmVzcG9uc2UpKSB7XG4gICAgICAgIGlmICghaXNSZXNwb25zZUxvZ2dlZCkge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gdHJ1bmNhdGVCb2R5KGUucmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgdGhpcy5sb2cuaW5mbyh1dGlsLmhhc1ZhbHVlKGUucmVzcG9uc2Uuc3RhdHVzKVxuICAgICAgICAgICAgPyBgR290IHJlc3BvbnNlIHdpdGggc3RhdHVzICR7ZS5yZXNwb25zZS5zdGF0dXN9OiAke2Vycm9yfWBcbiAgICAgICAgICAgIDogYEdvdCByZXNwb25zZSB3aXRoIHVua25vd24gc3RhdHVzOiAke2Vycm9yfWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm94eUVycm9yTXNnID0gYENvdWxkIG5vdCBwcm94eSBjb21tYW5kIHRvIHRoZSByZW1vdGUgc2VydmVyLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YDtcbiAgICAgICAgaWYgKENPTVBBQ1RfRVJST1JfUEFUVEVSTlMuc29tZSgocCkgPT4gcC50ZXN0KGUubWVzc2FnZSkpKSB7XG4gICAgICAgICAgdGhpcy5sb2cuaW5mbyhlLm1lc3NhZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nLmluZm8oZS5zdGFjayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBlcnJvcnMuUHJveHlSZXF1ZXN0RXJyb3IocHJveHlFcnJvck1zZywgZS5yZXNwb25zZT8uZGF0YSwgZS5yZXNwb25zZT8uc3RhdHVzKTtcbiAgICB9XG4gIH1cblxuICBnZXRQcm90b2NvbEZyb21SZXNCb2R5IChyZXNPYmopIHtcbiAgICBpZiAoXy5pc0ludGVnZXIocmVzT2JqLnN0YXR1cykpIHtcbiAgICAgIHJldHVybiBNSlNPTldQO1xuICAgIH1cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocmVzT2JqLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIFczQztcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0VG9Db21tYW5kTmFtZSAodXJsLCBtZXRob2QpIHtcbiAgICBjb25zdCBleHRyYWN0Q29tbWFuZE5hbWUgPSAocGF0dGVybikgPT4ge1xuICAgICAgY29uc3QgcGF0aE1hdGNoID0gcGF0dGVybi5leGVjKHVybCk7XG4gICAgICByZXR1cm4gcGF0aE1hdGNoID8gcm91dGVUb0NvbW1hbmROYW1lKHBhdGhNYXRjaFsxXSwgbWV0aG9kLCB0aGlzLnJlcUJhc2VQYXRoKSA6IG51bGw7XG4gICAgfTtcbiAgICBsZXQgY29tbWFuZE5hbWUgPSByb3V0ZVRvQ29tbWFuZE5hbWUodXJsLCBtZXRob2QsIHRoaXMucmVxQmFzZVBhdGgpO1xuICAgIGlmICghY29tbWFuZE5hbWUgJiYgXy5pbmNsdWRlcyh1cmwsIGAke3RoaXMucmVxQmFzZVBhdGh9L3Nlc3Npb24vYCkpIHtcbiAgICAgIGNvbW1hbmROYW1lID0gZXh0cmFjdENvbW1hbmROYW1lKG5ldyBSZWdFeHAoYCR7Xy5lc2NhcGVSZWdFeHAodGhpcy5yZXFCYXNlUGF0aCl9L3Nlc3Npb24vW14vXSsoLispYCkpO1xuICAgIH1cbiAgICBpZiAoIWNvbW1hbmROYW1lICYmIF8uaW5jbHVkZXModXJsLCB0aGlzLnJlcUJhc2VQYXRoKSkge1xuICAgICAgY29tbWFuZE5hbWUgPSBleHRyYWN0Q29tbWFuZE5hbWUobmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cCh0aGlzLnJlcUJhc2VQYXRoKX0oLy4rKWApKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbW1hbmROYW1lO1xuICB9XG5cbiAgYXN5bmMgcHJveHlDb21tYW5kICh1cmwsIG1ldGhvZCwgYm9keSA9IG51bGwpIHtcbiAgICBjb25zdCBjb21tYW5kTmFtZSA9IHRoaXMucmVxdWVzdFRvQ29tbWFuZE5hbWUodXJsLCBtZXRob2QpO1xuICAgIGlmICghY29tbWFuZE5hbWUpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5KHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICB9XG4gICAgdGhpcy5sb2cuZGVidWcoYE1hdGNoZWQgJyR7dXJsfScgdG8gY29tbWFuZCBuYW1lICcke2NvbW1hbmROYW1lfSdgKTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3RvY29sQ29udmVydGVyLmNvbnZlcnRBbmRQcm94eShjb21tYW5kTmFtZSwgdXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG5cbiAgYXN5bmMgY29tbWFuZCAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgbGV0IHJlc3BvbnNlO1xuICAgIGxldCByZXNCb2R5T2JqO1xuICAgIHRyeSB7XG4gICAgICBbcmVzcG9uc2UsIHJlc0JvZHlPYmpdID0gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQodXJsLCBtZXRob2QsIGJvZHkpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGlzRXJyb3JUeXBlKGVyciwgZXJyb3JzLlByb3h5UmVxdWVzdEVycm9yKSkge1xuICAgICAgICB0aHJvdyBlcnIuZ2V0QWN0dWFsRXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkVycm9yKGVyci5tZXNzYWdlKTtcbiAgICB9XG4gICAgY29uc3QgcHJvdG9jb2wgPSB0aGlzLmdldFByb3RvY29sRnJvbVJlc0JvZHkocmVzQm9keU9iaik7XG4gICAgaWYgKHByb3RvY29sID09PSBNSlNPTldQKSB7XG4gICAgICAvLyBHb3QgcmVzcG9uc2UgaW4gTUpTT05XUCBmb3JtYXRcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlID09PSAyMDAgJiYgcmVzQm9keU9iai5zdGF0dXMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJlc0JvZHlPYmoudmFsdWU7XG4gICAgICB9XG4gICAgICBjb25zdCBzdGF0dXMgPSBwYXJzZUludChyZXNCb2R5T2JqLnN0YXR1cywgMTApO1xuICAgICAgaWYgKCFpc05hTihzdGF0dXMpICYmIHN0YXR1cyAhPT0gMCkge1xuICAgICAgICBsZXQgbWVzc2FnZSA9IHJlc0JvZHlPYmoudmFsdWU7XG4gICAgICAgIGlmIChfLmhhcyhtZXNzYWdlLCAnbWVzc2FnZScpKSB7XG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UubWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZShzdGF0dXMsIF8uaXNFbXB0eShtZXNzYWdlKSA/IGdldFN1bW1hcnlCeUNvZGUoc3RhdHVzKSA6IG1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvdG9jb2wgPT09IFczQykge1xuICAgICAgLy8gR290IHJlc3BvbnNlIGluIFczQyBmb3JtYXRcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlIDwgMzAwKSB7XG4gICAgICAgIHJldHVybiByZXNCb2R5T2JqLnZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKF8uaXNQbGFpbk9iamVjdChyZXNCb2R5T2JqLnZhbHVlKSAmJiByZXNCb2R5T2JqLnZhbHVlLmVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yRnJvbVczQ0pzb25Db2RlKHJlc0JvZHlPYmoudmFsdWUuZXJyb3IsIHJlc0JvZHlPYmoudmFsdWUubWVzc2FnZSwgcmVzQm9keU9iai52YWx1ZS5zdGFja3RyYWNlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuICAgICAgLy8gVW5rbm93biBwcm90b2NvbC4gS2VlcGluZyBpdCBiZWNhdXNlIG9mIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICByZXR1cm4gcmVzQm9keU9iajtcbiAgICB9XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duRXJyb3IoYERpZCBub3Qga25vdyB3aGF0IHRvIGRvIHdpdGggcmVzcG9uc2UgY29kZSAnJHtyZXNwb25zZS5zdGF0dXNDb2RlfScgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGFuZCByZXNwb25zZSBib2R5ICcke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkocmVzQm9keU9iaiksIHtsZW5ndGg6IDMwMH0pfSdgKTtcbiAgfVxuXG4gIGdldFNlc3Npb25JZEZyb21VcmwgKHVybCkge1xuICAgIGNvbnN0IG1hdGNoID0gdXJsLm1hdGNoKC9cXC9zZXNzaW9uXFwvKFteL10rKS8pO1xuICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogbnVsbDtcbiAgfVxuXG4gIGFzeW5jIHByb3h5UmVxUmVzIChyZXEsIHJlcykge1xuICAgIC8vICEgdGhpcyBtZXRob2QgbXVzdCBub3QgdGhyb3cgYW55IGV4Y2VwdGlvbnNcbiAgICAvLyAhIG1ha2Ugc3VyZSB0byBjYWxsIHJlcy5zZW5kIGJlZm9yZSByZXR1cm5cbiAgICBsZXQgc3RhdHVzQ29kZTtcbiAgICBsZXQgcmVzQm9keU9iajtcbiAgICB0cnkge1xuICAgICAgbGV0IHJlc3BvbnNlO1xuICAgICAgW3Jlc3BvbnNlLCByZXNCb2R5T2JqXSA9IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKHJlcS5vcmlnaW5hbFVybCwgcmVxLm1ldGhvZCwgcmVxLmJvZHkpO1xuICAgICAgcmVzLmhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzO1xuICAgICAgc3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1c0NvZGU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBbc3RhdHVzQ29kZSwgcmVzQm9keU9ial0gPSBnZXRSZXNwb25zZUZvclczQ0Vycm9yKFxuICAgICAgICBpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcikgPyBlcnIuZ2V0QWN0dWFsRXJyb3IoKSA6IGVyclxuICAgICAgKTtcbiAgICB9XG4gICAgcmVzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnKTtcbiAgICBpZiAoIV8uaXNQbGFpbk9iamVjdChyZXNCb2R5T2JqKSkge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgZXJyb3JzLlVua25vd25FcnJvcihcbiAgICAgICAgYFRoZSBkb3duc3RyZWFtIHNlcnZlciByZXNwb25zZSB3aXRoIHRoZSBzdGF0dXMgY29kZSAke3N0YXR1c0NvZGV9IGlzIG5vdCBhIHZhbGlkIEpTT04gb2JqZWN0OiBgICtcbiAgICAgICAgXy50cnVuY2F0ZShgJHtyZXNCb2R5T2JqfWAsIHtsZW5ndGg6IDMwMH0pXG4gICAgICApO1xuICAgICAgW3N0YXR1c0NvZGUsIHJlc0JvZHlPYmpdID0gZ2V0UmVzcG9uc2VGb3JXM0NFcnJvcihlcnJvcik7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIHByb3hpZWQgcmVzcG9uc2UgY29udGFpbnMgYSBzZXNzaW9uSWQgdGhhdCB0aGUgZG93bnN0cmVhbVxuICAgIC8vIGRyaXZlciBoYXMgZ2VuZXJhdGVkLCB3ZSBkb24ndCB3YW50IHRvIHJldHVybiB0aGF0IHRvIHRoZSBjbGllbnQuXG4gICAgLy8gSW5zdGVhZCwgcmV0dXJuIHRoZSBpZCBmcm9tIHRoZSByZXF1ZXN0IG9yIGZyb20gY3VycmVudCBzZXNzaW9uXG4gICAgaWYgKF8uaGFzKHJlc0JvZHlPYmosICdzZXNzaW9uSWQnKSkge1xuICAgICAgY29uc3QgcmVxU2Vzc2lvbklkID0gdGhpcy5nZXRTZXNzaW9uSWRGcm9tVXJsKHJlcS5vcmlnaW5hbFVybCk7XG4gICAgICBpZiAocmVxU2Vzc2lvbklkKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYFJlcGxhY2luZyBzZXNzaW9uSWQgJHtyZXNCb2R5T2JqLnNlc3Npb25JZH0gd2l0aCAke3JlcVNlc3Npb25JZH1gKTtcbiAgICAgICAgcmVzQm9keU9iai5zZXNzaW9uSWQgPSByZXFTZXNzaW9uSWQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2Vzc2lvbklkKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYFJlcGxhY2luZyBzZXNzaW9uSWQgJHtyZXNCb2R5T2JqLnNlc3Npb25JZH0gd2l0aCAke3RoaXMuc2Vzc2lvbklkfWApO1xuICAgICAgICByZXNCb2R5T2JqLnNlc3Npb25JZCA9IHRoaXMuc2Vzc2lvbklkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXNCb2R5T2JqLnZhbHVlID0gZm9ybWF0UmVzcG9uc2VWYWx1ZShyZXNCb2R5T2JqLnZhbHVlKTtcbiAgICByZXMuc3RhdHVzKHN0YXR1c0NvZGUpLnNlbmQoSlNPTi5zdHJpbmdpZnkoZm9ybWF0U3RhdHVzKHJlc0JvZHlPYmopKSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgSldQcm94eSB9O1xuZXhwb3J0IGRlZmF1bHQgSldQcm94eTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxXQUFXLEdBQUdDLGdCQUFPQyxTQUFQLENBQWlCLFVBQWpCLENBQXBCOztBQUNBLE1BQU1DLHVCQUF1QixHQUFHLE1BQWhDO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsQ0FDN0Isa0JBRDZCLEVBRTdCLGdCQUY2QixDQUEvQjtBQUtBLE1BQU07RUFBQ0MsT0FBRDtFQUFVQztBQUFWLElBQWlCQyxvQkFBdkI7O0FBRUEsTUFBTUMsT0FBTixDQUFjO0VBQ1pDLFdBQVcsQ0FBRUMsSUFBSSxHQUFHLEVBQVQsRUFBYTtJQUFBOztJQUN0QkMsZ0JBQUVDLFFBQUYsQ0FBVyxJQUFYLEVBQWlCRixJQUFqQixFQUF1QjtNQUNyQkcsTUFBTSxFQUFFLE1BRGE7TUFFckJDLE1BQU0sRUFBRSxXQUZhO01BR3JCQyxJQUFJLEVBQUUsSUFIZTtNQUlyQkMsSUFBSSxFQUFFQyw0QkFKZTtNQUtyQkMsV0FBVyxFQUFFRCw0QkFMUTtNQU1yQkUsU0FBUyxFQUFF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
420
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX0xPRyIsImxvZ2dlciIsImdldExvZ2dlciIsIkRFRkFVTFRfUkVRVUVTVF9USU1FT1VUIiwiQ09NUEFDVF9FUlJPUl9QQVRURVJOUyIsIk1KU09OV1AiLCJXM0MiLCJQUk9UT0NPTFMiLCJKV1Byb3h5Iiwic2NoZW1lIiwic2VydmVyIiwicG9ydCIsImJhc2UiLCJyZXFCYXNlUGF0aCIsInNlc3Npb25JZCIsInRpbWVvdXQiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJvcHRpb25zIiwiXyIsImRlZmF1bHRzIiwiREVGQVVMVF9CQVNFX1BBVEgiLCJ0b0xvd2VyQ2FzZSIsIk9iamVjdCIsImFzc2lnbiIsIl9hY3RpdmVSZXF1ZXN0cyIsIl9kb3duc3RyZWFtUHJvdG9jb2wiLCJhZ2VudE9wdHMiLCJrZWVwQWxpdmUiLCJtYXhTb2NrZXRzIiwibWF4RnJlZVNvY2tldHMiLCJodHRwQWdlbnQiLCJodHRwIiwiQWdlbnQiLCJodHRwc0FnZW50IiwiaHR0cHMiLCJwcm90b2NvbENvbnZlcnRlciIsIlByb3RvY29sQ29udmVydGVyIiwicHJveHkiLCJiaW5kIiwibG9nIiwiX2xvZyIsInJlcXVlc3QiLCJyZXF1ZXN0Q29uZmlnIiwicmVxUHJvbWlzZSIsImF4aW9zIiwicHVzaCIsInB1bGwiLCJnZXRBY3RpdmVSZXF1ZXN0c0NvdW50IiwibGVuZ3RoIiwiY2FuY2VsQWN0aXZlUmVxdWVzdHMiLCJlbmRwb2ludFJlcXVpcmVzU2Vzc2lvbklkIiwiZW5kcG9pbnQiLCJpbmNsdWRlcyIsImRvd25zdHJlYW1Qcm90b2NvbCIsInZhbHVlIiwiZ2V0VXJsRm9yUHJveHkiLCJ1cmwiLCJwcm94eUJhc2UiLCJlbmRwb2ludFJlIiwicmVtYWluaW5nVXJsIiwidGVzdCIsImZpcnN0IiwiUmVnRXhwIiwiZXhlYyIsIkVycm9yIiwicmVwbGFjZSIsInN0cmlwUHJlZml4UmUiLCJyZXF1aXJlc1Nlc3Npb25JZCIsInNlc3Npb25CYXNlUmUiLCJSZWZlcmVuY2VFcnJvciIsIm1hdGNoIiwibWV0aG9kIiwiYm9keSIsInRvVXBwZXJDYXNlIiwibmV3VXJsIiwidHJ1bmNhdGVCb2R5IiwiY29udGVudCIsInRydW5jYXRlIiwiaXNTdHJpbmciLCJKU09OIiwic3RyaW5naWZ5IiwiTUFYX0xPR19CT0RZX0xFTkdUSCIsInJlcU9wdHMiLCJoZWFkZXJzIiwiYWNjZXB0IiwidXRpbCIsImhhc1ZhbHVlIiwiZGF0YSIsInBhcnNlIiwiZSIsImRlYnVnIiwidGhyb3dQcm94eUVycm9yIiwiZXJyb3IiLCJlcnIiLCJyZXNwb25zZSIsInN0YXR1cyIsImlzUmVzcG9uc2VMb2dnZWQiLCJpc1BsYWluT2JqZWN0IiwiaXNTZXNzaW9uQ3JlYXRpb25SZXF1ZXN0IiwiZ2V0UHJvdG9jb2xGcm9tUmVzQm9keSIsImluZm8iLCJoYXMiLCJwYXJzZUludCIsInJlcyIsInN0YXR1c0NvZGUiLCJwcm94eUVycm9yTXNnIiwibWVzc2FnZSIsInNvbWUiLCJwIiwic3RhY2siLCJlcnJvcnMiLCJQcm94eVJlcXVlc3RFcnJvciIsInJlc09iaiIsImlzSW50ZWdlciIsImlzVW5kZWZpbmVkIiwicmVxdWVzdFRvQ29tbWFuZE5hbWUiLCJleHRyYWN0Q29tbWFuZE5hbWUiLCJwYXR0ZXJuIiwicGF0aE1hdGNoIiwicm91dGVUb0NvbW1hbmROYW1lIiwiY29tbWFuZE5hbWUiLCJlc2NhcGVSZWdFeHAiLCJwcm94eUNvbW1hbmQiLCJjb252ZXJ0QW5kUHJveHkiLCJjb21tYW5kIiwicmVzQm9keU9iaiIsImlzRXJyb3JUeXBlIiwiZ2V0QWN0dWFsRXJyb3IiLCJVbmtub3duRXJyb3IiLCJwcm90b2NvbCIsImlzTmFOIiwiZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUiLCJpc0VtcHR5IiwiZ2V0U3VtbWFyeUJ5Q29kZSIsImVycm9yRnJvbVczQ0pzb25Db2RlIiwic3RhY2t0cmFjZSIsImdldFNlc3Npb25JZEZyb21VcmwiLCJwcm94eVJlcVJlcyIsInJlcSIsIm9yaWdpbmFsVXJsIiwiZ2V0UmVzcG9uc2VGb3JXM0NFcnJvciIsInNldCIsInJlcVNlc3Npb25JZCIsImZvcm1hdFJlc3BvbnNlVmFsdWUiLCJzZW5kIiwiZm9ybWF0U3RhdHVzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2pzb253cC1wcm94eS9wcm94eS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtsb2dnZXIsIHV0aWx9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHtnZXRTdW1tYXJ5QnlDb2RlfSBmcm9tICcuLi9qc29ud3Atc3RhdHVzL3N0YXR1cyc7XG5pbXBvcnQge1xuICBlcnJvcnMsXG4gIGlzRXJyb3JUeXBlLFxuICBlcnJvckZyb21NSlNPTldQU3RhdHVzQ29kZSxcbiAgZXJyb3JGcm9tVzNDSnNvbkNvZGUsXG4gIGdldFJlc3BvbnNlRm9yVzNDRXJyb3IsXG59IGZyb20gJy4uL3Byb3RvY29sL2Vycm9ycyc7XG5pbXBvcnQge3JvdXRlVG9Db21tYW5kTmFtZX0gZnJvbSAnLi4vcHJvdG9jb2wnO1xuaW1wb3J0IHtNQVhfTE9HX0JPRFlfTEVOR1RILCBERUZBVUxUX0JBU0VfUEFUSCwgUFJPVE9DT0xTfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IFByb3RvY29sQ29udmVydGVyIGZyb20gJy4vcHJvdG9jb2wtY29udmVydGVyJztcbmltcG9ydCB7Zm9ybWF0UmVzcG9uc2VWYWx1ZSwgZm9ybWF0U3RhdHVzfSBmcm9tICcuLi9wcm90b2NvbC9oZWxwZXJzJztcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnO1xuaW1wb3J0IGh0dHBzIGZyb20gJ2h0dHBzJztcblxuY29uc3QgREVGQVVMVF9MT0cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdXRCBQcm94eScpO1xuY29uc3QgREVGQVVMVF9SRVFVRVNUX1RJTUVPVVQgPSAyNDAwMDA7XG5jb25zdCBDT01QQUNUX0VSUk9SX1BBVFRFUk5TID0gWy9cXGJFQ09OTlJFRlVTRURcXGIvLCAvc29ja2V0IGhhbmcgdXAvXTtcblxuY29uc3Qge01KU09OV1AsIFczQ30gPSBQUk9UT0NPTFM7XG5cbmNsYXNzIEpXUHJveHkge1xuICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgc2NoZW1lO1xuICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgc2VydmVyO1xuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgcG9ydDtcbiAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gIGJhc2U7XG4gIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICByZXFCYXNlUGF0aDtcbiAgLyoqIEB0eXBlIHtzdHJpbmc/fSAqL1xuICBzZXNzaW9uSWQ7XG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICB0aW1lb3V0O1xuXG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBfLmRlZmF1bHRzKG9wdHMsIHtcbiAgICAgIHNjaGVtZTogJ2h0dHAnLFxuICAgICAgc2VydmVyOiAnbG9jYWxob3N0JyxcbiAgICAgIHBvcnQ6IDQ0NDQsXG4gICAgICBiYXNlOiBERUZBVUxUX0JBU0VfUEFUSCxcbiAgICAgIHJlcUJhc2VQYXRoOiBERUZBVUxUX0JBU0VfUEFUSCxcbiAgICAgIHNlc3Npb25JZDogbnVsbCxcbiAgICAgIHRpbWVvdXQ6IERFRkFVTFRfUkVRVUVTVF9USU1FT1VULFxuICAgIH0pO1xuICAgIG9wdGlvbnMuc2NoZW1lID0gb3B0aW9ucy5zY2hlbWUudG9Mb3dlckNhc2UoKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIG9wdGlvbnMpO1xuXG4gICAgdGhpcy5fYWN0aXZlUmVxdWVzdHMgPSBbXTtcbiAgICB0aGlzLl9kb3duc3RyZWFtUHJvdG9jb2wgPSBudWxsO1xuICAgIGNvbnN0IGFnZW50T3B0cyA9IHtcbiAgICAgIGtlZXBBbGl2ZTogb3B0cy5rZWVwQWxpdmUgPz8gdHJ1ZSxcbiAgICAgIG1heFNvY2tldHM6IDEwLFxuICAgICAgbWF4RnJlZVNvY2tldHM6IDUsXG4gICAgfTtcbiAgICB0aGlzLmh0dHBBZ2VudCA9IG5ldyBodHRwLkFnZW50KGFnZW50T3B0cyk7XG4gICAgdGhpcy5odHRwc0FnZW50ID0gbmV3IGh0dHBzLkFnZW50KGFnZW50T3B0cyk7XG4gICAgdGhpcy5wcm90b2NvbENvbnZlcnRlciA9IG5ldyBQcm90b2NvbENvbnZlcnRlcih0aGlzLnByb3h5LmJpbmQodGhpcyksIG9wdHMubG9nKTtcbiAgICB0aGlzLl9sb2cgPSBvcHRzLmxvZztcbiAgfVxuXG4gIGdldCBsb2coKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZyA/PyBERUZBVUxUX0xPRztcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyByZXF1ZXN0cyB0byB0aGUgZG93bnN0cmVhbSBzZXJ2ZXJcbiAgICpcbiAgICogQHByaXZhdGUgLSBEbyBub3QgY2FsbCB0aGlzIG1ldGhvZCBkaXJlY3RseSxcbiAgICogaXQgdXNlcyBjbGllbnQtc3BlY2lmaWMgYXJndW1lbnRzIGFuZCByZXNwb25zZXMhXG4gICAqXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdheGlvcycpLkF4aW9zUmVxdWVzdENvbmZpZ30gcmVxdWVzdENvbmZpZ1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoJ2F4aW9zJykuQXhpb3NSZXNwb25zZT59XG4gICAqL1xuICBhc3luYyByZXF1ZXN0KHJlcXVlc3RDb25maWcpIHtcbiAgICBjb25zdCByZXFQcm9taXNlID0gYXhpb3MocmVxdWVzdENvbmZpZyk7XG4gICAgdGhpcy5fYWN0aXZlUmVxdWVzdHMucHVzaChyZXFQcm9taXNlKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHJlcVByb21pc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIF8ucHVsbCh0aGlzLl9hY3RpdmVSZXF1ZXN0cywgcmVxUHJvbWlzZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWN0aXZlUmVxdWVzdHNDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlUmVxdWVzdHMubGVuZ3RoO1xuICB9XG5cbiAgY2FuY2VsQWN0aXZlUmVxdWVzdHMoKSB7XG4gICAgdGhpcy5fYWN0aXZlUmVxdWVzdHMgPSBbXTtcbiAgfVxuXG4gIGVuZHBvaW50UmVxdWlyZXNTZXNzaW9uSWQoZW5kcG9pbnQpIHtcbiAgICByZXR1cm4gIV8uaW5jbHVkZXMoWycvc2Vzc2lvbicsICcvc2Vzc2lvbnMnLCAnL3N0YXR1cyddLCBlbmRwb2ludCk7XG4gIH1cblxuICBzZXQgZG93bnN0cmVhbVByb3RvY29sKHZhbHVlKSB7XG4gICAgdGhpcy5fZG93bnN0cmVhbVByb3RvY29sID0gdmFsdWU7XG4gICAgdGhpcy5wcm90b2NvbENvbnZlcnRlci5kb3duc3RyZWFtUHJvdG9jb2wgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBkb3duc3RyZWFtUHJvdG9jb2woKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rvd25zdHJlYW1Qcm90b2NvbDtcbiAgfVxuXG4gIGdldFVybEZvclByb3h5KHVybCkge1xuICAgIGlmICh1cmwgPT09ICcnKSB7XG4gICAgICB1cmwgPSAnLyc7XG4gICAgfVxuICAgIGNvbnN0IHByb3h5QmFzZSA9IGAke3RoaXMuc2NoZW1lfTovLyR7dGhpcy5zZXJ2ZXJ9OiR7dGhpcy5wb3J0fSR7dGhpcy5iYXNlfWA7XG4gICAgY29uc3QgZW5kcG9pbnRSZSA9ICcoLyhzZXNzaW9ufHN0YXR1cykpJztcbiAgICBsZXQgcmVtYWluaW5nVXJsID0gJyc7XG4gICAgaWYgKC9eaHR0cC8udGVzdCh1cmwpKSB7XG4gICAgICBjb25zdCBmaXJzdCA9IG5ldyBSZWdFeHAoYChodHRwcz86Ly8uKykke2VuZHBvaW50UmV9YCkuZXhlYyh1cmwpO1xuICAgICAgaWYgKCFmaXJzdCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dvdCBhIGNvbXBsZXRlIHVybCBidXQgY291bGQgbm90IGV4dHJhY3QgSldQIGVuZHBvaW50Jyk7XG4gICAgICB9XG4gICAgICByZW1haW5pbmdVcmwgPSB1cmwucmVwbGFjZShmaXJzdFsxXSwgJycpO1xuICAgIH0gZWxzZSBpZiAobmV3IFJlZ0V4cCgnXi8nKS50ZXN0KHVybCkpIHtcbiAgICAgIHJlbWFpbmluZ1VybCA9IHVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaWQgbm90IGtub3cgd2hhdCB0byBkbyB3aXRoIHVybCAnJHt1cmx9J2ApO1xuICAgIH1cblxuICAgIGNvbnN0IHN0cmlwUHJlZml4UmUgPSBuZXcgUmVnRXhwKCdeLio/KC8oc2Vzc2lvbnxzdGF0dXMpLiopJCcpO1xuICAgIGlmIChzdHJpcFByZWZpeFJlLnRlc3QocmVtYWluaW5nVXJsKSkge1xuICAgICAgcmVtYWluaW5nVXJsID0gLyoqIEB0eXBlIHtSZWdFeHBFeGVjQXJyYXl9ICovIChzdHJpcFByZWZpeFJlLmV4ZWMocmVtYWluaW5nVXJsKSlbMV07XG4gICAgfVxuXG4gICAgaWYgKCFuZXcgUmVnRXhwKGVuZHBvaW50UmUpLnRlc3QocmVtYWluaW5nVXJsKSkge1xuICAgICAgcmVtYWluaW5nVXJsID0gYC9zZXNzaW9uLyR7dGhpcy5zZXNzaW9uSWR9JHtyZW1haW5pbmdVcmx9YDtcbiAgICB9XG5cbiAgICBjb25zdCByZXF1aXJlc1Nlc3Npb25JZCA9IHRoaXMuZW5kcG9pbnRSZXF1aXJlc1Nlc3Npb25JZChyZW1haW5pbmdVcmwpO1xuXG4gICAgaWYgKHJlcXVpcmVzU2Vzc2lvbklkICYmIHRoaXMuc2Vzc2lvbklkID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyeWluZyB0byBwcm94eSBhIHNlc3Npb24gY29tbWFuZCB3aXRob3V0IHNlc3Npb24gaWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uQmFzZVJlID0gbmV3IFJlZ0V4cCgnXi9zZXNzaW9uLyhbXi9dKyknKTtcbiAgICBpZiAoc2Vzc2lvbkJhc2VSZS50ZXN0KHJlbWFpbmluZ1VybCkpIHtcbiAgICAgIGlmICh0aGlzLnNlc3Npb25JZCA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXG4gICAgICAgICAgYFNlc3Npb24gSUQgaXMgbm90IHNldCwgYnV0IHNhdyBhIFVSTCBwYXRoIHJlZmVyZW5jaW5nIGEgc2Vzc2lvbiAoJHtyZW1haW5pbmdVcmx9KS4gVGhpcyBtYXkgYmUgYSBidWcgaW4geW91ciBjbGllbnQuYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgLy8gd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSAvc2Vzc2lvbi86aWQvZm9vYmFyLCBzbyB3ZSBuZWVkIHRvIHJlcGxhY2VcbiAgICAgIC8vIHRoZSBzZXNzaW9uIGlkXG4gICAgICBjb25zdCBtYXRjaCA9IHNlc3Npb25CYXNlUmUuZXhlYyhyZW1haW5pbmdVcmwpO1xuICAgICAgLy8gVE9ETzogaWYgYHJlcXVpcmVzU2Vzc2lvbklkYCBpcyBgZmFsc2VgIGFuZCBgc2Vzc2lvbklkYCBpcyBgbnVsbGAsIHRoaXMgaXMgYSBidWcuXG4gICAgICAvLyBhcmUgd2Ugc3VyZSBgc2Vzc2lvbklkYCBpcyBub3QgYG51bGxgP1xuICAgICAgcmVtYWluaW5nVXJsID0gcmVtYWluaW5nVXJsLnJlcGxhY2UoXG4gICAgICAgIC8qKiBAdHlwZSB7UmVnRXhwRXhlY0FycmF5fSAqLyAobWF0Y2gpWzFdLFxuICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8gKHRoaXMuc2Vzc2lvbklkKVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHJlcXVpcmVzU2Vzc2lvbklkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIDpzZXNzaW9uIHNlY3Rpb24gZm9yIHVybDogJHtyZW1haW5pbmdVcmx9YCk7XG4gICAgfVxuICAgIHJlbWFpbmluZ1VybCA9IHJlbWFpbmluZ1VybC5yZXBsYWNlKC9cXC8kLywgJycpOyAvLyBjYW4ndCBoYXZlIHRyYWlsaW5nIHNsYXNoZXNcblxuICAgIHJldHVybiBwcm94eUJhc2UgKyByZW1haW5pbmdVcmw7XG4gIH1cblxuICBhc3luYyBwcm94eSh1cmwsIG1ldGhvZCwgYm9keSA9IG51bGwpIHtcbiAgICBtZXRob2QgPSBtZXRob2QudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBuZXdVcmwgPSB0aGlzLmdldFVybEZvclByb3h5KHVybCk7XG4gICAgY29uc3QgdHJ1bmNhdGVCb2R5ID0gKGNvbnRlbnQpID0+XG4gICAgICBfLnRydW5jYXRlKF8uaXNTdHJpbmcoY29udGVudCkgPyBjb250ZW50IDogSlNPTi5zdHJpbmdpZnkoY29udGVudCksIHtcbiAgICAgICAgbGVuZ3RoOiBNQVhfTE9HX0JPRFlfTEVOR1RILFxuICAgICAgfSk7XG4gICAgLyoqIEB0eXBlIHtpbXBvcnQoJ2F4aW9zJykuQXhpb3NSZXF1ZXN0Q29uZmlnfSAqL1xuICAgIGNvbnN0IHJlcU9wdHMgPSB7XG4gICAgICB1cmw6IG5ld1VybCxcbiAgICAgIG1ldGhvZCxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04JyxcbiAgICAgICAgJ3VzZXItYWdlbnQnOiAnYXBwaXVtJyxcbiAgICAgICAgYWNjZXB0OiAnYXBwbGljYXRpb24vanNvbiwgKi8qJyxcbiAgICAgIH0sXG4gICAgICBwcm94eTogZmFsc2UsXG4gICAgICB0aW1lb3V0OiB0aGlzLnRpbWVvdXQsXG4gICAgICBodHRwQWdlbnQ6IHRoaXMuaHR0cEFnZW50LFxuICAgICAgaHR0cHNBZ2VudDogdGhpcy5odHRwc0FnZW50LFxuICAgIH07XG4gICAgLy8gR0VUIG1ldGhvZHMgc2hvdWxkbid0IGhhdmUgYW55IGJvZHkuIE1vc3Qgc2VydmVycyBhcmUgT0sgd2l0aCB0aGlzLCBidXQgV2ViRHJpdmVyQWdlbnQgdGhyb3dzIDQwMCBlcnJvcnNcbiAgICBpZiAodXRpbC5oYXNWYWx1ZShib2R5KSAmJiBtZXRob2QgIT09ICdHRVQnKSB7XG4gICAgICBpZiAodHlwZW9mIGJvZHkgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVxT3B0cy5kYXRhID0gSlNPTi5wYXJzZShib2R5KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGludGVycHJldCB0aGUgcmVxdWVzdCBib2R5IGFzIHZhbGlkIEpTT046ICR7dHJ1bmNhdGVCb2R5KGJvZHkpfWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXFPcHRzLmRhdGEgPSBib2R5O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubG9nLmRlYnVnKFxuICAgICAgYFByb3h5aW5nIFske21ldGhvZH0gJHt1cmwgfHwgJy8nfV0gdG8gWyR7bWV0aG9kfSAke25ld1VybH1dIGAgK1xuICAgICAgICAocmVxT3B0cy5kYXRhID8gYHdpdGggYm9keTogJHt0cnVuY2F0ZUJvZHkocmVxT3B0cy5kYXRhKX1gIDogJ3dpdGggbm8gYm9keScpXG4gICAgKTtcblxuICAgIGNvbnN0IHRocm93UHJveHlFcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgY29uc3QgZXJyID0gLyoqIEB0eXBlIHtQcm94eUVycm9yfSAqLyAobmV3IEVycm9yKGBUaGUgcmVxdWVzdCB0byAke3VybH0gaGFzIGZhaWxlZGApKTtcbiAgICAgIGVyci5yZXNwb25zZSA9IHtcbiAgICAgICAgZGF0YTogZXJyb3IsXG4gICAgICAgIHN0YXR1czogNTAwLFxuICAgICAgfTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9O1xuICAgIGxldCBpc1Jlc3BvbnNlTG9nZ2VkID0gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtkYXRhLCBzdGF0dXMsIGhlYWRlcnN9ID0gYXdhaXQgdGhpcy5yZXF1ZXN0KHJlcU9wdHMpO1xuICAgICAgLy8gYGRhdGFgIG1pZ2h0IGJlIHJlYWxseSBiaWdcbiAgICAgIC8vIEJlIGNhcmVmdWwgd2hpbGUgaGFuZGxpbmcgaXQgdG8gYXZvaWQgbWVtb3J5IGxlYWtzXG4gICAgICBpZiAoIV8uaXNQbGFpbk9iamVjdChkYXRhKSkge1xuICAgICAgICAvLyBUaGUgcmVzcG9uc2Ugc2hvdWxkIGJlIGEgdmFsaWQgSlNPTiBvYmplY3RcbiAgICAgICAgLy8gSWYgaXQgY2Fubm90IGJlIGNvZXJjZWQgdG8gYW4gb2JqZWN0IHRoZW4gdGhlIHJlc3BvbnNlIGlzIHdyb25nXG4gICAgICAgIHRocm93UHJveHlFcnJvcihkYXRhKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nLmRlYnVnKGBHb3QgcmVzcG9uc2Ugd2l0aCBzdGF0dXMgJHtzdGF0dXN9OiAke3RydW5jYXRlQm9keShkYXRhKX1gKTtcbiAgICAgIGlzUmVzcG9uc2VMb2dnZWQgPSB0cnVlO1xuICAgICAgY29uc3QgaXNTZXNzaW9uQ3JlYXRpb25SZXF1ZXN0ID0gL1xcL3Nlc3Npb24kLy50ZXN0KHVybCkgJiYgbWV0aG9kID09PSAnUE9TVCc7XG4gICAgICBpZiAoaXNTZXNzaW9uQ3JlYXRpb25SZXF1ZXN0KSB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgIHRoaXMuc2Vzc2lvbklkID0gZGF0YS5zZXNzaW9uSWQgfHwgKGRhdGEudmFsdWUgfHwge30pLnNlc3Npb25JZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRvd25zdHJlYW1Qcm90b2NvbCA9IHRoaXMuZ2V0UHJvdG9jb2xGcm9tUmVzQm9keShkYXRhKTtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgRGV0ZXJtaW5lZCB0aGUgZG93bnN0cmVhbSBwcm90b2NvbCBhcyAnJHt0aGlzLmRvd25zdHJlYW1Qcm90b2NvbH0nYCk7XG4gICAgICB9XG4gICAgICBpZiAoXy5oYXMoZGF0YSwgJ3N0YXR1cycpICYmIHBhcnNlSW50KGRhdGEuc3RhdHVzLCAxMCkgIT09IDApIHtcbiAgICAgICAgLy8gU29tZSBzZXJ2ZXJzLCBsaWtlIGNocm9tZWRyaXZlciBtYXkgcmV0dXJuIHJlc3BvbnNlIGNvZGUgMjAwIGZvciBub24temVybyBKU09OV1Agc3RhdHVzZXNcbiAgICAgICAgdGhyb3dQcm94eUVycm9yKGRhdGEpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzID0ge3N0YXR1c0NvZGU6IHN0YXR1cywgaGVhZGVycywgYm9keTogZGF0YX07XG4gICAgICByZXR1cm4gW3JlcywgZGF0YV07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gV2Ugb25seSBjb25zaWRlciBhbiBlcnJvciB1bmV4cGVjdGVkIGlmIHRoaXMgd2FzIG5vdFxuICAgICAgLy8gYW4gYXN5bmMgcmVxdWVzdCBtb2R1bGUgZXJyb3Igb3IgaWYgdGhlIHJlc3BvbnNlIGNhbm5vdCBiZSBjYXN0IHRvXG4gICAgICAvLyBhIHZhbGlkIEpTT05cbiAgICAgIGxldCBwcm94eUVycm9yTXNnID0gZS5tZXNzYWdlO1xuICAgICAgaWYgKHV0aWwuaGFzVmFsdWUoZS5yZXNwb25zZSkpIHtcbiAgICAgICAgaWYgKCFpc1Jlc3BvbnNlTG9nZ2VkKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSB0cnVuY2F0ZUJvZHkoZS5yZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKFxuICAgICAgICAgICAgdXRpbC5oYXNWYWx1ZShlLnJlc3BvbnNlLnN0YXR1cylcbiAgICAgICAgICAgICAgPyBgR290IHJlc3BvbnNlIHdpdGggc3RhdHVzICR7ZS5yZXNwb25zZS5zdGF0dXN9OiAke2Vycm9yfWBcbiAgICAgICAgICAgICAgOiBgR290IHJlc3BvbnNlIHdpdGggdW5rbm93biBzdGF0dXM6ICR7ZXJyb3J9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb3h5RXJyb3JNc2cgPSBgQ291bGQgbm90IHByb3h5IGNvbW1hbmQgdG8gdGhlIHJlbW90ZSBzZXJ2ZXIuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gO1xuICAgICAgICBpZiAoQ09NUEFDVF9FUlJPUl9QQVRURVJOUy5zb21lKChwKSA9PiBwLnRlc3QoZS5tZXNzYWdlKSkpIHtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKGUubWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2cuaW5mbyhlLnN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcihwcm94eUVycm9yTXNnLCBlLnJlc3BvbnNlPy5kYXRhLCBlLnJlc3BvbnNlPy5zdGF0dXMpO1xuICAgIH1cbiAgfVxuXG4gIGdldFByb3RvY29sRnJvbVJlc0JvZHkocmVzT2JqKSB7XG4gICAgaWYgKF8uaXNJbnRlZ2VyKHJlc09iai5zdGF0dXMpKSB7XG4gICAgICByZXR1cm4gTUpTT05XUDtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHJlc09iai52YWx1ZSkpIHtcbiAgICAgIHJldHVybiBXM0M7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHBhcmFtIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5IVFRQTWV0aG9kfSBtZXRob2RcbiAgICogQHJldHVybnMge3N0cmluZ3x1bmRlZmluZWR9XG4gICAqL1xuICByZXF1ZXN0VG9Db21tYW5kTmFtZSh1cmwsIG1ldGhvZCkge1xuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWdFeHB9IHBhdHRlcm5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH1cbiAgICAgKi9cbiAgICBjb25zdCBleHRyYWN0Q29tbWFuZE5hbWUgPSAocGF0dGVybikgPT4ge1xuICAgICAgY29uc3QgcGF0aE1hdGNoID0gcGF0dGVybi5leGVjKHVybCk7XG4gICAgICBpZiAocGF0aE1hdGNoKSB7XG4gICAgICAgIHJldHVybiByb3V0ZVRvQ29tbWFuZE5hbWUocGF0aE1hdGNoWzFdLCBtZXRob2QsIHRoaXMucmVxQmFzZVBhdGgpO1xuICAgICAgfVxuICAgIH07XG4gICAgbGV0IGNvbW1hbmROYW1lID0gcm91dGVUb0NvbW1hbmROYW1lKHVybCwgbWV0aG9kLCB0aGlzLnJlcUJhc2VQYXRoKTtcbiAgICBpZiAoIWNvbW1hbmROYW1lICYmIF8uaW5jbHVkZXModXJsLCBgJHt0aGlzLnJlcUJhc2VQYXRofS9zZXNzaW9uL2ApKSB7XG4gICAgICBjb21tYW5kTmFtZSA9IGV4dHJhY3RDb21tYW5kTmFtZShcbiAgICAgICAgbmV3IFJlZ0V4cChgJHtfLmVzY2FwZVJlZ0V4cCh0aGlzLnJlcUJhc2VQYXRoKX0vc2Vzc2lvbi9bXi9dKyguKylgKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCFjb21tYW5kTmFtZSAmJiBfLmluY2x1ZGVzKHVybCwgdGhpcy5yZXFCYXNlUGF0aCkpIHtcbiAgICAgIGNvbW1hbmROYW1lID0gZXh0cmFjdENvbW1hbmROYW1lKG5ldyBSZWdFeHAoYCR7Xy5lc2NhcGVSZWdFeHAodGhpcy5yZXFCYXNlUGF0aCl9KC8uKylgKSk7XG4gICAgfVxuICAgIHJldHVybiBjb21tYW5kTmFtZTtcbiAgfVxuXG4gIGFzeW5jIHByb3h5Q29tbWFuZCh1cmwsIG1ldGhvZCwgYm9keSA9IG51bGwpIHtcbiAgICBjb25zdCBjb21tYW5kTmFtZSA9IHRoaXMucmVxdWVzdFRvQ29tbWFuZE5hbWUodXJsLCBtZXRob2QpO1xuICAgIGlmICghY29tbWFuZE5hbWUpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3h5KHVybCwgbWV0aG9kLCBib2R5KTtcbiAgICB9XG4gICAgdGhpcy5sb2cuZGVidWcoYE1hdGNoZWQgJyR7dXJsfScgdG8gY29tbWFuZCBuYW1lICcke2NvbW1hbmROYW1lfSdgKTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb3RvY29sQ29udmVydGVyLmNvbnZlcnRBbmRQcm94eShjb21tYW5kTmFtZSwgdXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG5cbiAgYXN5bmMgY29tbWFuZCh1cmwsIG1ldGhvZCwgYm9keSA9IG51bGwpIHtcbiAgICBsZXQgcmVzcG9uc2U7XG4gICAgbGV0IHJlc0JvZHlPYmo7XG4gICAgdHJ5IHtcbiAgICAgIFtyZXNwb25zZSwgcmVzQm9keU9ial0gPSBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCh1cmwsIG1ldGhvZCwgYm9keSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoaXNFcnJvclR5cGUoZXJyLCBlcnJvcnMuUHJveHlSZXF1ZXN0RXJyb3IpKSB7XG4gICAgICAgIHRocm93IGVyci5nZXRBY3R1YWxFcnJvcigpO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duRXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgIH1cbiAgICBjb25zdCBwcm90b2NvbCA9IHRoaXMuZ2V0UHJvdG9jb2xGcm9tUmVzQm9keShyZXNCb2R5T2JqKTtcbiAgICBpZiAocHJvdG9jb2wgPT09IE1KU09OV1ApIHtcbiAgICAgIC8vIEdvdCByZXNwb25zZSBpbiBNSlNPTldQIGZvcm1hdFxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPT09IDIwMCAmJiByZXNCb2R5T2JqLnN0YXR1cyA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcmVzQm9keU9iai52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0YXR1cyA9IHBhcnNlSW50KHJlc0JvZHlPYmouc3RhdHVzLCAxMCk7XG4gICAgICBpZiAoIWlzTmFOKHN0YXR1cykgJiYgc3RhdHVzICE9PSAwKSB7XG4gICAgICAgIGxldCBtZXNzYWdlID0gcmVzQm9keU9iai52YWx1ZTtcbiAgICAgICAgaWYgKF8uaGFzKG1lc3NhZ2UsICdtZXNzYWdlJykpIHtcbiAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5tZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlKFxuICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICBfLmlzRW1wdHkobWVzc2FnZSkgPyBnZXRTdW1tYXJ5QnlDb2RlKHN0YXR1cykgOiBtZXNzYWdlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcm90b2NvbCA9PT0gVzNDKSB7XG4gICAgICAvLyBHb3QgcmVzcG9uc2UgaW4gVzNDIGZvcm1hdFxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgPCAzMDApIHtcbiAgICAgICAgcmV0dXJuIHJlc0JvZHlPYmoudmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoXy5pc1BsYWluT2JqZWN0KHJlc0JvZHlPYmoudmFsdWUpICYmIHJlc0JvZHlPYmoudmFsdWUuZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3JGcm9tVzNDSnNvbkNvZGUoXG4gICAgICAgICAgcmVzQm9keU9iai52YWx1ZS5lcnJvcixcbiAgICAgICAgICByZXNCb2R5T2JqLnZhbHVlLm1lc3NhZ2UsXG4gICAgICAgICAgcmVzQm9keU9iai52YWx1ZS5zdGFja3RyYWNlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlID09PSAyMDApIHtcbiAgICAgIC8vIFVua25vd24gcHJvdG9jb2wuIEtlZXBpbmcgaXQgYmVjYXVzZSBvZiB0aGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgcmV0dXJuIHJlc0JvZHlPYmo7XG4gICAgfVxuICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkVycm9yKFxuICAgICAgYERpZCBub3Qga25vdyB3aGF0IHRvIGRvIHdpdGggcmVzcG9uc2UgY29kZSAnJHtyZXNwb25zZS5zdGF0dXNDb2RlfScgYCArXG4gICAgICAgIGBhbmQgcmVzcG9uc2UgYm9keSAnJHtfLnRydW5jYXRlKEpTT04uc3RyaW5naWZ5KHJlc0JvZHlPYmopLCB7XG4gICAgICAgICAgbGVuZ3RoOiAzMDAsXG4gICAgICAgIH0pfSdgXG4gICAgKTtcbiAgfVxuXG4gIGdldFNlc3Npb25JZEZyb21VcmwodXJsKSB7XG4gICAgY29uc3QgbWF0Y2ggPSB1cmwubWF0Y2goL1xcL3Nlc3Npb25cXC8oW14vXSspLyk7XG4gICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiBudWxsO1xuICB9XG5cbiAgYXN5bmMgcHJveHlSZXFSZXMocmVxLCByZXMpIHtcbiAgICAvLyAhIHRoaXMgbWV0aG9kIG11c3Qgbm90IHRocm93IGFueSBleGNlcHRpb25zXG4gICAgLy8gISBtYWtlIHN1cmUgdG8gY2FsbCByZXMuc2VuZCBiZWZvcmUgcmV0dXJuXG4gICAgbGV0IHN0YXR1c0NvZGU7XG4gICAgbGV0IHJlc0JvZHlPYmo7XG4gICAgdHJ5IHtcbiAgICAgIGxldCByZXNwb25zZTtcbiAgICAgIFtyZXNwb25zZSwgcmVzQm9keU9ial0gPSBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChyZXEub3JpZ2luYWxVcmwsIHJlcS5tZXRob2QsIHJlcS5ib2R5KTtcbiAgICAgIHJlcy5oZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVycztcbiAgICAgIHN0YXR1c0NvZGUgPSByZXNwb25zZS5zdGF0dXNDb2RlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgW3N0YXR1c0NvZGUsIHJlc0JvZHlPYmpdID0gZ2V0UmVzcG9uc2VGb3JXM0NFcnJvcihcbiAgICAgICAgaXNFcnJvclR5cGUoZXJyLCBlcnJvcnMuUHJveHlSZXF1ZXN0RXJyb3IpID8gZXJyLmdldEFjdHVhbEVycm9yKCkgOiBlcnJcbiAgICAgICk7XG4gICAgfVxuICAgIHJlcy5zZXQoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04Jyk7XG4gICAgaWYgKCFfLmlzUGxhaW5PYmplY3QocmVzQm9keU9iaikpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IGVycm9ycy5Vbmtub3duRXJyb3IoXG4gICAgICAgIGBUaGUgZG93bnN0cmVhbSBzZXJ2ZXIgcmVzcG9uc2Ugd2l0aCB0aGUgc3RhdHVzIGNvZGUgJHtzdGF0dXNDb2RlfSBpcyBub3QgYSB2YWxpZCBKU09OIG9iamVjdDogYCArXG4gICAgICAgICAgXy50cnVuY2F0ZShgJHtyZXNCb2R5T2JqfWAsIHtsZW5ndGg6IDMwMH0pXG4gICAgICApO1xuICAgICAgW3N0YXR1c0NvZGUsIHJlc0JvZHlPYmpdID0gZ2V0UmVzcG9uc2VGb3JXM0NFcnJvcihlcnJvcik7XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlIHByb3hpZWQgcmVzcG9uc2UgY29udGFpbnMgYSBzZXNzaW9uSWQgdGhhdCB0aGUgZG93bnN0cmVhbVxuICAgIC8vIGRyaXZlciBoYXMgZ2VuZXJhdGVkLCB3ZSBkb24ndCB3YW50IHRvIHJldHVybiB0aGF0IHRvIHRoZSBjbGllbnQuXG4gICAgLy8gSW5zdGVhZCwgcmV0dXJuIHRoZSBpZCBmcm9tIHRoZSByZXF1ZXN0IG9yIGZyb20gY3VycmVudCBzZXNzaW9uXG4gICAgaWYgKF8uaGFzKHJlc0JvZHlPYmosICdzZXNzaW9uSWQnKSkge1xuICAgICAgY29uc3QgcmVxU2Vzc2lvbklkID0gdGhpcy5nZXRTZXNzaW9uSWRGcm9tVXJsKHJlcS5vcmlnaW5hbFVybCk7XG4gICAgICBpZiAocmVxU2Vzc2lvbklkKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYFJlcGxhY2luZyBzZXNzaW9uSWQgJHtyZXNCb2R5T2JqLnNlc3Npb25JZH0gd2l0aCAke3JlcVNlc3Npb25JZH1gKTtcbiAgICAgICAgcmVzQm9keU9iai5zZXNzaW9uSWQgPSByZXFTZXNzaW9uSWQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2Vzc2lvbklkKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYFJlcGxhY2luZyBzZXNzaW9uSWQgJHtyZXNCb2R5T2JqLnNlc3Npb25JZH0gd2l0aCAke3RoaXMuc2Vzc2lvbklkfWApO1xuICAgICAgICByZXNCb2R5T2JqLnNlc3Npb25JZCA9IHRoaXMuc2Vzc2lvbklkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXNCb2R5T2JqLnZhbHVlID0gZm9ybWF0UmVzcG9uc2VWYWx1ZShyZXNCb2R5T2JqLnZhbHVlKTtcbiAgICByZXMuc3RhdHVzKHN0YXR1c0NvZGUpLnNlbmQoSlNPTi5zdHJpbmdpZnkoZm9ybWF0U3RhdHVzKHJlc0JvZHlPYmopKSk7XG4gIH1cbn1cblxuZXhwb3J0IHtKV1Byb3h5fTtcbmV4cG9ydCBkZWZhdWx0IEpXUHJveHk7XG5cbi8qKlxuICogQHR5cGVkZWYge0Vycm9yICYge3Jlc3BvbnNlOiB7ZGF0YTogaW1wb3J0KCd0eXBlLWZlc3QnKS5Kc29uT2JqZWN0LCBzdGF0dXM6IGltcG9ydCgnaHR0cC1zdGF0dXMtY29kZXMnKS5TdGF0dXNDb2Rlc319fSBQcm94eUVycm9yXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFPQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxXQUFXLEdBQUdDLGVBQUEsQ0FBT0MsU0FBUCxDQUFpQixVQUFqQixDQUFwQjs7QUFDQSxNQUFNQyx1QkFBdUIsR0FBRyxNQUFoQztBQUNBLE1BQU1DLHNCQUFzQixHQUFHLENBQUMsa0JBQUQsRUFBcUIsZ0JBQXJCLENBQS9CO0FBRUEsTUFBTTtFQUFDQyxPQUFEO0VBQVVDO0FBQVYsSUFBaUJDLG9CQUF2Qjs7QUFFQSxNQUFNQyxPQUFOLENBQWM7RUFFWkMsTUFBTTtFQUVOQyxNQUFNO0VBRU5DLElBQUk7RUFFSkMsSUFBSTtFQUVKQyxXQUFXO0VBRVhDLFNBQVM7RUFFVEMsT0FBTzs7RUFFUEMsV0FBVyxDQUFDQyxJQUFJLEdBQUcsRUFBUixFQUFZO0lBQUE7O0lBQ3JCLE1BQU1DLE9BQU8sR0FBR0MsZUFBQSxDQUFFQyxRQUFGLENBQVdILElBQVgsRUFBaUI7TUFDL0JSLE1BQU0sRUFBRSxNQUR1QjtNQUUvQkMsTUFBTSxFQUFFLFdBRnVCO01BRy9CQyxJQUFJLEVBQUUsSUFIeUI7TUFJL0JDLElBQUksRUFBRVMsNEJBSnlCO01BSy9CUixXQUFXLEVBQUVRLDRCQUxrQjtNQU0vQlAsU0FBUyxFQUFFLElBTm9CO01BTy9CQyxPQUFPLEVBQUVaO0lBUHNCLENBQWpCLENBQWhCOztJ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
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../lib/jsonwp-status/status.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6GA,oDAQC"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../lib/jsonwp-status/status.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoHA,oDAQC"}
@@ -75,7 +75,7 @@ const codes = {
75
75
  },
76
76
  UnableToSetCookie: {
77
77
  code: 25,
78
- summary: 'A request to set a cookie\'s value could not be satisfied.'
78
+ summary: "A request to set a cookie's value could not be satisfied."
79
79
  },
80
80
  UnexpectedAlertOpen: {
81
81
  code: 26,
@@ -134,4 +134,4 @@ function getSummaryByCode(code) {
134
134
 
135
135
  var _default = codes;
136
136
  exports.default = _default;
137
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb2RlcyIsIlN1Y2Nlc3MiLCJjb2RlIiwic3VtbWFyeSIsIk5vU3VjaERyaXZlciIsIk5vU3VjaEVsZW1lbnQiLCJOb1N1Y2hGcmFtZSIsIlVua25vd25Db21tYW5kIiwiU3RhbGVFbGVtZW50UmVmZXJlbmNlIiwiRWxlbWVudE5vdFZpc2libGUiLCJJbnZhbGlkRWxlbWVudFN0YXRlIiwiVW5rbm93bkVycm9yIiwiRWxlbWVudElzTm90U2VsZWN0YWJsZSIsIkphdmFTY3JpcHRFcnJvciIsIlhQYXRoTG9va3VwRXJyb3IiLCJUaW1lb3V0IiwiTm9TdWNoV2luZG93IiwiSW52YWxpZENvb2tpZURvbWFpbiIsIlVuYWJsZVRvU2V0Q29va2llIiwiVW5leHBlY3RlZEFsZXJ0T3BlbiIsIk5vQWxlcnRPcGVuRXJyb3IiLCJTY3JpcHRUaW1lb3V0IiwiSW52YWxpZEVsZW1lbnRDb29yZGluYXRlcyIsIklNRU5vdEF2YWlsYWJsZSIsIklNRUVuZ2luZUFjdGl2YXRpb25GYWlsZWQiLCJJbnZhbGlkU2VsZWN0b3IiLCJTZXNzaW9uTm90Q3JlYXRlZEV4Y2VwdGlvbiIsIk1vdmVUYXJnZXRPdXRPZkJvdW5kcyIsIk5vU3VjaENvbnRleHQiLCJnZXRTdW1tYXJ5QnlDb2RlIiwicGFyc2VJbnQiLCJvYmoiLCJfIiwidmFsdWVzIiwiaXNVbmRlZmluZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvanNvbndwLXN0YXR1cy9zdGF0dXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgY29kZXMgPSB7XG4gIFN1Y2Nlc3M6IHtcbiAgICBjb2RlOiAwLFxuICAgIHN1bW1hcnk6ICdUaGUgY29tbWFuZCBleGVjdXRlZCBzdWNjZXNzZnVsbHkuJ1xuICB9LFxuICBOb1N1Y2hEcml2ZXI6IHtcbiAgICBjb2RlOiA2LFxuICAgIHN1bW1hcnk6ICdBIHNlc3Npb24gaXMgZWl0aGVyIHRlcm1pbmF0ZWQgb3Igbm90IHN0YXJ0ZWQnXG4gIH0sXG4gIE5vU3VjaEVsZW1lbnQ6IHtcbiAgICBjb2RlOiA3LFxuICAgIHN1bW1hcnk6ICdBbiBlbGVtZW50IGNvdWxkIG5vdCBiZSBsb2NhdGVkIG9uIHRoZSBwYWdlIHVzaW5nIHRoZSBnaXZlbiBzZWFyY2ggcGFyYW1ldGVycy4nXG4gIH0sXG4gIE5vU3VjaEZyYW1lOiB7XG4gICAgY29kZTogOCxcbiAgICBzdW1tYXJ5OiAnQSByZXF1ZXN0IHRvIHN3aXRjaCB0byBhIGZyYW1lIGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQgYmVjYXVzZSB0aGUgZnJhbWUgY291bGQgbm90IGJlIGZvdW5kLidcbiAgfSxcbiAgVW5rbm93bkNvbW1hbmQ6IHtcbiAgICBjb2RlOiA5LFxuICAgIHN1bW1hcnk6ICdUaGUgcmVxdWVzdGVkIHJlc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCwgb3IgYSByZXF1ZXN0IHdhcyByZWNlaXZlZCB1c2luZyBhbiBIVFRQIG1ldGhvZCB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIG1hcHBlZCByZXNvdXJjZS4nXG4gIH0sXG4gIFN0YWxlRWxlbWVudFJlZmVyZW5jZToge1xuICAgIGNvZGU6IDEwLFxuICAgIHN1bW1hcnk6ICdBbiBlbGVtZW50IGNvbW1hbmQgZmFpbGVkIGJlY2F1c2UgdGhlIHJlZmVyZW5jZWQgZWxlbWVudCBpcyBubyBsb25nZXIgYXR0YWNoZWQgdG8gdGhlIERPTS4nXG4gIH0sXG4gIEVsZW1lbnROb3RWaXNpYmxlOiB7XG4gICAgY29kZTogMTEsXG4gICAgc3VtbWFyeTogJ0FuIGVsZW1lbnQgY29tbWFuZCBjb3VsZCBub3QgYmUgY29tcGxldGVkIGJlY2F1c2UgdGhlIGVsZW1lbnQgaXMgbm90IHZpc2libGUgb24gdGhlIHBhZ2UuJ1xuICB9LFxuICBJbnZhbGlkRWxlbWVudFN0YXRlOiB7XG4gICAgY29kZTogMTIsXG4gICAgc3VtbWFyeTogJ0FuIGVsZW1lbnQgY29tbWFuZCBjb3VsZCBub3QgYmUgY29tcGxldGVkIGJlY2F1c2UgdGhlIGVsZW1lbnQgaXMgaW4gYW4gaW52YWxpZCBzdGF0ZSAoZS5nLiBhdHRlbXB0aW5nIHRvIGNsaWNrIGEgZGlzYWJsZWQgZWxlbWVudCkuJ1xuICB9LFxuICBVbmtub3duRXJyb3I6IHtcbiAgICBjb2RlOiAxMyxcbiAgICBzdW1tYXJ5OiAnQW4gdW5rbm93biBzZXJ2ZXItc2lkZSBlcnJvciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSBjb21tYW5kLidcbiAgfSxcbiAgRWxlbWVudElzTm90U2VsZWN0YWJsZToge1xuICAgIGNvZGU6IDE1LFxuICAgIHN1bW1hcnk6ICdBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIHNlbGVjdCBhbiBlbGVtZW50IHRoYXQgY2Fubm90IGJlIHNlbGVjdGVkLidcbiAgfSxcbiAgSmF2YVNjcmlwdEVycm9yOiB7XG4gICAgY29kZTogMTcsXG4gICAgc3VtbWFyeTogJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIGV4ZWN1dGluZyB1c2VyIHN1cHBsaWVkIEphdmFTY3JpcHQuJ1xuICB9LFxuICBYUGF0aExvb2t1cEVycm9yOiB7XG4gICAgY29kZTogMTksXG4gICAgc3VtbWFyeTogJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIHNlYXJjaGluZyBmb3IgYW4gZWxlbWVudCBieSBYUGF0aC4nXG4gIH0sXG4gIFRpbWVvdXQ6IHtcbiAgICBjb2RlOiAyMSxcbiAgICBzdW1tYXJ5OiAnQW4gb3BlcmF0aW9uIGRpZCBub3QgY29tcGxldGUgYmVmb3JlIGl0cyB0aW1lb3V0IGV4cGlyZWQuJ1xuICB9LFxuICBOb1N1Y2hXaW5kb3c6IHtcbiAgICBjb2RlOiAyMyxcbiAgICBzdW1tYXJ5OiAnQSByZXF1ZXN0IHRvIHN3aXRjaCB0byBhIGRpZmZlcmVudCB3aW5kb3cgY291bGQgbm90IGJlIHNhdGlzZmllZCBiZWNhdXNlIHRoZSB3aW5kb3cgY291bGQgbm90IGJlIGZvdW5kLidcbiAgfSxcbiAgSW52YWxpZENvb2tpZURvbWFpbjoge1xuICAgIGNvZGU6IDI0LFxuICAgIHN1bW1hcnk6ICdBbiBpbGxlZ2FsIGF0dGVtcHQgd2FzIG1hZGUgdG8gc2V0IGEgY29va2llIHVuZGVyIGEgZGlmZmVyZW50IGRvbWFpbiB0aGFuIHRoZSBjdXJyZW50IHBhZ2UuJ1xuICB9LFxuICBVbmFibGVUb1NldENvb2tpZToge1xuICAgIGNvZGU6IDI1LFxuICAgIHN1bW1hcnk6ICdBIHJlcXVlc3QgdG8gc2V0IGEgY29va2llXFwncyB2YWx1ZSBjb3VsZCBub3QgYmUgc2F0aXNmaWVkLidcbiAgfSxcbiAgVW5leHBlY3RlZEFsZXJ0T3Blbjoge1xuICAgIGNvZGU6IDI2LFxuICAgIHN1bW1hcnk6ICdBIG1vZGFsIGRpYWxvZyB3YXMgb3BlbiwgYmxvY2tpbmcgdGhpcyBvcGVyYXRpb24nXG4gIH0sXG4gIE5vQWxlcnRPcGVuRXJyb3I6IHtcbiAgICBjb2RlOiAyNyxcbiAgICBzdW1tYXJ5OiAnQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBvcGVyYXRlIG9uIGEgbW9kYWwgZGlhbG9nIHdoZW4gb25lIHdhcyBub3Qgb3Blbi4nXG4gIH0sXG4gIFNjcmlwdFRpbWVvdXQ6IHtcbiAgICBjb2RlOiAyOCxcbiAgICBzdW1tYXJ5OiAnQSBzY3JpcHQgZGlkIG5vdCBjb21wbGV0ZSBiZWZvcmUgaXRzIHRpbWVvdXQgZXhwaXJlZC4nXG4gIH0sXG4gIEludmFsaWRFbGVtZW50Q29vcmRpbmF0ZXM6IHtcbiAgICBjb2RlOiAyOSxcbiAgICBzdW1tYXJ5OiAnVGhlIGNvb3JkaW5hdGVzIHByb3ZpZGVkIHRvIGFuIGludGVyYWN0aW9ucyBvcGVyYXRpb24gYXJlIGludmFsaWQuJ1xuICB9LFxuICBJTUVOb3RBdmFpbGFibGU6IHtcbiAgICBjb2RlOiAzMCxcbiAgICBzdW1tYXJ5OiAnSU1FIHdhcyBub3QgYXZhaWxhYmxlLidcbiAgfSxcbiAgSU1FRW5naW5lQWN0aXZhdGlvbkZhaWxlZDoge1xuICAgIGNvZGU6IDMxLFxuICAgIHN1bW1hcnk6ICdBbiBJTUUgZW5naW5lIGNvdWxkIG5vdCBiZSBzdGFydGVkLidcbiAgfSxcbiAgSW52YWxpZFNlbGVjdG9yOiB7XG4gICAgY29kZTogMzIsXG4gICAgc3VtbWFyeTogJ0FyZ3VtZW50IHdhcyBhbiBpbnZhbGlkIHNlbGVjdG9yIChlLmcuIFhQYXRoL0NTUykuJ1xuICB9LFxuICBTZXNzaW9uTm90Q3JlYXRlZEV4Y2VwdGlvbjoge1xuICAgIGNvZGU6IDMzLFxuICAgIHN1bW1hcnk6ICdBIG5ldyBzZXNzaW9uIGNvdWxkIG5vdCBiZSBjcmVhdGVkLidcbiAgfSxcbiAgTW92ZVRhcmdldE91dE9mQm91bmRzOiB7XG4gICAgY29kZTogMzQsXG4gICAgc3VtbWFyeTogJ1RhcmdldCBwcm92aWRlZCBmb3IgYSBtb3ZlIGFjdGlvbiBpcyBvdXQgb2YgYm91bmRzLidcbiAgfSxcbiAgTm9TdWNoQ29udGV4dDoge1xuICAgIGNvZGU6IDM1LFxuICAgIHN1bW1hcnk6ICdObyBzdWNoIGNvbnRleHQgZm91bmQuJ1xuICB9XG59O1xuXG5mdW5jdGlvbiBnZXRTdW1tYXJ5QnlDb2RlIChjb2RlKSB7XG4gIGNvZGUgPSBwYXJzZUludChjb2RlLCAxMCk7XG4gIGZvciAobGV0IG9iaiBvZiBfLnZhbHVlcyhjb2RlcykpIHtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQob2JqLmNvZGUpICYmIG9iai5jb2RlID09PSBjb2RlKSB7XG4gICAgICByZXR1cm4gb2JqLnN1bW1hcnk7XG4gICAgfVxuICB9XG4gIHJldHVybiAnQW4gZXJyb3Igb2NjdXJyZWQnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb2RlcztcbmV4cG9ydCB7IGNvZGVzLCBnZXRTdW1tYXJ5QnlDb2RlIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOztBQUVBLE1BQU1BLEtBQUssR0FBRztFQUNaQyxPQUFPLEVBQUU7SUFDUEMsSUFBSSxFQUFFLENBREM7SUFFUEMsT0FBTyxFQUFFO0VBRkYsQ0FERztFQUtaQyxZQUFZLEVBQUU7SUFDWkYsSUFBSSxFQUFFLENBRE07SUFFWkMsT0FBTyxFQUFFO0VBRkcsQ0FMRjtF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
137
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb2RlcyIsIlN1Y2Nlc3MiLCJjb2RlIiwic3VtbWFyeSIsIk5vU3VjaERyaXZlciIsIk5vU3VjaEVsZW1lbnQiLCJOb1N1Y2hGcmFtZSIsIlVua25vd25Db21tYW5kIiwiU3RhbGVFbGVtZW50UmVmZXJlbmNlIiwiRWxlbWVudE5vdFZpc2libGUiLCJJbnZhbGlkRWxlbWVudFN0YXRlIiwiVW5rbm93bkVycm9yIiwiRWxlbWVudElzTm90U2VsZWN0YWJsZSIsIkphdmFTY3JpcHRFcnJvciIsIlhQYXRoTG9va3VwRXJyb3IiLCJUaW1lb3V0IiwiTm9TdWNoV2luZG93IiwiSW52YWxpZENvb2tpZURvbWFpbiIsIlVuYWJsZVRvU2V0Q29va2llIiwiVW5leHBlY3RlZEFsZXJ0T3BlbiIsIk5vQWxlcnRPcGVuRXJyb3IiLCJTY3JpcHRUaW1lb3V0IiwiSW52YWxpZEVsZW1lbnRDb29yZGluYXRlcyIsIklNRU5vdEF2YWlsYWJsZSIsIklNRUVuZ2luZUFjdGl2YXRpb25GYWlsZWQiLCJJbnZhbGlkU2VsZWN0b3IiLCJTZXNzaW9uTm90Q3JlYXRlZEV4Y2VwdGlvbiIsIk1vdmVUYXJnZXRPdXRPZkJvdW5kcyIsIk5vU3VjaENvbnRleHQiLCJnZXRTdW1tYXJ5QnlDb2RlIiwicGFyc2VJbnQiLCJvYmoiLCJfIiwidmFsdWVzIiwiaXNVbmRlZmluZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvanNvbndwLXN0YXR1cy9zdGF0dXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgY29kZXMgPSB7XG4gIFN1Y2Nlc3M6IHtcbiAgICBjb2RlOiAwLFxuICAgIHN1bW1hcnk6ICdUaGUgY29tbWFuZCBleGVjdXRlZCBzdWNjZXNzZnVsbHkuJyxcbiAgfSxcbiAgTm9TdWNoRHJpdmVyOiB7XG4gICAgY29kZTogNixcbiAgICBzdW1tYXJ5OiAnQSBzZXNzaW9uIGlzIGVpdGhlciB0ZXJtaW5hdGVkIG9yIG5vdCBzdGFydGVkJyxcbiAgfSxcbiAgTm9TdWNoRWxlbWVudDoge1xuICAgIGNvZGU6IDcsXG4gICAgc3VtbWFyeTogJ0FuIGVsZW1lbnQgY291bGQgbm90IGJlIGxvY2F0ZWQgb24gdGhlIHBhZ2UgdXNpbmcgdGhlIGdpdmVuIHNlYXJjaCBwYXJhbWV0ZXJzLicsXG4gIH0sXG4gIE5vU3VjaEZyYW1lOiB7XG4gICAgY29kZTogOCxcbiAgICBzdW1tYXJ5OlxuICAgICAgJ0EgcmVxdWVzdCB0byBzd2l0Y2ggdG8gYSBmcmFtZSBjb3VsZCBub3QgYmUgc2F0aXNmaWVkIGJlY2F1c2UgdGhlIGZyYW1lIGNvdWxkIG5vdCBiZSBmb3VuZC4nLFxuICB9LFxuICBVbmtub3duQ29tbWFuZDoge1xuICAgIGNvZGU6IDksXG4gICAgc3VtbWFyeTpcbiAgICAgICdUaGUgcmVxdWVzdGVkIHJlc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCwgb3IgYSByZXF1ZXN0IHdhcyByZWNlaXZlZCB1c2luZyBhbiBIVFRQIG1ldGhvZCB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIG1hcHBlZCByZXNvdXJjZS4nLFxuICB9LFxuICBTdGFsZUVsZW1lbnRSZWZlcmVuY2U6IHtcbiAgICBjb2RlOiAxMCxcbiAgICBzdW1tYXJ5OlxuICAgICAgJ0FuIGVsZW1lbnQgY29tbWFuZCBmYWlsZWQgYmVjYXVzZSB0aGUgcmVmZXJlbmNlZCBlbGVtZW50IGlzIG5vIGxvbmdlciBhdHRhY2hlZCB0byB0aGUgRE9NLicsXG4gIH0sXG4gIEVsZW1lbnROb3RWaXNpYmxlOiB7XG4gICAgY29kZTogMTEsXG4gICAgc3VtbWFyeTpcbiAgICAgICdBbiBlbGVtZW50IGNvbW1hbmQgY291bGQgbm90IGJlIGNvbXBsZXRlZCBiZWNhdXNlIHRoZSBlbGVtZW50IGlzIG5vdCB2aXNpYmxlIG9uIHRoZSBwYWdlLicsXG4gIH0sXG4gIEludmFsaWRFbGVtZW50U3RhdGU6IHtcbiAgICBjb2RlOiAxMixcbiAgICBzdW1tYXJ5OlxuICAgICAgJ0FuIGVsZW1lbnQgY29tbWFuZCBjb3VsZCBub3QgYmUgY29tcGxldGVkIGJlY2F1c2UgdGhlIGVsZW1lbnQgaXMgaW4gYW4gaW52YWxpZCBzdGF0ZSAoZS5nLiBhdHRlbXB0aW5nIHRvIGNsaWNrIGEgZGlzYWJsZWQgZWxlbWVudCkuJyxcbiAgfSxcbiAgVW5rbm93bkVycm9yOiB7XG4gICAgY29kZTogMTMsXG4gICAgc3VtbWFyeTogJ0FuIHVua25vd24gc2VydmVyLXNpZGUgZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGUgY29tbWFuZC4nLFxuICB9LFxuICBFbGVtZW50SXNOb3RTZWxlY3RhYmxlOiB7XG4gICAgY29kZTogMTUsXG4gICAgc3VtbWFyeTogJ0FuIGF0dGVtcHQgd2FzIG1hZGUgdG8gc2VsZWN0IGFuIGVsZW1lbnQgdGhhdCBjYW5ub3QgYmUgc2VsZWN0ZWQuJyxcbiAgfSxcbiAgSmF2YVNjcmlwdEVycm9yOiB7XG4gICAgY29kZTogMTcsXG4gICAgc3VtbWFyeTogJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIGV4ZWN1dGluZyB1c2VyIHN1cHBsaWVkIEphdmFTY3JpcHQuJyxcbiAgfSxcbiAgWFBhdGhMb29rdXBFcnJvcjoge1xuICAgIGNvZGU6IDE5LFxuICAgIHN1bW1hcnk6ICdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBzZWFyY2hpbmcgZm9yIGFuIGVsZW1lbnQgYnkgWFBhdGguJyxcbiAgfSxcbiAgVGltZW91dDoge1xuICAgIGNvZGU6IDIxLFxuICAgIHN1bW1hcnk6ICdBbiBvcGVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZSBiZWZvcmUgaXRzIHRpbWVvdXQgZXhwaXJlZC4nLFxuICB9LFxuICBOb1N1Y2hXaW5kb3c6IHtcbiAgICBjb2RlOiAyMyxcbiAgICBzdW1tYXJ5OlxuICAgICAgJ0EgcmVxdWVzdCB0byBzd2l0Y2ggdG8gYSBkaWZmZXJlbnQgd2luZG93IGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQgYmVjYXVzZSB0aGUgd2luZG93IGNvdWxkIG5vdCBiZSBmb3VuZC4nLFxuICB9LFxuICBJbnZhbGlkQ29va2llRG9tYWluOiB7XG4gICAgY29kZTogMjQsXG4gICAgc3VtbWFyeTpcbiAgICAgICdBbiBpbGxlZ2FsIGF0dGVtcHQgd2FzIG1hZGUgdG8gc2V0IGEgY29va2llIHVuZGVyIGEgZGlmZmVyZW50IGRvbWFpbiB0aGFuIHRoZSBjdXJyZW50IHBhZ2UuJyxcbiAgfSxcbiAgVW5hYmxlVG9TZXRDb29raWU6IHtcbiAgICBjb2RlOiAyNSxcbiAgICBzdW1tYXJ5OiBcIkEgcmVxdWVzdCB0byBzZXQgYSBjb29raWUncyB2YWx1ZSBjb3VsZCBub3QgYmUgc2F0aXNmaWVkLlwiLFxuICB9LFxuICBVbmV4cGVjdGVkQWxlcnRPcGVuOiB7XG4gICAgY29kZTogMjYsXG4gICAgc3VtbWFyeTogJ0EgbW9kYWwgZGlhbG9nIHdhcyBvcGVuLCBibG9ja2luZyB0aGlzIG9wZXJhdGlvbicsXG4gIH0sXG4gIE5vQWxlcnRPcGVuRXJyb3I6IHtcbiAgICBjb2RlOiAyNyxcbiAgICBzdW1tYXJ5OiAnQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byBvcGVyYXRlIG9uIGEgbW9kYWwgZGlhbG9nIHdoZW4gb25lIHdhcyBub3Qgb3Blbi4nLFxuICB9LFxuICBTY3JpcHRUaW1lb3V0OiB7XG4gICAgY29kZTogMjgsXG4gICAgc3VtbWFyeTogJ0Egc2NyaXB0IGRpZCBub3QgY29tcGxldGUgYmVmb3JlIGl0cyB0aW1lb3V0IGV4cGlyZWQuJyxcbiAgfSxcbiAgSW52YWxpZEVsZW1lbnRDb29yZGluYXRlczoge1xuICAgIGNvZGU6IDI5LFxuICAgIHN1bW1hcnk6ICdUaGUgY29vcmRpbmF0ZXMgcHJvdmlkZWQgdG8gYW4gaW50ZXJhY3Rpb25zIG9wZXJhdGlvbiBhcmUgaW52YWxpZC4nLFxuICB9LFxuICBJTUVOb3RBdmFpbGFibGU6IHtcbiAgICBjb2RlOiAzMCxcbiAgICBzdW1tYXJ5OiAnSU1FIHdhcyBub3QgYXZhaWxhYmxlLicsXG4gIH0sXG4gIElNRUVuZ2luZUFjdGl2YXRpb25GYWlsZWQ6IHtcbiAgICBjb2RlOiAzMSxcbiAgICBzdW1tYXJ5OiAnQW4gSU1FIGVuZ2luZSBjb3VsZCBub3QgYmUgc3RhcnRlZC4nLFxuICB9LFxuICBJbnZhbGlkU2VsZWN0b3I6IHtcbiAgICBjb2RlOiAzMixcbiAgICBzdW1tYXJ5OiAnQXJndW1lbnQgd2FzIGFuIGludmFsaWQgc2VsZWN0b3IgKGUuZy4gWFBhdGgvQ1NTKS4nLFxuICB9LFxuICBTZXNzaW9uTm90Q3JlYXRlZEV4Y2VwdGlvbjoge1xuICAgIGNvZGU6IDMzLFxuICAgIHN1bW1hcnk6ICdBIG5ldyBzZXNzaW9uIGNvdWxkIG5vdCBiZSBjcmVhdGVkLicsXG4gIH0sXG4gIE1vdmVUYXJnZXRPdXRPZkJvdW5kczoge1xuICAgIGNvZGU6IDM0LFxuICAgIHN1bW1hcnk6ICdUYXJnZXQgcHJvdmlkZWQgZm9yIGEgbW92ZSBhY3Rpb24gaXMgb3V0IG9mIGJvdW5kcy4nLFxuICB9LFxuICBOb1N1Y2hDb250ZXh0OiB7XG4gICAgY29kZTogMzUsXG4gICAgc3VtbWFyeTogJ05vIHN1Y2ggY29udGV4dCBmb3VuZC4nLFxuICB9LFxufTtcblxuZnVuY3Rpb24gZ2V0U3VtbWFyeUJ5Q29kZShjb2RlKSB7XG4gIGNvZGUgPSBwYXJzZUludChjb2RlLCAxMCk7XG4gIGZvciAobGV0IG9iaiBvZiBfLnZhbHVlcyhjb2RlcykpIHtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQob2JqLmNvZGUpICYmIG9iai5jb2RlID09PSBjb2RlKSB7XG4gICAgICByZXR1cm4gb2JqLnN1bW1hcnk7XG4gICAgfVxuICB9XG4gIHJldHVybiAnQW4gZXJyb3Igb2NjdXJyZWQnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb2RlcztcbmV4cG9ydCB7Y29kZXMsIGdldFN1bW1hcnlCeUNvZGV9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxLQUFLLEdBQUc7RUFDWkMsT0FBTyxFQUFFO0lBQ1BDLElBQUksRUFBRSxDQURDO0lBRVBDLE9BQU8sRUFBRTtFQUZGLENBREc7RUFLWkMsWUFBWSxFQUFFO0lBQ1pGLElBQUksRUFBRSxDQURNO0lBRVpDLE9BQU8sRUFBRTtFQUZHLENBTEY7RUFTWkUsYUFBYSxFQUFFO0lBQ2JILElBQUksRUFBRSxDQURPO0lBRWJDLE9BQU8sRUFBRTtFQUZJLENBVEg7RUFhWkcsV0FBVyxFQUFFO0lBQ1hKLElBQUksRUFBRSxDQURLO0lBRVhDLE9BQU8sRUFDTDtFQUhTLENBYkQ7RUFrQlpJLGNBQWMsRUFBRTtJQUNkTCxJQUFJLEVBQUUsQ0FEUTtJQUVkQyxPQUFPLEVBQ0w7RUFIWSxDQWxCSjtFQXVCWksscUJBQXFCLEVBQUU7SUFDckJOLElBQUksRUFBRSxFQURlO0lBRXJCQyxPQUFPLEVBQ0w7RUFIbUIsQ0F2Qlg7RUE0QlpNLGlCQUFpQixFQUFFO0lBQ2pCUCxJQUFJLEVBQUUsRUFEVztJQUVqQkMsT0FBTyxFQUNMO0VBSGUsQ0E1QlA7RUFpQ1pPLG1CQUFtQixFQUFFO0lBQ25CUixJQUFJLEVBQUUsRUFEYTtJQUVuQkMsT0FBTyxFQUNMO0VBSGlCLENBakNUO0VBc0NaUSxZQUFZLEVBQUU7SUFDWlQsSUFBSSxFQUFFLEVBRE07SUFFWkMsT0FBTyxFQUFFO0VBRkcsQ0F0Q0Y7RUEwQ1pTLHNCQUFzQixFQUFFO0lBQ3RCVixJQUFJLEVBQUUsRUFEZ0I7SUFFdEJDLE9BQU8sRUFBRTtFQUZhLENBMUNaO0VBOENaVSxlQUFlLEVBQUU7SUFDZlgsSUFBSSxFQUFFLEVBRFM7SUFFZkMsT0FBTyxFQUFFO0VBRk0sQ0E5Q0w7RUFrRFpXLGdCQUFnQixFQUFFO0lBQ2hCWixJQUFJLEVBQUUsRUFEVTtJQUVoQkMsT0FBTyxFQUFFO0VBRk8sQ0FsRE47RUFzRFpZLE9BQU8sRUFBRTtJQUNQYixJQUFJLEVBQUUsRUFEQztJQUVQQyxPQUFPLEVBQUU7RUFGRixDQXRERztFQTBEWmEsWUFBWSxFQUFFO0lBQ1pkLElBQUksRUFBRSxFQURNO0lBRVpDLE9BQU8sRUFDTDtFQUhVLENBMURGO0VBK0RaYyxtQkFBbUIsRUFBRTtJQUNuQmYsSUFBSSxFQUFFLEVBRGE7SUFFbkJDLE9BQU8sRUFDTDtFQUhpQixDQS9EVDtFQW9FWmUsaUJBQWlCLEVBQUU7SUFDakJoQixJQUFJLEVBQUUsRUFEVztJQUVqQkMsT0FBTyxFQUFFO0VBRlEsQ0FwRVA7RUF3RVpnQixtQkFBbUIsRUFBRTtJQUNuQmpCLElBQUksRUFBRSxFQURhO0lBRW5CQyxPQUFPLEVBQUU7RUFGVSxDQXhFVDtFQTRFWmlCLGdCQUFnQixFQUFFO0lBQ2hCbEIsSUFBSSxFQUFFLEVBRFU7SUFFaEJDLE9BQU8sRUFBRTtFQUZPLENBNUVOO0VBZ0Zaa0IsYUFBYSxFQUFFO0lBQ2JuQixJQUFJLEVBQUUsRUFETztJQUViQyxPQUFPLEVBQUU7RUFGSSxDQWhGSDtFQW9GWm1CLHlCQUF5QixFQUFFO0lBQ3pCcEIsSUFBSSxFQUFFLEVBRG1CO0lBRXpCQyxPQUFPLEVBQUU7RUFGZ0IsQ0FwRmY7RUF3RlpvQixlQUFlLEVBQUU7SUFDZnJCLElBQUksRUFBRSxFQURTO0lBRWZDLE9BQU8sRUFBRTtFQUZNLENBeEZMO0VBNEZacUIseUJBQXlCLEVBQUU7SUFDekJ0QixJQUFJLEVBQUUsRUFEbUI7SUFFekJDLE9BQU8sRUFBRTtFQUZnQixDQTVGZjtFQWdHWnNCLGVBQWUsRUFBRTtJQUNmdkIsSUFBSSxFQUFFLEVBRFM7SUFFZkMsT0FBTyxFQUFFO0VBRk0sQ0FoR0w7RUFvR1p1QiwwQkFBMEIsRUFBRTtJQUMxQnhCLElBQUksRUFBRSxFQURvQjtJQUUxQkMsT0FBTyxFQUFFO0VBRmlCLENBcEdoQjtFQXdHWndCLHFCQUFxQixFQUFFO0lBQ3JCekIsSUFBSSxFQUFFLEVBRGU7SUFFckJDLE9BQU8sRUFBRTtFQUZZLENBeEdYO0VBNEdaeUIsYUFBYSxFQUFFO0lBQ2IxQixJQUFJLEVBQUUsRUFETztJQUViQyxPQUFPLEVBQUU7RUFGSTtBQTVHSCxDQUFkOzs7QUFrSEEsU0FBUzBCLGdCQUFULENBQTBCM0IsSUFBMUIsRUFBZ0M7RUFDOUJBLElBQUksR0FBRzRCLFFBQVEsQ0FBQzVCLElBQUQsRUFBTyxFQUFQLENBQWY7O0VBQ0EsS0FBSyxJQUFJNkIsR0FBVCxJQUFnQkMsZUFBQSxDQUFFQyxNQUFGLENBQVNqQyxLQUFULENBQWhCLEVBQWlDO0lBQy9CLElBQUksQ0FBQ2dDLGVBQUEsQ0FBRUUsV0FBRixDQUFjSCxHQUFHLENBQUM3QixJQUFsQixDQUFELElBQTRCNkIsR0FBRyxDQUFDN0IsSUFBSixLQUFhQSxJQUE3QyxFQUFtRDtNQUNqRCxPQUFPNkIsR0FBRyxDQUFDNUIsT0FBWDtJQUNEO0VBQ0Y7O0VBQ0QsT0FBTyxtQkFBUDtBQUNEOztlQUVjSCxLIn0=
@@ -231,6 +231,20 @@ export class ProxyRequestError extends ES6Error {
231
231
  jsonwp: any;
232
232
  getActualError(): ProtocolError;
233
233
  }
234
+ export type HttpResultBody = string | {
235
+ value: HttpResultBodyValue;
236
+ status?: number;
237
+ };
238
+ export type HttpResultBodyValue = {
239
+ message?: string | undefined;
240
+ error?: string | Error | undefined;
241
+ stacktrace?: string | undefined;
242
+ };
243
+ export type MJSONWPError = {
244
+ status: number;
245
+ value: string | object;
246
+ message: string;
247
+ };
234
248
  import ES6Error from "es6-error";
235
249
  import { StatusCodes as HTTPStatusCodes } from "http-status-codes";
236
250
  export namespace errors {
@@ -294,17 +308,12 @@ export function errorFromMJSONWPStatusCode(code: number, value?: string | any):
294
308
  export function errorFromW3CJsonCode(code: string, message: string, stacktrace?: string | null): ProtocolError;
295
309
  /**
296
310
  * Convert an Appium error to proper W3C HTTP response
297
- * @param {ProtocolError} err The error that needs to be translated
311
+ * @param {ProtocolError|MJSONWPError} err The error that needs to be translated
298
312
  */
299
- export function getResponseForW3CError(err: ProtocolError): any[];
313
+ export function getResponseForW3CError(err: ProtocolError | MJSONWPError): any[];
300
314
  /**
301
315
  * Convert an Appium error to a proper JSONWP response
302
316
  * @param {ProtocolError} err The error to be converted
303
317
  */
304
- export function getResponseForJsonwpError(err: ProtocolError): (HTTPStatusCodes.BAD_REQUEST | HTTPStatusCodes.INTERNAL_SERVER_ERROR | HTTPStatusCodes.NOT_FOUND | HTTPStatusCodes.NOT_IMPLEMENTED | {
305
- status: any;
306
- value: {
307
- message: string;
308
- };
309
- })[];
318
+ export function getResponseForJsonwpError(err: ProtocolError): (HTTPStatusCodes.BAD_REQUEST | HTTPStatusCodes.INTERNAL_SERVER_ERROR | HTTPStatusCodes.NOT_FOUND | HTTPStatusCodes.NOT_IMPLEMENTED | HttpResultBody)[];
310
319
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../lib/protocol/errors.js"],"names":[],"mappings":"AAWA;IACE,mEASC;IAPC,gBAA4B;IAC5B,WAAuC;IAIvC,eAAyD;IACzD,iBAAuB;IAOzB,yBAEC;IAND,sBAEC;CAKF;AAMD;IACE,sBAEC;IAED,oCAEC;IACD,uBAEC;IACD,sBAGC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAIC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBAIC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAIC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAIC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAIC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAKC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,iCAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAGC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAIC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBAIC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBAKC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBAIC;CACF;AAED;IACE,uBAEC;IACD,sBAGC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAGC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAGC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAGC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBAIC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBAIC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBAIC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAGC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAGC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAGC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAGC;CACF;AAED;CAAyD;AAEzD;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAGC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAIC;CACF;AAED;CAA8E;AAE9E;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAGC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAIC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAIC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,0BAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAGC;CACF;AAED;IACE,sBAEC;IACD,sBAEC;CACF;AAED;IACE,sBAEC;IACD,sBAGC;CACF;AAGD;CAIC;AACD;CAIC;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAGC;CACF;AAID;IACE,uBAEC;IACD,qEAWC;IADC,2BAA4C;CAE/C;AAED;;;;;GAKG;AACH;IACE,2DAwBC;IATC,eAA4C;IAI1C,SAAiC;IAGjC,YAA8B;IAIlC,gCAQC;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiED,0DAkBC;AAzBD,kDAKC;AAsBD;;;;;GAKG;AACH,iDAJW,MAAM,UACN,MAAM,MAAO,GACZ,aAAa,CAYxB;AAED;;;;;;GAMG;AACH,2CALW,MAAM,WACN,MAAM,eACL,MAAM,UACN,aAAa,CAaxB;AAED;;;GAGG;AACH,4CAFW,aAAa,SAqCvB;AAED;;;GAGG;AACH,+CAFW,aAAa;;;;;KA+BvB"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../lib/protocol/errors.js"],"names":[],"mappings":"AAWA;IACE,mEASC;IAPC,gBAA4B;IAC5B,WAAuC;IAIvC,eAAyD;IACzD,iBAAuB;IAOzB,yBAEC;IAND,sBAEC;CAKF;AAMD;IACE,sBAEC;IAED,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBASC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAUC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBASC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBASC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBASC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,iCAQC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBASC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBAQC;CACF;AAED;IACE,uBAEC;IACD,sBAQC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBASC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,uBAEC;IACD,oCAEC;IACD,sBASC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAQC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;CAAyD;AAEzD;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;CAA8E;AAE9E;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,0BAYC;CACF;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAED;IACE,sBAEC;IACD,sBAEC;CACF;AAED;IACE,sBAEC;IACD,sBAKC;CACF;AAGD;CAIC;AACD;CAIC;AAED;IACE,sBAEC;IACD,oCAEC;IACD,uBAEC;IACD,sBAOC;CACF;AAGD;IACE,uBAEC;IACD,qEAcC;IADC,2BAA4C;CAE/C;AAED;;;;;GAKG;AACH;IACE,2DA2BC;IATC,eAA4C;IAI1C,SAAiC;IAGjC,YAA8B;IAIlC,gCAYC;CACF;6BAkOa,MAAM,GAAG;IAAC,KAAK,EAAE,mBAAmB,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;YAYvD,MAAM;WACN,MAAM,GAAC,MAAM;aACb,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA3KpB,0DAkBC;AA3BD,kDAOC;AAsBD;;;;;GAKG;AACH,iDAJW,MAAM,UACN,MAAM,MAAO,GACZ,aAAa,CAYxB;AAED;;;;;;GAMG;AACH,2CALW,MAAM,WACN,MAAM,eACL,MAAM,UACN,aAAa,CAaxB;AAWD;;;GAGG;AACH,4CAFW,aAAa,GAAC,YAAY,SAqCpC;AAED;;;GAGG;AACH,+CAFW,aAAa,0JAkCvB"}