appium-android-driver 5.0.13 → 5.1.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 (57) hide show
  1. package/build/index.js +2 -28
  2. package/build/lib/android-helpers.js +2 -2
  3. package/build/lib/bootstrap.js +6 -6
  4. package/build/lib/commands/actions.js +2 -2
  5. package/build/lib/commands/alert.js +6 -6
  6. package/build/lib/commands/app-management.js +27 -14
  7. package/build/lib/commands/context.js +4 -4
  8. package/build/lib/commands/element.js +2 -2
  9. package/build/lib/commands/emu-console.js +3 -3
  10. package/build/lib/commands/execute.js +5 -5
  11. package/build/lib/commands/file-actions.js +7 -7
  12. package/build/lib/commands/find.js +5 -5
  13. package/build/lib/commands/general.js +7 -7
  14. package/build/lib/commands/ime.js +3 -3
  15. package/build/lib/commands/intent.js +7 -7
  16. package/build/lib/commands/log.js +5 -5
  17. package/build/lib/commands/network.js +3 -3
  18. package/build/lib/commands/performance.js +1 -1
  19. package/build/lib/commands/recordscreen.js +2 -2
  20. package/build/lib/commands/shell.js +4 -4
  21. package/build/lib/commands/streamscreen.js +2 -2
  22. package/build/lib/commands/system-bars.js +1 -1
  23. package/build/lib/commands/touch.js +4 -4
  24. package/build/lib/driver.js +5 -5
  25. package/build/lib/logger.js +2 -2
  26. package/build/lib/uiautomator.js +2 -2
  27. package/build/lib/unlock-helpers.js +2 -2
  28. package/build/lib/webview-helpers.js +2 -2
  29. package/index.js +1 -26
  30. package/lib/android-helpers.js +1 -1
  31. package/lib/bootstrap.js +2 -2
  32. package/lib/commands/actions.js +1 -1
  33. package/lib/commands/alert.js +1 -1
  34. package/lib/commands/app-management.js +37 -17
  35. package/lib/commands/context.js +2 -2
  36. package/lib/commands/element.js +1 -1
  37. package/lib/commands/emu-console.js +1 -1
  38. package/lib/commands/execute.js +1 -1
  39. package/lib/commands/file-actions.js +2 -2
  40. package/lib/commands/find.js +2 -2
  41. package/lib/commands/general.js +2 -2
  42. package/lib/commands/ime.js +1 -1
  43. package/lib/commands/intent.js +1 -1
  44. package/lib/commands/log.js +1 -1
  45. package/lib/commands/network.js +1 -1
  46. package/lib/commands/recordscreen.js +1 -1
  47. package/lib/commands/shell.js +2 -2
  48. package/lib/commands/streamscreen.js +1 -1
  49. package/lib/commands/touch.js +2 -2
  50. package/lib/driver.js +2 -2
  51. package/lib/logger.js +1 -1
  52. package/lib/uiautomator.js +1 -1
  53. package/lib/unlock-helpers.js +1 -1
  54. package/lib/webview-helpers.js +1 -1
  55. package/package.json +6 -4
  56. package/build/lib/server.js +0 -34
  57. package/lib/server.js +0 -14
@@ -11,7 +11,7 @@ require("source-map-support/register");
11
11
 
12
12
  var _lodash = _interopRequireDefault(require("lodash"));
13
13
 
14
- var _baseDriver = require("@appium/base-driver");
14
+ var _driver = require("appium/driver");
15
15
 
16
16
  var _bluebird = _interopRequireDefault(require("bluebird"));
17
17
 
@@ -197,7 +197,7 @@ commands.toggleLocationServices = async function toggleLocationServices() {
197
197
 
198
198
  await this.toggleSetting('LOCATION_SOURCE_SETTINGS', seq);
199
199
  } else {
200
- throw new _baseDriver.errors.NotYetImplementedError();
200
+ throw new _driver.errors.NotYetImplementedError();
201
201
  }
202
202
  };
203
203
 
@@ -256,4 +256,4 @@ var _default = extensions;
256
256
  exports.default = _default;require('source-map-support').install();
257
257
 
258
258
 
