@appium/support 2.60.0 → 2.61.1

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 (45) hide show
  1. package/build/lib/console.d.ts +1 -1
  2. package/build/lib/console.js +3 -3
  3. package/build/lib/console.js.map +1 -0
  4. package/build/lib/env.d.ts +8 -18
  5. package/build/lib/env.d.ts.map +1 -1
  6. package/build/lib/env.js +57 -36
  7. package/build/lib/env.js.map +1 -0
  8. package/build/lib/fs.d.ts +39 -10
  9. package/build/lib/fs.d.ts.map +1 -1
  10. package/build/lib/fs.js +20 -4
  11. package/build/lib/fs.js.map +1 -0
  12. package/build/lib/image-util.js +3 -3
  13. package/build/lib/image-util.js.map +1 -0
  14. package/build/lib/index.js.map +1 -0
  15. package/build/lib/log-internal.js +3 -3
  16. package/build/lib/log-internal.js.map +1 -0
  17. package/build/lib/logger.js.map +1 -0
  18. package/build/lib/logging.js +3 -3
  19. package/build/lib/logging.js.map +1 -0
  20. package/build/lib/mjpeg.js +3 -3
  21. package/build/lib/mjpeg.js.map +1 -0
  22. package/build/lib/mkdirp.js.map +1 -0
  23. package/build/lib/net.js +3 -3
  24. package/build/lib/net.js.map +1 -0
  25. package/build/lib/node.js +3 -3
  26. package/build/lib/node.js.map +1 -0
  27. package/build/lib/npm.js +3 -3
  28. package/build/lib/npm.js.map +1 -0
  29. package/build/lib/plist.js +3 -3
  30. package/build/lib/plist.js.map +1 -0
  31. package/build/lib/process.js.map +1 -0
  32. package/build/lib/system.js +3 -3
  33. package/build/lib/system.js.map +1 -0
  34. package/build/lib/tempdir.js +3 -3
  35. package/build/lib/tempdir.js.map +1 -0
  36. package/build/lib/timing.js +3 -3
  37. package/build/lib/timing.js.map +1 -0
  38. package/build/lib/util.js +3 -3
  39. package/build/lib/util.js.map +1 -0
  40. package/build/lib/zip.js +3 -3
  41. package/build/lib/zip.js.map +1 -0
  42. package/build/tsconfig.tsbuildinfo +1 -1
  43. package/lib/env.js +63 -74
  44. package/lib/fs.js +34 -7
  45. package/package.json +9 -10
package/build/lib/fs.js CHANGED
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
@@ -41,8 +39,12 @@ var _logger = _interopRequireDefault(require("./logger"));
41
39
 
42
40
  var _timing = _interopRequireDefault(require("./timing"));
43
41
 
42
+ var _system = require("./system");
43
+
44
44
  var _util = require("./util");
45
45
 
46
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
47
+
46
48
  const ncpAsync = _bluebird.default.promisify(_ncp.default);
47
49
 
48
50
  const findRootCached = _lodash.default.memoize(_pkgDir.default.sync);
@@ -51,7 +53,21 @@ const fs = {
51
53
  async hasAccess(path) {
52
54
  try {
53
55
  await _fs.promises.access(path, _fs.constants.R_OK);
54
- } catch (err) {
56
+ } catch {
57
+ return false;
58
+ }
59
+
60
+ return true;
61
+ },
62
+
63
+ async isExecutable(path) {
64
+ try {
65
+ if ((0, _system.isWindows)()) {
66
+ return await fs.hasAccess(path);
67
+ }
68
+
69
+ await _fs.promises.access(path, _fs.constants.R_OK | _fs.constants.X_OK);
70
+ } catch {
55
71
  return false;
56
72
  }
57
73
 
@@ -235,4 +251,4 @@ const fs = {
235
251
  exports.fs = fs;
236
252
  var _default = fs;
237
253
  exports.default = _default;
238
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuY3BBc3luYyIsIkIiLCJwcm9taXNpZnkiLCJuY3AiLCJmaW5kUm9vdENhY2hlZCIsIl8iLCJtZW1vaXplIiwicGtnRGlyIiwic3luYyIsImZzIiwiaGFzQWNjZXNzIiwicGF0aCIsImZzUHJvbWlzZXMiLCJhY2Nlc3MiLCJjb25zdGFudHMiLCJSX09LIiwiZXJyIiwiZXhpc3RzIiwicmltcmFmIiwicmltcmFmSWR4IiwicmltcmFmU3luYyIsIm1rZGlyIiwiZmlsZXBhdGgiLCJvcHRzIiwiY29kZSIsImNvcHlGaWxlIiwic291cmNlIiwiZGVzdGluYXRpb24iLCJFcnJvciIsIm1kNSIsImZpbGVQYXRoIiwiaGFzaCIsIm12Iiwid2hpY2giLCJnbG9iIiwic2FuaXRpemVOYW1lIiwic2FuaXRpemUiLCJhbGdvcml0aG0iLCJyZXNvbHZlIiwicmVqZWN0IiwiZmlsZUhhc2giLCJjcnlwdG8iLCJjcmVhdGVIYXNoIiwicmVhZFN0cmVhbSIsImNyZWF0ZVJlYWRTdHJlYW0iLCJvbiIsImUiLCJtZXNzYWdlIiwiY2h1bmsiLCJ1cGRhdGUiLCJkaWdlc3QiLCJ3YWxrIiwiZGlyIiwia2xhdyIsIm1rZGlycCIsInJlY3Vyc2l2ZSIsIndhbGtEaXIiLCJjYWxsYmFjayIsImlzVmFsaWRSb290IiwiZXJyTXNnIiwic3RhdCIsImlzRGlyZWN0b3J5Iiwid2Fsa2VyIiwiZmlsZUNvdW50IiwiZGlyZWN0b3J5Q291bnQiLCJ0aW1lciIsIlRpbWVyIiwic3RhcnQiLCJsYXN0RmlsZVByb2Nlc3NlZCIsImRlcHRoTGltaXQiLCJpdGVtIiwicGF1c2UiLCJzdGF0cyIsInRyeSIsInRoZW4iLCJkb25lIiwicmVzdW1lIiwiY2F0Y2giLCJsb2ciLCJ3YXJuIiwiZmlsZSIsImZpbmFsbHkiLCJkZWJ1ZyIsInBsdXJhbGl6ZSIsImdldER1cmF0aW9uIiwiYXNNaWxsaVNlY29uZHMiLCJ0b0ZpeGVkIiwiZGVzdHJveSIsInJlYWRQYWNrYWdlSnNvbkZyb20iLCJjd2QiLCJmaW5kUm9vdCIsInJlYWRQa2ciLCJpc0Fic29sdXRlIiwiVHlwZUVycm9yIiwicmVzdWx0IiwiYXBwZW5kRmlsZSIsImNobW9kIiwiY2xvc2UiLCJjcmVhdGVXcml0ZVN0cmVhbSIsImxzdGF0Iiwib3BlbiIsIm9wZW5GaWxlIiwicmVhZGRpciIsInJlYWQiLCJyZWFkRmlsZSIsInJlYWRsaW5rIiwicmVhbHBhdGgiLCJyZW5hbWUiLCJzeW1saW5rIiwidW5saW5rIiwid3JpdGUiLCJ3cml0ZUZpbGUiLCJGX09LIiwiV19PSyIsIlhfT0siXSwic291cmNlcyI6WyIuLi8uLi9saWIvZnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7XG4gIGNsb3NlLFxuICBjb25zdGFudHMsXG4gIGNyZWF0ZVJlYWRTdHJlYW0sXG4gIGNyZWF0ZVdyaXRlU3RyZWFtLFxuICBwcm9taXNlcyBhcyBmc1Byb21pc2VzLFxuICByZWFkLFxuICB3cml0ZSxcbiAgb3Blbixcbn0gZnJvbSAnZnMnO1xuaW1wb3J0IGdsb2IgZnJvbSAnZ2xvYic7XG5pbXBvcnQga2xhdyBmcm9tICdrbGF3JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbXYgZnJvbSAnbXYnO1xuaW1wb3J0IG5jcCBmcm9tICduY3AnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgcGtnRGlyIGZyb20gJ3BrZy1kaXInO1xuaW1wb3J0IHJlYWRQa2cgZnJvbSAncmVhZC1wa2cnO1xuaW1wb3J0IHJpbXJhZklkeCBmcm9tICdyaW1yYWYnO1xuaW1wb3J0IHNhbml0aXplIGZyb20gJ3Nhbml0aXplLWZpbGVuYW1lJztcbmltcG9ydCB3aGljaCBmcm9tICd3aGljaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBUaW1lciBmcm9tICcuL3RpbWluZyc7XG5pbXBvcnQge3BsdXJhbGl6ZX0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgbmNwQXN5bmMgPVxuICAvKiogQHR5cGUgeyhzb3VyY2U6IHN0cmluZywgZGVzdDogc3RyaW5nLCBvcHRzOiBuY3AuT3B0aW9uc3x1bmRlZmluZWQpID0+IEI8dm9pZD59ICovIChcbiAgICBCLnByb21pc2lmeShuY3ApXG4gICk7XG5jb25zdCBmaW5kUm9vdENhY2hlZCA9IF8ubWVtb2l6ZShwa2dEaXIuc3luYyk7XG5cbmNvbnN0IGZzID0ge1xuICAvKipcbiAgICogUmVzb2x2ZXMgYHRydWVgIGlmIGBwYXRoYCBpcyBfcmVhZGFibGVfLCB3aGljaCBkaWZmZXJzIGZyb20gTm9kZS5qcycgZGVmYXVsdCBiZWhhdmlvciBvZiBcImNhbiB3ZSBzZWUgaXQ/XCJcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2ZzJykuUGF0aExpa2V9IHBhdGhcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBhc3luYyBoYXNBY2Nlc3MocGF0aCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmc1Byb21pc2VzLmFjY2VzcyhwYXRoLCBjb25zdGFudHMuUl9PSyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBBbGlhcyBmb3Ige0BsaW5rY29kZSBmcy5oYXNBY2Nlc3N9XG4gICAqIEBwYXJhbSB7aW1wb3J0KCdmcycpLlBhdGhMaWtlfSBwYXRoXG4gICAqL1xuICBhc3luYyBleGlzdHMocGF0aCkge1xuICAgIHJldHVybiBhd2FpdCBmcy5oYXNBY2Nlc3MocGF0aCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIGRpcmVjdG9yeSBhbmQgYWxsIGl0cyBjb250ZW50cywgcmVjdXJzaXZlbHlcbiAgICogQHRvZG8gUmVwbGFjZSB3aXRoIGBybSgpYCBmcm9tIGBmcy5wcm9taXNlc2Agd2hlbiBOb2RlLmpzIHYxMiBzdXBwb3J0IGlzIGRyb3BwZWQuXG4gICAqL1xuICByaW1yYWY6IC8qKiBAdHlwZSB7KGRpcnBhdGg6IHN0cmluZywgb3B0cz86IGltcG9ydCgncmltcmFmJykuT3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPn0gKi8gKFxuICAgIEIucHJvbWlzaWZ5KHJpbXJhZklkeClcbiAgKSxcblxuICAvKipcbiAgICogQWxpYXMgb2Yge0BsaW5rY29kZSByaW1yYWZJZHguc3luY31cbiAgICogQHRvZG8gUmVwbGFjZSB3aXRoIGBybVN5bmMoKWAgZnJvbSBgZnNgIHdoZW4gTm9kZS5qcyB2MTIgc3VwcG9ydCBpcyBkcm9wcGVkLlxuICAgKi9cbiAgcmltcmFmU3luYzogcmltcmFmSWR4LnN5bmMsXG5cbiAgLyoqXG4gICAqIExpa2UgTm9kZS5qcycgYGZzUHJvbWlzZXMubWtkaXIoKWAsIGJ1dCB3aWxsIF9ub3RfIHJlamVjdCBpZiB0aGUgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xCdWZmZXJ8VVJMfSBmaWxlcGF0aFxuICAgKiBAcGFyYW0ge2ltcG9ydCgnZnMnKS5NYWtlRGlyZWN0b3J5T3B0aW9uc30gW29wdHNdXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ3x1bmRlZmluZWQ+fVxuICAgKiBAc2VlIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvZnMuaHRtbCNmc3Byb21pc2VzbWtkaXJwYXRoLW9wdGlvbnNcbiAgICovXG4gIGFzeW5jIG1rZGlyKGZpbGVwYXRoLCBvcHRzID0ge30pIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGZzUHJvbWlzZXMubWtkaXIoZmlsZXBhdGgsIG9wdHMpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVycj8uY29kZSAhPT0gJ0VFWElTVCcpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgLyoqXG4gICAqIENvcGllcyBmaWxlcyBfYW5kIGVudGlyZSBkaXJlY3Rvcmllc19cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZSAtIFNvdXJjZSB0byBjb3B5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZXN0aW5hdGlvbiAtIERlc3RpbmF0aW9uIHRvIGNvcHkgdG9cbiAgICogQHBhcmFtIHtuY3AuT3B0aW9uc30gW29wdHNdIC0gQWRkaXRpb25hbCBhcmd1bWVudHMgdG8gcGFzcyB0byBgbmNwYFxuICAgKiBAc2VlIGh0dHBzOi8vbnBtLmltL25jcFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIGNvcHlGaWxlKHNvdXJjZSwgZGVzdGluYXRpb24sIG9wdHMgPSB7fSkge1xuICAgIGlmICghKGF3YWl0IGZzLmhhc0FjY2Vzcyhzb3VyY2UpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZmlsZSBhdCAnJHtzb3VyY2V9JyBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgYWNjZXNzaWJsZWApO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgbmNwQXN5bmMoc291cmNlLCBkZXN0aW5hdGlvbiwgb3B0cyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBNRDUgaGFzaCBvZiBhIGZpbGUuXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdmcycpLlBhdGhMaWtlfSBmaWxlUGF0aFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fVxuICAgKi9cbiAgYXN5bmMgbWQ1KGZpbGVQYXRoKSB7XG4gICAgcmV0dXJuIGF3YWl0IGZzLmhhc2goZmlsZVBhdGgsICdtZDUnKTtcbiAgfSxcblxuICAvKipcbiAgICogTW92ZSBhIGZpbGVcbiAgICovXG4gIG12OiAvKiogQHR5cGUgeyhmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcsIG9wdHM/OiBtdi5PcHRpb25zKSA9PiBCPHZvaWQ+fSAqLyAoQi5wcm9taXNpZnkobXYpKSxcblxuICAvKipcbiAgICogRmluZCBwYXRoIHRvIGFuIGV4ZWN1dGFibGUgaW4gc3lzdGVtIGBQQVRIYFxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vbm9kZS13aGljaFxuICAgKi9cbiAgd2hpY2gsXG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgZ2xvYiBwYXR0ZXJuLCByZXNvbHZlIHdpdGggbGlzdCBvZiBmaWxlcyBtYXRjaGluZyB0aGF0IHBhdHRlcm5cbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaXNhYWNzL25vZGUtZ2xvYlxuICAgKi9cbiAgZ2xvYjogLyoqIEB0eXBlIHsocGF0dGVybjogc3RyaW5nLCBvcHRzPzogZ2xvYi5JT3B0aW9ucykgPT4gQjxzdHJpbmdbXT59ICovIChCLnByb21pc2lmeShnbG9iKSksXG5cbiAgLyoqXG4gICAqIFNhbml0aXplIGEgZmlsZW5hbWVcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcGFyc2hhcC9ub2RlLXNhbml0aXplLWZpbGVuYW1lXG4gICAqL1xuICBzYW5pdGl6ZU5hbWU6IHNhbml0aXplLFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBoZXggZGlnZXN0IG9mIHNvbWUgZmlsZSBhdCBgZmlsZVBhdGhgXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdmcycpLlBhdGhMaWtlfSBmaWxlUGF0aFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FsZ29yaXRobV1cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn1cbiAgICovXG4gIGFzeW5jIGhhc2goZmlsZVBhdGgsIGFsZ29yaXRobSA9ICdzaGExJykge1xuICAgIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBmaWxlSGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKGFsZ29yaXRobSk7XG4gICAgICBjb25zdCByZWFkU3RyZWFtID0gY3JlYXRlUmVhZFN0cmVhbShmaWxlUGF0aCk7XG4gICAgICByZWFkU3RyZWFtLm9uKCdlcnJvcicsIChlKSA9PlxuICAgICAgICByZWplY3QoXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgYENhbm5vdCBjYWxjdWxhdGUgJHthbGdvcml0aG19IGhhc2ggZm9yICcke2ZpbGVQYXRofScuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgICAgcmVhZFN0cmVhbS5vbignZGF0YScsIChjaHVuaykgPT4gZmlsZUhhc2gudXBkYXRlKGNodW5rKSk7XG4gICAgICByZWFkU3RyZWFtLm9uKCdlbmQnLCAoKSA9PiByZXNvbHZlKGZpbGVIYXNoLmRpZ2VzdCgnaGV4JykpKTtcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogUmV0dXJucyBhbiBgV2Fsa2VyYCBpbnN0YW5jZSwgd2hpY2ggaXMgYSByZWFkYWJsZSBzdHJlYW0gKGFuZCB0aHVzbHkgYW4gYXN5bmMgaXRlcmF0b3IpLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyIC0gRGlyIHRvIHN0YXJ0IHdhbGtpbmcgYXRcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2tsYXcnKS5PcHRpb25zfSBbb3B0c11cbiAgICogQHJldHVybnMge2ltcG9ydCgna2xhdycpLldhbGtlcn1cbiAgICogQHNlZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9rbGF3XG4gICAqL1xuICB3YWxrKGRpciwgb3B0cykge1xuICAgIHJldHVybiBrbGF3KGRpciwgb3B0cyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZWx5IGNyZWF0ZSBhIGRpcmVjdG9yeS5cbiAgICogQHBhcmFtIHtpbXBvcnQoJ2ZzJykuUGF0aExpa2V9IGRpclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmd8dW5kZWZpbmVkPn1cbiAgICovXG4gIGFzeW5jIG1rZGlycChkaXIpIHtcbiAgICByZXR1cm4gYXdhaXQgZnMubWtkaXIoZGlyLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFdhbGtzIGEgZGlyZWN0b3J5IGdpdmVuIGFjY29yZGluZyB0byB0aGUgcGFyYW1ldGVycyBnaXZlbi4gVGhlIGNhbGxiYWNrIHdpbGwgYmUgaW52b2tlZCB3aXRoIGEgcGF0aCBqb2luZWQgd2l0aCB0aGUgZGlyIHBhcmFtZXRlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyIERpcmVjdG9yeSBwYXRoIHdoZXJlIHdlIHdpbGwgc3RhcnQgd2Fsa2luZ1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJlY3Vyc2l2ZSBTZXQgaXQgdG8gdHJ1ZSBpZiB5b3Ugd2FudCB0byBjb250aW51ZSB3YWxraW5nIHN1YiBkaXJlY3Rvcmllc1xuICAgKiBAcGFyYW0ge1dhbGtEaXJDYWxsYmFja30gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIGEgbmV3IHBhdGggaXMgZm91bmRcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgZGlyYCBwYXJhbWV0ZXIgY29udGFpbnMgYSBwYXRoIHRvIGFuIGludmFsaWQgZm9sZGVyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz8+fSByZXR1cm5zIHRoZSBmb3VuZCBwYXRoIG9yIG51bGwgaWYgdGhlIGl0ZW0gd2FzIG5vdCBmb3VuZFxuICAgKi9cbiAgYXN5bmMgd2Fsa0RpcihkaXIsIHJlY3Vyc2l2ZSwgY2FsbGJhY2spIHtcbiAgICAvL2VzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tY2FsbGJhY2tzXG4gICAgbGV0IGlzVmFsaWRSb290ID0gZmFsc2U7XG4gICAgbGV0IGVyck1zZyA9IG51bGw7XG4gICAgdHJ5IHtcbiAgICAgIGlzVmFsaWRSb290ID0gKGF3YWl0IGZzLnN0YXQoZGlyKSkuaXNEaXJlY3RvcnkoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJNc2cgPSBlLm1lc3NhZ2U7XG4gICAgfVxuICAgIGlmICghaXNWYWxpZFJvb3QpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgJyR7ZGlyfScgaXMgbm90IGEgdmFsaWQgcm9vdCBkaXJlY3RvcnlgICsgKGVyck1zZyA/IGAuIE9yaWdpbmFsIGVycm9yOiAke2Vyck1zZ31gIDogJycpXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCB3YWxrZXI7XG4gICAgbGV0IGZpbGVDb3VudCA9IDA7XG4gICAgbGV0IGRpcmVjdG9yeUNvdW50ID0gMDtcbiAgICBjb25zdCB0aW1lciA9IG5ldyBUaW1lcigpLnN0YXJ0KCk7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBCKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGxldCBsYXN0RmlsZVByb2Nlc3NlZCA9IEIucmVzb2x2ZSgpO1xuICAgICAgd2Fsa2VyID0ga2xhdyhkaXIsIHtcbiAgICAgICAgZGVwdGhMaW1pdDogcmVjdXJzaXZlID8gLTEgOiAwLFxuICAgICAgfSk7XG4gICAgICB3YWxrZXJcbiAgICAgICAgLm9uKCdkYXRhJywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICB3YWxrZXIucGF1c2UoKTtcblxuICAgICAgICAgIGlmICghaXRlbS5zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgICBmaWxlQ291bnQrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGlyZWN0b3J5Q291bnQrKztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tY2FsbGJhY2tzXG4gICAgICAgICAgbGFzdEZpbGVQcm9jZXNzZWQgPSBCLnRyeShhc3luYyAoKSA9PiBhd2FpdCBjYWxsYmFjayhpdGVtLnBhdGgsIGl0ZW0uc3RhdHMuaXNEaXJlY3RvcnkoKSkpXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoZG9uZSA9IGZhbHNlKSB7XG4gICAgICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShpdGVtLnBhdGgpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdhbGtlci5yZXN1bWUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChyZWplY3QpO1xuICAgICAgICB9KVxuICAgICAgICAub24oJ2Vycm9yJywgZnVuY3Rpb24gKGVyciwgaXRlbSkge1xuICAgICAgICAgIGxvZy53YXJuKGBHb3QgYW4gZXJyb3Igd2hpbGUgd2Fsa2luZyAnJHtpdGVtLnBhdGh9JzogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgICAvLyBrbGF3IGNhbm5vdCBnZXQgYmFjayBmcm9tIGFuIEVOT0VOVCBlcnJvclxuICAgICAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgICAgICAgIGxvZy53YXJuKCdBbGwgZmlsZXMgbWF5IG5vdCBoYXZlIGJlZW4gYWNjZXNzZWQnKTtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGFzdEZpbGVQcm9jZXNzZWRcbiAgICAgICAgICAgIC50aGVuKChmaWxlKSA9PiB7XG4gICAgICAgICAgICAgIHJlc29sdmUoLyoqIEB0eXBlIHtzdHJpbmd8dW5kZWZpbmVkfSAqLyAoZmlsZSkgPz8gbnVsbCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgbG9nLndhcm4oYFVuZXhwZWN0ZWQgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgbG9nLmRlYnVnKFxuICAgICAgICBgVHJhdmVyc2VkICR7cGx1cmFsaXplKCdkaXJlY3RvcnknLCBkaXJlY3RvcnlDb3VudCwgdHJ1ZSl9IGAgK1xuICAgICAgICAgIGBhbmQgJHtwbHVyYWxpemUoJ2ZpbGUnLCBmaWxlQ291bnQsIHRydWUpfSBgICtcbiAgICAgICAgICBgaW4gJHt0aW1lci5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzLnRvRml4ZWQoMCl9bXNgXG4gICAgICApO1xuICAgICAgaWYgKHdhbGtlcikge1xuICAgICAgICB3YWxrZXIuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuICAvKipcbiAgICogUmVhZHMgdGhlIGNsb3Nlc3QgYHBhY2thZ2UuanNvbmAgZmlsZSBmcm9tIGFic29sdXRlIHBhdGggYGRpcmAuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkaXIgLSBEaXJlY3RvcnkgdG8gc2VhcmNoIGZyb21cbiAgICogQHBhcmFtIHtpbXBvcnQoJ3JlYWQtcGtnJykuT3B0aW9uc30gW29wdHNdIC0gQWRkaXRpb25hbCBvcHRpb25zIGZvciBgcmVhZC1wa2dgXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3ZXJlIHByb2JsZW1zIGZpbmRpbmcgb3IgcmVhZGluZyBhIGBwYWNrYWdlLmpzb25gIGZpbGVcbiAgICogQHJldHVybnMge29iamVjdH0gQSBwYXJzZWQgYHBhY2thZ2UuanNvbmBcbiAgICovXG4gIHJlYWRQYWNrYWdlSnNvbkZyb20oZGlyLCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBjd2QgPSBmcy5maW5kUm9vdChkaXIpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gcmVhZFBrZy5zeW5jKHsuLi5vcHRzLCBjd2R9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGVyci5tZXNzYWdlID0gYEZhaWxlZCB0byByZWFkIGEgXFxgcGFja2FnZS5qc29uXFxgIGZyb20gZGlyIFxcYCR7ZGlyfVxcYDpcXG5cXG4ke2Vyci5tZXNzYWdlfWA7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9LFxuICAvKipcbiAgICogRmluZHMgdGhlIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgZnJvbSBgZGlyYC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpciAtIERpcmVjdG9yeSB0byBzZWFyY2ggZnJvbVxuICAgKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIGBkaXJgIGlzIG5vdCBhIG5vbmVtcHR5IHN0cmluZyBvciByZWxhdGl2ZSBwYXRoXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3ZXJlIHByb2JsZW1zIGZpbmRpbmcgdGhlIHByb2plY3Qgcm9vdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY2xvc2VzZXQgcGFyZW50IGRpciBjb250YWluaW5nIGBwYWNrYWdlLmpzb25gXG4gICAqL1xuICBmaW5kUm9vdChkaXIpIHtcbiAgICBpZiAoIWRpciB8fCAhcGF0aC5pc0Fic29sdXRlKGRpcikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2BmaW5kUm9vdCgpYCBtdXN0IGJlIHByb3ZpZGVkIGEgbm9uLWVtcHR5LCBhYnNvbHV0ZSBwYXRoJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGZpbmRSb290Q2FjaGVkKGRpcik7XG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgZmluZFJvb3QoKVxcYCBjb3VsZCBub3QgZmluZCBcXGBwYWNrYWdlLmpzb25cXGAgZnJvbSAke2Rpcn1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSxcblxuICAvLyBhZGQgdGhlIHN1cHBvcnRlZCBgZnNgIGZ1bmN0aW9uc1xuICBhY2Nlc3M6IGZzUHJvbWlzZXMuYWNjZXNzLFxuICBhcHBlbmRGaWxlOiBmc1Byb21pc2VzLmFwcGVuZEZpbGUsXG4gIGNobW9kOiBmc1Byb21pc2VzLmNobW9kLFxuICBjbG9zZTogQi5wcm9taXNpZnkoY2xvc2UpLFxuICBjb25zdGFudHMsXG4gIGNyZWF0ZVdyaXRlU3RyZWFtLFxuICBjcmVhdGVSZWFkU3RyZWFtLFxuICBsc3RhdDogZnNQcm9taXNlcy5sc3RhdCxcbiAgLyoqXG4gICAqIFdhcm5pbmc6IHRoaXMgaXMgYSBwcm9taXNpZmllZCB7QGxpbmtjb2RlIG9wZW4gZnMub3Blbn0uXG4gICAqIEl0IHJlc29sdmVzIHcvYSBmaWxlIGRlc2NyaXB0b3IgaW5zdGVhZCBvZiBhIHtAbGlua2NvZGUgZnNQcm9taXNlcy5GaWxlSGFuZGxlIEZpbGVIYW5kbGV9IG9iamVjdCwgYXMge0BsaW5rY29kZSBmc1Byb21pc2VzLm9wZW59IGRvZXMuIFVzZSB7QGxpbmtjb2RlIGZzLm9wZW5GaWxlfSBpZiB5b3Ugd2FudCBhIGBGaWxlSGFuZGxlYC5cbiAgICogQHR5cGUgeyhwYXRoOiBpbXBvcnQoJ2ZzJykuUGF0aExpa2UsIGZsYWdzOiBpbXBvcnQoJ2ZzJykuT3Blbk1vZGUsIG1vZGU/OiBpbXBvcnQoJ2ZzJykuTW9kZSkgPT4gUHJvbWlzZTxudW1iZXI+fVxuICAgKi9cbiAgb3BlbjogQi5wcm9taXNpZnkob3BlbiksXG4gIG9wZW5GaWxlOiBmc1Byb21pc2VzLm9wZW4sXG4gIHJlYWRkaXI6IGZzUHJvbWlzZXMucmVhZGRpcixcbiAgcmVhZDogQi5wcm9taXNpZnkocmVhZCksXG4gIHJlYWRGaWxlOiBmc1Byb21pc2VzLnJlYWRGaWxlLFxuICByZWFkbGluazogZnNQcm9taXNlcy5yZWFkbGluayxcbiAgcmVhbHBhdGg6IGZzUHJvbWlzZXMucmVhbHBhdGgsXG4gIHJlbmFtZTogZnNQcm9taXNlcy5yZW5hbWUsXG4gIHN0YXQ6IGZzUHJvbWlzZXMuc3RhdCxcbiAgc3ltbGluazogZnNQcm9taXNlcy5zeW1saW5rLFxuICB1bmxpbms6IGZzUHJvbWlzZXMudW5saW5rLFxuICB3cml0ZTogQi5wcm9taXNpZnkod3JpdGUpLFxuICB3cml0ZUZpbGU6IGZzUHJvbWlzZXMud3JpdGVGaWxlLFxuXG4gIC8vIGRlcHJlY2F0ZWQgcHJvcHNcblxuICAvKipcbiAgICogVXNlIGBjb25zdGFudHMuRl9PS2AgaW5zdGVhZC5cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIEZfT0s6IGNvbnN0YW50cy5GX09LLFxuXG4gIC8qKlxuICAgKiBVc2UgYGNvbnN0YW50cy5SX09LYCBpbnN0ZWFkLlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgUl9PSzogY29uc3RhbnRzLlJfT0ssXG5cbiAgLyoqXG4gICAqIFVzZSBgY29uc3RhbnRzLldfT0tgIGluc3RlYWQuXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBXX09LOiBjb25zdGFudHMuV19PSyxcblxuICAvKipcbiAgICogVXNlIGBjb25zdGFudHMuWF9PS2AgaW5zdGVhZC5cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIFhfT0s6IGNvbnN0YW50cy5YX09LLFxufTtcblxuZXhwb3J0IHtmc307XG5leHBvcnQgZGVmYXVsdCBmcztcblxuLyoqXG4gKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBjYWxsZWQgZHVyaW5nIHRoZSBkaXJlY3Rvcnkgd2Fsa2luZ1xuICogQGNhbGxiYWNrIFdhbGtEaXJDYWxsYmFja1xuICogQHBhcmFtIHtzdHJpbmd9IGl0ZW1QYXRoIFRoZSBwYXRoIG9mIHRoZSBmaWxlIG9yIGZvbGRlclxuICogQHBhcmFtIHtib29sZWFufSBpc0RpcmVjdG9yeSBTaG93cyBpZiBpdCBpcyBhIGRpcmVjdG9yeSBvciBhIGZpbGVcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHJldHVybiB0cnVlIGlmIHlvdSB3YW50IHRvIHN0b3Agd2Fsa2luZ1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnZ2xvYicpfSBnbG9iXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtdicpfSBtdlxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBVUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsUUFBUSxHQUVWQyxpQkFBQSxDQUFFQyxTQUFGLENBQVlDLFlBQVosQ0FGSjs7QUFJQSxNQUFNQyxjQUFjLEdB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
254
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuY3BBc3luYyIsIkIiLCJwcm9taXNpZnkiLCJuY3AiLCJmaW5kUm9vdENhY2hlZCIsIl8iLCJtZW1vaXplIiwicGtnRGlyIiwic3luYyIsImZzIiwiaGFzQWNjZXNzIiwicGF0aCIsImZzUHJvbWlzZXMiLCJhY2Nlc3MiLCJjb25zdGFudHMiLCJSX09LIiwiaXNFeGVjdXRhYmxlIiwiaXNXaW5kb3dzIiwiWF9PSyIsImV4aXN0cyIsInJpbXJhZiIsInJpbXJhZklkeCIsInJpbXJhZlN5bmMiLCJta2RpciIsImZpbGVwYXRoIiwib3B0cyIsImVyciIsImNvZGUiLCJjb3B5RmlsZSIsInNvdXJjZSIsImRlc3RpbmF0aW9uIiwiRXJyb3IiLCJtZDUiLCJmaWxlUGF0aCIsImhhc2giLCJtdiIsIndoaWNoIiwiZ2xvYiIsInNhbml0aXplTmFtZSIsInNhbml0aXplIiwiYWxnb3JpdGhtIiwicmVzb2x2ZSIsInJlamVjdCIsImZpbGVIYXNoIiwiY3J5cHRvIiwiY3JlYXRlSGFzaCIsInJlYWRTdHJlYW0iLCJjcmVhdGVSZWFkU3RyZWFtIiwib24iLCJlIiwibWVzc2FnZSIsImNodW5rIiwidXBkYXRlIiwiZGlnZXN0Iiwid2FsayIsImRpciIsImtsYXciLCJta2RpcnAiLCJyZWN1cnNpdmUiLCJ3YWxrRGlyIiwiY2FsbGJhY2siLCJpc1ZhbGlkUm9vdCIsImVyck1zZyIsInN0YXQiLCJpc0RpcmVjdG9yeSIsIndhbGtlciIsImZpbGVDb3VudCIsImRpcmVjdG9yeUNvdW50IiwidGltZXIiLCJUaW1lciIsInN0YXJ0IiwibGFzdEZpbGVQcm9jZXNzZWQiLCJkZXB0aExpbWl0IiwiaXRlbSIsInBhdXNlIiwic3RhdHMiLCJ0cnkiLCJ0aGVuIiwiZG9uZSIsInJlc3VtZSIsImNhdGNoIiwibG9nIiwid2FybiIsImZpbGUiLCJmaW5hbGx5IiwiZGVidWciLCJwbHVyYWxpemUiLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsImRlc3Ryb3kiLCJyZWFkUGFja2FnZUpzb25Gcm9tIiwiY3dkIiwiZmluZFJvb3QiLCJyZWFkUGtnIiwiaXNBYnNvbHV0ZSIsIlR5cGVFcnJvciIsInJlc3VsdCIsImFwcGVuZEZpbGUiLCJjaG1vZCIsImNsb3NlIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJsc3RhdCIsIm9wZW4iLCJvcGVuRmlsZSIsInJlYWRkaXIiLCJyZWFkIiwicmVhZEZpbGUiLCJyZWFkbGluayIsInJlYWxwYXRoIiwicmVuYW1lIiwic3ltbGluayIsInVubGluayIsIndyaXRlIiwid3JpdGVGaWxlIiwiRl9PSyIsIldfT0siXSwic291cmNlcyI6WyIuLi8uLi9saWIvZnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7XG4gIGNsb3NlLFxuICBjb25zdGFudHMsXG4gIGNyZWF0ZVJlYWRTdHJlYW0sXG4gIGNyZWF0ZVdyaXRlU3RyZWFtLFxuICBwcm9taXNlcyBhcyBmc1Byb21pc2VzLFxuICByZWFkLFxuICB3cml0ZSxcbiAgb3Blbixcbn0gZnJvbSAnZnMnO1xuaW1wb3J0IGdsb2IgZnJvbSAnZ2xvYic7XG5pbXBvcnQga2xhdyBmcm9tICdrbGF3JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbXYgZnJvbSAnbXYnO1xuaW1wb3J0IG5jcCBmcm9tICduY3AnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgcGtnRGlyIGZyb20gJ3BrZy1kaXInO1xuaW1wb3J0IHJlYWRQa2cgZnJvbSAncmVhZC1wa2cnO1xuaW1wb3J0IHJpbXJhZklkeCBmcm9tICdyaW1yYWYnO1xuaW1wb3J0IHNhbml0aXplIGZyb20gJ3Nhbml0aXplLWZpbGVuYW1lJztcbmltcG9ydCB3aGljaCBmcm9tICd3aGljaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBUaW1lciBmcm9tICcuL3RpbWluZyc7XG5pbXBvcnQge2lzV2luZG93c30gZnJvbSAnLi9zeXN0ZW0nO1xuaW1wb3J0IHtwbHVyYWxpemV9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IG5jcEFzeW5jID1cbiAgLyoqIEB0eXBlIHsoc291cmNlOiBzdHJpbmcsIGRlc3Q6IHN0cmluZywgb3B0czogbmNwLk9wdGlvbnN8dW5kZWZpbmVkKSA9PiBCPHZvaWQ+fSAqLyAoXG4gICAgQi5wcm9taXNpZnkobmNwKVxuICApO1xuY29uc3QgZmluZFJvb3RDYWNoZWQgPSBfLm1lbW9pemUocGtnRGlyLnN5bmMpO1xuXG5jb25zdCBmcyA9IHtcbiAgLyoqXG4gICAqIFJlc29sdmVzIGB0cnVlYCBpZiBgcGF0aGAgaXMgX3JlYWRhYmxlXywgd2hpY2ggZGlmZmVycyBmcm9tIE5vZGUuanMnIGRlZmF1bHQgYmVoYXZpb3Igb2YgXCJjYW4gd2Ugc2VlIGl0P1wiXG4gICAqXG4gICAqIE9uIFdpbmRvd3MsIEFDTHMgYXJlIG5vdCBzdXBwb3J0ZWQsIHNvIHRoaXMgYmVjb21lcyBhIHNpbXBsZSBjaGVjayBmb3IgZXhpc3RlbmNlLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgcmVqZWN0LlxuICAgKiBAcGFyYW0ge1BhdGhMaWtlfSBwYXRoXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgaGFzQWNjZXNzKHBhdGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnNQcm9taXNlcy5hY2Nlc3MocGF0aCwgY29uc3RhbnRzLlJfT0spO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcblxuICAvKipcbiAgICogUmVzb2x2ZXMgYHRydWVgIGlmIGBwYXRoYCBpcyBleGVjdXRhYmxlOyBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICpcbiAgICogT24gV2luZG93cywgdGhpcyBmdW5jdGlvbiBkZWxlZ2F0ZXMgdG8ge0BsaW5rY29kZSBmcy5oYXNBY2Nlc3N9LlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgcmVqZWN0LlxuICAgKiBAcGFyYW0ge1BhdGhMaWtlfSBwYXRoXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgaXNFeGVjdXRhYmxlKHBhdGgpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGlzV2luZG93cygpKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBmcy5oYXNBY2Nlc3MocGF0aCk7XG4gICAgICB9XG4gICAgICBhd2FpdCBmc1Byb21pc2VzLmFjY2VzcyhwYXRoLCBjb25zdGFudHMuUl9PSyB8IGNvbnN0YW50cy5YX09LKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFsaWFzIGZvciB7QGxpbmtjb2RlIGZzLmhhc0FjY2Vzc31cbiAgICogQHBhcmFtIHtQYXRoTGlrZX0gcGF0aFxuICAgKi9cbiAgYXN5bmMgZXhpc3RzKHBhdGgpIHtcbiAgICByZXR1cm4gYXdhaXQgZnMuaGFzQWNjZXNzKHBhdGgpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBkaXJlY3RvcnkgYW5kIGFsbCBpdHMgY29udGVudHMsIHJlY3Vyc2l2ZWx5XG4gICAqIEB0b2RvIFJlcGxhY2Ugd2l0aCBgcm0oKWAgZnJvbSBgZnMucHJvbWlzZXNgIHdoZW4gTm9kZS5qcyB2MTIgc3VwcG9ydCBpcyBkcm9wcGVkLlxuICAgKi9cbiAgcmltcmFmOiAvKiogQHR5cGUgeyhkaXJwYXRoOiBzdHJpbmcsIG9wdHM/OiBpbXBvcnQoJ3JpbXJhZicpLk9wdGlvbnMpID0+IFByb21pc2U8dm9pZD59ICovIChcbiAgICBCLnByb21pc2lmeShyaW1yYWZJZHgpXG4gICksXG5cbiAgLyoqXG4gICAqIEFsaWFzIG9mIHtAbGlua2NvZGUgcmltcmFmSWR4LnN5bmN9XG4gICAqIEB0b2RvIFJlcGxhY2Ugd2l0aCBgcm1TeW5jKClgIGZyb20gYGZzYCB3aGVuIE5vZGUuanMgdjEyIHN1cHBvcnQgaXMgZHJvcHBlZC5cbiAgICovXG4gIHJpbXJhZlN5bmM6IHJpbXJhZklkeC5zeW5jLFxuXG4gIC8qKlxuICAgKiBMaWtlIE5vZGUuanMnIGBmc1Byb21pc2VzLm1rZGlyKClgLCBidXQgd2lsbCBfbm90XyByZWplY3QgaWYgdGhlIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8QnVmZmVyfFVSTH0gZmlsZXBhdGhcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2ZzJykuTWFrZURpcmVjdG9yeU9wdGlvbnN9IFtvcHRzXVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmd8dW5kZWZpbmVkPn1cbiAgICogQHNlZSBodHRwczovL25vZGVqcy5vcmcvYXBpL2ZzLmh0bWwjZnNwcm9taXNlc21rZGlycGF0aC1vcHRpb25zXG4gICAqL1xuICBhc3luYyBta2RpcihmaWxlcGF0aCwgb3B0cyA9IHt9KSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmc1Byb21pc2VzLm1rZGlyKGZpbGVwYXRoLCBvcHRzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnI/LmNvZGUgIT09ICdFRVhJU1QnKSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIC8qKlxuICAgKiBDb3BpZXMgZmlsZXMgX2FuZCBlbnRpcmUgZGlyZWN0b3JpZXNfXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2UgLSBTb3VyY2UgdG8gY29weVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzdGluYXRpb24gLSBEZXN0aW5hdGlvbiB0byBjb3B5IHRvXG4gICAqIEBwYXJhbSB7bmNwLk9wdGlvbnN9IFtvcHRzXSAtIEFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdG8gYG5jcGBcbiAgICogQHNlZSBodHRwczovL25wbS5pbS9uY3BcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBjb3B5RmlsZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBvcHRzID0ge30pIHtcbiAgICBpZiAoIShhd2FpdCBmcy5oYXNBY2Nlc3Moc291cmNlKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGZpbGUgYXQgJyR7c291cmNlfScgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGFjY2Vzc2libGVgKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IG5jcEFzeW5jKHNvdXJjZSwgZGVzdGluYXRpb24sIG9wdHMpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gTUQ1IGhhc2ggb2YgYSBmaWxlLlxuICAgKiBAcGFyYW0ge1BhdGhMaWtlfSBmaWxlUGF0aFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fVxuICAgKi9cbiAgYXN5bmMgbWQ1KGZpbGVQYXRoKSB7XG4gICAgcmV0dXJuIGF3YWl0IGZzLmhhc2goZmlsZVBhdGgsICdtZDUnKTtcbiAgfSxcblxuICAvKipcbiAgICogTW92ZSBhIGZpbGVcbiAgICovXG4gIG12OiAvKiogQHR5cGUgeyhmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcsIG9wdHM/OiBtdi5PcHRpb25zKSA9PiBCPHZvaWQ+fSAqLyAoQi5wcm9taXNpZnkobXYpKSxcblxuICAvKipcbiAgICogRmluZCBwYXRoIHRvIGFuIGV4ZWN1dGFibGUgaW4gc3lzdGVtIGBQQVRIYFxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vbm9kZS13aGljaFxuICAgKi9cbiAgd2hpY2gsXG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgZ2xvYiBwYXR0ZXJuLCByZXNvbHZlIHdpdGggbGlzdCBvZiBmaWxlcyBtYXRjaGluZyB0aGF0IHBhdHRlcm5cbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaXNhYWNzL25vZGUtZ2xvYlxuICAgKi9cbiAgZ2xvYjogLyoqIEB0eXBlIHsocGF0dGVybjogc3RyaW5nLCBvcHRzPzogZ2xvYi5JT3B0aW9ucykgPT4gQjxzdHJpbmdbXT59ICovIChCLnByb21pc2lmeShnbG9iKSksXG5cbiAgLyoqXG4gICAqIFNhbml0aXplIGEgZmlsZW5hbWVcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcGFyc2hhcC9ub2RlLXNhbml0aXplLWZpbGVuYW1lXG4gICAqL1xuICBzYW5pdGl6ZU5hbWU6IHNhbml0aXplLFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBoZXggZGlnZXN0IG9mIHNvbWUgZmlsZSBhdCBgZmlsZVBhdGhgXG4gICAqIEBwYXJhbSB7UGF0aExpa2V9IGZpbGVQYXRoXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYWxnb3JpdGhtXVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fVxuICAgKi9cbiAgYXN5bmMgaGFzaChmaWxlUGF0aCwgYWxnb3JpdGhtID0gJ3NoYTEnKSB7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGZpbGVIYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goYWxnb3JpdGhtKTtcbiAgICAgIGNvbnN0IHJlYWRTdHJlYW0gPSBjcmVhdGVSZWFkU3RyZWFtKGZpbGVQYXRoKTtcbiAgICAgIHJlYWRTdHJlYW0ub24oJ2Vycm9yJywgKGUpID0+XG4gICAgICAgIHJlamVjdChcbiAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgQ2Fubm90IGNhbGN1bGF0ZSAke2FsZ29yaXRobX0gaGFzaCBmb3IgJyR7ZmlsZVBhdGh9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWBcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICByZWFkU3RyZWFtLm9uKCdkYXRhJywgKGNodW5rKSA9PiBmaWxlSGFzaC51cGRhdGUoY2h1bmspKTtcbiAgICAgIHJlYWRTdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoZmlsZUhhc2guZGlnZXN0KCdoZXgnKSkpO1xuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGBXYWxrZXJgIGluc3RhbmNlLCB3aGljaCBpcyBhIHJlYWRhYmxlIHN0cmVhbSAoYW5kIHRodXNseSBhbiBhc3luYyBpdGVyYXRvcikuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkaXIgLSBEaXIgdG8gc3RhcnQgd2Fsa2luZyBhdFxuICAgKiBAcGFyYW0ge2ltcG9ydCgna2xhdycpLk9wdGlvbnN9IFtvcHRzXVxuICAgKiBAcmV0dXJucyB7aW1wb3J0KCdrbGF3JykuV2Fsa2VyfVxuICAgKiBAc2VlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2tsYXdcbiAgICovXG4gIHdhbGsoZGlyLCBvcHRzKSB7XG4gICAgcmV0dXJuIGtsYXcoZGlyLCBvcHRzKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgY3JlYXRlIGEgZGlyZWN0b3J5LlxuICAgKiBAcGFyYW0ge1BhdGhMaWtlfSBkaXJcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nfHVuZGVmaW5lZD59XG4gICAqL1xuICBhc3luYyBta2RpcnAoZGlyKSB7XG4gICAgcmV0dXJuIGF3YWl0IGZzLm1rZGlyKGRpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBXYWxrcyBhIGRpcmVjdG9yeSBnaXZlbiBhY2NvcmRpbmcgdG8gdGhlIHBhcmFtZXRlcnMgZ2l2ZW4uIFRoZSBjYWxsYmFjayB3aWxsIGJlIGludm9rZWQgd2l0aCBhIHBhdGggam9pbmVkIHdpdGggdGhlIGRpciBwYXJhbWV0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpciBEaXJlY3RvcnkgcGF0aCB3aGVyZSB3ZSB3aWxsIHN0YXJ0IHdhbGtpbmdcbiAgICogQHBhcmFtIHtib29sZWFufSByZWN1cnNpdmUgU2V0IGl0IHRvIHRydWUgaWYgeW91IHdhbnQgdG8gY29udGludWUgd2Fsa2luZyBzdWIgZGlyZWN0b3JpZXNcbiAgICogQHBhcmFtIHtXYWxrRGlyQ2FsbGJhY2t9IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBhIG5ldyBwYXRoIGlzIGZvdW5kXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYGRpcmAgcGFyYW1ldGVyIGNvbnRhaW5zIGEgcGF0aCB0byBhbiBpbnZhbGlkIGZvbGRlclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc/Pn0gcmV0dXJucyB0aGUgZm91bmQgcGF0aCBvciBudWxsIGlmIHRoZSBpdGVtIHdhcyBub3QgZm91bmRcbiAgICovXG4gIGFzeW5jIHdhbGtEaXIoZGlyLCByZWN1cnNpdmUsIGNhbGxiYWNrKSB7XG4gICAgLy9lc2xpbnQtZGlzYWJsZS1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrc1xuICAgIGxldCBpc1ZhbGlkUm9vdCA9IGZhbHNlO1xuICAgIGxldCBlcnJNc2cgPSBudWxsO1xuICAgIHRyeSB7XG4gICAgICBpc1ZhbGlkUm9vdCA9IChhd2FpdCBmcy5zdGF0KGRpcikpLmlzRGlyZWN0b3J5KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZXJyTXNnID0gZS5tZXNzYWdlO1xuICAgIH1cbiAgICBpZiAoIWlzVmFsaWRSb290KSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYCcke2Rpcn0nIGlzIG5vdCBhIHZhbGlkIHJvb3QgZGlyZWN0b3J5YCArIChlcnJNc2cgPyBgLiBPcmlnaW5hbCBlcnJvcjogJHtlcnJNc2d9YCA6ICcnKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgd2Fsa2VyO1xuICAgIGxldCBmaWxlQ291bnQgPSAwO1xuICAgIGxldCBkaXJlY3RvcnlDb3VudCA9IDA7XG4gICAgY29uc3QgdGltZXIgPSBuZXcgVGltZXIoKS5zdGFydCgpO1xuICAgIHJldHVybiBhd2FpdCBuZXcgQihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBsZXQgbGFzdEZpbGVQcm9jZXNzZWQgPSBCLnJlc29sdmUoKTtcbiAgICAgIHdhbGtlciA9IGtsYXcoZGlyLCB7XG4gICAgICAgIGRlcHRoTGltaXQ6IHJlY3Vyc2l2ZSA/IC0xIDogMCxcbiAgICAgIH0pO1xuICAgICAgd2Fsa2VyXG4gICAgICAgIC5vbignZGF0YScsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgd2Fsa2VyLnBhdXNlKCk7XG5cbiAgICAgICAgICBpZiAoIWl0ZW0uc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgZmlsZUNvdW50Kys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRpcmVjdG9yeUNvdW50Kys7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrc1xuICAgICAgICAgIGxhc3RGaWxlUHJvY2Vzc2VkID0gQi50cnkoYXN5bmMgKCkgPT4gYXdhaXQgY2FsbGJhY2soaXRlbS5wYXRoLCBpdGVtLnN0YXRzLmlzRGlyZWN0b3J5KCkpKVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKGRvbmUgPSBmYWxzZSkge1xuICAgICAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoaXRlbS5wYXRoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3YWxrZXIucmVzdW1lKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIsIGl0ZW0pIHtcbiAgICAgICAgICBsb2cud2FybihgR290IGFuIGVycm9yIHdoaWxlIHdhbGtpbmcgJyR7aXRlbS5wYXRofSc6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgLy8ga2xhdyBjYW5ub3QgZ2V0IGJhY2sgZnJvbSBhbiBFTk9FTlQgZXJyb3JcbiAgICAgICAgICBpZiAoZXJyLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgICBsb2cud2FybignQWxsIGZpbGVzIG1heSBub3QgaGF2ZSBiZWVuIGFjY2Vzc2VkJyk7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxhc3RGaWxlUHJvY2Vzc2VkXG4gICAgICAgICAgICAudGhlbigoZmlsZSkgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKC8qKiBAdHlwZSB7c3RyaW5nfHVuZGVmaW5lZH0gKi8gKGZpbGUpID8/IG51bGwpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgIGxvZy53YXJuKGBVbmV4cGVjdGVkIGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KS5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgIGxvZy5kZWJ1ZyhcbiAgICAgICAgYFRyYXZlcnNlZCAke3BsdXJhbGl6ZSgnZGlyZWN0b3J5JywgZGlyZWN0b3J5Q291bnQsIHRydWUpfSBgICtcbiAgICAgICAgICBgYW5kICR7cGx1cmFsaXplKCdmaWxlJywgZmlsZUNvdW50LCB0cnVlKX0gYCArXG4gICAgICAgICAgYGluICR7dGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kcy50b0ZpeGVkKDApfW1zYFxuICAgICAgKTtcbiAgICAgIGlmICh3YWxrZXIpIHtcbiAgICAgICAgd2Fsa2VyLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBjbG9zZXN0IGBwYWNrYWdlLmpzb25gIGZpbGUgZnJvbSBhYnNvbHV0ZSBwYXRoIGBkaXJgLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyIC0gRGlyZWN0b3J5IHRvIHNlYXJjaCBmcm9tXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdyZWFkLXBrZycpLk9wdGlvbnN9IFtvcHRzXSAtIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgYHJlYWQtcGtnYFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2VyZSBwcm9ibGVtcyBmaW5kaW5nIG9yIHJlYWRpbmcgYSBgcGFja2FnZS5qc29uYCBmaWxlXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IEEgcGFyc2VkIGBwYWNrYWdlLmpzb25gXG4gICAqL1xuICByZWFkUGFja2FnZUpzb25Gcm9tKGRpciwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgY3dkID0gZnMuZmluZFJvb3QoZGlyKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHJlYWRQa2cuc3luYyh7Li4ub3B0cywgY3dkfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBlcnIubWVzc2FnZSA9IGBGYWlsZWQgdG8gcmVhZCBhIFxcYHBhY2thZ2UuanNvblxcYCBmcm9tIGRpciBcXGAke2Rpcn1cXGA6XFxuXFxuJHtlcnIubWVzc2FnZX1gO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfSxcbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5IGZyb20gYGRpcmAuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkaXIgLSBEaXJlY3RvcnkgdG8gc2VhcmNoIGZyb21cbiAgICogQHRocm93cyB7VHlwZUVycm9yfSBJZiBgZGlyYCBpcyBub3QgYSBub25lbXB0eSBzdHJpbmcgb3IgcmVsYXRpdmUgcGF0aFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2VyZSBwcm9ibGVtcyBmaW5kaW5nIHRoZSBwcm9qZWN0IHJvb3RcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGNsb3Nlc2V0IHBhcmVudCBkaXIgY29udGFpbmluZyBgcGFja2FnZS5qc29uYFxuICAgKi9cbiAgZmluZFJvb3QoZGlyKSB7XG4gICAgaWYgKCFkaXIgfHwgIXBhdGguaXNBYnNvbHV0ZShkaXIpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdgZmluZFJvb3QoKWAgbXVzdCBiZSBwcm92aWRlZCBhIG5vbi1lbXB0eSwgYWJzb2x1dGUgcGF0aCcpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBmaW5kUm9vdENhY2hlZChkaXIpO1xuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFxcYGZpbmRSb290KClcXGAgY291bGQgbm90IGZpbmQgXFxgcGFja2FnZS5qc29uXFxgIGZyb20gJHtkaXJ9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sXG5cbiAgLy8gYWRkIHRoZSBzdXBwb3J0ZWQgYGZzYCBmdW5jdGlvbnNcbiAgYWNjZXNzOiBmc1Byb21pc2VzLmFjY2VzcyxcbiAgYXBwZW5kRmlsZTogZnNQcm9taXNlcy5hcHBlbmRGaWxlLFxuICBjaG1vZDogZnNQcm9taXNlcy5jaG1vZCxcbiAgY2xvc2U6IEIucHJvbWlzaWZ5KGNsb3NlKSxcbiAgY29uc3RhbnRzLFxuICBjcmVhdGVXcml0ZVN0cmVhbSxcbiAgY3JlYXRlUmVhZFN0cmVhbSxcbiAgbHN0YXQ6IGZzUHJvbWlzZXMubHN0YXQsXG4gIC8qKlxuICAgKiBXYXJuaW5nOiB0aGlzIGlzIGEgcHJvbWlzaWZpZWQge0BsaW5rY29kZSBvcGVuIGZzLm9wZW59LlxuICAgKiBJdCByZXNvbHZlcyB3L2EgZmlsZSBkZXNjcmlwdG9yIGluc3RlYWQgb2YgYSB7QGxpbmtjb2RlIGZzUHJvbWlzZXMuRmlsZUhhbmRsZSBGaWxlSGFuZGxlfSBvYmplY3QsIGFzIHtAbGlua2NvZGUgZnNQcm9taXNlcy5vcGVufSBkb2VzLiBVc2Uge0BsaW5rY29kZSBmcy5vcGVuRmlsZX0gaWYgeW91IHdhbnQgYSBgRmlsZUhhbmRsZWAuXG4gICAqIEB0eXBlIHsocGF0aDogUGF0aExpa2UsIGZsYWdzOiBpbXBvcnQoJ2ZzJykuT3Blbk1vZGUsIG1vZGU/OiBpbXBvcnQoJ2ZzJykuTW9kZSkgPT4gUHJvbWlzZTxudW1iZXI+fVxuICAgKi9cbiAgb3BlbjogQi5wcm9taXNpZnkob3BlbiksXG4gIG9wZW5GaWxlOiBmc1Byb21pc2VzLm9wZW4sXG4gIHJlYWRkaXI6IGZzUHJvbWlzZXMucmVhZGRpcixcbiAgcmVhZDogQi5wcm9taXNpZnkocmVhZCksXG4gIHJlYWRGaWxlOiBmc1Byb21pc2VzLnJlYWRGaWxlLFxuICByZWFkbGluazogZnNQcm9taXNlcy5yZWFkbGluayxcbiAgcmVhbHBhdGg6IGZzUHJvbWlzZXMucmVhbHBhdGgsXG4gIHJlbmFtZTogZnNQcm9taXNlcy5yZW5hbWUsXG4gIHN0YXQ6IGZzUHJvbWlzZXMuc3RhdCxcbiAgc3ltbGluazogZnNQcm9taXNlcy5zeW1saW5rLFxuICB1bmxpbms6IGZzUHJvbWlzZXMudW5saW5rLFxuICB3cml0ZTogQi5wcm9taXNpZnkod3JpdGUpLFxuICB3cml0ZUZpbGU6IGZzUHJvbWlzZXMud3JpdGVGaWxlLFxuXG4gIC8vIGRlcHJlY2F0ZWQgcHJvcHNcblxuICAvKipcbiAgICogVXNlIGBjb25zdGFudHMuRl9PS2AgaW5zdGVhZC5cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIEZfT0s6IGNvbnN0YW50cy5GX09LLFxuXG4gIC8qKlxuICAgKiBVc2UgYGNvbnN0YW50cy5SX09LYCBpbnN0ZWFkLlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgUl9PSzogY29uc3RhbnRzLlJfT0ssXG5cbiAgLyoqXG4gICAqIFVzZSBgY29uc3RhbnRzLldfT0tgIGluc3RlYWQuXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBXX09LOiBjb25zdGFudHMuV19PSyxcblxuICAvKipcbiAgICogVXNlIGBjb25zdGFudHMuWF9PS2AgaW5zdGVhZC5cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIFhfT0s6IGNvbnN0YW50cy5YX09LLFxufTtcblxuZXhwb3J0IHtmc307XG5leHBvcnQgZGVmYXVsdCBmcztcblxuLyoqXG4gKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBjYWxsZWQgZHVyaW5nIHRoZSBkaXJlY3Rvcnkgd2Fsa2luZ1xuICogQGNhbGxiYWNrIFdhbGtEaXJDYWxsYmFja1xuICogQHBhcmFtIHtzdHJpbmd9IGl0ZW1QYXRoIFRoZSBwYXRoIG9mIHRoZSBmaWxlIG9yIGZvbGRlclxuICogQHBhcmFtIHtib29sZWFufSBpc0RpcmVjdG9yeSBTaG93cyBpZiBpdCBpcyBhIGRpcmVjdG9yeSBvciBhIGZpbGVcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHJldHVybiB0cnVlIGlmIHlvdSB3YW50IHRvIHN0b3Agd2Fsa2luZ1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnZ2xvYicpfSBnbG9iXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtdicpfSBtdlxuICogQHR5cGVkZWYge2ltcG9ydCgnZnMnKS5QYXRoTGlrZX0gUGF0aExpa2VcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFVQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVBLE1BQU1BLFFBQVEsR0FFVkMsaUJBQUEsQ0FBRUMsU0FBRixDQUFZQyxZQUFaLENBRko7O0FBSUEsTUFBTUMsY0FBYyxHQUFHQyxlQUFBLENBQUVDLE9BQUYsQ0FBVUMsZUFBQSxDQUFPQyxJQUFqQixDQUF2Qjs7QUFFQSxNQUFNQyxFQUFFLEdBQUc7RUFVVCxNQUFNQyxTQUFOLENBQWdCQyxJQUFoQixFQUFzQjtJQUNwQixJQUFJO01BQ0YsTUFBTUMsWUFBQSxDQUFXQyxNQUFYLENBQWtCRixJQUFsQixFQUF3QkcsYUFBQSxDQUFVQyxJQUFsQyxDQUFOO0lBQ0QsQ0FGRCxDQUVFLE1BQU07TUFDTixPQUFPLEtBQVA7SUFDRDs7SUFDRCxPQUFPLElBQVA7RUFDRCxDQWpCUTs7RUE0QlQsTUFBTUMsWUFBTixDQUFtQkwsSUFBbkIsRUFBeUI7SUFDdkIsSUFBSTtNQUNGLElBQUksSUFBQU0saUJBQUEsR0FBSixFQUFpQjtRQUNmLE9BQU8sTUFBTVIsRUFBRSxDQUFDQyxTQUFILENBQWFDLElBQWIsQ0FBYjtNQUNEOztNQUNELE1BQU1DLFlBQUEsQ0FBV0MsTUFBWCxDQUFrQkYsSUFBbEIsRUFBd0JHLGFBQUEsQ0FBVUMsSUFBVixHQUFpQkQsYUFBQSxDQUFVSSxJQUFuRCxDQUFOO0lBQ0QsQ0FMRCxDQUtFLE1BQU07TUFDTixPQUFPLEtBQVA7SUFDRDs7SUFDRCxPQUFPLElBQVA7RUFDRCxDQXRDUTs7RUE0Q1QsTUFBTUMsTUFBTixDQUFhUixJQUFiLEVBQW1CO0lBQ2pCLE9BQU8sTUFBTUYsRUFBRSxDQUFDQyxTQUFILENBQWFDLElBQWIsQ0FBYjtFQUNELENBOUNROztFQW9EVFMsTUFBTSxFQUNKbkIsaUJBQUEsQ0FBRUMsU0FBRixDQUFZbUIsZUFBWixDQXJETztFQTREVEMsVUFBVSxFQUFFRCxlQUFBLENBQVViLElBNURiOztFQXNFVCxNQUFNZSxLQUFOLENBQVlDLFFBQVosRUFBc0JDLElBQUksR0FBRyxFQUE3QixFQUFpQztJQUMvQixJQUFJO01BQ0YsT0FBTyxNQUFNYixZQUFBLENBQVdXLEtBQVgsQ0FBaUJDLFFBQWpCLEVBQTJCQyxJQUEzQixDQUFiO0lBQ0QsQ0FGRCxDQUVFLE9BQU9DLEdBQVAsRUFBWTtNQUNaLElBQUksQ0FBQUEsR0FBRyxTQUFILElBQUFBLEdBQUcsV0FBSCxZQUFBQSxHQUFHLENBQUVDLElBQUwsTUFBYyxRQUFsQixFQUE0QjtRQUMxQixNQUFNRCxHQUFOO01BQ0Q7SUFDRjtFQUNGLENBOUVROztFQXVGVCxNQUFNRSxRQUFOLENBQWVDLE1BQWYsRUFBdUJDLFdBQXZCLEVBQW9DTCxJQUFJLEdBQUcsRUFBM0MsRUFBK0M7SUFDN0MsSUFBSSxFQUFFLE1BQU1oQixFQUFFLENBQUNDLFNBQUgsQ0FBYW1CLE1BQWIsQ0FBUixDQUFKLEVBQW1DO01BQ2pDLE1BQU0sSUFBSUUsS0FBSixDQUFXLGdCQUFlRixNQUFPLHVDQUFqQyxDQUFOO0lBQ0Q7O0lBQ0QsT0FBTyxNQUFNN0IsUUFBUSxDQUFDNkIsTUFBRCxFQUFTQyxXQUFULEVBQXNCTCxJQUF0QixDQUFyQjtFQUNELENBNUZROztFQW1HVCxNQUFNTyxHQUFOLENBQVVDLFFBQVYsRUFBb0I7SUFDbEIsT0FBTyxNQUFNeEIsRUFBRSxDQUFDeUIsSUFBSCxDQUFRRCxRQUFSLEVBQWtCLEtBQWxCLENBQWI7RUFDRCxDQXJHUTs7RUEwR1RFLEVBQUUsRUFBMkVsQyxpQkFBQSxDQUFFQyxTQUFGLENBQVlpQyxXQUFaLENBMUdwRTtFQWdIVEMsS0FBSyxFQUFMQSxjQWhIUztFQXNIVEMsSUFBSSxFQUF5RXBDLGlCQUFBLENBQUVDLFNBQUYsQ0FBWW1DLGFBQVosQ0F0SHBFO0VBNEhUQyxZQUFZLEVBQUVDLHlCQTVITDs7RUFvSVQsTUFBTUwsSUFBTixDQUFXRCxRQUFYLEVBQXFCTyxTQUFTLEdBQUcsTUFBakMsRUFBeUM7SUFDdkMsT0FBTyxNQUFNLElBQUl2QyxpQkFBSixDQUFNLENBQUN3QyxPQUFELEVBQVVDLE1BQVYsS0FBcUI7TUFDdEMsTUFBTUMsUUFBUSxHQUFHQyxlQUFBLENBQU9DLFVBQVAsQ0FBa0JMLFNBQWxCLENBQWpCOztNQUNBLE1BQU1NLFVBQVUsR0FBRyxJQUFBQyxvQkFBQSxFQUFpQmQsUUFBakIsQ0FBbkI7TUFDQWEsVUFBVSxDQUFDRSxFQUFYLENBQWMsT0FBZCxFQUF3QkMsQ0FBRCxJQUNyQlAsTUFBTSxDQUNKLElBQUlYLEtBQUosQ0FDRyxvQkFBbUJTLFNBQVUsY0FBYVAsUUFBUyxzQkFBcUJnQixDQUFDLENBQUNDLE9BQVEsRUFEckYsQ0FESSxDQURSO01BT0FKLFVBQVUsQ0FBQ0UsRUFBWCxDQUFjLE1BQWQsRUFBdUJHLEtBQUQsSUFBV1IsUUFBUSxDQUFDUyxNQUFULENBQWdCRCxLQUFoQixDQUFqQztNQUNBTCxVQUFVLENBQUNFLEVBQVgsQ0FBYyxLQUFkLEVBQXFCLE1BQU1QLE9BQU8sQ0FBQ0UsUUFBUSxDQUFDVSxNQUFULENBQWdCLEtBQWhCLENBQUQsQ0FBbEM7SUFDRCxDQVpZLENBQWI7RUFhRCxDQWxKUTs7RUE0SlRDLElBQUksQ0FBQ0MsR0FBRCxFQUFNOUIsSUFBTixFQUFZO0lBQ2QsT0FBTyxJQUFBK0IsYUFBQSxFQUFLRCxHQUFMLEVBQVU5QixJQUFWLENBQVA7RUFDRCxDQTlKUTs7RUFxS1QsTUFBTWdDLE1BQU4sQ0FBYUYsR0FBYixFQUFrQjtJQUNoQixPQUFPLE1BQU05QyxFQUFFLENBQUNjLEtBQUgsQ0FBU2dDLEdBQVQsRUFBYztNQUFDRyxTQUFTLEVBQUU7SUFBWixDQUFkLENBQWI7RUFDRCxDQXZLUTs7RUFpTFQsTUFBTUMsT0FBTixDQUFjSixHQUFkLEVBQW1CRyxTQUFuQixFQUE4QkUsUUFBOUIsRUFBd0M7SUFFdEMsSUFBSUMsV0FBVyxHQUFHLEtBQWxCO0lBQ0EsSUFBSUMsTUFBTSxHQUFHLElBQWI7O0lBQ0EsSUFBSTtNQUNGRCxXQUFXLEdBQUcsQ0FBQyxNQUFNcEQsRUFBRSxDQUFDc0QsSUFBSCxDQUFRUixHQUFSLENBQVAsRUFBcUJTLFdBQXJCLEVBQWQ7SUFDRCxDQUZELENBRUUsT0FBT2YsQ0FBUCxFQUFVO01BQ1ZhLE1BQU0sR0FBR2IsQ0FBQyxDQUFDQyxPQUFYO0lBQ0Q7O0lBQ0QsSUFBSSxDQUFDVyxXQUFMLEVBQWtCO01BQ2hCLE1BQU05QixLQUFLLENBQ1IsSUFBR3dCLEdBQUksaUNBQVIsSUFBNENPLE1BQU0sR0FBSSxxQkFBb0JBLE1BQU8sRUFBL0IsR0FBbUMsRUFBckYsQ0FEUyxDQUFYO0lBR0Q7O0lBRUQsSUFBSUcsTUFBSjtJQUNBLElBQUlDLFNBQVMsR0FBRyxDQUFoQjtJQUNBLElBQUlDLGNBQWMsR0FBRyxDQUFyQjtJQUNBLE1BQU1DLEtBQUssR0FBRyxJQUFJQyxlQUFKLEdBQVlDLEtBQVosRUFBZDtJQUNBLE9BQU8sTUFBTSxJQUFJckUsaUJBQUosQ0FBTSxVQUFVd0MsT0FBVixFQUFtQkMsTUFBbkIsRUFBMkI7TUFDNUMsSUFBSTZCLGlCQUFpQixHQUFHdEUsaUJBQUEsQ0FBRXdDLE9BQUYsRUFBeEI7O01BQ0F3QixNQUFNLEdBQUcsSUFBQVQsYUFBQSxFQUFLRCxHQUFMLEVBQVU7UUFDakJpQixVQUFVLEVBQUVkLFNBQVMsR0FBRyxDQUFDLENBQUosR0FBUTtNQURaLENBQVYsQ0FBVDtNQUdBTyxNQUFNLENBQ0hqQixFQURILENBQ00sTUFETixFQUNjLFVBQVV5QixJQUFWLEVBQWdCO1FBQzFCUixNQUFNLENBQUNTLEtBQVA7O1FBRUEsSUFBSSxDQUFDRCxJQUFJLENBQUNFLEtBQUwsQ0FBV1gsV0FBWCxFQUFMLEVBQStCO1VBQzdCRSxTQUFTO1FBQ1YsQ0FGRCxNQUVPO1VBQ0xDLGNBQWM7UUFDZjs7UUFHREksaUJBQWlCLEdBQUd0RSxpQkFBQSxDQUFFMkUsR0FBRixDQUFNLFlBQVksTUFBTWhCLFFBQVEsQ0FBQ2EsSUFBSSxDQUFDOUQsSUFBTixFQUFZOEQsSUFBSSxDQUFDRSxLQUFMLENBQVdYLFdBQVgsRUFBWixDQUFoQyxFQUNqQmEsSUFEaUIsQ0FDWixVQUFVQyxJQUFJLEdBQUcsS0FBakIsRUFBd0I7VUFDNUIsSUFBSUEsSUFBSixFQUFVO1lBQ1JyQyxPQUFPLENBQUNnQyxJQUFJLENBQUM5RCxJQUFOLENBQVA7VUFDRCxDQUZELE1BRU87WUFDTHNELE1BQU0sQ0FBQ2MsTUFBUDtVQUNEO1FBQ0YsQ0FQaUIsRUFRakJDLEtBUmlCLENBUVh0QyxNQVJXLENBQXBCO01BU0QsQ0FwQkgsRUFxQkdNLEVBckJILENBcUJNLE9BckJOLEVBcUJlLFVBQVV0QixHQUFWLEVBQWUrQyxJQUFmLEVBQXFCO1FBQ2hDUSxlQUFBLENBQUlDLElBQUosQ0FBVSwrQkFBOEJULElBQUksQ0FBQzlELElBQUssTUFBS2UsR0FBRyxDQUFDd0IsT0FBUSxFQUFuRTs7UUFFQSxJQUFJeEIsR0FBRyxDQUFDQyxJQUFKLEtBQWEsUUFBakIsRUFBMkI7VUFDekJzRCxlQUFBLENBQUlDLElBQUosQ0FBUyxzQ0FBVDs7VUFDQXhDLE1BQU0sQ0FBQ2hCLEdBQUQsQ0FBTjtRQUNEO01BQ0YsQ0E1QkgsRUE2QkdzQixFQTdCSCxDQTZCTSxLQTdCTixFQTZCYSxZQUFZO1FBQ3JCdUIsaUJBQWlCLENBQ2RNLElBREgsQ0FDU00sSUFBRCxJQUFVO1VBQ2QxQyxPQUFPLENBQWtDMEMsSUFBRCxJQUFVLElBQTNDLENBQVA7UUFDRCxDQUhILEVBSUdILEtBSkgsQ0FJUyxVQUFVdEQsR0FBVixFQUFlO1VBQ3BCdUQsZUFBQSxDQUFJQyxJQUFKLENBQVUscUJBQW9CeEQsR0FBRyxDQUFDd0IsT0FBUSxFQUExQzs7VUFDQVIsTUFBTSxDQUFDaEIsR0FBRCxDQUFOO1FBQ0QsQ0FQSDtNQVFELENBdENIO0lBdUNELENBNUNZLEVBNENWMEQsT0E1Q1UsQ0E0Q0YsWUFBWTtNQUNyQkgsZUFBQSxDQUFJSSxLQUFKLENBQ0csYUFBWSxJQUFBQyxlQUFBLEVBQVUsV0FBVixFQUF1Qm5CLGNBQXZCLEVBQXVDLElBQXZDLENBQTZDLEdBQTFELEdBQ0csT0FBTSxJQUFBbUIsZUFBQSxFQUFVLE1BQVYsRUFBa0JwQixTQUFsQixFQUE2QixJQUE3QixDQUFtQyxHQUQ1QyxHQUVHLE1BQUtFLEtBQUssQ0FBQ21CLFdBQU4sR0FBb0JDLGNBQXBCLENBQW1DQyxPQUFuQyxDQUEyQyxDQUEzQyxDQUE4QyxJQUh4RDs7TUFLQSxJQUFJeEIsTUFBSixFQUFZO1FBQ1ZBLE1BQU0sQ0FBQ3lCLE9BQVA7TUFDRDtJQUNGLENBckRZLENBQWI7RUFzREQsQ0ExUFE7O0VBa1FUQyxtQkFBbUIsQ0FBQ3BDLEdBQUQsRUFBTTlCLElBQUksR0FBRyxFQUFiLEVBQWlCO0lBQ2xDLE1BQU1tRSxHQUFHLEdBQUduRixFQUFFLENBQUNvRixRQUFILENBQVl0QyxHQUFaLENBQVo7O0lBQ0EsSUFBSTtNQUNGLE9BQU91QyxnQkFBQSxDQUFRdEYsSUFBUixDQUFhLEVBQUMsR0FBR2lCLElBQUo7UUFBVW1FO01BQVYsQ0FBYixDQUFQO0lBQ0QsQ0FGRCxDQUVFLE9BQU9sRSxHQUFQLEVBQVk7TUFDWkEsR0FBRyxDQUFDd0IsT0FBSixHQUFlLGdEQUErQ0ssR0FBSSxVQUFTN0IsR0FBRyxDQUFDd0IsT0FBUSxFQUF2RjtNQUNBLE1BQU14QixHQUFOO0lBQ0Q7RUFDRixDQTFRUTs7RUFrUlRtRSxRQUFRLENBQUN0QyxHQUFELEVBQU07SUFDWixJQUFJLENBQUNBLEdBQUQsSUFBUSxDQUFDNUMsYUFBQSxDQUFLb0YsVUFBTCxDQUFnQnhDLEdBQWhCLENBQWIsRUFBbUM7TUFDakMsTUFBTSxJQUFJeUMsU0FBSixDQUFjLDBEQUFkLENBQU47SUFDRDs7SUFDRCxNQUFNQyxNQUFNLEdBQUc3RixjQUFjLENBQUNtRCxHQUFELENBQTdCOztJQUNBLElBQUksQ0FBQzBDLE1BQUwsRUFBYTtNQUNYLE1BQU0sSUFBSWxFLEtBQUosQ0FBVyx1REFBc0R3QixHQUFJLEVBQXJFLENBQU47SUFDRDs7SUFDRCxPQUFPMEMsTUFBUDtFQUNELENBM1JROztFQThSVHBGLE1BQU0sRUFBRUQsWUFBQSxDQUFXQyxNQTlSVjtFQStSVHFGLFVBQVUsRUFBRXRGLFlBQUEsQ0FBV3NGLFVBL1JkO0VBZ1NUQyxLQUFLLEVBQUV2RixZQUFBLENBQVd1RixLQWhTVDtFQWlTVEMsS0FBSyxFQUFFbkcsaUJBQUEsQ0FBRUMsU0FBRixDQUFZa0csU0FBWixDQWpTRTtFQWtTVHRGLFNBQVMsRUFBVEEsYUFsU1M7RUFtU1R1RixpQkFBaUIsRUFBakJBLHFCQW5TUztFQW9TVHRELGdCQUFnQixFQUFoQkEsb0JBcFNTO0VBcVNUdUQsS0FBSyxFQUFFMUYsWUFBQSxDQUFXMEYsS0FyU1Q7RUEyU1RDLElBQUksRUFBRXRHLGlCQUFBLENBQUVDLFNBQUYsQ0FBWXFHLFFBQVosQ0EzU0c7RUE0U1RDLFFBQVEsRUFBRTVGLFlBQUEsQ0FBVzJGLElBNVNaO0VBNlNURSxPQUFPLEVBQUU3RixZQUFBLENBQVc2RixPQTdTWDtFQThTVEMsSUFBSSxFQUFFekcsaUJBQUEsQ0FBRUMsU0FBRixDQUFZd0csUUFBWixDQTlTRztFQStTVEMsUUFBUSxFQUFFL0YsWUFBQSxDQUFXK0YsUUEvU1o7RUFnVFRDLFFBQVEsRUFBRWhHLFlBQUEsQ0FBV2dHLFFBaFRaO0VBaVRUQyxRQUFRLEVBQUVqRyxZQUFBLENBQVdpRyxRQWpUWjtFQWtUVEMsTUFBTSxFQUFFbEcsWUFBQSxDQUFXa0csTUFsVFY7RUFtVFQvQyxJQUFJLEVBQUVuRCxZQUFBLENBQVdtRCxJQW5UUjtFQW9UVGdELE9BQU8sRUFBRW5HLFlBQUEsQ0FBV21HLE9BcFRYO0VBcVRUQyxNQUFNLEVBQUVwRyxZQUFBLENBQVdvRyxNQXJUVjtFQXNUVEMsS0FBSyxFQUFFaEgsaUJBQUEsQ0FBRUMsU0FBRixDQUFZK0csU0FBWixDQXRURTtFQXVUVEMsU0FBUyxFQUFFdEcsWUFBQSxDQUFXc0csU0F2VGI7RUErVFRDLElBQUksRUFBRXJHLGFBQUEsQ0FBVXFHLElBL1RQO0VBcVVUcEcsSUFBSSxFQUFFRCxhQUFBLENBQVVDLElBclVQO0VBMlVUcUcsSUFBSSxFQUFFdEcsYUFBQSxDQUFVc0csSUEzVVA7RUFpVlRsRyxJQUFJLEVBQUVKLGFBQUEsQ0FBVUk7QUFqVlAsQ0FBWDs7ZUFxVmVULEUifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","names":["ncpAsync","B","promisify","ncp","findRootCached","_","memoize","pkgDir","sync","fs","hasAccess","path","fsPromises","access","constants","R_OK","isExecutable","isWindows","X_OK","exists","rimraf","rimrafIdx","rimrafSync","mkdir","filepath","opts","err","code","copyFile","source","destination","Error","md5","filePath","hash","mv","which","glob","sanitizeName","sanitize","algorithm","resolve","reject","fileHash","crypto","createHash","readStream","createReadStream","on","e","message","chunk","update","digest","walk","dir","klaw","mkdirp","recursive","walkDir","callback","isValidRoot","errMsg","stat","isDirectory","walker","fileCount","directoryCount","timer","Timer","start","lastFileProcessed","depthLimit","item","pause","stats","try","then","done","resume","catch","log","warn","file","finally","debug","pluralize","getDuration","asMilliSeconds","toFixed","destroy","readPackageJsonFrom","cwd","findRoot","readPkg","isAbsolute","TypeError","result","appendFile","chmod","close","createWriteStream","lstat","open","openFile","readdir","read","readFile","readlink","realpath","rename","symlink","unlink","write","writeFile","F_OK","W_OK"],"sources":["../../lib/fs.js"],"sourcesContent":["// @ts-check\n\nimport B from 'bluebird';\nimport crypto from 'crypto';\nimport {\n close,\n constants,\n createReadStream,\n createWriteStream,\n promises as fsPromises,\n read,\n write,\n open,\n} from 'fs';\nimport glob from 'glob';\nimport klaw from 'klaw';\nimport _ from 'lodash';\nimport mv from 'mv';\nimport ncp from 'ncp';\nimport path from 'path';\nimport pkgDir from 'pkg-dir';\nimport readPkg from 'read-pkg';\nimport rimrafIdx from 'rimraf';\nimport sanitize from 'sanitize-filename';\nimport which from 'which';\nimport log from './logger';\nimport Timer from './timing';\nimport {isWindows} from './system';\nimport {pluralize} from './util';\n\nconst ncpAsync =\n /** @type {(source: string, dest: string, opts: ncp.Options|undefined) => B<void>} */ (\n B.promisify(ncp)\n );\nconst findRootCached = _.memoize(pkgDir.sync);\n\nconst fs = {\n /**\n * Resolves `true` if `path` is _readable_, which differs from Node.js' default behavior of \"can we see it?\"\n *\n * On Windows, ACLs are not supported, so this becomes a simple check for existence.\n *\n * This function will never reject.\n * @param {PathLike} path\n * @returns {Promise<boolean>}\n */\n async hasAccess(path) {\n try {\n await fsPromises.access(path, constants.R_OK);\n } catch {\n return false;\n }\n return true;\n },\n\n /**\n * Resolves `true` if `path` is executable; `false` otherwise.\n *\n * On Windows, this function delegates to {@linkcode fs.hasAccess}.\n *\n * This function will never reject.\n * @param {PathLike} path\n * @returns {Promise<boolean>}\n */\n async isExecutable(path) {\n try {\n if (isWindows()) {\n return await fs.hasAccess(path);\n }\n await fsPromises.access(path, constants.R_OK | constants.X_OK);\n } catch {\n return false;\n }\n return true;\n },\n\n /**\n * Alias for {@linkcode fs.hasAccess}\n * @param {PathLike} path\n */\n async exists(path) {\n return await fs.hasAccess(path);\n },\n\n /**\n * Remove a directory and all its contents, recursively\n * @todo Replace with `rm()` from `fs.promises` when Node.js v12 support is dropped.\n */\n rimraf: /** @type {(dirpath: string, opts?: import('rimraf').Options) => Promise<void>} */ (\n B.promisify(rimrafIdx)\n ),\n\n /**\n * Alias of {@linkcode rimrafIdx.sync}\n * @todo Replace with `rmSync()` from `fs` when Node.js v12 support is dropped.\n */\n rimrafSync: rimrafIdx.sync,\n\n /**\n * Like Node.js' `fsPromises.mkdir()`, but will _not_ reject if the directory already exists.\n *\n * @param {string|Buffer|URL} filepath\n * @param {import('fs').MakeDirectoryOptions} [opts]\n * @returns {Promise<string|undefined>}\n * @see https://nodejs.org/api/fs.html#fspromisesmkdirpath-options\n */\n async mkdir(filepath, opts = {}) {\n try {\n return await fsPromises.mkdir(filepath, opts);\n } catch (err) {\n if (err?.code !== 'EEXIST') {\n throw err;\n }\n }\n },\n /**\n * Copies files _and entire directories_\n * @param {string} source - Source to copy\n * @param {string} destination - Destination to copy to\n * @param {ncp.Options} [opts] - Additional arguments to pass to `ncp`\n * @see https://npm.im/ncp\n * @returns {Promise<void>}\n */\n async copyFile(source, destination, opts = {}) {\n if (!(await fs.hasAccess(source))) {\n throw new Error(`The file at '${source}' does not exist or is not accessible`);\n }\n return await ncpAsync(source, destination, opts);\n },\n\n /**\n * Create an MD5 hash of a file.\n * @param {PathLike} filePath\n * @returns {Promise<string>}\n */\n async md5(filePath) {\n return await fs.hash(filePath, 'md5');\n },\n\n /**\n * Move a file\n */\n mv: /** @type {(from: string, to: string, opts?: mv.Options) => B<void>} */ (B.promisify(mv)),\n\n /**\n * Find path to an executable in system `PATH`\n * @see https://github.com/npm/node-which\n */\n which,\n\n /**\n * Given a glob pattern, resolve with list of files matching that pattern\n * @see https://github.com/isaacs/node-glob\n */\n glob: /** @type {(pattern: string, opts?: glob.IOptions) => B<string[]>} */ (B.promisify(glob)),\n\n /**\n * Sanitize a filename\n * @see https://github.com/parshap/node-sanitize-filename\n */\n sanitizeName: sanitize,\n\n /**\n * Create a hex digest of some file at `filePath`\n * @param {PathLike} filePath\n * @param {string} [algorithm]\n * @returns {Promise<string>}\n */\n async hash(filePath, algorithm = 'sha1') {\n return await new B((resolve, reject) => {\n const fileHash = crypto.createHash(algorithm);\n const readStream = createReadStream(filePath);\n readStream.on('error', (e) =>\n reject(\n new Error(\n `Cannot calculate ${algorithm} hash for '${filePath}'. Original error: ${e.message}`\n )\n )\n );\n readStream.on('data', (chunk) => fileHash.update(chunk));\n readStream.on('end', () => resolve(fileHash.digest('hex')));\n });\n },\n\n /**\n * Returns an `Walker` instance, which is a readable stream (and thusly an async iterator).\n *\n * @param {string} dir - Dir to start walking at\n * @param {import('klaw').Options} [opts]\n * @returns {import('klaw').Walker}\n * @see https://www.npmjs.com/package/klaw\n */\n walk(dir, opts) {\n return klaw(dir, opts);\n },\n\n /**\n * Recursively create a directory.\n * @param {PathLike} dir\n * @returns {Promise<string|undefined>}\n */\n async mkdirp(dir) {\n return await fs.mkdir(dir, {recursive: true});\n },\n\n /**\n * Walks a directory given according to the parameters given. The callback will be invoked with a path joined with the dir parameter\n * @param {string} dir Directory path where we will start walking\n * @param {boolean} recursive Set it to true if you want to continue walking sub directories\n * @param {WalkDirCallback} callback The callback to be called when a new path is found\n * @throws {Error} If the `dir` parameter contains a path to an invalid folder\n * @returns {Promise<string?>} returns the found path or null if the item was not found\n */\n async walkDir(dir, recursive, callback) {\n //eslint-disable-line promise/prefer-await-to-callbacks\n let isValidRoot = false;\n let errMsg = null;\n try {\n isValidRoot = (await fs.stat(dir)).isDirectory();\n } catch (e) {\n errMsg = e.message;\n }\n if (!isValidRoot) {\n throw Error(\n `'${dir}' is not a valid root directory` + (errMsg ? `. Original error: ${errMsg}` : '')\n );\n }\n\n let walker;\n let fileCount = 0;\n let directoryCount = 0;\n const timer = new Timer().start();\n return await new B(function (resolve, reject) {\n let lastFileProcessed = B.resolve();\n walker = klaw(dir, {\n depthLimit: recursive ? -1 : 0,\n });\n walker\n .on('data', function (item) {\n walker.pause();\n\n if (!item.stats.isDirectory()) {\n fileCount++;\n } else {\n directoryCount++;\n }\n\n // eslint-disable-next-line promise/prefer-await-to-callbacks\n lastFileProcessed = B.try(async () => await callback(item.path, item.stats.isDirectory()))\n .then(function (done = false) {\n if (done) {\n resolve(item.path);\n } else {\n walker.resume();\n }\n })\n .catch(reject);\n })\n .on('error', function (err, item) {\n log.warn(`Got an error while walking '${item.path}': ${err.message}`);\n // klaw cannot get back from an ENOENT error\n if (err.code === 'ENOENT') {\n log.warn('All files may not have been accessed');\n reject(err);\n }\n })\n .on('end', function () {\n lastFileProcessed\n .then((file) => {\n resolve(/** @type {string|undefined} */ (file) ?? null);\n })\n .catch(function (err) {\n log.warn(`Unexpected error: ${err.message}`);\n reject(err);\n });\n });\n }).finally(function () {\n log.debug(\n `Traversed ${pluralize('directory', directoryCount, true)} ` +\n `and ${pluralize('file', fileCount, true)} ` +\n `in ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`\n );\n if (walker) {\n walker.destroy();\n }\n });\n },\n /**\n * Reads the closest `package.json` file from absolute path `dir`.\n * @param {string} dir - Directory to search from\n * @param {import('read-pkg').Options} [opts] - Additional options for `read-pkg`\n * @throws {Error} If there were problems finding or reading a `package.json` file\n * @returns {object} A parsed `package.json`\n */\n readPackageJsonFrom(dir, opts = {}) {\n const cwd = fs.findRoot(dir);\n try {\n return readPkg.sync({...opts, cwd});\n } catch (err) {\n err.message = `Failed to read a \\`package.json\\` from dir \\`${dir}\\`:\\n\\n${err.message}`;\n throw err;\n }\n },\n /**\n * Finds the project root directory from `dir`.\n * @param {string} dir - Directory to search from\n * @throws {TypeError} If `dir` is not a nonempty string or relative path\n * @throws {Error} If there were problems finding the project root\n * @returns {string} The closeset parent dir containing `package.json`\n */\n findRoot(dir) {\n if (!dir || !path.isAbsolute(dir)) {\n throw new TypeError('`findRoot()` must be provided a non-empty, absolute path');\n }\n const result = findRootCached(dir);\n if (!result) {\n throw new Error(`\\`findRoot()\\` could not find \\`package.json\\` from ${dir}`);\n }\n return result;\n },\n\n // add the supported `fs` functions\n access: fsPromises.access,\n appendFile: fsPromises.appendFile,\n chmod: fsPromises.chmod,\n close: B.promisify(close),\n constants,\n createWriteStream,\n createReadStream,\n lstat: fsPromises.lstat,\n /**\n * Warning: this is a promisified {@linkcode open fs.open}.\n * It resolves w/a file descriptor instead of a {@linkcode fsPromises.FileHandle FileHandle} object, as {@linkcode fsPromises.open} does. Use {@linkcode fs.openFile} if you want a `FileHandle`.\n * @type {(path: PathLike, flags: import('fs').OpenMode, mode?: import('fs').Mode) => Promise<number>}\n */\n open: B.promisify(open),\n openFile: fsPromises.open,\n readdir: fsPromises.readdir,\n read: B.promisify(read),\n readFile: fsPromises.readFile,\n readlink: fsPromises.readlink,\n realpath: fsPromises.realpath,\n rename: fsPromises.rename,\n stat: fsPromises.stat,\n symlink: fsPromises.symlink,\n unlink: fsPromises.unlink,\n write: B.promisify(write),\n writeFile: fsPromises.writeFile,\n\n // deprecated props\n\n /**\n * Use `constants.F_OK` instead.\n * @deprecated\n */\n F_OK: constants.F_OK,\n\n /**\n * Use `constants.R_OK` instead.\n * @deprecated\n */\n R_OK: constants.R_OK,\n\n /**\n * Use `constants.W_OK` instead.\n * @deprecated\n */\n W_OK: constants.W_OK,\n\n /**\n * Use `constants.X_OK` instead.\n * @deprecated\n */\n X_OK: constants.X_OK,\n};\n\nexport {fs};\nexport default fs;\n\n/**\n * The callback function which will be called during the directory walking\n * @callback WalkDirCallback\n * @param {string} itemPath The path of the file or folder\n * @param {boolean} isDirectory Shows if it is a directory or a file\n * @return {boolean} return true if you want to stop walking\n */\n\n/**\n * @typedef {import('glob')} glob\n * @typedef {import('mv')} mv\n * @typedef {import('fs').PathLike} PathLike\n */\n"],"mappings":"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"}
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
@@ -24,6 +22,8 @@ var _pngjs = require("pngjs");
24
22
 
25
23
  var _bluebird = _interopRequireDefault(require("bluebird"));
26
24
 
25
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
+
27
27
  const BYTES_IN_PIXEL_BLOCK = 4;
28
28
  const SCANLINE_FILTER_METHOD = 4;
29
29
  const {
@@ -141,4 +141,4 @@ function getRectIntersection(rect, imageSize) {
141
141
  height
142
142
  };
143
143
  }
144
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCWVRFU19JTl9QSVhFTF9CTE9DSyIsIlNDQU5MSU5FX0ZJTFRFUl9NRVRIT0QiLCJNSU1FX0pQRUciLCJNSU1FX1BORyIsIk1JTUVfQk1QIiwiSmltcCIsImdldEppbXBJbWFnZSIsImRhdGEiLCJCIiwicmVzb2x2ZSIsInJlamVjdCIsIl8iLCJpc1N0cmluZyIsImlzQnVmZmVyIiwiRXJyb3IiLCJCdWZmZXIiLCJmcm9tIiwiZXJyIiwiaW1nT2JqIiwiZ2V0QnVmZmVyIiwicHJvbWlzaWZ5IiwiYmluZCIsImNvbnRleHQiLCJjcm9wQmFzZTY0SW1hZ2UiLCJiYXNlNjRJbWFnZSIsInJlY3QiLCJpbWFnZSIsImJhc2U2NFRvSW1hZ2UiLCJjcm9wSW1hZ2UiLCJpbWFnZVRvQmFzZTY0IiwiaW1hZ2VCdWZmZXIiLCJQTkciLCJmaWx0ZXJUeXBlIiwicGFyc2UiLCJjaHVua3MiLCJwYWNrIiwib24iLCJjaHVuayIsInB1c2giLCJjb25jYXQiLCJ0b1N0cmluZyIsImltYWdlUmVjdCIsIndpZHRoIiwiaGVpZ2h0IiwiaW50ZXJSZWN0IiwiZ2V0UmVjdEludGVyc2VjdGlvbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJmaXJzdFZlcnRpY2FsUGl4ZWwiLCJ0b3AiLCJsYXN0VmVydGljYWxQaXhlbCIsImZpcnN0SG9yaXpvbnRhbFBpeGVsIiwibGVmdCIsImxhc3RIb3Jpem9udGFsUGl4ZWwiLCJjcm9wcGVkQXJyYXkiLCJ5IiwieCIsImZpcnN0Qnl0ZUlkeEluUGl4ZWxCbG9jayIsImJ5dGVJZHgiLCJpbWFnZVNpemUiXSwic291cmNlcyI6WyIuLi8uLi9saWIvaW1hZ2UtdXRpbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEppbXAgZnJvbSAnamltcCc7XG5pbXBvcnQge0J1ZmZlcn0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7UE5HfSBmcm9tICdwbmdqcyc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5cbmNvbnN0IEJZVEVTX0lOX1BJWEVMX0JMT0NLID0gNDtcbmNvbnN0IFNDQU5MSU5FX0ZJTFRFUl9NRVRIT0QgPSA0O1xuY29uc3Qge01JTUVfSlBFRywgTUlNRV9QTkcsIE1JTUVfQk1QfSA9IEppbXA7XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiB0byBnZXQgYSBKaW1wIGltYWdlIG9iamVjdCBmcm9tIGJ1ZmZlciBvciBiYXNlNjQgZGF0YS4gSmltcFxuICogaXMgYSBncmVhdCBsaWJyYXJ5IGhvd2V2ZXIgaXQgZG9lcyBJTyBpbiB0aGUgY29uc3RydWN0b3Igc28gaXQncyBub3RcbiAqIGNvbnZlbmllbnQgZm9yIG91ciBhc3luYy9hd2FpdCBtb2RlbC5cbiAqXG4gKiBAcGFyYW0ge0J1ZmZlcnxzdHJpbmd9IGRhdGEgLSBiaW5hcnkgaW1hZ2UgYnVmZmVyIG9yIGJhc2U2NC1lbmNvZGVkIGltYWdlXG4gKiBzdHJpbmdcbiAqIEByZXR1cm5zIHtQcm9taXNlPEFwcGl1bUppbXA+fSAtIHRoZSBqaW1wIGltYWdlIG9iamVjdFxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRKaW1wSW1hZ2UoZGF0YSkge1xuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGlmICghXy5pc1N0cmluZyhkYXRhKSAmJiAhXy5pc0J1ZmZlcihkYXRhKSkge1xuICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoJ011c3QgaW5pdGlhbGl6ZSBqaW1wIG9iamVjdCB3aXRoIHN0cmluZyBvciBidWZmZXInKSk7XG4gICAgfVxuICAgIC8vIGlmIGRhdGEgaXMgYSBzdHJpbmcsIGFzc3VtZSBpdCBpcyBhIGJhc2U2NC1lbmNvZGVkIGltYWdlXG4gICAgaWYgKF8uaXNTdHJpbmcoZGF0YSkpIHtcbiAgICAgIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCAnYmFzZTY0Jyk7XG4gICAgfVxuICAgIG5ldyBKaW1wKFxuICAgICAgZGF0YSxcbiAgICAgIC8qKlxuICAgICAgICogQHBhcmFtIHtFcnJvcj99IGVyclxuICAgICAgICogQHBhcmFtIHtBcHBpdW1KaW1wfSBpbWdPYmpcbiAgICAgICAqL1xuICAgICAgKGVyciwgaW1nT2JqKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpbWdPYmopIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignQ291bGQgbm90IGNyZWF0ZSBqaW1wIGltYWdlIGZyb20gdGhhdCBkYXRhJykpO1xuICAgICAgICB9XG4gICAgICAgIGltZ09iai5nZXRCdWZmZXIgPSBCLnByb21pc2lmeShpbWdPYmouZ2V0QnVmZmVyLmJpbmQoaW1nT2JqKSwge1xuICAgICAgICAgIGNvbnRleHQ6IGltZ09iaixcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc29sdmUoaW1nT2JqKTtcbiAgICAgIH1cbiAgICApO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcm9wIHRoZSBpbWFnZSBieSBnaXZlbiByZWN0YW5nbGUgKHVzZSBiYXNlNjQgc3RyaW5nIGFzIGlucHV0IGFuZCBvdXRwdXQpXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NEltYWdlIFRoZSBzdHJpbmcgd2l0aCBiYXNlNjQgZW5jb2RlZCBpbWFnZVxuICogQHBhcmFtIHtSZWdpb259IHJlY3QgVGhlIHNlbGVjdGVkIHJlZ2lvbiBvZiBpbWFnZVxuICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcgb2YgY3JvcHBlZCBpbWFnZVxuICovXG5hc3luYyBmdW5jdGlvbiBjcm9wQmFzZTY0SW1hZ2UoYmFzZTY0SW1hZ2UsIHJlY3QpIHtcbiAgY29uc3QgaW1hZ2UgPSBhd2FpdCBiYXNlNjRUb0ltYWdlKGJhc2U2NEltYWdlKTtcbiAgY3JvcEltYWdlKGltYWdlLCByZWN0KTtcbiAgcmV0dXJuIGF3YWl0IGltYWdlVG9CYXNlNjQoaW1hZ2UpO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHBuZ2pzIGltYWdlIGZyb20gZ2l2ZW4gYmFzZTY0IGltYWdlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NEltYWdlIFRoZSBzdHJpbmcgd2l0aCBiYXNlNjQgZW5jb2RlZCBpbWFnZVxuICogQHJldHVybiB7UHJvbWlzZTxQTkc+fSBUaGUgaW1hZ2Ugb2JqZWN0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGJhc2U2NFRvSW1hZ2UoYmFzZTY0SW1hZ2UpIHtcbiAgY29uc3QgaW1hZ2VCdWZmZXIgPSBCdWZmZXIuZnJvbShiYXNlNjRJbWFnZSwgJ2Jhc2U2NCcpO1xuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGltYWdlID0gbmV3IFBORyh7ZmlsdGVyVHlwZTogU0NBTkxJTkVfRklMVEVSX01FVEhPRH0pO1xuICAgIGltYWdlLnBhcnNlKGltYWdlQnVmZmVyLCAoZXJyLCBpbWFnZSkgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by1jYWxsYmFja3NcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShpbWFnZSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGJhc2U2NCBzdHJpbmcgZm9yIGdpdmVuIGltYWdlIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7UE5HfSBpbWFnZSBUaGUgaW1hZ2Ugb2JqZWN0XG4gKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IFRoZSBzdHJpbmcgd2l0aCBiYXNlNjQgZW5jb2RlZCBpbWFnZVxuICovXG5hc3luYyBmdW5jdGlvbiBpbWFnZVRvQmFzZTY0KGltYWdlKSB7XG4gIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY2h1bmtzID0gW107XG4gICAgaW1hZ2VcbiAgICAgIC5wYWNrKClcbiAgICAgIC5vbignZGF0YScsIChjaHVuaykgPT4gY2h1bmtzLnB1c2goY2h1bmspKVxuICAgICAgLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoQnVmZmVyLmNvbmNhdChjaHVua3MpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgICB9KVxuICAgICAgLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by1jYWxsYmFja3NcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JvcCB0aGUgaW1hZ2UgYnkgZ2l2ZW4gcmVjdGFuZ2xlXG4gKlxuICogQHBhcmFtIHtQTkd9IGltYWdlIFRoZSBpbWFnZSB0byBtdXRhdGUgYnkgY3JvcHBpbmdcbiAqIEBwYXJhbSB7UmVnaW9ufSByZWN0IFRoZSBzZWxlY3RlZCByZWdpb24gb2YgaW1hZ2VcbiAqL1xuZnVuY3Rpb24gY3JvcEltYWdlKGltYWdlLCByZWN0KSB7XG4gIGNvbnN0IGltYWdlUmVjdCA9IHt3aWR0aDogaW1hZ2Uud2lkdGgsIGhlaWdodDogaW1hZ2UuaGVpZ2h0fTtcbiAgY29uc3QgaW50ZXJSZWN0ID0gZ2V0UmVjdEludGVyc2VjdGlvbihyZWN0LCBpbWFnZVJlY3QpO1xuICBpZiAoaW50ZXJSZWN0LndpZHRoIDwgcmVjdC53aWR0aCB8fCBpbnRlclJlY3QuaGVpZ2h0IDwgcmVjdC5oZWlnaHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2Fubm90IGNyb3AgJHtKU09OLnN0cmluZ2lmeShyZWN0KX0gZnJvbSAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBpbWFnZVJlY3RcbiAgICAgICl9IGJlY2F1c2UgdGhlIGludGVyc2VjdGlvbiBiZXR3ZWVuIHRoZW0gd2FzIG5vdCB0aGUgc2l6ZSBvZiB0aGUgcmVjdGBcbiAgICApO1xuICB9XG5cbiAgY29uc3QgZmlyc3RWZXJ0aWNhbFBpeGVsID0gaW50ZXJSZWN0LnRvcDtcbiAgY29uc3QgbGFzdFZlcnRpY2FsUGl4ZWwgPSBpbnRlclJlY3QudG9wICsgaW50ZXJSZWN0LmhlaWdodDtcblxuICBjb25zdCBmaXJzdEhvcml6b250YWxQaXhlbCA9IGludGVyUmVjdC5sZWZ0O1xuICBjb25zdCBsYXN0SG9yaXpvbnRhbFBpeGVsID0gaW50ZXJSZWN0LmxlZnQgKyBpbnRlclJlY3Qud2lkdGg7XG5cbiAgY29uc3QgY3JvcHBlZEFycmF5ID0gW107XG4gIGZvciAobGV0IHkgPSBmaXJzdFZlcnRpY2FsUGl4ZWw7IHkgPCBsYXN0VmVydGljYWxQaXhlbDsgeSsrKSB7XG4gICAgZm9yIChsZXQgeCA9IGZpcnN0SG9yaXpvbnRhbFBpeGVsOyB4IDwgbGFzdEhvcml6b250YWxQaXhlbDsgeCsrKSB7XG4gICAgICBjb25zdCBmaXJzdEJ5dGVJZHhJblBpeGVsQmxvY2sgPSAoaW1hZ2VSZWN0LndpZHRoICogeSArIHgpIDw8IDI7XG4gICAgICBmb3IgKGxldCBieXRlSWR4ID0gMDsgYnl0ZUlkeCA8IEJZVEVTX0lOX1BJWEVMX0JMT0NLOyBieXRlSWR4KyspIHtcbiAgICAgICAgY3JvcHBlZEFycmF5LnB1c2goaW1hZ2UuZGF0YVtmaXJzdEJ5dGVJZHhJblBpeGVsQmxvY2sgKyBieXRlSWR4XSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW1hZ2UuZGF0YSA9IEJ1ZmZlci5mcm9tKGNyb3BwZWRBcnJheSk7XG4gIGltYWdlLndpZHRoID0gaW50ZXJSZWN0LndpZHRoO1xuICBpbWFnZS5oZWlnaHQgPSBpbnRlclJlY3QuaGVpZ2h0O1xuICByZXR1cm4gaW1hZ2U7XG59XG5cbmZ1bmN0aW9uIGdldFJlY3RJbnRlcnNlY3Rpb24ocmVjdCwgaW1hZ2VTaXplKSB7XG4gIGNvbnN0IGxlZnQgPSByZWN0LmxlZnQgPj0gaW1hZ2VTaXplLndpZHRoID8gaW1hZ2VTaXplLndpZHRoIDogcmVjdC5sZWZ0O1xuICBjb25zdCB0b3AgPSByZWN0LnRvcCA+PSBpbWFnZVNpemUuaGVpZ2h0ID8gaW1hZ2VTaXplLmhlaWdodCA6IHJlY3QudG9wO1xuICBjb25zdCB3aWR0aCA9IGltYWdlU2l6ZS53aWR0aCA+PSBsZWZ0ICsgcmVjdC53aWR0aCA/IHJlY3Qud2lkdGggOiBpbWFnZVNpemUud2lkdGggLSBsZWZ0O1xuICBjb25zdCBoZWlnaHQgPSBpbWFnZVNpemUuaGVpZ2h0ID49IHRvcCArIHJlY3QuaGVpZ2h0ID8gcmVjdC5oZWlnaHQgOiBpbWFnZVNpemUuaGVpZ2h0IC0gdG9wO1xuICByZXR1cm4ge2xlZnQsIHRvcCwgd2lkdGgsIGhlaWdodH07XG59XG5cbmV4cG9ydCB7XG4gIGNyb3BCYXNlNjRJbWFnZSxcbiAgYmFzZTY0VG9JbWFnZSxcbiAgaW1hZ2VUb0Jhc2U2NCxcbiAgY3JvcEltYWdlLFxuICBnZXRKaW1wSW1hZ2UsXG4gIE1JTUVfSlBFRyxcbiAgTUlNRV9QTkcsXG4gIE1JTUVfQk1QLFxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T21pdDxKaW1wLCdnZXRCdWZmZXInPiAmIHtnZXRCdWZmZXI6IEppbXBbJ2dldEJ1ZmZlckFzeW5jJ119fSBBcHBpdW1KaW1wXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBSZWdpb25cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsZWZ0XG4gKiBAcHJvcGVydHkge251bWJlcn0gdG9wXG4gKiBAcHJvcGVydHkge251bWJlcn0gd2lkdGhcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBoZWlnaHRcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsb0JBQW9CLEdBQUcsQ0FBN0I7QUFDQSxNQUFNQyxzQkFBc0IsR0FBRyxDQUEvQjtBQUNBLE1BQU07RUFBQ0MsU0FBRDtFQUFZQyxRQUFaO0VBQXNCQztBQUF0QixJQUFrQ0MsYUFBeEM7Ozs7O0FBV0EsZUFBZUMsWUFBZixDQUE0QkMsSUFBNUIsRUFBa0M7RUFDaEMsT0FB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
144
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCWVRFU19JTl9QSVhFTF9CTE9DSyIsIlNDQU5MSU5FX0ZJTFRFUl9NRVRIT0QiLCJNSU1FX0pQRUciLCJNSU1FX1BORyIsIk1JTUVfQk1QIiwiSmltcCIsImdldEppbXBJbWFnZSIsImRhdGEiLCJCIiwicmVzb2x2ZSIsInJlamVjdCIsIl8iLCJpc1N0cmluZyIsImlzQnVmZmVyIiwiRXJyb3IiLCJCdWZmZXIiLCJmcm9tIiwiZXJyIiwiaW1nT2JqIiwiZ2V0QnVmZmVyIiwicHJvbWlzaWZ5IiwiYmluZCIsImNvbnRleHQiLCJjcm9wQmFzZTY0SW1hZ2UiLCJiYXNlNjRJbWFnZSIsInJlY3QiLCJpbWFnZSIsImJhc2U2NFRvSW1hZ2UiLCJjcm9wSW1hZ2UiLCJpbWFnZVRvQmFzZTY0IiwiaW1hZ2VCdWZmZXIiLCJQTkciLCJmaWx0ZXJUeXBlIiwicGFyc2UiLCJjaHVua3MiLCJwYWNrIiwib24iLCJjaHVuayIsInB1c2giLCJjb25jYXQiLCJ0b1N0cmluZyIsImltYWdlUmVjdCIsIndpZHRoIiwiaGVpZ2h0IiwiaW50ZXJSZWN0IiwiZ2V0UmVjdEludGVyc2VjdGlvbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJmaXJzdFZlcnRpY2FsUGl4ZWwiLCJ0b3AiLCJsYXN0VmVydGljYWxQaXhlbCIsImZpcnN0SG9yaXpvbnRhbFBpeGVsIiwibGVmdCIsImxhc3RIb3Jpem9udGFsUGl4ZWwiLCJjcm9wcGVkQXJyYXkiLCJ5IiwieCIsImZpcnN0Qnl0ZUlkeEluUGl4ZWxCbG9jayIsImJ5dGVJZHgiLCJpbWFnZVNpemUiXSwic291cmNlcyI6WyIuLi8uLi9saWIvaW1hZ2UtdXRpbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEppbXAgZnJvbSAnamltcCc7XG5pbXBvcnQge0J1ZmZlcn0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7UE5HfSBmcm9tICdwbmdqcyc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5cbmNvbnN0IEJZVEVTX0lOX1BJWEVMX0JMT0NLID0gNDtcbmNvbnN0IFNDQU5MSU5FX0ZJTFRFUl9NRVRIT0QgPSA0O1xuY29uc3Qge01JTUVfSlBFRywgTUlNRV9QTkcsIE1JTUVfQk1QfSA9IEppbXA7XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiB0byBnZXQgYSBKaW1wIGltYWdlIG9iamVjdCBmcm9tIGJ1ZmZlciBvciBiYXNlNjQgZGF0YS4gSmltcFxuICogaXMgYSBncmVhdCBsaWJyYXJ5IGhvd2V2ZXIgaXQgZG9lcyBJTyBpbiB0aGUgY29uc3RydWN0b3Igc28gaXQncyBub3RcbiAqIGNvbnZlbmllbnQgZm9yIG91ciBhc3luYy9hd2FpdCBtb2RlbC5cbiAqXG4gKiBAcGFyYW0ge0J1ZmZlcnxzdHJpbmd9IGRhdGEgLSBiaW5hcnkgaW1hZ2UgYnVmZmVyIG9yIGJhc2U2NC1lbmNvZGVkIGltYWdlXG4gKiBzdHJpbmdcbiAqIEByZXR1cm5zIHtQcm9taXNlPEFwcGl1bUppbXA+fSAtIHRoZSBqaW1wIGltYWdlIG9iamVjdFxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRKaW1wSW1hZ2UoZGF0YSkge1xuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGlmICghXy5pc1N0cmluZyhkYXRhKSAmJiAhXy5pc0J1ZmZlcihkYXRhKSkge1xuICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoJ011c3QgaW5pdGlhbGl6ZSBqaW1wIG9iamVjdCB3aXRoIHN0cmluZyBvciBidWZmZXInKSk7XG4gICAgfVxuICAgIC8vIGlmIGRhdGEgaXMgYSBzdHJpbmcsIGFzc3VtZSBpdCBpcyBhIGJhc2U2NC1lbmNvZGVkIGltYWdlXG4gICAgaWYgKF8uaXNTdHJpbmcoZGF0YSkpIHtcbiAgICAgIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCAnYmFzZTY0Jyk7XG4gICAgfVxuICAgIG5ldyBKaW1wKFxuICAgICAgZGF0YSxcbiAgICAgIC8qKlxuICAgICAgICogQHBhcmFtIHtFcnJvcj99IGVyclxuICAgICAgICogQHBhcmFtIHtBcHBpdW1KaW1wfSBpbWdPYmpcbiAgICAgICAqL1xuICAgICAgKGVyciwgaW1nT2JqKSA9PiB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpbWdPYmopIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignQ291bGQgbm90IGNyZWF0ZSBqaW1wIGltYWdlIGZyb20gdGhhdCBkYXRhJykpO1xuICAgICAgICB9XG4gICAgICAgIGltZ09iai5nZXRCdWZmZXIgPSBCLnByb21pc2lmeShpbWdPYmouZ2V0QnVmZmVyLmJpbmQoaW1nT2JqKSwge1xuICAgICAgICAgIGNvbnRleHQ6IGltZ09iaixcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc29sdmUoaW1nT2JqKTtcbiAgICAgIH1cbiAgICApO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcm9wIHRoZSBpbWFnZSBieSBnaXZlbiByZWN0YW5nbGUgKHVzZSBiYXNlNjQgc3RyaW5nIGFzIGlucHV0IGFuZCBvdXRwdXQpXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NEltYWdlIFRoZSBzdHJpbmcgd2l0aCBiYXNlNjQgZW5jb2RlZCBpbWFnZVxuICogQHBhcmFtIHtSZWdpb259IHJlY3QgVGhlIHNlbGVjdGVkIHJlZ2lvbiBvZiBpbWFnZVxuICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcgb2YgY3JvcHBlZCBpbWFnZVxuICovXG5hc3luYyBmdW5jdGlvbiBjcm9wQmFzZTY0SW1hZ2UoYmFzZTY0SW1hZ2UsIHJlY3QpIHtcbiAgY29uc3QgaW1hZ2UgPSBhd2FpdCBiYXNlNjRUb0ltYWdlKGJhc2U2NEltYWdlKTtcbiAgY3JvcEltYWdlKGltYWdlLCByZWN0KTtcbiAgcmV0dXJuIGF3YWl0IGltYWdlVG9CYXNlNjQoaW1hZ2UpO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHBuZ2pzIGltYWdlIGZyb20gZ2l2ZW4gYmFzZTY0IGltYWdlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NEltYWdlIFRoZSBzdHJpbmcgd2l0aCBiYXNlNjQgZW5jb2RlZCBpbWFnZVxuICogQHJldHVybiB7UHJvbWlzZTxQTkc+fSBUaGUgaW1hZ2Ugb2JqZWN0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGJhc2U2NFRvSW1hZ2UoYmFzZTY0SW1hZ2UpIHtcbiAgY29uc3QgaW1hZ2VCdWZmZXIgPSBCdWZmZXIuZnJvbShiYXNlNjRJbWFnZSwgJ2Jhc2U2NCcpO1xuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGltYWdlID0gbmV3IFBORyh7ZmlsdGVyVHlwZTogU0NBTkxJTkVfRklMVEVSX01FVEhPRH0pO1xuICAgIGltYWdlLnBhcnNlKGltYWdlQnVmZmVyLCAoZXJyLCBpbWFnZSkgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by1jYWxsYmFja3NcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShpbWFnZSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGJhc2U2NCBzdHJpbmcgZm9yIGdpdmVuIGltYWdlIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7UE5HfSBpbWFnZSBUaGUgaW1hZ2Ugb2JqZWN0XG4gKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IFRoZSBzdHJpbmcgd2l0aCBiYXNlNjQgZW5jb2RlZCBpbWFnZVxuICovXG5hc3luYyBmdW5jdGlvbiBpbWFnZVRvQmFzZTY0KGltYWdlKSB7XG4gIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY2h1bmtzID0gW107XG4gICAgaW1hZ2VcbiAgICAgIC5wYWNrKClcbiAgICAgIC5vbignZGF0YScsIChjaHVuaykgPT4gY2h1bmtzLnB1c2goY2h1bmspKVxuICAgICAgLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoQnVmZmVyLmNvbmNhdChjaHVua3MpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgICB9KVxuICAgICAgLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by1jYWxsYmFja3NcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JvcCB0aGUgaW1hZ2UgYnkgZ2l2ZW4gcmVjdGFuZ2xlXG4gKlxuICogQHBhcmFtIHtQTkd9IGltYWdlIFRoZSBpbWFnZSB0byBtdXRhdGUgYnkgY3JvcHBpbmdcbiAqIEBwYXJhbSB7UmVnaW9ufSByZWN0IFRoZSBzZWxlY3RlZCByZWdpb24gb2YgaW1hZ2VcbiAqL1xuZnVuY3Rpb24gY3JvcEltYWdlKGltYWdlLCByZWN0KSB7XG4gIGNvbnN0IGltYWdlUmVjdCA9IHt3aWR0aDogaW1hZ2Uud2lkdGgsIGhlaWdodDogaW1hZ2UuaGVpZ2h0fTtcbiAgY29uc3QgaW50ZXJSZWN0ID0gZ2V0UmVjdEludGVyc2VjdGlvbihyZWN0LCBpbWFnZVJlY3QpO1xuICBpZiAoaW50ZXJSZWN0LndpZHRoIDwgcmVjdC53aWR0aCB8fCBpbnRlclJlY3QuaGVpZ2h0IDwgcmVjdC5oZWlnaHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2Fubm90IGNyb3AgJHtKU09OLnN0cmluZ2lmeShyZWN0KX0gZnJvbSAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBpbWFnZVJlY3RcbiAgICAgICl9IGJlY2F1c2UgdGhlIGludGVyc2VjdGlvbiBiZXR3ZWVuIHRoZW0gd2FzIG5vdCB0aGUgc2l6ZSBvZiB0aGUgcmVjdGBcbiAgICApO1xuICB9XG5cbiAgY29uc3QgZmlyc3RWZXJ0aWNhbFBpeGVsID0gaW50ZXJSZWN0LnRvcDtcbiAgY29uc3QgbGFzdFZlcnRpY2FsUGl4ZWwgPSBpbnRlclJlY3QudG9wICsgaW50ZXJSZWN0LmhlaWdodDtcblxuICBjb25zdCBmaXJzdEhvcml6b250YWxQaXhlbCA9IGludGVyUmVjdC5sZWZ0O1xuICBjb25zdCBsYXN0SG9yaXpvbnRhbFBpeGVsID0gaW50ZXJSZWN0LmxlZnQgKyBpbnRlclJlY3Qud2lkdGg7XG5cbiAgY29uc3QgY3JvcHBlZEFycmF5ID0gW107XG4gIGZvciAobGV0IHkgPSBmaXJzdFZlcnRpY2FsUGl4ZWw7IHkgPCBsYXN0VmVydGljYWxQaXhlbDsgeSsrKSB7XG4gICAgZm9yIChsZXQgeCA9IGZpcnN0SG9yaXpvbnRhbFBpeGVsOyB4IDwgbGFzdEhvcml6b250YWxQaXhlbDsgeCsrKSB7XG4gICAgICBjb25zdCBmaXJzdEJ5dGVJZHhJblBpeGVsQmxvY2sgPSAoaW1hZ2VSZWN0LndpZHRoICogeSArIHgpIDw8IDI7XG4gICAgICBmb3IgKGxldCBieXRlSWR4ID0gMDsgYnl0ZUlkeCA8IEJZVEVTX0lOX1BJWEVMX0JMT0NLOyBieXRlSWR4KyspIHtcbiAgICAgICAgY3JvcHBlZEFycmF5LnB1c2goaW1hZ2UuZGF0YVtmaXJzdEJ5dGVJZHhJblBpeGVsQmxvY2sgKyBieXRlSWR4XSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW1hZ2UuZGF0YSA9IEJ1ZmZlci5mcm9tKGNyb3BwZWRBcnJheSk7XG4gIGltYWdlLndpZHRoID0gaW50ZXJSZWN0LndpZHRoO1xuICBpbWFnZS5oZWlnaHQgPSBpbnRlclJlY3QuaGVpZ2h0O1xuICByZXR1cm4gaW1hZ2U7XG59XG5cbmZ1bmN0aW9uIGdldFJlY3RJbnRlcnNlY3Rpb24ocmVjdCwgaW1hZ2VTaXplKSB7XG4gIGNvbnN0IGxlZnQgPSByZWN0LmxlZnQgPj0gaW1hZ2VTaXplLndpZHRoID8gaW1hZ2VTaXplLndpZHRoIDogcmVjdC5sZWZ0O1xuICBjb25zdCB0b3AgPSByZWN0LnRvcCA+PSBpbWFnZVNpemUuaGVpZ2h0ID8gaW1hZ2VTaXplLmhlaWdodCA6IHJlY3QudG9wO1xuICBjb25zdCB3aWR0aCA9IGltYWdlU2l6ZS53aWR0aCA+PSBsZWZ0ICsgcmVjdC53aWR0aCA/IHJlY3Qud2lkdGggOiBpbWFnZVNpemUud2lkdGggLSBsZWZ0O1xuICBjb25zdCBoZWlnaHQgPSBpbWFnZVNpemUuaGVpZ2h0ID49IHRvcCArIHJlY3QuaGVpZ2h0ID8gcmVjdC5oZWlnaHQgOiBpbWFnZVNpemUuaGVpZ2h0IC0gdG9wO1xuICByZXR1cm4ge2xlZnQsIHRvcCwgd2lkdGgsIGhlaWdodH07XG59XG5cbmV4cG9ydCB7XG4gIGNyb3BCYXNlNjRJbWFnZSxcbiAgYmFzZTY0VG9JbWFnZSxcbiAgaW1hZ2VUb0Jhc2U2NCxcbiAgY3JvcEltYWdlLFxuICBnZXRKaW1wSW1hZ2UsXG4gIE1JTUVfSlBFRyxcbiAgTUlNRV9QTkcsXG4gIE1JTUVfQk1QLFxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T21pdDxKaW1wLCdnZXRCdWZmZXInPiAmIHtnZXRCdWZmZXI6IEppbXBbJ2dldEJ1ZmZlckFzeW5jJ119fSBBcHBpdW1KaW1wXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBSZWdpb25cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsZWZ0XG4gKiBAcHJvcGVydHkge251bWJlcn0gdG9wXG4gKiBAcHJvcGVydHkge251bWJlcn0gd2lkdGhcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBoZWlnaHRcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRUEsTUFBTUEsb0JBQW9CLEdBQUcsQ0FBN0I7QUFDQSxNQUFNQyxzQkFBc0IsR0FBRyxDQUEvQjtBQUNBLE1BQU07RUFBQ0MsU0FBRDtFQUFZQyxRQUFaO0VBQXNCQztBQUF0QixJQUFrQ0MsYUFBeEM7Ozs7O0FBV0EsZUFBZUMsWUFBZixDQUE0QkMsSUFBNUIsRUFBa0M7RUFDaEMsT0FBTyxNQUFNLElBQUlDLGlCQUFKLENBQU0sQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0lBQ3RDLElBQUksQ0FBQ0MsZUFBQSxDQUFFQyxRQUFGLENBQVdMLElBQVgsQ0FBRCxJQUFxQixDQUFDSSxlQUFBLENBQUVFLFFBQUYsQ0FBV04sSUFBWCxDQUExQixFQUE0QztNQUMxQyxPQUFPRyxNQUFNLENBQUMsSUFBSUksS0FBSixDQUFVLG1EQUFWLENBQUQsQ0FBYjtJQUNEOztJQUVELElBQUlILGVBQUEsQ0FBRUMsUUFBRixDQUFXTCxJQUFYLENBQUosRUFBc0I7TUFDcEJBLElBQUksR0FBR1EsY0FBQSxDQUFPQyxJQUFQLENBQVlULElBQVosRUFBa0IsUUFBbEIsQ0FBUDtJQUNEOztJQUNELElBQUlGLGFBQUosQ0FDRUUsSUFERixFQU1FLENBQUNVLEdBQUQsRUFBTUMsTUFBTixLQUFpQjtNQUNmLElBQUlELEdBQUosRUFBUztRQUNQLE9BQU9QLE1BQU0sQ0FBQ08sR0FBRCxDQUFiO01BQ0Q7O01BQ0QsSUFBSSxDQUFDQyxNQUFMLEVBQWE7UUFDWCxPQUFPUixNQUFNLENBQUMsSUFBSUksS0FBSixDQUFVLDRDQUFWLENBQUQsQ0FBYjtNQUNEOztNQUNESSxNQUFNLENBQUNDLFNBQVAsR0FBbUJYLGlCQUFBLENBQUVZLFNBQUYsQ0FBWUYsTUFBTSxDQUFDQyxTQUFQLENBQWlCRSxJQUFqQixDQUFzQkgsTUFBdEIsQ0FBWixFQUEyQztRQUM1REksT0FBTyxFQUFFSjtNQURtRCxDQUEzQyxDQUFuQjtNQUdBVCxPQUFPLENBQUNTLE1BQUQsQ0FBUDtJQUNELENBakJIO0VBbUJELENBM0JZLENBQWI7QUE0QkQ7O0FBU0QsZUFBZUssZUFBZixDQUErQkMsV0FBL0IsRUFBNENDLElBQTVDLEVBQWtEO0VBQ2hELE1BQU1DLEtBQUssR0FBRyxNQUFNQyxhQUFhLENBQUNILFdBQUQsQ0FBakM7RUFDQUksU0FBUyxDQUFDRixLQUFELEVBQVFELElBQVIsQ0FBVDtFQUNBLE9BQU8sTUFBTUksYUFBYSxDQUFDSCxLQUFELENBQTFCO0FBQ0Q7O0FBUUQsZUFBZUMsYUFBZixDQUE2QkgsV0FBN0IsRUFBMEM7RUFDeEMsTUFBTU0sV0FBVyxHQUFHZixjQUFBLENBQU9DLElBQVAsQ0FBWVEsV0FBWixFQUF5QixRQUF6QixDQUFwQjs7RUFDQSxPQUFPLE1BQU0sSUFBSWhCLGlCQUFKLENBQU0sQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0lBQ3RDLE1BQU1nQixLQUFLLEdBQUcsSUFBSUssVUFBSixDQUFRO01BQUNDLFVBQVUsRUFBRS9CO0lBQWIsQ0FBUixDQUFkO0lBQ0F5QixLQUFLLENBQUNPLEtBQU4sQ0FBWUgsV0FBWixFQUF5QixDQUFDYixHQUFELEVBQU1TLEtBQU4sS0FBZ0I7TUFFdkMsSUFBSVQsR0FBSixFQUFTO1FBQ1AsT0FBT1AsTUFBTSxDQUFDTyxHQUFELENBQWI7TUFDRDs7TUFDRFIsT0FBTyxDQUFDaUIsS0FBRCxDQUFQO0lBQ0QsQ0FORDtFQU9ELENBVFksQ0FBYjtBQVVEOztBQVFELGVBQWVHLGFBQWYsQ0FBNkJILEtBQTdCLEVBQW9DO0VBQ2xDLE9BQU8sTUFBTSxJQUFJbEIsaUJBQUosQ0FBTSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBcUI7SUFDdEMsTUFBTXdCLE1BQU0sR0FBRyxFQUFmO0lBQ0FSLEtBQUssQ0FDRlMsSUFESCxHQUVHQyxFQUZILENBRU0sTUFGTixFQUVlQyxLQUFELElBQVdILE1BQU0sQ0FBQ0ksSUFBUCxDQUFZRCxLQUFaLENBRnpCLEVBR0dELEVBSEgsQ0FHTSxLQUhOLEVBR2EsTUFBTTtNQUNmM0IsT0FBTyxDQUFDTSxjQUFBLENBQU93QixNQUFQLENBQWNMLE1BQWQsRUFBc0JNLFFBQXRCLENBQStCLFFBQS9CLENBQUQsQ0FBUDtJQUNELENBTEgsRUFNR0osRUFOSCxDQU1NLE9BTk4sRUFNZ0JuQixHQUFELElBQVM7TUFFcEJQLE1BQU0sQ0FBQ08sR0FBRCxDQUFOO0lBQ0QsQ0FUSDtFQVVELENBWlksQ0FBYjtBQWFEOztBQVFELFNBQVNXLFNBQVQsQ0FBbUJGLEtBQW5CLEVBQTBCRCxJQUExQixFQUFnQztFQUM5QixNQUFNZ0IsU0FBUyxHQUFHO0lBQUNDLEtBQUssRUFBRWhCLEtBQUssQ0FBQ2dCLEtBQWQ7SUFBcUJDLE1BQU0sRUFBRWpCLEtBQUssQ0FBQ2lCO0VBQW5DLENBQWxCO0VBQ0EsTUFBTUMsU0FBUyxHQUFHQyxtQkFBbUIsQ0FBQ3BCLElBQUQsRUFBT2dCLFNBQVAsQ0FBckM7O0VBQ0EsSUFBSUcsU0FBUyxDQUFDRixLQUFWLEdBQWtCakIsSUFBSSxDQUFDaUIsS0FBdkIsSUFBZ0NFLFNBQVMsQ0FBQ0QsTUFBVixHQUFtQmxCLElBQUksQ0FBQ2tCLE1BQTVELEVBQW9FO0lBQ2xFLE1BQU0sSUFBSTdCLEtBQUosQ0FDSCxlQUFjZ0MsSUFBSSxDQUFDQyxTQUFMLENBQWV0QixJQUFmLENBQXFCLFNBQVFxQixJQUFJLENBQUNDLFNBQUwsQ0FDMUNOLFNBRDBDLENBRTFDLHFFQUhFLENBQU47RUFLRDs7RUFFRCxNQUFNTyxrQkFBa0IsR0FBR0osU0FBUyxDQUFDSyxHQUFyQztFQUNBLE1BQU1DLGlCQUFpQixHQUFHTixTQUFTLENBQUNLLEdBQVYsR0FBZ0JMLFNBQVMsQ0FBQ0QsTUFBcEQ7RUFFQSxNQUFNUSxvQkFBb0IsR0FBR1AsU0FBUyxDQUFDUSxJQUF2QztFQUNBLE1BQU1DLG1CQUFtQixHQUFHVCxTQUFTLENBQUNRLElBQVYsR0FBaUJSLFNBQVMsQ0FBQ0YsS0FBdkQ7RUFFQSxNQUFNWSxZQUFZLEdBQUcsRUFBckI7O0VBQ0EsS0FBSyxJQUFJQyxDQUFDLEdBQUdQLGtCQUFiLEVBQWlDTyxDQUFDLEdBQUdMLGlCQUFyQyxFQUF3REssQ0FBQyxFQUF6RCxFQUE2RDtJQUMzRCxLQUFLLElBQUlDLENBQUMsR0FBR0wsb0JBQWIsRUFBbUNLLENBQUMsR0FBR0gsbUJBQXZDLEVBQTRERyxDQUFDLEVBQTdELEVBQWlFO01BQy9ELE1BQU1DLHdCQUF3QixHQUFJaEIsU0FBUyxDQUFDQyxLQUFWLEdBQWtCYSxDQUFsQixHQUFzQkMsQ0FBdkIsSUFBNkIsQ0FBOUQ7O01BQ0EsS0FBSyxJQUFJRSxPQUFPLEdBQUcsQ0FBbkIsRUFBc0JBLE9BQU8sR0FBRzFELG9CQUFoQyxFQUFzRDBELE9BQU8sRUFBN0QsRUFBaUU7UUFDL0RKLFlBQVksQ0FBQ2hCLElBQWIsQ0FBa0JaLEtBQUssQ0FBQ25CLElBQU4sQ0FBV2tELHdCQUF3QixHQUFHQyxPQUF0QyxDQUFsQjtNQUNEO0lBQ0Y7RUFDRjs7RUFFRGhDLEtBQUssQ0FBQ25CLElBQU4sR0FBYVEsY0FBQSxDQUFPQyxJQUFQLENBQVlzQyxZQUFaLENBQWI7RUFDQTVCLEtBQUssQ0FBQ2dCLEtBQU4sR0FBY0UsU0FBUyxDQUFDRixLQUF4QjtFQUNBaEIsS0FBSyxDQUFDaUIsTUFBTixHQUFlQyxTQUFTLENBQUNELE1BQXpCO0VBQ0EsT0FBT2pCLEtBQVA7QUFDRDs7QUFFRCxTQUFTbUIsbUJBQVQsQ0FBNkJwQixJQUE3QixFQUFtQ2tDLFNBQW5DLEVBQThDO0VBQzVDLE1BQU1QLElBQUksR0FBRzNCLElBQUksQ0FBQzJCLElBQUwsSUFBYU8sU0FBUyxDQUFDakIsS0FBdkIsR0FBK0JpQixTQUFTLENBQUNqQixLQUF6QyxHQUFpRGpCLElBQUksQ0FBQzJCLElBQW5FO0VBQ0EsTUFBTUgsR0FBRyxHQUFHeEIsSUFBSSxDQUFDd0IsR0FBTCxJQUFZVSxTQUFTLENBQUNoQixNQUF0QixHQUErQmdCLFNBQVMsQ0FBQ2hCLE1BQXpDLEdBQWtEbEIsSUFBSSxDQUFDd0IsR0FBbkU7RUFDQSxNQUFNUCxLQUFLLEdBQUdpQixTQUFTLENBQUNqQixLQUFWLElBQW1CVSxJQUFJLEdBQUczQixJQUFJLENBQUNpQixLQUEvQixHQUF1Q2pCLElBQUksQ0FBQ2lCLEtBQTVDLEdBQW9EaUIsU0FBUyxDQUFDakIsS0FBVixHQUFrQlUsSUFBcEY7RUFDQSxNQUFNVCxNQUFNLEdBQUdnQixTQUFTLENBQUNoQixNQUFWLElBQW9CTSxHQUFHLEdBQUd4QixJQUFJLENBQUNrQixNQUEvQixHQUF3Q2xCLElBQUksQ0FBQ2tCLE1BQTdDLEdBQXNEZ0IsU0FBUyxDQUFDaEIsTUFBVixHQUFtQk0sR0FBeEY7RUFDQSxPQUFPO0lBQUNHLElBQUQ7SUFBT0gsR0FBUDtJQUFZUCxLQUFaO0lBQW1CQztFQUFuQixDQUFQO0FBQ0QifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-util.js","names":["BYTES_IN_PIXEL_BLOCK","SCANLINE_FILTER_METHOD","MIME_JPEG","MIME_PNG","MIME_BMP","Jimp","getJimpImage","data","B","resolve","reject","_","isString","isBuffer","Error","Buffer","from","err","imgObj","getBuffer","promisify","bind","context","cropBase64Image","base64Image","rect","image","base64ToImage","cropImage","imageToBase64","imageBuffer","PNG","filterType","parse","chunks","pack","on","chunk","push","concat","toString","imageRect","width","height","interRect","getRectIntersection","JSON","stringify","firstVerticalPixel","top","lastVerticalPixel","firstHorizontalPixel","left","lastHorizontalPixel","croppedArray","y","x","firstByteIdxInPixelBlock","byteIdx","imageSize"],"sources":["../../lib/image-util.js"],"sourcesContent":["import _ from 'lodash';\nimport Jimp from 'jimp';\nimport {Buffer} from 'buffer';\nimport {PNG} from 'pngjs';\nimport B from 'bluebird';\n\nconst BYTES_IN_PIXEL_BLOCK = 4;\nconst SCANLINE_FILTER_METHOD = 4;\nconst {MIME_JPEG, MIME_PNG, MIME_BMP} = Jimp;\n\n/**\n * Utility function to get a Jimp image object from buffer or base64 data. Jimp\n * is a great library however it does IO in the constructor so it's not\n * convenient for our async/await model.\n *\n * @param {Buffer|string} data - binary image buffer or base64-encoded image\n * string\n * @returns {Promise<AppiumJimp>} - the jimp image object\n */\nasync function getJimpImage(data) {\n return await new B((resolve, reject) => {\n if (!_.isString(data) && !_.isBuffer(data)) {\n return reject(new Error('Must initialize jimp object with string or buffer'));\n }\n // if data is a string, assume it is a base64-encoded image\n if (_.isString(data)) {\n data = Buffer.from(data, 'base64');\n }\n new Jimp(\n data,\n /**\n * @param {Error?} err\n * @param {AppiumJimp} imgObj\n */\n (err, imgObj) => {\n if (err) {\n return reject(err);\n }\n if (!imgObj) {\n return reject(new Error('Could not create jimp image from that data'));\n }\n imgObj.getBuffer = B.promisify(imgObj.getBuffer.bind(imgObj), {\n context: imgObj,\n });\n resolve(imgObj);\n }\n );\n });\n}\n\n/**\n * Crop the image by given rectangle (use base64 string as input and output)\n *\n * @param {string} base64Image The string with base64 encoded image\n * @param {Region} rect The selected region of image\n * @return {Promise<string>} base64 encoded string of cropped image\n */\nasync function cropBase64Image(base64Image, rect) {\n const image = await base64ToImage(base64Image);\n cropImage(image, rect);\n return await imageToBase64(image);\n}\n\n/**\n * Create a pngjs image from given base64 image\n *\n * @param {string} base64Image The string with base64 encoded image\n * @return {Promise<PNG>} The image object\n */\nasync function base64ToImage(base64Image) {\n const imageBuffer = Buffer.from(base64Image, 'base64');\n return await new B((resolve, reject) => {\n const image = new PNG({filterType: SCANLINE_FILTER_METHOD});\n image.parse(imageBuffer, (err, image) => {\n // eslint-disable-line promise/prefer-await-to-callbacks\n if (err) {\n return reject(err);\n }\n resolve(image);\n });\n });\n}\n\n/**\n * Create a base64 string for given image object\n *\n * @param {PNG} image The image object\n * @return {Promise<string>} The string with base64 encoded image\n */\nasync function imageToBase64(image) {\n return await new B((resolve, reject) => {\n const chunks = [];\n image\n .pack()\n .on('data', (chunk) => chunks.push(chunk))\n .on('end', () => {\n resolve(Buffer.concat(chunks).toString('base64'));\n })\n .on('error', (err) => {\n // eslint-disable-line promise/prefer-await-to-callbacks\n reject(err);\n });\n });\n}\n\n/**\n * Crop the image by given rectangle\n *\n * @param {PNG} image The image to mutate by cropping\n * @param {Region} rect The selected region of image\n */\nfunction cropImage(image, rect) {\n const imageRect = {width: image.width, height: image.height};\n const interRect = getRectIntersection(rect, imageRect);\n if (interRect.width < rect.width || interRect.height < rect.height) {\n throw new Error(\n `Cannot crop ${JSON.stringify(rect)} from ${JSON.stringify(\n imageRect\n )} because the intersection between them was not the size of the rect`\n );\n }\n\n const firstVerticalPixel = interRect.top;\n const lastVerticalPixel = interRect.top + interRect.height;\n\n const firstHorizontalPixel = interRect.left;\n const lastHorizontalPixel = interRect.left + interRect.width;\n\n const croppedArray = [];\n for (let y = firstVerticalPixel; y < lastVerticalPixel; y++) {\n for (let x = firstHorizontalPixel; x < lastHorizontalPixel; x++) {\n const firstByteIdxInPixelBlock = (imageRect.width * y + x) << 2;\n for (let byteIdx = 0; byteIdx < BYTES_IN_PIXEL_BLOCK; byteIdx++) {\n croppedArray.push(image.data[firstByteIdxInPixelBlock + byteIdx]);\n }\n }\n }\n\n image.data = Buffer.from(croppedArray);\n image.width = interRect.width;\n image.height = interRect.height;\n return image;\n}\n\nfunction getRectIntersection(rect, imageSize) {\n const left = rect.left >= imageSize.width ? imageSize.width : rect.left;\n const top = rect.top >= imageSize.height ? imageSize.height : rect.top;\n const width = imageSize.width >= left + rect.width ? rect.width : imageSize.width - left;\n const height = imageSize.height >= top + rect.height ? rect.height : imageSize.height - top;\n return {left, top, width, height};\n}\n\nexport {\n cropBase64Image,\n base64ToImage,\n imageToBase64,\n cropImage,\n getJimpImage,\n MIME_JPEG,\n MIME_PNG,\n MIME_BMP,\n};\n\n/**\n * @typedef {Omit<Jimp,'getBuffer'> & {getBuffer: Jimp['getBufferAsync']}} AppiumJimp\n */\n\n/**\n * @typedef Region\n * @property {number} left\n * @property {number} top\n * @property {number} width\n * @property {number} height\n */\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["cancellableDelay","util","tempDir","system","fs","plist","mkdirp","logger","process","zip","imageUtil","net","mjpeg","node","timing","env","console"],"sources":["../../lib/index.js"],"sourcesContent":["import * as tempDir from './tempdir';\nimport * as system from './system';\nimport * as util from './util';\nimport {fs} from './fs';\nimport * as net from './net';\nimport * as plist from './plist';\nimport {mkdirp} from './mkdirp';\nimport * as logger from './logging';\nimport * as process from './process';\nimport * as zip from './zip';\nimport * as imageUtil from './image-util';\nimport * as mjpeg from './mjpeg';\nimport * as node from './node';\nimport * as timing from './timing';\nimport * as env from './env';\nimport * as console from './console';\n\nexport {npm} from './npm';\n\nconst {cancellableDelay} = util;\n\nexport {\n tempDir,\n system,\n util,\n fs,\n cancellableDelay,\n plist,\n mkdirp,\n logger,\n process,\n zip,\n imageUtil,\n net,\n mjpeg,\n node,\n timing,\n env,\n console,\n};\nexport default {\n tempDir,\n system,\n util,\n fs,\n cancellableDelay,\n plist,\n mkdirp,\n logger,\n process,\n zip,\n imageUtil,\n net,\n mjpeg,\n node,\n timing,\n env,\n console,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;AACA;;;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AAEA;;;;;;AAEA,MAAM;EAACA;AAAD,IAAqBC,IAA3B;;eAqBe;EACbC,OADa;EAEbC,MAFa;EAGbF,IAHa;EAIbG,EAAE,EAAFA,MAJa;EAKbJ,gBALa;EAMbK,KANa;EAObC,MAAM,EAANA,cAPa;EAQbC,MARa;EASbC,OATa;EAUbC,GAVa;EAWbC,SAXa;EAYbC,GAZa;EAabC,KAba;EAcbC,IAda;EAebC,MAfa;EAgBbC,GAhBa;EAiBbC;AAjBa,C"}
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
@@ -13,6 +11,8 @@ var _fs = _interopRequireDefault(require("./fs"));
13
11
 
14
12
  var _lodash = _interopRequireDefault(require("lodash"));
15
13
 
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
16
  const DEFAULT_REPLACER = '**SECURE**';
17
17
 
18
18
  class SecureValuesPreprocessor {
@@ -133,4 +133,4 @@ const SECURE_VALUES_PREPROCESSOR = new SecureValuesPreprocessor();
133
133
  exports.SECURE_VALUES_PREPROCESSOR = SECURE_VALUES_PREPROCESSOR;
134
134
  var _default = SECURE_VALUES_PREPROCESSOR;
135
135
  exports.default = _default;
136
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX1JFUExBQ0VSIiwiU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc29yIiwiY29uc3RydWN0b3IiLCJfcnVsZXMiLCJydWxlcyIsInBhcnNlUnVsZSIsInJ1bGUiLCJwYXR0ZXJuIiwicmVwbGFjZXIiLCJmbGFncyIsIl8iLCJpc1N0cmluZyIsImxlbmd0aCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImVzY2FwZVJlZ0V4cCIsImlzUGxhaW5PYmplY3QiLCJoYXMiLCJ0ZXh0IiwiZmxhZyIsImluY2x1ZGVzIiwicHVzaCIsInVuaXEiLCJSZWdFeHAiLCJqb2luIiwibG9hZFJ1bGVzIiwic291cmNlIiwiaXNBcnJheSIsImZzIiwiZXhpc3RzIiwicGFyc2UiLCJyZWFkRmlsZSIsImUiLCJtZXNzYWdlIiwiaXNzdWVzIiwicHJlcHJvY2VzcyIsInN0ciIsInJlc3VsdCIsInJlcGxhY2UiLCJTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUiJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9sb2ctaW50ZXJuYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJy4vZnMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgREVGQVVMVF9SRVBMQUNFUiA9ICcqKlNFQ1VSRSoqJztcblxuY2xhc3MgU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc29yIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fcnVsZXMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7QXJyYXk8U2VjdXJlVmFsdWVQcmVwcm9jZXNzaW5nUnVsZT59IFRoZSBsaXN0IG9mIHN1Y2Nlc3NmdWxseVxuICAgKiBwYXJzZWQgcHJlcHJvY2Vzc2luZyBydWxlc1xuICAgKi9cbiAgZ2V0IHJ1bGVzKCkge1xuICAgIHJldHVybiB0aGlzLl9ydWxlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgc2luZ2xlIHJ1bGUgZnJvbSB0aGUgZ2l2ZW4gSlNPTiBmaWxlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfFJ1bGV9IHJ1bGUgVGhlIHJ1bGUgbWlnaHQgZWl0aGVyIGJlIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlIHN0cmluZ1xuICAgKiBvciBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcGFyc2luZyB0aGUgcnVsZVxuICAgKiBAcmV0dXJucyB7U2VjdXJlVmFsdWVQcmVwcm9jZXNzaW5nUnVsZX0gVGhlIHBhcnNlZCBydWxlXG4gICAqL1xuICBwYXJzZVJ1bGUocnVsZSkge1xuICAgIGxldCBwYXR0ZXJuO1xuICAgIGxldCByZXBsYWNlciA9IERFRkFVTFRfUkVQTEFDRVI7XG4gICAgbGV0IGZsYWdzID0gWydnJ107XG4gICAgaWYgKF8uaXNTdHJpbmcocnVsZSkpIHtcbiAgICAgIGlmIChydWxlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7SlNPTi5zdHJpbmdpZnkocnVsZSl9IC0+IFRoZSB2YWx1ZSBtdXN0IG5vdCBiZSBlbXB0eWApO1xuICAgICAgfVxuICAgICAgcGF0dGVybiA9IGBcXFxcYiR7Xy5lc2NhcGVSZWdFeHAocnVsZSl9XFxcXGJgO1xuICAgIH0gZWxzZSBpZiAoXy5pc1BsYWluT2JqZWN0KHJ1bGUpKSB7XG4gICAgICBpZiAoXy5oYXMocnVsZSwgJ3BhdHRlcm4nKSkge1xuICAgICAgICBpZiAoIV8uaXNTdHJpbmcocnVsZS5wYXR0ZXJuKSB8fCBydWxlLnBhdHRlcm4ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYCR7SlNPTi5zdHJpbmdpZnkocnVsZSl9IC0+IFRoZSB2YWx1ZSBvZiAncGF0dGVybicgbXVzdCBiZSBhIHZhbGlkIG5vbi1lbXB0eSBzdHJpbmdgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBwYXR0ZXJuID0gcnVsZS5wYXR0ZXJuO1xuICAgICAgfSBlbHNlIGlmIChfLmhhcyhydWxlLCAndGV4dCcpKSB7XG4gICAgICAgIGlmICghXy5pc1N0cmluZyhydWxlLnRleHQpIHx8IHJ1bGUudGV4dC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgJHtKU09OLnN0cmluZ2lmeShydWxlKX0gLT4gVGhlIHZhbHVlIG9mICd0ZXh0JyBtdXN0IGJlIGEgdmFsaWQgbm9uLWVtcHR5IHN0cmluZ2BcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHBhdHRlcm4gPSBgXFxcXGIke18uZXNjYXBlUmVnRXhwKHJ1bGUudGV4dCl9XFxcXGJgO1xuICAgICAgfVxuICAgICAgaWYgKCFwYXR0ZXJuKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJHtKU09OLnN0cmluZ2lmeShydWxlKX0gLT4gTXVzdCBlaXRoZXIgaGF2ZSBhIGZpZWxkIG5hbWVkICdwYXR0ZXJuJyBvciAndGV4dCdgXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChfLmhhcyhydWxlLCAnZmxhZ3MnKSkge1xuICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L0d1aWRlL1JlZ3VsYXJfRXhwcmVzc2lvbnMjQWR2YW5jZWRfc2VhcmNoaW5nX3dpdGhfZmxhZ3NfMlxuICAgICAgICBmb3IgKGNvbnN0IGZsYWcgb2YgWydpJywgJ2cnLCAnbScsICdzJywgJ3UnLCAneSddKSB7XG4gICAgICAgICAgaWYgKF8uaW5jbHVkZXMocnVsZS5mbGFncywgZmxhZykpIHtcbiAgICAgICAgICAgIGZsYWdzLnB1c2goZmxhZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZsYWdzID0gXy51bmlxKGZsYWdzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKF8uaXNTdHJpbmcocnVsZS5yZXBsYWNlcikpIHtcbiAgICAgICAgcmVwbGFjZXIgPSBydWxlLnJlcGxhY2VyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7SlNPTi5zdHJpbmdpZnkocnVsZSl9IC0+IE11c3QgZWl0aGVyIGJlIGEgc3RyaW5nIG9yIGFuIG9iamVjdGApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwYXR0ZXJuOiBuZXcgUmVnRXhwKHBhdHRlcm4sIGZsYWdzLmpvaW4oJycpKSxcbiAgICAgIHJlcGxhY2VyLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgcnVsZXMgZnJvbSB0aGUgZ2l2ZW4gSlNPTiBmaWxlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfFJ1bGVbXX0gc291cmNlIFRoZSBmdWxsIHBhdGggdG8gdGhlIEpTT04gZmlsZSBjb250YWluaW5nIHNlY3VyZVxuICAgKiB2YWx1ZXMgcmVwbGFjZW1lbnQgcnVsZXMgb3IgdGhlIHJ1bGVzIHRoZW1zZWx2ZXMgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXlcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBmb3JtYXQgb2YgdGhlIHNvdXJjZSBmaWxlIGlzIGludmFsaWQgb3JcbiAgICogaXQgZG9lcyBub3QgZXhpc3RcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fSBUaGUgbGlzdCBvZiBpc3N1ZXMgZm91bmQgd2hpbGUgcGFyc2luZyBlYWNoIHJ1bGUuXG4gICAqIEFuIGVtcHR5IGxpc3QgaXMgcmV0dXJuZWQgaWYgbm8gcnVsZSBwYXJzaW5nIGlzc3VlcyB3ZXJlIGZvdW5kXG4gICAqL1xuICBhc3luYyBsb2FkUnVsZXMoc291cmNlKSB7XG4gICAgbGV0IHJ1bGVzO1xuICAgIGlmIChfLmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgcnVsZXMgPSBzb3VyY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghKGF3YWl0IGZzLmV4aXN0cyhzb3VyY2UpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke3NvdXJjZX0nIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhY2Nlc3NpYmxlYCk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBydWxlcyA9IEpTT04ucGFyc2UoYXdhaXQgZnMucmVhZEZpbGUoc291cmNlLCAndXRmOCcpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtzb3VyY2V9JyBtdXN0IGJlIGEgdmFsaWQgSlNPTiBmaWxlLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgICBpZiAoIV8uaXNBcnJheShydWxlcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtzb3VyY2V9JyBtdXN0IGNvbnRhaW4gYSB2YWxpZCBKU09OIGFycmF5YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaXNzdWVzID0gW107XG4gICAgdGhpcy5fcnVsZXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuX3J1bGVzLnB1c2godGhpcy5wYXJzZVJ1bGUocnVsZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpc3N1ZXMucHVzaChlLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXNzdWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIHNlY3VyZSB2YWx1ZXMgcmVwbGFjZW1lbnQgaW5zaWRlIHRoZSBnaXZlbiBzdHJpbmdcbiAgICogYWNjb3JkaW5nIHRvIHRoZSBwcmV2aW91c2x5IGxvYWRlZCBydWxlcy4gTm8gcmVwbGFjZW1lbnQgaXMgbWFkZVxuICAgKiBpZiB0aGVyZSBhcmUgbm8gcnVsZXMgb3IgdGhlIGdpdmVuIHZhbHVlIGlzIG5vdCBhIHN0cmluZ1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIFRoZSBzdHJpbmcgdG8gbWFrZSByZXBsYWNlbWVudHMgaW5cbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIHN0cmluZyB3aXRoIHJlcGxhY2VtZW50cyBtYWRlXG4gICAqL1xuICBwcmVwcm9jZXNzKHN0cikge1xuICAgIGlmICh0aGlzLl9ydWxlcy5sZW5ndGggPT09IDAgfHwgIV8uaXNTdHJpbmcoc3RyKSkge1xuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gc3RyO1xuICAgIGZvciAoY29uc3QgcnVsZSBvZiB0aGlzLl9ydWxlcykge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UocnVsZS5wYXR0ZXJuLCBydWxlLnJlcGxhY2VyKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5jb25zdCBTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUiA9IG5ldyBTZWN1cmVWYWx1ZXNQcmVwcm9jZXNzb3IoKTtcblxuZXhwb3J0IHtTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUiwgU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc29yfTtcbmV4cG9ydCBkZWZhdWx0IFNFQ1VSRV9WQUxVRVNfUFJFUFJPQ0VTU09SO1xuXG4vKipcbiAqIEB0eXBlZGVmIFJ1bGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwYXR0ZXJuIEEgdmFsaWQgUmVnRXhwIHBhdHRlcm4gdG8gYmUgcmVwbGFjZWRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0ZXh0IEEgdGV4dCBtYXRjaCB0byByZXBsYWNlLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eSBvciB0aGVcbiAqIGFib3ZlIG9uZSBtdXN0IGJlIHByb3ZpZGVkLiBgcGF0dGVybmAgaGFzIHByaW9yaXR5IG92ZXIgYHRleHRgIGlmIGJvdGggYXJlIHByb3ZpZGVkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtmbGFnc10gUmVndWxhciBleHByZXNzaW9uIGZsYWdzIGZvciB0aGUgZ2l2ZW4gcGF0dGVybi5cbiAqIFN1cHBvcnRlZCBmbGFnIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIHN0YW5kYXJkIEphdmFTY3JpcHQgUmVnRXhwIGNvbnN0cnVjdG9yOlxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9HdWlkZS9SZWd1bGFyX0V4cHJlc3Npb25zI0FkdmFuY2VkX3NlYXJjaGluZ193aXRoX2ZsYWdzXzJcbiAqIFRoZSAnZycgKGdsb2JhbCBtYXRjaGluZykgaXMgYWx3YXlzIGVuYWJsZWQgdGhvdWdoLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtyZXBsYWNlcl0gVGhlIHJlcGxhY2VyIHZhbHVlIHRvIHVzZS4gQnkgZGVmYXVsdFxuICogZXF1YWxzIHRvIGBERUZBVUxUX1NFQ1VSRV9SRVBMQUNFUmBcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIFNlY3VyZVZhbHVlUHJlcHJvY2Vzc2luZ1J1bGVcbiAqIEBwcm9wZXJ0eSB7UmVnRXhwfSBwYXR0ZXJuIFRoZSBwYXJzZWQgcGF0dGVybiB3aGljaCBpcyBnb2luZyB0byBiZSB1c2VkIGZvciByZXBsYWNlbWVudFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtyZXBsYWNlcl0gVGhlIHJlcGxhY2VyIHZhbHVlIHRvIHVzZS4gQnkgZGVmYXVsdFxuICogZXF1YWxzIHRvIGBERUZBVUxUX1NFQ1VSRV9SRVBMQUNFUmBcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQU1BLGdCQUFnQixHQUFHLFlBQXpCOztBQUVBLE1BQU1DLHdCQUFOLENBQStCO0VBQzdCQyxXQUFXLEdBQUc7SUFDWixLQUFLQyxNQUFMLEdBQWMsRUFBZDtFQUNEOztFQU1RLElBQUxDLEtBQUssR0FBRztJQUNWLE9BQU8sS0FBS0QsTUFBWjtFQUNEOztFQVVERSxTQUFTLENBQUNDLElBQUQsRUFBTztJQUNkLElBQUlDLE9BQUo7SUFDQSxJQUFJQyxRQUFRLEdBQUdSLGdCQUFmO0lBQ0EsSUFBSVMsS0FBSyxHQUFHLENBQUMsR0FB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
136
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX1JFUExBQ0VSIiwiU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc29yIiwiY29uc3RydWN0b3IiLCJfcnVsZXMiLCJydWxlcyIsInBhcnNlUnVsZSIsInJ1bGUiLCJwYXR0ZXJuIiwicmVwbGFjZXIiLCJmbGFncyIsIl8iLCJpc1N0cmluZyIsImxlbmd0aCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImVzY2FwZVJlZ0V4cCIsImlzUGxhaW5PYmplY3QiLCJoYXMiLCJ0ZXh0IiwiZmxhZyIsImluY2x1ZGVzIiwicHVzaCIsInVuaXEiLCJSZWdFeHAiLCJqb2luIiwibG9hZFJ1bGVzIiwic291cmNlIiwiaXNBcnJheSIsImZzIiwiZXhpc3RzIiwicGFyc2UiLCJyZWFkRmlsZSIsImUiLCJtZXNzYWdlIiwiaXNzdWVzIiwicHJlcHJvY2VzcyIsInN0ciIsInJlc3VsdCIsInJlcGxhY2UiLCJTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUiJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9sb2ctaW50ZXJuYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJy4vZnMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgREVGQVVMVF9SRVBMQUNFUiA9ICcqKlNFQ1VSRSoqJztcblxuY2xhc3MgU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc29yIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fcnVsZXMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7QXJyYXk8U2VjdXJlVmFsdWVQcmVwcm9jZXNzaW5nUnVsZT59IFRoZSBsaXN0IG9mIHN1Y2Nlc3NmdWxseVxuICAgKiBwYXJzZWQgcHJlcHJvY2Vzc2luZyBydWxlc1xuICAgKi9cbiAgZ2V0IHJ1bGVzKCkge1xuICAgIHJldHVybiB0aGlzLl9ydWxlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgc2luZ2xlIHJ1bGUgZnJvbSB0aGUgZ2l2ZW4gSlNPTiBmaWxlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfFJ1bGV9IHJ1bGUgVGhlIHJ1bGUgbWlnaHQgZWl0aGVyIGJlIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlIHN0cmluZ1xuICAgKiBvciBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcGFyc2luZyB0aGUgcnVsZVxuICAgKiBAcmV0dXJucyB7U2VjdXJlVmFsdWVQcmVwcm9jZXNzaW5nUnVsZX0gVGhlIHBhcnNlZCBydWxlXG4gICAqL1xuICBwYXJzZVJ1bGUocnVsZSkge1xuICAgIGxldCBwYXR0ZXJuO1xuICAgIGxldCByZXBsYWNlciA9IERFRkFVTFRfUkVQTEFDRVI7XG4gICAgbGV0IGZsYWdzID0gWydnJ107XG4gICAgaWYgKF8uaXNTdHJpbmcocnVsZSkpIHtcbiAgICAgIGlmIChydWxlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7SlNPTi5zdHJpbmdpZnkocnVsZSl9IC0+IFRoZSB2YWx1ZSBtdXN0IG5vdCBiZSBlbXB0eWApO1xuICAgICAgfVxuICAgICAgcGF0dGVybiA9IGBcXFxcYiR7Xy5lc2NhcGVSZWdFeHAocnVsZSl9XFxcXGJgO1xuICAgIH0gZWxzZSBpZiAoXy5pc1BsYWluT2JqZWN0KHJ1bGUpKSB7XG4gICAgICBpZiAoXy5oYXMocnVsZSwgJ3BhdHRlcm4nKSkge1xuICAgICAgICBpZiAoIV8uaXNTdHJpbmcocnVsZS5wYXR0ZXJuKSB8fCBydWxlLnBhdHRlcm4ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYCR7SlNPTi5zdHJpbmdpZnkocnVsZSl9IC0+IFRoZSB2YWx1ZSBvZiAncGF0dGVybicgbXVzdCBiZSBhIHZhbGlkIG5vbi1lbXB0eSBzdHJpbmdgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBwYXR0ZXJuID0gcnVsZS5wYXR0ZXJuO1xuICAgICAgfSBlbHNlIGlmIChfLmhhcyhydWxlLCAndGV4dCcpKSB7XG4gICAgICAgIGlmICghXy5pc1N0cmluZyhydWxlLnRleHQpIHx8IHJ1bGUudGV4dC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgJHtKU09OLnN0cmluZ2lmeShydWxlKX0gLT4gVGhlIHZhbHVlIG9mICd0ZXh0JyBtdXN0IGJlIGEgdmFsaWQgbm9uLWVtcHR5IHN0cmluZ2BcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHBhdHRlcm4gPSBgXFxcXGIke18uZXNjYXBlUmVnRXhwKHJ1bGUudGV4dCl9XFxcXGJgO1xuICAgICAgfVxuICAgICAgaWYgKCFwYXR0ZXJuKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJHtKU09OLnN0cmluZ2lmeShydWxlKX0gLT4gTXVzdCBlaXRoZXIgaGF2ZSBhIGZpZWxkIG5hbWVkICdwYXR0ZXJuJyBvciAndGV4dCdgXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChfLmhhcyhydWxlLCAnZmxhZ3MnKSkge1xuICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L0d1aWRlL1JlZ3VsYXJfRXhwcmVzc2lvbnMjQWR2YW5jZWRfc2VhcmNoaW5nX3dpdGhfZmxhZ3NfMlxuICAgICAgICBmb3IgKGNvbnN0IGZsYWcgb2YgWydpJywgJ2cnLCAnbScsICdzJywgJ3UnLCAneSddKSB7XG4gICAgICAgICAgaWYgKF8uaW5jbHVkZXMocnVsZS5mbGFncywgZmxhZykpIHtcbiAgICAgICAgICAgIGZsYWdzLnB1c2goZmxhZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZsYWdzID0gXy51bmlxKGZsYWdzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKF8uaXNTdHJpbmcocnVsZS5yZXBsYWNlcikpIHtcbiAgICAgICAgcmVwbGFjZXIgPSBydWxlLnJlcGxhY2VyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7SlNPTi5zdHJpbmdpZnkocnVsZSl9IC0+IE11c3QgZWl0aGVyIGJlIGEgc3RyaW5nIG9yIGFuIG9iamVjdGApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwYXR0ZXJuOiBuZXcgUmVnRXhwKHBhdHRlcm4sIGZsYWdzLmpvaW4oJycpKSxcbiAgICAgIHJlcGxhY2VyLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgcnVsZXMgZnJvbSB0aGUgZ2l2ZW4gSlNPTiBmaWxlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfFJ1bGVbXX0gc291cmNlIFRoZSBmdWxsIHBhdGggdG8gdGhlIEpTT04gZmlsZSBjb250YWluaW5nIHNlY3VyZVxuICAgKiB2YWx1ZXMgcmVwbGFjZW1lbnQgcnVsZXMgb3IgdGhlIHJ1bGVzIHRoZW1zZWx2ZXMgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXlcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBmb3JtYXQgb2YgdGhlIHNvdXJjZSBmaWxlIGlzIGludmFsaWQgb3JcbiAgICogaXQgZG9lcyBub3QgZXhpc3RcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fSBUaGUgbGlzdCBvZiBpc3N1ZXMgZm91bmQgd2hpbGUgcGFyc2luZyBlYWNoIHJ1bGUuXG4gICAqIEFuIGVtcHR5IGxpc3QgaXMgcmV0dXJuZWQgaWYgbm8gcnVsZSBwYXJzaW5nIGlzc3VlcyB3ZXJlIGZvdW5kXG4gICAqL1xuICBhc3luYyBsb2FkUnVsZXMoc291cmNlKSB7XG4gICAgbGV0IHJ1bGVzO1xuICAgIGlmIChfLmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgcnVsZXMgPSBzb3VyY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghKGF3YWl0IGZzLmV4aXN0cyhzb3VyY2UpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke3NvdXJjZX0nIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhY2Nlc3NpYmxlYCk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBydWxlcyA9IEpTT04ucGFyc2UoYXdhaXQgZnMucmVhZEZpbGUoc291cmNlLCAndXRmOCcpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtzb3VyY2V9JyBtdXN0IGJlIGEgdmFsaWQgSlNPTiBmaWxlLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgICBpZiAoIV8uaXNBcnJheShydWxlcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtzb3VyY2V9JyBtdXN0IGNvbnRhaW4gYSB2YWxpZCBKU09OIGFycmF5YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaXNzdWVzID0gW107XG4gICAgdGhpcy5fcnVsZXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuX3J1bGVzLnB1c2godGhpcy5wYXJzZVJ1bGUocnVsZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpc3N1ZXMucHVzaChlLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXNzdWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm1zIHNlY3VyZSB2YWx1ZXMgcmVwbGFjZW1lbnQgaW5zaWRlIHRoZSBnaXZlbiBzdHJpbmdcbiAgICogYWNjb3JkaW5nIHRvIHRoZSBwcmV2aW91c2x5IGxvYWRlZCBydWxlcy4gTm8gcmVwbGFjZW1lbnQgaXMgbWFkZVxuICAgKiBpZiB0aGVyZSBhcmUgbm8gcnVsZXMgb3IgdGhlIGdpdmVuIHZhbHVlIGlzIG5vdCBhIHN0cmluZ1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIFRoZSBzdHJpbmcgdG8gbWFrZSByZXBsYWNlbWVudHMgaW5cbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIHN0cmluZyB3aXRoIHJlcGxhY2VtZW50cyBtYWRlXG4gICAqL1xuICBwcmVwcm9jZXNzKHN0cikge1xuICAgIGlmICh0aGlzLl9ydWxlcy5sZW5ndGggPT09IDAgfHwgIV8uaXNTdHJpbmcoc3RyKSkge1xuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gc3RyO1xuICAgIGZvciAoY29uc3QgcnVsZSBvZiB0aGlzLl9ydWxlcykge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UocnVsZS5wYXR0ZXJuLCBydWxlLnJlcGxhY2VyKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5jb25zdCBTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUiA9IG5ldyBTZWN1cmVWYWx1ZXNQcmVwcm9jZXNzb3IoKTtcblxuZXhwb3J0IHtTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUiwgU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc29yfTtcbmV4cG9ydCBkZWZhdWx0IFNFQ1VSRV9WQUxVRVNfUFJFUFJPQ0VTU09SO1xuXG4vKipcbiAqIEB0eXBlZGVmIFJ1bGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwYXR0ZXJuIEEgdmFsaWQgUmVnRXhwIHBhdHRlcm4gdG8gYmUgcmVwbGFjZWRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0ZXh0IEEgdGV4dCBtYXRjaCB0byByZXBsYWNlLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eSBvciB0aGVcbiAqIGFib3ZlIG9uZSBtdXN0IGJlIHByb3ZpZGVkLiBgcGF0dGVybmAgaGFzIHByaW9yaXR5IG92ZXIgYHRleHRgIGlmIGJvdGggYXJlIHByb3ZpZGVkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtmbGFnc10gUmVndWxhciBleHByZXNzaW9uIGZsYWdzIGZvciB0aGUgZ2l2ZW4gcGF0dGVybi5cbiAqIFN1cHBvcnRlZCBmbGFnIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIHN0YW5kYXJkIEphdmFTY3JpcHQgUmVnRXhwIGNvbnN0cnVjdG9yOlxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9HdWlkZS9SZWd1bGFyX0V4cHJlc3Npb25zI0FkdmFuY2VkX3NlYXJjaGluZ193aXRoX2ZsYWdzXzJcbiAqIFRoZSAnZycgKGdsb2JhbCBtYXRjaGluZykgaXMgYWx3YXlzIGVuYWJsZWQgdGhvdWdoLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtyZXBsYWNlcl0gVGhlIHJlcGxhY2VyIHZhbHVlIHRvIHVzZS4gQnkgZGVmYXVsdFxuICogZXF1YWxzIHRvIGBERUZBVUxUX1NFQ1VSRV9SRVBMQUNFUmBcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIFNlY3VyZVZhbHVlUHJlcHJvY2Vzc2luZ1J1bGVcbiAqIEBwcm9wZXJ0eSB7UmVnRXhwfSBwYXR0ZXJuIFRoZSBwYXJzZWQgcGF0dGVybiB3aGljaCBpcyBnb2luZyB0byBiZSB1c2VkIGZvciByZXBsYWNlbWVudFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtyZXBsYWNlcl0gVGhlIHJlcGxhY2VyIHZhbHVlIHRvIHVzZS4gQnkgZGVmYXVsdFxuICogZXF1YWxzIHRvIGBERUZBVUxUX1NFQ1VSRV9SRVBMQUNFUmBcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7OztBQUVBLE1BQU1BLGdCQUFnQixHQUFHLFlBQXpCOztBQUVBLE1BQU1DLHdCQUFOLENBQStCO0VBQzdCQyxXQUFXLEdBQUc7SUFDWixLQUFLQyxNQUFMLEdBQWMsRUFBZDtFQUNEOztFQU1RLElBQUxDLEtBQUssR0FBRztJQUNWLE9BQU8sS0FBS0QsTUFBWjtFQUNEOztFQVVERSxTQUFTLENBQUNDLElBQUQsRUFBTztJQUNkLElBQUlDLE9BQUo7SUFDQSxJQUFJQyxRQUFRLEdBQUdSLGdCQUFmO0lBQ0EsSUFBSVMsS0FBSyxHQUFHLENBQUMsR0FB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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-internal.js","names":["DEFAULT_REPLACER","SecureValuesPreprocessor","constructor","_rules","rules","parseRule","rule","pattern","replacer","flags","_","isString","length","Error","JSON","stringify","escapeRegExp","isPlainObject","has","text","flag","includes","push","uniq","RegExp","join","loadRules","source","isArray","fs","exists","parse","readFile","e","message","issues","preprocess","str","result","replace","SECURE_VALUES_PREPROCESSOR"],"sources":["../../lib/log-internal.js"],"sourcesContent":["import fs from './fs';\nimport _ from 'lodash';\n\nconst DEFAULT_REPLACER = '**SECURE**';\n\nclass SecureValuesPreprocessor {\n constructor() {\n this._rules = [];\n }\n\n /**\n * @returns {Array<SecureValuePreprocessingRule>} The list of successfully\n * parsed preprocessing rules\n */\n get rules() {\n return this._rules;\n }\n\n /**\n * Parses single rule from the given JSON file\n *\n * @param {string|Rule} rule The rule might either be represented as a single string\n * or a configuration object\n * @throws {Error} If there was an error while parsing the rule\n * @returns {SecureValuePreprocessingRule} The parsed rule\n */\n parseRule(rule) {\n let pattern;\n let replacer = DEFAULT_REPLACER;\n let flags = ['g'];\n if (_.isString(rule)) {\n if (rule.length === 0) {\n throw new Error(`${JSON.stringify(rule)} -> The value must not be empty`);\n }\n pattern = `\\\\b${_.escapeRegExp(rule)}\\\\b`;\n } else if (_.isPlainObject(rule)) {\n if (_.has(rule, 'pattern')) {\n if (!_.isString(rule.pattern) || rule.pattern.length === 0) {\n throw new Error(\n `${JSON.stringify(rule)} -> The value of 'pattern' must be a valid non-empty string`\n );\n }\n pattern = rule.pattern;\n } else if (_.has(rule, 'text')) {\n if (!_.isString(rule.text) || rule.text.length === 0) {\n throw new Error(\n `${JSON.stringify(rule)} -> The value of 'text' must be a valid non-empty string`\n );\n }\n pattern = `\\\\b${_.escapeRegExp(rule.text)}\\\\b`;\n }\n if (!pattern) {\n throw new Error(\n `${JSON.stringify(rule)} -> Must either have a field named 'pattern' or 'text'`\n );\n }\n\n if (_.has(rule, 'flags')) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Advanced_searching_with_flags_2\n for (const flag of ['i', 'g', 'm', 's', 'u', 'y']) {\n if (_.includes(rule.flags, flag)) {\n flags.push(flag);\n }\n }\n flags = _.uniq(flags);\n }\n\n if (_.isString(rule.replacer)) {\n replacer = rule.replacer;\n }\n } else {\n throw new Error(`${JSON.stringify(rule)} -> Must either be a string or an object`);\n }\n\n return {\n pattern: new RegExp(pattern, flags.join('')),\n replacer,\n };\n }\n\n /**\n * Loads rules from the given JSON file\n *\n * @param {string|string[]|Rule[]} source The full path to the JSON file containing secure\n * values replacement rules or the rules themselves represented as an array\n * @throws {Error} If the format of the source file is invalid or\n * it does not exist\n * @returns {Promise<string[]>} The list of issues found while parsing each rule.\n * An empty list is returned if no rule parsing issues were found\n */\n async loadRules(source) {\n let rules;\n if (_.isArray(source)) {\n rules = source;\n } else {\n if (!(await fs.exists(source))) {\n throw new Error(`'${source}' does not exist or is not accessible`);\n }\n try {\n rules = JSON.parse(await fs.readFile(source, 'utf8'));\n } catch (e) {\n throw new Error(`'${source}' must be a valid JSON file. Original error: ${e.message}`);\n }\n if (!_.isArray(rules)) {\n throw new Error(`'${source}' must contain a valid JSON array`);\n }\n }\n\n const issues = [];\n this._rules = [];\n for (const rule of rules) {\n try {\n this._rules.push(this.parseRule(rule));\n } catch (e) {\n issues.push(e.message);\n }\n }\n return issues;\n }\n\n /**\n * Performs secure values replacement inside the given string\n * according to the previously loaded rules. No replacement is made\n * if there are no rules or the given value is not a string\n *\n * @param {string} str The string to make replacements in\n * @returns {string} The string with replacements made\n */\n preprocess(str) {\n if (this._rules.length === 0 || !_.isString(str)) {\n return str;\n }\n\n let result = str;\n for (const rule of this._rules) {\n result = result.replace(rule.pattern, rule.replacer);\n }\n return result;\n }\n}\n\nconst SECURE_VALUES_PREPROCESSOR = new SecureValuesPreprocessor();\n\nexport {SECURE_VALUES_PREPROCESSOR, SecureValuesPreprocessor};\nexport default SECURE_VALUES_PREPROCESSOR;\n\n/**\n * @typedef Rule\n * @property {string} pattern A valid RegExp pattern to be replaced\n * @property {string} text A text match to replace. Either this property or the\n * above one must be provided. `pattern` has priority over `text` if both are provided.\n * @property {string} [flags] Regular expression flags for the given pattern.\n * Supported flag are the same as for the standard JavaScript RegExp constructor:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Advanced_searching_with_flags_2\n * The 'g' (global matching) is always enabled though.\n * @property {string} [replacer] The replacer value to use. By default\n * equals to `DEFAULT_SECURE_REPLACER`\n */\n\n/**\n * @typedef SecureValuePreprocessingRule\n * @property {RegExp} pattern The parsed pattern which is going to be used for replacement\n * @property {string} [replacer] The replacer value to use. By default\n * equals to `DEFAULT_SECURE_REPLACER`\n */\n"],"mappings":";;;;;;;;;AAAA;;AACA;;;;AAEA,MAAMA,gBAAgB,GAAG,YAAzB;;AAEA,MAAMC,wBAAN,CAA+B;EAC7BC,WAAW,GAAG;IACZ,KAAKC,MAAL,GAAc,EAAd;EACD;;EAMQ,IAALC,KAAK,GAAG;IACV,OAAO,KAAKD,MAAZ;EACD;;EAUDE,SAAS,CAACC,IAAD,EAAO;IACd,IAAIC,OAAJ;IACA,IAAIC,QAAQ,GAAGR,gBAAf;IACA,IAAIS,KAAK,GAAG,CAAC,GAAD,CAAZ;;IACA,IAAIC,eAAA,CAAEC,QAAF,CAAWL,IAAX,CAAJ,EAAsB;MACpB,IAAIA,IAAI,CAACM,MAAL,KAAgB,CAApB,EAAuB;QACrB,MAAM,IAAIC,KAAJ,CAAW,GAAEC,IAAI,CAACC,SAAL,CAAeT,IAAf,CAAqB,iCAAlC,CAAN;MACD;;MACDC,OAAO,GAAI,MAAKG,eAAA,CAAEM,YAAF,CAAeV,IAAf,CAAqB,KAArC;IACD,CALD,MAKO,IAAII,eAAA,CAAEO,aAAF,CAAgBX,IAAhB,CAAJ,EAA2B;MAChC,IAAII,eAAA,CAAEQ,GAAF,CAAMZ,IAAN,EAAY,SAAZ,CAAJ,EAA4B;QAC1B,IAAI,CAACI,eAAA,CAAEC,QAAF,CAAWL,IAAI,CAACC,OAAhB,CAAD,IAA6BD,IAAI,CAACC,OAAL,CAAaK,MAAb,KAAwB,CAAzD,EAA4D;UAC1D,MAAM,IAAIC,KAAJ,CACH,GAAEC,IAAI,CAACC,SAAL,CAAeT,IAAf,CAAqB,6DADpB,CAAN;QAGD;;QACDC,OAAO,GAAGD,IAAI,CAACC,OAAf;MACD,CAPD,MAOO,IAAIG,eAAA,CAAEQ,GAAF,CAAMZ,IAAN,EAAY,MAAZ,CAAJ,EAAyB;QAC9B,IAAI,CAACI,eAAA,CAAEC,QAAF,CAAWL,IAAI,CAACa,IAAhB,CAAD,IAA0Bb,IAAI,CAACa,IAAL,CAAUP,MAAV,KAAqB,CAAnD,EAAsD;UACpD,MAAM,IAAIC,KAAJ,CACH,GAAEC,IAAI,CAACC,SAAL,CAAeT,IAAf,CAAqB,0DADpB,CAAN;QAGD;;QACDC,OAAO,GAAI,MAAKG,eAAA,CAAEM,YAAF,CAAeV,IAAI,CAACa,IAApB,CAA0B,KAA1C;MACD;;MACD,IAAI,CAACZ,OAAL,EAAc;QACZ,MAAM,IAAIM,KAAJ,CACH,GAAEC,IAAI,CAACC,SAAL,CAAeT,IAAf,CAAqB,wDADpB,CAAN;MAGD;;MAED,IAAII,eAAA,CAAEQ,GAAF,CAAMZ,IAAN,EAAY,OAAZ,CAAJ,EAA0B;QAExB,KAAK,MAAMc,IAAX,IAAmB,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,CAAnB,EAAmD;UACjD,IAAIV,eAAA,CAAEW,QAAF,CAAWf,IAAI,CAACG,KAAhB,EAAuBW,IAAvB,CAAJ,EAAkC;YAChCX,KAAK,CAACa,IAAN,CAAWF,IAAX;UACD;QACF;;QACDX,KAAK,GAAGC,eAAA,CAAEa,IAAF,CAAOd,KAAP,CAAR;MACD;;MAED,IAAIC,eAAA,CAAEC,QAAF,CAAWL,IAAI,CAACE,QAAhB,CAAJ,EAA+B;QAC7BA,QAAQ,GAAGF,IAAI,CAACE,QAAhB;MACD;IACF,CAnCM,MAmCA;MACL,MAAM,IAAIK,KAAJ,CAAW,GAAEC,IAAI,CAACC,SAAL,CAAeT,IAAf,CAAqB,0CAAlC,CAAN;IACD;;IAED,OAAO;MACLC,OAAO,EAAE,IAAIiB,MAAJ,CAAWjB,OAAX,EAAoBE,KAAK,CAACgB,IAAN,CAAW,EAAX,CAApB,CADJ;MAELjB;IAFK,CAAP;EAID;;EAYc,MAATkB,SAAS,CAACC,MAAD,EAAS;IACtB,IAAIvB,KAAJ;;IACA,IAAIM,eAAA,CAAEkB,OAAF,CAAUD,MAAV,CAAJ,EAAuB;MACrBvB,KAAK,GAAGuB,MAAR;IACD,CAFD,MAEO;MACL,IAAI,EAAE,MAAME,WAAA,CAAGC,MAAH,CAAUH,MAAV,CAAR,CAAJ,EAAgC;QAC9B,MAAM,IAAId,KAAJ,CAAW,IAAGc,MAAO,uCAArB,CAAN;MACD;;MACD,IAAI;QACFvB,KAAK,GAAGU,IAAI,CAACiB,KAAL,CAAW,MAAMF,WAAA,CAAGG,QAAH,CAAYL,MAAZ,EAAoB,MAApB,CAAjB,CAAR;MACD,CAFD,CAEE,OAAOM,CAAP,EAAU;QACV,MAAM,IAAIpB,KAAJ,CAAW,IAAGc,MAAO,gDAA+CM,CAAC,CAACC,OAAQ,EAA9E,CAAN;MACD;;MACD,IAAI,CAACxB,eAAA,CAAEkB,OAAF,CAAUxB,KAAV,CAAL,EAAuB;QACrB,MAAM,IAAIS,KAAJ,CAAW,IAAGc,MAAO,mCAArB,CAAN;MACD;IACF;;IAED,MAAMQ,MAAM,GAAG,EAAf;IACA,KAAKhC,MAAL,GAAc,EAAd;;IACA,KAAK,MAAMG,IAAX,IAAmBF,KAAnB,EAA0B;MACxB,IAAI;QACF,KAAKD,MAAL,CAAYmB,IAAZ,CAAiB,KAAKjB,SAAL,CAAeC,IAAf,CAAjB;MACD,CAFD,CAEE,OAAO2B,CAAP,EAAU;QACVE,MAAM,CAACb,IAAP,CAAYW,CAAC,CAACC,OAAd;MACD;IACF;;IACD,OAAOC,MAAP;EACD;;EAUDC,UAAU,CAACC,GAAD,EAAM;IACd,IAAI,KAAKlC,MAAL,CAAYS,MAAZ,KAAuB,CAAvB,IAA4B,CAACF,eAAA,CAAEC,QAAF,CAAW0B,GAAX,CAAjC,EAAkD;MAChD,OAAOA,GAAP;IACD;;IAED,IAAIC,MAAM,GAAGD,GAAb;;IACA,KAAK,MAAM/B,IAAX,IAAmB,KAAKH,MAAxB,EAAgC;MAC9BmC,MAAM,GAAGA,MAAM,CAACC,OAAP,CAAejC,IAAI,CAACC,OAApB,EAA6BD,IAAI,CAACE,QAAlC,CAAT;IACD;;IACD,OAAO8B,MAAP;EACD;;AArI4B;;;AAwI/B,MAAME,0BAA0B,GAAG,IAAIvC,wBAAJ,EAAnC;;eAGeuC,0B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","names":["log","getLogger"],"sources":["../../lib/logger.js"],"sourcesContent":["import {getLogger} from './logging';\n\nlet log = getLogger('Support');\n\nexport default log;\n"],"mappings":";;;;;;;;;AAAA;;AAEA,IAAIA,GAAG,GAAG,IAAAC,kBAAA,EAAU,SAAV,CAAV;eAEeD,G"}
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
@@ -23,6 +21,8 @@ var _moment = _interopRequireDefault(require("moment"));
23
21
 
24
22
  var _logInternal = _interopRequireDefault(require("./log-internal"));
25
23
 
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
26
  const LEVELS = ['silly', 'verbose', 'debug', 'info', 'http', 'warn', 'error'];
27
27
  exports.LEVELS = LEVELS;
28
28
  const MAX_LOG_RECORDS_COUNT = 3000;
@@ -125,4 +125,4 @@ const log = getLogger();
125
125
  exports.log = log;
126
126
  var _default = log;
127
127
  exports.default = _default;
128
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMRVZFTFMiLCJNQVhfTE9HX1JFQ09SRFNfQ09VTlQiLCJQUkVGSVhfVElNRVNUQU1QX0ZPUk1BVCIsIm1vY2tMb2ciLCJsZXZlbCIsInBhdGNoTG9nZ2VyIiwibG9nZ2VyIiwiZGVidWciLCJhZGRMZXZlbCIsImZnIiwiYmciLCJfZ2V0TG9nZ2VyIiwidGVzdGluZ01vZGUiLCJwcm9jZXNzIiwiZW52IiwiX1RFU1RJTkciLCJmb3JjZUxvZ01vZGUiLCJfRk9SQ0VfTE9HUyIsInVzaW5nR2xvYmFsTG9nIiwiZ2xvYmFsIiwiX2dsb2JhbF9ucG1sb2ciLCJucG1sb2ciLCJtYXhSZWNvcmRTaXplIiwiZ2V0QWN0dWFsUHJlZml4IiwicHJlZml4IiwibG9nVGltZXN0YW1wIiwicmVzdWx0IiwiXyIsImlzRnVuY3Rpb24iLCJtb21lbnQiLCJmb3JtYXQiLCJnZXRMb2dnZXIiLCJ3cmFwcGVkTG9nZ2VyIiwidW53cmFwIiwibGV2ZWxzIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJzZXQiLCJuZXdWYWx1ZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJfTE9HX1RJTUVTVEFNUCIsImFyZ3MiLCJhY3R1YWxQcmVmaXgiLCJhcmciLCJvdXQiLCJpc0Vycm9yIiwic3RhY2siLCJsaW5lIiwic3BsaXQiLCJ1bmxlYWtlZExpbmUiLCJ1bmxlYWtTdHJpbmciLCJTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUiIsInByZXByb2Nlc3MiLCJlcnJvckFuZFRocm93IiwiZXJyIiwiZXJyb3IiLCJFcnJvciIsImxvYWRTZWN1cmVWYWx1ZXNQcmVwcm9jZXNzaW5nUnVsZXMiLCJydWxlc0pzb25QYXRoIiwiaXNzdWVzIiwibG9hZFJ1bGVzIiwicnVsZXMiLCJjbG9uZURlZXAiLCJsb2ciXSwic291cmNlcyI6WyIuLi8uLi9saWIvbG9nZ2luZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IG5wbWxvZyBmcm9tICducG1sb2cnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7dW5sZWFrU3RyaW5nfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IFNFQ1VSRV9WQUxVRVNfUFJFUFJPQ0VTU09SIGZyb20gJy4vbG9nLWludGVybmFsJztcblxuLyoqIEB0eXBlIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5BcHBpdW1Mb2dnZXJMZXZlbFtdfSAqL1xuZXhwb3J0IGNvbnN0IExFVkVMUyA9IFsnc2lsbHknLCAndmVyYm9zZScsICdkZWJ1ZycsICdpbmZvJywgJ2h0dHAnLCAnd2FybicsICdlcnJvciddO1xuY29uc3QgTUFYX0xPR19SRUNPUkRTX0NPVU5UID0gMzAwMDtcblxuY29uc3QgUFJFRklYX1RJTUVTVEFNUF9GT1JNQVQgPSAnSEgtbW0tc3M6U1NTJztcblxuLy8gbW9jayBsb2cgb2JqZWN0IHVzZWQgaW4gdGVzdGluZyBtb2RlXG5sZXQgbW9ja0xvZyA9IHt9O1xuZm9yIChsZXQgbGV2ZWwgb2YgTEVWRUxTKSB7XG4gIG1vY2tMb2dbbGV2ZWxdID0gKCkgPT4ge307XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7aW1wb3J0KCducG1sb2cnKS5Mb2dnZXJ9IGxvZ2dlclxuICovXG5mdW5jdGlvbiBwYXRjaExvZ2dlcihsb2dnZXIpIHtcbiAgaWYgKCFsb2dnZXIuZGVidWcpIHtcbiAgICBsb2dnZXIuYWRkTGV2ZWwoJ2RlYnVnJywgMTAwMCwge2ZnOiAnYmx1ZScsIGJnOiAnYmxhY2snfSwgJ2RidWcnKTtcbiAgfVxufVxuXG4vKipcbiAqXG4gKiBAcmV0dXJucyB7W2ltcG9ydCgnbnBtbG9nJykuTG9nZ2VyLCBib29sZWFuXX1cbiAqL1xuZnVuY3Rpb24gX2dldExvZ2dlcigpIHtcbiAgLy8gY2hlY2sgaWYgdGhlIHVzZXIgc2V0IHRoZSBgX1RFU1RJTkdgIG9yIGBfRk9SQ0VfTE9HU2AgZmxhZ1xuICBjb25zdCB0ZXN0aW5nTW9kZSA9IHByb2Nlc3MuZW52Ll9URVNUSU5HID09PSAnMSc7XG4gIGNvbnN0IGZvcmNlTG9nTW9kZSA9IHByb2Nlc3MuZW52Ll9GT1JDRV9MT0dTID09PSAnMSc7XG5cbiAgLy8gaWYgaXMgcG9zc2libGUgdGhhdCB0aGVyZSBpcyBhIGxvZ2dlciBpbnN0YW5jZSB0aGF0IGlzIGFscmVhZHkgYXJvdW5kLFxuICAvLyBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdCBvIHVzZSB0aGF0XG4gIGNvbnN0IHVzaW5nR2xvYmFsTG9nID0gISFnbG9iYWwuX2dsb2JhbF9ucG1sb2c7XG4gIGxldCBsb2dnZXI7XG4gIGlmICh0ZXN0aW5nTW9kZSAmJiAhZm9yY2VMb2dNb2RlKSB7XG4gICAgLy8gaW4gdGVzdGluZyBtb2RlLCB1c2UgYSBtb2NrIGxvZ2dlciBvYmplY3QgdGhhdCB3ZSBjYW4gcXVlcnlcbiAgICBsb2dnZXIgPSBtb2NrTG9nO1xuICB9IGVsc2Uge1xuICAgIC8vIG90aGVyd2lzZSwgZWl0aGVyIHVzZSB0aGUgZ2xvYmFsLCBvciBhIG5ldyBgbnBtbG9nYCBvYmplY3RcbiAgICBsb2dnZXIgPSBnbG9iYWwuX2dsb2JhbF9ucG1sb2cgfHwgbnBtbG9nO1xuICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDEwMDAwLCB3aGljaCBjYXVzZXMgZXhjZXNzaXZlIG1lbW9yeSB1c2FnZVxuICAgIGxvZ2dlci5tYXhSZWNvcmRTaXplID0gTUFYX0xPR19SRUNPUkRTX0NPVU5UO1xuICB9XG4gIHBhdGNoTG9nZ2VyKGxvZ2dlcik7XG4gIHJldHVybiBbbG9nZ2VyLCB1c2luZ0dsb2JhbExvZ107XG59XG5cbi8qKlxuICogQHBhcmFtIHtBcHBpdW1Mb2dnZXJQcmVmaXg/fSBwcmVmaXhcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbG9nVGltZXN0YW1wIHdoZXRoZXIgdG8gaW5jbHVkZSB0aW1lc3RhbXBzIGludG8gbG9nIHByZWZpeGVzXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRBY3R1YWxQcmVmaXgocHJlZml4LCBsb2dUaW1lc3RhbXAgPSBmYWxzZSkge1xuICBjb25zdCByZXN1bHQgPSAoXy5pc0Z1bmN0aW9uKHByZWZpeCkgPyBwcmVmaXgoKSA6IHByZWZpeCkgPz8gJyc7XG4gIHJldHVybiBsb2dUaW1lc3RhbXAgPyBgWyR7bW9tZW50KCkuZm9ybWF0KFBSRUZJWF9USU1FU1RBTVBfRk9STUFUKX1dICR7cmVzdWx0fWAgOiByZXN1bHQ7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7QXBwaXVtTG9nZ2VyUHJlZml4P30gcHJlZml4XG4gKiBAcmV0dXJucyB7QXBwaXVtTG9nZ2VyfVxuICovXG5mdW5jdGlvbiBnZXRMb2dnZXIocHJlZml4ID0gbnVsbCkge1xuICBsZXQgW2xvZ2dlciwgdXNpbmdHbG9iYWxMb2ddID0gX2dldExvZ2dlcigpO1xuXG4gIC8vIHdyYXAgdGhlIGxvZ2dlciBzbyB0aGF0IHdlIGNhbiBjYXRjaCBhbmQgbW9kaWZ5IGFueSBsb2dnaW5nXG4gIGxldCB3cmFwcGVkTG9nZ2VyID0ge1xuICAgIHVud3JhcDogKCkgPT4gbG9nZ2VyLFxuICAgIGxldmVsczogTEVWRUxTLFxuICAgIHByZWZpeCxcbiAgfTtcblxuICAvLyBhbGxvdyBhY2Nlc3MgdG8gdGhlIGxldmVsIG9mIHRoZSB1bmRlcmx5aW5nIGxvZ2dlclxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkod3JhcHBlZExvZ2dlciwgJ2xldmVsJywge1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBsb2dnZXIubGV2ZWw7XG4gICAgfSxcbiAgICBzZXQobmV3VmFsdWUpIHtcbiAgICAgIGxvZ2dlci5sZXZlbCA9IG5ld1ZhbHVlO1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0IGxvZ1RpbWVzdGFtcCA9IHByb2Nlc3MuZW52Ll9MT0dfVElNRVNUQU1QID09PSAnMSc7XG5cbiAgLy8gYWRkIGFsbCB0aGUgbGV2ZWxzIGZyb20gYG5wbWxvZ2AsIGFuZCBtYXAgdG8gdGhlIHVuZGVybHlpbmcgbG9nZ2VyXG4gIGZvciAoY29uc3QgbGV2ZWwgb2YgTEVWRUxTKSB7XG4gICAgd3JhcHBlZExvZ2dlcltsZXZlbF0gPSAvKiogQHBhcmFtIHsuLi5hbnl9IGFyZ3MgKi8gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgIGNvbnN0IGFjdHVhbFByZWZpeCA9IGdldEFjdHVhbFByZWZpeCh0aGlzLnByZWZpeCwgbG9nVGltZXN0YW1wKTtcbiAgICAgIGZvciAoY29uc3QgYXJnIG9mIGFyZ3MpIHtcbiAgICAgICAgY29uc3Qgb3V0ID0gXy5pc0Vycm9yKGFyZykgJiYgYXJnLnN0YWNrID8gYXJnLnN0YWNrIDogYCR7YXJnfWA7XG4gICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBvdXQuc3BsaXQoJ1xcbicpKSB7XG4gICAgICAgICAgLy8gaXQgaXMgbmVjZXNzYXJ5IHRvIHVubGVhayBlYWNoIGxpbmUgYmVjYXVzZSBgc3BsaXRgIGNhbGxcbiAgICAgICAgICAvLyBjcmVhdGVzIFwidmlld3NcIiB0byB0aGUgb3JpZ2luYWwgc3RyaW5nIGFzIHdlbGwgYXMgdGhlIGBzdWJzdHJpbmdgIG9uZVxuICAgICAgICAgIGNvbnN0IHVubGVha2VkTGluZSA9IHVubGVha1N0cmluZyhsaW5lKTtcbiAgICAgICAgICBsb2dnZXJbbGV2ZWxdKGFjdHVhbFByZWZpeCwgU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1IucHJlcHJvY2Vzcyh1bmxlYWtlZExpbmUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbiAgLy8gYWRkIG1ldGhvZCB0byBsb2cgYW4gZXJyb3IsIGFuZCB0aHJvdyBpdCwgZm9yIGNvbnZlbmllbmNlXG4gIHdyYXBwZWRMb2dnZXIuZXJyb3JBbmRUaHJvdyA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICB0aGlzLmVycm9yKGVycik7XG4gICAgLy8gbWFrZSBzdXJlIHdlIGhhdmUgYW4gYEVycm9yYCBvYmplY3QuIFdyYXAgaWYgbmVjZXNzYXJ5XG4gICAgdGhyb3cgXy5pc0Vycm9yKGVycikgPyBlcnIgOiBuZXcgRXJyb3IodW5sZWFrU3RyaW5nKGVycikpO1xuICB9O1xuICBpZiAoIXVzaW5nR2xvYmFsTG9nKSB7XG4gICAgLy8gaWYgd2UncmUgbm90IHVzaW5nIGEgZ2xvYmFsIGxvZyBzcGVjaWZpZWQgZnJvbSBzb21lIHRvcC1sZXZlbCBwYWNrYWdlLFxuICAgIC8vIHNldCB0aGUgbG9nIGxldmVsIHRvIGEgZGVmYXVsdCBvZiB2ZXJib3NlLiBPdGhlcndpc2UsIGxldCB0aGUgdG9wLWxldmVsXG4gICAgLy8gcGFja2FnZSBzZXQgdGhlIGxvZyBsZXZlbFxuICAgIHdyYXBwZWRMb2dnZXIubGV2ZWwgPSAndmVyYm9zZSc7XG4gIH1cbiAgcmV0dXJuIC8qKiBAdHlwZSB7QXBwaXVtTG9nZ2VyfSAqLyAod3JhcHBlZExvZ2dlcik7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgTG9hZFJlc3VsdFxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gaXNzdWVzIFRoZSBsaXN0IG9mIHJ1bGUgcGFyc2luZyBpc3N1ZXMgKG9uZSBpdGVtIHBlciBydWxlKS5cbiAqIFJ1bGVzIHdpdGggaXNzdWVzIGFyZSBza2lwcGVkLiBBbiBlbXB0eSBsaXN0IGlzIHJldHVybmVkIGlmIG5vIHBhcnNpbmcgaXNzdWVzIGV4aXN0LlxuICogQHByb3BlcnR5IHtpbXBvcnQoJy4vbG9nLWludGVybmFsJykuU2VjdXJlVmFsdWVQcmVwcm9jZXNzaW5nUnVsZVtdfSBydWxlcyBUaGUgbGlzdCBvZiBzdWNjZXNzZnVsbHkgbG9hZGVkXG4gKiByZXBsYWNlbWVudCBydWxlcy4gVGhlIGxpc3QgY291bGQgYmUgZW1wdHkgaWYgbm8gcnVsZXMgd2VyZSBsb2FkZWQuXG4gKi9cblxuLyoqXG4gKiBMb2FkcyB0aGUgSlNPTiBmaWxlIGNvbnRhaW5pbmcgc2VjdXJlIHZhbHVlcyByZXBsYWNlbWVudCBydWxlcy5cbiAqIFRoaXMgbWlnaHQgYmUgbmVjZXNzYXJ5IHRvIGhpZGUgc2Vuc2l0aXZlIHZhbHVlcyB0aGF0IG1heSBwb3NzaWJseVxuICogYXBwZWFyIGluIEFwcGl1bSBsb2dzLlxuICogRWFjaCBjYWxsIHRvIHRoaXMgbWV0aG9kIHJlcGxhY2VzIHRoZSBwcmV2aW91c2x5IGxvYWRlZCBydWxlcyBpZiBhbnkgZXhpc3RlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXXxpbXBvcnQoJy4vbG9nLWludGVybmFsJykuUnVsZVtdfSBydWxlc0pzb25QYXRoIFRoZSBmdWxsIHBhdGggdG8gdGhlIEpTT04gZmlsZSBjb250YWluaW5nXG4gKiB0aGUgcmVwbGFjZW1lbnQgcnVsZXMuIEVhY2ggcnVsZSBjb3VsZCBlaXRoZXIgYmUgYSBzdHJpbmcgdG8gYmUgcmVwbGFjZWRcbiAqIG9yIGFuIG9iamVjdCB3aXRoIHByZWRlZmluZWQgcHJvcGVydGllcy4gU2VlIHRoZSBgUnVsZWAgdHlwZSBkZWZpbml0aW9uIGluXG4gKiBgbG9nLWludGVybmFscy5qc2AgdG8gZ2V0IG1vcmUgZGV0YWlscyBvbiBpdHMgZm9ybWF0LlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBnaXZlbiBmaWxlIGNhbm5vdCBiZSBsb2FkZWRcbiAqIEByZXR1cm5zIHtQcm9taXNlPExvYWRSZXN1bHQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc2luZ1J1bGVzKHJ1bGVzSnNvblBhdGgpIHtcbiAgY29uc3QgaXNzdWVzID0gYXdhaXQgU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1IubG9hZFJ1bGVzKHJ1bGVzSnNvblBhdGgpO1xuICByZXR1cm4ge1xuICAgIGlzc3VlcyxcbiAgICBydWxlczogXy5jbG9uZURlZXAoU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1IucnVsZXMpLFxuICB9O1xufVxuXG4vLyBleHBvcnQgYSBkZWZhdWx0IGxvZ2dlciB3aXRoIG5vIHByZWZpeFxuY29uc3QgbG9nID0gZ2V0TG9nZ2VyKCk7XG5cbmV4cG9ydCB7bG9nLCBwYXRjaExvZ2dlciwgZ2V0TG9nZ2VyLCBsb2FkU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc2luZ1J1bGVzfTtcbmV4cG9ydCBkZWZhdWx0IGxvZztcblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQXBwaXVtTG9nZ2VyUHJlZml4fSBBcHBpdW1Mb2dnZXJQcmVmaXhcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5BcHBpdW1Mb2dnZXJ9IEFwcGl1bUxvZ2dlclxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkFwcGl1bUxvZ2dlckxldmVsfSBBcHBpdW1Mb2dnZXJMZXZlbFxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdPLE1BQU1BLE1BQU0sR0FBRyxDQUFDLE9BQUQsRUFBVSxTQUFWLEVBQXFCLE9BQXJCLEVBQThCLE1BQTlCLEVBQXNDLE1BQXRDLEVBQThDLE1BQTlDLEVBQXNELE9BQXRELENBQWY7O0FBQ1AsTUFBTUMscUJBQXFCLEdBQUcsSUFBOUI7QUFFQSxNQUFNQyx1QkFBdUIsR0FBRyxjQUFoQztBQUdBLElBQUlDLE9BQU8sR0FBRyxFQUFkOztBQUNBLEtBQUssSUFBSUMsS0FBVCxJQUFrQkosTUFBbEIsRUFBMEI7RUFDeEJHLE9BQU8sQ0FBQ0MsS0FBRCxDQUFQLEdBQWlCLE1BQU0sQ0FBRSxDQUF6QjtBQUNEOztBQU1ELFNBQVNDLFdBQVQsQ0FBcUJDLE1BQXJCLEVBQTZCO0VBQzNCLElBQUksQ0FBQ0EsTUFBTSxDQUFDQyxLQUFaLEVBQW1CO0lBQ2pCRCxNQUFNLENBQUNFLFFBQVAsQ0FBZ0IsT0FBaEIsRUFBeUIsSUFBekIsRUFBK0I7TUFBQ0MsRUFBRSxFQUFFLE1BQUw7TUFBYUMsRUFBRSxFQUFFO0lBQWpCLENBQS9CLEVBQTBELE1BQTFEO0VBQ0Q7QUFDRjs7QUFNRCxTQUFTQyxVQUFULEdBQXNCO0VBRXBCLE1BQU1DLFdBQVcsR0FBR0MsT0FBTyxDQUFDQyxHQUFSLENBQVlDLFFBQVosS0FBeUIsR0FBN0M7RUFDQSxNQUFNQyxZQUFZLEdBQUdILE9BQU8sQ0FBQ0MsR0FBUixDQUFZRyxXQUFaLEtBQTRCLEdBQWpEO0VBSUEsTUFBTUMsY0FBYyxHQUFHLENBQUMsQ0FBQ0MsTUFBTSxDQUFDQyxjQUFoQztFQUNBLElBQUlkLE1BQUo7O0VBQ0EsSUFBSU0sV0FBVyxJQUFJLENBQUNJLFlBQXBCLEVBQWtDO0lBRWhDVixNQUFNLEdBQUdILE9BQVQ7RUFDRCxDQUhELE1BR087SUFFTEcsTUFBTSxHQUFHYSxNQUFNLENBQUNDLGNBQVAsSUFBeUJDLGVBQWxDO0lBRUFmLE1BQU0sQ0FBQ2dCLGFBQVAsR0FBdUJyQixxQkFBdkI7RUFDRDs7RUFDREksV0FBVyxDQUFDQyxNQUFELENBQVg7RUFDQSxPQUFPLENBQUNBLE1BQUQsRUFBU1ksY0FBVCxDQUFQO0FBQ0Q7O0FBT0QsU0FBU0ssZUFBVCxDQUF5QkMsTUFBekIsRUFBaUNDLFlBQVksR0FBRyxLQUFoRCxFQUF1RDtFQUNyRCxNQUFNQyxNQUFNLEdBQUcsQ0FBQ0MsZUFBQSxDQUFFQyxVQUFGLENBQWFKLE1BQWIsSUFBdUJBLE1BQU0sRUFBN0IsR0FBa0NBLE1BQW5DLEtBQThDLEVBQTdEO0VBQ0EsT0FBT0MsWUFBWSxHQUFJLElBQUcsSUFBQUksZUFBQSxJQUFTQyxNQUFULENBQWdCNUIsdUJBQWhCLENBQXlDLEtBQUl3QixNQUFPLEVBQTNELEdBQStEQSxNQUFsRjtBQUNEOztBQU9ELFNBQVNLLFNBQVQsQ0FBbUJQLE1BQU0sR0FBRyxJQUE1QixFQUFrQztFQUNoQyxJQUFJLENBQUNsQixNQUFELEVBQVNZLGNBQVQsSUFBMkJQLFVBQVUsRUFBekM7O0VBR0EsSUFBSXFCLGFBQWEsR0FBRztJQUNsQkMsTUFBTSxFQUFFLE1BQU0zQixNQURJO0lBRWxCNEIsTUFBTSxFQUFFbEMsTUFGVTtJQUdsQndCO0VBSGtCLENBQXBCO0VBT0FXLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQkosYUFBdEIsRUFBcUMsT0FBckMsRUFBOEM7SUFDNUNLLEdBQUcsR0FBRztNQUNKLE9BQU8vQixNQUFNLENBQUNGLEtBQWQ7SUFDRCxDQUgyQzs7SUFJNUNrQyxHQUFHLENBQUNDLFFBQUQsRUFBVztNQUNaakMsTUFBTSxDQUFDRixLQUFQLEdBQWVtQyxRQUFmO0lBQ0QsQ0FOMkM7O0lBTzVDQyxVQUFVLEVBQUUsSUFQZ0M7SUFRNUNDLFlBQVksRUFBRTtFQVI4QixDQUE5QztFQVdBLE1BQU1oQixZQUFZLEdBQUdaLE9BQU8sQ0FBQ0MsR0FBUixDQUFZNEIsY0FBWixLQUErQixHQUFwRDs7RUFHQSxLQUFLLE1BQU10QyxLQUFYLElBQW9CSixNQUFwQixFQUE0QjtJQUMxQmdDLGFBQWEsQ0FBQzVCLEtBQUQsQ0FBYixHQUFtRCxVQUFVLEdBQUd1QyxJQUFiLEVBQW1CO01BQ3BFLE1BQU1DLFlBQVksR0FBR3JCLGVBQWUsQ0FBQyxLQUFLQyxNQUFOLEVBQWNDLFlBQWQsQ0FBcEM7O01BQ0EsS0FBSyxNQUFNb0IsR0FBWCxJQUFrQkYsSUFBbEIsRUFBd0I7UUFDdEIsTUFBTUcsR0FBRyxHQUFHbkIsZUFBQSxDQUFFb0IsT0FBRixDQUFVRixHQUFWLEtBQWtCQSxHQUFHLENBQUNHLEtBQXRCLEdBQThCSCxHQUFHLENBQUNHLEtBQWxDLEdBQTJDLEdBQUVILEdBQUksRUFBN0Q7O1FBQ0EsS0FBSyxNQUFNSSxJQUFYLElBQW1CSCxHQUFHLENBQUNJLEtBQUosQ0FBVSxJQUFWLENBQW5CLEVBQW9DO1VBR2xDLE1BQU1DLFlBQVksR0FBRyxJQUFBQyxrQkFBQSxFQUFhSCxJQUFiLENBQXJCO1VBQ0EzQyxNQUFNLENBQUNGLEtBQUQsQ0FBTixDQUFjd0MsWUFBZCxFQUE0QlMsb0JBQUEsQ0FBMkJDLFVBQTNCLENBQXNDSCxZQUF0QyxDQUE1QjtRQUNEO01BQ0Y7SUFDRixDQVhEO0VBWUQ7O0VBRURuQixhQUFhLENBQUN1QixhQUFkLEdBQThCLFVBQVVDLEdBQVYsRUFBZTtJQUMzQyxLQUFLQyxLQUFMLENBQVdELEdBQVg7SUFFQSxNQUFNN0IsZUFBQSxDQUFFb0IsT0FBRixDQUFVUyxHQUFWLElBQWlCQSxHQUFqQixHQUF1QixJQUFJRSxLQUFKLENBQVUsSUFBQU4sa0JBQUEsRUFBYUksR0FBYixDQUFWLENBQTdCO0VBQ0QsQ0FKRDs7RUFLQSxJQUFJLENBQUN0QyxjQUFMLEVBQXFCO0lBSW5CYyxhQUFhLENBQUM1QixLQUFkLEdBQXNCLFNBQXRCO0VBQ0Q7O0VBQ0QsT0FBb0M0QixhQUFwQztBQUNEOztBQXVCRCxlQUFlMkIsa0NBQWYsQ0FBa0RDLGFBQWxELEVBQWlFO0VBQy9ELE1BQU1DLE1BQU0sR0FBRyxNQUFNUixvQkFBQSxDQUEyQlMsU0FBM0IsQ0FBcUNGLGFBQXJDLENBQXJCO0VBQ0EsT0FBTztJQUNMQyxNQURLO0lBRUxFLEtBQUssRUFBRXBDLGVBQUEsQ0FBRXFDLFNBQUYsQ0FBWVgsb0JBQUEsQ0FBMkJVLEtBQXZDO0VBRkYsQ0FBUDtBQUlEOztBQUdELE1BQU1FLEdBQUcsR0FBR2xDLFNBQVMsRUFBckI7O2VBR2VrQyxHIn0=
128
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMRVZFTFMiLCJNQVhfTE9HX1JFQ09SRFNfQ09VTlQiLCJQUkVGSVhfVElNRVNUQU1QX0ZPUk1BVCIsIm1vY2tMb2ciLCJsZXZlbCIsInBhdGNoTG9nZ2VyIiwibG9nZ2VyIiwiZGVidWciLCJhZGRMZXZlbCIsImZnIiwiYmciLCJfZ2V0TG9nZ2VyIiwidGVzdGluZ01vZGUiLCJwcm9jZXNzIiwiZW52IiwiX1RFU1RJTkciLCJmb3JjZUxvZ01vZGUiLCJfRk9SQ0VfTE9HUyIsInVzaW5nR2xvYmFsTG9nIiwiZ2xvYmFsIiwiX2dsb2JhbF9ucG1sb2ciLCJucG1sb2ciLCJtYXhSZWNvcmRTaXplIiwiZ2V0QWN0dWFsUHJlZml4IiwicHJlZml4IiwibG9nVGltZXN0YW1wIiwicmVzdWx0IiwiXyIsImlzRnVuY3Rpb24iLCJtb21lbnQiLCJmb3JtYXQiLCJnZXRMb2dnZXIiLCJ3cmFwcGVkTG9nZ2VyIiwidW53cmFwIiwibGV2ZWxzIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJzZXQiLCJuZXdWYWx1ZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJfTE9HX1RJTUVTVEFNUCIsImFyZ3MiLCJhY3R1YWxQcmVmaXgiLCJhcmciLCJvdXQiLCJpc0Vycm9yIiwic3RhY2siLCJsaW5lIiwic3BsaXQiLCJ1bmxlYWtlZExpbmUiLCJ1bmxlYWtTdHJpbmciLCJTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUiIsInByZXByb2Nlc3MiLCJlcnJvckFuZFRocm93IiwiZXJyIiwiZXJyb3IiLCJFcnJvciIsImxvYWRTZWN1cmVWYWx1ZXNQcmVwcm9jZXNzaW5nUnVsZXMiLCJydWxlc0pzb25QYXRoIiwiaXNzdWVzIiwibG9hZFJ1bGVzIiwicnVsZXMiLCJjbG9uZURlZXAiLCJsb2ciXSwic291cmNlcyI6WyIuLi8uLi9saWIvbG9nZ2luZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IG5wbWxvZyBmcm9tICducG1sb2cnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7dW5sZWFrU3RyaW5nfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IFNFQ1VSRV9WQUxVRVNfUFJFUFJPQ0VTU09SIGZyb20gJy4vbG9nLWludGVybmFsJztcblxuLyoqIEB0eXBlIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5BcHBpdW1Mb2dnZXJMZXZlbFtdfSAqL1xuZXhwb3J0IGNvbnN0IExFVkVMUyA9IFsnc2lsbHknLCAndmVyYm9zZScsICdkZWJ1ZycsICdpbmZvJywgJ2h0dHAnLCAnd2FybicsICdlcnJvciddO1xuY29uc3QgTUFYX0xPR19SRUNPUkRTX0NPVU5UID0gMzAwMDtcblxuY29uc3QgUFJFRklYX1RJTUVTVEFNUF9GT1JNQVQgPSAnSEgtbW0tc3M6U1NTJztcblxuLy8gbW9jayBsb2cgb2JqZWN0IHVzZWQgaW4gdGVzdGluZyBtb2RlXG5sZXQgbW9ja0xvZyA9IHt9O1xuZm9yIChsZXQgbGV2ZWwgb2YgTEVWRUxTKSB7XG4gIG1vY2tMb2dbbGV2ZWxdID0gKCkgPT4ge307XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7aW1wb3J0KCducG1sb2cnKS5Mb2dnZXJ9IGxvZ2dlclxuICovXG5mdW5jdGlvbiBwYXRjaExvZ2dlcihsb2dnZXIpIHtcbiAgaWYgKCFsb2dnZXIuZGVidWcpIHtcbiAgICBsb2dnZXIuYWRkTGV2ZWwoJ2RlYnVnJywgMTAwMCwge2ZnOiAnYmx1ZScsIGJnOiAnYmxhY2snfSwgJ2RidWcnKTtcbiAgfVxufVxuXG4vKipcbiAqXG4gKiBAcmV0dXJucyB7W2ltcG9ydCgnbnBtbG9nJykuTG9nZ2VyLCBib29sZWFuXX1cbiAqL1xuZnVuY3Rpb24gX2dldExvZ2dlcigpIHtcbiAgLy8gY2hlY2sgaWYgdGhlIHVzZXIgc2V0IHRoZSBgX1RFU1RJTkdgIG9yIGBfRk9SQ0VfTE9HU2AgZmxhZ1xuICBjb25zdCB0ZXN0aW5nTW9kZSA9IHByb2Nlc3MuZW52Ll9URVNUSU5HID09PSAnMSc7XG4gIGNvbnN0IGZvcmNlTG9nTW9kZSA9IHByb2Nlc3MuZW52Ll9GT1JDRV9MT0dTID09PSAnMSc7XG5cbiAgLy8gaWYgaXMgcG9zc2libGUgdGhhdCB0aGVyZSBpcyBhIGxvZ2dlciBpbnN0YW5jZSB0aGF0IGlzIGFscmVhZHkgYXJvdW5kLFxuICAvLyBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdCBvIHVzZSB0aGF0XG4gIGNvbnN0IHVzaW5nR2xvYmFsTG9nID0gISFnbG9iYWwuX2dsb2JhbF9ucG1sb2c7XG4gIGxldCBsb2dnZXI7XG4gIGlmICh0ZXN0aW5nTW9kZSAmJiAhZm9yY2VMb2dNb2RlKSB7XG4gICAgLy8gaW4gdGVzdGluZyBtb2RlLCB1c2UgYSBtb2NrIGxvZ2dlciBvYmplY3QgdGhhdCB3ZSBjYW4gcXVlcnlcbiAgICBsb2dnZXIgPSBtb2NrTG9nO1xuICB9IGVsc2Uge1xuICAgIC8vIG90aGVyd2lzZSwgZWl0aGVyIHVzZSB0aGUgZ2xvYmFsLCBvciBhIG5ldyBgbnBtbG9nYCBvYmplY3RcbiAgICBsb2dnZXIgPSBnbG9iYWwuX2dsb2JhbF9ucG1sb2cgfHwgbnBtbG9nO1xuICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDEwMDAwLCB3aGljaCBjYXVzZXMgZXhjZXNzaXZlIG1lbW9yeSB1c2FnZVxuICAgIGxvZ2dlci5tYXhSZWNvcmRTaXplID0gTUFYX0xPR19SRUNPUkRTX0NPVU5UO1xuICB9XG4gIHBhdGNoTG9nZ2VyKGxvZ2dlcik7XG4gIHJldHVybiBbbG9nZ2VyLCB1c2luZ0dsb2JhbExvZ107XG59XG5cbi8qKlxuICogQHBhcmFtIHtBcHBpdW1Mb2dnZXJQcmVmaXg/fSBwcmVmaXhcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbG9nVGltZXN0YW1wIHdoZXRoZXIgdG8gaW5jbHVkZSB0aW1lc3RhbXBzIGludG8gbG9nIHByZWZpeGVzXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRBY3R1YWxQcmVmaXgocHJlZml4LCBsb2dUaW1lc3RhbXAgPSBmYWxzZSkge1xuICBjb25zdCByZXN1bHQgPSAoXy5pc0Z1bmN0aW9uKHByZWZpeCkgPyBwcmVmaXgoKSA6IHByZWZpeCkgPz8gJyc7XG4gIHJldHVybiBsb2dUaW1lc3RhbXAgPyBgWyR7bW9tZW50KCkuZm9ybWF0KFBSRUZJWF9USU1FU1RBTVBfRk9STUFUKX1dICR7cmVzdWx0fWAgOiByZXN1bHQ7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7QXBwaXVtTG9nZ2VyUHJlZml4P30gcHJlZml4XG4gKiBAcmV0dXJucyB7QXBwaXVtTG9nZ2VyfVxuICovXG5mdW5jdGlvbiBnZXRMb2dnZXIocHJlZml4ID0gbnVsbCkge1xuICBsZXQgW2xvZ2dlciwgdXNpbmdHbG9iYWxMb2ddID0gX2dldExvZ2dlcigpO1xuXG4gIC8vIHdyYXAgdGhlIGxvZ2dlciBzbyB0aGF0IHdlIGNhbiBjYXRjaCBhbmQgbW9kaWZ5IGFueSBsb2dnaW5nXG4gIGxldCB3cmFwcGVkTG9nZ2VyID0ge1xuICAgIHVud3JhcDogKCkgPT4gbG9nZ2VyLFxuICAgIGxldmVsczogTEVWRUxTLFxuICAgIHByZWZpeCxcbiAgfTtcblxuICAvLyBhbGxvdyBhY2Nlc3MgdG8gdGhlIGxldmVsIG9mIHRoZSB1bmRlcmx5aW5nIGxvZ2dlclxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkod3JhcHBlZExvZ2dlciwgJ2xldmVsJywge1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBsb2dnZXIubGV2ZWw7XG4gICAgfSxcbiAgICBzZXQobmV3VmFsdWUpIHtcbiAgICAgIGxvZ2dlci5sZXZlbCA9IG5ld1ZhbHVlO1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0IGxvZ1RpbWVzdGFtcCA9IHByb2Nlc3MuZW52Ll9MT0dfVElNRVNUQU1QID09PSAnMSc7XG5cbiAgLy8gYWRkIGFsbCB0aGUgbGV2ZWxzIGZyb20gYG5wbWxvZ2AsIGFuZCBtYXAgdG8gdGhlIHVuZGVybHlpbmcgbG9nZ2VyXG4gIGZvciAoY29uc3QgbGV2ZWwgb2YgTEVWRUxTKSB7XG4gICAgd3JhcHBlZExvZ2dlcltsZXZlbF0gPSAvKiogQHBhcmFtIHsuLi5hbnl9IGFyZ3MgKi8gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgIGNvbnN0IGFjdHVhbFByZWZpeCA9IGdldEFjdHVhbFByZWZpeCh0aGlzLnByZWZpeCwgbG9nVGltZXN0YW1wKTtcbiAgICAgIGZvciAoY29uc3QgYXJnIG9mIGFyZ3MpIHtcbiAgICAgICAgY29uc3Qgb3V0ID0gXy5pc0Vycm9yKGFyZykgJiYgYXJnLnN0YWNrID8gYXJnLnN0YWNrIDogYCR7YXJnfWA7XG4gICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBvdXQuc3BsaXQoJ1xcbicpKSB7XG4gICAgICAgICAgLy8gaXQgaXMgbmVjZXNzYXJ5IHRvIHVubGVhayBlYWNoIGxpbmUgYmVjYXVzZSBgc3BsaXRgIGNhbGxcbiAgICAgICAgICAvLyBjcmVhdGVzIFwidmlld3NcIiB0byB0aGUgb3JpZ2luYWwgc3RyaW5nIGFzIHdlbGwgYXMgdGhlIGBzdWJzdHJpbmdgIG9uZVxuICAgICAgICAgIGNvbnN0IHVubGVha2VkTGluZSA9IHVubGVha1N0cmluZyhsaW5lKTtcbiAgICAgICAgICBsb2dnZXJbbGV2ZWxdKGFjdHVhbFByZWZpeCwgU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1IucHJlcHJvY2Vzcyh1bmxlYWtlZExpbmUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbiAgLy8gYWRkIG1ldGhvZCB0byBsb2cgYW4gZXJyb3IsIGFuZCB0aHJvdyBpdCwgZm9yIGNvbnZlbmllbmNlXG4gIHdyYXBwZWRMb2dnZXIuZXJyb3JBbmRUaHJvdyA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICB0aGlzLmVycm9yKGVycik7XG4gICAgLy8gbWFrZSBzdXJlIHdlIGhhdmUgYW4gYEVycm9yYCBvYmplY3QuIFdyYXAgaWYgbmVjZXNzYXJ5XG4gICAgdGhyb3cgXy5pc0Vycm9yKGVycikgPyBlcnIgOiBuZXcgRXJyb3IodW5sZWFrU3RyaW5nKGVycikpO1xuICB9O1xuICBpZiAoIXVzaW5nR2xvYmFsTG9nKSB7XG4gICAgLy8gaWYgd2UncmUgbm90IHVzaW5nIGEgZ2xvYmFsIGxvZyBzcGVjaWZpZWQgZnJvbSBzb21lIHRvcC1sZXZlbCBwYWNrYWdlLFxuICAgIC8vIHNldCB0aGUgbG9nIGxldmVsIHRvIGEgZGVmYXVsdCBvZiB2ZXJib3NlLiBPdGhlcndpc2UsIGxldCB0aGUgdG9wLWxldmVsXG4gICAgLy8gcGFja2FnZSBzZXQgdGhlIGxvZyBsZXZlbFxuICAgIHdyYXBwZWRMb2dnZXIubGV2ZWwgPSAndmVyYm9zZSc7XG4gIH1cbiAgcmV0dXJuIC8qKiBAdHlwZSB7QXBwaXVtTG9nZ2VyfSAqLyAod3JhcHBlZExvZ2dlcik7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgTG9hZFJlc3VsdFxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gaXNzdWVzIFRoZSBsaXN0IG9mIHJ1bGUgcGFyc2luZyBpc3N1ZXMgKG9uZSBpdGVtIHBlciBydWxlKS5cbiAqIFJ1bGVzIHdpdGggaXNzdWVzIGFyZSBza2lwcGVkLiBBbiBlbXB0eSBsaXN0IGlzIHJldHVybmVkIGlmIG5vIHBhcnNpbmcgaXNzdWVzIGV4aXN0LlxuICogQHByb3BlcnR5IHtpbXBvcnQoJy4vbG9nLWludGVybmFsJykuU2VjdXJlVmFsdWVQcmVwcm9jZXNzaW5nUnVsZVtdfSBydWxlcyBUaGUgbGlzdCBvZiBzdWNjZXNzZnVsbHkgbG9hZGVkXG4gKiByZXBsYWNlbWVudCBydWxlcy4gVGhlIGxpc3QgY291bGQgYmUgZW1wdHkgaWYgbm8gcnVsZXMgd2VyZSBsb2FkZWQuXG4gKi9cblxuLyoqXG4gKiBMb2FkcyB0aGUgSlNPTiBmaWxlIGNvbnRhaW5pbmcgc2VjdXJlIHZhbHVlcyByZXBsYWNlbWVudCBydWxlcy5cbiAqIFRoaXMgbWlnaHQgYmUgbmVjZXNzYXJ5IHRvIGhpZGUgc2Vuc2l0aXZlIHZhbHVlcyB0aGF0IG1heSBwb3NzaWJseVxuICogYXBwZWFyIGluIEFwcGl1bSBsb2dzLlxuICogRWFjaCBjYWxsIHRvIHRoaXMgbWV0aG9kIHJlcGxhY2VzIHRoZSBwcmV2aW91c2x5IGxvYWRlZCBydWxlcyBpZiBhbnkgZXhpc3RlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXXxpbXBvcnQoJy4vbG9nLWludGVybmFsJykuUnVsZVtdfSBydWxlc0pzb25QYXRoIFRoZSBmdWxsIHBhdGggdG8gdGhlIEpTT04gZmlsZSBjb250YWluaW5nXG4gKiB0aGUgcmVwbGFjZW1lbnQgcnVsZXMuIEVhY2ggcnVsZSBjb3VsZCBlaXRoZXIgYmUgYSBzdHJpbmcgdG8gYmUgcmVwbGFjZWRcbiAqIG9yIGFuIG9iamVjdCB3aXRoIHByZWRlZmluZWQgcHJvcGVydGllcy4gU2VlIHRoZSBgUnVsZWAgdHlwZSBkZWZpbml0aW9uIGluXG4gKiBgbG9nLWludGVybmFscy5qc2AgdG8gZ2V0IG1vcmUgZGV0YWlscyBvbiBpdHMgZm9ybWF0LlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBnaXZlbiBmaWxlIGNhbm5vdCBiZSBsb2FkZWRcbiAqIEByZXR1cm5zIHtQcm9taXNlPExvYWRSZXN1bHQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc2luZ1J1bGVzKHJ1bGVzSnNvblBhdGgpIHtcbiAgY29uc3QgaXNzdWVzID0gYXdhaXQgU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1IubG9hZFJ1bGVzKHJ1bGVzSnNvblBhdGgpO1xuICByZXR1cm4ge1xuICAgIGlzc3VlcyxcbiAgICBydWxlczogXy5jbG9uZURlZXAoU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1IucnVsZXMpLFxuICB9O1xufVxuXG4vLyBleHBvcnQgYSBkZWZhdWx0IGxvZ2dlciB3aXRoIG5vIHByZWZpeFxuY29uc3QgbG9nID0gZ2V0TG9nZ2VyKCk7XG5cbmV4cG9ydCB7bG9nLCBwYXRjaExvZ2dlciwgZ2V0TG9nZ2VyLCBsb2FkU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc2luZ1J1bGVzfTtcbmV4cG9ydCBkZWZhdWx0IGxvZztcblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQXBwaXVtTG9nZ2VyUHJlZml4fSBBcHBpdW1Mb2dnZXJQcmVmaXhcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5BcHBpdW1Mb2dnZXJ9IEFwcGl1bUxvZ2dlclxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkFwcGl1bUxvZ2dlckxldmVsfSBBcHBpdW1Mb2dnZXJMZXZlbFxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUdPLE1BQU1BLE1BQU0sR0FBRyxDQUFDLE9BQUQsRUFBVSxTQUFWLEVBQXFCLE9BQXJCLEVBQThCLE1BQTlCLEVBQXNDLE1BQXRDLEVBQThDLE1BQTlDLEVBQXNELE9BQXRELENBQWY7O0FBQ1AsTUFBTUMscUJBQXFCLEdBQUcsSUFBOUI7QUFFQSxNQUFNQyx1QkFBdUIsR0FBRyxjQUFoQztBQUdBLElBQUlDLE9BQU8sR0FBRyxFQUFkOztBQUNBLEtBQUssSUFBSUMsS0FBVCxJQUFrQkosTUFBbEIsRUFBMEI7RUFDeEJHLE9BQU8sQ0FBQ0MsS0FBRCxDQUFQLEdBQWlCLE1BQU0sQ0FBRSxDQUF6QjtBQUNEOztBQU1ELFNBQVNDLFdBQVQsQ0FBcUJDLE1BQXJCLEVBQTZCO0VBQzNCLElBQUksQ0FBQ0EsTUFBTSxDQUFDQyxLQUFaLEVBQW1CO0lBQ2pCRCxNQUFNLENBQUNFLFFBQVAsQ0FBZ0IsT0FBaEIsRUFBeUIsSUFBekIsRUFBK0I7TUFBQ0MsRUFBRSxFQUFFLE1BQUw7TUFBYUMsRUFBRSxFQUFFO0lBQWpCLENBQS9CLEVBQTBELE1BQTFEO0VBQ0Q7QUFDRjs7QUFNRCxTQUFTQyxVQUFULEdBQXNCO0VBRXBCLE1BQU1DLFdBQVcsR0FBR0MsT0FBTyxDQUFDQyxHQUFSLENBQVlDLFFBQVosS0FBeUIsR0FBN0M7RUFDQSxNQUFNQyxZQUFZLEdBQUdILE9BQU8sQ0FBQ0MsR0FBUixDQUFZRyxXQUFaLEtBQTRCLEdBQWpEO0VBSUEsTUFBTUMsY0FBYyxHQUFHLENBQUMsQ0FBQ0MsTUFBTSxDQUFDQyxjQUFoQztFQUNBLElBQUlkLE1BQUo7O0VBQ0EsSUFBSU0sV0FBVyxJQUFJLENBQUNJLFlBQXBCLEVBQWtDO0lBRWhDVixNQUFNLEdBQUdILE9BQVQ7RUFDRCxDQUhELE1BR087SUFFTEcsTUFBTSxHQUFHYSxNQUFNLENBQUNDLGNBQVAsSUFBeUJDLGVBQWxDO0lBRUFmLE1BQU0sQ0FBQ2dCLGFBQVAsR0FBdUJyQixxQkFBdkI7RUFDRDs7RUFDREksV0FBVyxDQUFDQyxNQUFELENBQVg7RUFDQSxPQUFPLENBQUNBLE1BQUQsRUFBU1ksY0FBVCxDQUFQO0FBQ0Q7O0FBT0QsU0FBU0ssZUFBVCxDQUF5QkMsTUFBekIsRUFBaUNDLFlBQVksR0FBRyxLQUFoRCxFQUF1RDtFQUNyRCxNQUFNQyxNQUFNLEdBQUcsQ0FBQ0MsZUFBQSxDQUFFQyxVQUFGLENBQWFKLE1BQWIsSUFBdUJBLE1BQU0sRUFBN0IsR0FBa0NBLE1BQW5DLEtBQThDLEVBQTdEO0VBQ0EsT0FBT0MsWUFBWSxHQUFJLElBQUcsSUFBQUksZUFBQSxJQUFTQyxNQUFULENBQWdCNUIsdUJBQWhCLENBQXlDLEtBQUl3QixNQUFPLEVBQTNELEdBQStEQSxNQUFsRjtBQUNEOztBQU9ELFNBQVNLLFNBQVQsQ0FBbUJQLE1BQU0sR0FBRyxJQUE1QixFQUFrQztFQUNoQyxJQUFJLENBQUNsQixNQUFELEVBQVNZLGNBQVQsSUFBMkJQLFVBQVUsRUFBekM7O0VBR0EsSUFBSXFCLGFBQWEsR0FBRztJQUNsQkMsTUFBTSxFQUFFLE1BQU0zQixNQURJO0lBRWxCNEIsTUFBTSxFQUFFbEMsTUFGVTtJQUdsQndCO0VBSGtCLENBQXBCO0VBT0FXLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQkosYUFBdEIsRUFBcUMsT0FBckMsRUFBOEM7SUFDNUNLLEdBQUcsR0FBRztNQUNKLE9BQU8vQixNQUFNLENBQUNGLEtBQWQ7SUFDRCxDQUgyQzs7SUFJNUNrQyxHQUFHLENBQUNDLFFBQUQsRUFBVztNQUNaakMsTUFBTSxDQUFDRixLQUFQLEdBQWVtQyxRQUFmO0lBQ0QsQ0FOMkM7O0lBTzVDQyxVQUFVLEVBQUUsSUFQZ0M7SUFRNUNDLFlBQVksRUFBRTtFQVI4QixDQUE5QztFQVdBLE1BQU1oQixZQUFZLEdBQUdaLE9BQU8sQ0FBQ0MsR0FBUixDQUFZNEIsY0FBWixLQUErQixHQUFwRDs7RUFHQSxLQUFLLE1BQU10QyxLQUFYLElBQW9CSixNQUFwQixFQUE0QjtJQUMxQmdDLGFBQWEsQ0FBQzVCLEtBQUQsQ0FBYixHQUFtRCxVQUFVLEdBQUd1QyxJQUFiLEVBQW1CO01BQ3BFLE1BQU1DLFlBQVksR0FBR3JCLGVBQWUsQ0FBQyxLQUFLQyxNQUFOLEVBQWNDLFlBQWQsQ0FBcEM7O01BQ0EsS0FBSyxNQUFNb0IsR0FBWCxJQUFrQkYsSUFBbEIsRUFBd0I7UUFDdEIsTUFBTUcsR0FBRyxHQUFHbkIsZUFBQSxDQUFFb0IsT0FBRixDQUFVRixHQUFWLEtBQWtCQSxHQUFHLENBQUNHLEtBQXRCLEdBQThCSCxHQUFHLENBQUNHLEtBQWxDLEdBQTJDLEdBQUVILEdBQUksRUFBN0Q7O1FBQ0EsS0FBSyxNQUFNSSxJQUFYLElBQW1CSCxHQUFHLENBQUNJLEtBQUosQ0FBVSxJQUFWLENBQW5CLEVBQW9DO1VBR2xDLE1BQU1DLFlBQVksR0FBRyxJQUFBQyxrQkFBQSxFQUFhSCxJQUFiLENBQXJCO1VBQ0EzQyxNQUFNLENBQUNGLEtBQUQsQ0FBTixDQUFjd0MsWUFBZCxFQUE0QlMsb0JBQUEsQ0FBMkJDLFVBQTNCLENBQXNDSCxZQUF0QyxDQUE1QjtRQUNEO01BQ0Y7SUFDRixDQVhEO0VBWUQ7O0VBRURuQixhQUFhLENBQUN1QixhQUFkLEdBQThCLFVBQVVDLEdBQVYsRUFBZTtJQUMzQyxLQUFLQyxLQUFMLENBQVdELEdBQVg7SUFFQSxNQUFNN0IsZUFBQSxDQUFFb0IsT0FBRixDQUFVUyxHQUFWLElBQWlCQSxHQUFqQixHQUF1QixJQUFJRSxLQUFKLENBQVUsSUFBQU4sa0JBQUEsRUFBYUksR0FBYixDQUFWLENBQTdCO0VBQ0QsQ0FKRDs7RUFLQSxJQUFJLENBQUN0QyxjQUFMLEVBQXFCO0lBSW5CYyxhQUFhLENBQUM1QixLQUFkLEdBQXNCLFNBQXRCO0VBQ0Q7O0VBQ0QsT0FBb0M0QixhQUFwQztBQUNEOztBQXVCRCxlQUFlMkIsa0NBQWYsQ0FBa0RDLGFBQWxELEVBQWlFO0VBQy9ELE1BQU1DLE1BQU0sR0FBRyxNQUFNUixvQkFBQSxDQUEyQlMsU0FBM0IsQ0FBcUNGLGFBQXJDLENBQXJCO0VBQ0EsT0FBTztJQUNMQyxNQURLO0lBRUxFLEtBQUssRUFBRXBDLGVBQUEsQ0FBRXFDLFNBQUYsQ0FBWVgsb0JBQUEsQ0FBMkJVLEtBQXZDO0VBRkYsQ0FBUDtBQUlEOztBQUdELE1BQU1FLEdBQUcsR0FBR2xDLFNBQVMsRUFBckI7O2VBR2VrQyxHIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","names":["LEVELS","MAX_LOG_RECORDS_COUNT","PREFIX_TIMESTAMP_FORMAT","mockLog","level","patchLogger","logger","debug","addLevel","fg","bg","_getLogger","testingMode","process","env","_TESTING","forceLogMode","_FORCE_LOGS","usingGlobalLog","global","_global_npmlog","npmlog","maxRecordSize","getActualPrefix","prefix","logTimestamp","result","_","isFunction","moment","format","getLogger","wrappedLogger","unwrap","levels","Object","defineProperty","get","set","newValue","enumerable","configurable","_LOG_TIMESTAMP","args","actualPrefix","arg","out","isError","stack","line","split","unleakedLine","unleakString","SECURE_VALUES_PREPROCESSOR","preprocess","errorAndThrow","err","error","Error","loadSecureValuesPreprocessingRules","rulesJsonPath","issues","loadRules","rules","cloneDeep","log"],"sources":["../../lib/logging.js"],"sourcesContent":["// @ts-check\n\nimport npmlog from 'npmlog';\nimport _ from 'lodash';\nimport {unleakString} from './util';\nimport moment from 'moment';\nimport SECURE_VALUES_PREPROCESSOR from './log-internal';\n\n/** @type {import('@appium/types').AppiumLoggerLevel[]} */\nexport const LEVELS = ['silly', 'verbose', 'debug', 'info', 'http', 'warn', 'error'];\nconst MAX_LOG_RECORDS_COUNT = 3000;\n\nconst PREFIX_TIMESTAMP_FORMAT = 'HH-mm-ss:SSS';\n\n// mock log object used in testing mode\nlet mockLog = {};\nfor (let level of LEVELS) {\n mockLog[level] = () => {};\n}\n\n/**\n *\n * @param {import('npmlog').Logger} logger\n */\nfunction patchLogger(logger) {\n if (!logger.debug) {\n logger.addLevel('debug', 1000, {fg: 'blue', bg: 'black'}, 'dbug');\n }\n}\n\n/**\n *\n * @returns {[import('npmlog').Logger, boolean]}\n */\nfunction _getLogger() {\n // check if the user set the `_TESTING` or `_FORCE_LOGS` flag\n const testingMode = process.env._TESTING === '1';\n const forceLogMode = process.env._FORCE_LOGS === '1';\n\n // if is possible that there is a logger instance that is already around,\n // in which case we want t o use that\n const usingGlobalLog = !!global._global_npmlog;\n let logger;\n if (testingMode && !forceLogMode) {\n // in testing mode, use a mock logger object that we can query\n logger = mockLog;\n } else {\n // otherwise, either use the global, or a new `npmlog` object\n logger = global._global_npmlog || npmlog;\n // The default value is 10000, which causes excessive memory usage\n logger.maxRecordSize = MAX_LOG_RECORDS_COUNT;\n }\n patchLogger(logger);\n return [logger, usingGlobalLog];\n}\n\n/**\n * @param {AppiumLoggerPrefix?} prefix\n * @param {boolean} logTimestamp whether to include timestamps into log prefixes\n * @returns {string}\n */\nfunction getActualPrefix(prefix, logTimestamp = false) {\n const result = (_.isFunction(prefix) ? prefix() : prefix) ?? '';\n return logTimestamp ? `[${moment().format(PREFIX_TIMESTAMP_FORMAT)}] ${result}` : result;\n}\n\n/**\n *\n * @param {AppiumLoggerPrefix?} prefix\n * @returns {AppiumLogger}\n */\nfunction getLogger(prefix = null) {\n let [logger, usingGlobalLog] = _getLogger();\n\n // wrap the logger so that we can catch and modify any logging\n let wrappedLogger = {\n unwrap: () => logger,\n levels: LEVELS,\n prefix,\n };\n\n // allow access to the level of the underlying logger\n Object.defineProperty(wrappedLogger, 'level', {\n get() {\n return logger.level;\n },\n set(newValue) {\n logger.level = newValue;\n },\n enumerable: true,\n configurable: true,\n });\n\n const logTimestamp = process.env._LOG_TIMESTAMP === '1';\n\n // add all the levels from `npmlog`, and map to the underlying logger\n for (const level of LEVELS) {\n wrappedLogger[level] = /** @param {...any} args */ function (...args) {\n const actualPrefix = getActualPrefix(this.prefix, logTimestamp);\n for (const arg of args) {\n const out = _.isError(arg) && arg.stack ? arg.stack : `${arg}`;\n for (const line of out.split('\\n')) {\n // it is necessary to unleak each line because `split` call\n // creates \"views\" to the original string as well as the `substring` one\n const unleakedLine = unleakString(line);\n logger[level](actualPrefix, SECURE_VALUES_PREPROCESSOR.preprocess(unleakedLine));\n }\n }\n };\n }\n // add method to log an error, and throw it, for convenience\n wrappedLogger.errorAndThrow = function (err) {\n this.error(err);\n // make sure we have an `Error` object. Wrap if necessary\n throw _.isError(err) ? err : new Error(unleakString(err));\n };\n if (!usingGlobalLog) {\n // if we're not using a global log specified from some top-level package,\n // set the log level to a default of verbose. Otherwise, let the top-level\n // package set the log level\n wrappedLogger.level = 'verbose';\n }\n return /** @type {AppiumLogger} */ (wrappedLogger);\n}\n\n/**\n * @typedef LoadResult\n * @property {string[]} issues The list of rule parsing issues (one item per rule).\n * Rules with issues are skipped. An empty list is returned if no parsing issues exist.\n * @property {import('./log-internal').SecureValuePreprocessingRule[]} rules The list of successfully loaded\n * replacement rules. The list could be empty if no rules were loaded.\n */\n\n/**\n * Loads the JSON file containing secure values replacement rules.\n * This might be necessary to hide sensitive values that may possibly\n * appear in Appium logs.\n * Each call to this method replaces the previously loaded rules if any existed.\n *\n * @param {string|string[]|import('./log-internal').Rule[]} rulesJsonPath The full path to the JSON file containing\n * the replacement rules. Each rule could either be a string to be replaced\n * or an object with predefined properties. See the `Rule` type definition in\n * `log-internals.js` to get more details on its format.\n * @throws {Error} If the given file cannot be loaded\n * @returns {Promise<LoadResult>}\n */\nasync function loadSecureValuesPreprocessingRules(rulesJsonPath) {\n const issues = await SECURE_VALUES_PREPROCESSOR.loadRules(rulesJsonPath);\n return {\n issues,\n rules: _.cloneDeep(SECURE_VALUES_PREPROCESSOR.rules),\n };\n}\n\n// export a default logger with no prefix\nconst log = getLogger();\n\nexport {log, patchLogger, getLogger, loadSecureValuesPreprocessingRules};\nexport default log;\n\n/**\n * @typedef {import('@appium/types').AppiumLoggerPrefix} AppiumLoggerPrefix\n * @typedef {import('@appium/types').AppiumLogger} AppiumLogger\n * @typedef {import('@appium/types').AppiumLoggerLevel} AppiumLoggerLevel\n */\n"],"mappings":"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"}