appium-xcuitest-driver 4.4.2 → 4.4.3

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 (56) hide show
  1. package/README.md +0 -1
  2. package/build/index.js +1 -1
  3. package/build/lib/app-utils.js +1 -1
  4. package/build/lib/build-wda.js +1 -1
  5. package/build/lib/cert-utils.js +1 -1
  6. package/build/lib/commands/app-management.js +1 -1
  7. package/build/lib/commands/appearance.js +1 -1
  8. package/build/lib/commands/certificate.js +1 -1
  9. package/build/lib/commands/context.js +1 -1
  10. package/build/lib/commands/cookies.js +1 -1
  11. package/build/lib/commands/deviceInfo.js +1 -1
  12. package/build/lib/commands/element.js +1 -1
  13. package/build/lib/commands/execute.js +1 -1
  14. package/build/lib/commands/file-movement.js +1 -1
  15. package/build/lib/commands/find.js +1 -1
  16. package/build/lib/commands/general.js +1 -1
  17. package/build/lib/commands/gesture.js +1 -1
  18. package/build/lib/commands/iohid.js +1 -1
  19. package/build/lib/commands/location.js +1 -1
  20. package/build/lib/commands/lock.js +1 -1
  21. package/build/lib/commands/log.js +1 -1
  22. package/build/lib/commands/navigation.js +1 -1
  23. package/build/lib/commands/notifications.js +1 -1
  24. package/build/lib/commands/pcap.js +1 -1
  25. package/build/lib/commands/performance.js +1 -1
  26. package/build/lib/commands/permissions.js +1 -1
  27. package/build/lib/commands/proxy-helper.js +1 -1
  28. package/build/lib/commands/record-audio.js +1 -1
  29. package/build/lib/commands/recordscreen.js +1 -1
  30. package/build/lib/commands/screenshots.js +1 -1
  31. package/build/lib/commands/source.js +1 -1
  32. package/build/lib/commands/web.js +1 -1
  33. package/build/lib/commands/xctest.js +1 -1
  34. package/build/lib/cookies.js +1 -1
  35. package/build/lib/css-converter.js +1 -1
  36. package/build/lib/desired-caps.js +1 -4
  37. package/build/lib/device-connections-factory.js +1 -1
  38. package/build/lib/device-log/ios-crash-log.js +1 -1
  39. package/build/lib/device-log/ios-device-log.js +1 -1
  40. package/build/lib/device-log/ios-performance-log.js +1 -1
  41. package/build/lib/device-log/ios-simulator-log.js +1 -1
  42. package/build/lib/device-log/rotating-log.js +1 -1
  43. package/build/lib/device-log/safari-console-log.js +1 -1
  44. package/build/lib/device-log/safari-network-log.js +1 -1
  45. package/build/lib/driver.js +1 -1
  46. package/build/lib/ios-deploy.js +1 -1
  47. package/build/lib/ios-fs-helpers.js +1 -1
  48. package/build/lib/logger.js +1 -1
  49. package/build/lib/py-ios-device-client.js +1 -1
  50. package/build/lib/real-device-management.js +1 -1
  51. package/build/lib/server.js +1 -1
  52. package/build/lib/simulator-management.js +1 -1
  53. package/build/lib/utils.js +1 -1
  54. package/lib/desired-caps.js +0 -3
  55. package/npm-shrinkwrap.json +38913 -1525
  56. package/package.json +1 -9
package/README.md CHANGED
@@ -97,7 +97,6 @@ Usage: `appium --driver-args='{"xcuitest": {[argName]: [argValue]}}'`
97
97
 
98
98
  |Argument|Default|Description|Example|
99
99
  |----|-------|-----------|-------|
100
- |`"webkitDebugProxyPort"`|27753|Local port used for communication with ios-webkit-debug-proxy|`--driver-args='{"xcuitest": {"webkitDebugProxyPort": 27753}}'`|
101
100
  |`"wdaLocalPort"`|8100| Local port used for communication with ios-web-driver-agent|`--driver-args='{"xcuitest": {"wdaLocalPort": 8100}}'`|
102
101
 
103
102
  ## Capabilities
package/build/index.js CHANGED
@@ -47,4 +47,4 @@ var _default = XCUITestDriver;
47
47
  exports.default = _default;require('source-map-support').install();
48
48
 
49
49
 
50
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6WyJYQ1VJVGVzdERyaXZlciIsImRyaXZlciIsInN0YXJ0U2VydmVyIiwic2VydmVyIiwiREVGQVVMVF9IT1NUIiwiREVGQVVMVF9QT1JUIiwibWFpbiIsImdldEFyZ1ZhbHVlIiwiYXJnTmFtZSIsImFyZ0luZGV4IiwicHJvY2VzcyIsImFyZ3YiLCJpbmRleE9mIiwicG9ydCIsInBhcnNlSW50IiwiaG9zdCIsInJlcXVpcmUiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6Ii4uIiwic291cmNlcyI6WyJpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0cmFuc3BpbGU6bWFpblxuXG5pbXBvcnQgeyBhc3luY2lmeSB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCAqIGFzIGRyaXZlciBmcm9tICcuL2xpYi9kcml2ZXInO1xuaW1wb3J0ICogYXMgc2VydmVyIGZyb20gJy4vbGliL3NlcnZlcic7XG5cblxuY29uc3QgeyBYQ1VJVGVzdERyaXZlciB9ID0gZHJpdmVyO1xuY29uc3QgeyBzdGFydFNlcnZlciB9ID0gc2VydmVyO1xuXG5jb25zdCBERUZBVUxUX0hPU1QgPSAnbG9jYWxob3N0JztcbmNvbnN0IERFRkFVTFRfUE9SVCA9IDQ3MjM7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4gKCkge1xuICBjb25zdCBnZXRBcmdWYWx1ZSA9IChhcmdOYW1lKSA9PiB7XG4gICAgY29uc3QgYXJnSW5kZXggPSBwcm9jZXNzLmFyZ3YuaW5kZXhPZihhcmdOYW1lKTtcbiAgICByZXR1cm4gYXJnSW5kZXggPiAwID8gcHJvY2Vzcy5hcmd2W2FyZ0luZGV4ICsgMV0gOiBudWxsO1xuICB9O1xuICBjb25zdCBwb3J0ID0gcGFyc2VJbnQoZ2V0QXJnVmFsdWUoJy0tcG9ydCcpLCAxMCkgfHwgREVGQVVMVF9QT1JUO1xuICBjb25zdCBob3N0ID0gZ2V0QXJnVmFsdWUoJy0taG9zdCcpIHx8IERFRkFVTFRfSE9TVDtcbiAgcmV0dXJuIGF3YWl0IHN0YXJ0U2VydmVyKHBvcnQsIGhvc3QpO1xufVxuXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgYXN5bmNpZnkobWFpbik7XG59XG5cbmV4cG9ydCB7IFhDVUlUZXN0RHJpdmVyLCBzdGFydFNlcnZlciB9O1xuZXhwb3J0IGRlZmF1bHQgWENVSVRlc3REcml2ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOzs7Ozs7QUFHQSxNQUFNO0VBQUVBO0FBQUYsSUFBcUJDLE1BQTNCOztBQUNBLE1BQU07RUFBRUM7QUFBRixJQUFrQkMsTUFBeEI7O0FBRUEsTUFBTUMsWUFBWSxHQUFHLFdBQXJCO0FBQ0EsTUFBTUMsWUFBWSxHQUFHLElBQXJCOztBQUVBLGVBQWVDLElBQWYsR0FBdUI7RUFDckIsTUFBTUMsV0FBVyxHQUFJQyxPQUFELElBQWE7SUFDL0IsTUFBTUMsUUFBUSxHQUFHQyxPQUFPLENBQUNDLElBQVIsQ0FBYUMsT0FBYixDQUFxQkosT0FBckIsQ0FBakI7SUFDQSxPQUFPQyxRQUFRLEdBQUcsQ0FBWCxHQUFlQyxPQUFPLENBQUNDLElBQVIsQ0FBYUYsUUFBUSxHQUFHLENBQXhCLENBQWYsR0FBNEMsSUFBbkQ7RUFDRCxDQUhEOztFQUlBLE1BQU1JLElBQUksR0FBR0MsUUFBUSxDQUFDUCxXQUFXLENBQUMsUUFBRCxDQUFaLEVBQXdCLEVBQXhCLENBQVIsSUFBdUNGLFlBQXBEO0VBQ0EsTUFBTVUsSUFBSSxHQUFHUixXQUFXLENBQUMsUUFBRCxDQUFYLElBQXlCSCxZQUF0QztFQUNBLE9BQU8sTUFBTUYsV0FBVyxDQUFDVyxJQUFELEVBQU9FLElBQVAsQ0FBeEI7QUFDRDs7QUFFRCxJQUFJQyxPQUFPLENBQUNWLElBQVIsS0FBaUJXLE1BQXJCLEVBQTZCO0VBQzNCLHdCQUFTWCxJQUFUO0FBQ0Q7O2VBR2NOLGMifQ==
50
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6WyJYQ1VJVGVzdERyaXZlciIsImRyaXZlciIsInN0YXJ0U2VydmVyIiwic2VydmVyIiwiREVGQVVMVF9IT1NUIiwiREVGQVVMVF9QT1JUIiwibWFpbiIsImdldEFyZ1ZhbHVlIiwiYXJnTmFtZSIsImFyZ0luZGV4IiwicHJvY2VzcyIsImFyZ3YiLCJpbmRleE9mIiwicG9ydCIsInBhcnNlSW50IiwiaG9zdCIsInJlcXVpcmUiLCJtb2R1bGUiLCJhc3luY2lmeSJdLCJzb3VyY2VSb290IjoiLi4iLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptYWluXG5cbmltcG9ydCB7IGFzeW5jaWZ5IH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0ICogYXMgZHJpdmVyIGZyb20gJy4vbGliL2RyaXZlcic7XG5pbXBvcnQgKiBhcyBzZXJ2ZXIgZnJvbSAnLi9saWIvc2VydmVyJztcblxuXG5jb25zdCB7IFhDVUlUZXN0RHJpdmVyIH0gPSBkcml2ZXI7XG5jb25zdCB7IHN0YXJ0U2VydmVyIH0gPSBzZXJ2ZXI7XG5cbmNvbnN0IERFRkFVTFRfSE9TVCA9ICdsb2NhbGhvc3QnO1xuY29uc3QgREVGQVVMVF9QT1JUID0gNDcyMztcblxuYXN5bmMgZnVuY3Rpb24gbWFpbiAoKSB7XG4gIGNvbnN0IGdldEFyZ1ZhbHVlID0gKGFyZ05hbWUpID0+IHtcbiAgICBjb25zdCBhcmdJbmRleCA9IHByb2Nlc3MuYXJndi5pbmRleE9mKGFyZ05hbWUpO1xuICAgIHJldHVybiBhcmdJbmRleCA+IDAgPyBwcm9jZXNzLmFyZ3ZbYXJnSW5kZXggKyAxXSA6IG51bGw7XG4gIH07XG4gIGNvbnN0IHBvcnQgPSBwYXJzZUludChnZXRBcmdWYWx1ZSgnLS1wb3J0JyksIDEwKSB8fCBERUZBVUxUX1BPUlQ7XG4gIGNvbnN0IGhvc3QgPSBnZXRBcmdWYWx1ZSgnLS1ob3N0JykgfHwgREVGQVVMVF9IT1NUO1xuICByZXR1cm4gYXdhaXQgc3RhcnRTZXJ2ZXIocG9ydCwgaG9zdCk7XG59XG5cbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xuICBhc3luY2lmeShtYWluKTtcbn1cblxuZXhwb3J0IHsgWENVSVRlc3REcml2ZXIsIHN0YXJ0U2VydmVyIH07XG5leHBvcnQgZGVmYXVsdCBYQ1VJVGVzdERyaXZlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7OztBQUdBLE1BQU07RUFBRUE7QUFBRixJQUFxQkMsTUFBM0I7O0FBQ0EsTUFBTTtFQUFFQztBQUFGLElBQWtCQyxNQUF4Qjs7QUFFQSxNQUFNQyxZQUFZLEdBQUcsV0FBckI7QUFDQSxNQUFNQyxZQUFZLEdBQUcsSUFBckI7O0FBRUEsZUFBZUMsSUFBZixHQUF1QjtFQUNyQixNQUFNQyxXQUFXLEdBQUlDLE9BQUQsSUFBYTtJQUMvQixNQUFNQyxRQUFRLEdBQUdDLE9BQU8sQ0FBQ0MsSUFBUixDQUFhQyxPQUFiLENBQXFCSixPQUFyQixDQUFqQjtJQUNBLE9BQU9DLFFBQVEsR0FBRyxDQUFYLEdBQWVDLE9BQU8sQ0FBQ0MsSUFBUixDQUFhRixRQUFRLEdBQUcsQ0FBeEIsQ0FBZixHQUE0QyxJQUFuRDtFQUNELENBSEQ7O0VBSUEsTUFBTUksSUFBSSxHQUFHQyxRQUFRLENBQUNQLFdBQVcsQ0FBQyxRQUFELENBQVosRUFBd0IsRUFBeEIsQ0FBUixJQUF1Q0YsWUFBcEQ7RUFDQSxNQUFNVSxJQUFJLEdBQUdSLFdBQVcsQ0FBQyxRQUFELENBQVgsSUFBeUJILFlBQXRDO0VBQ0EsT0FBTyxNQUFNRixXQUFXLENBQUNXLElBQUQsRUFBT0UsSUFBUCxDQUF4QjtBQUNEOztBQUVELElBQUlDLE9BQU8sQ0FBQ1YsSUFBUixLQUFpQlcsTUFBckIsRUFBNkI7RUFDM0IsSUFBQUMsa0JBQUEsRUFBU1osSUFBVDtBQUNEOztlQUdjTixjIn0=
@@ -185,4 +185,4 @@ async function parseLocalizableStrings(opts) {
185
185
  }require('source-map-support').install();
186
186
 
187
187
 
188
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2FwcC11dGlscy5qcyIsIm5hbWVzIjpbIlNUUklOR1NESUNUX1JFU09VUkNFIiwiU1RSSU5HU19SRVNPVVJDRSIsImV4dHJhY3RQbGlzdEVudHJ5IiwiYXBwIiwiZW50cnlOYW1lIiwicGxpc3RQYXRoIiwicGF0aCIsInJlc29sdmUiLCJwbGlzdCIsInBhcnNlUGxpc3RGaWxlIiwiZXJyIiwiRXJyb3IiLCJiYXNlbmFtZSIsIm1lc3NhZ2UiLCJleHRyYWN0QnVuZGxlSWQiLCJidW5kbGVJZCIsImxvZyIsImRlYnVnIiwidmVyaWZ5QXBwbGljYXRpb25QbGF0Zm9ybSIsImV4cGVjdGVkUGxhdGZvcm0iLCJzdXBwb3J0ZWRQbGF0Zm9ybXMiLCJKU09OIiwic3RyaW5naWZ5IiwiXyIsImlzQXJyYXkiLCJpc1NpbXVsYXRvciIsImlzVHZPUyIsInByZWZpeCIsInN1ZmZpeCIsImRzdFBsYXRmb3JtIiwiaW5jbHVkZXMiLCJyZWFkUmVzb3VyY2UiLCJyZXNvdXJjZVBhdGgiLCJkYXRhIiwicmVzdWx0Iiwia2V5IiwidmFsdWUiLCJ0b1BhaXJzIiwiaXNTdHJpbmciLCJwYXJzZUxvY2FsaXphYmxlU3RyaW5ncyIsIm9wdHMiLCJsYW5ndWFnZSIsImxvY2FsaXphYmxlU3RyaW5nc0RpciIsInN0cmluZ0ZpbGUiLCJzdHJpY3RNb2RlIiwiaW5mbyIsImxwcm9qUm9vdCIsInN1YmZvbGRlciIsImZzIiwiZXhpc3RzIiwicmVzb3VyY2VQYXRocyIsImRzdFBhdGgiLCJwdXNoIiwiaXNFbXB0eSIsInJlc291cmNlRmlsZXMiLCJyZWFkZGlyIiwiZmlsdGVyIiwibmFtZSIsInNvbWUiLCJ4IiwiZW5kc1dpdGgiLCJtYXAiLCJsZW5ndGgiLCJyZXN1bHRTdHJpbmdzIiwidG9BYnNvbHV0ZVBhdGgiLCJwIiwiaXNBYnNvbHV0ZSIsInByb2Nlc3MiLCJjd2QiLCJ1dGlsIiwiaXNTdWJQYXRoIiwia2V5cyIsIm1lcmdlIiwiZSIsIndhcm4iXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvYXBwLXV0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHBsaXN0LCBmcywgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyLmpzJztcblxuY29uc3QgU1RSSU5HU0RJQ1RfUkVTT1VSQ0UgPSAnLnN0cmluZ3NkaWN0JztcbmNvbnN0IFNUUklOR1NfUkVTT1VSQ0UgPSAnLnN0cmluZ3MnO1xuXG5cbmFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RQbGlzdEVudHJ5IChhcHAsIGVudHJ5TmFtZSkge1xuICBjb25zdCBwbGlzdFBhdGggPSBwYXRoLnJlc29sdmUoYXBwLCAnSW5mby5wbGlzdCcpO1xuICB0cnkge1xuICAgIHJldHVybiAoYXdhaXQgcGxpc3QucGFyc2VQbGlzdEZpbGUocGxpc3RQYXRoKSlbZW50cnlOYW1lXTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZXh0cmFjdCBJbmZvLnBsaXN0IGZyb20gJyR7cGF0aC5iYXNlbmFtZShhcHApfSc6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdEJ1bmRsZUlkIChhcHApIHtcbiAgY29uc3QgYnVuZGxlSWQgPSBhd2FpdCBleHRyYWN0UGxpc3RFbnRyeShhcHAsICdDRkJ1bmRsZUlkZW50aWZpZXInKTtcbiAgbG9nLmRlYnVnKGBHZXR0aW5nIGJ1bmRsZSBJRCBmcm9tIGFwcCAnJHthcHB9JzogJyR7YnVuZGxlSWR9J2ApO1xuICByZXR1cm4gYnVuZGxlSWQ7XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUGxhdGZvcm1PcHRzXG4gKlxuICogQHByb3BlcnR5IHtib29sZWFufSBpc1NpbXVsYXRvciAtIFdoZXRoZXIgdGhlIGRlc3RpbmF0aW9uIHBsYXRmb3JtIGlzIGEgU2ltdWxhdG9yXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzVHZPUyAtIFdoZXRoZXIgdGhlIGRlc3RpbmF0aW9uIHBsYXRmb3JtIGlzIGEgU2ltdWxhdG9yXG4gKi9cblxuLyoqXG4gKiBWZXJpZnkgd2hldGhlciB0aGUgZ2l2ZW4gYXBwbGljYXRpb24gaXMgY29tcGF0aWJsZSB0byB0aGVcbiAqIHBsYXRmb3JtIHdoZXJlIGl0IGlzIGdvaW5nIHRvIGJlIGluc3RhbGxlZCBhbmQgdGVzdGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHAgLSBUaGUgYWN0dWFsIHBhdGggdG8gdGhlIGFwcGxpY2F0aW9uIGJ1bmRsZVxuICogQHBhcmFtIHtQbGF0Zm9ybU9wdHN9IGV4cGVjdGVkUGxhdGZvcm1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBidW5kbGUgYXJjaGl0ZWN0dXJlIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBkZXZpY2UgYXJjaGl0ZWN0dXJlLlxuICovXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlBcHBsaWNhdGlvblBsYXRmb3JtIChhcHAsIGV4cGVjdGVkUGxhdGZvcm0pIHtcbiAgbG9nLmRlYnVnKCdWZXJpZnlpbmcgYXBwbGljYXRpb24gcGxhdGZvcm0nKTtcblxuICBsZXQgc3VwcG9ydGVkUGxhdGZvcm1zO1xuICB0cnkge1xuICAgIHN1cHBvcnRlZFBsYXRmb3JtcyA9IGF3YWl0IGV4dHJhY3RQbGlzdEVudHJ5KGFwcCwgJ0NGQnVuZGxlU3VwcG9ydGVkUGxhdGZvcm1zJyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5kZWJ1ZyhlcnIubWVzc2FnZSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxvZy5kZWJ1ZyhgQ0ZCdW5kbGVTdXBwb3J0ZWRQbGF0Zm9ybXM6ICR7SlNPTi5zdHJpbmdpZnkoc3VwcG9ydGVkUGxhdGZvcm1zKX1gKTtcbiAgaWYgKCFfLmlzQXJyYXkoc3VwcG9ydGVkUGxhdGZvcm1zKSkge1xuICAgIGxvZy5kZWJ1ZyhgQ0ZCdW5kbGVTdXBwb3J0ZWRQbGF0Zm9ybXMga2V5IGRvZXMgbm90IGV4aXN0IGluICcke3BhdGguYmFzZW5hbWUoYXBwKX0nYCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGlzU2ltdWxhdG9yLFxuICAgIGlzVHZPUyxcbiAgfSA9IGV4cGVjdGVkUGxhdGZvcm07XG4gIGNvbnN0IHByZWZpeCA9IGlzVHZPUyA/ICdBcHBsZVRWJyA6ICdpUGhvbmUnO1xuICBjb25zdCBzdWZmaXggPSBpc1NpbXVsYXRvciA/ICdTaW11bGF0b3InIDogJ09TJztcbiAgY29uc3QgZHN0UGxhdGZvcm0gPSBgJHtwcmVmaXh9JHtzdWZmaXh9YDtcbiAgaWYgKCFzdXBwb3J0ZWRQbGF0Zm9ybXMuaW5jbHVkZXMoZHN0UGxhdGZvcm0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2lzU2ltdWxhdG9yID8gJ1NpbXVsYXRvcicgOiAnUmVhbCBkZXZpY2UnfSBhcmNoaXRlY3R1cmUgaXMgdW5zdXBwb3J0ZWQgYnkgdGhlICcke2FwcH0nIGFwcGxpY2F0aW9uLiBgICtcbiAgICAgIGBNYWtlIHN1cmUgdGhlIGNvcnJlY3QgZGVwbG95bWVudCB0YXJnZXQgaGFzIGJlZW4gc2VsZWN0ZWQgZm9yIGl0cyBjb21waWxhdGlvbiBpbiBYY29kZS5gKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkUmVzb3VyY2UgKHJlc291cmNlUGF0aCkge1xuICBjb25zdCBkYXRhID0gYXdhaXQgcGxpc3QucGFyc2VQbGlzdEZpbGUocmVzb3VyY2VQYXRoKTtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhkYXRhKSkge1xuICAgIHJlc3VsdFtrZXldID0gXy5pc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5hc3luYyBmdW5jdGlvbiBwYXJzZUxvY2FsaXphYmxlU3RyaW5ncyAob3B0cykge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGxhbmd1YWdlID0gJ2VuJyxcbiAgICBsb2NhbGl6YWJsZVN0cmluZ3NEaXIsXG4gICAgc3RyaW5nRmlsZSxcbiAgICBzdHJpY3RNb2RlLFxuICB9ID0gb3B0cztcblxuICBpZiAoIWFwcCkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBgU3RyaW5ncyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaWYgJ2FwcCcgY2FwYWJpbGl0eSBpcyBub3Qgc2V0YDtcbiAgICBpZiAoc3RyaWN0TW9kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICBsb2cuaW5mbyhtZXNzYWdlKTtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBsZXQgbHByb2pSb290O1xuICBmb3IgKGNvbnN0IHN1YmZvbGRlciBvZiBbYCR7bGFuZ3VhZ2V9Lmxwcm9qYCwgbG9jYWxpemFibGVTdHJpbmdzRGlyLCAnJ10pIHtcbiAgICBscHJvalJvb3QgPSBwYXRoLnJlc29sdmUoYXBwLCBzdWJmb2xkZXIpO1xuICAgIGlmIChhd2FpdCBmcy5leGlzdHMobHByb2pSb290KSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IG1lc3NhZ2UgPSBgTm8gJyR7bHByb2pSb290fScgcmVzb3VyY2VzIGZvbGRlciBoYXMgYmVlbiBmb3VuZGA7XG4gICAgaWYgKHN0cmljdE1vZGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKG1lc3NhZ2UpO1xuICB9XG4gIGxvZy5pbmZvKGBXaWxsIGV4dHJhY3QgcmVzb3VyY2Ugc3RyaW5ncyBmcm9tICcke2xwcm9qUm9vdH0nYCk7XG5cbiAgY29uc3QgcmVzb3VyY2VQYXRocyA9IFtdO1xuICBpZiAoc3RyaW5nRmlsZSkge1xuICAgIGNvbnN0IGRzdFBhdGggPSBwYXRoLnJlc29sdmUobHByb2pSb290LCBzdHJpbmdGaWxlKTtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKGRzdFBhdGgpKSB7XG4gICAgICByZXNvdXJjZVBhdGhzLnB1c2goZHN0UGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgTm8gJyR7ZHN0UGF0aH0nIHJlc291cmNlIGZpbGUgaGFzIGJlZW4gZm91bmQgZm9yICcke2FwcH0nYDtcbiAgICAgIGlmIChzdHJpY3RNb2RlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIGxvZy5pbmZvKG1lc3NhZ2UpO1xuICAgICAgbG9nLmluZm8oYEdldHRpbmcgYWxsIHRoZSBhdmFpbGFibGUgc3RyaW5ncyBmcm9tICcke2xwcm9qUm9vdH0nYCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKF8uaXNFbXB0eShyZXNvdXJjZVBhdGhzKSAmJiBhd2FpdCBmcy5leGlzdHMobHByb2pSb290KSkge1xuICAgIGNvbnN0IHJlc291cmNlRmlsZXMgPSAoYXdhaXQgZnMucmVhZGRpcihscHJvalJvb3QpKVxuICAgICAgLmZpbHRlcigobmFtZSkgPT4gXy5zb21lKFtTVFJJTkdTX1JFU09VUkNFLCBTVFJJTkdTRElDVF9SRVNPVVJDRV0sICh4KSA9PiBuYW1lLmVuZHNXaXRoKHgpKSlcbiAgICAgIC5tYXAoKG5hbWUpID0+IHBhdGgucmVzb2x2ZShscHJvalJvb3QsIG5hbWUpKTtcbiAgICByZXNvdXJjZVBhdGhzLnB1c2goLi4ucmVzb3VyY2VGaWxlcyk7XG4gIH1cbiAgbG9nLmluZm8oYEdvdCAke3Jlc291cmNlUGF0aHMubGVuZ3RofSByZXNvdXJjZSBmaWxlKHMpIGluICcke2xwcm9qUm9vdH0nYCk7XG5cbiAgaWYgKF8uaXNFbXB0eShyZXNvdXJjZVBhdGhzKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdFN0cmluZ3MgPSB7fTtcbiAgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSBmdW5jdGlvbiAocCkge1xuICAgIHJldHVybiBwYXRoLmlzQWJzb2x1dGUocCkgPyBwIDogcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIHApO1xuICB9O1xuICBmb3IgKGNvbnN0IHJlc291cmNlUGF0aCBvZiByZXNvdXJjZVBhdGhzKSB7XG4gICAgaWYgKCF1dGlsLmlzU3ViUGF0aCh0b0Fic29sdXRlUGF0aChyZXNvdXJjZVBhdGgpLCB0b0Fic29sdXRlUGF0aChhcHApKSkge1xuICAgICAgLy8gc2VjdXJpdHkgcHJlY2F1dGlvblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtyZXNvdXJjZVBhdGh9JyBpcyBleHBlY3RlZCB0byBiZSBsb2NhdGVkIHVuZGVyICcke2FwcH0nYCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVhZFJlc291cmNlKHJlc291cmNlUGF0aCk7XG4gICAgICBsb2cuZGVidWcoYFBhcnNlZCAke18ua2V5cyhkYXRhKS5sZW5ndGh9IHN0cmluZyhzKSBmcm9tICcke3Jlc291cmNlUGF0aH0nYCk7XG4gICAgICBfLm1lcmdlKHJlc3VsdFN0cmluZ3MsIGRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy53YXJuKGBDYW5ub3QgcGFyc2UgJyR7cmVzb3VyY2VQYXRofScgcmVzb3VyY2UuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBsb2cuaW5mbyhgR290ICR7Xy5rZXlzKHJlc3VsdFN0cmluZ3MpLmxlbmd0aH0gc3RyaW5nKHMpIGZyb20gJyR7bHByb2pSb290fSdgKTtcbiAgcmV0dXJuIHJlc3VsdFN0cmluZ3M7XG59XG5cbmV4cG9ydCB7IGV4dHJhY3RCdW5kbGVJZCwgdmVyaWZ5QXBwbGljYXRpb25QbGF0Zm9ybSwgcGFyc2VMb2NhbGl6YWJsZVN0cmluZ3MgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLG9CQUFvQixHQUFHLGNBQTdCO0FBQ0EsTUFBTUMs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
188
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2FwcC11dGlscy5qcyIsIm5hbWVzIjpbIlNUUklOR1NESUNUX1JFU09VUkNFIiwiU1RSSU5HU19SRVNPVVJDRSIsImV4dHJhY3RQbGlzdEVudHJ5IiwiYXBwIiwiZW50cnlOYW1lIiwicGxpc3RQYXRoIiwicGF0aCIsInJlc29sdmUiLCJwbGlzdCIsInBhcnNlUGxpc3RGaWxlIiwiZXJyIiwiRXJyb3IiLCJiYXNlbmFtZSIsIm1lc3NhZ2UiLCJleHRyYWN0QnVuZGxlSWQiLCJidW5kbGVJZCIsImxvZyIsImRlYnVnIiwidmVyaWZ5QXBwbGljYXRpb25QbGF0Zm9ybSIsImV4cGVjdGVkUGxhdGZvcm0iLCJzdXBwb3J0ZWRQbGF0Zm9ybXMiLCJKU09OIiwic3RyaW5naWZ5IiwiXyIsImlzQXJyYXkiLCJpc1NpbXVsYXRvciIsImlzVHZPUyIsInByZWZpeCIsInN1ZmZpeCIsImRzdFBsYXRmb3JtIiwiaW5jbHVkZXMiLCJyZWFkUmVzb3VyY2UiLCJyZXNvdXJjZVBhdGgiLCJkYXRhIiwicmVzdWx0Iiwia2V5IiwidmFsdWUiLCJ0b1BhaXJzIiwiaXNTdHJpbmciLCJwYXJzZUxvY2FsaXphYmxlU3RyaW5ncyIsIm9wdHMiLCJsYW5ndWFnZSIsImxvY2FsaXphYmxlU3RyaW5nc0RpciIsInN0cmluZ0ZpbGUiLCJzdHJpY3RNb2RlIiwiaW5mbyIsImxwcm9qUm9vdCIsInN1YmZvbGRlciIsImZzIiwiZXhpc3RzIiwicmVzb3VyY2VQYXRocyIsImRzdFBhdGgiLCJwdXNoIiwiaXNFbXB0eSIsInJlc291cmNlRmlsZXMiLCJyZWFkZGlyIiwiZmlsdGVyIiwibmFtZSIsInNvbWUiLCJ4IiwiZW5kc1dpdGgiLCJtYXAiLCJsZW5ndGgiLCJyZXN1bHRTdHJpbmdzIiwidG9BYnNvbHV0ZVBhdGgiLCJwIiwiaXNBYnNvbHV0ZSIsInByb2Nlc3MiLCJjd2QiLCJ1dGlsIiwiaXNTdWJQYXRoIiwia2V5cyIsIm1lcmdlIiwiZSIsIndhcm4iXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvYXBwLXV0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHBsaXN0LCBmcywgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyLmpzJztcblxuY29uc3QgU1RSSU5HU0RJQ1RfUkVTT1VSQ0UgPSAnLnN0cmluZ3NkaWN0JztcbmNvbnN0IFNUUklOR1NfUkVTT1VSQ0UgPSAnLnN0cmluZ3MnO1xuXG5cbmFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RQbGlzdEVudHJ5IChhcHAsIGVudHJ5TmFtZSkge1xuICBjb25zdCBwbGlzdFBhdGggPSBwYXRoLnJlc29sdmUoYXBwLCAnSW5mby5wbGlzdCcpO1xuICB0cnkge1xuICAgIHJldHVybiAoYXdhaXQgcGxpc3QucGFyc2VQbGlzdEZpbGUocGxpc3RQYXRoKSlbZW50cnlOYW1lXTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZXh0cmFjdCBJbmZvLnBsaXN0IGZyb20gJyR7cGF0aC5iYXNlbmFtZShhcHApfSc6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdEJ1bmRsZUlkIChhcHApIHtcbiAgY29uc3QgYnVuZGxlSWQgPSBhd2FpdCBleHRyYWN0UGxpc3RFbnRyeShhcHAsICdDRkJ1bmRsZUlkZW50aWZpZXInKTtcbiAgbG9nLmRlYnVnKGBHZXR0aW5nIGJ1bmRsZSBJRCBmcm9tIGFwcCAnJHthcHB9JzogJyR7YnVuZGxlSWR9J2ApO1xuICByZXR1cm4gYnVuZGxlSWQ7XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUGxhdGZvcm1PcHRzXG4gKlxuICogQHByb3BlcnR5IHtib29sZWFufSBpc1NpbXVsYXRvciAtIFdoZXRoZXIgdGhlIGRlc3RpbmF0aW9uIHBsYXRmb3JtIGlzIGEgU2ltdWxhdG9yXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzVHZPUyAtIFdoZXRoZXIgdGhlIGRlc3RpbmF0aW9uIHBsYXRmb3JtIGlzIGEgU2ltdWxhdG9yXG4gKi9cblxuLyoqXG4gKiBWZXJpZnkgd2hldGhlciB0aGUgZ2l2ZW4gYXBwbGljYXRpb24gaXMgY29tcGF0aWJsZSB0byB0aGVcbiAqIHBsYXRmb3JtIHdoZXJlIGl0IGlzIGdvaW5nIHRvIGJlIGluc3RhbGxlZCBhbmQgdGVzdGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHAgLSBUaGUgYWN0dWFsIHBhdGggdG8gdGhlIGFwcGxpY2F0aW9uIGJ1bmRsZVxuICogQHBhcmFtIHtQbGF0Zm9ybU9wdHN9IGV4cGVjdGVkUGxhdGZvcm1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBidW5kbGUgYXJjaGl0ZWN0dXJlIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBkZXZpY2UgYXJjaGl0ZWN0dXJlLlxuICovXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlBcHBsaWNhdGlvblBsYXRmb3JtIChhcHAsIGV4cGVjdGVkUGxhdGZvcm0pIHtcbiAgbG9nLmRlYnVnKCdWZXJpZnlpbmcgYXBwbGljYXRpb24gcGxhdGZvcm0nKTtcblxuICBsZXQgc3VwcG9ydGVkUGxhdGZvcm1zO1xuICB0cnkge1xuICAgIHN1cHBvcnRlZFBsYXRmb3JtcyA9IGF3YWl0IGV4dHJhY3RQbGlzdEVudHJ5KGFwcCwgJ0NGQnVuZGxlU3VwcG9ydGVkUGxhdGZvcm1zJyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy5kZWJ1ZyhlcnIubWVzc2FnZSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxvZy5kZWJ1ZyhgQ0ZCdW5kbGVTdXBwb3J0ZWRQbGF0Zm9ybXM6ICR7SlNPTi5zdHJpbmdpZnkoc3VwcG9ydGVkUGxhdGZvcm1zKX1gKTtcbiAgaWYgKCFfLmlzQXJyYXkoc3VwcG9ydGVkUGxhdGZvcm1zKSkge1xuICAgIGxvZy5kZWJ1ZyhgQ0ZCdW5kbGVTdXBwb3J0ZWRQbGF0Zm9ybXMga2V5IGRvZXMgbm90IGV4aXN0IGluICcke3BhdGguYmFzZW5hbWUoYXBwKX0nYCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGlzU2ltdWxhdG9yLFxuICAgIGlzVHZPUyxcbiAgfSA9IGV4cGVjdGVkUGxhdGZvcm07XG4gIGNvbnN0IHByZWZpeCA9IGlzVHZPUyA/ICdBcHBsZVRWJyA6ICdpUGhvbmUnO1xuICBjb25zdCBzdWZmaXggPSBpc1NpbXVsYXRvciA/ICdTaW11bGF0b3InIDogJ09TJztcbiAgY29uc3QgZHN0UGxhdGZvcm0gPSBgJHtwcmVmaXh9JHtzdWZmaXh9YDtcbiAgaWYgKCFzdXBwb3J0ZWRQbGF0Zm9ybXMuaW5jbHVkZXMoZHN0UGxhdGZvcm0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2lzU2ltdWxhdG9yID8gJ1NpbXVsYXRvcicgOiAnUmVhbCBkZXZpY2UnfSBhcmNoaXRlY3R1cmUgaXMgdW5zdXBwb3J0ZWQgYnkgdGhlICcke2FwcH0nIGFwcGxpY2F0aW9uLiBgICtcbiAgICAgIGBNYWtlIHN1cmUgdGhlIGNvcnJlY3QgZGVwbG95bWVudCB0YXJnZXQgaGFzIGJlZW4gc2VsZWN0ZWQgZm9yIGl0cyBjb21waWxhdGlvbiBpbiBYY29kZS5gKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkUmVzb3VyY2UgKHJlc291cmNlUGF0aCkge1xuICBjb25zdCBkYXRhID0gYXdhaXQgcGxpc3QucGFyc2VQbGlzdEZpbGUocmVzb3VyY2VQYXRoKTtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhkYXRhKSkge1xuICAgIHJlc3VsdFtrZXldID0gXy5pc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5hc3luYyBmdW5jdGlvbiBwYXJzZUxvY2FsaXphYmxlU3RyaW5ncyAob3B0cykge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGxhbmd1YWdlID0gJ2VuJyxcbiAgICBsb2NhbGl6YWJsZVN0cmluZ3NEaXIsXG4gICAgc3RyaW5nRmlsZSxcbiAgICBzdHJpY3RNb2RlLFxuICB9ID0gb3B0cztcblxuICBpZiAoIWFwcCkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBgU3RyaW5ncyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaWYgJ2FwcCcgY2FwYWJpbGl0eSBpcyBub3Qgc2V0YDtcbiAgICBpZiAoc3RyaWN0TW9kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICBsb2cuaW5mbyhtZXNzYWdlKTtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBsZXQgbHByb2pSb290O1xuICBmb3IgKGNvbnN0IHN1YmZvbGRlciBvZiBbYCR7bGFuZ3VhZ2V9Lmxwcm9qYCwgbG9jYWxpemFibGVTdHJpbmdzRGlyLCAnJ10pIHtcbiAgICBscHJvalJvb3QgPSBwYXRoLnJlc29sdmUoYXBwLCBzdWJmb2xkZXIpO1xuICAgIGlmIChhd2FpdCBmcy5leGlzdHMobHByb2pSb290KSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IG1lc3NhZ2UgPSBgTm8gJyR7bHByb2pSb290fScgcmVzb3VyY2VzIGZvbGRlciBoYXMgYmVlbiBmb3VuZGA7XG4gICAgaWYgKHN0cmljdE1vZGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKG1lc3NhZ2UpO1xuICB9XG4gIGxvZy5pbmZvKGBXaWxsIGV4dHJhY3QgcmVzb3VyY2Ugc3RyaW5ncyBmcm9tICcke2xwcm9qUm9vdH0nYCk7XG5cbiAgY29uc3QgcmVzb3VyY2VQYXRocyA9IFtdO1xuICBpZiAoc3RyaW5nRmlsZSkge1xuICAgIGNvbnN0IGRzdFBhdGggPSBwYXRoLnJlc29sdmUobHByb2pSb290LCBzdHJpbmdGaWxlKTtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKGRzdFBhdGgpKSB7XG4gICAgICByZXNvdXJjZVBhdGhzLnB1c2goZHN0UGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgTm8gJyR7ZHN0UGF0aH0nIHJlc291cmNlIGZpbGUgaGFzIGJlZW4gZm91bmQgZm9yICcke2FwcH0nYDtcbiAgICAgIGlmIChzdHJpY3RNb2RlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIGxvZy5pbmZvKG1lc3NhZ2UpO1xuICAgICAgbG9nLmluZm8oYEdldHRpbmcgYWxsIHRoZSBhdmFpbGFibGUgc3RyaW5ncyBmcm9tICcke2xwcm9qUm9vdH0nYCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKF8uaXNFbXB0eShyZXNvdXJjZVBhdGhzKSAmJiBhd2FpdCBmcy5leGlzdHMobHByb2pSb290KSkge1xuICAgIGNvbnN0IHJlc291cmNlRmlsZXMgPSAoYXdhaXQgZnMucmVhZGRpcihscHJvalJvb3QpKVxuICAgICAgLmZpbHRlcigobmFtZSkgPT4gXy5zb21lKFtTVFJJTkdTX1JFU09VUkNFLCBTVFJJTkdTRElDVF9SRVNPVVJDRV0sICh4KSA9PiBuYW1lLmVuZHNXaXRoKHgpKSlcbiAgICAgIC5tYXAoKG5hbWUpID0+IHBhdGgucmVzb2x2ZShscHJvalJvb3QsIG5hbWUpKTtcbiAgICByZXNvdXJjZVBhdGhzLnB1c2goLi4ucmVzb3VyY2VGaWxlcyk7XG4gIH1cbiAgbG9nLmluZm8oYEdvdCAke3Jlc291cmNlUGF0aHMubGVuZ3RofSByZXNvdXJjZSBmaWxlKHMpIGluICcke2xwcm9qUm9vdH0nYCk7XG5cbiAgaWYgKF8uaXNFbXB0eShyZXNvdXJjZVBhdGhzKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdFN0cmluZ3MgPSB7fTtcbiAgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSBmdW5jdGlvbiAocCkge1xuICAgIHJldHVybiBwYXRoLmlzQWJzb2x1dGUocCkgPyBwIDogcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIHApO1xuICB9O1xuICBmb3IgKGNvbnN0IHJlc291cmNlUGF0aCBvZiByZXNvdXJjZVBhdGhzKSB7XG4gICAgaWYgKCF1dGlsLmlzU3ViUGF0aCh0b0Fic29sdXRlUGF0aChyZXNvdXJjZVBhdGgpLCB0b0Fic29sdXRlUGF0aChhcHApKSkge1xuICAgICAgLy8gc2VjdXJpdHkgcHJlY2F1dGlvblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtyZXNvdXJjZVBhdGh9JyBpcyBleHBlY3RlZCB0byBiZSBsb2NhdGVkIHVuZGVyICcke2FwcH0nYCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVhZFJlc291cmNlKHJlc291cmNlUGF0aCk7XG4gICAgICBsb2cuZGVidWcoYFBhcnNlZCAke18ua2V5cyhkYXRhKS5sZW5ndGh9IHN0cmluZyhzKSBmcm9tICcke3Jlc291cmNlUGF0aH0nYCk7XG4gICAgICBfLm1lcmdlKHJlc3VsdFN0cmluZ3MsIGRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy53YXJuKGBDYW5ub3QgcGFyc2UgJyR7cmVzb3VyY2VQYXRofScgcmVzb3VyY2UuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBsb2cuaW5mbyhgR290ICR7Xy5rZXlzKHJlc3VsdFN0cmluZ3MpLmxlbmd0aH0gc3RyaW5nKHMpIGZyb20gJyR7bHByb2pSb290fSdgKTtcbiAgcmV0dXJuIHJlc3VsdFN0cmluZ3M7XG59XG5cbmV4cG9ydCB7IGV4dHJhY3RCdW5kbGVJZCwgdmVyaWZ5QXBwbGljYXRpb25QbGF0Zm9ybSwgcGFyc2VMb2NhbGl6YWJsZVN0cmluZ3MgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLG9CQUFvQixHQUFHLGNBQTdCO0FBQ0EsTUFBTUMs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
@@ -42,4 +42,4 @@ var _default = build;
42
42
  exports.default = _default;require('source-map-support').install();
43
43
 
44
44
 
45
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2J1aWxkLXdkYS5qcyIsIm5hbWVzIjpbIkRFRkFVTFRfU0lNX05BTUUiLCJidWlsZCIsInhjb2RlVmVyc2lvbiIsImlvc1ZlcnNpb24iLCJkZXZpY2VOYW1lIiwiZGV2aWNlIiwicGxhdGZvcm1WZXJzaW9uIiwid2RhIiwiV2ViRHJpdmVyQWdlbnQiLCJpb3NTZGtWZXJzaW9uIiwic2hvd1hjb2RlTG9nIiwieGNvZGVidWlsZCIsInN0YXJ0IiwicmVxdWlyZSIsIm1haW4iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvYnVpbGQtd2RhLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdlYkRyaXZlckFnZW50IH0gZnJvbSAnYXBwaXVtLXdlYmRyaXZlcmFnZW50JztcbmltcG9ydCB7IHRyYW5zbGF0ZURldmljZU5hbWUsIGdldEFuZENoZWNrWGNvZGVWZXJzaW9uLCBnZXRBbmRDaGVja0lvc1Nka1ZlcnNpb24gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGdldEV4aXN0aW5nU2ltIH0gZnJvbSAnLi9zaW11bGF0b3ItbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBhc3luY2lmeSB9IGZyb20gJ2FzeW5jYm94JztcblxuY29uc3QgREVGQVVMVF9TSU1fTkFNRSA9ICdpUGhvbmUgMTInO1xuXG4vLyBUT0RPOiBhbGxvdyBwYXNzaW5nIGluIGFsbCB0aGUgdmFyaW91cyBidWlsZCBwYXJhbXMgYXMgQ0xJIGFyZ3NcbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkICgpIHtcbiAgY29uc3QgeGNvZGVWZXJzaW9uID0gYXdhaXQgZ2V0QW5kQ2hlY2tYY29kZVZlcnNpb24oKTtcbiAgY29uc3QgaW9zVmVyc2lvbiA9IGF3YWl0IGdldEFuZENoZWNrSW9zU2RrVmVyc2lvbigpO1xuICBjb25zdCBkZXZpY2VOYW1lID0gdHJhbnNsYXRlRGV2aWNlTmFtZShpb3NWZXJzaW9uLCBERUZBVUxUX1NJTV9OQU1FKTtcbiAgY29uc3QgZGV2aWNlID0gYXdhaXQgZ2V0RXhpc3RpbmdTaW0oe1xuICAgIHBsYXRmb3JtVmVyc2lvbjogaW9zVmVyc2lvbixcbiAgICBkZXZpY2VOYW1lXG4gIH0pO1xuICBjb25zdCB3ZGEgPSBuZXcgV2ViRHJpdmVyQWdlbnQoeGNvZGVWZXJzaW9uLCB7XG4gICAgaW9zU2RrVmVyc2lvbjogaW9zVmVyc2lvbixcbiAgICBwbGF0Zm9ybVZlcnNpb246IGlvc1ZlcnNpb24sXG4gICAgc2hvd1hjb2RlTG9nOiB0cnVlLFxuICAgIGRldmljZSxcbiAgfSk7XG4gIGF3YWl0IHdkYS54Y29kZWJ1aWxkLnN0YXJ0KHRydWUpO1xufVxuXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgYXN5bmNpZnkoYnVpbGQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBidWlsZDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsZ0JBQWdCLEdBQUcsV0FBekI7O0FBR0EsZUFBZUMsS0FBZixHQUF3QjtFQUN0QixNQUFNQyxZQUFZLEdBQUcsTUFBTSxxQ0FBM0I7RUFDQSxNQUFNQyxVQUFVLEdBQUcsTUFBTSxzQ0FBekI7RUFDQSxNQUFNQyxVQUFVLEdBQUcsZ0NBQW9CRCxVQUFwQixFQUFnQ0gsZ0JBQWhDLENBQW5CO0VBQ0EsTUFBTUssTUFBTSxHQUFHLE1BQU0seUNBQWU7SUFDbENDLGVBQWUsRUFBRUgsVUFEaUI7SUFFbENDO0VBRmtDLENBQWYsQ0FBckI7RUFJQSxNQUFNRyxHQUFHLEdBQUcsSUFBSUMsb0NBQUosQ0FBbUJOLFlBQW5CLEVBQWlDO0lBQzNDTyxhQUFhLEVBQUVOLFVBRDRCO0lBRTNDRyxlQUFlLEVBQUVILFVBRjBCO0lBRzNDTyxZQUFZLEVBQUUsSUFINkI7SUFJM0NMO0VBSjJDLENBQWpDLENBQVo7RUFNQSxNQUFNRSxHQUFHLENBQUNJLFVBQUosQ0FBZUMsS0FBZixDQUFxQixJQUFyQixDQUFOO0FBQ0Q7O0FBRUQsSUFBSUMsT0FBTyxDQUFDQyxJQUFSLEtBQWlCQyxNQUFyQixFQUE2QjtFQUMzQix3QkFBU2QsS0FBVDtBQUNEOztlQUVjQSxLIn0=
45
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2J1aWxkLXdkYS5qcyIsIm5hbWVzIjpbIkRFRkFVTFRfU0lNX05BTUUiLCJidWlsZCIsInhjb2RlVmVyc2lvbiIsImdldEFuZENoZWNrWGNvZGVWZXJzaW9uIiwiaW9zVmVyc2lvbiIsImdldEFuZENoZWNrSW9zU2RrVmVyc2lvbiIsImRldmljZU5hbWUiLCJ0cmFuc2xhdGVEZXZpY2VOYW1lIiwiZGV2aWNlIiwiZ2V0RXhpc3RpbmdTaW0iLCJwbGF0Zm9ybVZlcnNpb24iLCJ3ZGEiLCJXZWJEcml2ZXJBZ2VudCIsImlvc1Nka1ZlcnNpb24iLCJzaG93WGNvZGVMb2ciLCJ4Y29kZWJ1aWxkIiwic3RhcnQiLCJyZXF1aXJlIiwibWFpbiIsIm1vZHVsZSIsImFzeW5jaWZ5Il0sInNvdXJjZVJvb3QiOiIuLi8uLiIsInNvdXJjZXMiOlsibGliL2J1aWxkLXdkYS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXZWJEcml2ZXJBZ2VudCB9IGZyb20gJ2FwcGl1bS13ZWJkcml2ZXJhZ2VudCc7XG5pbXBvcnQgeyB0cmFuc2xhdGVEZXZpY2VOYW1lLCBnZXRBbmRDaGVja1hjb2RlVmVyc2lvbiwgZ2V0QW5kQ2hlY2tJb3NTZGtWZXJzaW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBnZXRFeGlzdGluZ1NpbSB9IGZyb20gJy4vc2ltdWxhdG9yLW1hbmFnZW1lbnQnO1xuaW1wb3J0IHsgYXN5bmNpZnkgfSBmcm9tICdhc3luY2JveCc7XG5cbmNvbnN0IERFRkFVTFRfU0lNX05BTUUgPSAnaVBob25lIDEyJztcblxuLy8gVE9ETzogYWxsb3cgcGFzc2luZyBpbiBhbGwgdGhlIHZhcmlvdXMgYnVpbGQgcGFyYW1zIGFzIENMSSBhcmdzXG5hc3luYyBmdW5jdGlvbiBidWlsZCAoKSB7XG4gIGNvbnN0IHhjb2RlVmVyc2lvbiA9IGF3YWl0IGdldEFuZENoZWNrWGNvZGVWZXJzaW9uKCk7XG4gIGNvbnN0IGlvc1ZlcnNpb24gPSBhd2FpdCBnZXRBbmRDaGVja0lvc1Nka1ZlcnNpb24oKTtcbiAgY29uc3QgZGV2aWNlTmFtZSA9IHRyYW5zbGF0ZURldmljZU5hbWUoaW9zVmVyc2lvbiwgREVGQVVMVF9TSU1fTkFNRSk7XG4gIGNvbnN0IGRldmljZSA9IGF3YWl0IGdldEV4aXN0aW5nU2ltKHtcbiAgICBwbGF0Zm9ybVZlcnNpb246IGlvc1ZlcnNpb24sXG4gICAgZGV2aWNlTmFtZVxuICB9KTtcbiAgY29uc3Qgd2RhID0gbmV3IFdlYkRyaXZlckFnZW50KHhjb2RlVmVyc2lvbiwge1xuICAgIGlvc1Nka1ZlcnNpb246IGlvc1ZlcnNpb24sXG4gICAgcGxhdGZvcm1WZXJzaW9uOiBpb3NWZXJzaW9uLFxuICAgIHNob3dYY29kZUxvZzogdHJ1ZSxcbiAgICBkZXZpY2UsXG4gIH0pO1xuICBhd2FpdCB3ZGEueGNvZGVidWlsZC5zdGFydCh0cnVlKTtcbn1cblxuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIGFzeW5jaWZ5KGJ1aWxkKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYnVpbGQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGdCQUFnQixHQUFHLFdBQXpCOztBQUdBLGVBQWVDLEtBQWYsR0FBd0I7RUFDdEIsTUFBTUMsWUFBWSxHQUFHLE1BQU0sSUFBQUMsOEJBQUEsR0FBM0I7RUFDQSxNQUFNQyxVQUFVLEdBQUcsTUFBTSxJQUFBQywrQkFBQSxHQUF6QjtFQUNBLE1BQU1DLFVBQVUsR0FBRyxJQUFBQywwQkFBQSxFQUFvQkgsVUFBcEIsRUFBZ0NKLGdCQUFoQyxDQUFuQjtFQUNBLE1BQU1RLE1BQU0sR0FBRyxNQUFNLElBQUFDLG1DQUFBLEVBQWU7SUFDbENDLGVBQWUsRUFBRU4sVUFEaUI7SUFFbENFO0VBRmtDLENBQWYsQ0FBckI7RUFJQSxNQUFNSyxHQUFHLEdBQUcsSUFBSUMsb0NBQUosQ0FBbUJWLFlBQW5CLEVBQWlDO0lBQzNDVyxhQUFhLEVBQUVULFVBRDRCO0lBRTNDTSxlQUFlLEVBQUVOLFVBRjBCO0lBRzNDVSxZQUFZLEVBQUUsSUFINkI7SUFJM0NOO0VBSjJDLENBQWpDLENBQVo7RUFNQSxNQUFNRyxHQUFHLENBQUNJLFVBQUosQ0FBZUMsS0FBZixDQUFxQixJQUFyQixDQUFOO0FBQ0Q7O0FBRUQsSUFBSUMsT0FBTyxDQUFDQyxJQUFSLEtBQWlCQyxNQUFyQixFQUE2QjtFQUMzQixJQUFBQyxrQkFBQSxFQUFTbkIsS0FBVDtBQUNEOztlQUVjQSxLIn0=
@@ -44,4 +44,4 @@ async function installCertificateLegacy(device, payload) {
44
44
  }require('source-map-support').install();
45
45
 
46
46
 
47
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NlcnQtdXRpbHMuanMiLCJuYW1lcyI6WyJkb2VzU3VwcG9ydEtleWNoYWluQXBpIiwiXyIsIm1lbW9pemUiLCJkZXZpY2UiLCJzaW1jdGwiLCJleGVjIiwiYXJncyIsImUiLCJpbnN0YWxsQ2VydGlmaWNhdGUiLCJwYXlsb2FkIiwiYWRkUm9vdENlcnRpZmljYXRlIiwicmF3IiwiaGFzQ2VydGlmaWNhdGVMZWdhY3kiLCJ1ZGlkIiwiaW5zdGFsbENlcnRpZmljYXRlTGVnYWN5Il0sInNvdXJjZVJvb3QiOiIuLi8uLiIsInNvdXJjZXMiOlsibGliL2NlcnQtdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGluc3RhbGxTU0xDZXJ0LCBoYXNTU0xDZXJ0IH0gZnJvbSAnYXBwaXVtLWlvcy1zaW11bGF0b3InO1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIFNpbXVsYXRvciBkZXZpY2Ugc3VwcG9ydHMgc2ltY3RsIGtleWNoYWluIEFQSS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGV2aWNlIFNpbXVsYXRvciBpbnN0YW5jZSBjcmVhdGVkIGJ5IGFwcGl1bS1pb3Mtc2ltdWxhdG9yIG1vZHVsZVxuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgY3VycmVudCBTaW11bGF0b3IgU0RLIHN1cHBvcnRzIGtleWNoYWluIGNvbW1hbmRzLlxuICovXG5jb25zdCBkb2VzU3VwcG9ydEtleWNoYWluQXBpID0gXy5tZW1vaXplKGFzeW5jIGZ1bmN0aW9uIGRvZXNTdXBwb3J0S2V5Y2hhaW5BcGkgKGRldmljZSkge1xuICB0cnkge1xuICAgIGF3YWl0IGRldmljZS5zaW1jdGwuZXhlYygnaGVscCcsIHtcbiAgICAgIGFyZ3M6IFsna2V5Y2hhaW4nXVxuICAgIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59KTtcblxuLyoqXG4gKiBBZGRzIGEgY2VydGlmaWNhdGUgdG8gdGhlIHRydXN0ZWQgcm9vdCBzdG9yZS5cbiAqIFNpbXVsYXRvciBtdXN0IGJlIGluIEJPT1RFRCBzdGF0ZSBmb3IgdGhpcyBBUEkgdG8gd29yay5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGV2aWNlIFNpbXVsYXRvciBpbnN0YW5jZSBjcmVhdGVkIGJ5IGFwcGl1bS1pb3Mtc2ltdWxhdG9yIG1vZHVsZVxuICogQHBhcmFtIHtzdHJpbmd9IHBheWxvYWQgQ2VydGlmaWNhdGUgcGF5bG9hZFxuICovXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsQ2VydGlmaWNhdGUgKGRldmljZSwgcGF5bG9hZCkge1xuICBhd2FpdCBkZXZpY2Uuc2ltY3RsLmFkZFJvb3RDZXJ0aWZpY2F0ZShwYXlsb2FkLCB7cmF3OiB0cnVlfSk7XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gY2VydGlmaWNhdGUgaXMgYWxyZWFkeSBpbnN0YWxsZWQuXG4gKiBUaGUgZnVuY3Rpb24gaXMgdXNpbmcgaGFja3kgY2FsbHMgdG8gbWFrZSBjZXJ0aWZpY2F0ZSBzdHVmZiB3b3JraW5nIGZvciBvbGRlciBTREtzLlxuICogU2ltdWxhdG9yIG11c3QgYmUgaW4gU0hVVERPV04gc3RhdGUgZm9yIHRoaXMgQVBJIHRvIHdvcmsuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRldmljZSBTaW11bGF0b3IgaW5zdGFuY2UgY3JlYXRlZCBieSBhcHBpdW0taW9zLXNpbXVsYXRvciBtb2R1bGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXlsb2FkIENlcnRpZmljYXRlIHBheWxvYWRcbiAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIGNlcnRpZmljYXRlIGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgcm9vdCBzdG9yZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gaGFzQ2VydGlmaWNhdGVMZWdhY3kgKGRldmljZSwgcGF5bG9hZCkge1xuICByZXR1cm4gYXdhaXQgaGFzU1NMQ2VydChwYXlsb2FkLCBkZXZpY2UudWRpZCk7XG59XG5cbi8qKlxuICogQWRkcyBhIGNlcnRpZmljYXRlIHRvIHRoZSB0cnVzdGVkIHJvb3Qgc3RvcmUuXG4gKiBUaGUgZnVuY3Rpb24gaXMgdXNpbmcgaGFja3kgY2FsbHMgdG8gbWFrZSBjZXJ0aWZpY2F0ZSBzdHVmZiB3b3JraW5nIGZvciBvbGRlciBTREtzLlxuICogU2ltdWxhdG9yIG11c3QgYmUgaW4gU0hVVERPV04gc3RhdGUgZm9yIHRoaXMgQVBJIHRvIHdvcmsuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRldmljZSBTaW11bGF0b3IgaW5zdGFuY2UgY3JlYXRlZCBieSBhcHBpdW0taW9zLXNpbXVsYXRvciBtb2R1bGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXlsb2FkIENlcnRpZmljYXRlIHBheWxvYWRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbENlcnRpZmljYXRlTGVnYWN5IChkZXZpY2UsIHBheWxvYWQpIHtcbiAgYXdhaXQgaW5zdGFsbFNTTENlcnQocGF5bG9hZCwgZGV2aWNlLnVkaWQpO1xufVxuXG5cbmV4cG9ydCB7XG4gIGRvZXNTdXBwb3J0S2V5Y2hhaW5BcGksIGluc3RhbGxDZXJ0aWZpY2F0ZSwgaW5zdGFsbENlcnRpZmljYXRlTGVnYWN5LFxuICBoYXNDZXJ0aWZpY2F0ZUxlZ2FjeVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFRQSxNQUFNQSxzQkFBc0IsR0FBR0MsZ0JBQUVDLE9BQUYsQ0FBVSxlQUFlRixzQkFBZixDQUF1Q0csTUFBdkMsRUFBK0M7RUFDdEYsSUFBSTtJQUNGLE1BQU1BLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjQyxJQUFkLENBQW1CLE1BQW5CLEVBQTJCO01BQy9CQyxJQUFJLEVBQUUsQ0FBQyxVQUFEO0lBRHlCLENBQTNCLENBQU47SUFHQSxPQUFPLElBQVA7RUFDRCxDQUxELENBS0UsT0FBT0MsQ0FBUCxFQUFVO0lBQ1YsT0FBTyxLQUFQO0VBQ0Q7QUFDRixDQVQ4QixDQUEvQjs7OztBQWtCQSxlQUFlQyxrQkFBZixDQUFtQ0wsTUFBbkMsRUFBMkNNLE9BQTNDLEVBQW9EO0VBQ2xELE1BQU1OLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjTSxrQkFBZCxDQUFpQ0QsT0FBakMsRUFBMEM7SUFBQ0UsR0FBRyxFQUFFO0VBQU4sQ0FBMUMsQ0FBTjtBQUNEOztBQVdELGVBQWVDLG9CQUFmLENBQXFDVCxNQUFyQyxFQUE2Q00sT0FBN0MsRUFBc0Q7RUFDcEQsT0FBTyxNQUFNLG9DQUFXQSxPQUFYLEVBQW9CTixNQUFNLENBQUNVLElBQTNCLENBQWI7QUFDRDs7QUFVRCxlQUFlQyx3QkFBZixDQUF5Q1gsTUFBekMsRUFBaURNLE9BQWpELEVBQTBEO0VBQ3hELE1BQU0sd0NBQWVBLE9BQWYsRUFBd0JOLE1BQU0sQ0FBQ1UsSUFBL0IsQ0FBTjtBQUNEIn0=
47
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NlcnQtdXRpbHMuanMiLCJuYW1lcyI6WyJkb2VzU3VwcG9ydEtleWNoYWluQXBpIiwiXyIsIm1lbW9pemUiLCJkZXZpY2UiLCJzaW1jdGwiLCJleGVjIiwiYXJncyIsImUiLCJpbnN0YWxsQ2VydGlmaWNhdGUiLCJwYXlsb2FkIiwiYWRkUm9vdENlcnRpZmljYXRlIiwicmF3IiwiaGFzQ2VydGlmaWNhdGVMZWdhY3kiLCJoYXNTU0xDZXJ0IiwidWRpZCIsImluc3RhbGxDZXJ0aWZpY2F0ZUxlZ2FjeSIsImluc3RhbGxTU0xDZXJ0Il0sInNvdXJjZVJvb3QiOiIuLi8uLiIsInNvdXJjZXMiOlsibGliL2NlcnQtdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGluc3RhbGxTU0xDZXJ0LCBoYXNTU0xDZXJ0IH0gZnJvbSAnYXBwaXVtLWlvcy1zaW11bGF0b3InO1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIFNpbXVsYXRvciBkZXZpY2Ugc3VwcG9ydHMgc2ltY3RsIGtleWNoYWluIEFQSS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGV2aWNlIFNpbXVsYXRvciBpbnN0YW5jZSBjcmVhdGVkIGJ5IGFwcGl1bS1pb3Mtc2ltdWxhdG9yIG1vZHVsZVxuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgY3VycmVudCBTaW11bGF0b3IgU0RLIHN1cHBvcnRzIGtleWNoYWluIGNvbW1hbmRzLlxuICovXG5jb25zdCBkb2VzU3VwcG9ydEtleWNoYWluQXBpID0gXy5tZW1vaXplKGFzeW5jIGZ1bmN0aW9uIGRvZXNTdXBwb3J0S2V5Y2hhaW5BcGkgKGRldmljZSkge1xuICB0cnkge1xuICAgIGF3YWl0IGRldmljZS5zaW1jdGwuZXhlYygnaGVscCcsIHtcbiAgICAgIGFyZ3M6IFsna2V5Y2hhaW4nXVxuICAgIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59KTtcblxuLyoqXG4gKiBBZGRzIGEgY2VydGlmaWNhdGUgdG8gdGhlIHRydXN0ZWQgcm9vdCBzdG9yZS5cbiAqIFNpbXVsYXRvciBtdXN0IGJlIGluIEJPT1RFRCBzdGF0ZSBmb3IgdGhpcyBBUEkgdG8gd29yay5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGV2aWNlIFNpbXVsYXRvciBpbnN0YW5jZSBjcmVhdGVkIGJ5IGFwcGl1bS1pb3Mtc2ltdWxhdG9yIG1vZHVsZVxuICogQHBhcmFtIHtzdHJpbmd9IHBheWxvYWQgQ2VydGlmaWNhdGUgcGF5bG9hZFxuICovXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsQ2VydGlmaWNhdGUgKGRldmljZSwgcGF5bG9hZCkge1xuICBhd2FpdCBkZXZpY2Uuc2ltY3RsLmFkZFJvb3RDZXJ0aWZpY2F0ZShwYXlsb2FkLCB7cmF3OiB0cnVlfSk7XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gY2VydGlmaWNhdGUgaXMgYWxyZWFkeSBpbnN0YWxsZWQuXG4gKiBUaGUgZnVuY3Rpb24gaXMgdXNpbmcgaGFja3kgY2FsbHMgdG8gbWFrZSBjZXJ0aWZpY2F0ZSBzdHVmZiB3b3JraW5nIGZvciBvbGRlciBTREtzLlxuICogU2ltdWxhdG9yIG11c3QgYmUgaW4gU0hVVERPV04gc3RhdGUgZm9yIHRoaXMgQVBJIHRvIHdvcmsuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRldmljZSBTaW11bGF0b3IgaW5zdGFuY2UgY3JlYXRlZCBieSBhcHBpdW0taW9zLXNpbXVsYXRvciBtb2R1bGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXlsb2FkIENlcnRpZmljYXRlIHBheWxvYWRcbiAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIGNlcnRpZmljYXRlIGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgcm9vdCBzdG9yZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gaGFzQ2VydGlmaWNhdGVMZWdhY3kgKGRldmljZSwgcGF5bG9hZCkge1xuICByZXR1cm4gYXdhaXQgaGFzU1NMQ2VydChwYXlsb2FkLCBkZXZpY2UudWRpZCk7XG59XG5cbi8qKlxuICogQWRkcyBhIGNlcnRpZmljYXRlIHRvIHRoZSB0cnVzdGVkIHJvb3Qgc3RvcmUuXG4gKiBUaGUgZnVuY3Rpb24gaXMgdXNpbmcgaGFja3kgY2FsbHMgdG8gbWFrZSBjZXJ0aWZpY2F0ZSBzdHVmZiB3b3JraW5nIGZvciBvbGRlciBTREtzLlxuICogU2ltdWxhdG9yIG11c3QgYmUgaW4gU0hVVERPV04gc3RhdGUgZm9yIHRoaXMgQVBJIHRvIHdvcmsuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRldmljZSBTaW11bGF0b3IgaW5zdGFuY2UgY3JlYXRlZCBieSBhcHBpdW0taW9zLXNpbXVsYXRvciBtb2R1bGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXlsb2FkIENlcnRpZmljYXRlIHBheWxvYWRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbENlcnRpZmljYXRlTGVnYWN5IChkZXZpY2UsIHBheWxvYWQpIHtcbiAgYXdhaXQgaW5zdGFsbFNTTENlcnQocGF5bG9hZCwgZGV2aWNlLnVkaWQpO1xufVxuXG5cbmV4cG9ydCB7XG4gIGRvZXNTdXBwb3J0S2V5Y2hhaW5BcGksIGluc3RhbGxDZXJ0aWZpY2F0ZSwgaW5zdGFsbENlcnRpZmljYXRlTGVnYWN5LFxuICBoYXNDZXJ0aWZpY2F0ZUxlZ2FjeVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFRQSxNQUFNQSxzQkFBc0IsR0FBR0MsZUFBQSxDQUFFQyxPQUFGLENBQVUsZUFBZUYsc0JBQWYsQ0FBdUNHLE1BQXZDLEVBQStDO0VBQ3RGLElBQUk7SUFDRixNQUFNQSxNQUFNLENBQUNDLE1BQVAsQ0FBY0MsSUFBZCxDQUFtQixNQUFuQixFQUEyQjtNQUMvQkMsSUFBSSxFQUFFLENBQUMsVUFBRDtJQUR5QixDQUEzQixDQUFOO0lBR0EsT0FBTyxJQUFQO0VBQ0QsQ0FMRCxDQUtFLE9BQU9DLENBQVAsRUFBVTtJQUNWLE9BQU8sS0FBUDtFQUNEO0FBQ0YsQ0FUOEIsQ0FBL0I7Ozs7QUFrQkEsZUFBZUMsa0JBQWYsQ0FBbUNMLE1BQW5DLEVBQTJDTSxPQUEzQyxFQUFvRDtFQUNsRCxNQUFNTixNQUFNLENBQUNDLE1BQVAsQ0FBY00sa0JBQWQsQ0FBaUNELE9BQWpDLEVBQTBDO0lBQUNFLEdBQUcsRUFBRTtFQUFOLENBQTFDLENBQU47QUFDRDs7QUFXRCxlQUFlQyxvQkFBZixDQUFxQ1QsTUFBckMsRUFBNkNNLE9BQTdDLEVBQXNEO0VBQ3BELE9BQU8sTUFBTSxJQUFBSSw4QkFBQSxFQUFXSixPQUFYLEVBQW9CTixNQUFNLENBQUNXLElBQTNCLENBQWI7QUFDRDs7QUFVRCxlQUFlQyx3QkFBZixDQUF5Q1osTUFBekMsRUFBaURNLE9BQWpELEVBQTBEO0VBQ3hELE1BQU0sSUFBQU8sa0NBQUEsRUFBZVAsT0FBZixFQUF3Qk4sTUFBTSxDQUFDVyxJQUEvQixDQUFOO0FBQ0QifQ==
@@ -197,4 +197,4 @@ var _default = commands;
197
197
  exports.default = _default;require('source-map-support').install();
198
198
 
199
199
 
200
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2FwcC1tYW5hZ2VtZW50LmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJyZXF1aXJlT3B0aW9ucyIsIm9wdHMiLCJyZXFLZXlzIiwia2V5IiwiXyIsImlzU3RyaW5nIiwiaXNFbXB0eSIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwibW9iaWxlSW5zdGFsbEFwcCIsImFwcCIsInRpbWVvdXRNcyIsInN0cmF0ZWd5Iiwic3JjQXBwUGF0aCIsImhlbHBlcnMiLCJjb25maWd1cmVBcHAiLCJsb2ciLCJpbmZvIiwiaXNSZWFsRGV2aWNlIiwiZGV2aWNlIiwidWRpZCIsImZzIiwiZXhpc3RzIiwiZXJyb3JBbmRUaHJvdyIsImluc3RhbGxBcHAiLCJhcHBQdXNoVGltZW91dCIsImFwcEluc3RhbGxTdHJhdGVneSIsIm1vYmlsZUlzQXBwSW5zdGFsbGVkIiwiYnVuZGxlSWQiLCJpbnN0YWxsZWQiLCJpc0FwcEluc3RhbGxlZCIsIm1vYmlsZVJlbW92ZUFwcCIsInJlbW92ZUFwcCIsImVyciIsIndhcm4iLCJtZXNzYWdlIiwibW9iaWxlTGF1bmNoQXBwIiwibGF1bmNoT3B0aW9ucyIsImFyZ3VtZW50cyIsImlzQXJyYXkiLCJlbnZpcm9ubWVudCIsInByb3h5Q29tbWFuZCIsIm1vYmlsZVRlcm1pbmF0ZUFwcCIsIm1vYmlsZUFjdGl2YXRlQXBwIiwibW9iaWxlS2lsbEFwcCIsIlVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3IiLCJpbnN0cnVtZW50U2VydmljZSIsImluc3RhbGxQcm94eVNlcnZpY2UiLCJzZXJ2aWNlcyIsInN0YXJ0SW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlIiwiYXBwcyIsImxpc3RBcHBsaWNhdGlvbnMiLCJleGVjdXRhYmxlTmFtZSIsIkNGQnVuZGxlRXhlY3V0YWJsZSIsImRlYnVnIiwic3RhcnRJbnN0cnVtZW50U2VydmljZSIsInByb2Nlc3NlcyIsImNhbGxDaGFubmVsIiwiSU5TVFJVTUVOVF9DSEFOTkVMIiwiREVWSUNFX0lORk8iLCJwcm9jZXNzIiwic2VsZWN0b3IiLCJmaW5kIiwibmFtZSIsIlBST0NFU1NfQ09OVFJPTCIsInBpZCIsInN0ZGVyciIsImNsb3NlIiwibW9iaWxlUXVlcnlBcHBTdGF0ZSIsImFwcFBhdGgiLCJpc1BsYWluT2JqZWN0IiwiYWN0aXZhdGVBcHAiLCJPYmplY3QiLCJhc3NpZ24iLCJ0ZXJtaW5hdGVBcHAiLCJxdWVyeUFwcFN0YXRlIiwibW9iaWxlTGlzdEFwcHMiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiYXBwbGljYXRpb25UeXBlIiwic2VydmljZSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9hcHAtbWFuYWdlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyBzZXJ2aWNlcywgSU5TVFJVTUVOVF9DSEFOTkVMIH0gZnJvbSAnYXBwaXVtLWlvcy1kZXZpY2UnO1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5mdW5jdGlvbiByZXF1aXJlT3B0aW9ucyAob3B0cyA9IHt9LCByZXFLZXlzID0gW10pIHtcbiAgZm9yIChjb25zdCBrZXkgb2YgcmVxS2V5cykge1xuICAgIGlmICghXy5pc1N0cmluZyhvcHRzW2tleV0pIHx8IF8uaXNFbXB0eShvcHRzW2tleV0pKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgICBgJyR7a2V5fScgaXMgZXhwZWN0ZWQgdG8gYmUgYSB2YWxpZCBzdHJpbmcuICcke29wdHNba2V5XX0nIGlzIGdpdmVuIGluc3RlYWRgXG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3B0cztcbn1cblxuY29tbWFuZHMubW9iaWxlSW5zdGFsbEFwcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUluc3RhbGxBcHAgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7IGFwcCwgdGltZW91dE1zLCBzdHJhdGVneSB9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydhcHAnXSk7XG4gIGNvbnN0IHNyY0FwcFBhdGggPSBhd2FpdCB0aGlzLmhlbHBlcnMuY29uZmlndXJlQXBwKGFwcCwgJy5hcHAnKTtcbiAgdGhpcy5sb2cuaW5mbyhgSW5zdGFsbGluZyAnJHtzcmNBcHBQYXRofScgdG8gdGhlICR7dGhpcy5pc1JlYWxEZXZpY2UoKSA/ICdyZWFsIGRldmljZScgOiAnU2ltdWxhdG9yJ30gYCArXG4gICAgYHdpdGggVURJRCAnJHt0aGlzLm9wdHMuZGV2aWNlLnVkaWR9J2ApO1xuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhzcmNBcHBQYXRoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYFRoZSBhcHBsaWNhdGlvbiBhdCAnJHtzcmNBcHBQYXRofScgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGFjY2Vzc2libGVgKTtcbiAgfVxuICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLmluc3RhbGxBcHAoXG4gICAgc3JjQXBwUGF0aCwgdGltZW91dE1zID8/IHRoaXMub3B0cy5hcHBQdXNoVGltZW91dCwgc3RyYXRlZ3kgPz8gdGhpcy5vcHRzLmFwcEluc3RhbGxTdHJhdGVneVxuICApO1xuICB0aGlzLmxvZy5pbmZvKGBJbnN0YWxsYXRpb24gb2YgJyR7c3JjQXBwUGF0aH0nIHN1Y2NlZWRlZGApO1xufTtcblxuY29tbWFuZHMubW9iaWxlSXNBcHBJbnN0YWxsZWQgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVJc0FwcEluc3RhbGxlZCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtidW5kbGVJZH0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2J1bmRsZUlkJ10pO1xuICBjb25zdCBpbnN0YWxsZWQgPSBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLmlzQXBwSW5zdGFsbGVkKGJ1bmRsZUlkKTtcbiAgdGhpcy5sb2cuaW5mbyhgQXBwICcke2J1bmRsZUlkfScgaXMke2luc3RhbGxlZCA/ICcnIDogJyBub3QnfSBpbnN0YWxsZWRgKTtcbiAgcmV0dXJuIGluc3RhbGxlZDtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVJlbW92ZUFwcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVJlbW92ZUFwcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtidW5kbGVJZH0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2J1bmRsZUlkJ10pO1xuICB0aGlzLmxvZy5pbmZvKGBVbmluc3RhbGxpbmcgdGhlIGFwcGxpY2F0aW9uIHdpdGggYnVuZGxlIGlkZW50aWZpZXIgJyR7YnVuZGxlSWR9JyBgICtcbiAgICBgZnJvbSB0aGUgJHt0aGlzLmlzUmVhbERldmljZSgpID8gJ3JlYWwgZGV2aWNlJyA6ICdTaW11bGF0b3InfSB3aXRoIFVESUQgJyR7dGhpcy5vcHRzLmRldmljZS51ZGlkfSdgKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLnJlbW92ZUFwcChidW5kbGVJZCk7XG4gICAgdGhpcy5sb2cuaW5mbyhgUmVtb3ZhbCBvZiAnJHtidW5kbGVJZH0nIHN1Y2NlZWRlZGApO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLmxvZy53YXJuKGBDYW5ub3QgcmVtb3ZlICcke2J1bmRsZUlkfScuIE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuY29tbWFuZHMubW9iaWxlTGF1bmNoQXBwID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlTGF1bmNoQXBwIChvcHRzID0ge30pIHtcbiAgY29uc3QgbGF1bmNoT3B0aW9ucyA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYnVuZGxlSWQnXSk7XG4gIGlmIChvcHRzLmFyZ3VtZW50cykge1xuICAgIGxhdW5jaE9wdGlvbnMuYXJndW1lbnRzID0gXy5pc0FycmF5KG9wdHMuYXJndW1lbnRzKSA/IG9wdHMuYXJndW1lbnRzIDogW29wdHMuYXJndW1lbnRzXTtcbiAgfVxuICBpZiAob3B0cy5lbnZpcm9ubWVudCkge1xuICAgIGxhdW5jaE9wdGlvbnMuZW52aXJvbm1lbnQgPSBvcHRzLmVudmlyb25tZW50O1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS9hcHBzL2xhdW5jaCcsICdQT1NUJywgbGF1bmNoT3B0aW9ucyk7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVUZXJtaW5hdGVBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVUZXJtaW5hdGVBcHAgKG9wdHMgPSB7fSkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvYXBwcy90ZXJtaW5hdGUnLCAnUE9TVCcsIHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYnVuZGxlSWQnXSkpO1xufTtcblxuY29tbWFuZHMubW9iaWxlQWN0aXZhdGVBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVBY3RpdmF0ZUFwcCAob3B0cyA9IHt9KSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS9hcHBzL2FjdGl2YXRlJywgJ1BPU1QnLCByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2J1bmRsZUlkJ10pKTtcbn07XG5cbi8qKlxuICogS2lsbCB0aGUgZ2l2ZW4gYnVuZGxlIGlkIHByb2Nlc3MgdmlhIGluc3RydW1lbnRzIHNlcnZpY2UuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vWXVlQ2hlbi1DL3B5LWlvcy1kZXZpY2UvYmxvYi81MWY0NjgzYzVjM2MzODVhMDE1ODU4YWRhMDdhNWYxYzYyZDNjZjU3L2lvc19kZXZpY2UvY2xpL2Jhc2UucHkjTDIyMFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gT3B0aW9ucyBzZXQsIHdoaWNoIG11c3QgY29udGFpbiBgYnVuZGxlSWRgIHByb3BlcnR5XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHRoZSBidW5kbGUgaWQgcHJvY2VzcyB3YXMga2lsbGVkLiBPdGhlcndpc2UgZmFsc2UuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUtpbGxBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVLaWxsQXBwIChvcHRzID0ge30pIHtcbiAgaWYgKCF0aGlzLmlzUmVhbERldmljZSgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5VbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yKCdBIHJlYWwgZGV2aWNlIGlzIHJlcXVpcmVkJyk7XG4gIH1cblxuICBjb25zdCB7YnVuZGxlSWR9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydidW5kbGVJZCddKTtcbiAgbGV0IGluc3RydW1lbnRTZXJ2aWNlO1xuICBsZXQgaW5zdGFsbFByb3h5U2VydmljZTtcbiAgdHJ5IHtcbiAgICBpbnN0YWxsUHJveHlTZXJ2aWNlID0gYXdhaXQgc2VydmljZXMuc3RhcnRJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UodGhpcy5vcHRzLmRldmljZS51ZGlkKTtcbiAgICBjb25zdCBhcHBzID0gYXdhaXQgaW5zdGFsbFByb3h5U2VydmljZS5saXN0QXBwbGljYXRpb25zKCk7XG4gICAgaWYgKCFhcHBzW2J1bmRsZUlkXSkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgVGhlIGJ1bmRsZSBpZCAnJHtidW5kbGVJZH0nIGRpZCBub3QgZXhpc3RgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgZXhlY3V0YWJsZU5hbWUgPSBhcHBzW2J1bmRsZUlkXS5DRkJ1bmRsZUV4ZWN1dGFibGU7XG4gICAgdGhpcy5sb2cuZGVidWcoYFRoZSBleGVjdXRhYmxlIG5hbWUgZm9yIHRoZSBidW5kbGUgaWQgJyR7YnVuZGxlSWR9JyB3YXMgJyR7ZXhlY3V0YWJsZU5hbWV9J2ApO1xuICAgIGluc3RydW1lbnRTZXJ2aWNlID0gYXdhaXQgc2VydmljZXMuc3RhcnRJbnN0cnVtZW50U2VydmljZSh0aGlzLm9wdHMuZGV2aWNlLnVkaWQpO1xuICAgIGNvbnN0IHByb2Nlc3NlcyA9IGF3YWl0IGluc3RydW1lbnRTZXJ2aWNlLmNhbGxDaGFubmVsKElOU1RSVU1FTlRfQ0hBTk5FTC5ERVZJQ0VfSU5GTywgJ3J1bm5pbmdQcm9jZXNzZXMnKTtcbiAgICBjb25zdCBwcm9jZXNzID0gcHJvY2Vzc2VzLnNlbGVjdG9yLmZpbmQoKHByb2Nlc3MpID0+IHByb2Nlc3MubmFtZSA9PT0gZXhlY3V0YWJsZU5hbWUpO1xuICAgIGlmICghcHJvY2Vzcykge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgVGhlIHByb2Nlc3Mgb2YgdGhlIGJ1bmRsZSBpZCAnJHtidW5kbGVJZH0nIHdhcyBub3QgcnVubmluZ2ApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBhd2FpdCBpbnN0cnVtZW50U2VydmljZS5jYWxsQ2hhbm5lbChJTlNUUlVNRU5UX0NIQU5ORUwuUFJPQ0VTU19DT05UUk9MLCAna2lsbFBpZDonLCBgJHtwcm9jZXNzLnBpZH1gKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5sb2cud2FybihgRmFpbGVkIHRvIGtpbGwgJyR7YnVuZGxlSWR9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLnN0ZGVyciB8fCBlcnIubWVzc2FnZX1gKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKGluc3RhbGxQcm94eVNlcnZpY2UpIHtcbiAgICAgIGluc3RhbGxQcm94eVNlcnZpY2UuY2xvc2UoKTtcbiAgICB9XG4gICAgaWYgKGluc3RydW1lbnRTZXJ2aWNlKSB7XG4gICAgICBpbnN0cnVtZW50U2VydmljZS5jbG9zZSgpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIHN0YXRlXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBPcHRpb25zIHNldCwgd2hpY2ggbXVzdCBjb250YWluIGBidW5kbGVJZGAgcHJvcGVydHlcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBhY3R1YWwgYXBwbGljYXRpb24gc3RhdGUgY29kZS4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWFwcGxpY2F0aW9uc3RhdGU/bGFuZ3VhZ2U9b2JqY1xuICogdG8gZ2V0IHRoZSBsaXN0IG9mIHBvc3NpYmxlIHZhbHVlcy5cbiAqL1xuY29tbWFuZHMubW9iaWxlUXVlcnlBcHBTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVF1ZXJ5QXBwU3RhdGUgKG9wdHMgPSB7fSkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvYXBwcy9zdGF0ZScsICdQT1NUJywgcmVxdWlyZU9wdGlvbnMob3B0cywgWydidW5kbGVJZCddKSk7XG59O1xuXG5jb21tYW5kcy5pbnN0YWxsQXBwID0gYXN5bmMgZnVuY3Rpb24gaW5zdGFsbEFwcCAoYXBwUGF0aCwgb3B0cyA9IHt9KSB7XG4gIGF3YWl0IHRoaXMubW9iaWxlSW5zdGFsbEFwcCh7XG4gICAgLi4uKF8uaXNQbGFpbk9iamVjdChvcHRzKSA/IG9wdHMgOiB7fSksXG4gICAgYXBwOiBhcHBQYXRoLFxuICB9KTtcbn07XG5cbmNvbW1hbmRzLmFjdGl2YXRlQXBwID0gYXN5bmMgZnVuY3Rpb24gYWN0aXZhdGVBcHAgKGJ1bmRsZUlkLCBvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMubW9iaWxlTGF1bmNoQXBwKE9iamVjdC5hc3NpZ24oe30sIG9wdHMsIHtidW5kbGVJZH0pKTtcbn07XG5cbmNvbW1hbmRzLmlzQXBwSW5zdGFsbGVkID0gYXN5bmMgZnVuY3Rpb24gaXNBcHBJbnN0YWxsZWQgKGJ1bmRsZUlkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLm1vYmlsZUlzQXBwSW5zdGFsbGVkKHtidW5kbGVJZH0pO1xufTtcblxuY29tbWFuZHMudGVybWluYXRlQXBwID0gYXN5bmMgZnVuY3Rpb24gdGVybWluYXRlQXBwIChidW5kbGVJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5tb2JpbGVUZXJtaW5hdGVBcHAoe2J1bmRsZUlkfSk7XG59O1xuXG5jb21tYW5kcy5xdWVyeUFwcFN0YXRlID0gYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBTdGF0ZSAoYnVuZGxlSWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMubW9iaWxlUXVlcnlBcHBTdGF0ZSh7YnVuZGxlSWR9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gTGlzdEFwcHNPcHRpb25zXG4gKiBAcHJvcGVydHkgeydTeXN0ZW0nfCdVc2VyJ30gYXBwbGljYXRpb25UeXBlIFtVc2VyXSBUaGUgdHlwZSBvZiBhcHBsaWNhdGlvbnMgdG8gbGlzdFxuICovXG5cbi8qKlxuICogTGlzdCBhcHBsaWNhdGlvbnMgaW5zdGFsbGVkIG9uIHRoZSByZWFsIGRldmljZSB1bmRlciB0ZXN0XG4gKlxuICogQHBhcmFtIHtMaXN0QXBwc09wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtBcnJheTxPYmplY3Q+fSBBIGxpc3Qgb2YgYXBwcywgd2hlcmUgZWFjaCBpdGVtIGlzIGEgbWFwIHdoZXJlIGtleXMgYXJlXG4gKiBidW5kbGUgaWRlbnRpZmllcnMgYW5kIHZhbHVlcyBhcmUgbWFwcyBvZiBwbGF0Zm9ybS1zcGVjaWZpYyBhcHAgcHJvcGVydGllcy5cbiAqL1xuY29tbWFuZHMubW9iaWxlTGlzdEFwcHMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVMaXN0QXBwcyAob3B0cyA9IHt9KSB7XG4gIGlmICghdGhpcy5pc1JlYWxEZXZpY2UoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcihgVGhpcyBleHRlbnNpb24gaXMgb25seSBzdXBwb3J0ZWQgb24gcmVhbCBkZXZpY2VzYCk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgYXBwbGljYXRpb25UeXBlID0gJ1VzZXInLFxuICB9ID0gb3B0cztcbiAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHNlcnZpY2VzLnN0YXJ0SW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlKHRoaXMub3B0cy5kZXZpY2UudWRpZCk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHNlcnZpY2UubGlzdEFwcGxpY2F0aW9ucyh7YXBwbGljYXRpb25UeXBlfSk7XG4gIH0gZmluYWxseSB7XG4gICAgc2VydmljZS5jbG9zZSgpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7O0FBRUEsU0FBU0MsY0FBVCxDQUF5QkMsSUFBSSxHQUFHLEVBQWhDLEVBQW9DQyxPQUFPLEdBQUcsRUFBOUMsRUFBa0Q7RUFDaEQsS0FBSyxNQUFNQyxHQUFYLElBQWtCRCxPQUFsQixFQUEyQjtJQUN6QixJQUFJLENBQUNFLGdCQUFFQyxRQUFGLENBQVdKLElBQUksQ0FBQ0UsR0FBRCxDQUFmLENBQUQsSUFBMEJDLGdCQUFFRSxPQUFGLENBQVVMLElBQUksQ0FBQ0UsR0FBRCxDQUFkLENBQTlCLEVBQW9EO01BQ2xELE1BQU0sSUFBSUksbUJBQU9DLG9CQUFYLENBQ0gsSUFBR0wsR0FBSSx3Q0FBdUNGLElBQUksQ0FBQ0UsR0FBRCxDQUFNLG9CQURyRCxDQUFOO0lBR0Q7RUFDRjs7RUFDRCxPQUFPRixJQUFQO0FBQ0Q7O0FBRURGLFFBQVEsQ0FBQ1UsZ0JBQVQsR0FBNEIsZUFBZUEsZ0JBQWYsQ0FBaUNSLElBQUksR0FBRyxFQUF4QyxFQUE0QztFQUN0RSxNQUFNO0lBQUVTLEdBQUY7SUFBT0MsU0FBUDtJQUFrQkM7RUFBbEIsSUFBK0JaLGNBQWMsQ0FBQ0MsSUFBRCxFQUFPLENBQUMsS0FBRCxDQUFQLENBQW5EO0VBQ0EsTUFBTVksVUFBVSxHQUFHLE1BQU0sS0FBS0MsT0FBTCxDQUFhQyxZQUFiLENBQTBCTCxHQUExQixFQUErQixNQUEvQixDQUF6QjtFQUNBLEtBQUtN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
200
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2FwcC1tYW5hZ2VtZW50LmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJyZXF1aXJlT3B0aW9ucyIsIm9wdHMiLCJyZXFLZXlzIiwia2V5IiwiXyIsImlzU3RyaW5nIiwiaXNFbXB0eSIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwibW9iaWxlSW5zdGFsbEFwcCIsImFwcCIsInRpbWVvdXRNcyIsInN0cmF0ZWd5Iiwic3JjQXBwUGF0aCIsImhlbHBlcnMiLCJjb25maWd1cmVBcHAiLCJsb2ciLCJpbmZvIiwiaXNSZWFsRGV2aWNlIiwiZGV2aWNlIiwidWRpZCIsImZzIiwiZXhpc3RzIiwiZXJyb3JBbmRUaHJvdyIsImluc3RhbGxBcHAiLCJhcHBQdXNoVGltZW91dCIsImFwcEluc3RhbGxTdHJhdGVneSIsIm1vYmlsZUlzQXBwSW5zdGFsbGVkIiwiYnVuZGxlSWQiLCJpbnN0YWxsZWQiLCJpc0FwcEluc3RhbGxlZCIsIm1vYmlsZVJlbW92ZUFwcCIsInJlbW92ZUFwcCIsImVyciIsIndhcm4iLCJtZXNzYWdlIiwibW9iaWxlTGF1bmNoQXBwIiwibGF1bmNoT3B0aW9ucyIsImFyZ3VtZW50cyIsImlzQXJyYXkiLCJlbnZpcm9ubWVudCIsInByb3h5Q29tbWFuZCIsIm1vYmlsZVRlcm1pbmF0ZUFwcCIsIm1vYmlsZUFjdGl2YXRlQXBwIiwibW9iaWxlS2lsbEFwcCIsIlVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3IiLCJpbnN0cnVtZW50U2VydmljZSIsImluc3RhbGxQcm94eVNlcnZpY2UiLCJzZXJ2aWNlcyIsInN0YXJ0SW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlIiwiYXBwcyIsImxpc3RBcHBsaWNhdGlvbnMiLCJleGVjdXRhYmxlTmFtZSIsIkNGQnVuZGxlRXhlY3V0YWJsZSIsImRlYnVnIiwic3RhcnRJbnN0cnVtZW50U2VydmljZSIsInByb2Nlc3NlcyIsImNhbGxDaGFubmVsIiwiSU5TVFJVTUVOVF9DSEFOTkVMIiwiREVWSUNFX0lORk8iLCJwcm9jZXNzIiwic2VsZWN0b3IiLCJmaW5kIiwibmFtZSIsIlBST0NFU1NfQ09OVFJPTCIsInBpZCIsInN0ZGVyciIsImNsb3NlIiwibW9iaWxlUXVlcnlBcHBTdGF0ZSIsImFwcFBhdGgiLCJpc1BsYWluT2JqZWN0IiwiYWN0aXZhdGVBcHAiLCJPYmplY3QiLCJhc3NpZ24iLCJ0ZXJtaW5hdGVBcHAiLCJxdWVyeUFwcFN0YXRlIiwibW9iaWxlTGlzdEFwcHMiLCJOb3RJbXBsZW1lbnRlZEVycm9yIiwiYXBwbGljYXRpb25UeXBlIiwic2VydmljZSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9hcHAtbWFuYWdlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyBzZXJ2aWNlcywgSU5TVFJVTUVOVF9DSEFOTkVMIH0gZnJvbSAnYXBwaXVtLWlvcy1kZXZpY2UnO1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5mdW5jdGlvbiByZXF1aXJlT3B0aW9ucyAob3B0cyA9IHt9LCByZXFLZXlzID0gW10pIHtcbiAgZm9yIChjb25zdCBrZXkgb2YgcmVxS2V5cykge1xuICAgIGlmICghXy5pc1N0cmluZyhvcHRzW2tleV0pIHx8IF8uaXNFbXB0eShvcHRzW2tleV0pKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgICBgJyR7a2V5fScgaXMgZXhwZWN0ZWQgdG8gYmUgYSB2YWxpZCBzdHJpbmcuICcke29wdHNba2V5XX0nIGlzIGdpdmVuIGluc3RlYWRgXG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3B0cztcbn1cblxuY29tbWFuZHMubW9iaWxlSW5zdGFsbEFwcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUluc3RhbGxBcHAgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7IGFwcCwgdGltZW91dE1zLCBzdHJhdGVneSB9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydhcHAnXSk7XG4gIGNvbnN0IHNyY0FwcFBhdGggPSBhd2FpdCB0aGlzLmhlbHBlcnMuY29uZmlndXJlQXBwKGFwcCwgJy5hcHAnKTtcbiAgdGhpcy5sb2cuaW5mbyhgSW5zdGFsbGluZyAnJHtzcmNBcHBQYXRofScgdG8gdGhlICR7dGhpcy5pc1JlYWxEZXZpY2UoKSA/ICdyZWFsIGRldmljZScgOiAnU2ltdWxhdG9yJ30gYCArXG4gICAgYHdpdGggVURJRCAnJHt0aGlzLm9wdHMuZGV2aWNlLnVkaWR9J2ApO1xuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhzcmNBcHBQYXRoKSkge1xuICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYFRoZSBhcHBsaWNhdGlvbiBhdCAnJHtzcmNBcHBQYXRofScgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGFjY2Vzc2libGVgKTtcbiAgfVxuICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLmluc3RhbGxBcHAoXG4gICAgc3JjQXBwUGF0aCwgdGltZW91dE1zID8/IHRoaXMub3B0cy5hcHBQdXNoVGltZW91dCwgc3RyYXRlZ3kgPz8gdGhpcy5vcHRzLmFwcEluc3RhbGxTdHJhdGVneVxuICApO1xuICB0aGlzLmxvZy5pbmZvKGBJbnN0YWxsYXRpb24gb2YgJyR7c3JjQXBwUGF0aH0nIHN1Y2NlZWRlZGApO1xufTtcblxuY29tbWFuZHMubW9iaWxlSXNBcHBJbnN0YWxsZWQgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVJc0FwcEluc3RhbGxlZCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtidW5kbGVJZH0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2J1bmRsZUlkJ10pO1xuICBjb25zdCBpbnN0YWxsZWQgPSBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLmlzQXBwSW5zdGFsbGVkKGJ1bmRsZUlkKTtcbiAgdGhpcy5sb2cuaW5mbyhgQXBwICcke2J1bmRsZUlkfScgaXMke2luc3RhbGxlZCA/ICcnIDogJyBub3QnfSBpbnN0YWxsZWRgKTtcbiAgcmV0dXJuIGluc3RhbGxlZDtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVJlbW92ZUFwcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVJlbW92ZUFwcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtidW5kbGVJZH0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2J1bmRsZUlkJ10pO1xuICB0aGlzLmxvZy5pbmZvKGBVbmluc3RhbGxpbmcgdGhlIGFwcGxpY2F0aW9uIHdpdGggYnVuZGxlIGlkZW50aWZpZXIgJyR7YnVuZGxlSWR9JyBgICtcbiAgICBgZnJvbSB0aGUgJHt0aGlzLmlzUmVhbERldmljZSgpID8gJ3JlYWwgZGV2aWNlJyA6ICdTaW11bGF0b3InfSB3aXRoIFVESUQgJyR7dGhpcy5vcHRzLmRldmljZS51ZGlkfSdgKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLnJlbW92ZUFwcChidW5kbGVJZCk7XG4gICAgdGhpcy5sb2cuaW5mbyhgUmVtb3ZhbCBvZiAnJHtidW5kbGVJZH0nIHN1Y2NlZWRlZGApO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLmxvZy53YXJuKGBDYW5ub3QgcmVtb3ZlICcke2J1bmRsZUlkfScuIE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuY29tbWFuZHMubW9iaWxlTGF1bmNoQXBwID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlTGF1bmNoQXBwIChvcHRzID0ge30pIHtcbiAgY29uc3QgbGF1bmNoT3B0aW9ucyA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYnVuZGxlSWQnXSk7XG4gIGlmIChvcHRzLmFyZ3VtZW50cykge1xuICAgIGxhdW5jaE9wdGlvbnMuYXJndW1lbnRzID0gXy5pc0FycmF5KG9wdHMuYXJndW1lbnRzKSA/IG9wdHMuYXJndW1lbnRzIDogW29wdHMuYXJndW1lbnRzXTtcbiAgfVxuICBpZiAob3B0cy5lbnZpcm9ubWVudCkge1xuICAgIGxhdW5jaE9wdGlvbnMuZW52aXJvbm1lbnQgPSBvcHRzLmVudmlyb25tZW50O1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS9hcHBzL2xhdW5jaCcsICdQT1NUJywgbGF1bmNoT3B0aW9ucyk7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVUZXJtaW5hdGVBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVUZXJtaW5hdGVBcHAgKG9wdHMgPSB7fSkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvYXBwcy90ZXJtaW5hdGUnLCAnUE9TVCcsIHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYnVuZGxlSWQnXSkpO1xufTtcblxuY29tbWFuZHMubW9iaWxlQWN0aXZhdGVBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVBY3RpdmF0ZUFwcCAob3B0cyA9IHt9KSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS9hcHBzL2FjdGl2YXRlJywgJ1BPU1QnLCByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2J1bmRsZUlkJ10pKTtcbn07XG5cbi8qKlxuICogS2lsbCB0aGUgZ2l2ZW4gYnVuZGxlIGlkIHByb2Nlc3MgdmlhIGluc3RydW1lbnRzIHNlcnZpY2UuXG4gKiBodHRwczovL2dpdGh1Yi5jb20vWXVlQ2hlbi1DL3B5LWlvcy1kZXZpY2UvYmxvYi81MWY0NjgzYzVjM2MzODVhMDE1ODU4YWRhMDdhNWYxYzYyZDNjZjU3L2lvc19kZXZpY2UvY2xpL2Jhc2UucHkjTDIyMFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gT3B0aW9ucyBzZXQsIHdoaWNoIG11c3QgY29udGFpbiBgYnVuZGxlSWRgIHByb3BlcnR5XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHRoZSBidW5kbGUgaWQgcHJvY2VzcyB3YXMga2lsbGVkLiBPdGhlcndpc2UgZmFsc2UuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUtpbGxBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVLaWxsQXBwIChvcHRzID0ge30pIHtcbiAgaWYgKCF0aGlzLmlzUmVhbERldmljZSgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5VbnN1cHBvcnRlZE9wZXJhdGlvbkVycm9yKCdBIHJlYWwgZGV2aWNlIGlzIHJlcXVpcmVkJyk7XG4gIH1cblxuICBjb25zdCB7YnVuZGxlSWR9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydidW5kbGVJZCddKTtcbiAgbGV0IGluc3RydW1lbnRTZXJ2aWNlO1xuICBsZXQgaW5zdGFsbFByb3h5U2VydmljZTtcbiAgdHJ5IHtcbiAgICBpbnN0YWxsUHJveHlTZXJ2aWNlID0gYXdhaXQgc2VydmljZXMuc3RhcnRJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UodGhpcy5vcHRzLmRldmljZS51ZGlkKTtcbiAgICBjb25zdCBhcHBzID0gYXdhaXQgaW5zdGFsbFByb3h5U2VydmljZS5saXN0QXBwbGljYXRpb25zKCk7XG4gICAgaWYgKCFhcHBzW2J1bmRsZUlkXSkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgVGhlIGJ1bmRsZSBpZCAnJHtidW5kbGVJZH0nIGRpZCBub3QgZXhpc3RgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgZXhlY3V0YWJsZU5hbWUgPSBhcHBzW2J1bmRsZUlkXS5DRkJ1bmRsZUV4ZWN1dGFibGU7XG4gICAgdGhpcy5sb2cuZGVidWcoYFRoZSBleGVjdXRhYmxlIG5hbWUgZm9yIHRoZSBidW5kbGUgaWQgJyR7YnVuZGxlSWR9JyB3YXMgJyR7ZXhlY3V0YWJsZU5hbWV9J2ApO1xuICAgIGluc3RydW1lbnRTZXJ2aWNlID0gYXdhaXQgc2VydmljZXMuc3RhcnRJbnN0cnVtZW50U2VydmljZSh0aGlzLm9wdHMuZGV2aWNlLnVkaWQpO1xuICAgIGNvbnN0IHByb2Nlc3NlcyA9IGF3YWl0IGluc3RydW1lbnRTZXJ2aWNlLmNhbGxDaGFubmVsKElOU1RSVU1FTlRfQ0hBTk5FTC5ERVZJQ0VfSU5GTywgJ3J1bm5pbmdQcm9jZXNzZXMnKTtcbiAgICBjb25zdCBwcm9jZXNzID0gcHJvY2Vzc2VzLnNlbGVjdG9yLmZpbmQoKHByb2Nlc3MpID0+IHByb2Nlc3MubmFtZSA9PT0gZXhlY3V0YWJsZU5hbWUpO1xuICAgIGlmICghcHJvY2Vzcykge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgVGhlIHByb2Nlc3Mgb2YgdGhlIGJ1bmRsZSBpZCAnJHtidW5kbGVJZH0nIHdhcyBub3QgcnVubmluZ2ApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBhd2FpdCBpbnN0cnVtZW50U2VydmljZS5jYWxsQ2hhbm5lbChJTlNUUlVNRU5UX0NIQU5ORUwuUFJPQ0VTU19DT05UUk9MLCAna2lsbFBpZDonLCBgJHtwcm9jZXNzLnBpZH1gKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5sb2cud2FybihgRmFpbGVkIHRvIGtpbGwgJyR7YnVuZGxlSWR9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLnN0ZGVyciB8fCBlcnIubWVzc2FnZX1gKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKGluc3RhbGxQcm94eVNlcnZpY2UpIHtcbiAgICAgIGluc3RhbGxQcm94eVNlcnZpY2UuY2xvc2UoKTtcbiAgICB9XG4gICAgaWYgKGluc3RydW1lbnRTZXJ2aWNlKSB7XG4gICAgICBpbnN0cnVtZW50U2VydmljZS5jbG9zZSgpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIHN0YXRlXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBPcHRpb25zIHNldCwgd2hpY2ggbXVzdCBjb250YWluIGBidW5kbGVJZGAgcHJvcGVydHlcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBhY3R1YWwgYXBwbGljYXRpb24gc3RhdGUgY29kZS4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWFwcGxpY2F0aW9uc3RhdGU/bGFuZ3VhZ2U9b2JqY1xuICogdG8gZ2V0IHRoZSBsaXN0IG9mIHBvc3NpYmxlIHZhbHVlcy5cbiAqL1xuY29tbWFuZHMubW9iaWxlUXVlcnlBcHBTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVF1ZXJ5QXBwU3RhdGUgKG9wdHMgPSB7fSkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvYXBwcy9zdGF0ZScsICdQT1NUJywgcmVxdWlyZU9wdGlvbnMob3B0cywgWydidW5kbGVJZCddKSk7XG59O1xuXG5jb21tYW5kcy5pbnN0YWxsQXBwID0gYXN5bmMgZnVuY3Rpb24gaW5zdGFsbEFwcCAoYXBwUGF0aCwgb3B0cyA9IHt9KSB7XG4gIGF3YWl0IHRoaXMubW9iaWxlSW5zdGFsbEFwcCh7XG4gICAgLi4uKF8uaXNQbGFpbk9iamVjdChvcHRzKSA/IG9wdHMgOiB7fSksXG4gICAgYXBwOiBhcHBQYXRoLFxuICB9KTtcbn07XG5cbmNvbW1hbmRzLmFjdGl2YXRlQXBwID0gYXN5bmMgZnVuY3Rpb24gYWN0aXZhdGVBcHAgKGJ1bmRsZUlkLCBvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMubW9iaWxlTGF1bmNoQXBwKE9iamVjdC5hc3NpZ24oe30sIG9wdHMsIHtidW5kbGVJZH0pKTtcbn07XG5cbmNvbW1hbmRzLmlzQXBwSW5zdGFsbGVkID0gYXN5bmMgZnVuY3Rpb24gaXNBcHBJbnN0YWxsZWQgKGJ1bmRsZUlkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLm1vYmlsZUlzQXBwSW5zdGFsbGVkKHtidW5kbGVJZH0pO1xufTtcblxuY29tbWFuZHMudGVybWluYXRlQXBwID0gYXN5bmMgZnVuY3Rpb24gdGVybWluYXRlQXBwIChidW5kbGVJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5tb2JpbGVUZXJtaW5hdGVBcHAoe2J1bmRsZUlkfSk7XG59O1xuXG5jb21tYW5kcy5xdWVyeUFwcFN0YXRlID0gYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBTdGF0ZSAoYnVuZGxlSWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMubW9iaWxlUXVlcnlBcHBTdGF0ZSh7YnVuZGxlSWR9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gTGlzdEFwcHNPcHRpb25zXG4gKiBAcHJvcGVydHkgeydTeXN0ZW0nfCdVc2VyJ30gYXBwbGljYXRpb25UeXBlIFtVc2VyXSBUaGUgdHlwZSBvZiBhcHBsaWNhdGlvbnMgdG8gbGlzdFxuICovXG5cbi8qKlxuICogTGlzdCBhcHBsaWNhdGlvbnMgaW5zdGFsbGVkIG9uIHRoZSByZWFsIGRldmljZSB1bmRlciB0ZXN0XG4gKlxuICogQHBhcmFtIHtMaXN0QXBwc09wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtBcnJheTxPYmplY3Q+fSBBIGxpc3Qgb2YgYXBwcywgd2hlcmUgZWFjaCBpdGVtIGlzIGEgbWFwIHdoZXJlIGtleXMgYXJlXG4gKiBidW5kbGUgaWRlbnRpZmllcnMgYW5kIHZhbHVlcyBhcmUgbWFwcyBvZiBwbGF0Zm9ybS1zcGVjaWZpYyBhcHAgcHJvcGVydGllcy5cbiAqL1xuY29tbWFuZHMubW9iaWxlTGlzdEFwcHMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVMaXN0QXBwcyAob3B0cyA9IHt9KSB7XG4gIGlmICghdGhpcy5pc1JlYWxEZXZpY2UoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcihgVGhpcyBleHRlbnNpb24gaXMgb25seSBzdXBwb3J0ZWQgb24gcmVhbCBkZXZpY2VzYCk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgYXBwbGljYXRpb25UeXBlID0gJ1VzZXInLFxuICB9ID0gb3B0cztcbiAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHNlcnZpY2VzLnN0YXJ0SW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlKHRoaXMub3B0cy5kZXZpY2UudWRpZCk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHNlcnZpY2UubGlzdEFwcGxpY2F0aW9ucyh7YXBwbGljYXRpb25UeXBlfSk7XG4gIH0gZmluYWxseSB7XG4gICAgc2VydmljZS5jbG9zZSgpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7O0FBRUEsU0FBU0MsY0FBVCxDQUF5QkMsSUFBSSxHQUFHLEVBQWhDLEVBQW9DQyxPQUFPLEdBQUcsRUFBOUMsRUFBa0Q7RUFDaEQsS0FBSyxNQUFNQyxHQUFYLElBQWtCRCxPQUFsQixFQUEyQjtJQUN6QixJQUFJLENBQUNFLGVBQUEsQ0FBRUMsUUFBRixDQUFXSixJQUFJLENBQUNFLEdBQUQsQ0FBZixDQUFELElBQTBCQyxlQUFBLENBQUVFLE9BQUYsQ0FBVUwsSUFBSSxDQUFDRSxHQUFELENBQWQsQ0FBOUIsRUFBb0Q7TUFDbEQsTUFBTSxJQUFJSSxrQkFBQSxDQUFPQyxvQkFBWCxDQUNILElBQUdMLEdBQUksd0NBQXVDRixJQUFJLENBQUNFLEdBQUQsQ0FBTSxvQkFEckQsQ0FBTjtJQUdEO0VBQ0Y7O0VBQ0QsT0FBT0YsSUFBUDtBQUNEOztBQUVERixRQUFRLENBQUNVLGdCQUFULEdBQTRCLGVBQWVBLGdCQUFmLENBQWlDUixJQUFJLEdBQUcsRUFBeEMsRUFBNEM7RUFDdEUsTUFBTTtJQUFFUyxHQUFGO0lBQU9DLFNBQVA7SUFBa0JDO0VBQWxCLElBQStCWixjQUFjLENBQUNDLElBQUQsRUFBTyxDQUFDLEtBQUQsQ0FBUCxDQUFuRDtFQUNBLE1BQU1ZLFVBQVUsR0FBRyxNQUFNLEtBQUtDLE9BQUwsQ0FBYUMsWUFBYixDQUEwQkwsR0FBMUIsRUFBK0IsTUFBL0IsQ0FB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
@@ -76,4 +76,4 @@ var _default = commands;
76
76
  exports.default = _default;require('source-map-support').install();
77
77
 
78
78
 
79
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2FwcGVhcmFuY2UuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsIm1vYmlsZVNldEFwcGVhcmFuY2UiLCJvcHRzIiwic3R5bGUiLCJpbmNsdWRlcyIsIl8iLCJ0b0xvd2VyIiwiRXJyb3IiLCJ1dGlsIiwiY29tcGFyZVZlcnNpb25zIiwicGxhdGZvcm1WZXJzaW9uIiwiaXNTaW11bGF0b3IiLCJkZXZpY2UiLCJzZXRBcHBlYXJhbmNlIiwiZSIsImxvZyIsImRlYnVnIiwic3RhY2siLCJwcm94eUNvbW1hbmQiLCJuYW1lIiwibW9iaWxlU2lyaUNvbW1hbmQiLCJ0ZXh0IiwibW9iaWxlR2V0QXBwZWFyYW5jZSIsImdldEFwcGVhcmFuY2UiLCJpZ24iLCJ1c2VySW50ZXJmYWNlU3R5bGUiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvYXBwZWFyYW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTZXRBcHBlYXJhbmNlT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdHlsZSAtIEN1cnJlbnRseSB0d28gc3R5bGVzIGFyZSBzdXBwb3J0ZWQ6XG4gKiAtIGRhcmtcbiAqIC0gbGlnaHRcbiAqL1xuXG4vKipcbiAqIFNldCB0aGUgZGV2aWNlJ3MgVUkgYXBwZWFyYW5jZSBzdHlsZVxuICpcbiAqIEBzaW5jZSBpT1MgMTIuMFxuICogQHBhcmFtIHtTZXRBcHBlYXJhbmNlT3B0aW9uc30gb3B0c1xuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBjdXJyZW50IHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgVUlcbiAqIGFwcGVhcmFuY2UgY2hhbmdlc1xuICovXG5jb21tYW5kcy5tb2JpbGVTZXRBcHBlYXJhbmNlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU2V0QXBwZWFyYW5jZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBzdHlsZSxcbiAgfSA9IG9wdHM7XG4gIGlmICghWydsaWdodCcsICdkYXJrJ10uaW5jbHVkZXMoXy50b0xvd2VyKHN0eWxlKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSAnc3R5bGUnIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGVxdWFsIGVpdGhlciAnbGlnaHQnIG9yICdkYXJrJ2ApO1xuICB9XG4gIGlmICh1dGlsLmNvbXBhcmVWZXJzaW9ucyh0aGlzLm9wdHMucGxhdGZvcm1WZXJzaW9uLCAnPCcsICcxMi4wJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5naW5nIGFwcGVhcmFuY2UgaXMgb25seSBzdXBwb3J0ZWQgc2luY2UgaU9TIDEyJyk7XG4gIH1cblxuICBpZiAodGhpcy5pc1NpbXVsYXRvcigpKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB2b2lkIChhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLnNldEFwcGVhcmFuY2Uoc3R5bGUpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhlLnN0YWNrKTtcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICByZXR1cm4gdm9pZCAoYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvZGV2aWNlL2FwcGVhcmFuY2UnLCAnUE9TVCcsIHtuYW1lOiBzdHlsZX0pKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRoaXMubG9nLmRlYnVnKGUuc3RhY2spO1xuICB9XG4gIC8vIEZhbGwgYmFjayB0byB0aGUgdWdseSBTaXJpIHdvcmthcm91bmQgaWYgdGhlIGN1cnJlbnQgU0RLIGlzIHRvbyBvbGRcbiAgYXdhaXQgdGhpcy5tb2JpbGVTaXJpQ29tbWFuZCh7XG4gICAgdGV4dDogYFR1cm4gJHtfLnRvTG93ZXIoc3R5bGUpID09PSAnZGFyaycgPyAnb24nIDogJ29mZid9IGRhcmsgbW9kZWAsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBBcHBlYXJhbmNlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc3R5bGUgLSBUaGUgZGV2aWNlJ3MgVUkgYXBwZWFyYW5jZSB2YWx1ZS5cbiAqIFRoaXMgY291bGQgYmUgb25lIG9mOlxuICogLSBgbGlnaHRgXG4gKiAtIGBkYXJrYFxuICogLSBgdW5rbm93bmBcbiAqIC0gYHVuc3VwcG9ydGVkYFxuICovXG5cbi8qKlxuICogR2V0IHRoZSBkZXZpY2UncyBVSSBhcHBlYXJhbmNlIHN0eWxlLlxuICpcbiAqIEBzaW5jZSBYY29kZSBTREsgMTFcbiAqIEByZXR1cm5zIHtBcHBlYXJhbmNlfVxuICovXG5jb21tYW5kcy5tb2JpbGVHZXRBcHBlYXJhbmNlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlR2V0QXBwZWFyYW5jZSAoKSB7XG4gIGlmICh1dGlsLmNvbXBhcmVWZXJzaW9ucyh0aGlzLm9wdHMucGxhdGZvcm1WZXJzaW9uLCAnPCcsICcxMi4wJykpIHtcbiAgICByZXR1cm4gJ3Vuc3VwcG9ydGVkJztcbiAgfVxuXG4gIGxldCBzdHlsZTtcbiAgaWYgKHRoaXMuaXNTaW11bGF0b3IoKSkge1xuICAgIHRyeSB7XG4gICAgICBzdHlsZSA9IGF3YWl0IHRoaXMub3B0cy5kZXZpY2UuZ2V0QXBwZWFyYW5jZSgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxuICBpZiAoIXN0eWxlKSB7XG4gICAgc3R5bGUgPSAoYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvZGV2aWNlL2luZm8nLCAnR0VUJykpLnVzZXJJbnRlcmZhY2VTdHlsZSB8fCAndW5rbm93bic7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdHlsZSxcbiAgfTtcbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjs7O0FBa0JBQSxRQUFRLENBQUNDLG1CQUFULEdBQStCLGVBQWVBLG1CQUFmLENBQW9DQyxJQUFJLEdBQUcsRUFBM0MsRUFBK0M7RUFDNUUsTUFBTTtJQUNKQztFQURJLElBRUZELElBRko7O0VBR0EsSUFBSSxDQUFDLENBQUMsT0FBRCxFQUFVLE1BQVYsRUFBa0JFLFFBQWxCLENBQTJCQyxnQkFBRUMsT0FBRixDQUFVSCxLQUFWLENBQTNCLENBQUwsRUFBbUQ7SUFDakQsTUFBTSxJQUFJSSxLQUFKLENBQVcsaUVBQVgsQ0FBTjtFQUNEOztFQUNELElBQUlDLGNBQUtDLGVBQUwsQ0FBcUIsS0FBS1AsSUFBTCxDQUFVUSxlQUEvQixFQUFnRCxHQUFoRCxFQUFxRCxNQUFyRCxDQUFKLEVBQWtFO0lBQ2hFLE1BQU0sSUFBSUgsS0FBSixDQUFVLG9EQUFWLENBQU47RUFDRDs7RUFFRCxJQUFJLEtBQUtJLFdBQUwsRUFBSixFQUF3QjtJQUN0QixJQUFJO01BQ0YsT0FBTyxNQUFNLE1BQU0sS0FBS1QsSUFBTCxDQUFVVSxNQUFWLENBQWlCQyxhQUFqQixDQUErQlYsS0FBL0IsQ0FBWixDQUFQO0lBQ0QsQ0FGRCxDQUVFLE9BQU9XLENBQVAsRUFBVTtNQUNWLEtBQUtDLEdBQUwsQ0FBU0MsS0FBVCxDQUFlRixDQUFDLENBQUNHLEtBQWpCO0lBQ0Q7RUFDRjs7RUFDRCxJQUFJO0lBQ0YsT0FBTyxNQUFNLE1BQU0sS0FBS0MsWUFBTCxDQUFrQix3QkFBbEIsRUFBNEMsTUFBNUMsRUFBb0Q7TUFBQ0MsSUFBSSxFQUFFaEI7SUFBUCxDQUFwRCxDQUFaLENBQVA7RUFDRCxDQUZELENBRUUsT0FBT1csQ0FBUCxFQUFVO0lBQ1YsS0FBS0MsR0FBTCxDQUFTQyxLQUFULENBQWVGLENBQUMsQ0FBQ0csS0FBakI7RUFDRDs7RUFFRCxNQUFNLEtBQUtHLGlCQUFMLENBQXVCO0lBQzNCQyxJQUFJLEVBQUcsUUFBT2hCLGdCQUFFQyxPQUFGLENBQVVILEtBQVYsTUFBcUIsTUFBckIsR0FBOEIsSUFBOUIsR0FBcUMsS0FBTTtFQUQ5QixDQUF2QixDQUFOO0FBR0QsQ0EzQkQ7O0FBNkNBSCxRQUFRLENBQUNzQixtQkFBVCxHQUErQixlQUFlQSxtQkFBZixHQUFzQztFQUNuRSxJQUFJZCxjQUFLQyxlQUFMLENBQXFCLEtBQUtQLElBQUwsQ0FBVVEsZUFBL0IsRUFBZ0QsR0FBaEQsRUFBcUQsTUFBckQsQ0FBSixFQUFrRTtJQUNoRSxPQUFPLGFBQVA7RUFDRDs7RUFFRCxJQUFJUCxLQUFKOztFQUNBLElBQUksS0FBS1EsV0FBTCxFQUFKLEVBQXdCO0lBQ3RCLElBQUk7TUFDRlIsS0FBSyxHQUFHLE1BQU0sS0FBS0QsSUFBTCxDQUFVVSxNQUFWLENBQWlCVyxhQUFqQixFQUFkO0lBQ0QsQ0FGRCxDQUVFLE9BQU9DLEdBQVAsRUFBWSxDQUFFO0VBQ2pCOztFQUNELElBQUksQ0FBQ3JCLEtBQUwsRUFBWTtJQUNWQSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUtlLFlBQUwsQ0FBa0Isa0JBQWxCLEVBQXNDLEtBQXRDLENBQVAsRUFBcURPLGtCQUFyRCxJQUEyRSxTQUFuRjtFQUNEOztFQUNELE9BQU87SUFDTHRCO0VBREssQ0FBUDtBQUdELENBakJEOztlQXFCZUgsUSJ9
79
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2FwcGVhcmFuY2UuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsIm1vYmlsZVNldEFwcGVhcmFuY2UiLCJvcHRzIiwic3R5bGUiLCJpbmNsdWRlcyIsIl8iLCJ0b0xvd2VyIiwiRXJyb3IiLCJ1dGlsIiwiY29tcGFyZVZlcnNpb25zIiwicGxhdGZvcm1WZXJzaW9uIiwiaXNTaW11bGF0b3IiLCJkZXZpY2UiLCJzZXRBcHBlYXJhbmNlIiwiZSIsImxvZyIsImRlYnVnIiwic3RhY2siLCJwcm94eUNvbW1hbmQiLCJuYW1lIiwibW9iaWxlU2lyaUNvbW1hbmQiLCJ0ZXh0IiwibW9iaWxlR2V0QXBwZWFyYW5jZSIsImdldEFwcGVhcmFuY2UiLCJpZ24iLCJ1c2VySW50ZXJmYWNlU3R5bGUiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvYXBwZWFyYW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTZXRBcHBlYXJhbmNlT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdHlsZSAtIEN1cnJlbnRseSB0d28gc3R5bGVzIGFyZSBzdXBwb3J0ZWQ6XG4gKiAtIGRhcmtcbiAqIC0gbGlnaHRcbiAqL1xuXG4vKipcbiAqIFNldCB0aGUgZGV2aWNlJ3MgVUkgYXBwZWFyYW5jZSBzdHlsZVxuICpcbiAqIEBzaW5jZSBpT1MgMTIuMFxuICogQHBhcmFtIHtTZXRBcHBlYXJhbmNlT3B0aW9uc30gb3B0c1xuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBjdXJyZW50IHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgVUlcbiAqIGFwcGVhcmFuY2UgY2hhbmdlc1xuICovXG5jb21tYW5kcy5tb2JpbGVTZXRBcHBlYXJhbmNlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU2V0QXBwZWFyYW5jZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBzdHlsZSxcbiAgfSA9IG9wdHM7XG4gIGlmICghWydsaWdodCcsICdkYXJrJ10uaW5jbHVkZXMoXy50b0xvd2VyKHN0eWxlKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSAnc3R5bGUnIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGVxdWFsIGVpdGhlciAnbGlnaHQnIG9yICdkYXJrJ2ApO1xuICB9XG4gIGlmICh1dGlsLmNvbXBhcmVWZXJzaW9ucyh0aGlzLm9wdHMucGxhdGZvcm1WZXJzaW9uLCAnPCcsICcxMi4wJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5naW5nIGFwcGVhcmFuY2UgaXMgb25seSBzdXBwb3J0ZWQgc2luY2UgaU9TIDEyJyk7XG4gIH1cblxuICBpZiAodGhpcy5pc1NpbXVsYXRvcigpKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB2b2lkIChhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLnNldEFwcGVhcmFuY2Uoc3R5bGUpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhlLnN0YWNrKTtcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICByZXR1cm4gdm9pZCAoYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvZGV2aWNlL2FwcGVhcmFuY2UnLCAnUE9TVCcsIHtuYW1lOiBzdHlsZX0pKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRoaXMubG9nLmRlYnVnKGUuc3RhY2spO1xuICB9XG4gIC8vIEZhbGwgYmFjayB0byB0aGUgdWdseSBTaXJpIHdvcmthcm91bmQgaWYgdGhlIGN1cnJlbnQgU0RLIGlzIHRvbyBvbGRcbiAgYXdhaXQgdGhpcy5tb2JpbGVTaXJpQ29tbWFuZCh7XG4gICAgdGV4dDogYFR1cm4gJHtfLnRvTG93ZXIoc3R5bGUpID09PSAnZGFyaycgPyAnb24nIDogJ29mZid9IGRhcmsgbW9kZWAsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBBcHBlYXJhbmNlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc3R5bGUgLSBUaGUgZGV2aWNlJ3MgVUkgYXBwZWFyYW5jZSB2YWx1ZS5cbiAqIFRoaXMgY291bGQgYmUgb25lIG9mOlxuICogLSBgbGlnaHRgXG4gKiAtIGBkYXJrYFxuICogLSBgdW5rbm93bmBcbiAqIC0gYHVuc3VwcG9ydGVkYFxuICovXG5cbi8qKlxuICogR2V0IHRoZSBkZXZpY2UncyBVSSBhcHBlYXJhbmNlIHN0eWxlLlxuICpcbiAqIEBzaW5jZSBYY29kZSBTREsgMTFcbiAqIEByZXR1cm5zIHtBcHBlYXJhbmNlfVxuICovXG5jb21tYW5kcy5tb2JpbGVHZXRBcHBlYXJhbmNlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlR2V0QXBwZWFyYW5jZSAoKSB7XG4gIGlmICh1dGlsLmNvbXBhcmVWZXJzaW9ucyh0aGlzLm9wdHMucGxhdGZvcm1WZXJzaW9uLCAnPCcsICcxMi4wJykpIHtcbiAgICByZXR1cm4gJ3Vuc3VwcG9ydGVkJztcbiAgfVxuXG4gIGxldCBzdHlsZTtcbiAgaWYgKHRoaXMuaXNTaW11bGF0b3IoKSkge1xuICAgIHRyeSB7XG4gICAgICBzdHlsZSA9IGF3YWl0IHRoaXMub3B0cy5kZXZpY2UuZ2V0QXBwZWFyYW5jZSgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxuICBpZiAoIXN0eWxlKSB7XG4gICAgc3R5bGUgPSAoYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvZGV2aWNlL2luZm8nLCAnR0VUJykpLnVzZXJJbnRlcmZhY2VTdHlsZSB8fCAndW5rbm93bic7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdHlsZSxcbiAgfTtcbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjs7O0FBa0JBQSxRQUFRLENBQUNDLG1CQUFULEdBQStCLGVBQWVBLG1CQUFmLENBQW9DQyxJQUFJLEdBQUcsRUFBM0MsRUFBK0M7RUFDNUUsTUFBTTtJQUNKQztFQURJLElBRUZELElBRko7O0VBR0EsSUFBSSxDQUFDLENBQUMsT0FBRCxFQUFVLE1BQVYsRUFBa0JFLFFBQWxCLENBQTJCQyxlQUFBLENBQUVDLE9BQUYsQ0FBVUgsS0FBVixDQUEzQixDQUFMLEVBQW1EO0lBQ2pELE1BQU0sSUFBSUksS0FBSixDQUFXLGlFQUFYLENBQU47RUFDRDs7RUFDRCxJQUFJQyxhQUFBLENBQUtDLGVBQUwsQ0FBcUIsS0FBS1AsSUFBTCxDQUFVUSxlQUEvQixFQUFnRCxHQUFoRCxFQUFxRCxNQUFyRCxDQUFKLEVBQWtFO0lBQ2hFLE1BQU0sSUFBSUgsS0FBSixDQUFVLG9EQUFWLENBQU47RUFDRDs7RUFFRCxJQUFJLEtBQUtJLFdBQUwsRUFBSixFQUF3QjtJQUN0QixJQUFJO01BQ0YsT0FBTyxNQUFNLE1BQU0sS0FBS1QsSUFBTCxDQUFVVSxNQUFWLENBQWlCQyxhQUFqQixDQUErQlYsS0FBL0IsQ0FBWixDQUFQO0lBQ0QsQ0FGRCxDQUVFLE9BQU9XLENBQVAsRUFBVTtNQUNWLEtBQUtDLEdBQUwsQ0FBU0MsS0FBVCxDQUFlRixDQUFDLENBQUNHLEtBQWpCO0lBQ0Q7RUFDRjs7RUFDRCxJQUFJO0lBQ0YsT0FBTyxNQUFNLE1BQU0sS0FBS0MsWUFBTCxDQUFrQix3QkFBbEIsRUFBNEMsTUFBNUMsRUFBb0Q7TUFBQ0MsSUFBSSxFQUFFaEI7SUFBUCxDQUFwRCxDQUFaLENBQVA7RUFDRCxDQUZELENBRUUsT0FBT1csQ0FBUCxFQUFVO0lBQ1YsS0FBS0MsR0FBTCxDQUFTQyxLQUFULENBQWVGLENBQUMsQ0FBQ0csS0FBakI7RUFDRDs7RUFFRCxNQUFNLEtBQUtHLGlCQUFMLENBQXVCO0lBQzNCQyxJQUFJLEVBQUcsUUFBT2hCLGVBQUEsQ0FBRUMsT0FBRixDQUFVSCxLQUFWLE1BQXFCLE1BQXJCLEdBQThCLElBQTlCLEdBQXFDLEtBQU07RUFEOUIsQ0FBdkIsQ0FBTjtBQUdELENBM0JEOztBQTZDQUgsUUFBUSxDQUFDc0IsbUJBQVQsR0FBK0IsZUFBZUEsbUJBQWYsR0FBc0M7RUFDbkUsSUFBSWQsYUFBQSxDQUFLQyxlQUFMLENBQXFCLEtBQUtQLElBQUwsQ0FBVVEsZUFBL0IsRUFBZ0QsR0FBaEQsRUFBcUQsTUFBckQsQ0FBSixFQUFrRTtJQUNoRSxPQUFPLGFBQVA7RUFDRDs7RUFFRCxJQUFJUCxLQUFKOztFQUNBLElBQUksS0FBS1EsV0FBTCxFQUFKLEVBQXdCO0lBQ3RCLElBQUk7TUFDRlIsS0FBSyxHQUFHLE1BQU0sS0FBS0QsSUFBTCxDQUFVVSxNQUFWLENBQWlCVyxhQUFqQixFQUFkO0lBQ0QsQ0FGRCxDQUVFLE9BQU9DLEdBQVAsRUFBWSxDQUFFO0VBQ2pCOztFQUNELElBQUksQ0FBQ3JCLEtBQUwsRUFBWTtJQUNWQSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUtlLFlBQUwsQ0FBa0Isa0JBQWxCLEVBQXNDLEtBQXRDLENBQVAsRUFBcURPLGtCQUFyRCxJQUEyRSxTQUFuRjtFQUNEOztFQUNELE9BQU87SUFDTHRCO0VBREssQ0FBUDtBQUdELENBakJEOztlQXFCZUgsUSJ9
@@ -396,4 +396,4 @@ var _default = extensions;
396
396
  exports.default = _default;require('source-map-support').install();
397
397
 
398
398
 
399
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2NlcnRpZmljYXRlLmpzIiwibmFtZXMiOlsiZXh0ZW5zaW9ucyIsImNvbW1hbmRzIiwiQ09ORklHX0VYVEVOU0lPTiIsIkhPU1RfUE9SVF9SQU5HRSIsIlRNUFNFUlZFUl9TVEFSVFVQX1RJTUVPVVQiLCJTZXR0aW5ncyIsIkdlbmVyYWwiLCJ0eXBlIiwidmFsdWUiLCJQcm9maWxlIiwiQWJvdXQiLCJDZXJ0aWZpY2F0ZV9UcnVzdF9TZXR0aW5ncyIsIkJ1dHRvbiIsIkluc3RhbGwiLCJBbGxvdyIsIkRvbmUiLCJSZXR1cm5fdG9fU2V0dGluZ3MiLCJBbGVydCIsImV4dHJhY3RDb21tb25OYW1lIiwiY2VydEJ1ZmZlciIsInRlbXBDZXJ0IiwidGVtcERpciIsIm9wZW4iLCJwcmVmaXgiLCJzdWZmaXgiLCJmcyIsIndyaXRlRmlsZSIsInBhdGgiLCJzdGRvdXQiLCJwYXJzZUNvbW1vbk5hbWUiLCJlcnIiLCJFcnJvciIsIm1lc3NhZ2UiLCJyaW1yYWYiLCJMSUJSRV9TU0xfUEFUVEVSTiIsIk9QRU5fU1NMX1BBVFRFUk4iLCJzdHJpbmdDZXJ0aWZpY2F0ZSIsInJlc3VsdCIsInJlZHVjZSIsImFjYyIsInIiLCJtYXRjaCIsImV4ZWMiLCJ0b01vYmlsZUNvbmZpZyIsImNvbW1vbk5hbWUiLCJnZXRVVUlEIiwidXRpbCIsInV1aWRWNCIsInRvVXBwZXJDYXNlIiwiY29udGVudFV1aWQiLCJQYXlsb2FkQ29udGVudCIsIlBheWxvYWRDZXJ0aWZpY2F0ZUZpbGVOYW1lIiwiUGF5bG9hZERlc2NyaXB0aW9uIiwiUGF5bG9hZERpc3BsYXlOYW1lIiwiUGF5bG9hZElkZW50aWZpZXIiLCJQYXlsb2FkVHlwZSIsIlBheWxvYWRVVUlEIiwiUGF5bG9hZFZlcnNpb24iLCJvcyIsImhvc3RuYW1lIiwic3BsaXQiLCJQYXlsb2FkUmVtb3ZhbERpc2FsbG93ZWQiLCJjbGlja0VsZW1lbnQiLCJkcml2ZXIiLCJsb2NhdG9yIiwib3B0aW9ucyIsImVsZW1lbnQiLCJ0aW1lb3V0Iiwic2tpcElmSW52aXNpYmxlIiwibG9va3VwRGVsYXkiLCJmaW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMiLCJKU09OIiwic3RyaW5naWZ5IiwibmF0aXZlQ2xpY2siLCJpbnN0YWxsUHJlMTIyQ2VydGlmaWNhdGUiLCJCIiwiZGVsYXkiLCJ0cnVzdENlcnRpZmljYXRlSW5QcmVmZXJlbmNlcyIsIm5hbWUiLCJzd2l0Y2hMb2NhdG9yIiwibW9iaWxlU3dpcGUiLCJkaXJlY3Rpb24iLCJwb3N0QWNjZXB0QWxlcnQiLCJpbnN0YWxsUG9zdDEyMkNlcnRpZmljYXRlIiwiYWN0aXZhdGVBcHAiLCJpc0NlcnRGb3VuZCIsInN3aXBlTnVtIiwibW9iaWxlSW5zdGFsbENlcnRpZmljYXRlIiwib3B0cyIsImNvbnRlbnQiLCJpc1Jvb3QiLCJfIiwiaXNFbXB0eSIsImlzU2ltdWxhdG9yIiwibWV0aG9kTmFtZSIsImRldmljZSIsInNpbWN0bCIsIkJ1ZmZlciIsImZyb20iLCJ0b1N0cmluZyIsInJhdyIsImUiLCJsb2ciLCJkZWJ1ZyIsImluZm8iLCJjbGllbnQiLCJQeWlkZXZpY2UiLCJ1ZGlkIiwiYXNzZXJ0RXhpc3RzIiwiaW5zdGFsbFByb2ZpbGUiLCJwYXlsb2FkIiwidG1wUm9vdCIsIm9wZW5EaXIiLCJ0bXBQb3J0IiwiY29uZmlnTmFtZSIsImNvbmZpZ1BhdGgiLCJyZXNvbHZlIiwidG1wU2VydmVyIiwiaHR0cCIsImNyZWF0ZVNlcnZlciIsInJlcyIsImNvbmZpZ0ZpbGUiLCJyZWFkRmlsZSIsImVuZCIsImNuIiwibW9iaWxlQ29uZmlnIiwicGxpc3QiLCJ1cGRhdGVQbGlzdEZpbGUiLCJob3N0IiwiY2VydFVybCIsImxpc3RlbiIsImlnbiIsIndhaXRNcyIsImludGVydmFsTXMiLCJpc1JlYWxEZXZpY2UiLCJwcm94eUNvbW1hbmQiLCJ1cmwiLCJpc1dlYkNvbnRleHQiLCJzZXRVcmwiLCJvcGVuVXJsIiwiaXNDZXJ0QWxyZWFkeUluc3RhbGxlZCIsImNvbXBhcmVWZXJzaW9ucyIsInBsYXRmb3JtVmVyc2lvbiIsImJ1bmRsZUlkIiwid2FybiIsInRvSW5NZW1vcnlCYXNlNjQiLCJjbG9zZSIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9jZXJ0aWZpY2F0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMsIHBsaXN0LCB0ZW1wRGlyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IHJldHJ5SW50ZXJ2YWwsIHJldHJ5LCB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB7IGZpbmRBUG9ydE5vdEluVXNlLCBjaGVja1BvcnRTdGF0dXMgfSBmcm9tICdwb3J0c2Nhbm5lcic7XG5pbXBvcnQgUHlpZGV2aWNlIGZyb20gJy4uL3B5LWlvcy1kZXZpY2UtY2xpZW50JztcblxubGV0IGV4dGVuc2lvbnMgPSB7fSwgY29tbWFuZHMgPSB7fTtcblxuY29uc3QgQ09ORklHX0VYVEVOU0lPTiA9ICdtb2JpbGVjb25maWcnO1xuY29uc3QgSE9TVF9QT1JUX1JBTkdFID0gWzM4MjAwLCAzODI5OV07XG5jb25zdCBUTVBTRVJWRVJfU1RBUlRVUF9USU1FT1VUID0gNTAwMDtcbmNvbnN0IFNldHRpbmdzID0ge1xuICBHZW5lcmFsOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnR2VuZXJhbCcsXG4gIH0sXG4gIFByb2ZpbGU6IHtcbiAgICB0eXBlOiAnLWlvcyBwcmVkaWNhdGUgc3RyaW5nJyxcbiAgICB2YWx1ZTogYG5hbWUgQkVHSU5TV0lUSCAnUHJvZmlsZSdgLFxuICB9LFxuICBBYm91dDoge1xuICAgIHR5cGU6ICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICB2YWx1ZTogJ0Fib3V0JyxcbiAgfSxcbiAgQ2VydGlmaWNhdGVfVHJ1c3RfU2V0dGluZ3M6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdDZXJ0aWZpY2F0ZSBUcnVzdCBTZXR0aW5ncycsXG4gIH0sXG59O1xuY29uc3QgQnV0dG9uID0ge1xuICBJbnN0YWxsOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnSW5zdGFsbCcsXG4gIH0sXG4gIEFsbG93OiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnQWxsb3cnLFxuICB9LFxuICBEb25lOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnRG9uZScsXG4gIH0sXG4gIFJldHVybl90b19TZXR0aW5nczoge1xuICAgIHR5cGU6ICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICB2YWx1ZTogJ1JldHVybiB0byBTZXR0aW5ncycsXG4gIH0sXG59O1xuY29uc3QgQWxlcnQgPSB7XG4gIEluc3RhbGw6IHtcbiAgICB0eXBlOiAnLWlvcyBjbGFzcyBjaGFpbicsXG4gICAgdmFsdWU6ICcqKi9YQ1VJRWxlbWVudFR5cGVBbnlbYHR5cGUgPT0gXFwnWENVSUVsZW1lbnRUeXBlQWxlcnRcXCcgT1IgdHlwZSA9PSBcXCdYQ1VJRWxlbWVudFR5cGVTaGVldFxcJ2BdLyoqL1hDVUlFbGVtZW50VHlwZUJ1dHRvbltgbGFiZWwgPT0gXFwnSW5zdGFsbFxcJ2BdJyxcbiAgfSxcbn07XG5cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdENvbW1vbk5hbWUgKGNlcnRCdWZmZXIpIHtcbiAgY29uc3QgdGVtcENlcnQgPSBhd2FpdCB0ZW1wRGlyLm9wZW4oe1xuICAgIHByZWZpeDogJ2NlcnQnLFxuICAgIHN1ZmZpeDogJy5jZXInXG4gIH0pO1xuICB0cnkge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZSh0ZW1wQ2VydC5wYXRoLCBjZXJ0QnVmZmVyKTtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoJ29wZW5zc2wnLCBbJ3g1MDknLCAnLW5vb3V0JywgJy1zdWJqZWN0JywgJy1pbicsIHRlbXBDZXJ0LnBhdGhdKTtcbiAgICByZXR1cm4gcGFyc2VDb21tb25OYW1lKHN0ZG91dCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHBhcnNlIGNvbW1vbiBuYW1lIHZhbHVlIGZyb20gdGhlIGNlcnRpZmljYXRlLiBJcyBpdCB2YWxpZCBhbmQgYmFzZTY0LWVuY29kZWQ/IGAgK1xuICAgICAgICAgICAgICAgICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMucmltcmFmKHRlbXBDZXJ0LnBhdGgpO1xuICB9XG59XG5cbmNvbnN0IExJQlJFX1NTTF9QQVRURVJOID0gL1xcL0NOPShbXlxcL10rKS87IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbmNvbnN0IE9QRU5fU1NMX1BBVFRFUk4gPSAvLFxcc0NOXFxzPVxccyhbXixdKykvO1xuXG5mdW5jdGlvbiBwYXJzZUNvbW1vbk5hbWUgKHN0cmluZ0NlcnRpZmljYXRlKSB7XG4gIGNvbnN0IHJlc3VsdCA9IFtMSUJSRV9TU0xfUEFUVEVSTiwgT1BFTl9TU0xfUEFUVEVSTl0ucmVkdWNlKChhY2MsIHIpID0+IHtcbiAgICBpZiAoYWNjKSB7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cbiAgICBjb25zdCBtYXRjaCA9IHIuZXhlYyhzdHJpbmdDZXJ0aWZpY2F0ZSk7XG4gICAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzFdO1xuICB9LCBudWxsKTtcbiAgaWYgKCFyZXN1bHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGlzIG5vIGNvbW1vbiBuYW1lIHZhbHVlIGluICcke3N0cmluZ0NlcnRpZmljYXRlfScgb3V0cHV0YCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgQXBwbGUncyBvdmVyLXRoZS1haXIgY29uZmlndXJhdGlvbiBwcm9maWxlXG4gKiBmb3IgY2VydGlmaWNhdGUgZGVwbG95bWVudCBiYXNlZCBvbiB0aGUgZ2l2ZW4gUEVNIGNlcnRpZmljYXRlIGNvbnRlbnQuXG4gKiBSZWFkIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L2NvbnRlbnQvZG9jdW1lbnRhdGlvbi9OZXR3b3JraW5nSW50ZXJuZXQvQ29uY2VwdHVhbC9pUGhvbmVPVEFDb25maWd1cmF0aW9uL0ludHJvZHVjdGlvbi9JbnRyb2R1Y3Rpb24uaHRtbFxuICogZm9yIG1vcmUgZGV0YWlscyBvbiBzdWNoIHByb2ZpbGVzLlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfSBjZXJ0QnVmZmVyIC0gVGhlIGFjdHVhbCBjb250ZW50IG9mIFBFTSBjZXJ0aWZpY2F0ZSBlbmNvZGVkIGludG8gTm9kZUpTIGJ1ZmZlclxuICogQHBhcmFtIHtzdHJpbmd9IGNvbW1vbk5hbWUgLSBDZXJ0aWZpY2F0ZSdzIGNvbW1vbiBuYW1lXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZW5jb2RlZCBzdHJ1Y3R1cmUgb2YgdGhlIGdpdmVuIGNlcnRpZmljYXRlLCB3aGljaCBpcyByZWFkeSB0byBiZSBwYXNzZWRcbiAqIGFzIGFuIGFyZ3VtZW50IHRvIHBsaXN0IGJ1aWxkZXJcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZ2l2ZW4gY2VydGlmaWNhdGUgY2Fubm90IGJlIHBhcnNlZFxuICovXG5mdW5jdGlvbiB0b01vYmlsZUNvbmZpZyAoY2VydEJ1ZmZlciwgY29tbW9uTmFtZSkge1xuICBjb25zdCBnZXRVVUlEID0gKCkgPT4gdXRpbC51dWlkVjQoKS50b1VwcGVyQ2FzZSgpO1xuICBjb25zdCBjb250ZW50VXVpZCA9IGdldFVVSUQoKTtcbiAgcmV0dXJuIHtcbiAgICBQYXlsb2FkQ29udGVudDogW3tcbiAgICAgIFBheWxvYWRDZXJ0aWZpY2F0ZUZpbGVOYW1lOiBgJHtjb21tb25OYW1lfS5jZXJgLFxuICAgICAgUGF5bG9hZENvbnRlbnQ6IGNlcnRCdWZmZXIsXG4gICAgICBQYXlsb2FkRGVzY3JpcHRpb246ICdBZGRzIGEgQ0Egcm9vdCBjZXJ0aWZpY2F0ZScsXG4gICAgICBQYXlsb2FkRGlzcGxheU5hbWU6IGNvbW1vbk5hbWUsXG4gICAgICBQYXlsb2FkSWRlbnRpZmllcjogYGNvbS5hcHBsZS5zZWN1cml0eS5yb290LiR7Y29udGVudFV1aWR9YCxcbiAgICAgIFBheWxvYWRUeXBlOiAnY29tLmFwcGxlLnNlY3VyaXR5LnJvb3QnLFxuICAgICAgUGF5bG9hZFVVSUQ6IGNvbnRlbnRVdWlkLFxuICAgICAgUGF5bG9hZFZlcnNpb246IDFcbiAgICB9XSxcbiAgICBQYXlsb2FkRGlzcGxheU5hbWU6IGNvbW1vbk5hbWUsXG4gICAgUGF5bG9hZElkZW50aWZpZXI6IGAke29zLmhvc3RuYW1lKCkuc3BsaXQoJy4nKVswXX0uJHtnZXRVVUlEKCl9YCxcbiAgICBQYXlsb2FkUmVtb3ZhbERpc2FsbG93ZWQ6IGZhbHNlLFxuICAgIFBheWxvYWRUeXBlOiAnQ29uZmlndXJhdGlvbicsXG4gICAgUGF5bG9hZFVVSUQ6IGdldFVVSUQoKSxcbiAgICBQYXlsb2FkVmVyc2lvbjogMVxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBjbGlja0VsZW1lbnQgKGRyaXZlciwgbG9jYXRvciwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBlbGVtZW50ID0gbnVsbDtcbiAgY29uc3Qge1xuICAgIHRpbWVvdXQgPSA1MDAwLFxuICAgIHNraXBJZkludmlzaWJsZSA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBsb29rdXBEZWxheSA9IDUwMDtcbiAgdHJ5IHtcbiAgICBlbGVtZW50ID0gYXdhaXQgcmV0cnlJbnRlcnZhbCh0aW1lb3V0IDwgbG9va3VwRGVsYXkgPyAxIDogdGltZW91dCAvIGxvb2t1cERlbGF5LCBsb29rdXBEZWxheSxcbiAgICAgICgpID0+IGRyaXZlci5maW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMobG9jYXRvci50eXBlLCBsb2NhdG9yLnZhbHVlLCBmYWxzZSlcbiAgICApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoc2tpcElmSW52aXNpYmxlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgJHtKU09OLnN0cmluZ2lmeShsb2NhdG9yKX0gd2l0aGluICR7dGltZW91dH1tcyB0aW1lb3V0YCk7XG4gIH1cbiAgYXdhaXQgZHJpdmVyLm5hdGl2ZUNsaWNrKGVsZW1lbnQpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbFByZTEyMkNlcnRpZmljYXRlIChkcml2ZXIpIHtcbiAgLy8gQWNjZXB0IFNhZmFyaSBhbGVydFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uQWxsb3csIHtcbiAgICAvLyBjZXJ0aWZpY2F0ZSBsb2FkIG1pZ2h0IHRha2Ugc29tZSB0aW1lIG9uIHNsb3cgbWFjaGluZXNcbiAgICB0aW1lb3V0OiAxNTAwMCxcbiAgfSk7XG4gIC8vIFdhaXQgdW50aWwgUHJlZmVyZW5jZXMgYXJlIG9wZW5lZFxuICBhd2FpdCBCLmRlbGF5KDIwMDApO1xuXG4gIC8vIEdvIHRocm91Z2ggUHJlZmVyZW5jZXMgd2l6YXJkXG4gIGlmICghYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkluc3RhbGwsIHtcbiAgICBza2lwSWZJbnZpc2libGU6IHRydWUsXG4gIH0pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFdlIG5lZWQgdG8gY2xpY2sgSW5zdGFsbCBidXR0b24gb24gdHdvIGRpZmZlcmVudCB0YWJzXG4gIC8vIFRoZSBzZWNvbmQgb25lIGNvbmZpcm1zIHRoZSBwcmV2aW91c1xuICBhd2FpdCBCLmRlbGF5KDE1MDApO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uSW5zdGFsbCk7XG4gIC8vIEFjY2VwdCBhbGVydFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBBbGVydC5JbnN0YWxsKTtcbiAgLy8gRmluaXNoIGFkZGluZyBjZXJ0aWZpY2F0ZVxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uRG9uZSk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiB0cnVzdENlcnRpZmljYXRlSW5QcmVmZXJlbmNlcyAoZHJpdmVyLCBuYW1lKSB7XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIFNldHRpbmdzLkdlbmVyYWwpO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBTZXR0aW5ncy5BYm91dCk7XG4gIGNvbnN0IHN3aXRjaExvY2F0b3IgPSB7XG4gICAgdHlwZTogJy1pb3MgY2xhc3MgY2hhaW4nLFxuICAgIHZhbHVlOiBgKiovWENVSUVsZW1lbnRUeXBlQ2VsbFtcXGBsYWJlbCA9PSAnJHtuYW1lfSdcXGBdLyoqL1hDVUlFbGVtZW50VHlwZVN3aXRjaGAsXG4gIH07XG4gIGF3YWl0IHJldHJ5KDUsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBkcml2ZXIubW9iaWxlU3dpcGUoe1xuICAgICAgZWxlbWVudDogYXdhaXQgZHJpdmVyLmZpbmROYXRpdmVFbGVtZW50T3JFbGVtZW50cygnY2xhc3MgbmFtZScsICdYQ1VJRWxlbWVudFR5cGVUYWJsZScsIGZhbHNlKSxcbiAgICAgIGRpcmVjdGlvbjogJ3VwJ1xuICAgIH0pO1xuICAgIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIFNldHRpbmdzLkNlcnRpZmljYXRlX1RydXN0X1NldHRpbmdzLCB7XG4gICAgICB0aW1lb3V0OiA1MDAsXG4gICAgfSk7XG5cbiAgICBhd2FpdCBkcml2ZXIuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKHN3aXRjaExvY2F0b3IudHlwZSwgc3dpdGNoTG9jYXRvci52YWx1ZSwgZmFsc2UpO1xuICB9KTtcbiAgLy8gT25seSBjbGljayB0aGUgc3dpdGNoIGlmIGl0IGlzIHNldCB0byBPZmZcbiAgaWYgKGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIHtcbiAgICB0eXBlOiBzd2l0Y2hMb2NhdG9yLnR5cGUsXG4gICAgdmFsdWU6IGAke3N3aXRjaExvY2F0b3IudmFsdWV9W1xcYHZhbHVlID09ICcwJ1xcYF1gXG4gIH0sIHtcbiAgICB0aW1lb3V0OiAxMDAwLFxuICAgIHNraXBJZkludmlzaWJsZTogdHJ1ZSxcbiAgfSkpIHtcbiAgICBhd2FpdCBkcml2ZXIucG9zdEFjY2VwdEFsZXJ0KCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbFBvc3QxMjJDZXJ0aWZpY2F0ZSAoZHJpdmVyLCBuYW1lKSB7XG4gIC8vIEFjY2VwdCBTYWZhcmkgYWxlcnRcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkFsbG93LCB7XG4gICAgLy8gY2VydGlmaWNhdGUgbG9hZCBtaWdodCB0YWtlIHNvbWUgdGltZSBvbiBzbG93IG1hY2hpbmVzXG4gICAgdGltZW91dDogMTUwMDAsXG4gIH0pO1xuICAvLyBXYWl0IGZvciB0aGUgc2Vjb25kIGFsZXJ0XG4gIGF3YWl0IEIuZGVsYXkoMjAwMCk7XG5cbiAgYXdhaXQgZHJpdmVyLnBvc3RBY2NlcHRBbGVydCgpO1xuICBhd2FpdCBkcml2ZXIuYWN0aXZhdGVBcHAoJ2NvbS5hcHBsZS5QcmVmZXJlbmNlcycpO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBTZXR0aW5ncy5HZW5lcmFsKTtcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgU2V0dGluZ3MuUHJvZmlsZSk7XG4gIC8vIFNlbGVjdCB0aGUgdGFyZ2V0IGNlcnRcbiAgbGV0IGlzQ2VydEZvdW5kID0gZmFsc2U7XG4gIGZvciAobGV0IHN3aXBlTnVtID0gMDsgc3dpcGVOdW0gPCA1OyArK3N3aXBlTnVtKSB7XG4gICAgaWYgKGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIHtcbiAgICAgIHR5cGU6ICctaW9zIGNsYXNzIGNoYWluJyxcbiAgICAgIHZhbHVlOiBgKiovWENVSUVsZW1lbnRUeXBlQ2VsbFtcXGBsYWJlbCA9PSAnJHtuYW1lfSdcXGBdYCxcbiAgICB9LCB7XG4gICAgICB0aW1lb3V0OiA1MDAsXG4gICAgICBza2lwSWZJbnZpc2libGU6IHRydWUsXG4gICAgfSkpIHtcbiAgICAgIGlzQ2VydEZvdW5kID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGF3YWl0IGRyaXZlci5tb2JpbGVTd2lwZSh7XG4gICAgICBlbGVtZW50OiBhd2FpdCBkcml2ZXIuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKCdjbGFzcyBuYW1lJywgJ1hDVUlFbGVtZW50VHlwZVRhYmxlJywgZmFsc2UpLFxuICAgICAgZGlyZWN0aW9uOiAndXAnXG4gICAgfSk7XG4gIH1cbiAgaWYgKCFpc0NlcnRGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJyR7bmFtZX0nIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgY2VydGlmaWNhdGVzIGxpc3RgKTtcbiAgfVxuXG4gIC8vIEluc3RhbGwgb3B0aW9uIGlzIG9ubHkgdmlzaWJsZSBpZiB0aGUgY2VydCBpcyBub3QgaW5zdGFsbGVkIHlldFxuICBpZiAoIWF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEJ1dHRvbi5JbnN0YWxsLCB7XG4gICAgc2tpcElmSW52aXNpYmxlOiB0cnVlLFxuICB9KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBhd2FpdCBCLmRlbGF5KDE1MDApO1xuICAvLyBDb25maXJtIHVudHJ1c3RlZCBjZXJ0IGluc3RhbGxcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkluc3RhbGwpO1xuICAvLyBBY2NlcHQgYWxlcnRcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQWxlcnQuSW5zdGFsbCk7XG4gIC8vIEZpbmlzaCBhZGRpbmcgY2VydGlmaWNhdGVcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkRvbmUpO1xuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENlcnRpZmljYXRlSW5zdGFsbGF0aW9uT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gY29udGVudCAtIEJhc2U2NC1lbmNvZGVkIGNvbnRlbnQgb2YgdGhlIHB1YmxpYyBjZXJ0aWZpY2F0ZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21tb25OYW1lIC0gQ29tbW9uIG5hbWUgb2YgdGhlIGNlcnRpZmljYXRlLiBJZiB0aGlzIGlzIG5vdCBzZXRcbiAqIHRoZW4gdGhlIHNjcmlwdCB3aWxsIHRyeSB0byBwYXJzZSBpdCBmcm9tIHRoZSBnaXZlbiBjZXJ0aWZpY2F0ZSBjb250ZW50LlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gaXNSb290IFt0cnVlXSAtIFRoaXMgb3B0aW9uIGRlZmluZXMgd2hlcmUgdGhlIGNlcnRpZmljYXRlIHNob3VsZCBiZVxuICogaW5zdGFsbGVkIHRvOiBlaXRoZXIgVHJ1c3RlZCBSb290IFN0b3JlIChgdHJ1ZWAsIHRoZSBkZWZhdWx0IG9wdGlvbikgb3JcbiAqIHRoZSBLZXljaGFpbiAoYGZhbHNlYCkuIE9uIGVudmlyb25tZW50cyBvdGhlciB0aGFuIFhjb2RlIDExLjQrIFNpbXVsYXRvciB0aGlzXG4gKiBvcHRpb24gaXMgaWdub3JlZC5cbiAqL1xuXG4vKipcbiAqIEluc3RhbGxzIGEgY3VzdG9tIGNlcnRpZmljYXRlIG9udG8gdGhlIGRldmljZS5cbiAqIFNpbmNlIFhjb2RlIFNESyAxMS40IEFwcGxlIGhhcyBhZGRlZCBhIGRlZGljYXRlZCBzaW1jdGwgc3ViY29tbWFuZCB0byBxdWlja2x5IGhhbmRsZVxuICogY2VydGlmaWNhdGVzIG9uIFNpbXVsYXRvciBvdmVyIENMSS5cbiAqIE9uIHJlYWwgZGV2aWNlcyBvciBzaW11bGF0b3JzIGJlZm9yZSBYY29kZSAxMS40IFNES1xuICogQXBwbGUgcHJvdmlkZXMgbm8gb2ZmaWNpYWwgd2F5IHRvIGRvIGl0IHZpYSB0aGUgY29tbWFuZCBsaW5lLlxuICogSW4gc3VjaCBjYXNlIChhbmQgYWxzbyBhcyBhIGZhbGxiYWNrIGlmIENMSSBzZXR1cCBmYWlscylcbiAqIHRoaXMgbWV0aG9kIHRyaWVzIHRvIHdyYXAgdGhlIGNlcnRpZmljYXRlIGludG8gLm1vYmlsZWNvbmZpZyBmb3JtYXRcbiAqIGFuZCB0aGVuIGRlcGxveXMgdGhlIHdyYXBwZWQgZmlsZSB0byB0aGUgaW50ZXJuYWwgSFRUUCBzZXJ2ZXIsXG4gKiBzbyBvbmUgY2FuIG9wZW4gaXQgdmlhIG1vYmlsZSBTYWZhcmkuXG4gKiBUaGVuIHRoZSBhbGdvcml0aG0gZ29lcyB0aHJvdWdoIHRoZSBwcm9maWxlIGluc3RhbGxhdGlvbiBwcm9jZWR1cmUgYnlcbiAqIGNsaWNraW5nIHRoZSBuZWNlc3NhcnkgYnV0dG9ucyB1c2luZyBXZWJEcml2ZXJBZ2VudC5cbiAqXG4gKiBAcGFyYW0ge0NlcnRpZmljYXRlSW5zdGFsbGF0aW9uT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMgez9zdHJpbmd9IFRoZSBjb250ZW50IG9mIHRoZSBnZW5lcmF0ZWQgLm1vYmlsZWNvbmZpZyBmaWxlIGFzXG4gKiBiYXNlNjQtZW5jb2RlZCBzdHJpbmcuIFRoaXMgY29uZmlnIG1pZ2h0IGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLlxuICogSWYgdGhlIGNlcnRpZmljYXRlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBzZXQgdmlhIENMSSB0aGVuIG5vdGhpbmcgaXMgcmV0dXJuZWQuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUluc3RhbGxDZXJ0aWZpY2F0ZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUluc3RhbGxDZXJ0aWZpY2F0ZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBjb250ZW50LFxuICAgIGNvbW1vbk5hbWUsXG4gICAgaXNSb290ID0gdHJ1ZSxcbiAgfSA9IG9wdHM7XG4gIGlmIChfLmlzRW1wdHkoY29udGVudCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NlcnRpZmljYXRlIGNvbnRlbnQgc2hvdWxkIG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgaWYgKHRoaXMuaXNTaW11bGF0b3IoKSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtZXRob2ROYW1lID0gaXNSb290ID8gJ2FkZFJvb3RDZXJ0aWZpY2F0ZScgOiAnYWRkQ2VydGlmaWNhdGUnO1xuICAgICAgYXdhaXQgdGhpcy5vcHRzLmRldmljZS5zaW1jdGxbbWV0aG9kTmFtZV0oXG4gICAgICAgIEJ1ZmZlci5mcm9tKGNvbnRlbnQsICdiYXNlNjQnKS50b1N0cmluZygpLCB7cmF3OiB0cnVlfVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhlKTtcbiAgICAgIHRoaXMubG9nLmluZm8oYFRoZSBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgaW5zdGFsbGVkIHZpYSBDTEkuIGAgK1xuICAgICAgICBgRmFsbGluZyBiYWNrIHRvIFVJLWJhc2VkIGRlcGxveW1lbnRgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFB5aWRldmljZSh0aGlzLm9wdHMudWRpZCk7XG4gICAgaWYgKGF3YWl0IGNsaWVudC5hc3NlcnRFeGlzdHMoZmFsc2UpKSB7XG4gICAgICBhd2FpdCBjbGllbnQuaW5zdGFsbFByb2ZpbGUoe3BheWxvYWQ6IEJ1ZmZlci5mcm9tKGNvbnRlbnQsICdiYXNlNjQnKX0pO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdweWlkZXZpY2UgaXMgbm90IGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbS4gJyArXG4gICAgICAgICdGYWxsaW5nIGJhY2sgdG8gdGhlIChzbG93KSBVSS1iYXNlZCBpbnN0YWxsYXRpb24nKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gIGNvbnN0IHRtcFBvcnQgPSBhd2FpdCBmaW5kQVBvcnROb3RJblVzZShIT1NUX1BPUlRfUkFOR0VbMF0sIEhPU1RfUE9SVF9SQU5HRVsxXSk7XG4gIGNvbnN0IGNvbmZpZ05hbWUgPSBgYXBwaXVtLiR7Q09ORklHX0VYVEVOU0lPTn1gO1xuICBjb25zdCBjb25maWdQYXRoID0gcGF0aC5yZXNvbHZlKHRtcFJvb3QsIGNvbmZpZ05hbWUpO1xuICBjb25zdCB0bXBTZXJ2ZXIgPSBodHRwLmNyZWF0ZVNlcnZlcihhc3luYyBmdW5jdGlvbiAoXywgcmVzKSB7XG4gICAgY29uc3QgY29uZmlnRmlsZSA9IGF3YWl0IGZzLnJlYWRGaWxlKGNvbmZpZ1BhdGgpO1xuICAgIHJlcy5lbmQoY29uZmlnRmlsZSk7XG4gIH0pO1xuICB0cnkge1xuICAgIGNvbnN0IGNlcnRCdWZmZXIgPSBCdWZmZXIuZnJvbShjb250ZW50LCAnYmFzZTY0Jyk7XG4gICAgY29uc3QgY24gPSBjb21tb25OYW1lIHx8IGF3YWl0IGV4dHJhY3RDb21tb25OYW1lKGNlcnRCdWZmZXIpO1xuICAgIGNvbnN0IG1vYmlsZUNvbmZpZyA9IHRvTW9iaWxlQ29uZmlnKGNlcnRCdWZmZXIsIGNuKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcGxpc3QudXBkYXRlUGxpc3RGaWxlKGNvbmZpZ1BhdGgsIG1vYmlsZUNvbmZpZywgZmFsc2UsIGZhbHNlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHN0b3JlIHRoZSBnZW5lcmF0ZWQgY29uZmlnIGFzICcke2NvbmZpZ1BhdGh9Jy4gYCArXG4gICAgICAgICAgICAgICAgICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBob3N0ID0gb3MuaG9zdG5hbWUoKTtcbiAgICAgIGNvbnN0IGNlcnRVcmwgPSBgaHR0cDovLyR7aG9zdH06JHt0bXBQb3J0fS8ke2NvbmZpZ05hbWV9YDtcbiAgICAgIGF3YWl0IHRtcFNlcnZlci5saXN0ZW4odG1wUG9ydCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIChhd2FpdCBjaGVja1BvcnRTdGF0dXModG1wUG9ydCwgaG9zdCkpID09PSAnb3Blbic7XG4gICAgICAgICAgfSBjYXRjaCAoaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgd2FpdE1zOiBUTVBTRVJWRVJfU1RBUlRVUF9USU1FT1VULFxuICAgICAgICAgIGludGVydmFsTXM6IDMwMCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBUaGUgdGVtcG9yYXJ5IHdlYiBzZXJ2ZXIgaXMgcnVubmluZyBhdCBodHRwOi8vJHtob3N0fToke3RtcFBvcnR9YCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHRlbXBvcmFyeSB3ZWIgc2VydmVyIGNhbm5vdCBiZSBzdGFydGVkIGF0IGh0dHA6Ly8ke2hvc3R9OiR7dG1wUG9ydH0uYCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1JlYWxEZXZpY2UoKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvdXJsJywgJ1BPU1QnLCB7dXJsOiBjZXJ0VXJsfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgICAgICAgICAvLyBUaGUgY29tbWFuZCBhYm92ZSBkb2VzIG5vdCBhbHdheXMgd29yayBvbiByZWFsIGRldmljZXNcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0VXJsKGNlcnRVcmwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLm9wZW5VcmwoY2VydFVybCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBpc0NlcnRBbHJlYWR5SW5zdGFsbGVkID0gZmFsc2U7XG4gICAgICBpZiAodXRpbC5jb21wYXJlVmVyc2lvbnModGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbiwgJz49JywgJzEyLjInKSkge1xuICAgICAgICBpZiAoYXdhaXQgaW5zdGFsbFBvc3QxMjJDZXJ0aWZpY2F0ZSh0aGlzLCBjbikpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0VsZW1lbnQodGhpcywgU2V0dGluZ3MuUHJvZmlsZSk7XG4gICAgICAgICAgYXdhaXQgdHJ1c3RDZXJ0aWZpY2F0ZUluUHJlZmVyZW5jZXModGhpcywgY24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzQ2VydEFscmVhZHlJbnN0YWxsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYXdhaXQgaW5zdGFsbFByZTEyMkNlcnRpZmljYXRlKHRoaXMpKSB7XG4gICAgICAgICAgYXdhaXQgY2xpY2tFbGVtZW50KHRoaXMsIEJ1dHRvbi5SZXR1cm5fdG9fU2V0dGluZ3MpO1xuICAgICAgICAgIGF3YWl0IHRydXN0Q2VydGlmaWNhdGVJblByZWZlcmVuY2VzKHRoaXMsIGNuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpc0NlcnRBbHJlYWR5SW5zdGFsbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzQ2VydEFscmVhZHlJbnN0YWxsZWQpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgSXQgbG9va3MgbGlrZSB0aGUgJyR7Y259JyBjZXJ0aWZpY2F0ZSBoYXMgYmVlbiBhbHJlYWR5IGFkZGVkIHRvIHRoZSBDQSByb290YCk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICh0aGlzLm9wdHMuYnVuZGxlSWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFjdGl2YXRlQXBwKHRoaXMub3B0cy5idW5kbGVJZCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aGlzLmxvZy53YXJuKGBDYW5ub3QgcmVzdG9yZSB0aGUgYXBwbGljYXRpb24gJyR7dGhpcy5vcHRzLmJ1bmRsZUlkfScuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoYXdhaXQgdXRpbC50b0luTWVtb3J5QmFzZTY0KGNvbmZpZ1BhdGgpKS50b1N0cmluZygpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHRtcFNlcnZlci5jbG9zZSgpO1xuICAgIGF3YWl0IGZzLnJpbXJhZih0bXBSb290KTtcbiAgfVxufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcyk7XG5leHBvcnQgeyBjb21tYW5kcywgcGFyc2VDb21tb25OYW1lIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxJQUFJQSxVQUFVLEdBQUcsRUFBakI7QUFBQSxJQUFxQkMsUUFBUSxHQUFHLEVBQWhDOztBQUVBLE1BQU1DLGdCQUFnQixHQUFHLGNBQXpCO0FBQ0EsTUFBTUMsZUFBZSxHQUFHLENBQUMsS0FBRCxFQUFRLEtBQVIsQ0FBeEI7QUFDQSxNQUFNQyx5QkFBeUIsR0FBRyxJQUFsQztB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
399
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2NlcnRpZmljYXRlLmpzIiwibmFtZXMiOlsiZXh0ZW5zaW9ucyIsImNvbW1hbmRzIiwiQ09ORklHX0VYVEVOU0lPTiIsIkhPU1RfUE9SVF9SQU5HRSIsIlRNUFNFUlZFUl9TVEFSVFVQX1RJTUVPVVQiLCJTZXR0aW5ncyIsIkdlbmVyYWwiLCJ0eXBlIiwidmFsdWUiLCJQcm9maWxlIiwiQWJvdXQiLCJDZXJ0aWZpY2F0ZV9UcnVzdF9TZXR0aW5ncyIsIkJ1dHRvbiIsIkluc3RhbGwiLCJBbGxvdyIsIkRvbmUiLCJSZXR1cm5fdG9fU2V0dGluZ3MiLCJBbGVydCIsImV4dHJhY3RDb21tb25OYW1lIiwiY2VydEJ1ZmZlciIsInRlbXBDZXJ0IiwidGVtcERpciIsIm9wZW4iLCJwcmVmaXgiLCJzdWZmaXgiLCJmcyIsIndyaXRlRmlsZSIsInBhdGgiLCJzdGRvdXQiLCJleGVjIiwicGFyc2VDb21tb25OYW1lIiwiZXJyIiwiRXJyb3IiLCJtZXNzYWdlIiwicmltcmFmIiwiTElCUkVfU1NMX1BBVFRFUk4iLCJPUEVOX1NTTF9QQVRURVJOIiwic3RyaW5nQ2VydGlmaWNhdGUiLCJyZXN1bHQiLCJyZWR1Y2UiLCJhY2MiLCJyIiwibWF0Y2giLCJ0b01vYmlsZUNvbmZpZyIsImNvbW1vbk5hbWUiLCJnZXRVVUlEIiwidXRpbCIsInV1aWRWNCIsInRvVXBwZXJDYXNlIiwiY29udGVudFV1aWQiLCJQYXlsb2FkQ29udGVudCIsIlBheWxvYWRDZXJ0aWZpY2F0ZUZpbGVOYW1lIiwiUGF5bG9hZERlc2NyaXB0aW9uIiwiUGF5bG9hZERpc3BsYXlOYW1lIiwiUGF5bG9hZElkZW50aWZpZXIiLCJQYXlsb2FkVHlwZSIsIlBheWxvYWRVVUlEIiwiUGF5bG9hZFZlcnNpb24iLCJvcyIsImhvc3RuYW1lIiwic3BsaXQiLCJQYXlsb2FkUmVtb3ZhbERpc2FsbG93ZWQiLCJjbGlja0VsZW1lbnQiLCJkcml2ZXIiLCJsb2NhdG9yIiwib3B0aW9ucyIsImVsZW1lbnQiLCJ0aW1lb3V0Iiwic2tpcElmSW52aXNpYmxlIiwibG9va3VwRGVsYXkiLCJyZXRyeUludGVydmFsIiwiZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5hdGl2ZUNsaWNrIiwiaW5zdGFsbFByZTEyMkNlcnRpZmljYXRlIiwiQiIsImRlbGF5IiwidHJ1c3RDZXJ0aWZpY2F0ZUluUHJlZmVyZW5jZXMiLCJuYW1lIiwic3dpdGNoTG9jYXRvciIsInJldHJ5IiwibW9iaWxlU3dpcGUiLCJkaXJlY3Rpb24iLCJwb3N0QWNjZXB0QWxlcnQiLCJpbnN0YWxsUG9zdDEyMkNlcnRpZmljYXRlIiwiYWN0aXZhdGVBcHAiLCJpc0NlcnRGb3VuZCIsInN3aXBlTnVtIiwibW9iaWxlSW5zdGFsbENlcnRpZmljYXRlIiwib3B0cyIsImNvbnRlbnQiLCJpc1Jvb3QiLCJfIiwiaXNFbXB0eSIsImlzU2ltdWxhdG9yIiwibWV0aG9kTmFtZSIsImRldmljZSIsInNpbWN0bCIsIkJ1ZmZlciIsImZyb20iLCJ0b1N0cmluZyIsInJhdyIsImUiLCJsb2ciLCJkZWJ1ZyIsImluZm8iLCJjbGllbnQiLCJQeWlkZXZpY2UiLCJ1ZGlkIiwiYXNzZXJ0RXhpc3RzIiwiaW5zdGFsbFByb2ZpbGUiLCJwYXlsb2FkIiwidG1wUm9vdCIsIm9wZW5EaXIiLCJ0bXBQb3J0IiwiZmluZEFQb3J0Tm90SW5Vc2UiLCJjb25maWdOYW1lIiwiY29uZmlnUGF0aCIsInJlc29sdmUiLCJ0bXBTZXJ2ZXIiLCJodHRwIiwiY3JlYXRlU2VydmVyIiwicmVzIiwiY29uZmlnRmlsZSIsInJlYWRGaWxlIiwiZW5kIiwiY24iLCJtb2JpbGVDb25maWciLCJwbGlzdCIsInVwZGF0ZVBsaXN0RmlsZSIsImhvc3QiLCJjZXJ0VXJsIiwibGlzdGVuIiwid2FpdEZvckNvbmRpdGlvbiIsImNoZWNrUG9ydFN0YXR1cyIsImlnbiIsIndhaXRNcyIsImludGVydmFsTXMiLCJpc1JlYWxEZXZpY2UiLCJwcm94eUNvbW1hbmQiLCJ1cmwiLCJpc1dlYkNvbnRleHQiLCJzZXRVcmwiLCJvcGVuVXJsIiwiaXNDZXJ0QWxyZWFkeUluc3RhbGxlZCIsImNvbXBhcmVWZXJzaW9ucyIsInBsYXRmb3JtVmVyc2lvbiIsImJ1bmRsZUlkIiwid2FybiIsInRvSW5NZW1vcnlCYXNlNjQiLCJjbG9zZSIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9jZXJ0aWZpY2F0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMsIHBsaXN0LCB0ZW1wRGlyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IHJldHJ5SW50ZXJ2YWwsIHJldHJ5LCB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB7IGZpbmRBUG9ydE5vdEluVXNlLCBjaGVja1BvcnRTdGF0dXMgfSBmcm9tICdwb3J0c2Nhbm5lcic7XG5pbXBvcnQgUHlpZGV2aWNlIGZyb20gJy4uL3B5LWlvcy1kZXZpY2UtY2xpZW50JztcblxubGV0IGV4dGVuc2lvbnMgPSB7fSwgY29tbWFuZHMgPSB7fTtcblxuY29uc3QgQ09ORklHX0VYVEVOU0lPTiA9ICdtb2JpbGVjb25maWcnO1xuY29uc3QgSE9TVF9QT1JUX1JBTkdFID0gWzM4MjAwLCAzODI5OV07XG5jb25zdCBUTVBTRVJWRVJfU1RBUlRVUF9USU1FT1VUID0gNTAwMDtcbmNvbnN0IFNldHRpbmdzID0ge1xuICBHZW5lcmFsOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnR2VuZXJhbCcsXG4gIH0sXG4gIFByb2ZpbGU6IHtcbiAgICB0eXBlOiAnLWlvcyBwcmVkaWNhdGUgc3RyaW5nJyxcbiAgICB2YWx1ZTogYG5hbWUgQkVHSU5TV0lUSCAnUHJvZmlsZSdgLFxuICB9LFxuICBBYm91dDoge1xuICAgIHR5cGU6ICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICB2YWx1ZTogJ0Fib3V0JyxcbiAgfSxcbiAgQ2VydGlmaWNhdGVfVHJ1c3RfU2V0dGluZ3M6IHtcbiAgICB0eXBlOiAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgdmFsdWU6ICdDZXJ0aWZpY2F0ZSBUcnVzdCBTZXR0aW5ncycsXG4gIH0sXG59O1xuY29uc3QgQnV0dG9uID0ge1xuICBJbnN0YWxsOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnSW5zdGFsbCcsXG4gIH0sXG4gIEFsbG93OiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnQWxsb3cnLFxuICB9LFxuICBEb25lOiB7XG4gICAgdHlwZTogJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgIHZhbHVlOiAnRG9uZScsXG4gIH0sXG4gIFJldHVybl90b19TZXR0aW5nczoge1xuICAgIHR5cGU6ICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICB2YWx1ZTogJ1JldHVybiB0byBTZXR0aW5ncycsXG4gIH0sXG59O1xuY29uc3QgQWxlcnQgPSB7XG4gIEluc3RhbGw6IHtcbiAgICB0eXBlOiAnLWlvcyBjbGFzcyBjaGFpbicsXG4gICAgdmFsdWU6ICcqKi9YQ1VJRWxlbWVudFR5cGVBbnlbYHR5cGUgPT0gXFwnWENVSUVsZW1lbnRUeXBlQWxlcnRcXCcgT1IgdHlwZSA9PSBcXCdYQ1VJRWxlbWVudFR5cGVTaGVldFxcJ2BdLyoqL1hDVUlFbGVtZW50VHlwZUJ1dHRvbltgbGFiZWwgPT0gXFwnSW5zdGFsbFxcJ2BdJyxcbiAgfSxcbn07XG5cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdENvbW1vbk5hbWUgKGNlcnRCdWZmZXIpIHtcbiAgY29uc3QgdGVtcENlcnQgPSBhd2FpdCB0ZW1wRGlyLm9wZW4oe1xuICAgIHByZWZpeDogJ2NlcnQnLFxuICAgIHN1ZmZpeDogJy5jZXInXG4gIH0pO1xuICB0cnkge1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZSh0ZW1wQ2VydC5wYXRoLCBjZXJ0QnVmZmVyKTtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoJ29wZW5zc2wnLCBbJ3g1MDknLCAnLW5vb3V0JywgJy1zdWJqZWN0JywgJy1pbicsIHRlbXBDZXJ0LnBhdGhdKTtcbiAgICByZXR1cm4gcGFyc2VDb21tb25OYW1lKHN0ZG91dCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHBhcnNlIGNvbW1vbiBuYW1lIHZhbHVlIGZyb20gdGhlIGNlcnRpZmljYXRlLiBJcyBpdCB2YWxpZCBhbmQgYmFzZTY0LWVuY29kZWQ/IGAgK1xuICAgICAgICAgICAgICAgICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMucmltcmFmKHRlbXBDZXJ0LnBhdGgpO1xuICB9XG59XG5cbmNvbnN0IExJQlJFX1NTTF9QQVRURVJOID0gL1xcL0NOPShbXlxcL10rKS87IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdXNlbGVzcy1lc2NhcGVcbmNvbnN0IE9QRU5fU1NMX1BBVFRFUk4gPSAvLFxcc0NOXFxzPVxccyhbXixdKykvO1xuXG5mdW5jdGlvbiBwYXJzZUNvbW1vbk5hbWUgKHN0cmluZ0NlcnRpZmljYXRlKSB7XG4gIGNvbnN0IHJlc3VsdCA9IFtMSUJSRV9TU0xfUEFUVEVSTiwgT1BFTl9TU0xfUEFUVEVSTl0ucmVkdWNlKChhY2MsIHIpID0+IHtcbiAgICBpZiAoYWNjKSB7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cbiAgICBjb25zdCBtYXRjaCA9IHIuZXhlYyhzdHJpbmdDZXJ0aWZpY2F0ZSk7XG4gICAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzFdO1xuICB9LCBudWxsKTtcbiAgaWYgKCFyZXN1bHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGlzIG5vIGNvbW1vbiBuYW1lIHZhbHVlIGluICcke3N0cmluZ0NlcnRpZmljYXRlfScgb3V0cHV0YCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgQXBwbGUncyBvdmVyLXRoZS1haXIgY29uZmlndXJhdGlvbiBwcm9maWxlXG4gKiBmb3IgY2VydGlmaWNhdGUgZGVwbG95bWVudCBiYXNlZCBvbiB0aGUgZ2l2ZW4gUEVNIGNlcnRpZmljYXRlIGNvbnRlbnQuXG4gKiBSZWFkIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L2NvbnRlbnQvZG9jdW1lbnRhdGlvbi9OZXR3b3JraW5nSW50ZXJuZXQvQ29uY2VwdHVhbC9pUGhvbmVPVEFDb25maWd1cmF0aW9uL0ludHJvZHVjdGlvbi9JbnRyb2R1Y3Rpb24uaHRtbFxuICogZm9yIG1vcmUgZGV0YWlscyBvbiBzdWNoIHByb2ZpbGVzLlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfSBjZXJ0QnVmZmVyIC0gVGhlIGFjdHVhbCBjb250ZW50IG9mIFBFTSBjZXJ0aWZpY2F0ZSBlbmNvZGVkIGludG8gTm9kZUpTIGJ1ZmZlclxuICogQHBhcmFtIHtzdHJpbmd9IGNvbW1vbk5hbWUgLSBDZXJ0aWZpY2F0ZSdzIGNvbW1vbiBuYW1lXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgZW5jb2RlZCBzdHJ1Y3R1cmUgb2YgdGhlIGdpdmVuIGNlcnRpZmljYXRlLCB3aGljaCBpcyByZWFkeSB0byBiZSBwYXNzZWRcbiAqIGFzIGFuIGFyZ3VtZW50IHRvIHBsaXN0IGJ1aWxkZXJcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZ2l2ZW4gY2VydGlmaWNhdGUgY2Fubm90IGJlIHBhcnNlZFxuICovXG5mdW5jdGlvbiB0b01vYmlsZUNvbmZpZyAoY2VydEJ1ZmZlciwgY29tbW9uTmFtZSkge1xuICBjb25zdCBnZXRVVUlEID0gKCkgPT4gdXRpbC51dWlkVjQoKS50b1VwcGVyQ2FzZSgpO1xuICBjb25zdCBjb250ZW50VXVpZCA9IGdldFVVSUQoKTtcbiAgcmV0dXJuIHtcbiAgICBQYXlsb2FkQ29udGVudDogW3tcbiAgICAgIFBheWxvYWRDZXJ0aWZpY2F0ZUZpbGVOYW1lOiBgJHtjb21tb25OYW1lfS5jZXJgLFxuICAgICAgUGF5bG9hZENvbnRlbnQ6IGNlcnRCdWZmZXIsXG4gICAgICBQYXlsb2FkRGVzY3JpcHRpb246ICdBZGRzIGEgQ0Egcm9vdCBjZXJ0aWZpY2F0ZScsXG4gICAgICBQYXlsb2FkRGlzcGxheU5hbWU6IGNvbW1vbk5hbWUsXG4gICAgICBQYXlsb2FkSWRlbnRpZmllcjogYGNvbS5hcHBsZS5zZWN1cml0eS5yb290LiR7Y29udGVudFV1aWR9YCxcbiAgICAgIFBheWxvYWRUeXBlOiAnY29tLmFwcGxlLnNlY3VyaXR5LnJvb3QnLFxuICAgICAgUGF5bG9hZFVVSUQ6IGNvbnRlbnRVdWlkLFxuICAgICAgUGF5bG9hZFZlcnNpb246IDFcbiAgICB9XSxcbiAgICBQYXlsb2FkRGlzcGxheU5hbWU6IGNvbW1vbk5hbWUsXG4gICAgUGF5bG9hZElkZW50aWZpZXI6IGAke29zLmhvc3RuYW1lKCkuc3BsaXQoJy4nKVswXX0uJHtnZXRVVUlEKCl9YCxcbiAgICBQYXlsb2FkUmVtb3ZhbERpc2FsbG93ZWQ6IGZhbHNlLFxuICAgIFBheWxvYWRUeXBlOiAnQ29uZmlndXJhdGlvbicsXG4gICAgUGF5bG9hZFVVSUQ6IGdldFVVSUQoKSxcbiAgICBQYXlsb2FkVmVyc2lvbjogMVxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBjbGlja0VsZW1lbnQgKGRyaXZlciwgbG9jYXRvciwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBlbGVtZW50ID0gbnVsbDtcbiAgY29uc3Qge1xuICAgIHRpbWVvdXQgPSA1MDAwLFxuICAgIHNraXBJZkludmlzaWJsZSA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBsb29rdXBEZWxheSA9IDUwMDtcbiAgdHJ5IHtcbiAgICBlbGVtZW50ID0gYXdhaXQgcmV0cnlJbnRlcnZhbCh0aW1lb3V0IDwgbG9va3VwRGVsYXkgPyAxIDogdGltZW91dCAvIGxvb2t1cERlbGF5LCBsb29rdXBEZWxheSxcbiAgICAgICgpID0+IGRyaXZlci5maW5kTmF0aXZlRWxlbWVudE9yRWxlbWVudHMobG9jYXRvci50eXBlLCBsb2NhdG9yLnZhbHVlLCBmYWxzZSlcbiAgICApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoc2tpcElmSW52aXNpYmxlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgJHtKU09OLnN0cmluZ2lmeShsb2NhdG9yKX0gd2l0aGluICR7dGltZW91dH1tcyB0aW1lb3V0YCk7XG4gIH1cbiAgYXdhaXQgZHJpdmVyLm5hdGl2ZUNsaWNrKGVsZW1lbnQpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbFByZTEyMkNlcnRpZmljYXRlIChkcml2ZXIpIHtcbiAgLy8gQWNjZXB0IFNhZmFyaSBhbGVydFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uQWxsb3csIHtcbiAgICAvLyBjZXJ0aWZpY2F0ZSBsb2FkIG1pZ2h0IHRha2Ugc29tZSB0aW1lIG9uIHNsb3cgbWFjaGluZXNcbiAgICB0aW1lb3V0OiAxNTAwMCxcbiAgfSk7XG4gIC8vIFdhaXQgdW50aWwgUHJlZmVyZW5jZXMgYXJlIG9wZW5lZFxuICBhd2FpdCBCLmRlbGF5KDIwMDApO1xuXG4gIC8vIEdvIHRocm91Z2ggUHJlZmVyZW5jZXMgd2l6YXJkXG4gIGlmICghYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkluc3RhbGwsIHtcbiAgICBza2lwSWZJbnZpc2libGU6IHRydWUsXG4gIH0pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFdlIG5lZWQgdG8gY2xpY2sgSW5zdGFsbCBidXR0b24gb24gdHdvIGRpZmZlcmVudCB0YWJzXG4gIC8vIFRoZSBzZWNvbmQgb25lIGNvbmZpcm1zIHRoZSBwcmV2aW91c1xuICBhd2FpdCBCLmRlbGF5KDE1MDApO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uSW5zdGFsbCk7XG4gIC8vIEFjY2VwdCBhbGVydFxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBBbGVydC5JbnN0YWxsKTtcbiAgLy8gRmluaXNoIGFkZGluZyBjZXJ0aWZpY2F0ZVxuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBCdXR0b24uRG9uZSk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiB0cnVzdENlcnRpZmljYXRlSW5QcmVmZXJlbmNlcyAoZHJpdmVyLCBuYW1lKSB7XG4gIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIFNldHRpbmdzLkdlbmVyYWwpO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBTZXR0aW5ncy5BYm91dCk7XG4gIGNvbnN0IHN3aXRjaExvY2F0b3IgPSB7XG4gICAgdHlwZTogJy1pb3MgY2xhc3MgY2hhaW4nLFxuICAgIHZhbHVlOiBgKiovWENVSUVsZW1lbnRUeXBlQ2VsbFtcXGBsYWJlbCA9PSAnJHtuYW1lfSdcXGBdLyoqL1hDVUlFbGVtZW50VHlwZVN3aXRjaGAsXG4gIH07XG4gIGF3YWl0IHJldHJ5KDUsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBkcml2ZXIubW9iaWxlU3dpcGUoe1xuICAgICAgZWxlbWVudDogYXdhaXQgZHJpdmVyLmZpbmROYXRpdmVFbGVtZW50T3JFbGVtZW50cygnY2xhc3MgbmFtZScsICdYQ1VJRWxlbWVudFR5cGVUYWJsZScsIGZhbHNlKSxcbiAgICAgIGRpcmVjdGlvbjogJ3VwJ1xuICAgIH0pO1xuICAgIGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIFNldHRpbmdzLkNlcnRpZmljYXRlX1RydXN0X1NldHRpbmdzLCB7XG4gICAgICB0aW1lb3V0OiA1MDAsXG4gICAgfSk7XG5cbiAgICBhd2FpdCBkcml2ZXIuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKHN3aXRjaExvY2F0b3IudHlwZSwgc3dpdGNoTG9jYXRvci52YWx1ZSwgZmFsc2UpO1xuICB9KTtcbiAgLy8gT25seSBjbGljayB0aGUgc3dpdGNoIGlmIGl0IGlzIHNldCB0byBPZmZcbiAgaWYgKGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIHtcbiAgICB0eXBlOiBzd2l0Y2hMb2NhdG9yLnR5cGUsXG4gICAgdmFsdWU6IGAke3N3aXRjaExvY2F0b3IudmFsdWV9W1xcYHZhbHVlID09ICcwJ1xcYF1gXG4gIH0sIHtcbiAgICB0aW1lb3V0OiAxMDAwLFxuICAgIHNraXBJZkludmlzaWJsZTogdHJ1ZSxcbiAgfSkpIHtcbiAgICBhd2FpdCBkcml2ZXIucG9zdEFjY2VwdEFsZXJ0KCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbFBvc3QxMjJDZXJ0aWZpY2F0ZSAoZHJpdmVyLCBuYW1lKSB7XG4gIC8vIEFjY2VwdCBTYWZhcmkgYWxlcnRcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkFsbG93LCB7XG4gICAgLy8gY2VydGlmaWNhdGUgbG9hZCBtaWdodCB0YWtlIHNvbWUgdGltZSBvbiBzbG93IG1hY2hpbmVzXG4gICAgdGltZW91dDogMTUwMDAsXG4gIH0pO1xuICAvLyBXYWl0IGZvciB0aGUgc2Vjb25kIGFsZXJ0XG4gIGF3YWl0IEIuZGVsYXkoMjAwMCk7XG5cbiAgYXdhaXQgZHJpdmVyLnBvc3RBY2NlcHRBbGVydCgpO1xuICBhd2FpdCBkcml2ZXIuYWN0aXZhdGVBcHAoJ2NvbS5hcHBsZS5QcmVmZXJlbmNlcycpO1xuICBhd2FpdCBjbGlja0VsZW1lbnQoZHJpdmVyLCBTZXR0aW5ncy5HZW5lcmFsKTtcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgU2V0dGluZ3MuUHJvZmlsZSk7XG4gIC8vIFNlbGVjdCB0aGUgdGFyZ2V0IGNlcnRcbiAgbGV0IGlzQ2VydEZvdW5kID0gZmFsc2U7XG4gIGZvciAobGV0IHN3aXBlTnVtID0gMDsgc3dpcGVOdW0gPCA1OyArK3N3aXBlTnVtKSB7XG4gICAgaWYgKGF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIHtcbiAgICAgIHR5cGU6ICctaW9zIGNsYXNzIGNoYWluJyxcbiAgICAgIHZhbHVlOiBgKiovWENVSUVsZW1lbnRUeXBlQ2VsbFtcXGBsYWJlbCA9PSAnJHtuYW1lfSdcXGBdYCxcbiAgICB9LCB7XG4gICAgICB0aW1lb3V0OiA1MDAsXG4gICAgICBza2lwSWZJbnZpc2libGU6IHRydWUsXG4gICAgfSkpIHtcbiAgICAgIGlzQ2VydEZvdW5kID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGF3YWl0IGRyaXZlci5tb2JpbGVTd2lwZSh7XG4gICAgICBlbGVtZW50OiBhd2FpdCBkcml2ZXIuZmluZE5hdGl2ZUVsZW1lbnRPckVsZW1lbnRzKCdjbGFzcyBuYW1lJywgJ1hDVUlFbGVtZW50VHlwZVRhYmxlJywgZmFsc2UpLFxuICAgICAgZGlyZWN0aW9uOiAndXAnXG4gICAgfSk7XG4gIH1cbiAgaWYgKCFpc0NlcnRGb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJyR7bmFtZX0nIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgY2VydGlmaWNhdGVzIGxpc3RgKTtcbiAgfVxuXG4gIC8vIEluc3RhbGwgb3B0aW9uIGlzIG9ubHkgdmlzaWJsZSBpZiB0aGUgY2VydCBpcyBub3QgaW5zdGFsbGVkIHlldFxuICBpZiAoIWF3YWl0IGNsaWNrRWxlbWVudChkcml2ZXIsIEJ1dHRvbi5JbnN0YWxsLCB7XG4gICAgc2tpcElmSW52aXNpYmxlOiB0cnVlLFxuICB9KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBhd2FpdCBCLmRlbGF5KDE1MDApO1xuICAvLyBDb25maXJtIHVudHJ1c3RlZCBjZXJ0IGluc3RhbGxcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkluc3RhbGwpO1xuICAvLyBBY2NlcHQgYWxlcnRcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQWxlcnQuSW5zdGFsbCk7XG4gIC8vIEZpbmlzaCBhZGRpbmcgY2VydGlmaWNhdGVcbiAgYXdhaXQgY2xpY2tFbGVtZW50KGRyaXZlciwgQnV0dG9uLkRvbmUpO1xuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENlcnRpZmljYXRlSW5zdGFsbGF0aW9uT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gY29udGVudCAtIEJhc2U2NC1lbmNvZGVkIGNvbnRlbnQgb2YgdGhlIHB1YmxpYyBjZXJ0aWZpY2F0ZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21tb25OYW1lIC0gQ29tbW9uIG5hbWUgb2YgdGhlIGNlcnRpZmljYXRlLiBJZiB0aGlzIGlzIG5vdCBzZXRcbiAqIHRoZW4gdGhlIHNjcmlwdCB3aWxsIHRyeSB0byBwYXJzZSBpdCBmcm9tIHRoZSBnaXZlbiBjZXJ0aWZpY2F0ZSBjb250ZW50LlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gaXNSb290IFt0cnVlXSAtIFRoaXMgb3B0aW9uIGRlZmluZXMgd2hlcmUgdGhlIGNlcnRpZmljYXRlIHNob3VsZCBiZVxuICogaW5zdGFsbGVkIHRvOiBlaXRoZXIgVHJ1c3RlZCBSb290IFN0b3JlIChgdHJ1ZWAsIHRoZSBkZWZhdWx0IG9wdGlvbikgb3JcbiAqIHRoZSBLZXljaGFpbiAoYGZhbHNlYCkuIE9uIGVudmlyb25tZW50cyBvdGhlciB0aGFuIFhjb2RlIDExLjQrIFNpbXVsYXRvciB0aGlzXG4gKiBvcHRpb24gaXMgaWdub3JlZC5cbiAqL1xuXG4vKipcbiAqIEluc3RhbGxzIGEgY3VzdG9tIGNlcnRpZmljYXRlIG9udG8gdGhlIGRldmljZS5cbiAqIFNpbmNlIFhjb2RlIFNESyAxMS40IEFwcGxlIGhhcyBhZGRlZCBhIGRlZGljYXRlZCBzaW1jdGwgc3ViY29tbWFuZCB0byBxdWlja2x5IGhhbmRsZVxuICogY2VydGlmaWNhdGVzIG9uIFNpbXVsYXRvciBvdmVyIENMSS5cbiAqIE9uIHJlYWwgZGV2aWNlcyBvciBzaW11bGF0b3JzIGJlZm9yZSBYY29kZSAxMS40IFNES1xuICogQXBwbGUgcHJvdmlkZXMgbm8gb2ZmaWNpYWwgd2F5IHRvIGRvIGl0IHZpYSB0aGUgY29tbWFuZCBsaW5lLlxuICogSW4gc3VjaCBjYXNlIChhbmQgYWxzbyBhcyBhIGZhbGxiYWNrIGlmIENMSSBzZXR1cCBmYWlscylcbiAqIHRoaXMgbWV0aG9kIHRyaWVzIHRvIHdyYXAgdGhlIGNlcnRpZmljYXRlIGludG8gLm1vYmlsZWNvbmZpZyBmb3JtYXRcbiAqIGFuZCB0aGVuIGRlcGxveXMgdGhlIHdyYXBwZWQgZmlsZSB0byB0aGUgaW50ZXJuYWwgSFRUUCBzZXJ2ZXIsXG4gKiBzbyBvbmUgY2FuIG9wZW4gaXQgdmlhIG1vYmlsZSBTYWZhcmkuXG4gKiBUaGVuIHRoZSBhbGdvcml0aG0gZ29lcyB0aHJvdWdoIHRoZSBwcm9maWxlIGluc3RhbGxhdGlvbiBwcm9jZWR1cmUgYnlcbiAqIGNsaWNraW5nIHRoZSBuZWNlc3NhcnkgYnV0dG9ucyB1c2luZyBXZWJEcml2ZXJBZ2VudC5cbiAqXG4gKiBAcGFyYW0ge0NlcnRpZmljYXRlSW5zdGFsbGF0aW9uT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMgez9zdHJpbmd9IFRoZSBjb250ZW50IG9mIHRoZSBnZW5lcmF0ZWQgLm1vYmlsZWNvbmZpZyBmaWxlIGFzXG4gKiBiYXNlNjQtZW5jb2RlZCBzdHJpbmcuIFRoaXMgY29uZmlnIG1pZ2h0IGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLlxuICogSWYgdGhlIGNlcnRpZmljYXRlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBzZXQgdmlhIENMSSB0aGVuIG5vdGhpbmcgaXMgcmV0dXJuZWQuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUluc3RhbGxDZXJ0aWZpY2F0ZSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUluc3RhbGxDZXJ0aWZpY2F0ZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBjb250ZW50LFxuICAgIGNvbW1vbk5hbWUsXG4gICAgaXNSb290ID0gdHJ1ZSxcbiAgfSA9IG9wdHM7XG4gIGlmIChfLmlzRW1wdHkoY29udGVudCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NlcnRpZmljYXRlIGNvbnRlbnQgc2hvdWxkIG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgaWYgKHRoaXMuaXNTaW11bGF0b3IoKSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtZXRob2ROYW1lID0gaXNSb290ID8gJ2FkZFJvb3RDZXJ0aWZpY2F0ZScgOiAnYWRkQ2VydGlmaWNhdGUnO1xuICAgICAgYXdhaXQgdGhpcy5vcHRzLmRldmljZS5zaW1jdGxbbWV0aG9kTmFtZV0oXG4gICAgICAgIEJ1ZmZlci5mcm9tKGNvbnRlbnQsICdiYXNlNjQnKS50b1N0cmluZygpLCB7cmF3OiB0cnVlfVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhlKTtcbiAgICAgIHRoaXMubG9nLmluZm8oYFRoZSBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgaW5zdGFsbGVkIHZpYSBDTEkuIGAgK1xuICAgICAgICBgRmFsbGluZyBiYWNrIHRvIFVJLWJhc2VkIGRlcGxveW1lbnRgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFB5aWRldmljZSh0aGlzLm9wdHMudWRpZCk7XG4gICAgaWYgKGF3YWl0IGNsaWVudC5hc3NlcnRFeGlzdHMoZmFsc2UpKSB7XG4gICAgICBhd2FpdCBjbGllbnQuaW5zdGFsbFByb2ZpbGUoe3BheWxvYWQ6IEJ1ZmZlci5mcm9tKGNvbnRlbnQsICdiYXNlNjQnKX0pO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdweWlkZXZpY2UgaXMgbm90IGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbS4gJyArXG4gICAgICAgICdGYWxsaW5nIGJhY2sgdG8gdGhlIChzbG93KSBVSS1iYXNlZCBpbnN0YWxsYXRpb24nKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gIGNvbnN0IHRtcFBvcnQgPSBhd2FpdCBmaW5kQVBvcnROb3RJblVzZShIT1NUX1BPUlRfUkFOR0VbMF0sIEhPU1RfUE9SVF9SQU5HRVsxXSk7XG4gIGNvbnN0IGNvbmZpZ05hbWUgPSBgYXBwaXVtLiR7Q09ORklHX0VYVEVOU0lPTn1gO1xuICBjb25zdCBjb25maWdQYXRoID0gcGF0aC5yZXNvbHZlKHRtcFJvb3QsIGNvbmZpZ05hbWUpO1xuICBjb25zdCB0bXBTZXJ2ZXIgPSBodHRwLmNyZWF0ZVNlcnZlcihhc3luYyBmdW5jdGlvbiAoXywgcmVzKSB7XG4gICAgY29uc3QgY29uZmlnRmlsZSA9IGF3YWl0IGZzLnJlYWRGaWxlKGNvbmZpZ1BhdGgpO1xuICAgIHJlcy5lbmQoY29uZmlnRmlsZSk7XG4gIH0pO1xuICB0cnkge1xuICAgIGNvbnN0IGNlcnRCdWZmZXIgPSBCdWZmZXIuZnJvbShjb250ZW50LCAnYmFzZTY0Jyk7XG4gICAgY29uc3QgY24gPSBjb21tb25OYW1lIHx8IGF3YWl0IGV4dHJhY3RDb21tb25OYW1lKGNlcnRCdWZmZXIpO1xuICAgIGNvbnN0IG1vYmlsZUNvbmZpZyA9IHRvTW9iaWxlQ29uZmlnKGNlcnRCdWZmZXIsIGNuKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcGxpc3QudXBkYXRlUGxpc3RGaWxlKGNvbmZpZ1BhdGgsIG1vYmlsZUNvbmZpZywgZmFsc2UsIGZhbHNlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHN0b3JlIHRoZSBnZW5lcmF0ZWQgY29uZmlnIGFzICcke2NvbmZpZ1BhdGh9Jy4gYCArXG4gICAgICAgICAgICAgICAgICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBob3N0ID0gb3MuaG9zdG5hbWUoKTtcbiAgICAgIGNvbnN0IGNlcnRVcmwgPSBgaHR0cDovLyR7aG9zdH06JHt0bXBQb3J0fS8ke2NvbmZpZ05hbWV9YDtcbiAgICAgIGF3YWl0IHRtcFNlcnZlci5saXN0ZW4odG1wUG9ydCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIChhd2FpdCBjaGVja1BvcnRTdGF0dXModG1wUG9ydCwgaG9zdCkpID09PSAnb3Blbic7XG4gICAgICAgICAgfSBjYXRjaCAoaWduKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgd2FpdE1zOiBUTVBTRVJWRVJfU1RBUlRVUF9USU1FT1VULFxuICAgICAgICAgIGludGVydmFsTXM6IDMwMCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBUaGUgdGVtcG9yYXJ5IHdlYiBzZXJ2ZXIgaXMgcnVubmluZyBhdCBodHRwOi8vJHtob3N0fToke3RtcFBvcnR9YCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHRlbXBvcmFyeSB3ZWIgc2VydmVyIGNhbm5vdCBiZSBzdGFydGVkIGF0IGh0dHA6Ly8ke2hvc3R9OiR7dG1wUG9ydH0uYCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1JlYWxEZXZpY2UoKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvdXJsJywgJ1BPU1QnLCB7dXJsOiBjZXJ0VXJsfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmICh0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgICAgICAgICAvLyBUaGUgY29tbWFuZCBhYm92ZSBkb2VzIG5vdCBhbHdheXMgd29yayBvbiByZWFsIGRldmljZXNcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0VXJsKGNlcnRVcmwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLm9wZW5VcmwoY2VydFVybCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBpc0NlcnRBbHJlYWR5SW5zdGFsbGVkID0gZmFsc2U7XG4gICAgICBpZiAodXRpbC5jb21wYXJlVmVyc2lvbnModGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbiwgJz49JywgJzEyLjInKSkge1xuICAgICAgICBpZiAoYXdhaXQgaW5zdGFsbFBvc3QxMjJDZXJ0aWZpY2F0ZSh0aGlzLCBjbikpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0VsZW1lbnQodGhpcywgU2V0dGluZ3MuUHJvZmlsZSk7XG4gICAgICAgICAgYXdhaXQgdHJ1c3RDZXJ0aWZpY2F0ZUluUHJlZmVyZW5jZXModGhpcywgY24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzQ2VydEFscmVhZHlJbnN0YWxsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYXdhaXQgaW5zdGFsbFByZTEyMkNlcnRpZmljYXRlKHRoaXMpKSB7XG4gICAgICAgICAgYXdhaXQgY2xpY2tFbGVtZW50KHRoaXMsIEJ1dHRvbi5SZXR1cm5fdG9fU2V0dGluZ3MpO1xuICAgICAgICAgIGF3YWl0IHRydXN0Q2VydGlmaWNhdGVJblByZWZlcmVuY2VzKHRoaXMsIGNuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpc0NlcnRBbHJlYWR5SW5zdGFsbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzQ2VydEFscmVhZHlJbnN0YWxsZWQpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgSXQgbG9va3MgbGlrZSB0aGUgJyR7Y259JyBjZXJ0aWZpY2F0ZSBoYXMgYmVlbiBhbHJlYWR5IGFkZGVkIHRvIHRoZSBDQSByb290YCk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICh0aGlzLm9wdHMuYnVuZGxlSWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFjdGl2YXRlQXBwKHRoaXMub3B0cy5idW5kbGVJZCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aGlzLmxvZy53YXJuKGBDYW5ub3QgcmVzdG9yZSB0aGUgYXBwbGljYXRpb24gJyR7dGhpcy5vcHRzLmJ1bmRsZUlkfScuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoYXdhaXQgdXRpbC50b0luTWVtb3J5QmFzZTY0KGNvbmZpZ1BhdGgpKS50b1N0cmluZygpO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHRtcFNlcnZlci5jbG9zZSgpO1xuICAgIGF3YWl0IGZzLnJpbXJhZih0bXBSb290KTtcbiAgfVxufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBjb21tYW5kcyk7XG5leHBvcnQgeyBjb21tYW5kcywgcGFyc2VDb21tb25OYW1lIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxJQUFJQSxVQUFVLEdBQUcsRUFBakI7QUFBQSxJQUFxQkMsUUFBUSxHQUFHLEVBQWhDOztBQUVBLE1BQU1DLGdCQUFnQixHQUFHLGNB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