259
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL25ldHdvcmsuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiQUlSUExBTkVfTU9ERV9NQVNLIiwiV0lGSV9NQVNLIiwiREFUQV9NQVNLIiwiR0VPX0VQU0lMT04iLCJOdW1iZXIiLCJNSU5fVkFMVUUiLCJnZXROZXR3b3JrQ29ubmVjdGlvbiIsImxvZyIsImluZm8iLCJhaXJwbGFuZU1vZGVPbiIsImFkYiIsImlzQWlycGxhbmVNb2RlT24iLCJjb25uZWN0aW9uIiwid2lmaU9uIiwiaXNXaWZpT24iLCJkYXRhT24iLCJpc0RhdGFPbiIsInNldE5ldHdvcmtDb25uZWN0aW9uIiwidHlwZSIsInNob3VsZEVuYWJsZUFpcnBsYW5lTW9kZSIsInNob3VsZEVuYWJsZVdpZmkiLCJzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiIsImN1cnJlbnRTdGF0ZSIsImlzQWlycGxhbmVNb2RlRW5hYmxlZCIsImlzV2lGaUVuYWJsZWQiLCJpc0RhdGFFbmFibGVkIiwid3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QiLCJzZXRBaXJwbGFuZU1vZGUiLCJicm9hZGNhc3RBaXJwbGFuZU1vZGUiLCJzZXRXaWZpU3RhdGUiLCJzZXREYXRhU3RhdGUiLCJpc0VtdWxhdG9yIiwid2lmaSIsInRvZ2dsZURhdGEiLCJkYXRhIiwic2V0V2lmaUFuZERhdGEiLCJ0b2dnbGVXaUZpIiwidG9nZ2xlRmxpZ2h0TW9kZSIsImZsaWdodE1vZGUiLCJzZXRHZW9Mb2NhdGlvbiIsImxvY2F0aW9uIiwiZ2V0R2VvTG9jYXRpb24iLCJlIiwid2FybiIsIm1lc3NhZ2UiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsImFsdGl0dWRlIiwibW9iaWxlUmVmcmVzaEdwc0NhY2hlIiwib3B0cyIsInRpbWVvdXRNcyIsInJlZnJlc2hHZW9Mb2NhdGlvbkNhY2hlIiwicGFyc2VGbG9hdCIsIktleUNvZGUiLCJVUCIsIkRPV04iLCJSSUdIVCIsIkNFTlRFUiIsInRvZ2dsZUxvY2F0aW9uU2VydmljZXMiLCJhcGkiLCJnZXRBcGlMZXZlbCIsInByb3ZpZGVycyIsImdldExvY2F0aW9uUHJvdmlkZXJzIiwiaXNHcHNFbmFibGVkIiwiaW5kZXhPZiIsInRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIiLCJzZXEiLCJwdXNoIiwia2V5ZXZlbnQiLCJ0b2dnbGVTZXR0aW5nIiwiZXJyb3JzIiwiTm90WWV0SW1wbGVtZW50ZWRFcnJvciIsInNldHRpbmciLCJwcmVLZXlTZXEiLCJfIiwiaXNOdWxsIiwib3BlblNldHRpbmdzQWN0aXZpdHkiLCJrZXkiLCJkb0tleSIsImFwcFBhY2thZ2UiLCJhcHBBY3Rpdml0eSIsImdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkiLCJ3YWl0Rm9yTm90QWN0aXZpdHkiLCJpZ24iLCJiYWNrIiwiQiIsImRlbGF5Iiwid3JhcHBlZCIsImJvb3RzdHJhcCIsImlnbm9yZVVuZXhwZWN0ZWRTaHV0ZG93biIsInJlc3RhcnQiLCJzdGFydCIsImRpc2FibGVBbmRyb2lkV2F0Y2hlcnMiLCJhY2NlcHRTc2xDZXJ0cyIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9uZXR3b3JrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb25zdCBBSVJQTEFORV9NT0RFX01BU0sgPSAwYjAwMTtcbmNvbnN0IFdJRklfTUFTSyA9IDBiMDEwO1xuY29uc3QgREFUQV9NQVNLID0gMGIxMDA7XG4vLyBUaGUgdmFsdWUgY2xvc2UgdG8gemVybywgYnV0IG5vdCB6ZXJvLCBpcyBuZWVkZWRcbi8vIHRvIHRyaWNrIEpTT04gZ2VuZXJhdGlvbiBhbmQgc2VuZCBhIGZsb2F0IHZhbHVlIGluc3RlYWQgb2YgYW4gaW50ZWdlcixcbi8vIFRoaXMgYWxsb3dzIHN0cmljdGx5LXR5cGVkIGNsaWVudHMsIGxpa2UgSmF2YSwgdG8gcHJvcGVybHlcbi8vIHBhcnNlIGl0LiBPdGhlcndpc2UgZmxvYXQgMC4wIGlzIGFsd2F5cyByZXByZXNlbnRlZCBhcyBpbnRlZ2VyIDAgaW4gSlMuXG4vLyBUaGUgdmFsdWUgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIERCTF9FUFNJTE9OIChodHRwczovL29wZW5zb3VyY2UuYXBwbGUuY29tL3NvdXJjZS9MaWJjL0xpYmMtNDk4L2luY2x1ZGUvZmxvYXQuaClcbmNvbnN0IEdFT19FUFNJTE9OID0gTnVtYmVyLk1JTl9WQUxVRTtcblxuY29tbWFuZHMuZ2V0TmV0d29ya0Nvbm5lY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBnZXROZXR3b3JrQ29ubmVjdGlvbiAoKSB7XG4gIHRoaXMubG9nLmluZm8oJ0dldHRpbmcgbmV0d29yayBjb25uZWN0aW9uJyk7XG4gIGxldCBhaXJwbGFuZU1vZGVPbiA9IGF3YWl0IHRoaXMuYWRiLmlzQWlycGxhbmVNb2RlT24oKTtcbiAgbGV0IGNvbm5lY3Rpb24gPSBhaXJwbGFuZU1vZGVPbiA/IEFJUlBMQU5FX01PREVfTUFTSyA6IDA7XG5cbiAgLy8gbm8gbmVlZCB0byBjaGVjayBhbnl0aGluZyBlbHNlIGlmIHdlIGFyZSBpbiBhaXJwbGFuZSBtb2RlXG4gIGlmICghYWlycGxhbmVNb2RlT24pIHtcbiAgICBsZXQgd2lmaU9uID0gYXdhaXQgdGhpcy5pc1dpZmlPbigpO1xuICAgIGNvbm5lY3Rpb24gfD0gKHdpZmlPbiA/IFdJRklfTUFTSyA6IDApO1xuICAgIGxldCBkYXRhT24gPSBhd2FpdCB0aGlzLmFkYi5pc0RhdGFPbigpO1xuICAgIGNvbm5lY3Rpb24gfD0gKGRhdGFPbiA/IERBVEFfTUFTSyA6IDApO1xuICB9XG5cbiAgcmV0dXJuIGNvbm5lY3Rpb247XG59O1xuXG4vKipcbiAqIGRlY291cGxpbmcgdG8gb3ZlcnJpZGUgdGhlIGJlaGF2aW91ciBpbiBvdGhlciBkcml2ZXJzIGxpa2UgVWlBdXRvbWF0b3IyLlxuICovXG5jb21tYW5kcy5pc1dpZmlPbiA9IGFzeW5jIGZ1bmN0aW9uIGlzV2lmaU9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmlzV2lmaU9uKCk7XG59O1xuXG5jb21tYW5kcy5zZXROZXR3b3JrQ29ubmVjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIHNldE5ldHdvcmtDb25uZWN0aW9uICh0eXBlKSB7XG4gIHRoaXMubG9nLmluZm8oJ1NldHRpbmcgbmV0d29yayBjb25uZWN0aW9uJyk7XG4gIC8vIGRlY29kZSB0aGUgaW5wdXRcbiAgY29uc3Qgc2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlID0gKHR5cGUgJiBBSVJQTEFORV9NT0RFX01BU0spICE9PSAwO1xuICBjb25zdCBzaG91bGRFbmFibGVXaWZpID0gKHR5cGUgJiBXSUZJX01BU0spICE9PSAwO1xuICBjb25zdCBzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiA9ICh0eXBlICYgREFUQV9NQVNLKSAhPT0gMDtcblxuICBjb25zdCBjdXJyZW50U3RhdGUgPSBhd2FpdCB0aGlzLmdldE5ldHdvcmtDb25uZWN0aW9uKCk7XG4gIGNvbnN0IGlzQWlycGxhbmVNb2RlRW5hYmxlZCA9IChjdXJyZW50U3RhdGUgJiBBSVJQTEFORV9NT0RFX01BU0spICE9PSAwO1xuICBjb25zdCBpc1dpRmlFbmFibGVkID0gKGN1cnJlbnRTdGF0ZSAmIFdJRklfTUFTSykgIT09IDA7XG4gIGNvbnN0IGlzRGF0YUVuYWJsZWQgPSAoY3VycmVudFN0YXRlICYgREFUQV9NQVNLKSAhPT0gMDtcblxuICBpZiAoc2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlICE9PSBpc0FpcnBsYW5lTW9kZUVuYWJsZWQpIHtcbiAgICBhd2FpdCB0aGlzLndyYXBCb290c3RyYXBEaXNjb25uZWN0KGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEFpcnBsYW5lTW9kZShzaG91bGRFbmFibGVBaXJwbGFuZU1vZGUpO1xuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0QWlycGxhbmVNb2RlKHNob3VsZEVuYWJsZUFpcnBsYW5lTW9kZSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgTm90IGNoYW5naW5nIGFpcnBsYW5lIG1vZGUsIHNpbmNlIGl0IGlzIGFscmVhZHkgYCArXG4gICAgICAgICAgICAgYCR7c2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJ31gKTtcbiAgfVxuXG4gIGlmIChzaG91bGRFbmFibGVXaWZpID09PSBpc1dpRmlFbmFibGVkICYmIHNob3VsZEVuYWJsZURhdGFDb25uZWN0aW9uID09PSBpc0RhdGFFbmFibGVkKSB7XG4gICAgdGhpcy5sb2cuaW5mbygnTm90IGNoYW5naW5nIGRhdGEgY29ubmVjdGlvbi9XaS1GaSBzdGF0ZXMsIHNpbmNlIHRoZXkgYXJlIGFscmVhZHkgc2V0IHRvIGV4cGVjdGVkIHZhbHVlcycpO1xuICAgIGlmIChhd2FpdCB0aGlzLmFkYi5pc0FpcnBsYW5lTW9kZU9uKCkpIHtcbiAgICAgIHJldHVybiBBSVJQTEFORV9NT0RFX01BU0sgfCBjdXJyZW50U3RhdGU7XG4gICAgfVxuICAgIHJldHVybiB+QUlSUExBTkVfTU9ERV9NQVNLICYgY3VycmVudFN0YXRlO1xuICB9XG5cbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgaWYgKHNob3VsZEVuYWJsZVdpZmkgIT09IGlzV2lGaUVuYWJsZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0V2lmaVN0YXRlKHNob3VsZEVuYWJsZVdpZmkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBOb3QgY2hhbmdpbmcgV2ktRmkgc3RhdGUsIHNpbmNlIGl0IGlzIGFscmVhZHkgYCArXG4gICAgICAgIGAke3Nob3VsZEVuYWJsZVdpZmkgPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnfWApO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRFbmFibGVBaXJwbGFuZU1vZGUpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ05vdCBjaGFuZ2luZyBkYXRhIGNvbm5lY3Rpb24gc3RhdGUsIGJlY2F1c2UgYWlycGxhbmUgbW9kZSBpcyBlbmFibGVkJyk7XG4gICAgfSBlbHNlIGlmIChzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiA9PT0gaXNEYXRhRW5hYmxlZCkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgTm90IGNoYW5naW5nIGRhdGEgY29ubmVjdGlvbiBzdGF0ZSwgc2luY2UgaXQgaXMgYWxyZWFkeSBgICtcbiAgICAgICAgYCR7c2hvdWxkRW5hYmxlRGF0YUNvbm5lY3Rpb24gPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zZXREYXRhU3RhdGUoc2hvdWxkRW5hYmxlRGF0YUNvbm5lY3Rpb24sIHRoaXMuaXNFbXVsYXRvcigpKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBhd2FpdCB0aGlzLmdldE5ldHdvcmtDb25uZWN0aW9uKCk7XG59O1xuXG4vKipcbiAqIGRlY291cGxpbmcgdG8gb3ZlcnJpZGUgYmVoYXZpb3VyIGluIG90aGVyIGRyaXZlcnMgbGlrZSBVaUF1dG9tYXRvcjIuXG4gKi9cbmNvbW1hbmRzLnNldFdpZmlTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIHNldFdpZmlTdGF0ZSAod2lmaSkge1xuICBhd2FpdCB0aGlzLmFkYi5zZXRXaWZpU3RhdGUod2lmaSwgdGhpcy5pc0VtdWxhdG9yKCkpO1xufTtcblxuY29tbWFuZHMudG9nZ2xlRGF0YSA9IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZURhdGEgKCkge1xuICBsZXQgZGF0YSA9ICEoYXdhaXQgdGhpcy5hZGIuaXNEYXRhT24oKSk7XG4gIHRoaXMubG9nLmluZm8oYFR1cm5pbmcgbmV0d29yayBkYXRhICR7ZGF0YSA/ICdvbicgOiAnb2ZmJ31gKTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2V0V2lmaUFuZERhdGEoe2RhdGF9LCB0aGlzLmlzRW11bGF0b3IoKSk7XG4gIH0pO1xufTtcblxuY29tbWFuZHMudG9nZ2xlV2lGaSA9IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZVdpRmkgKCkge1xuICBsZXQgd2lmaSA9ICEoYXdhaXQgdGhpcy5hZGIuaXNXaWZpT24oKSk7XG4gIHRoaXMubG9nLmluZm8oYFR1cm5pbmcgV2lGaSAke3dpZmkgPyAnb24nIDogJ29mZid9YCk7XG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuYWRiLnNldFdpZmlBbmREYXRhKHt3aWZpfSwgdGhpcy5pc0VtdWxhdG9yKCkpO1xuICB9KTtcbn07XG5cbmNvbW1hbmRzLnRvZ2dsZUZsaWdodE1vZGUgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVGbGlnaHRNb2RlICgpIHtcbiAgLypcbiAgICogVE9ETzogSW1wbGVtZW50IGlzUmVhbERldmljZSgpLiBUaGlzIG1ldGhvZCBmYWlscyBvblxuICAgKiByZWFsIGRldmljZXMsIGl0IHNob3VsZCB0aHJvdyBhIE5vdFlldEltcGxlbWVudGVkRXJyb3JcbiAgICovXG4gIGxldCBmbGlnaHRNb2RlID0gIShhd2FpdCB0aGlzLmFkYi5pc0FpcnBsYW5lTW9kZU9uKCkpO1xuICB0aGlzLmxvZy5pbmZvKGBUdXJuaW5nIGZsaWdodCBtb2RlICR7ZmxpZ2h0TW9kZSA/ICdvbicgOiAnb2ZmJ31gKTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2V0QWlycGxhbmVNb2RlKGZsaWdodE1vZGUpO1xuICB9KTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0QWlycGxhbmVNb2RlKGZsaWdodE1vZGUpO1xuICB9KTtcbn07XG5cbmNvbW1hbmRzLnNldEdlb0xvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0R2VvTG9jYXRpb24gKGxvY2F0aW9uKSB7XG4gIGF3YWl0IHRoaXMuYWRiLnNldEdlb0xvY2F0aW9uKGxvY2F0aW9uLCB0aGlzLmlzRW11bGF0b3IoKSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0R2VvTG9jYXRpb24oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRoaXMubG9nLndhcm4oYENvdWxkIG5vdCBnZXQgdGhlIGN1cnJlbnQgZ2VvbG9jYXRpb24gaW5mbzogJHtlLm1lc3NhZ2V9YCk7XG4gICAgdGhpcy5sb2cud2FybihgUmV0dXJuaW5nIHRoZSBkZWZhdWx0IHplcm8nZWQgdmFsdWVzYCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhdGl0dWRlOiBHRU9fRVBTSUxPTixcbiAgICAgIGxvbmdpdHVkZTogR0VPX0VQU0lMT04sXG4gICAgICBhbHRpdHVkZTogR0VPX0VQU0lMT04sXG4gICAgfTtcbiAgfVxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBHcHNDYWNoZVJlZnJlc2hPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZW91dE1zIFsyMDAwMF0gVGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kc1xuICogdG8gYmxvY2sgdW50aWwgR1BTIGNhY2hlIGlzIHJlZnJlc2hlZC4gUHJvdmlkaW5nIHplcm8gb3IgYSBuZWdhdGl2ZVxuICogdmFsdWUgdG8gaXQgc2tpcHMgd2FpdGluZyBjb21wbGV0ZWx5LlxuICovXG5cbi8qKlxuICogU2VuZHMgYW4gYXN5bmMgcmVxdWVzdCB0byByZWZyZXNoIHRoZSBHUFMgY2FjaGUuXG4gKiBUaGlzIGZlYXR1cmUgb25seSB3b3JrcyBpZiB0aGUgZGV2aWNlIHVuZGVyIHRlc3QgaGFzXG4gKiBHb29nbGUgUGxheSBTZXJ2aWNlcyBpbnN0YWxsZWQuIEluIGNhc2UgdGhlIHZhbmlsbGFcbiAqIExvY2F0aW9uTWFuYWdlciBpcyB1c2VkIHRoZSBkZXZpY2UgQVBJIGxldmVsIG11c3QgYmUgYXRcbiAqIHZlcnNpb24gMzAgKEFuZHJvaWQgUikgb3IgaGlnaGVyLlxuICpcbiAqIEBwYXJhbSB7R3BzQ2FjaGVSZWZyZXNoT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tb2JpbGVSZWZyZXNoR3BzQ2FjaGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVSZWZyZXNoR3BzQ2FjaGUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7IHRpbWVvdXRNcyB9ID0gb3B0cztcbiAgYXdhaXQgdGhpcy5hZGIucmVmcmVzaEdlb0xvY2F0aW9uQ2FjaGUodGltZW91dE1zKTtcbn07XG5cbmNvbW1hbmRzLmdldEdlb0xvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gZ2V0R2VvTG9jYXRpb24gKCkge1xuICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWx0aXR1ZGV9ID0gYXdhaXQgdGhpcy5hZGIuZ2V0R2VvTG9jYXRpb24oKTtcbiAgcmV0dXJuIHtcbiAgICBsYXRpdHVkZTogcGFyc2VGbG9hdChsYXRpdHVkZSkgfHwgR0VPX0VQU0lMT04sXG4gICAgbG9uZ2l0dWRlOiBwYXJzZUZsb2F0KGxvbmdpdHVkZSkgfHwgR0VPX0VQU0lMT04sXG4gICAgYWx0aXR1ZGU6IHBhcnNlRmxvYXQoYWx0aXR1ZGUpIHx8IEdFT19FUFNJTE9OLFxuICB9O1xufTtcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3JlZmVyZW5jZS9hbmRyb2lkL3ZpZXcvS2V5RXZlbnQuaHRtbCNLRVlDT0RFX0RQQURfQ0VOVEVSXG4vLyBpbiB0aGUgYW5kcm9pZCBkb2NzLCB0aGlzIGlzIGhvdyB0aGUga2V5Y29kZXMgYXJlIGRlZmluZWRcbmNvbnN0IEtleUNvZGUgPSB7XG4gIFVQOiAxOSxcbiAgRE9XTjogMjAsXG4gIFJJR0hUOiAyMixcbiAgQ0VOVEVSOiAyM1xufTtcbmNvbW1hbmRzLnRvZ2dsZUxvY2F0aW9uU2VydmljZXMgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVMb2NhdGlvblNlcnZpY2VzICgpIHtcbiAgdGhpcy5sb2cuaW5mbygnVG9nZ2xpbmcgbG9jYXRpb24gc2VydmljZXMnKTtcbiAgbGV0IGFwaSA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gIGlmICh0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIGxldCBwcm92aWRlcnMgPSBhd2FpdCB0aGlzLmFkYi5nZXRMb2NhdGlvblByb3ZpZGVycygpO1xuICAgIGxldCBpc0dwc0VuYWJsZWQgPSBwcm92aWRlcnMuaW5kZXhPZignZ3BzJykgIT09IC0xO1xuICAgIGF3YWl0IHRoaXMuYWRiLnRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIoIWlzR3BzRW5hYmxlZCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGFwaSA+IDE1KSB7XG4gICAgbGV0IHNlcSA9IFtLZXlDb2RlLlVQLCBLZXlDb2RlLlVQXTtcbiAgICBpZiAoYXBpID09PSAxNikge1xuICAgICAgLy8gVGhpcyB2ZXJzaW9uIG9mIEFuZHJvaWQgaGFzIGEgXCJwYXJlbnRcIiBidXR0b24gaW4gaXRzIGFjdGlvbiBiYXJcbiAgICAgIHNlcS5wdXNoKEtleUNvZGUuRE9XTik7XG4gICAgfSBlbHNlIGlmIChhcGkgPCAyOCkge1xuICAgICAgLy8gTmV3ZXIgdmVyc2lvbnMgb2YgQW5kcm9pZCBoYXZlIHRoZSB0b2dnbGUgaW4gdGhlIEFjdGlvbiBiYXJcbiAgICAgIHNlcSA9IFtLZXlDb2RlLlJJR0hULCBLZXlDb2RlLlJJR0hULCBLZXlDb2RlLlVQXTtcbiAgICAgIC8qXG4gICAgICAgKiBPbmNlIHRoZSBMb2NhdGlvbiBzZXJ2aWNlcyBzd2l0Y2ggaXMgT0ZGLCBpdCB3b24ndCByZWNlaXZlIGZvY3VzXG4gICAgICAgKiB3aGVuIGdvaW5nIGJhY2sgdG8gdGhlIExvY2F0aW9uIFNlcnZpY2VzIHNldHRpbmdzIHNjcmVlbiB1bmxlc3Mgd2VcbiAgICAgICAqIHNlbmQgYSBkdW1teSBrZXlldmVudCAoVVApICpiZWZvcmUqIG9wZW5pbmcgdGhlIHNldHRpbmdzIHNjcmVlblxuICAgICAgICovXG4gICAgICBhd2FpdCB0aGlzLmFkYi5rZXlldmVudChLZXlDb2RlLlVQKTtcbiAgICB9IGVsc2UgaWYgKGFwaSA+PSAyOCkge1xuICAgICAgLy8gRXZlbiBuZXdlciB2ZXJzaW9ucyBvZiBhbmRyb2lkIGhhdmUgdGhlIHRvZ2dsZSBpbiBhIGJhciBiZWxvdyB0aGUgYWN0aW9uIGJhclxuICAgICAgLy8gdGhpcyBtZWFucyBhIHNpbmdsZSByaWdodCBjbGljayB3aWxsIGNhdXNlIGl0IHRvIGJlIHNlbGVjdGVkLlxuICAgICAgc2VxID0gW0tleUNvZGUuUklHSFRdO1xuICAgICAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoS2V5Q29kZS5VUCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudG9nZ2xlU2V0dGluZygnTE9DQVRJT05fU09VUkNFX1NFVFRJTkdTJywgc2VxKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGVyZSdzIG5vIGdsb2JhbCBsb2NhdGlvbiBzZXJ2aWNlcyB0b2dnbGUgb24gb2xkZXIgQW5kcm9pZCB2ZXJzaW9uc1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90WWV0SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG59O1xuXG5oZWxwZXJzLnRvZ2dsZVNldHRpbmcgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVTZXR0aW5nIChzZXR0aW5nLCBwcmVLZXlTZXEpIHtcbiAgLypcbiAgICogcHJlS2V5U2VxIGlzIHRoZSBrZXlldmVudCBzZXF1ZW5jZSB0byBzZW5kIG92ZXIgQURCIGluIG9yZGVyXG4gICAqIHRvIHBvc2l0aW9uIHRoZSBjdXJzb3Igb24gdGhlIHJpZ2h0IG9wdGlvbi5cbiAgICogQnkgZGVmYXVsdCBpdCdzIFt1cCwgdXAsIGRvd25dIGJlY2F1c2Ugd2UgdXN1YWxseSB0YXJnZXQgdGhlIDFzdCBpdGVtIGluXG4gICAqIHRoZSBzY3JlZW4sIGFuZCBzb21ldGltZXMgd2hlbiBvcGVuaW5nIHNldHRpbmdzIGFjdGl2aXRpZXMgdGhlIGN1cnNvciBpc1xuICAgKiBhbHJlYWR5IHBvc2l0aW9ubmVkIG9uIHRoZSAxc3QgaXRlbSwgYnV0IHdlIGNhbid0IGtub3cgZm9yIHN1cmVcbiAgICovXG4gIGlmIChfLmlzTnVsbChwcmVLZXlTZXEpKSB7XG4gICAgcHJlS2V5U2VxID0gW0tleUNvZGUuVVAsIEtleUNvZGUuVVAsIEtleUNvZGUuRE9XTl07XG4gIH1cblxuICBhd2FpdCB0aGlzLm9wZW5TZXR0aW5nc0FjdGl2aXR5KHNldHRpbmcpO1xuXG4gIGZvciAobGV0IGtleSBvZiBwcmVLZXlTZXEpIHtcbiAgICBhd2FpdCB0aGlzLmRvS2V5KGtleSk7XG4gIH1cblxuICBsZXQge2FwcFBhY2thZ2UsIGFwcEFjdGl2aXR5fSA9IGF3YWl0IHRoaXMuYWRiLmdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkoKTtcblxuICAvKlxuICAgKiBDbGljayBhbmQgaGFuZGxlIHBvdGVudGlhbCBBREIgZGlzY29ubmVjdCB0aGF0IG9jY3VycyBvbiBvZmZpY2lhbFxuICAgKiBlbXVsYXRvciB3aGVuIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24gaXMgZGlzYWJsZWRcbiAgICovXG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuZG9LZXkoS2V5Q29kZS5DRU5URVIpO1xuICB9KTtcblxuICAvKlxuICAgKiBJbiBvbmUgcGFydGljdWxhciBjYXNlIChlbmFibGUgTG9jYXRpb24gU2VydmljZXMpLCBhIHBvcC11cCBpc1xuICAgKiBkaXNwbGF5ZWQgb24gc29tZSBwbGF0Zm9ybXMgc28gdGhlIHVzZXIgYWNjZXB0cyBvciByZWZ1c2VzIHRoYXQgR29vZ2xlXG4gICAqIGNvbGxlY3RzIGxvY2F0aW9uIGRhdGEuIFNvIHdlIHdhaXQgZm9yIHRoYXQgcG9wLXVwIHRvIG9wZW4sIGlmIGl0XG4gICAqIGRvZXNuJ3QgdGhlbiBwcm9jZWVkXG4gICAqL1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuYWRiLndhaXRGb3JOb3RBY3Rpdml0eShhcHBQYWNrYWdlLCBhcHBBY3Rpdml0eSwgNTAwMCk7XG4gICAgYXdhaXQgdGhpcy5kb0tleShLZXlDb2RlLlJJR0hUKTtcbiAgICBhd2FpdCB0aGlzLmRvS2V5KEtleUNvZGUuQ0VOVEVSKTtcbiAgICBhd2FpdCB0aGlzLmFkYi53YWl0Rm9yTm90QWN0aXZpdHkoYXBwUGFja2FnZSwgYXBwQWN0aXZpdHksIDUwMDApO1xuICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgYXdhaXQgdGhpcy5hZGIuYmFjaygpO1xufTtcblxuaGVscGVycy5kb0tleSA9IGFzeW5jIGZ1bmN0aW9uIGRvS2V5IChrZXkpIHtcbiAgLy8gVE9ETzogQ29uZmlybSB3ZSBuZWVkIHRoaXMgZGVsYXkuIFNlZW1zIHRvIHdvcmsgd2l0aG91dCBpdC5cbiAgYXdhaXQgQi5kZWxheSgyMDAwKTtcbiAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoa2V5KTtcbn07XG5cbmhlbHBlcnMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QgPSBhc3luYyBmdW5jdGlvbiB3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCAod3JhcHBlZCkge1xuICBpZiAoIXRoaXMuYm9vdHN0cmFwKSB7XG4gICAgcmV0dXJuIGF3YWl0IHdyYXBwZWQoKTtcbiAgfVxuXG4gIHRoaXMuYm9vdHN0cmFwLmlnbm9yZVVuZXhwZWN0ZWRTaHV0ZG93biA9IHRydWU7XG4gIHRyeSB7XG4gICAgYXdhaXQgd3JhcHBlZCgpO1xuICAgIGF3YWl0IHRoaXMuYWRiLnJlc3RhcnQoKTtcbiAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zdGFydCh0aGlzLm9wdHMuYXBwUGFja2FnZSwgdGhpcy5vcHRzLmRpc2FibGVBbmRyb2lkV2F0Y2hlcnMsIHRoaXMub3B0cy5hY2NlcHRTc2xDZXJ0cyk7XG4gIH0gZmluYWxseSB7XG4gICAgdGhpcy5ib290c3RyYXAuaWdub3JlVW5leHBlY3RlZFNodXRkb3duID0gZmFsc2U7XG4gIH1cbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBSUEsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVBQTdCO0FBQUEsSUFBaUNDLFVBQVUsR0FBRyxFQUE5Qzs7O0FBRUEsTUFBTUMsa0JBQWtCLEdBQUcsS0FBM0I7QUFDQSxNQUFNQyxTQUFTLEdBQUcsS0FBbEI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsS0FBbEI7QUFNQSxNQUFNQyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsU0FBM0I7O0FBRUFSLFFBQVEsQ0FBQ1Msb0JBQVQsR0FBZ0MsZUFBZUEsb0JBQWYsR0FBdUM7RUFDckUsS0FBS0MsR0FBTCxDQUFTQyxJQUFULENBQWMsNEJBQWQ7RUFDQSxJQUFJQyxjQUFjLEdBQUcsTUFBTSxLQUFLQyxHQUFMLENBQVNDLGdCQUFULEVBQTNCO0VBQ0EsSUFBSUMsVUFBVSxHQUFHSCxjQUFjLEdBQUdULGtCQUFILEdBQXdCLENBQXZEOztFQUdBLElBQUksQ0FBQ1MsY0FBTCxFQUFxQjtJQUNuQixJQUFJSSxNQUFNLEdBQUcsTUFBTSxLQUFLQyxRQUFMLEVBQW5CO0lBQ0FGLFVBQVUsSUFBS0MsTUFBTSxHQUFHWixTQUFILEdBQWUsQ0FBcEM7SUFDQSxJQUFJYyxNQUFNLEdBQUcsTUFBTSxLQUFLTCxHQUFMLENBQVNNLFFBQVQsRUFBbkI7SUFDQUos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
259
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL25ldHdvcmsuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiQUlSUExBTkVfTU9ERV9NQVNLIiwiV0lGSV9NQVNLIiwiREFUQV9NQVNLIiwiR0VPX0VQU0lMT04iLCJOdW1iZXIiLCJNSU5fVkFMVUUiLCJnZXROZXR3b3JrQ29ubmVjdGlvbiIsImxvZyIsImluZm8iLCJhaXJwbGFuZU1vZGVPbiIsImFkYiIsImlzQWlycGxhbmVNb2RlT24iLCJjb25uZWN0aW9uIiwid2lmaU9uIiwiaXNXaWZpT24iLCJkYXRhT24iLCJpc0RhdGFPbiIsInNldE5ldHdvcmtDb25uZWN0aW9uIiwidHlwZSIsInNob3VsZEVuYWJsZUFpcnBsYW5lTW9kZSIsInNob3VsZEVuYWJsZVdpZmkiLCJzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiIsImN1cnJlbnRTdGF0ZSIsImlzQWlycGxhbmVNb2RlRW5hYmxlZCIsImlzV2lGaUVuYWJsZWQiLCJpc0RhdGFFbmFibGVkIiwid3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QiLCJzZXRBaXJwbGFuZU1vZGUiLCJicm9hZGNhc3RBaXJwbGFuZU1vZGUiLCJzZXRXaWZpU3RhdGUiLCJzZXREYXRhU3RhdGUiLCJpc0VtdWxhdG9yIiwid2lmaSIsInRvZ2dsZURhdGEiLCJkYXRhIiwic2V0V2lmaUFuZERhdGEiLCJ0b2dnbGVXaUZpIiwidG9nZ2xlRmxpZ2h0TW9kZSIsImZsaWdodE1vZGUiLCJzZXRHZW9Mb2NhdGlvbiIsImxvY2F0aW9uIiwiZ2V0R2VvTG9jYXRpb24iLCJlIiwid2FybiIsIm1lc3NhZ2UiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsImFsdGl0dWRlIiwibW9iaWxlUmVmcmVzaEdwc0NhY2hlIiwib3B0cyIsInRpbWVvdXRNcyIsInJlZnJlc2hHZW9Mb2NhdGlvbkNhY2hlIiwicGFyc2VGbG9hdCIsIktleUNvZGUiLCJVUCIsIkRPV04iLCJSSUdIVCIsIkNFTlRFUiIsInRvZ2dsZUxvY2F0aW9uU2VydmljZXMiLCJhcGkiLCJnZXRBcGlMZXZlbCIsInByb3ZpZGVycyIsImdldExvY2F0aW9uUHJvdmlkZXJzIiwiaXNHcHNFbmFibGVkIiwiaW5kZXhPZiIsInRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIiLCJzZXEiLCJwdXNoIiwia2V5ZXZlbnQiLCJ0b2dnbGVTZXR0aW5nIiwiZXJyb3JzIiwiTm90WWV0SW1wbGVtZW50ZWRFcnJvciIsInNldHRpbmciLCJwcmVLZXlTZXEiLCJfIiwiaXNOdWxsIiwib3BlblNldHRpbmdzQWN0aXZpdHkiLCJrZXkiLCJkb0tleSIsImFwcFBhY2thZ2UiLCJhcHBBY3Rpdml0eSIsImdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkiLCJ3YWl0Rm9yTm90QWN0aXZpdHkiLCJpZ24iLCJiYWNrIiwiQiIsImRlbGF5Iiwid3JhcHBlZCIsImJvb3RzdHJhcCIsImlnbm9yZVVuZXhwZWN0ZWRTaHV0ZG93biIsInJlc3RhcnQiLCJzdGFydCIsImRpc2FibGVBbmRyb2lkV2F0Y2hlcnMiLCJhY2NlcHRTc2xDZXJ0cyIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9uZXR3b3JrLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb25zdCBBSVJQTEFORV9NT0RFX01BU0sgPSAwYjAwMTtcbmNvbnN0IFdJRklfTUFTSyA9IDBiMDEwO1xuY29uc3QgREFUQV9NQVNLID0gMGIxMDA7XG4vLyBUaGUgdmFsdWUgY2xvc2UgdG8gemVybywgYnV0IG5vdCB6ZXJvLCBpcyBuZWVkZWRcbi8vIHRvIHRyaWNrIEpTT04gZ2VuZXJhdGlvbiBhbmQgc2VuZCBhIGZsb2F0IHZhbHVlIGluc3RlYWQgb2YgYW4gaW50ZWdlcixcbi8vIFRoaXMgYWxsb3dzIHN0cmljdGx5LXR5cGVkIGNsaWVudHMsIGxpa2UgSmF2YSwgdG8gcHJvcGVybHlcbi8vIHBhcnNlIGl0LiBPdGhlcndpc2UgZmxvYXQgMC4wIGlzIGFsd2F5cyByZXByZXNlbnRlZCBhcyBpbnRlZ2VyIDAgaW4gSlMuXG4vLyBUaGUgdmFsdWUgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIERCTF9FUFNJTE9OIChodHRwczovL29wZW5zb3VyY2UuYXBwbGUuY29tL3NvdXJjZS9MaWJjL0xpYmMtNDk4L2luY2x1ZGUvZmxvYXQuaClcbmNvbnN0IEdFT19FUFNJTE9OID0gTnVtYmVyLk1JTl9WQUxVRTtcblxuY29tbWFuZHMuZ2V0TmV0d29ya0Nvbm5lY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBnZXROZXR3b3JrQ29ubmVjdGlvbiAoKSB7XG4gIHRoaXMubG9nLmluZm8oJ0dldHRpbmcgbmV0d29yayBjb25uZWN0aW9uJyk7XG4gIGxldCBhaXJwbGFuZU1vZGVPbiA9IGF3YWl0IHRoaXMuYWRiLmlzQWlycGxhbmVNb2RlT24oKTtcbiAgbGV0IGNvbm5lY3Rpb24gPSBhaXJwbGFuZU1vZGVPbiA/IEFJUlBMQU5FX01PREVfTUFTSyA6IDA7XG5cbiAgLy8gbm8gbmVlZCB0byBjaGVjayBhbnl0aGluZyBlbHNlIGlmIHdlIGFyZSBpbiBhaXJwbGFuZSBtb2RlXG4gIGlmICghYWlycGxhbmVNb2RlT24pIHtcbiAgICBsZXQgd2lmaU9uID0gYXdhaXQgdGhpcy5pc1dpZmlPbigpO1xuICAgIGNvbm5lY3Rpb24gfD0gKHdpZmlPbiA/IFdJRklfTUFTSyA6IDApO1xuICAgIGxldCBkYXRhT24gPSBhd2FpdCB0aGlzLmFkYi5pc0RhdGFPbigpO1xuICAgIGNvbm5lY3Rpb24gfD0gKGRhdGFPbiA/IERBVEFfTUFTSyA6IDApO1xuICB9XG5cbiAgcmV0dXJuIGNvbm5lY3Rpb247XG59O1xuXG4vKipcbiAqIGRlY291cGxpbmcgdG8gb3ZlcnJpZGUgdGhlIGJlaGF2aW91ciBpbiBvdGhlciBkcml2ZXJzIGxpa2UgVWlBdXRvbWF0b3IyLlxuICovXG5jb21tYW5kcy5pc1dpZmlPbiA9IGFzeW5jIGZ1bmN0aW9uIGlzV2lmaU9uICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmlzV2lmaU9uKCk7XG59O1xuXG5jb21tYW5kcy5zZXROZXR3b3JrQ29ubmVjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIHNldE5ldHdvcmtDb25uZWN0aW9uICh0eXBlKSB7XG4gIHRoaXMubG9nLmluZm8oJ1NldHRpbmcgbmV0d29yayBjb25uZWN0aW9uJyk7XG4gIC8vIGRlY29kZSB0aGUgaW5wdXRcbiAgY29uc3Qgc2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlID0gKHR5cGUgJiBBSVJQTEFORV9NT0RFX01BU0spICE9PSAwO1xuICBjb25zdCBzaG91bGRFbmFibGVXaWZpID0gKHR5cGUgJiBXSUZJX01BU0spICE9PSAwO1xuICBjb25zdCBzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiA9ICh0eXBlICYgREFUQV9NQVNLKSAhPT0gMDtcblxuICBjb25zdCBjdXJyZW50U3RhdGUgPSBhd2FpdCB0aGlzLmdldE5ldHdvcmtDb25uZWN0aW9uKCk7XG4gIGNvbnN0IGlzQWlycGxhbmVNb2RlRW5hYmxlZCA9IChjdXJyZW50U3RhdGUgJiBBSVJQTEFORV9NT0RFX01BU0spICE9PSAwO1xuICBjb25zdCBpc1dpRmlFbmFibGVkID0gKGN1cnJlbnRTdGF0ZSAmIFdJRklfTUFTSykgIT09IDA7XG4gIGNvbnN0IGlzRGF0YUVuYWJsZWQgPSAoY3VycmVudFN0YXRlICYgREFUQV9NQVNLKSAhPT0gMDtcblxuICBpZiAoc2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlICE9PSBpc0FpcnBsYW5lTW9kZUVuYWJsZWQpIHtcbiAgICBhd2FpdCB0aGlzLndyYXBCb290c3RyYXBEaXNjb25uZWN0KGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEFpcnBsYW5lTW9kZShzaG91bGRFbmFibGVBaXJwbGFuZU1vZGUpO1xuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0QWlycGxhbmVNb2RlKHNob3VsZEVuYWJsZUFpcnBsYW5lTW9kZSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgTm90IGNoYW5naW5nIGFpcnBsYW5lIG1vZGUsIHNpbmNlIGl0IGlzIGFscmVhZHkgYCArXG4gICAgICAgICAgICAgYCR7c2hvdWxkRW5hYmxlQWlycGxhbmVNb2RlID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJ31gKTtcbiAgfVxuXG4gIGlmIChzaG91bGRFbmFibGVXaWZpID09PSBpc1dpRmlFbmFibGVkICYmIHNob3VsZEVuYWJsZURhdGFDb25uZWN0aW9uID09PSBpc0RhdGFFbmFibGVkKSB7XG4gICAgdGhpcy5sb2cuaW5mbygnTm90IGNoYW5naW5nIGRhdGEgY29ubmVjdGlvbi9XaS1GaSBzdGF0ZXMsIHNpbmNlIHRoZXkgYXJlIGFscmVhZHkgc2V0IHRvIGV4cGVjdGVkIHZhbHVlcycpO1xuICAgIGlmIChhd2FpdCB0aGlzLmFkYi5pc0FpcnBsYW5lTW9kZU9uKCkpIHtcbiAgICAgIHJldHVybiBBSVJQTEFORV9NT0RFX01BU0sgfCBjdXJyZW50U3RhdGU7XG4gICAgfVxuICAgIHJldHVybiB+QUlSUExBTkVfTU9ERV9NQVNLICYgY3VycmVudFN0YXRlO1xuICB9XG5cbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgaWYgKHNob3VsZEVuYWJsZVdpZmkgIT09IGlzV2lGaUVuYWJsZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0V2lmaVN0YXRlKHNob3VsZEVuYWJsZVdpZmkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBOb3QgY2hhbmdpbmcgV2ktRmkgc3RhdGUsIHNpbmNlIGl0IGlzIGFscmVhZHkgYCArXG4gICAgICAgIGAke3Nob3VsZEVuYWJsZVdpZmkgPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnfWApO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRFbmFibGVBaXJwbGFuZU1vZGUpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ05vdCBjaGFuZ2luZyBkYXRhIGNvbm5lY3Rpb24gc3RhdGUsIGJlY2F1c2UgYWlycGxhbmUgbW9kZSBpcyBlbmFibGVkJyk7XG4gICAgfSBlbHNlIGlmIChzaG91bGRFbmFibGVEYXRhQ29ubmVjdGlvbiA9PT0gaXNEYXRhRW5hYmxlZCkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgTm90IGNoYW5naW5nIGRhdGEgY29ubmVjdGlvbiBzdGF0ZSwgc2luY2UgaXQgaXMgYWxyZWFkeSBgICtcbiAgICAgICAgYCR7c2hvdWxkRW5hYmxlRGF0YUNvbm5lY3Rpb24gPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zZXREYXRhU3RhdGUoc2hvdWxkRW5hYmxlRGF0YUNvbm5lY3Rpb24sIHRoaXMuaXNFbXVsYXRvcigpKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBhd2FpdCB0aGlzLmdldE5ldHdvcmtDb25uZWN0aW9uKCk7XG59O1xuXG4vKipcbiAqIGRlY291cGxpbmcgdG8gb3ZlcnJpZGUgYmVoYXZpb3VyIGluIG90aGVyIGRyaXZlcnMgbGlrZSBVaUF1dG9tYXRvcjIuXG4gKi9cbmNvbW1hbmRzLnNldFdpZmlTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIHNldFdpZmlTdGF0ZSAod2lmaSkge1xuICBhd2FpdCB0aGlzLmFkYi5zZXRXaWZpU3RhdGUod2lmaSwgdGhpcy5pc0VtdWxhdG9yKCkpO1xufTtcblxuY29tbWFuZHMudG9nZ2xlRGF0YSA9IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZURhdGEgKCkge1xuICBsZXQgZGF0YSA9ICEoYXdhaXQgdGhpcy5hZGIuaXNEYXRhT24oKSk7XG4gIHRoaXMubG9nLmluZm8oYFR1cm5pbmcgbmV0d29yayBkYXRhICR7ZGF0YSA/ICdvbicgOiAnb2ZmJ31gKTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2V0V2lmaUFuZERhdGEoe2RhdGF9LCB0aGlzLmlzRW11bGF0b3IoKSk7XG4gIH0pO1xufTtcblxuY29tbWFuZHMudG9nZ2xlV2lGaSA9IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZVdpRmkgKCkge1xuICBsZXQgd2lmaSA9ICEoYXdhaXQgdGhpcy5hZGIuaXNXaWZpT24oKSk7XG4gIHRoaXMubG9nLmluZm8oYFR1cm5pbmcgV2lGaSAke3dpZmkgPyAnb24nIDogJ29mZid9YCk7XG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuYWRiLnNldFdpZmlBbmREYXRhKHt3aWZpfSwgdGhpcy5pc0VtdWxhdG9yKCkpO1xuICB9KTtcbn07XG5cbmNvbW1hbmRzLnRvZ2dsZUZsaWdodE1vZGUgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVGbGlnaHRNb2RlICgpIHtcbiAgLypcbiAgICogVE9ETzogSW1wbGVtZW50IGlzUmVhbERldmljZSgpLiBUaGlzIG1ldGhvZCBmYWlscyBvblxuICAgKiByZWFsIGRldmljZXMsIGl0IHNob3VsZCB0aHJvdyBhIE5vdFlldEltcGxlbWVudGVkRXJyb3JcbiAgICovXG4gIGxldCBmbGlnaHRNb2RlID0gIShhd2FpdCB0aGlzLmFkYi5pc0FpcnBsYW5lTW9kZU9uKCkpO1xuICB0aGlzLmxvZy5pbmZvKGBUdXJuaW5nIGZsaWdodCBtb2RlICR7ZmxpZ2h0TW9kZSA/ICdvbicgOiAnb2ZmJ31gKTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2V0QWlycGxhbmVNb2RlKGZsaWdodE1vZGUpO1xuICB9KTtcbiAgYXdhaXQgdGhpcy53cmFwQm9vdHN0cmFwRGlzY29ubmVjdChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0QWlycGxhbmVNb2RlKGZsaWdodE1vZGUpO1xuICB9KTtcbn07XG5cbmNvbW1hbmRzLnNldEdlb0xvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gc2V0R2VvTG9jYXRpb24gKGxvY2F0aW9uKSB7XG4gIGF3YWl0IHRoaXMuYWRiLnNldEdlb0xvY2F0aW9uKGxvY2F0aW9uLCB0aGlzLmlzRW11bGF0b3IoKSk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0R2VvTG9jYXRpb24oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRoaXMubG9nLndhcm4oYENvdWxkIG5vdCBnZXQgdGhlIGN1cnJlbnQgZ2VvbG9jYXRpb24gaW5mbzogJHtlLm1lc3NhZ2V9YCk7XG4gICAgdGhpcy5sb2cud2FybihgUmV0dXJuaW5nIHRoZSBkZWZhdWx0IHplcm8nZWQgdmFsdWVzYCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhdGl0dWRlOiBHRU9fRVBTSUxPTixcbiAgICAgIGxvbmdpdHVkZTogR0VPX0VQU0lMT04sXG4gICAgICBhbHRpdHVkZTogR0VPX0VQU0lMT04sXG4gICAgfTtcbiAgfVxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBHcHNDYWNoZVJlZnJlc2hPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gdGltZW91dE1zIFsyMDAwMF0gVGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kc1xuICogdG8gYmxvY2sgdW50aWwgR1BTIGNhY2hlIGlzIHJlZnJlc2hlZC4gUHJvdmlkaW5nIHplcm8gb3IgYSBuZWdhdGl2ZVxuICogdmFsdWUgdG8gaXQgc2tpcHMgd2FpdGluZyBjb21wbGV0ZWx5LlxuICovXG5cbi8qKlxuICogU2VuZHMgYW4gYXN5bmMgcmVxdWVzdCB0byByZWZyZXNoIHRoZSBHUFMgY2FjaGUuXG4gKiBUaGlzIGZlYXR1cmUgb25seSB3b3JrcyBpZiB0aGUgZGV2aWNlIHVuZGVyIHRlc3QgaGFzXG4gKiBHb29nbGUgUGxheSBTZXJ2aWNlcyBpbnN0YWxsZWQuIEluIGNhc2UgdGhlIHZhbmlsbGFcbiAqIExvY2F0aW9uTWFuYWdlciBpcyB1c2VkIHRoZSBkZXZpY2UgQVBJIGxldmVsIG11c3QgYmUgYXRcbiAqIHZlcnNpb24gMzAgKEFuZHJvaWQgUikgb3IgaGlnaGVyLlxuICpcbiAqIEBwYXJhbSB7R3BzQ2FjaGVSZWZyZXNoT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tb2JpbGVSZWZyZXNoR3BzQ2FjaGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVSZWZyZXNoR3BzQ2FjaGUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7IHRpbWVvdXRNcyB9ID0gb3B0cztcbiAgYXdhaXQgdGhpcy5hZGIucmVmcmVzaEdlb0xvY2F0aW9uQ2FjaGUodGltZW91dE1zKTtcbn07XG5cbmNvbW1hbmRzLmdldEdlb0xvY2F0aW9uID0gYXN5bmMgZnVuY3Rpb24gZ2V0R2VvTG9jYXRpb24gKCkge1xuICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWx0aXR1ZGV9ID0gYXdhaXQgdGhpcy5hZGIuZ2V0R2VvTG9jYXRpb24oKTtcbiAgcmV0dXJuIHtcbiAgICBsYXRpdHVkZTogcGFyc2VGbG9hdChsYXRpdHVkZSkgfHwgR0VPX0VQU0lMT04sXG4gICAgbG9uZ2l0dWRlOiBwYXJzZUZsb2F0KGxvbmdpdHVkZSkgfHwgR0VPX0VQU0lMT04sXG4gICAgYWx0aXR1ZGU6IHBhcnNlRmxvYXQoYWx0aXR1ZGUpIHx8IEdFT19FUFNJTE9OLFxuICB9O1xufTtcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3JlZmVyZW5jZS9hbmRyb2lkL3ZpZXcvS2V5RXZlbnQuaHRtbCNLRVlDT0RFX0RQQURfQ0VOVEVSXG4vLyBpbiB0aGUgYW5kcm9pZCBkb2NzLCB0aGlzIGlzIGhvdyB0aGUga2V5Y29kZXMgYXJlIGRlZmluZWRcbmNvbnN0IEtleUNvZGUgPSB7XG4gIFVQOiAxOSxcbiAgRE9XTjogMjAsXG4gIFJJR0hUOiAyMixcbiAgQ0VOVEVSOiAyM1xufTtcbmNvbW1hbmRzLnRvZ2dsZUxvY2F0aW9uU2VydmljZXMgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVMb2NhdGlvblNlcnZpY2VzICgpIHtcbiAgdGhpcy5sb2cuaW5mbygnVG9nZ2xpbmcgbG9jYXRpb24gc2VydmljZXMnKTtcbiAgbGV0IGFwaSA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gIGlmICh0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgIGxldCBwcm92aWRlcnMgPSBhd2FpdCB0aGlzLmFkYi5nZXRMb2NhdGlvblByb3ZpZGVycygpO1xuICAgIGxldCBpc0dwc0VuYWJsZWQgPSBwcm92aWRlcnMuaW5kZXhPZignZ3BzJykgIT09IC0xO1xuICAgIGF3YWl0IHRoaXMuYWRiLnRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIoIWlzR3BzRW5hYmxlZCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGFwaSA+IDE1KSB7XG4gICAgbGV0IHNlcSA9IFtLZXlDb2RlLlVQLCBLZXlDb2RlLlVQXTtcbiAgICBpZiAoYXBpID09PSAxNikge1xuICAgICAgLy8gVGhpcyB2ZXJzaW9uIG9mIEFuZHJvaWQgaGFzIGEgXCJwYXJlbnRcIiBidXR0b24gaW4gaXRzIGFjdGlvbiBiYXJcbiAgICAgIHNlcS5wdXNoKEtleUNvZGUuRE9XTik7XG4gICAgfSBlbHNlIGlmIChhcGkgPCAyOCkge1xuICAgICAgLy8gTmV3ZXIgdmVyc2lvbnMgb2YgQW5kcm9pZCBoYXZlIHRoZSB0b2dnbGUgaW4gdGhlIEFjdGlvbiBiYXJcbiAgICAgIHNlcSA9IFtLZXlDb2RlLlJJR0hULCBLZXlDb2RlLlJJR0hULCBLZXlDb2RlLlVQXTtcbiAgICAgIC8qXG4gICAgICAgKiBPbmNlIHRoZSBMb2NhdGlvbiBzZXJ2aWNlcyBzd2l0Y2ggaXMgT0ZGLCBpdCB3b24ndCByZWNlaXZlIGZvY3VzXG4gICAgICAgKiB3aGVuIGdvaW5nIGJhY2sgdG8gdGhlIExvY2F0aW9uIFNlcnZpY2VzIHNldHRpbmdzIHNjcmVlbiB1bmxlc3Mgd2VcbiAgICAgICAqIHNlbmQgYSBkdW1teSBrZXlldmVudCAoVVApICpiZWZvcmUqIG9wZW5pbmcgdGhlIHNldHRpbmdzIHNjcmVlblxuICAgICAgICovXG4gICAgICBhd2FpdCB0aGlzLmFkYi5rZXlldmVudChLZXlDb2RlLlVQKTtcbiAgICB9IGVsc2UgaWYgKGFwaSA+PSAyOCkge1xuICAgICAgLy8gRXZlbiBuZXdlciB2ZXJzaW9ucyBvZiBhbmRyb2lkIGhhdmUgdGhlIHRvZ2dsZSBpbiBhIGJhciBiZWxvdyB0aGUgYWN0aW9uIGJhclxuICAgICAgLy8gdGhpcyBtZWFucyBhIHNpbmdsZSByaWdodCBjbGljayB3aWxsIGNhdXNlIGl0IHRvIGJlIHNlbGVjdGVkLlxuICAgICAgc2VxID0gW0tleUNvZGUuUklHSFRdO1xuICAgICAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoS2V5Q29kZS5VUCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudG9nZ2xlU2V0dGluZygnTE9DQVRJT05fU09VUkNFX1NFVFRJTkdTJywgc2VxKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGVyZSdzIG5vIGdsb2JhbCBsb2NhdGlvbiBzZXJ2aWNlcyB0b2dnbGUgb24gb2xkZXIgQW5kcm9pZCB2ZXJzaW9uc1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90WWV0SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG59O1xuXG5oZWxwZXJzLnRvZ2dsZVNldHRpbmcgPSBhc3luYyBmdW5jdGlvbiB0b2dnbGVTZXR0aW5nIChzZXR0aW5nLCBwcmVLZXlTZXEpIHtcbiAgLypcbiAgICogcHJlS2V5U2VxIGlzIHRoZSBrZXlldmVudCBzZXF1ZW5jZSB0byBzZW5kIG92ZXIgQURCIGluIG9yZGVyXG4gICAqIHRvIHBvc2l0aW9uIHRoZSBjdXJzb3Igb24gdGhlIHJpZ2h0IG9wdGlvbi5cbiAgICogQnkgZGVmYXVsdCBpdCdzIFt1cCwgdXAsIGRvd25dIGJlY2F1c2Ugd2UgdXN1YWxseSB0YXJnZXQgdGhlIDFzdCBpdGVtIGluXG4gICAqIHRoZSBzY3JlZW4sIGFuZCBzb21ldGltZXMgd2hlbiBvcGVuaW5nIHNldHRpbmdzIGFjdGl2aXRpZXMgdGhlIGN1cnNvciBpc1xuICAgKiBhbHJlYWR5IHBvc2l0aW9ubmVkIG9uIHRoZSAxc3QgaXRlbSwgYnV0IHdlIGNhbid0IGtub3cgZm9yIHN1cmVcbiAgICovXG4gIGlmIChfLmlzTnVsbChwcmVLZXlTZXEpKSB7XG4gICAgcHJlS2V5U2VxID0gW0tleUNvZGUuVVAsIEtleUNvZGUuVVAsIEtleUNvZGUuRE9XTl07XG4gIH1cblxuICBhd2FpdCB0aGlzLm9wZW5TZXR0aW5nc0FjdGl2aXR5KHNldHRpbmcpO1xuXG4gIGZvciAobGV0IGtleSBvZiBwcmVLZXlTZXEpIHtcbiAgICBhd2FpdCB0aGlzLmRvS2V5KGtleSk7XG4gIH1cblxuICBsZXQge2FwcFBhY2thZ2UsIGFwcEFjdGl2aXR5fSA9IGF3YWl0IHRoaXMuYWRiLmdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkoKTtcblxuICAvKlxuICAgKiBDbGljayBhbmQgaGFuZGxlIHBvdGVudGlhbCBBREIgZGlzY29ubmVjdCB0aGF0IG9jY3VycyBvbiBvZmZpY2lhbFxuICAgKiBlbXVsYXRvciB3aGVuIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24gaXMgZGlzYWJsZWRcbiAgICovXG4gIGF3YWl0IHRoaXMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QoYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuZG9LZXkoS2V5Q29kZS5DRU5URVIpO1xuICB9KTtcblxuICAvKlxuICAgKiBJbiBvbmUgcGFydGljdWxhciBjYXNlIChlbmFibGUgTG9jYXRpb24gU2VydmljZXMpLCBhIHBvcC11cCBpc1xuICAgKiBkaXNwbGF5ZWQgb24gc29tZSBwbGF0Zm9ybXMgc28gdGhlIHVzZXIgYWNjZXB0cyBvciByZWZ1c2VzIHRoYXQgR29vZ2xlXG4gICAqIGNvbGxlY3RzIGxvY2F0aW9uIGRhdGEuIFNvIHdlIHdhaXQgZm9yIHRoYXQgcG9wLXVwIHRvIG9wZW4sIGlmIGl0XG4gICAqIGRvZXNuJ3QgdGhlbiBwcm9jZWVkXG4gICAqL1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuYWRiLndhaXRGb3JOb3RBY3Rpdml0eShhcHBQYWNrYWdlLCBhcHBBY3Rpdml0eSwgNTAwMCk7XG4gICAgYXdhaXQgdGhpcy5kb0tleShLZXlDb2RlLlJJR0hUKTtcbiAgICBhd2FpdCB0aGlzLmRvS2V5KEtleUNvZGUuQ0VOVEVSKTtcbiAgICBhd2FpdCB0aGlzLmFkYi53YWl0Rm9yTm90QWN0aXZpdHkoYXBwUGFja2FnZSwgYXBwQWN0aXZpdHksIDUwMDApO1xuICB9IGNhdGNoIChpZ24pIHt9XG5cbiAgYXdhaXQgdGhpcy5hZGIuYmFjaygpO1xufTtcblxuaGVscGVycy5kb0tleSA9IGFzeW5jIGZ1bmN0aW9uIGRvS2V5IChrZXkpIHtcbiAgLy8gVE9ETzogQ29uZmlybSB3ZSBuZWVkIHRoaXMgZGVsYXkuIFNlZW1zIHRvIHdvcmsgd2l0aG91dCBpdC5cbiAgYXdhaXQgQi5kZWxheSgyMDAwKTtcbiAgYXdhaXQgdGhpcy5hZGIua2V5ZXZlbnQoa2V5KTtcbn07XG5cbmhlbHBlcnMud3JhcEJvb3RzdHJhcERpc2Nvbm5lY3QgPSBhc3luYyBmdW5jdGlvbiB3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCAod3JhcHBlZCkge1xuICBpZiAoIXRoaXMuYm9vdHN0cmFwKSB7XG4gICAgcmV0dXJuIGF3YWl0IHdyYXBwZWQoKTtcbiAgfVxuXG4gIHRoaXMuYm9vdHN0cmFwLmlnbm9yZVVuZXhwZWN0ZWRTaHV0ZG93biA9IHRydWU7XG4gIHRyeSB7XG4gICAgYXdhaXQgd3JhcHBlZCgpO1xuICAgIGF3YWl0IHRoaXMuYWRiLnJlc3RhcnQoKTtcbiAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zdGFydCh0aGlzLm9wdHMuYXBwUGFja2FnZSwgdGhpcy5vcHRzLmRpc2FibGVBbmRyb2lkV2F0Y2hlcnMsIHRoaXMub3B0cy5hY2NlcHRTc2xDZXJ0cyk7XG4gIH0gZmluYWxseSB7XG4gICAgdGhpcy5ib290c3RyYXAuaWdub3JlVW5leHBlY3RlZFNodXRkb3duID0gZmFsc2U7XG4gIH1cbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBSUEsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVBQTdCO0FBQUEsSUFBaUNDLFVBQVUsR0FBRyxFQUE5Qzs7O0FBRUEsTUFBTUMsa0JBQWtCLEdBQUcsS0FBM0I7QUFDQSxNQUFNQyxTQUFTLEdBQUcsS0FBbEI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsS0FBbEI7QUFNQSxNQUFNQyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsU0FBM0I7O0FBRUFSLFFBQVEsQ0FBQ1Msb0JBQVQsR0FBZ0MsZUFBZUEsb0JBQWYsR0FBdUM7RUFDckUsS0FBS0MsR0FBTCxDQUFTQyxJQUFULENBQWMsNEJBQWQ7RUFDQSxJQUFJQyxjQUFjLEdBQUcsTUFBTSxLQUFLQyxHQUFMLENBQVNDLGdCQUFULEVBQTNCO0VBQ0EsSUFBSUMsVUFBVSxHQUFHSCxjQUFjLEdBQUdULGtCQUFILEdBQXdCLENBQXZEOztFQUdBLElBQUksQ0FBQ1MsY0FBTCxFQUFxQjtJQUNuQixJQUFJSSxNQUFNLEdBQUcsTUFBTSxLQUFLQyxRQUFMLEVBQW5CO0lBQ0FGLFVBQVUsSUFBS0MsTUFBTSxHQUFHWixTQUFILEdBQWUsQ0FBcEM7SUFDQSxJQUFJYyxNQUFNLEdBQUcsTUFBTSxLQUFLTCxHQUFMLENBQVNNLFFBQVQsRUFBbkI7SUFDQUosVUFBVSxJ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
@@ -326,4 +326,4 @@ var _default = extensions;
326
326
  exports.default = _default;require('source-map-support').install();
327
327
 
328
328
 
329
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3BlcmZvcm1hbmNlLmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsIk5FVFdPUktfS0VZUyIsIkNQVV9LRVlTIiwiQkFUVEVSWV9LRVlTIiwiTUVNT1JZX0tFWVMiLCJTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFUyIsIk9iamVjdCIsImZyZWV6ZSIsImNwdWluZm8iLCJtZW1vcnlpbmZvIiwiYmF0dGVyeWluZm8iLCJuZXR3b3JraW5mbyIsIk1FTUlORk9fVElUTEVTIiwiTkFUSVZFIiwiREFMVklLIiwiRUdMIiwiR0wiLCJNVFJBQ0siLCJUT1RBTCIsIkhFQVAiLCJSRVRSWV9QQVVTRV9NUyIsInBhcnNlTWVtaW5mb0ZvckFwaTE5VG8yOSIsImVudHJpZXMiLCJ2YWxEaWN0IiwidHlwZSIsInN1YlR5cGUiLCJuYXRpdmVQc3MiLCJuYXRpdmVQcml2YXRlRGlydHkiLCJuYXRpdmVIZWFwU2l6ZSIsIm5hdGl2ZUhlYXBBbGxvY2F0ZWRTaXplIiwiZGFsdmlrUHNzIiwiZGFsdmlrUHJpdmF0ZURpcnR5IiwiZWdsUHNzIiwiZWdsUHJpdmF0ZURpcnR5IiwiZ2xQc3MiLCJnbFByaXZhdGVEaXJ0eSIsImxlbmd0aCIsInRvdGFsUHNzIiwidG90YWxQcml2YXRlRGlydHkiLCJwYXJzZU1lbWluZm9Gb3JBcGlCZWxvdzE5IiwicGFyc2VNZW1pbmZvRm9yQXBpQWJvdmUyOSIsIm5hdGl2ZVJzcyIsImRhbHZpa1JzcyIsInRvdGFsUnNzIiwiZ2V0UGVyZm9ybWFuY2VEYXRhVHlwZXMiLCJfIiwia2V5cyIsImdldFBlcmZvcm1hbmNlRGF0YSIsInBhY2thZ2VOYW1lIiwiZGF0YVR5cGUiLCJyZXRyaWVzIiwidG9Mb3dlciIsImdldEJhdHRlcnlJbmZvIiwiZ2V0Q1BVSW5mbyIsImdldE1lbW9yeUluZm8iLCJnZXROZXR3b3JrVHJhZmZpY0luZm8iLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJvdXRwdXQiLCJhZGIiLCJzaGVsbCIsImUiLCJzdGRlcnIiLCJsb2ciLCJpbmZvIiwidXNhZ2VzUGF0dGVybiIsIlJlZ0V4cCIsImVzY2FwZVJlZ0V4cCIsIm1hdGNoIiwiZXhlYyIsImRlYnVnIiwiY21kIiwiZGF0YSIsInBvd2VyIiwicGFyc2VJbnQiLCJzcGxpdCIsInRyaW0iLCJOdW1iZXIiLCJpc05hTiIsImNsb25lIiwidG9TdHJpbmciLCJhcGlMZXZlbCIsImdldEFwaUxldmVsIiwibGluZSIsImZpbHRlciIsIkJvb2xlYW4iLCJoZWFkZXJzIiwidmFsdWVzIiwibWFwIiwiaGVhZGVyIiwicmV0dXJuVmFsdWUiLCJidWNrZXREdXJhdGlvbiIsImJ1Y2tldFN0YXJ0IiwiYWN0aXZlVGltZSIsInJ4Qnl0ZXMiLCJyeFBhY2tldHMiLCJ0eEJ5dGVzIiwidHhQYWNrZXRzIiwib3BlcmF0aW9ucyIsImluZGV4IiwiZnJvbVh0c3RhdHMiLCJpbmRleE9mIiwic3RhcnQiLCJkZWxpbWl0ZXIiLCJlbmQiLCJwZW5kaW5nQnl0ZXMiLCJzdWJzdHJpbmciLCJhcnJheUxpc3QiLCJqIiwiayIsInJldHVybkluZGV4IiwiaSIsImlzRXF1YWwiLCJpc1VuZGVmaW5lZCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9wZXJmb3JtYW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcblxuY29uc3QgY29tbWFuZHMgPSB7fSwgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbmNvbnN0IE5FVFdPUktfS0VZUyA9IFtcbiAgWydidWNrZXRTdGFydCcsICdhY3RpdmVUaW1lJywgJ3J4Qnl0ZXMnLCAncnhQYWNrZXRzJywgJ3R4Qnl0ZXMnLCAndHhQYWNrZXRzJywgJ29wZXJhdGlvbnMnLCAnYnVja2V0RHVyYXRpb24nXSxcbiAgWydzdCcsICdhY3RpdmVUaW1lJywgJ3JiJywgJ3JwJywgJ3RiJywgJ3RwJywgJ29wJywgJ2J1Y2tldER1cmF0aW9uJ11cbl07XG5jb25zdCBDUFVfS0VZUyA9IFsndXNlcicsICdrZXJuZWwnXTtcbmNvbnN0IEJBVFRFUllfS0VZUyA9IFsncG93ZXInXTtcbmNvbnN0IE1FTU9SWV9LRVlTID0gW1xuICAndG90YWxQcml2YXRlRGlydHknLCAnbmF0aXZlUHJpdmF0ZURpcnR5JywgJ2RhbHZpa1ByaXZhdGVEaXJ0eScsXG4gICdlZ2xQcml2YXRlRGlydHknLCAnZ2xQcml2YXRlRGlydHknLFxuICAndG90YWxQc3MnLCAnbmF0aXZlUHNzJywgJ2RhbHZpa1BzcycsICdlZ2xQc3MnLCAnZ2xQc3MnLFxuICAnbmF0aXZlSGVhcEFsbG9jYXRlZFNpemUnLCAnbmF0aXZlSGVhcFNpemUnLFxuICAnbmF0aXZlUnNzJywgJ2RhbHZpa1JzcycsICd0b3RhbFJzcydcbl07XG5jb25zdCBTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFUyA9IE9iamVjdC5mcmVlemUoe1xuICBjcHVpbmZvOiAndGhlIGFtb3VudCBvZiBjcHUgYnkgdXNlciBhbmQga2VybmVsIHByb2Nlc3MgLSBjcHUgaW5mb3JtYXRpb24gZm9yIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZXMgYW5kIHNpbXVsYXRvcnMnLFxuICBtZW1vcnlpbmZvOiAndGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBieSB0aGUgcHJvY2VzcyAtIG1lbW9yeSBpbmZvcm1hdGlvbiBmb3IgYXBwbGljYXRpb25zIG9uIHJlYWwgZGV2aWNlcyBhbmQgc2ltdWxhdG9ycycsXG4gIGJhdHRlcnlpbmZvOiAndGhlIHJlbWFpbmluZyBiYXR0ZXJ5IHBvd2VyIC0gYmF0dGVyeSBwb3dlciBpbmZvcm1hdGlvbiBmb3IgYXBwbGljYXRpb25zIG9uIHJlYWwgZGV2aWNlcyBhbmQgc2ltdWxhdG9ycycsXG4gIG5ldHdvcmtpbmZvOiAndGhlIG5ldHdvcmsgc3RhdGlzdGljcyAtIG5ldHdvcmsgcngvdHggaW5mb3JtYXRpb24gZm9yIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZXMgYW5kIHNpbXVsYXRvcnMnXG59KTtcbmNvbnN0IE1FTUlORk9fVElUTEVTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIE5BVElWRTogJ05hdGl2ZScsXG4gIERBTFZJSzogJ0RhbHZpaycsXG4gIEVHTDogJ0VHTCcsXG4gIEdMOiAnR0wnLFxuICBNVFJBQ0s6ICdtdHJhY2snLFxuICBUT1RBTDogJ1RPVEFMJyxcbiAgSEVBUDogJ0hlYXAnXG59KTtcbmNvbnN0IFJFVFJZX1BBVVNFX01TID0gMTAwMDtcblxuLyoqXG4gKiBBUEkgbGV2ZWwgYmV0d2VlbiAxOCBhbmQgMzBcbiAqIFsnPFN5c3RlbSBUeXBlPicsICc8TWVtb3J5IFR5cGU+JywgPHBzcyB0b3RhbD4sIDxwcml2YXRlIGRpcnR5PiwgPHByaXZhdGUgY2xlYW4+LCA8c3dhcFBzcyBkaXJ0eT4sIDxoZWFwIHNpemU+LCA8aGVhcCBhbGxvYz4sIDxoZWFwIGZyZWU+XVxuICogZXhjZXB0ICdUT1RBTCcsIHdoaWNoIHNraXBzIHRoZSBzZWNvbmQgdHlwZSBuYW1lXG4gKiAhISEgdmFsRGljdCBnZXRzIG11dGF0ZWRcbiAqL1xuZnVuY3Rpb24gcGFyc2VNZW1pbmZvRm9yQXBpMTlUbzI5IChlbnRyaWVzLCB2YWxEaWN0KSB7XG4gIGNvbnN0IFt0eXBlLCBzdWJUeXBlXSA9IGVudHJpZXM7XG4gIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5OQVRJVkUgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuSEVBUCkge1xuICAgIFssLCB2YWxEaWN0Lm5hdGl2ZVBzcywgdmFsRGljdC5uYXRpdmVQcml2YXRlRGlydHksLCwgdmFsRGljdC5uYXRpdmVIZWFwU2l6ZSwgdmFsRGljdC5uYXRpdmVIZWFwQWxsb2NhdGVkU2l6ZV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkRBTFZJSyAmJiBzdWJUeXBlID09PSBNRU1JTkZPX1RJVExFUy5IRUFQKSB7XG4gICAgWywsIHZhbERpY3QuZGFsdmlrUHNzLCB2YWxEaWN0LmRhbHZpa1ByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkVHTCAmJiBzdWJUeXBlID09PSBNRU1JTkZPX1RJVExFUy5NVFJBQ0spIHtcbiAgICBbLCwgdmFsRGljdC5lZ2xQc3MsIHZhbERpY3QuZWdsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuR0wgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTVRSQUNLKSB7XG4gICAgWywsIHZhbERpY3QuZ2xQc3MsIHZhbERpY3QuZ2xQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5UT1RBTCAmJiBlbnRyaWVzLmxlbmd0aCA9PT0gOCkge1xuICAgIC8vIHRoZXJlIGFyZSB0d28gdG90YWxzLCBhbmQgd2Ugb25seSB3YW50IHRoZSBmdWxsIGxpc3RpbmcsIHdoaWNoIGhhcyA4IGVudHJpZXNcbiAgICBbLCB2YWxEaWN0LnRvdGFsUHNzLCB2YWxEaWN0LnRvdGFsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH1cbn1cblxuLyoqXG4gKiBbJzxTeXN0ZW0gVHlwZScsICc8cHBzPicsICc8c2hhcmVkIGRpcnR5PicsICc8cHJpdmF0ZSBkaXJ0eT4nLCAnPGhlYXAgc2l6ZT4nLCAnPGhlYXAgYWxsb2M+JywgJzxoZWFwIGZyZWU+J11cbiAqICEhISB2YWxEaWN0IGdldHMgbXV0YXRlZFxuICovXG5mdW5jdGlvbiBwYXJzZU1lbWluZm9Gb3JBcGlCZWxvdzE5IChlbnRyaWVzLCB2YWxEaWN0KSB7XG4gIGNvbnN0IHR5cGUgPSBlbnRyaWVzWzBdO1xuICBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTkFUSVZFKSB7XG4gICAgWywgdmFsRGljdC5uYXRpdmVQc3MsLCB2YWxEaWN0Lm5hdGl2ZVByaXZhdGVEaXJ0eSwgdmFsRGljdC5uYXRpdmVIZWFwU2l6ZSwgdmFsRGljdC5uYXRpdmVIZWFwQWxsb2NhdGVkU2l6ZV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkRBTFZJSykge1xuICAgIFssIHZhbERpY3QuZGFsdmlrUHNzLCwgdmFsRGljdC5kYWx2aWtQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5FR0wpIHtcbiAgICBbLCB2YWxEaWN0LmVnbFBzcywsIHZhbERpY3QuZWdsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuR0wpIHtcbiAgICBbLCB2YWxEaWN0LmdsUHNzLCwgdmFsRGljdC5nbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLlRPVEFMKSB7XG4gICAgWywgdmFsRGljdC50b3RhbFBzcywsIHZhbERpY3QudG90YWxQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfVxufVxuXG4vKipcbiAqIEFQSSBsZXZlbCAzMCBhbmQgYWJvdmVcbiAqIFsnPFN5c3RlbSBUeXBlPicsICc8TWVtb3J5IFR5cGU+JywgPHBzcyB0b3RhbD4sIDxwcml2YXRlIGRpcnR5PiwgPHByaXZhdGUgY2xlYW4+LCA8c3dhcFBzcyBkaXJ0eT4sIDxyc3MgdG90YWw+LCA8aGVhcCBzaXplPiwgPGhlYXAgYWxsb2M+LCA8aGVhcCBmcmVlPl1cbiAqICEhISB2YWxEaWN0IGdldHMgbXV0YXRlZFxuICovXG5mdW5jdGlvbiBwYXJzZU1lbWluZm9Gb3JBcGlBYm92ZTI5IChlbnRyaWVzLCB2YWxEaWN0KSB7XG4gIGNvbnN0IFt0eXBlLCBzdWJUeXBlXSA9IGVudHJpZXM7XG4gIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5OQVRJVkUgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuSEVBUCkge1xuICAgIFssLCB2YWxEaWN0Lm5hdGl2ZVBzcywgdmFsRGljdC5uYXRpdmVQcml2YXRlRGlydHksLCwgdmFsRGljdC5uYXRpdmVSc3MsIHZhbERpY3QubmF0aXZlSGVhcFNpemUsIHZhbERpY3QubmF0aXZlSGVhcEFsbG9jYXRlZFNpemVdID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5EQUxWSUsgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuSEVBUCkge1xuICAgIFssLCB2YWxEaWN0LmRhbHZpa1BzcywgdmFsRGljdC5kYWx2aWtQcml2YXRlRGlydHksLCwgdmFsRGljdC5kYWx2aWtSc3NdID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5FR0wgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTVRSQUNLKSB7XG4gICAgWywsIHZhbERpY3QuZWdsUHNzLCB2YWxEaWN0LmVnbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkdMICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLk1UUkFDSykge1xuICAgIFssLCB2YWxEaWN0LmdsUHNzLCB2YWxEaWN0LmdsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuVE9UQUwgJiYgZW50cmllcy5sZW5ndGggPT09IDkpIHtcbiAgICAvLyBoYXMgOSBlbnRyaWVzXG4gICAgWywgdmFsRGljdC50b3RhbFBzcywgdmFsRGljdC50b3RhbFByaXZhdGVEaXJ0eSwsLCB2YWxEaWN0LnRvdGFsUnNzXSA9IGVudHJpZXM7XG4gIH1cbn1cblxuLy9cbi8vIHJldHVybnMgdGhlIGluZm9ybWF0aW9uIHR5cGUgb2YgdGhlIHN5c3RlbSBzdGF0ZSB3aGljaCBpcyBzdXBwb3J0ZWQgdG8gcmVhZCBhcyBsaWtlIGNwdSwgbWVtb3J5LCBuZXR3b3JrIHRyYWZmaWMsIGFuZCBiYXR0ZXJ5LlxuLy8gb3V0cHV0IC0gYXJyYXkgbGlrZSBiZWxvd1xuLy8gW2NwdWluZm8sIGJhdHRlcnlpbmZvLCBuZXR3b3JraW5mbywgbWVtb3J5aW5mb11cbi8vXG5jb21tYW5kcy5nZXRQZXJmb3JtYW5jZURhdGFUeXBlcyA9IGZ1bmN0aW9uIGdldFBlcmZvcm1hbmNlRGF0YVR5cGVzICgpIHtcbiAgcmV0dXJuIF8ua2V5cyhTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFUyk7XG59O1xuXG4vKipcbiAqIEByZXR1cm5zIFRoZSBpbmZvcm1hdGlvbiB0eXBlIG9mIHRoZSBzeXN0ZW0gc3RhdGUgd2hpY2ggaXMgc3VwcG9ydGVkIHRvIHJlYWQgYXMgbGlrZSBjcHUsIG1lbW9yeSwgbmV0d29yayB0cmFmZmljLCBhbmQgYmF0dGVyeS5cbiAqIGlucHV0IC0gKHBhY2thZ2VOYW1lKSB0aGUgcGFja2FnZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvblxuICogICAgICAgIChkYXRhVHlwZSkgdGhlIHR5cGUgb2Ygc3lzdGVtIHN0YXRlIHdoaWNoIHdhbnRzIHRvIHJlYWQuIEl0IHNob3VsZCBiZSBvbmUgb2YgdGhlIGtleXMgb2YgdGhlIFNVUFBPUlRFRF9QRVJGT1JNQU5DRV9EQVRBX1RZUEVTXG4gKiAgICAgICAgKGRhdGFSZWFkVGltZW91dCkgdGhlIG51bWJlciBvZiBhdHRlbXB0cyB0byByZWFkXG4gKiBvdXRwdXQgLSB0YWJsZSBvZiB0aGUgcGVyZm9ybWFuY2UgZGF0YSwgVGhlIGZpcnN0IGxpbmUgb2YgdGhlIHRhYmxlIHJlcHJlc2VudHMgdGhlIHR5cGUgb2YgZGF0YS4gVGhlIHJlbWFpbmluZyBsaW5lcyByZXByZXNlbnQgdGhlIHZhbHVlcyBvZiB0aGUgZGF0YS5cbiAqXG4gKiBpbiBjYXNlIG9mIGJhdHRlcnkgaW5mbyA6IFtbcG93ZXJdLCBbMjNdXVxuICogaW4gY2FzZSBvZiBtZW1vcnkgaW5mbyA6ICBbW3RvdGFsUHJpdmF0ZURpcnR5LCBuYXRpdmVQcml2YXRlRGlydHksIGRhbHZpa1ByaXZhdGVEaXJ0eSwgZWdsUHJpdmF0ZURpcnR5LCBnbFByaXZhdGVEaXJ0eSwgdG90YWxQc3MsXG4gKiAgIG5hdGl2ZVBzcywgZGFsdmlrUHNzLCBlZ2xQc3MsIGdsUHNzLCBuYXRpdmVIZWFwQWxsb2NhdGVkU2l6ZSwgbmF0aXZlSGVhcFNpemVdLCBbMTgzNjAsIDgyOTYsIDYxMzIsIG51bGwsIG51bGwsIDQyNTg4LCA4NDA2LCA3MDI0LCBudWxsLCBudWxsLCAyNjUxOSwgMTAzNDRdXVxuICogaW4gY2FzZSBvZiBuZXR3b3JrIGluZm8gOiBbW2J1Y2tldFN0YXJ0LCBhY3RpdmVUaW1lLCByeEJ5dGVzLCByeFBhY2tldHMsIHR4Qnl0ZXMsIHR4UGFja2V0cywgb3BlcmF0aW9ucywgYnVja2V0RHVyYXRpb24sXSxcbiAqICAgWzE0NzgwOTE2MDAwMDAsIG51bGwsIDEwOTkwNzUsIDYxMDk0NywgOTI4LCAxMTQzNjIsIDc2OSwgMCwgMzYwMDAwMF0sIFsxNDc4MDk1MjAwMDAwLCBudWxsLCAxMzA2MzAwLCA0MDU5OTcsIDUwOSwgNDYzNTksIDM3MCwgMCwgMzYwMDAwMF1dXG4gKiBpbiBjYXNlIG9mIG5ldHdvcmsgaW5mbyA6IFtbc3QsIGFjdGl2ZVRpbWUsIHJiLCBycCwgdGIsIHRwLCBvcCwgYnVja2V0RHVyYXRpb25dLCBbMTQ3ODA4ODAwMCwgbnVsbCwgbnVsbCwgMzIxMTUyOTYsIDM0MjkxLCAyOTU2ODA1LCAyNTcwNSwgMCwgMzYwMF0sXG4gKiAgIFsxNDc4MDkxNjAwLCBudWxsLCBudWxsLCAyNzE0NjgzLCAxMTgyMSwgMTQyMDU2NCwgMTI2NTAsIDAsIDM2MDBdLCBbMTQ3ODA5NTIwMCwgbnVsbCwgbnVsbCwgMTAwNzkyMTMsIDE5OTYyLCAyNDg3NzA1LCAyMDAxNSwgMCwgMzYwMF0sXG4gKiAgIFsxNDc4MDk4ODAwLCBudWxsLCBudWxsLCA0NDQ0NDMzLCAxMDIyNywgMTQzMDM1NiwgMTA0OTMsIDAsIDM2MDBdXVxuICogaW4gY2FzZSBvZiBjcHUgaW5mbyA6IFtbdXNlciwga2VybmVsXSwgWzAuOSwgMS4zXV1cbiAqL1xuY29tbWFuZHMuZ2V0UGVyZm9ybWFuY2VEYXRhID0gYXN5bmMgZnVuY3Rpb24gZ2V0UGVyZm9ybWFuY2VEYXRhIChwYWNrYWdlTmFtZSwgZGF0YVR5cGUsIHJldHJpZXMgPSAyKSB7XG4gIHN3aXRjaCAoXy50b0xvd2VyKGRhdGFUeXBlKSkge1xuICAgIGNhc2UgJ2JhdHRlcnlpbmZvJzpcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEJhdHRlcnlJbmZvKHJldHJpZXMpO1xuICAgIGNhc2UgJ2NwdWluZm8nOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Q1BVSW5mbyhwYWNrYWdlTmFtZSwgcmV0cmllcyk7XG4gICAgY2FzZSAnbWVtb3J5aW5mbyc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRNZW1vcnlJbmZvKHBhY2thZ2VOYW1lLCByZXRyaWVzKTtcbiAgICBjYXNlICduZXR3b3JraW5mbyc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXROZXR3b3JrVHJhZmZpY0luZm8ocmV0cmllcyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gcGVyZm9ybWFuY2UgZGF0YSBvZiB0eXBlICcke2RhdGFUeXBlfScgZm91bmQuIGAgK1xuICAgICAgICBgT25seSB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgc3VwcG9ydGVkOiAke0pTT04uc3RyaW5naWZ5KFNVUFBPUlRFRF9QRVJGT1JNQU5DRV9EQVRBX1RZUEVTLCAnICcsIDIpfWApO1xuICB9XG59O1xuXG5oZWxwZXJzLmdldENQVUluZm8gPSBhc3luYyBmdW5jdGlvbiBnZXRDUFVJbmZvIChwYWNrYWdlTmFtZSwgcmV0cmllcyA9IDIpIHtcbiAgLy8gVE9ETzogZmlndXJlIG91dCB3aHkgdGhpcyBpc1xuICAvLyBzb21ldGltZXMsIHRoZSBmdW5jdGlvbiBvZiAnYWRiLnNoZWxsJyBmYWlscy4gd2hlbiBJIHRlc3RlZCB0aGlzIGZ1bmN0aW9uIG9uIHRoZSB0YXJnZXQgb2YgJ0dhbGF4eSBOb3RlNScsXG4gIC8vIGFkYi5zaGVsbChkdW1wc3lzIGNwdWluZm8pIHJldHVybnMgY3B1IGRhdGFzIGZvciBvdGhlciBhcHBsaWNhdGlvbiBwYWNrYWdlcywgYnV0IEkgY2FuJ3QgZmluZCB0aGUgZGF0YSBmb3IgcGFja2FnZU5hbWUuXG4gIC8vIEl0IHVzdWFsbHkgZmFpbHMgMzAgdGltZXMgYW5kIHN1Y2Nlc3MgZm9yIHRoZSBuZXh0IHRpbWUsXG4gIC8vIFNpbmNlIHRoZW4sIGhlIGhhcyBjb250aW51ZWQgdG8gc3VjY2VlZC5cbiAgcmV0dXJuIGF3YWl0IHJldHJ5SW50ZXJ2YWwocmV0cmllcywgUkVUUllfUEFVU0VfTVMsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgb3V0cHV0O1xuICAgIHRyeSB7XG4gICAgICBvdXRwdXQgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ2R1bXBzeXMnLCAnY3B1aW5mbyddKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5zdGRlcnIpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhlLnN0ZGVycik7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICAvLyBgb3V0cHV0YCB3aWxsIGJlIHNvbWV0aGluZyBsaWtlXG4gICAgLy8gICAgKzAlIDIyMDkvaW8uYXBwaXVtLmFuZHJvaWQuYXBpczogMC4xJSB1c2VyICsgMC4yJSBrZXJuZWwgLyBmYXVsdHM6IDcwIG1pbm9yXG4gICAgY29uc3QgdXNhZ2VzUGF0dGVybiA9XG4gICAgICBuZXcgUmVnRXhwKGBeLitcXFxcLyR7Xy5lc2NhcGVSZWdFeHAocGFja2FnZU5hbWUpfTpcXFxcRCsoW1xcXFxkLl0rKSVcXFxccyt1c2VyXFxcXHMrXFxcXCtcXFxccysoW1xcXFxkLl0rKSVcXFxccytrZXJuZWxgLCAnbScpO1xuICAgIGNvbnN0IG1hdGNoID0gdXNhZ2VzUGF0dGVybi5leGVjKG91dHB1dCk7XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhpcy5sb2cuZGVidWcob3V0cHV0KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIGNwdSB1c2FnZSBkYXRhIGZvciAnJHtwYWNrYWdlTmFtZX0nLiBDaGVjayB0aGUgc2VydmVyIGxvZyBmb3IgbW9yZSBkZXRhaWxzYCk7XG4gICAgfVxuICAgIHJldHVybiBbQ1BVX0tFWVMsIFttYXRjaFsxXSwgbWF0Y2hbMl1dXTtcbiAgfSk7XG59O1xuXG5oZWxwZXJzLmdldEJhdHRlcnlJbmZvID0gYXN5bmMgZnVuY3Rpb24gZ2V0QmF0dGVyeUluZm8gKHJldHJpZXMgPSAyKSB7XG4gIHJldHVybiBhd2FpdCByZXRyeUludGVydmFsKHJldHJpZXMsIFJFVFJZX1BBVVNFX01TLCBhc3luYyAoKSA9PiB7XG4gICAgbGV0IGNtZCA9IFsnZHVtcHN5cycsICdiYXR0ZXJ5JywgJ3wnLCAnZ3JlcCcsICdsZXZlbCddO1xuICAgIGxldCBkYXRhID0gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbiAgICBpZiAoIWRhdGEpIHRocm93IG5ldyBFcnJvcignTm8gZGF0YSBmcm9tIGR1bXBzeXMnKTsgLy9lc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG5cbiAgICBsZXQgcG93ZXIgPSBwYXJzZUludCgoZGF0YS5zcGxpdCgnOicpWzFdIHx8ICcnKS50cmltKCksIDEwKTtcblxuICAgIGlmICghTnVtYmVyLmlzTmFOKHBvd2VyKSkge1xuICAgICAgcmV0dXJuIFtfLmNsb25lKEJBVFRFUllfS0VZUyksIFtwb3dlci50b1N0cmluZygpXV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIGJhdHRlcnkgZGF0YTogJyR7ZGF0YX0nYCk7XG4gICAgfVxuICB9KTtcbn07XG5cbmhlbHBlcnMuZ2V0TWVtb3J5SW5mbyA9IGFzeW5jIGZ1bmN0aW9uIGdldE1lbW9yeUluZm8gKHBhY2thZ2VOYW1lLCByZXRyaWVzID0gMikge1xuICByZXR1cm4gYXdhaXQgcmV0cnlJbnRlcnZhbChyZXRyaWVzLCBSRVRSWV9QQVVTRV9NUywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNtZCA9IFtcbiAgICAgICdkdW1wc3lzJywgJ21lbWluZm8nLCBgJyR7cGFja2FnZU5hbWV9J2AsXG4gICAgICAnfCcsICdncmVwJywgJy1FJyxcbiAgICAgIGAnJHtNRU1JTkZPX1RJVExFUy5OQVRJVkV9fCR7TUVNSU5GT19USVRMRVMuREFMVklLfXwke01FTUlORk9fVElUTEVTLkVHTH1gICtcbiAgICAgIGB8JHtNRU1JTkZPX1RJVExFUy5HTH18JHtNRU1JTkZPX1RJVExFUy5UT1RBTH0nYFxuICAgIF07XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGRhdGEgZnJvbSBkdW1wc3lzJyk7XG4gICAgfVxuICAgIGNvbnN0IHZhbERpY3QgPSB7dG90YWxQcml2YXRlRGlydHk6ICcnfTtcbiAgICBjb25zdCBhcGlMZXZlbCA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGRhdGEuc3BsaXQoJ1xcbicpKSB7XG4gICAgICBjb25zdCBlbnRyaWVzID0gbGluZS50cmltKCkuc3BsaXQoL1xccysvKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICBpZiAoYXBpTGV2ZWwgPj0gMzApIHtcbiAgICAgICAgcGFyc2VNZW1pbmZvRm9yQXBpQWJvdmUyOShlbnRyaWVzLCB2YWxEaWN0KTtcbiAgICAgIH0gZWxzZSBpZiAoYXBpTGV2ZWwgPiAxOCAmJiBhcGlMZXZlbCA8IDMwKSB7XG4gICAgICAgIHBhcnNlTWVtaW5mb0ZvckFwaTE5VG8yOShlbnRyaWVzLCB2YWxEaWN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlTWVtaW5mb0ZvckFwaUJlbG93MTkoZW50cmllcywgdmFsRGljdCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2YWxEaWN0LnRvdGFsUHJpdmF0ZURpcnR5ICYmIHZhbERpY3QudG90YWxQcml2YXRlRGlydHkgIT09ICdub2RleCcpIHtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBfLmNsb25lKE1FTU9SWV9LRVlTKTtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IGhlYWRlcnMubWFwKChoZWFkZXIpID0+IHZhbERpY3RbaGVhZGVyXSk7XG4gICAgICByZXR1cm4gW2hlYWRlcnMsIHZhbHVlc107XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgbWVtb3J5IGRhdGE6ICcke2RhdGF9J2ApO1xuICB9KTtcbn07XG5cbmhlbHBlcnMuZ2V0TmV0d29ya1RyYWZmaWNJbmZvID0gYXN5bmMgZnVuY3Rpb24gZ2V0TmV0d29ya1RyYWZmaWNJbmZvIChyZXRyaWVzID0gMikge1xuICByZXR1cm4gYXdhaXQgcmV0cnlJbnRlcnZhbChyZXRyaWVzLCBSRVRSWV9QQVVTRV9NUywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCByZXR1cm5WYWx1ZSA9IFtdO1xuICAgIGxldCBidWNrZXREdXJhdGlvbiwgYnVja2V0U3RhcnQsIGFjdGl2ZVRpbWUsIHJ4Qnl0ZXMsIHJ4UGFja2V0cywgdHhCeXRlcywgdHhQYWNrZXRzLCBvcGVyYXRpb25zO1xuXG4gICAgbGV0IGNtZCA9IFsnZHVtcHN5cycsICduZXRzdGF0cyddO1xuICAgIGxldCBkYXRhID0gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbiAgICBpZiAoIWRhdGEpIHRocm93IG5ldyBFcnJvcignTm8gZGF0YSBmcm9tIGR1bXBzeXMnKTsgLy9lc2xpbnQtZGlzYWJsZS1saW5lIGN1cmx5XG5cbiAgICAvLyBJbiBjYXNlIG9mIG5ldHdvcmsgdHJhZmZpYyBpbmZvcm1hdGlvbiwgaXQgaXMgZGlmZmVyZW50IGZvciB0aGUgcmV0dXJuIGRhdGEgYmV0d2VlbiBlbXVsYXRvciBhbmQgcmVhbCBkZXZpY2UuXG4gICAgLy8gdGhlIHJldHVybiBkYXRhIG9mIGVtdWxhdG9yXG4gICAgLy8gICBYdCBzdGF0czpcbiAgICAvLyAgIFBlbmRpbmcgYnl0ZXM6IDM5MjUwXG4gICAgLy8gICBIaXN0b3J5IHNpbmNlIGJvb3Q6XG4gICAgLy8gICBpZGVudD1bW3R5cGU9V0lGSSwgc3ViVHlwZT1DT01CSU5FRCwgbmV0d29ya0lkPVwiV2lyZWRTU0lEXCJdXSB1aWQ9LTEgc2V0PUFMTCB0YWc9MHgwXG4gICAgLy8gICBOZXR3b3JrU3RhdHNIaXN0b3J5OiBidWNrZXREdXJhdGlvbj0zNjAwMDAwXG4gICAgLy8gICBidWNrZXRTdGFydD0xNDc4MDk4ODAwMDAwIGFjdGl2ZVRpbWU9MzE4MjQgcnhCeXRlcz0yMTUwMiByeFBhY2tldHM9NzggdHhCeXRlcz0xNzc0OCB0eFBhY2tldHM9OTAgb3BlcmF0aW9ucz0wXG4gICAgLy9cbiAgICAvLyA3LjFcbiAgICAvLyAgIFh0IHN0YXRzOlxuICAgIC8vICAgUGVuZGluZyBieXRlczogNDgxNDg3XG4gICAgLy8gICBIaXN0b3J5IHNpbmNlIGJvb3Q6XG4gICAgLy8gICBpZGVudD1be3R5cGU9TU9CSUxFLCBzdWJUeXBlPUNPTUJJTkVELCBzdWJzY3JpYmVySWQ9MzEwMjYwLi4uLCBtZXRlcmVkPXRydWV9XSB1aWQ9LTEgc2V0PUFMTCB0YWc9MHgwXG4gICAgLy8gICAgIE5ldHdvcmtTdGF0c0hpc3Rvcnk6IGJ1Y2tldER1cmF0aW9uPTM2MDBcbiAgICAvLyAgICAgICBzdD0xNDgzOTg0ODAwIHJiPTAgcnA9MCB0Yj0xMjAzMSB0cD0xODQgb3A9MFxuICAgIC8vICAgICAgIHN0PTE0ODM5ODg0MDAgcmI9MCBycD0wIHRiPTM4NDc2IHRwPTU4NyBvcD0wXG4gICAgLy8gICAgICAgc3Q9MTQ4Mzk5OTIwMCByYj0zMTU2MTYgcnA9NDAwIHRiPTk0ODAwIHRwPTM2MiBvcD0wXG4gICAgLy8gICAgICAgc3Q9MTQ4NDAwMjgwMCByYj0xNTgyNiBycD0yMCB0Yj00NzM4IHRwPTE2IG9wPTBcbiAgICAvL1xuICAgIC8vIHRoZSByZXR1cm4gZGF0YSBvZiByZWFsIGRldmljZVxuICAgIC8vICAgWHQgc3RhdHM6XG4gICAgLy8gICBQZW5kaW5nIGJ5dGVzOiAwXG4gICAgLy8gICBIaXN0b3J5IHNpbmNlIGJvb3Q6XG4gICAgLy8gICBpZGVudD1be3R5cGU9TU9CSUxFLCBzdWJUeXBlPUNPTUJJTkVELCBzdWJzY3JpYmVySWQ9NDUwMDUwLi4ufV0gdWlkPS0xIHNldD1BTEwgdGFnPTB4MFxuICAgIC8vICAgTmV0d29ya1N0YXRzSGlzdG9yeTogYnVja2V0RHVyYXRpb249MzYwMFxuICAgIC8vICAgc3Q9MTQ3ODA4ODAwMCByYj0zMjExNTI5NiBycD0zNDI5MSB0Yj0yOTU2ODA1IHRwPTI1NzA1IG9wPTBcbiAgICAvLyAgIHN0PTE0NzgwOTE2MDAgcmI9MjcxNDY4MyBycD0xMTgyMSB0Yj0xNDIwNTY0IHRwPTEyNjUwIG9wPTBcbiAgICAvLyAgIHN0PTE0NzgwOTUyMDAgcmI9MTAwNzkyMTMgcnA9MTk5NjIgdGI9MjQ4NzcwNSB0cD0yMDAxNSBvcD0wXG4gICAgLy8gICBzdD0xNDc4MDk4ODAwIHJiPTQ0NDQ0MzMgcnA9MTAyMjcgdGI9MTQzMDM1NiB0cD0xMDQ5MyBvcD0wXG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBsZXQgZnJvbVh0c3RhdHMgPSBkYXRhLmluZGV4T2YoJ1h0IHN0YXRzOicpO1xuXG4gICAgbGV0IHN0YXJ0ID0gZGF0YS5pbmRleE9mKCdQZW5kaW5nIGJ5dGVzOicsIGZyb21YdHN0YXRzKTtcbiAgICBsZXQgZGVsaW1pdGVyID0gZGF0YS5pbmRleE9mKCc6Jywgc3RhcnQgKyAxKTtcbiAgICBsZXQgZW5kID0gZGF0YS5pbmRleE9mKCdcXG4nLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICBsZXQgcGVuZGluZ0J5dGVzID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG5cbiAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICBzdGFydCA9IGRhdGEuaW5kZXhPZignYnVja2V0RHVyYXRpb24nLCBlbmQgKyAxKTtcbiAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICBlbmQgPSBkYXRhLmluZGV4T2YoJ1xcbicsIGRlbGltaXRlciArIDEpO1xuICAgICAgYnVja2V0RHVyYXRpb24gPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgZGF0YSA9IGRhdGEuc3Vic3RyaW5nKGVuZCArIDEsIGRhdGEubGVuZ3RoKTtcbiAgICAgIGxldCBhcnJheUxpc3QgPSBkYXRhLnNwbGl0KCdcXG4nKTtcblxuICAgICAgaWYgKGFycmF5TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHN0YXJ0ID0gLTE7XG5cbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBORVRXT1JLX0tFWVMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICBzdGFydCA9IGFycmF5TGlzdFswXS5pbmRleE9mKE5FVFdPUktfS0VZU1tqXVswXSk7XG5cbiAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgaW5kZXggPSBqO1xuICAgICAgICAgICAgcmV0dXJuVmFsdWVbMF0gPSBbXTtcblxuICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBORVRXT1JLX0tFWVNbal0ubGVuZ3RoOyArK2spIHtcbiAgICAgICAgICAgICAgcmV0dXJuVmFsdWVbMF1ba10gPSBORVRXT1JLX0tFWVNbal1ba107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmV0dXJuSW5kZXggPSAxO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5TGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGRhdGEgPSBhcnJheUxpc3RbaV07XG4gICAgICAgICAgc3RhcnQgPSBkYXRhLmluZGV4T2YoTkVUV09SS19LRVlTW2luZGV4XVswXSk7XG5cbiAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgZGVsaW1pdGVyID0gZGF0YS5pbmRleE9mKCc9Jywgc3RhcnQgKyAxKTtcbiAgICAgICAgICAgIGVuZCA9IGRhdGEuaW5kZXhPZignICcsIGRlbGltaXRlciArIDEpO1xuICAgICAgICAgICAgYnVja2V0U3RhcnQgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcblxuICAgICAgICAgICAgaWYgKGVuZCA+IGRlbGltaXRlcikge1xuICAgICAgICAgICAgICBzdGFydCA9IGRhdGEuaW5kZXhPZihORVRXT1JLX0tFWVNbaW5kZXhdWzFdLCBlbmQgKyAxKTtcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgICAgICBkZWxpbWl0ZXIgPSBkYXRhLmluZGV4T2YoJz0nLCBzdGFydCArIDEpO1xuICAgICAgICAgICAgICAgIGVuZCA9IGRhdGEuaW5kZXhPZignICcsIGRlbGltaXRlciArIDEpO1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRpbWUgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bMl0sIGVuZCArIDEpO1xuICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgZW5kID0gZGF0YS5pbmRleE9mKCcgJywgZGVsaW1pdGVyICsgMSk7XG4gICAgICAgICAgICAgICAgcnhCeXRlcyA9IGRhdGEuc3Vic3RyaW5nKGRlbGltaXRlciArIDEsIGVuZCkudHJpbSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChlbmQgPiBkZWxpbWl0ZXIpIHtcbiAgICAgICAgICAgICAgc3RhcnQgPSBkYXRhLmluZGV4T2YoTkVUV09SS19LRVlTW2luZGV4XVszXSwgZW5kICsgMSk7XG4gICAgICAgICAgICAgIGlmIChzdGFydCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZGVsaW1pdGVyID0gZGF0YS5pbmRleE9mKCc9Jywgc3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICBlbmQgPSBkYXRhLmluZGV4T2YoJyAnLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICAgICAgICAgICAgICByeFBhY2tldHMgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bNF0sIGVuZCArIDEpO1xuICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgZW5kID0gZGF0YS5pbmRleE9mKCcgJywgZGVsaW1pdGVyICsgMSk7XG4gICAgICAgICAgICAgICAgdHhCeXRlcyA9IGRhdGEuc3Vic3RyaW5nKGRlbGltaXRlciArIDEsIGVuZCkudHJpbSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChlbmQgPiBkZWxpbWl0ZXIpIHtcbiAgICAgICAgICAgICAgc3RhcnQgPSBkYXRhLmluZGV4T2YoTkVUV09SS19LRVlTW2luZGV4XVs1XSwgZW5kICsgMSk7XG4gICAgICAgICAgICAgIGlmIChzdGFydCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZGVsaW1pdGVyID0gZGF0YS5pbmRleE9mKCc9Jywgc3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICBlbmQgPSBkYXRhLmluZGV4T2YoJyAnLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICAgICAgICAgICAgICB0eFBhY2tldHMgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bNl0sIGVuZCArIDEpO1xuICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgZW5kID0gZGF0YS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9ucyA9IGRhdGEuc3Vic3RyaW5nKGRlbGltaXRlciArIDEsIGVuZCkudHJpbSgpO1xuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVyblZhbHVlW3JldHVybkluZGV4KytdID0gW2J1Y2tldFN0YXJ0LCBhY3RpdmVUaW1lLCByeEJ5dGVzLCByeFBhY2tldHMsIHR4Qnl0ZXMsIHR4UGFja2V0cywgb3BlcmF0aW9ucywgYnVja2V0RHVyYXRpb25dO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghXy5pc0VxdWFsKHBlbmRpbmdCeXRlcywgJycpICYmICFfLmlzVW5kZWZpbmVkKHBlbmRpbmdCeXRlcykgJiYgIV8uaXNFcXVhbChwZW5kaW5nQnl0ZXMsICdub2RleCcpKSB7XG4gICAgICByZXR1cm4gcmV0dXJuVmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIG5ldHdvcmsgdHJhZmZpYyBkYXRhOiAnJHtkYXRhfSdgKTtcbiAgICB9XG4gIH0pO1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcywgaGVscGVycyk7XG5leHBvcnQge1xuICBjb21tYW5kcywgaGVscGVycywgU1VQUE9SVEVEX1BFUkZPUk1BTkNFX0RBVEFfVFlQRVMsIENQVV9LRVlTLCBNRU1PUllfS0VZUyxcbiAgQkFUVEVSWV9LRVlTLCBORVRXT1JLX0tFWVMsXG59O1xuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcblxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjtBQUFBLE1BQXFCQyxPQUFPLEdBQUcsRUFBL0I7QUFBQSxNQUFtQ0MsVUFBVSxHQUFHLEVBQWhEOzs7QUFFQSxNQUFNQyxZQUFZLEdBQUcsQ0FDbkIsQ0FBQyxhQUFELEVBQWdCLFlBQWhCLEVBQThCLFNBQTlCLEVBQXlDLFdBQXpDLEVBQXNELFNBQXRELEVBQWlFLFdBQWpFLEVBQThFLFlBQTlFLEVBQTRGLGdCQUE1RixDQURtQixFQUVuQixDQUFDLElBQUQsRUFBTyxZQUFQLEVBQXFCLElBQXJCLEVBQTJCLElBQTNCLEVBQWlDLElBQWpDLEVBQXVDLElBQXZDLEVBQTZDLElBQTdDLEVBQW1ELGdCQUFuRCxDQUZtQixDQUFyQjs7QUFJQSxNQUFNQyxRQUFRLEdBQUcsQ0FBQyxNQUFELEVBQVMsUUFBVCxDQUFqQjs7QUFDQSxNQUFNQyxZQUFZLEdBQUcsQ0FBQyxPQUFELENBQXJCOztBQUNBLE1BQU1DLFdBQVcsR0FBRyxDQUNsQixtQkFEa0IsRUFDRyxvQkFESCxFQUN5QixvQkFEekIsRUFFbEIsaUJBRmtCLEVBRUMsZ0JBRkQsRUFHbEIsVUFI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
329
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3BlcmZvcm1hbmNlLmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsIk5FVFdPUktfS0VZUyIsIkNQVV9LRVlTIiwiQkFUVEVSWV9LRVlTIiwiTUVNT1JZX0tFWVMiLCJTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFUyIsIk9iamVjdCIsImZyZWV6ZSIsImNwdWluZm8iLCJtZW1vcnlpbmZvIiwiYmF0dGVyeWluZm8iLCJuZXR3b3JraW5mbyIsIk1FTUlORk9fVElUTEVTIiwiTkFUSVZFIiwiREFMVklLIiwiRUdMIiwiR0wiLCJNVFJBQ0siLCJUT1RBTCIsIkhFQVAiLCJSRVRSWV9QQVVTRV9NUyIsInBhcnNlTWVtaW5mb0ZvckFwaTE5VG8yOSIsImVudHJpZXMiLCJ2YWxEaWN0IiwidHlwZSIsInN1YlR5cGUiLCJuYXRpdmVQc3MiLCJuYXRpdmVQcml2YXRlRGlydHkiLCJuYXRpdmVIZWFwU2l6ZSIsIm5hdGl2ZUhlYXBBbGxvY2F0ZWRTaXplIiwiZGFsdmlrUHNzIiwiZGFsdmlrUHJpdmF0ZURpcnR5IiwiZWdsUHNzIiwiZWdsUHJpdmF0ZURpcnR5IiwiZ2xQc3MiLCJnbFByaXZhdGVEaXJ0eSIsImxlbmd0aCIsInRvdGFsUHNzIiwidG90YWxQcml2YXRlRGlydHkiLCJwYXJzZU1lbWluZm9Gb3JBcGlCZWxvdzE5IiwicGFyc2VNZW1pbmZvRm9yQXBpQWJvdmUyOSIsIm5hdGl2ZVJzcyIsImRhbHZpa1JzcyIsInRvdGFsUnNzIiwiZ2V0UGVyZm9ybWFuY2VEYXRhVHlwZXMiLCJfIiwia2V5cyIsImdldFBlcmZvcm1hbmNlRGF0YSIsInBhY2thZ2VOYW1lIiwiZGF0YVR5cGUiLCJyZXRyaWVzIiwidG9Mb3dlciIsImdldEJhdHRlcnlJbmZvIiwiZ2V0Q1BVSW5mbyIsImdldE1lbW9yeUluZm8iLCJnZXROZXR3b3JrVHJhZmZpY0luZm8iLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZXRyeUludGVydmFsIiwib3V0cHV0IiwiYWRiIiwic2hlbGwiLCJlIiwic3RkZXJyIiwibG9nIiwiaW5mbyIsInVzYWdlc1BhdHRlcm4iLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJtYXRjaCIsImV4ZWMiLCJkZWJ1ZyIsImNtZCIsImRhdGEiLCJwb3dlciIsInBhcnNlSW50Iiwic3BsaXQiLCJ0cmltIiwiTnVtYmVyIiwiaXNOYU4iLCJjbG9uZSIsInRvU3RyaW5nIiwiYXBpTGV2ZWwiLCJnZXRBcGlMZXZlbCIsImxpbmUiLCJmaWx0ZXIiLCJCb29sZWFuIiwiaGVhZGVycyIsInZhbHVlcyIsIm1hcCIsImhlYWRlciIsInJldHVyblZhbHVlIiwiYnVja2V0RHVyYXRpb24iLCJidWNrZXRTdGFydCIsImFjdGl2ZVRpbWUiLCJyeEJ5dGVzIiwicnhQYWNrZXRzIiwidHhCeXRlcyIsInR4UGFja2V0cyIsIm9wZXJhdGlvbnMiLCJpbmRleCIsImZyb21YdHN0YXRzIiwiaW5kZXhPZiIsInN0YXJ0IiwiZGVsaW1pdGVyIiwiZW5kIiwicGVuZGluZ0J5dGVzIiwic3Vic3RyaW5nIiwiYXJyYXlMaXN0IiwiaiIsImsiLCJyZXR1cm5JbmRleCIsImkiLCJpc0VxdWFsIiwiaXNVbmRlZmluZWQiLCJhc3NpZ24iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvcGVyZm9ybWFuY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHJldHJ5SW50ZXJ2YWwgfSBmcm9tICdhc3luY2JveCc7XG5cbmNvbnN0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb25zdCBORVRXT1JLX0tFWVMgPSBbXG4gIFsnYnVja2V0U3RhcnQnLCAnYWN0aXZlVGltZScsICdyeEJ5dGVzJywgJ3J4UGFja2V0cycsICd0eEJ5dGVzJywgJ3R4UGFja2V0cycsICdvcGVyYXRpb25zJywgJ2J1Y2tldER1cmF0aW9uJ10sXG4gIFsnc3QnLCAnYWN0aXZlVGltZScsICdyYicsICdycCcsICd0YicsICd0cCcsICdvcCcsICdidWNrZXREdXJhdGlvbiddXG5dO1xuY29uc3QgQ1BVX0tFWVMgPSBbJ3VzZXInLCAna2VybmVsJ107XG5jb25zdCBCQVRURVJZX0tFWVMgPSBbJ3Bvd2VyJ107XG5jb25zdCBNRU1PUllfS0VZUyA9IFtcbiAgJ3RvdGFsUHJpdmF0ZURpcnR5JywgJ25hdGl2ZVByaXZhdGVEaXJ0eScsICdkYWx2aWtQcml2YXRlRGlydHknLFxuICAnZWdsUHJpdmF0ZURpcnR5JywgJ2dsUHJpdmF0ZURpcnR5JyxcbiAgJ3RvdGFsUHNzJywgJ25hdGl2ZVBzcycsICdkYWx2aWtQc3MnLCAnZWdsUHNzJywgJ2dsUHNzJyxcbiAgJ25hdGl2ZUhlYXBBbGxvY2F0ZWRTaXplJywgJ25hdGl2ZUhlYXBTaXplJyxcbiAgJ25hdGl2ZVJzcycsICdkYWx2aWtSc3MnLCAndG90YWxSc3MnXG5dO1xuY29uc3QgU1VQUE9SVEVEX1BFUkZPUk1BTkNFX0RBVEFfVFlQRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgY3B1aW5mbzogJ3RoZSBhbW91bnQgb2YgY3B1IGJ5IHVzZXIgYW5kIGtlcm5lbCBwcm9jZXNzIC0gY3B1IGluZm9ybWF0aW9uIGZvciBhcHBsaWNhdGlvbnMgb24gcmVhbCBkZXZpY2VzIGFuZCBzaW11bGF0b3JzJyxcbiAgbWVtb3J5aW5mbzogJ3RoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQgYnkgdGhlIHByb2Nlc3MgLSBtZW1vcnkgaW5mb3JtYXRpb24gZm9yIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZXMgYW5kIHNpbXVsYXRvcnMnLFxuICBiYXR0ZXJ5aW5mbzogJ3RoZSByZW1haW5pbmcgYmF0dGVyeSBwb3dlciAtIGJhdHRlcnkgcG93ZXIgaW5mb3JtYXRpb24gZm9yIGFwcGxpY2F0aW9ucyBvbiByZWFsIGRldmljZXMgYW5kIHNpbXVsYXRvcnMnLFxuICBuZXR3b3JraW5mbzogJ3RoZSBuZXR3b3JrIHN0YXRpc3RpY3MgLSBuZXR3b3JrIHJ4L3R4IGluZm9ybWF0aW9uIGZvciBhcHBsaWNhdGlvbnMgb24gcmVhbCBkZXZpY2VzIGFuZCBzaW11bGF0b3JzJ1xufSk7XG5jb25zdCBNRU1JTkZPX1RJVExFUyA9IE9iamVjdC5mcmVlemUoe1xuICBOQVRJVkU6ICdOYXRpdmUnLFxuICBEQUxWSUs6ICdEYWx2aWsnLFxuICBFR0w6ICdFR0wnLFxuICBHTDogJ0dMJyxcbiAgTVRSQUNLOiAnbXRyYWNrJyxcbiAgVE9UQUw6ICdUT1RBTCcsXG4gIEhFQVA6ICdIZWFwJ1xufSk7XG5jb25zdCBSRVRSWV9QQVVTRV9NUyA9IDEwMDA7XG5cbi8qKlxuICogQVBJIGxldmVsIGJldHdlZW4gMTggYW5kIDMwXG4gKiBbJzxTeXN0ZW0gVHlwZT4nLCAnPE1lbW9yeSBUeXBlPicsIDxwc3MgdG90YWw+LCA8cHJpdmF0ZSBkaXJ0eT4sIDxwcml2YXRlIGNsZWFuPiwgPHN3YXBQc3MgZGlydHk+LCA8aGVhcCBzaXplPiwgPGhlYXAgYWxsb2M+LCA8aGVhcCBmcmVlPl1cbiAqIGV4Y2VwdCAnVE9UQUwnLCB3aGljaCBza2lwcyB0aGUgc2Vjb25kIHR5cGUgbmFtZVxuICogISEhIHZhbERpY3QgZ2V0cyBtdXRhdGVkXG4gKi9cbmZ1bmN0aW9uIHBhcnNlTWVtaW5mb0ZvckFwaTE5VG8yOSAoZW50cmllcywgdmFsRGljdCkge1xuICBjb25zdCBbdHlwZSwgc3ViVHlwZV0gPSBlbnRyaWVzO1xuICBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTkFUSVZFICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLkhFQVApIHtcbiAgICBbLCwgdmFsRGljdC5uYXRpdmVQc3MsIHZhbERpY3QubmF0aXZlUHJpdmF0ZURpcnR5LCwsIHZhbERpY3QubmF0aXZlSGVhcFNpemUsIHZhbERpY3QubmF0aXZlSGVhcEFsbG9jYXRlZFNpemVdID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5EQUxWSUsgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuSEVBUCkge1xuICAgIFssLCB2YWxEaWN0LmRhbHZpa1BzcywgdmFsRGljdC5kYWx2aWtQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5FR0wgJiYgc3ViVHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTVRSQUNLKSB7XG4gICAgWywsIHZhbERpY3QuZWdsUHNzLCB2YWxEaWN0LmVnbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkdMICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLk1UUkFDSykge1xuICAgIFssLCB2YWxEaWN0LmdsUHNzLCB2YWxEaWN0LmdsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuVE9UQUwgJiYgZW50cmllcy5sZW5ndGggPT09IDgpIHtcbiAgICAvLyB0aGVyZSBhcmUgdHdvIHRvdGFscywgYW5kIHdlIG9ubHkgd2FudCB0aGUgZnVsbCBsaXN0aW5nLCB3aGljaCBoYXMgOCBlbnRyaWVzXG4gICAgWywgdmFsRGljdC50b3RhbFBzcywgdmFsRGljdC50b3RhbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9XG59XG5cbi8qKlxuICogWyc8U3lzdGVtIFR5cGUnLCAnPHBwcz4nLCAnPHNoYXJlZCBkaXJ0eT4nLCAnPHByaXZhdGUgZGlydHk+JywgJzxoZWFwIHNpemU+JywgJzxoZWFwIGFsbG9jPicsICc8aGVhcCBmcmVlPiddXG4gKiAhISEgdmFsRGljdCBnZXRzIG11dGF0ZWRcbiAqL1xuZnVuY3Rpb24gcGFyc2VNZW1pbmZvRm9yQXBpQmVsb3cxOSAoZW50cmllcywgdmFsRGljdCkge1xuICBjb25zdCB0eXBlID0gZW50cmllc1swXTtcbiAgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLk5BVElWRSkge1xuICAgIFssIHZhbERpY3QubmF0aXZlUHNzLCwgdmFsRGljdC5uYXRpdmVQcml2YXRlRGlydHksIHZhbERpY3QubmF0aXZlSGVhcFNpemUsIHZhbERpY3QubmF0aXZlSGVhcEFsbG9jYXRlZFNpemVdID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5EQUxWSUspIHtcbiAgICBbLCB2YWxEaWN0LmRhbHZpa1BzcywsIHZhbERpY3QuZGFsdmlrUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuRUdMKSB7XG4gICAgWywgdmFsRGljdC5lZ2xQc3MsLCB2YWxEaWN0LmVnbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLkdMKSB7XG4gICAgWywgdmFsRGljdC5nbFBzcywsIHZhbERpY3QuZ2xQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5UT1RBTCkge1xuICAgIFssIHZhbERpY3QudG90YWxQc3MsLCB2YWxEaWN0LnRvdGFsUHJpdmF0ZURpcnR5XSA9IGVudHJpZXM7XG4gIH1cbn1cblxuLyoqXG4gKiBBUEkgbGV2ZWwgMzAgYW5kIGFib3ZlXG4gKiBbJzxTeXN0ZW0gVHlwZT4nLCAnPE1lbW9yeSBUeXBlPicsIDxwc3MgdG90YWw+LCA8cHJpdmF0ZSBkaXJ0eT4sIDxwcml2YXRlIGNsZWFuPiwgPHN3YXBQc3MgZGlydHk+LCA8cnNzIHRvdGFsPiwgPGhlYXAgc2l6ZT4sIDxoZWFwIGFsbG9jPiwgPGhlYXAgZnJlZT5dXG4gKiAhISEgdmFsRGljdCBnZXRzIG11dGF0ZWRcbiAqL1xuZnVuY3Rpb24gcGFyc2VNZW1pbmZvRm9yQXBpQWJvdmUyOSAoZW50cmllcywgdmFsRGljdCkge1xuICBjb25zdCBbdHlwZSwgc3ViVHlwZV0gPSBlbnRyaWVzO1xuICBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuTkFUSVZFICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLkhFQVApIHtcbiAgICBbLCwgdmFsRGljdC5uYXRpdmVQc3MsIHZhbERpY3QubmF0aXZlUHJpdmF0ZURpcnR5LCwsIHZhbERpY3QubmF0aXZlUnNzLCB2YWxEaWN0Lm5hdGl2ZUhlYXBTaXplLCB2YWxEaWN0Lm5hdGl2ZUhlYXBBbGxvY2F0ZWRTaXplXSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuREFMVklLICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLkhFQVApIHtcbiAgICBbLCwgdmFsRGljdC5kYWx2aWtQc3MsIHZhbERpY3QuZGFsdmlrUHJpdmF0ZURpcnR5LCwsIHZhbERpY3QuZGFsdmlrUnNzXSA9IGVudHJpZXM7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gTUVNSU5GT19USVRMRVMuRUdMICYmIHN1YlR5cGUgPT09IE1FTUlORk9fVElUTEVTLk1UUkFDSykge1xuICAgIFssLCB2YWxEaWN0LmVnbFBzcywgdmFsRGljdC5lZ2xQcml2YXRlRGlydHldID0gZW50cmllcztcbiAgfSBlbHNlIGlmICh0eXBlID09PSBNRU1JTkZPX1RJVExFUy5HTCAmJiBzdWJUeXBlID09PSBNRU1JTkZPX1RJVExFUy5NVFJBQ0spIHtcbiAgICBbLCwgdmFsRGljdC5nbFBzcywgdmFsRGljdC5nbFByaXZhdGVEaXJ0eV0gPSBlbnRyaWVzO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09IE1FTUlORk9fVElUTEVTLlRPVEFMICYmIGVudHJpZXMubGVuZ3RoID09PSA5KSB7XG4gICAgLy8gaGFzIDkgZW50cmllc1xuICAgIFssIHZhbERpY3QudG90YWxQc3MsIHZhbERpY3QudG90YWxQcml2YXRlRGlydHksLCwgdmFsRGljdC50b3RhbFJzc10gPSBlbnRyaWVzO1xuICB9XG59XG5cbi8vXG4vLyByZXR1cm5zIHRoZSBpbmZvcm1hdGlvbiB0eXBlIG9mIHRoZSBzeXN0ZW0gc3RhdGUgd2hpY2ggaXMgc3VwcG9ydGVkIHRvIHJlYWQgYXMgbGlrZSBjcHUsIG1lbW9yeSwgbmV0d29yayB0cmFmZmljLCBhbmQgYmF0dGVyeS5cbi8vIG91dHB1dCAtIGFycmF5IGxpa2UgYmVsb3dcbi8vIFtjcHVpbmZvLCBiYXR0ZXJ5aW5mbywgbmV0d29ya2luZm8sIG1lbW9yeWluZm9dXG4vL1xuY29tbWFuZHMuZ2V0UGVyZm9ybWFuY2VEYXRhVHlwZXMgPSBmdW5jdGlvbiBnZXRQZXJmb3JtYW5jZURhdGFUeXBlcyAoKSB7XG4gIHJldHVybiBfLmtleXMoU1VQUE9SVEVEX1BFUkZPUk1BTkNFX0RBVEFfVFlQRVMpO1xufTtcblxuLyoqXG4gKiBAcmV0dXJucyBUaGUgaW5mb3JtYXRpb24gdHlwZSBvZiB0aGUgc3lzdGVtIHN0YXRlIHdoaWNoIGlzIHN1cHBvcnRlZCB0byByZWFkIGFzIGxpa2UgY3B1LCBtZW1vcnksIG5ldHdvcmsgdHJhZmZpYywgYW5kIGJhdHRlcnkuXG4gKiBpbnB1dCAtIChwYWNrYWdlTmFtZSkgdGhlIHBhY2thZ2UgbmFtZSBvZiB0aGUgYXBwbGljYXRpb25cbiAqICAgICAgICAoZGF0YVR5cGUpIHRoZSB0eXBlIG9mIHN5c3RlbSBzdGF0ZSB3aGljaCB3YW50cyB0byByZWFkLiBJdCBzaG91bGQgYmUgb25lIG9mIHRoZSBrZXlzIG9mIHRoZSBTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFU1xuICogICAgICAgIChkYXRhUmVhZFRpbWVvdXQpIHRoZSBudW1iZXIgb2YgYXR0ZW1wdHMgdG8gcmVhZFxuICogb3V0cHV0IC0gdGFibGUgb2YgdGhlIHBlcmZvcm1hbmNlIGRhdGEsIFRoZSBmaXJzdCBsaW5lIG9mIHRoZSB0YWJsZSByZXByZXNlbnRzIHRoZSB0eXBlIG9mIGRhdGEuIFRoZSByZW1haW5pbmcgbGluZXMgcmVwcmVzZW50IHRoZSB2YWx1ZXMgb2YgdGhlIGRhdGEuXG4gKlxuICogaW4gY2FzZSBvZiBiYXR0ZXJ5IGluZm8gOiBbW3Bvd2VyXSwgWzIzXV1cbiAqIGluIGNhc2Ugb2YgbWVtb3J5IGluZm8gOiAgW1t0b3RhbFByaXZhdGVEaXJ0eSwgbmF0aXZlUHJpdmF0ZURpcnR5LCBkYWx2aWtQcml2YXRlRGlydHksIGVnbFByaXZhdGVEaXJ0eSwgZ2xQcml2YXRlRGlydHksIHRvdGFsUHNzLFxuICogICBuYXRpdmVQc3MsIGRhbHZpa1BzcywgZWdsUHNzLCBnbFBzcywgbmF0aXZlSGVhcEFsbG9jYXRlZFNpemUsIG5hdGl2ZUhlYXBTaXplXSwgWzE4MzYwLCA4Mjk2LCA2MTMyLCBudWxsLCBudWxsLCA0MjU4OCwgODQwNiwgNzAyNCwgbnVsbCwgbnVsbCwgMjY1MTksIDEwMzQ0XV1cbiAqIGluIGNhc2Ugb2YgbmV0d29yayBpbmZvIDogW1tidWNrZXRTdGFydCwgYWN0aXZlVGltZSwgcnhCeXRlcywgcnhQYWNrZXRzLCB0eEJ5dGVzLCB0eFBhY2tldHMsIG9wZXJhdGlvbnMsIGJ1Y2tldER1cmF0aW9uLF0sXG4gKiAgIFsxNDc4MDkxNjAwMDAwLCBudWxsLCAxMDk5MDc1LCA2MTA5NDcsIDkyOCwgMTE0MzYyLCA3NjksIDAsIDM2MDAwMDBdLCBbMTQ3ODA5NTIwMDAwMCwgbnVsbCwgMTMwNjMwMCwgNDA1OTk3LCA1MDksIDQ2MzU5LCAzNzAsIDAsIDM2MDAwMDBdXVxuICogaW4gY2FzZSBvZiBuZXR3b3JrIGluZm8gOiBbW3N0LCBhY3RpdmVUaW1lLCByYiwgcnAsIHRiLCB0cCwgb3AsIGJ1Y2tldER1cmF0aW9uXSwgWzE0NzgwODgwMDAsIG51bGwsIG51bGwsIDMyMTE1Mjk2LCAzNDI5MSwgMjk1NjgwNSwgMjU3MDUsIDAsIDM2MDBdLFxuICogICBbMTQ3ODA5MTYwMCwgbnVsbCwgbnVsbCwgMjcxNDY4MywgMTE4MjEsIDE0MjA1NjQsIDEyNjUwLCAwLCAzNjAwXSwgWzE0NzgwOTUyMDAsIG51bGwsIG51bGwsIDEwMDc5MjEzLCAxOTk2MiwgMjQ4NzcwNSwgMjAwMTUsIDAsIDM2MDBdLFxuICogICBbMTQ3ODA5ODgwMCwgbnVsbCwgbnVsbCwgNDQ0NDQzMywgMTAyMjcsIDE0MzAzNTYsIDEwNDkzLCAwLCAzNjAwXV1cbiAqIGluIGNhc2Ugb2YgY3B1IGluZm8gOiBbW3VzZXIsIGtlcm5lbF0sIFswLjksIDEuM11dXG4gKi9cbmNvbW1hbmRzLmdldFBlcmZvcm1hbmNlRGF0YSA9IGFzeW5jIGZ1bmN0aW9uIGdldFBlcmZvcm1hbmNlRGF0YSAocGFja2FnZU5hbWUsIGRhdGFUeXBlLCByZXRyaWVzID0gMikge1xuICBzd2l0Y2ggKF8udG9Mb3dlcihkYXRhVHlwZSkpIHtcbiAgICBjYXNlICdiYXR0ZXJ5aW5mbyc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRCYXR0ZXJ5SW5mbyhyZXRyaWVzKTtcbiAgICBjYXNlICdjcHVpbmZvJzpcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldENQVUluZm8ocGFja2FnZU5hbWUsIHJldHJpZXMpO1xuICAgIGNhc2UgJ21lbW9yeWluZm8nOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TWVtb3J5SW5mbyhwYWNrYWdlTmFtZSwgcmV0cmllcyk7XG4gICAgY2FzZSAnbmV0d29ya2luZm8nOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0TmV0d29ya1RyYWZmaWNJbmZvKHJldHJpZXMpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHBlcmZvcm1hbmNlIGRhdGEgb2YgdHlwZSAnJHtkYXRhVHlwZX0nIGZvdW5kLiBgICtcbiAgICAgICAgYE9ubHkgdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHN1cHBvcnRlZDogJHtKU09OLnN0cmluZ2lmeShTVVBQT1JURURfUEVSRk9STUFOQ0VfREFUQV9UWVBFUywgJyAnLCAyKX1gKTtcbiAgfVxufTtcblxuaGVscGVycy5nZXRDUFVJbmZvID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q1BVSW5mbyAocGFja2FnZU5hbWUsIHJldHJpZXMgPSAyKSB7XG4gIC8vIFRPRE86IGZpZ3VyZSBvdXQgd2h5IHRoaXMgaXNcbiAgLy8gc29tZXRpbWVzLCB0aGUgZnVuY3Rpb24gb2YgJ2FkYi5zaGVsbCcgZmFpbHMuIHdoZW4gSSB0ZXN0ZWQgdGhpcyBmdW5jdGlvbiBvbiB0aGUgdGFyZ2V0IG9mICdHYWxheHkgTm90ZTUnLFxuICAvLyBhZGIuc2hlbGwoZHVtcHN5cyBjcHVpbmZvKSByZXR1cm5zIGNwdSBkYXRhcyBmb3Igb3RoZXIgYXBwbGljYXRpb24gcGFja2FnZXMsIGJ1dCBJIGNhbid0IGZpbmQgdGhlIGRhdGEgZm9yIHBhY2thZ2VOYW1lLlxuICAvLyBJdCB1c3VhbGx5IGZhaWxzIDMwIHRpbWVzIGFuZCBzdWNjZXNzIGZvciB0aGUgbmV4dCB0aW1lLFxuICAvLyBTaW5jZSB0aGVuLCBoZSBoYXMgY29udGludWVkIHRvIHN1Y2NlZWQuXG4gIHJldHVybiBhd2FpdCByZXRyeUludGVydmFsKHJldHJpZXMsIFJFVFJZX1BBVVNFX01TLCBhc3luYyAoKSA9PiB7XG4gICAgbGV0IG91dHB1dDtcbiAgICB0cnkge1xuICAgICAgb3V0cHV0ID0gYXdhaXQgdGhpcy5hZGIuc2hlbGwoWydkdW1wc3lzJywgJ2NwdWluZm8nXSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUuc3RkZXJyKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oZS5zdGRlcnIpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgLy8gYG91dHB1dGAgd2lsbCBiZSBzb21ldGhpbmcgbGlrZVxuICAgIC8vICAgICswJSAyMjA5L2lvLmFwcGl1bS5hbmRyb2lkLmFwaXM6IDAuMSUgdXNlciArIDAuMiUga2VybmVsIC8gZmF1bHRzOiA3MCBtaW5vclxuICAgIGNvbnN0IHVzYWdlc1BhdHRlcm4gPVxuICAgICAgbmV3IFJlZ0V4cChgXi4rXFxcXC8ke18uZXNjYXBlUmVnRXhwKHBhY2thZ2VOYW1lKX06XFxcXEQrKFtcXFxcZC5dKyklXFxcXHMrdXNlclxcXFxzK1xcXFwrXFxcXHMrKFtcXFxcZC5dKyklXFxcXHMra2VybmVsYCwgJ20nKTtcbiAgICBjb25zdCBtYXRjaCA9IHVzYWdlc1BhdHRlcm4uZXhlYyhvdXRwdXQpO1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKG91dHB1dCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBjcHUgdXNhZ2UgZGF0YSBmb3IgJyR7cGFja2FnZU5hbWV9Jy4gQ2hlY2sgdGhlIHNlcnZlciBsb2cgZm9yIG1vcmUgZGV0YWlsc2ApO1xuICAgIH1cbiAgICByZXR1cm4gW0NQVV9LRVlTLCBbbWF0Y2hbMV0sIG1hdGNoWzJdXV07XG4gIH0pO1xufTtcblxuaGVscGVycy5nZXRCYXR0ZXJ5SW5mbyA9IGFzeW5jIGZ1bmN0aW9uIGdldEJhdHRlcnlJbmZvIChyZXRyaWVzID0gMikge1xuICByZXR1cm4gYXdhaXQgcmV0cnlJbnRlcnZhbChyZXRyaWVzLCBSRVRSWV9QQVVTRV9NUywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCBjbWQgPSBbJ2R1bXBzeXMnLCAnYmF0dGVyeScsICd8JywgJ2dyZXAnLCAnbGV2ZWwnXTtcbiAgICBsZXQgZGF0YSA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG4gICAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoJ05vIGRhdGEgZnJvbSBkdW1wc3lzJyk7IC8vZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuXG4gICAgbGV0IHBvd2VyID0gcGFyc2VJbnQoKGRhdGEuc3BsaXQoJzonKVsxXSB8fCAnJykudHJpbSgpLCAxMCk7XG5cbiAgICBpZiAoIU51bWJlci5pc05hTihwb3dlcikpIHtcbiAgICAgIHJldHVybiBbXy5jbG9uZShCQVRURVJZX0tFWVMpLCBbcG93ZXIudG9TdHJpbmcoKV1dO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBiYXR0ZXJ5IGRhdGE6ICcke2RhdGF9J2ApO1xuICAgIH1cbiAgfSk7XG59O1xuXG5oZWxwZXJzLmdldE1lbW9yeUluZm8gPSBhc3luYyBmdW5jdGlvbiBnZXRNZW1vcnlJbmZvIChwYWNrYWdlTmFtZSwgcmV0cmllcyA9IDIpIHtcbiAgcmV0dXJuIGF3YWl0IHJldHJ5SW50ZXJ2YWwocmV0cmllcywgUkVUUllfUEFVU0VfTVMsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjbWQgPSBbXG4gICAgICAnZHVtcHN5cycsICdtZW1pbmZvJywgYCcke3BhY2thZ2VOYW1lfSdgLFxuICAgICAgJ3wnLCAnZ3JlcCcsICctRScsXG4gICAgICBgJyR7TUVNSU5GT19USVRMRVMuTkFUSVZFfXwke01FTUlORk9fVElUTEVTLkRBTFZJS318JHtNRU1JTkZPX1RJVExFUy5FR0x9YCArXG4gICAgICBgfCR7TUVNSU5GT19USVRMRVMuR0x9fCR7TUVNSU5GT19USVRMRVMuVE9UQUx9J2BcbiAgICBdO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChjbWQpO1xuICAgIGlmICghZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBkYXRhIGZyb20gZHVtcHN5cycpO1xuICAgIH1cbiAgICBjb25zdCB2YWxEaWN0ID0ge3RvdGFsUHJpdmF0ZURpcnR5OiAnJ307XG4gICAgY29uc3QgYXBpTGV2ZWwgPSBhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBkYXRhLnNwbGl0KCdcXG4nKSkge1xuICAgICAgY29uc3QgZW50cmllcyA9IGxpbmUudHJpbSgpLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgaWYgKGFwaUxldmVsID49IDMwKSB7XG4gICAgICAgIHBhcnNlTWVtaW5mb0ZvckFwaUFib3ZlMjkoZW50cmllcywgdmFsRGljdCk7XG4gICAgICB9IGVsc2UgaWYgKGFwaUxldmVsID4gMTggJiYgYXBpTGV2ZWwgPCAzMCkge1xuICAgICAgICBwYXJzZU1lbWluZm9Gb3JBcGkxOVRvMjkoZW50cmllcywgdmFsRGljdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZU1lbWluZm9Gb3JBcGlCZWxvdzE5KGVudHJpZXMsIHZhbERpY3QpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodmFsRGljdC50b3RhbFByaXZhdGVEaXJ0eSAmJiB2YWxEaWN0LnRvdGFsUHJpdmF0ZURpcnR5ICE9PSAnbm9kZXgnKSB7XG4gICAgICBjb25zdCBoZWFkZXJzID0gXy5jbG9uZShNRU1PUllfS0VZUyk7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBoZWFkZXJzLm1hcCgoaGVhZGVyKSA9PiB2YWxEaWN0W2hlYWRlcl0pO1xuICAgICAgcmV0dXJuIFtoZWFkZXJzLCB2YWx1ZXNdO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIG1lbW9yeSBkYXRhOiAnJHtkYXRhfSdgKTtcbiAgfSk7XG59O1xuXG5oZWxwZXJzLmdldE5ldHdvcmtUcmFmZmljSW5mbyA9IGFzeW5jIGZ1bmN0aW9uIGdldE5ldHdvcmtUcmFmZmljSW5mbyAocmV0cmllcyA9IDIpIHtcbiAgcmV0dXJuIGF3YWl0IHJldHJ5SW50ZXJ2YWwocmV0cmllcywgUkVUUllfUEFVU0VfTVMsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSBbXTtcbiAgICBsZXQgYnVja2V0RHVyYXRpb24sIGJ1Y2tldFN0YXJ0LCBhY3RpdmVUaW1lLCByeEJ5dGVzLCByeFBhY2tldHMsIHR4Qnl0ZXMsIHR4UGFja2V0cywgb3BlcmF0aW9ucztcblxuICAgIGxldCBjbWQgPSBbJ2R1bXBzeXMnLCAnbmV0c3RhdHMnXTtcbiAgICBsZXQgZGF0YSA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG4gICAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoJ05vIGRhdGEgZnJvbSBkdW1wc3lzJyk7IC8vZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuXG4gICAgLy8gSW4gY2FzZSBvZiBuZXR3b3JrIHRyYWZmaWMgaW5mb3JtYXRpb24sIGl0IGlzIGRpZmZlcmVudCBmb3IgdGhlIHJldHVybiBkYXRhIGJldHdlZW4gZW11bGF0b3IgYW5kIHJlYWwgZGV2aWNlLlxuICAgIC8vIHRoZSByZXR1cm4gZGF0YSBvZiBlbXVsYXRvclxuICAgIC8vICAgWHQgc3RhdHM6XG4gICAgLy8gICBQZW5kaW5nIGJ5dGVzOiAzOTI1MFxuICAgIC8vICAgSGlzdG9yeSBzaW5jZSBib290OlxuICAgIC8vICAgaWRlbnQ9W1t0eXBlPVdJRkksIHN1YlR5cGU9Q09NQklORUQsIG5ldHdvcmtJZD1cIldpcmVkU1NJRFwiXV0gdWlkPS0xIHNldD1BTEwgdGFnPTB4MFxuICAgIC8vICAgTmV0d29ya1N0YXRzSGlzdG9yeTogYnVja2V0RHVyYXRpb249MzYwMDAwMFxuICAgIC8vICAgYnVja2V0U3RhcnQ9MTQ3ODA5ODgwMDAwMCBhY3RpdmVUaW1lPTMxODI0IHJ4Qnl0ZXM9MjE1MDIgcnhQYWNrZXRzPTc4IHR4Qnl0ZXM9MTc3NDggdHhQYWNrZXRzPTkwIG9wZXJhdGlvbnM9MFxuICAgIC8vXG4gICAgLy8gNy4xXG4gICAgLy8gICBYdCBzdGF0czpcbiAgICAvLyAgIFBlbmRpbmcgYnl0ZXM6IDQ4MTQ4N1xuICAgIC8vICAgSGlzdG9yeSBzaW5jZSBib290OlxuICAgIC8vICAgaWRlbnQ9W3t0eXBlPU1PQklMRSwgc3ViVHlwZT1DT01CSU5FRCwgc3Vic2NyaWJlcklkPTMxMDI2MC4uLiwgbWV0ZXJlZD10cnVlfV0gdWlkPS0xIHNldD1BTEwgdGFnPTB4MFxuICAgIC8vICAgICBOZXR3b3JrU3RhdHNIaXN0b3J5OiBidWNrZXREdXJhdGlvbj0zNjAwXG4gICAgLy8gICAgICAgc3Q9MTQ4Mzk4NDgwMCByYj0wIHJwPTAgdGI9MTIwMzEgdHA9MTg0IG9wPTBcbiAgICAvLyAgICAgICBzdD0xNDgzOTg4NDAwIHJiPTAgcnA9MCB0Yj0zODQ3NiB0cD01ODcgb3A9MFxuICAgIC8vICAgICAgIHN0PTE0ODM5OTkyMDAgcmI9MzE1NjE2IHJwPTQwMCB0Yj05NDgwMCB0cD0zNjIgb3A9MFxuICAgIC8vICAgICAgIHN0PTE0ODQwMDI4MDAgcmI9MTU4MjYgcnA9MjAgdGI9NDczOCB0cD0xNiBvcD0wXG4gICAgLy9cbiAgICAvLyB0aGUgcmV0dXJuIGRhdGEgb2YgcmVhbCBkZXZpY2VcbiAgICAvLyAgIFh0IHN0YXRzOlxuICAgIC8vICAgUGVuZGluZyBieXRlczogMFxuICAgIC8vICAgSGlzdG9yeSBzaW5jZSBib290OlxuICAgIC8vICAgaWRlbnQ9W3t0eXBlPU1PQklMRSwgc3ViVHlwZT1DT01CSU5FRCwgc3Vic2NyaWJlcklkPTQ1MDA1MC4uLn1dIHVpZD0tMSBzZXQ9QUxMIHRhZz0weDBcbiAgICAvLyAgIE5ldHdvcmtTdGF0c0hpc3Rvcnk6IGJ1Y2tldER1cmF0aW9uPTM2MDBcbiAgICAvLyAgIHN0PTE0NzgwODgwMDAgcmI9MzIxMTUyOTYgcnA9MzQyOTEgdGI9Mjk1NjgwNSB0cD0yNTcwNSBvcD0wXG4gICAgLy8gICBzdD0xNDc4MDkxNjAwIHJiPTI3MTQ2ODMgcnA9MTE4MjEgdGI9MTQyMDU2NCB0cD0xMjY1MCBvcD0wXG4gICAgLy8gICBzdD0xNDc4MDk1MjAwIHJiPTEwMDc5MjEzIHJwPTE5OTYyIHRiPTI0ODc3MDUgdHA9MjAwMTUgb3A9MFxuICAgIC8vICAgc3Q9MTQ3ODA5ODgwMCByYj00NDQ0NDMzIHJwPTEwMjI3IHRiPTE0MzAzNTYgdHA9MTA0OTMgb3A9MFxuICAgIGxldCBpbmRleCA9IDA7XG4gICAgbGV0IGZyb21YdHN0YXRzID0gZGF0YS5pbmRleE9mKCdYdCBzdGF0czonKTtcblxuICAgIGxldCBzdGFydCA9IGRhdGEuaW5kZXhPZignUGVuZGluZyBieXRlczonLCBmcm9tWHRzdGF0cyk7XG4gICAgbGV0IGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignOicsIHN0YXJ0ICsgMSk7XG4gICAgbGV0IGVuZCA9IGRhdGEuaW5kZXhPZignXFxuJywgZGVsaW1pdGVyICsgMSk7XG4gICAgbGV0IHBlbmRpbmdCeXRlcyA9IGRhdGEuc3Vic3RyaW5nKGRlbGltaXRlciArIDEsIGVuZCkudHJpbSgpO1xuXG4gICAgaWYgKGVuZCA+IGRlbGltaXRlcikge1xuICAgICAgc3RhcnQgPSBkYXRhLmluZGV4T2YoJ2J1Y2tldER1cmF0aW9uJywgZW5kICsgMSk7XG4gICAgICBkZWxpbWl0ZXIgPSBkYXRhLmluZGV4T2YoJz0nLCBzdGFydCArIDEpO1xuICAgICAgZW5kID0gZGF0YS5pbmRleE9mKCdcXG4nLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICAgIGJ1Y2tldER1cmF0aW9uID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgIGRhdGEgPSBkYXRhLnN1YnN0cmluZyhlbmQgKyAxLCBkYXRhLmxlbmd0aCk7XG4gICAgICBsZXQgYXJyYXlMaXN0ID0gZGF0YS5zcGxpdCgnXFxuJyk7XG5cbiAgICAgIGlmIChhcnJheUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICBzdGFydCA9IC0xO1xuXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgTkVUV09SS19LRVlTLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgc3RhcnQgPSBhcnJheUxpc3RbMF0uaW5kZXhPZihORVRXT1JLX0tFWVNbal1bMF0pO1xuXG4gICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgIGluZGV4ID0gajtcbiAgICAgICAgICAgIHJldHVyblZhbHVlWzBdID0gW107XG5cbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgTkVUV09SS19LRVlTW2pdLmxlbmd0aDsgKytrKSB7XG4gICAgICAgICAgICAgIHJldHVyblZhbHVlWzBdW2tdID0gTkVUV09SS19LRVlTW2pdW2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJldHVybkluZGV4ID0gMTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheUxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBkYXRhID0gYXJyYXlMaXN0W2ldO1xuICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bMF0pO1xuXG4gICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICBlbmQgPSBkYXRhLmluZGV4T2YoJyAnLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICAgICAgICAgIGJ1Y2tldFN0YXJ0ID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG5cbiAgICAgICAgICAgIGlmIChlbmQgPiBkZWxpbWl0ZXIpIHtcbiAgICAgICAgICAgICAgc3RhcnQgPSBkYXRhLmluZGV4T2YoTkVUV09SS19LRVlTW2luZGV4XVsxXSwgZW5kICsgMSk7XG4gICAgICAgICAgICAgIGlmIChzdGFydCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgZGVsaW1pdGVyID0gZGF0YS5pbmRleE9mKCc9Jywgc3RhcnQgKyAxKTtcbiAgICAgICAgICAgICAgICBlbmQgPSBkYXRhLmluZGV4T2YoJyAnLCBkZWxpbWl0ZXIgKyAxKTtcbiAgICAgICAgICAgICAgICBhY3RpdmVUaW1lID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVuZCA+IGRlbGltaXRlcikge1xuICAgICAgICAgICAgICBzdGFydCA9IGRhdGEuaW5kZXhPZihORVRXT1JLX0tFWVNbaW5kZXhdWzJdLCBlbmQgKyAxKTtcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgICAgICBkZWxpbWl0ZXIgPSBkYXRhLmluZGV4T2YoJz0nLCBzdGFydCArIDEpO1xuICAgICAgICAgICAgICAgIGVuZCA9IGRhdGEuaW5kZXhPZignICcsIGRlbGltaXRlciArIDEpO1xuICAgICAgICAgICAgICAgIHJ4Qnl0ZXMgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bM10sIGVuZCArIDEpO1xuICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgZW5kID0gZGF0YS5pbmRleE9mKCcgJywgZGVsaW1pdGVyICsgMSk7XG4gICAgICAgICAgICAgICAgcnhQYWNrZXRzID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVuZCA+IGRlbGltaXRlcikge1xuICAgICAgICAgICAgICBzdGFydCA9IGRhdGEuaW5kZXhPZihORVRXT1JLX0tFWVNbaW5kZXhdWzRdLCBlbmQgKyAxKTtcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgICAgICBkZWxpbWl0ZXIgPSBkYXRhLmluZGV4T2YoJz0nLCBzdGFydCArIDEpO1xuICAgICAgICAgICAgICAgIGVuZCA9IGRhdGEuaW5kZXhPZignICcsIGRlbGltaXRlciArIDEpO1xuICAgICAgICAgICAgICAgIHR4Qnl0ZXMgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kID4gZGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIHN0YXJ0ID0gZGF0YS5pbmRleE9mKE5FVFdPUktfS0VZU1tpbmRleF1bNV0sIGVuZCArIDEpO1xuICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGltaXRlciA9IGRhdGEuaW5kZXhPZignPScsIHN0YXJ0ICsgMSk7XG4gICAgICAgICAgICAgICAgZW5kID0gZGF0YS5pbmRleE9mKCcgJywgZGVsaW1pdGVyICsgMSk7XG4gICAgICAgICAgICAgICAgdHhQYWNrZXRzID0gZGF0YS5zdWJzdHJpbmcoZGVsaW1pdGVyICsgMSwgZW5kKS50cmltKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVuZCA+IGRlbGltaXRlcikge1xuICAgICAgICAgICAgICBzdGFydCA9IGRhdGEuaW5kZXhPZihORVRXT1JLX0tFWVNbaW5kZXhdWzZdLCBlbmQgKyAxKTtcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgICAgICBkZWxpbWl0ZXIgPSBkYXRhLmluZGV4T2YoJz0nLCBzdGFydCArIDEpO1xuICAgICAgICAgICAgICAgIGVuZCA9IGRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMgPSBkYXRhLnN1YnN0cmluZyhkZWxpbWl0ZXIgKyAxLCBlbmQpLnRyaW0oKTtcblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm5WYWx1ZVtyZXR1cm5JbmRleCsrXSA9IFtidWNrZXRTdGFydCwgYWN0aXZlVGltZSwgcnhCeXRlcywgcnhQYWNrZXRzLCB0eEJ5dGVzLCB0eFBhY2tldHMsIG9wZXJhdGlvbnMsIGJ1Y2tldER1cmF0aW9uXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIV8uaXNFcXVhbChwZW5kaW5nQnl0ZXMsICcnKSAmJiAhXy5pc1VuZGVmaW5lZChwZW5kaW5nQnl0ZXMpICYmICFfLmlzRXF1YWwocGVuZGluZ0J5dGVzLCAnbm9kZXgnKSkge1xuICAgICAgcmV0dXJuIHJldHVyblZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBuZXR3b3JrIHRyYWZmaWMgZGF0YTogJyR7ZGF0YX0nYCk7XG4gICAgfVxuICB9KTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHtcbiAgY29tbWFuZHMsIGhlbHBlcnMsIFNVUFBPUlRFRF9QRVJGT1JNQU5DRV9EQVRBX1RZUEVTLCBDUFVfS0VZUywgTUVNT1JZX0tFWVMsXG4gIEJBVFRFUllfS0VZUywgTkVUV09SS19LRVlTLFxufTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7QUFBQSxNQUFxQkMsT0FBTyxHQUFHLEVBQS9CO0FBQUEsTUFBbUNDLFVBQVUsR0FBRyxFQUFoRDs7O0FBRUEsTUFBTUMsWUFBWSxHQUFHLENBQ25CLENBQUMsYUFBRCxFQUFnQixZQUFoQixFQUE4QixTQUE5QixFQUF5QyxXQUF6QyxFQUFzRCxTQUF0RCxFQUFpRSxXQUFqRSxFQUE4RSxZQUE5RSxFQUE0RixnQkFBNUYsQ0FEbUIsRUFFbkIsQ0FBQyxJQUFELEVBQU8sWUFBUCxFQUFxQixJQUFyQixFQUEyQixJQUEzQixFQUFpQyxJQUFqQyxFQUF1QyxJQUF2QyxFQUE2QyxJQUE3QyxFQUFtRCxnQkFBbkQsQ0FGbUIsQ0FBckI7O0FBSUEsTUFBTUMsUUFBUSxHQUFHLENBQUMsTUFBRCxFQUFTLFFBQVQsQ0FBakI7O0FBQ0EsTUFBTUMsWUFBWSxHQUFHLENBQUMsT0FBRCxDQUFyQjs7QUFDQSxNQUFNQyxXQUFXLEdBQUcsQ0FDbEIsbUJBRGtCLEVBQ0csb0JBREgsRUFDeUIsb0JBRHpCLEVBRWxCLGlCQUZrQixFQUVD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
@@ -13,7 +13,7 @@ var _lodash = _interopRequireDefault(require("lodash"));
13
13
 
14
14
  var _asyncbox = require("asyncbox");
15
15
 
16
- var _support = require("@appium/support");
16
+ var _support = require("appium/support");
17
17
 
18
18
  var _teen_process = require("teen_process");
19
19
 
@@ -307,4 +307,4 @@ var _default = commands;
307
307
  exports.default = _default;require('source-map-support').install();
308
308
 
309
309
 
310
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3JlY29yZHNjcmVlbi5qcyIsIm5hbWVzIjpbImNvbW1hbmRzIiwiUkVUUllfUEFVU0UiLCJSRVRSWV9USU1FT1VUIiwiTUFYX1JFQ09SRElOR19USU1FX1NFQyIsIk1BWF9USU1FX1NFQyIsIkRFRkFVTFRfUkVDT1JESU5HX1RJTUVfU0VDIiwiUFJPQ0VTU19TSFVURE9XTl9USU1FT1VUIiwiU0NSRUVOUkVDT1JEX0JJTkFSWSIsIkRFRkFVTFRfRVhUIiwiTUlOX0VNVUxBVE9SX0FQSV9MRVZFTCIsIkZGTVBFR19CSU5BUlkiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJ1cGxvYWRSZWNvcmRlZE1lZGlhIiwibG9jYWxGaWxlIiwicmVtb3RlUGF0aCIsInVwbG9hZE9wdGlvbnMiLCJfIiwiaXNFbXB0eSIsInV0aWwiLCJ0b0luTWVtb3J5QmFzZTY0IiwidG9TdHJpbmciLCJ1c2VyIiwicGFzcyIsIm1ldGhvZCIsImhlYWRlcnMiLCJmaWxlRmllbGROYW1lIiwiZm9ybUZpZWxkcyIsIm9wdGlvbnMiLCJhdXRoIiwibmV0IiwidXBsb2FkRmlsZSIsInZlcmlmeVNjcmVlblJlY29yZElzU3VwcG9ydGVkIiwiYWRiIiwiaXNFbXVsYXRvciIsImFwaUxldmVsIiwiZ2V0QXBpTGV2ZWwiLCJFcnJvciIsInNjaGVkdWxlU2NyZWVuUmVjb3JkIiwicmVjb3JkaW5nUHJvcGVydGllcyIsImxvZyIsInN0b3BwZWQiLCJ0aW1lciIsInZpZGVvU2l6ZSIsImJpdFJhdGUiLCJ0aW1lTGltaXQiLCJidWdSZXBvcnQiLCJjdXJyZW50VGltZUxpbWl0IiwiaGFzVmFsdWUiLCJjdXJyZW50VGltZUxpbWl0SW50IiwicGFyc2VJbnQiLCJpc05hTiIsInBhdGhPbkRldmljZSIsInV1aWRWNCIsInN1YnN0cmluZyIsInJlY29yZGluZ1Byb2MiLCJzY3JlZW5yZWNvcmQiLCJvbiIsImN1cnJlbnREdXJhdGlvbiIsImdldER1cmF0aW9uIiwiYXNTZWNvbmRzIiwidG9GaXhlZCIsImRlYnVnIiwidGltZUxpbWl0SW50IiwiY2h1bmtEdXJhdGlvbiIsImNhdGNoIiwiZSIsImVycm9yIiwic3RhY2siLCJzdGFydCIsImZpbGVFeGlzdHMiLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwicmVjb3JkcyIsInB1c2giLCJyZWNvcmRpbmdQcm9jZXNzIiwibWVyZ2VTY3JlZW5SZWNvcmRzIiwibWVkaWFGaWxlcyIsImZzIiwid2hpY2giLCJjb25maWdDb250ZW50IiwibWFwIiwieCIsImpvaW4iLCJjb25maWdGaWxlIiwicGF0aCIsInJlc29sdmUiLCJkaXJuYW1lIiwid3JpdGVGaWxlIiwicmVzdWx0IiwiTWF0aCIsImZsb29yIiwiRGF0ZSIsImFyZ3MiLCJpbmZvIiwidGVybWluYXRlQmFja2dyb3VuZFNjcmVlblJlY29yZGluZyIsImZvcmNlIiwicGlkcyIsImdldFBJRHNCeU5hbWUiLCJwIiwic2hlbGwiLCJlcnIiLCJtZXNzYWdlIiwic3RhcnRSZWNvcmRpbmdTY3JlZW4iLCJmb3JjZVJlc3RhcnQiLCJzdG9wUmVjb3JkaW5nU2NyZWVuIiwid2FybiIsIl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzIiwicmVjb3JkIiwicmltcmFmIiwidGltZW91dCIsInBhcnNlRmxvYXQiLCJ0aW1pbmciLCJUaW1lciIsImlzUnVubmluZyIsInN0b3AiLCJlcnJvckFuZFRocm93IiwidG1wUm9vdCIsInRlbXBEaXIiLCJvcGVuRGlyIiwibG9jYWxSZWNvcmRzIiwicG9zaXgiLCJiYXNlbmFtZSIsInB1bGwiLCJsYXN0IiwicmVzdWx0RmlsZVBhdGgiLCJsZW5ndGgiLCJzaXplIiwic3RhdCIsInRvUmVhZGFibGVTaXplU3RyaW5nIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL3JlY29yZHNjcmVlbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgd2FpdEZvckNvbmRpdGlvbiB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IHV0aWwsIGZzLCBuZXQsIHRlbXBEaXIsIHN5c3RlbSwgdGltaW5nIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuY29uc3QgUkVUUllfUEFVU0UgPSAzMDA7XG5jb25zdCBSRVRSWV9USU1FT1VUID0gNTAwMDtcbmNvbnN0IE1BWF9SRUNPUkRJTkdfVElNRV9TRUMgPSA2MCAqIDM7XG5jb25zdCBNQVhfVElNRV9TRUMgPSA2MCAqIDMwO1xuY29uc3QgREVGQVVMVF9SRUNPUkRJTkdfVElNRV9TRUMgPSBNQVhfUkVDT1JESU5HX1RJTUVfU0VDO1xuY29uc3QgUFJPQ0VTU19TSFVURE9XTl9USU1FT1VUID0gMTAgKiAxMDAwO1xuY29uc3QgU0NSRUVOUkVDT1JEX0JJTkFSWSA9ICdzY3JlZW5yZWNvcmQnO1xuY29uc3QgREVGQVVMVF9FWFQgPSAnLm1wNCc7XG5jb25zdCBNSU5fRU1VTEFUT1JfQVBJX0xFVkVMID0gMjc7XG5jb25zdCBGRk1QRUdfQklOQVJZID0gYGZmbXBlZyR7c3lzdGVtLmlzV2luZG93cygpID8gJy5leGUnIDogJyd9YDtcblxuYXN5bmMgZnVuY3Rpb24gdXBsb2FkUmVjb3JkZWRNZWRpYSAobG9jYWxGaWxlLCByZW1vdGVQYXRoID0gbnVsbCwgdXBsb2FkT3B0aW9ucyA9IHt9KSB7XG4gIGlmIChfLmlzRW1wdHkocmVtb3RlUGF0aCkpIHtcbiAgICByZXR1cm4gKGF3YWl0IHV0aWwudG9Jbk1lbW9yeUJhc2U2NChsb2NhbEZpbGUpKS50b1N0cmluZygpO1xuICB9XG5cbiAgY29uc3Qge3VzZXIsIHBhc3MsIG1ldGhvZCwgaGVhZGVycywgZmlsZUZpZWxkTmFtZSwgZm9ybUZpZWxkc30gPSB1cGxvYWRPcHRpb25zO1xuICBjb25zdCBvcHRpb25zID0ge1xuICAgIG1ldGhvZDogbWV0aG9kIHx8ICdQVVQnLFxuICAgIGhlYWRlcnMsXG4gICAgZmlsZUZpZWxkTmFtZSxcbiAgICBmb3JtRmllbGRzLFxuICB9O1xuICBpZiAodXNlciAmJiBwYXNzKSB7XG4gICAgb3B0aW9ucy5hdXRoID0ge3VzZXIsIHBhc3N9O1xuICB9XG4gIGF3YWl0IG5ldC51cGxvYWRGaWxlKGxvY2FsRmlsZSwgcmVtb3RlUGF0aCwgb3B0aW9ucyk7XG4gIHJldHVybiAnJztcbn1cblxuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5U2NyZWVuUmVjb3JkSXNTdXBwb3J0ZWQgKGFkYiwgaXNFbXVsYXRvcikge1xuICBjb25zdCBhcGlMZXZlbCA9IGF3YWl0IGFkYi5nZXRBcGlMZXZlbCgpO1xuICBpZiAoaXNFbXVsYXRvciAmJiBhcGlMZXZlbCA8IE1JTl9FTVVMQVRPUl9BUElfTEVWRUwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNjcmVlbiByZWNvcmRpbmcgZG9lcyBub3Qgd29yayBvbiBlbXVsYXRvcnMgcnVubmluZyBBbmRyb2lkIEFQSSBsZXZlbCBsZXNzIHRoYW4gJHtNSU5fRU1VTEFUT1JfQVBJX0xFVkVMfWApO1xuICB9XG4gIGlmIChhcGlMZXZlbCA8IDE5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTY3JlZW4gcmVjb3JkaW5nIG5vdCBhdmFpbGFibGUgb24gQVBJIExldmVsICR7YXBpTGV2ZWx9LiBNaW5pbXVtIEFQSSBMZXZlbCBpcyAxOS5gKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzY2hlZHVsZVNjcmVlblJlY29yZCAoYWRiLCByZWNvcmRpbmdQcm9wZXJ0aWVzLCBsb2cgPSBudWxsKSB7XG4gIGlmIChyZWNvcmRpbmdQcm9wZXJ0aWVzLnN0b3BwZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7XG4gICAgdGltZXIsXG4gICAgdmlkZW9TaXplLFxuICAgIGJpdFJhdGUsXG4gICAgdGltZUxpbWl0LFxuICAgIGJ1Z1JlcG9ydCxcbiAgfSA9IHJlY29yZGluZ1Byb3BlcnRpZXM7XG5cbiAgbGV0IGN1cnJlbnRUaW1lTGltaXQgPSBNQVhfUkVDT1JESU5HX1RJTUVfU0VDO1xuICBpZiAodXRpbC5oYXNWYWx1ZShyZWNvcmRpbmdQcm9wZXJ0aWVzLmN1cnJlbnRUaW1lTGltaXQpKSB7XG4gICAgY29uc3QgY3VycmVudFRpbWVMaW1pdEludCA9IHBhcnNlSW50KHJlY29yZGluZ1Byb3BlcnRpZXMuY3VycmVudFRpbWVMaW1pdCwgMTApO1xuICAgIGlmICghaXNOYU4oY3VycmVudFRpbWVMaW1pdEludCkgJiYgY3VycmVudFRpbWVMaW1pdEludCA8IE1BWF9SRUNPUkRJTkdfVElNRV9TRUMpIHtcbiAgICAgIGN1cnJlbnRUaW1lTGltaXQgPSBjdXJyZW50VGltZUxpbWl0SW50O1xuICAgIH1cbiAgfVxuICBjb25zdCBwYXRoT25EZXZpY2UgPSBgL3NkY2FyZC8ke3V0aWwudXVpZFY0KCkuc3Vic3RyaW5nKDAsIDgpfSR7REVGQVVMVF9FWFR9YDtcbiAgY29uc3QgcmVjb3JkaW5nUHJvYyA9IGFkYi5zY3JlZW5yZWNvcmQocGF0aE9uRGV2aWNlLCB7XG4gICAgdmlkZW9TaXplLFxuICAgIGJpdFJhdGUsXG4gICAgdGltZUxpbWl0OiBjdXJyZW50VGltZUxpbWl0LFxuICAgIGJ1Z1JlcG9ydCxcbiAgfSk7XG5cbiAgcmVjb3JkaW5nUHJvYy5vbignZW5kJywgKCkgPT4ge1xuICAgIGlmIChyZWNvcmRpbmdQcm9wZXJ0aWVzLnN0b3BwZWQgfHwgIXV0aWwuaGFzVmFsdWUodGltZUxpbWl0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50RHVyYXRpb24gPSB0aW1lci5nZXREdXJhdGlvbigpLmFzU2Vjb25kcy50b0ZpeGVkKDApO1xuICAgIGxvZz8uZGVidWcoYFRoZSBvdmVyYWxsIHNjcmVlbiByZWNvcmRpbmcgZHVyYXRpb24gaXMgJHtjdXJyZW50RHVyYXRpb259cyBzbyBmYXJgKTtcbiAgICBjb25zdCB0aW1lTGltaXRJbnQgPSBwYXJzZUludCh0aW1lTGltaXQsIDEwKTtcbiAgICBpZiAoaXNOYU4odGltZUxpbWl0SW50KSB8fCBjdXJyZW50RHVyYXRpb24gPj0gdGltZUxpbWl0SW50KSB7XG4gICAgICBsb2c/LmRlYnVnKCdUaGVyZSBpcyBubyBuZWVkIHRvIHN0YXJ0IHRoZSBuZXh0IHJlY29yZGluZyBjaHVuaycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJlY29yZGluZ1Byb3BlcnRpZXMuY3VycmVudFRpbWVMaW1pdCA9IHRpbWVMaW1pdEludCAtIGN1cnJlbnREdXJhdGlvbjtcbiAgICBjb25zdCBjaHVua0R1cmF0aW9uID0gcmVjb3JkaW5nUHJvcGVydGllcy5jdXJyZW50VGltZUxpbWl0IDwgTUFYX1JFQ09SRElOR19USU1FX1NFQ1xuICAgICAgPyByZWNvcmRpbmdQcm9wZXJ0aWVzLmN1cnJlbnRUaW1lTGltaXRcbiAgICAgIDogTUFYX1JFQ09SRElOR19USU1FX1NFQztcbiAgICBsb2c/LmRlYnVnKGBTdGFydGluZyB0aGUgbmV4dCAke2NodW5rRHVyYXRpb259cy1jaHVuayBgICtcbiAgICAgIGBvZiBzY3JlZW4gcmVjb3JkaW5nIGluIG9yZGVyIHRvIGFjaGlldmUgJHt0aW1lTGltaXRJbnR9cyB0b3RhbCBkdXJhdGlvbmApO1xuICAgIHNjaGVkdWxlU2NyZWVuUmVjb3JkKGFkYiwgcmVjb3JkaW5nUHJvcGVydGllcywgbG9nKVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGxvZz8uZXJyb3IoZS5zdGFjayk7XG4gICAgICAgIHJlY29yZGluZ1Byb3BlcnRpZXMuc3RvcHBlZCA9IHRydWU7XG4gICAgICB9KTtcbiAgfSk7XG5cbiAgYXdhaXQgcmVjb3JkaW5nUHJvYy5zdGFydCgwKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IGF3YWl0IGFkYi5maWxlRXhpc3RzKHBhdGhPbkRldmljZSksXG4gICAgICB7d2FpdE1zOiBSRVRSWV9USU1FT1VULCBpbnRlcnZhbE1zOiBSRVRSWV9QQVVTRX0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZXhwZWN0ZWQgc2NyZWVuIHJlY29yZCBmaWxlICcke3BhdGhPbkRldmljZX0nIGRvZXMgbm90IGV4aXN0IGFmdGVyICR7UkVUUllfVElNRU9VVH1tcy4gYCArXG4gICAgICBgSXMgJHtTQ1JFRU5SRUNPUkRfQklOQVJZfSB1dGlsaXR5IGF2YWlsYWJsZSBhbmQgb3BlcmF0aW9uYWwgb24gdGhlIGRldmljZSB1bmRlciB0ZXN0P2ApO1xuICB9XG5cbiAgcmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRzLnB1c2gocGF0aE9uRGV2aWNlKTtcbiAgcmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRpbmdQcm9jZXNzID0gcmVjb3JkaW5nUHJvYztcbn1cblxuYXN5bmMgZnVuY3Rpb24gbWVyZ2VTY3JlZW5SZWNvcmRzIChtZWRpYUZpbGVzLCBsb2cgPSBudWxsKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMud2hpY2goRkZNUEVHX0JJTkFSWSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7RkZNUEVHX0JJTkFSWX0gdXRpbGl0eSBpcyBub3QgYXZhaWxhYmxlIGluIFBBVEguIFBsZWFzZSBpbnN0YWxsIGl0IGZyb20gaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy9gKTtcbiAgfVxuICBjb25zdCBjb25maWdDb250ZW50ID0gbWVkaWFGaWxlc1xuICAgIC5tYXAoKHgpID0+IGBmaWxlICcke3h9J2ApXG4gICAgLmpvaW4oJ1xcbicpO1xuICBjb25zdCBjb25maWdGaWxlID0gcGF0aC5yZXNvbHZlKHBhdGguZGlybmFtZShtZWRpYUZpbGVzWzBdKSwgJ2NvbmZpZy50eHQnKTtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKGNvbmZpZ0ZpbGUsIGNvbmZpZ0NvbnRlbnQsICd1dGY4Jyk7XG4gIGxvZz8uZGVidWcoYEdlbmVyYXRlZCBmZm1wZWcgbWVyZ2luZyBjb25maWcgJyR7Y29uZmlnRmlsZX0nIHdpdGggaXRlbXM6XFxuJHtjb25maWdDb250ZW50fWApO1xuICBjb25zdCByZXN1bHQgPSBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKG1lZGlhRmlsZXNbMF0pLCBgbWVyZ2VfJHtNYXRoLmZsb29yKG5ldyBEYXRlKCkpfSR7REVGQVVMVF9FWFR9YCk7XG4gIGNvbnN0IGFyZ3MgPSBbJy1zYWZlJywgJzAnLCAnLWYnLCAnY29uY2F0JywgJy1pJywgY29uZmlnRmlsZSwgJy1jJywgJ2NvcHknLCByZXN1bHRdO1xuICBsb2c/LmluZm8oYEluaXRpYXRpbmcgc2NyZWVuIHJlY29yZHMgbWVyZ2luZyB1c2luZyB0aGUgY29tbWFuZCAnJHtGRk1QRUdfQklOQVJZfSAke2FyZ3Muam9pbignICcpfSdgKTtcbiAgYXdhaXQgZXhlYyhGRk1QRUdfQklOQVJZLCBhcmdzKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdGVybWluYXRlQmFja2dyb3VuZFNjcmVlblJlY29yZGluZyAoYWRiLCBmb3JjZSA9IHRydWUpIHtcbiAgY29uc3QgcGlkcyA9IChhd2FpdCBhZGIuZ2V0UElEc0J5TmFtZShTQ1JFRU5SRUNPUkRfQklOQVJZKSlcbiAgICAubWFwKChwKSA9PiBgJHtwfWApO1xuICBpZiAoXy5pc0VtcHR5KHBpZHMpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBhZGIuc2hlbGwoWydraWxsJywgZm9yY2UgPyAnLTE1JyA6ICctMicsIC4uLnBpZHNdKTtcbiAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IF8uaXNFbXB0eShhd2FpdCBhZGIuZ2V0UElEc0J5TmFtZShTQ1JFRU5SRUNPUkRfQklOQVJZKSksIHtcbiAgICAgIHdhaXRNczogUFJPQ0VTU19TSFVURE9XTl9USU1FT1VULFxuICAgICAgaW50ZXJ2YWxNczogNTAwLFxuICAgIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBzdG9wIHRoZSBiYWNrZ3JvdW5kIHNjcmVlbiByZWNvcmRpbmc6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn1cblxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0YXJ0UmVjb3JkaW5nT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcmVtb3RlUGF0aCAtIFRoZSBwYXRoIHRvIHRoZSByZW1vdGUgbG9jYXRpb24sIHdoZXJlIHRoZSBjYXB0dXJlZCB2aWRlbyBzaG91bGQgYmUgdXBsb2FkZWQuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHByb3RvY29scyBhcmUgc3VwcG9ydGVkOiBodHRwL2h0dHBzLCBmdHAuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdWxsIG9yIGVtcHR5IHN0cmluZyB2YWx1ZSAodGhlIGRlZmF1bHQgc2V0dGluZykgbWVhbnMgdGhlIGNvbnRlbnQgb2YgcmVzdWx0aW5nXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlIHNob3VsZCBiZSBlbmNvZGVkIGFzIEJhc2U2NCBhbmQgcGFzc2VkIGFzIHRoZSBlbmRwb3VudCByZXNwb25zZSB2YWx1ZS5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB0aGUgZ2VuZXJhdGVkIG1lZGlhIGZpbGUgaXMgdG9vIGJpZyB0b1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml0IGludG8gdGhlIGF2YWlsYWJsZSBwcm9jZXNzIG1lbW9yeS5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIG9ubHkgaGFzIGFuIGVmZmVjdCBpZiB0aGVyZSBpcyBzY3JlZW4gcmVjb3JkaW5nIHByb2Nlc3MgaW4gcHJvZ3JlZXNzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYGZvcmNlUmVzdGFydGAgcGFyYW1ldGVyIGlzIG5vdCBzZXQgdG8gYHRydWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1c2VyIC0gVGhlIG5hbWUgb2YgdGhlIHVzZXIgZm9yIHRoZSByZW1vdGUgYXV0aGVudGljYXRpb24uIE9ubHkgd29ya3MgaWYgYHJlbW90ZVBhdGhgIGlzIHByb3ZpZGVkLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYXNzIC0gVGhlIHBhc3N3b3JkIGZvciB0aGUgcmVtb3RlIGF1dGhlbnRpY2F0aW9uLiBPbmx5IHdvcmtzIGlmIGByZW1vdGVQYXRoYCBpcyBwcm92aWRlZC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWV0aG9kIFtQVVRdIC0gVGhlIGh0dHAgbXVsdGlwYXJ0IHVwbG9hZCBtZXRob2QgbmFtZS4gT25seSB3b3JrcyBpZiBgcmVtb3RlUGF0aGAgaXMgcHJvdmlkZWQuXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGhlYWRlcnMgLSBBZGRpdGlvbmFsIGhlYWRlcnMgbWFwcGluZyBmb3IgbXVsdGlwYXJ0IGh0dHAocykgdXBsb2Fkc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmaWxlRmllbGROYW1lIFtmaWxlXSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtIGZpZWxkLCB3aGVyZSB0aGUgZmlsZSBjb250ZW50IEJMT0Igc2hvdWxkIGJlIHN0b3JlZCBmb3JcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwKHMpIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7P09iamVjdHxBcnJheTxQYWlyPn0gZm9ybUZpZWxkcyAtIEFkZGl0aW9uYWwgZm9ybSBmaWVsZHMgZm9yIG11bHRpcGFydCBodHRwKHMpIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmlkZW9TaXplIC0gVGhlIGZvcm1hdCBpcyB3aWR0aHhoZWlnaHQuXG4gKiAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBkZXZpY2UncyBuYXRpdmUgZGlzcGxheSByZXNvbHV0aW9uIChpZiBzdXBwb3J0ZWQpLFxuICogICAgICAgICAgICAgICAgICAxMjgweDcyMCBpZiBub3QuIEZvciBiZXN0IHJlc3VsdHMsXG4gKiAgICAgICAgICAgICAgICAgIHVzZSBhIHNpemUgc3VwcG9ydGVkIGJ5IHlvdXIgZGV2aWNlJ3MgQWR2YW5jZWQgVmlkZW8gQ29kaW5nIChBVkMpIGVuY29kZXIuXG4gKiAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBcIjEyODB4NzIwXCJcbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGJ1Z1JlcG9ydCAtIFNldCBpdCB0byBgdHJ1ZWAgaW4gb3JkZXIgdG8gZGlzcGxheSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZSB2aWRlbyBvdmVybGF5LFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyBhIHRpbWVzdGFtcCwgdGhhdCBpcyBoZWxwZnVsIGluIHZpZGVvcyBjYXB0dXJlZCB0byBpbGx1c3RyYXRlIGJ1Z3MuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCBzaW5jZSBBUEkgbGV2ZWwgMjcgKEFuZHJvaWQgUCkuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8bnVtYmVyfSB0aW1lTGltaXQgLSBUaGUgbWF4aW11bSByZWNvcmRpbmcgdGltZSwgaW4gc2Vjb25kcy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTgwICgzIG1pbnV0ZXMpLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG1heGltdW0gdmFsdWUgaXMgMTgwMCAoMzAgbWludXRlcykuIElmIHRoZSBwYXNzZWQgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIDE4MCB0aGVuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYWxnb3JpdGhtIHdpbGwgdHJ5IHRvIHNjaGVkdWxlIG11bHRpcGxlIHNjcmVlbiByZWNvcmRpbmcgY2h1bmtzIGFuZCBtZXJnZSB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdGluZyB2aWRlb3MgaW50byBhIHNpbmdsZSBtZWRpYSBmaWxlIHVzaW5nIGBmZm1wZWdgIHV0aWxpdHkuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgdXRpbGl0eSBpcyBub3QgYXZhaWxhYmxlIGluIFBBVEggdGhlbiB0aGUgbW9zdCByZWNlbnQgc2NyZWVuIHJlY29yZGluZyBjaHVuayBpc1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29pbmcgdG8gYmUgcmV0dXJuZWQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8bnVtYmVyfSBiaXRSYXRlIC0gVGhlIHZpZGVvIGJpdCByYXRlIGZvciB0aGUgdmlkZW8sIGluIGJpdHMgcGVyIHNlY29uZC5cbiAqICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDQwMDAwMDAgKDQgTWJpdC9zKS4gWW91IGNhbiBpbmNyZWFzZSB0aGUgYml0IHJhdGUgdG8gaW1wcm92ZSB2aWRlbyBxdWFsaXR5LFxuICogICAgICAgICAgICAgICAgYnV0IGRvaW5nIHNvIHJlc3VsdHMgaW4gbGFyZ2VyIG1vdmllIGZpbGVzLlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gZm9yY2VSZXN0YXJ0IC0gV2hldGhlciB0byB0cnkgdG8gY2F0Y2ggYW5kIHVwbG9hZC9yZXR1cm4gdGhlIGN1cnJlbnRseSBydW5uaW5nIHNjcmVlbiByZWNvcmRpbmdcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChgZmFsc2VgLCB0aGUgZGVmYXVsdCBzZXR0aW5nKSBvciBpZ25vcmUgdGhlIHJlc3VsdCBvZiBpdCBhbmQgc3RhcnQgYSBuZXcgcmVjb3JkaW5nXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbW1lZGlhdGVseSAoYHRydWVgKS5cbiAqL1xuXG4vKipcbiAqIFJlY29yZCB0aGUgZGlzcGxheSBvZiBhIHJlYWwgZGV2aWNlcyBydW5uaW5nIEFuZHJvaWQgNC40IChBUEkgbGV2ZWwgMTkpIGFuZCBoaWdoZXIuXG4gKiBFbXVsYXRvcnMgYXJlIHN1cHBvcnRlZCBzaW5jZSBBUEkgbGV2ZWwgMjcgKEFuZHJvaWQgUCkuXG4gKiBJdCByZWNvcmRzIHNjcmVlbiBhY3Rpdml0eSB0byBhbiBNUEVHLTQgZmlsZS4gQXVkaW8gaXMgbm90IHJlY29yZGVkIHdpdGggdGhlIHZpZGVvIGZpbGUuXG4gKiBJZiBzY3JlZW4gcmVjb3JkaW5nIGhhcyBiZWVuIGFscmVhZHkgc3RhcnRlZCB0aGVuIHRoZSBjb21tYW5kIHdpbGwgc3RvcCBpdCBmb3JjZWZ1bGx5IGFuZCBzdGFydCBhIG5ldyBvbmUuXG4gKiBUaGUgcHJldmlvdXNseSByZWNvcmRlZCB2aWRlbyBmaWxlIHdpbGwgYmUgZGVsZXRlZC5cbiAqXG4gKiBAcGFyYW0gez9TdGFydFJlY29yZGluZ09wdGlvbnN9IG9wdGlvbnMgLSBUaGUgYXZhaWxhYmxlIG9wdGlvbnMuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQtZW5jb2RlZCBjb250ZW50IG9mIHRoZSByZWNvcmRlZCBtZWRpYSBmaWxlIGlmXG4gKiAgICAgICAgICAgICAgICAgICBhbnkgc2NyZWVuIHJlY29yZGluZyBpcyBjdXJyZW50bHkgcnVubmluZyBvciBhbiBlbXB0eSBzdHJpbmcuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgc2NyZWVuIHJlY29yZGluZyBoYXMgZmFpbGVkIHRvIHN0YXJ0IG9yIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlIGRldmljZSB1bmRlciB0ZXN0LlxuICovXG5jb21tYW5kcy5zdGFydFJlY29yZGluZ1NjcmVlbiA9IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0UmVjb3JkaW5nU2NyZWVuIChvcHRpb25zID0ge30pIHtcbiAgYXdhaXQgdmVyaWZ5U2NyZWVuUmVjb3JkSXNTdXBwb3J0ZWQodGhpcy5hZGIsIHRoaXMuaXNFbXVsYXRvcigpKTtcblxuICBsZXQgcmVzdWx0ID0gJyc7XG4gIGNvbnN0IHt2aWRlb1NpemUsIHRpbWVMaW1pdCA9IERFRkFVTFRfUkVDT1JESU5HX1RJTUVfU0VDLCBidWdSZXBvcnQsIGJpdFJhdGUsIGZvcmNlUmVzdGFydH0gPSBvcHRpb25zO1xuICBpZiAoIWZvcmNlUmVzdGFydCkge1xuICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMuc3RvcFJlY29yZGluZ1NjcmVlbihvcHRpb25zKTtcbiAgfVxuXG4gIGlmIChhd2FpdCB0ZXJtaW5hdGVCYWNrZ3JvdW5kU2NyZWVuUmVjb3JkaW5nKHRoaXMuYWRiLCB0cnVlKSkge1xuICAgIHRoaXMubG9nLndhcm4oYFRoZXJlIHdlcmUgc29tZSAke1NDUkVFTlJFQ09SRF9CSU5BUll9IHByb2Nlc3MgbGVmdG92ZXJzIHJ1bm5pbmcgYCArXG4gICAgICBgaW4gdGhlIGJhY2tncm91bmQuIE1ha2Ugc3VyZSB5b3Ugc3RvcCBzY3JlZW4gcmVjb3JkaW5nIGVhY2ggdGltZSBhZnRlciBpdCBpcyBzdGFydGVkLCBgICtcbiAgICAgIGBvdGhlcndpc2UgdGhlIHJlY29yZGVkIG1lZGlhIG1pZ2h0IHF1aWNrbHkgZXhjZWVkIGFsbCB0aGUgZnJlZSBzcGFjZSBvbiB0aGUgZGV2aWNlIHVuZGVyIHRlc3QuYCk7XG4gIH1cblxuICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzKSkge1xuICAgIGZvciAoY29uc3QgcmVjb3JkIG9mICh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZHMgfHwgW10pKSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5yaW1yYWYocmVjb3JkKTtcbiAgICB9XG4gICAgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcyA9IG51bGw7XG4gIH1cblxuICBjb25zdCB0aW1lb3V0ID0gcGFyc2VGbG9hdCh0aW1lTGltaXQpO1xuICBpZiAoaXNOYU4odGltZW91dCkgfHwgdGltZW91dCA+IE1BWF9USU1FX1NFQyB8fCB0aW1lb3V0IDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSB0aW1lTGltaXQgdmFsdWUgbXVzdCBiZSBpbiByYW5nZSBbMSwgJHtNQVhfVElNRV9TRUN9XSBzZWNvbmRzLiBgICtcbiAgICAgIGBUaGUgdmFsdWUgb2YgJyR7dGltZUxpbWl0fScgaGFzIGJlZW4gcGFzc2VkIGluc3RlYWQuYCk7XG4gIH1cblxuICB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzID0ge1xuICAgIHRpbWVyOiBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKSxcbiAgICB2aWRlb1NpemUsXG4gICAgdGltZUxpbWl0LFxuICAgIGN1cnJlbnRUaW1lTGltaXQ6IHRpbWVMaW1pdCxcbiAgICBiaXRSYXRlLFxuICAgIGJ1Z1JlcG9ydCxcbiAgICByZWNvcmRzOiBbXSxcbiAgICByZWNvcmRpbmdQcm9jZXNzOiBudWxsLFxuICAgIHN0b3BwZWQ6IGZhbHNlLFxuICB9O1xuICBhd2FpdCBzY2hlZHVsZVNjcmVlblJlY29yZCh0aGlzLmFkYiwgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcywgdGhpcy5sb2cpO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdG9wUmVjb3JkaW5nT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcmVtb3RlUGF0aCAtIFRoZSBwYXRoIHRvIHRoZSByZW1vdGUgbG9jYXRpb24sIHdoZXJlIHRoZSByZXN1bHRpbmcgdmlkZW8gc2hvdWxkIGJlIHVwbG9hZGVkLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBwcm90b2NvbHMgYXJlIHN1cHBvcnRlZDogaHR0cC9odHRwcywgZnRwLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVsbCBvciBlbXB0eSBzdHJpbmcgdmFsdWUgKHRoZSBkZWZhdWx0IHNldHRpbmcpIG1lYW5zIHRoZSBjb250ZW50IG9mIHJlc3VsdGluZ1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBzaG91bGQgYmUgZW5jb2RlZCBhcyBCYXNlNjQgYW5kIHBhc3NlZCBhcyB0aGUgZW5kcG91bnQgcmVzcG9uc2UgdmFsdWUuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgdGhlIGdlbmVyYXRlZCBtZWRpYSBmaWxlIGlzIHRvbyBiaWcgdG9cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpdCBpbnRvIHRoZSBhdmFpbGFibGUgcHJvY2VzcyBtZW1vcnkuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVzZXIgLSBUaGUgbmFtZSBvZiB0aGUgdXNlciBmb3IgdGhlIHJlbW90ZSBhdXRoZW50aWNhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFzcyAtIFRoZSBwYXNzd29yZCBmb3IgdGhlIHJlbW90ZSBhdXRoZW50aWNhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWV0aG9kIC0gVGhlIGh0dHAgbXVsdGlwYXJ0IHVwbG9hZCBtZXRob2QgbmFtZS4gVGhlICdQVVQnIG9uZSBpcyB1c2VkIGJ5IGRlZmF1bHQuXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGhlYWRlcnMgLSBBZGRpdGlvbmFsIGhlYWRlcnMgbWFwcGluZyBmb3IgbXVsdGlwYXJ0IGh0dHAocykgdXBsb2Fkc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmaWxlRmllbGROYW1lIFtmaWxlXSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtIGZpZWxkLCB3aGVyZSB0aGUgZmlsZSBjb250ZW50IEJMT0Igc2hvdWxkIGJlIHN0b3JlZCBmb3JcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwKHMpIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7P09iamVjdHxBcnJheTxQYWlyPn0gZm9ybUZpZWxkcyAtIEFkZGl0aW9uYWwgZm9ybSBmaWVsZHMgZm9yIG11bHRpcGFydCBodHRwKHMpIHVwbG9hZHNcbiAqL1xuXG4vKipcbiAqIFN0b3AgcmVjb3JkaW5nIHRoZSBzY3JlZW4uXG4gKiBJZiBubyBzY3JlZW4gcmVjb3JkaW5nIGhhcyBiZWVuIHN0YXJ0ZWQgYmVmb3JlIHRoZW4gdGhlIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gez9TdG9wUmVjb3JkaW5nT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBhdmFpbGFibGUgb3B0aW9ucy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEJhc2U2NC1lbmNvZGVkIGNvbnRlbnQgb2YgdGhlIHJlY29yZGVkIG1lZGlhIGZpbGUgaWYgJ3JlbW90ZVBhdGgnXG4gKiAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgaXMgZmFsc3kgb3IgYW4gZW1wdHkgc3RyaW5nLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBnZXR0aW5nIHRoZSBuYW1lIG9mIGEgbWVkaWEgZmlsZVxuICogICAgICAgICAgICAgICAgIG9yIHRoZSBmaWxlIGNvbnRlbnQgY2Fubm90IGJlIHVwbG9hZGVkIHRvIHRoZSByZW1vdGUgbG9jYXRpb25cbiAqICAgICAgICAgICAgICAgICBvciBzY3JlZW4gcmVjb3JkaW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlIGRldmljZSB1bmRlciB0ZXN0LlxuICovXG5jb21tYW5kcy5zdG9wUmVjb3JkaW5nU2NyZWVuID0gYXN5bmMgZnVuY3Rpb24gc3RvcFJlY29yZGluZ1NjcmVlbiAob3B0aW9ucyA9IHt9KSB7XG4gIGF3YWl0IHZlcmlmeVNjcmVlblJlY29yZElzU3VwcG9ydGVkKHRoaXMuYWRiLCB0aGlzLmlzRW11bGF0b3IoKSk7XG5cbiAgaWYgKCFfLmlzRW1wdHkodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcykpIHtcbiAgICB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLnN0b3BwZWQgPSB0cnVlO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCB0ZXJtaW5hdGVCYWNrZ3JvdW5kU2NyZWVuUmVjb3JkaW5nKHRoaXMuYWRiLCBmYWxzZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMubG9nLndhcm4oZXJyLm1lc3NhZ2UpO1xuICAgIGlmICghXy5pc0VtcHR5KHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMpKSB7XG4gICAgICB0aGlzLmxvZy53YXJuKCdUaGUgcmVzdWx0aW5nIHZpZGVvIG1pZ2h0IGJlIGNvcnJ1cHRlZCcpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChfLmlzRW1wdHkodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcykpIHtcbiAgICB0aGlzLmxvZy5pbmZvKGBTY3JlZW4gcmVjb3JkaW5nIGhhcyBub3QgYmVlbiBwcmV2aW91c2x5IHN0YXJ0ZWQgYnkgQXBwaXVtLiBUaGVyZSBpcyBub3RoaW5nIHRvIHN0b3BgKTtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBpZiAodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRpbmdQcm9jZXNzICYmIHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3JkaW5nUHJvY2Vzcy5pc1J1bm5pbmcpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRpbmdQcm9jZXNzLnN0b3AoJ1NJR0lOVCcsIFBST0NFU1NfU0hVVERPV05fVElNRU9VVCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVW5hYmxlIHRvIHN0b3Agc2NyZWVuIHJlY29yZGluZyB3aXRoaW4gJHtQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVR9bXNgKTtcbiAgICB9XG4gICAgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRpbmdQcm9jZXNzID0gbnVsbDtcbiAgfVxuXG4gIGlmIChfLmlzRW1wdHkodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRzKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYE5vIHNjcmVlbiByZWNvcmRpbmdzIGhhdmUgYmVlbiBzdG9yZWQgb24gdGhlIGRldmljZSBzbyBmYXIuIGAgK1xuICAgICAgYEFyZSB5b3Ugc3VyZSB0aGUgJHtTQ1JFRU5SRUNPUkRfQklOQVJZfSB1dGlsaXR5IHdvcmtzIGFzIGV4cGVjdGVkP2ApO1xuICB9XG5cbiAgY29uc3QgdG1wUm9vdCA9IGF3YWl0IHRlbXBEaXIub3BlbkRpcigpO1xuICB0cnkge1xuICAgIGNvbnN0IGxvY2FsUmVjb3JkcyA9IFtdO1xuICAgIGZvciAoY29uc3QgcGF0aE9uRGV2aWNlIG9mIHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3Jkcykge1xuICAgICAgbG9jYWxSZWNvcmRzLnB1c2gocGF0aC5yZXNvbHZlKHRtcFJvb3QsIHBhdGgucG9zaXguYmFzZW5hbWUocGF0aE9uRGV2aWNlKSkpO1xuICAgICAgYXdhaXQgdGhpcy5hZGIucHVsbChwYXRoT25EZXZpY2UsIF8ubGFzdChsb2NhbFJlY29yZHMpKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnJpbXJhZihwYXRoT25EZXZpY2UpO1xuICAgIH1cbiAgICBsZXQgcmVzdWx0RmlsZVBhdGggPSBfLmxhc3QobG9jYWxSZWNvcmRzKTtcbiAgICBpZiAobG9jYWxSZWNvcmRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oYEdvdCAke2xvY2FsUmVjb3Jkcy5sZW5ndGh9IHNjcmVlbiByZWNvcmRpbmdzLiBUcnlpbmcgdG8gbWVyZ2UgdGhlbWApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0RmlsZVBhdGggPSBhd2FpdCBtZXJnZVNjcmVlblJlY29yZHMobG9jYWxSZWNvcmRzLCB0aGlzLmxvZyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYENhbm5vdCBtZXJnZSB0aGUgcmVjb3JkZWQgZmlsZXMuIFRoZSBtb3N0IHJlY2VudCBzY3JlZW4gcmVjb3JkaW5nIGlzIGdvaW5nIHRvIGJlIHJldHVybmVkIGFzIHRoZSByZXN1bHQuIGAgK1xuICAgICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChfLmlzRW1wdHkob3B0aW9ucy5yZW1vdGVQYXRoKSkge1xuICAgICAgY29uc3Qge3NpemV9ID0gYXdhaXQgZnMuc3RhdChyZXN1bHRGaWxlUGF0aCk7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgVGhlIHNpemUgb2YgdGhlIHJlc3VsdGluZyBzY3JlZW4gcmVjb3JkaW5nIGlzICR7dXRpbC50b1JlYWRhYmxlU2l6ZVN0cmluZyhzaXplKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHVwbG9hZFJlY29yZGVkTWVkaWEocmVzdWx0RmlsZVBhdGgsIG9wdGlvbnMucmVtb3RlUGF0aCwgb3B0aW9ucyk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMucmltcmFmKHRtcFJvb3QpO1xuICAgIHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMgPSBudWxsO1xuICB9XG59O1xuXG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7O0FBRUEsTUFBTUMsV0FBVyxHQUFHLEdBQXBCO0FBQ0EsTUFBTUMsYUFBYSxHQUFHLElBQXRCO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFwQztBQUNBLE1BQU1D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
310
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3JlY29yZHNjcmVlbi5qcyIsIm5hbWVzIjpbImNvbW1hbmRzIiwiUkVUUllfUEFVU0UiLCJSRVRSWV9USU1FT1VUIiwiTUFYX1JFQ09SRElOR19USU1FX1NFQyIsIk1BWF9USU1FX1NFQyIsIkRFRkFVTFRfUkVDT1JESU5HX1RJTUVfU0VDIiwiUFJPQ0VTU19TSFVURE9XTl9USU1FT1VUIiwiU0NSRUVOUkVDT1JEX0JJTkFSWSIsIkRFRkFVTFRfRVhUIiwiTUlOX0VNVUxBVE9SX0FQSV9MRVZFTCIsIkZGTVBFR19CSU5BUlkiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJ1cGxvYWRSZWNvcmRlZE1lZGlhIiwibG9jYWxGaWxlIiwicmVtb3RlUGF0aCIsInVwbG9hZE9wdGlvbnMiLCJfIiwiaXNFbXB0eSIsInV0aWwiLCJ0b0luTWVtb3J5QmFzZTY0IiwidG9TdHJpbmciLCJ1c2VyIiwicGFzcyIsIm1ldGhvZCIsImhlYWRlcnMiLCJmaWxlRmllbGROYW1lIiwiZm9ybUZpZWxkcyIsIm9wdGlvbnMiLCJhdXRoIiwibmV0IiwidXBsb2FkRmlsZSIsInZlcmlmeVNjcmVlblJlY29yZElzU3VwcG9ydGVkIiwiYWRiIiwiaXNFbXVsYXRvciIsImFwaUxldmVsIiwiZ2V0QXBpTGV2ZWwiLCJFcnJvciIsInNjaGVkdWxlU2NyZWVuUmVjb3JkIiwicmVjb3JkaW5nUHJvcGVydGllcyIsImxvZyIsInN0b3BwZWQiLCJ0aW1lciIsInZpZGVvU2l6ZSIsImJpdFJhdGUiLCJ0aW1lTGltaXQiLCJidWdSZXBvcnQiLCJjdXJyZW50VGltZUxpbWl0IiwiaGFzVmFsdWUiLCJjdXJyZW50VGltZUxpbWl0SW50IiwicGFyc2VJbnQiLCJpc05hTiIsInBhdGhPbkRldmljZSIsInV1aWRWNCIsInN1YnN0cmluZyIsInJlY29yZGluZ1Byb2MiLCJzY3JlZW5yZWNvcmQiLCJvbiIsImN1cnJlbnREdXJhdGlvbiIsImdldER1cmF0aW9uIiwiYXNTZWNvbmRzIiwidG9GaXhlZCIsImRlYnVnIiwidGltZUxpbWl0SW50IiwiY2h1bmtEdXJhdGlvbiIsImNhdGNoIiwiZSIsImVycm9yIiwic3RhY2siLCJzdGFydCIsIndhaXRGb3JDb25kaXRpb24iLCJmaWxlRXhpc3RzIiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsInJlY29yZHMiLCJwdXNoIiwicmVjb3JkaW5nUHJvY2VzcyIsIm1lcmdlU2NyZWVuUmVjb3JkcyIsIm1lZGlhRmlsZXMiLCJmcyIsIndoaWNoIiwiY29uZmlnQ29udGVudCIsIm1hcCIsIngiLCJqb2luIiwiY29uZmlnRmlsZSIsInBhdGgiLCJyZXNvbHZlIiwiZGlybmFtZSIsIndyaXRlRmlsZSIsInJlc3VsdCIsIk1hdGgiLCJmbG9vciIsIkRhdGUiLCJhcmdzIiwiaW5mbyIsImV4ZWMiLCJ0ZXJtaW5hdGVCYWNrZ3JvdW5kU2NyZWVuUmVjb3JkaW5nIiwiZm9yY2UiLCJwaWRzIiwiZ2V0UElEc0J5TmFtZSIsInAiLCJzaGVsbCIsImVyciIsIm1lc3NhZ2UiLCJzdGFydFJlY29yZGluZ1NjcmVlbiIsImZvcmNlUmVzdGFydCIsInN0b3BSZWNvcmRpbmdTY3JlZW4iLCJ3YXJuIiwiX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMiLCJyZWNvcmQiLCJyaW1yYWYiLCJ0aW1lb3V0IiwicGFyc2VGbG9hdCIsInRpbWluZyIsIlRpbWVyIiwiaXNSdW5uaW5nIiwic3RvcCIsImVycm9yQW5kVGhyb3ciLCJ0bXBSb290IiwidGVtcERpciIsIm9wZW5EaXIiLCJsb2NhbFJlY29yZHMiLCJwb3NpeCIsImJhc2VuYW1lIiwicHVsbCIsImxhc3QiLCJyZXN1bHRGaWxlUGF0aCIsImxlbmd0aCIsInNpemUiLCJzdGF0IiwidG9SZWFkYWJsZVNpemVTdHJpbmciXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvcmVjb3Jkc2NyZWVuLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgdXRpbCwgZnMsIG5ldCwgdGVtcERpciwgc3lzdGVtLCB0aW1pbmcgfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbmNvbnN0IFJFVFJZX1BBVVNFID0gMzAwO1xuY29uc3QgUkVUUllfVElNRU9VVCA9IDUwMDA7XG5jb25zdCBNQVhfUkVDT1JESU5HX1RJTUVfU0VDID0gNjAgKiAzO1xuY29uc3QgTUFYX1RJTUVfU0VDID0gNjAgKiAzMDtcbmNvbnN0IERFRkFVTFRfUkVDT1JESU5HX1RJTUVfU0VDID0gTUFYX1JFQ09SRElOR19USU1FX1NFQztcbmNvbnN0IFBST0NFU1NfU0hVVERPV05fVElNRU9VVCA9IDEwICogMTAwMDtcbmNvbnN0IFNDUkVFTlJFQ09SRF9CSU5BUlkgPSAnc2NyZWVucmVjb3JkJztcbmNvbnN0IERFRkFVTFRfRVhUID0gJy5tcDQnO1xuY29uc3QgTUlOX0VNVUxBVE9SX0FQSV9MRVZFTCA9IDI3O1xuY29uc3QgRkZNUEVHX0JJTkFSWSA9IGBmZm1wZWcke3N5c3RlbS5pc1dpbmRvd3MoKSA/ICcuZXhlJyA6ICcnfWA7XG5cbmFzeW5jIGZ1bmN0aW9uIHVwbG9hZFJlY29yZGVkTWVkaWEgKGxvY2FsRmlsZSwgcmVtb3RlUGF0aCA9IG51bGwsIHVwbG9hZE9wdGlvbnMgPSB7fSkge1xuICBpZiAoXy5pc0VtcHR5KHJlbW90ZVBhdGgpKSB7XG4gICAgcmV0dXJuIChhd2FpdCB1dGlsLnRvSW5NZW1vcnlCYXNlNjQobG9jYWxGaWxlKSkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGNvbnN0IHt1c2VyLCBwYXNzLCBtZXRob2QsIGhlYWRlcnMsIGZpbGVGaWVsZE5hbWUsIGZvcm1GaWVsZHN9ID0gdXBsb2FkT3B0aW9ucztcbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICBtZXRob2Q6IG1ldGhvZCB8fCAnUFVUJyxcbiAgICBoZWFkZXJzLFxuICAgIGZpbGVGaWVsZE5hbWUsXG4gICAgZm9ybUZpZWxkcyxcbiAgfTtcbiAgaWYgKHVzZXIgJiYgcGFzcykge1xuICAgIG9wdGlvbnMuYXV0aCA9IHt1c2VyLCBwYXNzfTtcbiAgfVxuICBhd2FpdCBuZXQudXBsb2FkRmlsZShsb2NhbEZpbGUsIHJlbW90ZVBhdGgsIG9wdGlvbnMpO1xuICByZXR1cm4gJyc7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeVNjcmVlblJlY29yZElzU3VwcG9ydGVkIChhZGIsIGlzRW11bGF0b3IpIHtcbiAgY29uc3QgYXBpTGV2ZWwgPSBhd2FpdCBhZGIuZ2V0QXBpTGV2ZWwoKTtcbiAgaWYgKGlzRW11bGF0b3IgJiYgYXBpTGV2ZWwgPCBNSU5fRU1VTEFUT1JfQVBJX0xFVkVMKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTY3JlZW4gcmVjb3JkaW5nIGRvZXMgbm90IHdvcmsgb24gZW11bGF0b3JzIHJ1bm5pbmcgQW5kcm9pZCBBUEkgbGV2ZWwgbGVzcyB0aGFuICR7TUlOX0VNVUxBVE9SX0FQSV9MRVZFTH1gKTtcbiAgfVxuICBpZiAoYXBpTGV2ZWwgPCAxOSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU2NyZWVuIHJlY29yZGluZyBub3QgYXZhaWxhYmxlIG9uIEFQSSBMZXZlbCAke2FwaUxldmVsfS4gTWluaW11bSBBUEkgTGV2ZWwgaXMgMTkuYCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NoZWR1bGVTY3JlZW5SZWNvcmQgKGFkYiwgcmVjb3JkaW5nUHJvcGVydGllcywgbG9nID0gbnVsbCkge1xuICBpZiAocmVjb3JkaW5nUHJvcGVydGllcy5zdG9wcGVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIHRpbWVyLFxuICAgIHZpZGVvU2l6ZSxcbiAgICBiaXRSYXRlLFxuICAgIHRpbWVMaW1pdCxcbiAgICBidWdSZXBvcnQsXG4gIH0gPSByZWNvcmRpbmdQcm9wZXJ0aWVzO1xuXG4gIGxldCBjdXJyZW50VGltZUxpbWl0ID0gTUFYX1JFQ09SRElOR19USU1FX1NFQztcbiAgaWYgKHV0aWwuaGFzVmFsdWUocmVjb3JkaW5nUHJvcGVydGllcy5jdXJyZW50VGltZUxpbWl0KSkge1xuICAgIGNvbnN0IGN1cnJlbnRUaW1lTGltaXRJbnQgPSBwYXJzZUludChyZWNvcmRpbmdQcm9wZXJ0aWVzLmN1cnJlbnRUaW1lTGltaXQsIDEwKTtcbiAgICBpZiAoIWlzTmFOKGN1cnJlbnRUaW1lTGltaXRJbnQpICYmIGN1cnJlbnRUaW1lTGltaXRJbnQgPCBNQVhfUkVDT1JESU5HX1RJTUVfU0VDKSB7XG4gICAgICBjdXJyZW50VGltZUxpbWl0ID0gY3VycmVudFRpbWVMaW1pdEludDtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGF0aE9uRGV2aWNlID0gYC9zZGNhcmQvJHt1dGlsLnV1aWRWNCgpLnN1YnN0cmluZygwLCA4KX0ke0RFRkFVTFRfRVhUfWA7XG4gIGNvbnN0IHJlY29yZGluZ1Byb2MgPSBhZGIuc2NyZWVucmVjb3JkKHBhdGhPbkRldmljZSwge1xuICAgIHZpZGVvU2l6ZSxcbiAgICBiaXRSYXRlLFxuICAgIHRpbWVMaW1pdDogY3VycmVudFRpbWVMaW1pdCxcbiAgICBidWdSZXBvcnQsXG4gIH0pO1xuXG4gIHJlY29yZGluZ1Byb2Mub24oJ2VuZCcsICgpID0+IHtcbiAgICBpZiAocmVjb3JkaW5nUHJvcGVydGllcy5zdG9wcGVkIHx8ICF1dGlsLmhhc1ZhbHVlKHRpbWVMaW1pdCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudER1cmF0aW9uID0gdGltZXIuZ2V0RHVyYXRpb24oKS5hc1NlY29uZHMudG9GaXhlZCgwKTtcbiAgICBsb2c/LmRlYnVnKGBUaGUgb3ZlcmFsbCBzY3JlZW4gcmVjb3JkaW5nIGR1cmF0aW9uIGlzICR7Y3VycmVudER1cmF0aW9ufXMgc28gZmFyYCk7XG4gICAgY29uc3QgdGltZUxpbWl0SW50ID0gcGFyc2VJbnQodGltZUxpbWl0LCAxMCk7XG4gICAgaWYgKGlzTmFOKHRpbWVMaW1pdEludCkgfHwgY3VycmVudER1cmF0aW9uID49IHRpbWVMaW1pdEludCkge1xuICAgICAgbG9nPy5kZWJ1ZygnVGhlcmUgaXMgbm8gbmVlZCB0byBzdGFydCB0aGUgbmV4dCByZWNvcmRpbmcgY2h1bmsnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZWNvcmRpbmdQcm9wZXJ0aWVzLmN1cnJlbnRUaW1lTGltaXQgPSB0aW1lTGltaXRJbnQgLSBjdXJyZW50RHVyYXRpb247XG4gICAgY29uc3QgY2h1bmtEdXJhdGlvbiA9IHJlY29yZGluZ1Byb3BlcnRpZXMuY3VycmVudFRpbWVMaW1pdCA8IE1BWF9SRUNPUkRJTkdfVElNRV9TRUNcbiAgICAgID8gcmVjb3JkaW5nUHJvcGVydGllcy5jdXJyZW50VGltZUxpbWl0XG4gICAgICA6IE1BWF9SRUNPUkRJTkdfVElNRV9TRUM7XG4gICAgbG9nPy5kZWJ1ZyhgU3RhcnRpbmcgdGhlIG5leHQgJHtjaHVua0R1cmF0aW9ufXMtY2h1bmsgYCArXG4gICAgICBgb2Ygc2NyZWVuIHJlY29yZGluZyBpbiBvcmRlciB0byBhY2hpZXZlICR7dGltZUxpbWl0SW50fXMgdG90YWwgZHVyYXRpb25gKTtcbiAgICBzY2hlZHVsZVNjcmVlblJlY29yZChhZGIsIHJlY29yZGluZ1Byb3BlcnRpZXMsIGxvZylcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBsb2c/LmVycm9yKGUuc3RhY2spO1xuICAgICAgICByZWNvcmRpbmdQcm9wZXJ0aWVzLnN0b3BwZWQgPSB0cnVlO1xuICAgICAgfSk7XG4gIH0pO1xuXG4gIGF3YWl0IHJlY29yZGluZ1Byb2Muc3RhcnQoMCk7XG4gIHRyeSB7XG4gICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbihhc3luYyAoKSA9PiBhd2FpdCBhZGIuZmlsZUV4aXN0cyhwYXRoT25EZXZpY2UpLFxuICAgICAge3dhaXRNczogUkVUUllfVElNRU9VVCwgaW50ZXJ2YWxNczogUkVUUllfUEFVU0V9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGV4cGVjdGVkIHNjcmVlbiByZWNvcmQgZmlsZSAnJHtwYXRoT25EZXZpY2V9JyBkb2VzIG5vdCBleGlzdCBhZnRlciAke1JFVFJZX1RJTUVPVVR9bXMuIGAgK1xuICAgICAgYElzICR7U0NSRUVOUkVDT1JEX0JJTkFSWX0gdXRpbGl0eSBhdmFpbGFibGUgYW5kIG9wZXJhdGlvbmFsIG9uIHRoZSBkZXZpY2UgdW5kZXIgdGVzdD9gKTtcbiAgfVxuXG4gIHJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3Jkcy5wdXNoKHBhdGhPbkRldmljZSk7XG4gIHJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3JkaW5nUHJvY2VzcyA9IHJlY29yZGluZ1Byb2M7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1lcmdlU2NyZWVuUmVjb3JkcyAobWVkaWFGaWxlcywgbG9nID0gbnVsbCkge1xuICB0cnkge1xuICAgIGF3YWl0IGZzLndoaWNoKEZGTVBFR19CSU5BUlkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke0ZGTVBFR19CSU5BUll9IHV0aWxpdHkgaXMgbm90IGF2YWlsYWJsZSBpbiBQQVRILiBQbGVhc2UgaW5zdGFsbCBpdCBmcm9tIGh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvYCk7XG4gIH1cbiAgY29uc3QgY29uZmlnQ29udGVudCA9IG1lZGlhRmlsZXNcbiAgICAubWFwKCh4KSA9PiBgZmlsZSAnJHt4fSdgKVxuICAgIC5qb2luKCdcXG4nKTtcbiAgY29uc3QgY29uZmlnRmlsZSA9IHBhdGgucmVzb2x2ZShwYXRoLmRpcm5hbWUobWVkaWFGaWxlc1swXSksICdjb25maWcudHh0Jyk7XG4gIGF3YWl0IGZzLndyaXRlRmlsZShjb25maWdGaWxlLCBjb25maWdDb250ZW50LCAndXRmOCcpO1xuICBsb2c/LmRlYnVnKGBHZW5lcmF0ZWQgZmZtcGVnIG1lcmdpbmcgY29uZmlnICcke2NvbmZpZ0ZpbGV9JyB3aXRoIGl0ZW1zOlxcbiR7Y29uZmlnQ29udGVudH1gKTtcbiAgY29uc3QgcmVzdWx0ID0gcGF0aC5yZXNvbHZlKHBhdGguZGlybmFtZShtZWRpYUZpbGVzWzBdKSwgYG1lcmdlXyR7TWF0aC5mbG9vcihuZXcgRGF0ZSgpKX0ke0RFRkFVTFRfRVhUfWApO1xuICBjb25zdCBhcmdzID0gWyctc2FmZScsICcwJywgJy1mJywgJ2NvbmNhdCcsICctaScsIGNvbmZpZ0ZpbGUsICctYycsICdjb3B5JywgcmVzdWx0XTtcbiAgbG9nPy5pbmZvKGBJbml0aWF0aW5nIHNjcmVlbiByZWNvcmRzIG1lcmdpbmcgdXNpbmcgdGhlIGNvbW1hbmQgJyR7RkZNUEVHX0JJTkFSWX0gJHthcmdzLmpvaW4oJyAnKX0nYCk7XG4gIGF3YWl0IGV4ZWMoRkZNUEVHX0JJTkFSWSwgYXJncyk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRlcm1pbmF0ZUJhY2tncm91bmRTY3JlZW5SZWNvcmRpbmcgKGFkYiwgZm9yY2UgPSB0cnVlKSB7XG4gIGNvbnN0IHBpZHMgPSAoYXdhaXQgYWRiLmdldFBJRHNCeU5hbWUoU0NSRUVOUkVDT1JEX0JJTkFSWSkpXG4gICAgLm1hcCgocCkgPT4gYCR7cH1gKTtcbiAgaWYgKF8uaXNFbXB0eShwaWRzKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgYWRiLnNoZWxsKFsna2lsbCcsIGZvcmNlID8gJy0xNScgOiAnLTInLCAuLi5waWRzXSk7XG4gICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbihhc3luYyAoKSA9PiBfLmlzRW1wdHkoYXdhaXQgYWRiLmdldFBJRHNCeU5hbWUoU0NSRUVOUkVDT1JEX0JJTkFSWSkpLCB7XG4gICAgICB3YWl0TXM6IFBST0NFU1NfU0hVVERPV05fVElNRU9VVCxcbiAgICAgIGludGVydmFsTXM6IDUwMCxcbiAgICB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gc3RvcCB0aGUgYmFja2dyb3VuZCBzY3JlZW4gcmVjb3JkaW5nOiAke2Vyci5tZXNzYWdlfWApO1xuICB9XG59XG5cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydFJlY29yZGluZ09wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHJlbW90ZVBhdGggLSBUaGUgcGF0aCB0byB0aGUgcmVtb3RlIGxvY2F0aW9uLCB3aGVyZSB0aGUgY2FwdHVyZWQgdmlkZW8gc2hvdWxkIGJlIHVwbG9hZGVkLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBwcm90b2NvbHMgYXJlIHN1cHBvcnRlZDogaHR0cC9odHRwcywgZnRwLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVsbCBvciBlbXB0eSBzdHJpbmcgdmFsdWUgKHRoZSBkZWZhdWx0IHNldHRpbmcpIG1lYW5zIHRoZSBjb250ZW50IG9mIHJlc3VsdGluZ1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBzaG91bGQgYmUgZW5jb2RlZCBhcyBCYXNlNjQgYW5kIHBhc3NlZCBhcyB0aGUgZW5kcG91bnQgcmVzcG9uc2UgdmFsdWUuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgdGhlIGdlbmVyYXRlZCBtZWRpYSBmaWxlIGlzIHRvbyBiaWcgdG9cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpdCBpbnRvIHRoZSBhdmFpbGFibGUgcHJvY2VzcyBtZW1vcnkuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBvbmx5IGhhcyBhbiBlZmZlY3QgaWYgdGhlcmUgaXMgc2NyZWVuIHJlY29yZGluZyBwcm9jZXNzIGluIHByb2dyZWVzc1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGBmb3JjZVJlc3RhcnRgIHBhcmFtZXRlciBpcyBub3Qgc2V0IHRvIGB0cnVlYC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXNlciAtIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGZvciB0aGUgcmVtb3RlIGF1dGhlbnRpY2F0aW9uLiBPbmx5IHdvcmtzIGlmIGByZW1vdGVQYXRoYCBpcyBwcm92aWRlZC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFzcyAtIFRoZSBwYXNzd29yZCBmb3IgdGhlIHJlbW90ZSBhdXRoZW50aWNhdGlvbi4gT25seSB3b3JrcyBpZiBgcmVtb3RlUGF0aGAgaXMgcHJvdmlkZWQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1ldGhvZCBbUFVUXSAtIFRoZSBodHRwIG11bHRpcGFydCB1cGxvYWQgbWV0aG9kIG5hbWUuIE9ubHkgd29ya3MgaWYgYHJlbW90ZVBhdGhgIGlzIHByb3ZpZGVkLlxuICogQHByb3BlcnR5IHs/T2JqZWN0fSBoZWFkZXJzIC0gQWRkaXRpb25hbCBoZWFkZXJzIG1hcHBpbmcgZm9yIG11bHRpcGFydCBodHRwKHMpIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmlsZUZpZWxkTmFtZSBbZmlsZV0gLSBUaGUgbmFtZSBvZiB0aGUgZm9ybSBmaWVsZCwgd2hlcmUgdGhlIGZpbGUgY29udGVudCBCTE9CIHNob3VsZCBiZSBzdG9yZWQgZm9yXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cChzKSB1cGxvYWRzXG4gKiBAcHJvcGVydHkgez9PYmplY3R8QXJyYXk8UGFpcj59IGZvcm1GaWVsZHMgLSBBZGRpdGlvbmFsIGZvcm0gZmllbGRzIGZvciBtdWx0aXBhcnQgaHR0cChzKSB1cGxvYWRzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZpZGVvU2l6ZSAtIFRoZSBmb3JtYXQgaXMgd2lkdGh4aGVpZ2h0LlxuICogICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgZGV2aWNlJ3MgbmF0aXZlIGRpc3BsYXkgcmVzb2x1dGlvbiAoaWYgc3VwcG9ydGVkKSxcbiAqICAgICAgICAgICAgICAgICAgMTI4MHg3MjAgaWYgbm90LiBGb3IgYmVzdCByZXN1bHRzLFxuICogICAgICAgICAgICAgICAgICB1c2UgYSBzaXplIHN1cHBvcnRlZCBieSB5b3VyIGRldmljZSdzIEFkdmFuY2VkIFZpZGVvIENvZGluZyAoQVZDKSBlbmNvZGVyLlxuICogICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgXCIxMjgweDcyMFwiXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBidWdSZXBvcnQgLSBTZXQgaXQgdG8gYHRydWVgIGluIG9yZGVyIHRvIGRpc3BsYXkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGUgdmlkZW8gb3ZlcmxheSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgYSB0aW1lc3RhbXAsIHRoYXQgaXMgaGVscGZ1bCBpbiB2aWRlb3MgY2FwdHVyZWQgdG8gaWxsdXN0cmF0ZSBidWdzLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gaXMgb25seSBzdXBwb3J0ZWQgc2luY2UgQVBJIGxldmVsIDI3IChBbmRyb2lkIFApLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdGltZUxpbWl0IC0gVGhlIG1heGltdW0gcmVjb3JkaW5nIHRpbWUsIGluIHNlY29uZHMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDE4MCAoMyBtaW51dGVzKS5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBtYXhpbXVtIHZhbHVlIGlzIDE4MDAgKDMwIG1pbnV0ZXMpLiBJZiB0aGUgcGFzc2VkIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiAxODAgdGhlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGFsZ29yaXRobSB3aWxsIHRyeSB0byBzY2hlZHVsZSBtdWx0aXBsZSBzY3JlZW4gcmVjb3JkaW5nIGNodW5rcyBhbmQgbWVyZ2UgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRpbmcgdmlkZW9zIGludG8gYSBzaW5nbGUgbWVkaWEgZmlsZSB1c2luZyBgZmZtcGVnYCB1dGlsaXR5LlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHV0aWxpdHkgaXMgbm90IGF2YWlsYWJsZSBpbiBQQVRIIHRoZW4gdGhlIG1vc3QgcmVjZW50IHNjcmVlbiByZWNvcmRpbmcgY2h1bmsgaXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvaW5nIHRvIGJlIHJldHVybmVkLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gYml0UmF0ZSAtIFRoZSB2aWRlbyBiaXQgcmF0ZSBmb3IgdGhlIHZpZGVvLCBpbiBiaXRzIHBlciBzZWNvbmQuXG4gKiAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA0MDAwMDAwICg0IE1iaXQvcykuIFlvdSBjYW4gaW5jcmVhc2UgdGhlIGJpdCByYXRlIHRvIGltcHJvdmUgdmlkZW8gcXVhbGl0eSxcbiAqICAgICAgICAgICAgICAgIGJ1dCBkb2luZyBzbyByZXN1bHRzIGluIGxhcmdlciBtb3ZpZSBmaWxlcy5cbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGZvcmNlUmVzdGFydCAtIFdoZXRoZXIgdG8gdHJ5IHRvIGNhdGNoIGFuZCB1cGxvYWQvcmV0dXJuIHRoZSBjdXJyZW50bHkgcnVubmluZyBzY3JlZW4gcmVjb3JkaW5nXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYGZhbHNlYCwgdGhlIGRlZmF1bHQgc2V0dGluZykgb3IgaWdub3JlIHRoZSByZXN1bHQgb2YgaXQgYW5kIHN0YXJ0IGEgbmV3IHJlY29yZGluZ1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1tZWRpYXRlbHkgKGB0cnVlYCkuXG4gKi9cblxuLyoqXG4gKiBSZWNvcmQgdGhlIGRpc3BsYXkgb2YgYSByZWFsIGRldmljZXMgcnVubmluZyBBbmRyb2lkIDQuNCAoQVBJIGxldmVsIDE5KSBhbmQgaGlnaGVyLlxuICogRW11bGF0b3JzIGFyZSBzdXBwb3J0ZWQgc2luY2UgQVBJIGxldmVsIDI3IChBbmRyb2lkIFApLlxuICogSXQgcmVjb3JkcyBzY3JlZW4gYWN0aXZpdHkgdG8gYW4gTVBFRy00IGZpbGUuIEF1ZGlvIGlzIG5vdCByZWNvcmRlZCB3aXRoIHRoZSB2aWRlbyBmaWxlLlxuICogSWYgc2NyZWVuIHJlY29yZGluZyBoYXMgYmVlbiBhbHJlYWR5IHN0YXJ0ZWQgdGhlbiB0aGUgY29tbWFuZCB3aWxsIHN0b3AgaXQgZm9yY2VmdWxseSBhbmQgc3RhcnQgYSBuZXcgb25lLlxuICogVGhlIHByZXZpb3VzbHkgcmVjb3JkZWQgdmlkZW8gZmlsZSB3aWxsIGJlIGRlbGV0ZWQuXG4gKlxuICogQHBhcmFtIHs/U3RhcnRSZWNvcmRpbmdPcHRpb25zfSBvcHRpb25zIC0gVGhlIGF2YWlsYWJsZSBvcHRpb25zLlxuICogQHJldHVybnMge3N0cmluZ30gQmFzZTY0LWVuY29kZWQgY29udGVudCBvZiB0aGUgcmVjb3JkZWQgbWVkaWEgZmlsZSBpZlxuICogICAgICAgICAgICAgICAgICAgYW55IHNjcmVlbiByZWNvcmRpbmcgaXMgY3VycmVudGx5IHJ1bm5pbmcgb3IgYW4gZW1wdHkgc3RyaW5nLlxuICogQHRocm93cyB7RXJyb3J9IElmIHNjcmVlbiByZWNvcmRpbmcgaGFzIGZhaWxlZCB0byBzdGFydCBvciBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZSBkZXZpY2UgdW5kZXIgdGVzdC5cbiAqL1xuY29tbWFuZHMuc3RhcnRSZWNvcmRpbmdTY3JlZW4gPSBhc3luYyBmdW5jdGlvbiBzdGFydFJlY29yZGluZ1NjcmVlbiAob3B0aW9ucyA9IHt9KSB7XG4gIGF3YWl0IHZlcmlmeVNjcmVlblJlY29yZElzU3VwcG9ydGVkKHRoaXMuYWRiLCB0aGlzLmlzRW11bGF0b3IoKSk7XG5cbiAgbGV0IHJlc3VsdCA9ICcnO1xuICBjb25zdCB7dmlkZW9TaXplLCB0aW1lTGltaXQgPSBERUZBVUxUX1JFQ09SRElOR19USU1FX1NFQywgYnVnUmVwb3J0LCBiaXRSYXRlLCBmb3JjZVJlc3RhcnR9ID0gb3B0aW9ucztcbiAgaWYgKCFmb3JjZVJlc3RhcnQpIHtcbiAgICByZXN1bHQgPSBhd2FpdCB0aGlzLnN0b3BSZWNvcmRpbmdTY3JlZW4ob3B0aW9ucyk7XG4gIH1cblxuICBpZiAoYXdhaXQgdGVybWluYXRlQmFja2dyb3VuZFNjcmVlblJlY29yZGluZyh0aGlzLmFkYiwgdHJ1ZSkpIHtcbiAgICB0aGlzLmxvZy53YXJuKGBUaGVyZSB3ZXJlIHNvbWUgJHtTQ1JFRU5SRUNPUkRfQklOQVJZfSBwcm9jZXNzIGxlZnRvdmVycyBydW5uaW5nIGAgK1xuICAgICAgYGluIHRoZSBiYWNrZ3JvdW5kLiBNYWtlIHN1cmUgeW91IHN0b3Agc2NyZWVuIHJlY29yZGluZyBlYWNoIHRpbWUgYWZ0ZXIgaXQgaXMgc3RhcnRlZCwgYCArXG4gICAgICBgb3RoZXJ3aXNlIHRoZSByZWNvcmRlZCBtZWRpYSBtaWdodCBxdWlja2x5IGV4Y2VlZCBhbGwgdGhlIGZyZWUgc3BhY2Ugb24gdGhlIGRldmljZSB1bmRlciB0ZXN0LmApO1xuICB9XG5cbiAgaWYgKCFfLmlzRW1wdHkodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcykpIHtcbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiAodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcy5yZWNvcmRzIHx8IFtdKSkge1xuICAgICAgYXdhaXQgdGhpcy5hZGIucmltcmFmKHJlY29yZCk7XG4gICAgfVxuICAgIHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMgPSBudWxsO1xuICB9XG5cbiAgY29uc3QgdGltZW91dCA9IHBhcnNlRmxvYXQodGltZUxpbWl0KTtcbiAgaWYgKGlzTmFOKHRpbWVvdXQpIHx8IHRpbWVvdXQgPiBNQVhfVElNRV9TRUMgfHwgdGltZW91dCA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgdGltZUxpbWl0IHZhbHVlIG11c3QgYmUgaW4gcmFuZ2UgWzEsICR7TUFYX1RJTUVfU0VDfV0gc2Vjb25kcy4gYCArXG4gICAgICBgVGhlIHZhbHVlIG9mICcke3RpbWVMaW1pdH0nIGhhcyBiZWVuIHBhc3NlZCBpbnN0ZWFkLmApO1xuICB9XG5cbiAgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcyA9IHtcbiAgICB0aW1lcjogbmV3IHRpbWluZy5UaW1lcigpLnN0YXJ0KCksXG4gICAgdmlkZW9TaXplLFxuICAgIHRpbWVMaW1pdCxcbiAgICBjdXJyZW50VGltZUxpbWl0OiB0aW1lTGltaXQsXG4gICAgYml0UmF0ZSxcbiAgICBidWdSZXBvcnQsXG4gICAgcmVjb3JkczogW10sXG4gICAgcmVjb3JkaW5nUHJvY2VzczogbnVsbCxcbiAgICBzdG9wcGVkOiBmYWxzZSxcbiAgfTtcbiAgYXdhaXQgc2NoZWR1bGVTY3JlZW5SZWNvcmQodGhpcy5hZGIsIHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMsIHRoaXMubG9nKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RvcFJlY29yZGluZ09wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHJlbW90ZVBhdGggLSBUaGUgcGF0aCB0byB0aGUgcmVtb3RlIGxvY2F0aW9uLCB3aGVyZSB0aGUgcmVzdWx0aW5nIHZpZGVvIHNob3VsZCBiZSB1cGxvYWRlZC5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWQ6IGh0dHAvaHR0cHMsIGZ0cC5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bGwgb3IgZW1wdHkgc3RyaW5nIHZhbHVlICh0aGUgZGVmYXVsdCBzZXR0aW5nKSBtZWFucyB0aGUgY29udGVudCBvZiByZXN1bHRpbmdcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgc2hvdWxkIGJlIGVuY29kZWQgYXMgQmFzZTY0IGFuZCBwYXNzZWQgYXMgdGhlIGVuZHBvdW50IHJlc3BvbnNlIHZhbHVlLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHRoZSBnZW5lcmF0ZWQgbWVkaWEgZmlsZSBpcyB0b28gYmlnIHRvXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXQgaW50byB0aGUgYXZhaWxhYmxlIHByb2Nlc3MgbWVtb3J5LlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1c2VyIC0gVGhlIG5hbWUgb2YgdGhlIHVzZXIgZm9yIHRoZSByZW1vdGUgYXV0aGVudGljYXRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBhc3MgLSBUaGUgcGFzc3dvcmQgZm9yIHRoZSByZW1vdGUgYXV0aGVudGljYXRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1ldGhvZCAtIFRoZSBodHRwIG11bHRpcGFydCB1cGxvYWQgbWV0aG9kIG5hbWUuIFRoZSAnUFVUJyBvbmUgaXMgdXNlZCBieSBkZWZhdWx0LlxuICogQHByb3BlcnR5IHs/T2JqZWN0fSBoZWFkZXJzIC0gQWRkaXRpb25hbCBoZWFkZXJzIG1hcHBpbmcgZm9yIG11bHRpcGFydCBodHRwKHMpIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmlsZUZpZWxkTmFtZSBbZmlsZV0gLSBUaGUgbmFtZSBvZiB0aGUgZm9ybSBmaWVsZCwgd2hlcmUgdGhlIGZpbGUgY29udGVudCBCTE9CIHNob3VsZCBiZSBzdG9yZWQgZm9yXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cChzKSB1cGxvYWRzXG4gKiBAcHJvcGVydHkgez9PYmplY3R8QXJyYXk8UGFpcj59IGZvcm1GaWVsZHMgLSBBZGRpdGlvbmFsIGZvcm0gZmllbGRzIGZvciBtdWx0aXBhcnQgaHR0cChzKSB1cGxvYWRzXG4gKi9cblxuLyoqXG4gKiBTdG9wIHJlY29yZGluZyB0aGUgc2NyZWVuLlxuICogSWYgbm8gc2NyZWVuIHJlY29yZGluZyBoYXMgYmVlbiBzdGFydGVkIGJlZm9yZSB0aGVuIHRoZSBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHs/U3RvcFJlY29yZGluZ09wdGlvbnN9IG9wdGlvbnMgLSBUaGUgYXZhaWxhYmxlIG9wdGlvbnMuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQtZW5jb2RlZCBjb250ZW50IG9mIHRoZSByZWNvcmRlZCBtZWRpYSBmaWxlIGlmICdyZW1vdGVQYXRoJ1xuICogICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIGlzIGZhbHN5IG9yIGFuIGVtcHR5IHN0cmluZy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgZ2V0dGluZyB0aGUgbmFtZSBvZiBhIG1lZGlhIGZpbGVcbiAqICAgICAgICAgICAgICAgICBvciB0aGUgZmlsZSBjb250ZW50IGNhbm5vdCBiZSB1cGxvYWRlZCB0byB0aGUgcmVtb3RlIGxvY2F0aW9uXG4gKiAgICAgICAgICAgICAgICAgb3Igc2NyZWVuIHJlY29yZGluZyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZSBkZXZpY2UgdW5kZXIgdGVzdC5cbiAqL1xuY29tbWFuZHMuc3RvcFJlY29yZGluZ1NjcmVlbiA9IGFzeW5jIGZ1bmN0aW9uIHN0b3BSZWNvcmRpbmdTY3JlZW4gKG9wdGlvbnMgPSB7fSkge1xuICBhd2FpdCB2ZXJpZnlTY3JlZW5SZWNvcmRJc1N1cHBvcnRlZCh0aGlzLmFkYiwgdGhpcy5pc0VtdWxhdG9yKCkpO1xuXG4gIGlmICghXy5pc0VtcHR5KHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMpKSB7XG4gICAgdGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcy5zdG9wcGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgdGVybWluYXRlQmFja2dyb3VuZFNjcmVlblJlY29yZGluZyh0aGlzLmFkYiwgZmFsc2UpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLmxvZy53YXJuKGVyci5tZXNzYWdlKTtcbiAgICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzKSkge1xuICAgICAgdGhpcy5sb2cud2FybignVGhlIHJlc3VsdGluZyB2aWRlbyBtaWdodCBiZSBjb3JydXB0ZWQnKTtcbiAgICB9XG4gIH1cblxuICBpZiAoXy5pc0VtcHR5KHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMpKSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgU2NyZWVuIHJlY29yZGluZyBoYXMgbm90IGJlZW4gcHJldmlvdXNseSBzdGFydGVkIGJ5IEFwcGl1bS4gVGhlcmUgaXMgbm90aGluZyB0byBzdG9wYCk7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgaWYgKHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3JkaW5nUHJvY2VzcyAmJiB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZGluZ1Byb2Nlc3MuaXNSdW5uaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3JkaW5nUHJvY2Vzcy5zdG9wKCdTSUdJTlQnLCBQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYFVuYWJsZSB0byBzdG9wIHNjcmVlbiByZWNvcmRpbmcgd2l0aGluICR7UFJPQ0VTU19TSFVURE9XTl9USU1FT1VUfW1zYCk7XG4gICAgfVxuICAgIHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3JkaW5nUHJvY2VzcyA9IG51bGw7XG4gIH1cblxuICBpZiAoXy5pc0VtcHR5KHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMucmVjb3JkcykpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBObyBzY3JlZW4gcmVjb3JkaW5ncyBoYXZlIGJlZW4gc3RvcmVkIG9uIHRoZSBkZXZpY2Ugc28gZmFyLiBgICtcbiAgICAgIGBBcmUgeW91IHN1cmUgdGhlICR7U0NSRUVOUkVDT1JEX0JJTkFSWX0gdXRpbGl0eSB3b3JrcyBhcyBleHBlY3RlZD9gKTtcbiAgfVxuXG4gIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBsb2NhbFJlY29yZHMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBhdGhPbkRldmljZSBvZiB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzLnJlY29yZHMpIHtcbiAgICAgIGxvY2FsUmVjb3Jkcy5wdXNoKHBhdGgucmVzb2x2ZSh0bXBSb290LCBwYXRoLnBvc2l4LmJhc2VuYW1lKHBhdGhPbkRldmljZSkpKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnB1bGwocGF0aE9uRGV2aWNlLCBfLmxhc3QobG9jYWxSZWNvcmRzKSk7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5yaW1yYWYocGF0aE9uRGV2aWNlKTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdEZpbGVQYXRoID0gXy5sYXN0KGxvY2FsUmVjb3Jkcyk7XG4gICAgaWYgKGxvY2FsUmVjb3Jkcy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBHb3QgJHtsb2NhbFJlY29yZHMubGVuZ3RofSBzY3JlZW4gcmVjb3JkaW5ncy4gVHJ5aW5nIHRvIG1lcmdlIHRoZW1gKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdEZpbGVQYXRoID0gYXdhaXQgbWVyZ2VTY3JlZW5SZWNvcmRzKGxvY2FsUmVjb3JkcywgdGhpcy5sb2cpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBDYW5ub3QgbWVyZ2UgdGhlIHJlY29yZGVkIGZpbGVzLiBUaGUgbW9zdCByZWNlbnQgc2NyZWVuIHJlY29yZGluZyBpcyBnb2luZyB0byBiZSByZXR1cm5lZCBhcyB0aGUgcmVzdWx0LiBgICtcbiAgICAgICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXy5pc0VtcHR5KG9wdGlvbnMucmVtb3RlUGF0aCkpIHtcbiAgICAgIGNvbnN0IHtzaXplfSA9IGF3YWl0IGZzLnN0YXQocmVzdWx0RmlsZVBhdGgpO1xuICAgICAgdGhpcy5sb2cuZGVidWcoYFRoZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgc2NyZWVuIHJlY29yZGluZyBpcyAke3V0aWwudG9SZWFkYWJsZVNpemVTdHJpbmcoc2l6ZSl9YCk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB1cGxvYWRSZWNvcmRlZE1lZGlhKHJlc3VsdEZpbGVQYXRoLCBvcHRpb25zLnJlbW90ZVBhdGgsIG9wdGlvbnMpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGZzLnJpbXJhZih0bXBSb290KTtcbiAgICB0aGlzLl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzID0gbnVsbDtcbiAgfVxufTtcblxuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOztBQUVBLE1BQU1DLFdBQVcsR0FBRyxHQUFwQjtBQUNBLE1BQU1DLGFBQWEsR0FBRyxJQUF0QjtBQUNBLE1BQU1DLHNCQUFzQixH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
@@ -13,9 +13,9 @@ var _lodash = _interopRequireDefault(require("lodash"));
13
13
 
