appium 2.0.0-beta.21 → 2.0.0-beta.22

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 (75) hide show
  1. package/LICENSE +201 -0
  2. package/build/check-npm-pack-files.js +23 -0
  3. package/build/commands-yml/parse.js +319 -0
  4. package/build/commands-yml/validator.js +130 -0
  5. package/build/index.js +19 -0
  6. package/build/lib/cli/parser.js +6 -2
  7. package/build/lib/config.js +1 -28
  8. package/build/lib/main.js +1 -1
  9. package/build/lib/plugin-config.js +2 -2
  10. package/build/lib/schema/appium-config-schema.js +3 -2
  11. package/build/lib/schema/arg-spec.js +1 -1
  12. package/build/lib/schema/cli-args.js +20 -5
  13. package/build/lib/schema/keywords.js +14 -4
  14. package/build/postinstall.js +90 -0
  15. package/build/test/cli/cli-e2e-specs.js +221 -0
  16. package/build/test/cli/cli-helpers.js +86 -0
  17. package/build/test/cli/cli-specs.js +71 -0
  18. package/build/test/cli/fixtures/test-driver/package.json +27 -0
  19. package/build/test/cli/schema-args-specs.js +48 -0
  20. package/build/test/cli/schema-e2e-specs.js +47 -0
  21. package/build/test/config-e2e-specs.js +112 -0
  22. package/build/test/config-file-e2e-specs.js +209 -0
  23. package/build/test/config-file-specs.js +281 -0
  24. package/build/test/config-specs.js +159 -0
  25. package/build/test/driver-e2e-specs.js +435 -0
  26. package/build/test/driver-specs.js +321 -0
  27. package/build/test/ext-config-io-specs.js +181 -0
  28. package/build/test/extension-config-specs.js +365 -0
  29. package/build/test/fixtures/allow-feat.txt +5 -0
  30. package/build/test/fixtures/caps.json +3 -0
  31. package/build/test/fixtures/config/allow-insecure.txt +3 -0
  32. package/build/test/fixtures/config/appium.config.bad-nodeconfig.json +5 -0
  33. package/build/test/fixtures/config/appium.config.bad.json +32 -0
  34. package/build/test/fixtures/config/appium.config.ext-good.json +9 -0
  35. package/build/test/fixtures/config/appium.config.ext-unknown-props.json +10 -0
  36. package/build/test/fixtures/config/appium.config.good.js +40 -0
  37. package/build/test/fixtures/config/appium.config.good.json +33 -0
  38. package/build/test/fixtures/config/appium.config.good.yaml +30 -0
  39. package/build/test/fixtures/config/appium.config.invalid.json +31 -0
  40. package/build/test/fixtures/config/appium.config.security-array.json +5 -0
  41. package/build/test/fixtures/config/appium.config.security-delimited.json +5 -0
  42. package/build/test/fixtures/config/appium.config.security-path.json +5 -0
  43. package/build/test/fixtures/config/driver-fake.config.json +8 -0
  44. package/build/test/fixtures/config/nodeconfig.json +3 -0
  45. package/build/test/fixtures/config/plugin-fake.config.json +0 -0
  46. package/build/test/fixtures/default-args.js +35 -0
  47. package/build/test/fixtures/deny-feat.txt +5 -0
  48. package/build/test/fixtures/driver.schema.js +20 -0
  49. package/build/test/fixtures/extensions.yaml +27 -0
  50. package/build/test/fixtures/flattened-schema.js +504 -0
  51. package/build/test/fixtures/plugin.schema.js +20 -0
  52. package/build/test/fixtures/schema-with-extensions.js +28 -0
  53. package/build/test/grid-register-specs.js +74 -0
  54. package/build/test/helpers.js +75 -0
  55. package/build/test/logger-specs.js +76 -0
  56. package/build/test/npm-specs.js +20 -0
  57. package/build/test/parser-specs.js +314 -0
  58. package/build/test/plugin-e2e-specs.js +316 -0
  59. package/build/test/schema/arg-spec-specs.js +70 -0
  60. package/build/test/schema/cli-args-specs.js +431 -0
  61. package/build/test/schema/schema-specs.js +389 -0
  62. package/build/test/utils-specs.js +266 -0
  63. package/index.js +11 -0
  64. package/lib/appium-config.schema.json +2 -1
  65. package/lib/cli/parser.js +4 -1
  66. package/lib/config.js +1 -27
  67. package/lib/main.js +6 -3
  68. package/lib/plugin-config.js +1 -1
  69. package/lib/schema/appium-config-schema.js +1 -0
  70. package/lib/schema/arg-spec.js +4 -0
  71. package/lib/schema/cli-args.js +16 -4
  72. package/lib/schema/keywords.js +20 -4
  73. package/package.json +9 -14
  74. package/build/lib/cli/argparse-actions.js +0 -104
  75. package/lib/cli/argparse-actions.js +0 -77
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.validator = exports.default = exports.CLIENT_URL_TYPES = void 0;
9
+
10
+ require("source-map-support/register");
11
+
12
+ var _validate = _interopRequireDefault(require("validate.js"));
13
+
14
+ var _lodash = _interopRequireDefault(require("lodash"));
15
+
16
+ _validate.default.validators.array = function array(value, options, key, attributes) {
17
+ if (attributes[key] && !_validate.default.isArray(attributes[key])) {
18
+ return `must be an array`;
19
+ }
20
+ };
21
+
22
+ _validate.default.validators.hasAttributes = function hasAttributes(value, options) {
23
+ if (!value) {
24
+ return;
25
+ }
26
+
27
+ if (!_lodash.default.isArray(value)) {
28
+ value = [value];
29
+ }
30
+
31
+ for (const item of value) {
32
+ for (const option of options) {
33
+ if (_lodash.default.isUndefined(item[option])) {
34
+ return `must have attributes: ${options}`;
35
+ }
36
+ }
37
+ }
38
+ };
39
+
40
+ _validate.default.validators.hasPossibleAttributes = function hasPossibleAttributes(value, options) {
41
+ if (!value) {
42
+ return;
43
+ }
44
+
45
+ if (!_lodash.default.isArray(value)) {
46
+ return;
47
+ }
48
+
49
+ for (const item of value) {
50
+ for (const key of _lodash.default.keys(item)) {
51
+ if (!options.includes(key)) {
52
+ return `must not include '${key}'. Available options: ${options}`;
53
+ }
54
+ }
55
+ }
56
+ };
57
+
58
+ const CLIENT_URL_TYPES = {
59
+ url: 'hostname',
60
+ android: 'Android',
61
+ ios: 'iOS'
62
+ };
63
+ exports.CLIENT_URL_TYPES = CLIENT_URL_TYPES;
64
+ const validator = {
65
+ 'name': {
66
+ presence: true
67
+ },
68
+ 'short_description': {
69
+ presence: true
70
+ },
71
+ 'example_usage': {},
72
+ 'example_usage.java': {},
73
+ 'example_usage.javascript_wdio': {},
74
+ 'example_usage.javascript_wd': {},
75
+ 'example_usage.ruby': {},
76
+ 'example_usage.ruby_core': {},
77
+ 'example_usage.csharp': {},
78
+ 'description': {},
79
+ 'client_docs.java': {
80
+ hasPossibleAttributes: _lodash.default.keys(CLIENT_URL_TYPES)
81
+ },
82
+ 'client_docs.javascript_wdio': {
83
+ hasPossibleAttributes: _lodash.default.keys(CLIENT_URL_TYPES)
84
+ },
85
+ 'client_docs.javascript_wd': {
86
+ hasPossibleAttributes: _lodash.default.keys(CLIENT_URL_TYPES)
87
+ },
88
+ 'client_docs.ruby': {
89
+ hasPossibleAttributes: _lodash.default.keys(CLIENT_URL_TYPES)
90
+ },
91
+ 'client_docs.ruby_core': {
92
+ hasPossibleAttributes: _lodash.default.keys(CLIENT_URL_TYPES)
93
+ },
94
+ 'client_docs.csharp': {
95
+ hasPossibleAttributes: _lodash.default.keys(CLIENT_URL_TYPES)
96
+ },
97
+ 'endpoint': {
98
+ presence: true
99
+ },
100
+ 'driver_support': {
101
+ presence: true
102
+ },
103
+ 'endpoint.url': {
104
+ presence: true
105
+ },
106
+ 'endpoint.url_parameters': {
107
+ array: true,
108
+ hasAttributes: ['name', 'description']
109
+ },
110
+ 'endpoint.json_parameters': {
111
+ array: true,
112
+ hasAttributes: ['name', 'description']
113
+ },
114
+ 'endpoint.response': {
115
+ hasAttributes: ['type', 'description']
116
+ },
117
+ 'specifications': {
118
+ presence: true
119
+ },
120
+ 'links': {
121
+ array: true,
122
+ hasAttributes: ['name', 'url']
123
+ }
124
+ };
125
+ exports.validator = validator;
126
+ var _default = validator;
127
+ exports.default = _default;require('source-map-support').install();
128
+
129
+
130
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1hbmRzLXltbC92YWxpZGF0b3IuanMiXSwibmFtZXMiOlsidmFsaWRhdGUiLCJ2YWxpZGF0b3JzIiwiYXJyYXkiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJrZXkiLCJhdHRyaWJ1dGVzIiwiaXNBcnJheSIsImhhc0F0dHJpYnV0ZXMiLCJfIiwiaXRlbSIsIm9wdGlvbiIsImlzVW5kZWZpbmVkIiwiaGFzUG9zc2libGVBdHRyaWJ1dGVzIiwia2V5cyIsImluY2x1ZGVzIiwiQ0xJRU5UX1VSTF9UWVBFUyIsInVybCIsImFuZHJvaWQiLCJpb3MiLCJ2YWxpZGF0b3IiLCJwcmVzZW5jZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQUEsa0JBQVNDLFVBQVQsQ0FBb0JDLEtBQXBCLEdBQTRCLFNBQVNBLEtBQVQsQ0FBZ0JDLEtBQWhCLEVBQXVCQyxPQUF2QixFQUFnQ0MsR0FBaEMsRUFBcUNDLFVBQXJDLEVBQWlEO0FBQzNFLE1BQUlBLFVBQVUsQ0FBQ0QsR0FBRCxDQUFWLElBQW1CLENBQUNMLGtCQUFTTyxPQUFULENBQWlCRCxVQUFVLENBQUNELEdBQUQsQ0FBM0IsQ0FBeEIsRUFBMkQ7QUFDekQsV0FBUSxrQkFBUjtBQUNEO0FBQ0YsQ0FKRDs7QUFNQUwsa0JBQVNDLFVBQVQsQ0FBb0JPLGFBQXBCLEdBQW9DLFNBQVNBLGFBQVQsQ0FBd0JMLEtBQXhCLEVBQStCQyxPQUEvQixFQUF3QztBQUMxRSxNQUFJLENBQUNELEtBQUwsRUFBWTtBQUNWO0FBQ0Q7O0FBRUQsTUFBSSxDQUFDTSxnQkFBRUYsT0FBRixDQUFVSixLQUFWLENBQUwsRUFBdUI7QUFDckJBLElBQUFBLEtBQUssR0FBRyxDQUFDQSxLQUFELENBQVI7QUFDRDs7QUFFRCxPQUFLLE1BQU1PLElBQVgsSUFBbUJQLEtBQW5CLEVBQTBCO0FBQ3hCLFNBQUssTUFBTVEsTUFBWCxJQUFxQlAsT0FBckIsRUFBOEI7QUFDNUIsVUFBSUssZ0JBQUVHLFdBQUYsQ0FBY0YsSUFBSSxD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QUFBQSxhQUFhLEVBQUUsQ0FBQyxNQUFELEVBQVMsS0FBVDtBQUE3QjtBQXhCTyxDQUFsQjs7ZUE2QmVZLFMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdmFsaWRhdGUgZnJvbSAndmFsaWRhdGUuanMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuXG52YWxpZGF0ZS52YWxpZGF0b3JzLmFycmF5ID0gZnVuY3Rpb24gYXJyYXkgKHZhbHVlLCBvcHRpb25zLCBrZXksIGF0dHJpYnV0ZXMpIHtcbiAgaWYgKGF0dHJpYnV0ZXNba2V5XSAmJiAhdmFsaWRhdGUuaXNBcnJheShhdHRyaWJ1dGVzW2tleV0pKSB7XG4gICAgcmV0dXJuIGBtdXN0IGJlIGFuIGFycmF5YDtcbiAgfVxufTtcblxudmFsaWRhdGUudmFsaWRhdG9ycy5oYXNBdHRyaWJ1dGVzID0gZnVuY3Rpb24gaGFzQXR0cmlidXRlcyAodmFsdWUsIG9wdGlvbnMpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghXy5pc0FycmF5KHZhbHVlKSkge1xuICAgIHZhbHVlID0gW3ZhbHVlXTtcbiAgfVxuXG4gIGZvciAoY29uc3QgaXRlbSBvZiB2YWx1ZSkge1xuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGl0ZW1bb3B0aW9uXSkpIHtcbiAgICAgICAgcmV0dXJuIGBtdXN0IGhhdmUgYXR0cmlidXRlczogJHtvcHRpb25zfWA7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG52YWxpZGF0ZS52YWxpZGF0b3JzLmhhc1Bvc3NpYmxlQXR0cmlidXRlcyA9IGZ1bmN0aW9uIGhhc1Bvc3NpYmxlQXR0cmlidXRlcyAodmFsdWUsIG9wdGlvbnMpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIGlmIGp1c3QgYSBiYXJlIHZhbHVlLCBhbGxvdyBpdCB0aHJvdWdoXG4gIGlmICghXy5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZvciAoY29uc3QgaXRlbSBvZiB2YWx1ZSkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIF8ua2V5cyhpdGVtKSkge1xuICAgICAgaWYgKCFvcHRpb25zLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgcmV0dXJuIGBtdXN0IG5vdCBpbmNsdWRlICcke2tleX0nLiBBdmFpbGFibGUgb3B0aW9uczogJHtvcHRpb25zfWA7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBDTElFTlRfVVJMX1RZUEVTID0ge1xuICB1cmw6ICdob3N0bmFtZScsXG4gIGFuZHJvaWQ6ICdBbmRyb2lkJyxcbiAgaW9zOiAnaU9TJyxcbn07XG5cbmNvbnN0IHZhbGlkYXRvciA9IHtcbiAgJ25hbWUnOiB7cHJlc2VuY2U6IHRydWV9LFxuICAnc2hvcnRfZGVzY3JpcHRpb24nOiB7cHJlc2VuY2U6IHRydWV9LFxuICAnZXhhbXBsZV91c2FnZSc6IHt9LFxuICAnZXhhbXBsZV91c2FnZS5qYXZhJzoge30sXG4gICdleGFtcGxlX3VzYWdlLmphdmFzY3JpcHRfd2Rpbyc6IHt9LFxuICAnZXhhbXBsZV91c2FnZS5qYXZhc2NyaXB0X3dkJzoge30sXG4gICdleGFtcGxlX3VzYWdlLnJ1YnknOiB7fSxcbiAgJ2V4YW1wbGVfdXNhZ2UucnVieV9jb3JlJzoge30sXG4gICdleGFtcGxlX3VzYWdlLmNzaGFycCc6IHt9LFxuICAnZGVzY3JpcHRpb24nOiB7fSxcbiAgJ2NsaWVudF9kb2NzLmphdmEnOiB7aGFzUG9zc2libGVBdHRyaWJ1dGVzOiBfLmtleXMoQ0xJRU5UX1VSTF9UWVBFUyl9LFxuICAnY2xpZW50X2RvY3MuamF2YXNjcmlwdF93ZGlvJzoge2hhc1Bvc3NpYmxlQXR0cmlidXRlczogXy5rZXlzKENMSUVOVF9VUkxfVFlQRVMpfSxcbiAgJ2NsaWVudF9kb2NzLmphdmFzY3JpcHRfd2QnOiB7aGFzUG9zc2libGVBdHRyaWJ1dGVzOiBfLmtleXMoQ0xJRU5UX1VSTF9UWVBFUyl9LFxuICAnY2xpZW50X2RvY3MucnVieSc6IHtoYXNQb3NzaWJsZUF0dHJpYnV0ZXM6IF8ua2V5cyhDTElFTlRfVVJMX1RZUEVTKX0sXG4gICdjbGllbnRfZG9jcy5ydWJ5X2NvcmUnOiB7aGFzUG9zc2libGVBdHRyaWJ1dGVzOiBfLmtleXMoQ0xJRU5UX1VSTF9UWVBFUyl9LFxuICAnY2xpZW50X2RvY3MuY3NoYXJwJzoge2hhc1Bvc3NpYmxlQXR0cmlidXRlczogXy5rZXlzKENMSUVOVF9VUkxfVFlQRVMpfSxcbiAgJ2VuZHBvaW50Jzoge3ByZXNlbmNlOiB0cnVlfSxcbiAgJ2RyaXZlcl9zdXBwb3J0Jzoge3ByZXNlbmNlOiB0cnVlfSxcbiAgJ2VuZHBvaW50LnVybCc6IHtwcmVzZW5jZTogdHJ1ZX0sXG4gICdlbmRwb2ludC51cmxfcGFyYW1ldGVycyc6IHthcnJheTogdHJ1ZSwgaGFzQXR0cmlidXRlczogWyduYW1lJywgJ2Rlc2NyaXB0aW9uJ119LFxuICAnZW5kcG9pbnQuanNvbl9wYXJhbWV0ZXJzJzoge2FycmF5OiB0cnVlLCBoYXNBdHRyaWJ1dGVzOiBbJ25hbWUnLCAnZGVzY3JpcHRpb24nXX0sXG4gICdlbmRwb2ludC5yZXNwb25zZSc6IHtoYXNBdHRyaWJ1dGVzOiBbJ3R5cGUnLCAnZGVzY3JpcHRpb24nXSB9LFxuICAnc3BlY2lmaWNhdGlvbnMnOiB7cHJlc2VuY2U6IHRydWV9LFxuICAnbGlua3MnOiB7YXJyYXk6IHRydWUsIGhhc0F0dHJpYnV0ZXM6IFsnbmFtZScsICd1cmwnXX0sXG59O1xuXG5cbmV4cG9ydCB7IHZhbGlkYXRvciwgQ0xJRU5UX1VSTF9UWVBFUyB9O1xuZXhwb3J0IGRlZmF1bHQgdmFsaWRhdG9yO1xuIl0sImZpbGUiOiJjb21tYW5kcy15bWwvdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
package/build/index.js ADDED
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+
4
+ require("source-map-support/register");
5
+
6
+ const {
7
+ asyncify
8
+ } = require('asyncbox');
9
+
10
+ const appium = require('./build/lib/main.js');
11
+
12
+ if (require.main === module) {
13
+ asyncify(appium.main);
14
+ }
15
+
16
+ module.exports = appium;require('source-map-support').install();
17
+
18
+
19
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImFzeW5jaWZ5IiwicmVxdWlyZSIsImFwcGl1bSIsIm1haW4iLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFFQSxNQUFNO0FBQUNBLEVBQUFBO0FBQUQsSUFBYUMsT0FBTyxDQUFDLFVBQUQsQ0FBMUI7O0FBRUEsTUFBTUMsTUFBTSxHQUFHRCxPQUFPLENBQUMscUJBQUQsQ0FBdEI7O0FBRUEsSUFBSUEsT0FBTyxDQUFDRSxJQUFSLEtBQWlCQyxNQUFyQixFQUE2QjtBQUMzQkosRUFBQUEsUUFBUSxDQUFDRSxNQUFNLENBQUNDLElBQVIsQ0FBUjtBQUNEOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJILE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5jb25zdCB7YXN5bmNpZnl9ID0gcmVxdWlyZSgnYXN5bmNib3gnKTtcblxuY29uc3QgYXBwaXVtID0gcmVxdWlyZSgnLi9idWlsZC9saWIvbWFpbi5qcycpO1xuXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgYXN5bmNpZnkoYXBwaXVtLm1haW4pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGl1bTtcbiJdLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi4ifQ==
@@ -104,7 +104,11 @@ class ArgParser {
104
104
 
105
105
  static _patchExit(parser) {
106
106
  parser.exit = (code, msg) => {
107
- throw new Error(msg);
107
+ if (code) {
108
+ throw new Error(msg);
109
+ }
110
+
111
+ process.exit();
108
112
  };
109
113
  }
110
114
 
@@ -194,4 +198,4 @@ var _default = getParser;
194
198
  exports.default = _default;require('source-map-support').install();
195
199
 
196
200
 
197
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jbGkvcGFyc2VyLmpzIl0sIm5hbWVzIjpbIlNFUlZFUl9TVUJDT01NQU5EIiwiTk9OX1NFUlZFUl9BUkdTIiwiT2JqZWN0IiwiZnJlZXplIiwiU2V0IiwiRFJJVkVSX1RZUEUiLCJQTFVHSU5fVFlQRSIsInZlcnNpb24iLCJmcyIsInJlYWRQYWNrYWdlSnNvbkZyb20iLCJyb290RGlyIiwiQXJnUGFyc2VyIiwiY29uc3RydWN0b3IiLCJkZWJ1ZyIsInByb2ciLCJwcm9jZXNzIiwiYXJndiIsInBhdGgiLCJiYXNlbmFtZSIsInBhcnNlciIsIkFyZ3VtZW50UGFyc2VyIiwiYWRkX2hlbHAiLCJkZXNjcmlwdGlvbiIsIl9wYXRjaEV4aXQiLCJhZGRfYXJndW1lbnQiLCJhY3Rpb24iLCJzdWJQYXJzZXJzIiwiYWRkX3N1YnBhcnNlcnMiLCJkZXN0Iiwic2VydmVyQXJncyIsIl9hZGRTZXJ2ZXJUb1BhcnNlciIsInJhd0FyZ3MiLCJfYWRkRXh0ZW5zaW9uQ29tbWFuZHNUb1BhcnNlciIsInBhcnNlX2FyZ3MiLCJwYXJzZUFyZ3MiLCJhcmdzIiwic2xpY2UiLCJoYXMiLCJ1bnNoaWZ0IiwicGFyc2VkIiwiX3RyYW5zZm9ybVBhcnNlZEFyZ3MiLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJtZXNzYWdlIiwiZXhpdCIsIl8iLCJyZWR1Y2UiLCJ1bnBhY2tlZCIsInZhbHVlIiwia2V5Iiwic2V0IiwiY29kZSIsIm1zZyIsIkVycm9yIiwic3ViUGFyc2VyIiwic2VydmVyUGFyc2VyIiwiYWRkX3BhcnNlciIsImhlbHAiLCJmbGFnc09yTmFtZXMiLCJvcHRzIiwidHlwZSIsImV4dFBhcnNlciIsImV4dFN1YlBhcnNlcnMiLCJleHRlbnNpb25BcmdzIiwicGFyc2VyU3BlY3MiLCJjb21tYW5kIiwibGlzdCIsImluc3RhbGwiLCJ1bmluc3RhbGwiLCJ1cGRhdGUiLCJydW4iLCJnZXRQYXJzZXIiLCJCIiwiYWxsIiwiZHJpdmVyQ29uZmlnIiwicmVhZCIsInBsdWdp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RyxvQkFBbUJHLElBQUs7QUFIakMsT0FoQmtCLEVBcUJsQjtBQUNFSyxRQUFBQSxPQUFPLEVBQUUsS0FEWDtBQUVFL0IsUUFBQUEsSUFBSSxFQUFFNkIsYUFBYSxDQUFDSCxJQUFELENBQWIsQ0FBb0JVLEdBRjVCO0FBR0ViLFFBQUFBLElBQUksRUFDRCxvQ0FBbUNHLElBQUssNEJBQXpDLEdBQ0MsZ0VBQStEQSxJQUFLO0FBTHpFLE9BckJrQixDQUFwQjs7QUE4QkEsV0FBSyxNQUFNO0FBQUNLLFFBQUFBLE9BQUQ7QUFBVS9CLFFBQUFBLElBQVY7QUFBZ0J1QixRQUFBQTtBQUFoQixPQUFYLElBQW9DTyxXQUFwQyxFQUFpRDtBQUMvQyxjQUFNOUMsTUFBTSxHQUFHNEMsYUFBYSxDQUFDTixVQUFkLENBQXlCUyxPQUF6QixFQUFrQztBQUFDUixVQUFBQTtBQUFELFNBQWxDLENBQWY7O0FBRUEvQyxRQUFBQSxTQUFTLENBQUNZLFVBQVYsQ0FBcUJKLE1BQXJCOztBQUVBLGFBQUssTUFBTSxDQUFDd0MsWUFBRCxFQUFlQyxJQUFmLENBQVgsSUFBbUN6QixJQUFuQyxFQUF5QztBQUd2Q2hCLFVBQUFBLE1BQU0sQ0FBQ0ssWUFBUCxDQUFvQixHQUFHbUMsWUFBdkIsRUFBcUMsRUFBQyxHQUFHQztBQUFKLFdBQXJDO0FBQ0Q7QUFDRjtBQUNGO0FBQ0Y7O0FBak5hOzs7O0FBNE5oQixlQUFlWSxTQUFmLENBQTBCM0QsS0FBSyxHQUFHLEtBQWxDLEVBQXlDO0FBQ3ZDLFFBQU00RCxrQkFBRUMsR0FBRixDQUFNLENBQUNDLG1CQUFhQyxJQUFiLEVBQUQsRUFBc0JDLG1CQUFhRCxJQUFiLEVBQXRCLENBQU4sQ0FBTjtBQUNBO0FBRUEsU0FBTyxJQUFJakUsU0FBSixDQUFjRSxLQUFkLENBQVA7QUFDRDs7ZUFFYzJELFMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHsgZnMgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgQXJndW1lbnRQYXJzZXIgfSBmcm9tICdhcmdwYXJzZSc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBEUklWRVJfVFlQRSwgUExVR0lOX1RZUEUgfSBmcm9tICcuLi9leHRlbnNpb24tY29uZmlnJztcbmltcG9ydCB7IGZpbmFsaXplU2NoZW1hLCBnZXRBcmdTcGVjLCBoYXNBcmdTcGVjIH0gZnJvbSAnLi4vc2NoZW1hJztcbmltcG9ydCB7IHJvb3REaXIgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge1xuICBkcml2ZXJDb25maWcsXG4gIGdldEV4dGVuc2lvbkFyZ3MsXG4gIGdldFNlcnZlckFyZ3MsXG4gIHBsdWdpbkNvbmZpZ1xufSBmcm9tICcuL2FyZ3MnO1xuXG5leHBvcnQgY29uc3QgU0VSVkVSX1NVQkNPTU1BTkQgPSAnc2VydmVyJztcblxuLyoqXG4gKiBJZiB0aGUgcGFyc2VkIGFyZ3MgZG8gbm90IGNvbnRhaW4gYW55IG9mIHRoZXNlIHZhbHVlcywgdGhlbiB3ZVxuICogd2lsbCBhdXRvbWF0aWFsbHkgaW5qZWN0IHRoZSBgc2VydmVyYCBzdWJjb21tYW5kLlxuICovXG5jb25zdCBOT05fU0VSVkVSX0FSR1MgPSBPYmplY3QuZnJlZXplKFxuICBuZXcgU2V0KFtcbiAgICBEUklWRVJfVFlQRSxcbiAgICBQTFVHSU5fVFlQRSxcbiAgICBTRVJWRVJfU1VCQ09NTUFORCxcbiAgICAnLWgnLFxuICAgICctLWhlbHAnLFxuICAgICctdicsXG4gICAgJy0tdmVyc2lvbidcbiAgXSlcbik7XG5cbmNvbnN0IHZlcnNpb24gPSBmcy5yZWFkUGFja2FnZUpzb25Gcm9tKHJvb3REaXIpLnZlcnNpb247XG5cbi8qKlxuICogQSB3cmFwcGVyIGFyb3VuZCBgYXJncGFyc2VgXG4gKlxuICogLSBIYW5kbGVzIGluc3RhbnRpYXRpb24sIGNvbmZpZ3VyYXRpb24sIGFuZCBtb25rZXlwYXRjaGluZyBvZiBhblxuICogICAgYEFyZ3VtZW50UGFyc2VyYCBpbnN0YW5jZSBmb3IgQXBwaXVtIHNlcnZlciBhbmQgaXRzIGV4dGVuc2lvbnNcbiAqIC0gSGFuZGxlcyBlcnJvciBjb25kaXRpb25zLCBtZXNzYWdlcywgYW5kIGV4aXQgYmVoYXZpb3JcbiAqL1xuY2xhc3MgQXJnUGFyc2VyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2RlYnVnXSAtIElmIHRydWUsIHRocm93IGluc3RlYWQgb2YgZXhpdCBvbiBlcnJvci5cbiAgICovXG4gIGNvbnN0cnVjdG9yIChkZWJ1ZyA9IGZhbHNlKSB7XG4gICAgY29uc3QgcHJvZyA9IHByb2Nlc3MuYXJndlsxXSA/IHBhdGguYmFzZW5hbWUocHJvY2Vzcy5hcmd2WzFdKSA6ICdhcHBpdW0nO1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBBcmd1bWVudFBhcnNlcih7XG4gICAgICBhZGRfaGVscDogdHJ1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnQSB3ZWJkcml2ZXItY29tcGF0aWJsZSBzZXJ2ZXIgdGhhdCBmYWNpbGl0YXRlcyBhdXRvbWF0aW9uIG9mIHdlYiwgbW9iaWxlLCBhbmQgb3RoZXIgdHlwZXMgb2YgYXBwcyBhY3Jvc3MgdmFyaW91cyBwbGF0Zm9ybXMuJyxcbiAgICAgIHByb2csXG4gICAgfSk7XG5cbiAgICBBcmdQYXJzZXIuX3BhdGNoRXhpdChwYXJzZXIpO1xuXG4gICAgLyoqXG4gICAgICogUHJvZ3JhbSBuYW1lICh0eXBpY2FsbHkgYGFwcGl1bWApXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLnByb2cgPSBwcm9nO1xuXG4gICAgLyoqXG4gICAgICogSWYgYHRydWVgLCB0aHJvdyBhbiBlcnJvciBvbiBwYXJzZSBmYWlsdXJlIGluc3RlYWQgb2YgcHJpbnRpbmcgaGVscFxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMuZGVidWcgPSBkZWJ1ZztcblxuICAgIC8qKlxuICAgICAqIFdyYXBwZWQgYEFyZ3VtZW50UGFyc2VyYCBpbnN0YW5jZVxuICAgICAqIEB0eXBlIHtBcmd1bWVudFBhcnNlcn1cbiAgICAgKi9cbiAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcblxuICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyc2lvbicsIHtcbiAgICAgIGFjdGlvbjogJ3ZlcnNpb24nLFxuICAgICAgdmVyc2lvbixcbiAgICB9KTtcblxuICAgIGNvbnN0IHN1YlBhcnNlcnMgPSBwYXJzZXIuYWRkX3N1YnBhcnNlcnMoe2Rlc3Q6ICdzdWJjb21tYW5kJ30pO1xuXG4gICAgLy8gYWRkIHRoZSAnc2VydmVyJyBzdWJjb21tYW5kLCBhbmQgc3RvcmUgdGhlIHJhdyBhcmd1bWVudHMgb24gdGhlIHBhcnNlclxuICAgIC8vIG9iamVjdCBhcyBhIHdheSBmb3Igb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUgdG8gd29yayB3aXRoIHRoZSBhcmd1bWVudHNcbiAgICAvLyBjb25jZXB0dWFsbHkgcmF0aGVyIHRoYW4ganVzdCB0aHJvdWdoIGFyZ3BhcnNlXG4gICAgY29uc3Qgc2VydmVyQXJncyA9IEFyZ1BhcnNlci5fYWRkU2VydmVyVG9QYXJzZXIoc3ViUGFyc2Vycyk7XG5cbiAgICB0aGlzLnJhd0FyZ3MgPSBzZXJ2ZXJBcmdzO1xuXG4gICAgLy8gYWRkIHRoZSAnZHJpdmVyJyBhbmQgJ3BsdWdpbicgc3ViY29tbWFuZHNcbiAgICBBcmdQYXJzZXIuX2FkZEV4dGVuc2lvbkNvbW1hbmRzVG9QYXJzZXIoc3ViUGFyc2Vycyk7XG5cbiAgICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAvIGRyb3AtaW4gd3JhcHBlclxuICAgIC8qKlxuICAgICAqIEB0eXBlIHtBcmdQYXJzZXJbJ3BhcnNlQXJncyddfVxuICAgICAqL1xuICAgIHRoaXMucGFyc2VfYXJncyA9IHRoaXMucGFyc2VBcmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGFyZ3VtZW50cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuXG4gICAqXG4gICAqIElmIG5vIHN1YmNvbW1hbmQgaXMgcGFzc2VkIGluLCB0aGlzIG1ldGhvZCB3aWxsIGluamVjdCB0aGUgYHNlcnZlcmAgc3ViY29tbWFuZC5cbiAgICpcbiAgICogYEFyZ1BhcnNlci5wcm90b3R5cGUucGFyc2VfYXJnc2AgaXMgYW4gYWxpYXMgb2YgdGhpcyBtZXRob2QuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IFthcmdzXSAtIEFycmF5IG9mIGFyZ3VtZW50cywgb3N0ZW5zaWJseSBmcm9tIGBwcm9jZXNzLmFyZ3ZgLiBHYXRoZXJzIGFyZ3MgZnJvbSBgcHJvY2Vzcy5hcmd2YCBpZiBub3QgcHJvdmlkZWQuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoJy4uLy4uL3R5cGVzL3R5cGVzJykuUGFyc2VkQXJnc30gLSBUaGUgcGFyc2VkIGFyZ3VtZW50c1xuICAgKi9cbiAgcGFyc2VBcmdzIChhcmdzID0gcHJvY2Vzcy5hcmd2LnNsaWNlKDIpKSB7XG4gICAgaWYgKCFOT05fU0VSVkVSX0FSR1MuaGFzKGFyZ3NbMF0pKSB7XG4gICAgICBhcmdzLnVuc2hpZnQoU0VSVkVSX1NVQkNPTU1BTkQpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpO1xuICAgICAgcmV0dXJuIEFyZ1BhcnNlci5fdHJhbnNmb3JtUGFyc2VkQXJncyhwYXJzZWQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICAgLy8gdGhpcyBpc24ndCB0ZXN0ZWQgdmlhIHVuaXQgdGVzdHMgKHdlIHVzZSBgZGVidWc6IHRydWVgKSBzbyBtYXkgZXNjYXBlIGNvdmVyYWdlLlxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKCk7IC8vIG5lZWQgYW4gZXh0cmEgc3BhY2Ugc2luY2UgYXJncGFyc2UgcHJpbnRzIHVzYWdlLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKGVyci5tZXNzYWdlKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhbiBvYmplY3QgZnVsbCBvZiBhcmd1bWVudHMgYXMgcmV0dXJuZWQgYnkgYGFyZ3BhcnNlci5wYXJzZV9hcmdzYCxcbiAgICogZXhwYW5kIHRoZSBvbmVzIGZvciBleHRlbnNpb25zIGludG8gYSBuZXN0ZWQgb2JqZWN0IHN0cnVjdHVyZSBhbmQgcmVuYW1lXG4gICAqIGtleXMgdG8gbWF0Y2ggdGhlIGludGVuZGVkIGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBFLmcuLCBgeydkcml2ZXItZm9vLWJhcic6IGJhen1gIGJlY29tZXMgYHtkcml2ZXI6IHtmb286IHtiYXI6ICdiYXonfX19YFxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIF90cmFuc2Zvcm1QYXJzZWRBcmdzIChhcmdzKSB7XG4gICAgcmV0dXJuIF8ucmVkdWNlKFxuICAgICAgYXJncyxcbiAgICAgICh1bnBhY2tlZCwgdmFsdWUsIGtleSkgPT4ge1xuICAgICAgICBpZiAoaGFzQXJnU3BlYyhrZXkpKSB7XG4gICAgICAgICAgY29uc3Qge2Rlc3R9ID0gLyoqIEB0eXBlIHtpbXBvcnQoJy4uL3NjaGVtYS9hcmctc3BlYycpLkFyZ1NwZWN9ICovKGdldEFyZ1NwZWMoa2V5KSk7XG4gICAgICAgICAgXy5zZXQodW5wYWNrZWQsIGRlc3QsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0aGlzIGNvdWxkIGJlIGFueXRoaW5nIHRoYXQgX2lzbid0XyBhIHNlcnZlciBhcmdcbiAgICAgICAgICB1bnBhY2tlZFtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVucGFja2VkO1xuICAgICAgfSxcbiAgICAgIHt9LFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUGF0Y2hlcyB0aGUgYGV4aXQoKWAgbWV0aG9kIG9mIHRoZSBwYXJzZXIgdG8gdGhyb3cgYW4gZXJyb3IsIHNvIHdlIGNhbiBoYW5kbGUgaXQgbWFudWFsbHkuXG4gICAqIEBwYXJhbSB7QXJndW1lbnRQYXJzZXJ9IHBhcnNlclxuICAgKi9cbiAgc3RhdGljIF9wYXRjaEV4aXQgKHBhcnNlcikge1xuICAgIHBhcnNlci5leGl0ID0gKGNvZGUsIG1zZykgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnYXJncGFyc2UnKS5TdWJQYXJzZXJ9IHN1YlBhcnNlclxuICAgKiBAcmV0dXJucyB7aW1wb3J0KCcuL2FyZ3MnKS5Bcmd1bWVudERlZmluaXRpb25zfVxuICAgKi9cbiAgc3RhdGljIF9hZGRTZXJ2ZXJUb1BhcnNlciAoc3ViUGFyc2VyKSB7XG4gICAgY29uc3Qgc2VydmVyUGFyc2VyID0gc3ViUGFyc2VyLmFkZF9wYXJzZXIoJ3NlcnZlcicsIHtcbiAgICAgIGFkZF9oZWxwOiB0cnVlLFxuICAgICAgaGVscDogJ1J1biBhbiBBcHBpdW0gc2VydmVyJyxcbiAgICB9KTtcblxuICAgIEFyZ1BhcnNlci5fcGF0Y2hFeGl0KHNlcnZlclBhcnNlcik7XG5cbiAgICBjb25zdCBzZXJ2ZXJBcmdzID0gZ2V0U2VydmVyQXJncygpO1xuICAgIGZvciAoY29uc3QgW2ZsYWdzT3JOYW1lcywgb3B0c10gb2Ygc2VydmVyQXJncykge1xuICAgICAgLy8gVFMgZG9lc24ndCBsaWtlIHRoZSBzcHJlYWQgb3BlcmF0b3IgaGVyZS5cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHNlcnZlclBhcnNlci5hZGRfYXJndW1lbnQoLi4uZmxhZ3NPck5hbWVzLCB7Li4ub3B0c30pO1xuICAgIH1cblxuICAgIHJldHVybiBzZXJ2ZXJBcmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgZXh0ZW5zaW9uIHN1Yi1zdWItY29tbWFuZHMgdG8gYGRyaXZlcmAvYHBsdWdpbmAgc3ViY29tbWFuZHNcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2FyZ3BhcnNlJykuU3ViUGFyc2VyfSBzdWJQYXJzZXJzXG4gICAqL1xuICBzdGF0aWMgX2FkZEV4dGVuc2lvbkNvbW1hbmRzVG9QYXJzZXIgKHN1YlBhcnNlcnMpIHtcbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgW0RSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRV0pIHtcbiAgICAgIGNvbnN0IGV4dFBhcnNlciA9IHN1YlBhcnNlcnMuYWRkX3BhcnNlcih0eXBlLCB7XG4gICAgICAgIGFkZF9oZWxwOiB0cnVlLFxuICAgICAgICBoZWxwOiBgQWNjZXNzIHRoZSAke3R5cGV9IG1hbmFnZW1lbnQgQ0xJIGNvbW1hbmRzYCxcbiAgICAgIH0pO1xuXG4gICAgICBBcmdQYXJzZXIuX3BhdGNoRXhpdChleHRQYXJzZXIpO1xuXG4gICAgICBjb25zdCBleHRTdWJQYXJzZXJzID0gZXh0UGFyc2VyLmFkZF9zdWJwYXJzZXJzKHtcbiAgICAgICAgZGVzdDogYCR7dHlwZX1Db21tYW5kYCxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZXh0ZW5zaW9uQXJncyA9IGdldEV4dGVuc2lvbkFyZ3MoKTtcbiAgICAgIGNvbnN0IHBhcnNlclNwZWNzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgY29tbWFuZDogJ2xpc3QnLFxuICAgICAgICAgIGFyZ3M6IGV4dGVuc2lvbkFyZ3NbdHlwZV0ubGlzdCxcbiAgICAgICAgICBoZWxwOiBgTGlzdCBhdmFpbGFibGUgYW5kIGluc3RhbGxlZCAke3R5cGV9c2AsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb21tYW5kOiAnaW5zdGFsbCcsXG4gICAgICAgICAgYXJnczogZXh0ZW5zaW9uQXJnc1t0eXBlXS5pbnN0YWxsLFxuICAgICAgICAgIGhlbHA6IGBJbnN0YWxsIGEgJHt0eXBlfWAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb21tYW5kOiAndW5pbnN0YWxsJyxcbiAgICAgICAgICBhcmdzOiBleHRlbnNpb25BcmdzW3R5cGVdLnVuaW5zdGFsbCxcbiAgICAgICAgICBoZWxwOiBgVW5pbnN0YWxsIGEgJHt0eXBlfWAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb21tYW5kOiAndXBkYXRlJyxcbiAgICAgICAgICBhcmdzOiBleHRlbnNpb25BcmdzW3R5cGVdLnVwZGF0ZSxcbiAgICAgICAgICBoZWxwOiBgVXBkYXRlIGluc3RhbGxlZCAke3R5cGV9cyB0byB0aGUgbGF0ZXN0IHZlcnNpb25gLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29tbWFuZDogJ3J1bicsXG4gICAgICAgICAgYXJnczogZXh0ZW5zaW9uQXJnc1t0eXBlXS5ydW4sXG4gICAgICAgICAgaGVscDpcbiAgICAgICAgICAgIGBSdW4gYSBzY3JpcHQgKGRlZmluZWQgaW5zaWRlIHRoZSAke3R5cGV9J3MgcGFja2FnZS5qc29uIHVuZGVyIHRoZSBgICtcbiAgICAgICAgICAgIGDigJxzY3JpcHRz4oCdIGZpZWxkIGluc2lkZSB0aGUg4oCcYXBwaXVt4oCdIGZpZWxkKSBmcm9tIGFuIGluc3RhbGxlZCAke3R5cGV9YCxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGZvciAoY29uc3Qge2NvbW1hbmQsIGFyZ3MsIGhlbHB9IG9mIHBhcnNlclNwZWNzKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlciA9IGV4dFN1YlBhcnNlcnMuYWRkX3BhcnNlcihjb21tYW5kLCB7aGVscH0pO1xuXG4gICAgICAgIEFyZ1BhcnNlci5fcGF0Y2hFeGl0KHBhcnNlcik7XG5cbiAgICAgICAgZm9yIChjb25zdCBbZmxhZ3NPck5hbWVzLCBvcHRzXSBvZiBhcmdzKSB7XG4gICAgICAgICAgLy8gYWRkX2FyZ3VtZW50IG11dGF0ZXMgcGFyYW1zIHNvIG1ha2Ugc3VyZSB0byBzZW5kIGluIGNvcGllcyBpbnN0ZWFkXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoLi4uZmxhZ3NPck5hbWVzLCB7Li4ub3B0c30pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHtAbGluayBBcmdQYXJzZXJ9IGluc3RhbmNlLiAgTmVjZXNzYXJpbHkgcmVhZHMgZXh0ZW5zaW9uIGNvbmZpZ3VyYXRpb25cbiAqIGJlZm9yZWhhbmQsIGFuZCBmaW5hbGl6ZXMgdGhlIGNvbmZpZyBzY2hlbWEuXG4gKlxuICogQGNvbnN0cnVjdHMgQXJnUGFyc2VyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtkZWJ1Z10gLSBJZiBgdHJ1ZWAsIHRocm93IGluc3RlYWQgb2YgZXhpdCB1cG9uIHBhcnNpbmcgZXJyb3JcbiAqIEByZXR1cm5zIHtQcm9taXNlPEFyZ1BhcnNlcj59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldFBhcnNlciAoZGVidWcgPSBmYWxzZSkge1xuICBhd2FpdCBCLmFsbChbZHJpdmVyQ29uZmlnLnJlYWQoKSwgcGx1Z2luQ29uZmlnLnJlYWQoKV0pO1xuICBmaW5hbGl6ZVNjaGVtYSgpO1xuXG4gIHJldHVybiBuZXcgQXJnUGFyc2VyKGRlYnVnKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZ2V0UGFyc2VyO1xuZXhwb3J0IHsgZ2V0UGFyc2VyLCBBcmdQYXJzZXIgfTtcbiJdLCJmaWxlIjoibGliL2NsaS9wYXJzZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
201
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jbGkvcGFyc2VyLmpzIl0sIm5hbWVzIjpbIlNFUlZFUl9TVUJDT01NQU5EIiwiTk9OX1NFUlZFUl9BUkdTIiwiT2JqZWN0IiwiZnJlZXplIiwiU2V0IiwiRFJJVkVSX1RZUEUiLCJQTFVHSU5fVFlQRSIsInZlcnNpb24iLCJmcyIsInJlYWRQYWNrYWdlSnNvbkZyb20iLCJyb290RGlyIiwiQXJnUGFyc2VyIiwiY29uc3RydWN0b3IiLCJkZWJ1ZyIsInByb2ciLCJwcm9jZXNzIiwiYXJndiIsInBhdGgiLCJiYXNlbmFtZSIsInBhcnNlciIsIkFyZ3VtZW50UGFyc2VyIiwiYWRkX2hlbHAiLCJkZXNjcmlwdGlvbiIsIl9wYXRjaEV4aXQiLCJhZGRfYXJndW1lbnQiLCJhY3Rpb24iLCJzdWJQYXJzZXJzIiwiYWRkX3N1YnBhcnNlcnMiLCJkZXN0Iiwic2VydmVyQXJncyIsIl9hZGRTZXJ2ZXJUb1BhcnNlciIsInJhd0FyZ3MiLCJfYWRkRXh0ZW5zaW9uQ29tbWFuZHNUb1BhcnNlciIsInBhcnNlX2FyZ3MiLCJwYXJzZUFyZ3MiLCJhcmdzIiwic2xpY2UiLCJoYXMiLCJ1bnNoaWZ0IiwicGFyc2VkIiwiX3RyYW5zZm9ybVBhcnNlZEFyZ3MiLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJtZXNzYWdlIiwiZXhpdCIsIl8iLCJyZWR1Y2UiLCJ1bnBhY2tlZCIsInZhbHVlIiwia2V5Iiwic2V0IiwiY29kZSIsIm1zZyIsIkVycm9yIiwic3ViUGFyc2VyIiwic2VydmVyUGFyc2VyIiwiYWRkX3BhcnNlciIsImhlbHAiLCJmbGFnc09yTmFtZXMiLCJvcHRzIiwidHlwZSIsImV4dFBhcnNlciIsImV4dFN1YlBhcnNlcnMiLCJleHRlbnNpb25BcmdzIiwicGFyc2VyU3BlY3MiLCJjb21tYW5kIiwibGlzdCIsImluc3RhbGwiLCJ1bmluc3RhbGwiLCJ1cGRhdGUiLCJydW4iLCJnZXRQYXJzZXIiLCJCIiwiYWxsIiwiZHJpdmVyQ29uZmlnIiwicmVhZCIsInBsdWdp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b20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBBcmd1bWVudFBhcnNlciB9IGZyb20gJ2FyZ3BhcnNlJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IERSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSB9IGZyb20gJy4uL2V4dGVuc2lvbi1jb25maWcnO1xuaW1wb3J0IHsgZmluYWxpemVTY2hlbWEsIGdldEFyZ1NwZWMsIGhhc0FyZ1NwZWMgfSBmcm9tICcuLi9zY2hlbWEnO1xuaW1wb3J0IHsgcm9vdERpciB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIGRyaXZlckNvbmZpZyxcbiAgZ2V0RXh0ZW5zaW9uQXJncyxcbiAgZ2V0U2VydmVyQXJncyxcbiAgcGx1Z2luQ29uZmlnXG59IGZyb20gJy4vYXJncyc7XG5cbmV4cG9ydCBjb25zdCBTRVJWRVJfU1VCQ09NTUFORCA9ICdzZXJ2ZXInO1xuXG4vKipcbiAqIElmIHRoZSBwYXJzZWQgYXJncyBkbyBub3QgY29udGFpbiBhbnkgb2YgdGhlc2UgdmFsdWVzLCB0aGVuIHdlXG4gKiB3aWxsIGF1dG9tYXRpYWxseSBpbmplY3QgdGhlIGBzZXJ2ZXJgIHN1YmNvbW1hbmQuXG4gKi9cbmNvbnN0IE5PTl9TRVJWRVJfQVJHUyA9IE9iamVjdC5mcmVlemUoXG4gIG5ldyBTZXQoW1xuICAgIERSSVZFUl9UWVBFLFxuICAgIFBMVUdJTl9UWVBFLFxuICAgIFNFUlZFUl9TVUJDT01NQU5ELFxuICAgICctaCcsXG4gICAgJy0taGVscCcsXG4gICAgJy12JyxcbiAgICAnLS12ZXJzaW9uJ1xuICBdKVxuKTtcblxuY29uc3QgdmVyc2lvbiA9IGZzLnJlYWRQYWNrYWdlSnNvbkZyb20ocm9vdERpcikudmVyc2lvbjtcblxuLyoqXG4gKiBBIHdyYXBwZXIgYXJvdW5kIGBhcmdwYXJzZWBcbiAqXG4gKiAtIEhhbmRsZXMgaW5zdGFudGlhdGlvbiwgY29uZmlndXJhdGlvbiwgYW5kIG1vbmtleXBhdGNoaW5nIG9mIGFuXG4gKiAgICBgQXJndW1lbnRQYXJzZXJgIGluc3RhbmNlIGZvciBBcHBpdW0gc2VydmVyIGFuZCBpdHMgZXh0ZW5zaW9uc1xuICogLSBIYW5kbGVzIGVycm9yIGNvbmRpdGlvbnMsIG1lc3NhZ2VzLCBhbmQgZXhpdCBiZWhhdmlvclxuICovXG5jbGFzcyBBcmdQYXJzZXIge1xuICAvKipcbiAgICogQHBhcmFtIHtib29sZWFufSBbZGVidWddIC0gSWYgdHJ1ZSwgdGhyb3cgaW5zdGVhZCBvZiBleGl0IG9uIGVycm9yLlxuICAgKi9cbiAgY29uc3RydWN0b3IgKGRlYnVnID0gZmFsc2UpIHtcbiAgICBjb25zdCBwcm9nID0gcHJvY2Vzcy5hcmd2WzFdID8gcGF0aC5iYXNlbmFtZShwcm9jZXNzLmFyZ3ZbMV0pIDogJ2FwcGl1bSc7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IEFyZ3VtZW50UGFyc2VyKHtcbiAgICAgIGFkZF9oZWxwOiB0cnVlLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdBIHdlYmRyaXZlci1jb21wYXRpYmxlIHNlcnZlciB0aGF0IGZhY2lsaXRhdGVzIGF1dG9tYXRpb24gb2Ygd2ViLCBtb2JpbGUsIGFuZCBvdGhlciB0eXBlcyBvZiBhcHBzIGFjcm9zcyB2YXJpb3VzIHBsYXRmb3Jtcy4nLFxuICAgICAgcHJvZyxcbiAgICB9KTtcblxuICAgIEFyZ1BhcnNlci5fcGF0Y2hFeGl0KHBhcnNlcik7XG5cbiAgICAvKipcbiAgICAgKiBQcm9ncmFtIG5hbWUgKHR5cGljYWxseSBgYXBwaXVtYClcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMucHJvZyA9IHByb2c7XG5cbiAgICAvKipcbiAgICAgKiBJZiBgdHJ1ZWAsIHRocm93IGFuIGVycm9yIG9uIHBhcnNlIGZhaWx1cmUgaW5zdGVhZCBvZiBwcmludGluZyBoZWxwXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5kZWJ1ZyA9IGRlYnVnO1xuXG4gICAgLyoqXG4gICAgICogV3JhcHBlZCBgQXJndW1lbnRQYXJzZXJgIGluc3RhbmNlXG4gICAgICogQHR5cGUge0FyZ3VtZW50UGFyc2VyfVxuICAgICAqL1xuICAgIHRoaXMucGFyc2VyID0gcGFyc2VyO1xuXG4gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJzaW9uJywge1xuICAgICAgYWN0aW9uOiAndmVyc2lvbicsXG4gICAgICB2ZXJzaW9uLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3ViUGFyc2VycyA9IHBhcnNlci5hZGRfc3VicGFyc2Vycyh7ZGVzdDogJ3N1YmNvbW1hbmQnfSk7XG5cbiAgICAvLyBhZGQgdGhlICdzZXJ2ZXInIHN1YmNvbW1hbmQsIGFuZCBzdG9yZSB0aGUgcmF3IGFyZ3VtZW50cyBvbiB0aGUgcGFyc2VyXG4gICAgLy8gb2JqZWN0IGFzIGEgd2F5IGZvciBvdGhlciBwYXJ0cyBvZiB0aGUgY29kZSB0byB3b3JrIHdpdGggdGhlIGFyZ3VtZW50c1xuICAgIC8vIGNvbmNlcHR1YWxseSByYXRoZXIgdGhhbiBqdXN0IHRocm91Z2ggYXJncGFyc2VcbiAgICBjb25zdCBzZXJ2ZXJBcmdzID0gQXJnUGFyc2VyLl9hZGRTZXJ2ZXJUb1BhcnNlcihzdWJQYXJzZXJzKTtcblxuICAgIHRoaXMucmF3QXJncyA9IHNlcnZlckFyZ3M7XG5cbiAgICAvLyBhZGQgdGhlICdkcml2ZXInIGFuZCAncGx1Z2luJyBzdWJjb21tYW5kc1xuICAgIEFyZ1BhcnNlci5fYWRkRXh0ZW5zaW9uQ29tbWFuZHNUb1BhcnNlcihzdWJQYXJzZXJzKTtcblxuICAgIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IC8gZHJvcC1pbiB3cmFwcGVyXG4gICAgLyoqXG4gICAgICogQHR5cGUge0FyZ1BhcnNlclsncGFyc2VBcmdzJ119XG4gICAgICovXG4gICAgdGhpcy5wYXJzZV9hcmdzID0gdGhpcy5wYXJzZUFyZ3M7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgYXJndW1lbnRzIGZyb20gdGhlIGNvbW1hbmQgbGluZS5cbiAgICpcbiAgICogSWYgbm8gc3ViY29tbWFuZCBpcyBwYXNzZWQgaW4sIHRoaXMgbWV0aG9kIHdpbGwgaW5qZWN0IHRoZSBgc2VydmVyYCBzdWJjb21tYW5kLlxuICAgKlxuICAgKiBgQXJnUGFyc2VyLnByb3RvdHlwZS5wYXJzZV9hcmdzYCBpcyBhbiBhbGlhcyBvZiB0aGlzIG1ldGhvZC5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gW2FyZ3NdIC0gQXJyYXkgb2YgYXJndW1lbnRzLCBvc3RlbnNpYmx5IGZyb20gYHByb2Nlc3MuYXJndmAuIEdhdGhlcnMgYXJncyBmcm9tIGBwcm9jZXNzLmFyZ3ZgIGlmIG5vdCBwcm92aWRlZC5cbiAgICogQHJldHVybnMge2ltcG9ydCgnLi4vLi4vdHlwZXMvdHlwZXMnKS5QYXJzZWRBcmdzfSAtIFRoZSBwYXJzZWQgYXJndW1lbnRzXG4gICAqL1xuICBwYXJzZUFyZ3MgKGFyZ3MgPSBwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpIHtcbiAgICBpZiAoIU5PTl9TRVJWRVJfQVJHUy5oYXMoYXJnc1swXSkpIHtcbiAgICAgIGFyZ3MudW5zaGlmdChTRVJWRVJfU1VCQ09NTUFORCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VyLnBhcnNlX2FyZ3MoYXJncyk7XG4gICAgICByZXR1cm4gQXJnUGFyc2VyLl90cmFuc2Zvcm1QYXJzZWRBcmdzKHBhcnNlZCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgICAvLyB0aGlzIGlzbid0IHRlc3RlZCB2aWEgdW5pdCB0ZXN0cyAod2UgdXNlIGBkZWJ1ZzogdHJ1ZWApIHNvIG1heSBlc2NhcGUgY292ZXJhZ2UuXG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKTsgLy8gbmVlZCBhbiBleHRyYSBzcGFjZSBzaW5jZSBhcmdwYXJzZSBwcmludHMgdXNhZ2UuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGFuIG9iamVjdCBmdWxsIG9mIGFyZ3VtZW50cyBhcyByZXR1cm5lZCBieSBgYXJncGFyc2VyLnBhcnNlX2FyZ3NgLFxuICAgKiBleHBhbmQgdGhlIG9uZXMgZm9yIGV4dGVuc2lvbnMgaW50byBhIG5lc3RlZCBvYmplY3Qgc3RydWN0dXJlIGFuZCByZW5hbWVcbiAgICoga2V5cyB0byBtYXRjaCB0aGUgaW50ZW5kZWQgZGVzdGluYXRpb24uXG4gICAqXG4gICAqIEUuZy4sIGB7J2RyaXZlci1mb28tYmFyJzogYmF6fWAgYmVjb21lcyBge2RyaXZlcjoge2Zvbzoge2JhcjogJ2Jheid9fX1gXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAqIEByZXR1cm5zIHtvYmplY3R9XG4gICAqL1xuICBzdGF0aWMgX3RyYW5zZm9ybVBhcnNlZEFyZ3MgKGFyZ3MpIHtcbiAgICByZXR1cm4gXy5yZWR1Y2UoXG4gICAgICBhcmdzLFxuICAgICAgKHVucGFja2VkLCB2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIGlmIChoYXNBcmdTcGVjKGtleSkpIHtcbiAgICAgICAgICBjb25zdCB7ZGVzdH0gPSAvKiogQHR5cGUge2ltcG9ydCgnLi4vc2NoZW1hL2FyZy1zcGVjJykuQXJnU3BlY30gKi8oZ2V0QXJnU3BlYyhrZXkpKTtcbiAgICAgICAgICBfLnNldCh1bnBhY2tlZCwgZGVzdCwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRoaXMgY291bGQgYmUgYW55dGhpbmcgdGhhdCBfaXNuJ3RfIGEgc2VydmVyIGFyZ1xuICAgICAgICAgIHVucGFja2VkW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5wYWNrZWQ7XG4gICAgICB9LFxuICAgICAge30sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRjaGVzIHRoZSBgZXhpdCgpYCBtZXRob2Qgb2YgdGhlIHBhcnNlciB0byB0aHJvdyBhbiBlcnJvciwgc28gd2UgY2FuIGhhbmRsZSBpdCBtYW51YWxseS5cbiAgICogQHBhcmFtIHtBcmd1bWVudFBhcnNlcn0gcGFyc2VyXG4gICAqL1xuICBzdGF0aWMgX3BhdGNoRXhpdCAocGFyc2VyKSB7XG4gICAgcGFyc2VyLmV4aXQgPSAoY29kZSwgbXNnKSA9PiB7XG4gICAgICBpZiAoY29kZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MuZXhpdCgpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2FyZ3BhcnNlJykuU3ViUGFyc2VyfSBzdWJQYXJzZXJcbiAgICogQHJldHVybnMge2ltcG9ydCgnLi9hcmdzJykuQXJndW1lbnREZWZpbml0aW9uc31cbiAgICovXG4gIHN0YXRpYyBfYWRkU2VydmVyVG9QYXJzZXIgKHN1YlBhcnNlcikge1xuICAgIGNvbnN0IHNlcnZlclBhcnNlciA9IHN1YlBhcnNlci5hZGRfcGFyc2VyKCdzZXJ2ZXInLCB7XG4gICAgICBhZGRfaGVscDogdHJ1ZSxcbiAgICAgIGhlbHA6ICdSdW4gYW4gQXBwaXVtIHNlcnZlcicsXG4gICAgfSk7XG5cbiAgICBBcmdQYXJzZXIuX3BhdGNoRXhpdChzZXJ2ZXJQYXJzZXIpO1xuXG4gICAgY29uc3Qgc2VydmVyQXJncyA9IGdldFNlcnZlckFyZ3MoKTtcbiAgICBmb3IgKGNvbnN0IFtmbGFnc09yTmFtZXMsIG9wdHNdIG9mIHNlcnZlckFyZ3MpIHtcbiAgICAgIC8vIFRTIGRvZXNuJ3QgbGlrZSB0aGUgc3ByZWFkIG9wZXJhdG9yIGhlcmUuXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBzZXJ2ZXJQYXJzZXIuYWRkX2FyZ3VtZW50KC4uLmZsYWdzT3JOYW1lcywgey4uLm9wdHN9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VydmVyQXJncztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGV4dGVuc2lvbiBzdWItc3ViLWNvbW1hbmRzIHRvIGBkcml2ZXJgL2BwbHVnaW5gIHN1YmNvbW1hbmRzXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdhcmdwYXJzZScpLlN1YlBhcnNlcn0gc3ViUGFyc2Vyc1xuICAgKi9cbiAgc3RhdGljIF9hZGRFeHRlbnNpb25Db21tYW5kc1RvUGFyc2VyIChzdWJQYXJzZXJzKSB7XG4gICAgZm9yIChjb25zdCB0eXBlIG9mIFtEUklWRVJfVFlQRSwgUExVR0lOX1RZUEVdKSB7XG4gICAgICBjb25zdCBleHRQYXJzZXIgPSBzdWJQYXJzZXJzLmFkZF9wYXJzZXIodHlwZSwge1xuICAgICAgICBhZGRfaGVscDogdHJ1ZSxcbiAgICAgICAgaGVscDogYEFjY2VzcyB0aGUgJHt0eXBlfSBtYW5hZ2VtZW50IENMSSBjb21tYW5kc2AsXG4gICAgICB9KTtcblxuICAgICAgQXJnUGFyc2VyLl9wYXRjaEV4aXQoZXh0UGFyc2VyKTtcblxuICAgICAgY29uc3QgZXh0U3ViUGFyc2VycyA9IGV4dFBhcnNlci5hZGRfc3VicGFyc2Vycyh7XG4gICAgICAgIGRlc3Q6IGAke3R5cGV9Q29tbWFuZGAsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGV4dGVuc2lvbkFyZ3MgPSBnZXRFeHRlbnNpb25BcmdzKCk7XG4gICAgICBjb25zdCBwYXJzZXJTcGVjcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGNvbW1hbmQ6ICdsaXN0JyxcbiAgICAgICAgICBhcmdzOiBleHRlbnNpb25BcmdzW3R5cGVdLmxpc3QsXG4gICAgICAgICAgaGVscDogYExpc3QgYXZhaWxhYmxlIGFuZCBpbnN0YWxsZWQgJHt0eXBlfXNgLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29tbWFuZDogJ2luc3RhbGwnLFxuICAgICAgICAgIGFyZ3M6IGV4dGVuc2lvbkFyZ3NbdHlwZV0uaW5zdGFsbCxcbiAgICAgICAgICBoZWxwOiBgSW5zdGFsbCBhICR7dHlwZX1gLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29tbWFuZDogJ3VuaW5zdGFsbCcsXG4gICAgICAgICAgYXJnczogZXh0ZW5zaW9uQXJnc1t0eXBlXS51bmluc3RhbGwsXG4gICAgICAgICAgaGVscDogYFVuaW5zdGFsbCBhICR7dHlwZX1gLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29tbWFuZDogJ3VwZGF0ZScsXG4gICAgICAgICAgYXJnczogZXh0ZW5zaW9uQXJnc1t0eXBlXS51cGRhdGUsXG4gICAgICAgICAgaGVscDogYFVwZGF0ZSBpbnN0YWxsZWQgJHt0eXBlfXMgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uYCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbW1hbmQ6ICdydW4nLFxuICAgICAgICAgIGFyZ3M6IGV4dGVuc2lvbkFyZ3NbdHlwZV0ucnVuLFxuICAgICAgICAgIGhlbHA6XG4gICAgICAgICAgICBgUnVuIGEgc2NyaXB0IChkZWZpbmVkIGluc2lkZSB0aGUgJHt0eXBlfSdzIHBhY2thZ2UuanNvbiB1bmRlciB0aGUgYCArXG4gICAgICAgICAgICBg4oCcc2NyaXB0c+KAnSBmaWVsZCBpbnNpZGUgdGhlIOKAnGFwcGl1beKAnSBmaWVsZCkgZnJvbSBhbiBpbnN0YWxsZWQgJHt0eXBlfWAsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBmb3IgKGNvbnN0IHtjb21tYW5kLCBhcmdzLCBoZWxwfSBvZiBwYXJzZXJTcGVjcykge1xuICAgICAgICBjb25zdCBwYXJzZXIgPSBleHRTdWJQYXJzZXJzLmFkZF9wYXJzZXIoY29tbWFuZCwge2hlbHB9KTtcblxuICAgICAgICBBcmdQYXJzZXIuX3BhdGNoRXhpdChwYXJzZXIpO1xuXG4gICAgICAgIGZvciAoY29uc3QgW2ZsYWdzT3JOYW1lcywgb3B0c10gb2YgYXJncykge1xuICAgICAgICAgIC8vIGFkZF9hcmd1bWVudCBtdXRhdGVzIHBhcmFtcyBzbyBtYWtlIHN1cmUgdG8gc2VuZCBpbiBjb3BpZXMgaW5zdGVhZFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KC4uLmZsYWdzT3JOYW1lcywgey4uLm9wdHN9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB7QGxpbmsgQXJnUGFyc2VyfSBpbnN0YW5jZS4gIE5lY2Vzc2FyaWx5IHJlYWRzIGV4dGVuc2lvbiBjb25maWd1cmF0aW9uXG4gKiBiZWZvcmVoYW5kLCBhbmQgZmluYWxpemVzIHRoZSBjb25maWcgc2NoZW1hLlxuICpcbiAqIEBjb25zdHJ1Y3RzIEFyZ1BhcnNlclxuICogQHBhcmFtIHtib29sZWFufSBbZGVidWddIC0gSWYgYHRydWVgLCB0aHJvdyBpbnN0ZWFkIG9mIGV4aXQgdXBvbiBwYXJzaW5nIGVycm9yXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxBcmdQYXJzZXI+fVxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRQYXJzZXIgKGRlYnVnID0gZmFsc2UpIHtcbiAgYXdhaXQgQi5hbGwoW2RyaXZlckNvbmZpZy5yZWFkKCksIHBsdWdpbkNvbmZpZy5yZWFkKCldKTtcbiAgZmluYWxpemVTY2hlbWEoKTtcblxuICByZXR1cm4gbmV3IEFyZ1BhcnNlcihkZWJ1Zyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldFBhcnNlcjtcbmV4cG9ydCB7IGdldFBhcnNlciwgQXJnUGFyc2VyIH07XG4iXSwiZmlsZSI6ImxpYi9jbGkvcGFyc2VyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -8,7 +8,6 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.APPIUM_VER = void 0;
9
9
  exports.checkNodeOk = checkNodeOk;
10
10
  exports.getBuildInfo = getBuildInfo;
11
- exports.getDeprecatedArgs = getDeprecatedArgs;
12
11
  exports.getGitRev = getGitRev;
13
12
  exports.getNonDefaultServerArgs = getNonDefaultServerArgs;
14
13
  exports.showConfig = showConfig;
@@ -32,8 +31,6 @@ var _logger = _interopRequireDefault(require("./logger"));
32
31
 
33
32
  var _semver = _interopRequireDefault(require("semver"));
34
33
 
35
- var _argparseActions = require("./cli/argparse-actions");
36
-
37
34
  var _findUp = _interopRequireDefault(require("find-up"));
38
35
 
39
36
  var _schema = require("./schema/schema");
@@ -54,10 +51,6 @@ function getNodeVersion() {
54
51
  return _semver.default.coerce(process.version);
55
52
  }
56
53
 
57
- function isSubClass(candidateClass, superClass) {
58
- return _lodash.default.isFunction(superClass) && _lodash.default.isFunction(candidateClass) && (candidateClass.prototype instanceof superClass || candidateClass === superClass);
59
- }
60
-
61
54
  async function updateBuildInfo(useGithubApiFallback = false) {
62
55
  const sha = await getGitRev(useGithubApiFallback);
63
56
 
@@ -213,26 +206,6 @@ function getNonDefaultServerArgs(parser, args) {
213
206
  return _lodash.default.pickBy(args, (__, key) => isNotDefault(key));
214
207
  }
215
208
 
216
- function getDeprecatedArgs(parser, args) {
217
- return parser.rawArgs.reduce((acc, [[name], {
218
- dest,
219
- default: defaultValue,
220
- action
221
- }]) => {
222
- if (!args[dest] || args[dest] === defaultValue) {
223
- return acc;
224
- }
225
-
226
- if (action !== null && action !== void 0 && action.deprecated_for) {
227
- acc[name] = action.deprecated_for;
228
- } else if (isSubClass(action, _argparseActions.StoreDeprecatedDefaultCapabilityAction)) {
229
- acc[name] = _argparseActions.DEFAULT_CAPS_ARG;
230
- }
231
-
232
- return acc;
233
- }, {});
234
- }
235
-
236
209
  async function validateTmpDir(tmpDir) {
237
210
  try {
238
211
  await (0, _support.mkdirp)(tmpDir);
@@ -242,4 +215,4 @@ async function validateTmpDir(tmpDir) {
242
215
  }require('source-map-support').install();
243
216
 
244
217
 
245
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb25maWcuanMiXSwibmFtZXMiOlsibnBtUGFja2FnZSIsImZzIiwicmVhZFBhY2thZ2VKc29uRnJvbSIsIl9fZGlybmFtZSIsIkFQUElVTV9WRVIiLCJ2ZXJzaW9uIiwiTUlOX05PREVfVkVSU0lPTiIsImVuZ2luZXMiLCJub2RlIiwiR0lUX01FVEFfUk9PVCIsIkdJVF9CSU5BUlkiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJHSVRIVUJfQVBJIiwiQlVJTERfSU5GTyIsImdldE5vZGVWZXJzaW9uIiwic2VtdmVyIiwiY29lcmNlIiwicHJvY2VzcyIsImlzU3ViQ2xhc3MiLCJjYW5kaWRhdGVDbGFzcyIsInN1cGVyQ2xhc3MiLCJfIiwiaXNGdW5jdGlvbiIsInByb3RvdHlwZSIsInVwZGF0ZUJ1aWxkSW5mbyIsInVzZUdpdGh1YkFwaUZhbGxiYWNrIiwic2hhIiwiZ2V0R2l0UmV2IiwiYnVpbHQiLCJnZXRHaXRUaW1lc3RhbXAiLCJpc0VtcHR5IiwiZmluZEdpdFJvb3QiLCJjd2QiLCJyb290RGlyIiwidHlwZSIsImdpdFJvb3QiLCJzdGRvdXQiLCJ0cmltIiwiaWduIiwicmVzQm9keU9iaiIsImF4aW9zIiwiZ2V0IiwiaGVhZGVycyIsImRhdGEiLCJpc0FycmF5IiwibmFtZSIsImNvbW1pdCIsImNvbW1pdFNoYSIsImNvbW1pdHRlciIsImRhdGUiLCJhdXRob3IiLCJnZXRCdWlsZEluZm8iLCJjaGVja05vZGVPayIsInNhdGlzZmllcyIsImxvZ2dlciIsImVycm9yQW5kVGhyb3ciLCJ3YXJuTm9kZURlcHJlY2F0aW9ucyIsInNob3dDb25maWciLCJjb25zb2xlIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzIiwicGFyc2VyIiwiYXJncyIsInR5cGVzRGlmZmVyIiwiZGVzdCIsImRlZmF1bHRzRnJvbVNjaGVtYSIsImRlZmF1bHRWYWx1ZUlzQXJyYXkiLCJhcmdzVmFsdWVJc0FycmF5IiwiYXJyYXlzRGlmZmVyIiwiZGlmZmVyZW5jZSIsImxlbmd0aCIsInZhbHVlc1VuZXF1YWwiLCJkZWZhdWx0SXNEZWZpbmVkIiwiaXNVbmRlZmluZWQiLCJhcmdWYWx1ZU5vdEFycmF5T3JBcnJheXNEaWZmZXIiLCJvdmVyU29tZSIsIm5lZ2F0ZSIsImRlZmF1bHRWYWx1ZU5vdEFycmF5QW5kVmFsdWVzVW5lcXVhbCIsIm92ZXJFdmVyeSIsImlzTm90RGVmYXVsdCIsInBpY2tCeSIsIl9fIiwia2V5IiwiZ2V0RGVwcmVjYXRlZEFyZ3MiLCJyYXdBcmdzIiwicmVkdWNlIiwiYWNjIiwiZGVmYXVsdCIsImRlZmF1bHRWYWx1ZSIsImFjdGlvbiIsImRlcHJlY2F0ZWRfZm9yIiwiU3RvcmVEZXByZWNhdGVkRGVmYXVsdENhcGFiaWxpdHlBY3Rpb24iLCJERUZBVUxUX0NBUFNfQVJHIiwidmFsaWRhdGVUbXBEaXIiLCJ0bXBEaXIiLCJlIiwiRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHQyxZQUFHQyxtQkFBSCxDQUF1QkMsU0FBdkIsQ0FBbkI7O0FBRUEsTUFBTUMsVUFBVSxHQUFHSixVQUFVLENBQUNLLE9BQTlCOztBQUNBLE1BQU1DLGdCQUFnQixHQUFHTixVQUFVLENBQUNPLE9BQVgsQ0FBbUJDLElBQTVDO0FBRUEsTUFBTUMsYUFBYSxHQUFHLE1BQXRCO0FBQ0EsTUFBTUMsVUFBVSxHQUFJLE1BQUtDLGdCQUFPQyxTQUFQLEtBQXFCLE1BQXJCLEdBQThCLEVBQUcsRUFBMUQ7QUFDQSxNQUFNQyxVQUFVLEdBQUcsNENBQW5CO0FBRUEsTUFBTUMsVUFBVSxHQUFHO0FBQ2pCVCxFQUFBQSxPQUFPLEVBQUVEO0FBRFEsQ0FBbkI7O0FBSUEsU0FBU1csY0FBVCxHQUEyQjtBQUN6QixTQUFPQyxnQkFBT0MsTUFBUCxDQUFjQyxPQUFPLENBQUNiLE9BQXRCLENB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QUQsQ0FBSixLQUFld0IsWUFBbEMsRUFBZ0Q7QUFDOUMsYUFBT0YsR0FBUDtBQUNEOztBQUVELFFBQUlHLE1BQUosYUFBSUEsTUFBSixlQUFJQSxNQUFNLENBQUVDLGNBQVosRUFBNEI7QUFDMUJKLE1BQUFBLEdBQUcsQ0FBQzNDLElBQUQsQ0FBSCxHQUFZOEMsTUFBTSxDQUFDQyxjQUFuQjtBQUNELEtBRkQsTUFFTyxJQUFJMUUsVUFBVSxDQUFDeUUsTUFBRCxFQUFTRSx1REFBVCxDQUFkLEVBQWdFO0FBQ3JFTCxNQUFBQSxHQUFHLENBQUMzQyxJQUFELENBQUgsR0FBWWlELGlDQUFaO0FBQ0Q7O0FBQ0QsV0FBT04sR0FBUDtBQUNELEdBWE0sRUFXSixFQVhJLENBQVA7QUFZRDs7QUFFRCxlQUFlTyxjQUFmLENBQStCQyxNQUEvQixFQUF1QztBQUNyQyxNQUFJO0FBQ0YsVUFBTSxxQkFBT0EsTUFBUCxDQUFOO0FBQ0QsR0FGRCxDQUVFLE9BQU9DLENBQVAsRUFBVTtBQUNWLFVBQU0sSUFBSUMsS0FBSixDQUFXLHNEQUFELEdBQ0MsSUFBR0YsTUFBTyw0Q0FEckIsQ0FBTjtBQUVEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbWtkaXJwLCBzeXN0ZW0sIGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB7IHJvb3REaXIgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IHtcbiAgU3RvcmVEZXByZWNhdGVkRGVmYXVsdENhcGFiaWxpdHlBY3Rpb24sIERFRkFVTFRfQ0FQU19BUkcsXG59IGZyb20gJy4vY2xpL2FyZ3BhcnNlLWFjdGlvbnMnO1xuaW1wb3J0IGZpbmRVcCBmcm9tICdmaW5kLXVwJztcbmltcG9ydCB7IGdldERlZmF1bHRzRnJvbVNjaGVtYSB9IGZyb20gJy4vc2NoZW1hL3NjaGVtYSc7XG5cbmNvbnN0IG5wbVBhY2thZ2UgPSBmcy5yZWFkUGFja2FnZUpzb25Gcm9tKF9fZGlybmFtZSk7XG5cbmNvbnN0IEFQUElVTV9WRVIgPSBucG1QYWNrYWdlLnZlcnNpb247XG5jb25zdCBNSU5fTk9ERV9WRVJTSU9OID0gbnBtUGFja2FnZS5lbmdpbmVzLm5vZGU7XG5cbmNvbnN0IEdJVF9NRVRBX1JPT1QgPSAnLmdpdCc7XG5jb25zdCBHSVRfQklOQVJZID0gYGdpdCR7c3lzdGVtLmlzV2luZG93cygpID8gJy5leGUnIDogJyd9YDtcbmNvbnN0IEdJVEhVQl9BUEkgPSAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9hcHBpdW0vYXBwaXVtJztcblxuY29uc3QgQlVJTERfSU5GTyA9IHtcbiAgdmVyc2lvbjogQVBQSVVNX1ZFUixcbn07XG5cbmZ1bmN0aW9uIGdldE5vZGVWZXJzaW9uICgpIHtcbiAgcmV0dXJuIHNlbXZlci5jb2VyY2UocHJvY2Vzcy52ZXJzaW9uKTtcbn1cblxuZnVuY3Rpb24gaXNTdWJDbGFzcyAoY2FuZGlkYXRlQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgcmV0dXJuIF8uaXNGdW5jdGlvbihzdXBlckNsYXNzKSAmJiBfLmlzRnVuY3Rpb24oY2FuZGlkYXRlQ2xhc3MpXG4gICAgJiYgKGNhbmRpZGF0ZUNsYXNzLnByb3RvdHlwZSBpbnN0YW5jZW9mIHN1cGVyQ2xhc3MgfHwgY2FuZGlkYXRlQ2xhc3MgPT09IHN1cGVyQ2xhc3MpO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVCdWlsZEluZm8gKHVzZUdpdGh1YkFwaUZhbGxiYWNrID0gZmFsc2UpIHtcbiAgY29uc3Qgc2hhID0gYXdhaXQgZ2V0R2l0UmV2KHVzZUdpdGh1YkFwaUZhbGxiYWNrKTtcbiAgaWYgKCFzaGEpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgQlVJTERfSU5GT1snZ2l0LXNoYSddID0gc2hhO1xuICBjb25zdCBidWlsdCA9IGF3YWl0IGdldEdpdFRpbWVzdGFtcChzaGEsIHVzZUdpdGh1YkFwaUZhbGxiYWNrKTtcbiAgaWYgKCFfLmlzRW1wdHkoYnVpbHQpKSB7XG4gICAgQlVJTERfSU5GTy5idWlsdCA9IGJ1aWx0O1xuICB9XG59XG5cbi8qKlxuICogRmluZHMgdGhlIEdpdCBtZXRhZGF0YSBkaXIgKHNlZSBgR0lUX01FVEFfUk9PVGApXG4gKlxuICogVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBBcHBpdW0gY2Fubm90IGFzc3VtZSBgcGFja2FnZS5qc29uYCBhbmQgYC5naXRgIGFyZSBpbiB0aGUgc2FtZVxuICogZGlyZWN0b3J5LiAgTW9ub3JlcG9zLCBzZWU/XG4gKiBAcmV0dXJucyB7c3RyaW5nfHZvaWR9IFBhdGggdG8gZGlyIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBmb3VuZFxuICovXG5hc3luYyBmdW5jdGlvbiBmaW5kR2l0Um9vdCAoKSB7XG4gIHJldHVybiBhd2FpdCBmaW5kVXAoR0lUX01FVEFfUk9PVCwge2N3ZDogcm9vdERpciwgdHlwZTogJ2RpcmVjdG9yeSd9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0R2l0UmV2ICh1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGNvbnN0IGdpdFJvb3QgPSBhd2FpdCBmaW5kR2l0Um9vdCgpO1xuICBpZiAoZ2l0Um9vdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoR0lUX0JJTkFSWSwgWydyZXYtcGFyc2UnLCAnSEVBRCddLCB7XG4gICAgICAgIGN3ZDogZ2l0Um9vdFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gc3Rkb3V0LnRyaW0oKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cblxuICBpZiAoIXVzZUdpdGh1YkFwaUZhbGxiYWNrKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHJlc0JvZHlPYmogPSAoYXdhaXQgYXhpb3MuZ2V0KGAke0dJVEhVQl9BUEl9L3RhZ3NgLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdVc2VyLUFnZW50JzogYEFwcGl1bSAke0FQUElVTV9WRVJ9YFxuICAgICAgfVxuICAgIH0pKS5kYXRhO1xuICAgIGlmIChfLmlzQXJyYXkocmVzQm9keU9iaikpIHtcbiAgICAgIGZvciAoY29uc3Qge25hbWUsIGNvbW1pdH0gb2YgcmVzQm9keU9iaikge1xuICAgICAgICBpZiAobmFtZSA9PT0gYHYke0FQUElVTV9WRVJ9YCAmJiBjb21taXQgJiYgY29tbWl0LnNoYSkge1xuICAgICAgICAgIHJldHVybiBjb21taXQuc2hhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG4gIHJldHVybiBudWxsO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRHaXRUaW1lc3RhbXAgKGNvbW1pdFNoYSwgdXNlR2l0aHViQXBpRmFsbGJhY2sgPSBmYWxzZSkge1xuICBjb25zdCBnaXRSb290ID0gYXdhaXQgZmluZEdpdFJvb3QoKTtcbiAgaWYgKGdpdFJvb3QpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKEdJVF9CSU5BUlksIFsnc2hvdycsICctcycsICctLWZvcm1hdD0lY2knLCBjb21taXRTaGFdLCB7XG4gICAgICAgIGN3ZDogZ2l0Um9vdFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gc3Rkb3V0LnRyaW0oKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cblxuICBpZiAoIXVzZUdpdGh1YkFwaUZhbGxiYWNrKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHJlc0JvZHlPYmogPSAoYXdhaXQgYXhpb3MuZ2V0KGAke0dJVEhVQl9BUEl9L2NvbW1pdHMvJHtjb21taXRTaGF9YCwge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnVXNlci1BZ2VudCc6IGBBcHBpdW0gJHtBUFBJVU1fVkVSfWBcbiAgICAgIH1cbiAgICB9KSkuZGF0YTtcbiAgICBpZiAocmVzQm9keU9iaiAmJiByZXNCb2R5T2JqLmNvbW1pdCkge1xuICAgICAgaWYgKHJlc0JvZHlPYmouY29tbWl0LmNvbW1pdHRlciAmJiByZXNCb2R5T2JqLmNvbW1pdC5jb21taXR0ZXIuZGF0ZSkge1xuICAgICAgICByZXR1cm4gcmVzQm9keU9iai5jb21taXQuY29tbWl0dGVyLmRhdGU7XG4gICAgICB9XG4gICAgICBpZiAocmVzQm9keU9iai5jb21taXQuYXV0aG9yICYmIHJlc0JvZHlPYmouY29tbWl0LmF1dGhvci5kYXRlKSB7XG4gICAgICAgIHJldHVybiByZXNCb2R5T2JqLmNvbW1pdC5hdXRob3IuZGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGlnbikge31cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQHJldHVybiBNdXRhYmxlIG9iamVjdCBjb250YWluaW5nIEFwcGl1bSBidWlsZCBpbmZvcm1hdGlvbi4gQnkgZGVmYXVsdCBpdFxuICogb25seSBjb250YWlucyB0aGUgQXBwaXVtIHZlcnNpb24sIGJ1dCBpcyB1cGRhdGVkIHdpdGggdGhlIGJ1aWxkIHRpbWVzdGFtcFxuICogYW5kIGdpdCBjb21taXQgaGFzaCBhc3luY2hyb25vdXNseSBhcyBzb29uIGFzIGB1cGRhdGVCdWlsZEluZm9gIGlzIGNhbGxlZFxuICogYW5kIHN1Y2NlZWRzLlxuICovXG5mdW5jdGlvbiBnZXRCdWlsZEluZm8gKCkge1xuICByZXR1cm4gQlVJTERfSU5GTztcbn1cblxuZnVuY3Rpb24gY2hlY2tOb2RlT2sgKCkge1xuICBjb25zdCB2ZXJzaW9uID0gZ2V0Tm9kZVZlcnNpb24oKTtcbiAgaWYgKCFzZW12ZXIuc2F0aXNmaWVzKHZlcnNpb24sIE1JTl9OT0RFX1ZFUlNJT04pKSB7XG4gICAgbG9nZ2VyLmVycm9yQW5kVGhyb3coYE5vZGUgdmVyc2lvbiBtdXN0IGJlICR7TUlOX05PREVfVkVSU0lPTn0uIEN1cnJlbnRseSAke3ZlcnNpb24udmVyc2lvbn1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3YXJuTm9kZURlcHJlY2F0aW9ucyAoKSB7XG4gIC8qKlxuICAgKiBVbmNvbW1lbnQgdGhpcyBzZWN0aW9uIHRvIGdldCBub2RlIHZlcnNpb24gZGVwcmVjYXRpb24gd2FybmluZ3NcbiAgICogQWxzbyBhZGQgdGVzdCBjYXNlcyB0byBjb25maWctc3BlY3MuanMgdG8gY292ZXIgdGhlIGNhc2VzIGFkZGVkXG4gICAqKi9cblxuICAvLyBjb25zdCB2ZXJzaW9uID0gZ2V0Tm9kZVZlcnNpb24oKTtcbiAgLy8gaWYgKHZlcnNpb24ubWFqb3IgPCA4KSB7XG4gIC8vICAgbG9nZ2VyLndhcm4oYEFwcGl1bSBzdXBwb3J0IGZvciB2ZXJzaW9ucyBvZiBub2RlIDwgJHt2ZXJzaW9uLm1ham9yfSBoYXMgYmVlbiBgICtcbiAgLy8gICAgICAgICAgICAgICAnZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIFBsZWFzZSAnICtcbiAgLy8gICAgICAgICAgICAgICAndXBncmFkZSEnKTtcbiAgLy8gfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzaG93Q29uZmlnICgpIHtcbiAgYXdhaXQgdXBkYXRlQnVpbGRJbmZvKHRydWUpO1xuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShnZXRCdWlsZEluZm8oKSkpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbn1cblxuZnVuY3Rpb24gZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MgKHBhcnNlciwgYXJncykge1xuICAvLyBob3BlZnVsbHkgdGhlc2UgZnVuY3Rpb24gbmFtZXMgYXJlIGRlc2NyaXB0aXZlIGVub3VnaFxuXG4gIGZ1bmN0aW9uIHR5cGVzRGlmZmVyIChkZXN0KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBhcmdzW2Rlc3RdICE9PSB0eXBlb2YgZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVmYXVsdFZhbHVlSXNBcnJheSAoZGVzdCkge1xuICAgIHJldHVybiBfLmlzQXJyYXkoZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFyZ3NWYWx1ZUlzQXJyYXkgKGRlc3QpIHtcbiAgICByZXR1cm4gXy5pc0FycmF5KGFyZ3NbZGVzdF0pO1xuICB9XG5cbiAgZnVuY3Rpb24gYXJyYXlzRGlmZmVyIChkZXN0KSB7XG4gICAgcmV0dXJuIF8uZGlmZmVyZW5jZShhcmdzW2Rlc3RdLCBkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF0pLmxlbmd0aCA+IDA7XG4gIH1cblxuICBmdW5jdGlvbiB2YWx1ZXNVbmVxdWFsIChkZXN0KSB7XG4gICAgcmV0dXJuIGFyZ3NbZGVzdF0gIT09IGRlZmF1bHRzRnJvbVNjaGVtYVtkZXN0XTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlZmF1bHRJc0RlZmluZWQgKGRlc3QpIHtcbiAgICByZXR1cm4gIV8uaXNVbmRlZmluZWQoZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdKTtcbiAgfVxuXG4gIC8vIG5vdGUgdGhhdCBgXy5vdmVyRXZlcnlgIGlzIGxpa2UgYW4gXCJBTkRcIiwgYW5kIGBfLm92ZXJTb21lYCBpcyBsaWtlIGFuIFwiT1JcIlxuXG4gIGNvbnN0IGFyZ1ZhbHVlTm90QXJyYXlPckFycmF5c0RpZmZlciA9IF8ub3ZlclNvbWUoW1xuICAgIF8ubmVnYXRlKGFyZ3NWYWx1ZUlzQXJyYXkpLFxuICAgIGFycmF5c0RpZmZlclxuICBdKTtcblxuICBjb25zdCBkZWZhdWx0VmFsdWVOb3RBcnJheUFuZFZhbHVlc1VuZXF1YWwgPSBfLm92ZXJFdmVyeShbXG4gICAgXy5uZWdhdGUoZGVmYXVsdFZhbHVlSXNBcnJheSksIHZhbHVlc1VuZXF1YWxcbiAgXSk7XG5cbiAgLyoqXG4gICAqIFRoaXMgdXNlZCB0byBiZSBhIGhpZGVvdXMgY29uZGl0aW9uYWwsIGJ1dCBpdCdzIGJyb2tlbiB1cCBpbnRvIGEgaGlkZW91cyBmdW5jdGlvbiBpbnN0ZWFkLlxuICAgKiBob3BlZnVsbHkgdGhpcyBtYWtlcyB0aGluZ3MgYSBsaXR0bGUgbW9yZSB1bmRlcnN0YW5kYWJsZS5cbiAgICogLSBjaGVja3MgaWYgdGhlIGRlZmF1bHQgdmFsdWUgaXMgZGVmaW5lZFxuICAgKiAtIGlmIHNvLCBhbmQgdGhlIGRlZmF1bHQgaXMgbm90IGFuIGFycmF5OlxuICAgKiAgIC0gZW5zdXJlcyB0aGUgdHlwZXMgYXJlIHRoZSBzYW1lXG4gICAqICAgLSBlbnN1cmVzIHRoZSB2YWx1ZXMgYXJlIGVxdWFsXG4gICAqIC0gaWYgc28sIGFuZCB0aGUgZGVmYXVsdCBpcyBhbiBhcnJheTpcbiAgICogICAtIGVuc3VyZXMgdGhlIGFyZ3MgdmFsdWUgaXMgYW4gYXJyYXlcbiAgICogICAtIGVuc3VyZXMgdGhlIGFyZ3MgdmFsdWVzIGRvIG5vdCBkaWZmZXIgZnJvbSB0aGUgZGVmYXVsdCB2YWx1ZXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRlc3QgLSBhcmd1bWVudCBuYW1lIChgZGVzdGAgdmFsdWUpXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgY29uc3QgaXNOb3REZWZhdWx0ID0gXy5vdmVyRXZlcnkoW1xuICAgIGRlZmF1bHRJc0RlZmluZWQsXG4gICAgXy5vdmVyU29tZShbXG4gICAgICB0eXBlc0RpZmZlcixcbiAgICAgIF8ub3ZlckV2ZXJ5KFtcbiAgICAgICAgZGVmYXVsdFZhbHVlSXNBcnJheSxcbiAgICAgICAgYXJnVmFsdWVOb3RBcnJheU9yQXJyYXlzRGlmZmVyXG4gICAgICBdKSxcbiAgICAgIGRlZmF1bHRWYWx1ZU5vdEFycmF5QW5kVmFsdWVzVW5lcXVhbFxuICAgIF0pXG4gIF0pO1xuXG4gIGNvbnN0IGRlZmF1bHRzRnJvbVNjaGVtYSA9IGdldERlZmF1bHRzRnJvbVNjaGVtYSgpO1xuXG4gIHJldHVybiBfLnBpY2tCeShhcmdzLCAoX18sIGtleSkgPT4gaXNOb3REZWZhdWx0KGtleSkpO1xufVxuXG5mdW5jdGlvbiBnZXREZXByZWNhdGVkQXJncyAocGFyc2VyLCBhcmdzKSB7XG4gIC8vIGdvIHRocm91Z2ggdGhlIHNlcnZlciBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGFuZCBmaWd1cmVcbiAgLy8gb3V0IHdoaWNoIG9mIHRoZSBvbmVzIHVzZWQgYXJlIGRlcHJlY2F0ZWRcbiAgcmV0dXJuIHBhcnNlci5yYXdBcmdzLnJlZHVjZSgoYWNjLCBbW25hbWVdLCB7ZGVzdCwgZGVmYXVsdDogZGVmYXVsdFZhbHVlLCBhY3Rpb259XSkgPT4ge1xuICAgIGlmICghYXJnc1tkZXN0XSB8fCBhcmdzW2Rlc3RdID09PSBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfVxuXG4gICAgaWYgKGFjdGlvbj8uZGVwcmVjYXRlZF9mb3IpIHtcbiAgICAgIGFjY1tuYW1lXSA9IGFjdGlvbi5kZXByZWNhdGVkX2ZvcjtcbiAgICB9IGVsc2UgaWYgKGlzU3ViQ2xhc3MoYWN0aW9uLCBTdG9yZURlcHJlY2F0ZWREZWZhdWx0Q2FwYWJpbGl0eUFjdGlvbikpIHtcbiAgICAgIGFjY1tuYW1lXSA9IERFRkFVTFRfQ0FQU19BUkc7XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVUbXBEaXIgKHRtcERpcikge1xuICB0cnkge1xuICAgIGF3YWl0IG1rZGlycCh0bXBEaXIpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBXZSBjb3VsZCBub3QgZW5zdXJlIHRoYXQgdGhlIHRlbXAgZGlyIHlvdSBzcGVjaWZpZWQgYCArXG4gICAgICAgICAgICAgICAgICAgIGAoJHt0bXBEaXJ9KSBleGlzdHMuIFBsZWFzZSBtYWtlIHN1cmUgaXQncyB3cml0ZWFibGUuYCk7XG4gIH1cbn1cblxuZXhwb3J0IHtcbiAgZ2V0QnVpbGRJbmZvLCBjaGVja05vZGVPaywgc2hvd0NvbmZpZyxcbiAgd2Fybk5vZGVEZXByZWNhdGlvbnMsIHZhbGlkYXRlVG1wRGlyLCBnZXROb25EZWZhdWx0U2VydmVyQXJncyxcbiAgZ2V0R2l0UmV2LCBBUFBJVU1fVkVSLCB1cGRhdGVCdWlsZEluZm8sXG4gIGdldERlcHJlY2F0ZWRBcmdzXG59O1xuIl0sImZpbGUiOiJsaWIvY29uZmlnLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
218
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb25maWcuanMiXSwibmFtZXMiOlsibnBtUGFja2FnZSIsImZzIiwicmVhZFBhY2thZ2VKc29uRnJvbSIsIl9fZGlybmFtZSIsIkFQUElVTV9WRVIiLCJ2ZXJzaW9uIiwiTUlOX05PREVfVkVSU0lPTiIsImVuZ2luZXMiLCJub2RlIiwiR0lUX01FVEFfUk9PVCIsIkdJVF9CSU5BUlkiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJHSVRIVUJfQVBJIiwiQlVJTERfSU5GTyIsImdldE5vZGVWZXJzaW9uIiwic2VtdmVyIiwiY29lcmNlIiwicHJvY2VzcyIsInVwZGF0ZUJ1aWxkSW5mbyIsInVzZUdpdGh1YkFwaUZhbGxiYWNrIiwic2hhIiwiZ2V0R2l0UmV2IiwiYnVpbHQiLCJnZXRHaXRUaW1lc3RhbXAiLCJfIiwiaXNFbXB0eSIsImZpbmRHaXRSb290IiwiY3dkIiwicm9vdERpciIsInR5cGUiLCJnaXRSb290Iiwic3Rkb3V0IiwidHJpbSIsImlnbiIsInJlc0JvZHlPYmoiLCJheGlvcyIsImdldCIsImhlYWRlcnMiLCJkYXRhIiwiaXNBcnJheSIsIm5hbWUiLCJjb21taXQiLCJjb21taXRTaGEiLCJjb21taXR0ZXIiLCJkYXRlIiwiYXV0aG9yIiwiZ2V0QnVpbGRJbmZvIiwiY2hlY2tOb2RlT2siLCJzYXRpc2ZpZXMiLCJsb2dnZXIiLCJlcnJvckFuZFRocm93Iiwid2Fybk5vZGVEZXByZWNhdGlvbnMiLCJzaG93Q29uZmlnIiwiY29uc29sZSIsImxvZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZXROb25EZWZhdWx0U2VydmVyQXJncyIsInBhcnNlciIsImFyZ3MiLCJ0eXBlc0RpZmZlciIsImRlc3QiLCJkZWZhdWx0c0Zyb21TY2hlbWEiLCJkZWZhdWx0VmFsdWVJc0FycmF5IiwiYXJnc1ZhbHVlSXNBcnJheSIsImFycmF5c0RpZmZlciIsImRpZmZlcmVuY2UiLCJsZW5ndGgiLCJ2YWx1ZXNVbmVxdWFsIiwiZGVmYXVsdElzRGVmaW5lZCIsImlzVW5kZWZpbmVkIiwiYXJnVmFsdWVOb3RBcnJheU9yQXJyYXlzRGlmZmVyIiwib3ZlclNvbWUiLCJuZWdhdGUiLCJkZWZhdWx0VmFsdWVOb3RBcnJheUFuZFZhbHVlc1VuZXF1YWwiLCJvdmVyRXZlcnkiLCJpc05vdERlZmF1bHQiLCJwaWNrQnkiLCJfXyIsImtleSIsInZhbGlkYXRlVG1wRGlyIiwidG1wRGlyIiwiZSIsIkVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHQyxZQUFHQyxtQkFBSCxDQUF1QkMsU0FBdkIsQ0FBbkI7O0FBRUEsTUFBTUMsVUFBVSxHQUFHSixVQUFVLENBQUNLLE9BQTlCOztBQUNBLE1BQU1DLGdCQUFnQixHQUFHTixVQUFVLENBQUNPLE9BQVgsQ0FBbUJDLElBQTVDO0FBRUEsTUFBTUMsYUFBYSxHQUFHLE1BQXRCO0FBQ0EsTUFBTUMsVUFBVSxHQUFJLE1BQUtDLGdCQUFPQyxTQUFQLEtBQXFCLE1BQXJCLEdBQThCLEVBQUcsRUFBMUQ7QUFDQSxNQUFNQyxVQUFVLEdBQUcsNENBQW5CO0FBRUEsTUFBTUMsVUFBVSxHQUFHO0FBQ2pCVCxFQUFBQSxPQUFPLEVBQUVEO0FBRFEsQ0FBbkI7O0FBSUEsU0FBU1csY0FBVCxHQUEyQjtBQUN6QixTQUFPQyxnQkFBT0MsTUFBUCxDQUFjQyxPQUFPLENBQUNiLE9BQXRCLENBQVA7QUFDRDs7QUFFRCxlQUFlYyxlQUFmLENBQWdDQyxvQkFBb0IsR0FBRyxLQUF2RCxFQUE4RDtBQUM1RCxRQUFNQyxHQUFHLEdBQUcsTUFBTUMsU0FBUyxDQUFDRixvQkFBRCxDQUEzQjs7QUFDQSxNQUFJLENBQUNDLEdBQUwsRUFBVTtBQUNSO0FBQ0Q7O0FBQ0RQLEVBQUFBLFVBQVUsQ0FBQyxTQUFELENBQVYsR0FBd0JPLEdBQXhCO0FBQ0EsUUFBTUUsS0FBSyxHQUFHLE1BQU1DLGVBQWUsQ0FBQ0gsR0FB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QkFEVSxFQUVWUSw4QkFGVSxDQUFaLENBRlMsRUFNVEcsb0NBTlMsQ0FBWCxDQUYrQixDQUFaLENBQXJCOztBQVlBLFFBQU1aLGtCQUFrQixHQUFHLG9DQUEzQjtBQUVBLFNBQU90QyxnQkFBRXFELE1BQUYsQ0FBU2xCLElBQVQsRUFBZSxDQUFDbUIsRUFBRCxFQUFLQyxHQUFMLEtBQWFILFlBQVksQ0FBQ0csR0FBRCxDQUF4QyxDQUFQO0FBQ0Q7O0FBRUQsZUFBZUMsY0FBZixDQUErQkMsTUFBL0IsRUFBdUM7QUFDckMsTUFBSTtBQUNGLFVBQU0scUJBQU9BLE1BQVAsQ0FBTjtBQUNELEdBRkQsQ0FFRSxPQUFPQyxDQUFQLEVBQVU7QUFDVixVQUFNLElBQUlDLEtBQUosQ0FBVyxzREFBRCxHQUNDLElBQUdGLE1BQU8sNENBRHJCLENBQU47QUFFRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IG1rZGlycCwgc3lzdGVtLCBmcyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgeyByb290RGlyIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCBmaW5kVXAgZnJvbSAnZmluZC11cCc7XG5pbXBvcnQgeyBnZXREZWZhdWx0c0Zyb21TY2hlbWEgfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuXG5jb25zdCBucG1QYWNrYWdlID0gZnMucmVhZFBhY2thZ2VKc29uRnJvbShfX2Rpcm5hbWUpO1xuXG5jb25zdCBBUFBJVU1fVkVSID0gbnBtUGFja2FnZS52ZXJzaW9uO1xuY29uc3QgTUlOX05PREVfVkVSU0lPTiA9IG5wbVBhY2thZ2UuZW5naW5lcy5ub2RlO1xuXG5jb25zdCBHSVRfTUVUQV9ST09UID0gJy5naXQnO1xuY29uc3QgR0lUX0JJTkFSWSA9IGBnaXQke3N5c3RlbS5pc1dpbmRvd3MoKSA/ICcuZXhlJyA6ICcnfWA7XG5jb25zdCBHSVRIVUJfQVBJID0gJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXBwaXVtL2FwcGl1bSc7XG5cbmNvbnN0IEJVSUxEX0lORk8gPSB7XG4gIHZlcnNpb246IEFQUElVTV9WRVIsXG59O1xuXG5mdW5jdGlvbiBnZXROb2RlVmVyc2lvbiAoKSB7XG4gIHJldHVybiBzZW12ZXIuY29lcmNlKHByb2Nlc3MudmVyc2lvbik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUJ1aWxkSW5mbyAodXNlR2l0aHViQXBpRmFsbGJhY2sgPSBmYWxzZSkge1xuICBjb25zdCBzaGEgPSBhd2FpdCBnZXRHaXRSZXYodXNlR2l0aHViQXBpRmFsbGJhY2spO1xuICBpZiAoIXNoYSkge1xuICAgIHJldHVybjtcbiAgfVxuICBCVUlMRF9JTkZPWydnaXQtc2hhJ10gPSBzaGE7XG4gIGNvbnN0IGJ1aWx0ID0gYXdhaXQgZ2V0R2l0VGltZXN0YW1wKHNoYSwgdXNlR2l0aHViQXBpRmFsbGJhY2spO1xuICBpZiAoIV8uaXNFbXB0eShidWlsdCkpIHtcbiAgICBCVUlMRF9JTkZPLmJ1aWx0ID0gYnVpbHQ7XG4gIH1cbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgR2l0IG1ldGFkYXRhIGRpciAoc2VlIGBHSVRfTUVUQV9ST09UYClcbiAqXG4gKiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIEFwcGl1bSBjYW5ub3QgYXNzdW1lIGBwYWNrYWdlLmpzb25gIGFuZCBgLmdpdGAgYXJlIGluIHRoZSBzYW1lXG4gKiBkaXJlY3RvcnkuICBNb25vcmVwb3MsIHNlZT9cbiAqIEByZXR1cm5zIHtzdHJpbmd8dm9pZH0gUGF0aCB0byBkaXIgb3IgYHVuZGVmaW5lZGAgaWYgbm90IGZvdW5kXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGZpbmRHaXRSb290ICgpIHtcbiAgcmV0dXJuIGF3YWl0IGZpbmRVcChHSVRfTUVUQV9ST09ULCB7Y3dkOiByb290RGlyLCB0eXBlOiAnZGlyZWN0b3J5J30pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRHaXRSZXYgKHVzZUdpdGh1YkFwaUZhbGxiYWNrID0gZmFsc2UpIHtcbiAgY29uc3QgZ2l0Um9vdCA9IGF3YWl0IGZpbmRHaXRSb290KCk7XG4gIGlmIChnaXRSb290KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYyhHSVRfQklOQVJZLCBbJ3Jldi1wYXJzZScsICdIRUFEJ10sIHtcbiAgICAgICAgY3dkOiBnaXRSb290XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzdGRvdXQudHJpbSgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxuXG4gIGlmICghdXNlR2l0aHViQXBpRmFsbGJhY2spIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzQm9keU9iaiA9IChhd2FpdCBheGlvcy5nZXQoYCR7R0lUSFVCX0FQSX0vdGFnc2AsIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ1VzZXItQWdlbnQnOiBgQXBwaXVtICR7QVBQSVVNX1ZFUn1gXG4gICAgICB9XG4gICAgfSkpLmRhdGE7XG4gICAgaWYgKF8uaXNBcnJheShyZXNCb2R5T2JqKSkge1xuICAgICAgZm9yIChjb25zdCB7bmFtZSwgY29tbWl0fSBvZiByZXNCb2R5T2JqKSB7XG4gICAgICAgIGlmIChuYW1lID09PSBgdiR7QVBQSVVNX1ZFUn1gICYmIGNvbW1pdCAmJiBjb21taXQuc2hhKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbW1pdC5zaGE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGlnbikge31cbiAgcmV0dXJuIG51bGw7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEdpdFRpbWVzdGFtcCAoY29tbWl0U2hhLCB1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGNvbnN0IGdpdFJvb3QgPSBhd2FpdCBmaW5kR2l0Um9vdCgpO1xuICBpZiAoZ2l0Um9vdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoR0lUX0JJTkFSWSwgWydzaG93JywgJy1zJywgJy0tZm9ybWF0PSVjaScsIGNvbW1pdFNoYV0sIHtcbiAgICAgICAgY3dkOiBnaXRSb290XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzdGRvdXQudHJpbSgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxuXG4gIGlmICghdXNlR2l0aHViQXBpRmFsbGJhY2spIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzQm9keU9iaiA9IChhd2FpdCBheGlvcy5nZXQoYCR7R0lUSFVCX0FQSX0vY29tbWl0cy8ke2NvbW1pdFNoYX1gLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdVc2VyLUFnZW50JzogYEFwcGl1bSAke0FQUElVTV9WRVJ9YFxuICAgICAgfVxuICAgIH0pKS5kYXRhO1xuICAgIGlmIChyZXNCb2R5T2JqICYmIHJlc0JvZHlPYmouY29tbWl0KSB7XG4gICAgICBpZiAocmVzQm9keU9iai5jb21taXQuY29tbWl0dGVyICYmIHJlc0JvZHlPYmouY29tbWl0LmNvbW1pdHRlci5kYXRlKSB7XG4gICAgICAgIHJldHVybiByZXNCb2R5T2JqLmNvbW1pdC5jb21taXR0ZXIuZGF0ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXNCb2R5T2JqLmNvbW1pdC5hdXRob3IgJiYgcmVzQm9keU9iai5jb21taXQuYXV0aG9yLmRhdGUpIHtcbiAgICAgICAgcmV0dXJuIHJlc0JvZHlPYmouY29tbWl0LmF1dGhvci5kYXRlO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoaWduKSB7fVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBAcmV0dXJuIE11dGFibGUgb2JqZWN0IGNvbnRhaW5pbmcgQXBwaXVtIGJ1aWxkIGluZm9ybWF0aW9uLiBCeSBkZWZhdWx0IGl0XG4gKiBvbmx5IGNvbnRhaW5zIHRoZSBBcHBpdW0gdmVyc2lvbiwgYnV0IGlzIHVwZGF0ZWQgd2l0aCB0aGUgYnVpbGQgdGltZXN0YW1wXG4gKiBhbmQgZ2l0IGNvbW1pdCBoYXNoIGFzeW5jaHJvbm91c2x5IGFzIHNvb24gYXMgYHVwZGF0ZUJ1aWxkSW5mb2AgaXMgY2FsbGVkXG4gKiBhbmQgc3VjY2VlZHMuXG4gKi9cbmZ1bmN0aW9uIGdldEJ1aWxkSW5mbyAoKSB7XG4gIHJldHVybiBCVUlMRF9JTkZPO1xufVxuXG5mdW5jdGlvbiBjaGVja05vZGVPayAoKSB7XG4gIGNvbnN0IHZlcnNpb24gPSBnZXROb2RlVmVyc2lvbigpO1xuICBpZiAoIXNlbXZlci5zYXRpc2ZpZXModmVyc2lvbiwgTUlOX05PREVfVkVSU0lPTikpIHtcbiAgICBsb2dnZXIuZXJyb3JBbmRUaHJvdyhgTm9kZSB2ZXJzaW9uIG11c3QgYmUgJHtNSU5fTk9ERV9WRVJTSU9OfS4gQ3VycmVudGx5ICR7dmVyc2lvbi52ZXJzaW9ufWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHdhcm5Ob2RlRGVwcmVjYXRpb25zICgpIHtcbiAgLyoqXG4gICAqIFVuY29tbWVudCB0aGlzIHNlY3Rpb24gdG8gZ2V0IG5vZGUgdmVyc2lvbiBkZXByZWNhdGlvbiB3YXJuaW5nc1xuICAgKiBBbHNvIGFkZCB0ZXN0IGNhc2VzIHRvIGNvbmZpZy1zcGVjcy5qcyB0byBjb3ZlciB0aGUgY2FzZXMgYWRkZWRcbiAgICoqL1xuXG4gIC8vIGNvbnN0IHZlcnNpb24gPSBnZXROb2RlVmVyc2lvbigpO1xuICAvLyBpZiAodmVyc2lvbi5tYWpvciA8IDgpIHtcbiAgLy8gICBsb2dnZXIud2FybihgQXBwaXVtIHN1cHBvcnQgZm9yIHZlcnNpb25zIG9mIG5vZGUgPCAke3ZlcnNpb24ubWFqb3J9IGhhcyBiZWVuIGAgK1xuICAvLyAgICAgICAgICAgICAgICdkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gUGxlYXNlICcgK1xuICAvLyAgICAgICAgICAgICAgICd1cGdyYWRlIScpO1xuICAvLyB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNob3dDb25maWcgKCkge1xuICBhd2FpdCB1cGRhdGVCdWlsZEluZm8odHJ1ZSk7XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGdldEJ1aWxkSW5mbygpKSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxufVxuXG5mdW5jdGlvbiBnZXROb25EZWZhdWx0U2VydmVyQXJncyAocGFyc2VyLCBhcmdzKSB7XG4gIC8vIGhvcGVmdWxseSB0aGVzZSBmdW5jdGlvbiBuYW1lcyBhcmUgZGVzY3JpcHRpdmUgZW5vdWdoXG5cbiAgZnVuY3Rpb24gdHlwZXNEaWZmZXIgKGRlc3QpIHtcbiAgICByZXR1cm4gdHlwZW9mIGFyZ3NbZGVzdF0gIT09IHR5cGVvZiBkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF07XG4gIH1cblxuICBmdW5jdGlvbiBkZWZhdWx0VmFsdWVJc0FycmF5IChkZXN0KSB7XG4gICAgcmV0dXJuIF8uaXNBcnJheShkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF0pO1xuICB9XG5cbiAgZnVuY3Rpb24gYXJnc1ZhbHVlSXNBcnJheSAoZGVzdCkge1xuICAgIHJldHVybiBfLmlzQXJyYXkoYXJnc1tkZXN0XSk7XG4gIH1cblxuICBmdW5jdGlvbiBhcnJheXNEaWZmZXIgKGRlc3QpIHtcbiAgICByZXR1cm4gXy5kaWZmZXJlbmNlKGFyZ3NbZGVzdF0sIGRlZmF1bHRzRnJvbVNjaGVtYVtkZXN0XSkubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHZhbHVlc1VuZXF1YWwgKGRlc3QpIHtcbiAgICByZXR1cm4gYXJnc1tkZXN0XSAhPT0gZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVmYXVsdElzRGVmaW5lZCAoZGVzdCkge1xuICAgIHJldHVybiAhXy5pc1VuZGVmaW5lZChkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF0pO1xuICB9XG5cbiAgLy8gbm90ZSB0aGF0IGBfLm92ZXJFdmVyeWAgaXMgbGlrZSBhbiBcIkFORFwiLCBhbmQgYF8ub3ZlclNvbWVgIGlzIGxpa2UgYW4gXCJPUlwiXG5cbiAgY29uc3QgYXJnVmFsdWVOb3RBcnJheU9yQXJyYXlzRGlmZmVyID0gXy5vdmVyU29tZShbXG4gICAgXy5uZWdhdGUoYXJnc1ZhbHVlSXNBcnJheSksXG4gICAgYXJyYXlzRGlmZmVyXG4gIF0pO1xuXG4gIGNvbnN0IGRlZmF1bHRWYWx1ZU5vdEFycmF5QW5kVmFsdWVzVW5lcXVhbCA9IF8ub3ZlckV2ZXJ5KFtcbiAgICBfLm5lZ2F0ZShkZWZhdWx0VmFsdWVJc0FycmF5KSwgdmFsdWVzVW5lcXVhbFxuICBdKTtcblxuICAvKipcbiAgICogVGhpcyB1c2VkIHRvIGJlIGEgaGlkZW91cyBjb25kaXRpb25hbCwgYnV0IGl0J3MgYnJva2VuIHVwIGludG8gYSBoaWRlb3VzIGZ1bmN0aW9uIGluc3RlYWQuXG4gICAqIGhvcGVmdWxseSB0aGlzIG1ha2VzIHRoaW5ncyBhIGxpdHRsZSBtb3JlIHVuZGVyc3RhbmRhYmxlLlxuICAgKiAtIGNoZWNrcyBpZiB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBkZWZpbmVkXG4gICAqIC0gaWYgc28sIGFuZCB0aGUgZGVmYXVsdCBpcyBub3QgYW4gYXJyYXk6XG4gICAqICAgLSBlbnN1cmVzIHRoZSB0eXBlcyBhcmUgdGhlIHNhbWVcbiAgICogICAtIGVuc3VyZXMgdGhlIHZhbHVlcyBhcmUgZXF1YWxcbiAgICogLSBpZiBzbywgYW5kIHRoZSBkZWZhdWx0IGlzIGFuIGFycmF5OlxuICAgKiAgIC0gZW5zdXJlcyB0aGUgYXJncyB2YWx1ZSBpcyBhbiBhcnJheVxuICAgKiAgIC0gZW5zdXJlcyB0aGUgYXJncyB2YWx1ZXMgZG8gbm90IGRpZmZlciBmcm9tIHRoZSBkZWZhdWx0IHZhbHVlc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAtIGFyZ3VtZW50IG5hbWUgKGBkZXN0YCB2YWx1ZSlcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBjb25zdCBpc05vdERlZmF1bHQgPSBfLm92ZXJFdmVyeShbXG4gICAgZGVmYXVsdElzRGVmaW5lZCxcbiAgICBfLm92ZXJTb21lKFtcbiAgICAgIHR5cGVzRGlmZmVyLFxuICAgICAgXy5vdmVyRXZlcnkoW1xuICAgICAgICBkZWZhdWx0VmFsdWVJc0FycmF5LFxuICAgICAgICBhcmdWYWx1ZU5vdEFycmF5T3JBcnJheXNEaWZmZXJcbiAgICAgIF0pLFxuICAgICAgZGVmYXVsdFZhbHVlTm90QXJyYXlBbmRWYWx1ZXNVbmVxdWFsXG4gICAgXSlcbiAgXSk7XG5cbiAgY29uc3QgZGVmYXVsdHNGcm9tU2NoZW1hID0gZ2V0RGVmYXVsdHNGcm9tU2NoZW1hKCk7XG5cbiAgcmV0dXJuIF8ucGlja0J5KGFyZ3MsIChfXywga2V5KSA9PiBpc05vdERlZmF1bHQoa2V5KSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlVG1wRGlyICh0bXBEaXIpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBta2RpcnAodG1wRGlyKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgV2UgY291bGQgbm90IGVuc3VyZSB0aGF0IHRoZSB0ZW1wIGRpciB5b3Ugc3BlY2lmaWVkIGAgK1xuICAgICAgICAgICAgICAgICAgICBgKCR7dG1wRGlyfSkgZXhpc3RzLiBQbGVhc2UgbWFrZSBzdXJlIGl0J3Mgd3JpdGVhYmxlLmApO1xuICB9XG59XG5cbmV4cG9ydCB7XG4gIGdldEJ1aWxkSW5mbywgY2hlY2tOb2RlT2ssIHNob3dDb25maWcsXG4gIHdhcm5Ob2RlRGVwcmVjYXRpb25zLCB2YWxpZGF0ZVRtcERpciwgZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MsXG4gIGdldEdpdFJldiwgQVBQSVVNX1ZFUiwgdXBkYXRlQnVpbGRJbmZvXG59O1xuIl0sImZpbGUiOiJsaWIvY29uZmlnLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
package/build/lib/main.js CHANGED
@@ -359,4 +359,4 @@ if (require.main === module) {
359
359
  }require('source-map-support').install();
360
360
 
361
361
 
362
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9tYWluLmpzIl0sIm5hbWVzIjpbInByZWZsaWdodENoZWNrcyIsImFyZ3MiLCJ0aHJvd0luc3RlYWRPZkV4aXQiLCJsb25nU3RhY2t0cmFjZSIsInJlcXVpcmUiLCJhc3luY190cmFjZV9saW1pdCIsInNob3dDb25maWciLCJwcm9jZXNzIiwiZXhpdCIsInRtcERpciIsImVyciIsImxvZ2dlciIsImVycm9yIiwibWVzc2FnZSIsInJlZCIsImxvZ05vbkRlZmF1bHRBcmdzV2FybmluZyIsImluZm8iLCJsb2dEZWZhdWx0Q2FwYWJpbGl0aWVzV2FybmluZyIsImNhcHMiLCJsb2dTdGFydHVwSW5mbyIsInBhcnNlciIsIndlbGNvbWUiLCJBUFBJVU1fVkVSIiwiYXBwaXVtUmV2Iiwic2hvd0FyZ3MiLCJfIiwic2l6ZSIsImlzRW1wdHkiLCJkZWZhdWx0Q2FwYWJpbGl0aWVzIiwibG9nU2VydmVyUG9ydCIsImFkZHJlc3MiLCJwb3J0IiwibG9nTWVzc2FnZSIsImdldEFjdGl2ZVBsdWdpbnMiLCJwbHVnaW5Db25maWciLCJjb21wYWN0IiwiT2JqZWN0Iiwia2V5cyIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJmaWx0ZXIiLCJwbHVnaW5OYW1lIiwiaW5jbHVkZXMiLCJ1c2VQbHVnaW5zIiwibGVuZ3RoIiwiVVNFX0FMTF9QTFVHSU5TIiwibWFwIiwiUGx1Z2luQ2xhc3MiLCJkZWJ1ZyIsInN0YWNrIiwiZ2V0QWN0aXZlRHJpdmVycyIsImRyaXZlckNvbmZpZyIsImRyaXZlck5hbWUiLCJ1c2VEcml2ZXJzIiwiZ2V0U2VydmVyVXBkYXRlcnMiLCJkcml2ZXJDbGFzc2VzIiwicGx1Z2luQ2xhc3NlcyIsImtsYXNzIiwidXBkYXRlU2VydmVyIiwiQm9vbGVhbiIsImdldEV4dHJhTWV0aG9kTWFwIiwicmVkdWNlIiwibmV3TWV0aG9kTWFwIiwiaW5pdCIsInBhcnNlZEFyZ3MiLCJzdWJjb21tYW5kIiwiU0VSVkVSX1NVQkNPTU1BTkQiLCJwYXJzZUFyZ3MiLCJjb25maWdSZXN1bHQiLCJjb25maWdGaWxlIiwiZXJyb3JzIiwiRXJyb3IiLCJmaWxlcGF0aCIsInJlYXNvbiIsImRlZmF1bHRzRGVlcCIsImNvbmZpZyIsInNlcnZlciIsIkRSSVZFUl9UWVBFIiwiUExVR0lOX1RZUEUiLCJsb2dGaWx0ZXJzIiwiaXNzdWVzIiwicnVsZXMiLCJsb2dGYWN0b3J5IiwibG9hZFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NpbmdSdWxlcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ3YXJuIiwidXRpbCIsInBsdXJhbGl6ZSIsImFwcGl1bURyaXZlciIsIkFwcGl1bURyaXZlciIsIm1haW4iLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJzZXJ2ZXJVcGRhdGVycyIsImV4dHJhTWV0aG9kTWFwIiwic2VydmVyT3B0cyIsImhvc3RuYW1lIiwiYWxsb3dDb3JzIiwiYmFzZVBhdGgiLCJrZWVwQWxpdmVUaW1lb3V0Iiwibm9kZWNvbmZpZyIsImNsb3NlIiwic2lnbmFsIiwib25jZSIsIm9uU2lnbmFsIiwiZGVsZXRlQWxsU2Vzc2lvbnMiLCJmb3JjZSIsImUiLCJwcmludCIsInAiLCJtb2R1bGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQU9BLGVBQWVBLGVBQWYsQ0FBZ0NDLElBQWhDLEVBQXNDQyxrQkFBa0IsR0FBRyxLQUEzRCxFQUFrRTtBQUNoRSxNQUFJO0FBQ0Y7O0FBQ0EsUUFBSUQsSUFBSSxDQUFDRSxjQUFULEVBQXlCO0FBQ3ZCQyxNQUFBQSxPQUFPLENBQUMsVUFBRCxDQUFQLENBQW9CQyxpQkFBcEIsR0FBd0MsQ0FBQyxDQUF6QztBQUNEOztBQUNELFFBQUlKLElBQUksQ0FBQ0ssVUFBVCxFQUFxQjtBQUNuQixZQUFNLHlC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RixJQUFSLEtBQWlCbUIsTUFBckIsRUFBNkI7QUFDM0IsMEJBQVNuQixJQUFUO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbi8vIHRyYW5zcGlsZTptYWluXG4vLyBAdHMtY2hlY2tcblxuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIGFzIG1ha2VSb3V0ZXIsIHNlcnZlciBhcyBiYXNlU2VydmVyIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyBsb2dnZXIgYXMgbG9nRmFjdG9yeSwgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBhc3luY2lmeSB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBBcHBpdW1Ecml2ZXIgfSBmcm9tICcuL2FwcGl1bSc7XG5pbXBvcnQgeyBkcml2ZXJDb25maWcsIHBsdWdpbkNvbmZpZywgVVNFX0FMTF9QTFVHSU5TIH0gZnJvbSAnLi9jbGkvYXJncyc7XG5pbXBvcnQgeyBydW5FeHRlbnNpb25Db21tYW5kIH0gZnJvbSAnLi9jbGkvZXh0ZW5zaW9uJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgZ2V0UGFyc2VyLCBTRVJWRVJfU1VCQ09NTUFORCB9IGZyb20gJy4vY2xpL3BhcnNlcic7XG5pbXBvcnQgeyBBUFBJVU1fVkVSLCBjaGVja05vZGVPaywgZ2V0R2l0UmV2LCBnZXROb25EZWZhdWx0U2VydmVyQXJncywgc2hvd0NvbmZpZywgdmFsaWRhdGVUbXBEaXIsIHdhcm5Ob2RlRGVwcmVjYXRpb25zIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgcmVhZENvbmZpZ0ZpbGUgfSBmcm9tICcuL2NvbmZpZy1maWxlJztcbmltcG9ydCB7IERSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSB9IGZyb20gJy4vZXh0ZW5zaW9uLWNvbmZpZyc7XG5pbXBvcnQgcmVnaXN0ZXJOb2RlIGZyb20gJy4vZ3JpZC1yZWdpc3Rlcic7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJzsgLy8gbG9nZ2VyIG5lZWRzIHRvIHJlbWFpbiBmaXJzdCBvZiBpbXBvcnRzXG5pbXBvcnQgeyBpbml0IGFzIGxvZ3NpbmtJbml0IH0gZnJvbSAnLi9sb2dzaW5rJztcbmltcG9ydCB7IGdldERlZmF1bHRzRnJvbVNjaGVtYSwgdmFsaWRhdGUgfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuaW1wb3J0IHsgaW5zcGVjdE9iamVjdCB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqXG4gKiBAcGFyYW0ge1BhcnNlZEFyZ3N9IGFyZ3NcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3Rocm93SW5zdGVhZE9mRXhpdF1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcHJlZmxpZ2h0Q2hlY2tzIChhcmdzLCB0aHJvd0luc3RlYWRPZkV4aXQgPSBmYWxzZSkge1xuICB0cnkge1xuICAgIGNoZWNrTm9kZU9rKCk7XG4gICAgaWYgKGFyZ3MubG9uZ1N0YWNrdHJhY2UpIHtcbiAgICAgIHJlcXVpcmUoJ2xvbmdqb2huJykuYXN5bmNfdHJhY2VfbGltaXQgPSAtMTtcbiAgICB9XG4gICAgaWYgKGFyZ3Muc2hvd0NvbmZpZykge1xuICAgICAgYXdhaXQgc2hvd0NvbmZpZygpO1xuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH1cbiAgICB3YXJuTm9kZURlcHJlY2F0aW9ucygpO1xuXG4gICAgdmFsaWRhdGUoYXJncyk7XG5cbiAgICBpZiAoYXJncy50bXBEaXIpIHtcbiAgICAgIGF3YWl0IHZhbGlkYXRlVG1wRGlyKGFyZ3MudG1wRGlyKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihlcnIubWVzc2FnZS5yZWQpO1xuICAgIGlmICh0aHJvd0luc3RlYWRPZkV4aXQpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbG9nTm9uRGVmYXVsdEFyZ3NXYXJuaW5nIChhcmdzKSB7XG4gIGxvZ2dlci5pbmZvKCdOb24tZGVmYXVsdCBzZXJ2ZXIgYXJnczonKTtcbiAgaW5zcGVjdE9iamVjdChhcmdzKTtcbn1cblxuZnVuY3Rpb24gbG9nRGVmYXVsdENhcGFiaWxpdGllc1dhcm5pbmcgKGNhcHMpIHtcbiAgbG9nZ2VyLmluZm8oJ0RlZmF1bHQgY2FwYWJpbGl0aWVzLCB3aGljaCB3aWxsIGJlIGFkZGVkIHRvIGVhY2ggcmVxdWVzdCAnICtcbiAgICAgICAgICAgICAgJ3VubGVzcyBvdmVycmlkZGVuIGJ5IGRlc2lyZWQgY2FwYWJpbGl0aWVzOicpO1xuICBpbnNwZWN0T2JqZWN0KGNhcHMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBsb2dTdGFydHVwSW5mbyAocGFyc2VyLCBhcmdzKSB7XG4gIGxldCB3ZWxjb21lID0gYFdlbGNvbWUgdG8gQXBwaXVtIHYke0FQUElVTV9WRVJ9YDtcbiAgbGV0IGFwcGl1bVJldiA9IGF3YWl0IGdldEdpdFJldigpO1xuICBpZiAoYXBwaXVtUmV2KSB7XG4gICAgd2VsY29tZSArPSBgIChSRVYgJHthcHBpdW1SZXZ9KWA7XG4gIH1cbiAgbG9nZ2VyLmluZm8od2VsY29tZSk7XG5cbiAgbGV0IHNob3dBcmdzID0gZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MocGFyc2VyLCBhcmdzKTtcbiAgaWYgKF8uc2l6ZShzaG93QXJncykpIHtcbiAgICBsb2dOb25EZWZhdWx0QXJnc1dhcm5pbmcoc2hvd0FyZ3MpO1xuICB9XG4gIGlmICghXy5pc0VtcHR5KGFyZ3MuZGVmYXVsdENhcGFiaWxpdGllcykpIHtcbiAgICBsb2dEZWZhdWx0Q2FwYWJpbGl0aWVzV2FybmluZyhhcmdzLmRlZmF1bHRDYXBhYmlsaXRpZXMpO1xuICB9XG4gIC8vIFRPRE86IGJyaW5nIGJhY2sgbG9nbGV2ZWwgcmVwb3J0aW5nIGJlbG93IG9uY2UgbG9nZ2VyIGlzIGZsdXNoZWQgb3V0XG4gIC8vIGxvZ2dlci5pbmZvKCdDb25zb2xlIExvZ0xldmVsOiAnICsgbG9nZ2VyLnRyYW5zcG9ydHMuY29uc29sZS5sZXZlbCk7XG4gIC8vIGlmIChsb2dnZXIudHJhbnNwb3J0cy5maWxlKSB7XG4gIC8vICAgbG9nZ2VyLmluZm8oJ0ZpbGUgTG9nTGV2ZWw6ICcgKyBsb2dnZXIudHJhbnNwb3J0cy5maWxlLmxldmVsKTtcbiAgLy8gfVxufVxuXG5mdW5jdGlvbiBsb2dTZXJ2ZXJQb3J0IChhZGRyZXNzLCBwb3J0KSB7XG4gIGxldCBsb2dNZXNzYWdlID0gYEFwcGl1bSBSRVNUIGh0dHAgaW50ZXJmYWNlIGxpc3RlbmVyIHN0YXJ0ZWQgb24gYCArXG4gICAgICAgICAgICAgICAgICAgYCR7YWRkcmVzc306JHtwb3J0fWA7XG4gIGxvZ2dlci5pbmZvKGxvZ01lc3NhZ2UpO1xufVxuXG4vKipcbiAqIEZpbmQgYW55IHBsdWdpbiBuYW1lIHdoaWNoIGhhcyBiZWVuIGluc3RhbGxlZCwgYW5kIHdoaWNoIGhhcyBiZWVuIHJlcXVlc3RlZCBmb3IgYWN0aXZhdGlvbiBieVxuICogdXNpbmcgdGhlIC0tcGx1Z2lucyBmbGFnLCBhbmQgdHVybiBlYWNoIG9uZSBpbnRvIGl0cyBjbGFzcywgc28gd2UgY2FuIHNlbmQgdGhlbSBhcyBvYmplY3RzIHRvXG4gKiB0aGUgc2VydmVyIGluaXQuIFdlIGFsc28gd2FudCB0byBzZW5kL2Fzc2lnbiB0aGVtIHRvIHRoZSB1bWJyZWxsYSBkcml2ZXIgc28gaXQgY2FuIHVzZSB0aGVtIHRvXG4gKiB3cmFwIGNvbW1hbmQgZXhlY3V0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGFyZ3MgLSBhcmdwYXJzZXIgcGFyc2VkIGRpY3RcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3BsdWdpbi1jb25maWcnKS5kZWZhdWx0fSBwbHVnaW5Db25maWcgLSBhIHBsdWdpbiBleHRlbnNpb24gY29uZmlnXG4gKiBAcmV0dXJucyB7KHtwbHVnaW5OYW1lOiBzdHJpbmd9ICYgKCguLi5hcmdzOiBhbnlbXSkgPT4gdW5rbm93bikpW119XG4gKi9cbmZ1bmN0aW9uIGdldEFjdGl2ZVBsdWdpbnMgKGFyZ3MsIHBsdWdpbkNvbmZpZykge1xuICByZXR1cm4gXy5jb21wYWN0KE9iamVjdC5rZXlzKHBsdWdpbkNvbmZpZy5pbnN0YWxsZWRFeHRlbnNpb25zKS5maWx0ZXIoKHBsdWdpbk5hbWUpID0+XG4gICAgXy5pbmNsdWRlcyhhcmdzLnVzZVBsdWdpbnMsIHBsdWdpbk5hbWUpIHx8XG4gICAgKGFyZ3MudXNlUGx1Z2lucy5sZW5ndGggPT09IDEgJiYgYXJncy51c2VQbHVnaW5zWzBdID09PSBVU0VfQUxMX1BMVUdJTlMpXG4gICkubWFwKChwbHVnaW5OYW1lKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGxvZ2dlci5pbmZvKGBBdHRlbXB0aW5nIHRvIGxvYWQgcGx1Z2luICR7cGx1Z2luTmFtZX0uLi5gKTtcbiAgICAgIGNvbnN0IFBsdWdpbkNsYXNzID0gLyoqIEB0eXBlIHt7cGx1Z2luTmFtZTogc3RyaW5nfSAmICgoLi4uYXJnczogYW55W10pID0+IHVua25vd24pfSAqLyhwbHVnaW5Db25maWcucmVxdWlyZShwbHVnaW5OYW1lKSk7XG5cbiAgICAgIFBsdWdpbkNsYXNzLnBsdWdpbk5hbWUgPSBwbHVnaW5OYW1lOyAvLyBzdG9yZSB0aGUgcGx1Z2luIG5hbWUgb24gdGhlIGNsYXNzIHNvIGl0IGNhbiBiZSB1c2VkIGxhdGVyXG4gICAgICByZXR1cm4gUGx1Z2luQ2xhc3M7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoYENvdWxkIG5vdCBsb2FkIHBsdWdpbiAnJHtwbHVnaW5OYW1lfScsIHNvIGl0IHdpbGwgbm90IGJlIGF2YWlsYWJsZS4gRXJyb3IgYCArXG4gICAgICAgICAgICAgICAgICAgYGluIGxvYWRpbmcgdGhlIHBsdWdpbiB3YXM6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICBsb2dnZXIuZGVidWcoZXJyLnN0YWNrKTtcbiAgICB9XG4gIH0pKTtcbn1cblxuLyoqXG4gKiBGaW5kIGFueSBkcml2ZXIgbmFtZSB3aGljaCBoYXMgYmVlbiBpbnN0YWxsZWQsIGFuZCB0dXJuIGVhY2ggb25lIGludG8gaXRzIGNsYXNzLCBzbyB3ZSBjYW4gc2VuZFxuICogdGhlbSBhcyBvYmplY3RzIHRvIHRoZSBzZXJ2ZXIgaW5pdCBpbiBjYXNlIHRoZXkgbmVlZCB0byBhZGQgbWV0aG9kcy9yb3V0ZXMgb3IgdXBkYXRlIHRoZSBzZXJ2ZXIuXG4gKiBJZiB0aGUgLS1kcml2ZXJzIGZsYWcgd2FzIGdpdmVuLCB0aGlzIG1ldGhvZCBvbmx5IGxvYWRzIHRoZSBnaXZlbiBkcml2ZXJzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhcmdzIC0gYXJncGFyc2VyIHBhcnNlZCBkaWN0XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9kcml2ZXItY29uZmlnJykuZGVmYXVsdH0gZHJpdmVyQ29uZmlnIC0gYSBkcml2ZXIgZXh0ZW5zaW9uIGNvbmZpZ1xuICovXG5mdW5jdGlvbiBnZXRBY3RpdmVEcml2ZXJzIChhcmdzLCBkcml2ZXJDb25maWcpIHtcbiAgcmV0dXJuIF8uY29tcGFjdChPYmplY3Qua2V5cyhkcml2ZXJDb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9ucykuZmlsdGVyKChkcml2ZXJOYW1lKSA9PlxuICAgIF8uaW5jbHVkZXMoYXJncy51c2VEcml2ZXJzLCBkcml2ZXJOYW1lKSB8fCBhcmdzLnVzZURyaXZlcnMubGVuZ3RoID09PSAwXG4gICkubWFwKChkcml2ZXJOYW1lKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGxvZ2dlci5pbmZvKGBBdHRlbXB0aW5nIHRvIGxvYWQgZHJpdmVyICR7ZHJpdmVyTmFtZX0uLi5gKTtcbiAgICAgIHJldHVybiBkcml2ZXJDb25maWcucmVxdWlyZShkcml2ZXJOYW1lKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihgQ291bGQgbm90IGxvYWQgZHJpdmVyICcke2RyaXZlck5hbWV9Jywgc28gaXQgd2lsbCBub3QgYmUgYXZhaWxhYmxlLiBFcnJvciBgICtcbiAgICAgICAgICAgICAgICAgICBgaW4gbG9hZGluZyB0aGUgZHJpdmVyIHdhczogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhlcnIuc3RhY2spO1xuICAgIH1cbiAgfSkpO1xufVxuXG5mdW5jdGlvbiBnZXRTZXJ2ZXJVcGRhdGVycyAoZHJpdmVyQ2xhc3NlcywgcGx1Z2luQ2xhc3Nlcykge1xuICByZXR1cm4gWy4uLmRyaXZlckNsYXNzZXMsIC4uLnBsdWdpbkNsYXNzZXNdLm1hcCgoa2xhc3MpID0+IGtsYXNzLnVwZGF0ZVNlcnZlcikuZmlsdGVyKEJvb2xlYW4pO1xufVxuXG5mdW5jdGlvbiBnZXRFeHRyYU1ldGhvZE1hcCAoZHJpdmVyQ2xhc3NlcywgcGx1Z2luQ2xhc3Nlcykge1xuICByZXR1cm4gWy4uLmRyaXZlckNsYXNzZXMsIC4uLnBsdWdpbkNsYXNzZXNdLnJlZHVjZShcbiAgICAobWFwLCBrbGFzcykgPT4gKHsuLi5tYXAsIC4uLmtsYXNzLm5ld01ldGhvZE1hcH0pLFxuICAgIHt9XG4gICk7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgQXBwaXVtLCBidXQgZG9lcyBub3Qgc3RhcnQgdGhlIHNlcnZlci5cbiAqXG4gKiBVc2UgdGhpcyB0byBnZXQgYXQgdGhlIGNvbmZpZ3VyYXRpb24gc2NoZW1hLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQge2luaXQsIGdldFNjaGVtYX0gZnJvbSAnYXBwaXVtJztcbiAqIGNvbnN0IG9wdGlvbnMgPSB7fTsgLy8gY29uZmlnIG9iamVjdFxuICogYXdhaXQgaW5pdChvcHRpb25zKTtcbiAqIGNvbnN0IHNjaGVtYSA9IGdldFNjaGVtYSgpOyAvLyBlbnRpcmUgY29uZmlnIHNjaGVtYSBpbmNsdWRpbmcgcGx1Z2lucyBhbmQgZHJpdmVyc1xuICogQHBhcmFtIHtQYXJzZWRBcmdzfSBbYXJnc10gLSBQYXJzZWQgYXJnc1xuICogQHJldHVybnMge1Byb21pc2U8e3BhcnNlcjogaW1wb3J0KCcuL2NsaS9wYXJzZXInKS5BcmdQYXJzZXJ9ICYgUGFydGlhbDx7YXBwaXVtRHJpdmVyOiBBcHBpdW1Ecml2ZXIsIHBhcnNlZEFyZ3M6IFBhcnNlZEFyZ3N9Pj59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGluaXQgKGFyZ3MpIHtcbiAgY29uc3QgcGFyc2VyID0gYXdhaXQgZ2V0UGFyc2VyKCk7XG4gIGxldCB0aHJvd0luc3RlYWRPZkV4aXQgPSBmYWxzZTtcbiAgLyoqIEB0eXBlIHtQYXJzZWRBcmdzfSAqL1xuICBsZXQgcGFyc2VkQXJncztcbiAgaWYgKGFyZ3MpIHtcbiAgICAvLyBpZiB3ZSBoYXZlIGEgY29udGFpbmluZyBwYWNrYWdlIGluc3RlYWQgb2YgcnVubmluZyBhcyBhIENMSSBwcm9jZXNzLFxuICAgIC8vIHRoYXQgcGFja2FnZSBtaWdodCBub3QgYXBwcmVjaWF0ZSB1cyBjYWxsaW5nICdwcm9jZXNzLmV4aXQnIHdpbGx5LVxuICAgIC8vIG5pbGx5LCBzbyBnaXZlIGl0IHRoZSBvcHRpb24gdG8gaGF2ZSB1cyB0aHJvdyBpbnN0ZWFkIG9mIGV4aXRcbiAgICBpZiAoYXJncy50aHJvd0luc3RlYWRPZkV4aXQpIHtcbiAgICAgIHRocm93SW5zdGVhZE9mRXhpdCA9IHRydWU7XG4gICAgICAvLyBidXQgcmVtb3ZlIGl0IHNpbmNlIGl0J3Mgbm90IGEgcmVhbCBzZXJ2ZXIgYXJnIHBlciBzZVxuICAgICAgZGVsZXRlIGFyZ3MudGhyb3dJbnN0ZWFkT2ZFeGl0O1xuICAgIH1cbiAgICBwYXJzZWRBcmdzID0gey4uLmFyZ3MsIHN1YmNvbW1hbmQ6IGFyZ3Muc3ViY29tbWFuZCA/PyBTRVJWRVJfU1VCQ09NTUFORH07XG4gIH0gZWxzZSB7XG4gICAgLy8gb3RoZXJ3aXNlIHBhcnNlIGZyb20gQ0xJXG4gICAgcGFyc2VkQXJncyA9IHBhcnNlci5wYXJzZUFyZ3MoKTtcbiAgfVxuXG4gIGNvbnN0IGNvbmZpZ1Jlc3VsdCA9IGF3YWl0IHJlYWRDb25maWdGaWxlKHBhcnNlZEFyZ3MuY29uZmlnRmlsZSk7XG5cbiAgaWYgKCFfLmlzRW1wdHkoY29uZmlnUmVzdWx0LmVycm9ycykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9ycyBpbiBjb25maWcgZmlsZSAke2NvbmZpZ1Jlc3VsdC5maWxlcGF0aH06XFxuICR7Y29uZmlnUmVzdWx0LnJlYXNvbiA/PyBjb25maWdSZXN1bHQuZXJyb3JzfWApO1xuICB9XG5cbiAgLy8gbWVyZ2UgY29uZmlnIGFuZCBhcHBseSBkZWZhdWx0cy5cbiAgLy8gdGhlIG9yZGVyIG9mIHByZWNlbmRlY2UgaXM6XG4gIC8vIDEuIGNvbW1hbmQgbGluZSBhcmdzXG4gIC8vIDIuIGNvbmZpZyBmaWxlXG4gIC8vIDMuIGRlZmF1bHRzIGZyb20gY29uZmlnIGZpbGUuXG4gIGlmIChwYXJzZWRBcmdzLnN1YmNvbW1hbmQgPT09IFNFUlZFUl9TVUJDT01NQU5EKSB7XG4gICAgcGFyc2VkQXJncyA9IF8uZGVmYXVsdHNEZWVwKFxuICAgICAgcGFyc2VkQXJncyxcbiAgICAgIGNvbmZpZ1Jlc3VsdC5jb25maWc/LnNlcnZlcixcbiAgICAgIGdldERlZmF1bHRzRnJvbVNjaGVtYSgpXG4gICAgKTtcbiAgfVxuXG4gIHBhcnNlZEFyZ3MgPSBfLmRlZmF1bHRzRGVlcChcbiAgICBwYXJzZWRBcmdzLFxuICAgIGNvbmZpZ1Jlc3VsdC5jb25maWcgPz8ge30sXG4gICk7XG5cbiAgYXdhaXQgbG9nc2lua0luaXQocGFyc2VkQXJncyk7XG5cbiAgLy8gaWYgdGhlIHVzZXIgaGFzIHJlcXVlc3RlZCB0aGUgJ2RyaXZlcicgQ0xJLCBkb24ndCBydW4gdGhlIG5vcm1hbCBzZXJ2ZXIsXG4gIC8vIGJ1dCBpbnN0ZWFkIHBhc3MgY29udHJvbCB0byB0aGUgZHJpdmVyIENMSVxuICBpZiAocGFyc2VkQXJncy5zdWJjb21tYW5kID09PSBEUklWRVJfVFlQRSkge1xuICAgIGF3YWl0IHJ1bkV4dGVuc2lvbkNvbW1hbmQocGFyc2VkQXJncywgcGFyc2VkQXJncy5zdWJjb21tYW5kLCBkcml2ZXJDb25maWcpO1xuICAgIHJldHVybiB7cGFyc2VyfTtcbiAgfVxuICBpZiAocGFyc2VkQXJncy5zdWJjb21tYW5kID09PSBQTFVHSU5fVFlQRSkge1xuICAgIGF3YWl0IHJ1bkV4dGVuc2lvbkNvbW1hbmQocGFyc2VkQXJncywgcGFyc2VkQXJncy5zdWJjb21tYW5kLCBwbHVnaW5Db25maWcpO1xuICAgIHJldHVybiB7cGFyc2VyfTtcbiAgfVxuXG4gIGlmIChwYXJzZWRBcmdzLmxvZ0ZpbHRlcnMpIHtcbiAgICBjb25zdCB7aXNzdWVzLCBydWxlc30gPSBhd2FpdCBsb2dGYWN0b3J5LmxvYWRTZWN1cmVWYWx1ZXNQcmVwcm9jZXNzaW5nUnVsZXMocGFyc2VkQXJncy5sb2dGaWx0ZXJzKTtcbiAgICBpZiAoIV8uaXNFbXB0eShpc3N1ZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBsb2cgZmlsdGVyaW5nIHJ1bGVzIGNvbmZpZyAnJHtwYXJzZWRBcmdzLmxvZ0ZpbHRlcnN9JyBoYXMgaXNzdWVzOiBgICtcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoaXNzdWVzLCBudWxsLCAyKSk7XG4gICAgfVxuICAgIGlmIChfLmlzRW1wdHkocnVsZXMpKSB7XG4gICAgICBsb2dnZXIud2FybihgRm91bmQgbm8gbG9nIGZpbHRlcmluZyBydWxlcyBpbiAnJHtwYXJzZWRBcmdzLmxvZ0ZpbHRlcnN9Jy4gSXMgdGhhdCBleHBlY3RlZD9gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nZ2VyLmluZm8oYExvYWRlZCAke3V0aWwucGx1cmFsaXplKCdmaWx0ZXJpbmcgcnVsZScsIHJ1bGVzLmxlbmd0aCwgdHJ1ZSl9IGZyb20gJyR7cGFyc2VkQXJncy5sb2dGaWx0ZXJzfSdgKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBhcHBpdW1Ecml2ZXIgPSBuZXcgQXBwaXVtRHJpdmVyKHBhcnNlZEFyZ3MpO1xuICAvLyBzZXQgdGhlIGNvbmZpZyBvbiB0aGUgdW1icmVsbGEgZHJpdmVyIHNvIGl0IGNhbiBtYXRjaCBkcml2ZXJzIHRvIGNhcHNcbiAgYXBwaXVtRHJpdmVyLmRyaXZlckNvbmZpZyA9IGRyaXZlckNvbmZpZztcbiAgYXdhaXQgcHJlZmxpZ2h0Q2hlY2tzKHBhcnNlZEFyZ3MsIHRocm93SW5zdGVhZE9mRXhpdCk7XG5cbiAgcmV0dXJuIHtwYXJzZXIsIGFwcGl1bURyaXZlciwgcGFyc2VkQXJnc307XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7UGFyc2VkQXJnc30gW2FyZ3NdXG4gKiBAcmV0dXJuc1xuICovXG5hc3luYyBmdW5jdGlvbiBtYWluIChhcmdzKSB7XG4gIGNvbnN0IHtwYXJzZXIsIGFwcGl1bURyaXZlciwgcGFyc2VkQXJnc30gPSBhd2FpdCBpbml0KGFyZ3MpO1xuXG4gIGlmICghYXBwaXVtRHJpdmVyIHx8ICFwYXJzZWRBcmdzKSB7XG4gICAgLy8gaWYgdGhpcyBicmFuY2ggaXMgdGFrZW4sIHdlJ3ZlIHJ1biBhIGRpZmZlcmVudCBzdWJjb21tYW5kLCBzbyB0aGVyZSdzIG5vdGhpbmdcbiAgICAvLyBsZWZ0IHRvIGRvIGhlcmUuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGx1Z2luQ2xhc3NlcyA9IGdldEFjdGl2ZVBsdWdpbnMocGFyc2VkQXJncywgcGx1Z2luQ29uZmlnKTtcbiAgLy8gc2V0IHRoZSBhY3RpdmUgcGx1Z2lucyBvbiB0aGUgdW1icmVsbGEgZHJpdmVyIHNvIGl0IGNhbiB1c2UgdGhlbSBmb3IgY29tbWFuZHNcbiAgYXBwaXVtRHJpdmVyLnBsdWdpbkNsYXNzZXMgPSBwbHVnaW5DbGFzc2VzO1xuXG4gIGF3YWl0IGxvZ1N0YXJ0dXBJbmZvKHBhcnNlciwgcGFyc2VkQXJncyk7XG4gIGxldCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24gPSBtYWtlUm91dGVyKGFwcGl1bURyaXZlcik7XG5cbiAgY29uc3QgZHJpdmVyQ2xhc3NlcyA9IGdldEFjdGl2ZURyaXZlcnMocGFyc2VkQXJncywgZHJpdmVyQ29uZmlnKTtcbiAgY29uc3Qgc2VydmVyVXBkYXRlcnMgPSBnZXRTZXJ2ZXJVcGRhdGVycyhkcml2ZXJDbGFzc2VzLCBwbHVnaW5DbGFzc2VzKTtcbiAgY29uc3QgZXh0cmFNZXRob2RNYXAgPSBnZXRFeHRyYU1ldGhvZE1hcChkcml2ZXJDbGFzc2VzLCBwbHVnaW5DbGFzc2VzKTtcblxuICBjb25zdCBzZXJ2ZXJPcHRzID0ge1xuICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbixcbiAgICBwb3J0OiBwYXJzZWRBcmdzLnBvcnQsXG4gICAgaG9zdG5hbWU6IHBhcnNlZEFyZ3MuYWRkcmVzcyxcbiAgICBhbGxvd0NvcnM6IHBhcnNlZEFyZ3MuYWxsb3dDb3JzLFxuICAgIGJhc2VQYXRoOiBwYXJzZWRBcmdzLmJhc2VQYXRoLFxuICAgIHNlcnZlclVwZGF0ZXJzLFxuICAgIGV4dHJhTWV0aG9kTWFwLFxuICB9O1xuICBpZiAocGFyc2VkQXJncy5rZWVwQWxpdmVUaW1lb3V0KSB7XG4gICAgc2VydmVyT3B0cy5rZWVwQWxpdmVUaW1lb3V0ID0gcGFyc2VkQXJncy5rZWVwQWxpdmVUaW1lb3V0ICogMTAwMDtcbiAgfVxuICBsZXQgc2VydmVyO1xuICB0cnkge1xuICAgIHNlcnZlciA9IGF3YWl0IGJhc2VTZXJ2ZXIoc2VydmVyT3B0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihgQ291bGQgbm90IGNvbmZpZ3VyZSBBcHBpdW0gc2VydmVyLiBJdCdzIHBvc3NpYmxlIHRoYXQgYSBkcml2ZXIgb3IgcGx1Z2luIHRyaWVkIGAgK1xuICAgICAgICAgICAgICAgICBgdG8gdXBkYXRlIHRoZSBzZXJ2ZXIgYW5kIGZhaWxlZC4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgbG9nZ2VyLmRlYnVnKGVyci5zdGFjayk7XG4gICAgcmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIGlmIChwYXJzZWRBcmdzLmFsbG93Q29ycykge1xuICAgIGxvZ2dlci53YXJuKCdZb3UgaGF2ZSBlbmFibGVkIENPUlMgcmVxdWVzdHMgZnJvbSBhbnkgaG9zdC4gQmUgY2FyZWZ1bCBub3QgJyArXG4gICAgICAgICAgICAgICAgJ3RvIHZpc2l0IHNpdGVzIHdoaWNoIGNvdWxkIG1hbGljaW91c2x5IHRyeSB0byBzdGFydCBBcHBpdW0gJyArXG4gICAgICAgICAgICAgICAgJ3Nlc3Npb25zIG9uIHlvdXIgbWFjaGluZScpO1xuICB9XG4gIC8vIEB0cy1pZ25vcmVcbiAgYXBwaXVtRHJpdmVyLnNlcnZlciA9IHNlcnZlcjtcbiAgdHJ5IHtcbiAgICAvLyBjb25maWd1cmUgYXMgbm9kZSBvbiBncmlkLCBpZiBuZWNlc3NhcnlcbiAgICAvLyBmYWxzeSB2YWx1ZXMgc2hvdWxkIG5vdCBjYXVzZSB0aGlzIHRvIHJ1blxuICAgIGlmIChwYXJzZWRBcmdzLm5vZGVjb25maWcpIHtcbiAgICAgIGF3YWl0IHJlZ2lzdGVyTm9kZShwYXJzZWRBcmdzLm5vZGVjb25maWcsIHBhcnNlZEFyZ3MuYWRkcmVzcywgcGFyc2VkQXJncy5wb3J0LCBwYXJzZWRBcmdzLmJhc2VQYXRoKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGF3YWl0IHNlcnZlci5jbG9zZSgpO1xuICAgIHRocm93IGVycjtcbiAgfVxuXG4gIGZvciAoY29uc3Qgc2lnbmFsIG9mIFsnU0lHSU5UJywgJ1NJR1RFUk0nXSkge1xuICAgIHByb2Nlc3Mub25jZShzaWduYWwsIGFzeW5jIGZ1bmN0aW9uIG9uU2lnbmFsICgpIHtcbiAgICAgIGxvZ2dlci5pbmZvKGBSZWNlaXZlZCAke3NpZ25hbH0gLSBzaHV0dGluZyBkb3duYCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBhcHBpdW1Ecml2ZXIuZGVsZXRlQWxsU2Vzc2lvbnMoe1xuICAgICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgICAgIHJlYXNvbjogYFRoZSBwcm9jZXNzIGhhcyByZWNlaXZlZCAke3NpZ25hbH0gc2lnbmFsYCxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHNlcnZlci5jbG9zZSgpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKGUpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBsb2dTZXJ2ZXJQb3J0KHBhcnNlZEFyZ3MuYWRkcmVzcywgcGFyc2VkQXJncy5wb3J0KTtcbiAgZHJpdmVyQ29uZmlnLnByaW50KCk7XG4gIHBsdWdpbkNvbmZpZy5wcmludChwbHVnaW5DbGFzc2VzLm1hcCgocCkgPT4gcC5wbHVnaW5OYW1lKSk7XG5cbiAgcmV0dXJuIHNlcnZlcjtcbn1cblxuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIGFzeW5jaWZ5KG1haW4pO1xufVxuXG4vLyBldmVyeXRoaW5nIGJlbG93IGhlcmUgaXMgaW50ZW5kZWQgdG8gYmUgYSBwdWJsaWMgQVBJLlxuZXhwb3J0IHsgbWFpbiwgaW5pdCB9O1xuZXhwb3J0IHsgQVBQSVVNX0hPTUUgfSBmcm9tICcuL2V4dGVuc2lvbi1jb25maWcnO1xuZXhwb3J0IHsgZ2V0U2NoZW1hLCB2YWxpZGF0ZSwgZmluYWxpemVTY2hlbWEgfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuZXhwb3J0IHsgcmVhZENvbmZpZ0ZpbGUgfSBmcm9tICcuL2NvbmZpZy1maWxlJztcblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi90eXBlcy90eXBlcycpLlBhcnNlZEFyZ3N9IFBhcnNlZEFyZ3NcbiAqL1xuIl0sImZpbGUiOiJsaWIvbWFpbi5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
362
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9tYWluLmpzIl0sIm5hbWVzIjpbInByZWZsaWdodENoZWNrcyIsImFyZ3MiLCJ0aHJvd0luc3RlYWRPZkV4aXQiLCJsb25nU3RhY2t0cmFjZSIsInJlcXVpcmUiLCJhc3luY190cmFjZV9saW1pdCIsInNob3dDb25maWciLCJwcm9jZXNzIiwiZXhpdCIsInRtcERpciIsImVyciIsImxvZ2dlciIsImVycm9yIiwibWVzc2FnZSIsInJlZCIsImxvZ05vbkRlZmF1bHRBcmdzV2FybmluZyIsImluZm8iLCJsb2dEZWZhdWx0Q2FwYWJpbGl0aWVzV2FybmluZyIsImNhcHMiLCJsb2dTdGFydHVwSW5mbyIsInBhcnNlciIsIndlbGNvbWUiLCJBUFBJVU1fVkVSIiwiYXBwaXVtUmV2Iiwic2hvd0FyZ3MiLCJfIiwic2l6ZSIsImlzRW1wdHkiLCJkZWZhdWx0Q2FwYWJpbGl0aWVzIiwibG9nU2VydmVyUG9ydCIsImFkZHJlc3MiLCJwb3J0IiwibG9nTWVzc2FnZSIsImdldEFjdGl2ZVBsdWdpbnMiLCJwbHVnaW5Db25maWciLCJjb21wYWN0IiwiT2JqZWN0Iiwia2V5cyIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJmaWx0ZXIiLCJwbHVnaW5OYW1lIiwiaW5jbHVkZXMiLCJ1c2VQbHVnaW5zIiwibGVuZ3RoIiwiVVNFX0FMTF9QTFVHSU5TIiwibWFwIiwiUGx1Z2luQ2xhc3MiLCJkZWJ1ZyIsInN0YWNrIiwiZ2V0QWN0aXZlRHJpdmVycyIsImRyaXZlckNvbmZpZyIsImRyaXZlck5hbWUiLCJ1c2VEcml2ZXJzIiwiZ2V0U2VydmVyVXBkYXRlcnMiLCJkcml2ZXJDbGFzc2VzIiwicGx1Z2luQ2xhc3NlcyIsImtsYXNzIiwidXBkYXRlU2VydmVyIiwiQm9vbGVhbiIsImdldEV4dHJhTWV0aG9kTWFwIiwicmVkdWNlIiwibmV3TWV0aG9kTWFwIiwiaW5pdCIsInBhcnNlZEFyZ3MiLCJzdWJjb21tYW5kIiwiU0VSVkVSX1NVQkNPTU1BTkQiLCJwYXJzZUFyZ3MiLCJjb25maWdSZXN1bHQiLCJjb25maWdGaWxlIiwiZXJyb3JzIiwiRXJyb3IiLCJmaWxlcGF0aCIsInJlYXNvbiIsImRlZmF1bHRzRGVlcCIsImNvbmZpZyIsInNlcnZlciIsIkRSSVZFUl9UWVBFIiwiUExVR0lOX1RZUEUiLCJsb2dGaWx0ZXJzIiwiaXNzdWVzIiwicnVsZXMiLCJsb2dGYWN0b3J5IiwibG9hZFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NpbmdSdWxlcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ3YXJuIiwidXRpbCIsInBsdXJhbGl6ZSIsImFwcGl1bURyaXZlciIsIkFwcGl1bURyaXZlciIsIm1haW4iLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJzZXJ2ZXJVcGRhdGVycyIsImV4dHJhTWV0aG9kTWFwIiwic2VydmVyT3B0cyIsImhvc3RuYW1lIiwiYWxsb3dDb3JzIiwiYmFzZVBhdGgiLCJrZWVwQWxpdmVUaW1lb3V0Iiwibm9kZWNvbmZpZyIsImNsb3NlIiwic2lnbmFsIiwib25jZSIsIm9uU2lnbmFsIiwiZGVsZXRlQWxsU2Vzc2lvbnMiLCJmb3JjZSIsImUiLCJwcmludCIsInAiLCJtb2R1bGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQU9BLGVBQWVBLGVBQWYsQ0FBZ0NDLElBQWhDLEVBQXNDQyxrQkFBa0IsR0FBRyxLQUEzRCxFQUFrRTtBQUNoRSxNQUFJO0FBQ0Y7O0FBQ0EsUUFBSUQsSUFBSSxDQUFDRSxjQUFULEVBQXlCO0FBQ3ZCQyxNQUFBQSxPQUFPLENBQUMsVUFBRCxDQUFQLENBQW9CQyxpQkFBcEIsR0FBd0MsQ0FBQyxDQUF6QztBQUNEOztBQUNELFFBQUlKLElBQUksQ0FBQ0ssVUFBVCxFQUFxQjtBQUNuQixZQUFNLHlC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RixJQUFSLEtBQWlCbUIsTUFBckIsRUFBNkI7QUFDM0IsMEJBQVNuQixJQUFUO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbi8vIHRyYW5zcGlsZTptYWluXG4vLyBAdHMtY2hlY2tcblxuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIGFzIG1ha2VSb3V0ZXIsIHNlcnZlciBhcyBiYXNlU2VydmVyIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyBsb2dnZXIgYXMgbG9nRmFjdG9yeSwgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBhc3luY2lmeSB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBBcHBpdW1Ecml2ZXIgfSBmcm9tICcuL2FwcGl1bSc7XG5pbXBvcnQgeyBkcml2ZXJDb25maWcsIHBsdWdpbkNvbmZpZywgVVNFX0FMTF9QTFVHSU5TIH0gZnJvbSAnLi9jbGkvYXJncyc7XG5pbXBvcnQgeyBydW5FeHRlbnNpb25Db21tYW5kIH0gZnJvbSAnLi9jbGkvZXh0ZW5zaW9uJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgZ2V0UGFyc2VyLCBTRVJWRVJfU1VCQ09NTUFORCB9IGZyb20gJy4vY2xpL3BhcnNlcic7XG5pbXBvcnQgeyBBUFBJVU1fVkVSLCBjaGVja05vZGVPaywgZ2V0R2l0UmV2LCBnZXROb25EZWZhdWx0U2VydmVyQXJncywgc2hvd0NvbmZpZywgdmFsaWRhdGVUbXBEaXIsIHdhcm5Ob2RlRGVwcmVjYXRpb25zIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgcmVhZENvbmZpZ0ZpbGUgfSBmcm9tICcuL2NvbmZpZy1maWxlJztcbmltcG9ydCB7IERSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSB9IGZyb20gJy4vZXh0ZW5zaW9uLWNvbmZpZyc7XG5pbXBvcnQgcmVnaXN0ZXJOb2RlIGZyb20gJy4vZ3JpZC1yZWdpc3Rlcic7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJzsgLy8gbG9nZ2VyIG5lZWRzIHRvIHJlbWFpbiBmaXJzdCBvZiBpbXBvcnRzXG5pbXBvcnQgeyBpbml0IGFzIGxvZ3NpbmtJbml0IH0gZnJvbSAnLi9sb2dzaW5rJztcbmltcG9ydCB7IGdldERlZmF1bHRzRnJvbVNjaGVtYSwgdmFsaWRhdGUgfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuaW1wb3J0IHsgaW5zcGVjdE9iamVjdCB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqXG4gKiBAcGFyYW0ge1BhcnNlZEFyZ3N9IGFyZ3NcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3Rocm93SW5zdGVhZE9mRXhpdF1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcHJlZmxpZ2h0Q2hlY2tzIChhcmdzLCB0aHJvd0luc3RlYWRPZkV4aXQgPSBmYWxzZSkge1xuICB0cnkge1xuICAgIGNoZWNrTm9kZU9rKCk7XG4gICAgaWYgKGFyZ3MubG9uZ1N0YWNrdHJhY2UpIHtcbiAgICAgIHJlcXVpcmUoJ2xvbmdqb2huJykuYXN5bmNfdHJhY2VfbGltaXQgPSAtMTtcbiAgICB9XG4gICAgaWYgKGFyZ3Muc2hvd0NvbmZpZykge1xuICAgICAgYXdhaXQgc2hvd0NvbmZpZygpO1xuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH1cbiAgICB3YXJuTm9kZURlcHJlY2F0aW9ucygpO1xuXG4gICAgdmFsaWRhdGUoYXJncyk7XG5cbiAgICBpZiAoYXJncy50bXBEaXIpIHtcbiAgICAgIGF3YWl0IHZhbGlkYXRlVG1wRGlyKGFyZ3MudG1wRGlyKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihlcnIubWVzc2FnZS5yZWQpO1xuICAgIGlmICh0aHJvd0luc3RlYWRPZkV4aXQpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbG9nTm9uRGVmYXVsdEFyZ3NXYXJuaW5nIChhcmdzKSB7XG4gIGxvZ2dlci5pbmZvKCdOb24tZGVmYXVsdCBzZXJ2ZXIgYXJnczonKTtcbiAgaW5zcGVjdE9iamVjdChhcmdzKTtcbn1cblxuZnVuY3Rpb24gbG9nRGVmYXVsdENhcGFiaWxpdGllc1dhcm5pbmcgKGNhcHMpIHtcbiAgbG9nZ2VyLmluZm8oJ0RlZmF1bHQgY2FwYWJpbGl0aWVzLCB3aGljaCB3aWxsIGJlIGFkZGVkIHRvIGVhY2ggcmVxdWVzdCAnICtcbiAgICAgICAgICAgICAgJ3VubGVzcyBvdmVycmlkZGVuIGJ5IGRlc2lyZWQgY2FwYWJpbGl0aWVzOicpO1xuICBpbnNwZWN0T2JqZWN0KGNhcHMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBsb2dTdGFydHVwSW5mbyAocGFyc2VyLCBhcmdzKSB7XG4gIGxldCB3ZWxjb21lID0gYFdlbGNvbWUgdG8gQXBwaXVtIHYke0FQUElVTV9WRVJ9YDtcbiAgbGV0IGFwcGl1bVJldiA9IGF3YWl0IGdldEdpdFJldigpO1xuICBpZiAoYXBwaXVtUmV2KSB7XG4gICAgd2VsY29tZSArPSBgIChSRVYgJHthcHBpdW1SZXZ9KWA7XG4gIH1cbiAgbG9nZ2VyLmluZm8od2VsY29tZSk7XG5cbiAgbGV0IHNob3dBcmdzID0gZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MocGFyc2VyLCBhcmdzKTtcbiAgaWYgKF8uc2l6ZShzaG93QXJncykpIHtcbiAgICBsb2dOb25EZWZhdWx0QXJnc1dhcm5pbmcoc2hvd0FyZ3MpO1xuICB9XG4gIGlmICghXy5pc0VtcHR5KGFyZ3MuZGVmYXVsdENhcGFiaWxpdGllcykpIHtcbiAgICBsb2dEZWZhdWx0Q2FwYWJpbGl0aWVzV2FybmluZyhhcmdzLmRlZmF1bHRDYXBhYmlsaXRpZXMpO1xuICB9XG4gIC8vIFRPRE86IGJyaW5nIGJhY2sgbG9nbGV2ZWwgcmVwb3J0aW5nIGJlbG93IG9uY2UgbG9nZ2VyIGlzIGZsdXNoZWQgb3V0XG4gIC8vIGxvZ2dlci5pbmZvKCdDb25zb2xlIExvZ0xldmVsOiAnICsgbG9nZ2VyLnRyYW5zcG9ydHMuY29uc29sZS5sZXZlbCk7XG4gIC8vIGlmIChsb2dnZXIudHJhbnNwb3J0cy5maWxlKSB7XG4gIC8vICAgbG9nZ2VyLmluZm8oJ0ZpbGUgTG9nTGV2ZWw6ICcgKyBsb2dnZXIudHJhbnNwb3J0cy5maWxlLmxldmVsKTtcbiAgLy8gfVxufVxuXG5mdW5jdGlvbiBsb2dTZXJ2ZXJQb3J0IChhZGRyZXNzLCBwb3J0KSB7XG4gIGxldCBsb2dNZXNzYWdlID0gYEFwcGl1bSBSRVNUIGh0dHAgaW50ZXJmYWNlIGxpc3RlbmVyIHN0YXJ0ZWQgb24gYCArXG4gICAgICAgICAgICAgICAgICAgYCR7YWRkcmVzc306JHtwb3J0fWA7XG4gIGxvZ2dlci5pbmZvKGxvZ01lc3NhZ2UpO1xufVxuXG4vKipcbiAqIEZpbmQgYW55IHBsdWdpbiBuYW1lIHdoaWNoIGhhcyBiZWVuIGluc3RhbGxlZCwgYW5kIHdoaWNoIGhhcyBiZWVuIHJlcXVlc3RlZCBmb3IgYWN0aXZhdGlvbiBieVxuICogdXNpbmcgdGhlIC0tdXNlLXBsdWdpbnMgZmxhZywgYW5kIHR1cm4gZWFjaCBvbmUgaW50byBpdHMgY2xhc3MsIHNvIHdlIGNhbiBzZW5kIHRoZW0gYXMgb2JqZWN0c1xuICogdG8gdGhlIHNlcnZlciBpbml0LiBXZSBhbHNvIHdhbnQgdG8gc2VuZC9hc3NpZ24gdGhlbSB0byB0aGUgdW1icmVsbGEgZHJpdmVyIHNvIGl0IGNhbiB1c2UgdGhlbVxuICogdG8gd3JhcCBjb21tYW5kIGV4ZWN1dGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhcmdzIC0gYXJncGFyc2VyIHBhcnNlZCBkaWN0XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9wbHVnaW4tY29uZmlnJykuZGVmYXVsdH0gcGx1Z2luQ29uZmlnIC0gYSBwbHVnaW4gZXh0ZW5zaW9uIGNvbmZpZ1xuICogQHJldHVybnMgeyh7cGx1Z2luTmFtZTogc3RyaW5nfSAmICgoLi4uYXJnczogYW55W10pID0+IHVua25vd24pKVtdfVxuICovXG5mdW5jdGlvbiBnZXRBY3RpdmVQbHVnaW5zIChhcmdzLCBwbHVnaW5Db25maWcpIHtcbiAgcmV0dXJuIF8uY29tcGFjdChPYmplY3Qua2V5cyhwbHVnaW5Db25maWcuaW5zdGFsbGVkRXh0ZW5zaW9ucykuZmlsdGVyKChwbHVnaW5OYW1lKSA9PlxuICAgIF8uaW5jbHVkZXMoYXJncy51c2VQbHVnaW5zLCBwbHVnaW5OYW1lKSB8fFxuICAgIChhcmdzLnVzZVBsdWdpbnMubGVuZ3RoID09PSAxICYmIGFyZ3MudXNlUGx1Z2luc1swXSA9PT0gVVNFX0FMTF9QTFVHSU5TKVxuICApLm1hcCgocGx1Z2luTmFtZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBsb2dnZXIuaW5mbyhgQXR0ZW1wdGluZyB0byBsb2FkIHBsdWdpbiAke3BsdWdpbk5hbWV9Li4uYCk7XG4gICAgICBjb25zdCBQbHVnaW5DbGFzcyA9IC8qKiBAdHlwZSB7e3BsdWdpbk5hbWU6IHN0cmluZ30gJiAoKC4uLmFyZ3M6IGFueVtdKSA9PiB1bmtub3duKX0gKi8ocGx1Z2luQ29uZmlnLnJlcXVpcmUocGx1Z2luTmFtZSkpO1xuXG4gICAgICBQbHVnaW5DbGFzcy5wbHVnaW5OYW1lID0gcGx1Z2luTmFtZTsgLy8gc3RvcmUgdGhlIHBsdWdpbiBuYW1lIG9uIHRoZSBjbGFzcyBzbyBpdCBjYW4gYmUgdXNlZCBsYXRlclxuICAgICAgcmV0dXJuIFBsdWdpbkNsYXNzO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nZ2VyLmVycm9yKGBDb3VsZCBub3QgbG9hZCBwbHVnaW4gJyR7cGx1Z2luTmFtZX0nLCBzbyBpdCB3aWxsIG5vdCBiZSBhdmFpbGFibGUuIEVycm9yIGAgK1xuICAgICAgICAgICAgICAgICAgIGBpbiBsb2FkaW5nIHRoZSBwbHVnaW4gd2FzOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgbG9nZ2VyLmRlYnVnKGVyci5zdGFjayk7XG4gICAgfVxuICB9KSk7XG59XG5cbi8qKlxuICogRmluZCBhbnkgZHJpdmVyIG5hbWUgd2hpY2ggaGFzIGJlZW4gaW5zdGFsbGVkLCBhbmQgdHVybiBlYWNoIG9uZSBpbnRvIGl0cyBjbGFzcywgc28gd2UgY2FuIHNlbmRcbiAqIHRoZW0gYXMgb2JqZWN0cyB0byB0aGUgc2VydmVyIGluaXQgaW4gY2FzZSB0aGV5IG5lZWQgdG8gYWRkIG1ldGhvZHMvcm91dGVzIG9yIHVwZGF0ZSB0aGUgc2VydmVyLlxuICogSWYgdGhlIC0tZHJpdmVycyBmbGFnIHdhcyBnaXZlbiwgdGhpcyBtZXRob2Qgb25seSBsb2FkcyB0aGUgZ2l2ZW4gZHJpdmVycy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gYXJncyAtIGFyZ3BhcnNlciBwYXJzZWQgZGljdFxuICogQHBhcmFtIHtpbXBvcnQoJy4vZHJpdmVyLWNvbmZpZycpLmRlZmF1bHR9IGRyaXZlckNvbmZpZyAtIGEgZHJpdmVyIGV4dGVuc2lvbiBjb25maWdcbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aXZlRHJpdmVycyAoYXJncywgZHJpdmVyQ29uZmlnKSB7XG4gIHJldHVybiBfLmNvbXBhY3QoT2JqZWN0LmtleXMoZHJpdmVyQ29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnMpLmZpbHRlcigoZHJpdmVyTmFtZSkgPT5cbiAgICBfLmluY2x1ZGVzKGFyZ3MudXNlRHJpdmVycywgZHJpdmVyTmFtZSkgfHwgYXJncy51c2VEcml2ZXJzLmxlbmd0aCA9PT0gMFxuICApLm1hcCgoZHJpdmVyTmFtZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBsb2dnZXIuaW5mbyhgQXR0ZW1wdGluZyB0byBsb2FkIGRyaXZlciAke2RyaXZlck5hbWV9Li4uYCk7XG4gICAgICByZXR1cm4gZHJpdmVyQ29uZmlnLnJlcXVpcmUoZHJpdmVyTmFtZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoYENvdWxkIG5vdCBsb2FkIGRyaXZlciAnJHtkcml2ZXJOYW1lfScsIHNvIGl0IHdpbGwgbm90IGJlIGF2YWlsYWJsZS4gRXJyb3IgYCArXG4gICAgICAgICAgICAgICAgICAgYGluIGxvYWRpbmcgdGhlIGRyaXZlciB3YXM6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICBsb2dnZXIuZGVidWcoZXJyLnN0YWNrKTtcbiAgICB9XG4gIH0pKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2VydmVyVXBkYXRlcnMgKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpIHtcbiAgcmV0dXJuIFsuLi5kcml2ZXJDbGFzc2VzLCAuLi5wbHVnaW5DbGFzc2VzXS5tYXAoKGtsYXNzKSA9PiBrbGFzcy51cGRhdGVTZXJ2ZXIpLmZpbHRlcihCb29sZWFuKTtcbn1cblxuZnVuY3Rpb24gZ2V0RXh0cmFNZXRob2RNYXAgKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpIHtcbiAgcmV0dXJuIFsuLi5kcml2ZXJDbGFzc2VzLCAuLi5wbHVnaW5DbGFzc2VzXS5yZWR1Y2UoXG4gICAgKG1hcCwga2xhc3MpID0+ICh7Li4ubWFwLCAuLi5rbGFzcy5uZXdNZXRob2RNYXB9KSxcbiAgICB7fVxuICApO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIEFwcGl1bSwgYnV0IGRvZXMgbm90IHN0YXJ0IHRoZSBzZXJ2ZXIuXG4gKlxuICogVXNlIHRoaXMgdG8gZ2V0IGF0IHRoZSBjb25maWd1cmF0aW9uIHNjaGVtYS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHtpbml0LCBnZXRTY2hlbWF9IGZyb20gJ2FwcGl1bSc7XG4gKiBjb25zdCBvcHRpb25zID0ge307IC8vIGNvbmZpZyBvYmplY3RcbiAqIGF3YWl0IGluaXQob3B0aW9ucyk7XG4gKiBjb25zdCBzY2hlbWEgPSBnZXRTY2hlbWEoKTsgLy8gZW50aXJlIGNvbmZpZyBzY2hlbWEgaW5jbHVkaW5nIHBsdWdpbnMgYW5kIGRyaXZlcnNcbiAqIEBwYXJhbSB7UGFyc2VkQXJnc30gW2FyZ3NdIC0gUGFyc2VkIGFyZ3NcbiAqIEByZXR1cm5zIHtQcm9taXNlPHtwYXJzZXI6IGltcG9ydCgnLi9jbGkvcGFyc2VyJykuQXJnUGFyc2VyfSAmIFBhcnRpYWw8e2FwcGl1bURyaXZlcjogQXBwaXVtRHJpdmVyLCBwYXJzZWRBcmdzOiBQYXJzZWRBcmdzfT4+fVxuICovXG5hc3luYyBmdW5jdGlvbiBpbml0IChhcmdzKSB7XG4gIGNvbnN0IHBhcnNlciA9IGF3YWl0IGdldFBhcnNlcigpO1xuICBsZXQgdGhyb3dJbnN0ZWFkT2ZFeGl0ID0gZmFsc2U7XG4gIC8qKiBAdHlwZSB7UGFyc2VkQXJnc30gKi9cbiAgbGV0IHBhcnNlZEFyZ3M7XG4gIGlmIChhcmdzKSB7XG4gICAgLy8gaWYgd2UgaGF2ZSBhIGNvbnRhaW5pbmcgcGFja2FnZSBpbnN0ZWFkIG9mIHJ1bm5pbmcgYXMgYSBDTEkgcHJvY2VzcyxcbiAgICAvLyB0aGF0IHBhY2thZ2UgbWlnaHQgbm90IGFwcHJlY2lhdGUgdXMgY2FsbGluZyAncHJvY2Vzcy5leGl0JyB3aWxseS1cbiAgICAvLyBuaWxseSwgc28gZ2l2ZSBpdCB0aGUgb3B0aW9uIHRvIGhhdmUgdXMgdGhyb3cgaW5zdGVhZCBvZiBleGl0XG4gICAgaWYgKGFyZ3MudGhyb3dJbnN0ZWFkT2ZFeGl0KSB7XG4gICAgICB0aHJvd0luc3RlYWRPZkV4aXQgPSB0cnVlO1xuICAgICAgLy8gYnV0IHJlbW92ZSBpdCBzaW5jZSBpdCdzIG5vdCBhIHJlYWwgc2VydmVyIGFyZyBwZXIgc2VcbiAgICAgIGRlbGV0ZSBhcmdzLnRocm93SW5zdGVhZE9mRXhpdDtcbiAgICB9XG4gICAgcGFyc2VkQXJncyA9IHsuLi5hcmdzLCBzdWJjb21tYW5kOiBhcmdzLnN1YmNvbW1hbmQgPz8gU0VSVkVSX1NVQkNPTU1BTkR9O1xuICB9IGVsc2Uge1xuICAgIC8vIG90aGVyd2lzZSBwYXJzZSBmcm9tIENMSVxuICAgIHBhcnNlZEFyZ3MgPSBwYXJzZXIucGFyc2VBcmdzKCk7XG4gIH1cblxuICBjb25zdCBjb25maWdSZXN1bHQgPSBhd2FpdCByZWFkQ29uZmlnRmlsZShwYXJzZWRBcmdzLmNvbmZpZ0ZpbGUpO1xuXG4gIGlmICghXy5pc0VtcHR5KGNvbmZpZ1Jlc3VsdC5lcnJvcnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvcnMgaW4gY29uZmlnIGZpbGUgJHtjb25maWdSZXN1bHQuZmlsZXBhdGh9OlxcbiAke2NvbmZpZ1Jlc3VsdC5yZWFzb24gPz8gY29uZmlnUmVzdWx0LmVycm9yc31gKTtcbiAgfVxuXG4gIC8vIG1lcmdlIGNvbmZpZyBhbmQgYXBwbHkgZGVmYXVsdHMuXG4gIC8vIHRoZSBvcmRlciBvZiBwcmVjZW5kZWNlIGlzOlxuICAvLyAxLiBjb21tYW5kIGxpbmUgYXJnc1xuICAvLyAyLiBjb25maWcgZmlsZVxuICAvLyAzLiBkZWZhdWx0cyBmcm9tIGNvbmZpZyBmaWxlLlxuICBpZiAocGFyc2VkQXJncy5zdWJjb21tYW5kID09PSBTRVJWRVJfU1VCQ09NTUFORCkge1xuICAgIHBhcnNlZEFyZ3MgPSBfLmRlZmF1bHRzRGVlcChcbiAgICAgIHBhcnNlZEFyZ3MsXG4gICAgICBjb25maWdSZXN1bHQuY29uZmlnPy5zZXJ2ZXIsXG4gICAgICBnZXREZWZhdWx0c0Zyb21TY2hlbWEoKVxuICAgICk7XG4gIH1cblxuICBwYXJzZWRBcmdzID0gXy5kZWZhdWx0c0RlZXAoXG4gICAgcGFyc2VkQXJncyxcbiAgICBjb25maWdSZXN1bHQuY29uZmlnID8/IHt9LFxuICApO1xuXG4gIGF3YWl0IGxvZ3NpbmtJbml0KHBhcnNlZEFyZ3MpO1xuXG4gIC8vIGlmIHRoZSB1c2VyIGhhcyByZXF1ZXN0ZWQgdGhlICdkcml2ZXInIENMSSwgZG9uJ3QgcnVuIHRoZSBub3JtYWwgc2VydmVyLFxuICAvLyBidXQgaW5zdGVhZCBwYXNzIGNvbnRyb2wgdG8gdGhlIGRyaXZlciBDTElcbiAgaWYgKHBhcnNlZEFyZ3Muc3ViY29tbWFuZCA9PT0gRFJJVkVSX1RZUEUpIHtcbiAgICBhd2FpdCBydW5FeHRlbnNpb25Db21tYW5kKHBhcnNlZEFyZ3MsIHBhcnNlZEFyZ3Muc3ViY29tbWFuZCwgZHJpdmVyQ29uZmlnKTtcbiAgICByZXR1cm4ge3BhcnNlcn07XG4gIH1cbiAgaWYgKHBhcnNlZEFyZ3Muc3ViY29tbWFuZCA9PT0gUExVR0lOX1RZUEUpIHtcbiAgICBhd2FpdCBydW5FeHRlbnNpb25Db21tYW5kKHBhcnNlZEFyZ3MsIHBhcnNlZEFyZ3Muc3ViY29tbWFuZCwgcGx1Z2luQ29uZmlnKTtcbiAgICByZXR1cm4ge3BhcnNlcn07XG4gIH1cblxuICBpZiAocGFyc2VkQXJncy5sb2dGaWx0ZXJzKSB7XG4gICAgY29uc3Qge2lzc3VlcywgcnVsZXN9ID0gYXdhaXQgbG9nRmFjdG9yeS5sb2FkU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc2luZ1J1bGVzKHBhcnNlZEFyZ3MubG9nRmlsdGVycyk7XG4gICAgaWYgKCFfLmlzRW1wdHkoaXNzdWVzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgbG9nIGZpbHRlcmluZyBydWxlcyBjb25maWcgJyR7cGFyc2VkQXJncy5sb2dGaWx0ZXJzfScgaGFzIGlzc3VlczogYCArXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGlzc3VlcywgbnVsbCwgMikpO1xuICAgIH1cbiAgICBpZiAoXy5pc0VtcHR5KHJ1bGVzKSkge1xuICAgICAgbG9nZ2VyLndhcm4oYEZvdW5kIG5vIGxvZyBmaWx0ZXJpbmcgcnVsZXMgaW4gJyR7cGFyc2VkQXJncy5sb2dGaWx0ZXJzfScuIElzIHRoYXQgZXhwZWN0ZWQ/YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dlci5pbmZvKGBMb2FkZWQgJHt1dGlsLnBsdXJhbGl6ZSgnZmlsdGVyaW5nIHJ1bGUnLCBydWxlcy5sZW5ndGgsIHRydWUpfSBmcm9tICcke3BhcnNlZEFyZ3MubG9nRmlsdGVyc30nYCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYXBwaXVtRHJpdmVyID0gbmV3IEFwcGl1bURyaXZlcihwYXJzZWRBcmdzKTtcbiAgLy8gc2V0IHRoZSBjb25maWcgb24gdGhlIHVtYnJlbGxhIGRyaXZlciBzbyBpdCBjYW4gbWF0Y2ggZHJpdmVycyB0byBjYXBzXG4gIGFwcGl1bURyaXZlci5kcml2ZXJDb25maWcgPSBkcml2ZXJDb25maWc7XG4gIGF3YWl0IHByZWZsaWdodENoZWNrcyhwYXJzZWRBcmdzLCB0aHJvd0luc3RlYWRPZkV4aXQpO1xuXG4gIHJldHVybiB7cGFyc2VyLCBhcHBpdW1Ecml2ZXIsIHBhcnNlZEFyZ3N9O1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0ge1BhcnNlZEFyZ3N9IFthcmdzXVxuICogQHJldHVybnNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbWFpbiAoYXJncykge1xuICBjb25zdCB7cGFyc2VyLCBhcHBpdW1Ecml2ZXIsIHBhcnNlZEFyZ3N9ID0gYXdhaXQgaW5pdChhcmdzKTtcblxuICBpZiAoIWFwcGl1bURyaXZlciB8fCAhcGFyc2VkQXJncykge1xuICAgIC8vIGlmIHRoaXMgYnJhbmNoIGlzIHRha2VuLCB3ZSd2ZSBydW4gYSBkaWZmZXJlbnQgc3ViY29tbWFuZCwgc28gdGhlcmUncyBub3RoaW5nXG4gICAgLy8gbGVmdCB0byBkbyBoZXJlLlxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBsdWdpbkNsYXNzZXMgPSBnZXRBY3RpdmVQbHVnaW5zKHBhcnNlZEFyZ3MsIHBsdWdpbkNvbmZpZyk7XG4gIC8vIHNldCB0aGUgYWN0aXZlIHBsdWdpbnMgb24gdGhlIHVtYnJlbGxhIGRyaXZlciBzbyBpdCBjYW4gdXNlIHRoZW0gZm9yIGNvbW1hbmRzXG4gIGFwcGl1bURyaXZlci5wbHVnaW5DbGFzc2VzID0gcGx1Z2luQ2xhc3NlcztcblxuICBhd2FpdCBsb2dTdGFydHVwSW5mbyhwYXJzZXIsIHBhcnNlZEFyZ3MpO1xuICBsZXQgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uID0gbWFrZVJvdXRlcihhcHBpdW1Ecml2ZXIpO1xuXG4gIGNvbnN0IGRyaXZlckNsYXNzZXMgPSBnZXRBY3RpdmVEcml2ZXJzKHBhcnNlZEFyZ3MsIGRyaXZlckNvbmZpZyk7XG4gIGNvbnN0IHNlcnZlclVwZGF0ZXJzID0gZ2V0U2VydmVyVXBkYXRlcnMoZHJpdmVyQ2xhc3NlcywgcGx1Z2luQ2xhc3Nlcyk7XG4gIGNvbnN0IGV4dHJhTWV0aG9kTWFwID0gZ2V0RXh0cmFNZXRob2RNYXAoZHJpdmVyQ2xhc3NlcywgcGx1Z2luQ2xhc3Nlcyk7XG5cbiAgY29uc3Qgc2VydmVyT3B0cyA9IHtcbiAgICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24sXG4gICAgcG9ydDogcGFyc2VkQXJncy5wb3J0LFxuICAgIGhvc3RuYW1lOiBwYXJzZWRBcmdzLmFkZHJlc3MsXG4gICAgYWxsb3dDb3JzOiBwYXJzZWRBcmdzLmFsbG93Q29ycyxcbiAgICBiYXNlUGF0aDogcGFyc2VkQXJncy5iYXNlUGF0aCxcbiAgICBzZXJ2ZXJVcGRhdGVycyxcbiAgICBleHRyYU1ldGhvZE1hcCxcbiAgfTtcbiAgaWYgKHBhcnNlZEFyZ3Mua2VlcEFsaXZlVGltZW91dCkge1xuICAgIHNlcnZlck9wdHMua2VlcEFsaXZlVGltZW91dCA9IHBhcnNlZEFyZ3Mua2VlcEFsaXZlVGltZW91dCAqIDEwMDA7XG4gIH1cbiAgbGV0IHNlcnZlcjtcbiAgdHJ5IHtcbiAgICBzZXJ2ZXIgPSBhd2FpdCBiYXNlU2VydmVyKHNlcnZlck9wdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIuZXJyb3IoYENvdWxkIG5vdCBjb25maWd1cmUgQXBwaXVtIHNlcnZlci4gSXQncyBwb3NzaWJsZSB0aGF0IGEgZHJpdmVyIG9yIHBsdWdpbiB0cmllZCBgICtcbiAgICAgICAgICAgICAgICAgYHRvIHVwZGF0ZSB0aGUgc2VydmVyIGFuZCBmYWlsZWQuIE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIGxvZ2dlci5kZWJ1ZyhlcnIuc3RhY2spO1xuICAgIHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cblxuICBpZiAocGFyc2VkQXJncy5hbGxvd0NvcnMpIHtcbiAgICBsb2dnZXIud2FybignWW91IGhhdmUgZW5hYmxlZCBDT1JTIHJlcXVlc3RzIGZyb20gYW55IGhvc3QuIEJlIGNhcmVmdWwgbm90ICcgK1xuICAgICAgICAgICAgICAgICd0byB2aXNpdCBzaXRlcyB3aGljaCBjb3VsZCBtYWxpY2lvdXNseSB0cnkgdG8gc3RhcnQgQXBwaXVtICcgK1xuICAgICAgICAgICAgICAgICdzZXNzaW9ucyBvbiB5b3VyIG1hY2hpbmUnKTtcbiAgfVxuICAvLyBAdHMtaWdub3JlXG4gIGFwcGl1bURyaXZlci5zZXJ2ZXIgPSBzZXJ2ZXI7XG4gIHRyeSB7XG4gICAgLy8gY29uZmlndXJlIGFzIG5vZGUgb24gZ3JpZCwgaWYgbmVjZXNzYXJ5XG4gICAgLy8gZmFsc3kgdmFsdWVzIHNob3VsZCBub3QgY2F1c2UgdGhpcyB0byBydW5cbiAgICBpZiAocGFyc2VkQXJncy5ub2RlY29uZmlnKSB7XG4gICAgICBhd2FpdCByZWdpc3Rlck5vZGUocGFyc2VkQXJncy5ub2RlY29uZmlnLCBwYXJzZWRBcmdzLmFkZHJlc3MsIHBhcnNlZEFyZ3MucG9ydCwgcGFyc2VkQXJncy5iYXNlUGF0aCk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBhd2FpdCBzZXJ2ZXIuY2xvc2UoKTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cblxuICBmb3IgKGNvbnN0IHNpZ25hbCBvZiBbJ1NJR0lOVCcsICdTSUdURVJNJ10pIHtcbiAgICBwcm9jZXNzLm9uY2Uoc2lnbmFsLCBhc3luYyBmdW5jdGlvbiBvblNpZ25hbCAoKSB7XG4gICAgICBsb2dnZXIuaW5mbyhgUmVjZWl2ZWQgJHtzaWduYWx9IC0gc2h1dHRpbmcgZG93bmApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYXBwaXVtRHJpdmVyLmRlbGV0ZUFsbFNlc3Npb25zKHtcbiAgICAgICAgICBmb3JjZTogdHJ1ZSxcbiAgICAgICAgICByZWFzb246IGBUaGUgcHJvY2VzcyBoYXMgcmVjZWl2ZWQgJHtzaWduYWx9IHNpZ25hbGAsXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBzZXJ2ZXIuY2xvc2UoKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsb2dnZXIud2FybihlKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbG9nU2VydmVyUG9ydChwYXJzZWRBcmdzLmFkZHJlc3MsIHBhcnNlZEFyZ3MucG9ydCk7XG4gIGRyaXZlckNvbmZpZy5wcmludCgpO1xuICBwbHVnaW5Db25maWcucHJpbnQocGx1Z2luQ2xhc3Nlcy5tYXAoKHApID0+IHAucGx1Z2luTmFtZSkpO1xuXG4gIHJldHVybiBzZXJ2ZXI7XG59XG5cbi8vIE5PVEU6IHRoaXMgaXMgaGVyZSBmb3IgYmFja3dhcmRzIGNvbXBhdCBmb3IgYW55IHNjcmlwdHMgcmVmZXJlbmNpbmcgYG1haW4uanNgIGRpcmVjdGx5XG4vLyAobW9yZSBzcGVjaWZpY2FsbHksIGBidWlsZC9saWIvbWFpbi5qc2ApXG4vLyB0aGUgZXhlY3V0YWJsZSBpcyBub3cgYC4uL2luZGV4LmpzYCwgc28gdGhhdCBtb2R1bGUgd2lsbCB0eXBpY2FsbHkgYmUgYHJlcXVpcmUubWFpbmAuXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgYXN5bmNpZnkobWFpbik7XG59XG5cbi8vIGV2ZXJ5dGhpbmcgYmVsb3cgaGVyZSBpcyBpbnRlbmRlZCB0byBiZSBhIHB1YmxpYyBBUEkuXG5leHBvcnQgeyBtYWluLCBpbml0IH07XG5leHBvcnQgeyBBUFBJVU1fSE9NRSB9IGZyb20gJy4vZXh0ZW5zaW9uLWNvbmZpZyc7XG5leHBvcnQgeyBnZXRTY2hlbWEsIHZhbGlkYXRlLCBmaW5hbGl6ZVNjaGVtYSB9IGZyb20gJy4vc2NoZW1hL3NjaGVtYSc7XG5leHBvcnQgeyByZWFkQ29uZmlnRmlsZSB9IGZyb20gJy4vY29uZmlnLWZpbGUnO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3R5cGVzL3R5cGVzJykuUGFyc2VkQXJnc30gUGFyc2VkQXJnc1xuICovXG4iXSwiZmlsZSI6ImxpYi9tYWluLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
@@ -56,7 +56,7 @@ class PluginConfig extends _extensionConfig.default {
56
56
  }
57
57
 
58
58
  if (_lodash.default.isEmpty(activeNames)) {
59
- _logger.default.info('No plugins activated. Use the --plugins flag with names of plugins to activate');
59
+ _logger.default.info('No plugins activated. Use the --use-plugins flag with names of plugins to activate');
60
60
  }
61
61
  }
62
62
 
@@ -66,4 +66,4 @@ exports.default = PluginConfig;
66
66
  (0, _defineProperty2.default)(PluginConfig, "_instances", {});require('source-map-support').install();
67
67
 
68
68
 
69
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9wbHVnaW4tY29uZmlnLmpzIl0sIm5hbWVzIjpbIlBsdWdpbkNvbmZpZyIsIkV4dGVuc2lvbkNvbmZpZyIsImNvbnN0cnVjdG9yIiwiYXBwaXVtSG9tZSIsImxvZ0ZuIiwiUExVR0lOX1RZUEUiLCJnZXRJbnN0YW5jZSIsImluc3RhbmNlIiwiX2luc3RhbmNlcyIsImV4dGVuc2lvbkRlc2MiLCJwbHVnaW5OYW1lIiwidmVyc2lvbiIsInByaW50IiwiYWN0aXZlTmFtZXMiLCJwbHVnaW5OYW1lcyIsIk9iamVjdCIsImtleXMiLCJpbnN0YWxsZWRFeHRlbnNpb25zIiwiXyIsImlzRW1wdHkiLCJsb2ciLCJpbmZvIiwicGx1Z2luRGF0YSIsInRvUGFpcnMiLCJhY3RpdmVUeHQiLCJpbmNsdWRlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVlLE1BQU1BLFlBQU4sU0FBMkJDLHdCQUEzQixDQUEyQztBQWtCeERDLEVBQUFBLFdBQVcsQ0FBRUMsVUFBRixFQUFjQyxLQUFkLEVBQXFCO0FBQzlCLFVBQU1ELFVBQU4sRUFBa0JFLHdCQUFsQixFQUErQkQsS0FBL0I7QUFDRDs7QUFRaUIsU0FBWEUsV0FBVyxDQUFFSCxVQUFGLEVBQWNDLEtBQWQsRUFBcUI7QUFBQTs7QUFDckMsVUFBTUcsUUFBUSw0QkFBR1AsWUFBWSxDQUFDUSxVQUFiLENBQXdCTCxVQUF4QixDQUFILHlFQUEwQyxJQUFJSCxZQUFKLENBQWlCRyxVQUFqQixFQUE2QkMsS0FBN0IsQ0FBeEQ7QUFDQUosSUFBQUEsWUFBWSxDQUFDUSxVQUFiLENBQXdCTCxVQUF4QixJQUFzQ0ksUUFBdEM7QUFDQSxXQUFPQSxRQUFQO0FBQ0Q7O0FBRURFLEVBQUFBLGFBQWEsQ0FBRUMsVUFBRixFQUFjO0FBQUNDLElBQUFBO0FBQUQsR0FBZCxFQUF5QjtBQUNwQyxXQUFRLEdBQUVELFVBQVcsSUFBR0MsT0FBUSxFQUFoQztBQUNEOztBQUVEQyxFQUFBQSxLQUFLLENBQUVDLFdBQUYsRUFBZTtBQUNsQixVQUFNQyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZLEtBQUtDLG1CQUFqQixDQUFwQjs7QUFFQSxRQUFJQyxnQkFBRUMsT0FBRixDQUFVTCxXQUFWLENBQUosRUFBNEI7QUFDMUJNLHNCQUFJQyxJQUFKLENBQVUsMERBQUQsR0FDQSxnREFEVDs7QUFFQTtBQUNEOztBQUVERCxvQkFBSUMsSUFBSixDQUFVLG9CQUFWOztBQUNBLFNBQUssTUFBTSxDQUFDWCxVQUFELEVBQWFZLFVBQWIsQ0FBWCxJQUF1Q0osZ0JBQUVLLE9BQUYsQ0FBVSxLQUFLTixtQkFBZixDQUF2QyxFQUE0RTtBQUMxRSxZQUFNTyxTQUFTLEdBQUdOLGdCQUFFTyxRQUFGLENBQVdaLFdBQVgsRUFBd0JILFVBQXhCLElBQXNDLFdBQXRDLEdBQW9ELEVBQXRFOztBQUNBVSxzQkFBSUMsSUFBSixDQUFVLE9BQU0sS0FBS1osYUFBTCxDQUFtQkMsVUFBbkIsRUFBK0JZLFVBQS9CLENBQTJDLEdBQUVFLFNBQVUsRUFBdkU7QUFDRDs7QUFFRCxRQUFJTixnQkFBRUMsT0FBRixDQUFVTixXQUFWLENBQUosRUFBNEI7QUFDMUJPLHNCQUFJQyxJQUFKLENBQVMsZ0ZBQVQ7QUFDRDtBQUNGOztBQXhEdUQ7Ozs4QkFBckNyQixZLGdCQVFDLEUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEV4dGVuc2lvbkNvbmZpZyBmcm9tICcuL2V4dGVuc2lvbi1jb25maWcnO1xuaW1wb3J0IHsgUExVR0lOX1RZUEUgfSBmcm9tICcuL2V4dC1jb25maWctaW8nO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsdWdpbkNvbmZpZyBleHRlbmRzIEV4dGVuc2lvbkNvbmZpZyB7XG5cbiAgLyoqXG4gICAqIEEgbWFwcGluZyBvZiBgQVBQSVVNX0hPTUVgIHZhbHVlcyB0byB7QGxpbmsgUGx1Z2luQ29uZmlnfSBpbnN0YW5jZXMuXG4gICAqIEVhY2ggYEFQUElVTV9IT01FYCBzaG91bGQgb25seSBoYXZlIG9uZSBhc3NvY2lhdGVkIGBQbHVnaW5Db25maWdgIGluc3RhbmNlLlxuICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZyxQbHVnaW5Db25maWc+fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc3RhdGljIF9pbnN0YW5jZXMgPSB7fTtcblxuICAvKipcbiAgICogQ2FsbCB7QGxpbmsgUGx1Z2luQ29uZmlnLmdldEluc3RhbmNlfSBpbnN0ZWFkLlxuICAgKlxuICAgKiBKdXN0IGNhbGxzIHRoZSBzdXBlcmNsYXNzJyBjb25zdHJ1Y3RvciB3aXRoIHRoZSBjb3JyZWN0IGV4dGVuc2lvbiB0eXBlXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcHBpdW1Ib21lIC0gYEFQUElVTV9IT01FYCBwYXRoXG4gICAqIEBwYXJhbSB7KC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKX0gW2xvZ0ZuXSAtIE9wdGlvbmFsIGxvZ2dpbmcgZnVuY3Rpb25cbiAgICovXG4gIGNvbnN0cnVjdG9yIChhcHBpdW1Ib21lLCBsb2dGbikge1xuICAgIHN1cGVyKGFwcGl1bUhvbWUsIFBMVUdJTl9UWVBFLCBsb2dGbik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBvciBnZXRzIGFuIGluc3RhbmNlIG9mIHtAbGluayBQbHVnaW5Db25maWd9IGJhc2VkIHZhbHVlIG9mIGBhcHBpdW1Ib21lYFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwaXVtSG9tZSAtIGBBUFBJVU1fSE9NRWAgcGF0aFxuICAgKiBAcGFyYW0geyguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZH0gW2xvZ0ZuXSAtIE9wdGlvbmFsIGxvZ2dpbmcgZnVuY3Rpb25cbiAgICogQHJldHVybnMge1BsdWdpbkNvbmZpZ31cbiAgICovXG4gIHN0YXRpYyBnZXRJbnN0YW5jZSAoYXBwaXVtSG9tZSwgbG9nRm4pIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IFBsdWdpbkNvbmZpZy5faW5zdGFuY2VzW2FwcGl1bUhvbWVdID8/IG5ldyBQbHVnaW5Db25maWcoYXBwaXVtSG9tZSwgbG9nRm4pO1xuICAgIFBsdWdpbkNvbmZpZy5faW5zdGFuY2VzW2FwcGl1bUhvbWVdID0gaW5zdGFuY2U7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgZXh0ZW5zaW9uRGVzYyAocGx1Z2luTmFtZSwge3ZlcnNpb259KSB7XG4gICAgcmV0dXJuIGAke3BsdWdpbk5hbWV9QCR7dmVyc2lvbn1gO1xuICB9XG5cbiAgcHJpbnQgKGFjdGl2ZU5hbWVzKSB7XG4gICAgY29uc3QgcGx1Z2luTmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnMpO1xuXG4gICAgaWYgKF8uaXNFbXB0eShwbHVnaW5OYW1lcykpIHtcbiAgICAgIGxvZy5pbmZvKGBObyBwbHVnaW5zIGhhdmUgYmVlbiBpbnN0YWxsZWQuIFVzZSB0aGUgXCJhcHBpdW0gcGx1Z2luXCIgYCArXG4gICAgICAgICAgICAgICAnY29tbWFuZCB0byBpbnN0YWxsIHRoZSBvbmUocykgeW91IHdhbnQgdG8gdXNlLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvZy5pbmZvKGBBdmFpbGFibGUgcGx1Z2luczpgKTtcbiAgICBmb3IgKGNvbnN0IFtwbHVnaW5OYW1lLCBwbHVnaW5EYXRhXSBvZiBfLnRvUGFpcnModGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zKSkge1xuICAgICAgY29uc3QgYWN0aXZlVHh0ID0gXy5pbmNsdWRlcyhhY3RpdmVOYW1lcywgcGx1Z2luTmFtZSkgPyAnIChBQ1RJVkUpJyA6ICcnO1xuICAgICAgbG9nLmluZm8oYCAgLSAke3RoaXMuZXh0ZW5zaW9uRGVzYyhwbHVnaW5OYW1lLCBwbHVnaW5EYXRhKX0ke2FjdGl2ZVR4dH1gKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc0VtcHR5KGFjdGl2ZU5hbWVzKSkge1xuICAgICAgbG9nLmluZm8oJ05vIHBsdWdpbnMgYWN0aXZhdGVkLiBVc2UgdGhlIC0tcGx1Z2lucyBmbGFnIHdpdGggbmFtZXMgb2YgcGx1Z2lucyB0byBhY3RpdmF0ZScpO1xuICAgIH1cbiAgfVxufVxuIl0sImZpbGUiOiJsaWIvcGx1Z2luLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
69
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9wbHVnaW4tY29uZmlnLmpzIl0sIm5hbWVzIjpbIlBsdWdpbkNvbmZpZyIsIkV4dGVuc2lvbkNvbmZpZyIsImNvbnN0cnVjdG9yIiwiYXBwaXVtSG9tZSIsImxvZ0ZuIiwiUExVR0lOX1RZUEUiLCJnZXRJbnN0YW5jZSIsImluc3RhbmNlIiwiX2luc3RhbmNlcyIsImV4dGVuc2lvbkRlc2MiLCJwbHVnaW5OYW1lIiwidmVyc2lvbiIsInByaW50IiwiYWN0aXZlTmFtZXMiLCJwbHVnaW5OYW1lcyIsIk9iamVjdCIsImtleXMiLCJpbnN0YWxsZWRFeHRlbnNpb25zIiwiXyIsImlzRW1wdHkiLCJsb2ciLCJpbmZvIiwicGx1Z2luRGF0YSIsInRvUGFpcnMiLCJhY3RpdmVUeHQiLCJpbmNsdWRlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVlLE1BQU1BLFlBQU4sU0FBMkJDLHdCQUEzQixDQUEyQztBQWtCeERDLEVBQUFBLFdBQVcsQ0FBRUMsVUFBRixFQUFjQyxLQUFkLEVBQXFCO0FBQzlCLFVBQU1ELFVBQU4sRUFBa0JFLHdCQUFsQixFQUErQkQsS0FBL0I7QUFDRDs7QUFRaUIsU0FBWEUsV0FBVyxDQUFFSCxVQUFGLEVBQWNDLEtBQWQsRUFBcUI7QUFBQTs7QUFDckMsVUFBTUcsUUFBUSw0QkFBR1AsWUFBWSxDQUFDUSxVQUFiLENBQXdCTCxVQUF4QixDQUFILHlFQUEwQyxJQUFJSCxZQUFKLENBQWlCRyxVQUFqQixFQUE2QkMsS0FBN0IsQ0FBeEQ7QUFDQUosSUFBQUEsWUFBWSxDQUFDUSxVQUFiLENBQXdCTCxVQUF4QixJQUFzQ0ksUUFBdEM7QUFDQSxXQUFPQSxRQUFQO0FBQ0Q7O0FBRURFLEVBQUFBLGFBQWEsQ0FBRUMsVUFBRixFQUFjO0FBQUNDLElBQUFBO0FBQUQsR0FBZCxFQUF5QjtBQUNwQyxXQUFRLEdBQUVELFVBQVcsSUFBR0MsT0FBUSxFQUFoQztBQUNEOztBQUVEQyxFQUFBQSxLQUFLLENBQUVDLFdBQUYsRUFBZTtBQUNsQixVQUFNQyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZLEtBQUtDLG1CQUFqQixDQUFwQjs7QUFFQSxRQUFJQyxnQkFBRUMsT0FBRixDQUFVTCxXQUFWLENBQUosRUFBNEI7QUFDMUJNLHNCQUFJQyxJQUFKLENBQVUsMERBQUQsR0FDQSxnREFEVDs7QUFFQTtBQUNEOztBQUVERCxvQkFBSUMsSUFBSixDQUFVLG9CQUFWOztBQUNBLFNBQUssTUFBTSxDQUFDWCxVQUFELEVBQWFZLFVBQWIsQ0FBWCxJQUF1Q0osZ0JBQUVLLE9BQUYsQ0FBVSxLQUFLTixtQkFBZixDQUF2QyxFQUE0RTtBQUMxRSxZQUFNTyxTQUFTLEdBQUdOLGdCQUFFTyxRQUFGLENBQVdaLFdBQVgsRUFBd0JILFVBQXhCLElBQXNDLFdBQXRDLEdBQW9ELEVBQXRFOztBQUNBVSxzQkFBSUMsSUFBSixDQUFVLE9BQU0sS0FBS1osYUFBTCxDQUFtQkMsVUFBbkIsRUFBK0JZLFVBQS9CLENBQTJDLEdBQUVFLFNBQVUsRUFBdkU7QUFDRDs7QUFFRCxRQUFJTixnQkFBRUMsT0FBRixDQUFVTixXQUFWLENBQUosRUFBNEI7QUFDMUJPLHNCQUFJQyxJQUFKLENBQVMsb0ZBQVQ7QUFDRDtBQUNGOztBQXhEdUQ7Ozs4QkFBckNyQixZLGdCQVFDLEUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEV4dGVuc2lvbkNvbmZpZyBmcm9tICcuL2V4dGVuc2lvbi1jb25maWcnO1xuaW1wb3J0IHsgUExVR0lOX1RZUEUgfSBmcm9tICcuL2V4dC1jb25maWctaW8nO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsdWdpbkNvbmZpZyBleHRlbmRzIEV4dGVuc2lvbkNvbmZpZyB7XG5cbiAgLyoqXG4gICAqIEEgbWFwcGluZyBvZiBgQVBQSVVNX0hPTUVgIHZhbHVlcyB0byB7QGxpbmsgUGx1Z2luQ29uZmlnfSBpbnN0YW5jZXMuXG4gICAqIEVhY2ggYEFQUElVTV9IT01FYCBzaG91bGQgb25seSBoYXZlIG9uZSBhc3NvY2lhdGVkIGBQbHVnaW5Db25maWdgIGluc3RhbmNlLlxuICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZyxQbHVnaW5Db25maWc+fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc3RhdGljIF9pbnN0YW5jZXMgPSB7fTtcblxuICAvKipcbiAgICogQ2FsbCB7QGxpbmsgUGx1Z2luQ29uZmlnLmdldEluc3RhbmNlfSBpbnN0ZWFkLlxuICAgKlxuICAgKiBKdXN0IGNhbGxzIHRoZSBzdXBlcmNsYXNzJyBjb25zdHJ1Y3RvciB3aXRoIHRoZSBjb3JyZWN0IGV4dGVuc2lvbiB0eXBlXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcHBpdW1Ib21lIC0gYEFQUElVTV9IT01FYCBwYXRoXG4gICAqIEBwYXJhbSB7KC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKX0gW2xvZ0ZuXSAtIE9wdGlvbmFsIGxvZ2dpbmcgZnVuY3Rpb25cbiAgICovXG4gIGNvbnN0cnVjdG9yIChhcHBpdW1Ib21lLCBsb2dGbikge1xuICAgIHN1cGVyKGFwcGl1bUhvbWUsIFBMVUdJTl9UWVBFLCBsb2dGbik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBvciBnZXRzIGFuIGluc3RhbmNlIG9mIHtAbGluayBQbHVnaW5Db25maWd9IGJhc2VkIHZhbHVlIG9mIGBhcHBpdW1Ib21lYFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwaXVtSG9tZSAtIGBBUFBJVU1fSE9NRWAgcGF0aFxuICAgKiBAcGFyYW0geyguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZH0gW2xvZ0ZuXSAtIE9wdGlvbmFsIGxvZ2dpbmcgZnVuY3Rpb25cbiAgICogQHJldHVybnMge1BsdWdpbkNvbmZpZ31cbiAgICovXG4gIHN0YXRpYyBnZXRJbnN0YW5jZSAoYXBwaXVtSG9tZSwgbG9nRm4pIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IFBsdWdpbkNvbmZpZy5faW5zdGFuY2VzW2FwcGl1bUhvbWVdID8/IG5ldyBQbHVnaW5Db25maWcoYXBwaXVtSG9tZSwgbG9nRm4pO1xuICAgIFBsdWdpbkNvbmZpZy5faW5zdGFuY2VzW2FwcGl1bUhvbWVdID0gaW5zdGFuY2U7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgZXh0ZW5zaW9uRGVzYyAocGx1Z2luTmFtZSwge3ZlcnNpb259KSB7XG4gICAgcmV0dXJuIGAke3BsdWdpbk5hbWV9QCR7dmVyc2lvbn1gO1xuICB9XG5cbiAgcHJpbnQgKGFjdGl2ZU5hbWVzKSB7XG4gICAgY29uc3QgcGx1Z2luTmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnMpO1xuXG4gICAgaWYgKF8uaXNFbXB0eShwbHVnaW5OYW1lcykpIHtcbiAgICAgIGxvZy5pbmZvKGBObyBwbHVnaW5zIGhhdmUgYmVlbiBpbnN0YWxsZWQuIFVzZSB0aGUgXCJhcHBpdW0gcGx1Z2luXCIgYCArXG4gICAgICAgICAgICAgICAnY29tbWFuZCB0byBpbnN0YWxsIHRoZSBvbmUocykgeW91IHdhbnQgdG8gdXNlLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvZy5pbmZvKGBBdmFpbGFibGUgcGx1Z2luczpgKTtcbiAgICBmb3IgKGNvbnN0IFtwbHVnaW5OYW1lLCBwbHVnaW5EYXRhXSBvZiBfLnRvUGFpcnModGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zKSkge1xuICAgICAgY29uc3QgYWN0aXZlVHh0ID0gXy5pbmNsdWRlcyhhY3RpdmVOYW1lcywgcGx1Z2luTmFtZSkgPyAnIChBQ1RJVkUpJyA6ICcnO1xuICAgICAgbG9nLmluZm8oYCAgLSAke3RoaXMuZXh0ZW5zaW9uRGVzYyhwbHVnaW5OYW1lLCBwbHVnaW5EYXRhKX0ke2FjdGl2ZVR4dH1gKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc0VtcHR5KGFjdGl2ZU5hbWVzKSkge1xuICAgICAgbG9nLmluZm8oJ05vIHBsdWdpbnMgYWN0aXZhdGVkLiBVc2UgdGhlIC0tdXNlLXBsdWdpbnMgZmxhZyB3aXRoIG5hbWVzIG9mIHBsdWdpbnMgdG8gYWN0aXZhdGUnKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJmaWxlIjoibGliL3BsdWdpbi1jb25maWcuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==