@appium/base-driver 8.2.2 → 8.3.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 (61) hide show
  1. package/build/lib/basedriver/capabilities.js +3 -1
  2. package/build/lib/basedriver/commands/find.js +4 -11
  3. package/build/lib/basedriver/commands/log.js +3 -6
  4. package/build/lib/basedriver/commands/session.js +18 -27
  5. package/build/lib/basedriver/commands/settings.js +4 -8
  6. package/build/lib/basedriver/commands/timeout.js +10 -15
  7. package/build/lib/basedriver/device-settings.js +14 -2
  8. package/build/lib/basedriver/driver.js +25 -23
  9. package/build/lib/basedriver/helpers.js +140 -84
  10. package/build/lib/express/express-logging.js +2 -2
  11. package/build/lib/express/idempotency.js +2 -2
  12. package/build/lib/helpers/capabilities.js +39 -0
  13. package/build/lib/index.js +7 -7
  14. package/build/lib/jsonwp-proxy/protocol-converter.js +19 -16
  15. package/build/lib/jsonwp-proxy/proxy.js +20 -16
  16. package/build/lib/protocol/errors.js +4 -2
  17. package/build/lib/protocol/helpers.js +3 -20
  18. package/build/lib/protocol/protocol.js +44 -45
  19. package/build/lib/protocol/routes.js +67 -1
  20. package/build/test/basedriver/capabilities-specs.js +43 -1
  21. package/build/test/basedriver/capability-specs.js +126 -167
  22. package/build/test/basedriver/commands/log-specs.js +12 -5
  23. package/build/test/basedriver/driver-tests.js +11 -14
  24. package/build/test/basedriver/helpers-specs.js +5 -1
  25. package/build/test/basedriver/timeout-specs.js +7 -9
  26. package/build/test/express/server-e2e-specs.js +10 -5
  27. package/build/test/express/server-specs.js +22 -16
  28. package/build/test/express/static-specs.js +10 -5
  29. package/build/test/jsonwp-proxy/proxy-e2e-specs.js +1 -2
  30. package/build/test/jsonwp-proxy/proxy-specs.js +1 -6
  31. package/build/test/protocol/fake-driver.js +12 -15
  32. package/build/test/protocol/protocol-e2e-specs.js +49 -103
  33. package/build/test/protocol/routes-specs.js +2 -2
  34. package/lib/basedriver/capabilities.js +3 -0
  35. package/lib/basedriver/commands/find.js +3 -6
  36. package/lib/basedriver/commands/log.js +2 -4
  37. package/lib/basedriver/commands/session.js +21 -22
  38. package/lib/basedriver/commands/settings.js +3 -5
  39. package/lib/basedriver/commands/timeout.js +9 -10
  40. package/lib/basedriver/device-settings.js +10 -1
  41. package/lib/basedriver/driver.js +29 -16
  42. package/lib/basedriver/helpers.js +201 -83
  43. package/lib/express/express-logging.js +1 -1
  44. package/lib/express/idempotency.js +1 -1
  45. package/lib/helpers/capabilities.js +25 -0
  46. package/lib/index.js +6 -4
  47. package/lib/jsonwp-proxy/protocol-converter.js +15 -18
  48. package/lib/jsonwp-proxy/proxy.js +17 -15
  49. package/lib/protocol/errors.js +1 -1
  50. package/lib/protocol/helpers.js +5 -25
  51. package/lib/protocol/protocol.js +43 -54
  52. package/lib/protocol/routes.js +60 -1
  53. package/package.json +29 -22
  54. package/test/basedriver/capabilities-specs.js +34 -2
  55. package/test/basedriver/capability-specs.js +120 -146
  56. package/test/basedriver/commands/log-specs.js +12 -3
  57. package/test/basedriver/driver-tests.js +12 -7
  58. package/test/basedriver/helpers-specs.js +4 -0
  59. package/test/basedriver/timeout-specs.js +6 -11
  60. package/build/lib/protocol/sessions-cache.js +0 -88
  61. package/lib/protocol/sessions-cache.js +0 -74
@@ -142,6 +142,8 @@ function parseCaps(caps, constraints = {}, shouldValidateCaps = true) {
142
142
  }
143
143
 
144
144
  if (allFirstMatchCaps.length === 0) {
145
+ _logger.default.warn(`The firstMatch array in the given capabilities has no entries. Adding an empty entry fo rnow, ` + `but it will require one or more entries as W3C spec.`);
146
+
145
147
  allFirstMatchCaps.push({});
146
148
  }
147
149
 
@@ -254,4 +256,4 @@ function promoteAppiumOptions(originalCaps) {
254
256
  }require('source-map-support').install();
255
257
 
256
258
 
