appium 2.0.0-beta.41 → 2.0.0-beta.42
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.
- package/build/lib/cli/args.js +2 -2
- package/build/lib/cli/driver-command.d.ts +2 -1
- package/build/lib/cli/driver-command.d.ts.map +1 -1
- package/build/lib/cli/driver-command.js +5 -3
- package/build/lib/cli/extension-command.d.ts +5 -1
- package/build/lib/cli/extension-command.d.ts.map +1 -1
- package/build/lib/cli/extension-command.js +4 -3
- package/build/lib/cli/extension.d.ts +8 -4
- package/build/lib/cli/extension.d.ts.map +1 -1
- package/build/lib/cli/extension.js +2 -1
- package/build/lib/cli/parser.d.ts +5 -1
- package/build/lib/cli/parser.d.ts.map +1 -1
- package/build/lib/cli/parser.js +19 -6
- package/build/lib/cli/plugin-command.d.ts +2 -1
- package/build/lib/cli/plugin-command.d.ts.map +1 -1
- package/build/lib/cli/plugin-command.js +5 -3
- package/build/lib/config.d.ts +1 -0
- package/build/lib/config.d.ts.map +1 -1
- package/build/lib/config.js +19 -4
- package/build/lib/main.d.ts.map +1 -1
- package/build/lib/main.js +18 -30
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/cli.d.ts +12 -0
- package/build/types/cli.d.ts.map +1 -1
- package/lib/cli/args.js +2 -2
- package/lib/cli/driver-command.js +2 -2
- package/lib/cli/extension-command.js +3 -2
- package/lib/cli/extension.js +16 -4
- package/lib/cli/parser.js +27 -5
- package/lib/cli/plugin-command.js +2 -2
- package/lib/config.js +22 -2
- package/lib/main.js +21 -31
- package/package.json +14 -13
- package/types/cli.ts +15 -0
package/build/lib/cli/parser.js
CHANGED
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.ArgParser = void 0;
|
|
8
|
+
exports.EXTRA_ARGS = exports.ArgParser = void 0;
|
|
9
9
|
exports.getParser = getParser;
|
|
10
10
|
|
|
11
11
|
require("source-map-support/register");
|
|
@@ -26,6 +26,8 @@ var _config = require("../config");
|
|
|
26
26
|
|
|
27
27
|
var _args = require("./args");
|
|
28
28
|
|
|
29
|
+
const EXTRA_ARGS = 'extraArgs';
|
|
30
|
+
exports.EXTRA_ARGS = EXTRA_ARGS;
|
|
29
31
|
const NON_SERVER_ARGS = Object.freeze(new Set([_constants.DRIVER_TYPE, _constants.PLUGIN_TYPE, _constants.SERVER_SUBCOMMAND, '-h', '--help', '-v', '--version']));
|
|
30
32
|
|
|
31
33
|
const version = _support.fs.readPackageJsonFrom(_config.rootDir).version;
|
|
@@ -67,8 +69,16 @@ class ArgParser {
|
|
|
67
69
|
}
|
|
68
70
|
|
|
69
71
|
try {
|
|
70
|
-
const parsed = this.parser.
|
|
71
|
-
|
|
72
|
+
const parsed = this.parser.parse_known_args(args);
|
|
73
|
+
const [knownArgs, unknownArgs] = parsed;
|
|
74
|
+
|
|
75
|
+
if (unknownArgs !== null && unknownArgs !== void 0 && unknownArgs.length && (knownArgs.driverCommand === 'run' || knownArgs.pluginCommand === 'run')) {
|
|
76
|
+
return ArgParser._transformParsedArgs(knownArgs, unknownArgs);
|
|
77
|
+
} else if (unknownArgs !== null && unknownArgs !== void 0 && unknownArgs.length) {
|
|
78
|
+
throw new Error(`[ERROR] Unrecognized arguments: ${unknownArgs.join(' ')}`);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return ArgParser._transformParsedArgs(knownArgs);
|
|
72
82
|
} catch (err) {
|
|
73
83
|
if (this.debug) {
|
|
74
84
|
throw err;
|
|
@@ -82,8 +92,8 @@ class ArgParser {
|
|
|
82
92
|
}
|
|
83
93
|
}
|
|
84
94
|
|
|
85
|
-
static _transformParsedArgs(args) {
|
|
86
|
-
|
|
95
|
+
static _transformParsedArgs(args, unknownArgs = []) {
|
|
96
|
+
const result = _lodash.default.reduce(args, (unpacked, value, key) => {
|
|
87
97
|
if (!_lodash.default.isUndefined(value) && (0, _schema.hasArgSpec)(key)) {
|
|
88
98
|
const {
|
|
89
99
|
dest
|
|
@@ -96,6 +106,9 @@ class ArgParser {
|
|
|
96
106
|
|
|
97
107
|
return unpacked;
|
|
98
108
|
}, {});
|
|
109
|
+
|
|
110
|
+
result[EXTRA_ARGS] = unknownArgs;
|
|
111
|
+
return result;
|
|
99
112
|
}
|
|
100
113
|
|
|
101
114
|
static _patchExit(parser) {
|
|
@@ -188,4 +201,4 @@ function getParser(debug) {
|
|
|
188
201
|
(0, _schema.finalizeSchema)();
|
|
189
202
|
return new ArgParser(debug);
|
|
190
203
|
}
|
|
191
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOT05fU0VSVkVSX0FSR1MiLCJPYmplY3QiLCJmcmVlemUiLCJTZXQiLCJEUklWRVJfVFlQRSIsIlBMVUdJTl9UWVBFIiwiU0VSVkVSX1NVQkNPTU1BTkQiLCJ2ZXJzaW9uIiwiZnMiLCJyZWFkUGFja2FnZUpzb25Gcm9tIiwicm9vdERpciIsIkFyZ1BhcnNlciIsImNvbnN0cnVjdG9yIiwiZGVidWciLCJwcm9nIiwicHJvY2VzcyIsImFyZ3YiLCJwYXRoIiwiYmFzZW5hbWUiLCJwYXJzZXIiLCJBcmd1bWVudFBhcnNlciIsImFkZF9oZWxwIiwiZGVzY3JpcHRpb24iLCJfcGF0Y2hFeGl0IiwiYWRkX2FyZ3VtZW50IiwiYWN0aW9uIiwic3ViUGFyc2VycyIsImFkZF9zdWJwYXJzZXJzIiwiZGVzdCIsInNlcnZlckFyZ3MiLCJfYWRkU2VydmVyVG9QYXJzZXIiLCJyYXdBcmdzIiwiX2FkZEV4dGVuc2lvbkNvbW1hbmRzVG9QYXJzZXIiLCJwYXJzZV9hcmdzIiwicGFyc2VBcmdzIiwiYXJncyIsInNsaWNlIiwiaGFzIiwidW5zaGlmdCIsInBhcnNlZCIsIl90cmFuc2Zvcm1QYXJzZWRBcmdzIiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwibWVzc2FnZSIsImV4aXQiLCJfIiwicmVkdWNlIiwidW5wYWNrZWQiLCJ2YWx1ZSIsImtleSIsImlzVW5kZWZpbmVkIiwiaGFzQXJnU3BlYyIsImdldEFyZ1NwZWMiLCJzZXQiLCJjb2RlIiwibXNnIiwiRXJyb3IiLCJzdWJQYXJzZXIiLCJzZXJ2ZXJQYXJzZXIiLCJhZGRfcGFyc2VyIiwiaGVscCIsImdldFNlcnZlckFyZ3MiLCJmbGFnc09yTmFtZXMiLCJvcHRzIiwidHlwZSIsImV4dFBhcnNlciIsImV4dFN1YlBhcnNlcnMiLCJleHRlbnNpb25BcmdzIiwiZ2V0RXh0ZW5zaW9uQXJncyIsInBhcnNlclNwZWNzIiwiY29tbWFuZCIsImxpc3QiLCJpbnN0YWxsIiwidW5pbnN0YWxsIiwidXBkYXRlIiwicnVuIiwiZ2V0UGFyc2VyIiwiZmluYWxpemVTY2hlbWEiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY2xpL3BhcnNlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2ZzfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHtBcmd1bWVudFBhcnNlcn0gZnJvbSAnYXJncGFyc2UnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtEUklWRVJfVFlQRSwgUExVR0lOX1RZUEUsIFNFUlZFUl9TVUJDT01NQU5EfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtmaW5hbGl6ZVNjaGVtYSwgZ2V0QXJnU3BlYywgaGFzQXJnU3BlY30gZnJvbSAnLi4vc2NoZW1hJztcbmltcG9ydCB7cm9vdERpcn0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7Z2V0RXh0ZW5zaW9uQXJncywgZ2V0U2VydmVyQXJnc30gZnJvbSAnLi9hcmdzJztcblxuLyoqXG4gKiBJZiB0aGUgcGFyc2VkIGFyZ3MgZG8gbm90IGNvbnRhaW4gYW55IG9mIHRoZXNlIHZhbHVlcywgdGhlbiB3ZVxuICogd2lsbCBhdXRvbWF0aWFsbHkgaW5qZWN0IHRoZSBgc2VydmVyYCBzdWJjb21tYW5kLlxuICovXG5jb25zdCBOT05fU0VSVkVSX0FSR1MgPSBPYmplY3QuZnJlZXplKFxuICBuZXcgU2V0KFtEUklWRVJfVFlQRSwgUExVR0lOX1RZUEUsIFNFUlZFUl9TVUJDT01NQU5ELCAnLWgnLCAnLS1oZWxwJywgJy12JywgJy0tdmVyc2lvbiddKVxuKTtcblxuY29uc3QgdmVyc2lvbiA9IGZzLnJlYWRQYWNrYWdlSnNvbkZyb20ocm9vdERpcikudmVyc2lvbjtcblxuLyoqXG4gKiBBIHdyYXBwZXIgYXJvdW5kIGBhcmdwYXJzZWBcbiAqXG4gKiAtIEhhbmRsZXMgaW5zdGFudGlhdGlvbiwgY29uZmlndXJhdGlvbiwgYW5kIG1vbmtleXBhdGNoaW5nIG9mIGFuXG4gKiAgICBgQXJndW1lbnRQYXJzZXJgIGluc3RhbmNlIGZvciBBcHBpdW0gc2VydmVyIGFuZCBpdHMgZXh0ZW5zaW9uc1xuICogLSBIYW5kbGVzIGVycm9yIGNvbmRpdGlvbnMsIG1lc3NhZ2VzLCBhbmQgZXhpdCBiZWhhdmlvclxuICovXG5jbGFzcyBBcmdQYXJzZXIge1xuICAvKipcbiAgICogQHBhcmFtIHtib29sZWFufSBbZGVidWddIC0gSWYgdHJ1ZSwgdGhyb3cgaW5zdGVhZCBvZiBleGl0IG9uIGVycm9yLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZGVidWcgPSBmYWxzZSkge1xuICAgIGNvbnN0IHByb2cgPSBwcm9jZXNzLmFyZ3ZbMV0gPyBwYXRoLmJhc2VuYW1lKHByb2Nlc3MuYXJndlsxXSkgOiAnYXBwaXVtJztcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgQXJndW1lbnRQYXJzZXIoe1xuICAgICAgYWRkX2hlbHA6IHRydWUsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0Egd2ViZHJpdmVyLWNvbXBhdGlibGUgc2VydmVyIHRoYXQgZmFjaWxpdGF0ZXMgYXV0b21hdGlvbiBvZiB3ZWIsIG1vYmlsZSwgYW5kIG90aGVyIHR5cGVzIG9mIGFwcHMgYWNyb3NzIHZhcmlvdXMgcGxhdGZvcm1zLicsXG4gICAgICBwcm9nLFxuICAgIH0pO1xuXG4gICAgQXJnUGFyc2VyLl9wYXRjaEV4aXQocGFyc2VyKTtcblxuICAgIC8qKlxuICAgICAqIFByb2dyYW0gbmFtZSAodHlwaWNhbGx5IGBhcHBpdW1gKVxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5wcm9nID0gcHJvZztcblxuICAgIC8qKlxuICAgICAqIElmIGB0cnVlYCwgdGhyb3cgYW4gZXJyb3Igb24gcGFyc2UgZmFpbHVyZSBpbnN0ZWFkIG9mIHByaW50aW5nIGhlbHBcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG5cbiAgICAvKipcbiAgICAgKiBXcmFwcGVkIGBBcmd1bWVudFBhcnNlcmAgaW5zdGFuY2VcbiAgICAgKiBAdHlwZSB7QXJndW1lbnRQYXJzZXJ9XG4gICAgICovXG4gICAgdGhpcy5wYXJzZXIgPSBwYXJzZXI7XG5cbiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcnNpb24nLCB7XG4gICAgICBhY3Rpb246ICd2ZXJzaW9uJyxcbiAgICAgIHZlcnNpb24sXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdWJQYXJzZXJzID0gcGFyc2VyLmFkZF9zdWJwYXJzZXJzKHtkZXN0OiAnc3ViY29tbWFuZCd9KTtcblxuICAgIC8vIGFkZCB0aGUgJ3NlcnZlcicgc3ViY29tbWFuZCwgYW5kIHN0b3JlIHRoZSByYXcgYXJndW1lbnRzIG9uIHRoZSBwYXJzZXJcbiAgICAvLyBvYmplY3QgYXMgYSB3YXkgZm9yIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlIHRvIHdvcmsgd2l0aCB0aGUgYXJndW1lbnRzXG4gICAgLy8gY29uY2VwdHVhbGx5IHJhdGhlciB0aGFuIGp1c3QgdGhyb3VnaCBhcmdwYXJzZVxuICAgIGNvbnN0IHNlcnZlckFyZ3MgPSBBcmdQYXJzZXIuX2FkZFNlcnZlclRvUGFyc2VyKHN1YlBhcnNlcnMpO1xuXG4gICAgdGhpcy5yYXdBcmdzID0gc2VydmVyQXJncztcblxuICAgIC8vIGFkZCB0aGUgJ2RyaXZlcicgYW5kICdwbHVnaW4nIHN1YmNvbW1hbmRzXG4gICAgQXJnUGFyc2VyLl9hZGRFeHRlbnNpb25Db21tYW5kc1RvUGFyc2VyKHN1YlBhcnNlcnMpO1xuXG4gICAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgLyBkcm9wLWluIHdyYXBwZXJcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7QXJnUGFyc2VyWydwYXJzZUFyZ3MnXX1cbiAgICAgKi9cbiAgICB0aGlzLnBhcnNlX2FyZ3MgPSB0aGlzLnBhcnNlQXJncztcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhcmd1bWVudHMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLlxuICAgKlxuICAgKiBJZiBubyBzdWJjb21tYW5kIGlzIHBhc3NlZCBpbiwgdGhpcyBtZXRob2Qgd2lsbCBpbmplY3QgdGhlIGBzZXJ2ZXJgIHN1YmNvbW1hbmQuXG4gICAqXG4gICAqIGBBcmdQYXJzZXIucHJvdG90eXBlLnBhcnNlX2FyZ3NgIGlzIGFuIGFsaWFzIG9mIHRoaXMgbWV0aG9kLlxuICAgKiBAdGVtcGxhdGUgW1Q9aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5XaXRoU2VydmVyU3ViY29tbWFuZF1cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gW2FyZ3NdIC0gQXJyYXkgb2YgYXJndW1lbnRzLCBvc3RlbnNpYmx5IGZyb20gYHByb2Nlc3MuYXJndmAuIEdhdGhlcnMgYXJncyBmcm9tIGBwcm9jZXNzLmFyZ3ZgIGlmIG5vdCBwcm92aWRlZC5cbiAgICogQHJldHVybnMge2ltcG9ydCgnYXBwaXVtL3R5cGVzJykuQXJnczxUPn0gLSBUaGUgcGFyc2VkIGFyZ3VtZW50c1xuICAgKi9cbiAgcGFyc2VBcmdzKGFyZ3MgPSBwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpIHtcbiAgICBpZiAoIU5PTl9TRVJWRVJfQVJHUy5oYXMoYXJnc1swXSkpIHtcbiAgICAgIGFyZ3MudW5zaGlmdChTRVJWRVJfU1VCQ09NTUFORCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VyLnBhcnNlX2FyZ3MoYXJncyk7XG4gICAgICByZXR1cm4gQXJnUGFyc2VyLl90cmFuc2Zvcm1QYXJzZWRBcmdzKHBhcnNlZCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgICAvLyB0aGlzIGlzbid0IHRlc3RlZCB2aWEgdW5pdCB0ZXN0cyAod2UgdXNlIGBkZWJ1ZzogdHJ1ZWApIHNvIG1heSBlc2NhcGUgY292ZXJhZ2UuXG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKTsgLy8gbmVlZCBhbiBleHRyYSBzcGFjZSBzaW5jZSBhcmdwYXJzZSBwcmludHMgdXNhZ2UuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGFuIG9iamVjdCBmdWxsIG9mIGFyZ3VtZW50cyBhcyByZXR1cm5lZCBieSBgYXJncGFyc2VyLnBhcnNlX2FyZ3NgLFxuICAgKiBleHBhbmQgdGhlIG9uZXMgZm9yIGV4dGVuc2lvbnMgaW50byBhIG5lc3RlZCBvYmplY3Qgc3RydWN0dXJlIGFuZCByZW5hbWVcbiAgICoga2V5cyB0byBtYXRjaCB0aGUgaW50ZW5kZWQgZGVzdGluYXRpb24uXG4gICAqXG4gICAqIEUuZy4sIGB7J2RyaXZlci1mb28tYmFyJzogYmF6fWAgYmVjb21lcyBge2RyaXZlcjoge2Zvbzoge2JhcjogJ2Jheid9fX1gXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAqIEByZXR1cm5zIHtvYmplY3R9XG4gICAqL1xuICBzdGF0aWMgX3RyYW5zZm9ybVBhcnNlZEFyZ3MoYXJncykge1xuICAgIHJldHVybiBfLnJlZHVjZShcbiAgICAgIGFyZ3MsXG4gICAgICAodW5wYWNrZWQsIHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHZhbHVlKSAmJiBoYXNBcmdTcGVjKGtleSkpIHtcbiAgICAgICAgICBjb25zdCB7ZGVzdH0gPSAvKiogQHR5cGUge2ltcG9ydCgnLi4vc2NoZW1hL2FyZy1zcGVjJykuQXJnU3BlY30gKi8gKGdldEFyZ1NwZWMoa2V5KSk7XG4gICAgICAgICAgXy5zZXQodW5wYWNrZWQsIGRlc3QsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0aGlzIGNvdWxkIGJlIGFueXRoaW5nIHRoYXQgX2lzbid0XyBhIHNlcnZlciBhcmdcbiAgICAgICAgICB1bnBhY2tlZFtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVucGFja2VkO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRjaGVzIHRoZSBgZXhpdCgpYCBtZXRob2Qgb2YgdGhlIHBhcnNlciB0byB0aHJvdyBhbiBlcnJvciwgc28gd2UgY2FuIGhhbmRsZSBpdCBtYW51YWxseS5cbiAgICogQHBhcmFtIHtBcmd1bWVudFBhcnNlcn0gcGFyc2VyXG4gICAqL1xuICBzdGF0aWMgX3BhdGNoRXhpdChwYXJzZXIpIHtcbiAgICBwYXJzZXIuZXhpdCA9IChjb2RlLCBtc2cpID0+IHtcbiAgICAgIGlmIChjb2RlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5leGl0KCk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnYXJncGFyc2UnKS5TdWJQYXJzZXJ9IHN1YlBhcnNlclxuICAgKiBAcmV0dXJucyB7aW1wb3J0KCcuL2FyZ3MnKS5Bcmd1bWVudERlZmluaXRpb25zfVxuICAgKi9cbiAgc3RhdGljIF9hZGRTZXJ2ZXJUb1BhcnNlcihzdWJQYXJzZXIpIHtcbiAgICBjb25zdCBzZXJ2ZXJQYXJzZXIgPSBzdWJQYXJzZXIuYWRkX3BhcnNlcignc2VydmVyJywge1xuICAgICAgYWRkX2hlbHA6IHRydWUsXG4gICAgICBoZWxwOiAnUnVuIGFuIEFwcGl1bSBzZXJ2ZXInLFxuICAgIH0pO1xuXG4gICAgQXJnUGFyc2VyLl9wYXRjaEV4aXQoc2VydmVyUGFyc2VyKTtcblxuICAgIGNvbnN0IHNlcnZlckFyZ3MgPSBnZXRTZXJ2ZXJBcmdzKCk7XG4gICAgZm9yIChjb25zdCBbZmxhZ3NPck5hbWVzLCBvcHRzXSBvZiBzZXJ2ZXJBcmdzKSB7XG4gICAgICAvLyBUUyBkb2Vzbid0IGxpa2UgdGhlIHNwcmVhZCBvcGVyYXRvciBoZXJlLlxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2VydmVyUGFyc2VyLmFkZF9hcmd1bWVudCguLi5mbGFnc09yTmFtZXMsIHsuLi5vcHRzfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlcnZlckFyZ3M7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBleHRlbnNpb24gc3ViLXN1Yi1jb21tYW5kcyB0byBgZHJpdmVyYC9gcGx1Z2luYCBzdWJjb21tYW5kc1xuICAgKiBAcGFyYW0ge2ltcG9ydCgnYXJncGFyc2UnKS5TdWJQYXJzZXJ9IHN1YlBhcnNlcnNcbiAgICovXG4gIHN0YXRpYyBfYWRkRXh0ZW5zaW9uQ29tbWFuZHNUb1BhcnNlcihzdWJQYXJzZXJzKSB7XG4gICAgZm9yIChjb25zdCB0eXBlIG9mIFtEUklWRVJfVFlQRSwgUExVR0lOX1RZUEVdKSB7XG4gICAgICBjb25zdCBleHRQYXJzZXIgPSBzdWJQYXJzZXJzLmFkZF9wYXJzZXIodHlwZSwge1xuICAgICAgICBhZGRfaGVscDogdHJ1ZSxcbiAgICAgICAgaGVscDogYEFjY2VzcyB0aGUgJHt0eXBlfSBtYW5hZ2VtZW50IENMSSBjb21tYW5kc2AsXG4gICAgICB9KTtcblxuICAgICAgQXJnUGFyc2VyLl9wYXRjaEV4aXQoZXh0UGFyc2VyKTtcblxuICAgICAgY29uc3QgZXh0U3ViUGFyc2VycyA9IGV4dFBhcnNlci5hZGRfc3VicGFyc2Vycyh7XG4gICAgICAgIGRlc3Q6IGAke3R5cGV9Q29tbWFuZGAsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGV4dGVuc2lvbkFyZ3MgPSBnZXRFeHRlbnNpb25BcmdzKCk7XG4gICAgICBjb25zdCBwYXJzZXJTcGVjcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGNvbW1hbmQ6ICdsaXN0JyxcbiAgICAgICAgICBhcmdzOiBleHRlbnNpb25BcmdzW3R5cGVdLmxpc3QsXG4gICAgICAgICAgaGVscDogYExpc3QgYXZhaWxhYmxlIGFuZCBpbnN0YWxsZWQgJHt0eXBlfXNgLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29tbWFuZDogJ2luc3RhbGwnLFxuICAgICAgICAgIGFyZ3M6IGV4dGVuc2lvbkFyZ3NbdHlwZV0uaW5zdGFsbCxcbiAgICAgICAgICBoZWxwOiBgSW5zdGFsbCBhICR7dHlwZX1gLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29tbWFuZDogJ3VuaW5zdGFsbCcsXG4gICAgICAgICAgYXJnczogZXh0ZW5zaW9uQXJnc1t0eXBlXS51bmluc3RhbGwsXG4gICAgICAgICAgaGVscDogYFVuaW5zdGFsbCBhICR7dHlwZX1gLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29tbWFuZDogJ3VwZGF0ZScsXG4gICAgICAgICAgYXJnczogZXh0ZW5zaW9uQXJnc1t0eXBlXS51cGRhdGUsXG4gICAgICAgICAgaGVscDogYFVwZGF0ZSBpbnN0YWxsZWQgJHt0eXBlfXMgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uYCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbW1hbmQ6ICdydW4nLFxuICAgICAgICAgIGFyZ3M6IGV4dGVuc2lvbkFyZ3NbdHlwZV0ucnVuLFxuICAgICAgICAgIGhlbHA6XG4gICAgICAgICAgICBgUnVuIGEgc2NyaXB0IChkZWZpbmVkIGluc2lkZSB0aGUgJHt0eXBlfSdzIHBhY2thZ2UuanNvbiB1bmRlciB0aGUgYCArXG4gICAgICAgICAgICBg4oCcc2NyaXB0c+KAnSBmaWVsZCBpbnNpZGUgdGhlIOKAnGFwcGl1beKAnSBmaWVsZCkgZnJvbSBhbiBpbnN0YWxsZWQgJHt0eXBlfWAsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBmb3IgKGNvbnN0IHtjb21tYW5kLCBhcmdzLCBoZWxwfSBvZiBwYXJzZXJTcGVjcykge1xuICAgICAgICBjb25zdCBwYXJzZXIgPSBleHRTdWJQYXJzZXJzLmFkZF9wYXJzZXIoY29tbWFuZCwge2hlbHB9KTtcblxuICAgICAgICBBcmdQYXJzZXIuX3BhdGNoRXhpdChwYXJzZXIpO1xuXG4gICAgICAgIGZvciAoY29uc3QgW2ZsYWdzT3JOYW1lcywgb3B0c10gb2YgYXJncykge1xuICAgICAgICAgIC8vIGFkZF9hcmd1bWVudCBtdXRhdGVzIHBhcmFtcyBzbyBtYWtlIHN1cmUgdG8gc2VuZCBpbiBjb3BpZXMgaW5zdGVhZFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KC4uLmZsYWdzT3JOYW1lcywgey4uLm9wdHN9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB7QGxpbmsgQXJnUGFyc2VyfSBpbnN0YW5jZTsgZmluYWxpemVzIHRoZSBjb25maWcgc2NoZW1hLlxuICpcbiAqIEBjb25zdHJ1Y3RzIEFyZ1BhcnNlclxuICogQHBhcmFtIHtib29sZWFufSBbZGVidWddIC0gSWYgYHRydWVgLCB0aHJvdyBpbnN0ZWFkIG9mIGV4aXQgdXBvbiBwYXJzaW5nIGVycm9yXG4gKiBAcmV0dXJucyB7QXJnUGFyc2VyfVxuICovXG5mdW5jdGlvbiBnZXRQYXJzZXIoZGVidWcpIHtcbiAgZmluYWxpemVTY2hlbWEoKTtcblxuICByZXR1cm4gbmV3IEFyZ1BhcnNlcihkZWJ1Zyk7XG59XG5cbmV4cG9ydCB7Z2V0UGFyc2VyLCBBcmdQYXJzZXJ9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFNQSxNQUFNQSxlQUFlLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUN0QixJQUFJQyxHQUFKLENBQVEsQ0FBQ0Msc0JBQUQsRUFBY0Msc0JBQWQsRUFBMkJDLDRCQUEzQixFQUE4QyxJQUE5QyxF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
|
|
204
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFWFRSQV9BUkdTIiwiTk9OX1NFUlZFUl9BUkdTIiwiT2JqZWN0IiwiZnJlZXplIiwiU2V0IiwiRFJJVkVSX1RZUEUiLCJQTFVHSU5fVFlQRSIsIlNFUlZFUl9TVUJDT01NQU5EIiwidmVyc2lvbiIsImZzIiwicmVhZFBhY2thZ2VKc29uRnJvbSIsInJvb3REaXIiLCJBcmdQYXJzZXIiLCJjb25zdHJ1Y3RvciIsImRlYnVnIiwicHJvZyIsInByb2Nlc3MiLCJhcmd2IiwicGF0aCIsImJhc2VuYW1lIiwicGFyc2VyIiwiQXJndW1lbnRQYXJzZXIiLCJhZGRfaGVscCIsImRlc2NyaXB0aW9uIiwiX3BhdGNoRXhpdCIsImFkZF9hcmd1bWVudCIsImFjdGlvbiIsInN1YlBhcnNlcnMiLCJhZGRfc3VicGFyc2VycyIsImRlc3QiLCJzZXJ2ZXJBcmdzIiwiX2FkZFNlcnZlclRvUGFyc2VyIiwicmF3QXJncyIsIl9hZGRFeHRlbnNpb25Db21tYW5kc1RvUGFyc2VyIiwicGFyc2VfYXJncyIsInBhcnNlQXJncyIsImFyZ3MiLCJzbGljZSIsImhhcyIsInVuc2hpZnQiLCJwYXJzZWQiLCJwYXJzZV9rbm93bl9hcmdzIiwia25vd25BcmdzIiwidW5rbm93bkFyZ3MiLCJsZW5ndGgiLCJkcml2ZXJDb21tYW5kIiwicGx1Z2luQ29tbWFuZCIsIl90cmFuc2Zvcm1QYXJzZWRBcmdzIiwiRXJyb3IiLCJqb2luIiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwibWVzc2FnZSIsImV4aXQiLCJyZXN1bHQiLCJfIiwicmVkdWNlIiwidW5wYWNrZWQiLCJ2YWx1ZSIsImtleSIsImlzVW5kZWZpbmVkIiwiaGFzQXJnU3BlYyIsImdldEFyZ1NwZWMiLCJzZXQiLCJjb2RlIiwibXNnIiwic3ViUGFyc2VyIiwic2VydmVyUGFyc2VyIiwiYWRkX3BhcnNlciIsImhlbHAiLCJnZXRTZXJ2ZXJBcmdzIiwiZmxhZ3NPck5hbWVzIiwib3B0cyIsInR5cGUiLCJleHRQYXJzZXIiLCJleHRTdWJQYXJzZXJzIiwiZXh0ZW5zaW9uQXJncyIsImdldEV4dGVuc2lvbkFyZ3MiLCJwYXJzZXJTcGVjcyIsImNvbW1hbmQiLCJsaXN0IiwiaW5zdGFsbCIsInVuaW5zdGFsbCIsInVwZGF0ZSIsInJ1biIsImdldFBhcnNlciIsImZpbmFsaXplU2NoZW1hIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2NsaS9wYXJzZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmc30gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7QXJndW1lbnRQYXJzZXJ9IGZyb20gJ2FyZ3BhcnNlJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7RFJJVkVSX1RZUEUsIFBMVUdJTl9UWVBFLCBTRVJWRVJfU1VCQ09NTUFORH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7ZmluYWxpemVTY2hlbWEsIGdldEFyZ1NwZWMsIGhhc0FyZ1NwZWN9IGZyb20gJy4uL3NjaGVtYSc7XG5pbXBvcnQge3Jvb3REaXJ9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQge2dldEV4dGVuc2lvbkFyZ3MsIGdldFNlcnZlckFyZ3N9IGZyb20gJy4vYXJncyc7XG5cbmV4cG9ydCBjb25zdCBFWFRSQV9BUkdTID0gJ2V4dHJhQXJncyc7XG5cbi8qKlxuICogSWYgdGhlIHBhcnNlZCBhcmdzIGRvIG5vdCBjb250YWluIGFueSBvZiB0aGVzZSB2YWx1ZXMsIHRoZW4gd2VcbiAqIHdpbGwgYXV0b21hdGlhbGx5IGluamVjdCB0aGUgYHNlcnZlcmAgc3ViY29tbWFuZC5cbiAqL1xuY29uc3QgTk9OX1NFUlZFUl9BUkdTID0gT2JqZWN0LmZyZWV6ZShcbiAgbmV3IFNldChbRFJJVkVSX1RZUEUsIFBMVUdJTl9UWVBFLCBTRVJWRVJfU1VCQ09NTUFORCwgJy1oJywgJy0taGVscCcsICctdicsICctLXZlcnNpb24nXSlcbik7XG5cbmNvbnN0IHZlcnNpb24gPSBmcy5yZWFkUGFja2FnZUpzb25Gcm9tKHJvb3REaXIpLnZlcnNpb247XG5cbi8qKlxuICogQSB3cmFwcGVyIGFyb3VuZCBgYXJncGFyc2VgXG4gKlxuICogLSBIYW5kbGVzIGluc3RhbnRpYXRpb24sIGNvbmZpZ3VyYXRpb24sIGFuZCBtb25rZXlwYXRjaGluZyBvZiBhblxuICogICAgYEFyZ3VtZW50UGFyc2VyYCBpbnN0YW5jZSBmb3IgQXBwaXVtIHNlcnZlciBhbmQgaXRzIGV4dGVuc2lvbnNcbiAqIC0gSGFuZGxlcyBlcnJvciBjb25kaXRpb25zLCBtZXNzYWdlcywgYW5kIGV4aXQgYmVoYXZpb3JcbiAqL1xuY2xhc3MgQXJnUGFyc2VyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2RlYnVnXSAtIElmIHRydWUsIHRocm93IGluc3RlYWQgb2YgZXhpdCBvbiBlcnJvci5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGRlYnVnID0gZmFsc2UpIHtcbiAgICBjb25zdCBwcm9nID0gcHJvY2Vzcy5hcmd2WzFdID8gcGF0aC5iYXNlbmFtZShwcm9jZXNzLmFyZ3ZbMV0pIDogJ2FwcGl1bSc7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IEFyZ3VtZW50UGFyc2VyKHtcbiAgICAgIGFkZF9oZWxwOiB0cnVlLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdBIHdlYmRyaXZlci1jb21wYXRpYmxlIHNlcnZlciB0aGF0IGZhY2lsaXRhdGVzIGF1dG9tYXRpb24gb2Ygd2ViLCBtb2JpbGUsIGFuZCBvdGhlciB0eXBlcyBvZiBhcHBzIGFjcm9zcyB2YXJpb3VzIHBsYXRmb3Jtcy4nLFxuICAgICAgcHJvZyxcbiAgICB9KTtcblxuICAgIEFyZ1BhcnNlci5fcGF0Y2hFeGl0KHBhcnNlcik7XG5cbiAgICAvKipcbiAgICAgKiBQcm9ncmFtIG5hbWUgKHR5cGljYWxseSBgYXBwaXVtYClcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMucHJvZyA9IHByb2c7XG5cbiAgICAvKipcbiAgICAgKiBJZiBgdHJ1ZWAsIHRocm93IGFuIGVycm9yIG9uIHBhcnNlIGZhaWx1cmUgaW5zdGVhZCBvZiBwcmludGluZyBoZWxwXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5kZWJ1ZyA9IGRlYnVnO1xuXG4gICAgLyoqXG4gICAgICogV3JhcHBlZCBgQXJndW1lbnRQYXJzZXJgIGluc3RhbmNlXG4gICAgICogQHR5cGUge0FyZ3VtZW50UGFyc2VyfVxuICAgICAqL1xuICAgIHRoaXMucGFyc2VyID0gcGFyc2VyO1xuXG4gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJzaW9uJywge1xuICAgICAgYWN0aW9uOiAndmVyc2lvbicsXG4gICAgICB2ZXJzaW9uLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3ViUGFyc2VycyA9IHBhcnNlci5hZGRfc3VicGFyc2Vycyh7ZGVzdDogJ3N1YmNvbW1hbmQnfSk7XG5cbiAgICAvLyBhZGQgdGhlICdzZXJ2ZXInIHN1YmNvbW1hbmQsIGFuZCBzdG9yZSB0aGUgcmF3IGFyZ3VtZW50cyBvbiB0aGUgcGFyc2VyXG4gICAgLy8gb2JqZWN0IGFzIGEgd2F5IGZvciBvdGhlciBwYXJ0cyBvZiB0aGUgY29kZSB0byB3b3JrIHdpdGggdGhlIGFyZ3VtZW50c1xuICAgIC8vIGNvbmNlcHR1YWxseSByYXRoZXIgdGhhbiBqdXN0IHRocm91Z2ggYXJncGFyc2VcbiAgICBjb25zdCBzZXJ2ZXJBcmdzID0gQXJnUGFyc2VyLl9hZGRTZXJ2ZXJUb1BhcnNlcihzdWJQYXJzZXJzKTtcblxuICAgIHRoaXMucmF3QXJncyA9IHNlcnZlckFyZ3M7XG5cbiAgICAvLyBhZGQgdGhlICdkcml2ZXInIGFuZCAncGx1Z2luJyBzdWJjb21tYW5kc1xuICAgIEFyZ1BhcnNlci5fYWRkRXh0ZW5zaW9uQ29tbWFuZHNUb1BhcnNlcihzdWJQYXJzZXJzKTtcblxuICAgIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IC8gZHJvcC1pbiB3cmFwcGVyXG4gICAgLyoqXG4gICAgICogQHR5cGUge0FyZ1BhcnNlclsncGFyc2VBcmdzJ119XG4gICAgICovXG4gICAgdGhpcy5wYXJzZV9hcmdzID0gdGhpcy5wYXJzZUFyZ3M7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgYXJndW1lbnRzIGZyb20gdGhlIGNvbW1hbmQgbGluZS5cbiAgICpcbiAgICogSWYgbm8gc3ViY29tbWFuZCBpcyBwYXNzZWQgaW4sIHRoaXMgbWV0aG9kIHdpbGwgaW5qZWN0IHRoZSBgc2VydmVyYCBzdWJjb21tYW5kLlxuICAgKlxuICAgKiBgQXJnUGFyc2VyLnByb3RvdHlwZS5wYXJzZV9hcmdzYCBpcyBhbiBhbGlhcyBvZiB0aGlzIG1ldGhvZC5cbiAgICogQHRlbXBsYXRlIFtUPWltcG9ydCgnYXBwaXVtL3R5cGVzJykuV2l0aFNlcnZlclN1YmNvbW1hbmRdXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IFthcmdzXSAtIEFycmF5IG9mIGFyZ3VtZW50cywgb3N0ZW5zaWJseSBmcm9tIGBwcm9jZXNzLmFyZ3ZgLiBHYXRoZXJzIGFyZ3MgZnJvbSBgcHJvY2Vzcy5hcmd2YCBpZiBub3QgcHJvdmlkZWQuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkFyZ3M8VD59IC0gVGhlIHBhcnNlZCBhcmd1bWVudHNcbiAgICovXG4gIHBhcnNlQXJncyhhcmdzID0gcHJvY2Vzcy5hcmd2LnNsaWNlKDIpKSB7XG4gICAgaWYgKCFOT05fU0VSVkVSX0FSR1MuaGFzKGFyZ3NbMF0pKSB7XG4gICAgICBhcmdzLnVuc2hpZnQoU0VSVkVSX1NVQkNPTU1BTkQpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlci5wYXJzZV9rbm93bl9hcmdzKGFyZ3MpO1xuICAgICAgY29uc3QgW2tub3duQXJncywgdW5rbm93bkFyZ3NdID0gcGFyc2VkO1xuICAgICAgaWYgKFxuICAgICAgICB1bmtub3duQXJncz8ubGVuZ3RoICYmXG4gICAgICAgIChrbm93bkFyZ3MuZHJpdmVyQ29tbWFuZCA9PT0gJ3J1bicgfHwga25vd25BcmdzLnBsdWdpbkNvbW1hbmQgPT09ICdydW4nKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBBcmdQYXJzZXIuX3RyYW5zZm9ybVBhcnNlZEFyZ3Moa25vd25BcmdzLCB1bmtub3duQXJncyk7XG4gICAgICB9IGVsc2UgaWYgKHVua25vd25BcmdzPy5sZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbRVJST1JdIFVucmVjb2duaXplZCBhcmd1bWVudHM6ICR7dW5rbm93bkFyZ3Muam9pbignICcpfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEFyZ1BhcnNlci5fdHJhbnNmb3JtUGFyc2VkQXJncyhrbm93bkFyZ3MpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICAgLy8gdGhpcyBpc24ndCB0ZXN0ZWQgdmlhIHVuaXQgdGVzdHMgKHdlIHVzZSBgZGVidWc6IHRydWVgKSBzbyBtYXkgZXNjYXBlIGNvdmVyYWdlLlxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKCk7IC8vIG5lZWQgYW4gZXh0cmEgc3BhY2Ugc2luY2UgYXJncGFyc2UgcHJpbnRzIHVzYWdlLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKGVyci5tZXNzYWdlKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhbiBvYmplY3QgZnVsbCBvZiBhcmd1bWVudHMgYXMgcmV0dXJuZWQgYnkgYGFyZ3BhcnNlci5wYXJzZV9hcmdzYCxcbiAgICogZXhwYW5kIHRoZSBvbmVzIGZvciBleHRlbnNpb25zIGludG8gYSBuZXN0ZWQgb2JqZWN0IHN0cnVjdHVyZSBhbmQgcmVuYW1lXG4gICAqIGtleXMgdG8gbWF0Y2ggdGhlIGludGVuZGVkIGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBFLmcuLCBgeydkcml2ZXItZm9vLWJhcic6IGJhen1gIGJlY29tZXMgYHtkcml2ZXI6IHtmb286IHtiYXI6ICdiYXonfX19YFxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbdW5rbm93bkFyZ3NdXG4gICAqIEByZXR1cm5zIHtvYmplY3R9XG4gICAqL1xuICBzdGF0aWMgX3RyYW5zZm9ybVBhcnNlZEFyZ3MoYXJncywgdW5rbm93bkFyZ3MgPSBbXSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IF8ucmVkdWNlKFxuICAgICAgYXJncyxcbiAgICAgICh1bnBhY2tlZCwgdmFsdWUsIGtleSkgPT4ge1xuICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodmFsdWUpICYmIGhhc0FyZ1NwZWMoa2V5KSkge1xuICAgICAgICAgIGNvbnN0IHtkZXN0fSA9IC8qKiBAdHlwZSB7aW1wb3J0KCcuLi9zY2hlbWEvYXJnLXNwZWMnKS5BcmdTcGVjfSAqLyAoZ2V0QXJnU3BlYyhrZXkpKTtcbiAgICAgICAgICBfLnNldCh1bnBhY2tlZCwgZGVzdCwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHRoaXMgY291bGQgYmUgYW55dGhpbmcgdGhhdCBfaXNuJ3RfIGEgc2VydmVyIGFyZ1xuICAgICAgICAgIHVucGFja2VkW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5wYWNrZWQ7XG4gICAgICB9LFxuICAgICAge31cbiAgICApO1xuICAgIHJlc3VsdFtFWFRSQV9BUkdTXSA9IHVua25vd25BcmdzO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogUGF0Y2hlcyB0aGUgYGV4aXQoKWAgbWV0aG9kIG9mIHRoZSBwYXJzZXIgdG8gdGhyb3cgYW4gZXJyb3IsIHNvIHdlIGNhbiBoYW5kbGUgaXQgbWFudWFsbHkuXG4gICAqIEBwYXJhbSB7QXJndW1lbnRQYXJzZXJ9IHBhcnNlclxuICAgKi9cbiAgc3RhdGljIF9wYXRjaEV4aXQocGFyc2VyKSB7XG4gICAgcGFyc2VyLmV4aXQgPSAoY29kZSwgbXNnKSA9PiB7XG4gICAgICBpZiAoY29kZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MuZXhpdCgpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2FyZ3BhcnNlJykuU3ViUGFyc2VyfSBzdWJQYXJzZXJcbiAgICogQHJldHVybnMge2ltcG9ydCgnLi9hcmdzJykuQXJndW1lbnREZWZpbml0aW9uc31cbiAgICovXG4gIHN0YXRpYyBfYWRkU2VydmVyVG9QYXJzZXIoc3ViUGFyc2VyKSB7XG4gICAgY29uc3Qgc2VydmVyUGFyc2VyID0gc3ViUGFyc2VyLmFkZF9wYXJzZXIoJ3NlcnZlcicsIHtcbiAgICAgIGFkZF9oZWxwOiB0cnVlLFxuICAgICAgaGVscDogJ1J1biBhbiBBcHBpdW0gc2VydmVyJyxcbiAgICB9KTtcblxuICAgIEFyZ1BhcnNlci5fcGF0Y2hFeGl0KHNlcnZlclBhcnNlcik7XG5cbiAgICBjb25zdCBzZXJ2ZXJBcmdzID0gZ2V0U2VydmVyQXJncygpO1xuICAgIGZvciAoY29uc3QgW2ZsYWdzT3JOYW1lcywgb3B0c10gb2Ygc2VydmVyQXJncykge1xuICAgICAgLy8gVFMgZG9lc24ndCBsaWtlIHRoZSBzcHJlYWQgb3BlcmF0b3IgaGVyZS5cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHNlcnZlclBhcnNlci5hZGRfYXJndW1lbnQoLi4uZmxhZ3NPck5hbWVzLCB7Li4ub3B0c30pO1xuICAgIH1cblxuICAgIHJldHVybiBzZXJ2ZXJBcmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgZXh0ZW5zaW9uIHN1Yi1zdWItY29tbWFuZHMgdG8gYGRyaXZlcmAvYHBsdWdpbmAgc3ViY29tbWFuZHNcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2FyZ3BhcnNlJykuU3ViUGFyc2VyfSBzdWJQYXJzZXJzXG4gICAqL1xuICBzdGF0aWMgX2FkZEV4dGVuc2lvbkNvbW1hbmRzVG9QYXJzZXIoc3ViUGFyc2Vycykge1xuICAgIGZvciAoY29uc3QgdHlwZSBvZiAvKiogQHR5cGUge1tEcml2ZXJUeXBlLCBQbHVnaW5UeXBlXX0gKi8gKFtEUklWRVJfVFlQRSwgUExVR0lOX1RZUEVdKSkge1xuICAgICAgY29uc3QgZXh0UGFyc2VyID0gc3ViUGFyc2Vycy5hZGRfcGFyc2VyKHR5cGUsIHtcbiAgICAgICAgYWRkX2hlbHA6IHRydWUsXG4gICAgICAgIGhlbHA6IGBBY2Nlc3MgdGhlICR7dHlwZX0gbWFuYWdlbWVudCBDTEkgY29tbWFuZHNgLFxuICAgICAgfSk7XG5cbiAgICAgIEFyZ1BhcnNlci5fcGF0Y2hFeGl0KGV4dFBhcnNlcik7XG5cbiAgICAgIGNvbnN0IGV4dFN1YlBhcnNlcnMgPSBleHRQYXJzZXIuYWRkX3N1YnBhcnNlcnMoe1xuICAgICAgICBkZXN0OiBgJHt0eXBlfUNvbW1hbmRgLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBleHRlbnNpb25BcmdzID0gZ2V0RXh0ZW5zaW9uQXJncygpO1xuICAgICAgLyoqXG4gICAgICAgKiBAdHlwZSB7IHtjb21tYW5kOiBpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkNsaUV4dGVuc2lvblN1YmNvbW1hbmQsIGFyZ3M6IGltcG9ydCgnLi9hcmdzJykuQXJndW1lbnREZWZpbml0aW9ucywgaGVscDogc3RyaW5nfVtdIH1cbiAgICAgICAqL1xuICAgICAgY29uc3QgcGFyc2VyU3BlY3MgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBjb21tYW5kOiAnbGlzdCcsXG4gICAgICAgICAgYXJnczogZXh0ZW5zaW9uQXJnc1t0eXBlXS5saXN0LFxuICAgICAgICAgIGhlbHA6IGBMaXN0IGF2YWlsYWJsZSBhbmQgaW5zdGFsbGVkICR7dHlwZX1zYCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbW1hbmQ6ICdpbnN0YWxsJyxcbiAgICAgICAgICBhcmdzOiBleHRlbnNpb25BcmdzW3R5cGVdLmluc3RhbGwsXG4gICAgICAgICAgaGVscDogYEluc3RhbGwgYSAke3R5cGV9YCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbW1hbmQ6ICd1bmluc3RhbGwnLFxuICAgICAgICAgIGFyZ3M6IGV4dGVuc2lvbkFyZ3NbdHlwZV0udW5pbnN0YWxsLFxuICAgICAgICAgIGhlbHA6IGBVbmluc3RhbGwgYSAke3R5cGV9YCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbW1hbmQ6ICd1cGRhdGUnLFxuICAgICAgICAgIGFyZ3M6IGV4dGVuc2lvbkFyZ3NbdHlwZV0udXBkYXRlLFxuICAgICAgICAgIGhlbHA6IGBVcGRhdGUgaW5zdGFsbGVkICR7dHlwZX1zIHRvIHRoZSBsYXRlc3QgdmVyc2lvbmAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb21tYW5kOiAncnVuJyxcbiAgICAgICAgICBhcmdzOiBleHRlbnNpb25BcmdzW3R5cGVdLnJ1bixcbiAgICAgICAgICBoZWxwOlxuICAgICAgICAgICAgYFJ1biBhIHNjcmlwdCAoZGVmaW5lZCBpbnNpZGUgdGhlICR7dHlwZX0ncyBwYWNrYWdlLmpzb24gdW5kZXIgdGhlIGAgK1xuICAgICAgICAgICAgYOKAnHNjcmlwdHPigJ0gZmllbGQgaW5zaWRlIHRoZSDigJxhcHBpdW3igJ0gZmllbGQpIGZyb20gYW4gaW5zdGFsbGVkICR7dHlwZX1gLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgZm9yIChjb25zdCB7Y29tbWFuZCwgYXJncywgaGVscH0gb2YgcGFyc2VyU3BlY3MpIHtcbiAgICAgICAgY29uc3QgcGFyc2VyID0gZXh0U3ViUGFyc2Vycy5hZGRfcGFyc2VyKGNvbW1hbmQsIHtoZWxwfSk7XG5cbiAgICAgICAgQXJnUGFyc2VyLl9wYXRjaEV4aXQocGFyc2VyKTtcblxuICAgICAgICBmb3IgKGNvbnN0IFtmbGFnc09yTmFtZXMsIG9wdHNdIG9mIGFyZ3MpIHtcbiAgICAgICAgICAvLyBhZGRfYXJndW1lbnQgbXV0YXRlcyBwYXJhbXMgc28gbWFrZSBzdXJlIHRvIHNlbmQgaW4gY29waWVzIGluc3RlYWRcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCguLi5mbGFnc09yTmFtZXMsIHsuLi5vcHRzfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEge0BsaW5rIEFyZ1BhcnNlcn0gaW5zdGFuY2U7IGZpbmFsaXplcyB0aGUgY29uZmlnIHNjaGVtYS5cbiAqXG4gKiBAY29uc3RydWN0cyBBcmdQYXJzZXJcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2RlYnVnXSAtIElmIGB0cnVlYCwgdGhyb3cgaW5zdGVhZCBvZiBleGl0IHVwb24gcGFyc2luZyBlcnJvclxuICogQHJldHVybnMge0FyZ1BhcnNlcn1cbiAqL1xuZnVuY3Rpb24gZ2V0UGFyc2VyKGRlYnVnKSB7XG4gIGZpbmFsaXplU2NoZW1hKCk7XG5cbiAgcmV0dXJuIG5ldyBBcmdQYXJzZXIoZGVidWcpO1xufVxuXG5leHBvcnQge2dldFBhcnNlciwgQXJnUGFyc2VyfTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuRHJpdmVyVHlwZX0gRHJpdmVyVHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlBsdWdpblR5cGV9IFBsdWdpblR5cGVcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7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
|
|
@@ -19,9 +19,10 @@ export default class PluginCommand extends ExtensionCommand<"plugin"> {
|
|
|
19
19
|
plugin: any;
|
|
20
20
|
unsafe: any;
|
|
21
21
|
}): Promise<import("./extension-command").ExtensionUpdateResult>;
|
|
22
|
-
run({ plugin, scriptName }: {
|
|
22
|
+
run({ plugin, scriptName, extraArgs }: {
|
|
23
23
|
plugin: any;
|
|
24
24
|
scriptName: any;
|
|
25
|
+
extraArgs: any;
|
|
25
26
|
}): Promise<import("./extension-command").RunOutput>;
|
|
26
27
|
getPostInstallText({ extName, extData }: {
|
|
27
28
|
extName: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-command.d.ts","sourceRoot":"","sources":["../../../lib/cli/plugin-command.js"],"names":[],"mappings":"AAMA;;GAEG;AACH;IACE;;;OAGG;IACH,8BAFW,OAAO,qBAAqB,EAAE,uBAAuB,CAAC,UAAU,CAAC,EAK3E;IAED;;;;mEAMC;IAED;;mEAEC;IAED;;;qEAEC;IAED
|
|
1
|
+
{"version":3,"file":"plugin-command.d.ts","sourceRoot":"","sources":["../../../lib/cli/plugin-command.js"],"names":[],"mappings":"AAMA;;GAEG;AACH;IACE;;;OAGG;IACH,8BAFW,OAAO,qBAAqB,EAAE,uBAAuB,CAAC,UAAU,CAAC,EAK3E;IAED;;;;mEAMC;IAED;;mEAEC;IAED;;;qEAEC;IAED;;;;yDAEC;IAED;;;eAEC;CAyBF;yBAGY,OAAO,eAAe,EAAE,UAAU"}
|
|
@@ -61,11 +61,13 @@ class PluginCommand extends _extensionCommand.default {
|
|
|
61
61
|
|
|
62
62
|
async run({
|
|
63
63
|
plugin,
|
|
64
|
-
scriptName
|
|
64
|
+
scriptName,
|
|
65
|
+
extraArgs
|
|
65
66
|
}) {
|
|
66
67
|
return await super._run({
|
|
67
68
|
installSpec: plugin,
|
|
68
|
-
scriptName
|
|
69
|
+
scriptName,
|
|
70
|
+
extraArgs
|
|
69
71
|
});
|
|
70
72
|
}
|
|
71
73
|
|
|
@@ -87,4 +89,4 @@ class PluginCommand extends _extensionCommand.default {
|
|
|
87
89
|
}
|
|
88
90
|
|
|
89
91
|
exports.default = PluginCommand;
|
|
90
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSRVFfUExVR0lOX0ZJRUxEUyIsIlBsdWdpbkNvbW1hbmQiLCJFeHRlbnNpb25Db21tYW5kIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJqc29uIiwia25vd25FeHRlbnNpb25zIiwiS05PV05fUExVR0lOUyIsImluc3RhbGwiLCJwbHVnaW4iLCJpbnN0YWxsVHlwZSIsInBhY2thZ2VOYW1lIiwiX2luc3RhbGwiLCJpbnN0YWxsU3BlYyIsInVuaW5zdGFsbCIsIl91bmluc3RhbGwiLCJ1cGRhdGUiLCJ1bnNhZmUiLCJfdXBkYXRlIiwicnVuIiwic2NyaXB0TmFtZSIsImV4dHJhQXJncyIsIl9ydW4iLCJnZXRQb3N0SW5zdGFsbFRleHQiLCJleHROYW1lIiwiZXh0RGF0YSIsInZlcnNpb24iLCJncmVlbiIsInZhbGlkYXRlRXh0ZW5zaW9uRmllbGRzIiwicGx1Z2luTWV0YWRhdGEiLCJtaXNzaW5nRmllbGRzIiwicmVkdWNlIiwiYWNjIiwiZmllbGQiLCJfIiwiaXNFbXB0eSIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvcGx1Z2luLWNvbW1hbmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBFeHRlbnNpb25Db21tYW5kIGZyb20gJy4vZXh0ZW5zaW9uLWNvbW1hbmQnO1xuaW1wb3J0IHtLTk9XTl9QTFVHSU5TfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5jb25zdCBSRVFfUExVR0lOX0ZJRUxEUyA9IFsncGx1Z2luTmFtZScsICdtYWluQ2xhc3MnXTtcblxuLyoqXG4gKiBAZXh0ZW5kcyB7RXh0ZW5zaW9uQ29tbWFuZDxQbHVnaW5UeXBlPn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGx1Z2luQ29tbWFuZCBleHRlbmRzIEV4dGVuc2lvbkNvbW1hbmQge1xuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtpbXBvcnQoJy4vZXh0ZW5zaW9uLWNvbW1hbmQnKS5FeHRlbnNpb25Db21tYW5kT3B0aW9uczxQbHVnaW5UeXBlPn0gb3B0c1xuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZywganNvbn0pIHtcbiAgICBzdXBlcih7Y29uZmlnLCBqc29ufSk7XG4gICAgdGhpcy5rbm93bkV4dGVuc2lvbnMgPSBLTk9XTl9QTFVHSU5TO1xuICB9XG5cbiAgYXN5bmMgaW5zdGFsbCh7cGx1Z2luLCBpbnN0YWxsVHlwZSwgcGFja2FnZU5hbWV9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl9pbnN0YWxsKHtcbiAgICAgIGluc3RhbGxTcGVjOiBwbHVnaW4sXG4gICAgICBpbnN0YWxsVHlwZSxcbiAgICAgIHBhY2thZ2VOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdW5pbnN0YWxsKHtwbHVnaW59KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl91bmluc3RhbGwoe2luc3RhbGxTcGVjOiBwbHVnaW59KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZSh7cGx1Z2luLCB1bnNhZmV9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl91cGRhdGUoe2luc3RhbGxTcGVjOiBwbHVnaW4sIHVuc2FmZX0pO1xuICB9XG5cbiAgYXN5bmMgcnVuKHtwbHVnaW4sIHNjcmlwdE5hbWUsIGV4dHJhQXJnc30pIHtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuX3J1bih7aW5zdGFsbFNwZWM6IHBsdWdpbiwgc2NyaXB0TmFtZSwgZXh0cmFBcmdzfSk7XG4gIH1cblxuICBnZXRQb3N0SW5zdGFsbFRleHQoe2V4dE5hbWUsIGV4dERhdGF9KSB7XG4gICAgcmV0dXJuIGBQbHVnaW4gJHtleHROYW1lfUAke2V4dERhdGEudmVyc2lvbn0gc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZGAuZ3JlZW47XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGZpZWxkcyBpbiBgYXBwaXVtYCBmaWVsZCBvZiBgZHJpdmVyTWV0YWRhdGFgXG4gICAqXG4gICAqIEZvciBhbnkgYHBhY2thZ2UuanNvbmAgZmllbGRzIHdoaWNoIGEgZHJpdmVyIHJlcXVpcmVzLCB2YWxpZGF0ZSB0aGUgdHlwZSBvZlxuICAgKiB0aG9zZSBmaWVsZHMgb24gdGhlIGBwYWNrYWdlLmpzb25gIGRhdGEsIHRocm93aW5nIGFuIGVycm9yIGlmIGFueXRoaW5nIGlzXG4gICAqIGFtaXNzLlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnYXBwaXVtL3R5cGVzJykuRXh0TWV0YWRhdGE8UGx1Z2luVHlwZT59IHBsdWdpbk1ldGFkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbnN0YWxsU3BlY1xuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHZhbGlkYXRlRXh0ZW5zaW9uRmllbGRzKHBsdWdpbk1ldGFkYXRhLCBpbnN0YWxsU3BlYykge1xuICAgIGNvbnN0IG1pc3NpbmdGaWVsZHMgPSBSRVFfUExVR0lOX0ZJRUxEUy5yZWR1Y2UoXG4gICAgICAoYWNjLCBmaWVsZCkgPT4gKHBsdWdpbk1ldGFkYXRhW2ZpZWxkXSA/IGFjYyA6IFsuLi5hY2MsIGZpZWxkXSksXG4gICAgICBbXVxuICAgICk7XG5cbiAgICBpZiAoIV8uaXNFbXB0eShtaXNzaW5nRmllbGRzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW5zdGFsbGVkIHBsdWdpbiBcIiR7aW5zdGFsbFNwZWN9XCIgZGlkIG5vdCBleHBvc2UgY29ycmVjdCBmaWVsZHMgZm9yIGNvbXBhYmlsaXR5IGAgK1xuICAgICAgICAgIGB3aXRoIEFwcGl1bS4gTWlzc2luZyBmaWVsZHM6ICR7SlNPTi5zdHJpbmdpZnkobWlzc2luZ0ZpZWxkcyl9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuUGx1Z2luVHlwZX0gUGx1Z2luVHlwZVxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsaUJBQWlCLEdBQUcsQ0FBQyxZQUFELEVBQWUsV0FBZixDQUExQjs7QUFLZSxNQUFNQyxhQUFOLFNBQTRCQyx5QkFBNUIsQ0FBNkM7RUFLMURDLFdBQVcsQ0FBQztJQUFDQyxNQUFEO0lBQVNDO0VBQVQsQ0FBRCxFQUFpQjtJQUMxQixNQUFNO01BQUNELE1BQUQ7TUFBU0M7SUFBVCxDQUFOO0lBQ0EsS0FBS0MsZUFBTCxHQUF1QkMsd0JBQXZCO0VBQ0Q7O0VBRVksTUFBUEMsT0FBTyxDQUFDO0lBQUNDLE1BQUQ7SUFBU0MsV0FBVDtJQUFzQkM7RUFBdEIsQ0FBRCxFQUFxQztJQUNoRCxPQUFPLE1BQU0sTUFBTUMsUUFBTixDQUFlO01BQzFCQyxXQUFXLEVBQUVKLE1BRGE7TUFFMUJDLFdBRjBCO01BRzFCQztJQUgwQixDQUFmLENBQWI7RUFLRDs7RUFFYyxNQUFURyxTQUFTLENBQUM7SUFBQ0w7RUFBRCxDQUFELEVBQVc7SUFDeEIsT0FBTyxNQUFNLE1BQU1NLFVBQU4sQ0FBaUI7TUFBQ0YsV0FBVyxFQUFFSjtJQUFkLENBQWpCLENBQWI7RUFDRDs7RUFFVyxNQUFOTyxNQUFNLENBQUM7SUFBQ1AsTUFBRDtJQUFTUTtFQUFULENBQUQsRUFBbUI7SUFDN0IsT0FBTyxNQUFNLE1BQU1DLE9BQU4sQ0FBYztNQUFDTCxXQUFXLEVBQUVKLE1BQWQ7TUFBc0JRO0lBQXRCLENBQWQsQ0FBYjtFQUNEOztFQUVRLE1BQUhFLEdBQUcsQ0FBQztJQUFDVixNQUFEO0lBQVNXLFVBQVQ7SUFBcUJDO0VBQXJCLENBQUQsRUFBa0M7SUFDekMsT0FBTyxNQUFNLE1BQU1DLElBQU4sQ0FBVztNQUFDVCxXQUFXLEVBQUVKLE1BQWQ7TUFBc0JXLFVBQXRCO01BQWtDQztJQUFsQyxDQUFYLENBQWI7RUFDRDs7RUFFREUsa0JBQWtCLENBQUM7SUFBQ0MsT0FBRDtJQUFVQztFQUFWLENBQUQsRUFBcUI7SUFDckMsT0FBUSxVQUFTRCxPQUFRLElBQUdDLE9BQU8sQ0FBQ0MsT0FBUSx5QkFBckMsQ0FBOERDLEtBQXJFO0VBQ0Q7O0VBWURDLHVCQUF1QixDQUFDQyxjQUFELEVBQWlCaEIsV0FBakIsRUFBOEI7SUFDbkQsTUFBTWlCLGFBQWEsR0FBRzlCLGlCQUFpQixDQUFDK0IsTUFBbEIsQ0FDcEIsQ0FBQ0MsR0FBRCxFQUFNQyxLQUFOLEtBQWlCSixjQUFjLENBQUNJLEtBQUQsQ0FBZCxHQUF3QkQsR0FBeEIsR0FBOEIsQ0FBQyxHQUFHQSxHQUFKLEVBQVNDLEtBQVQsQ0FEM0IsRUFFcEIsRUFGb0IsQ0FBdEI7O0lBS0EsSUFBSSxDQUFDQyxlQUFBLENBQUVDLE9BQUYsQ0FBVUwsYUFBVixDQUFMLEVBQStCO01BQzdCLE1BQU0sSUFBSU0sS0FBSixDQUNILHFCQUFvQnZCLFdBQVksa0RBQWpDLEdBQ0csZ0NBQStCd0IsSUFBSSxDQUFDQyxTQUFMLENBQWVSLGFBQWYsQ0FBOEIsRUFGNUQsQ0FBTjtJQUlEO0VBQ0Y7O0FBeER5RCJ9
|
package/build/lib/config.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.js"],"names":[],"mappings":"AAsJA,4CAOC;yBAwLY,OAAO,cAAc,EAAE,UAAU;mBACjC,OAAO,cAAc,EAAE,IAAI;;AApNxC;;;;;;GAMG;AACH,gCAFa,OAAO,cAAc,EAAE,SAAS,CAI5C;AAED,oCAOC;AAwBD,+CAGC;AAhBD,6CAWC;AA4ID;;GAEG;AACH,uCAFW,MAAM,iBAWhB;AAjJD;;;;GAIG;AACH,oDAHW,IAAI,GACF,IAAI,CAmFhB;AAtMD;;;GAGG;AACH,uEAFa,QAAQ,MAAM,QAAE,CA6B5B;AArFD,6BAAsC;AA4BtC;;GAEG;AACH,2FAUC;AAmOD;;;;;;;;;;GAUG;AACH,0DALW,QAAQ,UAAU,CAAC,gBACnB,OAAO,eAAe,EAAE,oBAAoB,YAC5C,QAAQ,UAAU,CAAC,cACnB,UAAU,QAoBpB;AAgBD,6BAAuC"}
|
package/build/lib/config.js
CHANGED
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.APPIUM_VER = void 0;
|
|
9
9
|
exports.checkNodeOk = checkNodeOk;
|
|
10
|
+
exports.checkNpmOk = checkNpmOk;
|
|
10
11
|
exports.getBuildInfo = getBuildInfo;
|
|
11
12
|
exports.getGitRev = getGitRev;
|
|
12
13
|
exports.getNonDefaultServerArgs = getNonDefaultServerArgs;
|
|
@@ -27,8 +28,6 @@ var _axios = _interopRequireDefault(require("axios"));
|
|
|
27
28
|
|
|
28
29
|
var _teen_process = require("teen_process");
|
|
29
30
|
|
|
30
|
-
var _logger = _interopRequireDefault(require("./logger"));
|
|
31
|
-
|
|
32
31
|
var _semver = _interopRequireDefault(require("semver"));
|
|
33
32
|
|
|
34
33
|
var _findUp = _interopRequireDefault(require("find-up"));
|
|
@@ -40,6 +39,7 @@ const npmPackage = _support.fs.readPackageJsonFrom(__dirname);
|
|
|
40
39
|
const APPIUM_VER = npmPackage.version;
|
|
41
40
|
exports.APPIUM_VER = APPIUM_VER;
|
|
42
41
|
const MIN_NODE_VERSION = npmPackage.engines.node;
|
|
42
|
+
const MIN_NPM_VERSION = npmPackage.engines.npm;
|
|
43
43
|
const GIT_META_ROOT = '.git';
|
|
44
44
|
const GIT_BINARY = `git${_support.system.isWindows() ? '.exe' : ''}`;
|
|
45
45
|
const GITHUB_API = 'https://api.github.com/repos/appium/appium';
|
|
@@ -51,6 +51,13 @@ function getNodeVersion() {
|
|
|
51
51
|
return _semver.default.coerce(process.version);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
async function getNpmVersion() {
|
|
55
|
+
const {
|
|
56
|
+
stdout
|
|
57
|
+
} = await (0, _teen_process.exec)(_support.system.isWindows() ? 'npm.cmd' : 'npm', ['--version']);
|
|
58
|
+
return stdout.trim();
|
|
59
|
+
}
|
|
60
|
+
|
|
54
61
|
async function updateBuildInfo(useGithubApiFallback = false) {
|
|
55
62
|
const sha = await getGitRev(useGithubApiFallback);
|
|
56
63
|
|
|
@@ -143,7 +150,15 @@ function checkNodeOk() {
|
|
|
143
150
|
const version = getNodeVersion();
|
|
144
151
|
|
|
145
152
|
if (!_semver.default.satisfies(version, MIN_NODE_VERSION)) {
|
|
146
|
-
|
|
153
|
+
throw new Error(`Node version must be at least ${MIN_NODE_VERSION}; current is ${version.version}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
async function checkNpmOk() {
|
|
158
|
+
const npmVersion = await getNpmVersion();
|
|
159
|
+
|
|
160
|
+
if (!_semver.default.satisfies(npmVersion, MIN_NPM_VERSION)) {
|
|
161
|
+
throw new Error(`npm version must be at least ${MIN_NPM_VERSION}; current is ${npmVersion}. Run "npm install -g npm" to upgrade.`);
|
|
147
162
|
}
|
|
148
163
|
}
|
|
149
164
|
|
|
@@ -235,4 +250,4 @@ async function validateTmpDir(tmpDir) {
|
|
|
235
250
|
const rootDir = _support.fs.findRoot(__dirname);
|
|
236
251
|
|
|
237
252
|
exports.rootDir = rootDir;
|
|
238
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJucG1QYWNrYWdlIiwiZnMiLCJyZWFkUGFja2FnZUpzb25Gcm9tIiwiX19kaXJuYW1lIiwiQVBQSVVNX1ZFUiIsInZlcnNpb24iLCJNSU5fTk9ERV9WRVJTSU9OIiwiZW5naW5lcyIsIm5vZGUiLCJHSVRfTUVUQV9ST09UIiwiR0lUX0JJTkFSWSIsInN5c3RlbSIsImlzV2luZG93cyIsIkdJVEhVQl9BUEkiLCJCVUlMRF9JTkZPIiwiZ2V0Tm9kZVZlcnNpb24iLCJzZW12ZXIiLCJjb2VyY2UiLCJwcm9jZXNzIiwidXBkYXRlQnVpbGRJbmZvIiwidXNlR2l0aHViQXBpRmFsbGJhY2siLCJzaGEiLCJnZXRHaXRSZXYiLCJidWlsZFRpbWVzdGFtcCIsImdldEdpdFRpbWVzdGFtcCIsImJ1aWx0IiwiZmluZEdpdFJvb3QiLCJmaW5kVXAiLCJjd2QiLCJyb290RGlyIiwidHlwZSIsImdpdFJvb3QiLCJzdGRvdXQiLCJleGVjIiwidHJpbSIsImlnbiIsImF4aW9zIiwiZ2V0IiwiaGVhZGVycyIsImRhdGEiLCJvYmplY3QiLCJjb21taXRTaGEiLCJ0YWdnZXIiLCJkYXRlIiwiZ2V0QnVpbGRJbmZvIiwiY2hlY2tOb2RlT2siLCJzYXRpc2ZpZXMiLCJsb2dnZXIiLCJlcnJvckFuZFRocm93Iiwid2Fybk5vZGVEZXByZWNhdGlvbnMiLCJzaG93QnVpbGRJbmZvIiwiY29uc29sZSIsImxvZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZXROb25EZWZhdWx0U2VydmVyQXJncyIsInBhcnNlZEFyZ3MiLCJmbGF0dGVuIiwiYXJncyIsImFyZ1NwZWNzIiwiZ2V0QWxsQXJnU3BlY3MiLCJmbGF0dGVuZWQiLCJfIiwicmVkdWNlIiwidmFsdWVzIiwiYWNjIiwiYXJnU3BlYyIsImhhcyIsImRlc3QiLCJ2YWx1ZSIsInR5cGVzRGlmZmVyIiwiZGVmYXVsdHNGcm9tU2NoZW1hIiwiZGVmYXVsdFZhbHVlSXNBcnJheSIsImlzQXJyYXkiLCJhcmdzVmFsdWVJc0FycmF5IiwiYXJyYXlzRGlmZmVyIiwiZ3QiLCJzaXplIiwiZGlmZmVyZW5jZSIsInZhbHVlc0RpZmZlciIsImRlZmF1bHRJc0RlZmluZWQiLCJpc1VuZGVmaW5lZCIsImFyZ1ZhbHVlTm90QXJyYXlPckFycmF5c0RpZmZlciIsIm92ZXJTb21lIiwibmVnYXRlIiwiZGVmYXVsdFZhbHVlTm90QXJyYXlBbmRWYWx1ZXNEaWZmZXIiLCJvdmVyRXZlcnkiLCJpc05vdERlZmF1bHQiLCJnZXREZWZhdWx0c0ZvclNjaGVtYSIsInBpY2tCeSIsIl9fIiwia2V5Iiwic2V0IiwiY29tcGFjdENvbmZpZyIsInBhcnRpYWwiLCJvbWl0QnkiLCJpc09iamVjdCIsImlzRW1wdHkiLCJzaG93Q29uZmlnIiwibm9uRGVmYXVsdFByZUNvbmZpZ1BhcnNlZEFyZ3MiLCJjb25maWdSZXN1bHQiLCJkZWZhdWx0cyIsImRpciIsImNvbmZpZyIsImZpbGVwYXRoIiwidmFsaWRhdGVUbXBEaXIiLCJ0bXBEaXIiLCJta2RpcnAiLCJlIiwiRXJyb3IiLCJmaW5kUm9vdCJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25maWcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7c3lzdGVtLCBmc30gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQge2V4ZWN9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCBmaW5kVXAgZnJvbSAnZmluZC11cCc7XG5pbXBvcnQge2dldERlZmF1bHRzRm9yU2NoZW1hLCBnZXRBbGxBcmdTcGVjc30gZnJvbSAnLi9zY2hlbWEvc2NoZW1hJztcblxuY29uc3QgbnBtUGFja2FnZSA9IGZzLnJlYWRQYWNrYWdlSnNvbkZyb20oX19kaXJuYW1lKTtcblxuY29uc3QgQVBQSVVNX1ZFUiA9IG5wbVBhY2thZ2UudmVyc2lvbjtcbmNvbnN0IE1JTl9OT0RFX1ZFUlNJT04gPSBucG1QYWNrYWdlLmVuZ2luZXMubm9kZTtcblxuY29uc3QgR0lUX01FVEFfUk9PVCA9ICcuZ2l0JztcbmNvbnN0IEdJVF9CSU5BUlkgPSBgZ2l0JHtzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnLmV4ZScgOiAnJ31gO1xuY29uc3QgR0lUSFVCX0FQSSA9ICdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2FwcGl1bS9hcHBpdW0nO1xuXG4vKipcbiAqIEB0eXBlIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkJ1aWxkSW5mb31cbiAqL1xuY29uc3QgQlVJTERfSU5GTyA9IHtcbiAgdmVyc2lvbjogQVBQSVVNX1ZFUixcbn07XG5cbmZ1bmN0aW9uIGdldE5vZGVWZXJzaW9uKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtpbXBvcnQoJ3NlbXZlcicpLlNlbVZlcn0gKi8gKHNlbXZlci5jb2VyY2UocHJvY2Vzcy52ZXJzaW9uKSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtib29sZWFufSBbdXNlR2l0aHViQXBpRmFsbGJhY2tdXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUJ1aWxkSW5mbyh1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGNvbnN0IHNoYSA9IGF3YWl0IGdldEdpdFJldih1c2VHaXRodWJBcGlGYWxsYmFjayk7XG4gIGlmICghc2hhKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIEJVSUxEX0lORk9bJ2dpdC1zaGEnXSA9IHNoYTtcbiAgY29uc3QgYnVpbGRUaW1lc3RhbXAgPSBhd2FpdCBnZXRHaXRUaW1lc3RhbXAoc2hhLCB1c2VHaXRodWJBcGlGYWxsYmFjayk7XG4gIGlmIChidWlsZFRpbWVzdGFtcCkge1xuICAgIEJVSUxEX0lORk8uYnVpbHQgPSBidWlsZFRpbWVzdGFtcDtcbiAgfVxufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBHaXQgbWV0YWRhdGEgZGlyIChzZWUgYEdJVF9NRVRBX1JPT1RgKVxuICpcbiAqIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgQXBwaXVtIGNhbm5vdCBhc3N1bWUgYHBhY2thZ2UuanNvbmAgYW5kIGAuZ2l0YCBhcmUgaW4gdGhlIHNhbWVcbiAqIGRpcmVjdG9yeS4gIE1vbm9yZXBvcywgc2VlP1xuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nfHVuZGVmaW5lZD59IFBhdGggdG8gZGlyIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBmb3VuZFxuICovXG5hc3luYyBmdW5jdGlvbiBmaW5kR2l0Um9vdCgpIHtcbiAgcmV0dXJuIGF3YWl0IGZpbmRVcChHSVRfTUVUQV9ST09ULCB7Y3dkOiByb290RGlyLCB0eXBlOiAnZGlyZWN0b3J5J30pO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3VzZUdpdGh1YkFwaUZhbGxiYWNrXVxuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPz59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEdpdFJldih1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGNvbnN0IGdpdFJvb3QgPSBhd2FpdCBmaW5kR2l0Um9vdCgpO1xuICBpZiAoZ2l0Um9vdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoR0lUX0JJTkFSWSwgWydyZXYtcGFyc2UnLCAnSEVBRCddLCB7XG4gICAgICAgIGN3ZDogZ2l0Um9vdCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHN0ZG91dC50cmltKCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG5cbiAgaWYgKCF1c2VHaXRodWJBcGlGYWxsYmFjaykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gSWYgdGhlIHBhY2thZ2UgZm9sZGVyIGlzIG5vdCBhIHZhbGlkIGdpdCByZXBvc2l0b3J5XG4gIC8vIHRoZW4gZmV0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgdGFnIGluZm8gZnJvbSBHaXRIdWJcbiAgdHJ5IHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgYXhpb3MuZ2V0KGAke0dJVEhVQl9BUEl9L2dpdC9yZWZzL3RhZ3MvYXBwaXVtQCR7QVBQSVVNX1ZFUn1gLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnVXNlci1BZ2VudCc6IGBBcHBpdW0gJHtBUFBJVU1fVkVSfWAsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICkuZGF0YT8ub2JqZWN0Py5zaGE7XG4gIH0gY2F0Y2ggKGlnbikge31cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbW1pdFNoYVxuICogQHBhcmFtIHtib29sZWFufSBbdXNlR2l0aHViQXBpRmFsbGJhY2tdXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc/Pn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0R2l0VGltZXN0YW1wKGNvbW1pdFNoYSwgdXNlR2l0aHViQXBpRmFsbGJhY2sgPSBmYWxzZSkge1xuICBjb25zdCBnaXRSb290ID0gYXdhaXQgZmluZEdpdFJvb3QoKTtcbiAgaWYgKGdpdFJvb3QpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKEdJVF9CSU5BUlksIFsnc2hvdycsICctcycsICctLWZvcm1hdD0lY2knLCBjb21taXRTaGFdLCB7XG4gICAgICAgIGN3ZDogZ2l0Um9vdCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHN0ZG91dC50cmltKCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG5cbiAgaWYgKCF1c2VHaXRodWJBcGlGYWxsYmFjaykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgYXhpb3MuZ2V0KGAke0dJVEhVQl9BUEl9L2dpdC90YWdzLyR7Y29tbWl0U2hhfWAsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdVc2VyLUFnZW50JzogYEFwcGl1bSAke0FQUElVTV9WRVJ9YCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKS5kYXRhPy50YWdnZXI/LmRhdGU7XG4gIH0gY2F0Y2ggKGlnbikge31cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogTXV0YWJsZSBvYmplY3QgY29udGFpbmluZyBBcHBpdW0gYnVpbGQgaW5mb3JtYXRpb24uIEJ5IGRlZmF1bHQgaXRcbiAqIG9ubHkgY29udGFpbnMgdGhlIEFwcGl1bSB2ZXJzaW9uLCBidXQgaXMgdXBkYXRlZCB3aXRoIHRoZSBidWlsZCB0aW1lc3RhbXBcbiAqIGFuZCBnaXQgY29tbWl0IGhhc2ggYXN5bmNocm9ub3VzbHkgYXMgc29vbiBhcyBgdXBkYXRlQnVpbGRJbmZvYCBpcyBjYWxsZWRcbiAqIGFuZCBzdWNjZWVkcy5cbiAqIEByZXR1cm5zIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkJ1aWxkSW5mb31cbiAqL1xuZnVuY3Rpb24gZ2V0QnVpbGRJbmZvKCkge1xuICByZXR1cm4gQlVJTERfSU5GTztcbn1cblxuZnVuY3Rpb24gY2hlY2tOb2RlT2soKSB7XG4gIGNvbnN0IHZlcnNpb24gPSBnZXROb2RlVmVyc2lvbigpO1xuICBpZiAoIXNlbXZlci5zYXRpc2ZpZXModmVyc2lvbiwgTUlOX05PREVfVkVSU0lPTikpIHtcbiAgICBsb2dnZXIuZXJyb3JBbmRUaHJvdyhgTm9kZSB2ZXJzaW9uIG11c3QgYmUgJHtNSU5fTk9ERV9WRVJTSU9OfS4gQ3VycmVudGx5ICR7dmVyc2lvbi52ZXJzaW9ufWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHdhcm5Ob2RlRGVwcmVjYXRpb25zKCkge1xuICAvKipcbiAgICogVW5jb21tZW50IHRoaXMgc2VjdGlvbiB0byBnZXQgbm9kZSB2ZXJzaW9uIGRlcHJlY2F0aW9uIHdhcm5pbmdzXG4gICAqIEFsc28gYWRkIHRlc3QgY2FzZXMgdG8gY29uZmlnLXNwZWNzLmpzIHRvIGNvdmVyIHRoZSBjYXNlcyBhZGRlZFxuICAgKiovXG4gIC8vIGNvbnN0IHZlcnNpb24gPSBnZXROb2RlVmVyc2lvbigpO1xuICAvLyBpZiAodmVyc2lvbi5tYWpvciA8IDgpIHtcbiAgLy8gICBsb2dnZXIud2FybihgQXBwaXVtIHN1cHBvcnQgZm9yIHZlcnNpb25zIG9mIG5vZGUgPCAke3ZlcnNpb24ubWFqb3J9IGhhcyBiZWVuIGAgK1xuICAvLyAgICAgICAgICAgICAgICdkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gUGxlYXNlICcgK1xuICAvLyAgICAgICAgICAgICAgICd1cGdyYWRlIScpO1xuICAvLyB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNob3dCdWlsZEluZm8oKSB7XG4gIGF3YWl0IHVwZGF0ZUJ1aWxkSW5mbyh0cnVlKTtcbiAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZ2V0QnVpbGRJbmZvKCkpKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG59XG5cbi8qKlxuICogUmV0dXJucyBrL3YgcGFpcnMgb2Ygc2VydmVyIGFyZ3VtZW50cyB3aGljaCBhcmUgX25vdF8gdGhlIGRlZmF1bHRzLlxuICogQHBhcmFtIHtBcmdzfSBwYXJzZWRBcmdzXG4gKiBAcmV0dXJucyB7QXJnc31cbiAqL1xuZnVuY3Rpb24gZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MocGFyc2VkQXJncykge1xuICAvKipcbiAgICogRmxhdHRlbnMgcGFyc2VkIGFyZ3MgaW50byBhIHNpbmdsZSBsZXZlbCBvYmplY3QgZm9yIGNvbXBhcmlzb24gd2l0aFxuICAgKiBmbGF0dGVuZWQgZGVmYXVsdHMgYWNyb3NzIHNlcnZlciBhcmdzIGFuZCBleHRlbnNpb24gYXJncy5cbiAgICogQHBhcmFtIHtBcmdzfSBhcmdzXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCB7IHZhbHVlOiBhbnksIGFyZ1NwZWM6IEFyZ1NwZWMgfT59XG4gICAqL1xuICBjb25zdCBmbGF0dGVuID0gKGFyZ3MpID0+IHtcbiAgICBjb25zdCBhcmdTcGVjcyA9IGdldEFsbEFyZ1NwZWNzKCk7XG4gICAgY29uc3QgZmxhdHRlbmVkID0gXy5yZWR1Y2UoXG4gICAgICBbLi4uYXJnU3BlY3MudmFsdWVzKCldLFxuICAgICAgKGFjYywgYXJnU3BlYykgPT4ge1xuICAgICAgICBpZiAoXy5oYXMoYXJncywgYXJnU3BlYy5kZXN0KSkge1xuICAgICAgICAgIGFjY1thcmdTcGVjLmRlc3RdID0ge3ZhbHVlOiBfLmdldChhcmdzLCBhcmdTcGVjLmRlc3QpLCBhcmdTcGVjfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgeyB2YWx1ZTogYW55LCBhcmdTcGVjOiBBcmdTcGVjIH0+fSAqLyAoe30pXG4gICAgKTtcblxuICAgIHJldHVybiBmbGF0dGVuZWQ7XG4gIH07XG5cbiAgY29uc3QgYXJncyA9IGZsYXR0ZW4ocGFyc2VkQXJncyk7XG5cbiAgLy8gaG9wZWZ1bGx5IHRoZXNlIGZ1bmN0aW9uIG5hbWVzIGFyZSBkZXNjcmlwdGl2ZSBlbm91Z2hcbiAgY29uc3QgdHlwZXNEaWZmZXIgPSAvKiogQHBhcmFtIHtzdHJpbmd9IGRlc3QgKi8gKGRlc3QpID0+XG4gICAgdHlwZW9mIGFyZ3NbZGVzdF0udmFsdWUgIT09IHR5cGVvZiBkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF07XG5cbiAgY29uc3QgZGVmYXVsdFZhbHVlSXNBcnJheSA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyAoZGVzdCkgPT5cbiAgICBfLmlzQXJyYXkoZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdKTtcblxuICBjb25zdCBhcmdzVmFsdWVJc0FycmF5ID0gLyoqIEBwYXJhbSB7c3RyaW5nfSBkZXN0ICovIChkZXN0KSA9PiBfLmlzQXJyYXkoYXJnc1tkZXN0XS52YWx1ZSk7XG5cbiAgY29uc3QgYXJyYXlzRGlmZmVyID0gLyoqIEBwYXJhbSB7c3RyaW5nfSBkZXN0ICovIChkZXN0KSA9PlxuICAgIF8uZ3QoXy5zaXplKF8uZGlmZmVyZW5jZShhcmdzW2Rlc3RdLnZhbHVlLCBkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF0pKSwgMCk7XG5cbiAgY29uc3QgdmFsdWVzRGlmZmVyID0gLyoqIEBwYXJhbSB7c3RyaW5nfSBkZXN0ICovIChkZXN0KSA9PlxuICAgIGFyZ3NbZGVzdF0udmFsdWUgIT09IGRlZmF1bHRzRnJvbVNjaGVtYVtkZXN0XTtcblxuICBjb25zdCBkZWZhdWx0SXNEZWZpbmVkID0gLyoqIEBwYXJhbSB7c3RyaW5nfSBkZXN0ICovIChkZXN0KSA9PlxuICAgICFfLmlzVW5kZWZpbmVkKGRlZmF1bHRzRnJvbVNjaGVtYVtkZXN0XSk7XG5cbiAgLy8gbm90ZSB0aGF0IGBfLm92ZXJFdmVyeWAgaXMgbGlrZSBhbiBcIkFORFwiLCBhbmQgYF8ub3ZlclNvbWVgIGlzIGxpa2UgYW4gXCJPUlwiXG5cbiAgY29uc3QgYXJnVmFsdWVOb3RBcnJheU9yQXJyYXlzRGlmZmVyID0gXy5vdmVyU29tZShbXy5uZWdhdGUoYXJnc1ZhbHVlSXNBcnJheSksIGFycmF5c0RpZmZlcl0pO1xuXG4gIGNvbnN0IGRlZmF1bHRWYWx1ZU5vdEFycmF5QW5kVmFsdWVzRGlmZmVyID0gXy5vdmVyRXZlcnkoW1xuICAgIF8ubmVnYXRlKGRlZmF1bHRWYWx1ZUlzQXJyYXkpLFxuICAgIHZhbHVlc0RpZmZlcixcbiAgXSk7XG5cbiAgLyoqXG4gICAqIFRoaXMgdXNlZCB0byBiZSBhIGhpZGVvdXMgY29uZGl0aW9uYWwsIGJ1dCBpdCdzIGJyb2tlbiB1cCBpbnRvIGEgaGlkZW91cyBmdW5jdGlvbiBpbnN0ZWFkLlxuICAgKiBob3BlZnVsbHkgdGhpcyBtYWtlcyB0aGluZ3MgYSBsaXR0bGUgbW9yZSB1bmRlcnN0YW5kYWJsZS5cbiAgICogLSBjaGVja3MgaWYgdGhlIGRlZmF1bHQgdmFsdWUgaXMgZGVmaW5lZFxuICAgKiAtIGlmIHNvLCBhbmQgdGhlIGRlZmF1bHQgaXMgbm90IGFuIGFycmF5OlxuICAgKiAgIC0gZW5zdXJlcyB0aGUgdHlwZXMgYXJlIHRoZSBzYW1lXG4gICAqICAgLSBlbnN1cmVzIHRoZSB2YWx1ZXMgYXJlIGVxdWFsXG4gICAqIC0gaWYgc28sIGFuZCB0aGUgZGVmYXVsdCBpcyBhbiBhcnJheTpcbiAgICogICAtIGVuc3VyZXMgdGhlIGFyZ3MgdmFsdWUgaXMgYW4gYXJyYXlcbiAgICogICAtIGVuc3VyZXMgdGhlIGFyZ3MgdmFsdWVzIGRvIG5vdCBkaWZmZXIgZnJvbSB0aGUgZGVmYXVsdCB2YWx1ZXNcbiAgICogQHR5cGUgeyhkZXN0OiBzdHJpbmcpID0+IGJvb2xlYW59XG4gICAqL1xuICBjb25zdCBpc05vdERlZmF1bHQgPSBfLm92ZXJFdmVyeShbXG4gICAgZGVmYXVsdElzRGVmaW5lZCxcbiAgICBfLm92ZXJTb21lKFtcbiAgICAgIHR5cGVzRGlmZmVyLFxuICAgICAgXy5vdmVyRXZlcnkoW2RlZmF1bHRWYWx1ZUlzQXJyYXksIGFyZ1ZhbHVlTm90QXJyYXlPckFycmF5c0RpZmZlcl0pLFxuICAgICAgZGVmYXVsdFZhbHVlTm90QXJyYXlBbmRWYWx1ZXNEaWZmZXIsXG4gICAgXSksXG4gIF0pO1xuXG4gIGNvbnN0IGRlZmF1bHRzRnJvbVNjaGVtYSA9IGdldERlZmF1bHRzRm9yU2NoZW1hKHRydWUpO1xuXG4gIHJldHVybiBfLnJlZHVjZShcbiAgICBfLnBpY2tCeShhcmdzLCAoX18sIGtleSkgPT4gaXNOb3REZWZhdWx0KGtleSkpLFxuICAgIC8vIGV4cGxvZGVzIHRoZSBmbGF0dGVuZWQgb2JqZWN0IGJhY2sgaW50byBuZXN0ZWQgb25lXG4gICAgKGFjYywge3ZhbHVlLCBhcmdTcGVjfSkgPT4gXy5zZXQoYWNjLCBhcmdTcGVjLmRlc3QsIHZhbHVlKSxcbiAgICAvKiogQHR5cGUge0FyZ3N9ICovICh7fSlcbiAgKTtcbn1cblxuLyoqXG4gKiBDb21wYWN0cyBhbiBvYmplY3QgZm9yIHtAbGluayBzaG93Q29uZmlnfTpcbiAqIDEuIFJlbW92ZXMgYHN1YmNvbW1hbmRgIGtleS92YWx1ZVxuICogMi4gUmVtb3ZlcyBgdW5kZWZpbmVkYCB2YWx1ZXNcbiAqIDMuIFJlbW92ZXMgZW1wdHkgb2JqZWN0cyAoYnV0IG5vdCBgZmFsc2VgIHZhbHVlcylcbiAqIERvZXMgbm90IG9wZXJhdGUgcmVjdXJzaXZlbHkuXG4gKi9cbmNvbnN0IGNvbXBhY3RDb25maWcgPSBfLnBhcnRpYWwoXG4gIF8ub21pdEJ5LFxuICBfLFxuICAodmFsdWUsIGtleSkgPT5cbiAgICBrZXkgPT09ICdzdWJjb21tYW5kJyB8fCBfLmlzVW5kZWZpbmVkKHZhbHVlKSB8fCAoXy5pc09iamVjdCh2YWx1ZSkgJiYgXy5pc0VtcHR5KHZhbHVlKSlcbik7XG5cbi8qKlxuICogU2hvd3MgYSBicmVha2Rvd24gb2YgdGhlIGN1cnJlbnQgY29uZmlnIGFmdGVyIENMSSBwYXJhbXMsIGNvbmZpZyBmaWxlIGxvYWRlZCAmIGRlZmF1bHRzIGFwcGxpZWQuXG4gKlxuICogVGhlIGFjdHVhbCBzaGFwZSBvZiBgcHJlQ29uZmlnUGFyc2VkQXJnc2AgYW5kIGBkZWZhdWx0c2AgZG9lcyBub3QgbWF0dGVyIGZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBmdW5jdGlvbixcbiAqIGJ1dCBpdCdzIGludGVuZGVkIHRvIGJlIGNhbGxlZCB3aXRoIHZhbHVlcyBvZiB0eXBlIHtAbGluayBQYXJzZWRBcmdzfSBhbmQgYERlZmF1bHRWYWx1ZXM8dHJ1ZT5gLCByZXNwZWN0aXZlbHkuXG4gKlxuICogQHBhcmFtIHtQYXJ0aWFsPFBhcnNlZEFyZ3M+fSBub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncyAtIFBhcnNlZCBDTEkgYXJncyAob3IgcGFyYW0gdG8gYGluaXQoKWApIGJlZm9yZSBjb25maWcgJiBkZWZhdWx0cyBhcHBsaWVkXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9jb25maWctZmlsZScpLlJlYWRDb25maWdGaWxlUmVzdWx0fSBjb25maWdSZXN1bHQgLSBSZXN1bHQgb2YgYXR0ZW1wdGluZyB0byBsb2FkIGEgY29uZmlnIGZpbGUuICBfTXVzdF8gYmUgbm9ybWFsaXplZFxuICogQHBhcmFtIHtQYXJ0aWFsPFBhcnNlZEFyZ3M+fSBkZWZhdWx0cyAtIENvbmZpZ3VyYXRpb24gZGVmYXVsdHMgZnJvbSBzY2hlbWFzXG4gKiBAcGFyYW0ge1BhcnNlZEFyZ3N9IHBhcnNlZEFyZ3MgLSBFbnRpcmUgcGFyc2VkIGFyZ3Mgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIHNob3dDb25maWcobm9uRGVmYXVsdFByZUNvbmZpZ1BhcnNlZEFyZ3MsIGNvbmZpZ1Jlc3VsdCwgZGVmYXVsdHMsIHBhcnNlZEFyZ3MpIHtcbiAgY29uc29sZS5sb2coJ0FwcGl1bSBDb25maWd1cmF0aW9uXFxuJyk7XG4gIGNvbnNvbGUubG9nKCdmcm9tIGRlZmF1bHRzOlxcbicpO1xuICBjb25zb2xlLmRpcihjb21wYWN0Q29uZmlnKGRlZmF1bHRzKSk7XG4gIGlmIChjb25maWdSZXN1bHQuY29uZmlnKSB7XG4gICAgY29uc29sZS5sb2coYFxcbmZyb20gY29uZmlnIGZpbGUgYXQgJHtjb25maWdSZXN1bHQuZmlsZXBhdGh9OlxcbmApO1xuICAgIGNvbnNvbGUuZGlyKGNvbXBhY3RDb25maWcoY29uZmlnUmVzdWx0LmNvbmZpZykpO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKGBcXG4obm8gY29uZmlndXJhdGlvbiBmaWxlIGxvYWRlZClgKTtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KG5vbkRlZmF1bHRQcmVDb25maWdQYXJzZWRBcmdzKSkge1xuICAgIGNvbnNvbGUubG9nKGBcXG4obm8gQ0xJIHBhcmFtZXRlcnMgcHJvdmlkZWQpYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coJ1xcbnZpYSBDTEkgb3IgZnVuY3Rpb24gY2FsbDpcXG4nKTtcbiAgICBjb25zb2xlLmRpcihjb21wYWN0Q29uZmlnKG5vbkRlZmF1bHRQcmVDb25maWdQYXJzZWRBcmdzKSk7XG4gIH1cbiAgY29uc29sZS5sb2coJ1xcbmZpbmFsIGNvbmZpZ3VyYXRpb246XFxuJyk7XG4gIGNvbnNvbGUuZGlyKGNvbXBhY3RDb25maWcocGFyc2VkQXJncykpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB0bXBEaXJcbiAqL1xuYXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVUbXBEaXIodG1wRGlyKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMubWtkaXJwKHRtcERpcik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgV2UgY291bGQgbm90IGVuc3VyZSB0aGF0IHRoZSB0ZW1wIGRpciB5b3Ugc3BlY2lmaWVkIGAgK1xuICAgICAgICBgKCR7dG1wRGlyfSkgZXhpc3RzLiBQbGVhc2UgbWFrZSBzdXJlIGl0J3Mgd3JpdGVhYmxlLmBcbiAgICApO1xuICB9XG59XG5cbmNvbnN0IHJvb3REaXIgPSBmcy5maW5kUm9vdChfX2Rpcm5hbWUpO1xuXG5leHBvcnQge1xuICBnZXRCdWlsZEluZm8sXG4gIGNoZWNrTm9kZU9rLFxuICBzaG93QnVpbGRJbmZvLFxuICB3YXJuTm9kZURlcHJlY2F0aW9ucyxcbiAgdmFsaWRhdGVUbXBEaXIsXG4gIGdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzLFxuICBnZXRHaXRSZXYsXG4gIEFQUElVTV9WRVIsXG4gIHVwZGF0ZUJ1aWxkSW5mbyxcbiAgc2hvd0NvbmZpZyxcbiAgcm9vdERpcixcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnYXBwaXVtL3R5cGVzJykuUGFyc2VkQXJnc30gUGFyc2VkQXJnc1xuICogQHR5cGVkZWYge2ltcG9ydCgnYXBwaXVtL3R5cGVzJykuQXJnc30gQXJnc1xuICogQHR5cGVkZWYge2ltcG9ydCgnLi9zY2hlbWEvYXJnLXNwZWMnKS5BcmdTcGVjfSBBcmdTcGVjXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHQyxXQUFBLENBQUdDLG1CQUFILENBQXVCQyxTQUF2QixDQUFuQjs7QUFFQSxN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
|
|
253
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJucG1QYWNrYWdlIiwiZnMiLCJyZWFkUGFja2FnZUpzb25Gcm9tIiwiX19kaXJuYW1lIiwiQVBQSVVNX1ZFUiIsInZlcnNpb24iLCJNSU5fTk9ERV9WRVJTSU9OIiwiZW5naW5lcyIsIm5vZGUiLCJNSU5fTlBNX1ZFUlNJT04iLCJucG0iLCJHSVRfTUVUQV9ST09UIiwiR0lUX0JJTkFSWSIsInN5c3RlbSIsImlzV2luZG93cyIsIkdJVEhVQl9BUEkiLCJCVUlMRF9JTkZPIiwiZ2V0Tm9kZVZlcnNpb24iLCJzZW12ZXIiLCJjb2VyY2UiLCJwcm9jZXNzIiwiZ2V0TnBtVmVyc2lvbiIsInN0ZG91dCIsImV4ZWMiLCJ0cmltIiwidXBkYXRlQnVpbGRJbmZvIiwidXNlR2l0aHViQXBpRmFsbGJhY2siLCJzaGEiLCJnZXRHaXRSZXYiLCJidWlsZFRpbWVzdGFtcCIsImdldEdpdFRpbWVzdGFtcCIsImJ1aWx0IiwiZmluZEdpdFJvb3QiLCJmaW5kVXAiLCJjd2QiLCJyb290RGlyIiwidHlwZSIsImdpdFJvb3QiLCJpZ24iLCJheGlvcyIsImdldCIsImhlYWRlcnMiLCJkYXRhIiwib2JqZWN0IiwiY29tbWl0U2hhIiwidGFnZ2VyIiwiZGF0ZSIsImdldEJ1aWxkSW5mbyIsImNoZWNrTm9kZU9rIiwic2F0aXNmaWVzIiwiRXJyb3IiLCJjaGVja05wbU9rIiwibnBtVmVyc2lvbiIsIndhcm5Ob2RlRGVwcmVjYXRpb25zIiwic2hvd0J1aWxkSW5mbyIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MiLCJwYXJzZWRBcmdzIiwiZmxhdHRlbiIsImFyZ3MiLCJhcmdTcGVjcyIsImdldEFsbEFyZ1NwZWNzIiwiZmxhdHRlbmVkIiwiXyIsInJlZHVjZSIsInZhbHVlcyIsImFjYyIsImFyZ1NwZWMiLCJoYXMiLCJkZXN0IiwidmFsdWUiLCJ0eXBlc0RpZmZlciIsImRlZmF1bHRzRnJvbVNjaGVtYSIsImRlZmF1bHRWYWx1ZUlzQXJyYXkiLCJpc0FycmF5IiwiYXJnc1ZhbHVlSXNBcnJheSIsImFycmF5c0RpZmZlciIsImd0Iiwic2l6ZSIsImRpZmZlcmVuY2UiLCJ2YWx1ZXNEaWZmZXIiLCJkZWZhdWx0SXNEZWZpbmVkIiwiaXNVbmRlZmluZWQiLCJhcmdWYWx1ZU5vdEFycmF5T3JBcnJheXNEaWZmZXIiLCJvdmVyU29tZSIsIm5lZ2F0ZSIsImRlZmF1bHRWYWx1ZU5vdEFycmF5QW5kVmFsdWVzRGlmZmVyIiwib3ZlckV2ZXJ5IiwiaXNOb3REZWZhdWx0IiwiZ2V0RGVmYXVsdHNGb3JTY2hlbWEiLCJwaWNrQnkiLCJfXyIsImtleSIsInNldCIsImNvbXBhY3RDb25maWciLCJwYXJ0aWFsIiwib21pdEJ5IiwiaXNPYmplY3QiLCJpc0VtcHR5Iiwic2hvd0NvbmZpZyIsIm5vbkRlZmF1bHRQcmVDb25maWdQYXJzZWRBcmdzIiwiY29uZmlnUmVzdWx0IiwiZGVmYXVsdHMiLCJkaXIiLCJjb25maWciLCJmaWxlcGF0aCIsInZhbGlkYXRlVG1wRGlyIiwidG1wRGlyIiwibWtkaXJwIiwiZSIsImZpbmRSb290Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2NvbmZpZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtzeXN0ZW0sIGZzfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7ZXhlY30gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCBmaW5kVXAgZnJvbSAnZmluZC11cCc7XG5pbXBvcnQge2dldERlZmF1bHRzRm9yU2NoZW1hLCBnZXRBbGxBcmdTcGVjc30gZnJvbSAnLi9zY2hlbWEvc2NoZW1hJztcblxuY29uc3QgbnBtUGFja2FnZSA9IGZzLnJlYWRQYWNrYWdlSnNvbkZyb20oX19kaXJuYW1lKTtcblxuY29uc3QgQVBQSVVNX1ZFUiA9IG5wbVBhY2thZ2UudmVyc2lvbjtcbmNvbnN0IE1JTl9OT0RFX1ZFUlNJT04gPSBucG1QYWNrYWdlLmVuZ2luZXMubm9kZTtcbmNvbnN0IE1JTl9OUE1fVkVSU0lPTiA9IG5wbVBhY2thZ2UuZW5naW5lcy5ucG07XG5cbmNvbnN0IEdJVF9NRVRBX1JPT1QgPSAnLmdpdCc7XG5jb25zdCBHSVRfQklOQVJZID0gYGdpdCR7c3lzdGVtLmlzV2luZG93cygpID8gJy5leGUnIDogJyd9YDtcbmNvbnN0IEdJVEhVQl9BUEkgPSAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9hcHBpdW0vYXBwaXVtJztcblxuLyoqXG4gKiBAdHlwZSB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5CdWlsZEluZm99XG4gKi9cbmNvbnN0IEJVSUxEX0lORk8gPSB7XG4gIHZlcnNpb246IEFQUElVTV9WRVIsXG59O1xuXG5mdW5jdGlvbiBnZXROb2RlVmVyc2lvbigpIHtcbiAgcmV0dXJuIC8qKiBAdHlwZSB7aW1wb3J0KCdzZW12ZXInKS5TZW1WZXJ9ICovIChzZW12ZXIuY29lcmNlKHByb2Nlc3MudmVyc2lvbikpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdmVyc2lvbiBvZiBgbnBtYFxuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TnBtVmVyc2lvbigpIHtcbiAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKHN5c3RlbS5pc1dpbmRvd3MoKSA/ICducG0uY21kJyA6ICducG0nLCBbJy0tdmVyc2lvbiddKTtcbiAgcmV0dXJuIHN0ZG91dC50cmltKCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtib29sZWFufSBbdXNlR2l0aHViQXBpRmFsbGJhY2tdXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUJ1aWxkSW5mbyh1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGNvbnN0IHNoYSA9IGF3YWl0IGdldEdpdFJldih1c2VHaXRodWJBcGlGYWxsYmFjayk7XG4gIGlmICghc2hhKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIEJVSUxEX0lORk9bJ2dpdC1zaGEnXSA9IHNoYTtcbiAgY29uc3QgYnVpbGRUaW1lc3RhbXAgPSBhd2FpdCBnZXRHaXRUaW1lc3RhbXAoc2hhLCB1c2VHaXRodWJBcGlGYWxsYmFjayk7XG4gIGlmIChidWlsZFRpbWVzdGFtcCkge1xuICAgIEJVSUxEX0lORk8uYnVpbHQgPSBidWlsZFRpbWVzdGFtcDtcbiAgfVxufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBHaXQgbWV0YWRhdGEgZGlyIChzZWUgYEdJVF9NRVRBX1JPT1RgKVxuICpcbiAqIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgQXBwaXVtIGNhbm5vdCBhc3N1bWUgYHBhY2thZ2UuanNvbmAgYW5kIGAuZ2l0YCBhcmUgaW4gdGhlIHNhbWVcbiAqIGRpcmVjdG9yeS4gIE1vbm9yZXBvcywgc2VlP1xuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nfHVuZGVmaW5lZD59IFBhdGggdG8gZGlyIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBmb3VuZFxuICovXG5hc3luYyBmdW5jdGlvbiBmaW5kR2l0Um9vdCgpIHtcbiAgcmV0dXJuIGF3YWl0IGZpbmRVcChHSVRfTUVUQV9ST09ULCB7Y3dkOiByb290RGlyLCB0eXBlOiAnZGlyZWN0b3J5J30pO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3VzZUdpdGh1YkFwaUZhbGxiYWNrXVxuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPz59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEdpdFJldih1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGNvbnN0IGdpdFJvb3QgPSBhd2FpdCBmaW5kR2l0Um9vdCgpO1xuICBpZiAoZ2l0Um9vdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoR0lUX0JJTkFSWSwgWydyZXYtcGFyc2UnLCAnSEVBRCddLCB7XG4gICAgICAgIGN3ZDogZ2l0Um9vdCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHN0ZG91dC50cmltKCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG5cbiAgaWYgKCF1c2VHaXRodWJBcGlGYWxsYmFjaykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gSWYgdGhlIHBhY2thZ2UgZm9sZGVyIGlzIG5vdCBhIHZhbGlkIGdpdCByZXBvc2l0b3J5XG4gIC8vIHRoZW4gZmV0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgdGFnIGluZm8gZnJvbSBHaXRIdWJcbiAgdHJ5IHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgYXhpb3MuZ2V0KGAke0dJVEhVQl9BUEl9L2dpdC9yZWZzL3RhZ3MvYXBwaXVtQCR7QVBQSVVNX1ZFUn1gLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnVXNlci1BZ2VudCc6IGBBcHBpdW0gJHtBUFBJVU1fVkVSfWAsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICkuZGF0YT8ub2JqZWN0Py5zaGE7XG4gIH0gY2F0Y2ggKGlnbikge31cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbW1pdFNoYVxuICogQHBhcmFtIHtib29sZWFufSBbdXNlR2l0aHViQXBpRmFsbGJhY2tdXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc/Pn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0R2l0VGltZXN0YW1wKGNvbW1pdFNoYSwgdXNlR2l0aHViQXBpRmFsbGJhY2sgPSBmYWxzZSkge1xuICBjb25zdCBnaXRSb290ID0gYXdhaXQgZmluZEdpdFJvb3QoKTtcbiAgaWYgKGdpdFJvb3QpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKEdJVF9CSU5BUlksIFsnc2hvdycsICctcycsICctLWZvcm1hdD0lY2knLCBjb21taXRTaGFdLCB7XG4gICAgICAgIGN3ZDogZ2l0Um9vdCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHN0ZG91dC50cmltKCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG5cbiAgaWYgKCF1c2VHaXRodWJBcGlGYWxsYmFjaykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgYXhpb3MuZ2V0KGAke0dJVEhVQl9BUEl9L2dpdC90YWdzLyR7Y29tbWl0U2hhfWAsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdVc2VyLUFnZW50JzogYEFwcGl1bSAke0FQUElVTV9WRVJ9YCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKS5kYXRhPy50YWdnZXI/LmRhdGU7XG4gIH0gY2F0Y2ggKGlnbikge31cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogTXV0YWJsZSBvYmplY3QgY29udGFpbmluZyBBcHBpdW0gYnVpbGQgaW5mb3JtYXRpb24uIEJ5IGRlZmF1bHQgaXRcbiAqIG9ubHkgY29udGFpbnMgdGhlIEFwcGl1bSB2ZXJzaW9uLCBidXQgaXMgdXBkYXRlZCB3aXRoIHRoZSBidWlsZCB0aW1lc3RhbXBcbiAqIGFuZCBnaXQgY29tbWl0IGhhc2ggYXN5bmNocm9ub3VzbHkgYXMgc29vbiBhcyBgdXBkYXRlQnVpbGRJbmZvYCBpcyBjYWxsZWRcbiAqIGFuZCBzdWNjZWVkcy5cbiAqIEByZXR1cm5zIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkJ1aWxkSW5mb31cbiAqL1xuZnVuY3Rpb24gZ2V0QnVpbGRJbmZvKCkge1xuICByZXR1cm4gQlVJTERfSU5GTztcbn1cblxuZnVuY3Rpb24gY2hlY2tOb2RlT2soKSB7XG4gIGNvbnN0IHZlcnNpb24gPSBnZXROb2RlVmVyc2lvbigpO1xuICBpZiAoIXNlbXZlci5zYXRpc2ZpZXModmVyc2lvbiwgTUlOX05PREVfVkVSU0lPTikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgTm9kZSB2ZXJzaW9uIG11c3QgYmUgYXQgbGVhc3QgJHtNSU5fTk9ERV9WRVJTSU9OfTsgY3VycmVudCBpcyAke3ZlcnNpb24udmVyc2lvbn1gXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tOcG1PaygpIHtcbiAgY29uc3QgbnBtVmVyc2lvbiA9IGF3YWl0IGdldE5wbVZlcnNpb24oKTtcbiAgaWYgKCFzZW12ZXIuc2F0aXNmaWVzKG5wbVZlcnNpb24sIE1JTl9OUE1fVkVSU0lPTikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgbnBtIHZlcnNpb24gbXVzdCBiZSBhdCBsZWFzdCAke01JTl9OUE1fVkVSU0lPTn07IGN1cnJlbnQgaXMgJHtucG1WZXJzaW9ufS4gUnVuIFwibnBtIGluc3RhbGwgLWcgbnBtXCIgdG8gdXBncmFkZS5gXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3YXJuTm9kZURlcHJlY2F0aW9ucygpIHtcbiAgLyoqXG4gICAqIFVuY29tbWVudCB0aGlzIHNlY3Rpb24gdG8gZ2V0IG5vZGUgdmVyc2lvbiBkZXByZWNhdGlvbiB3YXJuaW5nc1xuICAgKiBBbHNvIGFkZCB0ZXN0IGNhc2VzIHRvIGNvbmZpZy1zcGVjcy5qcyB0byBjb3ZlciB0aGUgY2FzZXMgYWRkZWRcbiAgICoqL1xuICAvLyBjb25zdCB2ZXJzaW9uID0gZ2V0Tm9kZVZlcnNpb24oKTtcbiAgLy8gaWYgKHZlcnNpb24ubWFqb3IgPCA4KSB7XG4gIC8vICAgbG9nZ2VyLndhcm4oYEFwcGl1bSBzdXBwb3J0IGZvciB2ZXJzaW9ucyBvZiBub2RlIDwgJHt2ZXJzaW9uLm1ham9yfSBoYXMgYmVlbiBgICtcbiAgLy8gICAgICAgICAgICAgICAnZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIFBsZWFzZSAnICtcbiAgLy8gICAgICAgICAgICAgICAndXBncmFkZSEnKTtcbiAgLy8gfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzaG93QnVpbGRJbmZvKCkge1xuICBhd2FpdCB1cGRhdGVCdWlsZEluZm8odHJ1ZSk7XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGdldEJ1aWxkSW5mbygpKSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxufVxuXG4vKipcbiAqIFJldHVybnMgay92IHBhaXJzIG9mIHNlcnZlciBhcmd1bWVudHMgd2hpY2ggYXJlIF9ub3RfIHRoZSBkZWZhdWx0cy5cbiAqIEBwYXJhbSB7QXJnc30gcGFyc2VkQXJnc1xuICogQHJldHVybnMge0FyZ3N9XG4gKi9cbmZ1bmN0aW9uIGdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzKHBhcnNlZEFyZ3MpIHtcbiAgLyoqXG4gICAqIEZsYXR0ZW5zIHBhcnNlZCBhcmdzIGludG8gYSBzaW5nbGUgbGV2ZWwgb2JqZWN0IGZvciBjb21wYXJpc29uIHdpdGhcbiAgICogZmxhdHRlbmVkIGRlZmF1bHRzIGFjcm9zcyBzZXJ2ZXIgYXJncyBhbmQgZXh0ZW5zaW9uIGFyZ3MuXG4gICAqIEBwYXJhbSB7QXJnc30gYXJnc1xuICAgKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgeyB2YWx1ZTogYW55LCBhcmdTcGVjOiBBcmdTcGVjIH0+fVxuICAgKi9cbiAgY29uc3QgZmxhdHRlbiA9IChhcmdzKSA9PiB7XG4gICAgY29uc3QgYXJnU3BlY3MgPSBnZXRBbGxBcmdTcGVjcygpO1xuICAgIGNvbnN0IGZsYXR0ZW5lZCA9IF8ucmVkdWNlKFxuICAgICAgWy4uLmFyZ1NwZWNzLnZhbHVlcygpXSxcbiAgICAgIChhY2MsIGFyZ1NwZWMpID0+IHtcbiAgICAgICAgaWYgKF8uaGFzKGFyZ3MsIGFyZ1NwZWMuZGVzdCkpIHtcbiAgICAgICAgICBhY2NbYXJnU3BlYy5kZXN0XSA9IHt2YWx1ZTogXy5nZXQoYXJncywgYXJnU3BlYy5kZXN0KSwgYXJnU3BlY307XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHsgdmFsdWU6IGFueSwgYXJnU3BlYzogQXJnU3BlYyB9Pn0gKi8gKHt9KVxuICAgICk7XG5cbiAgICByZXR1cm4gZmxhdHRlbmVkO1xuICB9O1xuXG4gIGNvbnN0IGFyZ3MgPSBmbGF0dGVuKHBhcnNlZEFyZ3MpO1xuXG4gIC8vIGhvcGVmdWxseSB0aGVzZSBmdW5jdGlvbiBuYW1lcyBhcmUgZGVzY3JpcHRpdmUgZW5vdWdoXG4gIGNvbnN0IHR5cGVzRGlmZmVyID0gLyoqIEBwYXJhbSB7c3RyaW5nfSBkZXN0ICovIChkZXN0KSA9PlxuICAgIHR5cGVvZiBhcmdzW2Rlc3RdLnZhbHVlICE9PSB0eXBlb2YgZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdO1xuXG4gIGNvbnN0IGRlZmF1bHRWYWx1ZUlzQXJyYXkgPSAvKiogQHBhcmFtIHtzdHJpbmd9IGRlc3QgKi8gKGRlc3QpID0+XG4gICAgXy5pc0FycmF5KGRlZmF1bHRzRnJvbVNjaGVtYVtkZXN0XSk7XG5cbiAgY29uc3QgYXJnc1ZhbHVlSXNBcnJheSA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyAoZGVzdCkgPT4gXy5pc0FycmF5KGFyZ3NbZGVzdF0udmFsdWUpO1xuXG4gIGNvbnN0IGFycmF5c0RpZmZlciA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyAoZGVzdCkgPT5cbiAgICBfLmd0KF8uc2l6ZShfLmRpZmZlcmVuY2UoYXJnc1tkZXN0XS52YWx1ZSwgZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdKSksIDApO1xuXG4gIGNvbnN0IHZhbHVlc0RpZmZlciA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyAoZGVzdCkgPT5cbiAgICBhcmdzW2Rlc3RdLnZhbHVlICE9PSBkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF07XG5cbiAgY29uc3QgZGVmYXVsdElzRGVmaW5lZCA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyAoZGVzdCkgPT5cbiAgICAhXy5pc1VuZGVmaW5lZChkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF0pO1xuXG4gIC8vIG5vdGUgdGhhdCBgXy5vdmVyRXZlcnlgIGlzIGxpa2UgYW4gXCJBTkRcIiwgYW5kIGBfLm92ZXJTb21lYCBpcyBsaWtlIGFuIFwiT1JcIlxuXG4gIGNvbnN0IGFyZ1ZhbHVlTm90QXJyYXlPckFycmF5c0RpZmZlciA9IF8ub3ZlclNvbWUoW18ubmVnYXRlKGFyZ3NWYWx1ZUlzQXJyYXkpLCBhcnJheXNEaWZmZXJdKTtcblxuICBjb25zdCBkZWZhdWx0VmFsdWVOb3RBcnJheUFuZFZhbHVlc0RpZmZlciA9IF8ub3ZlckV2ZXJ5KFtcbiAgICBfLm5lZ2F0ZShkZWZhdWx0VmFsdWVJc0FycmF5KSxcbiAgICB2YWx1ZXNEaWZmZXIsXG4gIF0pO1xuXG4gIC8qKlxuICAgKiBUaGlzIHVzZWQgdG8gYmUgYSBoaWRlb3VzIGNvbmRpdGlvbmFsLCBidXQgaXQncyBicm9rZW4gdXAgaW50byBhIGhpZGVvdXMgZnVuY3Rpb24gaW5zdGVhZC5cbiAgICogaG9wZWZ1bGx5IHRoaXMgbWFrZXMgdGhpbmdzIGEgbGl0dGxlIG1vcmUgdW5kZXJzdGFuZGFibGUuXG4gICAqIC0gY2hlY2tzIGlmIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGRlZmluZWRcbiAgICogLSBpZiBzbywgYW5kIHRoZSBkZWZhdWx0IGlzIG5vdCBhbiBhcnJheTpcbiAgICogICAtIGVuc3VyZXMgdGhlIHR5cGVzIGFyZSB0aGUgc2FtZVxuICAgKiAgIC0gZW5zdXJlcyB0aGUgdmFsdWVzIGFyZSBlcXVhbFxuICAgKiAtIGlmIHNvLCBhbmQgdGhlIGRlZmF1bHQgaXMgYW4gYXJyYXk6XG4gICAqICAgLSBlbnN1cmVzIHRoZSBhcmdzIHZhbHVlIGlzIGFuIGFycmF5XG4gICAqICAgLSBlbnN1cmVzIHRoZSBhcmdzIHZhbHVlcyBkbyBub3QgZGlmZmVyIGZyb20gdGhlIGRlZmF1bHQgdmFsdWVzXG4gICAqIEB0eXBlIHsoZGVzdDogc3RyaW5nKSA9PiBib29sZWFufVxuICAgKi9cbiAgY29uc3QgaXNOb3REZWZhdWx0ID0gXy5vdmVyRXZlcnkoW1xuICAgIGRlZmF1bHRJc0RlZmluZWQsXG4gICAgXy5vdmVyU29tZShbXG4gICAgICB0eXBlc0RpZmZlcixcbiAgICAgIF8ub3ZlckV2ZXJ5KFtkZWZhdWx0VmFsdWVJc0FycmF5LCBhcmdWYWx1ZU5vdEFycmF5T3JBcnJheXNEaWZmZXJdKSxcbiAgICAgIGRlZmF1bHRWYWx1ZU5vdEFycmF5QW5kVmFsdWVzRGlmZmVyLFxuICAgIF0pLFxuICBdKTtcblxuICBjb25zdCBkZWZhdWx0c0Zyb21TY2hlbWEgPSBnZXREZWZhdWx0c0ZvclNjaGVtYSh0cnVlKTtcblxuICByZXR1cm4gXy5yZWR1Y2UoXG4gICAgXy5waWNrQnkoYXJncywgKF9fLCBrZXkpID0+IGlzTm90RGVmYXVsdChrZXkpKSxcbiAgICAvLyBleHBsb2RlcyB0aGUgZmxhdHRlbmVkIG9iamVjdCBiYWNrIGludG8gbmVzdGVkIG9uZVxuICAgIChhY2MsIHt2YWx1ZSwgYXJnU3BlY30pID0+IF8uc2V0KGFjYywgYXJnU3BlYy5kZXN0LCB2YWx1ZSksXG4gICAgLyoqIEB0eXBlIHtBcmdzfSAqLyAoe30pXG4gICk7XG59XG5cbi8qKlxuICogQ29tcGFjdHMgYW4gb2JqZWN0IGZvciB7QGxpbmsgc2hvd0NvbmZpZ306XG4gKiAxLiBSZW1vdmVzIGBzdWJjb21tYW5kYCBrZXkvdmFsdWVcbiAqIDIuIFJlbW92ZXMgYHVuZGVmaW5lZGAgdmFsdWVzXG4gKiAzLiBSZW1vdmVzIGVtcHR5IG9iamVjdHMgKGJ1dCBub3QgYGZhbHNlYCB2YWx1ZXMpXG4gKiBEb2VzIG5vdCBvcGVyYXRlIHJlY3Vyc2l2ZWx5LlxuICovXG5jb25zdCBjb21wYWN0Q29uZmlnID0gXy5wYXJ0aWFsKFxuICBfLm9taXRCeSxcbiAgXyxcbiAgKHZhbHVlLCBrZXkpID0+XG4gICAga2V5ID09PSAnc3ViY29tbWFuZCcgfHwgXy5pc1VuZGVmaW5lZCh2YWx1ZSkgfHwgKF8uaXNPYmplY3QodmFsdWUpICYmIF8uaXNFbXB0eSh2YWx1ZSkpXG4pO1xuXG4vKipcbiAqIFNob3dzIGEgYnJlYWtkb3duIG9mIHRoZSBjdXJyZW50IGNvbmZpZyBhZnRlciBDTEkgcGFyYW1zLCBjb25maWcgZmlsZSBsb2FkZWQgJiBkZWZhdWx0cyBhcHBsaWVkLlxuICpcbiAqIFRoZSBhY3R1YWwgc2hhcGUgb2YgYHByZUNvbmZpZ1BhcnNlZEFyZ3NgIGFuZCBgZGVmYXVsdHNgIGRvZXMgbm90IG1hdHRlciBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZnVuY3Rpb24sXG4gKiBidXQgaXQncyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgd2l0aCB2YWx1ZXMgb2YgdHlwZSB7QGxpbmsgUGFyc2VkQXJnc30gYW5kIGBEZWZhdWx0VmFsdWVzPHRydWU+YCwgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBwYXJhbSB7UGFydGlhbDxQYXJzZWRBcmdzPn0gbm9uRGVmYXVsdFByZUNvbmZpZ1BhcnNlZEFyZ3MgLSBQYXJzZWQgQ0xJIGFyZ3MgKG9yIHBhcmFtIHRvIGBpbml0KClgKSBiZWZvcmUgY29uZmlnICYgZGVmYXVsdHMgYXBwbGllZFxuICogQHBhcmFtIHtpbXBvcnQoJy4vY29uZmlnLWZpbGUnKS5SZWFkQ29uZmlnRmlsZVJlc3VsdH0gY29uZmlnUmVzdWx0IC0gUmVzdWx0IG9mIGF0dGVtcHRpbmcgdG8gbG9hZCBhIGNvbmZpZyBmaWxlLiAgX011c3RfIGJlIG5vcm1hbGl6ZWRcbiAqIEBwYXJhbSB7UGFydGlhbDxQYXJzZWRBcmdzPn0gZGVmYXVsdHMgLSBDb25maWd1cmF0aW9uIGRlZmF1bHRzIGZyb20gc2NoZW1hc1xuICogQHBhcmFtIHtQYXJzZWRBcmdzfSBwYXJzZWRBcmdzIC0gRW50aXJlIHBhcnNlZCBhcmdzIG9iamVjdFxuICovXG5mdW5jdGlvbiBzaG93Q29uZmlnKG5vbkRlZmF1bHRQcmVDb25maWdQYXJzZWRBcmdzLCBjb25maWdSZXN1bHQsIGRlZmF1bHRzLCBwYXJzZWRBcmdzKSB7XG4gIGNvbnNvbGUubG9nKCdBcHBpdW0gQ29uZmlndXJhdGlvblxcbicpO1xuICBjb25zb2xlLmxvZygnZnJvbSBkZWZhdWx0czpcXG4nKTtcbiAgY29uc29sZS5kaXIoY29tcGFjdENvbmZpZyhkZWZhdWx0cykpO1xuICBpZiAoY29uZmlnUmVzdWx0LmNvbmZpZykge1xuICAgIGNvbnNvbGUubG9nKGBcXG5mcm9tIGNvbmZpZyBmaWxlIGF0ICR7Y29uZmlnUmVzdWx0LmZpbGVwYXRofTpcXG5gKTtcbiAgICBjb25zb2xlLmRpcihjb21wYWN0Q29uZmlnKGNvbmZpZ1Jlc3VsdC5jb25maWcpKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhgXFxuKG5vIGNvbmZpZ3VyYXRpb24gZmlsZSBsb2FkZWQpYCk7XG4gIH1cbiAgaWYgKF8uaXNFbXB0eShub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncykpIHtcbiAgICBjb25zb2xlLmxvZyhgXFxuKG5vIENMSSBwYXJhbWV0ZXJzIHByb3ZpZGVkKWApO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKCdcXG52aWEgQ0xJIG9yIGZ1bmN0aW9uIGNhbGw6XFxuJyk7XG4gICAgY29uc29sZS5kaXIoY29tcGFjdENvbmZpZyhub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncykpO1xuICB9XG4gIGNvbnNvbGUubG9nKCdcXG5maW5hbCBjb25maWd1cmF0aW9uOlxcbicpO1xuICBjb25zb2xlLmRpcihjb21wYWN0Q29uZmlnKHBhcnNlZEFyZ3MpKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG1wRGlyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlVG1wRGlyKHRtcERpcikge1xuICB0cnkge1xuICAgIGF3YWl0IGZzLm1rZGlycCh0bXBEaXIpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFdlIGNvdWxkIG5vdCBlbnN1cmUgdGhhdCB0aGUgdGVtcCBkaXIgeW91IHNwZWNpZmllZCBgICtcbiAgICAgICAgYCgke3RtcERpcn0pIGV4aXN0cy4gUGxlYXNlIG1ha2Ugc3VyZSBpdCdzIHdyaXRlYWJsZS5gXG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCByb290RGlyID0gZnMuZmluZFJvb3QoX19kaXJuYW1lKTtcblxuZXhwb3J0IHtcbiAgZ2V0QnVpbGRJbmZvLFxuICBjaGVja05vZGVPayxcbiAgc2hvd0J1aWxkSW5mbyxcbiAgd2Fybk5vZGVEZXByZWNhdGlvbnMsXG4gIHZhbGlkYXRlVG1wRGlyLFxuICBnZXROb25EZWZhdWx0U2VydmVyQXJncyxcbiAgZ2V0R2l0UmV2LFxuICBBUFBJVU1fVkVSLFxuICB1cGRhdGVCdWlsZEluZm8sXG4gIHNob3dDb25maWcsXG4gIHJvb3REaXIsXG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLlBhcnNlZEFyZ3N9IFBhcnNlZEFyZ3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkFyZ3N9IEFyZ3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vc2NoZW1hL2FyZy1zcGVjJykuQXJnU3BlY30gQXJnU3BlY1xuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxVQUFVLEdBQUdDLFdBQUEsQ0FBR0MsbUJBQUgsQ0FBdUJDLFNBQXZCLENBQW5COztBQUVBLE1BQU1DLFVBQVUsR0FBR0osVUFBVSxDQUFDSyxPQUE5Qjs7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBR04sVUFBVSxDQUFDTyxPQUFYLENBQW1CQyxJQUE1QztBQUNBLE1BQU1DLGVBQWUsR0FBR1QsVUFBVSxDQUFDTyxPQUFYLENBQW1CRyxHQUEzQztBQUVBLE1BQU1DLGFBQWEsR0FBRyxNQUF0QjtBQUNBLE1BQU1DLFVBQVUsR0FBSSxNQUFLQyxlQUFBLENBQU9DLFNBQVAsS0FBcUIsTUFBckIsR0FBOEIsRUFBRyxFQUExRDtBQUNBLE1BQU1DLFVBQVUsR0FBRyw0Q0FBbkI7QUFLQSxNQUFNQyxVQUFVLEdBQUc7RUFDakJYLE9BQU8sRUFBRUQ7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
|
package/build/lib/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../lib/main.js"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../lib/main.js"],"names":[],"mappings":";;yBAuYa,OAAO,eAAe,EAAE,UAAU;yBAClC,OAAO,eAAe,EAAE,UAAU;0BAClC,OAAO,eAAe,EAAE,WAAW;0BACnC,OAAO,eAAe,EAAE,WAAW;mCACnC,OAAO,cAAc,EAAE,oBAAoB;4BAC3C,OAAO,aAAa,EAAE,aAAa;4BACnC,OAAO,aAAa,EAAE,aAAa;;;;mCAKlC,EAAE;;;;;kBAKF,OAAO,UAAU,EAAE,YAAY;;;;gBAC/B,OAAO,cAAc,EAAE,UAAU;;+BAIlC,cAAc,GAAG,OAAO,aAAa,EAAE,gBAAgB;oEAKvD,OAAO,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;0EAK9B,OAAO,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;AAjJjD;;;;;;GAMG;AACH,mGAFa,QAAQ,OAAO,eAAe,EAAE,YAAY,GAAC,SAAS,CAAC,CA8FnE;AA7ND;;;;;;;;;;;;;;;GAeG;AACH,mGAPa,QAAQ,gBAAgB,GAAG,oBAAoB,CAAC,CA+G5D"}
|
package/build/lib/main.js
CHANGED
|
@@ -68,17 +68,15 @@ var _schema = require("./schema/schema");
|
|
|
68
68
|
|
|
69
69
|
var _utils = require("./utils");
|
|
70
70
|
|
|
71
|
-
var _path = _interopRequireDefault(require("path"));
|
|
72
|
-
|
|
73
71
|
const {
|
|
74
|
-
resolveAppiumHome
|
|
75
|
-
hasAppiumDependency
|
|
72
|
+
resolveAppiumHome
|
|
76
73
|
} = _support.env;
|
|
77
74
|
exports.resolveAppiumHome = resolveAppiumHome;
|
|
78
75
|
|
|
79
76
|
async function preflightChecks(args, throwInsteadOfExit = false) {
|
|
80
77
|
try {
|
|
81
78
|
(0, _config.checkNodeOk)();
|
|
79
|
+
await (0, _config.checkNpmOk)();
|
|
82
80
|
|
|
83
81
|
if (args.longStacktrace) {
|
|
84
82
|
require('longjohn').async_trace_limit = -1;
|
|
@@ -161,18 +159,6 @@ function areServerCommandArgs(args) {
|
|
|
161
159
|
|
|
162
160
|
async function init(args) {
|
|
163
161
|
const appiumHome = (args === null || args === void 0 ? void 0 : args.appiumHome) ?? (await resolveAppiumHome());
|
|
164
|
-
|
|
165
|
-
if (!(await hasAppiumDependency(appiumHome))) {
|
|
166
|
-
try {
|
|
167
|
-
await _support.fs.mkdirp(_path.default.join(appiumHome, 'node_modules'));
|
|
168
|
-
await _support.fs.symlink(_config.rootDir, _path.default.join(appiumHome, 'node_modules', 'appium'), 'junction');
|
|
169
|
-
} catch (err) {
|
|
170
|
-
if (err.code !== 'EEXIST') {
|
|
171
|
-
throw new Error(`Unable to create symlink to appium: ${err.message}`);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
162
|
const {
|
|
177
163
|
driverConfig,
|
|
178
164
|
pluginConfig
|
|
@@ -200,19 +186,7 @@ async function init(args) {
|
|
|
200
186
|
throw new Error(`Errors in config file ${configResult.filepath}:\n ${configResult.reason ?? configResult.errors}`);
|
|
201
187
|
}
|
|
202
188
|
|
|
203
|
-
if (
|
|
204
|
-
if (preConfigArgs.subcommand === _constants.DRIVER_TYPE) {
|
|
205
|
-
await (0, _extension.runExtensionCommand)(preConfigArgs, driverConfig);
|
|
206
|
-
return {};
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
if (preConfigArgs.subcommand === _constants.PLUGIN_TYPE) {
|
|
210
|
-
await (0, _extension.runExtensionCommand)(preConfigArgs, pluginConfig);
|
|
211
|
-
return {};
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
return {};
|
|
215
|
-
} else {
|
|
189
|
+
if (areServerCommandArgs(preConfigArgs)) {
|
|
216
190
|
var _configResult$config;
|
|
217
191
|
|
|
218
192
|
const defaults = (0, _schema.getDefaultsForSchema)(false);
|
|
@@ -252,6 +226,20 @@ async function init(args) {
|
|
|
252
226
|
driverConfig,
|
|
253
227
|
pluginConfig
|
|
254
228
|
};
|
|
229
|
+
} else {
|
|
230
|
+
const extensionCommandArgs = preConfigArgs;
|
|
231
|
+
|
|
232
|
+
if (preConfigArgs.subcommand === _constants.DRIVER_TYPE) {
|
|
233
|
+
await (0, _extension.runExtensionCommand)(extensionCommandArgs, driverConfig);
|
|
234
|
+
return {};
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
if (preConfigArgs.subcommand === _constants.PLUGIN_TYPE) {
|
|
238
|
+
await (0, _extension.runExtensionCommand)(extensionCommandArgs, pluginConfig);
|
|
239
|
+
return {};
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
return {};
|
|
255
243
|
}
|
|
256
244
|
}
|
|
257
245
|
|
|
@@ -343,4 +331,4 @@ async function main(args) {
|
|
|
343
331
|
if (require.main === module) {
|
|
344
332
|
(0, _asyncbox.asyncify)(main);
|
|
345
333
|
}
|
|
346
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvbHZlQXBwaXVtSG9tZSIsImhhc0FwcGl1bURlcGVuZGVuY3kiLCJlbnYiLCJwcmVmbGlnaHRDaGVja3MiLCJhcmdzIiwidGhyb3dJbnN0ZWFkT2ZFeGl0IiwiY2hlY2tOb2RlT2siLCJsb25nU3RhY2t0cmFjZSIsInJlcXVpcmUiLCJhc3luY190cmFjZV9saW1pdCIsInNob3dCdWlsZEluZm8iLCJwcm9jZXNzIiwiZXhpdCIsIndhcm5Ob2RlRGVwcmVjYXRpb25zIiwidmFsaWRhdGUiLCJ0bXBEaXIiLCJ2YWxpZGF0ZVRtcERpciIsImVyciIsImxvZ2dlciIsImVycm9yIiwibWVzc2FnZSIsInJlZCIsImxvZ05vbkRlZmF1bHRBcmdzV2FybmluZyIsImluZm8iLCJpbnNwZWN0IiwibG9nRGVmYXVsdENhcGFiaWxpdGllc1dhcm5pbmciLCJjYXBzIiwibG9nU3RhcnR1cEluZm8iLCJ3ZWxjb21lIiwiQVBQSVVNX1ZFUiIsImFwcGl1bVJldiIsImdldEdpdFJldiIsInNob3dBcmdzIiwiZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MiLCJfIiwic2l6ZSIsImlzRW1wdHkiLCJkZWZhdWx0Q2FwYWJpbGl0aWVzIiwibG9nU2VydmVyUG9ydCIsImFkZHJlc3MiLCJwb3J0IiwibG9nTWVzc2FnZSIsImdldFNlcnZlclVwZGF0ZXJzIiwiZHJpdmVyQ2xhc3NlcyIsInBsdWdpbkNsYXNzZXMiLCJjb21wYWN0IiwibWFwIiwia2V5cyIsImdldEV4dHJhTWV0aG9kTWFwIiwicmVkdWNlIiwia2xhc3MiLCJuZXdNZXRob2RNYXAiLCJhcmVTZXJ2ZXJDb21tYW5kQXJncyIsInN1YmNvbW1hbmQiLCJTRVJWRVJfU1VCQ09NTUFORCIsImluaXQiLCJhcHBpdW1Ib21lIiwiZnMiLCJta2RpcnAiLCJwYXRoIiwiam9pbiIsInN5bWxpbmsiLCJyb290RGlyIiwiY29kZSIsIkVycm9yIiwiZHJpdmVyQ29uZmlnIiwicGx1Z2luQ29uZmlnIiwibG9hZEV4dGVuc2lvbnMiLCJwYXJzZXIiLCJnZXRQYXJzZXIiLCJwcmVDb25maWdBcmdzIiwicGFyc2VBcmdzIiwiY29uZmlnUmVzdWx0IiwicmVhZENvbmZpZ0ZpbGUiLCJjb25maWdGaWxlIiwiZXJyb3JzIiwiZmlsZXBhdGgiLCJyZWFzb24iLCJEUklWRVJfVFlQRSIsInJ1bkV4dGVuc2lvbkNvbW1hbmQiLCJQTFVHSU5fVFlQRSIsImRlZmF1bHRzIiwiZ2V0RGVmYXVsdHNGb3JTY2hlbWEiLCJzZXJ2ZXJBcmdzIiwiZGVmYXVsdHNEZWVwIiwiY29uZmlnIiwic2VydmVyIiwic2hvd0NvbmZpZyIsImxvZ3NpbmtJbml0IiwibG9nRmlsdGVycyIsImlzc3VlcyIsInJ1bGVzIiwibG9nRmFjdG9yeSIsImxvYWRTZWN1cmVWYWx1ZXNQcmVwcm9jZXNzaW5nUnVsZXMiLCJKU09OIiwic3RyaW5naWZ5Iiwid2FybiIsInV0aWwiLCJwbHVyYWxpemUiLCJsZW5ndGgiLCJhcHBpdW1Ecml2ZXIiLCJBcHBpdW1Ecml2ZXIiLCJwYXJzZWRBcmdzIiwibWFpbiIsImdldEFjdGl2ZVBsdWdpbnMiLCJ1c2VQbHVnaW5zIiwicm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIiwibWFrZVJvdXRlciIsImdldEFjdGl2ZURyaXZlcnMiLCJ1c2VEcml2ZXJzIiwic2VydmVyVXBkYXRlcnMiLCJleHRyYU1ldGhvZE1hcCIsInNlcnZlck9wdHMiLCJob3N0bmFtZSIsImFsbG93Q29ycyIsImJhc2VQYXRoIiwia2VlcEFsaXZlVGltZW91dCIsImJhc2VTZXJ2ZXIiLCJkZWJ1ZyIsInN0YWNrIiwibm9kZWNvbmZpZyIsInJlZ2lzdGVyTm9kZSIsImNsb3NlIiwic2lnbmFsIiwib25jZSIsIm9uU2lnbmFsIiwiZGVsZXRlQWxsU2Vzc2lvbnMiLCJmb3JjZSIsImUiLCJwcmludCIsInZhbHVlcyIsIm1vZHVsZSIsImFzeW5jaWZ5Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL21haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5pbXBvcnQge2luaXQgYXMgbG9nc2lua0luaXR9IGZyb20gJy4vbG9nc2luayc7IC8vIHRoaXMgaW1wb3J0IG5lZWRzIHRvIGNvbWUgZmlyc3Qgc2luY2UgaXQgc2V0cyB1cCBnbG9iYWwgbnBtbG9nXG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJzsgLy8gbG9nZ2VyIG5lZWRzIHRvIHJlbWFpbiBzZWNvbmRcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7cm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIGFzIG1ha2VSb3V0ZXIsIHNlcnZlciBhcyBiYXNlU2VydmVyfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCB7bG9nZ2VyIGFzIGxvZ0ZhY3RvcnksIHV0aWwsIGVudiwgZnN9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQge2FzeW5jaWZ5fSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtBcHBpdW1Ecml2ZXJ9IGZyb20gJy4vYXBwaXVtJztcbmltcG9ydCB7cnVuRXh0ZW5zaW9uQ29tbWFuZH0gZnJvbSAnLi9jbGkvZXh0ZW5zaW9uJztcbmltcG9ydCB7Z2V0UGFyc2VyfSBmcm9tICcuL2NsaS9wYXJzZXInO1xuaW1wb3J0IHtcbiAgQVBQSVVNX1ZFUixcbiAgY2hlY2tOb2RlT2ssXG4gIGdldEdpdFJldixcbiAgZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MsXG4gIHJvb3REaXIsXG4gIHNob3dDb25maWcsXG4gIHNob3dCdWlsZEluZm8sXG4gIHZhbGlkYXRlVG1wRGlyLFxuICB3YXJuTm9kZURlcHJlY2F0aW9ucyxcbn0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtyZWFkQ29uZmlnRmlsZX0gZnJvbSAnLi9jb25maWctZmlsZSc7XG5pbXBvcnQge2xvYWRFeHRlbnNpb25zLCBnZXRBY3RpdmVQbHVnaW5zLCBnZXRBY3RpdmVEcml2ZXJzfSBmcm9tICcuL2V4dGVuc2lvbic7XG5pbXBvcnQge0RSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSwgU0VSVkVSX1NVQkNPTU1BTkR9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCByZWdpc3Rlck5vZGUgZnJvbSAnLi9ncmlkLXJlZ2lzdGVyJztcbmltcG9ydCB7Z2V0RGVmYXVsdHNGb3JTY2hlbWEsIHZhbGlkYXRlfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuaW1wb3J0IHtpbnNwZWN0fSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCB7cmVzb2x2ZUFwcGl1bUhvbWUsIGhhc0FwcGl1bURlcGVuZGVuY3l9ID0gZW52O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0ge1BhcnNlZEFyZ3N9IGFyZ3NcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3Rocm93SW5zdGVhZE9mRXhpdF1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcHJlZmxpZ2h0Q2hlY2tzKGFyZ3MsIHRocm93SW5zdGVhZE9mRXhpdCA9IGZhbHNlKSB7XG4gIHRyeSB7XG4gICAgY2hlY2tOb2RlT2soKTtcbiAgICBpZiAoYXJncy5sb25nU3RhY2t0cmFjZSkge1xuICAgICAgcmVxdWlyZSgnbG9uZ2pvaG4nKS5hc3luY190cmFjZV9saW1pdCA9IC0xO1xuICAgIH1cbiAgICBpZiAoYXJncy5zaG93QnVpbGRJbmZvKSB7XG4gICAgICBhd2FpdCBzaG93QnVpbGRJbmZvKCk7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfVxuICAgIHdhcm5Ob2RlRGVwcmVjYXRpb25zKCk7XG5cbiAgICB2YWxpZGF0ZShhcmdzKTtcblxuICAgIGlmIChhcmdzLnRtcERpcikge1xuICAgICAgYXdhaXQgdmFsaWRhdGVUbXBEaXIoYXJncy50bXBEaXIpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmVycm9yKGVyci5tZXNzYWdlLnJlZCk7XG4gICAgaWYgKHRocm93SW5zdGVhZE9mRXhpdCkge1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7QXJnc30gYXJnc1xuICovXG5mdW5jdGlvbiBsb2dOb25EZWZhdWx0QXJnc1dhcm5pbmcoYXJncykge1xuICBsb2dnZXIuaW5mbygnTm9uLWRlZmF1bHQgc2VydmVyIGFyZ3M6Jyk7XG4gIGluc3BlY3QoYXJncyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtBcmdzWydkZWZhdWx0Q2FwYWJpbGl0aWVzJ119IGNhcHNcbiAqL1xuZnVuY3Rpb24gbG9nRGVmYXVsdENhcGFiaWxpdGllc1dhcm5pbmcoY2Fwcykge1xuICBsb2dnZXIuaW5mbyhcbiAgICAnRGVmYXVsdCBjYXBhYmlsaXRpZXMsIHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gZWFjaCByZXF1ZXN0ICcgK1xuICAgICAgJ3VubGVzcyBvdmVycmlkZGVuIGJ5IGRlc2lyZWQgY2FwYWJpbGl0aWVzOidcbiAgKTtcbiAgaW5zcGVjdChjYXBzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1BhcnNlZEFyZ3N9IGFyZ3NcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9nU3RhcnR1cEluZm8oYXJncykge1xuICBsZXQgd2VsY29tZSA9IGBXZWxjb21lIHRvIEFwcGl1bSB2JHtBUFBJVU1fVkVSfWA7XG4gIGxldCBhcHBpdW1SZXYgPSBhd2FpdCBnZXRHaXRSZXYoKTtcbiAgaWYgKGFwcGl1bVJldikge1xuICAgIHdlbGNvbWUgKz0gYCAoUkVWICR7YXBwaXVtUmV2fSlgO1xuICB9XG4gIGxvZ2dlci5pbmZvKHdlbGNvbWUpO1xuXG4gIGxldCBzaG93QXJncyA9IGdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzKGFyZ3MpO1xuICBpZiAoXy5zaXplKHNob3dBcmdzKSkge1xuICAgIGxvZ05vbkRlZmF1bHRBcmdzV2FybmluZyhzaG93QXJncyk7XG4gIH1cbiAgaWYgKCFfLmlzRW1wdHkoYXJncy5kZWZhdWx0Q2FwYWJpbGl0aWVzKSkge1xuICAgIGxvZ0RlZmF1bHRDYXBhYmlsaXRpZXNXYXJuaW5nKGFyZ3MuZGVmYXVsdENhcGFiaWxpdGllcyk7XG4gIH1cbiAgLy8gVE9ETzogYnJpbmcgYmFjayBsb2dsZXZlbCByZXBvcnRpbmcgYmVsb3cgb25jZSBsb2dnZXIgaXMgZmx1c2hlZCBvdXRcbiAgLy8gbG9nZ2VyLmluZm8oJ0NvbnNvbGUgTG9nTGV2ZWw6ICcgKyBsb2dnZXIudHJhbnNwb3J0cy5jb25zb2xlLmxldmVsKTtcbiAgLy8gaWYgKGxvZ2dlci50cmFuc3BvcnRzLmZpbGUpIHtcbiAgLy8gICBsb2dnZXIuaW5mbygnRmlsZSBMb2dMZXZlbDogJyArIGxvZ2dlci50cmFuc3BvcnRzLmZpbGUubGV2ZWwpO1xuICAvLyB9XG59XG5cbi8qKlxuICogTG9ncyB0aGUgYWRkcmVzcyBhbmQgcG9ydCB0aGUgc2VydmVyIGlzIGxpc3RlbmluZyBvblxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBBZGRyZXNzXG4gKiBAcGFyYW0ge251bWJlcn0gcG9ydCAtIFBvcnRcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBsb2dTZXJ2ZXJQb3J0KGFkZHJlc3MsIHBvcnQpIHtcbiAgbGV0IGxvZ01lc3NhZ2UgPSBgQXBwaXVtIFJFU1QgaHR0cCBpbnRlcmZhY2UgbGlzdGVuZXIgc3RhcnRlZCBvbiBgICsgYCR7YWRkcmVzc306JHtwb3J0fWA7XG4gIGxvZ2dlci5pbmZvKGxvZ01lc3NhZ2UpO1xufVxuXG4vKipcbiAqIEdldHMgYSBsaXN0IG9mIGB1cGRhdGVTZXJ2ZXJgIGZ1bmN0aW9ucyBmcm9tIGFsbCBleHRlbnNpb25zXG4gKiBAcGFyYW0ge0RyaXZlck5hbWVNYXB9IGRyaXZlckNsYXNzZXNcbiAqIEBwYXJhbSB7UGx1Z2luTmFtZU1hcH0gcGx1Z2luQ2xhc3Nlc1xuICogQHJldHVybnMge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlVwZGF0ZVNlcnZlckNhbGxiYWNrW119XG4gKi9cbmZ1bmN0aW9uIGdldFNlcnZlclVwZGF0ZXJzKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpIHtcbiAgcmV0dXJuIF8uY29tcGFjdChfLm1hcChbLi4uZHJpdmVyQ2xhc3Nlcy5rZXlzKCksIC4uLnBsdWdpbkNsYXNzZXMua2V5cygpXSwgJ3VwZGF0ZVNlcnZlcicpKTtcbn1cblxuLyoqXG4gKiBNYWtlcyBhIGJpZyBgTWV0aG9kTWFwYCBmcm9tIGFsbCB0aGUgbGl0dGxlIGBNZXRob2RNYXBgcyBpbiB0aGUgZXh0ZW5zaW9uc1xuICogQHBhcmFtIHtEcml2ZXJOYW1lTWFwfSBkcml2ZXJDbGFzc2VzXG4gKiBAcGFyYW0ge1BsdWdpbk5hbWVNYXB9IHBsdWdpbkNsYXNzZXNcbiAqIEByZXR1cm5zIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5NZXRob2RNYXB9XG4gKi9cbmZ1bmN0aW9uIGdldEV4dHJhTWV0aG9kTWFwKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpIHtcbiAgcmV0dXJuIFsuLi5kcml2ZXJDbGFzc2VzLmtleXMoKSwgLi4ucGx1Z2luQ2xhc3Nlcy5rZXlzKCldLnJlZHVjZShcbiAgICAobWFwLCBrbGFzcykgPT4gKHtcbiAgICAgIC4uLm1hcCxcbiAgICAgIC4uLihrbGFzcy5uZXdNZXRob2RNYXAgPz8ge30pLFxuICAgIH0pLFxuICAgIHt9XG4gICk7XG59XG5cbi8qKlxuICogQHRlbXBsYXRlIFtUPVdpdGhTZXJ2ZXJTdWJjb21tYW5kXVxuICogQHBhcmFtIHtBcmdzPFQ+fSBhcmdzXG4gKiBAcmV0dXJucyB7YXJncyBpcyBBcmdzPFdpdGhTZXJ2ZXJTdWJjb21tYW5kPn1cbiAqL1xuZnVuY3Rpb24gYXJlU2VydmVyQ29tbWFuZEFyZ3MoYXJncykge1xuICByZXR1cm4gYXJncy5zdWJjb21tYW5kID09PSBTRVJWRVJfU1VCQ09NTUFORDtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyBBcHBpdW0sIGJ1dCBkb2VzIG5vdCBzdGFydCB0aGUgc2VydmVyLlxuICpcbiAqIFVzZSB0aGlzIHRvIGdldCBhdCB0aGUgY29uZmlndXJhdGlvbiBzY2hlbWEuXG4gKlxuICogSWYgYGFyZ3NgIGNvbnRhaW5zIGEgbm9uLWVtcHR5IGBzdWJjb21tYW5kYCB3aGljaCBpcyBub3QgYHNlcnZlcmAsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LlxuICpcbiAqIEB0ZW1wbGF0ZSBbVD1XaXRoU2VydmVyU3ViY29tbWFuZF1cbiAqIEBwYXJhbSB7QXJnczxUPn0gW2FyZ3NdIC0gUGFydGlhbCBhcmdzIChwcm9nYW1tYXRpYyB1c2FnZSBvbmx5KVxuICogQHJldHVybnMge1Byb21pc2U8U2VydmVySW5pdFJlc3VsdCB8IEV4dENvbW1hbmRJbml0UmVzdWx0Pn1cbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQge2luaXQsIGdldFNjaGVtYX0gZnJvbSAnYXBwaXVtJztcbiAqIGNvbnN0IG9wdGlvbnMgPSB7fTsgLy8gY29uZmlnIG9iamVjdFxuICogYXdhaXQgaW5pdChvcHRpb25zKTtcbiAqIGNvbnN0IHNjaGVtYSA9IGdldFNjaGVtYSgpOyAvLyBlbnRpcmUgY29uZmlnIHNjaGVtYSBpbmNsdWRpbmcgcGx1Z2lucyBhbmQgZHJpdmVyc1xuICovXG5hc3luYyBmdW5jdGlvbiBpbml0KGFyZ3MpIHtcbiAgY29uc3QgYXBwaXVtSG9tZSA9IGFyZ3M/LmFwcGl1bUhvbWUgPz8gKGF3YWl0IHJlc29sdmVBcHBpdW1Ib21lKCkpO1xuXG4gIC8vIHRoaXMgaXMgaGVyZSBzbyBleHRlbnNpb25zIGluc3RhbGxlZCBpbiBlLmcuLCBgfi8uYXBwaXVtYCBjYW4gZmluZCB0aGUgcGVlciBkZXBlbmRlbmN5XG4gIC8vIG9mIGBhcHBpdW1gLCB3aGljaCBsaXZlcyB3aGVyZXZlciBpdCBsaXZlcyAoc2VlIGByb290RGlyYCkuXG4gIGlmICghKGF3YWl0IGhhc0FwcGl1bURlcGVuZGVuY3koYXBwaXVtSG9tZSkpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZzLm1rZGlycChwYXRoLmpvaW4oYXBwaXVtSG9tZSwgJ25vZGVfbW9kdWxlcycpKTtcbiAgICAgIGF3YWl0IGZzLnN5bWxpbmsocm9vdERpciwgcGF0aC5qb2luKGFwcGl1bUhvbWUsICdub2RlX21vZHVsZXMnLCAnYXBwaXVtJyksICdqdW5jdGlvbicpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyci5jb2RlICE9PSAnRUVYSVNUJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBjcmVhdGUgc3ltbGluayB0byBhcHBpdW06ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qge2RyaXZlckNvbmZpZywgcGx1Z2luQ29uZmlnfSA9IGF3YWl0IGxvYWRFeHRlbnNpb25zKGFwcGl1bUhvbWUpO1xuXG4gIGNvbnN0IHBhcnNlciA9IGdldFBhcnNlcigpO1xuICBsZXQgdGhyb3dJbnN0ZWFkT2ZFeGl0ID0gZmFsc2U7XG4gIC8qKiBAdHlwZSB7QXJnczxUPn0gKi9cbiAgbGV0IHByZUNvbmZpZ0FyZ3M7XG5cbiAgaWYgKGFyZ3MpIHtcbiAgICAvLyBpZiB3ZSBoYXZlIGEgY29udGFpbmluZyBwYWNrYWdlIGluc3RlYWQgb2YgcnVubmluZyBhcyBhIENMSSBwcm9jZXNzLFxuICAgIC8vIHRoYXQgcGFja2FnZSBtaWdodCBub3QgYXBwcmVjaWF0ZSB1cyBjYWxsaW5nICdwcm9jZXNzLmV4aXQnIHdpbGx5LVxuICAgIC8vIG5pbGx5LCBzbyBnaXZlIGl0IHRoZSBvcHRpb24gdG8gaGF2ZSB1cyB0aHJvdyBpbnN0ZWFkIG9mIGV4aXRcbiAgICBpZiAoYXJncy50aHJvd0luc3RlYWRPZkV4aXQpIHtcbiAgICAgIHRocm93SW5zdGVhZE9mRXhpdCA9IHRydWU7XG4gICAgICAvLyBidXQgcmVtb3ZlIGl0IHNpbmNlIGl0J3Mgbm90IGEgcmVhbCBzZXJ2ZXIgYXJnIHBlciBzZVxuICAgICAgZGVsZXRlIGFyZ3MudGhyb3dJbnN0ZWFkT2ZFeGl0O1xuICAgIH1cbiAgICBwcmVDb25maWdBcmdzID0gey4uLmFyZ3MsIHN1YmNvbW1hbmQ6IGFyZ3Muc3ViY29tbWFuZCA/PyBTRVJWRVJfU1VCQ09NTUFORH07XG4gIH0gZWxzZSB7XG4gICAgLy8gb3RoZXJ3aXNlIHBhcnNlIGZyb20gQ0xJXG4gICAgcHJlQ29uZmlnQXJncyA9IC8qKiBAdHlwZSB7QXJnczxUPn0gKi8gKHBhcnNlci5wYXJzZUFyZ3MoKSk7XG4gIH1cblxuICBjb25zdCBjb25maWdSZXN1bHQgPSBhd2FpdCByZWFkQ29uZmlnRmlsZShwcmVDb25maWdBcmdzLmNvbmZpZ0ZpbGUpO1xuXG4gIGlmICghXy5pc0VtcHR5KGNvbmZpZ1Jlc3VsdC5lcnJvcnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEVycm9ycyBpbiBjb25maWcgZmlsZSAke2NvbmZpZ1Jlc3VsdC5maWxlcGF0aH06XFxuICR7XG4gICAgICAgIGNvbmZpZ1Jlc3VsdC5yZWFzb24gPz8gY29uZmlnUmVzdWx0LmVycm9yc1xuICAgICAgfWBcbiAgICApO1xuICB9XG5cbiAgLy8gbWVyZ2UgY29uZmlnIGFuZCBhcHBseSBkZWZhdWx0cy5cbiAgLy8gdGhlIG9yZGVyIG9mIHByZWNlbmRlY2UgaXM6XG4gIC8vIDEuIGNvbW1hbmQgbGluZSBhcmdzXG4gIC8vIDIuIGNvbmZpZyBmaWxlXG4gIC8vIDMuIGRlZmF1bHRzIGZyb20gY29uZmlnIGZpbGUuXG4gIGlmICghYXJlU2VydmVyQ29tbWFuZEFyZ3MocHJlQ29uZmlnQXJncykpIHtcbiAgICAvLyBpZiB0aGUgdXNlciBoYXMgcmVxdWVzdGVkIHRoZSAnZHJpdmVyJyBDTEksIGRvbid0IHJ1biB0aGUgbm9ybWFsIHNlcnZlcixcbiAgICAvLyBidXQgaW5zdGVhZCBwYXNzIGNvbnRyb2wgdG8gdGhlIGRyaXZlciBDTElcbiAgICBpZiAocHJlQ29uZmlnQXJncy5zdWJjb21tYW5kID09PSBEUklWRVJfVFlQRSkge1xuICAgICAgYXdhaXQgcnVuRXh0ZW5zaW9uQ29tbWFuZChwcmVDb25maWdBcmdzLCBkcml2ZXJDb25maWcpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBpZiAocHJlQ29uZmlnQXJncy5zdWJjb21tYW5kID09PSBQTFVHSU5fVFlQRSkge1xuICAgICAgYXdhaXQgcnVuRXh0ZW5zaW9uQ29tbWFuZChwcmVDb25maWdBcmdzLCBwbHVnaW5Db25maWcpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB7fTsgLy8gc2hvdWxkIG5ldmVyIGhhcHBlblxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGRlZmF1bHRzID0gZ2V0RGVmYXVsdHNGb3JTY2hlbWEoZmFsc2UpO1xuXG4gICAgLyoqIEB0eXBlIHtQYXJzZWRBcmdzfSAqL1xuICAgIGNvbnN0IHNlcnZlckFyZ3MgPSBfLmRlZmF1bHRzRGVlcChwcmVDb25maWdBcmdzLCBjb25maWdSZXN1bHQuY29uZmlnPy5zZXJ2ZXIsIGRlZmF1bHRzKTtcblxuICAgIGlmIChwcmVDb25maWdBcmdzLnNob3dDb25maWcpIHtcbiAgICAgIHNob3dDb25maWcoZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MocHJlQ29uZmlnQXJncyksIGNvbmZpZ1Jlc3VsdCwgZGVmYXVsdHMsIHNlcnZlckFyZ3MpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGF3YWl0IGxvZ3NpbmtJbml0KHNlcnZlckFyZ3MpO1xuXG4gICAgaWYgKHNlcnZlckFyZ3MubG9nRmlsdGVycykge1xuICAgICAgY29uc3Qge2lzc3VlcywgcnVsZXN9ID0gYXdhaXQgbG9nRmFjdG9yeS5sb2FkU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc2luZ1J1bGVzKFxuICAgICAgICBzZXJ2ZXJBcmdzLmxvZ0ZpbHRlcnNcbiAgICAgICk7XG4gICAgICBpZiAoIV8uaXNFbXB0eShpc3N1ZXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGhlIGxvZyBmaWx0ZXJpbmcgcnVsZXMgY29uZmlnICcke3NlcnZlckFyZ3MubG9nRmlsdGVyc30nIGhhcyBpc3N1ZXM6IGAgK1xuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoaXNzdWVzLCBudWxsLCAyKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKF8uaXNFbXB0eShydWxlcykpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgICAgYEZvdW5kIG5vIGxvZyBmaWx0ZXJpbmcgcnVsZXMgaW4gJyR7c2VydmVyQXJncy5sb2dGaWx0ZXJzfScuIElzIHRoYXQgZXhwZWN0ZWQ/YFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgICAgYExvYWRlZCAke3V0aWwucGx1cmFsaXplKCdmaWx0ZXJpbmcgcnVsZScsIHJ1bGVzLmxlbmd0aCwgdHJ1ZSl9IGZyb20gJyR7XG4gICAgICAgICAgICBzZXJ2ZXJBcmdzLmxvZ0ZpbHRlcnNcbiAgICAgICAgICB9J2BcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhcHBpdW1Ecml2ZXIgPSBuZXcgQXBwaXVtRHJpdmVyKHNlcnZlckFyZ3MpO1xuICAgIC8vIHNldCB0aGUgY29uZmlnIG9uIHRoZSB1bWJyZWxsYSBkcml2ZXIgc28gaXQgY2FuIG1hdGNoIGRyaXZlcnMgdG8gY2Fwc1xuICAgIGFwcGl1bURyaXZlci5kcml2ZXJDb25maWcgPSBkcml2ZXJDb25maWc7XG4gICAgYXdhaXQgcHJlZmxpZ2h0Q2hlY2tzKHNlcnZlckFyZ3MsIHRocm93SW5zdGVhZE9mRXhpdCk7XG5cbiAgICByZXR1cm4gLyoqIEB0eXBlIHtTZXJ2ZXJJbml0UmVzdWx0fSAqLyAoe1xuICAgICAgYXBwaXVtRHJpdmVyLFxuICAgICAgcGFyc2VkQXJnczogc2VydmVyQXJncyxcbiAgICAgIGRyaXZlckNvbmZpZyxcbiAgICAgIHBsdWdpbkNvbmZpZyxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIEFwcGl1bSdzIGNvbmZpZy4gIFN0YXJ0cyBzZXJ2ZXIgaWYgYXBwcm9wcmlhdGUgYW5kIHJlc29sdmVzIHRoZVxuICogc2VydmVyIGluc3RhbmNlIGlmIHNvOyBvdGhlcndpc2UgcmVzb2x2ZXMgdy8gYHVuZGVmaW5lZGAuXG4gKiBAdGVtcGxhdGUgW1Q9V2l0aFNlcnZlclN1YmNvbW1hbmRdXG4gKiBAcGFyYW0ge0FyZ3M8VD59IFthcmdzXSAtIEFyZ3VtZW50cyBmcm9tIENMSSBvciBvdGhlcndpc2VcbiAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydCgnQGFwcGl1bS90eXBlcycpLkFwcGl1bVNlcnZlcnx1bmRlZmluZWQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBtYWluKGFyZ3MpIHtcbiAgY29uc3Qge2FwcGl1bURyaXZlciwgcGFyc2VkQXJncywgcGx1Z2luQ29uZmlnLCBkcml2ZXJDb25maWd9ID0gLyoqIEB0eXBlIHtTZXJ2ZXJJbml0UmVzdWx0fSAqLyAoXG4gICAgYXdhaXQgaW5pdChhcmdzKVxuICApO1xuXG4gIGlmICghYXBwaXVtRHJpdmVyIHx8ICFwYXJzZWRBcmdzIHx8ICFwbHVnaW5Db25maWcgfHwgIWRyaXZlckNvbmZpZykge1xuICAgIC8vIGlmIHRoaXMgYnJhbmNoIGlzIHRha2VuLCB3ZSd2ZSBydW4gYSBkaWZmZXJlbnQgc3ViY29tbWFuZCwgc28gdGhlcmUncyBub3RoaW5nXG4gICAgLy8gbGVmdCB0byBkbyBoZXJlLlxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBsdWdpbkNsYXNzZXMgPSBnZXRBY3RpdmVQbHVnaW5zKHBsdWdpbkNvbmZpZywgcGFyc2VkQXJncy51c2VQbHVnaW5zKTtcbiAgLy8gc2V0IHRoZSBhY3RpdmUgcGx1Z2lucyBvbiB0aGUgdW1icmVsbGEgZHJpdmVyIHNvIGl0IGNhbiB1c2UgdGhlbSBmb3IgY29tbWFuZHNcbiAgYXBwaXVtRHJpdmVyLnBsdWdpbkNsYXNzZXMgPSBwbHVnaW5DbGFzc2VzO1xuXG4gIGF3YWl0IGxvZ1N0YXJ0dXBJbmZvKHBhcnNlZEFyZ3MpO1xuICBsZXQgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uID0gbWFrZVJvdXRlcihhcHBpdW1Ecml2ZXIpO1xuXG4gIGNvbnN0IGRyaXZlckNsYXNzZXMgPSBnZXRBY3RpdmVEcml2ZXJzKGRyaXZlckNvbmZpZywgcGFyc2VkQXJncy51c2VEcml2ZXJzKTtcbiAgY29uc3Qgc2VydmVyVXBkYXRlcnMgPSBnZXRTZXJ2ZXJVcGRhdGVycyhkcml2ZXJDbGFzc2VzLCBwbHVnaW5DbGFzc2VzKTtcbiAgY29uc3QgZXh0cmFNZXRob2RNYXAgPSBnZXRFeHRyYU1ldGhvZE1hcChkcml2ZXJDbGFzc2VzLCBwbHVnaW5DbGFzc2VzKTtcblxuICBjb25zdCBzZXJ2ZXJPcHRzID0ge1xuICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbixcbiAgICBwb3J0OiBwYXJzZWRBcmdzLnBvcnQsXG4gICAgaG9zdG5hbWU6IHBhcnNlZEFyZ3MuYWRkcmVzcyxcbiAgICBhbGxvd0NvcnM6IHBhcnNlZEFyZ3MuYWxsb3dDb3JzLFxuICAgIGJhc2VQYXRoOiBwYXJzZWRBcmdzLmJhc2VQYXRoLFxuICAgIHNlcnZlclVwZGF0ZXJzLFxuICAgIGV4dHJhTWV0aG9kTWFwLFxuICB9O1xuICBpZiAocGFyc2VkQXJncy5rZWVwQWxpdmVUaW1lb3V0KSB7XG4gICAgc2VydmVyT3B0cy5rZWVwQWxpdmVUaW1lb3V0ID0gcGFyc2VkQXJncy5rZWVwQWxpdmVUaW1lb3V0ICogMTAwMDtcbiAgfVxuICBsZXQgc2VydmVyO1xuICB0cnkge1xuICAgIHNlcnZlciA9IGF3YWl0IGJhc2VTZXJ2ZXIoc2VydmVyT3B0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihcbiAgICAgIGBDb3VsZCBub3QgY29uZmlndXJlIEFwcGl1bSBzZXJ2ZXIuIEl0J3MgcG9zc2libGUgdGhhdCBhIGRyaXZlciBvciBwbHVnaW4gdHJpZWQgYCArXG4gICAgICAgIGB0byB1cGRhdGUgdGhlIHNlcnZlciBhbmQgZmFpbGVkLiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gXG4gICAgKTtcbiAgICBsb2dnZXIuZGVidWcoZXJyLnN0YWNrKTtcbiAgICByZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgaWYgKHBhcnNlZEFyZ3MuYWxsb3dDb3JzKSB7XG4gICAgbG9nZ2VyLndhcm4oXG4gICAgICAnWW91IGhhdmUgZW5hYmxlZCBDT1JTIHJlcXVlc3RzIGZyb20gYW55IGhvc3QuIEJlIGNhcmVmdWwgbm90ICcgK1xuICAgICAgICAndG8gdmlzaXQgc2l0ZXMgd2hpY2ggY291bGQgbWFsaWNpb3VzbHkgdHJ5IHRvIHN0YXJ0IEFwcGl1bSAnICtcbiAgICAgICAgJ3Nlc3Npb25zIG9uIHlvdXIgbWFjaGluZSdcbiAgICApO1xuICB9XG4gIGFwcGl1bURyaXZlci5zZXJ2ZXIgPSBzZXJ2ZXI7XG4gIHRyeSB7XG4gICAgLy8gY29uZmlndXJlIGFzIG5vZGUgb24gZ3JpZCwgaWYgbmVjZXNzYXJ5XG4gICAgLy8gZmFsc3kgdmFsdWVzIHNob3VsZCBub3QgY2F1c2UgdGhpcyB0byBydW5cbiAgICBpZiAocGFyc2VkQXJncy5ub2RlY29uZmlnKSB7XG4gICAgICBhd2FpdCByZWdpc3Rlck5vZGUoXG4gICAgICAgIHBhcnNlZEFyZ3Mubm9kZWNvbmZpZyxcbiAgICAgICAgcGFyc2VkQXJncy5hZGRyZXNzLFxuICAgICAgICBwYXJzZWRBcmdzLnBvcnQsXG4gICAgICAgIHBhcnNlZEFyZ3MuYmFzZVBhdGhcbiAgICAgICk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBhd2FpdCBzZXJ2ZXIuY2xvc2UoKTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cblxuICBmb3IgKGNvbnN0IHNpZ25hbCBvZiBbJ1NJR0lOVCcsICdTSUdURVJNJ10pIHtcbiAgICBwcm9jZXNzLm9uY2Uoc2lnbmFsLCBhc3luYyBmdW5jdGlvbiBvblNpZ25hbCgpIHtcbiAgICAgIGxvZ2dlci5pbmZvKGBSZWNlaXZlZCAke3NpZ25hbH0gLSBzaHV0dGluZyBkb3duYCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBhcHBpdW1Ecml2ZXIuZGVsZXRlQWxsU2Vzc2lvbnMoe1xuICAgICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgICAgIHJlYXNvbjogYFRoZSBwcm9jZXNzIGhhcyByZWNlaXZlZCAke3NpZ25hbH0gc2lnbmFsYCxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHNlcnZlci5jbG9zZSgpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKGUpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBsb2dTZXJ2ZXJQb3J0KHBhcnNlZEFyZ3MuYWRkcmVzcywgcGFyc2VkQXJncy5wb3J0KTtcbiAgZHJpdmVyQ29uZmlnLnByaW50KCk7XG4gIHBsdWdpbkNvbmZpZy5wcmludChbLi4ucGx1Z2luQ2xhc3Nlcy52YWx1ZXMoKV0pO1xuXG4gIHJldHVybiBzZXJ2ZXI7XG59XG5cbi8vIE5PVEU6IHRoaXMgaXMgaGVyZSBmb3IgYmFja3dhcmRzIGNvbXBhdCBmb3IgYW55IHNjcmlwdHMgcmVmZXJlbmNpbmcgYG1haW4uanNgIGRpcmVjdGx5XG4vLyAobW9yZSBzcGVjaWZpY2FsbHksIGBidWlsZC9saWIvbWFpbi5qc2ApXG4vLyB0aGUgZXhlY3V0YWJsZSBpcyBub3cgYC4uL2luZGV4LmpzYCwgc28gdGhhdCBtb2R1bGUgd2lsbCB0eXBpY2FsbHkgYmUgYHJlcXVpcmUubWFpbmAuXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgYXN5bmNpZnkobWFpbik7XG59XG5cbi8vIGV2ZXJ5dGhpbmcgYmVsb3cgaGVyZSBpcyBpbnRlbmRlZCB0byBiZSBhIHB1YmxpYyBBUEkuXG5leHBvcnQge3JlYWRDb25maWdGaWxlfSBmcm9tICcuL2NvbmZpZy1maWxlJztcbmV4cG9ydCB7ZmluYWxpemVTY2hlbWEsIGdldFNjaGVtYSwgdmFsaWRhdGV9IGZyb20gJy4vc2NoZW1hL3NjaGVtYSc7XG5leHBvcnQge21haW4sIGluaXQsIHJlc29sdmVBcHBpdW1Ib21lfTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuRHJpdmVyVHlwZX0gRHJpdmVyVHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlBsdWdpblR5cGV9IFBsdWdpblR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ecml2ZXJDbGFzc30gRHJpdmVyQ2xhc3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5QbHVnaW5DbGFzc30gUGx1Z2luQ2xhc3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLldpdGhTZXJ2ZXJTdWJjb21tYW5kfSBXaXRoU2VydmVyU3ViY29tbWFuZFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi9leHRlbnNpb24nKS5Ecml2ZXJOYW1lTWFwfSBEcml2ZXJOYW1lTWFwXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2V4dGVuc2lvbicpLlBsdWdpbk5hbWVNYXB9IFBsdWdpbk5hbWVNYXBcbiAqL1xuXG4vKipcbiAqIExpdGVyYWxseSBhbiBlbXB0eSBvYmplY3RcbiAqIEB0eXBlZGVmIHsge30gfSBFeHRDb21tYW5kSW5pdFJlc3VsdFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgU2VydmVySW5pdERhdGFcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCcuL2FwcGl1bScpLkFwcGl1bURyaXZlcn0gYXBwaXVtRHJpdmVyIC0gVGhlIEFwcGl1bSBkcml2ZXJcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5QYXJzZWRBcmdzfSBwYXJzZWRBcmdzIC0gVGhlIHBhcnNlZCBhcmd1bWVudHNcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtTZXJ2ZXJJbml0RGF0YSAmIGltcG9ydCgnLi9leHRlbnNpb24nKS5FeHRlbnNpb25Db25maWdzfSBTZXJ2ZXJJbml0UmVzdWx0XG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgW1Q9V2l0aFNlcnZlclN1YmNvbW1hbmRdXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5BcmdzPFQ+fSBBcmdzXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgW1Q9V2l0aFNlcnZlclN1YmNvbW1hbmRdXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5QYXJzZWRBcmdzPFQ+fSBQYXJzZWRBcmdzXG4gKi9cbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBV0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTTtFQUFDQSxpQkFBRDtFQUFvQkM7QUFBcEIsSUFBMkNDLFlBQWpEOzs7QUFPQSxlQUFlQyxlQUFmLENBQStCQyxJQUEvQixFQUFxQ0Msa0JBQWtCLEdBQUcsS0FBMUQsRUFBaUU7RUFDL0QsSUFBSTtJQUNGLElBQUFDLG1CQUFBOztJQUNBLElBQUlGLElBQUksQ0FBQ0csY0FBVCxFQUF5QjtNQUN2QkMsT0FBTyxDQUFDLFVBQUQsQ0FBUCxDQUFvQkMsaUJBQXBCLEdBQXdDLENBQUMsQ0FBekM7SUFDRDs7SUFDRCxJQUFJTCxJQUFJLENBQUNNLGFBQVQsRUFBd0I7TUFDdEIsTUFBTSxJQUFBQSxxQkFBQSxHQUFOO01BQ0FDLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLENBQWI7SUFDRDs7SUFDRCxJQUFBQyw0QkFBQTtJQUVBLElBQUFDLGdCQUFBLEVBQVNWLElBQVQ7O0lBRUEsSUFBSUEsSUFBSSxDQUFDVyxNQUFULEVBQWlCO01BQ2YsTUFBTSxJQUFBQyxzQkFBQSxFQUFlWixJQUFJLENBQUNXLE1BQXBCLENBQU47SUFDRDtFQUNGLENBaEJELENBZ0JFLE9BQU9FLEdBQVAsRUFBWTtJQUNaQyxlQUFBLENBQU9DLEtBQVAsQ0FBYUYs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
|
|
334
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvbHZlQXBwaXVtSG9tZSIsImVudiIsInByZWZsaWdodENoZWNrcyIsImFyZ3MiLCJ0aHJvd0luc3RlYWRPZkV4aXQiLCJjaGVja05vZGVPayIsImNoZWNrTnBtT2siLCJsb25nU3RhY2t0cmFjZSIsInJlcXVpcmUiLCJhc3luY190cmFjZV9saW1pdCIsInNob3dCdWlsZEluZm8iLCJwcm9jZXNzIiwiZXhpdCIsIndhcm5Ob2RlRGVwcmVjYXRpb25zIiwidmFsaWRhdGUiLCJ0bXBEaXIiLCJ2YWxpZGF0ZVRtcERpciIsImVyciIsImxvZ2dlciIsImVycm9yIiwibWVzc2FnZSIsInJlZCIsImxvZ05vbkRlZmF1bHRBcmdzV2FybmluZyIsImluZm8iLCJpbnNwZWN0IiwibG9nRGVmYXVsdENhcGFiaWxpdGllc1dhcm5pbmciLCJjYXBzIiwibG9nU3RhcnR1cEluZm8iLCJ3ZWxjb21lIiwiQVBQSVVNX1ZFUiIsImFwcGl1bVJldiIsImdldEdpdFJldiIsInNob3dBcmdzIiwiZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MiLCJfIiwic2l6ZSIsImlzRW1wdHkiLCJkZWZhdWx0Q2FwYWJpbGl0aWVzIiwibG9nU2VydmVyUG9ydCIsImFkZHJlc3MiLCJwb3J0IiwibG9nTWVzc2FnZSIsImdldFNlcnZlclVwZGF0ZXJzIiwiZHJpdmVyQ2xhc3NlcyIsInBsdWdpbkNsYXNzZXMiLCJjb21wYWN0IiwibWFwIiwia2V5cyIsImdldEV4dHJhTWV0aG9kTWFwIiwicmVkdWNlIiwia2xhc3MiLCJuZXdNZXRob2RNYXAiLCJhcmVTZXJ2ZXJDb21tYW5kQXJncyIsInN1YmNvbW1hbmQiLCJTRVJWRVJfU1VCQ09NTUFORCIsImluaXQiLCJhcHBpdW1Ib21lIiwiZHJpdmVyQ29uZmlnIiwicGx1Z2luQ29uZmlnIiwibG9hZEV4dGVuc2lvbnMiLCJwYXJzZXIiLCJnZXRQYXJzZXIiLCJwcmVDb25maWdBcmdzIiwicGFyc2VBcmdzIiwiY29uZmlnUmVzdWx0IiwicmVhZENvbmZpZ0ZpbGUiLCJjb25maWdGaWxlIiwiZXJyb3JzIiwiRXJyb3IiLCJmaWxlcGF0aCIsInJlYXNvbiIsImRlZmF1bHRzIiwiZ2V0RGVmYXVsdHNGb3JTY2hlbWEiLCJzZXJ2ZXJBcmdzIiwiZGVmYXVsdHNEZWVwIiwiY29uZmlnIiwic2VydmVyIiwic2hvd0NvbmZpZyIsImxvZ3NpbmtJbml0IiwibG9nRmlsdGVycyIsImlzc3VlcyIsInJ1bGVzIiwibG9nRmFjdG9yeSIsImxvYWRTZWN1cmVWYWx1ZXNQcmVwcm9jZXNzaW5nUnVsZXMiLCJKU09OIiwic3RyaW5naWZ5Iiwid2FybiIsInV0aWwiLCJwbHVyYWxpemUiLCJsZW5ndGgiLCJhcHBpdW1Ecml2ZXIiLCJBcHBpdW1Ecml2ZXIiLCJwYXJzZWRBcmdzIiwiZXh0ZW5zaW9uQ29tbWFuZEFyZ3MiLCJEUklWRVJfVFlQRSIsInJ1bkV4dGVuc2lvbkNvbW1hbmQiLCJQTFVHSU5fVFlQRSIsIm1haW4iLCJnZXRBY3RpdmVQbHVnaW5zIiwidXNlUGx1Z2lucyIsInJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiIsIm1ha2VSb3V0ZXIiLCJnZXRBY3RpdmVEcml2ZXJzIiwidXNlRHJpdmVycyIsInNlcnZlclVwZGF0ZXJzIiwiZXh0cmFNZXRob2RNYXAiLCJzZXJ2ZXJPcHRzIiwiaG9zdG5hbWUiLCJhbGxvd0NvcnMiLCJiYXNlUGF0aCIsImtlZXBBbGl2ZVRpbWVvdXQiLCJiYXNlU2VydmVyIiwiZGVidWciLCJzdGFjayIsIm5vZGVjb25maWciLCJyZWdpc3Rlck5vZGUiLCJjbG9zZSIsInNpZ25hbCIsIm9uY2UiLCJvblNpZ25hbCIsImRlbGV0ZUFsbFNlc3Npb25zIiwiZm9yY2UiLCJlIiwicHJpbnQiLCJ2YWx1ZXMiLCJtb2R1bGUiLCJhc3luY2lmeSJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IHtpbml0IGFzIGxvZ3NpbmtJbml0fSBmcm9tICcuL2xvZ3NpbmsnOyAvLyB0aGlzIGltcG9ydCBuZWVkcyB0byBjb21lIGZpcnN0IHNpbmNlIGl0IHNldHMgdXAgZ2xvYmFsIG5wbWxvZ1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7IC8vIGxvZ2dlciBuZWVkcyB0byByZW1haW4gc2Vjb25kXG4vLyBAdHMtaWdub3JlXG5pbXBvcnQge3JvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiBhcyBtYWtlUm91dGVyLCBzZXJ2ZXIgYXMgYmFzZVNlcnZlcn0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQge2xvZ2dlciBhcyBsb2dGYWN0b3J5LCB1dGlsLCBlbnZ9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQge2FzeW5jaWZ5fSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtBcHBpdW1Ecml2ZXJ9IGZyb20gJy4vYXBwaXVtJztcbmltcG9ydCB7cnVuRXh0ZW5zaW9uQ29tbWFuZH0gZnJvbSAnLi9jbGkvZXh0ZW5zaW9uJztcbmltcG9ydCB7Z2V0UGFyc2VyfSBmcm9tICcuL2NsaS9wYXJzZXInO1xuaW1wb3J0IHtcbiAgQVBQSVVNX1ZFUixcbiAgY2hlY2tOb2RlT2ssXG4gIGdldEdpdFJldixcbiAgZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MsXG4gIHNob3dDb25maWcsXG4gIHNob3dCdWlsZEluZm8sXG4gIHZhbGlkYXRlVG1wRGlyLFxuICB3YXJuTm9kZURlcHJlY2F0aW9ucyxcbiAgY2hlY2tOcG1Payxcbn0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtyZWFkQ29uZmlnRmlsZX0gZnJvbSAnLi9jb25maWctZmlsZSc7XG5pbXBvcnQge2xvYWRFeHRlbnNpb25zLCBnZXRBY3RpdmVQbHVnaW5zLCBnZXRBY3RpdmVEcml2ZXJzfSBmcm9tICcuL2V4dGVuc2lvbic7XG5pbXBvcnQge0RSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSwgU0VSVkVSX1NVQkNPTU1BTkR9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCByZWdpc3Rlck5vZGUgZnJvbSAnLi9ncmlkLXJlZ2lzdGVyJztcbmltcG9ydCB7Z2V0RGVmYXVsdHNGb3JTY2hlbWEsIHZhbGlkYXRlfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuaW1wb3J0IHtpbnNwZWN0fSBmcm9tICcuL3V0aWxzJztcblxuY29uc3Qge3Jlc29sdmVBcHBpdW1Ib21lfSA9IGVudjtcblxuLyoqXG4gKlxuICogQHBhcmFtIHtQYXJzZWRBcmdzfSBhcmdzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFt0aHJvd0luc3RlYWRPZkV4aXRdXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHByZWZsaWdodENoZWNrcyhhcmdzLCB0aHJvd0luc3RlYWRPZkV4aXQgPSBmYWxzZSkge1xuICB0cnkge1xuICAgIGNoZWNrTm9kZU9rKCk7XG4gICAgYXdhaXQgY2hlY2tOcG1PaygpO1xuICAgIGlmIChhcmdzLmxvbmdTdGFja3RyYWNlKSB7XG4gICAgICByZXF1aXJlKCdsb25nam9obicpLmFzeW5jX3RyYWNlX2xpbWl0ID0gLTE7XG4gICAgfVxuICAgIGlmIChhcmdzLnNob3dCdWlsZEluZm8pIHtcbiAgICAgIGF3YWl0IHNob3dCdWlsZEluZm8oKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9XG4gICAgd2Fybk5vZGVEZXByZWNhdGlvbnMoKTtcblxuICAgIHZhbGlkYXRlKGFyZ3MpO1xuXG4gICAgaWYgKGFyZ3MudG1wRGlyKSB7XG4gICAgICBhd2FpdCB2YWxpZGF0ZVRtcERpcihhcmdzLnRtcERpcik7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIuZXJyb3IoZXJyLm1lc3NhZ2UucmVkKTtcbiAgICBpZiAodGhyb3dJbnN0ZWFkT2ZFeGl0KSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtBcmdzfSBhcmdzXG4gKi9cbmZ1bmN0aW9uIGxvZ05vbkRlZmF1bHRBcmdzV2FybmluZyhhcmdzKSB7XG4gIGxvZ2dlci5pbmZvKCdOb24tZGVmYXVsdCBzZXJ2ZXIgYXJnczonKTtcbiAgaW5zcGVjdChhcmdzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0FyZ3NbJ2RlZmF1bHRDYXBhYmlsaXRpZXMnXX0gY2Fwc1xuICovXG5mdW5jdGlvbiBsb2dEZWZhdWx0Q2FwYWJpbGl0aWVzV2FybmluZyhjYXBzKSB7XG4gIGxvZ2dlci5pbmZvKFxuICAgICdEZWZhdWx0IGNhcGFiaWxpdGllcywgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byBlYWNoIHJlcXVlc3QgJyArXG4gICAgICAndW5sZXNzIG92ZXJyaWRkZW4gYnkgZGVzaXJlZCBjYXBhYmlsaXRpZXM6J1xuICApO1xuICBpbnNwZWN0KGNhcHMpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UGFyc2VkQXJnc30gYXJnc1xuICovXG5hc3luYyBmdW5jdGlvbiBsb2dTdGFydHVwSW5mbyhhcmdzKSB7XG4gIGxldCB3ZWxjb21lID0gYFdlbGNvbWUgdG8gQXBwaXVtIHYke0FQUElVTV9WRVJ9YDtcbiAgbGV0IGFwcGl1bVJldiA9IGF3YWl0IGdldEdpdFJldigpO1xuICBpZiAoYXBwaXVtUmV2KSB7XG4gICAgd2VsY29tZSArPSBgIChSRVYgJHthcHBpdW1SZXZ9KWA7XG4gIH1cbiAgbG9nZ2VyLmluZm8od2VsY29tZSk7XG5cbiAgbGV0IHNob3dBcmdzID0gZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MoYXJncyk7XG4gIGlmIChfLnNpemUoc2hvd0FyZ3MpKSB7XG4gICAgbG9nTm9uRGVmYXVsdEFyZ3NXYXJuaW5nKHNob3dBcmdzKTtcbiAgfVxuICBpZiAoIV8uaXNFbXB0eShhcmdzLmRlZmF1bHRDYXBhYmlsaXRpZXMpKSB7XG4gICAgbG9nRGVmYXVsdENhcGFiaWxpdGllc1dhcm5pbmcoYXJncy5kZWZhdWx0Q2FwYWJpbGl0aWVzKTtcbiAgfVxuICAvLyBUT0RPOiBicmluZyBiYWNrIGxvZ2xldmVsIHJlcG9ydGluZyBiZWxvdyBvbmNlIGxvZ2dlciBpcyBmbHVzaGVkIG91dFxuICAvLyBsb2dnZXIuaW5mbygnQ29uc29sZSBMb2dMZXZlbDogJyArIGxvZ2dlci50cmFuc3BvcnRzLmNvbnNvbGUubGV2ZWwpO1xuICAvLyBpZiAobG9nZ2VyLnRyYW5zcG9ydHMuZmlsZSkge1xuICAvLyAgIGxvZ2dlci5pbmZvKCdGaWxlIExvZ0xldmVsOiAnICsgbG9nZ2VyLnRyYW5zcG9ydHMuZmlsZS5sZXZlbCk7XG4gIC8vIH1cbn1cblxuLyoqXG4gKiBMb2dzIHRoZSBhZGRyZXNzIGFuZCBwb3J0IHRoZSBzZXJ2ZXIgaXMgbGlzdGVuaW5nIG9uXG4gKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIEFkZHJlc3NcbiAqIEBwYXJhbSB7bnVtYmVyfSBwb3J0IC0gUG9ydFxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGxvZ1NlcnZlclBvcnQoYWRkcmVzcywgcG9ydCkge1xuICBsZXQgbG9nTWVzc2FnZSA9IGBBcHBpdW0gUkVTVCBodHRwIGludGVyZmFjZSBsaXN0ZW5lciBzdGFydGVkIG9uIGAgKyBgJHthZGRyZXNzfToke3BvcnR9YDtcbiAgbG9nZ2VyLmluZm8obG9nTWVzc2FnZSk7XG59XG5cbi8qKlxuICogR2V0cyBhIGxpc3Qgb2YgYHVwZGF0ZVNlcnZlcmAgZnVuY3Rpb25zIGZyb20gYWxsIGV4dGVuc2lvbnNcbiAqIEBwYXJhbSB7RHJpdmVyTmFtZU1hcH0gZHJpdmVyQ2xhc3Nlc1xuICogQHBhcmFtIHtQbHVnaW5OYW1lTWFwfSBwbHVnaW5DbGFzc2VzXG4gKiBAcmV0dXJucyB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuVXBkYXRlU2VydmVyQ2FsbGJhY2tbXX1cbiAqL1xuZnVuY3Rpb24gZ2V0U2VydmVyVXBkYXRlcnMoZHJpdmVyQ2xhc3NlcywgcGx1Z2luQ2xhc3Nlcykge1xuICByZXR1cm4gXy5jb21wYWN0KF8ubWFwKFsuLi5kcml2ZXJDbGFzc2VzLmtleXMoKSwgLi4ucGx1Z2luQ2xhc3Nlcy5rZXlzKCldLCAndXBkYXRlU2VydmVyJykpO1xufVxuXG4vKipcbiAqIE1ha2VzIGEgYmlnIGBNZXRob2RNYXBgIGZyb20gYWxsIHRoZSBsaXR0bGUgYE1ldGhvZE1hcGBzIGluIHRoZSBleHRlbnNpb25zXG4gKiBAcGFyYW0ge0RyaXZlck5hbWVNYXB9IGRyaXZlckNsYXNzZXNcbiAqIEBwYXJhbSB7UGx1Z2luTmFtZU1hcH0gcGx1Z2luQ2xhc3Nlc1xuICogQHJldHVybnMge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLk1ldGhvZE1hcH1cbiAqL1xuZnVuY3Rpb24gZ2V0RXh0cmFNZXRob2RNYXAoZHJpdmVyQ2xhc3NlcywgcGx1Z2luQ2xhc3Nlcykge1xuICByZXR1cm4gWy4uLmRyaXZlckNsYXNzZXMua2V5cygpLCAuLi5wbHVnaW5DbGFzc2VzLmtleXMoKV0ucmVkdWNlKFxuICAgIChtYXAsIGtsYXNzKSA9PiAoe1xuICAgICAgLi4ubWFwLFxuICAgICAgLi4uKGtsYXNzLm5ld01ldGhvZE1hcCA/PyB7fSksXG4gICAgfSksXG4gICAge31cbiAgKTtcbn1cblxuLyoqXG4gKiBAdGVtcGxhdGUgW1Q9V2l0aFNlcnZlclN1YmNvbW1hbmRdXG4gKiBAcGFyYW0ge0FyZ3M8VD59IGFyZ3NcbiAqIEByZXR1cm5zIHthcmdzIGlzIEFyZ3M8V2l0aFNlcnZlclN1YmNvbW1hbmQ+fVxuICovXG5mdW5jdGlvbiBhcmVTZXJ2ZXJDb21tYW5kQXJncyhhcmdzKSB7XG4gIHJldHVybiBhcmdzLnN1YmNvbW1hbmQgPT09IFNFUlZFUl9TVUJDT01NQU5EO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIEFwcGl1bSwgYnV0IGRvZXMgbm90IHN0YXJ0IHRoZSBzZXJ2ZXIuXG4gKlxuICogVXNlIHRoaXMgdG8gZ2V0IGF0IHRoZSBjb25maWd1cmF0aW9uIHNjaGVtYS5cbiAqXG4gKiBJZiBgYXJnc2AgY29udGFpbnMgYSBub24tZW1wdHkgYHN1YmNvbW1hbmRgIHdoaWNoIGlzIG5vdCBgc2VydmVyYCwgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBhbiBlbXB0eSBvYmplY3QuXG4gKlxuICogQHRlbXBsYXRlIFtUPVdpdGhTZXJ2ZXJTdWJjb21tYW5kXVxuICogQHBhcmFtIHtBcmdzPFQ+fSBbYXJnc10gLSBQYXJ0aWFsIGFyZ3MgKHByb2dhbW1hdGljIHVzYWdlIG9ubHkpXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTZXJ2ZXJJbml0UmVzdWx0IHwgRXh0Q29tbWFuZEluaXRSZXN1bHQ+fVxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7aW5pdCwgZ2V0U2NoZW1hfSBmcm9tICdhcHBpdW0nO1xuICogY29uc3Qgb3B0aW9ucyA9IHt9OyAvLyBjb25maWcgb2JqZWN0XG4gKiBhd2FpdCBpbml0KG9wdGlvbnMpO1xuICogY29uc3Qgc2NoZW1hID0gZ2V0U2NoZW1hKCk7IC8vIGVudGlyZSBjb25maWcgc2NoZW1hIGluY2x1ZGluZyBwbHVnaW5zIGFuZCBkcml2ZXJzXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGluaXQoYXJncykge1xuICBjb25zdCBhcHBpdW1Ib21lID0gYXJncz8uYXBwaXVtSG9tZSA/PyAoYXdhaXQgcmVzb2x2ZUFwcGl1bUhvbWUoKSk7XG5cbiAgY29uc3Qge2RyaXZlckNvbmZpZywgcGx1Z2luQ29uZmlnfSA9IGF3YWl0IGxvYWRFeHRlbnNpb25zKGFwcGl1bUhvbWUpO1xuXG4gIGNvbnN0IHBhcnNlciA9IGdldFBhcnNlcigpO1xuICBsZXQgdGhyb3dJbnN0ZWFkT2ZFeGl0ID0gZmFsc2U7XG4gIC8qKiBAdHlwZSB7QXJnczxUPn0gKi9cbiAgbGV0IHByZUNvbmZpZ0FyZ3M7XG5cbiAgaWYgKGFyZ3MpIHtcbiAgICAvLyBpZiB3ZSBoYXZlIGEgY29udGFpbmluZyBwYWNrYWdlIGluc3RlYWQgb2YgcnVubmluZyBhcyBhIENMSSBwcm9jZXNzLFxuICAgIC8vIHRoYXQgcGFja2FnZSBtaWdodCBub3QgYXBwcmVjaWF0ZSB1cyBjYWxsaW5nICdwcm9jZXNzLmV4aXQnIHdpbGx5LVxuICAgIC8vIG5pbGx5LCBzbyBnaXZlIGl0IHRoZSBvcHRpb24gdG8gaGF2ZSB1cyB0aHJvdyBpbnN0ZWFkIG9mIGV4aXRcbiAgICBpZiAoYXJncy50aHJvd0luc3RlYWRPZkV4aXQpIHtcbiAgICAgIHRocm93SW5zdGVhZE9mRXhpdCA9IHRydWU7XG4gICAgICAvLyBidXQgcmVtb3ZlIGl0IHNpbmNlIGl0J3Mgbm90IGEgcmVhbCBzZXJ2ZXIgYXJnIHBlciBzZVxuICAgICAgZGVsZXRlIGFyZ3MudGhyb3dJbnN0ZWFkT2ZFeGl0O1xuICAgIH1cbiAgICBwcmVDb25maWdBcmdzID0gey4uLmFyZ3MsIHN1YmNvbW1hbmQ6IGFyZ3Muc3ViY29tbWFuZCA/PyBTRVJWRVJfU1VCQ09NTUFORH07XG4gIH0gZWxzZSB7XG4gICAgLy8gb3RoZXJ3aXNlIHBhcnNlIGZyb20gQ0xJXG4gICAgcHJlQ29uZmlnQXJncyA9IC8qKiBAdHlwZSB7QXJnczxUPn0gKi8gKHBhcnNlci5wYXJzZUFyZ3MoKSk7XG4gIH1cblxuICBjb25zdCBjb25maWdSZXN1bHQgPSBhd2FpdCByZWFkQ29uZmlnRmlsZShwcmVDb25maWdBcmdzLmNvbmZpZ0ZpbGUpO1xuXG4gIGlmICghXy5pc0VtcHR5KGNvbmZpZ1Jlc3VsdC5lcnJvcnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEVycm9ycyBpbiBjb25maWcgZmlsZSAke2NvbmZpZ1Jlc3VsdC5maWxlcGF0aH06XFxuICR7XG4gICAgICAgIGNvbmZpZ1Jlc3VsdC5yZWFzb24gPz8gY29uZmlnUmVzdWx0LmVycm9yc1xuICAgICAgfWBcbiAgICApO1xuICB9XG5cbiAgLy8gbWVyZ2UgY29uZmlnIGFuZCBhcHBseSBkZWZhdWx0cy5cbiAgLy8gdGhlIG9yZGVyIG9mIHByZWNlbmRlY2UgaXM6XG4gIC8vIDEuIGNvbW1hbmQgbGluZSBhcmdzXG4gIC8vIDIuIGNvbmZpZyBmaWxlXG4gIC8vIDMuIGRlZmF1bHRzIGZyb20gY29uZmlnIGZpbGUuXG4gIGlmIChhcmVTZXJ2ZXJDb21tYW5kQXJncyhwcmVDb25maWdBcmdzKSkge1xuICAgIGNvbnN0IGRlZmF1bHRzID0gZ2V0RGVmYXVsdHNGb3JTY2hlbWEoZmFsc2UpO1xuXG4gICAgLyoqIEB0eXBlIHtQYXJzZWRBcmdzfSAqL1xuICAgIGNvbnN0IHNlcnZlckFyZ3MgPSBfLmRlZmF1bHRzRGVlcChwcmVDb25maWdBcmdzLCBjb25maWdSZXN1bHQuY29uZmlnPy5zZXJ2ZXIsIGRlZmF1bHRzKTtcblxuICAgIGlmIChwcmVDb25maWdBcmdzLnNob3dDb25maWcpIHtcbiAgICAgIHNob3dDb25maWcoZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MocHJlQ29uZmlnQXJncyksIGNvbmZpZ1Jlc3VsdCwgZGVmYXVsdHMsIHNlcnZlckFyZ3MpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGF3YWl0IGxvZ3NpbmtJbml0KHNlcnZlckFyZ3MpO1xuXG4gICAgaWYgKHNlcnZlckFyZ3MubG9nRmlsdGVycykge1xuICAgICAgY29uc3Qge2lzc3VlcywgcnVsZXN9ID0gYXdhaXQgbG9nRmFjdG9yeS5sb2FkU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc2luZ1J1bGVzKFxuICAgICAgICBzZXJ2ZXJBcmdzLmxvZ0ZpbHRlcnNcbiAgICAgICk7XG4gICAgICBpZiAoIV8uaXNFbXB0eShpc3N1ZXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGhlIGxvZyBmaWx0ZXJpbmcgcnVsZXMgY29uZmlnICcke3NlcnZlckFyZ3MubG9nRmlsdGVyc30nIGhhcyBpc3N1ZXM6IGAgK1xuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoaXNzdWVzLCBudWxsLCAyKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKF8uaXNFbXB0eShydWxlcykpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgICAgYEZvdW5kIG5vIGxvZyBmaWx0ZXJpbmcgcnVsZXMgaW4gJyR7c2VydmVyQXJncy5sb2dGaWx0ZXJzfScuIElzIHRoYXQgZXhwZWN0ZWQ/YFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgICAgYExvYWRlZCAke3V0aWwucGx1cmFsaXplKCdmaWx0ZXJpbmcgcnVsZScsIHJ1bGVzLmxlbmd0aCwgdHJ1ZSl9IGZyb20gJyR7XG4gICAgICAgICAgICBzZXJ2ZXJBcmdzLmxvZ0ZpbHRlcnNcbiAgICAgICAgICB9J2BcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhcHBpdW1Ecml2ZXIgPSBuZXcgQXBwaXVtRHJpdmVyKHNlcnZlckFyZ3MpO1xuICAgIC8vIHNldCB0aGUgY29uZmlnIG9uIHRoZSB1bWJyZWxsYSBkcml2ZXIgc28gaXQgY2FuIG1hdGNoIGRyaXZlcnMgdG8gY2Fwc1xuICAgIGFwcGl1bURyaXZlci5kcml2ZXJDb25maWcgPSBkcml2ZXJDb25maWc7XG4gICAgYXdhaXQgcHJlZmxpZ2h0Q2hlY2tzKHNlcnZlckFyZ3MsIHRocm93SW5zdGVhZE9mRXhpdCk7XG5cbiAgICByZXR1cm4gLyoqIEB0eXBlIHtTZXJ2ZXJJbml0UmVzdWx0fSAqLyAoe1xuICAgICAgYXBwaXVtRHJpdmVyLFxuICAgICAgcGFyc2VkQXJnczogc2VydmVyQXJncyxcbiAgICAgIGRyaXZlckNvbmZpZyxcbiAgICAgIHBsdWdpbkNvbmZpZyxcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBleHRlbnNpb25Db21tYW5kQXJncyA9IC8qKiBAdHlwZSB7QXJnczxpbXBvcnQoJ2FwcGl1bS90eXBlcycpLldpdGhFeHRTdWJjb21tYW5kPn0gKi8gKFxuICAgICAgcHJlQ29uZmlnQXJnc1xuICAgICk7XG4gICAgLy8gaWYgdGhlIHVzZXIgaGFzIHJlcXVlc3RlZCB0aGUgJ2RyaXZlcicgQ0xJLCBkb24ndCBydW4gdGhlIG5vcm1hbCBzZXJ2ZXIsXG4gICAgLy8gYnV0IGluc3RlYWQgcGFzcyBjb250cm9sIHRvIHRoZSBkcml2ZXIgQ0xJXG4gICAgaWYgKHByZUNvbmZpZ0FyZ3Muc3ViY29tbWFuZCA9PT0gRFJJVkVSX1RZUEUpIHtcbiAgICAgIGF3YWl0IHJ1bkV4dGVuc2lvbkNvbW1hbmQoZXh0ZW5zaW9uQ29tbWFuZEFyZ3MsIGRyaXZlckNvbmZpZyk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGlmIChwcmVDb25maWdBcmdzLnN1YmNvbW1hbmQgPT09IFBMVUdJTl9UWVBFKSB7XG4gICAgICBhd2FpdCBydW5FeHRlbnNpb25Db21tYW5kKGV4dGVuc2lvbkNvbW1hbmRBcmdzLCBwbHVnaW5Db25maWcpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB7fTsgLy8gc2hvdWxkIG5ldmVyIGhhcHBlblxuICB9XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgQXBwaXVtJ3MgY29uZmlnLiAgU3RhcnRzIHNlcnZlciBpZiBhcHByb3ByaWF0ZSBhbmQgcmVzb2x2ZXMgdGhlXG4gKiBzZXJ2ZXIgaW5zdGFuY2UgaWYgc287IG90aGVyd2lzZSByZXNvbHZlcyB3LyBgdW5kZWZpbmVkYC5cbiAqIEB0ZW1wbGF0ZSBbVD1XaXRoU2VydmVyU3ViY29tbWFuZF1cbiAqIEBwYXJhbSB7QXJnczxUPn0gW2FyZ3NdIC0gQXJndW1lbnRzIGZyb20gQ0xJIG9yIG90aGVyd2lzZVxuICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQXBwaXVtU2VydmVyfHVuZGVmaW5lZD59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG1haW4oYXJncykge1xuICBjb25zdCB7YXBwaXVtRHJpdmVyLCBwYXJzZWRBcmdzLCBwbHVnaW5Db25maWcsIGRyaXZlckNvbmZpZ30gPSAvKiogQHR5cGUge1NlcnZlckluaXRSZXN1bHR9ICovIChcbiAgICBhd2FpdCBpbml0KGFyZ3MpXG4gICk7XG5cbiAgaWYgKCFhcHBpdW1Ecml2ZXIgfHwgIXBhcnNlZEFyZ3MgfHwgIXBsdWdpbkNvbmZpZyB8fCAhZHJpdmVyQ29uZmlnKSB7XG4gICAgLy8gaWYgdGhpcyBicmFuY2ggaXMgdGFrZW4sIHdlJ3ZlIHJ1biBhIGRpZmZlcmVudCBzdWJjb21tYW5kLCBzbyB0aGVyZSdzIG5vdGhpbmdcbiAgICAvLyBsZWZ0IHRvIGRvIGhlcmUuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGx1Z2luQ2xhc3NlcyA9IGdldEFjdGl2ZVBsdWdpbnMocGx1Z2luQ29uZmlnLCBwYXJzZWRBcmdzLnVzZVBsdWdpbnMpO1xuICAvLyBzZXQgdGhlIGFjdGl2ZSBwbHVnaW5zIG9uIHRoZSB1bWJyZWxsYSBkcml2ZXIgc28gaXQgY2FuIHVzZSB0aGVtIGZvciBjb21tYW5kc1xuICBhcHBpdW1Ecml2ZXIucGx1Z2luQ2xhc3NlcyA9IHBsdWdpbkNsYXNzZXM7XG5cbiAgYXdhaXQgbG9nU3RhcnR1cEluZm8ocGFyc2VkQXJncyk7XG4gIGxldCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24gPSBtYWtlUm91dGVyKGFwcGl1bURyaXZlcik7XG5cbiAgY29uc3QgZHJpdmVyQ2xhc3NlcyA9IGdldEFjdGl2ZURyaXZlcnMoZHJpdmVyQ29uZmlnLCBwYXJzZWRBcmdzLnVzZURyaXZlcnMpO1xuICBjb25zdCBzZXJ2ZXJVcGRhdGVycyA9IGdldFNlcnZlclVwZGF0ZXJzKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpO1xuICBjb25zdCBleHRyYU1ldGhvZE1hcCA9IGdldEV4dHJhTWV0aG9kTWFwKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpO1xuXG4gIGNvbnN0IHNlcnZlck9wdHMgPSB7XG4gICAgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLFxuICAgIHBvcnQ6IHBhcnNlZEFyZ3MucG9ydCxcbiAgICBob3N0bmFtZTogcGFyc2VkQXJncy5hZGRyZXNzLFxuICAgIGFsbG93Q29yczogcGFyc2VkQXJncy5hbGxvd0NvcnMsXG4gICAgYmFzZVBhdGg6IHBhcnNlZEFyZ3MuYmFzZVBhdGgsXG4gICAgc2VydmVyVXBkYXRlcnMsXG4gICAgZXh0cmFNZXRob2RNYXAsXG4gIH07XG4gIGlmIChwYXJzZWRBcmdzLmtlZXBBbGl2ZVRpbWVvdXQpIHtcbiAgICBzZXJ2ZXJPcHRzLmtlZXBBbGl2ZVRpbWVvdXQgPSBwYXJzZWRBcmdzLmtlZXBBbGl2ZVRpbWVvdXQgKiAxMDAwO1xuICB9XG4gIGxldCBzZXJ2ZXI7XG4gIHRyeSB7XG4gICAgc2VydmVyID0gYXdhaXQgYmFzZVNlcnZlcihzZXJ2ZXJPcHRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmVycm9yKFxuICAgICAgYENvdWxkIG5vdCBjb25maWd1cmUgQXBwaXVtIHNlcnZlci4gSXQncyBwb3NzaWJsZSB0aGF0IGEgZHJpdmVyIG9yIHBsdWdpbiB0cmllZCBgICtcbiAgICAgICAgYHRvIHVwZGF0ZSB0aGUgc2VydmVyIGFuZCBmYWlsZWQuIE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWBcbiAgICApO1xuICAgIGxvZ2dlci5kZWJ1ZyhlcnIuc3RhY2spO1xuICAgIHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cblxuICBpZiAocGFyc2VkQXJncy5hbGxvd0NvcnMpIHtcbiAgICBsb2dnZXIud2FybihcbiAgICAgICdZb3UgaGF2ZSBlbmFibGVkIENPUlMgcmVxdWVzdHMgZnJvbSBhbnkgaG9zdC4gQmUgY2FyZWZ1bCBub3QgJyArXG4gICAgICAgICd0byB2aXNpdCBzaXRlcyB3aGljaCBjb3VsZCBtYWxpY2lvdXNseSB0cnkgdG8gc3RhcnQgQXBwaXVtICcgK1xuICAgICAgICAnc2Vzc2lvbnMgb24geW91ciBtYWNoaW5lJ1xuICAgICk7XG4gIH1cbiAgYXBwaXVtRHJpdmVyLnNlcnZlciA9IHNlcnZlcjtcbiAgdHJ5IHtcbiAgICAvLyBjb25maWd1cmUgYXMgbm9kZSBvbiBncmlkLCBpZiBuZWNlc3NhcnlcbiAgICAvLyBmYWxzeSB2YWx1ZXMgc2hvdWxkIG5vdCBjYXVzZSB0aGlzIHRvIHJ1blxuICAgIGlmIChwYXJzZWRBcmdzLm5vZGVjb25maWcpIHtcbiAgICAgIGF3YWl0IHJlZ2lzdGVyTm9kZShcbiAgICAgICAgcGFyc2VkQXJncy5ub2RlY29uZmlnLFxuICAgICAgICBwYXJzZWRBcmdzLmFkZHJlc3MsXG4gICAgICAgIHBhcnNlZEFyZ3MucG9ydCxcbiAgICAgICAgcGFyc2VkQXJncy5iYXNlUGF0aFxuICAgICAgKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGF3YWl0IHNlcnZlci5jbG9zZSgpO1xuICAgIHRocm93IGVycjtcbiAgfVxuXG4gIGZvciAoY29uc3Qgc2lnbmFsIG9mIFsnU0lHSU5UJywgJ1NJR1RFUk0nXSkge1xuICAgIHByb2Nlc3Mub25jZShzaWduYWwsIGFzeW5jIGZ1bmN0aW9uIG9uU2lnbmFsKCkge1xuICAgICAgbG9nZ2VyLmluZm8oYFJlY2VpdmVkICR7c2lnbmFsfSAtIHNodXR0aW5nIGRvd25gKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGFwcGl1bURyaXZlci5kZWxldGVBbGxTZXNzaW9ucyh7XG4gICAgICAgICAgZm9yY2U6IHRydWUsXG4gICAgICAgICAgcmVhc29uOiBgVGhlIHByb2Nlc3MgaGFzIHJlY2VpdmVkICR7c2lnbmFsfSBzaWduYWxgLFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgc2VydmVyLmNsb3NlKCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oZSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGxvZ1NlcnZlclBvcnQocGFyc2VkQXJncy5hZGRyZXNzLCBwYXJzZWRBcmdzLnBvcnQpO1xuICBkcml2ZXJDb25maWcucHJpbnQoKTtcbiAgcGx1Z2luQ29uZmlnLnByaW50KFsuLi5wbHVnaW5DbGFzc2VzLnZhbHVlcygpXSk7XG5cbiAgcmV0dXJuIHNlcnZlcjtcbn1cblxuLy8gTk9URTogdGhpcyBpcyBoZXJlIGZvciBiYWNrd2FyZHMgY29tcGF0IGZvciBhbnkgc2NyaXB0cyByZWZlcmVuY2luZyBgbWFpbi5qc2AgZGlyZWN0bHlcbi8vIChtb3JlIHNwZWNpZmljYWxseSwgYGJ1aWxkL2xpYi9tYWluLmpzYClcbi8vIHRoZSBleGVjdXRhYmxlIGlzIG5vdyBgLi4vaW5kZXguanNgLCBzbyB0aGF0IG1vZHVsZSB3aWxsIHR5cGljYWxseSBiZSBgcmVxdWlyZS5tYWluYC5cbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xuICBhc3luY2lmeShtYWluKTtcbn1cblxuLy8gZXZlcnl0aGluZyBiZWxvdyBoZXJlIGlzIGludGVuZGVkIHRvIGJlIGEgcHVibGljIEFQSS5cbmV4cG9ydCB7cmVhZENvbmZpZ0ZpbGV9IGZyb20gJy4vY29uZmlnLWZpbGUnO1xuZXhwb3J0IHtmaW5hbGl6ZVNjaGVtYSwgZ2V0U2NoZW1hLCB2YWxpZGF0ZX0gZnJvbSAnLi9zY2hlbWEvc2NoZW1hJztcbmV4cG9ydCB7bWFpbiwgaW5pdCwgcmVzb2x2ZUFwcGl1bUhvbWV9O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ecml2ZXJUeXBlfSBEcml2ZXJUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuUGx1Z2luVHlwZX0gUGx1Z2luVHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkRyaXZlckNsYXNzfSBEcml2ZXJDbGFzc1xuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlBsdWdpbkNsYXNzfSBQbHVnaW5DbGFzc1xuICogQHR5cGVkZWYge2ltcG9ydCgnYXBwaXVtL3R5cGVzJykuV2l0aFNlcnZlclN1YmNvbW1hbmR9IFdpdGhTZXJ2ZXJTdWJjb21tYW5kXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2V4dGVuc2lvbicpLkRyaXZlck5hbWVNYXB9IERyaXZlck5hbWVNYXBcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vZXh0ZW5zaW9uJykuUGx1Z2luTmFtZU1hcH0gUGx1Z2luTmFtZU1hcFxuICovXG5cbi8qKlxuICogTGl0ZXJhbGx5IGFuIGVtcHR5IG9iamVjdFxuICogQHR5cGVkZWYgeyB7fSB9IEV4dENvbW1hbmRJbml0UmVzdWx0XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBTZXJ2ZXJJbml0RGF0YVxuICogQHByb3BlcnR5IHtpbXBvcnQoJy4vYXBwaXVtJykuQXBwaXVtRHJpdmVyfSBhcHBpdW1Ecml2ZXIgLSBUaGUgQXBwaXVtIGRyaXZlclxuICogQHByb3BlcnR5IHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLlBhcnNlZEFyZ3N9IHBhcnNlZEFyZ3MgLSBUaGUgcGFyc2VkIGFyZ3VtZW50c1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge1NlcnZlckluaXREYXRhICYgaW1wb3J0KCcuL2V4dGVuc2lvbicpLkV4dGVuc2lvbkNvbmZpZ3N9IFNlcnZlckluaXRSZXN1bHRcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBbVD1XaXRoU2VydmVyU3ViY29tbWFuZF1cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLkFyZ3M8VD59IEFyZ3NcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBbVD1XaXRoU2VydmVyU3ViY29tbWFuZF1cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLlBhcnNlZEFyZ3M8VD59IFBhcnNlZEFyZ3NcbiAqL1xuIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFXQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNO0VBQUNBO0FBQUQsSUFBc0JDLFlBQTVCOzs7QUFPQSxlQUFlQyxlQUFmLENBQStCQyxJQUEvQixFQUFxQ0Msa0JBQWtCLEdBQUcsS0FBMUQsRUFBaUU7RUFD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
|