verdaccio 5.4.0 → 5.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/CODE_OF_CONDUCT.md +10 -10
  3. package/CONTRIBUTING.md +28 -27
  4. package/SECURITY.md +8 -9
  5. package/build/api/debug/index.js +1 -1
  6. package/build/api/endpoint/api/dist-tags.js +4 -4
  7. package/build/api/endpoint/api/package.js +3 -3
  8. package/build/api/endpoint/api/ping.js +1 -1
  9. package/build/api/endpoint/api/publish.js +11 -11
  10. package/build/api/endpoint/api/star.js +5 -5
  11. package/build/api/endpoint/api/stars.js +1 -1
  12. package/build/api/endpoint/api/user.js +6 -6
  13. package/build/api/endpoint/api/v1/index.js +1 -1
  14. package/build/api/endpoint/api/v1/profile.js +4 -4
  15. package/build/api/endpoint/api/v1/search.js +4 -4
  16. package/build/api/endpoint/api/v1/token.js +8 -8
  17. package/build/api/endpoint/api/whoami.js +1 -1
  18. package/build/api/endpoint/index.js +9 -9
  19. package/build/api/index.js +13 -13
  20. package/build/api/middleware.js +6 -6
  21. package/build/api/rate-limiter.js +3 -3
  22. package/build/api/web/api.js +3 -3
  23. package/build/api/web/endpoint/index.js +10 -4
  24. package/build/api/web/endpoint/package.js +9 -9
  25. package/build/api/web/endpoint/search.js +3 -3
  26. package/build/api/web/endpoint/user.js +4 -4
  27. package/build/api/web/html/renderHTML.js +13 -9
  28. package/build/api/web/html/template.js +1 -1
  29. package/build/api/web/index.js +10 -10
  30. package/build/config/env.js +1 -1
  31. package/build/index.js +1 -1
  32. package/build/lib/auth-utils.js +5 -5
  33. package/build/lib/auth.js +7 -17
  34. package/build/lib/bootstrap.js +8 -8
  35. package/build/lib/cli/cli.js +3 -3
  36. package/build/lib/cli/commands/info.js +3 -3
  37. package/build/lib/cli/commands/init.js +3 -3
  38. package/build/lib/cli/commands/version.js +1 -1
  39. package/build/lib/cli/utils.js +3 -3
  40. package/build/lib/config-path.js +3 -3
  41. package/build/lib/config-utils.js +3 -3
  42. package/build/lib/config.js +8 -32
  43. package/build/lib/crypto-utils.js +3 -3
  44. package/build/lib/local-storage.js +7 -15
  45. package/build/lib/logger/formatter/index.js +1 -1
  46. package/build/lib/logger/formatter/prettifier.js +3 -3
  47. package/build/lib/logger/levels.js +1 -1
  48. package/build/lib/logger/logger.js +10 -6
  49. package/build/lib/logger/utils.js +1 -1
  50. package/build/lib/metadata-utils.js +3 -3
  51. package/build/lib/notify/index.js +3 -3
  52. package/build/lib/notify/notify-request.js +5 -5
  53. package/build/lib/plugin-loader.js +4 -4
  54. package/build/lib/search.js +2 -6
  55. package/build/lib/storage-utils.js +3 -3
  56. package/build/lib/storage.js +10 -22
  57. package/build/lib/up-storage.js +9 -43
  58. package/build/lib/uplink-util.js +1 -1
  59. package/build/lib/utils.js +22 -13
  60. package/build/utils/user.js +1 -1
  61. package/conf/README.md +3 -3
  62. package/eslintrc.js +92 -92
  63. package/index.js +1 -1
  64. package/package.json +64 -63
  65. package/prettier.config.js +15 -0
  66. package/tsconfig.json +3 -10
  67. package/yarn-plugins/plugin-postinstall.js +10 -10
package/build/lib/auth.js CHANGED
@@ -5,41 +5,31 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _lodash = _interopRequireDefault(require("lodash"));
9
-
10
8
  var _debug = _interopRequireDefault(require("debug"));
11
9
 
10
+ var _lodash = _interopRequireDefault(require("lodash"));
11
+
12
12
  var _pluginLoader = _interopRequireDefault(require("../lib/plugin-loader"));
13
13
 
14
+ var _authUtils = require("./auth-utils");
15
+
16
+ var _configUtils = require("./config-utils");
17
+
14
18
  var _constants = require("./constants");
15
19
 
16
20
  var _cryptoUtils = require("./crypto-utils");
17
21
 
18
22
  var _logger = require("./logger");
19
23
 
20
- var _authUtils = require("./auth-utils");
21
-
22
24
  var _utils = require("./utils");
23
25
 
24
- var _configUtils = require("./config-utils");
25
-
26
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
27
 
28
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
29
-
30
28
  const debug = (0, _debug.default)('verdaccio:auth');
31
29
 
32
30
  class Auth {
33
31
  // pragma: allowlist secret
34
32
  constructor(config) {
35
- _defineProperty(this, "config", void 0);
36
-
37
- _defineProperty(this, "logger", void 0);
38
-
39
- _defineProperty(this, "secret", void 0);
40
-
41
- _defineProperty(this, "plugins", void 0);
42
-
43
33
  this.config = config;
44
34
  this.logger = _logger.logger;
45
35
  this.secret = config.secret;
@@ -548,4 +538,4 @@ class Auth {
548
538
 
549
539
  var _default = Auth;
550
540
  exports.default = _default;
551
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXV0aC50cyJdLCJuYW1lcyI6WyJkZWJ1ZyIsIkF1dGgiLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsImxvZ2dlciIsInNlY3JldCIsInBsdWdpbnMiLCJfbG9hZFBsdWdpbiIsIl9hcHBseURlZmF1bHRQbHVnaW5zIiwicGx1Z2luT3B0aW9ucyIsImF1dGgiLCJwbHVnaW4iLCJhdXRoZW50aWNhdGUiLCJhbGxvd19hY2Nlc3MiLCJhbGxvd19wdWJsaXNoIiwicHVzaCIsImNoYW5nZVBhc3N3b3JkIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsIm5ld1Bhc3N3b3JkIiwiY2IiLCJ2YWxpZFBsdWdpbnMiLCJfIiwiZmlsdGVyIiwiaXNGdW5jdGlvbiIsImlzRW1wdHkiLCJFcnJvckNvZGUiLCJnZXRJbnRlcm5hbEVycm9yIiwiU1VQUE9SVF9FUlJPUlMiLCJQTFVHSU5fTUlTU0lOR19JTlRFUkZBQ0UiLCJpc05pbCIsImVyciIsInByb2ZpbGUiLCJlcnJvciIsImluZm8iLCJzbGljZSIsInNlbGYiLCJuZXh0Iiwic2hpZnQiLCJncm91cHMiLCJsZW5ndGgiLCJpc1N0cmluZyIsIlR5cGVFcnJvciIsImlzR3JvdXBWYWxpZCIsImlzQXJyYXkiLCJBUElfRVJST1IiLCJCQURfRk9STUFUX1VTRVJfR1JPVVAiLCJhZGRfdXNlciIsInVzZXIiLCJtZXRob2QiLCJ3YXJuIiwib2siLCJtZXNzYWdlIiwicGFja2FnZU5hbWUiLCJwYWNrYWdlVmVyc2lvbiIsImNhbGxiYWNrIiwicGtnQWxsb3dBY2NlcyIsIm5hbWUiLCJ2ZXJzaW9uIiwicGtnIiwiT2JqZWN0IiwiYXNzaWduIiwicGFja2FnZXMiLCJhbGxvd191bnB1Ymxpc2giLCJhcmd1bWVudHMiLCJpc0Vycm9yIiwiYXBpSldUbWlkZGxld2FyZSIsImhlbHBlcnMiLCJjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyIiwiY3JlYXRlUmVtb3RlVXNlciIsInJlcSIsInJlcyIsIl9uZXh0IiwicGF1c2UiLCJyZXN1bWUiLCJyZW1vdGVfdXNlciIsIl9pc1JlbW90ZVVzZXJWYWxpZCIsImF1dGhvcml6YXRpb24iLCJoZWFkZXJzIiwiZ2V0QmFkUmVxdWVzdCIsIkJBRF9BVVRIX0hFQURFUiIsInNlY3VyaXR5IiwiX2hhbmRsZUFFU01pZGRsZXdhcmUiLCJfaGFuZGxlSldUQVBJTWlkZGxld2FyZSIsInNjaGVtZSIsInRva2VuIiwidG9VcHBlckNhc2UiLCJUT0tFTl9CQVNJQyIsImNyZWRlbnRpYWxzIiwidG9TdHJpbmciLCJnZXRGb3JiaWRkZW4iLCJCQURfVVNFUk5BTUVfUEFTU1dPUkQiLCJpc1VuZGVmaW5lZCIsIndlYlVJSldUbWlkZGxld2FyZSIsInN0YXR1cyIsInN0YXR1c0NvZGUiLCJzZW5kIiwicmVwbGFjZSIsIlRPS0VOX0JFQVJFUiIsImp3dEVuY3J5cHQiLCJzaWduT3B0aW9ucyIsInJlYWxfZ3JvdXBzIiwicmVhbEdyb3Vwc1ZhbGlkYXRlZCIsImdyb3VwZWRHcm91cHMiLCJjb25jYXQiLCJwYXlsb2FkIiwiYWVzRW5jcnlwdCIsImJ1ZiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBOztBQUdBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQVlBOztBQUNBOzs7Ozs7QUFFQSxNQUFNQSxLQUFLLEdBQUcsb0JBQVcsZ0JBQVgsQ0FBZDs7QUFFQSxNQUFNQyxJQUFOLENBQTRCO0FBR0g7QUFHaEJDLEVBQUFBLFdBQVcsQ0FBQ0MsTUFBRCxFQUFpQjtBQUFBOztBQUFBOztBQUFBOztBQUFBOztBQUNqQyxTQUFLQSxNQUFMLEdBQWNBLE1BQWQ7QUFDQSxTQUFLQyxNQUFMLEdBQWNBLGNBQWQ7QUFDQSxTQUFLQyxNQUFMLEdBQWNGLE1BQU0sQ0FBQ0UsTUFBckI7QUFDQSxTQUFLQyxPQUFMLEdBQWUsS0FBS0MsV0FBTCxDQUFpQkosTUFBakIsQ0FBZjs7QUFDQSxTQUFLSyxvQkFBTDtBQUNEOztBQUVPRCxFQUFBQSxXQUFXLENBQUNKLE1BQUQsRUFBd0M7QUFDekQsVUFBTU0s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O0FBRUR0QyxNQUFBQSxJQUFJO0FBQ0wsS0E5Q0Q7QUErQ0Q7O0FBRXNCLFFBQVY4RCxVQUFVLENBQUNuRCxJQUFELEVBQW1Cb0QsV0FBbkIsRUFBaUU7QUFDdEYsVUFBTTtBQUFFQyxNQUFBQSxXQUFGO0FBQWU1QyxNQUFBQSxJQUFmO0FBQXFCbEIsTUFBQUE7QUFBckIsUUFBZ0NTLElBQXRDO0FBQ0EsVUFBTXNELG1CQUFtQixHQUFHaEYsZ0JBQUVRLEtBQUYsQ0FBUXVFLFdBQVIsSUFBdUIsRUFBdkIsR0FBNEJBLFdBQXhEO0FBQ0EsVUFBTUUsYUFBYSxHQUFHakYsZ0JBQUVRLEtBQUYsQ0FBUVMsTUFBUixJQUFrQjhELFdBQWxCLEdBQWdDOUQsTUFBTSxDQUFDaUUsTUFBUCxDQUFjRixtQkFBZCxDQUF0RDtBQUNBLFVBQU1HLE9BQW1CLEdBQUc7QUFDMUJKLE1BQUFBLFdBQVcsRUFBRUMsbUJBRGE7QUFFMUI3QyxNQUFBQSxJQUYwQjtBQUcxQmxCLE1BQUFBLE1BQU0sRUFBRWdFO0FBSGtCLEtBQTVCO0FBTUEsVUFBTWxCLEtBQWEsR0FBRyxNQUFNLDhCQUFZb0IsT0FBWixFQUFxQixLQUFLcEcsTUFBMUIsRUFBa0MrRixXQUFsQyxDQUE1QjtBQUVBLFdBQU9mLEtBQVA7QUFDRDtBQUVEO0FBQ0Y7QUFDQTs7O0FBQ1NxQixFQUFBQSxVQUFVLENBQUNDLEdBQUQsRUFBc0I7QUFDckMsV0FBTyw2QkFBV0EsR0FBWCxFQUFnQixLQUFLdEcsTUFBckIsQ0FBUDtBQUNEOztBQTFaeUI7O2VBNlpiSixJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFZlcmRhY2Npb0Vycm9yIH0gZnJvbSAnQHZlcmRhY2Npby9jb21tb25zLWFwaSc7XG5pbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBDb25maWcsIExvZ2dlciwgQ2FsbGJhY2ssIElQbHVnaW5BdXRoLCBSZW1vdGVVc2VyLCBKV1RTaWduT3B0aW9ucywgU2VjdXJpdHksIEF1dGhQbHVnaW5QYWNrYWdlLCBBbGxvd0FjY2VzcywgUGFja2FnZUFjY2VzcyB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgTmV4dEZ1bmN0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgbG9hZFBsdWdpbiBmcm9tICcuLi9saWIvcGx1Z2luLWxvYWRlcic7XG5pbXBvcnQgeyAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kLCBJQXV0aCwgQUVTUGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEFQSV9FUlJPUiwgU1VQUE9SVF9FUlJPUlMsIFRPS0VOX0JBU0lDLCBUT0tFTl9CRUFSRVIgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBhZXNFbmNyeXB0LCBzaWduUGF5bG9hZCB9IGZyb20gJy4vY3J5cHRvLXV0aWxzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7XG4gIGdldERlZmF1bHRQbHVnaW5zLFxuICBnZXRNaWRkbGV3YXJlQ3JlZGVudGlhbHMsXG4gIHZlcmlmeUpXVFBheWxvYWQsXG4gIGNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIsXG4gIGlzQXV0aEhlYWRlclZhbGlkLFxuICBnZXRTZWN1cml0eSxcbiAgaXNBRVNMZWdhY3ksXG4gIHBhcnNlQXV0aFRva2VuSGVhZGVyLFxuICBwYXJzZUJhc2ljUGF5bG9hZCxcbiAgY3JlYXRlUmVtb3RlVXNlcixcbn0gZnJvbSAnLi9hdXRoLXV0aWxzJztcbmltcG9ydCB7IGNvbnZlcnRQYXlsb2FkVG9CYXNlNjQsIEVycm9yQ29kZSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZ2V0TWF0Y2hlZFBhY2thZ2VzU3BlYyB9IGZyb20gJy4vY29uZmlnLXV0aWxzJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW86YXV0aCcpO1xuXG5jbGFzcyBBdXRoIGltcGxlbWVudHMgSUF1dGgge1xuICBwdWJsaWMgY29uZmlnOiBDb25maWc7XG4gIHB1YmxpYyBsb2dnZXI6IExvZ2dlcjtcbiAgcHVibGljIHNlY3JldDogc3RyaW5nOyAvLyBwcmFnbWE6IGFsbG93bGlzdCBzZWNyZXRcbiAgcHVibGljIHBsdWdpbnM6IElQbHVnaW5BdXRoPENvbmZpZz5bXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoY29uZmlnOiBDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgICB0aGlzLnNlY3JldCA9IGNvbmZpZy5zZWNyZXQ7XG4gICAgdGhpcy5wbHVnaW5zID0gdGhpcy5fbG9hZFBsdWdpbihjb25maWcpO1xuICAgIHRoaXMuX2FwcGx5RGVmYXVsdFBsdWdpbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRQbHVnaW4oY29uZmlnOiBDb25maWcpOiBJUGx1Z2luQXV0aDxDb25maWc+W10ge1xuICAgIGNvbnN0IHBsdWdpbk9wdGlvbnMgPSB7XG4gICAgICBjb25maWcsXG4gICAgICBsb2dnZXI6IHRoaXMubG9nZ2VyLFxuICAgIH07XG5cbiAgICByZXR1cm4gbG9hZFBsdWdpbjxJUGx1Z2luQXV0aDxDb25maWc+Pihjb25maWcsIGNvbmZpZy5hdXRoLCBwbHVnaW5PcHRpb25zLCAocGx1Z2luOiBJUGx1Z2luQXV0aDxDb25maWc+KTogYm9vbGVhbiA9PiB7XG4gICAgICBjb25zdCB7IGF1dGhlbnRpY2F0ZSwgYWxsb3dfYWNjZXNzLCBhbGxvd19wdWJsaXNoIH0gPSBwbHVnaW47XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gYXV0aGVudGljYXRlIHx8IGFsbG93X2FjY2VzcyB8fCBhbGxvd19wdWJsaXNoO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlEZWZhdWx0UGx1Z2lucygpOiB2b2lkIHtcbiAgICB0aGlzLnBsdWdpbnMucHVzaChnZXREZWZhdWx0UGx1Z2lucyh0aGlzLmxvZ2dlcikpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVBhc3N3b3JkKFxuICAgIHVzZXJuYW1lOiBzdHJpbmcsXG4gICAgcGFzc3dvcmQ6IHN0cmluZywgLy8gcHJhZ21hOiBhbGxvd2xpc3Qgc2VjcmV0XG4gICAgbmV3UGFzc3dvcmQ6IHN0cmluZywgLy8gcHJhZ21hOiBhbGxvd2xpc3Qgc2VjcmV0XG4gICAgY2I6IENhbGxiYWNrXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkUGx1Z2lucyA9IF8uZmlsdGVyKHRoaXMucGx1Z2lucywgKHBsdWdpbikgPT4gXy5pc0Z1bmN0aW9uKHBsdWdpbi5jaGFuZ2VQYXNzd29yZCkpO1xuXG4gICAgaWYgKF8uaXNFbXB0eSh2YWxpZFBsdWdpbnMpKSB7XG4gICAgICByZXR1cm4gY2IoRXJyb3JDb2RlLmdldEludGVybmFsRXJyb3IoU1VQUE9SVF9FUlJPUlMuUExVR0lOX01JU1NJTkdfSU5URVJGQUNFKSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwbHVnaW4gb2YgdmFsaWRQbHVnaW5zKSB7XG4gICAgICBpZiAoXy5pc05pbChwbHVnaW4pIHx8IF8uaXNGdW5jdGlvbihwbHVnaW4uY2hhbmdlUGFzc3dvcmQpID09PSBmYWxzZSkge1xuICAgICAgICBkZWJ1ZygnYXV0aCBwbHVnaW4gZG9lcyBub3QgaW1wbGVtZW50IGNoYW5nZVBhc3N3b3JkLCB0cnlpbmcgbmV4dCBvbmUnKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWJ1ZygndXBkYXRpbmcgcGFzc3dvcmQgZm9yICVvJywgdXNlcm5hbWUpO1xuICAgICAgICBwbHVnaW4uY2hhbmdlUGFzc3dvcmQhKHVzZXJuYW1lLCBwYXNzd29yZCwgbmV3UGFzc3dvcmQsIChlcnIsIHByb2ZpbGUpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgeyB1c2VybmFtZSwgZXJyIH0sXG4gICAgICAgICAgICAgIGBBbiBlcnJvciBoYXMgYmVlbiBwcm9kdWNlZFxuICAgICAgICAgICAgdXBkYXRpbmcgdGhlIHBhc3N3b3JkIGZvciBAe3VzZXJuYW1lfS4gRXJyb3I6IEB7ZXJyLm1lc3NhZ2V9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKHsgdXNlcm5hbWUgfSwgJ3VwZGF0ZWQgcGFzc3dvcmQgZm9yIEB7dXNlcm5hbWV9IHdhcyBzdWNjZXNzZnVsJyk7XG4gICAgICAgICAgcmV0dXJuIGNiKG51bGwsIHByb2ZpbGUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXV0aGVudGljYXRlKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLnBsdWdpbnMuc2xpY2UoMCk7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgKGZ1bmN0aW9uIG5leHQoKTogdm9pZCB7XG4gICAgICBjb25zdCBwbHVnaW4gPSBwbHVnaW5zLnNoaWZ0KCkgYXMgSVBsdWdpbkF1dGg8Q29uZmlnPjtcbiAgICAgIGlmIChfLmlzRnVuY3Rpb24ocGx1Z2luLmF1dGhlbnRpY2F0ZSkgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG4gICAgICBkZWJ1ZygnYXV0aGVudGljYXRpbmcgJW8nLCB1c2VybmFtZSk7XG4gICAgICBwbHVnaW4uYXV0aGVudGljYXRlKHVzZXJuYW1lLCBwYXNzd29yZCwgZnVuY3Rpb24gKGVyciwgZ3JvdXBzKTogdm9pZCB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih7IHVzZXJuYW1lLCBlcnIgfSwgJ2F1dGhlbnRpY2F0aW5nIGZvciB1c2VyIEB7dXNlcm5hbWV9IGZhaWxlZC4gRXJyb3I6IEB7ZXJyLm1lc3NhZ2V9Jyk7XG4gICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFeHBlY3Q6IFNLSVAgaWYgZ3JvdXBzIGlzIGZhbHNleSBhbmQgbm90IGFuIGFycmF5XG4gICAgICAgIC8vICAgICAgICAgd2l0aCBhdCBsZWFzdCBvbmUgaXRlbSAodHJ1dGh5IGxlbmd0aClcbiAgICAgICAgLy8gRXhwZWN0OiBDT05USU5VRSBvdGhlcndpc2UgKHdpbGwgZXJyb3IgaWYgZ3JvdXBzIGlzIG5vdFxuICAgICAgICAvLyAgICAgICAgIGFuIGFycmF5LCBidXQgdGhpcyBpcyBjdXJyZW50IGJlaGF2aW9yKVxuICAgICAgICAvLyBDYXZlYXQ6IFNUUklORyAoaWYgdmFsaWQpIHdpbGwgcGFzcyBzdWNjZXNzZnVsbHlcbiAgICAgICAgLy8gICAgICAgICBidWcgZ2l2ZSB1bmV4cGVjdGVkIHJlc3VsdHNcbiAgICAgICAgLy8gSW5mbzogQ2Fubm90IHVzZSBgPT0gZmFsc2UgdG8gY2hlY2sgZmFsc2V5IHZhbHVlc2BcbiAgICAgICAgaWYgKCEhZ3JvdXBzICYmIGdyb3Vwcy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAvLyBUT0RPOiBjcmVhdGUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBleHBlY3RhdGlvbnNcbiAgICAgICAgICBpZiAoXy5pc1N0cmluZyhncm91cHMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwbHVnaW4gZ3JvdXAgZXJyb3I6IGludmFsaWQgdHlwZSBmb3IgZnVuY3Rpb24nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNHcm91cFZhbGlkOiBib29sZWFuID0gXy5pc0FycmF5KGdyb3Vwcyk7XG4gICAgICAgICAgaWYgKCFpc0dyb3VwVmFsaWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoQVBJX0VSUk9SLkJBRF9GT1JNQVRfVVNFUl9HUk9VUCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlYnVnKCdhdXRoZW50aWNhdGlvbiBmb3IgdXNlciAlbyB3YXMgc3VjY2Vzc2Z1bGx5LiBHcm91cHM6ICVvJywgdXNlcm5hbWUsIGdyb3Vwcyk7XG4gICAgICAgICAgcmV0dXJuIGNiKGVyciwgY3JlYXRlUmVtb3RlVXNlcih1c2VybmFtZSwgZ3JvdXBzKSk7XG4gICAgICAgIH1cbiAgICAgICAgbmV4dCgpO1xuICAgICAgfSk7XG4gICAgfSkoKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRfdXNlcih1c2VyOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLnBsdWdpbnMuc2xpY2UoMCk7XG4gICAgZGVidWcoJ2FkZCB1c2VyICVvJywgdXNlcik7XG4gICAgKGZ1bmN0aW9uIG5leHQoKTogdm9pZCB7XG4gICAgICBjb25zdCBwbHVnaW4gPSBwbHVnaW5zLnNoaWZ0KCkgYXMgSVBsdWdpbkF1dGg8Q29uZmlnPjtcbiAgICAgIGxldCBtZXRob2QgPSAnYWRkdXNlcic7XG4gICAgICBpZiAoXy5pc0Z1bmN0aW9uKHBsdWdpblttZXRob2RdKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgbWV0aG9kID0gJ2FkZF91c2VyJztcbiAgICAgICAgc2VsZi5sb2dnZXIud2FybigndGhlIHBsdWdpbiBtZXRob2QgYWRkX3VzZXIgaW4gdGhlIGF1dGggcGx1Z2luIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IG1ham9yIHJlbGVhc2UsIG5vdGlmeSB0byB0aGUgcGx1Z2luIGF1dGhvcicpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXy5pc0Z1bmN0aW9uKHBsdWdpblttZXRob2RdKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgbmV4dCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcC5hZGRfdXNlcigpIGV4ZWN1dGlvblxuICAgICAgICBwbHVnaW5bbWV0aG9kXSh1c2VyLCBwYXNzd29yZCwgZnVuY3Rpb24gKGVyciwgb2spOiB2b2lkIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih7IHVzZXIsIGVycjogZXJyLm1lc3NhZ2UgfSwgJ3RoZSB1c2VyIEB7dXNlcn0gY291bGQgbm90IGJlaW5nIGFkZGVkLiBFcnJvcjogQHtlcnJ9Jyk7XG4gICAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9rKSB7XG4gICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKHsgdXNlciB9LCAndGhlIHVzZXIgQHt1c2VyfSBoYXMgYmVlbiBhZGRlZCcpO1xuICAgICAgICAgICAgcmV0dXJuIHNlbGYuYXV0aGVudGljYXRlKHVzZXIsIHBhc3N3b3JkLCBjYik7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvdyB1c2VyIHRvIGFjY2VzcyBhIHBhY2thZ2UuXG4gICAqL1xuICBwdWJsaWMgYWxsb3dfYWNjZXNzKHsgcGFja2FnZU5hbWUsIHBhY2thZ2VWZXJzaW9uIH06IEF1dGhQbHVnaW5QYWNrYWdlLCB1c2VyOiBSZW1vdGVVc2VyLCBjYWxsYmFjazogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBjb25zdCBwbHVnaW5zID0gdGhpcy5wbHVnaW5zLnNsaWNlKDApO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IHBrZ0FsbG93QWNjZXM6IEFsbG93QWNjZXNzID0geyBuYW1lOiBwYWNrYWdlTmFtZSwgdmVyc2lvbjogcGFja2FnZVZlcnNpb24gfTtcbiAgICBjb25zdCBwa2cgPSBPYmplY3QuYXNzaWduKHt9LCBwa2dBbGxvd0FjY2VzLCBnZXRNYXRjaGVkUGFja2FnZXNTcGVjKHBhY2thZ2VOYW1lLCB0aGlzLmNvbmZpZy5wYWNrYWdlcykpIGFzIEFsbG93QWNjZXNzICYgUGFja2FnZUFjY2VzcztcbiAgICBkZWJ1ZygnYWxsb3cgYWNjZXNzIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcblxuICAgIChmdW5jdGlvbiBuZXh0KCk6IHZvaWQge1xuICAgICAgY29uc3QgcGx1Z2luOiBJUGx1Z2luQXV0aDxDb25maWc+ID0gcGx1Z2lucy5zaGlmdCgpIGFzIElQbHVnaW5BdXRoPENvbmZpZz47XG5cbiAgICAgIGlmIChfLmlzTmlsKHBsdWdpbikgfHwgXy5pc0Z1bmN0aW9uKHBsdWdpbi5hbGxvd19hY2Nlc3MpID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgfVxuXG4gICAgICBwbHVnaW4uYWxsb3dfYWNjZXNzISh1c2VyLCBwa2csIGZ1bmN0aW9uIChlcnIsIG9rOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih7IHBhY2thZ2VOYW1lLCBlcnIgfSwgJ2ZvcmJpZGRlbiBhY2Nlc3MgZm9yIEB7cGFja2FnZU5hbWV9LiBFcnJvcjogQHtlcnIubWVzc2FnZX0nKTtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvaykge1xuICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oeyBwYWNrYWdlTmFtZSB9LCAnYWxsb3dlZCBhY2Nlc3MgZm9yIEB7cGFja2FnZU5hbWV9Jyk7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIG9rKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5leHQoKTsgLy8gY2IobnVsbCwgZmFsc2UpIGNhdXNlcyBuZXh0IHBsdWdpbiB0byByb2xsXG4gICAgICB9KTtcbiAgICB9KSgpO1xuICB9XG5cbiAgcHVibGljIGFsbG93X3VucHVibGlzaCh7IHBhY2thZ2VOYW1lLCBwYWNrYWdlVmVyc2lvbiB9OiBBdXRoUGx1Z2luUGFja2FnZSwgdXNlcjogUmVtb3RlVXNlciwgY2FsbGJhY2s6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgY29uc3QgcGtnID0gT2JqZWN0LmFzc2lnbih7IG5hbWU6IHBhY2thZ2VOYW1lLCB2ZXJzaW9uOiBwYWNrYWdlVmVyc2lvbiB9LCBnZXRNYXRjaGVkUGFja2FnZXNTcGVjKHBhY2thZ2VOYW1lLCB0aGlzLmNvbmZpZy5wYWNrYWdlcykpO1xuICAgIGRlYnVnKCdhbGxvdyB1bnB1Ymxpc2ggZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIHRoaXMucGx1Z2lucykge1xuICAgICAgaWYgKF8uaXNOaWwocGx1Z2luKSB8fCBfLmlzRnVuY3Rpb24ocGx1Z2luLmFsbG93X3VucHVibGlzaCkgPT09IGZhbHNlKSB7XG4gICAgICAgIGRlYnVnKCdhbGxvdyB1bnB1Ymxpc2ggZm9yICVvIHBsdWdpbiBkb2VzIG5vdCBpbXBsZW1lbnQgYWxsb3dfdW5wdWJsaXNoJywgcGFja2FnZU5hbWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBsdWdpbi5hbGxvd191bnB1Ymxpc2ghKHVzZXIsIHBrZywgKGVyciwgb2s6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcih7IHBhY2thZ2VOYW1lLCB1c2VyOiB1c2VyPy5uYW1lIH0sICdAe3VzZXJ9IGZvcmJpZGRlbiBwdWJsaXNoIGZvciBAe3BhY2thZ2VOYW1lfSwgaXQgd2lsbCBmYWxsYmFjayBvbiB1bnB1Ymxpc2ggcGVybWlzc2lvbnMnKTtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChfLmlzTmlsKG9rKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgZGVidWcoJ3dlIGJ5cGFzcyB1bnB1Ymxpc2ggZm9yICVvLCBwdWJsaXNoIHdpbGwgaGFuZGxlIHRoZSBhY2Nlc3MnLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFsbG93X3B1Ymxpc2goLi4uYXJndW1lbnRzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob2spIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oeyBwYWNrYWdlTmFtZSwgdXNlcjogdXNlcj8ubmFtZSB9LCAnQHt1c2VyfSBhbGxvd2VkIHVucHVibGlzaCBmb3IgQHtwYWNrYWdlTmFtZX0nKTtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBvayk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWxsb3cgdXNlciB0byBwdWJsaXNoIGEgcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyBhbGxvd19wdWJsaXNoKHsgcGFja2FnZU5hbWUsIHBhY2thZ2VWZXJzaW9uIH06IEF1dGhQbHVnaW5QYWNrYWdlLCB1c2VyOiBSZW1vdGVVc2VyLCBjYWxsYmFjazogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBjb25zdCBwbHVnaW5zID0gdGhpcy5wbHVnaW5zLnNsaWNlKDApO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IHBrZyA9IE9iamVjdC5hc3NpZ24oeyBuYW1lOiBwYWNrYWdlTmFtZSwgdmVyc2lvbjogcGFja2FnZVZlcnNpb24gfSwgZ2V0TWF0Y2hlZFBhY2thZ2VzU3BlYyhwYWNrYWdlTmFtZSwgdGhpcy5jb25maWcucGFja2FnZXMpKTtcbiAgICBkZWJ1ZygnYWxsb3cgcHVibGlzaCBmb3IgJW8gaW5pdCB8IHBsdWdpbnM6ICVvJywgcGFja2FnZU5hbWUsIHBsdWdpbnMpO1xuICAgIChmdW5jdGlvbiBuZXh0KCk6IHZvaWQge1xuICAgICAgY29uc3QgcGx1Z2luID0gcGx1Z2lucy5zaGlmdCgpO1xuXG4gICAgICBpZiAoXy5pc05pbChwbHVnaW4pIHx8IF8uaXNGdW5jdGlvbihwbHVnaW4uYWxsb3dfcHVibGlzaCkgPT09IGZhbHNlKSB7XG4gICAgICAgIGRlYnVnKCdhbGxvdyBwdWJsaXNoIGZvciAlbyBwbHVnaW4gZG9lcyBub3QgaW1wbGVtZW50IGFsbG93X3B1Ymxpc2gnLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHBsdWdpbi5hbGxvd19wdWJsaXNoKHVzZXIsIHBrZywgKGVycjogVmVyZGFjY2lvRXJyb3IsIG9rOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIGlmIChfLmlzTmlsKGVycikgPT09IGZhbHNlICYmIF8uaXNFcnJvcihlcnIpKSB7XG4gICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoeyBwYWNrYWdlTmFtZSwgdXNlcjogdXNlcj8ubmFtZSB9LCAnQHt1c2VyfSBpcyBmb3JiaWRkZW4gcHVibGlzaCBmb3IgQHtwYWNrYWdlTmFtZX0nKTtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvaykge1xuICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oeyBwYWNrYWdlTmFtZSwgdXNlcjogdXNlcj8ubmFtZSB9LCAnQHt1c2VyfSBpcyBhbGxvd2VkIHB1Ymxpc2ggZm9yIEB7cGFja2FnZU5hbWV9Jyk7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIG9rKTtcbiAgICAgICAgfVxuICAgICAgICBkZWJ1ZygnYWxsb3cgcHVibGlzaCBza2lwIHZhbGlkYXRpb24gZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgICAgICBuZXh0KCk7IC8vIGNiKG51bGwsIGZhbHNlKSBjYXVzZXMgbmV4dCBwbHVnaW4gdG8gcm9sbFxuICAgICAgfSk7XG4gICAgfSkoKTtcbiAgfVxuXG4gIHB1YmxpYyBhcGlKV1RtaWRkbGV3YXJlKCk6IEZ1bmN0aW9uIHtcbiAgICBjb25zdCBwbHVnaW5zID0gdGhpcy5wbHVnaW5zLnNsaWNlKDApO1xuICAgIGNvbnN0IGhlbHBlcnMgPSB7IGNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIsIGNyZWF0ZVJlbW90ZVVzZXIgfTtcbiAgICBmb3IgKGNvbnN0IHBsdWdpbiBvZiBwbHVnaW5zKSB7XG4gICAgICBpZiAocGx1Z2luLmFwaUpXVG1pZGRsZXdhcmUpIHtcbiAgICAgICAgcmV0dXJuIHBsdWdpbi5hcGlKV1RtaWRkbGV3YXJlKGhlbHBlcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIF9uZXh0OiBOZXh0RnVuY3Rpb24pOiB2b2lkID0+IHtcbiAgICAgIHJlcS5wYXVzZSgpO1xuXG4gICAgICBjb25zdCBuZXh0ID0gZnVuY3Rpb24gKGVycjogVmVyZGFjY2lvRXJyb3IgfCB2b2lkKTogdm9pZCB7XG4gICAgICAgIHJlcS5yZXN1bWUoKTtcbiAgICAgICAgLy8gdW5jb21tZW50IHRoaXMgdG8gcmVqZWN0IHVzZXJzIHdpdGggYmFkIGF1dGggaGVhZGVyc1xuICAgICAgICAvLyByZXR1cm4gX25leHQuYXBwbHkobnVsbCwgYXJndW1lbnRzKVxuICAgICAgICAvLyBzd2FsbG93IGVycm9yLCB1c2VyIHJlbWFpbnMgdW5hdXRob3JpemVkXG4gICAgICAgIC8vIHNldCByZW1vdGVVc2VyRXJyb3IgdG8gaW5kaWNhdGUgdGhhdCB1c2VyIHdhcyBhdHRlbXB0aW5nIGF1dGhlbnRpY2F0aW9uXG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXEucmVtb3RlX3VzZXIuZXJyb3IgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX25leHQoKTtcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLl9pc1JlbW90ZVVzZXJWYWxpZChyZXEucmVtb3RlX3VzZXIpKSB7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGluIGNhc2UgYXV0aCBoZWFkZXIgZG9lcyBub3QgZXhpc3Qgd2UgcmV0dXJuIGFub255bW91cyBmdW5jdGlvblxuICAgICAgcmVxLnJlbW90ZV91c2VyID0gY3JlYXRlQW5vbnltb3VzUmVtb3RlVXNlcigpO1xuXG4gICAgICBjb25zdCB7IGF1dGhvcml6YXRpb24gfSA9IHJlcS5oZWFkZXJzO1xuICAgICAgaWYgKF8uaXNOaWwoYXV0aG9yaXphdGlvbikpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0F1dGhIZWFkZXJWYWxpZChhdXRob3JpemF0aW9uKSkge1xuICAgICAgICBkZWJ1ZygnYXBpIG1pZGRsZXdhcmUgYXV0aCBoZWF0aGVyIGlzIG5vdCB2YWxpZCcpO1xuICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChBUElfRVJST1IuQkFEX0FVVEhfSEVBREVSKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNlY3VyaXR5OiBTZWN1cml0eSA9IGdldFNlY3VyaXR5KHRoaXMuY29uZmlnKTtcbiAgICAgIGNvbnN0IHsgc2VjcmV0IH0gPSB0aGlzLmNvbmZpZztcblxuICAgICAgaWYgKGlzQUVTTGVnYWN5KHNlY3VyaXR5KSkge1xuICAgICAgICBkZWJ1ZygnYXBpIG1pZGRsZXdhcmUgdXNpbmcgbGVnYWN5IGF1dGggdG9rZW4nKTtcbiAgICAgICAgdGhpcy5faGFuZGxlQUVTTWlkZGxld2FyZShyZXEsIHNlY3VyaXR5LCBzZWNyZXQsIGF1dGhvcml6YXRpb24sIG5leHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVidWcoJ2FwaSBtaWRkbGV3YXJlIHVzaW5nIEpXVCBhdXRoIHRva2VuJyk7XG4gICAgICAgIHRoaXMuX2hhbmRsZUpXVEFQSU1pZGRsZXdhcmUocmVxLCBzZWN1cml0eSwgc2VjcmV0LCBhdXRob3JpemF0aW9uLCBuZXh0KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlSldUQVBJTWlkZGxld2FyZShyZXE6ICRSZXF1ZXN0RXh0ZW5kLCBzZWN1cml0eTogU2VjdXJpdHksIHNlY3JldDogc3RyaW5nLCBhdXRob3JpemF0aW9uOiBzdHJpbmcsIG5leHQ6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgeyBzY2hlbWUsIHRva2VuIH0gPSBwYXJzZUF1dGhUb2tlbkhlYWRlcihhdXRob3JpemF0aW9uKTtcbiAgICBpZiAoc2NoZW1lLnRvVXBwZXJDYXNlKCkgPT09IFRPS0VOX0JBU0lDLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIC8vIHRoaXMgc2hvdWxkIGhhcHBlbiB3aGVuIGNsaWVudCB0cmllcyB0byBsb2dpbiB3aXRoIGFuIGV4aXN0aW5nIHVzZXJcbiAgICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gY29udmVydFBheWxvYWRUb0Jhc2U2NCh0b2tlbikudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IHsgdXNlciwgcGFzc3dvcmQgfSA9IHBhcnNlQmFzaWNQYXlsb2FkKGNyZWRlbnRpYWxzKSBhcyBBRVNQYXlsb2FkO1xuICAgICAgdGhpcy5hdXRoZW50aWNhdGUodXNlciwgcGFzc3dvcmQsIChlcnIsIHVzZXIpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKCFlcnIpIHtcbiAgICAgICAgICByZXEucmVtb3RlX3VzZXIgPSB1c2VyO1xuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXEucmVtb3RlX3VzZXIgPSBjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyKCk7XG4gICAgICAgICAgbmV4dChlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gand0IGhhbmRsZXJcbiAgICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBhbnkgPSBnZXRNaWRkbGV3YXJlQ3JlZGVudGlhbHMoc2VjdXJpdHksIHNlY3JldCwgYXV0aG9yaXphdGlvbik7XG4gICAgICBpZiAoY3JlZGVudGlhbHMpIHtcbiAgICAgICAgLy8gaWYgdGhlIHNpZ25hdHVyZSBpcyB2YWxpZCB3ZSByZWx5IG9uIGl0XG4gICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IGNyZWRlbnRpYWxzO1xuICAgICAgICBuZXh0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB3aXRoIEpXVCB0aHJvdyA0MDFcbiAgICAgICAgbmV4dChFcnJvckNvZGUuZ2V0Rm9yYmlkZGVuKEFQSV9FUlJPUi5CQURfVVNFUk5BTUVfUEFTU1dPUkQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVBRVNNaWRkbGV3YXJlKHJlcTogJFJlcXVlc3RFeHRlbmQsIHNlY3VyaXR5OiBTZWN1cml0eSwgc2VjcmV0OiBzdHJpbmcsIGF1dGhvcml6YXRpb246IHN0cmluZywgbmV4dDogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCBjcmVkZW50aWFsczogYW55ID0gZ2V0TWlkZGxld2FyZUNyZWRlbnRpYWxzKHNlY3VyaXR5LCBzZWNyZXQsIGF1dGhvcml6YXRpb24pO1xuICAgIGlmIChjcmVkZW50aWFscykge1xuICAgICAgY29uc3QgeyB1c2VyLCBwYXNzd29yZCB9ID0gY3JlZGVudGlhbHM7XG4gICAgICB0aGlzLmF1dGhlbnRpY2F0ZSh1c2VyLCBwYXNzd29yZCwgKGVyciwgdXNlcik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoIWVycikge1xuICAgICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IHVzZXI7XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IGNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIoKTtcbiAgICAgICAgICBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB3ZSBmb3JjZSBucG0gY2xpZW50IHRvIGFzayBhZ2FpbiB3aXRoIGJhc2ljIGF1dGhlbnRpY2F0aW9uXG4gICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChBUElfRVJST1IuQkFEX0FVVEhfSEVBREVSKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNSZW1vdGVVc2VyVmFsaWQocmVtb3RlX3VzZXI6IFJlbW90ZVVzZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gXy5pc1VuZGVmaW5lZChyZW1vdGVfdXNlcikgPT09IGZhbHNlICYmIF8uaXNVbmRlZmluZWQocmVtb3RlX3VzZXIubmFtZSkgPT09IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEpXVCBtaWRkbGV3YXJlIGZvciBXZWJVSVxuICAgKi9cbiAgcHVibGljIHdlYlVJSldUbWlkZGxld2FyZSgpOiBGdW5jdGlvbiB7XG4gICAgcmV0dXJuIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgX25leHQ6IE5leHRGdW5jdGlvbik6IHZvaWQgPT4ge1xuICAgICAgaWYgKHRoaXMuX2lzUmVtb3RlVXNlclZhbGlkKHJlcS5yZW1vdGVfdXNlcikpIHtcbiAgICAgICAgcmV0dXJuIF9uZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIHJlcS5wYXVzZSgpO1xuICAgICAgY29uc3QgbmV4dCA9IChlcnI6IFZlcmRhY2Npb0Vycm9yIHwgdm9pZCk6IHZvaWQgPT4ge1xuICAgICAgICByZXEucmVzdW1lKCk7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAvLyByZXEucmVtb3RlX3VzZXIuZXJyb3IgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICByZXMuc3RhdHVzKGVyci5zdGF0dXNDb2RlKS5zZW5kKGVyci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBfbmV4dCgpO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgeyBhdXRob3JpemF0aW9uIH0gPSByZXEuaGVhZGVycztcbiAgICAgIGlmIChfLmlzTmlsKGF1dGhvcml6YXRpb24pKSB7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNBdXRoSGVhZGVyVmFsaWQoYXV0aG9yaXphdGlvbikpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZFJlcXVlc3QoQVBJX0VSUk9SLkJBRF9BVVRIX0hFQURFUikpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0b2tlbiA9IChhdXRob3JpemF0aW9uIHx8ICcnKS5yZXBsYWNlKGAke1RPS0VOX0JFQVJFUn0gYCwgJycpO1xuICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgfVxuXG4gICAgICBsZXQgY3JlZGVudGlhbHM7XG4gICAgICB0cnkge1xuICAgICAgICBjcmVkZW50aWFscyA9IHZlcmlmeUpXVFBheWxvYWQodG9rZW4sIHRoaXMuY29uZmlnLnNlY3JldCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gRklYTUU6IGludGVuZGVkIGJlaGF2aW91ciwgZG8gd2Ugd2FudCBpdD9cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2lzUmVtb3RlVXNlclZhbGlkKGNyZWRlbnRpYWxzKSkge1xuICAgICAgICBjb25zdCB7IG5hbWUsIGdyb3VwcyB9ID0gY3JlZGVudGlhbHM7XG4gICAgICAgIC8vICRGbG93Rml4TWVcbiAgICAgICAgcmVxLnJlbW90ZV91c2VyID0gY3JlYXRlUmVtb3RlVXNlcihuYW1lLCBncm91cHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVxLnJlbW90ZV91c2VyID0gY3JlYXRlQW5vbnltb3VzUmVtb3RlVXNlcigpO1xuICAgICAgfVxuXG4gICAgICBuZXh0KCk7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBqd3RFbmNyeXB0KHVzZXI6IFJlbW90ZVVzZXIsIHNpZ25PcHRpb25zOiBKV1RTaWduT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgeyByZWFsX2dyb3VwcywgbmFtZSwgZ3JvdXBzIH0gPSB1c2VyO1xuICAgIGNvbnN0IHJlYWxHcm91cHNWYWxpZGF0ZWQgPSBfLmlzTmlsKHJlYWxfZ3JvdXBzKSA/IFtdIDogcmVhbF9ncm91cHM7XG4gICAgY29uc3QgZ3JvdXBlZEdyb3VwcyA9IF8uaXNOaWwoZ3JvdXBzKSA/IHJlYWxfZ3JvdXBzIDogZ3JvdXBzLmNvbmNhdChyZWFsR3JvdXBzVmFsaWRhdGVkKTtcbiAgICBjb25zdCBwYXlsb2FkOiBSZW1vdGVVc2VyID0ge1xuICAgICAgcmVhbF9ncm91cHM6IHJlYWxHcm91cHNWYWxpZGF0ZWQsXG4gICAgICBuYW1lLFxuICAgICAgZ3JvdXBzOiBncm91cGVkR3JvdXBzLFxuICAgIH07XG5cbiAgICBjb25zdCB0b2tlbjogc3RyaW5nID0gYXdhaXQgc2lnblBheWxvYWQocGF5bG9hZCwgdGhpcy5zZWNyZXQsIHNpZ25PcHRpb25zKTtcblxuICAgIHJldHVybiB0b2tlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNyeXB0IGEgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIGFlc0VuY3J5cHQoYnVmOiBCdWZmZXIpOiBCdWZmZXIge1xuICAgIHJldHVybiBhZXNFbmNyeXB0KGJ1ZiwgdGhpcy5zZWNyZXQpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEF1dGg7XG4iXX0=
541
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXV0aC50cyJdLCJuYW1lcyI6WyJkZWJ1ZyIsIkF1dGgiLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsImxvZ2dlciIsInNlY3JldCIsInBsdWdpbnMiLCJfbG9hZFBsdWdpbiIsIl9hcHBseURlZmF1bHRQbHVnaW5zIiwicGx1Z2luT3B0aW9ucyIsImF1dGgiLCJwbHVnaW4iLCJhdXRoZW50aWNhdGUiLCJhbGxvd19hY2Nlc3MiLCJhbGxvd19wdWJsaXNoIiwicHVzaCIsImNoYW5nZVBhc3N3b3JkIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsIm5ld1Bhc3N3b3JkIiwiY2IiLCJ2YWxpZFBsdWdpbnMiLCJfIiwiZmlsdGVyIiwiaXNGdW5jdGlvbiIsImlzRW1wdHkiLCJFcnJvckNvZGUiLCJnZXRJbnRlcm5hbEVycm9yIiwiU1VQUE9SVF9FUlJPUlMiLCJQTFVHSU5fTUlTU0lOR19JTlRFUkZBQ0UiLCJpc05pbCIsImVyciIsInByb2ZpbGUiLCJlcnJvciIsImluZm8iLCJzbGljZSIsInNlbGYiLCJuZXh0Iiwic2hpZnQiLCJncm91cHMiLCJsZW5ndGgiLCJpc1N0cmluZyIsIlR5cGVFcnJvciIsImlzR3JvdXBWYWxpZCIsImlzQXJyYXkiLCJBUElfRVJST1IiLCJCQURfRk9STUFUX1VTRVJfR1JPVVAiLCJhZGRfdXNlciIsInVzZXIiLCJtZXRob2QiLCJ3YXJuIiwib2siLCJtZXNzYWdlIiwicGFja2FnZU5hbWUiLCJwYWNrYWdlVmVyc2lvbiIsImNhbGxiYWNrIiwicGtnQWxsb3dBY2NlcyIsIm5hbWUiLCJ2ZXJzaW9uIiwicGtnIiwiT2JqZWN0IiwiYXNzaWduIiwicGFja2FnZXMiLCJhbGxvd191bnB1Ymxpc2giLCJhcmd1bWVudHMiLCJpc0Vycm9yIiwiYXBpSldUbWlkZGxld2FyZSIsImhlbHBlcnMiLCJjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyIiwiY3JlYXRlUmVtb3RlVXNlciIsInJlcSIsInJlcyIsIl9uZXh0IiwicGF1c2UiLCJyZXN1bWUiLCJyZW1vdGVfdXNlciIsIl9pc1JlbW90ZVVzZXJWYWxpZCIsImF1dGhvcml6YXRpb24iLCJoZWFkZXJzIiwiZ2V0QmFkUmVxdWVzdCIsIkJBRF9BVVRIX0hFQURFUiIsInNlY3VyaXR5IiwiX2hhbmRsZUFFU01pZGRsZXdhcmUiLCJfaGFuZGxlSldUQVBJTWlkZGxld2FyZSIsInNjaGVtZSIsInRva2VuIiwidG9VcHBlckNhc2UiLCJUT0tFTl9CQVNJQyIsImNyZWRlbnRpYWxzIiwidG9TdHJpbmciLCJnZXRGb3JiaWRkZW4iLCJCQURfVVNFUk5BTUVfUEFTU1dPUkQiLCJpc1VuZGVmaW5lZCIsIndlYlVJSldUbWlkZGxld2FyZSIsInN0YXR1cyIsInN0YXR1c0NvZGUiLCJzZW5kIiwicmVwbGFjZSIsIlRPS0VOX0JFQVJFUiIsImp3dEVuY3J5cHQiLCJzaWduT3B0aW9ucyIsInJlYWxfZ3JvdXBzIiwicmVhbEdyb3Vwc1ZhbGlkYXRlZCIsImdyb3VwZWRHcm91cHMiLCJjb25jYXQiLCJwYXlsb2FkIiwiYWVzRW5jcnlwdCIsImJ1ZiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBOztBQU1BOztBQUNBOztBQVlBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRUEsTUFBTUEsS0FBSyxHQUFHLG9CQUFXLGdCQUFYLENBQWQ7O0FBRUEsTUFBTUMsSUFBTixDQUE0QjtBQUdIO0FBR2hCQyxFQUFBQSxXQUFXLENBQUNDLE1BQUQsRUFBaUI7QUFDakMsU0FBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0EsU0FBS0MsTUFBTCxHQUFjQSxjQUFkO0FBQ0EsU0FBS0MsTUFBTCxHQUFjRixNQUFNLENBQUNFLE1BQXJCO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLEtBQUtDLFdBQUwsQ0FBaUJKLE1BQWpCLENBQWY7O0FBQ0EsU0FBS0ssb0JBQUw7QUFDRDs7QUFFT0QsRUFBQUEsV0FBVyxDQUFDSixNQUFELEVBQXdDO0FBQ3pELFVBQU1NLGFBQWEsR0FBRztBQUNwQk4sTUFBQUEsTUFE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OUNEO0FBK0NEOztBQUVzQixRQUFWOEQsVUFBVSxDQUFDbkQsSUFBRCxFQUFtQm9ELFdBQW5CLEVBQWlFO0FBQ3RGLFVBQU07QUFBRUMsTUFBQUEsV0FBRjtBQUFlNUMsTUFBQUEsSUFBZjtBQUFxQmxCLE1BQUFBO0FBQXJCLFFBQWdDUyxJQUF0QztBQUNBLFVBQU1zRCxtQkFBbUIsR0FBR2hGLGdCQUFFUSxLQUFGLENBQVF1RSxXQUFSLElBQXVCLEVBQXZCLEdBQTRCQSxXQUF4RDtBQUNBLFVBQU1FLGFBQWEsR0FBR2pGLGdCQUFFUSxLQUFGLENBQVFTLE1BQVIsSUFBa0I4RCxXQUFsQixHQUFnQzlELE1BQU0sQ0FBQ2lFLE1BQVAsQ0FBY0YsbUJBQWQsQ0FBdEQ7QUFDQSxVQUFNRyxPQUFtQixHQUFHO0FBQzFCSixNQUFBQSxXQUFXLEVBQUVDLG1CQURhO0FBRTFCN0MsTUFBQUEsSUFGMEI7QUFHMUJsQixNQUFBQSxNQUFNLEVBQUVnRTtBQUhrQixLQUE1QjtBQU1BLFVBQU1sQixLQUFhLEdBQUcsTUFBTSw4QkFBWW9CLE9BQVosRUFBcUIsS0FBS3BHLE1BQTFCLEVBQWtDK0YsV0FBbEMsQ0FBNUI7QUFFQSxXQUFPZixLQUFQO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7OztBQUNTcUIsRUFBQUEsVUFBVSxDQUFDQyxHQUFELEVBQXNCO0FBQ3JDLFdBQU8sNkJBQVdBLEdBQVgsRUFBZ0IsS0FBS3RHLE1BQXJCLENBQVA7QUFDRDs7QUExWnlCOztlQTZaYkosSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IE5leHRGdW5jdGlvbiB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgVmVyZGFjY2lvRXJyb3IgfSBmcm9tICdAdmVyZGFjY2lvL2NvbW1vbnMtYXBpJztcbmltcG9ydCB7IEFsbG93QWNjZXNzLCBBdXRoUGx1Z2luUGFja2FnZSwgQ2FsbGJhY2ssIENvbmZpZywgSVBsdWdpbkF1dGgsIEpXVFNpZ25PcHRpb25zLCBMb2dnZXIsIFBhY2thZ2VBY2Nlc3MsIFJlbW90ZVVzZXIsIFNlY3VyaXR5IH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCB7ICRSZXF1ZXN0RXh0ZW5kLCAkUmVzcG9uc2VFeHRlbmQsIEFFU1BheWxvYWQsIElBdXRoIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IGxvYWRQbHVnaW4gZnJvbSAnLi4vbGliL3BsdWdpbi1sb2FkZXInO1xuaW1wb3J0IHtcbiAgY3JlYXRlQW5vbnltb3VzUmVtb3RlVXNlcixcbiAgY3JlYXRlUmVtb3RlVXNlcixcbiAgZ2V0RGVmYXVsdFBsdWdpbnMsXG4gIGdldE1pZGRsZXdhcmVDcmVkZW50aWFscyxcbiAgZ2V0U2VjdXJpdHksXG4gIGlzQUVTTGVnYWN5LFxuICBpc0F1dGhIZWFkZXJWYWxpZCxcbiAgcGFyc2VBdXRoVG9rZW5IZWFkZXIsXG4gIHBhcnNlQmFzaWNQYXlsb2FkLFxuICB2ZXJpZnlKV1RQYXlsb2FkLFxufSBmcm9tICcuL2F1dGgtdXRpbHMnO1xuaW1wb3J0IHsgZ2V0TWF0Y2hlZFBhY2thZ2VzU3BlYyB9IGZyb20gJy4vY29uZmlnLXV0aWxzJztcbmltcG9ydCB7IEFQSV9FUlJPUiwgU1VQUE9SVF9FUlJPUlMsIFRPS0VOX0JBU0lDLCBUT0tFTl9CRUFSRVIgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBhZXNFbmNyeXB0LCBzaWduUGF5bG9hZCB9IGZyb20gJy4vY3J5cHRvLXV0aWxzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IEVycm9yQ29kZSwgY29udmVydFBheWxvYWRUb0Jhc2U2NCB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbzphdXRoJyk7XG5cbmNsYXNzIEF1dGggaW1wbGVtZW50cyBJQXV0aCB7XG4gIHB1YmxpYyBjb25maWc6IENvbmZpZztcbiAgcHVibGljIGxvZ2dlcjogTG9nZ2VyO1xuICBwdWJsaWMgc2VjcmV0OiBzdHJpbmc7IC8vIHByYWdtYTogYWxsb3dsaXN0IHNlY3JldFxuICBwdWJsaWMgcGx1Z2luczogSVBsdWdpbkF1dGg8Q29uZmlnPltdO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb25maWc6IENvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIHRoaXMuc2VjcmV0ID0gY29uZmlnLnNlY3JldDtcbiAgICB0aGlzLnBsdWdpbnMgPSB0aGlzLl9sb2FkUGx1Z2luKGNvbmZpZyk7XG4gICAgdGhpcy5fYXBwbHlEZWZhdWx0UGx1Z2lucygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9hZFBsdWdpbihjb25maWc6IENvbmZpZyk6IElQbHVnaW5BdXRoPENvbmZpZz5bXSB7XG4gICAgY29uc3QgcGx1Z2luT3B0aW9ucyA9IHtcbiAgICAgIGNvbmZpZyxcbiAgICAgIGxvZ2dlcjogdGhpcy5sb2dnZXIsXG4gICAgfTtcblxuICAgIHJldHVybiBsb2FkUGx1Z2luPElQbHVnaW5BdXRoPENvbmZpZz4+KGNvbmZpZywgY29uZmlnLmF1dGgsIHBsdWdpbk9wdGlvbnMsIChwbHVnaW46IElQbHVnaW5BdXRoPENvbmZpZz4pOiBib29sZWFuID0+IHtcbiAgICAgIGNvbnN0IHsgYXV0aGVudGljYXRlLCBhbGxvd19hY2Nlc3MsIGFsbG93X3B1Ymxpc2ggfSA9IHBsdWdpbjtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBhdXRoZW50aWNhdGUgfHwgYWxsb3dfYWNjZXNzIHx8IGFsbG93X3B1Ymxpc2g7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseURlZmF1bHRQbHVnaW5zKCk6IHZvaWQge1xuICAgIHRoaXMucGx1Z2lucy5wdXNoKGdldERlZmF1bHRQbHVnaW5zKHRoaXMubG9nZ2VyKSk7XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlUGFzc3dvcmQoXG4gICAgdXNlcm5hbWU6IHN0cmluZyxcbiAgICBwYXNzd29yZDogc3RyaW5nLCAvLyBwcmFnbWE6IGFsbG93bGlzdCBzZWNyZXRcbiAgICBuZXdQYXNzd29yZDogc3RyaW5nLCAvLyBwcmFnbWE6IGFsbG93bGlzdCBzZWNyZXRcbiAgICBjYjogQ2FsbGJhY2tcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgdmFsaWRQbHVnaW5zID0gXy5maWx0ZXIodGhpcy5wbHVnaW5zLCAocGx1Z2luKSA9PiBfLmlzRnVuY3Rpb24ocGx1Z2luLmNoYW5nZVBhc3N3b3JkKSk7XG5cbiAgICBpZiAoXy5pc0VtcHR5KHZhbGlkUGx1Z2lucykpIHtcbiAgICAgIHJldHVybiBjYihFcnJvckNvZGUuZ2V0SW50ZXJuYWxFcnJvcihTVVBQT1JUX0VSUk9SUy5QTFVHSU5fTUlTU0lOR19JTlRFUkZBQ0UpKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHBsdWdpbiBvZiB2YWxpZFBsdWdpbnMpIHtcbiAgICAgIGlmIChfLmlzTmlsKHBsdWdpbikgfHwgXy5pc0Z1bmN0aW9uKHBsdWdpbi5jaGFuZ2VQYXNzd29yZCkgPT09IGZhbHNlKSB7XG4gICAgICAgIGRlYnVnKCdhdXRoIHBsdWdpbiBkb2VzIG5vdCBpbXBsZW1lbnQgY2hhbmdlUGFzc3dvcmQsIHRyeWluZyBuZXh0IG9uZScpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlYnVnKCd1cGRhdGluZyBwYXNzd29yZCBmb3IgJW8nLCB1c2VybmFtZSk7XG4gICAgICAgIHBsdWdpbi5jaGFuZ2VQYXNzd29yZCEodXNlcm5hbWUsIHBhc3N3b3JkLCBuZXdQYXNzd29yZCwgKGVyciwgcHJvZmlsZSk6IHZvaWQgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICB7IHVzZXJuYW1lLCBlcnIgfSxcbiAgICAgICAgICAgICAgYEFuIGVycm9yIGhhcyBiZWVuIHByb2R1Y2VkXG4gICAgICAgICAgICB1cGRhdGluZyB0aGUgcGFzc3dvcmQgZm9yIEB7dXNlcm5hbWV9LiBFcnJvcjogQHtlcnIubWVzc2FnZX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oeyB1c2VybmFtZSB9LCAndXBkYXRlZCBwYXNzd29yZCBmb3IgQHt1c2VybmFtZX0gd2FzIHN1Y2Nlc3NmdWwnKTtcbiAgICAgICAgICByZXR1cm4gY2IobnVsbCwgcHJvZmlsZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhdXRoZW50aWNhdGUodXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgY29uc3QgcGx1Z2lucyA9IHRoaXMucGx1Z2lucy5zbGljZSgwKTtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAoZnVuY3Rpb24gbmV4dCgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHBsdWdpbiA9IHBsdWdpbnMuc2hpZnQoKSBhcyBJUGx1Z2luQXV0aDxDb25maWc+O1xuICAgICAgaWYgKF8uaXNGdW5jdGlvbihwbHVnaW4uYXV0aGVudGljYXRlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cbiAgICAgIGRlYnVnKCdhdXRoZW50aWNhdGluZyAlbycsIHVzZXJuYW1lKTtcbiAgICAgIHBsdWdpbi5hdXRoZW50aWNhdGUodXNlcm5hbWUsIHBhc3N3b3JkLCBmdW5jdGlvbiAoZXJyLCBncm91cHMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKHsgdXNlcm5hbWUsIGVyciB9LCAnYXV0aGVudGljYXRpbmcgZm9yIHVzZXIgQHt1c2VybmFtZX0gZmFpbGVkLiBFcnJvcjogQHtlcnIubWVzc2FnZX0nKTtcbiAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEV4cGVjdDogU0tJUCBpZiBncm91cHMgaXMgZmFsc2V5IGFuZCBub3QgYW4gYXJyYXlcbiAgICAgICAgLy8gICAgICAgICB3aXRoIGF0IGxlYXN0IG9uZSBpdGVtICh0cnV0aHkgbGVuZ3RoKVxuICAgICAgICAvLyBFeHBlY3Q6IENPTlRJTlVFIG90aGVyd2lzZSAod2lsbCBlcnJvciBpZiBncm91cHMgaXMgbm90XG4gICAgICAgIC8vICAgICAgICAgYW4gYXJyYXksIGJ1dCB0aGlzIGlzIGN1cnJlbnQgYmVoYXZpb3IpXG4gICAgICAgIC8vIENhdmVhdDogU1RSSU5HIChpZiB2YWxpZCkgd2lsbCBwYXNzIHN1Y2Nlc3NmdWxseVxuICAgICAgICAvLyAgICAgICAgIGJ1ZyBnaXZlIHVuZXhwZWN0ZWQgcmVzdWx0c1xuICAgICAgICAvLyBJbmZvOiBDYW5ub3QgdXNlIGA9PSBmYWxzZSB0byBjaGVjayBmYWxzZXkgdmFsdWVzYFxuICAgICAgICBpZiAoISFncm91cHMgJiYgZ3JvdXBzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgIC8vIFRPRE86IGNyZWF0ZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGV4cGVjdGF0aW9uc1xuICAgICAgICAgIGlmIChfLmlzU3RyaW5nKGdyb3VwcykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3BsdWdpbiBncm91cCBlcnJvcjogaW52YWxpZCB0eXBlIGZvciBmdW5jdGlvbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpc0dyb3VwVmFsaWQ6IGJvb2xlYW4gPSBfLmlzQXJyYXkoZ3JvdXBzKTtcbiAgICAgICAgICBpZiAoIWlzR3JvdXBWYWxpZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihBUElfRVJST1IuQkFEX0ZPUk1BVF9VU0VSX0dST1VQKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVidWcoJ2F1dGhlbnRpY2F0aW9uIGZvciB1c2VyICVvIHdhcyBzdWNjZXNzZnVsbHkuIEdyb3VwczogJW8nLCB1c2VybmFtZSwgZ3JvdXBzKTtcbiAgICAgICAgICByZXR1cm4gY2IoZXJyLCBjcmVhdGVSZW1vdGVVc2VyKHVzZXJuYW1lLCBncm91cHMpKTtcbiAgICAgICAgfVxuICAgICAgICBuZXh0KCk7XG4gICAgICB9KTtcbiAgICB9KSgpO1xuICB9XG5cbiAgcHVibGljIGFkZF91c2VyKHVzZXI6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgcGx1Z2lucyA9IHRoaXMucGx1Z2lucy5zbGljZSgwKTtcbiAgICBkZWJ1ZygnYWRkIHVzZXIgJW8nLCB1c2VyKTtcbiAgICAoZnVuY3Rpb24gbmV4dCgpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHBsdWdpbiA9IHBsdWdpbnMuc2hpZnQoKSBhcyBJUGx1Z2luQXV0aDxDb25maWc+O1xuICAgICAgbGV0IG1ldGhvZCA9ICdhZGR1c2VyJztcbiAgICAgIGlmIChfLmlzRnVuY3Rpb24ocGx1Z2luW21ldGhvZF0pID09PSBmYWxzZSkge1xuICAgICAgICBtZXRob2QgPSAnYWRkX3VzZXInO1xuICAgICAgICBzZWxmLmxvZ2dlci53YXJuKCd0aGUgcGx1Z2luIG1ldGhvZCBhZGRfdXNlciBpbiB0aGUgYXV0aCBwbHVnaW4gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIG5leHQgbWFqb3IgcmVsZWFzZSwgbm90aWZ5IHRvIHRoZSBwbHVnaW4gYXV0aG9yJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChfLmlzRnVuY3Rpb24ocGx1Z2luW21ldGhvZF0pID09PSBmYWxzZSkge1xuICAgICAgICBuZXh0KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBwLmFkZF91c2VyKCkgZXhlY3V0aW9uXG4gICAgICAgIHBsdWdpblttZXRob2RdKHVzZXIsIHBhc3N3b3JkLCBmdW5jdGlvbiAoZXJyLCBvayk6IHZvaWQge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKHsgdXNlciwgZXJyOiBlcnIubWVzc2FnZSB9LCAndGhlIHVzZXIgQHt1c2VyfSBjb3VsZCBub3QgYmVpbmcgYWRkZWQuIEVycm9yOiBAe2Vycn0nKTtcbiAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob2spIHtcbiAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oeyB1c2VyIH0sICd0aGUgdXNlciBAe3VzZXJ9IGhhcyBiZWVuIGFkZGVkJyk7XG4gICAgICAgICAgICByZXR1cm4gc2VsZi5hdXRoZW50aWNhdGUodXNlciwgcGFzc3dvcmQsIGNiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93IHVzZXIgdG8gYWNjZXNzIGEgcGFja2FnZS5cbiAgICovXG4gIHB1YmxpYyBhbGxvd19hY2Nlc3MoeyBwYWNrYWdlTmFtZSwgcGFja2FnZVZlcnNpb24gfTogQXV0aFBsdWdpblBhY2thZ2UsIHVzZXI6IFJlbW90ZVVzZXIsIGNhbGxiYWNrOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLnBsdWdpbnMuc2xpY2UoMCk7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgcGtnQWxsb3dBY2NlczogQWxsb3dBY2Nlc3MgPSB7IG5hbWU6IHBhY2thZ2VOYW1lLCB2ZXJzaW9uOiBwYWNrYWdlVmVyc2lvbiB9O1xuICAgIGNvbnN0IHBrZyA9IE9iamVjdC5hc3NpZ24oe30sIHBrZ0FsbG93QWNjZXMsIGdldE1hdGNoZWRQYWNrYWdlc1NwZWMocGFja2FnZU5hbWUsIHRoaXMuY29uZmlnLnBhY2thZ2VzKSkgYXMgQWxsb3dBY2Nlc3MgJiBQYWNrYWdlQWNjZXNzO1xuICAgIGRlYnVnKCdhbGxvdyBhY2Nlc3MgZm9yICVvJywgcGFja2FnZU5hbWUpO1xuXG4gICAgKGZ1bmN0aW9uIG5leHQoKTogdm9pZCB7XG4gICAgICBjb25zdCBwbHVnaW46IElQbHVnaW5BdXRoPENvbmZpZz4gPSBwbHVnaW5zLnNoaWZ0KCkgYXMgSVBsdWdpbkF1dGg8Q29uZmlnPjtcblxuICAgICAgaWYgKF8uaXNOaWwocGx1Z2luKSB8fCBfLmlzRnVuY3Rpb24ocGx1Z2luLmFsbG93X2FjY2VzcykgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIHBsdWdpbi5hbGxvd19hY2Nlc3MhKHVzZXIsIHBrZywgZnVuY3Rpb24gKGVyciwgb2s6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKHsgcGFja2FnZU5hbWUsIGVyciB9LCAnZm9yYmlkZGVuIGFjY2VzcyBmb3IgQHtwYWNrYWdlTmFtZX0uIEVycm9yOiBAe2Vyci5tZXNzYWdlfScpO1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9rKSB7XG4gICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbyh7IHBhY2thZ2VOYW1lIH0sICdhbGxvd2VkIGFjY2VzcyBmb3IgQHtwYWNrYWdlTmFtZX0nKTtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgb2spO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV4dCgpOyAvLyBjYihudWxsLCBmYWxzZSkgY2F1c2VzIG5leHQgcGx1Z2luIHRvIHJvbGxcbiAgICAgIH0pO1xuICAgIH0pKCk7XG4gIH1cblxuICBwdWJsaWMgYWxsb3dfdW5wdWJsaXNoKHsgcGFja2FnZU5hbWUsIHBhY2thZ2VWZXJzaW9uIH06IEF1dGhQbHVnaW5QYWNrYWdlLCB1c2VyOiBSZW1vdGVVc2VyLCBjYWxsYmFjazogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBjb25zdCBwa2cgPSBPYmplY3QuYXNzaWduKHsgbmFtZTogcGFja2FnZU5hbWUsIHZlcnNpb246IHBhY2thZ2VWZXJzaW9uIH0sIGdldE1hdGNoZWRQYWNrYWdlc1NwZWMocGFja2FnZU5hbWUsIHRoaXMuY29uZmlnLnBhY2thZ2VzKSk7XG4gICAgZGVidWcoJ2FsbG93IHVucHVibGlzaCBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgZm9yIChjb25zdCBwbHVnaW4gb2YgdGhpcy5wbHVnaW5zKSB7XG4gICAgICBpZiAoXy5pc05pbChwbHVnaW4pIHx8IF8uaXNGdW5jdGlvbihwbHVnaW4uYWxsb3dfdW5wdWJsaXNoKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgZGVidWcoJ2FsbG93IHVucHVibGlzaCBmb3IgJW8gcGx1Z2luIGRvZXMgbm90IGltcGxlbWVudCBhbGxvd191bnB1Ymxpc2gnLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGx1Z2luLmFsbG93X3VucHVibGlzaCEodXNlciwgcGtnLCAoZXJyLCBvazogYm9vbGVhbik6IHZvaWQgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKHsgcGFja2FnZU5hbWUsIHVzZXI6IHVzZXI/Lm5hbWUgfSwgJ0B7dXNlcn0gZm9yYmlkZGVuIHB1Ymxpc2ggZm9yIEB7cGFja2FnZU5hbWV9LCBpdCB3aWxsIGZhbGxiYWNrIG9uIHVucHVibGlzaCBwZXJtaXNzaW9ucycpO1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKF8uaXNOaWwob2spID09PSB0cnVlKSB7XG4gICAgICAgICAgICBkZWJ1Zygnd2UgYnlwYXNzIHVucHVibGlzaCBmb3IgJW8sIHB1Ymxpc2ggd2lsbCBoYW5kbGUgdGhlIGFjY2VzcycsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWxsb3dfcHVibGlzaCguLi5hcmd1bWVudHMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChvaykge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyh7IHBhY2thZ2VOYW1lLCB1c2VyOiB1c2VyPy5uYW1lIH0sICdAe3VzZXJ9IGFsbG93ZWQgdW5wdWJsaXNoIGZvciBAe3BhY2thZ2VOYW1lfScpO1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIG9rKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvdyB1c2VyIHRvIHB1Ymxpc2ggYSBwYWNrYWdlLlxuICAgKi9cbiAgcHVibGljIGFsbG93X3B1Ymxpc2goeyBwYWNrYWdlTmFtZSwgcGFja2FnZVZlcnNpb24gfTogQXV0aFBsdWdpblBhY2thZ2UsIHVzZXI6IFJlbW90ZVVzZXIsIGNhbGxiYWNrOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLnBsdWdpbnMuc2xpY2UoMCk7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgcGtnID0gT2JqZWN0LmFzc2lnbih7IG5hbWU6IHBhY2thZ2VOYW1lLCB2ZXJzaW9uOiBwYWNrYWdlVmVyc2lvbiB9LCBnZXRNYXRjaGVkUGFja2FnZXNTcGVjKHBhY2thZ2VOYW1lLCB0aGlzLmNvbmZpZy5wYWNrYWdlcykpO1xuICAgIGRlYnVnKCdhbGxvdyBwdWJsaXNoIGZvciAlbyBpbml0IHwgcGx1Z2luczogJW8nLCBwYWNrYWdlTmFtZSwgcGx1Z2lucyk7XG4gICAgKGZ1bmN0aW9uIG5leHQoKTogdm9pZCB7XG4gICAgICBjb25zdCBwbHVnaW4gPSBwbHVnaW5zLnNoaWZ0KCk7XG5cbiAgICAgIGlmIChfLmlzTmlsKHBsdWdpbikgfHwgXy5pc0Z1bmN0aW9uKHBsdWdpbi5hbGxvd19wdWJsaXNoKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgZGVidWcoJ2FsbG93IHB1Ymxpc2ggZm9yICVvIHBsdWdpbiBkb2VzIG5vdCBpbXBsZW1lbnQgYWxsb3dfcHVibGlzaCcsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcGx1Z2luLmFsbG93X3B1Ymxpc2godXNlciwgcGtnLCAoZXJyOiBWZXJkYWNjaW9FcnJvciwgb2s6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKF8uaXNOaWwoZXJyKSA9PT0gZmFsc2UgJiYgXy5pc0Vycm9yKGVycikpIHtcbiAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih7IHBhY2thZ2VOYW1lLCB1c2VyOiB1c2VyPy5uYW1lIH0sICdAe3VzZXJ9IGlzIGZvcmJpZGRlbiBwdWJsaXNoIGZvciBAe3BhY2thZ2VOYW1lfScpO1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9rKSB7XG4gICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbyh7IHBhY2thZ2VOYW1lLCB1c2VyOiB1c2VyPy5uYW1lIH0sICdAe3VzZXJ9IGlzIGFsbG93ZWQgcHVibGlzaCBmb3IgQHtwYWNrYWdlTmFtZX0nKTtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgb2spO1xuICAgICAgICB9XG4gICAgICAgIGRlYnVnKCdhbGxvdyBwdWJsaXNoIHNraXAgdmFsaWRhdGlvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIG5leHQoKTsgLy8gY2IobnVsbCwgZmFsc2UpIGNhdXNlcyBuZXh0IHBsdWdpbiB0byByb2xsXG4gICAgICB9KTtcbiAgICB9KSgpO1xuICB9XG5cbiAgcHVibGljIGFwaUpXVG1pZGRsZXdhcmUoKTogRnVuY3Rpb24ge1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLnBsdWdpbnMuc2xpY2UoMCk7XG4gICAgY29uc3QgaGVscGVycyA9IHsgY3JlYXRlQW5vbnltb3VzUmVtb3RlVXNlciwgY3JlYXRlUmVtb3RlVXNlciB9O1xuICAgIGZvciAoY29uc3QgcGx1Z2luIG9mIHBsdWdpbnMpIHtcbiAgICAgIGlmIChwbHVnaW4uYXBpSldUbWlkZGxld2FyZSkge1xuICAgICAgICByZXR1cm4gcGx1Z2luLmFwaUpXVG1pZGRsZXdhcmUoaGVscGVycyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgX25leHQ6IE5leHRGdW5jdGlvbik6IHZvaWQgPT4ge1xuICAgICAgcmVxLnBhdXNlKCk7XG5cbiAgICAgIGNvbnN0IG5leHQgPSBmdW5jdGlvbiAoZXJyOiBWZXJkYWNjaW9FcnJvciB8IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgcmVxLnJlc3VtZSgpO1xuICAgICAgICAvLyB1bmNvbW1lbnQgdGhpcyB0byByZWplY3QgdXNlcnMgd2l0aCBiYWQgYXV0aCBoZWFkZXJzXG4gICAgICAgIC8vIHJldHVybiBfbmV4dC5hcHBseShudWxsLCBhcmd1bWVudHMpXG4gICAgICAgIC8vIHN3YWxsb3cgZXJyb3IsIHVzZXIgcmVtYWlucyB1bmF1dGhvcml6ZWRcbiAgICAgICAgLy8gc2V0IHJlbW90ZVVzZXJFcnJvciB0byBpbmRpY2F0ZSB0aGF0IHVzZXIgd2FzIGF0dGVtcHRpbmcgYXV0aGVudGljYXRpb25cbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJlcS5yZW1vdGVfdXNlci5lcnJvciA9IGVyci5tZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfbmV4dCgpO1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuX2lzUmVtb3RlVXNlclZhbGlkKHJlcS5yZW1vdGVfdXNlcikpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gaW4gY2FzZSBhdXRoIGhlYWRlciBkb2VzIG5vdCBleGlzdCB3ZSByZXR1cm4gYW5vbnltb3VzIGZ1bmN0aW9uXG4gICAgICByZXEucmVtb3RlX3VzZXIgPSBjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyKCk7XG5cbiAgICAgIGNvbnN0IHsgYXV0aG9yaXphdGlvbiB9ID0gcmVxLmhlYWRlcnM7XG4gICAgICBpZiAoXy5pc05pbChhdXRob3JpemF0aW9uKSkge1xuICAgICAgICByZXR1cm4gbmV4dCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzQXV0aEhlYWRlclZhbGlkKGF1dGhvcml6YXRpb24pKSB7XG4gICAgICAgIGRlYnVnKCdhcGkgbWlkZGxld2FyZSBhdXRoIGhlYXRoZXIgaXMgbm90IHZhbGlkJyk7XG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRCYWRSZXF1ZXN0KEFQSV9FUlJPUi5CQURfQVVUSF9IRUFERVIpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2VjdXJpdHk6IFNlY3VyaXR5ID0gZ2V0U2VjdXJpdHkodGhpcy5jb25maWcpO1xuICAgICAgY29uc3QgeyBzZWNyZXQgfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgICBpZiAoaXNBRVNMZWdhY3koc2VjdXJpdHkpKSB7XG4gICAgICAgIGRlYnVnKCdhcGkgbWlkZGxld2FyZSB1c2luZyBsZWdhY3kgYXV0aCB0b2tlbicpO1xuICAgICAgICB0aGlzLl9oYW5kbGVBRVNNaWRkbGV3YXJlKHJlcSwgc2VjdXJpdHksIHNlY3JldCwgYXV0aG9yaXphdGlvbiwgbmV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWJ1ZygnYXBpIG1pZGRsZXdhcmUgdXNpbmcgSldUIGF1dGggdG9rZW4nKTtcbiAgICAgICAgdGhpcy5faGFuZGxlSldUQVBJTWlkZGxld2FyZShyZXEsIHNlY3VyaXR5LCBzZWNyZXQsIGF1dGhvcml6YXRpb24sIG5leHQpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVKV1RBUElNaWRkbGV3YXJlKHJlcTogJFJlcXVlc3RFeHRlbmQsIHNlY3VyaXR5OiBTZWN1cml0eSwgc2VjcmV0OiBzdHJpbmcsIGF1dGhvcml6YXRpb246IHN0cmluZywgbmV4dDogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCB7IHNjaGVtZSwgdG9rZW4gfSA9IHBhcnNlQXV0aFRva2VuSGVhZGVyKGF1dGhvcml6YXRpb24pO1xuICAgIGlmIChzY2hlbWUudG9VcHBlckNhc2UoKSA9PT0gVE9LRU5fQkFTSUMudG9VcHBlckNhc2UoKSkge1xuICAgICAgLy8gdGhpcyBzaG91bGQgaGFwcGVuIHdoZW4gY2xpZW50IHRyaWVzIHRvIGxvZ2luIHdpdGggYW4gZXhpc3RpbmcgdXNlclxuICAgICAgY29uc3QgY3JlZGVudGlhbHMgPSBjb252ZXJ0UGF5bG9hZFRvQmFzZTY0KHRva2VuKS50b1N0cmluZygpO1xuICAgICAgY29uc3QgeyB1c2VyLCBwYXNzd29yZCB9ID0gcGFyc2VCYXNpY1BheWxvYWQoY3JlZGVudGlhbHMpIGFzIEFFU1BheWxvYWQ7XG4gICAgICB0aGlzLmF1dGhlbnRpY2F0ZSh1c2VyLCBwYXNzd29yZCwgKGVyciwgdXNlcik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoIWVycikge1xuICAgICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IHVzZXI7XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IGNyZWF0ZUFub255bW91c1JlbW90ZVVzZXIoKTtcbiAgICAgICAgICBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBqd3QgaGFuZGxlclxuICAgICAgY29uc3QgY3JlZGVudGlhbHM6IGFueSA9IGdldE1pZGRsZXdhcmVDcmVkZW50aWFscyhzZWN1cml0eSwgc2VjcmV0LCBhdXRob3JpemF0aW9uKTtcbiAgICAgIGlmIChjcmVkZW50aWFscykge1xuICAgICAgICAvLyBpZiB0aGUgc2lnbmF0dXJlIGlzIHZhbGlkIHdlIHJlbHkgb24gaXRcbiAgICAgICAgcmVxLnJlbW90ZV91c2VyID0gY3JlZGVudGlhbHM7XG4gICAgICAgIG5leHQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHdpdGggSldUIHRocm93IDQwMVxuICAgICAgICBuZXh0KEVycm9yQ29kZS5nZXRGb3JiaWRkZW4oQVBJX0VSUk9SLkJBRF9VU0VSTkFNRV9QQVNTV09SRCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUFFU01pZGRsZXdhcmUocmVxOiAkUmVxdWVzdEV4dGVuZCwgc2VjdXJpdHk6IFNlY3VyaXR5LCBzZWNyZXQ6IHN0cmluZywgYXV0aG9yaXphdGlvbjogc3RyaW5nLCBuZXh0OiBGdW5jdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBhbnkgPSBnZXRNaWRkbGV3YXJlQ3JlZGVudGlhbHMoc2VjdXJpdHksIHNlY3JldCwgYXV0aG9yaXphdGlvbik7XG4gICAgaWYgKGNyZWRlbnRpYWxzKSB7XG4gICAgICBjb25zdCB7IHVzZXIsIHBhc3N3b3JkIH0gPSBjcmVkZW50aWFscztcbiAgICAgIHRoaXMuYXV0aGVudGljYXRlKHVzZXIsIHBhc3N3b3JkLCAoZXJyLCB1c2VyKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICghZXJyKSB7XG4gICAgICAgICAgcmVxLnJlbW90ZV91c2VyID0gdXNlcjtcbiAgICAgICAgICBuZXh0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVxLnJlbW90ZV91c2VyID0gY3JlYXRlQW5vbnltb3VzUmVtb3RlVXNlcigpO1xuICAgICAgICAgIG5leHQoZXJyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHdlIGZvcmNlIG5wbSBjbGllbnQgdG8gYXNrIGFnYWluIHdpdGggYmFzaWMgYXV0aGVudGljYXRpb25cbiAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRCYWRSZXF1ZXN0KEFQSV9FUlJPUi5CQURfQVVUSF9IRUFERVIpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc1JlbW90ZVVzZXJWYWxpZChyZW1vdGVfdXNlcjogUmVtb3RlVXNlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBfLmlzVW5kZWZpbmVkKHJlbW90ZV91c2VyKSA9PT0gZmFsc2UgJiYgXy5pc1VuZGVmaW5lZChyZW1vdGVfdXNlci5uYW1lKSA9PT0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSldUIG1pZGRsZXdhcmUgZm9yIFdlYlVJXG4gICAqL1xuICBwdWJsaWMgd2ViVUlKV1RtaWRkbGV3YXJlKCk6IEZ1bmN0aW9uIHtcbiAgICByZXR1cm4gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBfbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgICBpZiAodGhpcy5faXNSZW1vdGVVc2VyVmFsaWQocmVxLnJlbW90ZV91c2VyKSkge1xuICAgICAgICByZXR1cm4gX25leHQoKTtcbiAgICAgIH1cblxuICAgICAgcmVxLnBhdXNlKCk7XG4gICAgICBjb25zdCBuZXh0ID0gKGVycjogVmVyZGFjY2lvRXJyb3IgfCB2b2lkKTogdm9pZCA9PiB7XG4gICAgICAgIHJlcS5yZXN1bWUoKTtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIC8vIHJlcS5yZW1vdGVfdXNlci5lcnJvciA9IGVyci5tZXNzYWdlO1xuICAgICAgICAgIHJlcy5zdGF0dXMoZXJyLnN0YXR1c0NvZGUpLnNlbmQoZXJyLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIF9uZXh0KCk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7IGF1dGhvcml6YXRpb24gfSA9IHJlcS5oZWFkZXJzO1xuICAgICAgaWYgKF8uaXNOaWwoYXV0aG9yaXphdGlvbikpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0F1dGhIZWFkZXJWYWxpZChhdXRob3JpemF0aW9uKSkge1xuICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChBUElfRVJST1IuQkFEX0FVVEhfSEVBREVSKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRva2VuID0gKGF1dGhvcml6YXRpb24gfHwgJycpLnJlcGxhY2UoYCR7VE9LRU5fQkVBUkVSfSBgLCAnJyk7XG4gICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBjcmVkZW50aWFscztcbiAgICAgIHRyeSB7XG4gICAgICAgIGNyZWRlbnRpYWxzID0gdmVyaWZ5SldUUGF5bG9hZCh0b2tlbiwgdGhpcy5jb25maWcuc2VjcmV0KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBGSVhNRTogaW50ZW5kZWQgYmVoYXZpb3VyLCBkbyB3ZSB3YW50IGl0P1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5faXNSZW1vdGVVc2VyVmFsaWQoY3JlZGVudGlhbHMpKSB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgZ3JvdXBzIH0gPSBjcmVkZW50aWFscztcbiAgICAgICAgLy8gJEZsb3dGaXhNZVxuICAgICAgICByZXEucmVtb3RlX3VzZXIgPSBjcmVhdGVSZW1vdGVVc2VyKG5hbWUsIGdyb3Vwcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXEucmVtb3RlX3VzZXIgPSBjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyKCk7XG4gICAgICB9XG5cbiAgICAgIG5leHQoKTtcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGp3dEVuY3J5cHQodXNlcjogUmVtb3RlVXNlciwgc2lnbk9wdGlvbnM6IEpXVFNpZ25PcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCB7IHJlYWxfZ3JvdXBzLCBuYW1lLCBncm91cHMgfSA9IHVzZXI7XG4gICAgY29uc3QgcmVhbEdyb3Vwc1ZhbGlkYXRlZCA9IF8uaXNOaWwocmVhbF9ncm91cHMpID8gW10gOiByZWFsX2dyb3VwcztcbiAgICBjb25zdCBncm91cGVkR3JvdXBzID0gXy5pc05pbChncm91cHMpID8gcmVhbF9ncm91cHMgOiBncm91cHMuY29uY2F0KHJlYWxHcm91cHNWYWxpZGF0ZWQpO1xuICAgIGNvbnN0IHBheWxvYWQ6IFJlbW90ZVVzZXIgPSB7XG4gICAgICByZWFsX2dyb3VwczogcmVhbEdyb3Vwc1ZhbGlkYXRlZCxcbiAgICAgIG5hbWUsXG4gICAgICBncm91cHM6IGdyb3VwZWRHcm91cHMsXG4gICAgfTtcblxuICAgIGNvbnN0IHRva2VuOiBzdHJpbmcgPSBhd2FpdCBzaWduUGF5bG9hZChwYXlsb2FkLCB0aGlzLnNlY3JldCwgc2lnbk9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY3J5cHQgYSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgYWVzRW5jcnlwdChidWY6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIGFlc0VuY3J5cHQoYnVmLCB0aGlzLnNlY3JldCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQXV0aDtcbiJdfQ==
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.listenDefaultCallback = listenDefaultCallback;
7
7
  exports.startVerdaccio = startVerdaccio;
8
8
 
9
- var _url = _interopRequireDefault(require("url"));
9
+ var _constants = _interopRequireDefault(require("constants"));
10
10
 
11
11
  var _fs = _interopRequireDefault(require("fs"));
12
12
 
@@ -14,21 +14,21 @@ var _http = _interopRequireDefault(require("http"));
14
14
 
15
15
  var _https = _interopRequireDefault(require("https"));
16
16
 
17
- var _constants = _interopRequireDefault(require("constants"));
18
-
19
17
  var _lodash = require("lodash");
20
18
 
21
- var _index = _interopRequireDefault(require("../api/index"));
19
+ var _url = _interopRequireDefault(require("url"));
22
20
 
23
- var _constants2 = require("./constants");
21
+ var _index = _interopRequireDefault(require("../api/index"));
24
22
 
25
23
  var _utils = require("./cli/utils");
26
24
 
25
+ var _constants2 = require("./constants");
26
+
27
27
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
28
 
29
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
29
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
30
30
 
31
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
31
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
32
32
 
33
33
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
34
34
 
@@ -187,4 +187,4 @@ function listenDefaultCallback(webServer, addr, pkgName, pkgVersion) {
187
187
  version: pkgName + '/' + pkgVersion
188
188
  }, 'http address - @{addr} - @{version}');
189
189
  }
190
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYm9vdHN0cmFwLnRzIl0sIm5hbWVzIjpbImxvZ2dlciIsInJlcXVpcmUiLCJkaXNwbGF5RXhwZXJpbWVudHNJbmZvQm94IiwiZXhwZXJpbWVudHMiLCJleHBlcmltZW50TGlzdCIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJ3YXJuIiwiZm9yRWFjaCIsImV4cGVyaW1lbnQiLCJzdGFydFZlcmRhY2NpbyIsImNvbmZpZyIsImNsaUxpc3RlbiIsImNvbmZpZ1BhdGgiLCJwa2dWZXJzaW9uIiwicGtnTmFtZSIsImNhbGxiYWNrIiwiRXJyb3IiLCJBUElfRVJST1IiLCJDT05GSUdfQkFEX0ZPUk1BVCIsInRoZW4iLCJhcHAiLCJhZGRyZXNzZXMiLCJsaXN0ZW4iLCJhZGRyIiwid2ViU2VydmVyIiwicHJvdG8iLCJoYW5kbGVIVFRQUyIsImh0dHAiLCJjcmVhdGVTZXJ2ZXIiLCJzZXJ2ZXIiLCJrZWVwQWxpdmVUaW1lb3V0IiwidW5saW5rQWRkcmVzc1BhdGgiLCJwYXRoIiwiZnMiLCJleGlzdHNTeW5jIiwidW5saW5rU3luYyIsImxvZ0hUVFBTV2FybmluZyIsInN0b3JhZ2VMb2NhdGlvbiIsImZhdGFsIiwia2V5UGVtIiwiY3NyUGVtIiwiY2VydFBlbSIsImpvaW4iLCJwcm9jZXNzIiwiZXhpdCIsImh0dHBzT3B0aW9ucyIsInNlY3VyZU9wdGlvbnMiLCJjb25zdGFudHMiLCJTU0xfT1BfTk9fU1NMdjIiLCJTU0xfT1BfTk9fU1NMdjMiLCJrZXlDZXJ0Q29uZmlnIiwiaHR0cHMiLCJwZnhDb25maWciLCJrZXkiLCJjZXJ0IiwicGZ4IiwicGFzc3BocmFzZSIsInJlYWRGaWxlU3luYyIsImNhIiwiZXJyIiwibGlzdGVuRGVmYXVsdENhbGxiYWNrIiwicG9ydCIsImhvc3QiLCJzZW5kIiwidmVyZGFjY2lvX3N0YXJ0ZWQiLCJvbiIsImhhbmRsZVNodXRkb3duR3JhY2VmdWxseSIsImNsb3NlIiwiaW5mbyIsImVudiIsIlZFUkRBQ0NJT19IQU5ETEVfS0lMTF9TSUdOQUxTIiwiVVJMIiwiZm9ybWF0IiwicHJvdG9jb2wiLCJwYXRobmFtZSIsImhvc3RuYW1lIiwidmVyc2lvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFJQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBRUEsU0FBU0MseUJBQVQsQ0FBbUNDLFdBQW5DLEVBQWdEO0FBQzlDLFFBQU1DLGNBQWMsR0FBR0MsTUFBTSxDQUFDQyxJQUFQLENBQVlILFdBQVosQ0FBdkI7O0FBQ0EsTUFBSUMsY0FBYyxDQUFDRyxNQUFmLElBQXlCLENBQTdCLEVBQWdDO0FBQzlCUCxJQUFBQSxNQUFNLENBQUNBLE1BQVAsQ0FBY1EsSUFBZCxDQUFtQix3SEFBbkI7QUFDQUosSUFBQUEsY0FBYyxDQUFDSyxPQUFmLENBQXdCQyxVQUFELElBQWdCO0FBQ3JDVixNQUFBQSxNQUFNLENBQUNBLE1BQVAsQ0FBY1EsSUFBZCxDQUFvQixrQkFBaUJFLFVBQVcsSUFBR1AsV0FBVyxDQUFDTyxVQUFELENBQVgsR0FBMEIsWUFBMUIsR0FBeUMsY0FBZSxFQUEzRztBQUNELEtBRkQ7QUFHRDtBQUNGO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsU0FBU0MsY0FBVCxDQUF3QkMsTUFBeEIsRUFBcUNDLFNBQXJDLEVBQXdEQyxVQUF4RCxFQUE0RUMsVUFBNUUsRUFBZ0dDLE9BQWhHLEVBQWlIQyxRQUFqSCxFQUEySTtBQUN6SSxNQUFJLHNCQUFTTCxNQUFULE1BQXFCLEtBQXpCLEVBQWdDO0FBQzlCLFVBQU0sSUFBSU0sS0FBSixDQUFVQyxzQkFBVUMsaUJBQXBCLENBQU47QUFDRDs7QUFFRCxNQUFJLGlCQUFpQlIsTUFBckIsRUFBNkI7QUFDM0JWLElBQUFBLHlCQUF5QixDQUFDVSxNQUFNLENBQUNULFdBQVIsQ0FBekI7QUFDRDs7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QThDLE1BQWxELEVBQTBEO0FBQ3hEM0IsSUFBQUEsT0FBTyxDQUFDc0IsRUFBUixDQUFXLFFBQVgsRUFBcUJDLHdCQUFyQjtBQUNBdkIsSUFBQUEsT0FBTyxDQUFDc0IsRUFBUixDQUFXLFNBQVgsRUFBc0JDLHdCQUF0QjtBQUNBdkIsSUFBQUEsT0FBTyxDQUFDc0IsRUFBUixDQUFXLFFBQVgsRUFBcUJDLHdCQUFyQjtBQUNEOztBQUVEcEUsRUFBQUEsTUFBTSxDQUFDQSxNQUFQLENBQWNRLElBQWQsQ0FDRTtBQUNFaUIsSUFBQUEsSUFBSSxFQUFFQSxJQUFJLENBQUNTLElBQUwsR0FDRnVDLGFBQUlDLE1BQUosQ0FBVztBQUNUQyxNQUFBQSxRQUFRLEVBQUUsTUFERDtBQUVUQyxNQUFBQSxRQUFRLEVBQUVuRCxJQUFJLENBQUNTO0FBRk4sS0FBWCxDQURFLEdBS0Z1QyxhQUFJQyxNQUFKLENBQVc7QUFDVEMsTUFBQUEsUUFBUSxFQUFFbEQsSUFBSSxDQUFDRSxLQUROO0FBRVRrRCxNQUFBQSxRQUFRLEVBQUVwRCxJQUFJLENBQUN1QyxJQUZOO0FBR1RELE1BQUFBLElBQUksRUFBRXRDLElBQUksQ0FBQ3NDLElBSEY7QUFJVGEsTUFBQUEsUUFBUSxFQUFFO0FBSkQsS0FBWCxDQU5OO0FBWUVFLElBQUFBLE9BQU8sRUFBRTlELE9BQU8sR0FBRyxHQUFWLEdBQWdCRDtBQVozQixHQURGLEVBZUUscUNBZkY7QUFpQkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVVJMIGZyb20gJ3VybCc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuaW1wb3J0IGNvbnN0YW50cyBmcm9tICdjb25zdGFudHMnO1xuaW1wb3J0IGV4cHJlc3MgZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBhc3NpZ24sIGlzT2JqZWN0LCBpc0Z1bmN0aW9uIH0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgQ2FsbGJhY2ssIENvbmZpZ1dpdGhIdHRwcywgSHR0cHNDb25mS2V5Q2VydCwgSHR0cHNDb25mUGZ4IH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbiB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IGVuZFBvaW50QVBJIGZyb20gJy4uL2FwaS9pbmRleCc7XG5pbXBvcnQgeyBBUElfRVJST1IsIGNlcnRQZW0sIGNzclBlbSwga2V5UGVtIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0TGlzdExpc3RlbkFkZHJlc3NlcywgcmVzb2x2ZUNvbmZpZ1BhdGggfSBmcm9tICcuL2NsaS91dGlscyc7XG5cbmNvbnN0IGxvZ2dlciA9IHJlcXVpcmUoJy4vbG9nZ2VyJyk7XG5cbmZ1bmN0aW9uIGRpc3BsYXlFeHBlcmltZW50c0luZm9Cb3goZXhwZXJpbWVudHMpIHtcbiAgY29uc3QgZXhwZXJpbWVudExpc3QgPSBPYmplY3Qua2V5cyhleHBlcmltZW50cyk7XG4gIGlmIChleHBlcmltZW50TGlzdC5sZW5ndGggPj0gMSkge1xuICAgIGxvZ2dlci5sb2dnZXIud2Fybign4pqg77iPICBleHBlcmltZW50cyBhcmUgZW5hYmxlZCwgd2UgcmVjb21tZW5kIGRvIG5vdCB1c2UgZXhwZXJpbWVudHMgaW4gcHJvZHVjdGlvbiwgY29tbWVudCBvdXQgdGhpcyBzZWN0aW9uIHRvIGRpc2FibGUgaXQnKTtcbiAgICBleHBlcmltZW50TGlzdC5mb3JFYWNoKChleHBlcmltZW50KSA9PiB7XG4gICAgICBsb2dnZXIubG9nZ2VyLndhcm4oYCAtIHN1cHBvcnQgZm9yICR7ZXhwZXJpbWVudH0gJHtleHBlcmltZW50c1tleHBlcmltZW50XSA/ICdpcyBlbmFibGVkJyA6ICcgaXMgZGlzYWJsZWQnfWApO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogVHJpZ2dlciB0aGUgc2VydmVyIGFmdGVyIGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gbG9hZGVkLlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZ1xuICogQHBhcmFtIHtPYmplY3R9IGNsaUFyZ3VtZW50c1xuICogQHBhcmFtIHtTdHJpbmd9IGNvbmZpZ1BhdGhcbiAqIEBwYXJhbSB7U3RyaW5nfSBwa2dWZXJzaW9uXG4gKiBAcGFyYW0ge1N0cmluZ30gcGtnTmFtZVxuICovXG5mdW5jdGlvbiBzdGFydFZlcmRhY2Npbyhjb25maWc6IGFueSwgY2xpTGlzdGVuOiBzdHJpbmcsIGNvbmZpZ1BhdGg6IHN0cmluZywgcGtnVmVyc2lvbjogc3RyaW5nLCBwa2dOYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiBDYWxsYmFjayk6IHZvaWQge1xuICBpZiAoaXNPYmplY3QoY29uZmlnKSA9PT0gZmFsc2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoQVBJX0VSUk9SLkNPTkZJR19CQURfRk9STUFUKTtcbiAgfVxuXG4gIGlmICgnZXhwZXJpbWVudHMnIGluIGNvbmZpZykge1xuICAgIGRpc3BsYXlFeHBlcmltZW50c0luZm9Cb3goY29uZmlnLmV4cGVyaW1lbnRzKTtcbiAgfVxuXG4gIGVuZFBvaW50QVBJKGNvbmZpZykudGhlbigoYXBwKTogdm9pZCA9PiB7XG4gICAgY29uc3QgYWRkcmVzc2VzID0gZ2V0TGlzdExpc3RlbkFkZHJlc3NlcyhjbGlMaXN0ZW4sIGNvbmZpZy5saXN0ZW4pO1xuXG4gICAgYWRkcmVzc2VzLmZvckVhY2goZnVuY3Rpb24gKGFkZHIpOiB2b2lkIHtcbiAgICAgIGxldCB3ZWJTZXJ2ZXI7XG4gICAgICBpZiAoYWRkci5wcm90byA9PT0gJ2h0dHBzJykge1xuICAgICAgICB3ZWJTZXJ2ZXIgPSBoYW5kbGVIVFRQUyhhcHAsIGNvbmZpZ1BhdGgsIGNvbmZpZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBodHRwXG4gICAgICAgIHdlYlNlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKGFwcCk7XG4gICAgICB9XG4gICAgICBpZiAoY29uZmlnLnNlcnZlciAmJiB0eXBlb2YgY29uZmlnLnNlcnZlci5rZWVwQWxpdmVUaW1lb3V0ICE9PSAndW5kZWZpbmVkJyAmJiBjb25maWcuc2VydmVyLmtlZXBBbGl2ZVRpbWVvdXQgIT09ICdudWxsJykge1xuICAgICAgICAvLyBsaWJyYXJ5IGRlZmluaXRpb24gZm9yIG5vZGUgaXMgbm90IHVwIHRvIGRhdGUgKGRvZXNuJ3QgY29udGFpbiByZWNlbnQgOC4wIGNoYW5nZXMpXG4gICAgICAgIHdlYlNlcnZlci5rZWVwQWxpdmVUaW1lb3V0ID0gY29uZmlnLnNlcnZlci5rZWVwQWxpdmVUaW1lb3V0ICogMTAwMDtcbiAgICAgIH1cbiAgICAgIHVubGlua0FkZHJlc3NQYXRoKGFkZHIpO1xuXG4gICAgICBjYWxsYmFjayh3ZWJTZXJ2ZXIsIGFkZHIsIHBrZ05hbWUsIHBrZ1ZlcnNpb24pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdW5saW5rQWRkcmVzc1BhdGgoYWRkcikge1xuICBpZiAoYWRkci5wYXRoICYmIGZzLmV4aXN0c1N5bmMoYWRkci5wYXRoKSkge1xuICAgIGZzLnVubGlua1N5bmMoYWRkci5wYXRoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBsb2dIVFRQU1dhcm5pbmcoc3RvcmFnZUxvY2F0aW9uKSB7XG4gIGxvZ2dlci5sb2dnZXIuZmF0YWwoXG4gICAgW1xuICAgICAgJ1lvdSBoYXZlIGVuYWJsZWQgSFRUUFMgYW5kIG5lZWQgdG8gc3BlY2lmeSBlaXRoZXIgJyxcbiAgICAgICcgICAgXCJodHRwcy5rZXlcIiBhbmQgXCJodHRwcy5jZXJ0XCIgb3IgJyxcbiAgICAgICcgICAgXCJodHRwcy5wZnhcIiBhbmQgb3B0aW9uYWxseSBcImh0dHBzLnBhc3NwaHJhc2VcIiAnLFxuICAgICAgJ3RvIHJ1biBodHRwcyBzZXJ2ZXInLFxuICAgICAgJycsXG4gICAgICAvLyBjb21tYW5kcyBhcmUgYm9ycm93ZWQgZnJvbSBub2RlLmpzIGRvY3NcbiAgICAgICdUbyBxdWlja2x5IGNyZWF0ZSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSwgdXNlOicsXG4gICAgICAnICQgb3BlbnNzbCBnZW5yc2EgLW91dCAnICsgcmVzb2x2ZUNvbmZpZ1BhdGgoc3RvcmFnZUxvY2F0aW9uLCBrZXlQZW0pICsgJyAyMDQ4JyxcbiAgICAgICcgJCBvcGVuc3NsIHJlcSAtbmV3IC1zaGEyNTYgLWtleSAnICsgcmVzb2x2ZUNvbmZpZ1BhdGgoc3RvcmFnZUxvY2F0aW9uLCBrZXlQZW0pICsgJyAtb3V0ICcgKyByZXNvbHZlQ29uZmlnUGF0aChzdG9yYWdlTG9jYXRpb24sIGNzclBlbSksXG4gICAgICAnICQgb3BlbnNzbCB4NTA5IC1yZXEgLWluICcgK1xuICAgICAgICByZXNvbHZlQ29uZmlnUGF0aChzdG9yYWdlTG9jYXRpb24sIGNzclBlbSkgK1xuICAgICAgICAnIC1zaWdua2V5ICcgK1xuICAgICAgICByZXNvbHZlQ29uZmlnUGF0aChzdG9yYWdlTG9jYXRpb24sIGtleVBlbSkgK1xuICAgICAgICAnIC1vdXQgJyArXG4gICAgICAgIHJlc29sdmVDb25maWdQYXRoKHN0b3JhZ2VMb2NhdGlvbiwgY2VydFBlbSksXG4gICAgICAnJyxcbiAgICAgICdBbmQgdGhlbiBhZGQgdG8gY29uZmlnIGZpbGUgKCcgKyBzdG9yYWdlTG9jYXRpb24gKyAnKTonLFxuICAgICAgJyAgaHR0cHM6JyxcbiAgICAgIGAgICAga2V5OiAke3Jlc29sdmVDb25maWdQYXRoKHN0b3JhZ2VMb2NhdGlvbiwga2V5UGVtKX1gLFxuICAgICAgYCAgICBjZXJ0OiAke3Jlc29sdmVDb25maWdQYXRoKHN0b3JhZ2VMb2NhdGlvbiwgY2VydFBlbSl9YCxcbiAgICBdLmpvaW4oJ1xcbicpXG4gICk7XG4gIHByb2Nlc3MuZXhpdCgyKTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlSFRUUFMoYXBwOiBleHByZXNzLkFwcGxpY2F0aW9uLCBjb25maWdQYXRoOiBzdHJpbmcsIGNvbmZpZzogQ29uZmlnV2l0aEh0dHBzKTogaHR0cHMuU2VydmVyIHtcbiAgdHJ5IHtcbiAgICBsZXQgaHR0cHNPcHRpb25zID0ge1xuICAgICAgc2VjdXJlT3B0aW9uczogY29uc3RhbnRzLlNTTF9PUF9OT19TU0x2MiB8IGNvbnN0YW50cy5TU0xfT1BfTk9fU1NMdjMsIC8vIGRpc2FibGUgaW5zZWN1cmUgU1NMdjIgYW5kIFNTTHYzXG4gICAgfTtcblxuICAgIGNvbnN0IGtleUNlcnRDb25maWcgPSBjb25maWcuaHR0cHMgYXMgSHR0cHNDb25mS2V5Q2VydDtcbiAgICBjb25zdCBwZnhDb25maWcgPSBjb25maWcuaHR0cHMgYXMgSHR0cHNDb25mUGZ4O1xuXG4gICAgLy8gaHR0cHMgbXVzdCBlaXRoZXIgaGF2ZSBrZXkgYW5kIGNlcnQgb3IgYSBwZnggYW5kIChvcHRpb25hbGx5KSBhIHBhc3NwaHJhc2VcbiAgICBpZiAoISgoa2V5Q2VydENvbmZpZy5rZXkgJiYga2V5Q2VydENvbmZpZy5jZXJ0KSB8fCBwZnhDb25maWcucGZ4KSkge1xuICAgICAgbG9nSFRUUFNXYXJuaW5nKGNvbmZpZ1BhdGgpO1xuICAgIH1cblxuICAgIGlmIChwZnhDb25maWcucGZ4KSB7XG4gICAgICBjb25zdCB7IHBmeCwgcGFzc3BocmFzZSB9ID0gcGZ4Q29uZmlnO1xuICAgICAgaHR0cHNPcHRpb25zID0gYXNzaWduKGh0dHBzT3B0aW9ucywge1xuICAgICAgICBwZng6IGZzLnJlYWRGaWxlU3luYyhwZngpLFxuICAgICAgICBwYXNzcGhyYXNlOiBwYXNzcGhyYXNlIHx8ICcnLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsga2V5LCBjZXJ0LCBjYSB9ID0ga2V5Q2VydENvbmZpZztcbiAgICAgIGh0dHBzT3B0aW9ucyA9IGFzc2lnbihodHRwc09wdGlvbnMsIHtcbiAgICAgICAga2V5OiBmcy5yZWFkRmlsZVN5bmMoa2V5KSxcbiAgICAgICAgY2VydDogZnMucmVhZEZpbGVTeW5jKGNlcnQpLFxuICAgICAgICAuLi4oY2EgJiYge1xuICAgICAgICAgIGNhOiBmcy5yZWFkRmlsZVN5bmMoY2EpLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gaHR0cHMuY3JlYXRlU2VydmVyKGh0dHBzT3B0aW9ucywgYXBwKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gY2F0Y2ggZXJyb3JzIHJlbGF0ZWQgdG8gY2VydGlmaWNhdGUgbG9hZGluZ1xuICAgIGxvZ2dlci5sb2dnZXIuZmF0YWwoeyBlcnI6IGVyciB9LCAnY2Fubm90IGNyZWF0ZSBzZXJ2ZXI6IEB7ZXJyLm1lc3NhZ2V9Jyk7XG4gICAgcHJvY2Vzcy5leGl0KDIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGxpc3RlbkRlZmF1bHRDYWxsYmFjayh3ZWJTZXJ2ZXI6IEFwcGxpY2F0aW9uLCBhZGRyOiBhbnksIHBrZ05hbWU6IHN0cmluZywgcGtnVmVyc2lvbjogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHNlcnZlciA9IHdlYlNlcnZlclxuICAgIC5saXN0ZW4oYWRkci5wb3J0IHx8IGFkZHIucGF0aCwgYWRkci5ob3N0LCAoKTogdm9pZCA9PiB7XG4gICAgICAvLyBzZW5kIGEgbWVzc2FnZSBmb3IgdGVzdHNcbiAgICAgIGlmIChpc0Z1bmN0aW9uKHByb2Nlc3Muc2VuZCkpIHtcbiAgICAgICAgcHJvY2Vzcy5zZW5kKHtcbiAgICAgICAgICB2ZXJkYWNjaW9fc3RhcnRlZDogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAub24oJ2Vycm9yJywgZnVuY3Rpb24gKGVycik6IHZvaWQge1xuICAgICAgbG9nZ2VyLmxvZ2dlci5mYXRhbCh7IGVycjogZXJyIH0sICdjYW5ub3QgY3JlYXRlIHNlcnZlcjogQHtlcnIubWVzc2FnZX0nKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgICB9KTtcblxuICBmdW5jdGlvbiBoYW5kbGVTaHV0ZG93bkdyYWNlZnVsbHkoKSB7XG4gICAgbG9nZ2VyLmxvZ2dlci5mYXRhbCgncmVjZWl2ZWQgc2h1dGRvd24gc2lnbmFsIC0gY2xvc2luZyBzZXJ2ZXIgZ3JhY2VmdWxseS4uLicpO1xuICAgIHNlcnZlci5jbG9zZSgoKSA9PiB7XG4gICAgICBsb2dnZXIubG9nZ2VyLmluZm8oJ3NlcnZlciBjbG9zZWQuJyk7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBoYW5kbGUgc2h1dGRvd24gc2lnbmFscyBuaWNlbHkgd2hlbiBlbnZpcm9ubWVudCBzYXlzIHNvXG4gIGlmIChwcm9jZXNzLmVudi5WRVJEQUNDSU9fSEFORExFX0tJTExfU0lHTkFMUyA9PT0gJ3RydWUnKSB7XG4gICAgcHJvY2Vzcy5vbignU0lHSU5UJywgaGFuZGxlU2h1dGRvd25HcmFjZWZ1bGx5KTtcbiAgICBwcm9jZXNzLm9uKCdTSUdURVJNJywgaGFuZGxlU2h1dGRvd25HcmFjZWZ1bGx5KTtcbiAgICBwcm9jZXNzLm9uKCdTSUdIVVAnLCBoYW5kbGVTaHV0ZG93bkdyYWNlZnVsbHkpO1xuICB9XG5cbiAgbG9nZ2VyLmxvZ2dlci53YXJuKFxuICAgIHtcbiAgICAgIGFkZHI6IGFkZHIucGF0aFxuICAgICAgICA/IFVSTC5mb3JtYXQoe1xuICAgICAgICAgICAgcHJvdG9jb2w6ICd1bml4JyxcbiAgICAgICAgICAgIHBhdGhuYW1lOiBhZGRyLnBhdGgsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiBVUkwuZm9ybWF0KHtcbiAgICAgICAgICAgIHByb3RvY29sOiBhZGRyLnByb3RvLFxuICAgICAgICAgICAgaG9zdG5hbWU6IGFkZHIuaG9zdCxcbiAgICAgICAgICAgIHBvcnQ6IGFkZHIucG9ydCxcbiAgICAgICAgICAgIHBhdGhuYW1lOiAnLycsXG4gICAgICAgICAgfSksXG4gICAgICB2ZXJzaW9uOiBwa2dOYW1lICsgJy8nICsgcGtnVmVyc2lvbixcbiAgICB9LFxuICAgICdodHRwIGFkZHJlc3MgLSBAe2FkZHJ9IC0gQHt2ZXJzaW9ufSdcbiAgKTtcbn1cblxuZXhwb3J0IHsgc3RhcnRWZXJkYWNjaW8sIGxpc3RlbkRlZmF1bHRDYWxsYmFjayB9O1xuIl19
190
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYm9vdHN0cmFwLnRzIl0sIm5hbWVzIjpbImxvZ2dlciIsInJlcXVpcmUiLCJkaXNwbGF5RXhwZXJpbWVudHNJbmZvQm94IiwiZXhwZXJpbWVudHMiLCJleHBlcmltZW50TGlzdCIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJ3YXJuIiwiZm9yRWFjaCIsImV4cGVyaW1lbnQiLCJzdGFydFZlcmRhY2NpbyIsImNvbmZpZyIsImNsaUxpc3RlbiIsImNvbmZpZ1BhdGgiLCJwa2dWZXJzaW9uIiwicGtnTmFtZSIsImNhbGxiYWNrIiwiRXJyb3IiLCJBUElfRVJST1IiLCJDT05GSUdfQkFEX0ZPUk1BVCIsInRoZW4iLCJhcHAiLCJhZGRyZXNzZXMiLCJsaXN0ZW4iLCJhZGRyIiwid2ViU2VydmVyIiwicHJvdG8iLCJoYW5kbGVIVFRQUyIsImh0dHAiLCJjcmVhdGVTZXJ2ZXIiLCJzZXJ2ZXIiLCJrZWVwQWxpdmVUaW1lb3V0IiwidW5saW5rQWRkcmVzc1BhdGgiLCJwYXRoIiwiZnMiLCJleGlzdHNTeW5jIiwidW5saW5rU3luYyIsImxvZ0hUVFBTV2FybmluZyIsInN0b3JhZ2VMb2NhdGlvbiIsImZhdGFsIiwia2V5UGVtIiwiY3NyUGVtIiwiY2VydFBlbSIsImpvaW4iLCJwcm9jZXNzIiwiZXhpdCIsImh0dHBzT3B0aW9ucyIsInNlY3VyZU9wdGlvbnMiLCJjb25zdGFudHMiLCJTU0xfT1BfTk9fU1NMdjIiLCJTU0xfT1BfTk9fU1NMdjMiLCJrZXlDZXJ0Q29uZmlnIiwiaHR0cHMiLCJwZnhDb25maWciLCJrZXkiLCJjZXJ0IiwicGZ4IiwicGFzc3BocmFzZSIsInJlYWRGaWxlU3luYyIsImNhIiwiZXJyIiwibGlzdGVuRGVmYXVsdENhbGxiYWNrIiwicG9ydCIsImhvc3QiLCJzZW5kIiwidmVyZGFjY2lvX3N0YXJ0ZWQiLCJvbiIsImhhbmRsZVNodXRkb3duR3JhY2VmdWxseSIsImNsb3NlIiwiaW5mbyIsImVudiIsIlZFUkRBQ0NJT19IQU5ETEVfS0lMTF9TSUdOQUxTIiwiVVJMIiwiZm9ybWF0IiwicHJvdG9jb2wiLCJwYXRobmFtZSIsImhvc3RuYW1lIiwidmVyc2lvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBRUEsU0FBU0MseUJBQVQsQ0FBbUNDLFdBQW5DLEVBQWdEO0FBQzlDLFFBQU1DLGNBQWMsR0FBR0MsTUFBTSxDQUFDQyxJQUFQLENBQVlILFdBQVosQ0FBdkI7O0FBQ0EsTUFBSUMsY0FBYyxDQUFDRyxNQUFmLElBQXlCLENBQTdCLEVBQWdDO0FBQzlCUCxJQUFBQSxNQUFNLENBQUNBLE1BQVAsQ0FBY1EsSUFBZCxDQUFtQix3SEFBbkI7QUFDQUosSUFBQUEsY0FBYyxDQUFDSyxPQUFmLENBQXdCQyxVQUFELElBQWdCO0FBQ3JDVixNQUFBQSxNQUFNLENBQUNBLE1BQVAsQ0FBY1EsSUFBZCxDQUFvQixrQkFBaUJFLFVBQVcsSUFBR1AsV0FBVyxDQUFDTyxVQUFELENBQVgsR0FBMEIsWUFBMUIsR0FBeUMsY0FBZSxFQUEzRztBQUNELEtBRkQ7QUFHRDtBQUNGO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsU0FBU0MsY0FBVCxDQUF3QkMsTUFBeEIsRUFBcUNDLFNBQXJDLEVBQXdEQyxVQUF4RCxFQUE0RUMsVUFBNUUsRUFBZ0dDLE9BQWhHLEVBQWlIQyxRQUFqSCxFQUEySTtBQUN6SSxNQUFJLHNCQUFTTCxNQUFULE1BQXFCLEtBQXpCLEVBQWdDO0FBQzlCLFVBQU0sSUFBSU0sS0FBSixDQUFVQyxzQkFBVUMsaUJBQXBCLENBQU47QUFDRDs7QUFFRCxNQUFJLGlCQUFpQlIsTUFBckIsRUFBNkI7QUFDM0JWLElBQUFBLHlCQUF5QixDQUFDVSxNQUFNLENBQUNULFdBQVIsQ0FBekI7QUFDRDs7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QThDLE1BQWxELEVBQTBEO0FBQ3hEM0IsSUFBQUEsT0FBTyxDQUFDc0IsRUFBUixDQUFXLFFBQVgsRUFBcUJDLHdCQUFyQjtBQUNBdkIsSUFBQUEsT0FBTyxDQUFDc0IsRUFBUixDQUFXLFNBQVgsRUFBc0JDLHdCQUF0QjtBQUNBdkIsSUFBQUEsT0FBTyxDQUFDc0IsRUFBUixDQUFXLFFBQVgsRUFBcUJDLHdCQUFyQjtBQUNEOztBQUVEcEUsRUFBQUEsTUFBTSxDQUFDQSxNQUFQLENBQWNRLElBQWQsQ0FDRTtBQUNFaUIsSUFBQUEsSUFBSSxFQUFFQSxJQUFJLENBQUNTLElBQUwsR0FDRnVDLGFBQUlDLE1BQUosQ0FBVztBQUNUQyxNQUFBQSxRQUFRLEVBQUUsTUFERDtBQUVUQyxNQUFBQSxRQUFRLEVBQUVuRCxJQUFJLENBQUNTO0FBRk4sS0FBWCxDQURFLEdBS0Z1QyxhQUFJQyxNQUFKLENBQVc7QUFDVEMsTUFBQUEsUUFBUSxFQUFFbEQsSUFBSSxDQUFDRSxLQUROO0FBRVRrRCxNQUFBQSxRQUFRLEVBQUVwRCxJQUFJLENBQUN1QyxJQUZOO0FBR1RELE1BQUFBLElBQUksRUFBRXRDLElBQUksQ0FBQ3NDLElBSEY7QUFJVGEsTUFBQUEsUUFBUSxFQUFFO0FBSkQsS0FBWCxDQU5OO0FBWUVFLElBQUFBLE9BQU8sRUFBRTlELE9BQU8sR0FBRyxHQUFWLEdBQWdCRDtBQVozQixHQURGLEVBZUUscUNBZkY7QUFpQkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29uc3RhbnRzIGZyb20gJ2NvbnN0YW50cyc7XG5pbXBvcnQgZXhwcmVzcyBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuaW1wb3J0IHsgYXNzaWduLCBpc0Z1bmN0aW9uLCBpc09iamVjdCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgVVJMIGZyb20gJ3VybCc7XG5cbmltcG9ydCB7IENhbGxiYWNrLCBDb25maWdXaXRoSHR0cHMsIEh0dHBzQ29uZktleUNlcnQsIEh0dHBzQ29uZlBmeCB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgZW5kUG9pbnRBUEkgZnJvbSAnLi4vYXBpL2luZGV4JztcbmltcG9ydCB7IGdldExpc3RMaXN0ZW5BZGRyZXNzZXMsIHJlc29sdmVDb25maWdQYXRoIH0gZnJvbSAnLi9jbGkvdXRpbHMnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBjZXJ0UGVtLCBjc3JQZW0sIGtleVBlbSB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuY29uc3QgbG9nZ2VyID0gcmVxdWlyZSgnLi9sb2dnZXInKTtcblxuZnVuY3Rpb24gZGlzcGxheUV4cGVyaW1lbnRzSW5mb0JveChleHBlcmltZW50cykge1xuICBjb25zdCBleHBlcmltZW50TGlzdCA9IE9iamVjdC5rZXlzKGV4cGVyaW1lbnRzKTtcbiAgaWYgKGV4cGVyaW1lbnRMaXN0Lmxlbmd0aCA+PSAxKSB7XG4gICAgbG9nZ2VyLmxvZ2dlci53YXJuKCfimqDvuI8gIGV4cGVyaW1lbnRzIGFyZSBlbmFibGVkLCB3ZSByZWNvbW1lbmQgZG8gbm90IHVzZSBleHBlcmltZW50cyBpbiBwcm9kdWN0aW9uLCBjb21tZW50IG91dCB0aGlzIHNlY3Rpb24gdG8gZGlzYWJsZSBpdCcpO1xuICAgIGV4cGVyaW1lbnRMaXN0LmZvckVhY2goKGV4cGVyaW1lbnQpID0+IHtcbiAgICAgIGxvZ2dlci5sb2dnZXIud2FybihgIC0gc3VwcG9ydCBmb3IgJHtleHBlcmltZW50fSAke2V4cGVyaW1lbnRzW2V4cGVyaW1lbnRdID8gJ2lzIGVuYWJsZWQnIDogJyBpcyBkaXNhYmxlZCd9YCk7XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUcmlnZ2VyIHRoZSBzZXJ2ZXIgYWZ0ZXIgY29uZmlndXJhdGlvbiBoYXMgYmVlbiBsb2FkZWQuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnXG4gKiBAcGFyYW0ge09iamVjdH0gY2xpQXJndW1lbnRzXG4gKiBAcGFyYW0ge1N0cmluZ30gY29uZmlnUGF0aFxuICogQHBhcmFtIHtTdHJpbmd9IHBrZ1ZlcnNpb25cbiAqIEBwYXJhbSB7U3RyaW5nfSBwa2dOYW1lXG4gKi9cbmZ1bmN0aW9uIHN0YXJ0VmVyZGFjY2lvKGNvbmZpZzogYW55LCBjbGlMaXN0ZW46IHN0cmluZywgY29uZmlnUGF0aDogc3RyaW5nLCBwa2dWZXJzaW9uOiBzdHJpbmcsIHBrZ05hbWU6IHN0cmluZywgY2FsbGJhY2s6IENhbGxiYWNrKTogdm9pZCB7XG4gIGlmIChpc09iamVjdChjb25maWcpID09PSBmYWxzZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihBUElfRVJST1IuQ09ORklHX0JBRF9GT1JNQVQpO1xuICB9XG5cbiAgaWYgKCdleHBlcmltZW50cycgaW4gY29uZmlnKSB7XG4gICAgZGlzcGxheUV4cGVyaW1lbnRzSW5mb0JveChjb25maWcuZXhwZXJpbWVudHMpO1xuICB9XG5cbiAgZW5kUG9pbnRBUEkoY29uZmlnKS50aGVuKChhcHApOiB2b2lkID0+IHtcbiAgICBjb25zdCBhZGRyZXNzZXMgPSBnZXRMaXN0TGlzdGVuQWRkcmVzc2VzKGNsaUxpc3RlbiwgY29uZmlnLmxpc3Rlbik7XG5cbiAgICBhZGRyZXNzZXMuZm9yRWFjaChmdW5jdGlvbiAoYWRkcik6IHZvaWQge1xuICAgICAgbGV0IHdlYlNlcnZlcjtcbiAgICAgIGlmIChhZGRyLnByb3RvID09PSAnaHR0cHMnKSB7XG4gICAgICAgIHdlYlNlcnZlciA9IGhhbmRsZUhUVFBTKGFwcCwgY29uZmlnUGF0aCwgY29uZmlnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGh0dHBcbiAgICAgICAgd2ViU2VydmVyID0gaHR0cC5jcmVhdGVTZXJ2ZXIoYXBwKTtcbiAgICAgIH1cbiAgICAgIGlmIChjb25maWcuc2VydmVyICYmIHR5cGVvZiBjb25maWcuc2VydmVyLmtlZXBBbGl2ZVRpbWVvdXQgIT09ICd1bmRlZmluZWQnICYmIGNvbmZpZy5zZXJ2ZXIua2VlcEFsaXZlVGltZW91dCAhPT0gJ251bGwnKSB7XG4gICAgICAgIC8vIGxpYnJhcnkgZGVmaW5pdGlvbiBmb3Igbm9kZSBpcyBub3QgdXAgdG8gZGF0ZSAoZG9lc24ndCBjb250YWluIHJlY2VudCA4LjAgY2hhbmdlcylcbiAgICAgICAgd2ViU2VydmVyLmtlZXBBbGl2ZVRpbWVvdXQgPSBjb25maWcuc2VydmVyLmtlZXBBbGl2ZVRpbWVvdXQgKiAxMDAwO1xuICAgICAgfVxuICAgICAgdW5saW5rQWRkcmVzc1BhdGgoYWRkcik7XG5cbiAgICAgIGNhbGxiYWNrKHdlYlNlcnZlciwgYWRkciwgcGtnTmFtZSwgcGtnVmVyc2lvbik7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1bmxpbmtBZGRyZXNzUGF0aChhZGRyKSB7XG4gIGlmIChhZGRyLnBhdGggJiYgZnMuZXhpc3RzU3luYyhhZGRyLnBhdGgpKSB7XG4gICAgZnMudW5saW5rU3luYyhhZGRyLnBhdGgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGxvZ0hUVFBTV2FybmluZyhzdG9yYWdlTG9jYXRpb24pIHtcbiAgbG9nZ2VyLmxvZ2dlci5mYXRhbChcbiAgICBbXG4gICAgICAnWW91IGhhdmUgZW5hYmxlZCBIVFRQUyBhbmQgbmVlZCB0byBzcGVjaWZ5IGVpdGhlciAnLFxuICAgICAgJyAgICBcImh0dHBzLmtleVwiIGFuZCBcImh0dHBzLmNlcnRcIiBvciAnLFxuICAgICAgJyAgICBcImh0dHBzLnBmeFwiIGFuZCBvcHRpb25hbGx5IFwiaHR0cHMucGFzc3BocmFzZVwiICcsXG4gICAgICAndG8gcnVuIGh0dHBzIHNlcnZlcicsXG4gICAgICAnJyxcbiAgICAgIC8vIGNvbW1hbmRzIGFyZSBib3Jyb3dlZCBmcm9tIG5vZGUuanMgZG9jc1xuICAgICAgJ1RvIHF1aWNrbHkgY3JlYXRlIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlLCB1c2U6JyxcbiAgICAgICcgJCBvcGVuc3NsIGdlbnJzYSAtb3V0ICcgKyByZXNvbHZlQ29uZmlnUGF0aChzdG9yYWdlTG9jYXRpb24sIGtleVBlbSkgKyAnIDIwNDgnLFxuICAgICAgJyAkIG9wZW5zc2wgcmVxIC1uZXcgLXNoYTI1NiAta2V5ICcgKyByZXNvbHZlQ29uZmlnUGF0aChzdG9yYWdlTG9jYXRpb24sIGtleVBlbSkgKyAnIC1vdXQgJyArIHJlc29sdmVDb25maWdQYXRoKHN0b3JhZ2VMb2NhdGlvbiwgY3NyUGVtKSxcbiAgICAgICcgJCBvcGVuc3NsIHg1MDkgLXJlcSAtaW4gJyArXG4gICAgICAgIHJlc29sdmVDb25maWdQYXRoKHN0b3JhZ2VMb2NhdGlvbiwgY3NyUGVtKSArXG4gICAgICAgICcgLXNpZ25rZXkgJyArXG4gICAgICAgIHJlc29sdmVDb25maWdQYXRoKHN0b3JhZ2VMb2NhdGlvbiwga2V5UGVtKSArXG4gICAgICAgICcgLW91dCAnICtcbiAgICAgICAgcmVzb2x2ZUNvbmZpZ1BhdGgoc3RvcmFnZUxvY2F0aW9uLCBjZXJ0UGVtKSxcbiAgICAgICcnLFxuICAgICAgJ0FuZCB0aGVuIGFkZCB0byBjb25maWcgZmlsZSAoJyArIHN0b3JhZ2VMb2NhdGlvbiArICcpOicsXG4gICAgICAnICBodHRwczonLFxuICAgICAgYCAgICBrZXk6ICR7cmVzb2x2ZUNvbmZpZ1BhdGgoc3RvcmFnZUxvY2F0aW9uLCBrZXlQZW0pfWAsXG4gICAgICBgICAgIGNlcnQ6ICR7cmVzb2x2ZUNvbmZpZ1BhdGgoc3RvcmFnZUxvY2F0aW9uLCBjZXJ0UGVtKX1gLFxuICAgIF0uam9pbignXFxuJylcbiAgKTtcbiAgcHJvY2Vzcy5leGl0KDIpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVIVFRQUyhhcHA6IGV4cHJlc3MuQXBwbGljYXRpb24sIGNvbmZpZ1BhdGg6IHN0cmluZywgY29uZmlnOiBDb25maWdXaXRoSHR0cHMpOiBodHRwcy5TZXJ2ZXIge1xuICB0cnkge1xuICAgIGxldCBodHRwc09wdGlvbnMgPSB7XG4gICAgICBzZWN1cmVPcHRpb25zOiBjb25zdGFudHMuU1NMX09QX05PX1NTTHYyIHwgY29uc3RhbnRzLlNTTF9PUF9OT19TU0x2MywgLy8gZGlzYWJsZSBpbnNlY3VyZSBTU0x2MiBhbmQgU1NMdjNcbiAgICB9O1xuXG4gICAgY29uc3Qga2V5Q2VydENvbmZpZyA9IGNvbmZpZy5odHRwcyBhcyBIdHRwc0NvbmZLZXlDZXJ0O1xuICAgIGNvbnN0IHBmeENvbmZpZyA9IGNvbmZpZy5odHRwcyBhcyBIdHRwc0NvbmZQZng7XG5cbiAgICAvLyBodHRwcyBtdXN0IGVpdGhlciBoYXZlIGtleSBhbmQgY2VydCBvciBhIHBmeCBhbmQgKG9wdGlvbmFsbHkpIGEgcGFzc3BocmFzZVxuICAgIGlmICghKChrZXlDZXJ0Q29uZmlnLmtleSAmJiBrZXlDZXJ0Q29uZmlnLmNlcnQpIHx8IHBmeENvbmZpZy5wZngpKSB7XG4gICAgICBsb2dIVFRQU1dhcm5pbmcoY29uZmlnUGF0aCk7XG4gICAgfVxuXG4gICAgaWYgKHBmeENvbmZpZy5wZngpIHtcbiAgICAgIGNvbnN0IHsgcGZ4LCBwYXNzcGhyYXNlIH0gPSBwZnhDb25maWc7XG4gICAgICBodHRwc09wdGlvbnMgPSBhc3NpZ24oaHR0cHNPcHRpb25zLCB7XG4gICAgICAgIHBmeDogZnMucmVhZEZpbGVTeW5jKHBmeCksXG4gICAgICAgIHBhc3NwaHJhc2U6IHBhc3NwaHJhc2UgfHwgJycsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgeyBrZXksIGNlcnQsIGNhIH0gPSBrZXlDZXJ0Q29uZmlnO1xuICAgICAgaHR0cHNPcHRpb25zID0gYXNzaWduKGh0dHBzT3B0aW9ucywge1xuICAgICAgICBrZXk6IGZzLnJlYWRGaWxlU3luYyhrZXkpLFxuICAgICAgICBjZXJ0OiBmcy5yZWFkRmlsZVN5bmMoY2VydCksXG4gICAgICAgIC4uLihjYSAmJiB7XG4gICAgICAgICAgY2E6IGZzLnJlYWRGaWxlU3luYyhjYSksXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBodHRwcy5jcmVhdGVTZXJ2ZXIoaHR0cHNPcHRpb25zLCBhcHApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBjYXRjaCBlcnJvcnMgcmVsYXRlZCB0byBjZXJ0aWZpY2F0ZSBsb2FkaW5nXG4gICAgbG9nZ2VyLmxvZ2dlci5mYXRhbCh7IGVycjogZXJyIH0sICdjYW5ub3QgY3JlYXRlIHNlcnZlcjogQHtlcnIubWVzc2FnZX0nKTtcbiAgICBwcm9jZXNzLmV4aXQoMik7XG4gIH1cbn1cblxuZnVuY3Rpb24gbGlzdGVuRGVmYXVsdENhbGxiYWNrKHdlYlNlcnZlcjogQXBwbGljYXRpb24sIGFkZHI6IGFueSwgcGtnTmFtZTogc3RyaW5nLCBwa2dWZXJzaW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3Qgc2VydmVyID0gd2ViU2VydmVyXG4gICAgLmxpc3RlbihhZGRyLnBvcnQgfHwgYWRkci5wYXRoLCBhZGRyLmhvc3QsICgpOiB2b2lkID0+IHtcbiAgICAgIC8vIHNlbmQgYSBtZXNzYWdlIGZvciB0ZXN0c1xuICAgICAgaWYgKGlzRnVuY3Rpb24ocHJvY2Vzcy5zZW5kKSkge1xuICAgICAgICBwcm9jZXNzLnNlbmQoe1xuICAgICAgICAgIHZlcmRhY2Npb19zdGFydGVkOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKTogdm9pZCB7XG4gICAgICBsb2dnZXIubG9nZ2VyLmZhdGFsKHsgZXJyOiBlcnIgfSwgJ2Nhbm5vdCBjcmVhdGUgc2VydmVyOiBAe2Vyci5tZXNzYWdlfScpO1xuICAgICAgcHJvY2Vzcy5leGl0KDIpO1xuICAgIH0pO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZVNodXRkb3duR3JhY2VmdWxseSgpIHtcbiAgICBsb2dnZXIubG9nZ2VyLmZhdGFsKCdyZWNlaXZlZCBzaHV0ZG93biBzaWduYWwgLSBjbG9zaW5nIHNlcnZlciBncmFjZWZ1bGx5Li4uJyk7XG4gICAgc2VydmVyLmNsb3NlKCgpID0+IHtcbiAgICAgIGxvZ2dlci5sb2dnZXIuaW5mbygnc2VydmVyIGNsb3NlZC4nKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGhhbmRsZSBzaHV0ZG93biBzaWduYWxzIG5pY2VseSB3aGVuIGVudmlyb25tZW50IHNheXMgc29cbiAgaWYgKHByb2Nlc3MuZW52LlZFUkRBQ0NJT19IQU5ETEVfS0lMTF9TSUdOQUxTID09PSAndHJ1ZScpIHtcbiAgICBwcm9jZXNzLm9uKCdTSUdJTlQnLCBoYW5kbGVTaHV0ZG93bkdyYWNlZnVsbHkpO1xuICAgIHByb2Nlc3Mub24oJ1NJR1RFUk0nLCBoYW5kbGVTaHV0ZG93bkdyYWNlZnVsbHkpO1xuICAgIHByb2Nlc3Mub24oJ1NJR0hVUCcsIGhhbmRsZVNodXRkb3duR3JhY2VmdWxseSk7XG4gIH1cblxuICBsb2dnZXIubG9nZ2VyLndhcm4oXG4gICAge1xuICAgICAgYWRkcjogYWRkci5wYXRoXG4gICAgICAgID8gVVJMLmZvcm1hdCh7XG4gICAgICAgICAgICBwcm90b2NvbDogJ3VuaXgnLFxuICAgICAgICAgICAgcGF0aG5hbWU6IGFkZHIucGF0aCxcbiAgICAgICAgICB9KVxuICAgICAgICA6IFVSTC5mb3JtYXQoe1xuICAgICAgICAgICAgcHJvdG9jb2w6IGFkZHIucHJvdG8sXG4gICAgICAgICAgICBob3N0bmFtZTogYWRkci5ob3N0LFxuICAgICAgICAgICAgcG9ydDogYWRkci5wb3J0LFxuICAgICAgICAgICAgcGF0aG5hbWU6ICcvJyxcbiAgICAgICAgICB9KSxcbiAgICAgIHZlcnNpb246IHBrZ05hbWUgKyAnLycgKyBwa2dWZXJzaW9uLFxuICAgIH0sXG4gICAgJ2h0dHAgYWRkcmVzcyAtIEB7YWRkcn0gLSBAe3ZlcnNpb259J1xuICApO1xufVxuXG5leHBvcnQgeyBzdGFydFZlcmRhY2NpbywgbGlzdGVuRGVmYXVsdENhbGxiYWNrIH07XG4iXX0=
@@ -6,10 +6,10 @@ var _info = require("./commands/info");
6
6
 
7
7
  var _init = require("./commands/init");
8
8
 
9
- var _utils = require("./utils");
10
-
11
9
  var _version = require("./commands/version");
12
10
 
11
+ var _utils = require("./utils");
12
+
13
13
  require('pkginfo')(module);
14
14
 
15
15
  const pkgVersion = module.exports.version;
@@ -33,4 +33,4 @@ cli.register(_info.InfoCommand);
33
33
  cli.register(_init.InitCommand);
34
34
  cli.register(_version.VersionCommand);
35
35
  cli.runExit(args, _clipanion.Cli.defaultContext);
36
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY2xpL2NsaS50cyJdLCJuYW1lcyI6WyJyZXF1aXJlIiwibW9kdWxlIiwicGtnVmVyc2lvbiIsImV4cG9ydHMiLCJ2ZXJzaW9uIiwicHJvY2VzcyIsImdldHVpZCIsImVtaXRXYXJuaW5nIiwiRXJyb3IiLCJNSU5fTk9ERV9WRVJTSU9OIiwibm9kZSIsImFwcCIsImFyZ3MiLCJhcmd2IiwiY2xpIiwiQ2xpIiwiYmluYXJ5TGFiZWwiLCJiaW5hcnlOYW1lIiwiYmluYXJ5VmVyc2lvbiIsInJlZ2lzdGVyIiwiSW5mb0NvbW1hbmQiLCJJbml0Q29tbWFuZCIsIlZlcnNpb25Db21tYW5kIiwicnVuRXhpdCIsImRlZmF1bHRDb250ZXh0Il0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBQSxPQUFPLENBQUMsU0FBRCxDQUFQLENBQW1CQyxNQUFuQjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE1BQU0sQ0FBQ0UsT0FBUCxDQUFlQyxPQUFsQzs7QUFFQSxJQUFJQyxPQUFPLENBQUNDLE1BQVIsSUFBa0JELE9BQU8sQ0FBQ0MsTUFBUixPQUFxQixDQUEzQyxFQUE4QztBQUM1Q0QsRUFBQUEsT0FBTyxDQUFDRSxXQUFSLENBQXFCLHNFQUFyQjtBQUNEOztBQUVELElBQUksQ0FBQywyQkFBZUYsT0FBTyxDQUFDRCxPQUF2QixDQUFMLEVBQXNDO0FBQ3BDLFFBQU0sSUFBSUksS0FBSixDQUNILHdDQUF1Q0MsdUJBQWlCLHFDQUFvQ0osT0FBTyxDQUFDRCxPQUFRO0FBQ2pILDZDQUZRLENBQU47QUFJRDs7QUFFRCxNQUFNLENBQUNNLElBQUQsRUFBT0MsR0FBUCxFQUFZLEdBQUdDLElBQWYsSUFBdUJQLE9BQU8sQ0FBQ1EsSUFBckM7QUFFQSxNQUFNQyxHQUFHLEdBQUcsSUFBSUMsY0FBSixDQUFRO0FBQ2xCQyxFQUFBQSxXQUFXLEVBQUcsV0FESTtBQUVsQkMsRUFBQUEsVUFBVSxFQUFHLEdBQUVQLElBQUssSUFBR0MsR0FBSSxFQUZUO0FBR2xCTyxFQUFBQSxhQUFhLEVBQUVoQjtBQUhHLENBQVIsQ0FBWjtBQU1BWSxHQUFHLENBQUNLLFFBQUosQ0FBYUMsaUJBQWI7QUFDQU4sR0FBRyxDQUFDSyxRQUFKLENBQWFFLGlCQUFiO0FBQ0FQLEdBQUcsQ0FBQ0ssUUFBSixDQUFhRyx1QkFBYjtBQUNBUixHQUFHLENBQUNTLE9BQUosQ0FBWVgsSUFBWixFQUFrQkcsZUFBSVMsY0FBdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGkgfSBmcm9tICdjbGlwYW5pb24nO1xuaW1wb3J0IHsgSW5mb0NvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL2luZm8nO1xuaW1wb3J0IHsgSW5pdENvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL2luaXQnO1xuaW1wb3J0IHsgaXNWZXJzaW9uVmFsaWQsIE1JTl9OT0RFX1ZFUlNJT04gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFZlcnNpb25Db21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy92ZXJzaW9uJztcblxucmVxdWlyZSgncGtnaW5mbycpKG1vZHVsZSk7XG5jb25zdCBwa2dWZXJzaW9uID0gbW9kdWxlLmV4cG9ydHMudmVyc2lvbjtcblxuaWYgKHByb2Nlc3MuZ2V0dWlkICYmIHByb2Nlc3MuZ2V0dWlkKCkgPT09IDApIHtcbiAgcHJvY2Vzcy5lbWl0V2FybmluZyhgVmVyZGFjY2lvIGRvZXNuJ3QgbmVlZCBzdXBlcnVzZXIgcHJpdmlsZWdlcy4gZG9uJ3QgcnVuIGl0IHVuZGVyIHJvb3RgKTtcbn1cblxuaWYgKCFpc1ZlcnNpb25WYWxpZChwcm9jZXNzLnZlcnNpb24pKSB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgVmVyZGFjY2lvIHJlcXVpcmVzIGF0IGxlYXN0IE5vZGUuanMgdiR7TUlOX05PREVfVkVSU0lPTn0gb3IgaGlnaGVyIGFuZCB5b3UgaGF2ZSBpbnN0YWxsZWQgJHtwcm9jZXNzLnZlcnNpb259LCBcbiAgICBwbGVhc2UgdXBncmFkZSB5b3VyIE5vZGUuanMgZGlzdHJpYnV0aW9uYFxuICApO1xufVxuXG5jb25zdCBbbm9kZSwgYXBwLCAuLi5hcmdzXSA9IHByb2Nlc3MuYXJndjtcblxuY29uc3QgY2xpID0gbmV3IENsaSh7XG4gIGJpbmFyeUxhYmVsOiBgdmVyZGFjY2lvYCxcbiAgYmluYXJ5TmFtZTogYCR7bm9kZX0gJHthcHB9YCxcbiAgYmluYXJ5VmVyc2lvbjogcGtnVmVyc2lvbixcbn0pO1xuXG5jbGkucmVnaXN0ZXIoSW5mb0NvbW1hbmQpO1xuY2xpLnJlZ2lzdGVyKEluaXRDb21tYW5kKTtcbmNsaS5yZWdpc3RlcihWZXJzaW9uQ29tbWFuZCk7XG5jbGkucnVuRXhpdChhcmdzLCBDbGkuZGVmYXVsdENvbnRleHQpO1xuIl19
36
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY2xpL2NsaS50cyJdLCJuYW1lcyI6WyJyZXF1aXJlIiwibW9kdWxlIiwicGtnVmVyc2lvbiIsImV4cG9ydHMiLCJ2ZXJzaW9uIiwicHJvY2VzcyIsImdldHVpZCIsImVtaXRXYXJuaW5nIiwiRXJyb3IiLCJNSU5fTk9ERV9WRVJTSU9OIiwibm9kZSIsImFwcCIsImFyZ3MiLCJhcmd2IiwiY2xpIiwiQ2xpIiwiYmluYXJ5TGFiZWwiLCJiaW5hcnlOYW1lIiwiYmluYXJ5VmVyc2lvbiIsInJlZ2lzdGVyIiwiSW5mb0NvbW1hbmQiLCJJbml0Q29tbWFuZCIsIlZlcnNpb25Db21tYW5kIiwicnVuRXhpdCIsImRlZmF1bHRDb250ZXh0Il0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUVBQSxPQUFPLENBQUMsU0FBRCxDQUFQLENBQW1CQyxNQUFuQjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE1BQU0sQ0FBQ0UsT0FBUCxDQUFlQyxPQUFsQzs7QUFFQSxJQUFJQyxPQUFPLENBQUNDLE1BQVIsSUFBa0JELE9BQU8sQ0FBQ0MsTUFBUixPQUFxQixDQUEzQyxFQUE4QztBQUM1Q0QsRUFBQUEsT0FBTyxDQUFDRSxXQUFSLENBQXFCLHNFQUFyQjtBQUNEOztBQUVELElBQUksQ0FBQywyQkFBZUYsT0FBTyxDQUFDRCxPQUF2QixDQUFMLEVBQXNDO0FBQ3BDLFFBQU0sSUFBSUksS0FBSixDQUNILHdDQUF1Q0MsdUJBQWlCLHFDQUFvQ0osT0FBTyxDQUFDRCxPQUFRO0FBQ2pILDZDQUZRLENBQU47QUFJRDs7QUFFRCxNQUFNLENBQUNNLElBQUQsRUFBT0MsR0FBUCxFQUFZLEdBQUdDLElBQWYsSUFBdUJQLE9BQU8sQ0FBQ1EsSUFBckM7QUFFQSxNQUFNQyxHQUFHLEdBQUcsSUFBSUMsY0FBSixDQUFRO0FBQ2xCQyxFQUFBQSxXQUFXLEVBQUcsV0FESTtBQUVsQkMsRUFBQUEsVUFBVSxFQUFHLEdBQUVQLElBQUssSUFBR0MsR0FBSSxFQUZUO0FBR2xCTyxFQUFBQSxhQUFhLEVBQUVoQjtBQUhHLENBQVIsQ0FBWjtBQU1BWSxHQUFHLENBQUNLLFFBQUosQ0FBYUMsaUJBQWI7QUFDQU4sR0FBRyxDQUFDSyxRQUFKLENBQWFFLGlCQUFiO0FBQ0FQLEdBQUcsQ0FBQ0ssUUFBSixDQUFhRyx1QkFBYjtBQUNBUixHQUFHLENBQUNTLE9BQUosQ0FBWVgsSUFBWixFQUFrQkcsZUFBSVMsY0FBdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGkgfSBmcm9tICdjbGlwYW5pb24nO1xuXG5pbXBvcnQgeyBJbmZvQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvaW5mbyc7XG5pbXBvcnQgeyBJbml0Q29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvaW5pdCc7XG5pbXBvcnQgeyBWZXJzaW9uQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvdmVyc2lvbic7XG5pbXBvcnQgeyBNSU5fTk9ERV9WRVJTSU9OLCBpc1ZlcnNpb25WYWxpZCB9IGZyb20gJy4vdXRpbHMnO1xuXG5yZXF1aXJlKCdwa2dpbmZvJykobW9kdWxlKTtcbmNvbnN0IHBrZ1ZlcnNpb24gPSBtb2R1bGUuZXhwb3J0cy52ZXJzaW9uO1xuXG5pZiAocHJvY2Vzcy5nZXR1aWQgJiYgcHJvY2Vzcy5nZXR1aWQoKSA9PT0gMCkge1xuICBwcm9jZXNzLmVtaXRXYXJuaW5nKGBWZXJkYWNjaW8gZG9lc24ndCBuZWVkIHN1cGVydXNlciBwcml2aWxlZ2VzLiBkb24ndCBydW4gaXQgdW5kZXIgcm9vdGApO1xufVxuXG5pZiAoIWlzVmVyc2lvblZhbGlkKHByb2Nlc3MudmVyc2lvbikpIHtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBWZXJkYWNjaW8gcmVxdWlyZXMgYXQgbGVhc3QgTm9kZS5qcyB2JHtNSU5fTk9ERV9WRVJTSU9OfSBvciBoaWdoZXIgYW5kIHlvdSBoYXZlIGluc3RhbGxlZCAke3Byb2Nlc3MudmVyc2lvbn0sIFxuICAgIHBsZWFzZSB1cGdyYWRlIHlvdXIgTm9kZS5qcyBkaXN0cmlidXRpb25gXG4gICk7XG59XG5cbmNvbnN0IFtub2RlLCBhcHAsIC4uLmFyZ3NdID0gcHJvY2Vzcy5hcmd2O1xuXG5jb25zdCBjbGkgPSBuZXcgQ2xpKHtcbiAgYmluYXJ5TGFiZWw6IGB2ZXJkYWNjaW9gLFxuICBiaW5hcnlOYW1lOiBgJHtub2RlfSAke2FwcH1gLFxuICBiaW5hcnlWZXJzaW9uOiBwa2dWZXJzaW9uLFxufSk7XG5cbmNsaS5yZWdpc3RlcihJbmZvQ29tbWFuZCk7XG5jbGkucmVnaXN0ZXIoSW5pdENvbW1hbmQpO1xuY2xpLnJlZ2lzdGVyKFZlcnNpb25Db21tYW5kKTtcbmNsaS5ydW5FeGl0KGFyZ3MsIENsaS5kZWZhdWx0Q29udGV4dCk7XG4iXX0=
@@ -5,10 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.InfoCommand = void 0;
7
7
 
8
- var _envinfo = _interopRequireDefault(require("envinfo"));
9
-
10
8
  var _clipanion = require("clipanion");
11
9
 
10
+ var _envinfo = _interopRequireDefault(require("envinfo"));
11
+
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
13
 
14
14
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -32,4 +32,4 @@ class InfoCommand extends _clipanion.Command {
32
32
  exports.InfoCommand = InfoCommand;
33
33
 
34
34
  _defineProperty(InfoCommand, "paths", [[`--info`], [`-i`]]);
35
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY2xpL2NvbW1hbmRzL2luZm8udHMiXSwibmFtZXMiOlsiSW5mb0NvbW1hbmQiLCJDb21tYW5kIiwiZXhlY3V0ZSIsImNvbnRleHQiLCJzdGRvdXQiLCJ3cml0ZSIsImRhdGEiLCJlbnZpbmZvIiwicnVuIiwiU3lzdGVtIiwiQmluYXJpZXMiLCJWaXJ0dWFsaXphdGlvbiIsIkJyb3dzZXJzIiwibnBtR2xvYmFsUGFja2FnZXMiLCJwcm9jZXNzIiwiZXhpdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOzs7Ozs7QUFFTyxNQUFNQSxXQUFOLFNBQTBCQyxrQkFBMUIsQ0FBa0M7QUFHMUIsUUFBUEMsT0FBTyxHQUFHO0FBQ2QsU0FBS0MsT0FBTCxDQUFhQyxNQUFiLENBQW9CQyxLQUFwQixDQUEwQixxQkFBMUI7QUFDQSxVQUFNQyxJQUFJLEdBQUcsTUFBTUMsaUJBQVFDLEdBQVIsQ0FBWTtBQUM3QkMsTUFBQUEsTUFBTSxFQUFFLENBQUMsSUFBRCxFQUFPLEtBQVAsQ0FEcUI7QUFFN0JDLE1BQUFBLFFBQVEsRUFBRSxDQUFDLE1BQUQsRUFBUyxNQUFULEVBQWlCLEtBQWpCLEVBQXdCLE1BQXhCLENBRm1CO0FBRzdCQyxNQUFBQSxjQUFjLEVBQUUsQ0FBQyxRQUFELENBSGE7QUFJN0JDLE1BQUFBLFFBQVEsRUFBRSxDQUFDLFFBQUQsRUFBVyxNQUFYLEVBQW1CLFNBQW5CLEVBQThCLFFBQTlCLENBSm1CO0FBSzdCQyxNQUFBQSxpQkFBaUIsRUFBRSxDQUFDLFdBQUQ7QUFMVSxLQUFaLENBQW5CO0FBUUEsU0FBS1YsT0FBTCxDQUFhQyxNQUFiLENBQW9CQyxLQUFwQixDQUEwQkMsSUFBMUI7QUFDQVEsSUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWEsQ0FBYjtBQUNEOztBQWZzQzs7OztnQkFBNUJmLFcsV0FDSSxDQUFDLENBQUUsUUFBRixDQUFELEVBQWEsQ0FBRSxJQUFGLENBQWIsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlbnZpbmZvIGZyb20gJ2VudmluZm8nO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NsaXBhbmlvbic7XG5cbmV4cG9ydCBjbGFzcyBJbmZvQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICBzdGF0aWMgcGF0aHMgPSBbW2AtLWluZm9gXSwgW2AtaWBdXTtcblxuICBhc3luYyBleGVjdXRlKCkge1xuICAgIHRoaXMuY29udGV4dC5zdGRvdXQud3JpdGUoJ1xcbkVudmlyb25tZW50IEluZm86Jyk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGVudmluZm8ucnVuKHtcbiAgICAgIFN5c3RlbTogWydPUycsICdDUFUnXSxcbiAgICAgIEJpbmFyaWVzOiBbJ25vZGUnLCAneWFybicsICducG0nLCAncG5wbSddLFxuICAgICAgVmlydHVhbGl6YXRpb246IFsnRG9ja2VyJ10sXG4gICAgICBCcm93c2VyczogWydDaHJvbWUnLCAnRWRnZScsICdGaXJlZm94JywgJ1NhZmFyaSddLFxuICAgICAgbnBtR2xvYmFsUGFja2FnZXM6IFsndmVyZGFjY2lvJ10sXG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbnRleHQuc3Rkb3V0LndyaXRlKGRhdGEpO1xuICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgfVxufVxuIl19
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY2xpL2NvbW1hbmRzL2luZm8udHMiXSwibmFtZXMiOlsiSW5mb0NvbW1hbmQiLCJDb21tYW5kIiwiZXhlY3V0ZSIsImNvbnRleHQiLCJzdGRvdXQiLCJ3cml0ZSIsImRhdGEiLCJlbnZpbmZvIiwicnVuIiwiU3lzdGVtIiwiQmluYXJpZXMiLCJWaXJ0dWFsaXphdGlvbiIsIkJyb3dzZXJzIiwibnBtR2xvYmFsUGFja2FnZXMiLCJwcm9jZXNzIiwiZXhpdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOzs7Ozs7QUFFTyxNQUFNQSxXQUFOLFNBQTBCQyxrQkFBMUIsQ0FBa0M7QUFHMUIsUUFBUEMsT0FBTyxHQUFHO0FBQ2QsU0FBS0MsT0FBTCxDQUFhQyxNQUFiLENBQW9CQyxLQUFwQixDQUEwQixxQkFBMUI7QUFDQSxVQUFNQyxJQUFJLEdBQUcsTUFBTUMsaUJBQVFDLEdBQVIsQ0FBWTtBQUM3QkMsTUFBQUEsTUFBTSxFQUFFLENBQUMsSUFBRCxFQUFPLEtBQVAsQ0FEcUI7QUFFN0JDLE1BQUFBLFFBQVEsRUFBRSxDQUFDLE1BQUQsRUFBUyxNQUFULEVBQWlCLEtBQWpCLEVBQXdCLE1BQXhCLENBRm1CO0FBRzdCQyxNQUFBQSxjQUFjLEVBQUUsQ0FBQyxRQUFELENBSGE7QUFJN0JDLE1BQUFBLFFBQVEsRUFBRSxDQUFDLFFBQUQsRUFBVyxNQUFYLEVBQW1CLFNBQW5CLEVBQThCLFFBQTlCLENBSm1CO0FBSzdCQyxNQUFBQSxpQkFBaUIsRUFBRSxDQUFDLFdBQUQ7QUFMVSxLQUFaLENBQW5CO0FBUUEsU0FBS1YsT0FBTCxDQUFhQyxNQUFiLENBQW9CQyxLQUFwQixDQUEwQkMsSUFBMUI7QUFDQVEsSUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWEsQ0FBYjtBQUNEOztBQWZzQzs7OztnQkFBNUJmLFcsV0FDSSxDQUFDLENBQUUsUUFBRixDQUFELEVBQWEsQ0FBRSxJQUFGLENBQWIsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjbGlwYW5pb24nO1xuaW1wb3J0IGVudmluZm8gZnJvbSAnZW52aW5mbyc7XG5cbmV4cG9ydCBjbGFzcyBJbmZvQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICBzdGF0aWMgcGF0aHMgPSBbW2AtLWluZm9gXSwgW2AtaWBdXTtcblxuICBhc3luYyBleGVjdXRlKCkge1xuICAgIHRoaXMuY29udGV4dC5zdGRvdXQud3JpdGUoJ1xcbkVudmlyb25tZW50IEluZm86Jyk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGVudmluZm8ucnVuKHtcbiAgICAgIFN5c3RlbTogWydPUycsICdDUFUnXSxcbiAgICAgIEJpbmFyaWVzOiBbJ25vZGUnLCAneWFybicsICducG0nLCAncG5wbSddLFxuICAgICAgVmlydHVhbGl6YXRpb246IFsnRG9ja2VyJ10sXG4gICAgICBCcm93c2VyczogWydDaHJvbWUnLCAnRWRnZScsICdGaXJlZm94JywgJ1NhZmFyaSddLFxuICAgICAgbnBtR2xvYmFsUGFja2FnZXM6IFsndmVyZGFjY2lvJ10sXG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbnRleHQuc3Rkb3V0LndyaXRlKGRhdGEpO1xuICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgfVxufVxuIl19
@@ -5,10 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.InitCommand = exports.DEFAULT_PROCESS_NAME = void 0;
7
7
 
8
- var _path = _interopRequireDefault(require("path"));
9
-
10
8
  var _clipanion = require("clipanion");
11
9
 
10
+ var _path = _interopRequireDefault(require("path"));
11
+
12
12
  var _bootstrap = require("../../bootstrap");
13
13
 
14
14
  var _configPath = _interopRequireDefault(require("../../config-path"));
@@ -95,4 +95,4 @@ _defineProperty(InitCommand, "usage", _clipanion.Command.Usage({
95
95
  `,
96
96
  examples: [[`Runs the server with the default configuration`, `verdaccio`], [`Runs the server in the port 5000`, `verdaccio --listen 5000`], [`Runs the server by using a different absolute location of the configuration file`, `verdaccio --config /home/user/verdaccio/config.yaml`]]
97
97
  }));
98
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY2xpL2NvbW1hbmRzL2luaXQudHMiXSwibmFtZXMiOlsicmVxdWlyZSIsIm1vZHVsZSIsInBrZ1ZlcnNpb24iLCJleHBvcnRzIiwidmVyc2lvbiIsInBrZ05hbWUiLCJuYW1lIiwiREVGQVVMVF9QUk9DRVNTX05BTUUiLCJsb2dnZXIiLCJJbml0Q29tbWFuZCIsIkNvbW1hbmQiLCJPcHRpb24iLCJTdHJpbmciLCJkZXNjcmlwdGlvbiIsImV4ZWN1dGUiLCJjb25maWdQYXRoTG9jYXRpb24iLCJjb25maWciLCJ2ZXJkYWNjaW9Db25maWd1cmF0aW9uIiwic2VsZl9wYXRoIiwicGF0aCIsInJlc29sdmUiLCJodHRwcyIsImVuYWJsZSIsIndhcm4iLCJmaWxlIiwicHJvY2VzcyIsInRpdGxlIiwid2ViIiwibGlzdGVuIiwibGlzdGVuRGVmYXVsdENhbGxiYWNrIiwiZXJyIiwiZmF0YWwiLCJleGl0IiwiRGVmYXVsdCIsIlVzYWdlIiwiZGV0YWlscyIsImV4YW1wbGVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBQSxPQUFPLENBQUMsU0FBRCxDQUFQLENBQW1CQyxNQUFuQjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE1BQU0sQ0FBQ0UsT0FBUCxDQUFlQyxPQUFsQztBQUNBLE1BQU1DLE9BQU8sR0FBR0osTUFBTSxDQUFDRSxPQUFQLENBQWVHLElBQS9CO0FBRU8sTUFBTUMsb0JBQTRCLEdBQUcsV0FBckM7OztBQUNQLE1BQU1DLE1BQU0sR0FBR1IsT0FBTyxDQUFDLGNBQUQsQ0FBdEI7O0FBRU8sTUFBTVMsV0FBTixTQUEwQkMsa0JBQTFCLENBQWtDO0FBQUE7QUFBQTs7QUFBQSxvQ0FHOUJDLGtCQUFPQyxNQUFQLENBQWMsYUFBZCxFQUE2QjtBQUNwQ0MsTUFBQUEsV0FBVyxFQUFFO0FBRHVCLEtBQTdCLENBSDhCOztBQUFBLG9DQThCOUJGLGtCQUFPQyxNQUFQLENBQWMsYUFBZCxFQUE2QjtBQUNwQ0MsTUFBQUEsV0FBVyxFQUFFO0FBRHVCLEtBQTdCLENBOUI4QjtBQUFBOztBQWtDMUIsUUFBUEMsT0FBTyxHQUFHO0FBQ2QsUUFBSUMsa0JBQUo7O0FBQ0EsUUFBSTtBQUNGQSxNQUFBQSxrQkFBa0IsR0FBRyx5QkFBZSxLQUFLQyxNQUFwQixDQUFyQjtBQUNBLFlBQU1DLHNCQUFzQixHQUFHLDRCQUFnQkYsa0JBQWhCLENBQS9COztBQUNBLFVBQUksQ0FBQ0Usc0JBQXNCLENBQUNDLFNBQTVCLEVBQXVDO0FBQ3JDRCxRQUFBQSxzQkFBc0IsQ0FBQ0MsU0FBdkIsR0FBbUNDLGNBQUtDLE9BQUwsQ0FBYUwsa0JBQWIsQ0FBbkM7QUFDRDs7QUFDRCxVQUFJLENBQUNFLHNCQUFzQixDQUFDSSxLQUE1QixFQUFtQztBQUNqQ0osUUFBQUEsc0JBQXNCLENBQUNJLEtBQXZCLEdBQStCO0FBQUVDLFVBQUFBLE1BQU0sRUFBRTtBQUFWLFNBQS9CO0FBQ0Q7O0FBRURkLE1BQUFBLE1BQU0sQ0FBQ0EsTUFBUCxDQUFjZSxJQUFkLENBQW1CO0FBQUVDLFFBQUFBLElBQUksRUFBRVQ7QUFBUixPQUFuQixFQUFpRCx3QkFBakQ7QUFDQVUsTUFBQUEsT0FBTyxDQUFDQyxLQUFSLEdBQWlCVCxzQkFBc0IsQ0FBQ1UsR0FBdkIsSUFBOEJWLHNCQUFzQixDQUFDVSxHQUF2QixDQUEyQkQsS0FBMUQsSUFBb0UsV0FBcEY7QUFFQSxxQ0FBZVQsc0JBQWYsRUFBdUMsS0FBS1csTUFBNUMsRUFBOERiLGtCQUE5RCxFQUFrRmIsVUFBbEYsRUFBOEZHLE9BQTlGLEVBQXVHd0IsZ0NBQXZHO0FBQ0QsS0FkRCxDQWNFLE9BQU9DLEdBQVAsRUFBWTtBQUNadEIsTUFBQUEsTUFBTSxDQUFDQSxNQUFQLENBQWN1QixLQUFkLENBQW9CO0FBQUVQLFFBQUFBLElBQUksRUFBRVQsa0JBQVI7QUFBNEJlLFFBQUFBLEdBQUcsRUFBRUE7QUFBakMsT0FBcEIsRUFBNEQsa0RBQTVEO0FBQ0FMLE1BQUFBLE9BQU8sQ0FBQ08sSUFBUixDQUFhLENBQWI7QUFDRDtBQUNGOztBQXREc0M7Ozs7Z0JBQTVCdkIsVyxXQUNJLENBQUNDLG1CQUFRdUIsT0FBVCxDOztnQkFESnhCLFcsV0FRSUMsbUJBQVF3QixLQUFSLENBQWM7QUFDM0JyQixFQUFBQSxXQUFXLEVBQUcsbUJBRGE7QUFFM0JzQixFQUFBQSxPQUFPLEVBQUc7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FkK0I7QUFlM0JDLEVBQUFBLFFBQVEsRUFBRSxDQUNSLENBQUUsZ0RBQUYsRUFBb0QsV0FBcEQsQ0FEUSxFQUVSLENBQUUsa0NBQUYsRUFBc0MseUJBQXRDLENBRlEsRUFHUixDQUFFLGtGQUFGLEVBQXNGLHFEQUF0RixDQUhRO0FBZmlCLENBQWQsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ29tbWFuZCwgT3B0aW9uIH0gZnJvbSAnY2xpcGFuaW9uJztcblxuaW1wb3J0IHsgc3RhcnRWZXJkYWNjaW8sIGxpc3RlbkRlZmF1bHRDYWxsYmFjayB9IGZyb20gJy4uLy4uL2Jvb3RzdHJhcCc7XG5pbXBvcnQgZmluZENvbmZpZ0ZpbGUgZnJvbSAnLi4vLi4vY29uZmlnLXBhdGgnO1xuaW1wb3J0IHsgcGFyc2VDb25maWdGaWxlIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5yZXF1aXJlKCdwa2dpbmZvJykobW9kdWxlKTtcbmNvbnN0IHBrZ1ZlcnNpb24gPSBtb2R1bGUuZXhwb3J0cy52ZXJzaW9uO1xuY29uc3QgcGtnTmFtZSA9IG1vZHVsZS5leHBvcnRzLm5hbWU7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BST0NFU1NfTkFNRTogc3RyaW5nID0gJ3ZlcmRhY2Npbyc7XG5jb25zdCBsb2dnZXIgPSByZXF1aXJlKCcuLi8uLi9sb2dnZXInKTtcblxuZXhwb3J0IGNsYXNzIEluaXRDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gIHN0YXRpYyBwYXRocyA9IFtDb21tYW5kLkRlZmF1bHRdO1xuXG4gIGxpc3RlbiA9IE9wdGlvbi5TdHJpbmcoJy1sLC0tbGlzdGVuJywge1xuICAgIGRlc2NyaXB0aW9uOiAnaG9zdDpwb3J0IG51bWJlciB0byBsaXN0ZW4gb24gKGRlZmF1bHQ6IGxvY2FsaG9zdDo0ODczKScsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBzdGF0aWMgdXNhZ2UgPSBDb21tYW5kLlVzYWdlKHtcbiAgICBkZXNjcmlwdGlvbjogYGxhdW5jaCB0aGUgc2VydmVyYCxcbiAgICBkZXRhaWxzOiBgXG4gICAgICBUaGlzIHN0YXJ0IHRoZSByZWdpc3RyeSBpbiB0aGUgZGVmYXVsdCBwb3J0LlxuXG4gICAgICBXaGVuIHVzZWQgd2l0aG91dCBhcmd1bWVudHMsIGl0OlxuXG4gICAgICAtIGJvb3RzdHJhcCB0aGUgc2VydmVyIGF0IHRoZSBwb3J0ICBcXGA0ODczXFxgXG5cbiAgICAgIFRoZSBvcHRpb25hbCBhcmd1bWVudHMgYXJlOlxuXG4gICAgICAtIFxcYC0tbGlzdGVuXFxgIHRvIHN3aXRjaCB0aGUgZGVmYXVsdCBzZXJ2ZXIgcG9ydCxcbiAgICAgIC0gXFxgLS1jb25maWdcXGAgdG8gZGVmaW5lIGEgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gcGF0aCBsb2NhdGlvbixcblxuICAgIGAsXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgIFtgUnVucyB0aGUgc2VydmVyIHdpdGggdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbmAsIGB2ZXJkYWNjaW9gXSxcbiAgICAgIFtgUnVucyB0aGUgc2VydmVyIGluIHRoZSBwb3J0IDUwMDBgLCBgdmVyZGFjY2lvIC0tbGlzdGVuIDUwMDBgXSxcbiAgICAgIFtgUnVucyB0aGUgc2VydmVyIGJ5IHVzaW5nIGEgZGlmZmVyZW50IGFic29sdXRlIGxvY2F0aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVgLCBgdmVyZGFjY2lvIC0tY29uZmlnIC9ob21lL3VzZXIvdmVyZGFjY2lvL2NvbmZpZy55YW1sYF0sXG4gICAgXSxcbiAgfSk7XG5cbiAgY29uZmlnID0gT3B0aW9uLlN0cmluZygnLWMsLS1jb25maWcnLCB7XG4gICAgZGVzY3JpcHRpb246ICd1c2UgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUgKGRlZmF1bHQ6IC4vY29uZmlnLnlhbWwpJyxcbiAgfSk7XG5cbiAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICBsZXQgY29uZmlnUGF0aExvY2F0aW9uO1xuICAgIHRyeSB7XG4gICAgICBjb25maWdQYXRoTG9jYXRpb24gPSBmaW5kQ29uZmlnRmlsZSh0aGlzLmNvbmZpZyBhcyBzdHJpbmcpO1xuICAgICAgY29uc3QgdmVyZGFjY2lvQ29uZmlndXJhdGlvbiA9IHBhcnNlQ29uZmlnRmlsZShjb25maWdQYXRoTG9jYXRpb24pO1xuICAgICAgaWYgKCF2ZXJkYWNjaW9Db25maWd1cmF0aW9uLnNlbGZfcGF0aCkge1xuICAgICAgICB2ZXJkYWNjaW9Db25maWd1cmF0aW9uLnNlbGZfcGF0aCA9IHBhdGgucmVzb2x2ZShjb25maWdQYXRoTG9jYXRpb24pO1xuICAgICAgfVxuICAgICAgaWYgKCF2ZXJkYWNjaW9Db25maWd1cmF0aW9uLmh0dHBzKSB7XG4gICAgICAgIHZlcmRhY2Npb0NvbmZpZ3VyYXRpb24uaHR0cHMgPSB7IGVuYWJsZTogZmFsc2UgfTtcbiAgICAgIH1cblxuICAgICAgbG9nZ2VyLmxvZ2dlci53YXJuKHsgZmlsZTogY29uZmlnUGF0aExvY2F0aW9uIH0sICdjb25maWcgZmlsZSAgLSBAe2ZpbGV9Jyk7XG4gICAgICBwcm9jZXNzLnRpdGxlID0gKHZlcmRhY2Npb0NvbmZpZ3VyYXRpb24ud2ViICYmIHZlcmRhY2Npb0NvbmZpZ3VyYXRpb24ud2ViLnRpdGxlKSB8fCAndmVyZGFjY2lvJztcblxuICAgICAgc3RhcnRWZXJkYWNjaW8odmVyZGFjY2lvQ29uZmlndXJhdGlvbiwgdGhpcy5saXN0ZW4gYXMgc3RyaW5nLCBjb25maWdQYXRoTG9jYXRpb24sIHBrZ1ZlcnNpb24sIHBrZ05hbWUsIGxpc3RlbkRlZmF1bHRDYWxsYmFjayk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2dnZXIubG9nZ2VyLmZhdGFsKHsgZmlsZTogY29uZmlnUGF0aExvY2F0aW9uLCBlcnI6IGVyciB9LCAnY2Fubm90IG9wZW4gY29uZmlnIGZpbGUgQHtmaWxlfTogQHshZXJyLm1lc3NhZ2V9Jyk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9XG59XG4iXX0=
98
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY2xpL2NvbW1hbmRzL2luaXQudHMiXSwibmFtZXMiOlsicmVxdWlyZSIsIm1vZHVsZSIsInBrZ1ZlcnNpb24iLCJleHBvcnRzIiwidmVyc2lvbiIsInBrZ05hbWUiLCJuYW1lIiwiREVGQVVMVF9QUk9DRVNTX05BTUUiLCJsb2dnZXIiLCJJbml0Q29tbWFuZCIsIkNvbW1hbmQiLCJPcHRpb24iLCJTdHJpbmciLCJkZXNjcmlwdGlvbiIsImV4ZWN1dGUiLCJjb25maWdQYXRoTG9jYXRpb24iLCJjb25maWciLCJ2ZXJkYWNjaW9Db25maWd1cmF0aW9uIiwic2VsZl9wYXRoIiwicGF0aCIsInJlc29sdmUiLCJodHRwcyIsImVuYWJsZSIsIndhcm4iLCJmaWxlIiwicHJvY2VzcyIsInRpdGxlIiwid2ViIiwibGlzdGVuIiwibGlzdGVuRGVmYXVsdENhbGxiYWNrIiwiZXJyIiwiZmF0YWwiLCJleGl0IiwiRGVmYXVsdCIsIlVzYWdlIiwiZGV0YWlscyIsImV4YW1wbGVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBQSxPQUFPLENBQUMsU0FBRCxDQUFQLENBQW1CQyxNQUFuQjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE1BQU0sQ0FBQ0UsT0FBUCxDQUFlQyxPQUFsQztBQUNBLE1BQU1DLE9BQU8sR0FBR0osTUFBTSxDQUFDRSxPQUFQLENBQWVHLElBQS9CO0FBRU8sTUFBTUMsb0JBQTRCLEdBQUcsV0FBckM7OztBQUNQLE1BQU1DLE1BQU0sR0FBR1IsT0FBTyxDQUFDLGNBQUQsQ0FBdEI7O0FBRU8sTUFBTVMsV0FBTixTQUEwQkMsa0JBQTFCLENBQWtDO0FBQUE7QUFBQTs7QUFBQSxvQ0FHOUJDLGtCQUFPQyxNQUFQLENBQWMsYUFBZCxFQUE2QjtBQUNwQ0MsTUFBQUEsV0FBVyxFQUFFO0FBRHVCLEtBQTdCLENBSDhCOztBQUFBLG9DQThCOUJGLGtCQUFPQyxNQUFQLENBQWMsYUFBZCxFQUE2QjtBQUNwQ0MsTUFBQUEsV0FBVyxFQUFFO0FBRHVCLEtBQTdCLENBOUI4QjtBQUFBOztBQWtDMUIsUUFBUEMsT0FBTyxHQUFHO0FBQ2QsUUFBSUMsa0JBQUo7O0FBQ0EsUUFBSTtBQUNGQSxNQUFBQSxrQkFBa0IsR0FBRyx5QkFBZSxLQUFLQyxNQUFwQixDQUFyQjtBQUNBLFlBQU1DLHNCQUFzQixHQUFHLDRCQUFnQkYsa0JBQWhCLENBQS9COztBQUNBLFVBQUksQ0FBQ0Usc0JBQXNCLENBQUNDLFNBQTVCLEVBQXVDO0FBQ3JDRCxRQUFBQSxzQkFBc0IsQ0FBQ0MsU0FBdkIsR0FBbUNDLGNBQUtDLE9BQUwsQ0FBYUwsa0JBQWIsQ0FBbkM7QUFDRDs7QUFDRCxVQUFJLENBQUNFLHNCQUFzQixDQUFDSSxLQUE1QixFQUFtQztBQUNqQ0osUUFBQUEsc0JBQXNCLENBQUNJLEtBQXZCLEdBQStCO0FBQUVDLFVBQUFBLE1BQU0sRUFBRTtBQUFWLFNBQS9CO0FBQ0Q7O0FBRURkLE1BQUFBLE1BQU0sQ0FBQ0EsTUFBUCxDQUFjZSxJQUFkLENBQW1CO0FBQUVDLFFBQUFBLElBQUksRUFBRVQ7QUFBUixPQUFuQixFQUFpRCx3QkFBakQ7QUFDQVUsTUFBQUEsT0FBTyxDQUFDQyxLQUFSLEdBQWlCVCxzQkFBc0IsQ0FBQ1UsR0FBdkIsSUFBOEJWLHNCQUFzQixDQUFDVSxHQUF2QixDQUEyQkQsS0FBMUQsSUFBb0UsV0FBcEY7QUFFQSxxQ0FBZVQsc0JBQWYsRUFBdUMsS0FBS1csTUFBNUMsRUFBOERiLGtCQUE5RCxFQUFrRmIsVUFBbEYsRUFBOEZHLE9BQTlGLEVBQXVHd0IsZ0NBQXZHO0FBQ0QsS0FkRCxDQWNFLE9BQU9DLEdBQVAsRUFBWTtBQUNadEIsTUFBQUEsTUFBTSxDQUFDQSxNQUFQLENBQWN1QixLQUFkLENBQW9CO0FBQUVQLFFBQUFBLElBQUksRUFBRVQsa0JBQVI7QUFBNEJlLFFBQUFBLEdBQUcsRUFBRUE7QUFBakMsT0FBcEIsRUFBNEQsa0RBQTVEO0FBQ0FMLE1BQUFBLE9BQU8sQ0FBQ08sSUFBUixDQUFhLENBQWI7QUFDRDtBQUNGOztBQXREc0M7Ozs7Z0JBQTVCdkIsVyxXQUNJLENBQUNDLG1CQUFRdUIsT0FBVCxDOztnQkFESnhCLFcsV0FRSUMsbUJBQVF3QixLQUFSLENBQWM7QUFDM0JyQixFQUFBQSxXQUFXLEVBQUcsbUJBRGE7QUFFM0JzQixFQUFBQSxPQUFPLEVBQUc7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FkK0I7QUFlM0JDLEVBQUFBLFFBQVEsRUFBRSxDQUNSLENBQUUsZ0RBQUYsRUFBb0QsV0FBcEQsQ0FEUSxFQUVSLENBQUUsa0NBQUYsRUFBc0MseUJBQXRDLENBRlEsRUFHUixDQUFFLGtGQUFGLEVBQXNGLHFEQUF0RixDQUhRO0FBZmlCLENBQWQsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQsIE9wdGlvbiB9IGZyb20gJ2NsaXBhbmlvbic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IHsgbGlzdGVuRGVmYXVsdENhbGxiYWNrLCBzdGFydFZlcmRhY2NpbyB9IGZyb20gJy4uLy4uL2Jvb3RzdHJhcCc7XG5pbXBvcnQgZmluZENvbmZpZ0ZpbGUgZnJvbSAnLi4vLi4vY29uZmlnLXBhdGgnO1xuaW1wb3J0IHsgcGFyc2VDb25maWdGaWxlIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5yZXF1aXJlKCdwa2dpbmZvJykobW9kdWxlKTtcbmNvbnN0IHBrZ1ZlcnNpb24gPSBtb2R1bGUuZXhwb3J0cy52ZXJzaW9uO1xuY29uc3QgcGtnTmFtZSA9IG1vZHVsZS5leHBvcnRzLm5hbWU7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BST0NFU1NfTkFNRTogc3RyaW5nID0gJ3ZlcmRhY2Npbyc7XG5jb25zdCBsb2dnZXIgPSByZXF1aXJlKCcuLi8uLi9sb2dnZXInKTtcblxuZXhwb3J0IGNsYXNzIEluaXRDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7XG4gIHN0YXRpYyBwYXRocyA9IFtDb21tYW5kLkRlZmF1bHRdO1xuXG4gIGxpc3RlbiA9IE9wdGlvbi5TdHJpbmcoJy1sLC0tbGlzdGVuJywge1xuICAgIGRlc2NyaXB0aW9uOiAnaG9zdDpwb3J0IG51bWJlciB0byBsaXN0ZW4gb24gKGRlZmF1bHQ6IGxvY2FsaG9zdDo0ODczKScsXG4gIH0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBzdGF0aWMgdXNhZ2UgPSBDb21tYW5kLlVzYWdlKHtcbiAgICBkZXNjcmlwdGlvbjogYGxhdW5jaCB0aGUgc2VydmVyYCxcbiAgICBkZXRhaWxzOiBgXG4gICAgICBUaGlzIHN0YXJ0IHRoZSByZWdpc3RyeSBpbiB0aGUgZGVmYXVsdCBwb3J0LlxuXG4gICAgICBXaGVuIHVzZWQgd2l0aG91dCBhcmd1bWVudHMsIGl0OlxuXG4gICAgICAtIGJvb3RzdHJhcCB0aGUgc2VydmVyIGF0IHRoZSBwb3J0ICBcXGA0ODczXFxgXG5cbiAgICAgIFRoZSBvcHRpb25hbCBhcmd1bWVudHMgYXJlOlxuXG4gICAgICAtIFxcYC0tbGlzdGVuXFxgIHRvIHN3aXRjaCB0aGUgZGVmYXVsdCBzZXJ2ZXIgcG9ydCxcbiAgICAgIC0gXFxgLS1jb25maWdcXGAgdG8gZGVmaW5lIGEgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gcGF0aCBsb2NhdGlvbixcblxuICAgIGAsXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgIFtgUnVucyB0aGUgc2VydmVyIHdpdGggdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbmAsIGB2ZXJkYWNjaW9gXSxcbiAgICAgIFtgUnVucyB0aGUgc2VydmVyIGluIHRoZSBwb3J0IDUwMDBgLCBgdmVyZGFjY2lvIC0tbGlzdGVuIDUwMDBgXSxcbiAgICAgIFtgUnVucyB0aGUgc2VydmVyIGJ5IHVzaW5nIGEgZGlmZmVyZW50IGFic29sdXRlIGxvY2F0aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVgLCBgdmVyZGFjY2lvIC0tY29uZmlnIC9ob21lL3VzZXIvdmVyZGFjY2lvL2NvbmZpZy55YW1sYF0sXG4gICAgXSxcbiAgfSk7XG5cbiAgY29uZmlnID0gT3B0aW9uLlN0cmluZygnLWMsLS1jb25maWcnLCB7XG4gICAgZGVzY3JpcHRpb246ICd1c2UgdGhpcyBjb25maWd1cmF0aW9uIGZpbGUgKGRlZmF1bHQ6IC4vY29uZmlnLnlhbWwpJyxcbiAgfSk7XG5cbiAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICBsZXQgY29uZmlnUGF0aExvY2F0aW9uO1xuICAgIHRyeSB7XG4gICAgICBjb25maWdQYXRoTG9jYXRpb24gPSBmaW5kQ29uZmlnRmlsZSh0aGlzLmNvbmZpZyBhcyBzdHJpbmcpO1xuICAgICAgY29uc3QgdmVyZGFjY2lvQ29uZmlndXJhdGlvbiA9IHBhcnNlQ29uZmlnRmlsZShjb25maWdQYXRoTG9jYXRpb24pO1xuICAgICAgaWYgKCF2ZXJkYWNjaW9Db25maWd1cmF0aW9uLnNlbGZfcGF0aCkge1xuICAgICAgICB2ZXJkYWNjaW9Db25maWd1cmF0aW9uLnNlbGZfcGF0aCA9IHBhdGgucmVzb2x2ZShjb25maWdQYXRoTG9jYXRpb24pO1xuICAgICAgfVxuICAgICAgaWYgKCF2ZXJkYWNjaW9Db25maWd1cmF0aW9uLmh0dHBzKSB7XG4gICAgICAgIHZlcmRhY2Npb0NvbmZpZ3VyYXRpb24uaHR0cHMgPSB7IGVuYWJsZTogZmFsc2UgfTtcbiAgICAgIH1cblxuICAgICAgbG9nZ2VyLmxvZ2dlci53YXJuKHsgZmlsZTogY29uZmlnUGF0aExvY2F0aW9uIH0sICdjb25maWcgZmlsZSAgLSBAe2ZpbGV9Jyk7XG4gICAgICBwcm9jZXNzLnRpdGxlID0gKHZlcmRhY2Npb0NvbmZpZ3VyYXRpb24ud2ViICYmIHZlcmRhY2Npb0NvbmZpZ3VyYXRpb24ud2ViLnRpdGxlKSB8fCAndmVyZGFjY2lvJztcblxuICAgICAgc3RhcnRWZXJkYWNjaW8odmVyZGFjY2lvQ29uZmlndXJhdGlvbiwgdGhpcy5saXN0ZW4gYXMgc3RyaW5nLCBjb25maWdQYXRoTG9jYXRpb24sIHBrZ1ZlcnNpb24sIHBrZ05hbWUsIGxpc3RlbkRlZmF1bHRDYWxsYmFjayk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2dnZXIubG9nZ2VyLmZhdGFsKHsgZmlsZTogY29uZmlnUGF0aExvY2F0aW9uLCBlcnI6IGVyciB9LCAnY2Fubm90IG9wZW4gY29uZmlnIGZpbGUgQHtmaWxlfTogQHshZXJyLm1lc3NhZ2V9Jyk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -24,4 +24,4 @@ class VersionCommand extends _clipanion.Command {
24
24
  exports.VersionCommand = VersionCommand;
25
25
 
26
26
  _defineProperty(VersionCommand, "paths", [[`--version`], [`-v`]]);
27
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY2xpL2NvbW1hbmRzL3ZlcnNpb24udHMiXSwibmFtZXMiOlsicmVxdWlyZSIsIm1vZHVsZSIsInBrZ1ZlcnNpb24iLCJleHBvcnRzIiwidmVyc2lvbiIsIlZlcnNpb25Db21tYW5kIiwiQ29tbWFuZCIsImV4ZWN1dGUiLCJjb250ZXh0Iiwic3Rkb3V0Iiwid3JpdGUiLCJwcm9jZXNzIiwiZXhpdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBQ0FBLE9BQU8sQ0FBQyxTQUFELENBQVAsQ0FBbUJDLE1BQW5COztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsTUFBTSxDQUFDRSxPQUFQLENBQWVDLE9BQWxDOztBQUVPLE1BQU1DLGNBQU4sU0FBNkJDLGtCQUE3QixDQUFxQztBQUc3QixRQUFQQyxPQUFPLEdBQUc7QUFDZCxTQUFLQyxPQUFMLENBQWFDLE1BQWIsQ0FBb0JDLEtBQXBCLENBQTJCLElBQUdSLFVBQVcsRUFBekM7QUFDQVMsSUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWEsQ0FBYjtBQUNEOztBQU55Qzs7OztnQkFBL0JQLGMsV0FDSSxDQUFDLENBQUUsV0FBRixDQUFELEVBQWdCLENBQUUsSUFBRixDQUFoQixDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NsaXBhbmlvbic7XG5yZXF1aXJlKCdwa2dpbmZvJykobW9kdWxlKTtcbmNvbnN0IHBrZ1ZlcnNpb24gPSBtb2R1bGUuZXhwb3J0cy52ZXJzaW9uO1xuXG5leHBvcnQgY2xhc3MgVmVyc2lvbkNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgc3RhdGljIHBhdGhzID0gW1tgLS12ZXJzaW9uYF0sIFtgLXZgXV07XG5cbiAgYXN5bmMgZXhlY3V0ZSgpIHtcbiAgICB0aGlzLmNvbnRleHQuc3Rkb3V0LndyaXRlKGB2JHtwa2dWZXJzaW9ufWApO1xuICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgfVxufVxuIl19
27
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY2xpL2NvbW1hbmRzL3ZlcnNpb24udHMiXSwibmFtZXMiOlsicmVxdWlyZSIsIm1vZHVsZSIsInBrZ1ZlcnNpb24iLCJleHBvcnRzIiwidmVyc2lvbiIsIlZlcnNpb25Db21tYW5kIiwiQ29tbWFuZCIsImV4ZWN1dGUiLCJjb250ZXh0Iiwic3Rkb3V0Iiwid3JpdGUiLCJwcm9jZXNzIiwiZXhpdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRUFBLE9BQU8sQ0FBQyxTQUFELENBQVAsQ0FBbUJDLE1BQW5COztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsTUFBTSxDQUFDRSxPQUFQLENBQWVDLE9BQWxDOztBQUVPLE1BQU1DLGNBQU4sU0FBNkJDLGtCQUE3QixDQUFxQztBQUc3QixRQUFQQyxPQUFPLEdBQUc7QUFDZCxTQUFLQyxPQUFMLENBQWFDLE1BQWIsQ0FBb0JDLEtBQXBCLENBQTJCLElBQUdSLFVBQVcsRUFBekM7QUFDQVMsSUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWEsQ0FBYjtBQUNEOztBQU55Qzs7OztnQkFBL0JQLGMsV0FDSSxDQUFDLENBQUUsV0FBRixDQUFELEVBQWdCLENBQUUsSUFBRixDQUFoQixDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NsaXBhbmlvbic7XG5cbnJlcXVpcmUoJ3BrZ2luZm8nKShtb2R1bGUpO1xuY29uc3QgcGtnVmVyc2lvbiA9IG1vZHVsZS5leHBvcnRzLnZlcnNpb247XG5cbmV4cG9ydCBjbGFzcyBWZXJzaW9uQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICBzdGF0aWMgcGF0aHMgPSBbW2AtLXZlcnNpb25gXSwgW2AtdmBdXTtcblxuICBhc3luYyBleGVjdXRlKCkge1xuICAgIHRoaXMuY29udGV4dC5zdGRvdXQud3JpdGUoYHYke3BrZ1ZlcnNpb259YCk7XG4gICAgcHJvY2Vzcy5leGl0KDApO1xuICB9XG59XG4iXX0=
@@ -12,10 +12,10 @@ var _path = _interopRequireDefault(require("path"));
12
12
 
13
13
  var _semver = _interopRequireDefault(require("semver"));
14
14
 
15
- var _utils = require("../utils");
16
-
17
15
  var _constants = require("../constants");
18
16
 
17
+ var _utils = require("../utils");
18
+
19
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
20
 
21
21
  const logger = require('../logger');
@@ -72,4 +72,4 @@ function getListListenAddresses(argListen, configListen) {
72
72
  }).filter(Boolean);
73
73
  return addresses;
74
74
  }
75
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY2xpL3V0aWxzLnRzIl0sIm5hbWVzIjpbImxvZ2dlciIsInJlcXVpcmUiLCJyZXNvbHZlQ29uZmlnUGF0aCIsInN0b3JhZ2VMb2NhdGlvbiIsImZpbGUiLCJwYXRoIiwicmVzb2x2ZSIsImRpcm5hbWUiLCJNSU5fTk9ERV9WRVJTSU9OIiwiaXNWZXJzaW9uVmFsaWQiLCJ2ZXJzaW9uIiwic2VtdmVyIiwic2F0aXNmaWVzIiwiZ2V0TGlzdExpc3RlbkFkZHJlc3NlcyIsImFyZ0xpc3RlbiIsImNvbmZpZ0xpc3RlbiIsImFkZHJlc3NlcyIsIkFycmF5IiwiaXNBcnJheSIsInByb2Nlc3MiLCJlbWl0V2FybmluZyIsIkRFRkFVTFRfUE9SVCIsIm1hcCIsImFkZHIiLCJwYXJzZWRBZGRyIiwid2FybiIsImZpbHRlciIsIkJvb2xlYW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7OztBQUVBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFdBQUQsQ0FBdEI7O0FBRU8sTUFBTUMsaUJBQWlCLEdBQUcsVUFBVUMsZUFBVixFQUFtQ0MsSUFBbkMsRUFBaUQ7QUFDaEYsU0FBT0MsY0FBS0MsT0FBTCxDQUFhRCxjQUFLRSxPQUFMLENBQWFKLGVBQWIsQ0FBYixFQUE0Q0MsSUFBNUMsQ0FBUDtBQUNELENBRk07OztBQUlBLE1BQU1JLGdCQUFnQixHQUFHLElBQXpCOzs7QUFFQSxTQUFTQyxjQUFULENBQXdCQyxPQUF4QixFQUFpQztBQUN0QyxTQUFPQyxnQkFBT0MsU0FBUCxDQUFpQkYsT0FBakIsRUFBMkIsS0FBSUYsZ0JBQWlCLEVBQWhELENBQVA7QUFDRDtBQUdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFNBQVNLLHNCQUFULENBQWdDQyxTQUFoQyxFQUFtREMsWUFBbkQsRUFBMkU7QUFDaEY7QUFDQSxNQUFJQyxTQUFKOztBQUNBLE1BQUlGLFNBQUosRUFBZTtBQUNiRSxJQUFBQSxTQUFTLEdBQUcsQ0FBQ0YsU0FBRCxDQUFaO0FBQ0QsR0FGRCxNQUVPLElBQUlHLEtBQUssQ0FBQ0MsT0FBTixDQUFjSCxZQUFkLENBQUosRUFBaUM7QUFDdENDLElBQUFBLFNBQVMsR0FBR0QsWUFBWjtBQUNBSSxJQUFBQSxPQUFPLENBQUNDLFdBQVIsQ0FBb0IsdUVBQXBCO0FBQ0QsR0FITSxNQUdBLElBQUlMLFlBQUosRUFBa0I7QUFDdkJDLElBQUFBLFNBQVMsR0FBRyxDQUFDRCxZQUFELENBQVo7QUFDRCxHQUZNLE1BRUE7QUFDTEMsSUFBQUEsU0FBUyxHQUFHLENBQUNLLHVCQUFELENBQVo7QUFDRDs7QUFDREwsRUFBQUEsU0FBUyxHQUFHQSxTQUFTLENBQ2xCTSxHQURTLENBQ0wsVUFBVUMsSUFBVixFQUF3QjtBQUMzQixVQUFNQyxVQUFVLEdBQUcseUJBQWFELElBQWIsQ0FBbkI7O0FBRUEsUUFBSSxDQUFDQyxVQUFMLEVBQWlCO0FBQ2Z4QixNQUFBQSxNQUFNLENBQUNBLE1BQVAsQ0FBY3lCLElBQWQsQ0FDRTtBQUFFRixRQUFBQSxJQUFJLEVBQUVBO0FBQVIsT0FERixFQUVFLCtEQUNFLGdEQURGLEdBRUUsa0NBSko7QUFNRDs7QUFFRCxXQUFPQyxVQUFQO0FBQ0QsR0FkUyxFQWVURSxNQWZTLENBZUZDLE9BZkUsQ0FBWjtBQWlCQSxTQUFPWCxTQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcblxuaW1wb3J0IHsgcGFyc2VBZGRyZXNzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgREVGQVVMVF9QT1JUIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuY29uc3QgbG9nZ2VyID0gcmVxdWlyZSgnLi4vbG9nZ2VyJyk7XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlQ29uZmlnUGF0aCA9IGZ1bmN0aW9uIChzdG9yYWdlTG9jYXRpb246IHN0cmluZywgZmlsZTogc3RyaW5nKSB7XG4gIHJldHVybiBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKHN0b3JhZ2VMb2NhdGlvbiksIGZpbGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IE1JTl9OT0RFX1ZFUlNJT04gPSAnMTInO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWZXJzaW9uVmFsaWQodmVyc2lvbikge1xuICByZXR1cm4gc2VtdmVyLnNhdGlzZmllcyh2ZXJzaW9uLCBgPj0ke01JTl9OT0RFX1ZFUlNJT059YCk7XG59XG5cblxuLyoqXG4gKiBSZXRyaWV2ZSBhbGwgYWRkcmVzc2VzIGRlZmluZWQgaW4gdGhlIGNvbmZpZyBmaWxlLlxuICogVmVyZGFjY2lvIGlzIGFibGUgdG8gbGlzdGVuIG11bHRpcGxlIHBvcnRzXG4gKiBAcGFyYW0ge1N0cmluZ30gYXJnTGlzdGVuXG4gKiBAcGFyYW0ge1N0cmluZ30gY29uZmlnTGlzdGVuXG4gKiBlZzpcbiAqICBsaXN0ZW46XG4gLSBsb2NhbGhvc3Q6NTU1NVxuIC0gbG9jYWxob3N0OjU1NTdcbiBAcmV0dXJuIHtBcnJheX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpc3RMaXN0ZW5BZGRyZXNzZXMoYXJnTGlzdGVuOiBzdHJpbmcsIGNvbmZpZ0xpc3RlbjogYW55KTogYW55IHtcbiAgLy8gY29tbWFuZCBsaW5lIHx8IGNvbmZpZyBmaWxlIHx8IGRlZmF1bHRcbiAgbGV0IGFkZHJlc3NlcztcbiAgaWYgKGFyZ0xpc3Rlbikge1xuICAgIGFkZHJlc3NlcyA9IFthcmdMaXN0ZW5dO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlnTGlzdGVuKSkge1xuICAgIGFkZHJlc3NlcyA9IGNvbmZpZ0xpc3RlbjtcbiAgICBwcm9jZXNzLmVtaXRXYXJuaW5nKCdtdWx0aXBsZSBhZGRyZXNzZXMgd2lsbCBiZSBkZXByZWNhdGVkIGluIHRoZSBuZXh0IG1ham9yLCBvbmx5IHVzZSBvbmUnKTtcbiAgfSBlbHNlIGlmIChjb25maWdMaXN0ZW4pIHtcbiAgICBhZGRyZXNzZXMgPSBbY29uZmlnTGlzdGVuXTtcbiAgfSBlbHNlIHtcbiAgICBhZGRyZXNzZXMgPSBbREVGQVVMVF9QT1JUXTtcbiAgfVxuICBhZGRyZXNzZXMgPSBhZGRyZXNzZXNcbiAgICAubWFwKGZ1bmN0aW9uIChhZGRyKTogc3RyaW5nIHtcbiAgICAgIGNvbnN0IHBhcnNlZEFkZHIgPSBwYXJzZUFkZHJlc3MoYWRkcik7XG5cbiAgICAgIGlmICghcGFyc2VkQWRkcikge1xuICAgICAgICBsb2dnZXIubG9nZ2VyLndhcm4oXG4gICAgICAgICAgeyBhZGRyOiBhZGRyIH0sXG4gICAgICAgICAgJ2ludmFsaWQgYWRkcmVzcyAtIEB7YWRkcn0sIHdlIGV4cGVjdCBhIHBvcnQgKGUuZy4gXCI0ODczXCIpLCcgK1xuICAgICAgICAgICAgJyBob3N0OnBvcnQgKGUuZy4gXCJsb2NhbGhvc3Q6NDg3M1wiKSBvciBmdWxsIHVybCcgK1xuICAgICAgICAgICAgJyAoZS5nLiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9cIiknXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXJzZWRBZGRyO1xuICAgIH0pXG4gICAgLmZpbHRlcihCb29sZWFuKTtcblxuICByZXR1cm4gYWRkcmVzc2VzO1xufVxuIl19
75
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY2xpL3V0aWxzLnRzIl0sIm5hbWVzIjpbImxvZ2dlciIsInJlcXVpcmUiLCJyZXNvbHZlQ29uZmlnUGF0aCIsInN0b3JhZ2VMb2NhdGlvbiIsImZpbGUiLCJwYXRoIiwicmVzb2x2ZSIsImRpcm5hbWUiLCJNSU5fTk9ERV9WRVJTSU9OIiwiaXNWZXJzaW9uVmFsaWQiLCJ2ZXJzaW9uIiwic2VtdmVyIiwic2F0aXNmaWVzIiwiZ2V0TGlzdExpc3RlbkFkZHJlc3NlcyIsImFyZ0xpc3RlbiIsImNvbmZpZ0xpc3RlbiIsImFkZHJlc3NlcyIsIkFycmF5IiwiaXNBcnJheSIsInByb2Nlc3MiLCJlbWl0V2FybmluZyIsIkRFRkFVTFRfUE9SVCIsIm1hcCIsImFkZHIiLCJwYXJzZWRBZGRyIiwid2FybiIsImZpbHRlciIsIkJvb2xlYW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7OztBQUVBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFdBQUQsQ0FBdEI7O0FBRU8sTUFBTUMsaUJBQWlCLEdBQUcsVUFBVUMsZUFBVixFQUFtQ0MsSUFBbkMsRUFBaUQ7QUFDaEYsU0FBT0MsY0FBS0MsT0FBTCxDQUFhRCxjQUFLRSxPQUFMLENBQWFKLGVBQWIsQ0FBYixFQUE0Q0MsSUFBNUMsQ0FBUDtBQUNELENBRk07OztBQUlBLE1BQU1JLGdCQUFnQixHQUFHLElBQXpCOzs7QUFFQSxTQUFTQyxjQUFULENBQXdCQyxPQUF4QixFQUFpQztBQUN0QyxTQUFPQyxnQkFBT0MsU0FBUCxDQUFpQkYsT0FBakIsRUFBMkIsS0FBSUYsZ0JBQWlCLEVBQWhELENBQVA7QUFDRDtBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFNBQVNLLHNCQUFULENBQWdDQyxTQUFoQyxFQUFtREMsWUFBbkQsRUFBMkU7QUFDaEY7QUFDQSxNQUFJQyxTQUFKOztBQUNBLE1BQUlGLFNBQUosRUFBZTtBQUNiRSxJQUFBQSxTQUFTLEdBQUcsQ0FBQ0YsU0FBRCxDQUFaO0FBQ0QsR0FGRCxNQUVPLElBQUlHLEtBQUssQ0FBQ0MsT0FBTixDQUFjSCxZQUFkLENBQUosRUFBaUM7QUFDdENDLElBQUFBLFNBQVMsR0FBR0QsWUFBWjtBQUNBSSxJQUFBQSxPQUFPLENBQUNDLFdBQVIsQ0FBb0IsdUVBQXBCO0FBQ0QsR0FITSxNQUdBLElBQUlMLFlBQUosRUFBa0I7QUFDdkJDLElBQUFBLFNBQVMsR0FBRyxDQUFDRCxZQUFELENBQVo7QUFDRCxHQUZNLE1BRUE7QUFDTEMsSUFBQUEsU0FBUyxHQUFHLENBQUNLLHVCQUFELENBQVo7QUFDRDs7QUFDREwsRUFBQUEsU0FBUyxHQUFHQSxTQUFTLENBQ2xCTSxHQURTLENBQ0wsVUFBVUMsSUFBVixFQUF3QjtBQUMzQixVQUFNQyxVQUFVLEdBQUcseUJBQWFELElBQWIsQ0FBbkI7O0FBRUEsUUFBSSxDQUFDQyxVQUFMLEVBQWlCO0FBQ2Z4QixNQUFBQSxNQUFNLENBQUNBLE1BQVAsQ0FBY3lCLElBQWQsQ0FDRTtBQUFFRixRQUFBQSxJQUFJLEVBQUVBO0FBQVIsT0FERixFQUVFLCtEQUErRCxnREFBL0QsR0FBa0gsa0NBRnBIO0FBSUQ7O0FBRUQsV0FBT0MsVUFBUDtBQUNELEdBWlMsRUFhVEUsTUFiUyxDQWFGQyxPQWJFLENBQVo7QUFlQSxTQUFPWCxTQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcblxuaW1wb3J0IHsgREVGQVVMVF9QT1JUIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IHBhcnNlQWRkcmVzcyB9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgbG9nZ2VyID0gcmVxdWlyZSgnLi4vbG9nZ2VyJyk7XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlQ29uZmlnUGF0aCA9IGZ1bmN0aW9uIChzdG9yYWdlTG9jYXRpb246IHN0cmluZywgZmlsZTogc3RyaW5nKSB7XG4gIHJldHVybiBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKHN0b3JhZ2VMb2NhdGlvbiksIGZpbGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IE1JTl9OT0RFX1ZFUlNJT04gPSAnMTInO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWZXJzaW9uVmFsaWQodmVyc2lvbikge1xuICByZXR1cm4gc2VtdmVyLnNhdGlzZmllcyh2ZXJzaW9uLCBgPj0ke01JTl9OT0RFX1ZFUlNJT059YCk7XG59XG5cbi8qKlxuICogUmV0cmlldmUgYWxsIGFkZHJlc3NlcyBkZWZpbmVkIGluIHRoZSBjb25maWcgZmlsZS5cbiAqIFZlcmRhY2NpbyBpcyBhYmxlIHRvIGxpc3RlbiBtdWx0aXBsZSBwb3J0c1xuICogQHBhcmFtIHtTdHJpbmd9IGFyZ0xpc3RlblxuICogQHBhcmFtIHtTdHJpbmd9IGNvbmZpZ0xpc3RlblxuICogZWc6XG4gKiAgbGlzdGVuOlxuIC0gbG9jYWxob3N0OjU1NTVcbiAtIGxvY2FsaG9zdDo1NTU3XG4gQHJldHVybiB7QXJyYXl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaXN0TGlzdGVuQWRkcmVzc2VzKGFyZ0xpc3Rlbjogc3RyaW5nLCBjb25maWdMaXN0ZW46IGFueSk6IGFueSB7XG4gIC8vIGNvbW1hbmQgbGluZSB8fCBjb25maWcgZmlsZSB8fCBkZWZhdWx0XG4gIGxldCBhZGRyZXNzZXM7XG4gIGlmIChhcmdMaXN0ZW4pIHtcbiAgICBhZGRyZXNzZXMgPSBbYXJnTGlzdGVuXTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZ0xpc3RlbikpIHtcbiAgICBhZGRyZXNzZXMgPSBjb25maWdMaXN0ZW47XG4gICAgcHJvY2Vzcy5lbWl0V2FybmluZygnbXVsdGlwbGUgYWRkcmVzc2VzIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiB0aGUgbmV4dCBtYWpvciwgb25seSB1c2Ugb25lJyk7XG4gIH0gZWxzZSBpZiAoY29uZmlnTGlzdGVuKSB7XG4gICAgYWRkcmVzc2VzID0gW2NvbmZpZ0xpc3Rlbl07XG4gIH0gZWxzZSB7XG4gICAgYWRkcmVzc2VzID0gW0RFRkFVTFRfUE9SVF07XG4gIH1cbiAgYWRkcmVzc2VzID0gYWRkcmVzc2VzXG4gICAgLm1hcChmdW5jdGlvbiAoYWRkcik6IHN0cmluZyB7XG4gICAgICBjb25zdCBwYXJzZWRBZGRyID0gcGFyc2VBZGRyZXNzKGFkZHIpO1xuXG4gICAgICBpZiAoIXBhcnNlZEFkZHIpIHtcbiAgICAgICAgbG9nZ2VyLmxvZ2dlci53YXJuKFxuICAgICAgICAgIHsgYWRkcjogYWRkciB9LFxuICAgICAgICAgICdpbnZhbGlkIGFkZHJlc3MgLSBAe2FkZHJ9LCB3ZSBleHBlY3QgYSBwb3J0IChlLmcuIFwiNDg3M1wiKSwnICsgJyBob3N0OnBvcnQgKGUuZy4gXCJsb2NhbGhvc3Q6NDg3M1wiKSBvciBmdWxsIHVybCcgKyAnIChlLmcuIFwiaHR0cDovL2xvY2FsaG9zdDo0ODczL1wiKSdcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhcnNlZEFkZHI7XG4gICAgfSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pO1xuXG4gIHJldHVybiBhZGRyZXNzZXM7XG59XG4iXX0=
@@ -7,12 +7,12 @@ exports.default = void 0;
7
7
 
8
8
  var _fs = _interopRequireDefault(require("fs"));
9
9
 
10
- var _path = _interopRequireDefault(require("path"));
11
-
12
10
  var _lodash = _interopRequireDefault(require("lodash"));
13
11
 
14
12
  var _mkdirp = _interopRequireDefault(require("mkdirp"));
15
13
 
14
+ var _path = _interopRequireDefault(require("path"));
15
+
16
16
  var _logger = require("./logger");
17
17
 
18
18
  var _utils = require("./utils");
@@ -138,4 +138,4 @@ const getOldDirectory = () => {
138
138
 
139
139
  var _default = findConfigFile;
140
140
  exports.default = _default;
141
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29uZmlnLXBhdGgudHMiXSwibmFtZXMiOlsiQ09ORklHX0ZJTEUiLCJYREciLCJXSU4iLCJXSU4zMiIsInBrZ0pTT04iLCJyZXF1aXJlIiwiZmluZENvbmZpZ0ZpbGUiLCJjb25maWdQYXRoIiwiXyIsImlzTmlsIiwiUGF0aCIsInJlc29sdmUiLCJjb25maWdQYXRocyIsImdldENvbmZpZ1BhdGhzIiwiaXNFbXB0eSIsIkVycm9yIiwicHJpbWFyeUNvbmYiLCJmaW5kIiwiY29uZmlnTG9jYXRpb24iLCJwYXRoIiwiY3JlYXRlQ29uZmlnRmlsZSIsImhlYWQiLCJjcmVhdGVDb25maWdGb2xkZXIiLCJkZWZhdWx0Q29uZmlnIiwidXBkYXRlU3RvcmFnZUxpbmtzIiwicmVhZERlZmF1bHRDb25maWciLCJmcyIsIndyaXRlRmlsZVN5bmMiLCJyZWFkRmlsZVN5bmMiLCJta2RpcnAiLCJzeW5jIiwiZGlybmFtZSIsImxvZ2dlciIsImluZm8iLCJmaWxlIiwidHlwZSIsImRhdGFEaXIiLCJwcm9jZXNzIiwiZW52IiwiWERHX0RBVEFfSE9NRSIsImpvaW4iLCJIT01FIiwibmFtZSIsInJlcGxhY2UiLCJsaXN0UGF0aHMiLCJnZXRYREdEaXJlY3RvcnkiLCJnZXRXaW5kb3dzRGlyZWN0b3J5IiwiZ2V0UmVsYXRpdmVEZWZhdWx0RGlyZWN0b3J5IiwiZ2V0T2xkRGlyZWN0b3J5IiwicmVkdWNlIiwiYWNjIiwiY3VycmVudFZhbHVlIiwiaXNVbmRlZmluZWQiLCJwdXNoIiwiWERHQ29uZmlnIiwiZ2V0WERHSG9tZSIsIlhER19DT05GSUdfSE9NRSIsInBsYXRmb3JtIiwiQVBQREFUQSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOzs7O0FBR0EsTUFBTUEsV0FBVyxHQUFHLGFBQXBCO0FBQ0EsTUFBTUMsR0FBRyxHQUFHLEtBQVo7QUFDQSxNQUFNQyxHQUFHLEdBQUcsS0FBWjtBQUNBLE1B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QyxFQUE2QzFDLFdBQTdDLENBQWIsQ0FERDtBQUVMbUMsTUFBQUEsSUFBSSxFQUFFakM7QUFGRCxLQUFQO0FBSUQ7QUFDRixDQVBEOztBQVNBLE1BQU02QywyQkFBMkIsR0FBRyxNQUFzQjtBQUN4RCxTQUFPO0FBQ0w1QixJQUFBQSxJQUFJLEVBQUVULGNBQUtDLE9BQUwsQ0FBYUQsY0FBSzhCLElBQUwsQ0FBVSxHQUFWLEVBQWVwQyxPQUFPLENBQUNzQyxJQUF2QixFQUE2QjFDLFdBQTdCLENBQWIsQ0FERDtBQUVMbUMsSUFBQUEsSUFBSSxFQUFFO0FBRkQsR0FBUDtBQUlELENBTEQ7O0FBT0EsTUFBTWEsZUFBZSxHQUFHLE1BQXNCO0FBQzVDLFNBQU87QUFDTDdCLElBQUFBLElBQUksRUFBRVQsY0FBS0MsT0FBTCxDQUFhRCxjQUFLOEIsSUFBTCxDQUFVLEdBQVYsRUFBZXhDLFdBQWYsQ0FBYixDQUREO0FBRUxtQyxJQUFBQSxJQUFJLEVBQUU7QUFGRCxHQUFQO0FBSUQsQ0FMRDs7ZUFPZTdCLGMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IFBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG1rZGlycCBmcm9tICdta2RpcnAnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuXG5pbXBvcnQgeyBmb2xkZXJFeGlzdHMsIGZpbGVFeGlzdHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IENIQVJBQ1RFUl9FTkNPRElORyB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuY29uc3QgQ09ORklHX0ZJTEUgPSAnY29uZmlnLnlhbWwnO1xuY29uc3QgWERHID0gJ3hkZyc7XG5jb25zdCBXSU4gPSAnd2luJztcbmNvbnN0IFdJTjMyID0gJ3dpbjMyJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuY29uc3QgcGtnSlNPTiA9IHJlcXVpcmUoJy4uLy4uL3BhY2thZ2UuanNvbicpO1xuXG5leHBvcnQgdHlwZSBTZXR1cERpcmVjdG9yeSA9IHtcbiAgcGF0aDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEZpbmQgYW5kIGdldCB0aGUgZmlyc3QgY29uZmlnIGZpbGUgdGhhdCBtYXRjaC5cbiAqIEByZXR1cm4ge1N0cmluZ30gdGhlIGNvbmZpZyBmaWxlIHBhdGhcbiAqL1xuZnVuY3Rpb24gZmluZENvbmZpZ0ZpbGUoY29uZmlnUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKF8uaXNOaWwoY29uZmlnUGF0aCkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIFBhdGgucmVzb2x2ZShjb25maWdQYXRoKTtcbiAgfVxuXG4gIGNvbnN0IGNvbmZpZ1BhdGhzOiBTZXR1cERpcmVjdG9yeVtdID0gZ2V0Q29uZmlnUGF0aHMoKTtcblxuICBpZiAoXy5pc0VtcHR5KGNvbmZpZ1BhdGhzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm8gY29uZmlndXJhdGlvbiBmaWxlcyBjYW4gYmUgcHJvY2Vzc2VkJyk7XG4gIH1cblxuICBjb25zdCBwcmltYXJ5Q29uZjogYW55ID0gXy5maW5kKGNvbmZpZ1BhdGhzLCAoY29uZmlnTG9jYXRpb246IGFueSkgPT5cbiAgICBmaWxlRXhpc3RzKGNvbmZpZ0xvY2F0aW9uLnBhdGgpXG4gICk7XG4gIGlmIChfLmlzTmlsKHByaW1hcnlDb25mKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gcHJpbWFyeUNvbmYucGF0aDtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVDb25maWdGaWxlKF8uaGVhZChjb25maWdQYXRocykpLnBhdGg7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ0ZpbGUoY29uZmlnTG9jYXRpb246IGFueSk6IFNldHVwRGlyZWN0b3J5IHtcbiAgY3JlYXRlQ29uZmlnRm9sZGVyKGNvbmZpZ0xvY2F0aW9uKTtcblxuICBjb25zdCBkZWZhdWx0Q29uZmlnID0gdXBkYXRlU3RvcmFnZUxpbmtzKGNvbmZpZ0xvY2F0aW9uLCByZWFkRGVmYXVsdENvbmZpZygpKTtcblxuICBmcy53cml0ZUZpbGVTeW5jKGNvbmZpZ0xvY2F0aW9uLnBhdGgsIGRlZmF1bHRDb25maWcpO1xuXG4gIHJldHVybiBjb25maWdMb2NhdGlvbjtcbn1cblxuZnVuY3Rpb24gcmVhZERlZmF1bHRDb25maWcoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhyZXF1aXJlLnJlc29sdmUoJy4uLy4uL2NvbmYvZGVmYXVsdC55YW1sJyksICd1dGYtOCcpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb25maWdGb2xkZXIoY29uZmlnTG9jYXRpb24pOiB2b2lkIHtcbiAgbWtkaXJwLnN5bmMoUGF0aC5kaXJuYW1lKGNvbmZpZ0xvY2F0aW9uLnBhdGgpKTtcbiAgbG9nZ2VyLmluZm8oeyBmaWxlOiBjb25maWdMb2NhdGlvbi5wYXRoIH0sICdDcmVhdGluZyBkZWZhdWx0IGNvbmZpZyBmaWxlIGluIEB7ZmlsZX0nKTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlU3RvcmFnZUxpbmtzKGNvbmZpZ0xvY2F0aW9uLCBkZWZhdWx0Q29uZmlnKTogc3RyaW5nIHtcbiAgaWYgKGNvbmZpZ0xvY2F0aW9uLnR5cGUgIT09IFhERykge1xuICAgIHJldHVybiBkZWZhdWx0Q29uZmlnO1xuICB9XG5cbiAgLy8gJFhER19EQVRBX0hPTUUgZGVmaW5lcyB0aGUgYmFzZSBkaXJlY3RvcnkgcmVsYXRpdmUgdG8gd2hpY2ggdXNlciBzcGVjaWZpYyBkYXRhIGZpbGVzIHNob3VsZCBiZSBzdG9yZWQsXG4gIC8vIElmICRYREdfREFUQV9IT01FIGlzIGVpdGhlciBub3Qgc2V0IG9yIGVtcHR5LCBhIGRlZmF1bHQgZXF1YWwgdG8gJEhPTUUvLmxvY2FsL3NoYXJlIHNob3VsZCBiZSB1c2VkLlxuICAvLyAkRmxvd0ZpeE1lXG4gIGxldCBkYXRhRGlyID1cbiAgICBwcm9jZXNzLmVudi5YREdfREFUQV9IT01FIHx8IFBhdGguam9pbihwcm9jZXNzLmVudi5IT01FIGFzIHN0cmluZywgJy5sb2NhbCcsICdzaGFyZScpO1xuICBpZiAoZm9sZGVyRXhpc3RzKGRhdGFEaXIpKSB7XG4gICAgZGF0YURpciA9IFBhdGgucmVzb2x2ZShQYXRoLmpvaW4oZGF0YURpciwgcGtnSlNPTi5uYW1lLCAnc3RvcmFnZScpKTtcbiAgICByZXR1cm4gZGVmYXVsdENvbmZpZy5yZXBsYWNlKC9ec3RvcmFnZTogLlxcL3N0b3JhZ2UkL20sIGBzdG9yYWdlOiAke2RhdGFEaXJ9YCk7XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRDb25maWc7XG59XG5cbmZ1bmN0aW9uIGdldENvbmZpZ1BhdGhzKCk6IFNldHVwRGlyZWN0b3J5W10ge1xuICBjb25zdCBsaXN0UGF0aHM6IFNldHVwRGlyZWN0b3J5W10gPSBbXG4gICAgZ2V0WERHRGlyZWN0b3J5KCksXG4gICAgZ2V0V2luZG93c0RpcmVjdG9yeSgpLFxuICAgIGdldFJlbGF0aXZlRGVmYXVsdERpcmVjdG9yeSgpLFxuICAgIGdldE9sZERpcmVjdG9yeSgpXG4gIF0ucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGN1cnJlbnRWYWx1ZTogYW55KTogU2V0dXBEaXJlY3RvcnlbXSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQoY3VycmVudFZhbHVlKSA9PT0gZmFsc2UpIHtcbiAgICAgIGFjYy5wdXNoKGN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdIGFzIFNldHVwRGlyZWN0b3J5W10pO1xuXG4gIHJldHVybiBsaXN0UGF0aHM7XG59XG5cbmNvbnN0IGdldFhER0RpcmVjdG9yeSA9ICgpOiBTZXR1cERpcmVjdG9yeSB8IHZvaWQgPT4ge1xuICBjb25zdCBYREdDb25maWcgPSBnZXRYREdIb21lKCkgfHwgKHByb2Nlc3MuZW52LkhPTUUgJiYgUGF0aC5qb2luKHByb2Nlc3MuZW52LkhPTUUsICcuY29uZmlnJykpO1xuXG4gIGlmIChYREdDb25maWcgJiYgZm9sZGVyRXhpc3RzKFhER0NvbmZpZykpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGF0aDogUGF0aC5qb2luKFhER0NvbmZpZywgcGtnSlNPTi5uYW1lLCBDT05GSUdfRklMRSksXG4gICAgICB0eXBlOiBYREdcbiAgICB9O1xuICB9XG59O1xuXG5jb25zdCBnZXRYREdIb21lID0gKCk6IHN0cmluZyB8IHZvaWQgPT4gcHJvY2Vzcy5lbnYuWERHX0NPTkZJR19IT01FO1xuXG5jb25zdCBnZXRXaW5kb3dzRGlyZWN0b3J5ID0gKCk6IFNldHVwRGlyZWN0b3J5IHwgdm9pZCA9PiB7XG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSBXSU4zMiAmJiBwcm9jZXNzLmVudi5BUFBEQVRBICYmIGZvbGRlckV4aXN0cyhwcm9jZXNzLmVudi5BUFBEQVRBKSkge1xuICAgIHJldHVybiB7XG4gICAgICBwYXRoOiBQYXRoLnJlc29sdmUoUGF0aC5qb2luKHByb2Nlc3MuZW52LkFQUERBVEEsIHBrZ0pTT04ubmFtZSwgQ09ORklHX0ZJTEUpKSxcbiAgICAgIHR5cGU6IFdJTlxuICAgIH07XG4gIH1cbn07XG5cbmNvbnN0IGdldFJlbGF0aXZlRGVmYXVsdERpcmVjdG9yeSA9ICgpOiBTZXR1cERpcmVjdG9yeSA9PiB7XG4gIHJldHVybiB7XG4gICAgcGF0aDogUGF0aC5yZXNvbHZlKFBhdGguam9pbignLicsIHBrZ0pTT04ubmFtZSwgQ09ORklHX0ZJTEUpKSxcbiAgICB0eXBlOiAnZGVmJ1xuICB9O1xufTtcblxuY29uc3QgZ2V0T2xkRGlyZWN0b3J5ID0gKCk6IFNldHVwRGlyZWN0b3J5ID0+IHtcbiAgcmV0dXJuIHtcbiAgICBwYXRoOiBQYXRoLnJlc29sdmUoUGF0aC5qb2luKCcuJywgQ09ORklHX0ZJTEUpKSxcbiAgICB0eXBlOiAnb2xkJ1xuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZmluZENvbmZpZ0ZpbGU7XG4iXX0=
141
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29uZmlnLXBhdGgudHMiXSwibmFtZXMiOlsiQ09ORklHX0ZJTEUiLCJYREciLCJXSU4iLCJXSU4zMiIsInBrZ0pTT04iLCJyZXF1aXJlIiwiZmluZENvbmZpZ0ZpbGUiLCJjb25maWdQYXRoIiwiXyIsImlzTmlsIiwiUGF0aCIsInJlc29sdmUiLCJjb25maWdQYXRocyIsImdldENvbmZpZ1BhdGhzIiwiaXNFbXB0eSIsIkVycm9yIiwicHJpbWFyeUNvbmYiLCJmaW5kIiwiY29uZmlnTG9jYXRpb24iLCJwYXRoIiwiY3JlYXRlQ29uZmlnRmlsZSIsImhlYWQiLCJjcmVhdGVDb25maWdGb2xkZXIiLCJkZWZhdWx0Q29uZmlnIiwidXBkYXRlU3RvcmFnZUxpbmtzIiwicmVhZERlZmF1bHRDb25maWciLCJmcyIsIndyaXRlRmlsZVN5bmMiLCJyZWFkRmlsZVN5bmMiLCJta2RpcnAiLCJzeW5jIiwiZGlybmFtZSIsImxvZ2dlciIsImluZm8iLCJmaWxlIiwidHlwZSIsImRhdGFEaXIiLCJwcm9jZXNzIiwiZW52IiwiWERHX0RBVEFfSE9NRSIsImpvaW4iLCJIT01FIiwibmFtZSIsInJlcGxhY2UiLCJsaXN0UGF0aHMiLCJnZXRYREdEaXJlY3RvcnkiLCJnZXRXaW5kb3dzRGlyZWN0b3J5IiwiZ2V0UmVsYXRpdmVEZWZhdWx0RGlyZWN0b3J5IiwiZ2V0T2xkRGlyZWN0b3J5IiwicmVkdWNlIiwiYWNjIiwiY3VycmVudFZhbHVlIiwiaXNVbmRlZmluZWQiLCJwdXNoIiwiWERHQ29uZmlnIiwiZ2V0WERHSG9tZSIsIlhER19DT05GSUdfSE9NRSIsInBsYXRmb3JtIiwiQVBQREFUQSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOzs7O0FBRUEsTUFBTUEsV0FBVyxHQUFHLGFBQXBCO0FBQ0EsTUFBTUMsR0FBRyxHQUFHLEtBQVo7QUFDQSxNQUFNQyxHQUFHLEdBQUcsS0FBWjtBQUNBLE1B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LElBQXZDLEVBQTZDMUMsV0FBN0MsQ0FBYixDQUREO0FBRUxtQyxNQUFBQSxJQUFJLEVBQUVqQztBQUZELEtBQVA7QUFJRDtBQUNGLENBUEQ7O0FBU0EsTUFBTTZDLDJCQUEyQixHQUFHLE1BQXNCO0FBQ3hELFNBQU87QUFDTDVCLElBQUFBLElBQUksRUFBRVQsY0FBS0MsT0FBTCxDQUFhRCxjQUFLOEIsSUFBTCxDQUFVLEdBQVYsRUFBZXBDLE9BQU8sQ0FBQ3NDLElBQXZCLEVBQTZCMUMsV0FBN0IsQ0FBYixDQUREO0FBRUxtQyxJQUFBQSxJQUFJLEVBQUU7QUFGRCxHQUFQO0FBSUQsQ0FMRDs7QUFPQSxNQUFNYSxlQUFlLEdBQUcsTUFBc0I7QUFDNUMsU0FBTztBQUNMN0IsSUFBQUEsSUFBSSxFQUFFVCxjQUFLQyxPQUFMLENBQWFELGNBQUs4QixJQUFMLENBQVUsR0FBVixFQUFleEMsV0FBZixDQUFiLENBREQ7QUFFTG1DLElBQUFBLElBQUksRUFBRTtBQUZELEdBQVA7QUFJRCxDQUxEOztlQU9lN0IsYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG1rZGlycCBmcm9tICdta2RpcnAnO1xuaW1wb3J0IFBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7IENIQVJBQ1RFUl9FTkNPRElORyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IGZpbGVFeGlzdHMsIGZvbGRlckV4aXN0cyB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBDT05GSUdfRklMRSA9ICdjb25maWcueWFtbCc7XG5jb25zdCBYREcgPSAneGRnJztcbmNvbnN0IFdJTiA9ICd3aW4nO1xuY29uc3QgV0lOMzIgPSAnd2luMzInO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5jb25zdCBwa2dKU09OID0gcmVxdWlyZSgnLi4vLi4vcGFja2FnZS5qc29uJyk7XG5cbmV4cG9ydCB0eXBlIFNldHVwRGlyZWN0b3J5ID0ge1xuICBwYXRoOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbn07XG5cbi8qKlxuICogRmluZCBhbmQgZ2V0IHRoZSBmaXJzdCBjb25maWcgZmlsZSB0aGF0IG1hdGNoLlxuICogQHJldHVybiB7U3RyaW5nfSB0aGUgY29uZmlnIGZpbGUgcGF0aFxuICovXG5mdW5jdGlvbiBmaW5kQ29uZmlnRmlsZShjb25maWdQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoXy5pc05pbChjb25maWdQYXRoKSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gUGF0aC5yZXNvbHZlKGNvbmZpZ1BhdGgpO1xuICB9XG5cbiAgY29uc3QgY29uZmlnUGF0aHM6IFNldHVwRGlyZWN0b3J5W10gPSBnZXRDb25maWdQYXRocygpO1xuXG4gIGlmIChfLmlzRW1wdHkoY29uZmlnUGF0aHMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdubyBjb25maWd1cmF0aW9uIGZpbGVzIGNhbiBiZSBwcm9jZXNzZWQnKTtcbiAgfVxuXG4gIGNvbnN0IHByaW1hcnlDb25mOiBhbnkgPSBfLmZpbmQoY29uZmlnUGF0aHMsIChjb25maWdMb2NhdGlvbjogYW55KSA9PiBmaWxlRXhpc3RzKGNvbmZpZ0xvY2F0aW9uLnBhdGgpKTtcbiAgaWYgKF8uaXNOaWwocHJpbWFyeUNvbmYpID09PSBmYWxzZSkge1xuICAgIHJldHVybiBwcmltYXJ5Q29uZi5wYXRoO1xuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZUNvbmZpZ0ZpbGUoXy5oZWFkKGNvbmZpZ1BhdGhzKSkucGF0aDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29uZmlnRmlsZShjb25maWdMb2NhdGlvbjogYW55KTogU2V0dXBEaXJlY3Rvcnkge1xuICBjcmVhdGVDb25maWdGb2xkZXIoY29uZmlnTG9jYXRpb24pO1xuXG4gIGNvbnN0IGRlZmF1bHRDb25maWcgPSB1cGRhdGVTdG9yYWdlTGlua3MoY29uZmlnTG9jYXRpb24sIHJlYWREZWZhdWx0Q29uZmlnKCkpO1xuXG4gIGZzLndyaXRlRmlsZVN5bmMoY29uZmlnTG9jYXRpb24ucGF0aCwgZGVmYXVsdENvbmZpZyk7XG5cbiAgcmV0dXJuIGNvbmZpZ0xvY2F0aW9uO1xufVxuXG5mdW5jdGlvbiByZWFkRGVmYXVsdENvbmZpZygpOiBzdHJpbmcge1xuICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKHJlcXVpcmUucmVzb2x2ZSgnLi4vLi4vY29uZi9kZWZhdWx0LnlhbWwnKSwgJ3V0Zi04Jyk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ0ZvbGRlcihjb25maWdMb2NhdGlvbik6IHZvaWQge1xuICBta2RpcnAuc3luYyhQYXRoLmRpcm5hbWUoY29uZmlnTG9jYXRpb24ucGF0aCkpO1xuICBsb2dnZXIuaW5mbyh7IGZpbGU6IGNvbmZpZ0xvY2F0aW9uLnBhdGggfSwgJ0NyZWF0aW5nIGRlZmF1bHQgY29uZmlnIGZpbGUgaW4gQHtmaWxlfScpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVTdG9yYWdlTGlua3MoY29uZmlnTG9jYXRpb24sIGRlZmF1bHRDb25maWcpOiBzdHJpbmcge1xuICBpZiAoY29uZmlnTG9jYXRpb24udHlwZSAhPT0gWERHKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRDb25maWc7XG4gIH1cblxuICAvLyAkWERHX0RBVEFfSE9NRSBkZWZpbmVzIHRoZSBiYXNlIGRpcmVjdG9yeSByZWxhdGl2ZSB0byB3aGljaCB1c2VyIHNwZWNpZmljIGRhdGEgZmlsZXMgc2hvdWxkIGJlIHN0b3JlZCxcbiAgLy8gSWYgJFhER19EQVRBX0hPTUUgaXMgZWl0aGVyIG5vdCBzZXQgb3IgZW1wdHksIGEgZGVmYXVsdCBlcXVhbCB0byAkSE9NRS8ubG9jYWwvc2hhcmUgc2hvdWxkIGJlIHVzZWQuXG4gIC8vICRGbG93Rml4TWVcbiAgbGV0IGRhdGFEaXIgPSBwcm9jZXNzLmVudi5YREdfREFUQV9IT01FIHx8IFBhdGguam9pbihwcm9jZXNzLmVudi5IT01FIGFzIHN0cmluZywgJy5sb2NhbCcsICdzaGFyZScpO1xuICBpZiAoZm9sZGVyRXhpc3RzKGRhdGFEaXIpKSB7XG4gICAgZGF0YURpciA9IFBhdGgucmVzb2x2ZShQYXRoLmpvaW4oZGF0YURpciwgcGtnSlNPTi5uYW1lLCAnc3RvcmFnZScpKTtcbiAgICByZXR1cm4gZGVmYXVsdENvbmZpZy5yZXBsYWNlKC9ec3RvcmFnZTogLlxcL3N0b3JhZ2UkL20sIGBzdG9yYWdlOiAke2RhdGFEaXJ9YCk7XG4gIH1cbiAgcmV0dXJuIGRlZmF1bHRDb25maWc7XG59XG5cbmZ1bmN0aW9uIGdldENvbmZpZ1BhdGhzKCk6IFNldHVwRGlyZWN0b3J5W10ge1xuICBjb25zdCBsaXN0UGF0aHM6IFNldHVwRGlyZWN0b3J5W10gPSBbZ2V0WERHRGlyZWN0b3J5KCksIGdldFdpbmRvd3NEaXJlY3RvcnkoKSwgZ2V0UmVsYXRpdmVEZWZhdWx0RGlyZWN0b3J5KCksIGdldE9sZERpcmVjdG9yeSgpXS5yZWR1Y2UoZnVuY3Rpb24gKFxuICAgIGFjYyxcbiAgICBjdXJyZW50VmFsdWU6IGFueVxuICApOiBTZXR1cERpcmVjdG9yeVtdIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChjdXJyZW50VmFsdWUpID09PSBmYWxzZSkge1xuICAgICAgYWNjLnB1c2goY3VycmVudFZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSxcbiAgW10gYXMgU2V0dXBEaXJlY3RvcnlbXSk7XG5cbiAgcmV0dXJuIGxpc3RQYXRocztcbn1cblxuY29uc3QgZ2V0WERHRGlyZWN0b3J5ID0gKCk6IFNldHVwRGlyZWN0b3J5IHwgdm9pZCA9PiB7XG4gIGNvbnN0IFhER0NvbmZpZyA9IGdldFhER0hvbWUoKSB8fCAocHJvY2Vzcy5lbnYuSE9NRSAmJiBQYXRoLmpvaW4ocHJvY2Vzcy5lbnYuSE9NRSwgJy5jb25maWcnKSk7XG5cbiAgaWYgKFhER0NvbmZpZyAmJiBmb2xkZXJFeGlzdHMoWERHQ29uZmlnKSkge1xuICAgIHJldHVybiB7XG4gICAgICBwYXRoOiBQYXRoLmpvaW4oWERHQ29uZmlnLCBwa2dKU09OLm5hbWUsIENPTkZJR19GSUxFKSxcbiAgICAgIHR5cGU6IFhERyxcbiAgICB9O1xuICB9XG59O1xuXG5jb25zdCBnZXRYREdIb21lID0gKCk6IHN0cmluZyB8IHZvaWQgPT4gcHJvY2Vzcy5lbnYuWERHX0NPTkZJR19IT01FO1xuXG5jb25zdCBnZXRXaW5kb3dzRGlyZWN0b3J5ID0gKCk6IFNldHVwRGlyZWN0b3J5IHwgdm9pZCA9PiB7XG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSBXSU4zMiAmJiBwcm9jZXNzLmVudi5BUFBEQVRBICYmIGZvbGRlckV4aXN0cyhwcm9jZXNzLmVudi5BUFBEQVRBKSkge1xuICAgIHJldHVybiB7XG4gICAgICBwYXRoOiBQYXRoLnJlc29sdmUoUGF0aC5qb2luKHByb2Nlc3MuZW52LkFQUERBVEEsIHBrZ0pTT04ubmFtZSwgQ09ORklHX0ZJTEUpKSxcbiAgICAgIHR5cGU6IFdJTixcbiAgICB9O1xuICB9XG59O1xuXG5jb25zdCBnZXRSZWxhdGl2ZURlZmF1bHREaXJlY3RvcnkgPSAoKTogU2V0dXBEaXJlY3RvcnkgPT4ge1xuICByZXR1cm4ge1xuICAgIHBhdGg6IFBhdGgucmVzb2x2ZShQYXRoLmpvaW4oJy4nLCBwa2dKU09OLm5hbWUsIENPTkZJR19GSUxFKSksXG4gICAgdHlwZTogJ2RlZicsXG4gIH07XG59O1xuXG5jb25zdCBnZXRPbGREaXJlY3RvcnkgPSAoKTogU2V0dXBEaXJlY3RvcnkgPT4ge1xuICByZXR1cm4ge1xuICAgIHBhdGg6IFBhdGgucmVzb2x2ZShQYXRoLmpvaW4oJy4nLCBDT05GSUdfRklMRSkpLFxuICAgIHR5cGU6ICdvbGQnLFxuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZmluZENvbmZpZ0ZpbGU7XG4iXX0=