257
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9iYXNlZHJpdmVyL2NhcGFiaWxpdGllcy5qcyJdLCJuYW1lcyI6WyJBUFBJVU1fVkVORE9SX1BSRUZJWCIsIkFQUElVTV9PUFRTX0NBUCIsIlBSRUZJWEVEX0FQUElVTV9PUFRTX0NBUCIsIm1lcmdlQ2FwcyIsInByaW1hcnkiLCJzZWNvbmRhcnkiLCJyZXN1bHQiLCJPYmplY3QiLCJhc3NpZ24iLCJuYW1lIiwidmFsdWUiLCJfIiwidG9QYWlycyIsImlzVW5kZWZpbmVkIiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJKU09OIiwic3RyaW5naWZ5IiwidmFsaWRhdGVDYXBzIiwiY2FwcyIsImNvbnN0cmFpbnRzIiwib3B0cyIsInNraXBQcmVzZW5jZUNvbnN0cmFpbnQiLCJpc1BsYWluT2JqZWN0IiwiY2xvbmVEZWVwIiwia2V5Iiwia2V5cyIsInByZXNlbmNlIiwidmFsaWRhdGlvbkVycm9ycyIsInZhbGlkYXRvciIsInZhbGlkYXRlIiwicGlja0J5IiwidXRpbCIsImhhc1ZhbHVlIiwiZnVsbE1lc3NhZ2VzIiwibWVzc2FnZSIsImF0dHJpYnV0ZSIsInJlYXNvbnMiLCJyZWFzb24iLCJwdXNoIiwiam9pbiIsIlNUQU5EQVJEX0NBUFMiLCJpc1N0YW5kYXJkQ2FwIiwiY2FwIiwiZmluZCIsInN0YW5kYXJkQ2FwIiwidG9Mb3dlckNhc2UiLCJzdHJpcEFwcGl1bVByZWZpeGVzIiwicHJlZml4IiwicHJlZml4ZWRDYXBzIiwiZmlsdGVyIiwic3RhcnRzV2l0aCIsImJhZFByZWZpeGVkQ2FwcyIsInByZWZpeGVkQ2FwIiwic3RyaXBwZWRDYXBOYW1lIiwic3Vic3RyIiwibGVuZ3RoIiwiaXNOaWwiLCJsb2ciLCJ3YXJuIiwiZmluZE5vblByZWZpeGVkQ2FwcyIsImFsd2F5c01hdGNoIiwiZmlyc3RNYXRjaCIsImNoYWluIiwicmVkdWNlIiwidW5wcmVmaXhlZENhcHMiLCJpbmNsdWRlcyIsInVuaXEiLCJwYXJzZUNhcHMiLCJzaG91bGRWYWxpZGF0ZUNhcHMiLCJyZXF1aXJlZENhcHMiLCJhbGxGaXJzdE1hdGNoQ2FwcyIsImlzQXJyYXkiLCJub25QcmVmaXhlZENhcHMiLCJpc0VtcHR5IiwiZmlyc3RNYXRjaENhcHMiLCJmaWx0ZXJlZENvbnN0cmFpbnRzIiwicmVxdWlyZWRDYXBzS2V5cyIsInZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzIiwibWFwIiwiZSIsImlzTnVsbCIsIm1hdGNoZWRDYXBzIiwiZXJyIiwicHJvY2Vzc0NhcGFiaWxpdGllcyIsInByb21vdGVBcHBpdW1PcHRpb25zIiwib3JpZ2luYWxDYXBzIiwiYXBwaXVtT3B0aW9ucyIsIlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IiLCJvdmVyd3JpdHRlbktleXMiLCJpbnRlcnNlY3Rpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxvQkFBb0IsR0FBRyxTQUE3Qjs7QUFDQSxNQUFNQyxlQUFlLEdBQUcsU0FBeEI7O0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUksR0FBRUYsb0JBQXFCLEdBQUVDLGVBQWdCLEVBQTNFOzs7QUFJQSxTQUFTRSxTQUFULENBQW9CQyxPQUFPLEdBQUcsRUFBOUIsRUFBa0NDLFNBQVMsR0FBRyxFQUE5QyxFQUFrRDtBQUNoRCxNQUFJQyxNQUFNLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JKLE9BQWxCLENBQWI7O0FBRUEsT0FBSyxJQUFJLENBQUNLLElBQUQsRUFBT0MsS0FBUCxDQUFULElBQTBCQyxnQkFBRUMsT0FBRixDQUFVUCxTQUFWLENBQTFCLEVBQWdEO0FBRTlDLFFBQUksQ0FBQ00sZ0JBQUVFLFdBQUYsQ0FBY1QsT0FBTyxDQUFDSyxJQUFELENBQXJCLENBQUwsRUFBbUM7QUFDakMsWUFBTSxJQUFJSyxlQUFPQyxvQkFBWCxDQUFpQyxhQUFZTixJQUFLLHVDQUFzQ08sSUFBSSxDQUFDQyxTQUFMLENBQWViLE9BQWYsQ0FBd0Isb0JBQW1C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R0FBR0QsWUFBWSxDQUFDckYsZUFBRCxDQUFsQzs7QUFDQSxNQUFJLENBQUNzRixhQUFMLEVBQW9CO0FBQ2xCLFdBQU9ELFlBQVA7QUFDRDs7QUFFRCxNQUFJbkUsSUFBSSxHQUFHUixnQkFBRWEsU0FBRixDQUFZOEQsWUFBWixDQUFYOztBQUNBLE1BQUksQ0FBQzNFLGdCQUFFWSxhQUFGLENBQWdCZ0UsYUFBaEIsQ0FBTCxFQUFxQztBQUNuQyxVQUFNLElBQUl6RSxlQUFPMEUsc0JBQVgsQ0FBbUMsT0FBTXZGLGVBQWdCLCtCQUF6RCxDQUFOO0FBQ0Q7O0FBR0Q4QyxFQUFBQSxtQkFBbUIsQ0FBQ3dDLGFBQUQsQ0FBbkI7O0FBR0EsUUFBTUUsZUFBZSxHQUFHOUUsZ0JBQUUrRSxZQUFGLENBQWVuRixNQUFNLENBQUNtQixJQUFQLENBQVlQLElBQVosQ0FBZixFQUFrQ1osTUFBTSxDQUFDbUIsSUFBUCxDQUFZNkQsYUFBWixDQUFsQyxDQUF4Qjs7QUFDQSxNQUFJRSxlQUFlLENBQUNqQyxNQUFoQixHQUF5QixDQUE3QixFQUFnQztBQUM5QkUsb0JBQUlDLElBQUosQ0FBVSw2QkFBNEJ6RCx3QkFBeUIsdUJBQXRELEdBQ0Msa0NBQWlDYyxJQUFJLENBQUNDLFNBQUwsQ0FBZXdFLGVBQWYsQ0FBZ0MsRUFEM0U7QUFFRDs7QUFHRHRFLEVBQUFBLElBQUksR0FBRyxFQUFDLEdBQUdBLElBQUo7QUFBVSxPQUFHb0U7QUFBYixHQUFQO0FBR0EsU0FBT3BFLElBQUksQ0FBQ2xCLGVBQUQsQ0FBWDtBQUNBLFNBQU9rQixJQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgdmFsaWRhdG9yIH0gZnJvbSAnLi9kZXNpcmVkLWNhcHMnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJy4uL3Byb3RvY29sL2Vycm9ycyc7XG5cbmNvbnN0IEFQUElVTV9WRU5ET1JfUFJFRklYID0gJ2FwcGl1bTonO1xuY29uc3QgQVBQSVVNX09QVFNfQ0FQID0gJ29wdGlvbnMnO1xuY29uc3QgUFJFRklYRURfQVBQSVVNX09QVFNfQ0FQID0gYCR7QVBQSVVNX1ZFTkRPUl9QUkVGSVh9JHtBUFBJVU1fT1BUU19DQVB9YDtcblxuLy8gVGFrZXMgcHJpbWFyeSBjYXBzIG9iamVjdCBhbmQgbWVyZ2VzIGl0IGludG8gYSBzZWNvbmRhcnkgY2FwcyBvYmplY3QuXG4vLyAoc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJkcml2ZXIvI2Rmbi1tZXJnaW5nLWNhcGFiaWxpdGllcylcbmZ1bmN0aW9uIG1lcmdlQ2FwcyAocHJpbWFyeSA9IHt9LCBzZWNvbmRhcnkgPSB7fSkge1xuICBsZXQgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbih7fSwgcHJpbWFyeSk7XG5cbiAgZm9yIChsZXQgW25hbWUsIHZhbHVlXSBvZiBfLnRvUGFpcnMoc2Vjb25kYXJ5KSkge1xuICAgIC8vIE92ZXJ3cml0aW5nIGlzIG5vdCBhbGxvd2VkLiBQcmltYXJ5IGFuZCBzZWNvbmRhcnkgbXVzdCBoYXZlIGRpZmZlcmVudCBwcm9wZXJ0aWVzICh3M2MgcnVsZSA0LjQpXG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHByaW1hcnlbbmFtZV0pKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBwcm9wZXJ0eSAnJHtuYW1lfScgc2hvdWxkIG5vdCBleGlzdCBvbiBib3RoIHByaW1hcnkgKCR7SlNPTi5zdHJpbmdpZnkocHJpbWFyeSl9KSBhbmQgc2Vjb25kYXJ5ICgke0pTT04uc3RyaW5naWZ5KHNlY29uZGFyeSl9KSBvYmplY3RgKTtcbiAgICB9XG4gICAgcmVzdWx0W25hbWVdID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBWYWxpZGF0ZXMgY2FwcyBhZ2FpbnN0IGEgc2V0IG9mIGNvbnN0cmFpbnRzXG5mdW5jdGlvbiB2YWxpZGF0ZUNhcHMgKGNhcHMsIGNvbnN0cmFpbnRzID0ge30sIG9wdHMgPSB7fSkge1xuXG4gIGxldCB7c2tpcFByZXNlbmNlQ29uc3RyYWludH0gPSBvcHRzO1xuXG4gIGlmICghXy5pc1BsYWluT2JqZWN0KGNhcHMpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgbXVzdCBiZSBhIEpTT04gb2JqZWN0YCk7XG4gIH1cblxuICBjb25zdHJhaW50cyA9IF8uY2xvbmVEZWVwKGNvbnN0cmFpbnRzKTsgLy8gRGVmZW5zaXZlIGNvcHlcblxuICBpZiAoc2tpcFByZXNlbmNlQ29uc3RyYWludCkge1xuICAgIC8vIFJlbW92ZSB0aGUgJ3ByZXNlbmNlJyBjb25zdHJhaW50IGlmIHdlJ3JlIG5vdCBjaGVja2luZyBmb3IgaXRcbiAgICBmb3IgKGxldCBrZXkgb2YgXy5rZXlzKGNvbnN0cmFpbnRzKSkge1xuICAgICAgZGVsZXRlIGNvbnN0cmFpbnRzW2tleV0ucHJlc2VuY2U7XG4gICAgfVxuICB9XG5cbiAgbGV0IHZhbGlkYXRpb25FcnJvcnMgPSB2YWxpZGF0b3IudmFsaWRhdGUoXy5waWNrQnkoY2FwcywgdXRpbC5oYXNWYWx1ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Z1bGxNZXNzYWdlczogZmFsc2V9KTtcblxuICBpZiAodmFsaWRhdGlvbkVycm9ycykge1xuICAgIGxldCBtZXNzYWdlID0gW107XG4gICAgZm9yIChsZXQgW2F0dHJpYnV0ZSwgcmVhc29uc10gb2YgXy50b1BhaXJzKHZhbGlkYXRpb25FcnJvcnMpKSB7XG4gICAgICBmb3IgKGxldCByZWFzb24gb2YgcmVhc29ucykge1xuICAgICAgICBtZXNzYWdlLnB1c2goYCcke2F0dHJpYnV0ZX0nICR7cmVhc29ufWApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKG1lc3NhZ2Uuam9pbignOyAnKSk7XG4gIH1cblxuICAvLyBSZXR1cm4gY2Fwc1xuICByZXR1cm4gY2Fwcztcbn1cblxuLy8gU3RhbmRhcmQsIG5vbi1wcmVmaXhlZCBjYXBhYmlsaXRpZXMgKHNlZSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNkZm4tdGFibGUtb2Ytc3RhbmRhcmQtY2FwYWJpbGl0aWVzKVxuY29uc3QgU1RBTkRBUkRfQ0FQUyA9IFtcbiAgJ2Jyb3dzZXJOYW1lJyxcbiAgJ2Jyb3dzZXJWZXJzaW9uJyxcbiAgJ3BsYXRmb3JtTmFtZScsXG4gICdhY2NlcHRJbnNlY3VyZUNlcnRzJyxcbiAgJ3BhZ2VMb2FkU3RyYXRlZ3knLFxuICAncHJveHknLFxuICAnc2V0V2luZG93UmVjdCcsXG4gICd0aW1lb3V0cycsXG4gICd1bmhhbmRsZWRQcm9tcHRCZWhhdmlvcidcbl07XG5cbmZ1bmN0aW9uIGlzU3RhbmRhcmRDYXAgKGNhcCkge1xuICByZXR1cm4gISFfLmZpbmQoU1RBTkRBUkRfQ0FQUywgKHN0YW5kYXJkQ2FwKSA9PiBzdGFuZGFyZENhcC50b0xvd2VyQ2FzZSgpID09PSBgJHtjYXB9YC50b0xvd2VyQ2FzZSgpKTtcbn1cblxuLy8gSWYgdGhlICdhcHBpdW06JyBwcmVmaXggd2FzIHByb3ZpZGVkIGFuZCBpdCdzIGEgdmFsaWQgY2FwYWJpbGl0eSwgc3RyaXAgb3V0IHRoZSBwcmVmaXggKHNlZSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNkZm4tZXh0ZW5zaW9uLWNhcGFiaWxpdGllcylcbi8vIChOT1RFOiBNZXRob2QgaXMgZGVzdHJ1Y3RpdmUgYW5kIG11dGF0ZXMgY29udGVudHMgb2YgY2FwcylcbmZ1bmN0aW9uIHN0cmlwQXBwaXVtUHJlZml4ZXMgKGNhcHMpIHtcbiAgY29uc3QgcHJlZml4ID0gJ2FwcGl1bTonO1xuICBjb25zdCBwcmVmaXhlZENhcHMgPSBfLmZpbHRlcihfLmtleXMoY2FwcyksIChjYXApID0+IGAke2NhcH1gLnN0YXJ0c1dpdGgocHJlZml4KSk7XG4gIGNvbnN0IGJhZFByZWZpeGVkQ2FwcyA9IFtdO1xuXG4gIC8vIFN0cmlwIG91dCB0aGUgJ2FwcGl1bTonIHByZWZpeFxuICBmb3IgKGxldCBwcmVmaXhlZENhcCBvZiBwcmVmaXhlZENhcHMpIHtcbiAgICBjb25zdCBzdHJpcHBlZENhcE5hbWUgPSBwcmVmaXhlZENhcC5zdWJzdHIocHJlZml4Lmxlbmd0aCk7XG5cbiAgICAvLyBJZiBpdCdzIHN0YW5kYXJkIGNhcGFiaWxpdHkgdGhhdCB3YXMgcHJlZml4ZWQsIGFkZCBpdCB0byBhbiBhcnJheSBvZiBpbmNvcnJlY3RseSBwcmVmaXhlZCBjYXBhYmlsaXRpZXNcbiAgICBpZiAoaXNTdGFuZGFyZENhcChzdHJpcHBlZENhcE5hbWUpKSB7XG4gICAgICBiYWRQcmVmaXhlZENhcHMucHVzaChzdHJpcHBlZENhcE5hbWUpO1xuICAgICAgaWYgKF8uaXNOaWwoY2Fwc1tzdHJpcHBlZENhcE5hbWVdKSkge1xuICAgICAgICBjYXBzW3N0cmlwcGVkQ2FwTmFtZV0gPSBjYXBzW3ByZWZpeGVkQ2FwXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZy53YXJuKGBJZ25vcmluZyBjYXBhYmlsaXR5ICcke3ByZWZpeGVkQ2FwfT0ke2NhcHNbcHJlZml4ZWRDYXBdfScgYW5kIGAgK1xuICAgICAgICAgIGB1c2luZyBjYXBhYmlsaXR5ICcke3N0cmlwcGVkQ2FwTmFtZX09JHtjYXBzW3N0cmlwcGVkQ2FwTmFtZV19J2ApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjYXBzW3N0cmlwcGVkQ2FwTmFtZV0gPSBjYXBzW3ByZWZpeGVkQ2FwXTtcbiAgICB9XG5cbiAgICAvLyBTdHJpcCBvdXQgdGhlIHByZWZpeFxuICAgIGRlbGV0ZSBjYXBzW3ByZWZpeGVkQ2FwXTtcbiAgfVxuXG4gIC8vIElmIHdlIGZvdW5kIHN0YW5kYXJkIGNhcHMgdGhhdCB3ZXJlIGluY29ycmVjdGx5IHByZWZpeGVkLCB0aHJvdyBhbiBleGNlcHRpb24gKGUuZy46IGRvbid0IGFjY2VwdCAnYXBwaXVtOnBsYXRmb3JtTmFtZScsIG9ubHkgYWNjZXB0IGp1c3QgJ3BsYXRmb3JtTmFtZScpXG4gIGlmIChiYWRQcmVmaXhlZENhcHMubGVuZ3RoID4gMCkge1xuICAgIGxvZy53YXJuKGBUaGUgY2FwYWJpbGl0aWVzICR7SlNPTi5zdHJpbmdpZnkoYmFkUHJlZml4ZWRDYXBzKX0gYXJlIHN0YW5kYXJkIGNhcGFiaWxpdGllcyBhbmQgZG8gbm90IHJlcXVpcmUgXCJhcHBpdW06XCIgcHJlZml4YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgYW4gYXJyYXkgb2YgYWxsIHRoZSB1bnByZWZpeGVkIGNhcHMgdGhhdCBhcmUgYmVpbmcgdXNlZCBpbiAnYWx3YXlzTWF0Y2gnIGFuZCBhbGwgb2YgdGhlICdmaXJzdE1hdGNoJyBvYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBjYXBzIEEgY2FwYWJpbGl0aWVzIG9iamVjdFxuICovXG5mdW5jdGlvbiBmaW5kTm9uUHJlZml4ZWRDYXBzICh7YWx3YXlzTWF0Y2ggPSB7fSwgZmlyc3RNYXRjaCA9IFtdfSkge1xuICByZXR1cm4gXy5jaGFpbihbYWx3YXlzTWF0Y2gsIC4uLmZpcnN0TWF0Y2hdKVxuICAgIC5yZWR1Y2UoKHVucHJlZml4ZWRDYXBzLCBjYXBzKSA9PiBbXG4gICAgICAuLi51bnByZWZpeGVkQ2FwcyxcbiAgICAgIC4uLl8oY2Fwcykua2V5cygpLmZpbHRlcigoY2FwKSA9PiAhY2FwLmluY2x1ZGVzKCc6JykgJiYgIWlzU3RhbmRhcmRDYXAoY2FwKSksXG4gICAgXSwgW10pXG4gICAgLnVuaXEoKVxuICAgIC52YWx1ZSgpO1xufVxuXG4vLyBQYXJzZSBjYXBhYmlsaXRpZXMgKGJhc2VkIG9uIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJkcml2ZXIvI3Byb2Nlc3NpbmctY2FwYWJpbGl0aWVzKVxuZnVuY3Rpb24gcGFyc2VDYXBzIChjYXBzLCBjb25zdHJhaW50cyA9IHt9LCBzaG91bGRWYWxpZGF0ZUNhcHMgPSB0cnVlKSB7XG4gIC8vIElmIGNhcGFiaWxpdGllcyByZXF1ZXN0IGlzIG5vdCBhbiBvYmplY3QsIHJldHVybiBlcnJvciAoIzEuMSlcbiAgaWYgKCFfLmlzUGxhaW5PYmplY3QoY2FwcykpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKCdUaGUgY2FwYWJpbGl0aWVzIGFyZ3VtZW50IHdhcyBub3QgdmFsaWQgZm9yIHRoZSBmb2xsb3dpbmcgcmVhc29uKHMpOiBcImNhcGFiaWxpdGllc1wiIG11c3QgYmUgYSBKU09OIG9iamVjdC4nKTtcbiAgfVxuXG4gIC8vIExldCAncmVxdWlyZWRDYXBzJyBiZSBwcm9wZXJ0eSBuYW1lZCAnYWx3YXlzTWF0Y2gnIGZyb20gY2FwYWJpbGl0aWVzIHJlcXVlc3QgKCMyKVxuICAvLyBhbmQgJ2FsbEZpcnN0TWF0Y2hDYXBzJyBiZSBwcm9wZXJ0eSBuYW1lZCAnZmlyc3RNYXRjaCcgZnJvbSBjYXBhYmlsaXRpZXMgcmVxdWVzdCAoIzMpXG4gIGxldCB7XG4gICAgYWx3YXlzTWF0Y2g6IHJlcXVpcmVkQ2FwcyA9IHt9LCAvLyBJZiAncmVxdWlyZWRDYXBzJyBpcyB1bmRlZmluZWQsIHNldCBpdCB0byBhbiBlbXB0eSBKU09OIG9iamVjdCAoIzIuMSlcbiAgICBmaXJzdE1hdGNoOiBhbGxGaXJzdE1hdGNoQ2FwcyA9IFt7fV0sIC8vIElmICdmaXJzdE1hdGNoJyBpcyB1bmRlZmluZWQgc2V0IGl0IHRvIGEgc2luZ2xldG9uIGxpc3Qgd2l0aCBvbmUgZW1wdHkgb2JqZWN0ICgjMy4xKVxuICB9ID0gY2FwcztcblxuICAvLyBSZWplY3QgJ2ZpcnN0TWF0Y2gnIGFyZ3VtZW50IGlmIGl0J3Mgbm90IGFuIGFycmF5ICgjMy4yKVxuICBpZiAoIV8uaXNBcnJheShhbGxGaXJzdE1hdGNoQ2FwcykpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKCdUaGUgY2FwYWJpbGl0aWVzLmZpcnN0TWF0Y2ggYXJndW1lbnQgd2FzIG5vdCB2YWxpZCBmb3IgdGhlIGZvbGxvd2luZyByZWFzb24ocyk6IFwiY2FwYWJpbGl0aWVzLmZpcnN0TWF0Y2hcIiBtdXN0IGJlIGEgSlNPTiBhcnJheSBvciB1bmRlZmluZWQnKTtcbiAgfVxuXG4gIC8vIElmIGFuIGVtcHR5IGFycmF5IGFzIHByb3ZpZGVkLCB3ZSdsbCBiZSBmb3JnaXZpbmcgYW5kIG1ha2UgaXQgYW4gYXJyYXkgb2Ygb25lIGVtcHR5IG9iamVjdFxuICBpZiAoYWxsRmlyc3RNYXRjaENhcHMubGVuZ3RoID09PSAwKSB7XG4gICAgYWxsRmlyc3RNYXRjaENhcHMucHVzaCh7fSk7XG4gIH1cblxuICAvLyBDaGVjayBmb3Igbm9uLXByZWZpeGVkLCBub24tc3RhbmRhcmQgY2FwYWJpbGl0aWVzIGFuZCBsb2cgd2FybmluZ3MgaWYgdGhleSBhcmUgZm91bmRcbiAgbGV0IG5vblByZWZpeGVkQ2FwcyA9IGZpbmROb25QcmVmaXhlZENhcHMoY2Fwcyk7XG4gIGlmICghXy5pc0VtcHR5KG5vblByZWZpeGVkQ2FwcykpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBBbGwgbm9uLXN0YW5kYXJkIGNhcGFiaWxpdGllcyBzaG91bGQgaGF2ZSBhIHZlbmRvciBwcmVmaXguIFRoZSBmb2xsb3dpbmcgY2FwYWJpbGl0aWVzIGRpZCBub3QgaGF2ZSBvbmU6ICR7bm9uUHJlZml4ZWRDYXBzfWApO1xuICB9XG5cbiAgLy8gU3RyaXAgb3V0IHRoZSAnYXBwaXVtOicgcHJlZml4IGZyb20gYWxsXG4gIHN0cmlwQXBwaXVtUHJlZml4ZXMocmVxdWlyZWRDYXBzKTtcbiAgZm9yIChsZXQgZmlyc3RNYXRjaENhcHMgb2YgYWxsRmlyc3RNYXRjaENhcHMpIHtcbiAgICBzdHJpcEFwcGl1bVByZWZpeGVzKGZpcnN0TWF0Y2hDYXBzKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIHRoZSByZXF1aXJlZENhcHMuIEJ1dCBkb24ndCB2YWxpZGF0ZSAncHJlc2VuY2UnIGJlY2F1c2UgaWYgdGhhdCBjb25zdHJhaW50IGZhaWxzIG9uICdhbHdheXNNYXRjaCcgaXQgY291bGQgc3RpbGwgcGFzcyBvbiBvbmUgb2YgdGhlICdmaXJzdE1hdGNoJyBrZXlzXG4gIGlmIChzaG91bGRWYWxpZGF0ZUNhcHMpIHtcbiAgICByZXF1aXJlZENhcHMgPSB2YWxpZGF0ZUNhcHMocmVxdWlyZWRDYXBzLCBjb25zdHJhaW50cywge3NraXBQcmVzZW5jZUNvbnN0cmFpbnQ6IHRydWV9KTtcbiAgfVxuXG5cbiAgLy8gUmVtb3ZlIHRoZSAncHJlc2VuY2UnIGNvbnN0cmFpbnQgZm9yIGFueSBrZXlzIHRoYXQgYXJlIGFscmVhZHkgcHJlc2VudCBpbiAncmVxdWlyZWRDYXBzJ1xuICAvLyBzaW5jZSB3ZSBrbm93IHRoYXQgdGhpcyBjb25zdHJhaW50IGhhcyBhbHJlYWR5IHBhc3NlZFxuICBsZXQgZmlsdGVyZWRDb25zdHJhaW50cyA9IHsuLi5jb25zdHJhaW50c307XG4gIGxldCByZXF1aXJlZENhcHNLZXlzID0gXy5rZXlzKHJlcXVpcmVkQ2Fwcyk7XG4gIGZvciAobGV0IGtleSBvZiBfLmtleXMoZmlsdGVyZWRDb25zdHJhaW50cykpIHtcbiAgICBpZiAocmVxdWlyZWRDYXBzS2V5cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICBkZWxldGUgZmlsdGVyZWRDb25zdHJhaW50c1trZXldO1xuICAgIH1cbiAgfVxuXG4gIC8vIFZhbGlkYXRlIGFsbCBvZiB0aGUgZmlyc3QgbWF0Y2ggY2FwYWJpbGl0aWVzIGFuZCByZXR1cm4gYW4gYXJyYXkgd2l0aCBvbmx5IHRoZSB2YWxpZCBjYXBzIChzZWUgc3BlYyAjNSlcbiAgbGV0IHZhbGlkYXRpb25FcnJvcnMgPSBbXTtcbiAgbGV0IHZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzID0gYWxsRmlyc3RNYXRjaENhcHMubWFwKChmaXJzdE1hdGNoQ2FwcykgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBWYWxpZGF0ZSBmaXJzdE1hdGNoIGNhcHNcbiAgICAgIHJldHVybiBzaG91bGRWYWxpZGF0ZUNhcHMgPyB2YWxpZGF0ZUNhcHMoZmlyc3RNYXRjaENhcHMsIGZpbHRlcmVkQ29uc3RyYWludHMpIDogZmlyc3RNYXRjaENhcHM7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKGUubWVzc2FnZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0pLmZpbHRlcigoY2FwcykgPT4gIV8uaXNOdWxsKGNhcHMpKTtcblxuICAvLyBUcnkgdG8gbWVyZ2UgcmVxdWlyZWRDYXBzIHdpdGggZmlyc3QgbWF0Y2ggY2FwYWJpbGl0aWVzLCBicmVhayBvbmNlIGl0IGZpbmRzIGl0cyBmaXJzdCBtYXRjaCAoc2VlIHNwZWMgIzYpXG4gIGxldCBtYXRjaGVkQ2FwcyA9IG51bGw7XG4gIGZvciAobGV0IGZpcnN0TWF0Y2hDYXBzIG9mIHZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzKSB7XG4gICAgdHJ5IHtcbiAgICAgIG1hdGNoZWRDYXBzID0gbWVyZ2VDYXBzKHJlcXVpcmVkQ2FwcywgZmlyc3RNYXRjaENhcHMpO1xuICAgICAgaWYgKG1hdGNoZWRDYXBzKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLndhcm4oZXJyLm1lc3NhZ2UpO1xuICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKGVyci5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm5zIHZhcmlhYmxlcyBmb3IgdGVzdGluZyBwdXJwb3Nlc1xuICByZXR1cm4ge3JlcXVpcmVkQ2FwcywgYWxsRmlyc3RNYXRjaENhcHMsIHZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzLCBtYXRjaGVkQ2FwcywgdmFsaWRhdGlvbkVycm9yc307XG59XG5cbi8vIENhbGxzIHBhcnNlQ2FwcyBhbmQganVzdCByZXR1cm5zIHRoZSBtYXRjaGVkQ2FwcyB2YXJpYWJsZVxuZnVuY3Rpb24gcHJvY2Vzc0NhcGFiaWxpdGllcyAoY2FwcywgY29uc3RyYWludHMgPSB7fSwgc2hvdWxkVmFsaWRhdGVDYXBzID0gdHJ1ZSkge1xuICBjb25zdCB7bWF0Y2hlZENhcHMsIHZhbGlkYXRpb25FcnJvcnN9ID0gcGFyc2VDYXBzKGNhcHMsIGNvbnN0cmFpbnRzLCBzaG91bGRWYWxpZGF0ZUNhcHMpO1xuXG4gIC8vIElmIHdlIGZvdW5kIGFuIGVycm9yIHRocm93IGFuIGV4Y2VwdGlvblxuICBpZiAoIXV0aWwuaGFzVmFsdWUobWF0Y2hlZENhcHMpKSB7XG4gICAgaWYgKF8uaXNBcnJheShjYXBzLmZpcnN0TWF0Y2gpICYmIGNhcHMuZmlyc3RNYXRjaC5sZW5ndGggPiAxKSB7XG4gICAgICAvLyBJZiB0aGVyZSB3YXMgbW9yZSB0aGFuIG9uZSAnZmlyc3RNYXRjaCcgY2FwLCBpbmRpY2F0ZSB0aGF0IHdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaGluZyBjYXBhYmlsaXRpZXMgc2V0IGFuZCBzaG93IGFsbCB0aGUgZXJyb3JzXG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBDb3VsZCBub3QgZmluZCBtYXRjaGluZyBjYXBhYmlsaXRpZXMgZnJvbSAke0pTT04uc3RyaW5naWZ5KGNhcHMpfTpcXG4gJHt2YWxpZGF0aW9uRXJyb3JzLmpvaW4oJ1xcbicpfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2UsIGp1c3Qgc2hvdyB0aGUgc2luZ3VsYXIgZXJyb3IgbWVzc2FnZVxuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcih2YWxpZGF0aW9uRXJyb3JzWzBdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWF0Y2hlZENhcHM7XG59XG5cbi8qKlxuICogUmV0dXJuIGEgY29weSBvZiBhIGNhcGFiaWxpdGllcyBvYmplY3Qgd2hpY2ggaGFzIHRha2VuIGV2ZXJ5dGhpbmcgd2l0aGluIHRoZSAnb3B0aW9ucydcbiAqIGNhcGFiaWxpdHkgYW5kIHByb21vdGVkIGl0IHRvIHRoZSB0b3AgbGV2ZWwuIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGFzc3VtZWQgdG8gYmUgcnVuIGFmdGVyXG4gKiBhbGwgdmVuZG9yIHByZWZpeGVzIGhhdmUgYWxyZWFkeSBiZWVuIHN0cmlwcGVkIGZyb20gdGhlIHRvcCBsZXZlbC4gU28gd2UgYXJlIGRlYWxpbmcgd2l0aCBlLmcuXG4gKiAnb3B0aW9ucycgYW5kIG5vdCAnYXBwaXVtOm9wdGlvbnMnIGF0IHRoaXMgcG9pbnQuIEFueSBwcmVmaXhlcyBfaW5zaWRlXyB0aGUgJ29wdGlvbnMnIGNhcGFiaWxpdHlcbiAqIHdpbGwgdGhlbXNlbHZlcyBiZSBzdHJpcHBlZC4gVGhpcyBpcyBkZXNpZ25lZCBhcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgbm90IG9uZSB0byBvcGVyYXRlIG9uXG4gKiB1c2VyLWNvbnN0cnVjdGVkIGNhcGFiaWxpdGllcy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb3JpZ2luYWxDYXBzIC0gdGhlIGNhcGFiaWxpdGllcyB0byBhbmFseXplIGFuZCBwcm9tb3RlIGZyb20gJ29wdGlvbnMnXG4gKiBAcmV0dXJuIHtvYmplY3R9IC0gdGhlIGNhcGFiaWxpdGllcyB3aXRoICdvcHRpb25zJyBwcm9tb3RlZCBpZiBuZWNlc3NhcnlcbiAqL1xuZnVuY3Rpb24gcHJvbW90ZUFwcGl1bU9wdGlvbnMgKG9yaWdpbmFsQ2Fwcykge1xuICBjb25zdCBhcHBpdW1PcHRpb25zID0gb3JpZ2luYWxDYXBzW0FQUElVTV9PUFRTX0NBUF07XG4gIGlmICghYXBwaXVtT3B0aW9ucykge1xuICAgIHJldHVybiBvcmlnaW5hbENhcHM7XG4gIH1cblxuICBsZXQgY2FwcyA9IF8uY2xvbmVEZWVwKG9yaWdpbmFsQ2Fwcyk7XG4gIGlmICghXy5pc1BsYWluT2JqZWN0KGFwcGl1bU9wdGlvbnMpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5TZXNzaW9uTm90Q3JlYXRlZEVycm9yKGBUaGUgJHtBUFBJVU1fT1BUU19DQVB9IGNhcGFiaWxpdHkgbXVzdCBiZSBhbiBvYmplY3RgKTtcbiAgfVxuXG4gIC8vIGZpcnN0IGdldCByaWQgb2YgYW55IHByZWZpeGVzIGluc2lkZSBhcHBpdW06b3B0aW9uc1xuICBzdHJpcEFwcGl1bVByZWZpeGVzKGFwcGl1bU9wdGlvbnMpO1xuXG4gIC8vIHdhcm4gaWYgd2UgYXJlIGdvaW5nIHRvIG92ZXJ3cml0ZSBhbnkga2V5cyBvbiB0aGUgYmFzZSBjYXBzIG9iamVjdFxuICBjb25zdCBvdmVyd3JpdHRlbktleXMgPSBfLmludGVyc2VjdGlvbihPYmplY3Qua2V5cyhjYXBzKSwgT2JqZWN0LmtleXMoYXBwaXVtT3B0aW9ucykpO1xuICBpZiAob3ZlcndyaXR0ZW5LZXlzLmxlbmd0aCA+IDApIHtcbiAgICBsb2cud2FybihgRm91bmQgY2FwYWJpbGl0aWVzIGluc2lkZSAke1BSRUZJWEVEX0FQUElVTV9PUFRTX0NBUH0gdGhhdCB3aWxsIG92ZXJ3cml0ZSBgICtcbiAgICAgICAgICAgICBgY2FwYWJpbGl0aWVzIGF0IHRoZSB0b3AgbGV2ZWw6ICR7SlNPTi5zdHJpbmdpZnkob3ZlcndyaXR0ZW5LZXlzKX1gKTtcbiAgfVxuXG4gIC8vIG5vdyBqdXN0IGFwcGx5IHRoZW0gdG8gdGhlIG1haW4gY2FwcyBvYmplY3RcbiAgY2FwcyA9IHsuLi5jYXBzLCAuLi5hcHBpdW1PcHRpb25zfTtcblxuICAvLyBhbmQgcmVtb3ZlIGFsbCB0cmFjZXMgb2YgdGhlIG9wdGlvbnMgY2FwXG4gIGRlbGV0ZSBjYXBzW0FQUElVTV9PUFRTX0NBUF07XG4gIHJldHVybiBjYXBzO1xufVxuXG5cbmV4cG9ydCB7XG4gIHBhcnNlQ2FwcywgcHJvY2Vzc0NhcGFiaWxpdGllcywgdmFsaWRhdGVDYXBzLCBtZXJnZUNhcHMsIEFQUElVTV9WRU5ET1JfUFJFRklYLCBBUFBJVU1fT1BUU19DQVAsXG4gIGZpbmROb25QcmVmaXhlZENhcHMsIGlzU3RhbmRhcmRDYXAsIHN0cmlwQXBwaXVtUHJlZml4ZXMsIHByb21vdGVBcHBpdW1PcHRpb25zLCBQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVAsXG59O1xuIl0sImZpbGUiOiJsaWIvYmFzZWRyaXZlci9jYXBhYmlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
259
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9iYXNlZHJpdmVyL2NhcGFiaWxpdGllcy5qcyJdLCJuYW1lcyI6WyJBUFBJVU1fVkVORE9SX1BSRUZJWCIsIkFQUElVTV9PUFRTX0NBUCIsIlBSRUZJWEVEX0FQUElVTV9PUFRTX0NBUCIsIm1lcmdlQ2FwcyIsInByaW1hcnkiLCJzZWNvbmRhcnkiLCJyZXN1bHQiLCJPYmplY3QiLCJhc3NpZ24iLCJuYW1lIiwidmFsdWUiLCJfIiwidG9QYWlycyIsImlzVW5kZWZpbmVkIiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJKU09OIiwic3RyaW5naWZ5IiwidmFsaWRhdGVDYXBzIiwiY2FwcyIsImNvbnN0cmFpbnRzIiwib3B0cyIsInNraXBQcmVzZW5jZUNvbnN0cmFpbnQiLCJpc1BsYWluT2JqZWN0IiwiY2xvbmVEZWVwIiwia2V5Iiwia2V5cyIsInByZXNlbmNlIiwidmFsaWRhdGlvbkVycm9ycyIsInZhbGlkYXRvciIsInZhbGlkYXRlIiwicGlja0J5IiwidXRpbCIsImhhc1ZhbHVlIiwiZnVsbE1lc3NhZ2VzIiwibWVzc2FnZSIsImF0dHJpYnV0ZSIsInJlYXNvbnMiLCJyZWFzb24iLCJwdXNoIiwiam9pbiIsIlNUQU5EQVJEX0NBUFMiLCJpc1N0YW5kYXJkQ2FwIiwiY2FwIiwiZmluZCIsInN0YW5kYXJkQ2FwIiwidG9Mb3dlckNhc2UiLCJzdHJpcEFwcGl1bVByZWZpeGVzIiwicHJlZml4IiwicHJlZml4ZWRDYXBzIiwiZmlsdGVyIiwic3RhcnRzV2l0aCIsImJhZFByZWZpeGVkQ2FwcyIsInByZWZpeGVkQ2FwIiwic3RyaXBwZWRDYXBOYW1lIiwic3Vic3RyIiwibGVuZ3RoIiwiaXNOaWwiLCJsb2ciLCJ3YXJuIiwiZmluZE5vblByZWZpeGVkQ2FwcyIsImFsd2F5c01hdGNoIiwiZmlyc3RNYXRjaCIsImNoYWluIiwicmVkdWNlIiwidW5wcmVmaXhlZENhcHMiLCJpbmNsdWRlcyIsInVuaXEiLCJwYXJzZUNhcHMiLCJzaG91bGRWYWxpZGF0ZUNhcHMiLCJyZXF1aXJlZENhcHMiLCJhbGxGaXJzdE1hdGNoQ2FwcyIsImlzQXJyYXkiLCJub25QcmVmaXhlZENhcHMiLCJpc0VtcHR5IiwiZmlyc3RNYXRjaENhcHMiLCJmaWx0ZXJlZENvbnN0cmFpbnRzIiwicmVxdWlyZWRDYXBzS2V5cyIsInZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzIiwibWFwIiwiZSIsImlzTnVsbCIsIm1hdGNoZWRDYXBzIiwiZXJyIiwicHJvY2Vzc0NhcGFiaWxpdGllcyIsInByb21vdGVBcHBpdW1PcHRpb25zIiwib3JpZ2luYWxDYXBzIiwiYXBwaXVtT3B0aW9ucyIsIlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IiLCJvdmVyd3JpdHRlbktleXMiLCJpbnRlcnNlY3Rpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxvQkFBb0IsR0FBRyxTQUE3Qjs7QUFDQSxNQUFNQyxlQUFlLEdBQUcsU0FBeEI7O0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUksR0FBRUYsb0JBQXFCLEdBQUVDLGVBQWdCLEVBQTNFOzs7QUFJQSxTQUFTRSxTQUFULENBQW9CQyxPQUFPLEdBQUcsRUFBOUIsRUFBa0NDLFNBQVMsR0FBRyxFQUE5QyxFQUFrRDtBQUNoRCxNQUFJQyxNQUFNLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JKLE9BQWxCLENBQWI7O0FBRUEsT0FBSyxJQUFJLENBQUNLLElBQUQsRUFBT0MsS0FBUCxDQUFULElBQTBCQyxnQkFBRUMsT0FBRixDQUFVUCxTQUFWLENBQTFCLEVBQWdEO0FBRTlDLFFBQUksQ0FBQ00sZ0JBQUVFLFdBQUYsQ0FBY1QsT0FBTyxDQUFDSyxJQUFELENBQXJCLENBQUwsRUFBbUM7QUFDakMsWUFBTSxJQUFJSyxlQUFPQyxvQkFBWCxDQUFpQyxhQUFZTixJQUFLLHVDQUFzQ08sSUFBSSxDQUFDQyxTQUFMLENBQWViLE9BQWYsQ0FBd0Isb0JBQW1C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QkFBVCxDQUErQkMsWUFBL0IsRUFBNkM7QUFDM0MsUUFBTUMsYUFBYSxHQUFHRCxZQUFZLENBQUNyRixlQUFELENBQWxDOztBQUNBLE1BQUksQ0FBQ3NGLGFBQUwsRUFBb0I7QUFDbEIsV0FBT0QsWUFBUDtBQUNEOztBQUVELE1BQUluRSxJQUFJLEdBQUdSLGdCQUFFYSxTQUFGLENBQVk4RCxZQUFaLENBQVg7O0FBQ0EsTUFBSSxDQUFDM0UsZ0JBQUVZLGFBQUYsQ0FBZ0JnRSxhQUFoQixDQUFMLEVBQXFDO0FBQ25DLFVBQU0sSUFBSXpFLGVBQU8wRSxzQkFBWCxDQUFtQyxPQUFNdkYsZUFBZ0IsK0JBQXpELENBQU47QUFDRDs7QUFHRDhDLEVBQUFBLG1CQUFtQixDQUFDd0MsYUFBRCxDQUFuQjs7QUFHQSxRQUFNRSxlQUFlLEdBQUc5RSxnQkFBRStFLFlBQUYsQ0FBZW5GLE1BQU0sQ0FBQ21CLElBQVAsQ0FBWVAsSUFBWixDQUFmLEVBQWtDWixNQUFNLENBQUNtQixJQUFQLENBQVk2RCxhQUFaLENBQWxDLENBQXhCOztBQUNBLE1BQUlFLGVBQWUsQ0FBQ2pDLE1BQWhCLEdBQXlCLENBQTdCLEVBQWdDO0FBQzlCRSxvQkFBSUMsSUFBSixDQUFVLDZCQUE0QnpELHdCQUF5Qix1QkFBdEQsR0FDQyxrQ0FBaUNjLElBQUksQ0FBQ0MsU0FBTCxDQUFld0UsZUFBZixDQUFnQyxFQUQzRTtBQUVEOztBQUdEdEUsRUFBQUEsSUFBSSxHQUFHLEVBQUMsR0FBR0EsSUFBSjtBQUFVLE9BQUdvRTtBQUFiLEdBQVA7QUFHQSxTQUFPcEUsSUFBSSxDQUFDbEIsZUFBRCxDQUFYO0FBQ0EsU0FBT2tCLElBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB2YWxpZGF0b3IgfSBmcm9tICcuL2Rlc2lyZWQtY2Fwcyc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnLi4vcHJvdG9jb2wvZXJyb3JzJztcblxuY29uc3QgQVBQSVVNX1ZFTkRPUl9QUkVGSVggPSAnYXBwaXVtOic7XG5jb25zdCBBUFBJVU1fT1BUU19DQVAgPSAnb3B0aW9ucyc7XG5jb25zdCBQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVAgPSBgJHtBUFBJVU1fVkVORE9SX1BSRUZJWH0ke0FQUElVTV9PUFRTX0NBUH1gO1xuXG4vLyBUYWtlcyBwcmltYXJ5IGNhcHMgb2JqZWN0IGFuZCBtZXJnZXMgaXQgaW50byBhIHNlY29uZGFyeSBjYXBzIG9iamVjdC5cbi8vIChzZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZGZuLW1lcmdpbmctY2FwYWJpbGl0aWVzKVxuZnVuY3Rpb24gbWVyZ2VDYXBzIChwcmltYXJ5ID0ge30sIHNlY29uZGFyeSA9IHt9KSB7XG4gIGxldCByZXN1bHQgPSBPYmplY3QuYXNzaWduKHt9LCBwcmltYXJ5KTtcblxuICBmb3IgKGxldCBbbmFtZSwgdmFsdWVdIG9mIF8udG9QYWlycyhzZWNvbmRhcnkpKSB7XG4gICAgLy8gT3ZlcndyaXRpbmcgaXMgbm90IGFsbG93ZWQuIFByaW1hcnkgYW5kIHNlY29uZGFyeSBtdXN0IGhhdmUgZGlmZmVyZW50IHByb3BlcnRpZXMgKHczYyBydWxlIDQuNClcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocHJpbWFyeVtuYW1lXSkpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYHByb3BlcnR5ICcke25hbWV9JyBzaG91bGQgbm90IGV4aXN0IG9uIGJvdGggcHJpbWFyeSAoJHtKU09OLnN0cmluZ2lmeShwcmltYXJ5KX0pIGFuZCBzZWNvbmRhcnkgKCR7SlNPTi5zdHJpbmdpZnkoc2Vjb25kYXJ5KX0pIG9iamVjdGApO1xuICAgIH1cbiAgICByZXN1bHRbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIFZhbGlkYXRlcyBjYXBzIGFnYWluc3QgYSBzZXQgb2YgY29uc3RyYWludHNcbmZ1bmN0aW9uIHZhbGlkYXRlQ2FwcyAoY2FwcywgY29uc3RyYWludHMgPSB7fSwgb3B0cyA9IHt9KSB7XG5cbiAgbGV0IHtza2lwUHJlc2VuY2VDb25zdHJhaW50fSA9IG9wdHM7XG5cbiAgaWYgKCFfLmlzUGxhaW5PYmplY3QoY2FwcykpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBtdXN0IGJlIGEgSlNPTiBvYmplY3RgKTtcbiAgfVxuXG4gIGNvbnN0cmFpbnRzID0gXy5jbG9uZURlZXAoY29uc3RyYWludHMpOyAvLyBEZWZlbnNpdmUgY29weVxuXG4gIGlmIChza2lwUHJlc2VuY2VDb25zdHJhaW50KSB7XG4gICAgLy8gUmVtb3ZlIHRoZSAncHJlc2VuY2UnIGNvbnN0cmFpbnQgaWYgd2UncmUgbm90IGNoZWNraW5nIGZvciBpdFxuICAgIGZvciAobGV0IGtleSBvZiBfLmtleXMoY29uc3RyYWludHMpKSB7XG4gICAgICBkZWxldGUgY29uc3RyYWludHNba2V5XS5wcmVzZW5jZTtcbiAgICB9XG4gIH1cblxuICBsZXQgdmFsaWRhdGlvbkVycm9ycyA9IHZhbGlkYXRvci52YWxpZGF0ZShfLnBpY2tCeShjYXBzLCB1dGlsLmhhc1ZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZnVsbE1lc3NhZ2VzOiBmYWxzZX0pO1xuXG4gIGlmICh2YWxpZGF0aW9uRXJyb3JzKSB7XG4gICAgbGV0IG1lc3NhZ2UgPSBbXTtcbiAgICBmb3IgKGxldCBbYXR0cmlidXRlLCByZWFzb25zXSBvZiBfLnRvUGFpcnModmFsaWRhdGlvbkVycm9ycykpIHtcbiAgICAgIGZvciAobGV0IHJlYXNvbiBvZiByZWFzb25zKSB7XG4gICAgICAgIG1lc3NhZ2UucHVzaChgJyR7YXR0cmlidXRlfScgJHtyZWFzb259YCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IobWVzc2FnZS5qb2luKCc7ICcpKTtcbiAgfVxuXG4gIC8vIFJldHVybiBjYXBzXG4gIHJldHVybiBjYXBzO1xufVxuXG4vLyBTdGFuZGFyZCwgbm9uLXByZWZpeGVkIGNhcGFiaWxpdGllcyAoc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJkcml2ZXIvI2Rmbi10YWJsZS1vZi1zdGFuZGFyZC1jYXBhYmlsaXRpZXMpXG5jb25zdCBTVEFOREFSRF9DQVBTID0gW1xuICAnYnJvd3Nlck5hbWUnLFxuICAnYnJvd3NlclZlcnNpb24nLFxuICAncGxhdGZvcm1OYW1lJyxcbiAgJ2FjY2VwdEluc2VjdXJlQ2VydHMnLFxuICAncGFnZUxvYWRTdHJhdGVneScsXG4gICdwcm94eScsXG4gICdzZXRXaW5kb3dSZWN0JyxcbiAgJ3RpbWVvdXRzJyxcbiAgJ3VuaGFuZGxlZFByb21wdEJlaGF2aW9yJ1xuXTtcblxuZnVuY3Rpb24gaXNTdGFuZGFyZENhcCAoY2FwKSB7XG4gIHJldHVybiAhIV8uZmluZChTVEFOREFSRF9DQVBTLCAoc3RhbmRhcmRDYXApID0+IHN0YW5kYXJkQ2FwLnRvTG93ZXJDYXNlKCkgPT09IGAke2NhcH1gLnRvTG93ZXJDYXNlKCkpO1xufVxuXG4vLyBJZiB0aGUgJ2FwcGl1bTonIHByZWZpeCB3YXMgcHJvdmlkZWQgYW5kIGl0J3MgYSB2YWxpZCBjYXBhYmlsaXR5LCBzdHJpcCBvdXQgdGhlIHByZWZpeCAoc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJkcml2ZXIvI2Rmbi1leHRlbnNpb24tY2FwYWJpbGl0aWVzKVxuLy8gKE5PVEU6IE1ldGhvZCBpcyBkZXN0cnVjdGl2ZSBhbmQgbXV0YXRlcyBjb250ZW50cyBvZiBjYXBzKVxuZnVuY3Rpb24gc3RyaXBBcHBpdW1QcmVmaXhlcyAoY2Fwcykge1xuICBjb25zdCBwcmVmaXggPSAnYXBwaXVtOic7XG4gIGNvbnN0IHByZWZpeGVkQ2FwcyA9IF8uZmlsdGVyKF8ua2V5cyhjYXBzKSwgKGNhcCkgPT4gYCR7Y2FwfWAuc3RhcnRzV2l0aChwcmVmaXgpKTtcbiAgY29uc3QgYmFkUHJlZml4ZWRDYXBzID0gW107XG5cbiAgLy8gU3RyaXAgb3V0IHRoZSAnYXBwaXVtOicgcHJlZml4XG4gIGZvciAobGV0IHByZWZpeGVkQ2FwIG9mIHByZWZpeGVkQ2Fwcykge1xuICAgIGNvbnN0IHN0cmlwcGVkQ2FwTmFtZSA9IHByZWZpeGVkQ2FwLnN1YnN0cihwcmVmaXgubGVuZ3RoKTtcblxuICAgIC8vIElmIGl0J3Mgc3RhbmRhcmQgY2FwYWJpbGl0eSB0aGF0IHdhcyBwcmVmaXhlZCwgYWRkIGl0IHRvIGFuIGFycmF5IG9mIGluY29ycmVjdGx5IHByZWZpeGVkIGNhcGFiaWxpdGllc1xuICAgIGlmIChpc1N0YW5kYXJkQ2FwKHN0cmlwcGVkQ2FwTmFtZSkpIHtcbiAgICAgIGJhZFByZWZpeGVkQ2Fwcy5wdXNoKHN0cmlwcGVkQ2FwTmFtZSk7XG4gICAgICBpZiAoXy5pc05pbChjYXBzW3N0cmlwcGVkQ2FwTmFtZV0pKSB7XG4gICAgICAgIGNhcHNbc3RyaXBwZWRDYXBOYW1lXSA9IGNhcHNbcHJlZml4ZWRDYXBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLndhcm4oYElnbm9yaW5nIGNhcGFiaWxpdHkgJyR7cHJlZml4ZWRDYXB9PSR7Y2Fwc1twcmVmaXhlZENhcF19JyBhbmQgYCArXG4gICAgICAgICAgYHVzaW5nIGNhcGFiaWxpdHkgJyR7c3RyaXBwZWRDYXBOYW1lfT0ke2NhcHNbc3RyaXBwZWRDYXBOYW1lXX0nYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcHNbc3RyaXBwZWRDYXBOYW1lXSA9IGNhcHNbcHJlZml4ZWRDYXBdO1xuICAgIH1cblxuICAgIC8vIFN0cmlwIG91dCB0aGUgcHJlZml4XG4gICAgZGVsZXRlIGNhcHNbcHJlZml4ZWRDYXBdO1xuICB9XG5cbiAgLy8gSWYgd2UgZm91bmQgc3RhbmRhcmQgY2FwcyB0aGF0IHdlcmUgaW5jb3JyZWN0bHkgcHJlZml4ZWQsIHRocm93IGFuIGV4Y2VwdGlvbiAoZS5nLjogZG9uJ3QgYWNjZXB0ICdhcHBpdW06cGxhdGZvcm1OYW1lJywgb25seSBhY2NlcHQganVzdCAncGxhdGZvcm1OYW1lJylcbiAgaWYgKGJhZFByZWZpeGVkQ2Fwcy5sZW5ndGggPiAwKSB7XG4gICAgbG9nLndhcm4oYFRoZSBjYXBhYmlsaXRpZXMgJHtKU09OLnN0cmluZ2lmeShiYWRQcmVmaXhlZENhcHMpfSBhcmUgc3RhbmRhcmQgY2FwYWJpbGl0aWVzIGFuZCBkbyBub3QgcmVxdWlyZSBcImFwcGl1bTpcIiBwcmVmaXhgKTtcbiAgfVxufVxuXG4vKipcbiAqIEdldCBhbiBhcnJheSBvZiBhbGwgdGhlIHVucHJlZml4ZWQgY2FwcyB0aGF0IGFyZSBiZWluZyB1c2VkIGluICdhbHdheXNNYXRjaCcgYW5kIGFsbCBvZiB0aGUgJ2ZpcnN0TWF0Y2gnIG9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IGNhcHMgQSBjYXBhYmlsaXRpZXMgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIGZpbmROb25QcmVmaXhlZENhcHMgKHthbHdheXNNYXRjaCA9IHt9LCBmaXJzdE1hdGNoID0gW119KSB7XG4gIHJldHVybiBfLmNoYWluKFthbHdheXNNYXRjaCwgLi4uZmlyc3RNYXRjaF0pXG4gICAgLnJlZHVjZSgodW5wcmVmaXhlZENhcHMsIGNhcHMpID0+IFtcbiAgICAgIC4uLnVucHJlZml4ZWRDYXBzLFxuICAgICAgLi4uXyhjYXBzKS5rZXlzKCkuZmlsdGVyKChjYXApID0+ICFjYXAuaW5jbHVkZXMoJzonKSAmJiAhaXNTdGFuZGFyZENhcChjYXApKSxcbiAgICBdLCBbXSlcbiAgICAudW5pcSgpXG4gICAgLnZhbHVlKCk7XG59XG5cbi8vIFBhcnNlIGNhcGFiaWxpdGllcyAoYmFzZWQgb24gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jcHJvY2Vzc2luZy1jYXBhYmlsaXRpZXMpXG5mdW5jdGlvbiBwYXJzZUNhcHMgKGNhcHMsIGNvbnN0cmFpbnRzID0ge30sIHNob3VsZFZhbGlkYXRlQ2FwcyA9IHRydWUpIHtcbiAgLy8gSWYgY2FwYWJpbGl0aWVzIHJlcXVlc3QgaXMgbm90IGFuIG9iamVjdCwgcmV0dXJuIGVycm9yICgjMS4xKVxuICBpZiAoIV8uaXNQbGFpbk9iamVjdChjYXBzKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoJ1RoZSBjYXBhYmlsaXRpZXMgYXJndW1lbnQgd2FzIG5vdCB2YWxpZCBmb3IgdGhlIGZvbGxvd2luZyByZWFzb24ocyk6IFwiY2FwYWJpbGl0aWVzXCIgbXVzdCBiZSBhIEpTT04gb2JqZWN0LicpO1xuICB9XG5cbiAgLy8gTGV0ICdyZXF1aXJlZENhcHMnIGJlIHByb3BlcnR5IG5hbWVkICdhbHdheXNNYXRjaCcgZnJvbSBjYXBhYmlsaXRpZXMgcmVxdWVzdCAoIzIpXG4gIC8vIGFuZCAnYWxsRmlyc3RNYXRjaENhcHMnIGJlIHByb3BlcnR5IG5hbWVkICdmaXJzdE1hdGNoJyBmcm9tIGNhcGFiaWxpdGllcyByZXF1ZXN0ICgjMylcbiAgbGV0IHtcbiAgICBhbHdheXNNYXRjaDogcmVxdWlyZWRDYXBzID0ge30sIC8vIElmICdyZXF1aXJlZENhcHMnIGlzIHVuZGVmaW5lZCwgc2V0IGl0IHRvIGFuIGVtcHR5IEpTT04gb2JqZWN0ICgjMi4xKVxuICAgIGZpcnN0TWF0Y2g6IGFsbEZpcnN0TWF0Y2hDYXBzID0gW3t9XSwgLy8gSWYgJ2ZpcnN0TWF0Y2gnIGlzIHVuZGVmaW5lZCBzZXQgaXQgdG8gYSBzaW5nbGV0b24gbGlzdCB3aXRoIG9uZSBlbXB0eSBvYmplY3QgKCMzLjEpXG4gIH0gPSBjYXBzO1xuXG4gIC8vIFJlamVjdCAnZmlyc3RNYXRjaCcgYXJndW1lbnQgaWYgaXQncyBub3QgYW4gYXJyYXkgKCMzLjIpXG4gIGlmICghXy5pc0FycmF5KGFsbEZpcnN0TWF0Y2hDYXBzKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoJ1RoZSBjYXBhYmlsaXRpZXMuZmlyc3RNYXRjaCBhcmd1bWVudCB3YXMgbm90IHZhbGlkIGZvciB0aGUgZm9sbG93aW5nIHJlYXNvbihzKTogXCJjYXBhYmlsaXRpZXMuZmlyc3RNYXRjaFwiIG11c3QgYmUgYSBKU09OIGFycmF5IG9yIHVuZGVmaW5lZCcpO1xuICB9XG5cbiAgLy8gSWYgYW4gZW1wdHkgYXJyYXkgYXMgcHJvdmlkZWQsIHdlJ2xsIGJlIGZvcmdpdmluZyBhbmQgbWFrZSBpdCBhbiBhcnJheSBvZiBvbmUgZW1wdHkgb2JqZWN0XG4gIC8vIEluIHRoZSBmdXR1cmUsIHJlamVjdCAnZmlyc3RNYXRjaCcgYXJndW1lbnQgaWYgaXRzIGFycmF5IGRpZCBub3QgaGF2ZSBvbmUgb3IgbW9yZSBlbnRyaWVzICgjMy4yKVxuICBpZiAoYWxsRmlyc3RNYXRjaENhcHMubGVuZ3RoID09PSAwKSB7XG4gICAgbG9nLndhcm4oYFRoZSBmaXJzdE1hdGNoIGFycmF5IGluIHRoZSBnaXZlbiBjYXBhYmlsaXRpZXMgaGFzIG5vIGVudHJpZXMuIEFkZGluZyBhbiBlbXB0eSBlbnRyeSBmbyBybm93LCBgICtcbiAgICAgIGBidXQgaXQgd2lsbCByZXF1aXJlIG9uZSBvciBtb3JlIGVudHJpZXMgYXMgVzNDIHNwZWMuYCk7XG4gICAgYWxsRmlyc3RNYXRjaENhcHMucHVzaCh7fSk7XG4gIH1cblxuICAvLyBDaGVjayBmb3Igbm9uLXByZWZpeGVkLCBub24tc3RhbmRhcmQgY2FwYWJpbGl0aWVzIGFuZCBsb2cgd2FybmluZ3MgaWYgdGhleSBhcmUgZm91bmRcbiAgbGV0IG5vblByZWZpeGVkQ2FwcyA9IGZpbmROb25QcmVmaXhlZENhcHMoY2Fwcyk7XG4gIGlmICghXy5pc0VtcHR5KG5vblByZWZpeGVkQ2FwcykpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBBbGwgbm9uLXN0YW5kYXJkIGNhcGFiaWxpdGllcyBzaG91bGQgaGF2ZSBhIHZlbmRvciBwcmVmaXguIFRoZSBmb2xsb3dpbmcgY2FwYWJpbGl0aWVzIGRpZCBub3QgaGF2ZSBvbmU6ICR7bm9uUHJlZml4ZWRDYXBzfWApO1xuICB9XG5cbiAgLy8gU3RyaXAgb3V0IHRoZSAnYXBwaXVtOicgcHJlZml4IGZyb20gYWxsXG4gIHN0cmlwQXBwaXVtUHJlZml4ZXMocmVxdWlyZWRDYXBzKTtcbiAgZm9yIChsZXQgZmlyc3RNYXRjaENhcHMgb2YgYWxsRmlyc3RNYXRjaENhcHMpIHtcbiAgICBzdHJpcEFwcGl1bVByZWZpeGVzKGZpcnN0TWF0Y2hDYXBzKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIHRoZSByZXF1aXJlZENhcHMuIEJ1dCBkb24ndCB2YWxpZGF0ZSAncHJlc2VuY2UnIGJlY2F1c2UgaWYgdGhhdCBjb25zdHJhaW50IGZhaWxzIG9uICdhbHdheXNNYXRjaCcgaXQgY291bGQgc3RpbGwgcGFzcyBvbiBvbmUgb2YgdGhlICdmaXJzdE1hdGNoJyBrZXlzXG4gIGlmIChzaG91bGRWYWxpZGF0ZUNhcHMpIHtcbiAgICByZXF1aXJlZENhcHMgPSB2YWxpZGF0ZUNhcHMocmVxdWlyZWRDYXBzLCBjb25zdHJhaW50cywge3NraXBQcmVzZW5jZUNvbnN0cmFpbnQ6IHRydWV9KTtcbiAgfVxuXG5cbiAgLy8gUmVtb3ZlIHRoZSAncHJlc2VuY2UnIGNvbnN0cmFpbnQgZm9yIGFueSBrZXlzIHRoYXQgYXJlIGFscmVhZHkgcHJlc2VudCBpbiAncmVxdWlyZWRDYXBzJ1xuICAvLyBzaW5jZSB3ZSBrbm93IHRoYXQgdGhpcyBjb25zdHJhaW50IGhhcyBhbHJlYWR5IHBhc3NlZFxuICBsZXQgZmlsdGVyZWRDb25zdHJhaW50cyA9IHsuLi5jb25zdHJhaW50c307XG4gIGxldCByZXF1aXJlZENhcHNLZXlzID0gXy5rZXlzKHJlcXVpcmVkQ2Fwcyk7XG4gIGZvciAobGV0IGtleSBvZiBfLmtleXMoZmlsdGVyZWRDb25zdHJhaW50cykpIHtcbiAgICBpZiAocmVxdWlyZWRDYXBzS2V5cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICBkZWxldGUgZmlsdGVyZWRDb25zdHJhaW50c1trZXldO1xuICAgIH1cbiAgfVxuXG4gIC8vIFZhbGlkYXRlIGFsbCBvZiB0aGUgZmlyc3QgbWF0Y2ggY2FwYWJpbGl0aWVzIGFuZCByZXR1cm4gYW4gYXJyYXkgd2l0aCBvbmx5IHRoZSB2YWxpZCBjYXBzIChzZWUgc3BlYyAjNSlcbiAgbGV0IHZhbGlkYXRpb25FcnJvcnMgPSBbXTtcbiAgbGV0IHZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzID0gYWxsRmlyc3RNYXRjaENhcHMubWFwKChmaXJzdE1hdGNoQ2FwcykgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBWYWxpZGF0ZSBmaXJzdE1hdGNoIGNhcHNcbiAgICAgIHJldHVybiBzaG91bGRWYWxpZGF0ZUNhcHMgPyB2YWxpZGF0ZUNhcHMoZmlyc3RNYXRjaENhcHMsIGZpbHRlcmVkQ29uc3RyYWludHMpIDogZmlyc3RNYXRjaENhcHM7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKGUubWVzc2FnZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0pLmZpbHRlcigoY2FwcykgPT4gIV8uaXNOdWxsKGNhcHMpKTtcblxuICAvLyBUcnkgdG8gbWVyZ2UgcmVxdWlyZWRDYXBzIHdpdGggZmlyc3QgbWF0Y2ggY2FwYWJpbGl0aWVzLCBicmVhayBvbmNlIGl0IGZpbmRzIGl0cyBmaXJzdCBtYXRjaCAoc2VlIHNwZWMgIzYpXG4gIGxldCBtYXRjaGVkQ2FwcyA9IG51bGw7XG4gIGZvciAobGV0IGZpcnN0TWF0Y2hDYXBzIG9mIHZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzKSB7XG4gICAgdHJ5IHtcbiAgICAgIG1hdGNoZWRDYXBzID0gbWVyZ2VDYXBzKHJlcXVpcmVkQ2FwcywgZmlyc3RNYXRjaENhcHMpO1xuICAgICAgaWYgKG1hdGNoZWRDYXBzKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLndhcm4oZXJyLm1lc3NhZ2UpO1xuICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKGVyci5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm5zIHZhcmlhYmxlcyBmb3IgdGVzdGluZyBwdXJwb3Nlc1xuICByZXR1cm4ge3JlcXVpcmVkQ2FwcywgYWxsRmlyc3RNYXRjaENhcHMsIHZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzLCBtYXRjaGVkQ2FwcywgdmFsaWRhdGlvbkVycm9yc307XG59XG5cbi8vIENhbGxzIHBhcnNlQ2FwcyBhbmQganVzdCByZXR1cm5zIHRoZSBtYXRjaGVkQ2FwcyB2YXJpYWJsZVxuZnVuY3Rpb24gcHJvY2Vzc0NhcGFiaWxpdGllcyAoY2FwcywgY29uc3RyYWludHMgPSB7fSwgc2hvdWxkVmFsaWRhdGVDYXBzID0gdHJ1ZSkge1xuICBjb25zdCB7bWF0Y2hlZENhcHMsIHZhbGlkYXRpb25FcnJvcnN9ID0gcGFyc2VDYXBzKGNhcHMsIGNvbnN0cmFpbnRzLCBzaG91bGRWYWxpZGF0ZUNhcHMpO1xuXG4gIC8vIElmIHdlIGZvdW5kIGFuIGVycm9yIHRocm93IGFuIGV4Y2VwdGlvblxuICBpZiAoIXV0aWwuaGFzVmFsdWUobWF0Y2hlZENhcHMpKSB7XG4gICAgaWYgKF8uaXNBcnJheShjYXBzLmZpcnN0TWF0Y2gpICYmIGNhcHMuZmlyc3RNYXRjaC5sZW5ndGggPiAxKSB7XG4gICAgICAvLyBJZiB0aGVyZSB3YXMgbW9yZSB0aGFuIG9uZSAnZmlyc3RNYXRjaCcgY2FwLCBpbmRpY2F0ZSB0aGF0IHdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaGluZyBjYXBhYmlsaXRpZXMgc2V0IGFuZCBzaG93IGFsbCB0aGUgZXJyb3JzXG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBDb3VsZCBub3QgZmluZCBtYXRjaGluZyBjYXBhYmlsaXRpZXMgZnJvbSAke0pTT04uc3RyaW5naWZ5KGNhcHMpfTpcXG4gJHt2YWxpZGF0aW9uRXJyb3JzLmpvaW4oJ1xcbicpfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2UsIGp1c3Qgc2hvdyB0aGUgc2luZ3VsYXIgZXJyb3IgbWVzc2FnZVxuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcih2YWxpZGF0aW9uRXJyb3JzWzBdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWF0Y2hlZENhcHM7XG59XG5cbi8qKlxuICogUmV0dXJuIGEgY29weSBvZiBhIGNhcGFiaWxpdGllcyBvYmplY3Qgd2hpY2ggaGFzIHRha2VuIGV2ZXJ5dGhpbmcgd2l0aGluIHRoZSAnb3B0aW9ucydcbiAqIGNhcGFiaWxpdHkgYW5kIHByb21vdGVkIGl0IHRvIHRoZSB0b3AgbGV2ZWwuIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGFzc3VtZWQgdG8gYmUgcnVuIGFmdGVyXG4gKiBhbGwgdmVuZG9yIHByZWZpeGVzIGhhdmUgYWxyZWFkeSBiZWVuIHN0cmlwcGVkIGZyb20gdGhlIHRvcCBsZXZlbC4gU28gd2UgYXJlIGRlYWxpbmcgd2l0aCBlLmcuXG4gKiAnb3B0aW9ucycgYW5kIG5vdCAnYXBwaXVtOm9wdGlvbnMnIGF0IHRoaXMgcG9pbnQuIEFueSBwcmVmaXhlcyBfaW5zaWRlXyB0aGUgJ29wdGlvbnMnIGNhcGFiaWxpdHlcbiAqIHdpbGwgdGhlbXNlbHZlcyBiZSBzdHJpcHBlZC4gVGhpcyBpcyBkZXNpZ25lZCBhcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgbm90IG9uZSB0byBvcGVyYXRlIG9uXG4gKiB1c2VyLWNvbnN0cnVjdGVkIGNhcGFiaWxpdGllcy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb3JpZ2luYWxDYXBzIC0gdGhlIGNhcGFiaWxpdGllcyB0byBhbmFseXplIGFuZCBwcm9tb3RlIGZyb20gJ29wdGlvbnMnXG4gKiBAcmV0dXJuIHtvYmplY3R9IC0gdGhlIGNhcGFiaWxpdGllcyB3aXRoICdvcHRpb25zJyBwcm9tb3RlZCBpZiBuZWNlc3NhcnlcbiAqL1xuZnVuY3Rpb24gcHJvbW90ZUFwcGl1bU9wdGlvbnMgKG9yaWdpbmFsQ2Fwcykge1xuICBjb25zdCBhcHBpdW1PcHRpb25zID0gb3JpZ2luYWxDYXBzW0FQUElVTV9PUFRTX0NBUF07XG4gIGlmICghYXBwaXVtT3B0aW9ucykge1xuICAgIHJldHVybiBvcmlnaW5hbENhcHM7XG4gIH1cblxuICBsZXQgY2FwcyA9IF8uY2xvbmVEZWVwKG9yaWdpbmFsQ2Fwcyk7XG4gIGlmICghXy5pc1BsYWluT2JqZWN0KGFwcGl1bU9wdGlvbnMpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5TZXNzaW9uTm90Q3JlYXRlZEVycm9yKGBUaGUgJHtBUFBJVU1fT1BUU19DQVB9IGNhcGFiaWxpdHkgbXVzdCBiZSBhbiBvYmplY3RgKTtcbiAgfVxuXG4gIC8vIGZpcnN0IGdldCByaWQgb2YgYW55IHByZWZpeGVzIGluc2lkZSBhcHBpdW06b3B0aW9uc1xuICBzdHJpcEFwcGl1bVByZWZpeGVzKGFwcGl1bU9wdGlvbnMpO1xuXG4gIC8vIHdhcm4gaWYgd2UgYXJlIGdvaW5nIHRvIG92ZXJ3cml0ZSBhbnkga2V5cyBvbiB0aGUgYmFzZSBjYXBzIG9iamVjdFxuICBjb25zdCBvdmVyd3JpdHRlbktleXMgPSBfLmludGVyc2VjdGlvbihPYmplY3Qua2V5cyhjYXBzKSwgT2JqZWN0LmtleXMoYXBwaXVtT3B0aW9ucykpO1xuICBpZiAob3ZlcndyaXR0ZW5LZXlzLmxlbmd0aCA+IDApIHtcbiAgICBsb2cud2FybihgRm91bmQgY2FwYWJpbGl0aWVzIGluc2lkZSAke1BSRUZJWEVEX0FQUElVTV9PUFRTX0NBUH0gdGhhdCB3aWxsIG92ZXJ3cml0ZSBgICtcbiAgICAgICAgICAgICBgY2FwYWJpbGl0aWVzIGF0IHRoZSB0b3AgbGV2ZWw6ICR7SlNPTi5zdHJpbmdpZnkob3ZlcndyaXR0ZW5LZXlzKX1gKTtcbiAgfVxuXG4gIC8vIG5vdyBqdXN0IGFwcGx5IHRoZW0gdG8gdGhlIG1haW4gY2FwcyBvYmplY3RcbiAgY2FwcyA9IHsuLi5jYXBzLCAuLi5hcHBpdW1PcHRpb25zfTtcblxuICAvLyBhbmQgcmVtb3ZlIGFsbCB0cmFjZXMgb2YgdGhlIG9wdGlvbnMgY2FwXG4gIGRlbGV0ZSBjYXBzW0FQUElVTV9PUFRTX0NBUF07XG4gIHJldHVybiBjYXBzO1xufVxuXG5cbmV4cG9ydCB7XG4gIHBhcnNlQ2FwcywgcHJvY2Vzc0NhcGFiaWxpdGllcywgdmFsaWRhdGVDYXBzLCBtZXJnZUNhcHMsIEFQUElVTV9WRU5ET1JfUFJFRklYLCBBUFBJVU1fT1BUU19DQVAsXG4gIGZpbmROb25QcmVmaXhlZENhcHMsIGlzU3RhbmRhcmRDYXAsIHN0cmlwQXBwaXVtUHJlZml4ZXMsIHByb21vdGVBcHBpdW1PcHRpb25zLCBQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVAsXG59O1xuIl0sImZpbGUiOiJsaWIvYmFzZWRyaXZlci9jYXBhYmlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
@@ -9,8 +7,6 @@ exports.helpers = exports.default = exports.commands = void 0;
9
7
 