14
14
  var _teen_process = require("teen_process");
15
15
 
16
- var _support = require("@appium/support");
16
+ var _support = require("appium/support");
17
17
 
18
- var _baseDriver = require("@appium/base-driver");
18
+ var _driver = require("appium/driver");
19
19
 
20
20
  const ADB_SHELL_FEATURE = 'adb_shell';
21
21
  let commands = {};
@@ -31,7 +31,7 @@ commands.mobileShell = async function mobileShell(opts = {}) {
31
31
  } = opts;
32
32
 
33
33
  if (!_lodash.default.isString(command)) {
34
- throw new _baseDriver.errors.InvalidArgumentError(`The 'command' argument is mandatory`);
34
+ throw new _driver.errors.InvalidArgumentError(`The 'command' argument is mandatory`);
35
35
  }
36
36
 
37
37
  const adbArgs = [...this.adb.executable.defaultArgs, 'shell', command, ...(_lodash.default.isArray(args) ? args : [args])];
@@ -62,4 +62,4 @@ var _default = commands;
62
62
  exports.default = _default;require('source-map-support').install();
63
63
 
64
64
 
65
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3NoZWxsLmpzIiwibmFtZXMiOlsiQURCX1NIRUxMX0ZFQVRVUkUiLCJjb21tYW5kcyIsIm1vYmlsZVNoZWxsIiwib3B0cyIsImVuc3VyZUZlYXR1cmVFbmFibGVkIiwiY29tbWFuZCIsImFyZ3MiLCJ0aW1lb3V0IiwiaW5jbHVkZVN0ZGVyciIsIl8iLCJpc1N0cmluZyIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiYWRiQXJncyIsImFkYiIsImV4ZWN1dGFibGUiLCJkZWZhdWx0QXJncyIsImlzQXJyYXkiLCJsb2ciLCJkZWJ1ZyIsInBhdGgiLCJ1dGlsIiwicXVvdGUiLCJzdGRvdXQiLCJzdGRlcnIiLCJlcnIiLCJlcnJvckFuZFRocm93IiwibWVzc2FnZSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9zaGVsbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBBREJfU0hFTExfRkVBVFVSRSA9ICdhZGJfc2hlbGwnO1xuXG5sZXQgY29tbWFuZHMgPSB7fTtcblxuY29tbWFuZHMubW9iaWxlU2hlbGwgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTaGVsbCAob3B0cyA9IHt9KSB7XG4gIHRoaXMuZW5zdXJlRmVhdHVyZUVuYWJsZWQoQURCX1NIRUxMX0ZFQVRVUkUpO1xuXG4gIGNvbnN0IHtcbiAgICBjb21tYW5kLFxuICAgIGFyZ3MgPSBbXSxcbiAgICB0aW1lb3V0ID0gMjAwMDAsXG4gICAgaW5jbHVkZVN0ZGVycixcbiAgfSA9IG9wdHM7XG5cbiAgaWYgKCFfLmlzU3RyaW5nKGNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgVGhlICdjb21tYW5kJyBhcmd1bWVudCBpcyBtYW5kYXRvcnlgKTtcbiAgfVxuXG4gIGNvbnN0IGFkYkFyZ3MgPSBbXG4gICAgLi4udGhpcy5hZGIuZXhlY3V0YWJsZS5kZWZhdWx0QXJncyxcbiAgICAnc2hlbGwnLFxuICAgIGNvbW1hbmQsXG4gICAgLi4uKF8uaXNBcnJheShhcmdzKSA/IGFyZ3MgOiBbYXJnc10pXG4gIF07XG4gIHRoaXMubG9nLmRlYnVnKGBSdW5uaW5nICcke3RoaXMuYWRiLmV4ZWN1dGFibGUucGF0aH0gJHt1dGlsLnF1b3RlKGFkYkFyZ3MpfSdgKTtcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0LCBzdGRlcnJ9ID0gYXdhaXQgZXhlYyh0aGlzLmFkYi5leGVjdXRhYmxlLnBhdGgsIGFkYkFyZ3MsIHt0aW1lb3V0fSk7XG4gICAgaWYgKGluY2x1ZGVTdGRlcnIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0ZG91dCxcbiAgICAgICAgc3RkZXJyXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc3Rkb3V0O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgZXhlY3V0ZSB0aGUgJyR7Y29tbWFuZH0nIHNoZWxsIGNvbW1hbmQuIGAgK1xuICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfS4gYCArXG4gICAgICBgU3RkT3V0OiAke2Vyci5zdGRvdXR9LiBTdGRFcnI6ICR7ZXJyLnN0ZGVycn1gKTtcbiAgfVxufTtcblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGlCQUFpQixHQUFHLFdBQTFCO0FBRUEsSUFBSUMsUUFBUSxHQUFHLEVBQWY7OztBQUVBQSxRQUFRLENBQUNDLFdBQVQsR0FBdUIsZUFBZUEsV0FBZixDQUE0QkMsSUFBSSxHQUFHLEVBQW5DLEVBQXVDO0VBQzVELEtBQUtDLG9CQUFMLENBQTBCSixpQkFBMUI7RUFFQSxNQUFNO0lBQ0pLLE9BREk7SUFFSkMsSUFBSSxHQUFHLEVBRkg7SUFHSkMsT0FBTyxHQUFHLEtBSE47SUFJSkM7RUFKSSxJQUtGTCxJQUxKOztFQU9BLElBQUksQ0FBQ00sZ0JBQUVDLFFBQUYsQ0FBV0wsT0FBWCxDQUFMLEVBQTBCO0lBQ3hCLE1BQU0sSUFBSU0sbUJBQU9DLG9CQUFYLENBQWlDLHFDQUFqQyxDQUFOO0VBQ0Q7O0VBRUQsTUFBTUMsT0FBTyxHQUFHLENBQ2QsR0FBRyxLQUFLQyxHQUFMLENBQVNDLFVBQVQsQ0FBb0JDLFdBRFQsRUFFZCxPQUZjLEVBR2RYLE9BSGMsRUFJZCxJQUFJSSxnQkFBRVEsT0FBRixDQUFVWCxJQUFWLElBQWtCQSxJQUFsQixHQUF5QixDQUFDQSxJQUFELENBQTdCLENBSmMsQ0FBaEI7RUFNQSxLQUFLWSxHQUFMLENBQVNDLEtBQVQsQ0FBZ0IsWUFBVyxLQUFLTCxHQUFMLENBQVNDLFVBQVQsQ0FBb0JLLElBQUssSUFBR0MsY0FBS0MsS0FBTCxDQUFXVCxPQUFYLENBQW9CLEdBQTNFOztFQUNBLElBQUk7SUFDRixNQUFNO01BQUNVLE1BQUQ7TUFBU0M7SUFBVCxJQUFtQixNQUFNLHdCQUFLLEtBQUtWLEdBQUwsQ0FBU0MsVUFBVCxDQUFvQkssSUFBekIsRUFBK0JQLE9BQS9CLEVBQXdDO01BQUNOO0lBQUQsQ0FBeEMsQ0FBL0I7O0lBQ0EsSUFBSUMsYUFBSixFQUFtQjtNQUNqQixPQUFPO1FBQ0xlLE1BREs7UUFFTEM7TUFGSyxDQUFQO0lBSUQ7O0lBQ0QsT0FBT0QsTUFBUDtFQUNELENBVEQsQ0FTRSxPQUFPRSxHQUFQLEVBQVk7SUFDWixLQUFLUCxHQUFMLENBQVNRLGFBQVQsQ0FBd0IsdUJBQXNCckIsT0FBUSxtQkFBL0IsR0FDcEIsbUJBQWtCb0IsR0FBRyxDQUFDRSxPQUFRLElBRFYsR0FFcEIsV0FBVUYsR0FBRyxDQUFDRixNQUFPLGFBQVlFLEdBQUcsQ0FBQ0QsTUFBTyxFQUYvQztFQUdEO0FBQ0YsQ0FuQ0Q7O2VBc0NldkIsUSJ9
65
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3NoZWxsLmpzIiwibmFtZXMiOlsiQURCX1NIRUxMX0ZFQVRVUkUiLCJjb21tYW5kcyIsIm1vYmlsZVNoZWxsIiwib3B0cyIsImVuc3VyZUZlYXR1cmVFbmFibGVkIiwiY29tbWFuZCIsImFyZ3MiLCJ0aW1lb3V0IiwiaW5jbHVkZVN0ZGVyciIsIl8iLCJpc1N0cmluZyIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiYWRiQXJncyIsImFkYiIsImV4ZWN1dGFibGUiLCJkZWZhdWx0QXJncyIsImlzQXJyYXkiLCJsb2ciLCJkZWJ1ZyIsInBhdGgiLCJ1dGlsIiwicXVvdGUiLCJzdGRvdXQiLCJzdGRlcnIiLCJleGVjIiwiZXJyIiwiZXJyb3JBbmRUaHJvdyIsIm1lc3NhZ2UiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvc2hlbGwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuXG5jb25zdCBBREJfU0hFTExfRkVBVFVSRSA9ICdhZGJfc2hlbGwnO1xuXG5sZXQgY29tbWFuZHMgPSB7fTtcblxuY29tbWFuZHMubW9iaWxlU2hlbGwgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTaGVsbCAob3B0cyA9IHt9KSB7XG4gIHRoaXMuZW5zdXJlRmVhdHVyZUVuYWJsZWQoQURCX1NIRUxMX0ZFQVRVUkUpO1xuXG4gIGNvbnN0IHtcbiAgICBjb21tYW5kLFxuICAgIGFyZ3MgPSBbXSxcbiAgICB0aW1lb3V0ID0gMjAwMDAsXG4gICAgaW5jbHVkZVN0ZGVycixcbiAgfSA9IG9wdHM7XG5cbiAgaWYgKCFfLmlzU3RyaW5nKGNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgVGhlICdjb21tYW5kJyBhcmd1bWVudCBpcyBtYW5kYXRvcnlgKTtcbiAgfVxuXG4gIGNvbnN0IGFkYkFyZ3MgPSBbXG4gICAgLi4udGhpcy5hZGIuZXhlY3V0YWJsZS5kZWZhdWx0QXJncyxcbiAgICAnc2hlbGwnLFxuICAgIGNvbW1hbmQsXG4gICAgLi4uKF8uaXNBcnJheShhcmdzKSA/IGFyZ3MgOiBbYXJnc10pXG4gIF07XG4gIHRoaXMubG9nLmRlYnVnKGBSdW5uaW5nICcke3RoaXMuYWRiLmV4ZWN1dGFibGUucGF0aH0gJHt1dGlsLnF1b3RlKGFkYkFyZ3MpfSdgKTtcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0LCBzdGRlcnJ9ID0gYXdhaXQgZXhlYyh0aGlzLmFkYi5leGVjdXRhYmxlLnBhdGgsIGFkYkFyZ3MsIHt0aW1lb3V0fSk7XG4gICAgaWYgKGluY2x1ZGVTdGRlcnIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0ZG91dCxcbiAgICAgICAgc3RkZXJyXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc3Rkb3V0O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgZXhlY3V0ZSB0aGUgJyR7Y29tbWFuZH0nIHNoZWxsIGNvbW1hbmQuIGAgK1xuICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfS4gYCArXG4gICAgICBgU3RkT3V0OiAke2Vyci5zdGRvdXR9LiBTdGRFcnI6ICR7ZXJyLnN0ZGVycn1gKTtcbiAgfVxufTtcblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGlCQUFpQixHQUFHLFdBQTFCO0FBRUEsSUFBSUMsUUFBUSxHQUFHLEVBQWY7OztBQUVBQSxRQUFRLENBQUNDLFdBQVQsR0FBdUIsZUFBZUEsV0FBZixDQUE0QkMsSUFBSSxHQUFHLEVBQW5DLEVBQXVDO0VBQzVELEtBQUtDLG9CQUFMLENBQTBCSixpQkFBMUI7RUFFQSxNQUFNO0lBQ0pLLE9BREk7SUFFSkMsSUFBSSxHQUFHLEVBRkg7SUFHSkMsT0FBTyxHQUFHLEtBSE47SUFJSkM7RUFKSSxJQUtGTCxJQUxKOztFQU9BLElBQUksQ0FBQ00sZUFBQSxDQUFFQyxRQUFGLENBQVdMLE9BQVgsQ0FBTCxFQUEwQjtJQUN4QixNQUFNLElBQUlNLGNBQUEsQ0FBT0Msb0JBQVgsQ0FBaUMscUNBQWpDLENBQU47RUFDRDs7RUFFRCxNQUFNQyxPQUFPLEdBQUcsQ0FDZCxHQUFHLEtBQUtDLEdBQUwsQ0FBU0MsVUFBVCxDQUFvQkMsV0FEVCxFQUVkLE9BRmMsRUFHZFgsT0FIYyxFQUlkLElBQUlJLGVBQUEsQ0FBRVEsT0FBRixDQUFVWCxJQUFWLElBQWtCQSxJQUFsQixHQUF5QixDQUFDQSxJQUFELENBQTdCLENBSmMsQ0FBaEI7RUFNQSxLQUFLWSxHQUFMLENBQVNDLEtBQVQsQ0FBZ0IsWUFBVyxLQUFLTCxHQUFMLENBQVNDLFVBQVQsQ0FBb0JLLElBQUssSUFBR0MsYUFBQSxDQUFLQyxLQUFMLENBQVdULE9BQVgsQ0FBb0IsR0FBM0U7O0VBQ0EsSUFBSTtJQUNGLE1BQU07TUFBQ1UsTUFBRDtNQUFTQztJQUFULElBQW1CLE1BQU0sSUFBQUMsa0JBQUEsRUFBSyxLQUFLWCxHQUFMLENBQVNDLFVBQVQsQ0FBb0JLLElBQXpCLEVBQStCUCxPQUEvQixFQUF3QztNQUFDTjtJQUFELENBQXhDLENBQS9COztJQUNBLElBQUlDLGFBQUosRUFBbUI7TUFDakIsT0FBTztRQUNMZSxNQURLO1FBRUxDO01BRkssQ0FBUDtJQUlEOztJQUNELE9BQU9ELE1BQVA7RUFDRCxDQVRELENBU0UsT0FBT0csR0FBUCxFQUFZO0lBQ1osS0FBS1IsR0FBTCxDQUFTUyxhQUFULENBQXdCLHVCQUFzQnRCLE9BQVEsbUJBQS9CLEdBQ3BCLG1CQUFrQnFCLEdBQUcsQ0FBQ0UsT0FBUSxJQURWLEdBRXBCLFdBQVVGLEdBQUcsQ0FBQ0gsTUFBTyxhQUFZRyxHQUFHLENBQUNGLE1BQU8sRUFGL0M7RUFHRDtBQUNGLENBbkNEOztlQXNDZXZCLFEifQ==