10
8
  require("source-map-support/register");
11
9
 
12
- var _logger = _interopRequireDefault(require("../logger"));
13
-
14
10
  const commands = {},
15
11
  helpers = {},
16
12
  extensions = {};
@@ -25,12 +21,9 @@ helpers.findElOrElsWithProcessing = async function findElOrElsWithProcessing(str
25
21
  } catch (err) {
26
22
  if (this.opts.printPageSourceOnFindFailure) {
27
23
  const src = await this.getPageSource();
28
-
29
- _logger.default.debug(`Error finding element${mult ? 's' : ''}: ${err.message}`);
30
-
31
- _logger.default.debug(`Page source requested through 'printPageSourceOnFindFailure':`);
32
-
33
- _logger.default.debug(src);
24
+ this.log.debug(`Error finding element${mult ? 's' : ''}: ${err.message}`);
25
+ this.log.debug(`Page source requested through 'printPageSourceOnFindFailure':`);
26
+ this.log.debug(src);
34
27
  }
35
28
 
36
29
  throw err;
@@ -58,4 +51,4 @@ var _default = extensions;
58
51
  exports.default = _default;require('source-map-support').install();
59
52
 
60
53
 
61
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL2ZpbmQuanMiXSwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImZpbmRFbE9yRWxzV2l0aFByb2Nlc3NpbmciLCJzdHJhdGVneSIsInNlbGVjdG9yIiwibXVsdCIsImNvbnRleHQiLCJ2YWxpZGF0ZUxvY2F0b3JTdHJhdGVneSIsImZpbmRFbE9yRWxzIiwiZXJyIiwib3B0cyIsInByaW50UGFnZVNvdXJjZU9uRmluZEZhaWx1cmUiLCJzcmMiLCJnZXRQYWdlU291cmNlIiwibG9nIiwiZGVidWciLCJtZXNzYWdlIiwiZmluZEVsZW1lbnQiLCJmaW5kRWxlbWVudHMiLCJmaW5kRWxlbWVudEZyb21FbGVtZW50IiwiZWxlbWVudElkIiwiZmluZEVsZW1lbnRzRnJvbUVsZW1lbnQiLCJPYmplY3QiLCJhc3NpZ24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCO0FBQUEsTUFBcUJDLE9BQU8sR0FBRyxFQUEvQjtBQUFBLE1BQW1DQyxVQUFVLEdBQUcsRUFBaEQ7Ozs7QUFlQUQsT0FBTyxDQUFDRSx5QkFBUixHQUFvQyxlQUFlQSx5QkFBZixDQUEwQ0MsUUFBMUMsRUFBb0RDLFFBQXBELEVBQThEQyxJQUE5RCxFQUFvRUMsT0FBcEUsRUFBNkU7QUFDL0csT0FBS0MsdUJBQUwsQ0FBNkJKLFFBQTdCOztBQUNBLE1BQUk7QUFDRixXQUFPLE1BQU0sS0FBS0ssV0FBTCxDQUFpQkwsUUFBakIsRUFBMkJDLFFBQTNCLEVBQXFDQyxJQUFyQyxFQUEyQ0MsT0FBM0MsQ0FBYjtBQUNELEdBRkQsQ0FFRSxPQUFPRyxHQUFQLEVBQVk7QUFDWixRQUFJLEtBQUtDLElBQUwsQ0FBVUMsNEJBQWQsRUFBNEM7QUFDMUMsWUFBTUMsR0FBRyxHQUFHLE1BQU0sS0FBS0MsYUFBTCxFQUFsQjs7QUFDQUMsc0JBQUlDLEtBQUosQ0FBVyx3QkFBdUJWLElBQUksR0FBRyxHQUFILEdBQVMsRUFBRyxLQUFJSSxHQUFHLENBQUNPLE9BQVEsRUFBbEU7O0FBQ0FGLHNCQUFJQyxLQUFKLENBQVcsK0RBQVg7O0FBQ0FELHNCQUFJQyxLQUFKLENBQVVILEdBQVY7QUFDRDs7QUFFRCxVQUFNSCxHQUFOO0FBQ0Q7QUFDRixDQWREOztBQWdCQVYsUUFBUSxDQUFDa0IsV0FBVCxHQUF1QixlQUFlQSxXQUFmLENBQTRCZCxRQUE1QixFQUFzQ0MsUUFBdEMsRUFBZ0Q7QUFDckUsU0FBTyxNQUFNLEtBQUtGLHlCQUFMLENBQStCQyxRQUEvQixFQUF5Q0MsUUFBekMsRUFBbUQsS0FBbkQsQ0FBYjtBQUNELENBRkQ7O0FBSUFMLFFBQVEsQ0FBQ21CLFlBQVQsR0FBd0IsZUFBZUEsWUFBZixDQUE2QmYsUUFBN0IsRUFBdUNDLFFBQXZDLEVBQWlEO0FBQ3ZFLFNBQU8sTUFBTSxLQUFLRix5QkFBTCxDQUErQkMsUUFBL0IsRUFBeUNDLFFBQXpDLEVBQW1ELElBQW5ELENBQWI7QUFDRCxDQUZEOztBQUlBTCxRQUFRLENBQUNvQixzQkFBVCxHQUFrQyxlQUFlQSxzQkFBZixDQUF1Q2hCLFFBQXZDLEVBQWlEQyxRQUFqRCxFQUEyRGdCLFNBQTNELEVBQXNFO0FBQ3RHLFNBQU8sTUFBTSxLQUFLbEIseUJBQUwsQ0FBK0JDLFFBQS9CLEVBQXlDQyxRQUF6QyxFQUFtRCxLQUFuRCxFQUEwRGdCLFNBQTFELENBQWI7QUFDRCxDQUZEOztBQUlBckIsUUFBUSxDQUFDc0IsdUJBQVQsR0FBbUMsZUFBZUEsdUJBQWYsQ0FBd0NsQixRQUF4QyxFQUFrREMsUUFBbEQsRUFBNERnQixTQUE1RCxFQUF1RTtBQUN4RyxTQUFPLE1BQU0sS0FBS2xCLHlCQUFMLENBQStCQyxRQUEvQixFQUF5Q0MsUUFBekMsRUFBbUQsSUFBbkQsRUFBeURnQixTQUF6RCxDQUFiO0FBQ0QsQ0FGRDs7QUFLQUUsTUFBTSxDQUFDQyxNQUFQLENBQWN0QixVQUFkLEVBQTBCRixRQUExQixFQUFvQ0MsT0FBcEM7ZUFFZUMsVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcblxuXG5jb25zdCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuXG4vLyBPdmVycmlkZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uIGZvciB5b3VyIG93biBkcml2ZXIsIGFuZCB0aGUgcmVzdCBpcyB0YWtlblxuLy8gY2FyZSBvZiFcblxuLy8gaGVscGVycy5maW5kRWxPckVscyA9IGFzeW5jIGZ1bmN0aW9uIChzdHJhdGVneSwgc2VsZWN0b3IsIG11bHQsIGNvbnRleHQpIHt9XG4vLyAgIHN0cmF0ZWd5OiBsb2NhdG9yIHN0cmF0ZWd5XG4vLyAgIHNlbGVjdG9yOiB0aGUgYWN0dWFsIHNlbGVjdG9yIGZvciBmaW5kaW5nIGFuIGVsZW1lbnRcbi8vICAgbXVsdDogbXVsdGlwbGUgZWxlbWVudHMgb3IganVzdCBvbmU/XG4vLyAgIGNvbnRleHQ6IGZpbmRpbmcgYW4gZWxlbWVudCBmcm9tIHRoZSByb290IGNvbnRleHQ/IG9yIHN0YXJ0aW5nIGZyb20gYW5vdGhlciBlbGVtZW50XG4vL1xuLy8gUmV0dXJucyBhbiBvYmplY3Qgd2hpY2ggYWRoZXJlcyB0byB0aGUgd2F5IHRoZSBKU09OIFdpcmUgUHJvdG9jb2wgcmVwcmVzZW50cyBlbGVtZW50czpcbi8vIHsgRUxFTUVOVDogIyB9ICAgIGVnOiB7IEVMRU1FTlQ6IDMgfSAgb3IgeyBFTEVNRU5UOiAxLjAyMyB9XG5cbmhlbHBlcnMuZmluZEVsT3JFbHNXaXRoUHJvY2Vzc2luZyA9IGFzeW5jIGZ1bmN0aW9uIGZpbmRFbE9yRWxzV2l0aFByb2Nlc3NpbmcgKHN0cmF0ZWd5LCBzZWxlY3RvciwgbXVsdCwgY29udGV4dCkge1xuICB0aGlzLnZhbGlkYXRlTG9jYXRvclN0cmF0ZWd5KHN0cmF0ZWd5KTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5maW5kRWxPckVscyhzdHJhdGVneSwgc2VsZWN0b3IsIG11bHQsIGNvbnRleHQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAodGhpcy5vcHRzLnByaW50UGFnZVNvdXJjZU9uRmluZEZhaWx1cmUpIHtcbiAgICAgIGNvbnN0IHNyYyA9IGF3YWl0IHRoaXMuZ2V0UGFnZVNvdXJjZSgpO1xuICAgICAgbG9nLmRlYnVnKGBFcnJvciBmaW5kaW5nIGVsZW1lbnQke211bHQgPyAncycgOiAnJ306ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICBsb2cuZGVidWcoYFBhZ2Ugc291cmNlIHJlcXVlc3RlZCB0aHJvdWdoICdwcmludFBhZ2VTb3VyY2VPbkZpbmRGYWlsdXJlJzpgKTtcbiAgICAgIGxvZy5kZWJ1ZyhzcmMpO1xuICAgIH1cbiAgICAvLyBzdGlsbCB3YW50IHRoZSBlcnJvciB0byBvY2N1clxuICAgIHRocm93IGVycjtcbiAgfVxufTtcblxuY29tbWFuZHMuZmluZEVsZW1lbnQgPSBhc3luYyBmdW5jdGlvbiBmaW5kRWxlbWVudCAoc3RyYXRlZ3ksIHNlbGVjdG9yKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmZpbmRFbE9yRWxzV2l0aFByb2Nlc3Npbmcoc3RyYXRlZ3ksIHNlbGVjdG9yLCBmYWxzZSk7XG59O1xuXG5jb21tYW5kcy5maW5kRWxlbWVudHMgPSBhc3luYyBmdW5jdGlvbiBmaW5kRWxlbWVudHMgKHN0cmF0ZWd5LCBzZWxlY3Rvcikge1xuICByZXR1cm4gYXdhaXQgdGhpcy5maW5kRWxPckVsc1dpdGhQcm9jZXNzaW5nKHN0cmF0ZWd5LCBzZWxlY3RvciwgdHJ1ZSk7XG59O1xuXG5jb21tYW5kcy5maW5kRWxlbWVudEZyb21FbGVtZW50ID0gYXN5bmMgZnVuY3Rpb24gZmluZEVsZW1lbnRGcm9tRWxlbWVudCAoc3RyYXRlZ3ksIHNlbGVjdG9yLCBlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZEVsT3JFbHNXaXRoUHJvY2Vzc2luZyhzdHJhdGVneSwgc2VsZWN0b3IsIGZhbHNlLCBlbGVtZW50SWQpO1xufTtcblxuY29tbWFuZHMuZmluZEVsZW1lbnRzRnJvbUVsZW1lbnQgPSBhc3luYyBmdW5jdGlvbiBmaW5kRWxlbWVudHNGcm9tRWxlbWVudCAoc3RyYXRlZ3ksIHNlbGVjdG9yLCBlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZEVsT3JFbHNXaXRoUHJvY2Vzc2luZyhzdHJhdGVneSwgc2VsZWN0b3IsIHRydWUsIGVsZW1lbnRJZCk7XG59O1xuXG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL2ZpbmQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4ifQ==
54
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL2ZpbmQuanMiXSwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImZpbmRFbE9yRWxzV2l0aFByb2Nlc3NpbmciLCJzdHJhdGVneSIsInNlbGVjdG9yIiwibXVsdCIsImNvbnRleHQiLCJ2YWxpZGF0ZUxvY2F0b3JTdHJhdGVneSIsImZpbmRFbE9yRWxzIiwiZXJyIiwib3B0cyIsInByaW50UGFnZVNvdXJjZU9uRmluZEZhaWx1cmUiLCJzcmMiLCJnZXRQYWdlU291cmNlIiwibG9nIiwiZGVidWciLCJtZXNzYWdlIiwiZmluZEVsZW1lbnQiLCJmaW5kRWxlbWVudHMiLCJmaW5kRWxlbWVudEZyb21FbGVtZW50IiwiZWxlbWVudElkIiwiZmluZEVsZW1lbnRzRnJvbUVsZW1lbnQiLCJPYmplY3QiLCJhc3NpZ24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjtBQUFBLE1BQXFCQyxPQUFPLEdBQUcsRUFBL0I7QUFBQSxNQUFtQ0MsVUFBVSxHQUFHLEVBQWhEOzs7O0FBZUFELE9BQU8sQ0FBQ0UseUJBQVIsR0FBb0MsZUFBZUEseUJBQWYsQ0FBMENDLFFBQTFDLEVBQW9EQyxRQUFwRCxFQUE4REMsSUFBOUQsRUFBb0VDLE9BQXBFLEVBQTZFO0FBQy9HLE9BQUtDLHVCQUFMLENBQTZCSixRQUE3Qjs7QUFDQSxNQUFJO0FBQ0YsV0FBTyxNQUFNLEtBQUtLLFdBQUwsQ0FBaUJMLFFBQWpCLEVBQTJCQyxRQUEzQixFQUFxQ0MsSUFBckMsRUFBMkNDLE9BQTNDLENBQWI7QUFDRCxHQUZELENBRUUsT0FBT0csR0FBUCxFQUFZO0FBQ1osUUFBSSxLQUFLQyxJQUFMLENBQVVDLDRCQUFkLEVBQTRDO0FBQzFDLFlBQU1DLEdBQUcsR0FBRyxNQUFNLEtBQUtDLGFBQUwsRUFBbEI7QUFDQSxXQUFLQyxHQUFMLENBQVNDLEtBQVQsQ0FBZ0Isd0JBQXVCVixJQUFJLEdBQUcsR0FBSCxHQUFTLEVBQUcsS0FBSUksR0FBRyxDQUFDTyxPQUFRLEVBQXZFO0FBQ0EsV0FBS0YsR0FBTCxDQUFTQyxLQUFULENBQWdCLCtEQUFoQjtBQUNBLFdBQUtELEdBQUwsQ0FBU0MsS0FBVCxDQUFlSCxHQUFmO0FBQ0Q7O0FBRUQsVUFBTUgsR0FBTjtBQUNEO0FBQ0YsQ0FkRDs7QUFnQkFWLFFBQVEsQ0FBQ2tCLFdBQVQsR0FBdUIsZUFBZUEsV0FBZixDQUE0QmQsUUFBNUIsRUFBc0NDLFFBQXRDLEVBQWdEO0FBQ3JFLFNBQU8sTUFBTSxLQUFLRix5QkFBTCxDQUErQkMsUUFBL0IsRUFBeUNDLFFBQXpDLEVBQW1ELEtBQW5ELENBQWI7QUFDRCxDQUZEOztBQUlBTCxRQUFRLENBQUNtQixZQUFULEdBQXdCLGVBQWVBLFlBQWYsQ0FBNkJmLFFBQTdCLEVBQXVDQyxRQUF2QyxFQUFpRDtBQUN2RSxTQUFPLE1BQU0sS0FBS0YseUJBQUwsQ0FBK0JDLFFBQS9CLEVBQXlDQyxRQUF6QyxFQUFtRCxJQUFuRCxDQUFiO0FBQ0QsQ0FGRDs7QUFJQUwsUUFBUSxDQUFDb0Isc0JBQVQsR0FBa0MsZUFBZUEsc0JBQWYsQ0FBdUNoQixRQUF2QyxFQUFpREMsUUFBakQsRUFBMkRnQixTQUEzRCxFQUFzRTtBQUN0RyxTQUFPLE1BQU0sS0FBS2xCLHlCQUFMLENBQStCQyxRQUEvQixFQUF5Q0MsUUFBekMsRUFBbUQsS0FBbkQsRUFBMERnQixTQUExRCxDQUFiO0FBQ0QsQ0FGRDs7QUFJQXJCLFFBQVEsQ0FBQ3NCLHVCQUFULEdBQW1DLGVBQWVBLHVCQUFmLENBQXdDbEIsUUFBeEMsRUFBa0RDLFFBQWxELEVBQTREZ0IsU0FBNUQsRUFBdUU7QUFDeEcsU0FBTyxNQUFNLEtBQUtsQix5QkFBTCxDQUErQkMsUUFBL0IsRUFBeUNDLFFBQXpDLEVBQW1ELElBQW5ELEVBQXlEZ0IsU0FBekQsQ0FBYjtBQUNELENBRkQ7O0FBS0FFLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjdEIsVUFBZCxFQUEwQkYsUUFBMUIsRUFBb0NDLE9BQXBDO2VBRWVDLFUiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuXG4vLyBPdmVycmlkZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uIGZvciB5b3VyIG93biBkcml2ZXIsIGFuZCB0aGUgcmVzdCBpcyB0YWtlblxuLy8gY2FyZSBvZiFcblxuLy8gaGVscGVycy5maW5kRWxPckVscyA9IGFzeW5jIGZ1bmN0aW9uIChzdHJhdGVneSwgc2VsZWN0b3IsIG11bHQsIGNvbnRleHQpIHt9XG4vLyAgIHN0cmF0ZWd5OiBsb2NhdG9yIHN0cmF0ZWd5XG4vLyAgIHNlbGVjdG9yOiB0aGUgYWN0dWFsIHNlbGVjdG9yIGZvciBmaW5kaW5nIGFuIGVsZW1lbnRcbi8vICAgbXVsdDogbXVsdGlwbGUgZWxlbWVudHMgb3IganVzdCBvbmU/XG4vLyAgIGNvbnRleHQ6IGZpbmRpbmcgYW4gZWxlbWVudCBmcm9tIHRoZSByb290IGNvbnRleHQ/IG9yIHN0YXJ0aW5nIGZyb20gYW5vdGhlciBlbGVtZW50XG4vL1xuLy8gUmV0dXJucyBhbiBvYmplY3Qgd2hpY2ggYWRoZXJlcyB0byB0aGUgd2F5IHRoZSBKU09OIFdpcmUgUHJvdG9jb2wgcmVwcmVzZW50cyBlbGVtZW50czpcbi8vIHsgRUxFTUVOVDogIyB9ICAgIGVnOiB7IEVMRU1FTlQ6IDMgfSAgb3IgeyBFTEVNRU5UOiAxLjAyMyB9XG5cbmhlbHBlcnMuZmluZEVsT3JFbHNXaXRoUHJvY2Vzc2luZyA9IGFzeW5jIGZ1bmN0aW9uIGZpbmRFbE9yRWxzV2l0aFByb2Nlc3NpbmcgKHN0cmF0ZWd5LCBzZWxlY3RvciwgbXVsdCwgY29udGV4dCkge1xuICB0aGlzLnZhbGlkYXRlTG9jYXRvclN0cmF0ZWd5KHN0cmF0ZWd5KTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5maW5kRWxPckVscyhzdHJhdGVneSwgc2VsZWN0b3IsIG11bHQsIGNvbnRleHQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAodGhpcy5vcHRzLnByaW50UGFnZVNvdXJjZU9uRmluZEZhaWx1cmUpIHtcbiAgICAgIGNvbnN0IHNyYyA9IGF3YWl0IHRoaXMuZ2V0UGFnZVNvdXJjZSgpO1xuICAgICAgdGhpcy5sb2cuZGVidWcoYEVycm9yIGZpbmRpbmcgZWxlbWVudCR7bXVsdCA/ICdzJyA6ICcnfTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBQYWdlIHNvdXJjZSByZXF1ZXN0ZWQgdGhyb3VnaCAncHJpbnRQYWdlU291cmNlT25GaW5kRmFpbHVyZSc6YCk7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhzcmMpO1xuICAgIH1cbiAgICAvLyBzdGlsbCB3YW50IHRoZSBlcnJvciB0byBvY2N1clxuICAgIHRocm93IGVycjtcbiAgfVxufTtcblxuY29tbWFuZHMuZmluZEVsZW1lbnQgPSBhc3luYyBmdW5jdGlvbiBmaW5kRWxlbWVudCAoc3RyYXRlZ3ksIHNlbGVjdG9yKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmZpbmRFbE9yRWxzV2l0aFByb2Nlc3Npbmcoc3RyYXRlZ3ksIHNlbGVjdG9yLCBmYWxzZSk7XG59O1xuXG5jb21tYW5kcy5maW5kRWxlbWVudHMgPSBhc3luYyBmdW5jdGlvbiBmaW5kRWxlbWVudHMgKHN0cmF0ZWd5LCBzZWxlY3Rvcikge1xuICByZXR1cm4gYXdhaXQgdGhpcy5maW5kRWxPckVsc1dpdGhQcm9jZXNzaW5nKHN0cmF0ZWd5LCBzZWxlY3RvciwgdHJ1ZSk7XG59O1xuXG5jb21tYW5kcy5maW5kRWxlbWVudEZyb21FbGVtZW50ID0gYXN5bmMgZnVuY3Rpb24gZmluZEVsZW1lbnRGcm9tRWxlbWVudCAoc3RyYXRlZ3ksIHNlbGVjdG9yLCBlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZEVsT3JFbHNXaXRoUHJvY2Vzc2luZyhzdHJhdGVneSwgc2VsZWN0b3IsIGZhbHNlLCBlbGVtZW50SWQpO1xufTtcblxuY29tbWFuZHMuZmluZEVsZW1lbnRzRnJvbUVsZW1lbnQgPSBhc3luYyBmdW5jdGlvbiBmaW5kRWxlbWVudHNGcm9tRWxlbWVudCAoc3RyYXRlZ3ksIHNlbGVjdG9yLCBlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZEVsT3JFbHNXaXRoUHJvY2Vzc2luZyhzdHJhdGVneSwgc2VsZWN0b3IsIHRydWUsIGVsZW1lbnRJZCk7XG59O1xuXG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL2ZpbmQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4ifQ==
@@ -9,8 +9,6 @@ exports.helpers = exports.default = exports.commands = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
12
- var _logger = _interopRequireDefault(require("../logger"));
13
-
14
12
  var _lodash = _interopRequireDefault(require("lodash"));
15
13
 
16
14
  const commands = {},
@@ -21,13 +19,12 @@ exports.commands = commands;
21
19
  extensions.supportedLogTypes = {};
22
20
 
23
21
  commands.getLogTypes = async function getLogTypes() {
24
- _logger.default.debug('Retrieving supported log types');
25
-
22
+ this.log.debug('Retrieving supported log types');
26
23
  return _lodash.default.keys(this.supportedLogTypes);
27
24
  };
28
25
 
29
26
  commands.getLog = async function getLog(logType) {
30
- _logger.default.debug(`Retrieving '${logType}' logs`);
27
+ this.log.debug(`Retrieving '${logType}' logs`);
31
28
 
32
29
  if (!(await this.getLogTypes()).includes(logType)) {
33
30
  const logsTypesWithDescriptions = _lodash.default.reduce(this.supportedLogTypes, (acc, value, key) => {
@@ -46,4 +43,4 @@ var _default = extensions;
46
43
  exports.default = _default;require('source-map-support').install();
47
44
 
48
45
 
49
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL2xvZy5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwic3VwcG9ydGVkTG9nVHlwZXMiLCJnZXRMb2dUeXBlcyIsImxvZyIsImRlYnVnIiwiXyIsImtleXMiLCJnZXRMb2ciLCJsb2dUeXBlIiwiaW5jbHVkZXMiLCJsb2dzVHlwZXNXaXRoRGVzY3JpcHRpb25zIiwicmVkdWNlIiwiYWNjIiwidmFsdWUiLCJrZXkiLCJkZXNjcmlwdGlvbiIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldHRlciIsIk9iamVjdCIsImFzc2lnbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7QUFBQSxNQUFxQkMsT0FBTyxHQUFHLEVBQS9CO0FBQUEsTUFBbUNDLFVBQVUsR0FBRyxFQUFoRDs7O0FBVUFBLFVBQVUsQ0FBQ0MsaUJBQVgsR0FBK0IsRUFBL0I7O0FBR0FILFFBQVEsQ0FBQ0ksV0FBVCxHQUF1QixlQUFlQSxXQUFmLEdBQThCO0FBQ25EQyxrQkFBSUMsS0FBSixDQUFVLGdDQUFWOztBQUNBLFNBQU9DLGdCQUFFQyxJQUFGLENBQU8sS0FBS0wsaUJBQVosQ0FBUDtBQUNELENBSEQ7O0FBS0FILFFBQVEsQ0FBQ1MsTUFBVCxHQUFrQixlQUFlQSxNQUFmLENBQXVCQyxPQUF2QixFQUFnQztBQUNoREwsa0JBQUlDLEtBQUosQ0FBVyxlQUFjSSxPQUFRLFFBQWpDOztBQUVBLE1BQUksQ0FBQyxDQUFDLE1BQU0sS0FBS04sV0FBTCxFQUFQLEVBQTJCTyxRQUEzQixDQUFvQ0QsT0FBcEMsQ0FBTCxFQUFtRDtBQUNqRCxVQUFNRSx5QkFBeUIsR0FBR0wsZ0JBQUVNLE1BQUYsQ0FBUyxLQUFLVixpQkFBZCxFQUFpQyxDQUFDVyxHQUFELEVBQU1DLEtBQU4sRUFBYUMsR0FBYixLQUFxQjtBQUN0RkYsTUFBQUEsR0FBRyxDQUFDRSxHQUFELENBQUgsR0FBV0QsS0FBSyxDQUFDRSxXQUFqQjtBQUNBLGFBQU9ILEdBQVA7QUFDRCxLQUhpQyxFQUcvQixFQUgrQixDQUFsQzs7QUFJQSxVQUFNLElBQUlJLEtBQUosQ0FBVyx5QkFBd0JSLE9BQVEsS0FBakMsR0FDYixvQkFBbUJTLElBQUksQ0FBQ0MsU0FBTCxDQUFlUix5QkFBZixDQUEwQyxFQUQxRCxDQUFOO0FBRUQ7O0FBRUQsU0FBTyxNQUFNLEtBQUtULGlCQUFMLENBQXVCTyxPQUF2QixFQUFnQ1csTUFBaEMsQ0FBdUMsSUFBdkMsQ0FBYjtBQUNELENBYkQ7O0FBZUFDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjckIsVUFBZCxFQUEwQkYsUUFBMUIsRUFBb0NDLE9BQXBDO2VBRWVDLFUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG4vLyBvdmVycmlkZSBpbiBzdWItY2xhc3Nlcywgd2l0aCBhcHByb3ByaWF0ZSBsb2dzXG4vLyBpbiB0aGUgZm9ybSBvZlxuLy8gICB7XG4vLyAgICAgdHlwZToge1xuLy8gICAgICAgZGVzY3JpcHRpb246ICdzb21lIHVzZWZ1bCB0ZXh0Jyxcbi8vICAgICAgIGdldHRlcjogKCkgPT4ge30sIC8vIHNvbWUgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCB0byBnZXQgdGhlIGxvZ3Ncbi8vICAgICB9XG4vLyAgIH1cbmV4dGVuc2lvbnMuc3VwcG9ydGVkTG9nVHlwZXMgPSB7fTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXdhaXRcbmNvbW1hbmRzLmdldExvZ1R5cGVzID0gYXN5bmMgZnVuY3Rpb24gZ2V0TG9nVHlwZXMgKCkge1xuICBsb2cuZGVidWcoJ1JldHJpZXZpbmcgc3VwcG9ydGVkIGxvZyB0eXBlcycpO1xuICByZXR1cm4gXy5rZXlzKHRoaXMuc3VwcG9ydGVkTG9nVHlwZXMpO1xufTtcblxuY29tbWFuZHMuZ2V0TG9nID0gYXN5bmMgZnVuY3Rpb24gZ2V0TG9nIChsb2dUeXBlKSB7XG4gIGxvZy5kZWJ1ZyhgUmV0cmlldmluZyAnJHtsb2dUeXBlfScgbG9nc2ApO1xuXG4gIGlmICghKGF3YWl0IHRoaXMuZ2V0TG9nVHlwZXMoKSkuaW5jbHVkZXMobG9nVHlwZSkpIHtcbiAgICBjb25zdCBsb2dzVHlwZXNXaXRoRGVzY3JpcHRpb25zID0gXy5yZWR1Y2UodGhpcy5zdXBwb3J0ZWRMb2dUeXBlcywgKGFjYywgdmFsdWUsIGtleSkgPT4ge1xuICAgICAgYWNjW2tleV0gPSB2YWx1ZS5kZXNjcmlwdGlvbjtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgbG9nIHR5cGUgJyR7bG9nVHlwZX0nLiBgICtcbiAgICAgIGBTdXBwb3J0ZWQgdHlwZXM6ICR7SlNPTi5zdHJpbmdpZnkobG9nc1R5cGVzV2l0aERlc2NyaXB0aW9ucyl9YCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdGhpcy5zdXBwb3J0ZWRMb2dUeXBlc1tsb2dUeXBlXS5nZXR0ZXIodGhpcyk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL2xvZy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLiJ9
46
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL2xvZy5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwic3VwcG9ydGVkTG9nVHlwZXMiLCJnZXRMb2dUeXBlcyIsImxvZyIsImRlYnVnIiwiXyIsImtleXMiLCJnZXRMb2ciLCJsb2dUeXBlIiwiaW5jbHVkZXMiLCJsb2dzVHlwZXNXaXRoRGVzY3JpcHRpb25zIiwicmVkdWNlIiwiYWNjIiwidmFsdWUiLCJrZXkiLCJkZXNjcmlwdGlvbiIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldHRlciIsIk9iamVjdCIsImFzc2lnbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7QUFBQSxNQUFxQkMsT0FBTyxHQUFHLEVBQS9CO0FBQUEsTUFBbUNDLFVBQVUsR0FBRyxFQUFoRDs7O0FBVUFBLFVBQVUsQ0FBQ0MsaUJBQVgsR0FBK0IsRUFBL0I7O0FBR0FILFFBQVEsQ0FBQ0ksV0FBVCxHQUF1QixlQUFlQSxXQUFmLEdBQThCO0FBQ25ELE9BQUtDLEdBQUwsQ0FBU0MsS0FBVCxDQUFlLGdDQUFmO0FBQ0EsU0FBT0MsZ0JBQUVDLElBQUYsQ0FBTyxLQUFLTCxpQkFBWixDQUFQO0FBQ0QsQ0FIRDs7QUFLQUgsUUFBUSxDQUFDUyxNQUFULEdBQWtCLGVBQWVBLE1BQWYsQ0FBdUJDLE9BQXZCLEVBQWdDO0FBQ2hELE9BQUtMLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQixlQUFjSSxPQUFRLFFBQXRDOztBQUVBLE1BQUksQ0FBQyxDQUFDLE1BQU0sS0FBS04sV0FBTCxFQUFQLEVBQTJCTyxRQUEzQixDQUFvQ0QsT0FBcEMsQ0FBTCxFQUFtRDtBQUNqRCxVQUFNRSx5QkFBeUIsR0FBR0wsZ0JBQUVNLE1BQUYsQ0FBUyxLQUFLVixpQkFBZCxFQUFpQyxDQUFDVyxHQUFELEVBQU1DLEtBQU4sRUFBYUMsR0FBYixLQUFxQjtBQUN0RkYsTUFBQUEsR0FBRyxDQUFDRSxHQUFELENBQUgsR0FBV0QsS0FBSyxDQUFDRSxXQUFqQjtBQUNBLGFBQU9ILEdBQVA7QUFDRCxLQUhpQyxFQUcvQixFQUgrQixDQUFsQzs7QUFJQSxVQUFNLElBQUlJLEtBQUosQ0FBVyx5QkFBd0JSLE9BQVEsS0FBakMsR0FDYixvQkFBbUJTLElBQUksQ0FBQ0MsU0FBTCxDQUFlUix5QkFBZixDQUEwQyxFQUQxRCxDQUFOO0FBRUQ7O0FBRUQsU0FBTyxNQUFNLEtBQUtULGlCQUFMLENBQXVCTyxPQUF2QixFQUFnQ1csTUFBaEMsQ0FBdUMsSUFBdkMsQ0FBYjtBQUNELENBYkQ7O0FBZUFDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjckIsVUFBZCxFQUEwQkYsUUFBMUIsRUFBb0NDLE9BQXBDO2VBRWVDLFUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuLy8gb3ZlcnJpZGUgaW4gc3ViLWNsYXNzZXMsIHdpdGggYXBwcm9wcmlhdGUgbG9nc1xuLy8gaW4gdGhlIGZvcm0gb2Zcbi8vICAge1xuLy8gICAgIHR5cGU6IHtcbi8vICAgICAgIGRlc2NyaXB0aW9uOiAnc29tZSB1c2VmdWwgdGV4dCcsXG4vLyAgICAgICBnZXR0ZXI6ICgpID0+IHt9LCAvLyBzb21lIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgdG8gZ2V0IHRoZSBsb2dzXG4vLyAgICAgfVxuLy8gICB9XG5leHRlbnNpb25zLnN1cHBvcnRlZExvZ1R5cGVzID0ge307XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF3YWl0XG5jb21tYW5kcy5nZXRMb2dUeXBlcyA9IGFzeW5jIGZ1bmN0aW9uIGdldExvZ1R5cGVzICgpIHtcbiAgdGhpcy5sb2cuZGVidWcoJ1JldHJpZXZpbmcgc3VwcG9ydGVkIGxvZyB0eXBlcycpO1xuICByZXR1cm4gXy5rZXlzKHRoaXMuc3VwcG9ydGVkTG9nVHlwZXMpO1xufTtcblxuY29tbWFuZHMuZ2V0TG9nID0gYXN5bmMgZnVuY3Rpb24gZ2V0TG9nIChsb2dUeXBlKSB7XG4gIHRoaXMubG9nLmRlYnVnKGBSZXRyaWV2aW5nICcke2xvZ1R5cGV9JyBsb2dzYCk7XG5cbiAgaWYgKCEoYXdhaXQgdGhpcy5nZXRMb2dUeXBlcygpKS5pbmNsdWRlcyhsb2dUeXBlKSkge1xuICAgIGNvbnN0IGxvZ3NUeXBlc1dpdGhEZXNjcmlwdGlvbnMgPSBfLnJlZHVjZSh0aGlzLnN1cHBvcnRlZExvZ1R5cGVzLCAoYWNjLCB2YWx1ZSwga2V5KSA9PiB7XG4gICAgICBhY2Nba2V5XSA9IHZhbHVlLmRlc2NyaXB0aW9uO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBsb2cgdHlwZSAnJHtsb2dUeXBlfScuIGAgK1xuICAgICAgYFN1cHBvcnRlZCB0eXBlczogJHtKU09OLnN0cmluZ2lmeShsb2dzVHlwZXNXaXRoRGVzY3JpcHRpb25zKX1gKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCB0aGlzLnN1cHBvcnRlZExvZ1R5cGVzW2xvZ1R5cGVdLmdldHRlcih0aGlzKTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnN9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJmaWxlIjoibGliL2Jhc2Vkcml2ZXIvY29tbWFuZHMvbG9nLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uIn0=
@@ -17,48 +17,42 @@ require("source-map-support/register");
17
17
 
18
18
  var _lodash = _interopRequireDefault(require("lodash"));
19
19
 
20
- var _logger = _interopRequireDefault(require("../logger"));
21
-
22
20
  var _protocol = require("../../protocol");
23
21
 
24
22
  var _support = require("@appium/support");
25
23
 
26
24
  var _capabilities = require("../capabilities");
27
25
 
28
- let commands = {};
26
+ var _capabilities2 = require("../../helpers/capabilities");
27
+
28
+ const commands = {};
29
29
 
30
- commands.createSession = async function createSession(jsonwpDesiredCapabilities, jsonwpRequiredCaps, w3cCapabilities) {
30
+ commands.createSession = async function createSession(w3cCapabilities1, w3cCapabilities2, w3cCapabilities) {
31
31
  if (this.sessionId !== null) {
32
- throw new _protocol.errors.SessionNotCreatedError('Cannot create a new session ' + 'while one is in progress');
32
+ throw new _protocol.errors.SessionNotCreatedError('Cannot create a new session while one is in progress');
33
33
  }
34
34
 
35
- _logger.default.debug();
35
+ this.log.debug();
36
+ const originalCaps = [w3cCapabilities, w3cCapabilities1, w3cCapabilities2].find(_capabilities2.isW3cCaps);
36
37
 
37
- if (!w3cCapabilities) {
38
+ if (!originalCaps) {
38
39
  throw new _protocol.errors.SessionNotCreatedError('Appium only supports W3C-style capability objects. ' + 'Your client is sending an older capabilities format. Please update your client library.');
39
40
  }
40
41
 
41
- if (jsonwpDesiredCapabilities) {
42
- _logger.default.warn('Appium received (M)JSONWP desired capabilities in alongside the W3C capabilities; they will be ignored');
43
- }
44
-
45
42
  this.setProtocolW3C();
46
- this.originalCaps = _lodash.default.cloneDeep(w3cCapabilities);
47
-
48
- _logger.default.debug(`Creating session with W3C capabilities: ${JSON.stringify(w3cCapabilities, null, 2)}`);
49
-
43
+ this.originalCaps = _lodash.default.cloneDeep(originalCaps);
44
+ this.log.debug(`Creating session with W3C capabilities: ${JSON.stringify(originalCaps, null, 2)}`);
50
45
  let caps;
51
46
 
52
47
  try {
53
- caps = (0, _capabilities.processCapabilities)(w3cCapabilities, this.desiredCapConstraints, this.shouldValidateCaps);
48
+ caps = (0, _capabilities.processCapabilities)(originalCaps, this.desiredCapConstraints, this.shouldValidateCaps);
54
49
 
55
50
  if (caps[_capabilities.APPIUM_OPTS_CAP]) {
56
- _logger.default.debug(`Found ${_capabilities.PREFIXED_APPIUM_OPTS_CAP} capability present; will promote items inside to caps`);
57
-
51
+ this.log.debug(`Found ${_capabilities.PREFIXED_APPIUM_OPTS_CAP} capability present; will promote items inside to caps`);
58
52
  caps = (0, _capabilities.promoteAppiumOptions)(caps);
59
53
  }
60
54
 
61
- caps = fixCaps(caps, this.desiredCapConstraints);
55
+ caps = fixCaps(caps, this.desiredCapConstraints, this.log);
62
56
  } catch (e) {
63
57
  throw new _protocol.errors.SessionNotCreatedError(e.message);
64
58
  }
@@ -92,8 +86,7 @@ commands.createSession = async function createSession(jsonwpDesiredCapabilities,
92
86
  this.newCommandTimeoutMs = this.caps.newCommandTimeout * 1000;
93
87
  }
94
88
 
95
- _logger.default.info(`Session created with session id: ${this.sessionId}`);
96
-
89
+ this.log.info(`Session created with session id: ${this.sessionId}`);
97
90
  return [this.sessionId, caps];
98
91
  };
99
92
 
@@ -132,7 +125,7 @@ commands.deleteSession = async function deleteSession() {
132
125
  this.sessionId = null;
133
126
  };
134
127
 
135
- function fixCaps(originalCaps, desiredCapConstraints = {}) {
128
+ function fixCaps(originalCaps, desiredCapConstraints = {}, log) {
136
129
  let caps = _lodash.default.clone(originalCaps);
137
130
 
138
131
  let booleanCaps = _lodash.default.keys(_lodash.default.pickBy(desiredCapConstraints, k => k.isBoolean === true));
@@ -144,8 +137,7 @@ function fixCaps(originalCaps, desiredCapConstraints = {}) {
144
137
  value = value.toLowerCase();
145
138
 
146
139
  if (value === 'true' || value === 'false') {
147
- _logger.default.warn(`Capability '${cap}' changed from string to boolean. This may cause unexpected behavior`);
148
-
140
+ log.warn(`Capability '${cap}' changed from string to boolean. This may cause unexpected behavior`);
149
141
  caps[cap] = value === 'true';
150
142
  }
151
143
  }
@@ -164,8 +156,7 @@ function fixCaps(originalCaps, desiredCapConstraints = {}) {
164
156
  newValue = parseFloat(value);
165
157
  }
166
158
 
167
- _logger.default.warn(`Capability '${cap}' changed from string ('${value}') to integer (${newValue}). This may cause unexpected behavior`);
168
-
159
+ log.warn(`Capability '${cap}' changed from string ('${value}') to integer (${newValue}). This may cause unexpected behavior`);
169
160
  caps[cap] = newValue;
170
161
  }
171
162
  }
@@ -177,4 +168,4 @@ var _default = commands;
177
168
  exports.default = _default;require('source-map-support').install();
178
169
 
179
170
 
180
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL3Nlc3Npb24uanMiXSwibmFtZXMiOlsiY29tbWFuZHMiLCJjcmVhdGVTZXNzaW9uIiwianNvbndwRGVzaXJlZENhcGFiaWxpdGllcyIsImpzb253cFJlcXVpcmVkQ2FwcyIsInczY0NhcGFiaWxpdGllcyIsInNlc3Npb25JZCIsImVycm9ycyIsIlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IiLCJsb2ciLCJkZWJ1ZyIsIndhcm4iLCJzZXRQcm90b2NvbFczQyIsIm9yaWdpbmFsQ2FwcyIsIl8iLCJjbG9uZURlZXAiLCJKU09OIiwic3RyaW5naWZ5IiwiY2FwcyIsImRlc2lyZWRDYXBDb25zdHJhaW50cyIsInNob3VsZFZhbGlkYXRlQ2FwcyIsIkFQUElVTV9PUFRTX0NBUCIsIlBSRUZJWEVEX0FQUElVTV9PUFRTX0NBUCIsImZpeENhcHMiLCJlIiwibWVzc2FnZSIsInZhbGlkYXRlRGVzaXJlZENhcHMiLCJ1dGlsIiwidXVpZFY0Iiwib3B0cyIsImluaXRpYWxPcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwibm9SZXNldCIsImZ1bGxSZXNldCIsIkVycm9yIiwiZmFzdFJlc2V0Iiwic2tpcFVuaW5zdGFsbCIsImFwcCIsInRyaW0iLCJpc1VuZGVmaW5lZCIsIm5ld0NvbW1hbmRUaW1lb3V0IiwibmV3Q29tbWFuZFRpbWVvdXRNcyIsImluZm8iLCJnZXRTZXNzaW9ucyIsInJldCIsInB1c2giLCJpZCIsImNhcGFiaWxpdGllcyIsImdldFNlc3Npb24iLCJldmVudFRpbWluZ3MiLCJldmVudHMiLCJldmVudEhpc3RvcnkiLCJkZWxldGVTZXNzaW9uIiwiY2xlYXJOZXdDb21tYW5kVGltZW91dCIsImlzQ29tbWFuZHNRdWV1ZUVuYWJsZWQiLCJjb21tYW5kc1F1ZXVlR3VhcmQiLCJpc0J1c3kiLCJrZXkiLCJrZXlzIiwicXVldWVzIiwiY2xvbmUiLCJib29sZWFuQ2FwcyIsInBpY2tCeSIsImsiLCJpc0Jvb2xlYW4iLCJjYXAiLCJ2YWx1ZSIsImlzU3RyaW5nIiwidG9Mb3dlckNhc2UiLCJpbnRDYXBzIiwiaXNOdW1iZXIiLCJpc05hTiIsIm5ld1ZhbHVlIiwicGFyc2VJbnQiLCJwYXJzZUZsb2F0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLElBQUlBLFFBQVEsR0FBRyxFQUFmOztBQUlBQSxRQUFRLENBQUNDLGFBQVQsR0FBeUIsZUFBZUEsYUFBZixDQUE4QkMseUJBQTlCLEVBQXlEQyxrQkFBekQsRUFBNkVDLGVBQTdFLEVBQThGO0FBQ3JILE1BQUksS0FBS0MsU0FBTCxLQUFtQixJQUF2QixFQUE2QjtBQUMzQixVQUFNLElBQUlDLGlCQUFPQyxzQkFBWCxDQUFrQyxpQ0FDQSwwQkFEbEMsQ0FBTjtBQUVEOztBQUVEQyxrQkFBSUMsS0FBSjs7QUFFQSxNQUFJLENBQUNMLGVBQUwsRUFBc0I7QUFDcEIsVUFBTSxJQUFJRSxpQkFBT0Msc0JBQVgsQ0FBa0Msd0RBQ3RDLHlGQURJLENBQU47QUFFRDs7QUFFRCxNQUFJTCx5QkFBSixFQUErQjtBQUM3Qk0sb0JBQUlFLElBQUosQ0FBUyx3R0FBVDtBQUNEOztBQUVELE9BQUtDLGNBQUw7QUFFQSxPQUFLQyxZQUFMLEdBQW9CQyxnQkFBRUMsU0FBRixDQUFZVixlQUFaLENBQXBCOztBQUNBSSxrQkFBSUMsS0FBSixDQUFXLDJDQUEwQ00sSUFBSSxDQUFDQyxTQUFMLENBQWVaLGVBQWYsRUFBZ0MsSUFBaEMsRUFBc0MsQ0FBdEMsQ0FBeUMsRUFBOUY7O0FBR0EsTUFBSWEsSUFBSjs7QUFDQSxNQUFJO0FBQ0ZBLElBQUFBLElBQUksR0FBRyx1Q0FBb0JiLGVBQXBCLEVBQXFDLEtBQUtjLHFCQUExQyxFQUFpRSxLQUFLQyxrQkFBdEUsQ0FBUDs7QUFDQSxRQUFJRixJQUFJLENBQUNHLDZCQUFELENBQVIsRUFBMkI7QUFDekJaLHNCQUFJQyxLQUFKLENBQVcsU0FBUVksc0NBQXlCLHdEQUE1Qzs7QUFDQUosTUFB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QUNEO0FBQ0Y7QUFDRjs7QUFHRCxNQUFJRyxPQUFPLEdBQUd4RCxnQkFBRTZDLElBQUYsQ0FBTzdDLGdCQUFFaUQsTUFBRixDQUFTNUMscUJBQVQsRUFBaUM2QyxDQUFELElBQU9BLENBQUMsQ0FBQ08sUUFBRixLQUFlLElBQXRELENBQVAsQ0FBZDs7QUFDQSxPQUFLLElBQUlMLEdBQVQsSUFBZ0JJLE9BQWhCLEVBQXlCO0FBQ3ZCLFFBQUlILEtBQUssR0FBR3RELFlBQVksQ0FBQ3FELEdBQUQsQ0FBeEI7O0FBQ0EsUUFBSXBELGdCQUFFc0QsUUFBRixDQUFXRCxLQUFYLEtBQXFCLENBQUNLLEtBQUssQ0FBQ0wsS0FBRCxDQUEvQixFQUF3QztBQUN0Q0EsTUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUM1QixJQUFOLEVBQVI7QUFDQSxVQUFJa0MsUUFBUSxHQUFHQyxRQUFRLENBQUNQLEtBQUQsRUFBUSxFQUFSLENBQXZCOztBQUNBLFVBQUlBLEtBQUssS0FBTSxHQUFFTSxRQUFTLEVBQTFCLEVBQTZCO0FBQzNCQSxRQUFBQSxRQUFRLEdBQUdFLFVBQVUsQ0FBQ1IsS0FBRCxDQUFyQjtBQUNEOztBQUNEMUQsc0JBQUlFLElBQUosQ0FBVSxlQUFjdUQsR0FBSSwyQkFBMEJDLEtBQU0sa0JBQWlCTSxRQUFTLHVDQUF0Rjs7QUFDQXZELE1BQUFBLElBQUksQ0FBQ2dELEdBQUQsQ0FBSixHQUFZTyxRQUFaO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPdkQsSUFBUDtBQUNEOztlQUVjakIsUSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlcXVpcmUtYXdhaXQgKi9cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICcuLi8uLi9wcm90b2NvbCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IHByb2Nlc3NDYXBhYmlsaXRpZXMsIHByb21vdGVBcHBpdW1PcHRpb25zLCBBUFBJVU1fT1BUU19DQVAsIFBSRUZJWEVEX0FQUElVTV9PUFRTX0NBUCB9IGZyb20gJy4uL2NhcGFiaWxpdGllcyc7XG5cbmxldCBjb21tYW5kcyA9IHt9O1xuXG4vLyBUT0RPOiBSZW1vdmUganNvbndwRGVzaXJlZENhcGFiaWxpdGllcyBhbmQganNvbndwUmVxdWlyZWRDYXBzIGNvbXBsZXRlbHlcbi8vICAgICAgIHNpbmNlIEFwcGl1bSAyLjAgbm8gbG9uZ2VyIHN1cHBvcnRzIHRoZW0uXG5jb21tYW5kcy5jcmVhdGVTZXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gY3JlYXRlU2Vzc2lvbiAoanNvbndwRGVzaXJlZENhcGFiaWxpdGllcywganNvbndwUmVxdWlyZWRDYXBzLCB3M2NDYXBhYmlsaXRpZXMpIHtcbiAgaWYgKHRoaXMuc2Vzc2lvbklkICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5TZXNzaW9uTm90Q3JlYXRlZEVycm9yKCdDYW5ub3QgY3JlYXRlIGEgbmV3IHNlc3Npb24gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aGlsZSBvbmUgaXMgaW4gcHJvZ3Jlc3MnKTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZygpO1xuXG4gIGlmICghdzNjQ2FwYWJpbGl0aWVzKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5TZXNzaW9uTm90Q3JlYXRlZEVycm9yKCdBcHBpdW0gb25seSBzdXBwb3J0cyBXM0Mtc3R5bGUgY2FwYWJpbGl0eSBvYmplY3RzLiAnICtcbiAgICAgICdZb3VyIGNsaWVudCBpcyBzZW5kaW5nIGFuIG9sZGVyIGNhcGFiaWxpdGllcyBmb3JtYXQuIFBsZWFzZSB1cGRhdGUgeW91ciBjbGllbnQgbGlicmFyeS4nKTtcbiAgfVxuXG4gIGlmIChqc29ud3BEZXNpcmVkQ2FwYWJpbGl0aWVzKSB7XG4gICAgbG9nLndhcm4oJ0FwcGl1bSByZWNlaXZlZCAoTSlKU09OV1AgZGVzaXJlZCBjYXBhYmlsaXRpZXMgaW4gYWxvbmdzaWRlIHRoZSBXM0MgY2FwYWJpbGl0aWVzOyB0aGV5IHdpbGwgYmUgaWdub3JlZCcpO1xuICB9XG5cbiAgdGhpcy5zZXRQcm90b2NvbFczQygpO1xuXG4gIHRoaXMub3JpZ2luYWxDYXBzID0gXy5jbG9uZURlZXAodzNjQ2FwYWJpbGl0aWVzKTtcbiAgbG9nLmRlYnVnKGBDcmVhdGluZyBzZXNzaW9uIHdpdGggVzNDIGNhcGFiaWxpdGllczogJHtKU09OLnN0cmluZ2lmeSh3M2NDYXBhYmlsaXRpZXMsIG51bGwsIDIpfWApO1xuXG5cbiAgbGV0IGNhcHM7XG4gIHRyeSB7XG4gICAgY2FwcyA9IHByb2Nlc3NDYXBhYmlsaXRpZXModzNjQ2FwYWJpbGl0aWVzLCB0aGlzLmRlc2lyZWRDYXBDb25zdHJhaW50cywgdGhpcy5zaG91bGRWYWxpZGF0ZUNhcHMpO1xuICAgIGlmIChjYXBzW0FQUElVTV9PUFRTX0NBUF0pIHtcbiAgICAgIGxvZy5kZWJ1ZyhgRm91bmQgJHtQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVB9IGNhcGFiaWxpdHkgcHJlc2VudDsgd2lsbCBwcm9tb3RlIGl0ZW1zIGluc2lkZSB0byBjYXBzYCk7XG4gICAgICBjYXBzID0gcHJvbW90ZUFwcGl1bU9wdGlvbnMoY2Fwcyk7XG4gICAgfVxuICAgIGNhcHMgPSBmaXhDYXBzKGNhcHMsIHRoaXMuZGVzaXJlZENhcENvbnN0cmFpbnRzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcihlLm1lc3NhZ2UpO1xuICB9XG5cbiAgdGhpcy52YWxpZGF0ZURlc2lyZWRDYXBzKGNhcHMpO1xuXG4gIHRoaXMuc2Vzc2lvbklkID0gdXRpbC51dWlkVjQoKTtcbiAgdGhpcy5jYXBzID0gY2FwcztcbiAgdGhpcy5vcHRzID0gXy5jbG9uZURlZXAodGhpcy5pbml0aWFsT3B0cyk7XG5cbiAgLy8gbWVyZ2UgY2FwcyBvbnRvIG9wdHMgc28gd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB3aGF0J3Mgd2hlcmVcbiAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdHMsIHRoaXMuY2Fwcyk7XG5cbiAgLy8gZGVhbCB3aXRoIHJlc2V0c1xuICAvLyBzb21lIHBlb3BsZSBsaWtlIHRvIGRvIHdlaXJkIHRoaW5ncyBieSBzZXR0aW5nIG5vUmVzZXQgYW5kIGZ1bGxSZXNldFxuICAvLyBib3RoIHRvIHRydWUsIGJ1dCB0aGlzIGlzIG1pc2d1aWRlZCBhbmQgc3RyYW5nZSwgc28gZXJyb3IgaGVyZSBpbnN0ZWFkXG4gIGlmICh0aGlzLm9wdHMubm9SZXNldCAmJiB0aGlzLm9wdHMuZnVsbFJlc2V0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlICdub1Jlc2V0JyBhbmQgJ2Z1bGxSZXNldCcgY2FwYWJpbGl0aWVzIGFyZSBtdXR1YWxseSBcIiArXG4gICAgICAgICAgICAgICAgICAgICdleGNsdXNpdmUgYW5kIHNob3VsZCBub3QgYm90aCBiZSBzZXQgdG8gdHJ1ZS4gWW91ICcgK1xuICAgICAgICAgICAgICAgICAgICBcInByb2JhYmx5IG1lYW50IHRvIGp1c3QgdXNlICdmdWxsUmVzZXQnIG9uIGl0cyBvd25cIik7XG4gIH1cbiAgaWYgKHRoaXMub3B0cy5ub1Jlc2V0ID09PSB0cnVlKSB7XG4gICAgdGhpcy5vcHRzLmZ1bGxSZXNldCA9IGZhbHNlO1xuICB9XG4gIGlmICh0aGlzLm9wdHMuZnVsbFJlc2V0ID09PSB0cnVlKSB7XG4gICAgdGhpcy5vcHRzLm5vUmVzZXQgPSBmYWxzZTtcbiAgfVxuICB0aGlzLm9wdHMuZmFzdFJlc2V0ID0gIXRoaXMub3B0cy5mdWxsUmVzZXQgJiYgIXRoaXMub3B0cy5ub1Jlc2V0O1xuICB0aGlzLm9wdHMuc2tpcFVuaW5zdGFsbCA9IHRoaXMub3B0cy5mYXN0UmVzZXQgfHwgdGhpcy5vcHRzLm5vUmVzZXQ7XG5cbiAgLy8gUHJldmVudHMgZW1wdHkgc3RyaW5nIGNhcHMgc28gd2UgZG9uJ3QgbmVlZCB0byB0ZXN0IGl0IGV2ZXJ5d2hlcmVcbiAgaWYgKHR5cGVvZiB0aGlzLm9wdHMuYXBwID09PSAnc3RyaW5nJyAmJiB0aGlzLm9wdHMuYXBwLnRyaW0oKSA9PT0gJycpIHtcbiAgICB0aGlzLm9wdHMuYXBwID0gbnVsbDtcbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmNhcHMubmV3Q29tbWFuZFRpbWVvdXQpKSB7XG4gICAgdGhpcy5uZXdDb21tYW5kVGltZW91dE1zID0gKHRoaXMuY2Fwcy5uZXdDb21tYW5kVGltZW91dCAqIDEwMDApO1xuICB9XG5cbiAgbG9nLmluZm8oYFNlc3Npb24gY3JlYXRlZCB3aXRoIHNlc3Npb24gaWQ6ICR7dGhpcy5zZXNzaW9uSWR9YCk7XG5cbiAgcmV0dXJuIFt0aGlzLnNlc3Npb25JZCwgY2Fwc107XG59O1xuXG5jb21tYW5kcy5nZXRTZXNzaW9ucyA9IGFzeW5jIGZ1bmN0aW9uIGdldFNlc3Npb25zICgpIHtcbiAgbGV0IHJldCA9IFtdO1xuXG4gIGlmICh0aGlzLnNlc3Npb25JZCkge1xuICAgIHJldC5wdXNoKHtcbiAgICAgIGlkOiB0aGlzLnNlc3Npb25JZCxcbiAgICAgIGNhcGFiaWxpdGllczogdGhpcy5jYXBzXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufTtcblxuY29tbWFuZHMuZ2V0U2Vzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFNlc3Npb24gKCkge1xuICBpZiAodGhpcy5jYXBzLmV2ZW50VGltaW5ncykge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNhcHMsIHtldmVudHM6IHRoaXMuZXZlbnRIaXN0b3J5fSk7XG4gIH1cbiAgcmV0dXJuIHRoaXMuY2Fwcztcbn07XG5cbmNvbW1hbmRzLmRlbGV0ZVNlc3Npb24gPSBhc3luYyBmdW5jdGlvbiBkZWxldGVTZXNzaW9uICgvKiBzZXNzaW9uSWQgKi8pIHtcbiAgdGhpcy5jbGVhck5ld0NvbW1hbmRUaW1lb3V0KCk7XG4gIGlmICh0aGlzLmlzQ29tbWFuZHNRdWV1ZUVuYWJsZWQgJiYgdGhpcy5jb21tYW5kc1F1ZXVlR3VhcmQuaXNCdXN5KCkpIHtcbiAgICAvLyBzaW1wbGUgaGFjayB0byByZWxlYXNlIHBlbmRpbmcgY29tbWFuZHMgaWYgdGhleSBleGlzdFxuICAgIGZvciAoY29uc3Qga2V5IG9mIF8ua2V5cyh0aGlzLmNvbW1hbmRzUXVldWVHdWFyZC5xdWV1ZXMpKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzUXVldWVHdWFyZC5xdWV1ZXNba2V5XSA9IFtdO1xuICAgIH1cbiAgfVxuICB0aGlzLnNlc3Npb25JZCA9IG51bGw7XG59O1xuXG5mdW5jdGlvbiBmaXhDYXBzIChvcmlnaW5hbENhcHMsIGRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHt9KSB7XG4gIGxldCBjYXBzID0gXy5jbG9uZShvcmlnaW5hbENhcHMpO1xuXG4gIC8vIGJvb2xlYW4gY2FwYWJpbGl0aWVzIGNhbiBiZSBwYXNzZWQgaW4gYXMgc3RyaW5ncyAnZmFsc2UnIGFuZCAndHJ1ZSdcbiAgLy8gd2hpY2ggd2Ugd2FudCB0byB0cmFuc2xhdGUgaW50byBib29sZWFuIHZhbHVlc1xuICBsZXQgYm9vbGVhbkNhcHMgPSBfLmtleXMoXy5waWNrQnkoZGVzaXJlZENhcENvbnN0cmFpbnRzLCAoaykgPT4gay5pc0Jvb2xlYW4gPT09IHRydWUpKTtcbiAgZm9yIChsZXQgY2FwIG9mIGJvb2xlYW5DYXBzKSB7XG4gICAgbGV0IHZhbHVlID0gb3JpZ2luYWxDYXBzW2NhcF07XG4gICAgaWYgKF8uaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAodmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gJ2ZhbHNlJykge1xuICAgICAgICBsb2cud2FybihgQ2FwYWJpbGl0eSAnJHtjYXB9JyBjaGFuZ2VkIGZyb20gc3RyaW5nIHRvIGJvb2xlYW4uIFRoaXMgbWF5IGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3JgKTtcbiAgICAgICAgY2Fwc1tjYXBdID0gKHZhbHVlID09PSAndHJ1ZScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGludCBjYXBhYmlsaXRpZXMgYXJlIG9mdGVuIHNlbnQgaW4gYXMgc3RyaW5ncyBieSBmcmFtZXdvcmtzXG4gIGxldCBpbnRDYXBzID0gXy5rZXlzKF8ucGlja0J5KGRlc2lyZWRDYXBDb25zdHJhaW50cywgKGspID0+IGsuaXNOdW1iZXIgPT09IHRydWUpKTtcbiAgZm9yIChsZXQgY2FwIG9mIGludENhcHMpIHtcbiAgICBsZXQgdmFsdWUgPSBvcmlnaW5hbENhcHNbY2FwXTtcbiAgICBpZiAoXy5pc1N0cmluZyh2YWx1ZSkgJiYgIWlzTmFOKHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG4gICAgICBsZXQgbmV3VmFsdWUgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgaWYgKHZhbHVlICE9PSBgJHtuZXdWYWx1ZX1gKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBsb2cud2FybihgQ2FwYWJpbGl0eSAnJHtjYXB9JyBjaGFuZ2VkIGZyb20gc3RyaW5nICgnJHt2YWx1ZX0nKSB0byBpbnRlZ2VyICgke25ld1ZhbHVlfSkuIFRoaXMgbWF5IGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3JgKTtcbiAgICAgIGNhcHNbY2FwXSA9IG5ld1ZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjYXBzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbmV4cG9ydCB7IHByb21vdGVBcHBpdW1PcHRpb25zIH07XG4iXSwiZmlsZSI6ImxpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL3Nlc3Npb24uanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4ifQ==
171
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL3Nlc3Npb24uanMiXSwibmFtZXMiOlsiY29tbWFuZHMiLCJjcmVhdGVTZXNzaW9uIiwidzNjQ2FwYWJpbGl0aWVzMSIsInczY0NhcGFiaWxpdGllczIiLCJ3M2NDYXBhYmlsaXRpZXMiLCJzZXNzaW9uSWQiLCJlcnJvcnMiLCJTZXNzaW9uTm90Q3JlYXRlZEVycm9yIiwibG9nIiwiZGVidWciLCJvcmlnaW5hbENhcHMiLCJmaW5kIiwiaXNXM2NDYXBzIiwic2V0UHJvdG9jb2xXM0MiLCJfIiwiY2xvbmVEZWVwIiwiSlNPTiIsInN0cmluZ2lmeSIsImNhcHMiLCJkZXNpcmVkQ2FwQ29uc3RyYWludHMiLCJzaG91bGRWYWxpZGF0ZUNhcHMiLCJBUFBJVU1fT1BUU19DQVAiLCJQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVAiLCJmaXhDYXBzIiwiZSIsIm1lc3NhZ2UiLCJ2YWxpZGF0ZURlc2lyZWRDYXBzIiwidXRpbCIsInV1aWRWNCIsIm9wdHMiLCJpbml0aWFsT3B0cyIsIk9iamVjdCIsImFzc2lnbiIsIm5vUmVzZXQiLCJmdWxsUmVzZXQiLCJFcnJvciIsImZhc3RSZXNldCIsInNraXBVbmluc3RhbGwiLCJhcHAiLCJ0cmltIiwiaXNVbmRlZmluZWQiLCJuZXdDb21tYW5kVGltZW91dCIsIm5ld0NvbW1hbmRUaW1lb3V0TXMiLCJpbmZvIiwiZ2V0U2Vzc2lvbnMiLCJyZXQiLCJwdXNoIiwiaWQiLCJjYXBhYmlsaXRpZXMiLCJnZXRTZXNzaW9uIiwiZXZlbnRUaW1pbmdzIiwiZXZlbnRzIiwiZXZlbnRIaXN0b3J5IiwiZGVsZXRlU2Vzc2lvbiIsImNsZWFyTmV3Q29tbWFuZFRpbWVvdXQiLCJpc0NvbW1hbmRzUXVldWVFbmFibGVkIiwiY29tbWFuZHNRdWV1ZUd1YXJkIiwiaXNCdXN5Iiwia2V5Iiwia2V5cyIsInF1ZXVlcyIsImNsb25lIiwiYm9vbGVhbkNhcHMiLCJwaWNrQnkiLCJrIiwiaXNCb29sZWFuIiwiY2FwIiwidmFsdWUiLCJpc1N0cmluZyIsInRvTG93ZXJDYXNlIiwid2FybiIsImludENhcHMiLCJpc051bWJlciIsImlzTmFOIiwibmV3VmFsdWUiLCJwYXJzZUludCIsInBhcnNlRmxvYXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBRUEsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOztBQUVBQSxRQUFRLENBQUNDLGFBQVQsR0FBeUIsZUFBZUEsYUFBZixDQUE4QkMsZ0JBQTlCLEVBQWdEQyxnQkFBaEQsRUFBa0VDLGVBQWxFLEVBQW1GO0FBQzFHLE1BQUksS0FBS0MsU0FBTCxLQUFtQixJQUF2QixFQUE2QjtBQUMzQixVQUFNLElBQUlDLGlCQUFPQyxzQkFBWCxDQUFrQyxzREFBbEMsQ0FBTjtBQUNEOztBQUVELE9BQUtDLEdBQUwsQ0FBU0MsS0FBVDtBQU1BLFFBQU1DLFlBQVksR0FBRyxDQUFDTixlQUFELEVBQWtCRixnQkFBbEIsRUFBb0NDLGdCQUFwQyxFQUFzRFEsSUFBdEQsQ0FBMkRDLHdCQUEzRCxDQUFyQjs7QUFDQSxNQUFJLENBQUNGLFlBQUwsRUFBbUI7QUFDakIsVUFBTSxJQUFJSixpQkFBT0Msc0JBQVgsQ0FBa0Msd0RBQ3RDLHlGQURJLENBQU47QUFFRDs7QUFFRCxPQUFLTSxjQUFMO0FBRUEsT0FBS0gsWUFBTCxHQUFvQkksZ0JBQUVDLFNBQUYsQ0FBWUwsWUFBWixDQUFwQjtBQUNBLE9BQUtGLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQiwyQ0FBMENPLElBQUksQ0FBQ0MsU0FBTCxDQUFlUCxZQUFmLEVBQTZCLElBQTdCLEVBQW1DLENBQW5DLENBQXNDLEVBQWhHO0FBRUEsTUFBSVEsSUFBSjs7QUFDQSxNQUFJO0FBQ0ZBLElBQUFBLElBQUksR0FBRyx1Q0FBb0JSLFlBQXBCLEVBQWtDLEtBQUtTLHFCQUF2QyxFQUE4RCxLQUFLQyxrQkFBbkUsQ0FBUDs7QUFDQSxRQUFJRixJQUFJLENBQUNHLDZCQUFELENBQVIsRUFBMkI7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QUFDekMzRCxRQUFBQSxHQUFHLENBQUM4RCxJQUFKLENBQVUsZUFBY0osR0FBSSxzRUFBNUI7QUFDQWhELFFBQUFBLElBQUksQ0FBQ2dELEdBQUQsQ0FBSixHQUFhQyxLQUFLLEtBQUssTUFBdkI7QUFDRDtBQUNGO0FBQ0Y7O0FBR0QsTUFBSUksT0FBTyxHQUFHekQsZ0JBQUU2QyxJQUFGLENBQU83QyxnQkFBRWlELE1BQUYsQ0FBUzVDLHFCQUFULEVBQWlDNkMsQ0FBRCxJQUFPQSxDQUFDLENBQUNRLFFBQUYsS0FBZSxJQUF0RCxDQUFQLENBQWQ7O0FBQ0EsT0FBSyxJQUFJTixHQUFULElBQWdCSyxPQUFoQixFQUF5QjtBQUN2QixRQUFJSixLQUFLLEdBQUd6RCxZQUFZLENBQUN3RCxHQUFELENBQXhCOztBQUNBLFFBQUlwRCxnQkFBRXNELFFBQUYsQ0FBV0QsS0FBWCxLQUFxQixDQUFDTSxLQUFLLENBQUNOLEtBQUQsQ0FBL0IsRUFBd0M7QUFDdENBLE1BQUFBLEtBQUssR0FBR0EsS0FBSyxDQUFDNUIsSUFBTixFQUFSO0FBQ0EsVUFBSW1DLFFBQVEsR0FBR0MsUUFBUSxDQUFDUixLQUFELEVBQVEsRUFBUixDQUF2Qjs7QUFDQSxVQUFJQSxLQUFLLEtBQU0sR0FBRU8sUUFBUyxFQUExQixFQUE2QjtBQUMzQkEsUUFBQUEsUUFBUSxHQUFHRSxVQUFVLENBQUNULEtBQUQsQ0FBckI7QUFDRDs7QUFDRDNELE1BQUFBLEdBQUcsQ0FBQzhELElBQUosQ0FBVSxlQUFjSixHQUFJLDJCQUEwQkMsS0FBTSxrQkFBaUJPLFFBQVMsdUNBQXRGO0FBQ0F4RCxNQUFBQSxJQUFJLENBQUNnRCxHQUFELENBQUosR0FBWVEsUUFBWjtBQUNEO0FBQ0Y7O0FBRUQsU0FBT3hELElBQVA7QUFDRDs7ZUFFY2xCLFEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZXF1aXJlLWF3YWl0ICovXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnLi4vLi4vcHJvdG9jb2wnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQge1xuICBwcm9jZXNzQ2FwYWJpbGl0aWVzLCBwcm9tb3RlQXBwaXVtT3B0aW9ucywgQVBQSVVNX09QVFNfQ0FQLCBQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVAsXG59IGZyb20gJy4uL2NhcGFiaWxpdGllcyc7XG5pbXBvcnQgeyBpc1czY0NhcHMgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NhcGFiaWxpdGllcyc7XG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbmNvbW1hbmRzLmNyZWF0ZVNlc3Npb24gPSBhc3luYyBmdW5jdGlvbiBjcmVhdGVTZXNzaW9uICh3M2NDYXBhYmlsaXRpZXMxLCB3M2NDYXBhYmlsaXRpZXMyLCB3M2NDYXBhYmlsaXRpZXMpIHtcbiAgaWYgKHRoaXMuc2Vzc2lvbklkICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5TZXNzaW9uTm90Q3JlYXRlZEVycm9yKCdDYW5ub3QgY3JlYXRlIGEgbmV3IHNlc3Npb24gd2hpbGUgb25lIGlzIGluIHByb2dyZXNzJyk7XG4gIH1cblxuICB0aGlzLmxvZy5kZWJ1ZygpO1xuXG4gIC8vIEhpc3RvcmljYWxseSB0aGUgZmlyc3QgdHdvIGFyZ3VtZW50cyB3ZXJlIHJlc2VydmVkIGZvciBKU09OV1AgY2FwYWJpbGl0aWVzLlxuICAvLyBBcHBpdW0gMiBoYXMgZHJvcHBlZCB0aGUgc3VwcG9ydCBvZiB0aGVzZSwgc28gbm93IHdlIG9ubHkgYWNjZXB0IGNhcGFiaWxpdHlcbiAgLy8gb2JqZWN0cyBpbiBXM0MgZm9ybWF0IGFuZCB0aHVzIGFsbG93IGFueSBvZiB0aGUgdGhyZWUgYXJndW1lbnRzIHRvIHJlcHJlc2VudFxuICAvLyB0aGUgbGF0dGVyLlxuICBjb25zdCBvcmlnaW5hbENhcHMgPSBbdzNjQ2FwYWJpbGl0aWVzLCB3M2NDYXBhYmlsaXRpZXMxLCB3M2NDYXBhYmlsaXRpZXMyXS5maW5kKGlzVzNjQ2Fwcyk7XG4gIGlmICghb3JpZ2luYWxDYXBzKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5TZXNzaW9uTm90Q3JlYXRlZEVycm9yKCdBcHBpdW0gb25seSBzdXBwb3J0cyBXM0Mtc3R5bGUgY2FwYWJpbGl0eSBvYmplY3RzLiAnICtcbiAgICAgICdZb3VyIGNsaWVudCBpcyBzZW5kaW5nIGFuIG9sZGVyIGNhcGFiaWxpdGllcyBmb3JtYXQuIFBsZWFzZSB1cGRhdGUgeW91ciBjbGllbnQgbGlicmFyeS4nKTtcbiAgfVxuXG4gIHRoaXMuc2V0UHJvdG9jb2xXM0MoKTtcblxuICB0aGlzLm9yaWdpbmFsQ2FwcyA9IF8uY2xvbmVEZWVwKG9yaWdpbmFsQ2Fwcyk7XG4gIHRoaXMubG9nLmRlYnVnKGBDcmVhdGluZyBzZXNzaW9uIHdpdGggVzNDIGNhcGFiaWxpdGllczogJHtKU09OLnN0cmluZ2lmeShvcmlnaW5hbENhcHMsIG51bGwsIDIpfWApO1xuXG4gIGxldCBjYXBzO1xuICB0cnkge1xuICAgIGNhcHMgPSBwcm9jZXNzQ2FwYWJpbGl0aWVzKG9yaWdpbmFsQ2FwcywgdGhpcy5kZXNpcmVkQ2FwQ29uc3RyYWludHMsIHRoaXMuc2hvdWxkVmFsaWRhdGVDYXBzKTtcbiAgICBpZiAoY2Fwc1tBUFBJVU1fT1BUU19DQVBdKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgRm91bmQgJHtQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVB9IGNhcGFiaWxpdHkgcHJlc2VudDsgd2lsbCBwcm9tb3RlIGl0ZW1zIGluc2lkZSB0byBjYXBzYCk7XG4gICAgICBjYXBzID0gcHJvbW90ZUFwcGl1bU9wdGlvbnMoY2Fwcyk7XG4gICAgfVxuICAgIGNhcHMgPSBmaXhDYXBzKGNhcHMsIHRoaXMuZGVzaXJlZENhcENvbnN0cmFpbnRzLCB0aGlzLmxvZyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IoZS5tZXNzYWdlKTtcbiAgfVxuXG4gIHRoaXMudmFsaWRhdGVEZXNpcmVkQ2FwcyhjYXBzKTtcblxuICB0aGlzLnNlc3Npb25JZCA9IHV0aWwudXVpZFY0KCk7XG4gIHRoaXMuY2FwcyA9IGNhcHM7XG4gIHRoaXMub3B0cyA9IF8uY2xvbmVEZWVwKHRoaXMuaW5pdGlhbE9wdHMpO1xuXG4gIC8vIG1lcmdlIGNhcHMgb250byBvcHRzIHNvIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgd2hhdCdzIHdoZXJlXG4gIE9iamVjdC5hc3NpZ24odGhpcy5vcHRzLCB0aGlzLmNhcHMpO1xuXG4gIC8vIGRlYWwgd2l0aCByZXNldHNcbiAgLy8gc29tZSBwZW9wbGUgbGlrZSB0byBkbyB3ZWlyZCB0aGluZ3MgYnkgc2V0dGluZyBub1Jlc2V0IGFuZCBmdWxsUmVzZXRcbiAgLy8gYm90aCB0byB0cnVlLCBidXQgdGhpcyBpcyBtaXNndWlkZWQgYW5kIHN0cmFuZ2UsIHNvIGVycm9yIGhlcmUgaW5zdGVhZFxuICBpZiAodGhpcy5vcHRzLm5vUmVzZXQgJiYgdGhpcy5vcHRzLmZ1bGxSZXNldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSAnbm9SZXNldCcgYW5kICdmdWxsUmVzZXQnIGNhcGFiaWxpdGllcyBhcmUgbXV0dWFsbHkgXCIgK1xuICAgICAgICAgICAgICAgICAgICAnZXhjbHVzaXZlIGFuZCBzaG91bGQgbm90IGJvdGggYmUgc2V0IHRvIHRydWUuIFlvdSAnICtcbiAgICAgICAgICAgICAgICAgICAgXCJwcm9iYWJseSBtZWFudCB0byBqdXN0IHVzZSAnZnVsbFJlc2V0JyBvbiBpdHMgb3duXCIpO1xuICB9XG4gIGlmICh0aGlzLm9wdHMubm9SZXNldCA9PT0gdHJ1ZSkge1xuICAgIHRoaXMub3B0cy5mdWxsUmVzZXQgPSBmYWxzZTtcbiAgfVxuICBpZiAodGhpcy5vcHRzLmZ1bGxSZXNldCA9PT0gdHJ1ZSkge1xuICAgIHRoaXMub3B0cy5ub1Jlc2V0ID0gZmFsc2U7XG4gIH1cbiAgdGhpcy5vcHRzLmZhc3RSZXNldCA9ICF0aGlzLm9wdHMuZnVsbFJlc2V0ICYmICF0aGlzLm9wdHMubm9SZXNldDtcbiAgdGhpcy5vcHRzLnNraXBVbmluc3RhbGwgPSB0aGlzLm9wdHMuZmFzdFJlc2V0IHx8IHRoaXMub3B0cy5ub1Jlc2V0O1xuXG4gIC8vIFByZXZlbnRzIGVtcHR5IHN0cmluZyBjYXBzIHNvIHdlIGRvbid0IG5lZWQgdG8gdGVzdCBpdCBldmVyeXdoZXJlXG4gIGlmICh0eXBlb2YgdGhpcy5vcHRzLmFwcCA9PT0gJ3N0cmluZycgJiYgdGhpcy5vcHRzLmFwcC50cmltKCkgPT09ICcnKSB7XG4gICAgdGhpcy5vcHRzLmFwcCA9IG51bGw7XG4gIH1cblxuICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5jYXBzLm5ld0NvbW1hbmRUaW1lb3V0KSkge1xuICAgIHRoaXMubmV3Q29tbWFuZFRpbWVvdXRNcyA9ICh0aGlzLmNhcHMubmV3Q29tbWFuZFRpbWVvdXQgKiAxMDAwKTtcbiAgfVxuXG4gIHRoaXMubG9nLmluZm8oYFNlc3Npb24gY3JlYXRlZCB3aXRoIHNlc3Npb24gaWQ6ICR7dGhpcy5zZXNzaW9uSWR9YCk7XG5cbiAgcmV0dXJuIFt0aGlzLnNlc3Npb25JZCwgY2Fwc107XG59O1xuXG5jb21tYW5kcy5nZXRTZXNzaW9ucyA9IGFzeW5jIGZ1bmN0aW9uIGdldFNlc3Npb25zICgpIHtcbiAgbGV0IHJldCA9IFtdO1xuXG4gIGlmICh0aGlzLnNlc3Npb25JZCkge1xuICAgIHJldC5wdXNoKHtcbiAgICAgIGlkOiB0aGlzLnNlc3Npb25JZCxcbiAgICAgIGNhcGFiaWxpdGllczogdGhpcy5jYXBzXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufTtcblxuY29tbWFuZHMuZ2V0U2Vzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uIGdldFNlc3Npb24gKCkge1xuICBpZiAodGhpcy5jYXBzLmV2ZW50VGltaW5ncykge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNhcHMsIHtldmVudHM6IHRoaXMuZXZlbnRIaXN0b3J5fSk7XG4gIH1cbiAgcmV0dXJuIHRoaXMuY2Fwcztcbn07XG5cbmNvbW1hbmRzLmRlbGV0ZVNlc3Npb24gPSBhc3luYyBmdW5jdGlvbiBkZWxldGVTZXNzaW9uICgvKiBzZXNzaW9uSWQgKi8pIHtcbiAgdGhpcy5jbGVhck5ld0NvbW1hbmRUaW1lb3V0KCk7XG4gIGlmICh0aGlzLmlzQ29tbWFuZHNRdWV1ZUVuYWJsZWQgJiYgdGhpcy5jb21tYW5kc1F1ZXVlR3VhcmQuaXNCdXN5KCkpIHtcbiAgICAvLyBzaW1wbGUgaGFjayB0byByZWxlYXNlIHBlbmRpbmcgY29tbWFuZHMgaWYgdGhleSBleGlzdFxuICAgIGZvciAoY29uc3Qga2V5IG9mIF8ua2V5cyh0aGlzLmNvbW1hbmRzUXVldWVHdWFyZC5xdWV1ZXMpKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzUXVldWVHdWFyZC5xdWV1ZXNba2V5XSA9IFtdO1xuICAgIH1cbiAgfVxuICB0aGlzLnNlc3Npb25JZCA9IG51bGw7XG59O1xuXG5mdW5jdGlvbiBmaXhDYXBzIChvcmlnaW5hbENhcHMsIGRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHt9LCBsb2cpIHtcbiAgbGV0IGNhcHMgPSBfLmNsb25lKG9yaWdpbmFsQ2Fwcyk7XG5cbiAgLy8gYm9vbGVhbiBjYXBhYmlsaXRpZXMgY2FuIGJlIHBhc3NlZCBpbiBhcyBzdHJpbmdzICdmYWxzZScgYW5kICd0cnVlJ1xuICAvLyB3aGljaCB3ZSB3YW50IHRvIHRyYW5zbGF0ZSBpbnRvIGJvb2xlYW4gdmFsdWVzXG4gIGxldCBib29sZWFuQ2FwcyA9IF8ua2V5cyhfLnBpY2tCeShkZXNpcmVkQ2FwQ29uc3RyYWludHMsIChrKSA9PiBrLmlzQm9vbGVhbiA9PT0gdHJ1ZSkpO1xuICBmb3IgKGxldCBjYXAgb2YgYm9vbGVhbkNhcHMpIHtcbiAgICBsZXQgdmFsdWUgPSBvcmlnaW5hbENhcHNbY2FwXTtcbiAgICBpZiAoXy5pc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJ3RydWUnIHx8IHZhbHVlID09PSAnZmFsc2UnKSB7XG4gICAgICAgIGxvZy53YXJuKGBDYXBhYmlsaXR5ICcke2NhcH0nIGNoYW5nZWQgZnJvbSBzdHJpbmcgdG8gYm9vbGVhbi4gVGhpcyBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvcmApO1xuICAgICAgICBjYXBzW2NhcF0gPSAodmFsdWUgPT09ICd0cnVlJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gaW50IGNhcGFiaWxpdGllcyBhcmUgb2Z0ZW4gc2VudCBpbiBhcyBzdHJpbmdzIGJ5IGZyYW1ld29ya3NcbiAgbGV0IGludENhcHMgPSBfLmtleXMoXy5waWNrQnkoZGVzaXJlZENhcENvbnN0cmFpbnRzLCAoaykgPT4gay5pc051bWJlciA9PT0gdHJ1ZSkpO1xuICBmb3IgKGxldCBjYXAgb2YgaW50Q2Fwcykge1xuICAgIGxldCB2YWx1ZSA9IG9yaWdpbmFsQ2Fwc1tjYXBdO1xuICAgIGlmIChfLmlzU3RyaW5nKHZhbHVlKSAmJiAhaXNOYU4odmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRyaW0oKTtcbiAgICAgIGxldCBuZXdWYWx1ZSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgICBpZiAodmFsdWUgIT09IGAke25ld1ZhbHVlfWApIHtcbiAgICAgICAgbmV3VmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGxvZy53YXJuKGBDYXBhYmlsaXR5ICcke2NhcH0nIGNoYW5nZWQgZnJvbSBzdHJpbmcgKCcke3ZhbHVlfScpIHRvIGludGVnZXIgKCR7bmV3VmFsdWV9KS4gVGhpcyBtYXkgY2F1c2UgdW5leHBlY3RlZCBiZWhhdmlvcmApO1xuICAgICAgY2Fwc1tjYXBdID0gbmV3VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNhcHM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuZXhwb3J0IHsgcHJvbW90ZUFwcGl1bU9wdGlvbnMgfTtcbiJdLCJmaWxlIjoibGliL2Jhc2Vkcml2ZXIvY29tbWFuZHMvc2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLiJ9
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
@@ -9,13 +7,11 @@ exports.default = void 0;
9
7
 
10
8
  require("source-map-support/register");
11
9
 
12
- var _logger = _interopRequireDefault(require("../logger"));
13
-
14
- let commands = {};
10
+ const commands = {};
15
11
 
16
12
  commands.updateSettings = async function updateSettings(newSettings) {
17
13
  if (!this.settings) {
18
- _logger.default.errorAndThrow('Cannot update settings; settings object not found');
14
+ this.log.errorAndThrow('Cannot update settings; settings object not found');
19
15
  }
20
16
 
21
17
  return await this.settings.update(newSettings);
@@ -23,7 +19,7 @@ commands.updateSettings = async function updateSettings(newSettings) {
23
19
 
24
20
  commands.getSettings = async function getSettings() {
25
21
  if (!this.settings) {
26
- _logger.default.errorAndThrow('Cannot get settings; settings object not found');
22
+ this.log.errorAndThrow('Cannot get settings; settings object not found');
27
23
  }
28
24
 
29
25
  return await this.settings.getSettings();
@@ -33,4 +29,4 @@ var _default = commands;
33
29
  exports.default = _default;require('source-map-support').install();
34
30
 
35
31
 
36
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL3NldHRpbmdzLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwidXBkYXRlU2V0dGluZ3MiLCJuZXdTZXR0aW5ncyIsInNldHRpbmdzIiwibG9nIiwiZXJyb3JBbmRUaHJvdyIsInVwZGF0ZSIsImdldFNldHRpbmdzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUVBLElBQUlBLFFBQVEsR0FBRyxFQUFmOztBQUVBQSxRQUFRLENBQUNDLGNBQVQsR0FBMEIsZUFBZUEsY0FBZixDQUErQkMsV0FBL0IsRUFBNEM7QUFDcEUsTUFBSSxDQUFDLEtBQUtDLFFBQVYsRUFBb0I7QUFDbEJDLG9CQUFJQyxhQUFKLENBQWtCLG1EQUFsQjtBQUNEOztBQUNELFNBQU8sTUFBTSxLQUFLRixRQUFMLENBQWNHLE1BQWQsQ0FBcUJKLFdBQXJCLENBQWI7QUFDRCxDQUxEOztBQU9BRixRQUFRLENBQUNPLFdBQVQsR0FBdUIsZUFBZUEsV0FBZixHQUE4QjtBQUNuRCxNQUFJLENBQUMsS0FBS0osUUFBVixFQUFvQjtBQUNsQkMsb0JBQUlDLGFBQUosQ0FBa0IsZ0RBQWxCO0FBQ0Q7O0FBQ0QsU0FBTyxNQUFNLEtBQUtGLFFBQUwsQ0FBY0ksV0FBZCxFQUFiO0FBQ0QsQ0FMRDs7ZUFPZVAsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcblxubGV0IGNvbW1hbmRzID0ge307XG5cbmNvbW1hbmRzLnVwZGF0ZVNldHRpbmdzID0gYXN5bmMgZnVuY3Rpb24gdXBkYXRlU2V0dGluZ3MgKG5ld1NldHRpbmdzKSB7XG4gIGlmICghdGhpcy5zZXR0aW5ncykge1xuICAgIGxvZy5lcnJvckFuZFRocm93KCdDYW5ub3QgdXBkYXRlIHNldHRpbmdzOyBzZXR0aW5ncyBvYmplY3Qgbm90IGZvdW5kJyk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXMuc2V0dGluZ3MudXBkYXRlKG5ld1NldHRpbmdzKTtcbn07XG5cbmNvbW1hbmRzLmdldFNldHRpbmdzID0gYXN5bmMgZnVuY3Rpb24gZ2V0U2V0dGluZ3MgKCkge1xuICBpZiAoIXRoaXMuc2V0dGluZ3MpIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdygnQ2Fubm90IGdldCBzZXR0aW5nczsgc2V0dGluZ3Mgb2JqZWN0IG5vdCBmb3VuZCcpO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzLnNldHRpbmdzLmdldFNldHRpbmdzKCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJmaWxlIjoibGliL2Jhc2Vkcml2ZXIvY29tbWFuZHMvc2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4ifQ==
32
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL3NldHRpbmdzLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwidXBkYXRlU2V0dGluZ3MiLCJuZXdTZXR0aW5ncyIsInNldHRpbmdzIiwibG9nIiwiZXJyb3JBbmRUaHJvdyIsInVwZGF0ZSIsImdldFNldHRpbmdzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7O0FBRUFBLFFBQVEsQ0FBQ0MsY0FBVCxHQUEwQixlQUFlQSxjQUFmLENBQStCQyxXQUEvQixFQUE0QztBQUNwRSxNQUFJLENBQUMsS0FBS0MsUUFBVixFQUFvQjtBQUNsQixTQUFLQyxHQUFMLENBQVNDLGFBQVQsQ0FBdUIsbURBQXZCO0FBQ0Q7O0FBQ0QsU0FBTyxNQUFNLEtBQUtGLFFBQUwsQ0FBY0csTUFBZCxDQUFxQkosV0FBckIsQ0FBYjtBQUNELENBTEQ7O0FBT0FGLFFBQVEsQ0FBQ08sV0FBVCxHQUF1QixlQUFlQSxXQUFmLEdBQThCO0FBQ25ELE1BQUksQ0FBQyxLQUFLSixRQUFWLEVBQW9CO0FBQ2xCLFNBQUtDLEdBQUwsQ0FBU0MsYUFBVCxDQUF1QixnREFBdkI7QUFDRDs7QUFDRCxTQUFPLE1BQU0sS0FBS0YsUUFBTCxDQUFjSSxXQUFkLEVBQWI7QUFDRCxDQUxEOztlQU9lUCxRIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbWFuZHMgPSB7fTtcblxuY29tbWFuZHMudXBkYXRlU2V0dGluZ3MgPSBhc3luYyBmdW5jdGlvbiB1cGRhdGVTZXR0aW5ncyAobmV3U2V0dGluZ3MpIHtcbiAgaWYgKCF0aGlzLnNldHRpbmdzKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnQ2Fubm90IHVwZGF0ZSBzZXR0aW5nczsgc2V0dGluZ3Mgb2JqZWN0IG5vdCBmb3VuZCcpO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzLnNldHRpbmdzLnVwZGF0ZShuZXdTZXR0aW5ncyk7XG59O1xuXG5jb21tYW5kcy5nZXRTZXR0aW5ncyA9IGFzeW5jIGZ1bmN0aW9uIGdldFNldHRpbmdzICgpIHtcbiAgaWYgKCF0aGlzLnNldHRpbmdzKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnQ2Fubm90IGdldCBzZXR0aW5nczsgc2V0dGluZ3Mgb2JqZWN0IG5vdCBmb3VuZCcpO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzLnNldHRpbmdzLmdldFNldHRpbmdzKCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJmaWxlIjoibGliL2Jhc2Vkcml2ZXIvY29tbWFuZHMvc2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4ifQ==
@@ -9,8 +9,6 @@ exports.helpers = exports.default = exports.commands = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
12
- var _logger = _interopRequireDefault(require("../logger"));
13
-
14
12
  var _asyncbox = require("asyncbox");
15
13
 
16
14
  var _lodash = _interopRequireDefault(require("lodash"));
@@ -28,7 +26,7 @@ const MIN_TIMEOUT = 0;
28
26
 
29
27
  commands.timeouts = async function timeouts(type, ms, script, pageLoad, implicit) {
30
28
  if (_support.util.hasValue(type) && _support.util.hasValue(ms)) {
31
- _logger.default.debug(`MJSONWP timeout arguments: ${JSON.stringify({
29
+ this.log.debug(`MJSONWP timeout arguments: ${JSON.stringify({
32
30
  type,
33
31
  ms
34
32
  })}}`);
@@ -55,7 +53,7 @@ commands.timeouts = async function timeouts(type, ms, script, pageLoad, implicit
55
53
  }
56
54
  }
57
55
 
58
- _logger.default.debug(`W3C timeout argument: ${JSON.stringify({
56
+ this.log.debug(`W3C timeout argument: ${JSON.stringify({
59
57
  script,
60
58
  pageLoad,
61
59
  implicit
@@ -95,11 +93,10 @@ commands.implicitWait = async function implicitWait(ms) {
95
93
 
96
94
  helpers.setImplicitWait = function setImplicitWait(ms) {
97
95
  this.implicitWaitMs = ms;
98
-
99
- _logger.default.debug(`Set implicit wait to ${ms}ms`);
96
+ this.log.debug(`Set implicit wait to ${ms}ms`);
100
97
 
101
98
  if (this.managedDrivers && this.managedDrivers.length) {
102
- _logger.default.debug('Setting implicit wait on managed drivers');
99
+ this.log.debug('Setting implicit wait on managed drivers');
103
100
 
104
101
  for (let driver of this.managedDrivers) {
105
102
  if (_lodash.default.isFunction(driver.setImplicitWait)) {
@@ -131,11 +128,10 @@ commands.newCommandTimeout = async function newCommandTimeout(ms) {
131
128
 
132
129
  helpers.setNewCommandTimeout = function setNewCommandTimeout(ms) {
133
130
  this.newCommandTimeoutMs = ms;
134
-
135
- _logger.default.debug(`Set new command timeout to ${ms}ms`);
131
+ this.log.debug(`Set new command timeout to ${ms}ms`);
136
132
 
137
133
  if (this.managedDrivers && this.managedDrivers.length) {
138
- _logger.default.debug('Setting new command timeout on managed drivers');
134
+ this.log.debug('Setting new command timeout on managed drivers');
139
135
 
140
136
  for (let driver of this.managedDrivers) {
141
137
  if (_lodash.default.isFunction(driver.setNewCommandTimeout)) {
@@ -156,15 +152,14 @@ helpers.startNewCommandTimeout = function startNewCommandTimeout() {
156
152
  this.clearNewCommandTimeout();
157
153
  if (!this.newCommandTimeoutMs) return;
158
154
  this.noCommandTimer = setTimeout(async () => {
159
- _logger.default.warn(`Shutting down because we waited ` + `${this.newCommandTimeoutMs / 1000.0} seconds for a command`);
160
-
155
+ this.log.warn(`Shutting down because we waited ` + `${this.newCommandTimeoutMs / 1000.0} seconds for a command`);
161
156
  const errorMessage = `New Command Timeout of ` + `${this.newCommandTimeoutMs / 1000.0} seconds ` + `expired. Try customizing the timeout using the ` + `'newCommandTimeout' desired capability`;
162
157
  await this.startUnexpectedShutdown(new Error(errorMessage));
163
158
  }, this.newCommandTimeoutMs);
164
159
  };
165
160
 
166
161
  helpers.implicitWaitForCondition = async function implicitWaitForCondition(condFn) {
167
- _logger.default.debug(`Waiting up to ${this.implicitWaitMs} ms for condition`);
162
+ this.log.debug(`Waiting up to ${this.implicitWaitMs} ms for condition`);
168
163
 
169
164
  let wrappedCondFn = async (...args) => {
170
165
  this.clearNewCommandTimeout();
@@ -174,7 +169,7 @@ helpers.implicitWaitForCondition = async function implicitWaitForCondition(condF
174
169
  return await (0, _asyncbox.waitForCondition)(wrappedCondFn, {
175
170
  waitMs: this.implicitWaitMs,
176
171
  intervalMs: 500,
177
- logger: _logger.default
172
+ logger: this.log
178
173
  });
179
174
  };
180
175
 
@@ -193,4 +188,4 @@ var _default = extensions;
193
188
  exports.default = _default;require('source-map-support').install();
194
189
 
195
190
 
196
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL3RpbWVvdXQuanMiXSwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsIk1JTl9USU1FT1VUIiwidGltZW91dHMiLCJ0eXBlIiwibXMiLCJzY3JpcHQiLCJwYWdlTG9hZCIsImltcGxpY2l0IiwidXRpbCIsImhhc1ZhbHVlIiwibG9nIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5IiwibmV3Q29tbWFuZFRpbWVvdXQiLCJpbXBsaWNpdFdhaXRNSlNPTldQIiwicGFnZUxvYWRUaW1lb3V0TUpTT05XUCIsInNjcmlwdFRpbWVvdXRNSlNPTldQIiwiRXJyb3IiLCJzY3JpcHRUaW1lb3V0VzNDIiwicGFnZUxvYWRUaW1lb3V0VzNDIiwiaW1wbGljaXRXYWl0VzNDIiwiZ2V0VGltZW91dHMiLCJjb21tYW5kIiwibmV3Q29tbWFuZFRpbWVvdXRNcyIsImltcGxpY2l0V2FpdE1zIiwiaW1wbGljaXRXYWl0Iiwic2V0SW1wbGljaXRXYWl0IiwicGFyc2VUaW1lb3V0QXJndW1lbnQiLCJtYW5hZ2VkRHJpdmVycyIsImxlbmd0aCIsImRyaXZlciIsIl8iLCJpc0Z1bmN0aW9uIiwiZXJyb3JzIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsInNldE5ld0NvbW1hbmRUaW1lb3V0IiwiY2xlYXJOZXdDb21tYW5kVGltZW91dCIsIm5vQ29tbWFuZFRpbWVyIiwiY2xlYXJUaW1lb3V0Iiwic3RhcnROZXdDb21tYW5kVGltZW91dCIsInNldFRpbWVvdXQiLCJ3YXJuIiwiZXJyb3JNZXNzYWdlIiwic3RhcnRVbmV4cGVjdGVkU2h1dGRvd24iLCJpbXBsaWNpdFdhaXRGb3JDb25kaXRpb24iLCJjb25kRm4iLCJ3cmFwcGVkQ29uZEZuIiwiYXJncyIsIndhaXRNcyIsImludGVydmFsTXMiLCJsb2dnZXIiLCJkdXJhdGlvbiIsInBhcnNlSW50IiwiaXNOYU4iLCJVbmtub3duRXJyb3IiLCJPYmplY3QiLCJhc3NpZ24i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QUwsQ0FBNkIsSUFBSTFCLEtBQUosQ0FBVXlCLFlBQVYsQ0FBN0IsQ0FBTjtBQUNELEdBUitCLEVBUTdCLEtBQUtuQixtQkFSd0IsQ0FBaEM7QUFTRCxDQWhCRDs7QUFrQkF6QixPQUFPLENBQUM4Qyx3QkFBUixHQUFtQyxlQUFlQSx3QkFBZixDQUF5Q0MsTUFBekMsRUFBaUQ7QUFDbEZwQyxrQkFBSUMsS0FBSixDQUFXLGlCQUFnQixLQUFLYyxjQUFlLG1CQUEvQzs7QUFDQSxNQUFJc0IsYUFBYSxHQUFHLE9BQU8sR0FBR0MsSUFBVixLQUFtQjtBQUVyQyxTQUFLWCxzQkFBTDtBQUVBLFdBQU8sTUFBTVMsTUFBTSxDQUFDLEdBQUdFLElBQUosQ0FBbkI7QUFDRCxHQUxEOztBQU1BLFNBQU8sTUFBTSxnQ0FBaUJELGFBQWpCLEVBQWdDO0FBQzNDRSxJQUFBQSxNQUFNLEVBQUUsS0FBS3hCLGNBRDhCO0FBQ2R5QixJQUFBQSxVQUFVLEVBQUUsR0FERTtBQUNHQyxJQUFBQSxNQUFNLEVBQUV6QztBQURYLEdBQWhDLENBQWI7QUFHRCxDQVhEOztBQWFBWCxPQUFPLENBQUM2QixvQkFBUixHQUErQixTQUFTQSxvQkFBVCxDQUErQnhCLEVBQS9CLEVBQW1DO0FBQ2hFLE1BQUlnRCxRQUFRLEdBQUdDLFFBQVEsQ0FBQ2pELEVBQUQsRUFBSyxFQUFMLENBQXZCOztBQUNBLE1BQUk0QixnQkFBRXNCLEtBQUYsQ0FBUUYsUUFBUixLQUFxQkEsUUFBUSxHQUFHbkQsV0FBcEMsRUFBaUQ7QUFDL0MsVUFBTSxJQUFJaUMsaUJBQU9xQixZQUFYLENBQXlCLDBCQUF5Qm5ELEVBQUcsR0FBckQsQ0FBTjtBQUNEOztBQUNELFNBQU9nRCxRQUFQO0FBQ0QsQ0FORDs7QUFRQUksTUFBTSxDQUFDQyxNQUFQLENBQWN6RCxVQUFkLEVBQTBCRixRQUExQixFQUFvQ0MsT0FBcEM7ZUFFZUMsVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICcuLi8uLi9wcm90b2NvbCc7XG5cblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb25zdCBNSU5fVElNRU9VVCA9IDA7XG5cbmNvbW1hbmRzLnRpbWVvdXRzID0gYXN5bmMgZnVuY3Rpb24gdGltZW91dHMgKHR5cGUsIG1zLCBzY3JpcHQsIHBhZ2VMb2FkLCBpbXBsaWNpdCkge1xuICBpZiAodXRpbC5oYXNWYWx1ZSh0eXBlKSAmJiB1dGlsLmhhc1ZhbHVlKG1zKSkge1xuICAgIGxvZy5kZWJ1ZyhgTUpTT05XUCB0aW1lb3V0IGFyZ3VtZW50czogJHtKU09OLnN0cmluZ2lmeSh7dHlwZSwgbXN9KX19YCk7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2NvbW1hbmQnOlxuICAgICAgICBhd2FpdCB0aGlzLm5ld0NvbW1hbmRUaW1lb3V0KG1zKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnaW1wbGljaXQnOlxuICAgICAgICBhd2FpdCB0aGlzLmltcGxpY2l0V2FpdE1KU09OV1AobXMpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdwYWdlIGxvYWQnOlxuICAgICAgICBhd2FpdCB0aGlzLnBhZ2VMb2FkVGltZW91dE1KU09OV1AobXMpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdzY3JpcHQnOlxuICAgICAgICBhd2FpdCB0aGlzLnNjcmlwdFRpbWVvdXRNSlNPTldQKG1zKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHt0eXBlfScgdHlwZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBNSlNPTldQIHRpbWVvdXRgKTtcbiAgICB9XG4gIH1cblxuICAvLyBPdGhlcndpc2UgYXNzdW1lIGl0IGlzIFczQyBwcm90b2NvbFxuICBsb2cuZGVidWcoYFczQyB0aW1lb3V0IGFyZ3VtZW50OiAke0pTT04uc3RyaW5naWZ5KHtzY3JpcHQsIHBhZ2VMb2FkLCBpbXBsaWNpdH0pfX1gKTtcbiAgaWYgKHV0aWwuaGFzVmFsdWUoc2NyaXB0KSkge1xuICAgIGF3YWl0IHRoaXMuc2NyaXB0VGltZW91dFczQyhzY3JpcHQpO1xuICB9XG4gIGlmICh1dGlsLmhhc1ZhbHVlKHBhZ2VMb2FkKSkge1xuICAgIGF3YWl0IHRoaXMucGFnZUxvYWRUaW1lb3V0VzNDKHBhZ2VMb2FkKTtcbiAgfVxuICBpZiAodXRpbC5oYXNWYWx1ZShpbXBsaWNpdCkpIHtcbiAgICBhd2FpdCB0aGlzLmltcGxpY2l0V2FpdFczQyhpbXBsaWNpdCk7XG4gIH1cbn07XG5cbmNvbW1hbmRzLmdldFRpbWVvdXRzID0gYXN5bmMgZnVuY3Rpb24gZ2V0VGltZW91dHMgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgcmV0dXJuIHtcbiAgICBjb21tYW5kOiB0aGlzLm5ld0NvbW1hbmRUaW1lb3V0TXMsXG4gICAgaW1wbGljaXQ6IHRoaXMuaW1wbGljaXRXYWl0TXMsXG4gIH07XG59O1xuXG4vLyBpbXBsaWNpdFxuY29tbWFuZHMuaW1wbGljaXRXYWl0VzNDID0gYXN5bmMgZnVuY3Rpb24gaW1wbGljaXRXYWl0VzNDIChtcykge1xuICBhd2FpdCB0aGlzLmltcGxpY2l0V2FpdChtcyk7XG59O1xuXG5jb21tYW5kcy5pbXBsaWNpdFdhaXRNSlNPTldQID0gYXN5bmMgZnVuY3Rpb24gaW1wbGljaXRXYWl0TUpTT05XUCAobXMpIHtcbiAgYXdhaXQgdGhpcy5pbXBsaWNpdFdhaXQobXMpO1xufTtcblxuY29tbWFuZHMuaW1wbGljaXRXYWl0ID0gYXN5bmMgZnVuY3Rpb24gaW1wbGljaXRXYWl0IChtcykge1xuICBhd2FpdCB0aGlzLnNldEltcGxpY2l0V2FpdCh0aGlzLnBhcnNlVGltZW91dEFyZ3VtZW50KG1zKSk7XG59O1xuXG5oZWxwZXJzLnNldEltcGxpY2l0V2FpdCA9IGZ1bmN0aW9uIHNldEltcGxpY2l0V2FpdCAobXMpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIHRoaXMuaW1wbGljaXRXYWl0TXMgPSBtcztcbiAgbG9nLmRlYnVnKGBTZXQgaW1wbGljaXQgd2FpdCB0byAke21zfW1zYCk7XG4gIGlmICh0aGlzLm1hbmFnZWREcml2ZXJzICYmIHRoaXMubWFuYWdlZERyaXZlcnMubGVuZ3RoKSB7XG4gICAgbG9nLmRlYnVnKCdTZXR0aW5nIGltcGxpY2l0IHdhaXQgb24gbWFuYWdlZCBkcml2ZXJzJyk7XG4gICAgZm9yIChsZXQgZHJpdmVyIG9mIHRoaXMubWFuYWdlZERyaXZlcnMpIHtcbiAgICAgIGlmIChfLmlzRnVuY3Rpb24oZHJpdmVyLnNldEltcGxpY2l0V2FpdCkpIHtcbiAgICAgICAgZHJpdmVyLnNldEltcGxpY2l0V2FpdChtcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG4vLyBwYWdlTG9hZFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5jb21tYW5kcy5wYWdlTG9hZFRpbWVvdXRXM0MgPSBhc3luYyBmdW5jdGlvbiBwYWdlTG9hZFRpbWVvdXRXM0MgKG1zKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCB5ZXQgZm9yIHBhZ2VMb2FkLicpO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5jb21tYW5kcy5wYWdlTG9hZFRpbWVvdXRNSlNPTldQID0gYXN5bmMgZnVuY3Rpb24gcGFnZUxvYWRUaW1lb3V0TUpTT05XUCAobXMpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcignTm90IGltcGxlbWVudGVkIHlldCBmb3IgcGFnZUxvYWQuJyk7XG59O1xuXG4vLyBzY3JpcHRcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuY29tbWFuZHMuc2NyaXB0VGltZW91dFczQyA9IGFzeW5jIGZ1bmN0aW9uIHNjcmlwdFRpbWVvdXRXM0MgKG1zKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCB5ZXQgZm9yIHNjcmlwdC4nKTtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuY29tbWFuZHMuc2NyaXB0VGltZW91dE1KU09OV1AgPSBhc3luYyBmdW5jdGlvbiBzY3JpcHRUaW1lb3V0TUpTT05XUCAobXMpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcignTm90IGltcGxlbWVudGVkIHlldCBmb3Igc2NyaXB0LicpO1xufTtcblxuLy8gY29tbWFuZFxuY29tbWFuZHMubmV3Q29tbWFuZFRpbWVvdXQgPSBhc3luYyBmdW5jdGlvbiBuZXdDb21tYW5kVGltZW91dCAobXMpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIHRoaXMuc2V0TmV3Q29tbWFuZFRpbWVvdXQodGhpcy5wYXJzZVRpbWVvdXRBcmd1bWVudChtcykpO1xufTtcblxuaGVscGVycy5zZXROZXdDb21tYW5kVGltZW91dCA9IGZ1bmN0aW9uIHNldE5ld0NvbW1hbmRUaW1lb3V0IChtcykge1xuICB0aGlzLm5ld0NvbW1hbmRUaW1lb3V0TXMgPSBtcztcbiAgbG9nLmRlYnVnKGBTZXQgbmV3IGNvbW1hbmQgdGltZW91dCB0byAke21zfW1zYCk7XG4gIGlmICh0aGlzLm1hbmFnZWREcml2ZXJzICYmIHRoaXMubWFuYWdlZERyaXZlcnMubGVuZ3RoKSB7XG4gICAgbG9nLmRlYnVnKCdTZXR0aW5nIG5ldyBjb21tYW5kIHRpbWVvdXQgb24gbWFuYWdlZCBkcml2ZXJzJyk7XG4gICAgZm9yIChsZXQgZHJpdmVyIG9mIHRoaXMubWFuYWdlZERyaXZlcnMpIHtcbiAgICAgIGlmIChfLmlzRnVuY3Rpb24oZHJpdmVyLnNldE5ld0NvbW1hbmRUaW1lb3V0KSkge1xuICAgICAgICBkcml2ZXIuc2V0TmV3Q29tbWFuZFRpbWVvdXQobXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuaGVscGVycy5jbGVhck5ld0NvbW1hbmRUaW1lb3V0ID0gZnVuY3Rpb24gY2xlYXJOZXdDb21tYW5kVGltZW91dCAoKSB7XG4gIGlmICh0aGlzLm5vQ29tbWFuZFRpbWVyKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMubm9Db21tYW5kVGltZXIpO1xuICAgIHRoaXMubm9Db21tYW5kVGltZXIgPSBudWxsO1xuICB9XG59O1xuXG5oZWxwZXJzLnN0YXJ0TmV3Q29tbWFuZFRpbWVvdXQgPSBmdW5jdGlvbiBzdGFydE5ld0NvbW1hbmRUaW1lb3V0ICgpIHtcbiAgLy8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyByb2d1ZSB0aW1lb3V0c1xuICB0aGlzLmNsZWFyTmV3Q29tbWFuZFRpbWVvdXQoKTtcblxuICAvLyBpZiBjb21tYW5kIHRpbWVvdXQgaXMgMCwgaXQgaXMgZGlzYWJsZWRcbiAgaWYgKCF0aGlzLm5ld0NvbW1hbmRUaW1lb3V0TXMpIHJldHVybjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuXG4gIHRoaXMubm9Db21tYW5kVGltZXIgPSBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICBsb2cud2FybihgU2h1dHRpbmcgZG93biBiZWNhdXNlIHdlIHdhaXRlZCBgICtcbiAgICAgICAgICAgICAgYCR7dGhpcy5uZXdDb21tYW5kVGltZW91dE1zIC8gMTAwMC4wfSBzZWNvbmRzIGZvciBhIGNvbW1hbmRgKTtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgTmV3IENvbW1hbmQgVGltZW91dCBvZiBgICtcbiAgICAgICAgICAgICAgYCR7dGhpcy5uZXdDb21tYW5kVGltZW91dE1zIC8gMTAwMC4wfSBzZWNvbmRzIGAgK1xuICAgICAgICAgICAgICBgZXhwaXJlZC4gVHJ5IGN1c3RvbWl6aW5nIHRoZSB0aW1lb3V0IHVzaW5nIHRoZSBgICtcbiAgICAgICAgICAgICAgYCduZXdDb21tYW5kVGltZW91dCcgZGVzaXJlZCBjYXBhYmlsaXR5YDtcbiAgICBhd2FpdCB0aGlzLnN0YXJ0VW5leHBlY3RlZFNodXRkb3duKG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpKTtcbiAgfSwgdGhpcy5uZXdDb21tYW5kVGltZW91dE1zKTtcbn07XG5cbmhlbHBlcnMuaW1wbGljaXRXYWl0Rm9yQ29uZGl0aW9uID0gYXN5bmMgZnVuY3Rpb24gaW1wbGljaXRXYWl0Rm9yQ29uZGl0aW9uIChjb25kRm4pIHtcbiAgbG9nLmRlYnVnKGBXYWl0aW5nIHVwIHRvICR7dGhpcy5pbXBsaWNpdFdhaXRNc30gbXMgZm9yIGNvbmRpdGlvbmApO1xuICBsZXQgd3JhcHBlZENvbmRGbiA9IGFzeW5jICguLi5hcmdzKSA9PiB7XG4gICAgLy8gcmVzZXQgY29tbWFuZCB0aW1lb3V0XG4gICAgdGhpcy5jbGVhck5ld0NvbW1hbmRUaW1lb3V0KCk7XG5cbiAgICByZXR1cm4gYXdhaXQgY29uZEZuKC4uLmFyZ3MpO1xuICB9O1xuICByZXR1cm4gYXdhaXQgd2FpdEZvckNvbmRpdGlvbih3cmFwcGVkQ29uZEZuLCB7XG4gICAgd2FpdE1zOiB0aGlzLmltcGxpY2l0V2FpdE1zLCBpbnRlcnZhbE1zOiA1MDAsIGxvZ2dlcjogbG9nXG4gIH0pO1xufTtcblxuaGVscGVycy5wYXJzZVRpbWVvdXRBcmd1bWVudCA9IGZ1bmN0aW9uIHBhcnNlVGltZW91dEFyZ3VtZW50IChtcykge1xuICBsZXQgZHVyYXRpb24gPSBwYXJzZUludChtcywgMTApO1xuICBpZiAoXy5pc05hTihkdXJhdGlvbikgfHwgZHVyYXRpb24gPCBNSU5fVElNRU9VVCkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkVycm9yKGBJbnZhbGlkIHRpbWVvdXQgdmFsdWUgJyR7bXN9J2ApO1xuICB9XG4gIHJldHVybiBkdXJhdGlvbjtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL3RpbWVvdXQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4ifQ==
191
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL3RpbWVvdXQuanMiXSwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsIk1JTl9USU1FT1VUIiwidGltZW91dHMiLCJ0eXBlIiwibXMiLCJzY3JpcHQiLCJwYWdlTG9hZCIsImltcGxpY2l0IiwidXRpbCIsImhhc1ZhbHVlIiwibG9nIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5IiwibmV3Q29tbWFuZFRpbWVvdXQiLCJpbXBsaWNpdFdhaXRNSlNPTldQIiwicGFnZUxvYWRUaW1lb3V0TUpTT05XUCIsInNjcmlwdFRpbWVvdXRNSlNPTldQIiwiRXJyb3IiLCJzY3JpcHRUaW1lb3V0VzNDIiwicGFnZUxvYWRUaW1lb3V0VzNDIiwiaW1wbGljaXRXYWl0VzNDIiwiZ2V0VGltZW91dHMiLCJjb21tYW5kIiwibmV3Q29tbWFuZFRpbWVvdXRNcyIsImltcGxpY2l0V2FpdE1zIiwiaW1wbGljaXRXYWl0Iiwic2V0SW1wbGljaXRXYWl0IiwicGFyc2VUaW1lb3V0QXJndW1lbnQiLCJtYW5hZ2VkRHJpdmVycyIsImxlbmd0aCIsImRyaXZlciIsIl8iLCJpc0Z1bmN0aW9uIiwiZXJyb3JzIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsInNldE5ld0NvbW1hbmRUaW1lb3V0IiwiY2xlYXJOZXdDb21tYW5kVGltZW91dCIsIm5vQ29tbWFuZFRpbWVyIiwiY2xlYXJUaW1lb3V0Iiwic3RhcnROZXdDb21tYW5kVGltZW91dCIsInNldFRpbWVvdXQiLCJ3YXJuIiwiZXJyb3JNZXNzYWdlIiwic3RhcnRVbmV4cGVjdGVkU2h1dGRvd24iLCJpbXBsaWNpdFdhaXRGb3JDb25kaXRpb24iLCJjb25kRm4iLCJ3cmFwcGVkQ29uZEZuIiwiYXJncyIsIndhaXRNcyIsImludGVydmFsTXMiLCJsb2dnZXIiLCJkdXJhdGlvbiIsInBhcnNlSW50IiwiaXNOYU4iLCJVbmtub3duRXJyb3IiLCJPYmplY3QiLCJhc3NpZ24i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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgd2FpdEZvckNvbmRpdGlvbiB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJy4uLy4uL3Byb3RvY29sJztcblxuXG5sZXQgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmNvbnN0IE1JTl9USU1FT1VUID0gMDtcblxuY29tbWFuZHMudGltZW91dHMgPSBhc3luYyBmdW5jdGlvbiB0aW1lb3V0cyAodHlwZSwgbXMsIHNjcmlwdCwgcGFnZUxvYWQsIGltcGxpY2l0KSB7XG4gIGlmICh1dGlsLmhhc1ZhbHVlKHR5cGUpICYmIHV0aWwuaGFzVmFsdWUobXMpKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoYE1KU09OV1AgdGltZW91dCBhcmd1bWVudHM6ICR7SlNPTi5zdHJpbmdpZnkoe3R5cGUsIG1zfSl9fWApO1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdjb21tYW5kJzpcbiAgICAgICAgYXdhaXQgdGhpcy5uZXdDb21tYW5kVGltZW91dChtcyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ2ltcGxpY2l0JzpcbiAgICAgICAgYXdhaXQgdGhpcy5pbXBsaWNpdFdhaXRNSlNPTldQKG1zKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAncGFnZSBsb2FkJzpcbiAgICAgICAgYXdhaXQgdGhpcy5wYWdlTG9hZFRpbWVvdXRNSlNPTldQKG1zKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnc2NyaXB0JzpcbiAgICAgICAgYXdhaXQgdGhpcy5zY3JpcHRUaW1lb3V0TUpTT05XUChtcyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7dHlwZX0nIHR5cGUgaXMgbm90IHN1cHBvcnRlZCBmb3IgTUpTT05XUCB0aW1lb3V0YCk7XG4gICAgfVxuICB9XG5cbiAgLy8gT3RoZXJ3aXNlIGFzc3VtZSBpdCBpcyBXM0MgcHJvdG9jb2xcbiAgdGhpcy5sb2cuZGVidWcoYFczQyB0aW1lb3V0IGFyZ3VtZW50OiAke0pTT04uc3RyaW5naWZ5KHtzY3JpcHQsIHBhZ2VMb2FkLCBpbXBsaWNpdH0pfX1gKTtcbiAgaWYgKHV0aWwuaGFzVmFsdWUoc2NyaXB0KSkge1xuICAgIGF3YWl0IHRoaXMuc2NyaXB0VGltZW91dFczQyhzY3JpcHQpO1xuICB9XG4gIGlmICh1dGlsLmhhc1ZhbHVlKHBhZ2VMb2FkKSkge1xuICAgIGF3YWl0IHRoaXMucGFnZUxvYWRUaW1lb3V0VzNDKHBhZ2VMb2FkKTtcbiAgfVxuICBpZiAodXRpbC5oYXNWYWx1ZShpbXBsaWNpdCkpIHtcbiAgICBhd2FpdCB0aGlzLmltcGxpY2l0V2FpdFczQyhpbXBsaWNpdCk7XG4gIH1cbn07XG5cbmNvbW1hbmRzLmdldFRpbWVvdXRzID0gYXN5bmMgZnVuY3Rpb24gZ2V0VGltZW91dHMgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgcmV0dXJuIHtcbiAgICBjb21tYW5kOiB0aGlzLm5ld0NvbW1hbmRUaW1lb3V0TXMsXG4gICAgaW1wbGljaXQ6IHRoaXMuaW1wbGljaXRXYWl0TXMsXG4gIH07XG59O1xuXG4vLyBpbXBsaWNpdFxuY29tbWFuZHMuaW1wbGljaXRXYWl0VzNDID0gYXN5bmMgZnVuY3Rpb24gaW1wbGljaXRXYWl0VzNDIChtcykge1xuICBhd2FpdCB0aGlzLmltcGxpY2l0V2FpdChtcyk7XG59O1xuXG5jb21tYW5kcy5pbXBsaWNpdFdhaXRNSlNPTldQID0gYXN5bmMgZnVuY3Rpb24gaW1wbGljaXRXYWl0TUpTT05XUCAobXMpIHtcbiAgYXdhaXQgdGhpcy5pbXBsaWNpdFdhaXQobXMpO1xufTtcblxuY29tbWFuZHMuaW1wbGljaXRXYWl0ID0gYXN5bmMgZnVuY3Rpb24gaW1wbGljaXRXYWl0IChtcykge1xuICBhd2FpdCB0aGlzLnNldEltcGxpY2l0V2FpdCh0aGlzLnBhcnNlVGltZW91dEFyZ3VtZW50KG1zKSk7XG59O1xuXG5oZWxwZXJzLnNldEltcGxpY2l0V2FpdCA9IGZ1bmN0aW9uIHNldEltcGxpY2l0V2FpdCAobXMpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIHRoaXMuaW1wbGljaXRXYWl0TXMgPSBtcztcbiAgdGhpcy5sb2cuZGVidWcoYFNldCBpbXBsaWNpdCB3YWl0IHRvICR7bXN9bXNgKTtcbiAgaWYgKHRoaXMubWFuYWdlZERyaXZlcnMgJiYgdGhpcy5tYW5hZ2VkRHJpdmVycy5sZW5ndGgpIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnU2V0dGluZyBpbXBsaWNpdCB3YWl0IG9uIG1hbmFnZWQgZHJpdmVycycpO1xuICAgIGZvciAobGV0IGRyaXZlciBvZiB0aGlzLm1hbmFnZWREcml2ZXJzKSB7XG4gICAgICBpZiAoXy5pc0Z1bmN0aW9uKGRyaXZlci5zZXRJbXBsaWNpdFdhaXQpKSB7XG4gICAgICAgIGRyaXZlci5zZXRJbXBsaWNpdFdhaXQobXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLy8gcGFnZUxvYWRcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuY29tbWFuZHMucGFnZUxvYWRUaW1lb3V0VzNDID0gYXN5bmMgZnVuY3Rpb24gcGFnZUxvYWRUaW1lb3V0VzNDIChtcykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCdOb3QgaW1wbGVtZW50ZWQgeWV0IGZvciBwYWdlTG9hZC4nKTtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuY29tbWFuZHMucGFnZUxvYWRUaW1lb3V0TUpTT05XUCA9IGFzeW5jIGZ1bmN0aW9uIHBhZ2VMb2FkVGltZW91dE1KU09OV1AgKG1zKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCB5ZXQgZm9yIHBhZ2VMb2FkLicpO1xufTtcblxuLy8gc2NyaXB0XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbmNvbW1hbmRzLnNjcmlwdFRpbWVvdXRXM0MgPSBhc3luYyBmdW5jdGlvbiBzY3JpcHRUaW1lb3V0VzNDIChtcykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCdOb3QgaW1wbGVtZW50ZWQgeWV0IGZvciBzY3JpcHQuJyk7XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbmNvbW1hbmRzLnNjcmlwdFRpbWVvdXRNSlNPTldQID0gYXN5bmMgZnVuY3Rpb24gc2NyaXB0VGltZW91dE1KU09OV1AgKG1zKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCB5ZXQgZm9yIHNjcmlwdC4nKTtcbn07XG5cbi8vIGNvbW1hbmRcbmNvbW1hbmRzLm5ld0NvbW1hbmRUaW1lb3V0ID0gYXN5bmMgZnVuY3Rpb24gbmV3Q29tbWFuZFRpbWVvdXQgKG1zKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICB0aGlzLnNldE5ld0NvbW1hbmRUaW1lb3V0KHRoaXMucGFyc2VUaW1lb3V0QXJndW1lbnQobXMpKTtcbn07XG5cbmhlbHBlcnMuc2V0TmV3Q29tbWFuZFRpbWVvdXQgPSBmdW5jdGlvbiBzZXROZXdDb21tYW5kVGltZW91dCAobXMpIHtcbiAgdGhpcy5uZXdDb21tYW5kVGltZW91dE1zID0gbXM7XG4gIHRoaXMubG9nLmRlYnVnKGBTZXQgbmV3IGNvbW1hbmQgdGltZW91dCB0byAke21zfW1zYCk7XG4gIGlmICh0aGlzLm1hbmFnZWREcml2ZXJzICYmIHRoaXMubWFuYWdlZERyaXZlcnMubGVuZ3RoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ1NldHRpbmcgbmV3IGNvbW1hbmQgdGltZW91dCBvbiBtYW5hZ2VkIGRyaXZlcnMnKTtcbiAgICBmb3IgKGxldCBkcml2ZXIgb2YgdGhpcy5tYW5hZ2VkRHJpdmVycykge1xuICAgICAgaWYgKF8uaXNGdW5jdGlvbihkcml2ZXIuc2V0TmV3Q29tbWFuZFRpbWVvdXQpKSB7XG4gICAgICAgIGRyaXZlci5zZXROZXdDb21tYW5kVGltZW91dChtcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5oZWxwZXJzLmNsZWFyTmV3Q29tbWFuZFRpbWVvdXQgPSBmdW5jdGlvbiBjbGVhck5ld0NvbW1hbmRUaW1lb3V0ICgpIHtcbiAgaWYgKHRoaXMubm9Db21tYW5kVGltZXIpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5ub0NvbW1hbmRUaW1lcik7XG4gICAgdGhpcy5ub0NvbW1hbmRUaW1lciA9IG51bGw7XG4gIH1cbn07XG5cbmhlbHBlcnMuc3RhcnROZXdDb21tYW5kVGltZW91dCA9IGZ1bmN0aW9uIHN0YXJ0TmV3Q29tbWFuZFRpbWVvdXQgKCkge1xuICAvLyBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHJvZ3VlIHRpbWVvdXRzXG4gIHRoaXMuY2xlYXJOZXdDb21tYW5kVGltZW91dCgpO1xuXG4gIC8vIGlmIGNvbW1hbmQgdGltZW91dCBpcyAwLCBpdCBpcyBkaXNhYmxlZFxuICBpZiAoIXRoaXMubmV3Q29tbWFuZFRpbWVvdXRNcykgcmV0dXJuOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG5cbiAgdGhpcy5ub0NvbW1hbmRUaW1lciA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgIHRoaXMubG9nLndhcm4oYFNodXR0aW5nIGRvd24gYmVjYXVzZSB3ZSB3YWl0ZWQgYCArXG4gICAgICAgICAgICAgIGAke3RoaXMubmV3Q29tbWFuZFRpbWVvdXRNcyAvIDEwMDAuMH0gc2Vjb25kcyBmb3IgYSBjb21tYW5kYCk7XG4gICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYE5ldyBDb21tYW5kIFRpbWVvdXQgb2YgYCArXG4gICAgICAgICAgICAgIGAke3RoaXMubmV3Q29tbWFuZFRpbWVvdXRNcyAvIDEwMDAuMH0gc2Vjb25kcyBgICtcbiAgICAgICAgICAgICAgYGV4cGlyZWQuIFRyeSBjdXN0b21pemluZyB0aGUgdGltZW91dCB1c2luZyB0aGUgYCArXG4gICAgICAgICAgICAgIGAnbmV3Q29tbWFuZFRpbWVvdXQnIGRlc2lyZWQgY2FwYWJpbGl0eWA7XG4gICAgYXdhaXQgdGhpcy5zdGFydFVuZXhwZWN0ZWRTaHV0ZG93bihuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKSk7XG4gIH0sIHRoaXMubmV3Q29tbWFuZFRpbWVvdXRNcyk7XG59O1xuXG5oZWxwZXJzLmltcGxpY2l0V2FpdEZvckNvbmRpdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGltcGxpY2l0V2FpdEZvckNvbmRpdGlvbiAoY29uZEZuKSB7XG4gIHRoaXMubG9nLmRlYnVnKGBXYWl0aW5nIHVwIHRvICR7dGhpcy5pbXBsaWNpdFdhaXRNc30gbXMgZm9yIGNvbmRpdGlvbmApO1xuICBsZXQgd3JhcHBlZENvbmRGbiA9IGFzeW5jICguLi5hcmdzKSA9PiB7XG4gICAgLy8gcmVzZXQgY29tbWFuZCB0aW1lb3V0XG4gICAgdGhpcy5jbGVhck5ld0NvbW1hbmRUaW1lb3V0KCk7XG5cbiAgICByZXR1cm4gYXdhaXQgY29uZEZuKC4uLmFyZ3MpO1xuICB9O1xuICByZXR1cm4gYXdhaXQgd2FpdEZvckNvbmRpdGlvbih3cmFwcGVkQ29uZEZuLCB7XG4gICAgd2FpdE1zOiB0aGlzLmltcGxpY2l0V2FpdE1zLCBpbnRlcnZhbE1zOiA1MDAsIGxvZ2dlcjogdGhpcy5sb2dcbiAgfSk7XG59O1xuXG5oZWxwZXJzLnBhcnNlVGltZW91dEFyZ3VtZW50ID0gZnVuY3Rpb24gcGFyc2VUaW1lb3V0QXJndW1lbnQgKG1zKSB7XG4gIGxldCBkdXJhdGlvbiA9IHBhcnNlSW50KG1zLCAxMCk7XG4gIGlmIChfLmlzTmFOKGR1cmF0aW9uKSB8fCBkdXJhdGlvbiA8IE1JTl9USU1FT1VUKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duRXJyb3IoYEludmFsaWQgdGltZW91dCB2YWx1ZSAnJHttc30nYCk7XG4gIH1cbiAgcmV0dXJuIGR1cmF0aW9uO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5leHBvcnQgeyBjb21tYW5kcywgaGVscGVycyB9O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJmaWxlIjoibGliL2Jhc2Vkcml2ZXIvY29tbWFuZHMvdGltZW91dC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLiJ9