oxygen-cli 1.21.0-beta.7 → 1.22.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -1
- package/build/errors/OxygenError.js +15 -5
- package/build/errors/helper.js +4 -2
- package/build/lib/cli.js +1 -1
- package/build/ox_modules/module-assert.js +7 -17
- package/build/ox_modules/module-email.js +2 -2
- package/build/ox_modules/module-http.js +33 -9
- package/build/ox_modules/module-mob.js +4 -4
- package/build/ox_modules/module-soap.js +23 -10
- package/build/ox_modules/module-utils.js +20 -1
- package/build/ox_modules/module-web.js +4 -4
- package/build/ox_modules/utils.js +20 -2
- package/build/ox_services/service-devtools/submodule-network.js +100 -110
- package/build/ox_services/service-devtools.js +3 -3
- package/package.json +11 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
-
## v1.21.0 (
|
|
3
|
+
## v1.21.0 (2022-01-17)
|
|
4
4
|
|
|
5
5
|
#### :boom: Breaking Change
|
|
6
6
|
* Previously deprecated `web.selectWindow` with no arguments has been removed.
|
|
@@ -10,11 +10,15 @@
|
|
|
10
10
|
* Add `utils.dnsResolve`.
|
|
11
11
|
* Add `utils.readXlsx`.
|
|
12
12
|
* Add `web.maximizeWindow`, `web.minimizeWindow`, `web.fullscreenWindow`.
|
|
13
|
+
* Add `soap.getLastResponseHeaders`.
|
|
14
|
+
* `soap.get`: allow passing HTTP request headers.
|
|
13
15
|
|
|
14
16
|
#### :beetle: Bug Fix
|
|
15
17
|
* Fix `mob.sendKeys` argument validation.
|
|
16
18
|
* `web.setTimeout` not having any effect on `web.open`.
|
|
17
19
|
* `web.waitForNotExist` not working as expected.
|
|
20
|
+
* Fix memory leak in `db` module.
|
|
21
|
+
* `assert.equal` not working correctly when input strings consisted of digits.
|
|
18
22
|
|
|
19
23
|
#### :nail_care: Polish
|
|
20
24
|
* Documentation improvements.
|
|
@@ -22,6 +26,7 @@
|
|
|
22
26
|
#### :house: Internal
|
|
23
27
|
* Refactor everything for more asynchronicity.
|
|
24
28
|
* Use `got` instead of the no longer supported `request` for `http` module.
|
|
29
|
+
* Bump other dependencies.
|
|
25
30
|
|
|
26
31
|
## v1.20.2 (2021-09-05)
|
|
27
32
|
|
|
@@ -69,10 +69,20 @@ class OxygenError extends Error {
|
|
|
69
69
|
if (this.orgErr && this.orgErr.stack) {
|
|
70
70
|
const anotherStack = stackTraceParser.parse(this.orgErr.stack);
|
|
71
71
|
|
|
72
|
-
if (anotherStack && anotherStack
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
if (anotherStack && Array.isArray(anotherStack) && anotherStack.length > 0) {
|
|
73
|
+
for (let i = 0; i < anotherStack.length; i++) {
|
|
74
|
+
if (_fs.default.existsSync(anotherStack[i]['file']) && anotherStack[i]['lineNumber'] && !anotherFile && !anotherLineNumber) {
|
|
75
|
+
let file = anotherStack[i];
|
|
76
|
+
|
|
77
|
+
if (anotherStack[i] && anotherStack[1 + i] && anotherStack[i]['file'] === anotherStack[1 + i]['file']) {
|
|
78
|
+
file = anotherStack[1 + i];
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
anotherFile = file['file'];
|
|
82
|
+
anotherLineNumber = file['lineNumber'];
|
|
83
|
+
anotherColumn = file['column'] || 1;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
76
86
|
}
|
|
77
87
|
}
|
|
78
88
|
|
|
@@ -140,4 +150,4 @@ class OxygenError extends Error {
|
|
|
140
150
|
}
|
|
141
151
|
|
|
142
152
|
exports.default = OxygenError;
|
|
143
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvT3h5Z2VuRXJyb3IuanMiXSwibmFtZXMiOlsiU1RBQ0tUUkFDRV9GSUxURVJTIiwiT3h5Z2VuRXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwidHlwZSIsIm1lc3NhZ2UiLCJkYXRhIiwiaXNGYXRhbCIsIm9yZ0VyciIsInVuZGVmaW5lZCIsInN1YnR5cGUiLCJzY3JlZW5zaG90Iiwic3RhY2siLCJjYXB0dXJlU3RhY2tUcmFjZSIsImZpbHRlclN0YWNrVHJhY2UiLCJnZW5lcmF0ZUxvY2F0aW9uIiwic3BsaXQiLCJmaWx0ZXIiLCJfc3RhY2tUcmFjZUZpbHRlckZuIiwiam9pbiIsInZhbHVlIiwic29tZSIsImluY2x1ZGVzIiwiYW5vdGhlckZpbGUiLCJhbm90aGVyTGluZU51bWJlciIsImFub3RoZXJDb2x1bW4iLCJhbm90aGVyU3RhY2siLCJzdGFja1RyYWNlUGFyc2VyIiwicGFyc2UiLCJsZW5ndGgiLCJzdGFja1RyYWNlIiwiU3RhY2tUcmFjZSIsIml0ZW0iLCJleGlzdCIsImZzIiwiZXhpc3RzU3luYyIsImZpbGVOYW1lIiwiY2FsbCIsImxvY2F0aW9uIiwibG9jYXRpb25TcGxpdCIsInBhcnNlSW50Iiwic3RhY2t0cmFjZSIsIm1hcCIsInBhdGNoRmlsZVBhdGhPbldpbmRvd3MiLCJnZXRGaWxlTmFtZSIsImdldExpbmVOdW1iZXIiLCJnZXRDb2x1bW5OdW1iZXIiLCJmaWxlUGF0aCIsInByb2Nlc3MiLCJwbGF0Zm9ybSIsInJlcGxhY2UiLCJlcnIiLCJlIiwiY29uc29sZSIsImVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFZQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFQSxNQUFNQSxrQkFBa0IsR0FBRyxDQUFDLGtCQUFELEVBQXFCLGdCQUFyQixFQUF1QyxlQUF2QyxFQUF3RCxpQkFBeEQsRUFBMkUsWUFBM0UsRUFBeUYscUJBQXpGLEVBQWdILGdCQUFoSCxFQUFrSSxXQUFsSSxFQUErSSxZQUEvSSxD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LElBQUl2QixXQUFXLElBQUlDLGlCQUFmLElBQW9DQyxhQUF4QyxFQUF1RDtBQUMxRCxXQUFLYSxRQUFMLEdBQWlCLEdBQUUsS0FBS0ssc0JBQUwsQ0FBNEJwQixXQUE1QixDQUF5QyxJQUFHQyxpQkFBa0IsSUFBR0MsYUFBYyxFQUFsRztBQUNBLFdBQUtnQixVQUFMLEdBQWtCLENBQUMsS0FBS0gsUUFBTixDQUFsQjtBQUNILEtBSE0sTUFHQTtBQUNILFdBQUtBLFFBQUwsR0FBZ0IsSUFBaEI7QUFDSDtBQUNKOztBQUVESyxFQUFBQSxzQkFBc0IsQ0FBQ0ksUUFBRCxFQUFXO0FBQzdCLFFBQUlBLFFBQVEsSUFBSUMsT0FBTyxDQUFDQyxRQUFSLEtBQXFCLE9BQWpDLElBQTRDLE9BQU9GLFFBQVAsS0FBcUIsUUFBakUsSUFBNkVBLFFBQVEsQ0FBQ2xCLE1BQVQsR0FBa0IsQ0FBbkcsRUFBc0c7QUFDbEcsYUFBT2tCLFFBQVEsQ0FBQ0csT0FBVCxDQUFpQixLQUFqQixFQUF3QixJQUF4QixDQUFQO0FBQ0g7O0FBQ0QsV0FBT0gsUUFBUDtBQUNIOztBQUVEbEMsRUFBQUEsaUJBQWlCLEdBQUc7QUFDaEIsUUFBSSxLQUFLRCxLQUFULEVBQWdCO0FBQ1o7QUFDSCxLQUZELE1BR0s7QUFDRCxVQUFJO0FBR0EsWUFBSXVDLEdBQUcsR0FBRyxJQUFJakQsS0FBSixFQUFWO0FBQ0FBLFFBQUFBLEtBQUssQ0FBQ1csaUJBQU4sQ0FBd0JzQyxHQUF4QixFQUE2QmxELFdBQTdCO0FBQ0EsYUFBS1csS0FBTCxHQUFhdUMsR0FBRyxDQUFDdkMsS0FBakI7QUFFSCxPQVBELENBUUEsT0FBT3dDLENBQVAsRUFBVTtBQUNOQyxRQUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FBY0YsQ0FBQyxDQUFDL0MsT0FBaEI7QUFDSDtBQUNKO0FBQ0o7O0FBdkkwQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLypcclxuICogT3h5Z2VuIEVycm9yIGNsYXNzXHJcbiAqL1xyXG5pbXBvcnQgU3RhY2tUcmFjZSBmcm9tICdzdGFjay10cmFjZSc7XHJcbmltcG9ydCAqIGFzIHN0YWNrVHJhY2VQYXJzZXIgZnJvbSAnc3RhY2t0cmFjZS1wYXJzZXInO1xyXG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xyXG5cclxuY29uc3QgU1RBQ0tUUkFDRV9GSUxURVJTID0gWydcXFxcbm9kZV9tb2R1bGVzXFxcXCcsICcvbm9kZV9tb2R1bGVzLycsICcvb3h5Z2VuLW5vZGUvJywgJ1xcXFxveHlnZW4tbm9kZVxcXFwnLCAnKG1vZHVsZS5qcycsICcoaW50ZXJuYWwvbW9kdWxlLmpzJywgJ2F0IDxhbm9ueW1vdXM+JywgJ2ludGVybmFsLycsICdpbnRlcm5hbFxcXFwnXTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE94eWdlbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xyXG4gICAgY29uc3RydWN0b3IodHlwZSwgbWVzc2FnZSwgZGF0YSwgaXNGYXRhbCwgb3JnRXJyID0gbnVsbCkge1xyXG4gICAgICAgIHN1cGVyKG1lc3NhZ2UgfHwgdW5kZWZpbmVkKTtcclxuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlIHx8IHRoaXMudHlwZSB8fCBudWxsO1xyXG4gICAgICAgIHRoaXMub3JnRXJyID0gb3JnRXJyO1xyXG4gICAgICAgIC8vIHN1YnR5cGUgYWxsb3dzIHRvIHNwZWNpZnkgbW9yZSBwYXJ0aWN1bGFyIGVycm9yIGZvciBhIGdlbmVyYWwgT3h5Z2VuIGVycm9yIHR5cGVcclxuICAgICAgICAvLyBmb3IgZXhhbXBsZSwgc3BlY2lmeSBUeXBlRXJyb3IgYXMgc3VidHlwZSBmb3IgYSBnZW5lcmFsIFNDUklQVF9FUlJPUiBPeHlnZW4gdHlwZVxyXG4gICAgICAgIGlmIChvcmdFcnIgJiYgdHlwZW9mIG9yZ0VyciA9PT0gJ3N0cmluZycgJiYgdHlwZSAhPT0gb3JnRXJyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VidHlwZSA9IG9yZ0VycjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAob3JnRXJyICYmIHR5cGVvZiBvcmdFcnIgPT09ICdvYmplY3QnICYmIG9yZ0Vyci50eXBlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VidHlwZSA9IG9yZ0Vyci50eXBlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8IG51bGw7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YSB8fCBudWxsO1xyXG4gICAgICAgIHRoaXMuc2NyZWVuc2hvdCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pc0ZhdGFsID0gKHR5cGVvZiBpc0ZhdGFsID09PSAndW5kZWZpbmVkJykgPyB0cnVlIDogaXNGYXRhbDtcclxuICAgICAgICBpZiAob3JnRXJyICYmIG9yZ0Vyci5zdGFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnN0YWNrID0gb3JnRXJyLnN0YWNrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gZG9uJ3QgZ2VuZXJhdGUgc3RhY2t0cmFjZSBpZiBPeHlnZW5FcnJvciBpcyB1c2VkIGluZGlyZWN0bHkgdGhyb3VnaCBpbmhlcml0YW5jZVxyXG4gICAgICAgIGlmICh0eXBlIHx8IG1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXB0dXJlU3RhY2tUcmFjZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlclN0YWNrVHJhY2UoKTtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUxvY2F0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlclN0YWNrVHJhY2UoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YWNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FwdHVyZVN0YWNrVHJhY2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zdGFjayA9IHRoaXMuc3RhY2suc3BsaXQoJ1xcbicpLmZpbHRlcih0aGlzLl9zdGFja1RyYWNlRmlsdGVyRm4pLmpvaW4oJ1xcbicpO1xyXG4gICAgfVxyXG5cclxuICAgIF9zdGFja1RyYWNlRmlsdGVyRm4odmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gIVNUQUNLVFJBQ0VfRklMVEVSUy5zb21lKGZpbHRlciA9PiB2YWx1ZS5pbmNsdWRlcyhmaWx0ZXIpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZUxvY2F0aW9uKCkge1xyXG4gICAgICAgIGxldCBhbm90aGVyRmlsZTtcclxuICAgICAgICBsZXQgYW5vdGhlckxpbmVOdW1iZXI7XHJcbiAgICAgICAgbGV0IGFub3RoZXJDb2x1bW47XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9yZ0VyciAmJiB0aGlzLm9yZ0Vyci5zdGFjaykge1xyXG4gICAgICAgICAgICBjb25zdCBhbm90aGVyU3RhY2sgPSBzdGFja1RyYWNlUGFyc2VyLnBhcnNlKHRoaXMub3JnRXJyLnN0YWNrKTtcclxuICAgICAgICAgICAgLy8gMCBlbGVtZW50IGRvbid0IGhhdmUgY29ycmVjdCBpbmZvcm1hdGlvbiBhYm91dCBsaW5lTnVtYmVyIGFuZCBjb2x1bW5cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgYW5vdGhlclN0YWNrICYmXHJcbiAgICAgICAgICAgICAgICBhbm90aGVyU3RhY2subGVuZ3RoICYmXHJcbiAgICAgICAgICAgICAgICBhbm90aGVyU3RhY2subGVuZ3RoID4gMSAmJlxyXG4gICAgICAgICAgICAgICAgYW5vdGhlclN0YWNrWzFdWydmaWxlJ10gJiZcclxuICAgICAgICAgICAgICAgIGFub3RoZXJTdGFja1swXVsnZmlsZSddICYmXHJcbiAgICAgICAgICAgICAgICBhbm90aGVyU3RhY2tbMV1bJ2ZpbGUnXSA9PT0gYW5vdGhlclN0YWNrWzBdWydmaWxlJ10gJiZcclxuICAgICAgICAgICAgICAgIGFub3RoZXJTdGFja1sxXVsnbGluZU51bWJlciddICYmXHJcbiAgICAgICAgICAgICAgICBhbm90aGVyU3RhY2tbMV1bJ2NvbHVtbiddXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgYW5vdGhlckZpbGUgPSBhbm90aGVyU3RhY2tbMV1bJ2ZpbGUnXTtcclxuICAgICAgICAgICAgICAgIGFub3RoZXJMaW5lTnVtYmVyID0gYW5vdGhlclN0YWNrWzFdWydsaW5lTnVtYmVyJ107XHJcbiAgICAgICAgICAgICAgICBhbm90aGVyQ29sdW1uID0gYW5vdGhlclN0YWNrWzFdWydjb2x1bW4nXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHN0YWNrVHJhY2UgPSBTdGFja1RyYWNlLnBhcnNlKHRoaXMpIHx8IFtdO1xyXG4gICAgICAgIHN0YWNrVHJhY2UgPSBzdGFja1RyYWNlLmZpbHRlcigoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBleGlzdCA9IGZzLmV4aXN0c1N5bmMoaXRlbS5maWxlTmFtZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBleGlzdDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoc3RhY2tUcmFjZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhbGwgPSBzdGFja1RyYWNlWzBdO1xyXG4gICAgICAgICAgICBpZiAoY2FsbCAmJiBjYWxsLmZpbGVOYW1lID09PSAndm0uanMnICYmIHRoaXMub3JnRXJyICYmIHRoaXMub3JnRXJyLnN0YWNrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbG9jYXRpb24gPSB0aGlzLm9yZ0Vyci5zdGFjay5zcGxpdCgnXFxuJylbMF07XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYXRpb25TcGxpdCA9IGxvY2F0aW9uLnNwbGl0KCc6Jyk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uU3BsaXQgJiYgbG9jYXRpb25TcGxpdFswXSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQobG9jYXRpb25TcGxpdFtsb2NhdGlvblNwbGl0Lmxlbmd0aC0xXSkgJiYgcGFyc2VJbnQobG9jYXRpb25TcGxpdFtsb2NhdGlvblNwbGl0Lmxlbmd0aC0yXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGluZSBhbmQgY29sdW1uIHByZXNlbnRcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGxvY2F0aW9uU3BsaXRbbG9jYXRpb25TcGxpdC5sZW5ndGgtMV0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbmUgcHJlc2VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiArPSAnOjAnO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgbmFtZSBwcmVzZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uICs9ICc6MDowJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvbiA9IGxvY2F0aW9uO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja3RyYWNlID0gW1xyXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YWNrVHJhY2UubWFwKGNhbGwgPT4gYCR7dGhpcy5wYXRjaEZpbGVQYXRoT25XaW5kb3dzKGNhbGwuZ2V0RmlsZU5hbWUoKSl9OiR7Y2FsbC5nZXRMaW5lTnVtYmVyKCl9OiR7Y2FsbC5nZXRDb2x1bW5OdW1iZXIoKX1gKVxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChhbm90aGVyRmlsZSAmJiBhbm90aGVyTGluZU51bWJlciAmJiBhbm90aGVyQ29sdW1uKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2F0aW9uID0gYCR7dGhpcy5wYXRjaEZpbGVQYXRoT25XaW5kb3dzKGFub3RoZXJGaWxlKX06JHthbm90aGVyTGluZU51bWJlcn06JHthbm90aGVyQ29sdW1ufWA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrdHJhY2UgPSBbdGhpcy5sb2NhdGlvbl07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhZGQgZXh0cmEgbGluZSBpZiB3ZSBhcmUgcnVubmluZyBpbiBkZWJ1Z2dlciBtb2RlIChWOCBkZWJ1Z2dlciBhZGRzIGFuIGV4dHJhIGxpbmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSlcclxuICAgICAgICAgICAgICAgIC8vY29uc3QgZXh0cmFMaW5lID0gb3h1dGlsLmlzSW5EZWJ1Z01vZGUoKSA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvbiA9IGAke3RoaXMucGF0Y2hGaWxlUGF0aE9uV2luZG93cyhjYWxsLmdldEZpbGVOYW1lKCkpfToke2NhbGwuZ2V0TGluZU51bWJlcigpfToke2NhbGwuZ2V0Q29sdW1uTnVtYmVyKCl9YDtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2t0cmFjZSA9IHN0YWNrVHJhY2UubWFwKGNhbGwgPT4gYCR7dGhpcy5wYXRjaEZpbGVQYXRoT25XaW5kb3dzKGNhbGwuZ2V0RmlsZU5hbWUoKSl9OiR7Y2FsbC5nZXRMaW5lTnVtYmVyKCl9OiR7Y2FsbC5nZXRDb2x1bW5OdW1iZXIoKX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoYW5vdGhlckZpbGUgJiYgYW5vdGhlckxpbmVOdW1iZXIgJiYgYW5vdGhlckNvbHVtbikge1xyXG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uID0gYCR7dGhpcy5wYXRjaEZpbGVQYXRoT25XaW5kb3dzKGFub3RoZXJGaWxlKX06JHthbm90aGVyTGluZU51bWJlcn06JHthbm90aGVyQ29sdW1ufWA7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhY2t0cmFjZSA9IFt0aGlzLmxvY2F0aW9uXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcGF0Y2hGaWxlUGF0aE9uV2luZG93cyhmaWxlUGF0aCkge1xyXG4gICAgICAgIGlmIChmaWxlUGF0aCAmJiBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInICYmIHR5cGVvZihmaWxlUGF0aCkgPT09ICdzdHJpbmcnICYmIGZpbGVQYXRoLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZpbGVQYXRoLnJlcGxhY2UoL1xcLy9nLCAnXFxcXCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmlsZVBhdGg7XHJcbiAgICB9XHJcblxyXG4gICAgY2FwdHVyZVN0YWNrVHJhY2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhY2spIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIC8vdmFyIG9yaWcgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTtcclxuICAgICAgICAgICAgICAgIC8vRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBmdW5jdGlvbiAoXywgc3RhY2spIHsgcmV0dXJuIHN0YWNrOyB9O1xyXG4gICAgICAgICAgICAgICAgdmFyIGVyciA9IG5ldyBFcnJvcigpO1xyXG4gICAgICAgICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCBPeHlnZW5FcnJvcik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrID0gZXJyLnN0YWNrO1xyXG4gICAgICAgICAgICAgICAgLy9FcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IG9yaWc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
153
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvT3h5Z2VuRXJyb3IuanMiXSwibmFtZXMiOlsiU1RBQ0tUUkFDRV9GSUxURVJTIiwiT3h5Z2VuRXJyb3IiLCJFcnJvciIsImNvbnN0cnVjdG9yIiwidHlwZSIsIm1lc3NhZ2UiLCJkYXRhIiwiaXNGYXRhbCIsIm9yZ0VyciIsInVuZGVmaW5lZCIsInN1YnR5cGUiLCJzY3JlZW5zaG90Iiwic3RhY2siLCJjYXB0dXJlU3RhY2tUcmFjZSIsImZpbHRlclN0YWNrVHJhY2UiLCJnZW5lcmF0ZUxvY2F0aW9uIiwic3BsaXQiLCJmaWx0ZXIiLCJfc3RhY2tUcmFjZUZpbHRlckZuIiwiam9pbiIsInZhbHVlIiwic29tZSIsImluY2x1ZGVzIiwiYW5vdGhlckZpbGUiLCJhbm90aGVyTGluZU51bWJlciIsImFub3RoZXJDb2x1bW4iLCJhbm90aGVyU3RhY2siLCJzdGFja1RyYWNlUGFyc2VyIiwicGFyc2UiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJpIiwiZnMiLCJleGlzdHNTeW5jIiwiZmlsZSIsInN0YWNrVHJhY2UiLCJTdGFja1RyYWNlIiwiaXRlbSIsImV4aXN0IiwiZmlsZU5hbWUiLCJjYWxsIiwibG9jYXRpb24iLCJsb2NhdGlvblNwbGl0IiwicGFyc2VJbnQiLCJzdGFja3RyYWNlIiwibWFwIiwicGF0Y2hGaWxlUGF0aE9uV2luZG93cyIsImdldEZpbGVOYW1lIiwiZ2V0TGluZU51bWJlciIsImdldENvbHVtbk51bWJlciIsImZpbGVQYXRoIiwicHJvY2VzcyIsInBsYXRmb3JtIiwicmVwbGFjZSIsImVyciIsImUiLCJjb25zb2xlIiwiZXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVlBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVBLE1BQU1BLGtCQUFrQixHQUFHLENBQUMsa0JBQUQsRUFBcUIsZ0JBQXJCLEVBQXVDLGVBQXZDLEVBQXdELGlCQUF4RCxFQUEyRSxZQUEzRSxFQUF5RixxQkFBekYsRUFBZ0gsZ0JB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QyxHQUF4QixFQUE2QnRELFdBQTdCO0FBQ0EsYUFBS1csS0FBTCxHQUFhMkMsR0FBRyxDQUFDM0MsS0FBakI7QUFFSCxPQVBELENBUUEsT0FBTzRDLENBQVAsRUFBVTtBQUNOQyxRQUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FBY0YsQ0FBQyxDQUFDbkQsT0FBaEI7QUFDSDtBQUNKO0FBQ0o7O0FBeEswQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLypcclxuICogT3h5Z2VuIEVycm9yIGNsYXNzXHJcbiAqL1xyXG5pbXBvcnQgU3RhY2tUcmFjZSBmcm9tICdzdGFjay10cmFjZSc7XHJcbmltcG9ydCAqIGFzIHN0YWNrVHJhY2VQYXJzZXIgZnJvbSAnc3RhY2t0cmFjZS1wYXJzZXInO1xyXG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xyXG5cclxuY29uc3QgU1RBQ0tUUkFDRV9GSUxURVJTID0gWydcXFxcbm9kZV9tb2R1bGVzXFxcXCcsICcvbm9kZV9tb2R1bGVzLycsICcvb3h5Z2VuLW5vZGUvJywgJ1xcXFxveHlnZW4tbm9kZVxcXFwnLCAnKG1vZHVsZS5qcycsICcoaW50ZXJuYWwvbW9kdWxlLmpzJywgJ2F0IDxhbm9ueW1vdXM+JywgJ2ludGVybmFsLycsICdpbnRlcm5hbFxcXFwnXTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE94eWdlbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xyXG4gICAgY29uc3RydWN0b3IodHlwZSwgbWVzc2FnZSwgZGF0YSwgaXNGYXRhbCwgb3JnRXJyID0gbnVsbCkge1xyXG4gICAgICAgIHN1cGVyKG1lc3NhZ2UgfHwgdW5kZWZpbmVkKTtcclxuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlIHx8IHRoaXMudHlwZSB8fCBudWxsO1xyXG4gICAgICAgIHRoaXMub3JnRXJyID0gb3JnRXJyO1xyXG4gICAgICAgIC8vIHN1YnR5cGUgYWxsb3dzIHRvIHNwZWNpZnkgbW9yZSBwYXJ0aWN1bGFyIGVycm9yIGZvciBhIGdlbmVyYWwgT3h5Z2VuIGVycm9yIHR5cGVcclxuICAgICAgICAvLyBmb3IgZXhhbXBsZSwgc3BlY2lmeSBUeXBlRXJyb3IgYXMgc3VidHlwZSBmb3IgYSBnZW5lcmFsIFNDUklQVF9FUlJPUiBPeHlnZW4gdHlwZVxyXG4gICAgICAgIGlmIChvcmdFcnIgJiYgdHlwZW9mIG9yZ0VyciA9PT0gJ3N0cmluZycgJiYgdHlwZSAhPT0gb3JnRXJyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VidHlwZSA9IG9yZ0VycjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAob3JnRXJyICYmIHR5cGVvZiBvcmdFcnIgPT09ICdvYmplY3QnICYmIG9yZ0Vyci50eXBlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VidHlwZSA9IG9yZ0Vyci50eXBlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8IG51bGw7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YSB8fCBudWxsO1xyXG4gICAgICAgIHRoaXMuc2NyZWVuc2hvdCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pc0ZhdGFsID0gKHR5cGVvZiBpc0ZhdGFsID09PSAndW5kZWZpbmVkJykgPyB0cnVlIDogaXNGYXRhbDtcclxuICAgICAgICBpZiAob3JnRXJyICYmIG9yZ0Vyci5zdGFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnN0YWNrID0gb3JnRXJyLnN0YWNrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gZG9uJ3QgZ2VuZXJhdGUgc3RhY2t0cmFjZSBpZiBPeHlnZW5FcnJvciBpcyB1c2VkIGluZGlyZWN0bHkgdGhyb3VnaCBpbmhlcml0YW5jZVxyXG4gICAgICAgIGlmICh0eXBlIHx8IG1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5jYXB0dXJlU3RhY2tUcmFjZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlclN0YWNrVHJhY2UoKTtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUxvY2F0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlclN0YWNrVHJhY2UoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnN0YWNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FwdHVyZVN0YWNrVHJhY2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zdGFjayA9IHRoaXMuc3RhY2suc3BsaXQoJ1xcbicpLmZpbHRlcih0aGlzLl9zdGFja1RyYWNlRmlsdGVyRm4pLmpvaW4oJ1xcbicpO1xyXG4gICAgfVxyXG5cclxuICAgIF9zdGFja1RyYWNlRmlsdGVyRm4odmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gIVNUQUNLVFJBQ0VfRklMVEVSUy5zb21lKGZpbHRlciA9PiB2YWx1ZS5pbmNsdWRlcyhmaWx0ZXIpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZUxvY2F0aW9uKCkge1xyXG4gICAgICAgIGxldCBhbm90aGVyRmlsZTtcclxuICAgICAgICBsZXQgYW5vdGhlckxpbmVOdW1iZXI7XHJcbiAgICAgICAgbGV0IGFub3RoZXJDb2x1bW47XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9yZ0VyciAmJiB0aGlzLm9yZ0Vyci5zdGFjaykge1xyXG4gICAgICAgICAgICBjb25zdCBhbm90aGVyU3RhY2sgPSBzdGFja1RyYWNlUGFyc2VyLnBhcnNlKHRoaXMub3JnRXJyLnN0YWNrKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGFub3RoZXJTdGFjayAmJlxyXG4gICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShhbm90aGVyU3RhY2spICYmXHJcbiAgICAgICAgICAgICAgICBhbm90aGVyU3RhY2subGVuZ3RoID4gMFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYW5vdGhlclN0YWNrLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnMuZXhpc3RzU3luYyhhbm90aGVyU3RhY2tbaV1bJ2ZpbGUnXSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgYW5vdGhlclN0YWNrW2ldWydsaW5lTnVtYmVyJ10gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgIWFub3RoZXJGaWxlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFhbm90aGVyTGluZU51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGUgPSBhbm90aGVyU3RhY2tbaV07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTogXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTogJyouanMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZE5hbWU6ICc8dW5rbm93bj4nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50czogW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlcjogMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTogJyouanMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZE5hbWU6ICdPYmplY3QuPGFub255bW91cz4nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50czogW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlcjogMTEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiAxMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm90aGVyU3RhY2tbaV0gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFub3RoZXJTdGFja1sxK2ldICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm90aGVyU3RhY2tbaV1bJ2ZpbGUnXSA9PT0gYW5vdGhlclN0YWNrWzEraV1bJ2ZpbGUnXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgPSBhbm90aGVyU3RhY2tbMStpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgYW5vdGhlckZpbGUgPSBmaWxlWydmaWxlJ107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFub3RoZXJMaW5lTnVtYmVyID0gZmlsZVsnbGluZU51bWJlciddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbm90aGVyQ29sdW1uID0gZmlsZVsnY29sdW1uJ10gfHwgMTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzdGFja1RyYWNlID0gU3RhY2tUcmFjZS5wYXJzZSh0aGlzKSB8fCBbXTtcclxuICAgICAgICBzdGFja1RyYWNlID0gc3RhY2tUcmFjZS5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZXhpc3QgPSBmcy5leGlzdHNTeW5jKGl0ZW0uZmlsZU5hbWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gZXhpc3Q7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHN0YWNrVHJhY2UubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBjYWxsID0gc3RhY2tUcmFjZVswXTtcclxuICAgICAgICAgICAgaWYgKGNhbGwgJiYgY2FsbC5maWxlTmFtZSA9PT0gJ3ZtLmpzJyAmJiB0aGlzLm9yZ0VyciAmJiB0aGlzLm9yZ0Vyci5zdGFjaykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0gdGhpcy5vcmdFcnIuc3RhY2suc3BsaXQoJ1xcbicpWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uU3BsaXQgPSBsb2NhdGlvbi5zcGxpdCgnOicpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvblNwbGl0ICYmIGxvY2F0aW9uU3BsaXRbMF0pIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KGxvY2F0aW9uU3BsaXRbbG9jYXRpb25TcGxpdC5sZW5ndGgtMV0pICYmIHBhcnNlSW50KGxvY2F0aW9uU3BsaXRbbG9jYXRpb25TcGxpdC5sZW5ndGgtMl0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbmUgYW5kIGNvbHVtbiBwcmVzZW50XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJzZUludChsb2NhdGlvblNwbGl0W2xvY2F0aW9uU3BsaXQubGVuZ3RoLTFdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBsaW5lIHByZXNlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gKz0gJzowJztcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IG5hbWUgcHJlc2VudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiArPSAnOjA6MCc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubG9jYXRpb24gPSBsb2NhdGlvbjtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2t0cmFjZSA9IFtcclxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGFja1RyYWNlLm1hcChjYWxsID0+IGAke3RoaXMucGF0Y2hGaWxlUGF0aE9uV2luZG93cyhjYWxsLmdldEZpbGVOYW1lKCkpfToke2NhbGwuZ2V0TGluZU51bWJlcigpfToke2NhbGwuZ2V0Q29sdW1uTnVtYmVyKCl9YClcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYW5vdGhlckZpbGUgJiYgYW5vdGhlckxpbmVOdW1iZXIgJiYgYW5vdGhlckNvbHVtbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvbiA9IGAke3RoaXMucGF0Y2hGaWxlUGF0aE9uV2luZG93cyhhbm90aGVyRmlsZSl9OiR7YW5vdGhlckxpbmVOdW1iZXJ9OiR7YW5vdGhlckNvbHVtbn1gO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja3RyYWNlID0gW3RoaXMubG9jYXRpb25dO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gYWRkIGV4dHJhIGxpbmUgaWYgd2UgYXJlIHJ1bm5pbmcgaW4gZGVidWdnZXIgbW9kZSAoVjggZGVidWdnZXIgYWRkcyBhbiBleHRyYSBsaW5lIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUpXHJcbiAgICAgICAgICAgICAgICAvL2NvbnN0IGV4dHJhTGluZSA9IG94dXRpbC5pc0luRGVidWdNb2RlKCkgPyAxIDogMDtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9jYXRpb24gPSBgJHt0aGlzLnBhdGNoRmlsZVBhdGhPbldpbmRvd3MoY2FsbC5nZXRGaWxlTmFtZSgpKX06JHtjYWxsLmdldExpbmVOdW1iZXIoKX06JHtjYWxsLmdldENvbHVtbk51bWJlcigpfWA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrdHJhY2UgPSBzdGFja1RyYWNlLm1hcChjYWxsID0+IGAke3RoaXMucGF0Y2hGaWxlUGF0aE9uV2luZG93cyhjYWxsLmdldEZpbGVOYW1lKCkpfToke2NhbGwuZ2V0TGluZU51bWJlcigpfToke2NhbGwuZ2V0Q29sdW1uTnVtYmVyKCl9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGFub3RoZXJGaWxlICYmIGFub3RoZXJMaW5lTnVtYmVyICYmIGFub3RoZXJDb2x1bW4pIHtcclxuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbiA9IGAke3RoaXMucGF0Y2hGaWxlUGF0aE9uV2luZG93cyhhbm90aGVyRmlsZSl9OiR7YW5vdGhlckxpbmVOdW1iZXJ9OiR7YW5vdGhlckNvbHVtbn1gO1xyXG4gICAgICAgICAgICB0aGlzLnN0YWNrdHJhY2UgPSBbdGhpcy5sb2NhdGlvbl07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHBhdGNoRmlsZVBhdGhPbldpbmRvd3MoZmlsZVBhdGgpIHtcclxuICAgICAgICBpZiAoZmlsZVBhdGggJiYgcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyAmJiB0eXBlb2YoZmlsZVBhdGgpID09PSAnc3RyaW5nJyAmJiBmaWxlUGF0aC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmaWxlUGF0aC5yZXBsYWNlKC9cXC8vZywgJ1xcXFwnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpbGVQYXRoO1xyXG4gICAgfVxyXG5cclxuICAgIGNhcHR1cmVTdGFja1RyYWNlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YWNrKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAvL3ZhciBvcmlnID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7XHJcbiAgICAgICAgICAgICAgICAvL0Vycm9yLnByZXBhcmVTdGFja1RyYWNlID0gZnVuY3Rpb24gKF8sIHN0YWNrKSB7IHJldHVybiBzdGFjazsgfTtcclxuICAgICAgICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoKTtcclxuICAgICAgICAgICAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgT3h5Z2VuRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFjayA9IGVyci5zdGFjaztcclxuICAgICAgICAgICAgICAgIC8vRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBvcmlnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
package/build/errors/helper.js
CHANGED
|
@@ -63,7 +63,9 @@ const ERROR_CODES = {
|
|
|
63
63
|
FILE_BROWSE_ERROR: 'FILE_BROWSE_ERROR',
|
|
64
64
|
CSV_ERROR: 'CSV_ERROR',
|
|
65
65
|
CRYPTO_ERROR: 'CRYPTO_ERROR',
|
|
66
|
-
DNS_ERROR: 'DNS_ERROR'
|
|
66
|
+
DNS_ERROR: 'DNS_ERROR',
|
|
67
|
+
CIRCULAR_ERROR: 'CIRCULAR_ERROR',
|
|
68
|
+
XML_ERROR: 'XML_ERROR'
|
|
67
69
|
};
|
|
68
70
|
const CHAI_ERROR_CODES = {
|
|
69
71
|
AssertionError: ERROR_CODES.ASSERT_ERROR
|
|
@@ -283,4 +285,4 @@ function extractOriginalError(msg) {
|
|
|
283
285
|
|
|
284
286
|
return msg;
|
|
285
287
|
}
|
|
286
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvaGVscGVyLmpzIl0sIm5hbWVzIjpbInV0aWwiLCJyZXF1aXJlIiwiRVJST1JfQ09ERVMiLCJTQ1JJUFRfRVJST1IiLCJVTktOT1dOX0VSUk9SIiwiQVNTRVJUX0VSUk9SIiwiUERGX0VSUk9SIiwiVkVSSUZZX0VSUk9SIiwiRUxFTUVOVF9OT1RfRk9VTkQiLCJGUkFNRV9OT1RfRk9VTkQiLCJVTktOT1dOX0NPTU1BTkRfRVJST1IiLCJTVEFMRV9FTEVNRU5UX1JFRkVSRU5DRSIsIkVMRU1FTlRfTk9UX1ZJU0lCTEUiLCJFTEVNRU5UX05PVF9JTlRFUkFDVEFCTEUiLCJMT0NBVE9SX01BVENIRVNfTVVMVElQTEVfRUxFTUVOVFMiLCJFTEVNRU5UX1NUSUxMX0VYSVNUUyIsIkJST1dTRVJfSlNfRVhFQ1VURV9FUlJPUiIsIlRJTUVPVVQiLCJXSU5ET1dfTk9UX0ZPVU5EIiwiVU5FWFBFQ1RFRF9BTEVSVF9PUEVOIiwiTk9fQUxFUlRfT1BFTl9FUlJPUiIsIk1BSUxJTkFUT1JfRVJST1IiLCJBUFBJVU1fVU5SRUFDSEFCTEVfRVJST1IiLCJTRUxFTklVTV9VTlJFQUNIQUJMRV9FUlJPUiIsIkNIUk9NRURSSVZFUl9FUlJPUiIsIldFQkRSSVZFUl9FUlJPUiIsIkRCX0NPTk5FQ1RJT05fRVJST1IiLCJEQl9RVUVSWV9FUlJPUiIsIlNPQVBfRVJST1IiLCJOT1RfSU1QTEVNRU5URURfRVJST1IiLCJTRVJJQUxfUE9SVF9FUlJPUiIsIkhUVFBfRVJST1IiLCJFTUFJTF9FUlJPUiIsIk1PRFVMRV9OT1RfSU5JVElBTElaRURfRVJST1IiLCJERVZJQ0VfTk9UX0ZPVU5EIiwiUEFSQU1FVEVSU19FUlJPUiIsIklOVkFMSURfQ0FQQUJJTElUSUVTIiwiQlJPV1NFUl9DT05GSUdVUkFUSU9OX0VSUk9SIiwiQVBQSVVNX0NPTk5FQ1RJT05fRVJST1IiLCJBUFBJVU1fU0VTU0lPTl9FUlJPUiIsIlNFTEVOSVVNX1NFU1NJT05fRVJST1IiLCJTRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQiLCJTRUxFTklVTV9DT05ORUNUSU9OX0VSUk9SIiwiVVJMX09QRU5fRVJST1IiLCJPUFRJT05fTk9UX0ZPVU5EIiwiQVRUUklCVVRFX05PVF9GT1VORCIsIkVMRU1FTlRfU1RBVEVfRVJST1IiLCJNT0JJTEVfQ09OVEVYVF9FUlJPUiIsIkFQUExJQ0FUSU9OX05PVF9GT1VORF9FUlJPUiIsIlRXSUxJT19FUlJPUiIsIkhPT0tfRVJST1IiLCJOT1RfU1VQUE9SVEVEIiwiQVNTRVJUX1BBU1NFRCIsIk1PRFVMRV9OT1RfRk9VTkQiLCJGSUxFX0JST1dTRV9FUlJPUiIsIkNTVl9FUlJPUiIsIkNSWVBUT19FUlJPUiIsIkROU19FUlJPUiIsIkNIQUlfRVJST1JfQ09ERVMiLCJBc3NlcnRpb25FcnJvciIsIlNDUklQVF9FUlJPUl9DT0RFUyIsIlR5cGVFcnJvciIsIlN5bnRheEVycm9yIiwiUmVmZXJlbmNlRXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiZ2V0RmFpbHVyZUZyb21FcnJvciIsImVyciIsIk94RXJyb3IiLCJnZXRPeHlnZW5FcnJvciIsInR5cGUiLCJtZXNzYWdlIiwiZGF0YSIsImxvY2F0aW9uIiwic3RhY2t0cmFjZSIsImdldERiRXJyb3JNZXNzYWdlIiwib2RiY0Vycm9ycyIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsIm1hcCIsIml0ZW0iLCJjbWQiLCJhcmdzIiwiZXJyVHlwZSIsIm5hbWUiLCJpbmNsdWRlcyIsIm1hdGNoZXMiLCJtYXRjaCIsInN0YXJ0c1dpdGgiLCJleHRyYWN0T3JpZ2luYWxFcnJvciIsIk9SSUdJTkFMX0VSUk9SX01FU1NBR0UiLCJpbnNwZWN0IiwiY29kZSIsImVyck1lc3NhZ2UiLCJyZXBsYWNlIiwib3hFcnJvckNvZGUiLCJBU1NFUlQiLCJpbmRleE9mIiwiVkVSSUZZIiwiY29uc29sZSIsImxvZyIsImdldFNlbGVuaXVtSW5pdEVycm9yIiwiaWVab29tRXJyb3JNc2ciLCJ0b1N0cmluZyIsImNocm9tZURyaXZlck1zZyIsImdldEFwcGl1bUluaXRFcnJvciIsImdldEFzc2VydEVycm9yIiwiZXhwZWN0ZWQiLCJhY3R1YWwiLCJlcnJvckNvZGUiLCJVTktOT1dOX0VSUk9SX01FU1NBR0UiLCJtc2ciLCJlcnJvckluZGV4MSIsImVycm9ySW5kZXgyIiwic3Vic3RyaW5nIiwidW5rbm93bkVycm9ySW5kZXgiXSwibWFwcGluZ3MiOiI7Ozs7QUFhQTs7OztBQUNBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBRUEsTUFBTUMsV0FBVyxHQUFHO0FBQ2hCQyxFQUFBQSxZQUFZLEVBQUUsY0FERTtBQUVoQkMsRUFBQUEsYUFBYSxFQUFFLGVBRkM7QUFHaEJDLEVBQUFBLFlBQVksRUFBRSxjQUhFO0FBSWhCQyxFQUFBQSxTQUFTLEVBQUUsV0FKSztBQUtoQkMsRUFBQUEsWUFBWSxFQUFFLGNBTEU7QUFNaEJDLEVBQUFBLGlCQUFpQixFQUFFLG1CQU5IO0FBT2hCQyxFQUFBQSxlQUFlLEVBQUUsaUJBUEQ7QUFRaEJDLEVBQUFBLHFCQUFxQixFQUFFLHVCQVJQO0FBU2hCQyxFQUFBQSx1QkFBdUIsRUFBRSx5QkFUVDtBQVVoQkMsRUFBQUEsbUJBQW1CLEVBQUUscUJBVkw7QUFXaEJDLEVBQUFBLHdCQUF3QixFQUFFLDBCQVhWO0FBWWhCQyxFQUFBQSxpQ0FBaUMsRUFBRSxtQ0FabkI7QUFhaEJDLEVBQUFBLG9CQUFvQixFQUFFLHNCQWJOO0FBY2hCQyxFQUFBQSx3QkFBd0IsRUFBRSwwQkFkVjtBQWVoQkMsRUFBQUEsT0FBTyxFQUFFLFNBZk87QUFnQmhCQyxFQUFBQSxnQkFBZ0IsRUFBRSxrQkFoQkY7QUFpQmhCQyxFQUFBQSxxQkFBcUIsRUFBRSx1QkFqQlA7QUFrQmhCQyxFQUFBQSxtQkFBbUIsRUFBRSxxQkFsQkw7QUFtQmhCQyxFQUFBQSxnQkFBZ0IsRUFBRSxrQkFuQkY7QUFvQmhCQyxFQUFBQSx3QkFBd0IsRUFBRSwwQkFwQlY7QUFxQmhCQyxFQUFBQSwwQkFBMEIsRUFBRSw0QkFyQlo7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RyxDQUFDZCxPQUFKLENBQVlhLHFCQUFaLENBQXhCOztBQUNBLE1BQUlLLGlCQUFpQixHQUFHLENBQUMsQ0FBekIsRUFBNEI7QUFDeEIsV0FBT0osR0FBRyxDQUFDRyxTQUFKLENBQWNDLGlCQUFpQixHQUFHTCxxQkFBcUIsQ0FBQ2hDLE1BQXhELENBQVA7QUFDSDs7QUFFRCxTQUFPaUMsR0FBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogSGVscGVyIG1vZHVsZSBmb3IgaGFuZGxpbmcgYW5kIGNvbnZlcnRpbmcgdmFyaW91cyBlcnJvciB0eXBlc1xyXG4gKi9cclxuXHJcbmltcG9ydCBPeEVycm9yIGZyb20gJy4vT3h5Z2VuRXJyb3InO1xyXG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG5cclxuY29uc3QgRVJST1JfQ09ERVMgPSB7XHJcbiAgICBTQ1JJUFRfRVJST1I6ICdTQ1JJUFRfRVJST1InLFxyXG4gICAgVU5LTk9XTl9FUlJPUjogJ1VOS05PV05fRVJST1InLFxyXG4gICAgQVNTRVJUX0VSUk9SOiAnQVNTRVJUX0VSUk9SJyxcclxuICAgIFBERl9FUlJPUjogJ1BERl9FUlJPUicsXHJcbiAgICBWRVJJRllfRVJST1I6ICdWRVJJRllfRVJST1InLFxyXG4gICAgRUxFTUVOVF9OT1RfRk9VTkQ6ICdFTEVNRU5UX05PVF9GT1VORCcsXHJcbiAgICBGUkFNRV9OT1RfRk9VTkQ6ICdGUkFNRV9OT1RfRk9VTkQnLFxyXG4gICAgVU5LTk9XTl9DT01NQU5EX0VSUk9SOiAnVU5LTk9XTl9DT01NQU5EX0VSUk9SJyxcclxuICAgIFNUQUxFX0VMRU1FTlRfUkVGRVJFTkNFOiAnU1RBTEVfRUxFTUVOVF9SRUZFUkVOQ0UnLFxyXG4gICAgRUxFTUVOVF9OT1RfVklTSUJMRTogJ0VMRU1FTlRfTk9UX1ZJU0lCTEUnLFxyXG4gICAgRUxFTUVOVF9OT1RfSU5URVJBQ1RBQkxFOiAnRUxFTUVOVF9OT1RfSU5URVJBQ1RBQkxFJyxcclxuICAgIExPQ0FUT1JfTUFUQ0hFU19NVUxUSVBMRV9FTEVNRU5UUzogJ0xPQ0FUT1JfTUFUQ0hFU19NVUxUSVBMRV9FTEVNRU5UUycsXHJcbiAgICBFTEVNRU5UX1NUSUxMX0VYSVNUUzogJ0VMRU1FTlRfU1RJTExfRVhJU1RTJyxcclxuICAgIEJST1dTRVJfSlNfRVhFQ1VURV9FUlJPUjogJ0JST1dTRVJfSlNfRVhFQ1VURV9FUlJPUicsXHJcbiAgICBUSU1FT1VUOiAnVElNRU9VVCcsXHJcbiAgICBXSU5ET1dfTk9UX0ZPVU5EOiAnV0lORE9XX05PVF9GT1VORCcsXHJcbiAgICBVTkVYUEVDVEVEX0FMRVJUX09QRU46ICdVTkVYUEVDVEVEX0FMRVJUX09QRU4nLFxyXG4gICAgTk9fQUxFUlRfT1BFTl9FUlJPUjogJ05PX0FMRVJUX09QRU5fRVJST1InLFxyXG4gICAgTUFJTElOQVRPUl9FUlJPUjogJ01BSUxJTkFUT1JfRVJST1InLFxyXG4gICAgQVBQSVVNX1VOUkVBQ0hBQkxFX0VSUk9SOiAnQVBQSVVNX1VOUkVBQ0hBQkxFX0VSUk9SJyxcclxuICAgIFNFTEVOSVVNX1VOUkVBQ0hBQkxFX0VSUk9SOiAnU0VMRU5JVU1fVU5SRUFDSEFCTEVfRVJST1InLFxyXG4gICAgQ0hST01FRFJJVkVSX0VSUk9SOiAnQ0hST01FRFJJVkVSX0VSUk9SJyxcclxuICAgIFdFQkRSSVZFUl9FUlJPUjogJ1dFQkRSSVZFUl9FUlJPUicsXHJcbiAgICBEQl9DT05ORUNUSU9OX0VSUk9SOiAnREJfQ09OTkVDVElPTl9FUlJPUicsXHJcbiAgICBEQl9RVUVSWV9FUlJPUjogJ0RCX1FVRVJZX0VSUk9SJyxcclxuICAgIFNPQVBfRVJST1I6ICdTT0FQX0VSUk9SJyxcclxuICAgIE5PVF9JTVBMRU1FTlRFRF9FUlJPUjogJ05PVF9JTVBMRU1FTlRFRF9FUlJPUicsXHJcbiAgICBTRVJJQUxfUE9SVF9FUlJPUjogJ1NFUklBTF9QT1JUX0VSUk9SJyxcclxuICAgIEhUVFBfRVJST1I6ICdIVFRQX0VSUk9SJyxcclxuICAgIEVNQUlMX0VSUk9SOiAnRU1BSUxfRVJST1InLFxyXG4gICAgTU9EVUxFX05PVF9JTklUSUFMSVpFRF9FUlJPUjogJ01PRFVMRV9OT1RfSU5JVElBTElaRURfRVJST1InLFxyXG4gICAgREVWSUNFX05PVF9GT1VORDogJ0RFVklDRV9OT1RfRk9VTkQnLFxyXG4gICAgUEFSQU1FVEVSU19FUlJPUjogJ1BBUkFNRVRFUlNfRVJST1InLFxyXG4gICAgSU5WQUxJRF9DQVBBQklMSVRJRVM6ICdJTlZBTElEX0NBUEFCSUxJVElFUycsXHJcbiAgICBCUk9XU0VSX0NPTkZJR1VSQVRJT05fRVJST1I6ICdCUk9XU0VSX0NPTkZJR1VSQVRJT05fRVJST1InLFxyXG4gICAgQVBQSVVNX0NPTk5FQ1RJT05fRVJST1I6ICdBUFBJVU1fQ09OTkVDVElPTl9FUlJPUicsXHJcbiAgICBBUFBJVU1fU0VTU0lPTl9FUlJPUjogJ0FQUElVTV9TRVNTSU9OX0VSUk9SJyxcclxuICAgIFNFTEVOSVVNX1NFU1NJT05fRVJST1I6ICdTRUxFTklVTV9TRVNTSU9OX0VSUk9SJyxcclxuICAgIFNFTEVOSVVNX1NFU1NJT05fVElNRU9VVDogJ1NFTEVOSVVNX1NFU1NJT05fVElNRU9VVCcsXHJcbiAgICBTRUxFTklVTV9DT05ORUNUSU9OX0VSUk9SOiAnU0VMRU5JVU1fQ09OTkVDVElPTl9FUlJPUicsXHJcbiAgICBVUkxfT1BFTl9FUlJPUjogJ1VSTF9PUEVOX0VSUk9SJyxcclxuICAgIE9QVElPTl9OT1RfRk9VTkQ6ICdPUFRJT05fTk9UX0ZPVU5EJyxcclxuICAgIEFUVFJJQlVURV9OT1RfRk9VTkQ6ICdBVFRSSUJVVEVfTk9UX0ZPVU5EJyxcclxuICAgIEVMRU1FTlRfU1RBVEVfRVJST1I6ICdFTEVNRU5UX1NUQVRFX0VSUk9SJyxcclxuICAgIE1PQklMRV9DT05URVhUX0VSUk9SOiAnTU9CSUxFX0NPTlRFWFRfRVJST1InLFxyXG4gICAgQVBQTElDQVRJT05fTk9UX0ZPVU5EX0VSUk9SOiAnQVBQTElDQVRJT05fTk9UX0ZPVU5EX0VSUk9SJyxcclxuICAgIFRXSUxJT19FUlJPUjogJ1RXSUxJT19FUlJPUicsXHJcbiAgICBIT09LX0VSUk9SOiAnSE9PS19FUlJPUicsXHJcbiAgICBOT1RfU1VQUE9SVEVEOiAnTk9UX1NVUFBPUlRFRCcsXHJcbiAgICBBU1NFUlRfUEFTU0VEOiAnQVNTRVJUX1BBU1NFRCcsXHJcbiAgICBNT0RVTEVfTk9UX0ZPVU5EOiAnTU9EVUxFX05PVF9GT1VORCcsXHJcbiAgICBGSUxFX0JST1dTRV9FUlJPUjogJ0ZJTEVfQlJPV1NFX0VSUk9SJyxcclxuICAgIENTVl9FUlJPUjogJ0NTVl9FUlJPUicsXHJcbiAgICBDUllQVE9fRVJST1I6ICdDUllQVE9fRVJST1InLFxyXG4gICAgRE5TX0VSUk9SOiAnRE5TX0VSUk9SJ1xyXG59O1xyXG5cclxuLy8gQ2hhaSB0byBPeHlnZW4gZXJyb3IgY29kZXMgbWFwcGluZ1xyXG5jb25zdCBDSEFJX0VSUk9SX0NPREVTID0ge1xyXG4gICAgQXNzZXJ0aW9uRXJyb3I6IEVSUk9SX0NPREVTLkFTU0VSVF9FUlJPUlxyXG59O1xyXG5cclxuLy8gR2VuZXJhbCBKYXZhU2NyaXB0IGVycm9yIGNvZGVzIG1hcHBpbmdcclxuY29uc3QgU0NSSVBUX0VSUk9SX0NPREVTID0ge1xyXG4gICAgVHlwZUVycm9yOiBFUlJPUl9DT0RFUy5TQ1JJUFRfRVJST1IsXHJcbiAgICBTeW50YXhFcnJvcjogRVJST1JfQ09ERVMuU0NSSVBUX0VSUk9SLFxyXG4gICAgUmVmZXJlbmNlRXJyb3I6IEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUixcclxufTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG4gICAgZ2V0RmFpbHVyZUZyb21FcnJvcjogZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgaWYgKCFlcnIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghKGVyciBpbnN0YW5jZW9mIE94RXJyb3IpKSB7XHJcbiAgICAgICAgICAgIGVyciA9IHRoaXMuZ2V0T3h5Z2VuRXJyb3IoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdHlwZTogZXJyLnR5cGUsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVyci5tZXNzYWdlLFxyXG4gICAgICAgICAgICBkYXRhOiBlcnIuZGF0YSxcclxuICAgICAgICAgICAgbG9jYXRpb246IGVyci5sb2NhdGlvbixcclxuICAgICAgICAgICAgc3RhY2t0cmFjZTogZXJyLnN0YWNrdHJhY2UgfHwgbnVsbFxyXG4gICAgICAgIH07XHJcbiAgICB9LFxyXG4gICAgZ2V0RGJFcnJvck1lc3NhZ2U6IGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgIGxldCBtZXNzYWdlID0gJyc7XHJcblxyXG4gICAgICAgIGlmIChlcnIgJiYgZXJyLm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgbWVzc2FnZSArPSBlcnIubWVzc2FnZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgZXJyICYmXHJcbiAgICAgICAgICAgIGVyci5vZGJjRXJyb3JzICYmXHJcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoZXJyLm9kYmNFcnJvcnMpICYmXHJcbiAgICAgICAgICAgIGVyci5vZGJjRXJyb3JzLmxlbmd0aCA+IDBcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgZXJyLm9kYmNFcnJvcnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ubWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAnOiAnICtpdGVtLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgICB9LFxyXG4gICAgZ2V0T3h5Z2VuRXJyb3I6IGZ1bmN0aW9uKGVyciwgbW9kdWxlLCBjbWQsIGFyZ3MpIHtcclxuICAgICAgICAvLyByZXR1cm4gdGhlIGVycm9yIGFzIGlzIGlmIGl0IGhhcyBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkXHJcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE94RXJyb3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVycjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBlcnJUeXBlID0gZXJyLnR5cGUgfHwgZXJyLm5hbWUgfHwgdHlwZW9mIGVycjtcclxuICAgICAgICAvLyBoYW5kbGUgXCJDYW4ndCBjYWxsIDxjb21tYW5kPiBvbiBlbGVtZW50IHdpdGggc2VsZWN0b3IgPHNlbGVjdG9yPiBiZWNhdXNlIGVsZW1lbnQgd2Fzbid0IGZvdW5kXCJcclxuICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ2JlY2F1c2UgZWxlbWVudCB3YXNuXFwndCBmb3VuZCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5FTEVNRU5UX05PVF9GT1VORCwgZXJyLm1lc3NhZ2UsIG51bGwsIHRydWUsIGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGhhbmRsZSBcImludmFsaWQgYXJndW1lbnQ6IFVuc3VwcG9ydGVkIGxvY2F0b3Igc3RyYXRlZ3k6IC1hbmRyb2lkIHVpYXV0b21hdG9yXCIgZm9yIG1vYmlsZS5cclxuICAgICAgICAvLyB1c3VhbGx5IGR1ZSB0byBub3QgdXNpbmcgdGhlIGNvcnJlY3QgY29udGV4dFxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdVbnN1cHBvcnRlZCBsb2NhdG9yIHN0cmF0ZWd5JykpIHtcclxuICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBlcnIubWVzc2FnZS5tYXRjaCgvaW52YWxpZCBhcmd1bWVudDogKC4qKS9pKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLk1PQklMRV9DT05URVhUX0VSUk9SLCAobWF0Y2hlcy5sZW5ndGggPT09IDIgPyBtYXRjaGVzWzFdIDogZXJyLm1lc3NhZ2UpICtcclxuICAgICAgICAgICAgICAgICcuIE1ha2Ugc3VyZSB5b3UgYXJlIHVzaW5nIHRoZSBjb3JyZWN0IG1vYmlsZSBjb250ZXh0LiBTZWUgbW9iLnNldE5hdGl2ZUNvbnRleHQgYW5kIG1vYi5zZXRXZWJWaWV3Q29udGV4dC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaGFuZGxlIFwiaW52YWxpZCBzZWxlY3RvcjogVW5hYmxlIHRvIGxvY2F0ZSBhbiBlbGVtZW50IHdpdGggdGhlIHhwYXRoIGV4cHJlc3Npb25cIlxyXG4gICAgICAgIC8vIHVzdWFsbHkgZHVlIHRvIGludmFsaWQgeHBhdGhcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5hYmxlIHRvIGxvY2F0ZSBhbiBlbGVtZW50IHdpdGggdGhlIHhwYXRoIGV4cHJlc3Npb24nKSkge1xyXG4gICAgICAgICAgICBsZXQgbWF0Y2hlcyA9IGVyci5tZXNzYWdlLm1hdGNoKC8oVGhlIHN0cmluZyAnLionIGlzIG5vdCBhIHZhbGlkIFhQYXRoIGV4cHJlc3Npb24uKS9pKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUiwgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPT09IDIgPyBtYXRjaGVzWzFdIDogZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW52YWxpZCBjc3MgbG9jYXRvciBvbiBDaHJvbWUvSUUuIGUuZy4gY3NzPSNcXDpwMFxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdBbiBpbnZhbGlkIG9yIGlsbGVnYWwgc2VsZWN0b3Igd2FzIHNwZWNpZmllZCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TQ1JJUFRfRVJST1IsICdBbiBpbnZhbGlkIG9yIGlsbGVnYWwgc2VsZWN0b3Igd2FzIHNwZWNpZmllZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbnZhbGlkIGNzcyBsb2NhdG9yIG9uIEZpcmVmb3guIGUuZy4gY3NzPSNcXDpwMFxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLnN0YXJ0c1dpdGgoJ0dpdmVuIGNzcyBzZWxlY3RvciBleHByZXNzaW9uJykpIHtcclxuICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBlcnIubWVzc2FnZS5tYXRjaCgvKEdpdmVuIGNzcyBzZWxlY3RvciBleHByZXNzaW9uIFwiLipcIiBpcyBpbnZhbGlkKS4qL2kpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0NSSVBUX0VSUk9SLCAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCA9PT0gMiA/IG1hdGNoZXNbMV0gOiBlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiAoZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1VuYWJsZSB0byBhdXRvbWF0ZSBDaHJvbWUgdmVyc2lvbicpIHx8XHJcbiAgICAgICAgICAgIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdObyBDaHJvbWVkcml2ZXIgZm91bmQgdGhhdCBjYW4gYXV0b21hdGUnKSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkNIUk9NRURSSVZFUl9FUlJPUiwgZXh0cmFjdE9yaWdpbmFsRXJyb3IoZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaGFuZGxlIHZhcmlvdXMgdHlwZXMgb2YgJ09yaWdpbmFsIGVycm9yJ1xyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKE9SSUdJTkFMX0VSUk9SX01FU1NBR0UpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5VTktOT1dOX0VSUk9SLCBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnIubWVzc2FnZSksIHV0aWwuaW5zcGVjdChlcnIpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW52YWxpZCBVUkwgaW4gb3BlbiBjb21tYW5kXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ0ludmFsaWQgVVJMJykpIHtcclxuICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBlcnIubWVzc2FnZS5tYXRjaCgvKCBJbnZhbGlkIFVSTDogLiokKS4qL2kpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0NSSVBUX0VSUk9SLCAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCA9PT0gMiA/IG1hdGNoZXNbMV0gOiBlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB1c3VhbGx5IG9uIG1vYmlsZSBDaHJvbWUgd2hlbiBlbGVtZW50IGlzIG92ZXJsYXBwZWQgYnkgYW5vdGhlciBlbGVtZW50XHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnZWxlbWVudCBjbGljayBpbnRlcmNlcHRlZCcpKSB7XHJcbiAgICAgICAgICAgIGxldCBtYXRjaGVzID0gZXJyLm1lc3NhZ2UubWF0Y2goL2VsZW1lbnQgY2xpY2sgaW50ZXJjZXB0ZWQ6ICguKikvaSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5FTEVNRU5UX05PVF9WSVNJQkxFLCAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCA9PT0gMiA/IG1hdGNoZXNbMV0gOiBlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB1c3VhbGx5IGJlY2F1c2UgU2VsZW5pdW0gaGFzIGtpbGxlZCB0aGUgc2Vzc2lvbiBkdWUgdG8gZXhjZWVkaW5nICctdGltZW91dCcgdGltZW91dFxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLnN0YXJ0c1dpdGgoJ05vIGFjdGl2ZSBzZXNzaW9uIHdpdGggSUQnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fU0VTU0lPTl9FUlJPUiwgJ0V4ZWN1dGlvbiB0aW1lIGV4Y2VlZGVkIHRoZSB0aW1lb3V0IHNldCBieSBTZWxlbml1bScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB3aGVuIGRyaXZlciAoSUVEcml2ZXJTZXJ2ZXIsIENocm9tZURyaXZlciwgZXRjKSBjcmFzaGVzXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgPT09ICdqYXZhLm5ldC5Db25uZWN0RXhjZXB0aW9uOiBDb25uZWN0aW9uIHJlZnVzZWQ6IGNvbm5lY3QnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5XRUJEUklWRVJfRVJST1IsICdUaGUgdW5kZXJseWluZyBXZWJEcml2ZXIgc2VlbXMgdG8gaGF2ZSBjcmFzaGVkOiAnICsgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBzdGFsZSBlbGVtZW50IHJlZmVyZW5jZVxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5uYW1lICYmIGVyci5uYW1lLmluY2x1ZGVzKCdzdGFsZSBlbGVtZW50IHJlZmVyZW5jZScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TVEFMRV9FTEVNRU5UX1JFRkVSRU5DRSwgZXJyLm5hbWUgKyAnICcgKyBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5jb2RlICYmIGVyci5jb2RlID09PSAnTU9EVUxFX05PVF9GT1VORCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLk1PRFVMRV9OT1RfRk9VTkQsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gIHdoZW4gZG9pbmcgYW4gb3BlcmF0aW9uIG9uIGFuIGVsZW1lbnQgKGUuZy4gY2xpY2spIGJ1dCB0aGUgd2luZG93IHdhcyBhbHJlYWR5IGNsb3NlZFxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdubyBzdWNoIHdpbmRvdycpICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCd0YXJnZXQgd2luZG93IGFscmVhZHkgY2xvc2VkJykgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ3dlYiB2aWV3IG5vdCBmb3VuZCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5XSU5ET1dfTk9UX0ZPVU5ELCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGV4YW1wbGU6IFRoZSBlbGVtZW50IHdpdGggc2VsZWN0b3IgKioqIHlvdSB0cnlpbmcgdG8gcGFzcyBpbnRvIHRoZSBleGVjdXRlIG1ldGhvZCB3YXNuJ3QgZm91bmRcclxuICAgICAgICAvLyB3aGVuIGVsZW1lbnQgd2FzIGRlbGV0ZWQgZnJvbSBET01cclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygneW91IHRyeWluZyB0byBwYXNzIGludG8gdGhlIGV4ZWN1dGUgbWV0aG9kIHdhc25cXCd0IGZvdW5kJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkVMRU1FTlRfTk9UX0ZPVU5ELCAgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB3aGVuIGRvaW5nIGFuIG9wZXJhdGlvbiBvbiBhbiBlbGVtZW50IHJlZmVyZW5jZSAoZS5nLiBjbGljaykgYnV0IHRoZSBwYWdlIHdhcyBhbHJlYWR5IGNoYW5nZWRcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnZWxlbWVudCBub3QgaW50ZXJhY3RhYmxlJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkVMRU1FTlRfTk9UX0lOVEVSQUNUQUJMRSwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbnZhbGlkIHNlbGVjdG9yOiBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uOiBVbmFibGUgdG8gY29tcGlsZSBzZWxlY3RvciAuLi5cclxuICAgICAgICBlbHNlIGlmIChcclxuICAgICAgICAgICAgZXJyLm5hbWUgJiZcclxuICAgICAgICAgICAgZXJyLm5hbWUgPT09ICdpbnZhbGlkIHNlbGVjdG9yJ1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0NSSVBUX0VSUk9SLCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFJlcXVlc3RFcnJvcjogVGltZW91dCBhd2FpdGluZyAncmVxdWVzdCcgZm9yIDMxMDAwMG1zLCBuYW1lOiAnVGltZW91dEVycm9yJ1xyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdUaW1lb3V0IGF3YWl0aW5nIFxcJ3JlcXVlc3RcXCcgZm9yJykpIHtcclxuICAgICAgICAgICAgY29uc3QgZXJyTWVzc2FnZSA9IGVyci5tZXNzYWdlLnJlcGxhY2UoXHJcbiAgICAgICAgICAgICAgICAnVGltZW91dCBhd2FpdGluZyBcXCdyZXF1ZXN0XFwnIGZvcicsXHJcbiAgICAgICAgICAgICAgICAnQ291bGRuXFwndCBnZXQgYSByZXNwb25zZSBmcm9tIFNlbGVuaXVtL1dlYkRyaXZlciB3aXRoaW4nXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQsIGVyck1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChlcnIgJiYgZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ3NvY2tldCBoYW5nIHVwJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX1NFU1NJT05fVElNRU9VVCwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyICYmIGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdUaW1lZCBvdXQgcmVjZWl2aW5nIG1lc3NhZ2UgZnJvbSByZW5kZXJlJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX1NFU1NJT05fVElNRU9VVCwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdHJ5IHRvIHJlc29sdmUgQ2hhaSBlcnJvciBjb2RlXHJcbiAgICAgICAgdmFyIG94RXJyb3JDb2RlID0gQ0hBSV9FUlJPUl9DT0RFU1tlcnJUeXBlXTtcclxuICAgICAgICBpZiAob3hFcnJvckNvZGUpIHtcclxuICAgICAgICAgICAgLy8gdGhyb3cgbm9uLWZhdGFsIGVycm9yIGlmIGl0J3MgYSBcInZlcmlmeVwiIG1vZHVsZSBvciBtZXRob2QgXHJcbiAgICAgICAgICAgIGlmIChveEVycm9yQ29kZSA9PT0gRVJST1JfQ09ERVMuQVNTRVJUICYmXHJcblx0XHRcdFx0KG1vZHVsZSA9PT0gJ3ZlcmlmeScgfHwgY21kLmluZGV4T2YoJ3ZlcmlmeScpID09PSAwKSkgeyAvLyB2ZXJpZnkuKiwgKi52ZXJpZnkqXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuVkVSSUZZLCBlcnIubWVzc2FnZSwgbnVsbCwgZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihveEVycm9yQ29kZSwgZXJyLm1lc3NhZ2UsIG51bGwsIHRydWUsIGVycik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0cnkgdG8gcmVzb2x2ZSBKYXZhU2NyaXB0IGVycm9yIGNvZGVcclxuICAgICAgICBveEVycm9yQ29kZSA9IFNDUklQVF9FUlJPUl9DT0RFU1tlcnJUeXBlXTtcclxuICAgICAgICBpZiAob3hFcnJvckNvZGUpIHtcclxuICAgICAgICAgICAgLy8gdGhyb3cgbm9uLWZhdGFsIGVycm9yIGlmIGl0J3MgYSBcInZlcmlmeVwiIG1vZHVsZSBvciBtZXRob2QgXHJcbiAgICAgICAgICAgIGlmIChveEVycm9yQ29kZSA9PT0gRVJST1JfQ09ERVMuQVNTRVJUICYmXHJcblx0XHRcdFx0KG1vZHVsZSA9PT0gJ3ZlcmlmeScgfHwgY21kLmluZGV4T2YoJ3ZlcmlmeScpID09PSAwKSkgeyAvLyB2ZXJpZnkuKiwgKi52ZXJpZnkqXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuVkVSSUZZLCBlcnIubWVzc2FnZSwgbnVsbCwgZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihveEVycm9yQ29kZSwgZXJyLm1lc3NhZ2UgfHwgbnVsbCwgbnVsbCwgdHJ1ZSwgZXJyKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCc9PT0gRXJyb3IgRGV0YWlscyA9PT0nKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnVHlwZTogJyArIGVyci50eXBlICsgJyBOYW1lOiAnICsgZXJyLm5hbWUgKyAnIENvZGU6ICcgKyBlcnIuY29kZSArICcgTXNnOiAnICsgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHV0aWwuaW5zcGVjdChlcnIpKTtcclxuXHJcbiAgICAgICAgY29uc3QgZXJyTWVzc2FnZSA9IGVyci5tZXNzYWdlID8gYCR7ZXJyVHlwZX06ICR7ZXJyLm1lc3NhZ2V9YCA6IGAke2VyclR5cGV9YDtcclxuICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuVU5LTk9XTl9FUlJPUiwgZXJyTWVzc2FnZSwgdXRpbC5pbnNwZWN0KGVyciksIHRydWUsIGVycik7XHJcbiAgICB9LFxyXG4gICAgZ2V0U2VsZW5pdW1Jbml0RXJyb3I6IGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgIGlmIChlcnIubWVzc2FnZSkge1xyXG4gICAgICAgICAgICB2YXIgaWVab29tRXJyb3JNc2cgPSBlcnIubWVzc2FnZS5tYXRjaCgvKFVuZXhwZWN0ZWQgZXJyb3IgbGF1bmNoaW5nIEludGVybmV0IEV4cGxvcmVyXFwuIEJyb3dzZXIgem9vbSBsZXZlbCB3YXMgc2V0IHRvIFxcZCslXFwuIEl0IHNob3VsZCBiZSBzZXQgdG8gXFxkKyUpL2dtKTtcclxuICAgICAgICAgICAgaWYgKGllWm9vbUVycm9yTXNnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQlJPV1NFUl9DT05GSUdVUkFUSU9OX0VSUk9SLCBpZVpvb21FcnJvck1zZy50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdVbmFibGUgdG8gY3JlYXRlIG5ldyBzZXJ2aWNlOiBDaHJvbWVEcml2ZXJTZXJ2aWNlJykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5DSFJPTUVEUklWRVJfRVJST1IsIGVyci5tZXNzYWdlLCBudWxsLCB0cnVlLCBlcnIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1VuYWJsZSB0byBjcmVhdGUgbmV3IHNlcnZpY2U6JykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TRUxFTklVTV9VTlJFQUNIQUJMRV9FUlJPUiwgZXJyLm1lc3NhZ2UsIG51bGwsIHRydWUsIGVycik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHZhciBjaHJvbWVEcml2ZXJNc2cgPSBlcnIubWVzc2FnZS5tYXRjaCgvKFRoaXMgdmVyc2lvbiBvZiBDaHJvbWVEcml2ZXIgb25seSBzdXBwb3J0cyBDaHJvbWUgdmVyc2lvbiBbMC05XSopL2dtKTtcclxuICAgICAgICAgICAgaWYgKGNocm9tZURyaXZlck1zZykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkNIUk9NRURSSVZFUl9FUlJPUiwgY2hyb21lRHJpdmVyTXNnLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ2Nhbm5vdCBmaW5kIENocm9tZSBiaW5hcnknKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQ0hST01FRFJJVkVSX0VSUk9SLCAnQ2Fubm90IGZpbmQgQ2hyb21lIGJpbmFyeScpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLmNvZGUgPT09ICdFQ09OTlJFRlVTRUQnIHx8IGVyci5jb2RlID09PSAnRUNPTk5SRVNFVCcgfHwgZXJyLmNvZGUgPT09ICdFTk9URk9VTkQnIHx8IGVyci5tZXNzYWdlID09PSAnRmFpbGVkIHRvIGNyZWF0ZSBzZXNzaW9uLlxcbnNvY2tldCBoYW5nIHVwJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fVU5SRUFDSEFCTEVfRVJST1IsIFwiQ291bGRuJ3QgY29ubmVjdCB0byBTZWxlbml1bSBzZXJ2ZXJcIik7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSA9PT0gJ0FsbCBtaW51dGVzIGZvciB0aGlzIG9yZ2FuaXphdGlvbiBoYXMgYmVlbiBleGF1c3RlZCcgfHxcclxuICAgICAgICAgICAgZXJyLm1lc3NhZ2UgPT09ICc0MDEgVW5hdXRob3JpemVkJyB8fFxyXG4gICAgICAgICAgICBlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5zdGFydHNXaXRoKCdGYWlsZWQgdG8gY3JlYXRlIHNlc3Npb24uJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX0NPTk5FQ1RJT05fRVJST1IsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdVbmFibGUgdG8gY3JlYXRlIG5ldyBzZXJ2aWNlOicpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TRUxFTklVTV9DT05ORUNUSU9OX0VSUk9SLCBlcnIubWVzc2FnZSArICdcXG5cXG5UaGlzIGlzIHByb2JhYmx5IGR1ZSB0byBtaXNzaW5nIENocm9tZURyaXZlci9JRURyaXZlclNlcnZlci9HZWNrb0RyaXZlciBiaW5hcnkuXFxuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zb2xlLmxvZygnPT09IEVycm9yIERldGFpbHMgPT09Jyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1R5cGU6ICcgKyBlcnIudHlwZSArICcgTmFtZTogJyArIGVyci5uYW1lICsgJyBDb2RlOiAnICsgZXJyLmNvZGUgKyAnIE1zZzogJyArIGVyci5tZXNzYWdlKTtcclxuICAgICAgICBjb25zb2xlLmxvZyh1dGlsLmluc3BlY3QoZXJyKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5VTktOT1dOX0VSUk9SLCBlcnIudHlwZSArICc6ICcgKyBlcnIubWVzc2FnZSwgdXRpbC5pbnNwZWN0KGVycikpO1xyXG4gICAgfSxcclxuICAgIGdldEFwcGl1bUluaXRFcnJvcjogZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdjYW5ub3QgZmluZCBDaHJvbWUgYmluYXJ5JykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkNIUk9NRURSSVZFUl9FUlJPUiwgJ0Nhbm5vdCBmaW5kIENocm9tZSBiaW5hcnknKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5jb2RlID09PSAnRUNPTk5SRUZVU0VEJyB8fCBlcnIuY29kZSA9PT0gJ0VDT05OUkVTRVQnIHx8IGVyci5jb2RlID09PSAnRU5PVEZPVU5EJyB8fCBlcnIubWVzc2FnZSA9PT0gJ0ZhaWxlZCB0byBjcmVhdGUgc2Vzc2lvbi5cXG5zb2NrZXQgaGFuZyB1cCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkFQUElVTV9VTlJFQUNIQUJMRV9FUlJPUiwgXCJDb3VsZG4ndCBjb25uZWN0IHRvIEFwcGl1bSBzZXJ2ZXJcIik7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnQ291bGQgbm90IGZpbmQgYSBjb25uZWN0ZWQgQW5kcm9pZCBkZXZpY2UnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuREVWSUNFX05PVF9GT1VORCwgJ0NvdWxkIG5vdCBmaW5kIGEgY29ubmVjdGVkIEFuZHJvaWQgZGV2aWNlJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5hYmxlIHRvIGF1dG9tYXRlIENocm9tZSB2ZXJzaW9uJykpIHsgICAgICAgICAgLy8gYXBwaXVtIDw9IDEuMTRcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkNIUk9NRURSSVZFUl9FUlJPUiwgZXh0cmFjdE9yaWdpbmFsRXJyb3IoZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdObyBDaHJvbWVkcml2ZXIgZm91bmQgdGhhdCBjYW4gYXV0b21hdGUnKSkgeyAgICAvLyBhcHBpdW0gPj0gMS4xNVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQ0hST01FRFJJVkVSX0VSUk9SLCBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1VuYWJsZSB0byBmaW5kIGFuIGFjdGl2ZSBkZXZpY2Ugb3IgZW11bGF0b3Igd2l0aCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5ERVZJQ0VfTk9UX0ZPVU5ELCBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ2lzIG5vdCBpbnN0YWxsZWQgb24gZGV2aWNlJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkFQUExJQ0FUSU9OX05PVF9GT1VORF9FUlJPUiwgZXh0cmFjdE9yaWdpbmFsRXJyb3IoZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlID09PSAnQWxsIG1pbnV0ZXMgZm9yIHRoaXMgb3JnYW5pemF0aW9uIGhhcyBiZWVuIGV4YXVzdGVkJyB8fFxyXG4gICAgICAgICAgICBlcnIubWVzc2FnZSA9PT0gJzQwMSBVbmF1dGhvcml6ZWQnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5BUFBJVU1fQ09OTkVDVElPTl9FUlJPUiwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ0EgbmV3IHNlc3Npb24gY291bGQgbm90IGJlIGNyZWF0ZWQuJykgfHxcclxuICAgICAgICAgICAgICAgIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdGYWlsZWQgdG8gY3JlYXRlIHNlc3Npb24uJykpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5BUFBJVU1fU0VTU0lPTl9FUlJPUiwgZXh0cmFjdE9yaWdpbmFsRXJyb3IoZXJyLm1lc3NhZ2UpLCBudWxsLCB0cnVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCc9PT0gRXJyb3IgRGV0YWlscyA9PT0nKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnVHlwZTogJyArIGVyci50eXBlICsgJyBOYW1lOiAnICsgZXJyLm5hbWUgKyAnIENvZGU6ICcgKyBlcnIuY29kZSArICcgTXNnOiAnICsgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHV0aWwuaW5zcGVjdChlcnIpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlVOS05PV05fRVJST1IsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSwgdXRpbC5pbnNwZWN0KGVycikpO1xyXG4gICAgfSxcclxuICAgIGdldEFzc2VydEVycm9yOiBmdW5jdGlvbihleHBlY3RlZCwgYWN0dWFsKSB7XHJcbiAgICAgICAgYWN0dWFsID0gYWN0dWFsLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxuL2csICdcXFxcbicpO1xyXG4gICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5BU1NFUlRfRVJST1IsIGBFeHBlY3RlZDogXCIke2V4cGVjdGVkfVwiLiBHb3Q6IFwiJHthY3R1YWx9XCJgKTtcclxuICAgIH0sXHJcbiAgICBlcnJvckNvZGU6IEVSUk9SX0NPREVTXHJcbn07XHJcblxyXG5jb25zdCBPUklHSU5BTF9FUlJPUl9NRVNTQUdFID0gJ09yaWdpbmFsIGVycm9yOiAnO1xyXG5jb25zdCBVTktOT1dOX0VSUk9SX01FU1NBR0UgPSAndW5rbm93biBlcnJvcjogJztcclxuXHJcbmZ1bmN0aW9uIGV4dHJhY3RPcmlnaW5hbEVycm9yKG1zZykge1xyXG4gICAgaWYgKCFtc2cpIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGVycm9ySW5kZXgxID0gbXNnLmluZGV4T2YoT1JJR0lOQUxfRVJST1JfTUVTU0FHRSk7XHJcbiAgICBpZiAoZXJyb3JJbmRleDEgPT09IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIG1zZztcclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGVyZSBjb3VsZCBhbm90aGUgbmVzdGVkIFwib3JpZ2luYWwgZXJyb3JcIlxyXG4gICAgdmFyIGVycm9ySW5kZXgyID0gbXNnLmluZGV4T2YoT1JJR0lOQUxfRVJST1JfTUVTU0FHRSwgZXJyb3JJbmRleDEgKyBPUklHSU5BTF9FUlJPUl9NRVNTQUdFLmxlbmd0aCk7XHJcblxyXG4gICAgbXNnID0gbXNnLnN1YnN0cmluZygoZXJyb3JJbmRleDIgPiAtMSA/IGVycm9ySW5kZXgyIDogZXJyb3JJbmRleDEpICArIE9SSUdJTkFMX0VSUk9SX01FU1NBR0UubGVuZ3RoKTtcclxuXHJcbiAgICAvLyBzdHJpcCAndW5rbm93biBlcnJvcjonXHJcbiAgICB2YXIgdW5rbm93bkVycm9ySW5kZXggPSBtc2cuaW5kZXhPZihVTktOT1dOX0VSUk9SX01FU1NBR0UpO1xyXG4gICAgaWYgKHVua25vd25FcnJvckluZGV4ID4gLTEpIHtcclxuICAgICAgICByZXR1cm4gbXNnLnN1YnN0cmluZyh1bmtub3duRXJyb3JJbmRleCArIFVOS05PV05fRVJST1JfTUVTU0FHRS5sZW5ndGgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtc2c7XHJcbn1cclxuIl19
|
|
288
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvaGVscGVyLmpzIl0sIm5hbWVzIjpbInV0aWwiLCJyZXF1aXJlIiwiRVJST1JfQ09ERVMiLCJTQ1JJUFRfRVJST1IiLCJVTktOT1dOX0VSUk9SIiwiQVNTRVJUX0VSUk9SIiwiUERGX0VSUk9SIiwiVkVSSUZZX0VSUk9SIiwiRUxFTUVOVF9OT1RfRk9VTkQiLCJGUkFNRV9OT1RfRk9VTkQiLCJVTktOT1dOX0NPTU1BTkRfRVJST1IiLCJTVEFMRV9FTEVNRU5UX1JFRkVSRU5DRSIsIkVMRU1FTlRfTk9UX1ZJU0lCTEUiLCJFTEVNRU5UX05PVF9JTlRFUkFDVEFCTEUiLCJMT0NBVE9SX01BVENIRVNfTVVMVElQTEVfRUxFTUVOVFMiLCJFTEVNRU5UX1NUSUxMX0VYSVNUUyIsIkJST1dTRVJfSlNfRVhFQ1VURV9FUlJPUiIsIlRJTUVPVVQiLCJXSU5ET1dfTk9UX0ZPVU5EIiwiVU5FWFBFQ1RFRF9BTEVSVF9PUEVOIiwiTk9fQUxFUlRfT1BFTl9FUlJPUiIsIk1BSUxJTkFUT1JfRVJST1IiLCJBUFBJVU1fVU5SRUFDSEFCTEVfRVJST1IiLCJTRUxFTklVTV9VTlJFQUNIQUJMRV9FUlJPUiIsIkNIUk9NRURSSVZFUl9FUlJPUiIsIldFQkRSSVZFUl9FUlJPUiIsIkRCX0NPTk5FQ1RJT05fRVJST1IiLCJEQl9RVUVSWV9FUlJPUiIsIlNPQVBfRVJST1IiLCJOT1RfSU1QTEVNRU5URURfRVJST1IiLCJTRVJJQUxfUE9SVF9FUlJPUiIsIkhUVFBfRVJST1IiLCJFTUFJTF9FUlJPUiIsIk1PRFVMRV9OT1RfSU5JVElBTElaRURfRVJST1IiLCJERVZJQ0VfTk9UX0ZPVU5EIiwiUEFSQU1FVEVSU19FUlJPUiIsIklOVkFMSURfQ0FQQUJJTElUSUVTIiwiQlJPV1NFUl9DT05GSUdVUkFUSU9OX0VSUk9SIiwiQVBQSVVNX0NPTk5FQ1RJT05fRVJST1IiLCJBUFBJVU1fU0VTU0lPTl9FUlJPUiIsIlNFTEVOSVVNX1NFU1NJT05fRVJST1IiLCJTRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQiLCJTRUxFTklVTV9DT05ORUNUSU9OX0VSUk9SIiwiVVJMX09QRU5fRVJST1IiLCJPUFRJT05fTk9UX0ZPVU5EIiwiQVRUUklCVVRFX05PVF9GT1VORCIsIkVMRU1FTlRfU1RBVEVfRVJST1IiLCJNT0JJTEVfQ09OVEVYVF9FUlJPUiIsIkFQUExJQ0FUSU9OX05PVF9GT1VORF9FUlJPUiIsIlRXSUxJT19FUlJPUiIsIkhPT0tfRVJST1IiLCJOT1RfU1VQUE9SVEVEIiwiQVNTRVJUX1BBU1NFRCIsIk1PRFVMRV9OT1RfRk9VTkQiLCJGSUxFX0JST1dTRV9FUlJPUiIsIkNTVl9FUlJPUiIsIkNSWVBUT19FUlJPUiIsIkROU19FUlJPUiIsIkNJUkNVTEFSX0VSUk9SIiwiWE1MX0VSUk9SIiwiQ0hBSV9FUlJPUl9DT0RFUyIsIkFzc2VydGlvbkVycm9yIiwiU0NSSVBUX0VSUk9SX0NPREVTIiwiVHlwZUVycm9yIiwiU3ludGF4RXJyb3IiLCJSZWZlcmVuY2VFcnJvciIsIm1vZHVsZSIsImV4cG9ydHMiLCJnZXRGYWlsdXJlRnJvbUVycm9yIiwiZXJyIiwiT3hFcnJvciIsImdldE94eWdlbkVycm9yIiwidHlwZSIsIm1lc3NhZ2UiLCJkYXRhIiwibG9jYXRpb24iLCJzdGFja3RyYWNlIiwiZ2V0RGJFcnJvck1lc3NhZ2UiLCJvZGJjRXJyb3JzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwibWFwIiwiaXRlbSIsImNtZCIsImFyZ3MiLCJlcnJUeXBlIiwibmFtZSIsImluY2x1ZGVzIiwibWF0Y2hlcyIsIm1hdGNoIiwic3RhcnRzV2l0aCIsImV4dHJhY3RPcmlnaW5hbEVycm9yIiwiT1JJR0lOQUxfRVJST1JfTUVTU0FHRSIsImluc3BlY3QiLCJjb2RlIiwiZXJyTWVzc2FnZSIsInJlcGxhY2UiLCJveEVycm9yQ29kZSIsIkFTU0VSVCIsImluZGV4T2YiLCJWRVJJRlkiLCJjb25zb2xlIiwibG9nIiwiZ2V0U2VsZW5pdW1Jbml0RXJyb3IiLCJpZVpvb21FcnJvck1zZyIsInRvU3RyaW5nIiwiY2hyb21lRHJpdmVyTXNnIiwiZ2V0QXBwaXVtSW5pdEVycm9yIiwiZ2V0QXNzZXJ0RXJyb3IiLCJleHBlY3RlZCIsImFjdHVhbCIsImVycm9yQ29kZSIsIlVOS05PV05fRVJST1JfTUVTU0FHRSIsIm1zZyIsImVycm9ySW5kZXgxIiwiZXJyb3JJbmRleDIiLCJzdWJzdHJpbmciLCJ1bmtub3duRXJyb3JJbmRleCJdLCJtYXBwaW5ncyI6Ijs7OztBQWFBOzs7O0FBQ0EsTUFBTUEsSUFBSSxHQUFHQyxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFFQSxNQUFNQyxXQUFXLEdBQUc7QUFDaEJDLEVBQUFBLFlBQVksRUFBRSxjQURFO0FBRWhCQyxFQUFBQSxhQUFhLEVBQUUsZUFGQztBQUdoQkMsRUFBQUEsWUFBWSxFQUFFLGNBSEU7QUFJaEJDLEVBQUFBLFNBQVMsRUFBRSxXQUpLO0FBS2hCQyxFQUFBQSxZQUFZLEVBQUUsY0FMRTtBQU1oQkMsRUFBQUEsaUJBQWlCLEVBQUUsbUJBTkg7QUFPaEJDLEVBQUFBLGVBQWUsRUFBRSxpQkFQRDtBQVFoQkMsRUFBQUEscUJBQXFCLEVBQUUsdUJBUlA7QUFTaEJDLEVBQUFBLHVCQUF1QixFQUFFLHlCQVRUO0FBVWhCQyxFQUFBQSxtQkFBbUIsRUFBRSxxQkFWTDtBQVdoQkMsRUFBQUEsd0JBQXdCLEVBQUUsMEJBWFY7QUFZaEJDLEVBQUFBLGlDQUFpQyxFQUFFLG1DQVpuQjtBQWFoQkMsRUFBQUEsb0JBQW9CLEVBQUUsc0JBYk47QUFjaEJDLEVBQUFBLHdCQUF3QixFQUFFLDBCQWRWO0FBZWhCQyxFQUFBQSxPQUFPLEVBQUUsU0FmTztBQWdCaEJDLEVBQUFBLGdCQUFnQixFQUFFLGtCQWhCRjtBQWlCaEJDLEVBQUFBLHFCQUFxQixFQUFFLHVCQWpCUDtBQWtCaEJDLEVBQUFBLG1CQUFtQixFQUFFLHFCQWxCTDtBQW1CaEJDLEVBQUFBLGdCQUFnQixFQUFFLGtCQW5CRjtBQW9CaEJDLEVBQUFBLHdCQUF3QixFQUFFLDBCQXBCVjtBQXFC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Q0FBZixHQUFtQkEsV0FBbkIsR0FBaUNELFdBQWxDLElBQWtEdEIsc0JBQXNCLENBQUNaLE1BQXZGLENBQU47QUFHQSxNQUFJcUMsaUJBQWlCLEdBQUdKLEdBQUcsQ0FBQ2QsT0FBSixDQUFZYSxxQkFBWixDQUF4Qjs7QUFDQSxNQUFJSyxpQkFBaUIsR0FBRyxDQUFDLENBQXpCLEVBQTRCO0FBQ3hCLFdBQU9KLEdBQUcsQ0FBQ0csU0FBSixDQUFjQyxpQkFBaUIsR0FBR0wscUJBQXFCLENBQUNoQyxNQUF4RCxDQUFQO0FBQ0g7O0FBRUQsU0FBT2lDLEdBQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEhlbHBlciBtb2R1bGUgZm9yIGhhbmRsaW5nIGFuZCBjb252ZXJ0aW5nIHZhcmlvdXMgZXJyb3IgdHlwZXNcclxuICovXHJcblxyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuL094eWdlbkVycm9yJztcclxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcclxuXHJcbmNvbnN0IEVSUk9SX0NPREVTID0ge1xyXG4gICAgU0NSSVBUX0VSUk9SOiAnU0NSSVBUX0VSUk9SJyxcclxuICAgIFVOS05PV05fRVJST1I6ICdVTktOT1dOX0VSUk9SJyxcclxuICAgIEFTU0VSVF9FUlJPUjogJ0FTU0VSVF9FUlJPUicsXHJcbiAgICBQREZfRVJST1I6ICdQREZfRVJST1InLFxyXG4gICAgVkVSSUZZX0VSUk9SOiAnVkVSSUZZX0VSUk9SJyxcclxuICAgIEVMRU1FTlRfTk9UX0ZPVU5EOiAnRUxFTUVOVF9OT1RfRk9VTkQnLFxyXG4gICAgRlJBTUVfTk9UX0ZPVU5EOiAnRlJBTUVfTk9UX0ZPVU5EJyxcclxuICAgIFVOS05PV05fQ09NTUFORF9FUlJPUjogJ1VOS05PV05fQ09NTUFORF9FUlJPUicsXHJcbiAgICBTVEFMRV9FTEVNRU5UX1JFRkVSRU5DRTogJ1NUQUxFX0VMRU1FTlRfUkVGRVJFTkNFJyxcclxuICAgIEVMRU1FTlRfTk9UX1ZJU0lCTEU6ICdFTEVNRU5UX05PVF9WSVNJQkxFJyxcclxuICAgIEVMRU1FTlRfTk9UX0lOVEVSQUNUQUJMRTogJ0VMRU1FTlRfTk9UX0lOVEVSQUNUQUJMRScsXHJcbiAgICBMT0NBVE9SX01BVENIRVNfTVVMVElQTEVfRUxFTUVOVFM6ICdMT0NBVE9SX01BVENIRVNfTVVMVElQTEVfRUxFTUVOVFMnLFxyXG4gICAgRUxFTUVOVF9TVElMTF9FWElTVFM6ICdFTEVNRU5UX1NUSUxMX0VYSVNUUycsXHJcbiAgICBCUk9XU0VSX0pTX0VYRUNVVEVfRVJST1I6ICdCUk9XU0VSX0pTX0VYRUNVVEVfRVJST1InLFxyXG4gICAgVElNRU9VVDogJ1RJTUVPVVQnLFxyXG4gICAgV0lORE9XX05PVF9GT1VORDogJ1dJTkRPV19OT1RfRk9VTkQnLFxyXG4gICAgVU5FWFBFQ1RFRF9BTEVSVF9PUEVOOiAnVU5FWFBFQ1RFRF9BTEVSVF9PUEVOJyxcclxuICAgIE5PX0FMRVJUX09QRU5fRVJST1I6ICdOT19BTEVSVF9PUEVOX0VSUk9SJyxcclxuICAgIE1BSUxJTkFUT1JfRVJST1I6ICdNQUlMSU5BVE9SX0VSUk9SJyxcclxuICAgIEFQUElVTV9VTlJFQUNIQUJMRV9FUlJPUjogJ0FQUElVTV9VTlJFQUNIQUJMRV9FUlJPUicsXHJcbiAgICBTRUxFTklVTV9VTlJFQUNIQUJMRV9FUlJPUjogJ1NFTEVOSVVNX1VOUkVBQ0hBQkxFX0VSUk9SJyxcclxuICAgIENIUk9NRURSSVZFUl9FUlJPUjogJ0NIUk9NRURSSVZFUl9FUlJPUicsXHJcbiAgICBXRUJEUklWRVJfRVJST1I6ICdXRUJEUklWRVJfRVJST1InLFxyXG4gICAgREJfQ09OTkVDVElPTl9FUlJPUjogJ0RCX0NPTk5FQ1RJT05fRVJST1InLFxyXG4gICAgREJfUVVFUllfRVJST1I6ICdEQl9RVUVSWV9FUlJPUicsXHJcbiAgICBTT0FQX0VSUk9SOiAnU09BUF9FUlJPUicsXHJcbiAgICBOT1RfSU1QTEVNRU5URURfRVJST1I6ICdOT1RfSU1QTEVNRU5URURfRVJST1InLFxyXG4gICAgU0VSSUFMX1BPUlRfRVJST1I6ICdTRVJJQUxfUE9SVF9FUlJPUicsXHJcbiAgICBIVFRQX0VSUk9SOiAnSFRUUF9FUlJPUicsXHJcbiAgICBFTUFJTF9FUlJPUjogJ0VNQUlMX0VSUk9SJyxcclxuICAgIE1PRFVMRV9OT1RfSU5JVElBTElaRURfRVJST1I6ICdNT0RVTEVfTk9UX0lOSVRJQUxJWkVEX0VSUk9SJyxcclxuICAgIERFVklDRV9OT1RfRk9VTkQ6ICdERVZJQ0VfTk9UX0ZPVU5EJyxcclxuICAgIFBBUkFNRVRFUlNfRVJST1I6ICdQQVJBTUVURVJTX0VSUk9SJyxcclxuICAgIElOVkFMSURfQ0FQQUJJTElUSUVTOiAnSU5WQUxJRF9DQVBBQklMSVRJRVMnLFxyXG4gICAgQlJPV1NFUl9DT05GSUdVUkFUSU9OX0VSUk9SOiAnQlJPV1NFUl9DT05GSUdVUkFUSU9OX0VSUk9SJyxcclxuICAgIEFQUElVTV9DT05ORUNUSU9OX0VSUk9SOiAnQVBQSVVNX0NPTk5FQ1RJT05fRVJST1InLFxyXG4gICAgQVBQSVVNX1NFU1NJT05fRVJST1I6ICdBUFBJVU1fU0VTU0lPTl9FUlJPUicsXHJcbiAgICBTRUxFTklVTV9TRVNTSU9OX0VSUk9SOiAnU0VMRU5JVU1fU0VTU0lPTl9FUlJPUicsXHJcbiAgICBTRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQ6ICdTRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQnLFxyXG4gICAgU0VMRU5JVU1fQ09OTkVDVElPTl9FUlJPUjogJ1NFTEVOSVVNX0NPTk5FQ1RJT05fRVJST1InLFxyXG4gICAgVVJMX09QRU5fRVJST1I6ICdVUkxfT1BFTl9FUlJPUicsXHJcbiAgICBPUFRJT05fTk9UX0ZPVU5EOiAnT1BUSU9OX05PVF9GT1VORCcsXHJcbiAgICBBVFRSSUJVVEVfTk9UX0ZPVU5EOiAnQVRUUklCVVRFX05PVF9GT1VORCcsXHJcbiAgICBFTEVNRU5UX1NUQVRFX0VSUk9SOiAnRUxFTUVOVF9TVEFURV9FUlJPUicsXHJcbiAgICBNT0JJTEVfQ09OVEVYVF9FUlJPUjogJ01PQklMRV9DT05URVhUX0VSUk9SJyxcclxuICAgIEFQUExJQ0FUSU9OX05PVF9GT1VORF9FUlJPUjogJ0FQUExJQ0FUSU9OX05PVF9GT1VORF9FUlJPUicsXHJcbiAgICBUV0lMSU9fRVJST1I6ICdUV0lMSU9fRVJST1InLFxyXG4gICAgSE9PS19FUlJPUjogJ0hPT0tfRVJST1InLFxyXG4gICAgTk9UX1NVUFBPUlRFRDogJ05PVF9TVVBQT1JURUQnLFxyXG4gICAgQVNTRVJUX1BBU1NFRDogJ0FTU0VSVF9QQVNTRUQnLFxyXG4gICAgTU9EVUxFX05PVF9GT1VORDogJ01PRFVMRV9OT1RfRk9VTkQnLFxyXG4gICAgRklMRV9CUk9XU0VfRVJST1I6ICdGSUxFX0JST1dTRV9FUlJPUicsXHJcbiAgICBDU1ZfRVJST1I6ICdDU1ZfRVJST1InLFxyXG4gICAgQ1JZUFRPX0VSUk9SOiAnQ1JZUFRPX0VSUk9SJyxcclxuICAgIEROU19FUlJPUjogJ0ROU19FUlJPUicsXHJcbiAgICBDSVJDVUxBUl9FUlJPUjogJ0NJUkNVTEFSX0VSUk9SJyxcclxuICAgIFhNTF9FUlJPUjogJ1hNTF9FUlJPUidcclxufTtcclxuXHJcbi8vIENoYWkgdG8gT3h5Z2VuIGVycm9yIGNvZGVzIG1hcHBpbmdcclxuY29uc3QgQ0hBSV9FUlJPUl9DT0RFUyA9IHtcclxuICAgIEFzc2VydGlvbkVycm9yOiBFUlJPUl9DT0RFUy5BU1NFUlRfRVJST1JcclxufTtcclxuXHJcbi8vIEdlbmVyYWwgSmF2YVNjcmlwdCBlcnJvciBjb2RlcyBtYXBwaW5nXHJcbmNvbnN0IFNDUklQVF9FUlJPUl9DT0RFUyA9IHtcclxuICAgIFR5cGVFcnJvcjogRVJST1JfQ09ERVMuU0NSSVBUX0VSUk9SLFxyXG4gICAgU3ludGF4RXJyb3I6IEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUixcclxuICAgIFJlZmVyZW5jZUVycm9yOiBFUlJPUl9DT0RFUy5TQ1JJUFRfRVJST1IsXHJcbn07XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHtcclxuICAgIGdldEZhaWx1cmVGcm9tRXJyb3I6IGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgIGlmICghZXJyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIShlcnIgaW5zdGFuY2VvZiBPeEVycm9yKSkge1xyXG4gICAgICAgICAgICBlcnIgPSB0aGlzLmdldE94eWdlbkVycm9yKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHR5cGU6IGVyci50eXBlLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZSxcclxuICAgICAgICAgICAgZGF0YTogZXJyLmRhdGEsXHJcbiAgICAgICAgICAgIGxvY2F0aW9uOiBlcnIubG9jYXRpb24sXHJcbiAgICAgICAgICAgIHN0YWNrdHJhY2U6IGVyci5zdGFja3RyYWNlIHx8IG51bGxcclxuICAgICAgICB9O1xyXG4gICAgfSxcclxuICAgIGdldERiRXJyb3JNZXNzYWdlOiBmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICBsZXQgbWVzc2FnZSA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoZXJyICYmIGVyci5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgKz0gZXJyLm1lc3NhZ2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGVyciAmJlxyXG4gICAgICAgICAgICBlcnIub2RiY0Vycm9ycyAmJlxyXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KGVyci5vZGJjRXJyb3JzKSAmJlxyXG4gICAgICAgICAgICBlcnIub2RiY0Vycm9ycy5sZW5ndGggPiAwXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGVyci5vZGJjRXJyb3JzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gJiZcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLm1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gJzogJyAraXRlbS5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfSxcclxuICAgIGdldE94eWdlbkVycm9yOiBmdW5jdGlvbihlcnIsIG1vZHVsZSwgY21kLCBhcmdzKSB7XHJcbiAgICAgICAgLy8gcmV0dXJuIHRoZSBlcnJvciBhcyBpcyBpZiBpdCBoYXMgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZFxyXG4gICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBPeEVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlcnI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgZXJyVHlwZSA9IGVyci50eXBlIHx8IGVyci5uYW1lIHx8IHR5cGVvZiBlcnI7XHJcbiAgICAgICAgLy8gaGFuZGxlIFwiQ2FuJ3QgY2FsbCA8Y29tbWFuZD4gb24gZWxlbWVudCB3aXRoIHNlbGVjdG9yIDxzZWxlY3Rvcj4gYmVjYXVzZSBlbGVtZW50IHdhc24ndCBmb3VuZFwiXHJcbiAgICAgICAgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdiZWNhdXNlIGVsZW1lbnQgd2FzblxcJ3QgZm91bmQnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuRUxFTUVOVF9OT1RfRk9VTkQsIGVyci5tZXNzYWdlLCBudWxsLCB0cnVlLCBlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBoYW5kbGUgXCJpbnZhbGlkIGFyZ3VtZW50OiBVbnN1cHBvcnRlZCBsb2NhdG9yIHN0cmF0ZWd5OiAtYW5kcm9pZCB1aWF1dG9tYXRvclwiIGZvciBtb2JpbGUuXHJcbiAgICAgICAgLy8gdXN1YWxseSBkdWUgdG8gbm90IHVzaW5nIHRoZSBjb3JyZWN0IGNvbnRleHRcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5zdXBwb3J0ZWQgbG9jYXRvciBzdHJhdGVneScpKSB7XHJcbiAgICAgICAgICAgIGxldCBtYXRjaGVzID0gZXJyLm1lc3NhZ2UubWF0Y2goL2ludmFsaWQgYXJndW1lbnQ6ICguKikvaSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5NT0JJTEVfQ09OVEVYVF9FUlJPUiwgKG1hdGNoZXMubGVuZ3RoID09PSAyID8gbWF0Y2hlc1sxXSA6IGVyci5tZXNzYWdlKSArXHJcbiAgICAgICAgICAgICAgICAnLiBNYWtlIHN1cmUgeW91IGFyZSB1c2luZyB0aGUgY29ycmVjdCBtb2JpbGUgY29udGV4dC4gU2VlIG1vYi5zZXROYXRpdmVDb250ZXh0IGFuZCBtb2Iuc2V0V2ViVmlld0NvbnRleHQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGhhbmRsZSBcImludmFsaWQgc2VsZWN0b3I6IFVuYWJsZSB0byBsb2NhdGUgYW4gZWxlbWVudCB3aXRoIHRoZSB4cGF0aCBleHByZXNzaW9uXCJcclxuICAgICAgICAvLyB1c3VhbGx5IGR1ZSB0byBpbnZhbGlkIHhwYXRoXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1VuYWJsZSB0byBsb2NhdGUgYW4gZWxlbWVudCB3aXRoIHRoZSB4cGF0aCBleHByZXNzaW9uJykpIHtcclxuICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBlcnIubWVzc2FnZS5tYXRjaCgvKFRoZSBzdHJpbmcgJy4qJyBpcyBub3QgYSB2YWxpZCBYUGF0aCBleHByZXNzaW9uLikvaSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TQ1JJUFRfRVJST1IsIChtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoID09PSAyID8gbWF0Y2hlc1sxXSA6IGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGludmFsaWQgY3NzIGxvY2F0b3Igb24gQ2hyb21lL0lFLiBlLmcuIGNzcz0jXFw6cDBcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnQW4gaW52YWxpZCBvciBpbGxlZ2FsIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0NSSVBUX0VSUk9SLCAnQW4gaW52YWxpZCBvciBpbGxlZ2FsIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW52YWxpZCBjc3MgbG9jYXRvciBvbiBGaXJlZm94LiBlLmcuIGNzcz0jXFw6cDBcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5zdGFydHNXaXRoKCdHaXZlbiBjc3Mgc2VsZWN0b3IgZXhwcmVzc2lvbicpKSB7XHJcbiAgICAgICAgICAgIGxldCBtYXRjaGVzID0gZXJyLm1lc3NhZ2UubWF0Y2goLyhHaXZlbiBjc3Mgc2VsZWN0b3IgZXhwcmVzc2lvbiBcIi4qXCIgaXMgaW52YWxpZCkuKi9pKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUiwgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPT09IDIgPyBtYXRjaGVzWzFdIDogZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdVbmFibGUgdG8gYXV0b21hdGUgQ2hyb21lIHZlcnNpb24nKSB8fFxyXG4gICAgICAgICAgICBlcnIubWVzc2FnZS5pbmNsdWRlcygnTm8gQ2hyb21lZHJpdmVyIGZvdW5kIHRoYXQgY2FuIGF1dG9tYXRlJykpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5DSFJPTUVEUklWRVJfRVJST1IsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGhhbmRsZSB2YXJpb3VzIHR5cGVzIG9mICdPcmlnaW5hbCBlcnJvcidcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcyhPUklHSU5BTF9FUlJPUl9NRVNTQUdFKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuVU5LTk9XTl9FUlJPUiwgZXh0cmFjdE9yaWdpbmFsRXJyb3IoZXJyLm1lc3NhZ2UpLCB1dGlsLmluc3BlY3QoZXJyKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGludmFsaWQgVVJMIGluIG9wZW4gY29tbWFuZFxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdJbnZhbGlkIFVSTCcpKSB7XHJcbiAgICAgICAgICAgIGxldCBtYXRjaGVzID0gZXJyLm1lc3NhZ2UubWF0Y2goLyggSW52YWxpZCBVUkw6IC4qJCkuKi9pKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUiwgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPT09IDIgPyBtYXRjaGVzWzFdIDogZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdXN1YWxseSBvbiBtb2JpbGUgQ2hyb21lIHdoZW4gZWxlbWVudCBpcyBvdmVybGFwcGVkIGJ5IGFub3RoZXIgZWxlbWVudFxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLnN0YXJ0c1dpdGgoJ2VsZW1lbnQgY2xpY2sgaW50ZXJjZXB0ZWQnKSkge1xyXG4gICAgICAgICAgICBsZXQgbWF0Y2hlcyA9IGVyci5tZXNzYWdlLm1hdGNoKC9lbGVtZW50IGNsaWNrIGludGVyY2VwdGVkOiAoLiopL2kpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuRUxFTUVOVF9OT1RfVklTSUJMRSwgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPT09IDIgPyBtYXRjaGVzWzFdIDogZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdXN1YWxseSBiZWNhdXNlIFNlbGVuaXVtIGhhcyBraWxsZWQgdGhlIHNlc3Npb24gZHVlIHRvIGV4Y2VlZGluZyAnLXRpbWVvdXQnIHRpbWVvdXRcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5zdGFydHNXaXRoKCdObyBhY3RpdmUgc2Vzc2lvbiB3aXRoIElEJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX1NFU1NJT05fRVJST1IsICdFeGVjdXRpb24gdGltZSBleGNlZWRlZCB0aGUgdGltZW91dCBzZXQgYnkgU2VsZW5pdW0nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gd2hlbiBkcml2ZXIgKElFRHJpdmVyU2VydmVyLCBDaHJvbWVEcml2ZXIsIGV0YykgY3Jhc2hlc1xyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlID09PSAnamF2YS5uZXQuQ29ubmVjdEV4Y2VwdGlvbjogQ29ubmVjdGlvbiByZWZ1c2VkOiBjb25uZWN0Jykge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuV0VCRFJJVkVSX0VSUk9SLCAnVGhlIHVuZGVybHlpbmcgV2ViRHJpdmVyIHNlZW1zIHRvIGhhdmUgY3Jhc2hlZDogJyArIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gc3RhbGUgZWxlbWVudCByZWZlcmVuY2VcclxuICAgICAgICBlbHNlIGlmIChlcnIubmFtZSAmJiBlcnIubmFtZS5pbmNsdWRlcygnc3RhbGUgZWxlbWVudCByZWZlcmVuY2UnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU1RBTEVfRUxFTUVOVF9SRUZFUkVOQ0UsIGVyci5uYW1lICsgJyAnICsgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChlcnIuY29kZSAmJiBlcnIuY29kZSA9PT0gJ01PRFVMRV9OT1RfRk9VTkQnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5NT0RVTEVfTk9UX0ZPVU5ELCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vICB3aGVuIGRvaW5nIGFuIG9wZXJhdGlvbiBvbiBhbiBlbGVtZW50IChlLmcuIGNsaWNrKSBidXQgdGhlIHdpbmRvdyB3YXMgYWxyZWFkeSBjbG9zZWRcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnbm8gc3VjaCB3aW5kb3cnKSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygndGFyZ2V0IHdpbmRvdyBhbHJlYWR5IGNsb3NlZCcpICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCd3ZWIgdmlldyBub3QgZm91bmQnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuV0lORE9XX05PVF9GT1VORCwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBleGFtcGxlOiBUaGUgZWxlbWVudCB3aXRoIHNlbGVjdG9yICoqKiB5b3UgdHJ5aW5nIHRvIHBhc3MgaW50byB0aGUgZXhlY3V0ZSBtZXRob2Qgd2Fzbid0IGZvdW5kXHJcbiAgICAgICAgLy8gd2hlbiBlbGVtZW50IHdhcyBkZWxldGVkIGZyb20gRE9NXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ3lvdSB0cnlpbmcgdG8gcGFzcyBpbnRvIHRoZSBleGVjdXRlIG1ldGhvZCB3YXNuXFwndCBmb3VuZCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5FTEVNRU5UX05PVF9GT1VORCwgIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gd2hlbiBkb2luZyBhbiBvcGVyYXRpb24gb24gYW4gZWxlbWVudCByZWZlcmVuY2UgKGUuZy4gY2xpY2spIGJ1dCB0aGUgcGFnZSB3YXMgYWxyZWFkeSBjaGFuZ2VkXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ2VsZW1lbnQgbm90IGludGVyYWN0YWJsZScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5FTEVNRU5UX05PVF9JTlRFUkFDVEFCTEUsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW52YWxpZCBzZWxlY3RvcjogamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjogVW5hYmxlIHRvIGNvbXBpbGUgc2VsZWN0b3IgLi4uXHJcbiAgICAgICAgZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIGVyci5uYW1lICYmXHJcbiAgICAgICAgICAgIGVyci5uYW1lID09PSAnaW52YWxpZCBzZWxlY3RvcidcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUiwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBSZXF1ZXN0RXJyb3I6IFRpbWVvdXQgYXdhaXRpbmcgJ3JlcXVlc3QnIGZvciAzMTAwMDBtcywgbmFtZTogJ1RpbWVvdXRFcnJvcidcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnVGltZW91dCBhd2FpdGluZyBcXCdyZXF1ZXN0XFwnIGZvcicpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVyck1lc3NhZ2UgPSBlcnIubWVzc2FnZS5yZXBsYWNlKFxyXG4gICAgICAgICAgICAgICAgJ1RpbWVvdXQgYXdhaXRpbmcgXFwncmVxdWVzdFxcJyBmb3InLFxyXG4gICAgICAgICAgICAgICAgJ0NvdWxkblxcJ3QgZ2V0IGEgcmVzcG9uc2UgZnJvbSBTZWxlbml1bS9XZWJEcml2ZXIgd2l0aGluJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fU0VTU0lPTl9USU1FT1VULCBlcnJNZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZXJyICYmIGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdzb2NrZXQgaGFuZyB1cCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyciAmJiBlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnVGltZWQgb3V0IHJlY2VpdmluZyBtZXNzYWdlIGZyb20gcmVuZGVyZScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRyeSB0byByZXNvbHZlIENoYWkgZXJyb3IgY29kZVxyXG4gICAgICAgIHZhciBveEVycm9yQ29kZSA9IENIQUlfRVJST1JfQ09ERVNbZXJyVHlwZV07XHJcbiAgICAgICAgaWYgKG94RXJyb3JDb2RlKSB7XHJcbiAgICAgICAgICAgIC8vIHRocm93IG5vbi1mYXRhbCBlcnJvciBpZiBpdCdzIGEgXCJ2ZXJpZnlcIiBtb2R1bGUgb3IgbWV0aG9kIFxyXG4gICAgICAgICAgICBpZiAob3hFcnJvckNvZGUgPT09IEVSUk9SX0NPREVTLkFTU0VSVCAmJlxyXG5cdFx0XHRcdChtb2R1bGUgPT09ICd2ZXJpZnknIHx8IGNtZC5pbmRleE9mKCd2ZXJpZnknKSA9PT0gMCkpIHsgLy8gdmVyaWZ5LiosICoudmVyaWZ5KlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlZFUklGWSwgZXJyLm1lc3NhZ2UsIG51bGwsIGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3Iob3hFcnJvckNvZGUsIGVyci5tZXNzYWdlLCBudWxsLCB0cnVlLCBlcnIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdHJ5IHRvIHJlc29sdmUgSmF2YVNjcmlwdCBlcnJvciBjb2RlXHJcbiAgICAgICAgb3hFcnJvckNvZGUgPSBTQ1JJUFRfRVJST1JfQ09ERVNbZXJyVHlwZV07XHJcbiAgICAgICAgaWYgKG94RXJyb3JDb2RlKSB7XHJcbiAgICAgICAgICAgIC8vIHRocm93IG5vbi1mYXRhbCBlcnJvciBpZiBpdCdzIGEgXCJ2ZXJpZnlcIiBtb2R1bGUgb3IgbWV0aG9kIFxyXG4gICAgICAgICAgICBpZiAob3hFcnJvckNvZGUgPT09IEVSUk9SX0NPREVTLkFTU0VSVCAmJlxyXG5cdFx0XHRcdChtb2R1bGUgPT09ICd2ZXJpZnknIHx8IGNtZC5pbmRleE9mKCd2ZXJpZnknKSA9PT0gMCkpIHsgLy8gdmVyaWZ5LiosICoudmVyaWZ5KlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlZFUklGWSwgZXJyLm1lc3NhZ2UsIG51bGwsIGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3Iob3hFcnJvckNvZGUsIGVyci5tZXNzYWdlIHx8IG51bGwsIG51bGwsIHRydWUsIGVycik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zb2xlLmxvZygnPT09IEVycm9yIERldGFpbHMgPT09Jyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1R5cGU6ICcgKyBlcnIudHlwZSArICcgTmFtZTogJyArIGVyci5uYW1lICsgJyBDb2RlOiAnICsgZXJyLmNvZGUgKyAnIE1zZzogJyArIGVyci5tZXNzYWdlKTtcclxuICAgICAgICBjb25zb2xlLmxvZyh1dGlsLmluc3BlY3QoZXJyKSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGVyck1lc3NhZ2UgPSBlcnIubWVzc2FnZSA/IGAke2VyclR5cGV9OiAke2Vyci5tZXNzYWdlfWAgOiBgJHtlcnJUeXBlfWA7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlVOS05PV05fRVJST1IsIGVyck1lc3NhZ2UsIHV0aWwuaW5zcGVjdChlcnIpLCB0cnVlLCBlcnIpO1xyXG4gICAgfSxcclxuICAgIGdldFNlbGVuaXVtSW5pdEVycm9yOiBmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICBpZiAoZXJyLm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgdmFyIGllWm9vbUVycm9yTXNnID0gZXJyLm1lc3NhZ2UubWF0Y2goLyhVbmV4cGVjdGVkIGVycm9yIGxhdW5jaGluZyBJbnRlcm5ldCBFeHBsb3JlclxcLiBCcm93c2VyIHpvb20gbGV2ZWwgd2FzIHNldCB0byBcXGQrJVxcLiBJdCBzaG91bGQgYmUgc2V0IHRvIFxcZCslKS9nbSk7XHJcbiAgICAgICAgICAgIGlmIChpZVpvb21FcnJvck1zZykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkJST1dTRVJfQ09ORklHVVJBVElPTl9FUlJPUiwgaWVab29tRXJyb3JNc2cudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5hYmxlIHRvIGNyZWF0ZSBuZXcgc2VydmljZTogQ2hyb21lRHJpdmVyU2VydmljZScpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQ0hST01FRFJJVkVSX0VSUk9SLCBlcnIubWVzc2FnZSwgbnVsbCwgdHJ1ZSwgZXJyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdVbmFibGUgdG8gY3JlYXRlIG5ldyBzZXJ2aWNlOicpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fVU5SRUFDSEFCTEVfRVJST1IsIGVyci5tZXNzYWdlLCBudWxsLCB0cnVlLCBlcnIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgY2hyb21lRHJpdmVyTXNnID0gZXJyLm1lc3NhZ2UubWF0Y2goLyhUaGlzIHZlcnNpb24gb2YgQ2hyb21lRHJpdmVyIG9ubHkgc3VwcG9ydHMgQ2hyb21lIHZlcnNpb24gWzAtOV0qKS9nbSk7XHJcbiAgICAgICAgICAgIGlmIChjaHJvbWVEcml2ZXJNc2cpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5DSFJPTUVEUklWRVJfRVJST1IsIGNocm9tZURyaXZlck1zZy50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdjYW5ub3QgZmluZCBDaHJvbWUgYmluYXJ5JykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkNIUk9NRURSSVZFUl9FUlJPUiwgJ0Nhbm5vdCBmaW5kIENocm9tZSBiaW5hcnknKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5jb2RlID09PSAnRUNPTk5SRUZVU0VEJyB8fCBlcnIuY29kZSA9PT0gJ0VDT05OUkVTRVQnIHx8IGVyci5jb2RlID09PSAnRU5PVEZPVU5EJyB8fCBlcnIubWVzc2FnZSA9PT0gJ0ZhaWxlZCB0byBjcmVhdGUgc2Vzc2lvbi5cXG5zb2NrZXQgaGFuZyB1cCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX1VOUkVBQ0hBQkxFX0VSUk9SLCBcIkNvdWxkbid0IGNvbm5lY3QgdG8gU2VsZW5pdW0gc2VydmVyXCIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UgPT09ICdBbGwgbWludXRlcyBmb3IgdGhpcyBvcmdhbml6YXRpb24gaGFzIGJlZW4gZXhhdXN0ZWQnIHx8XHJcbiAgICAgICAgICAgIGVyci5tZXNzYWdlID09PSAnNDAxIFVuYXV0aG9yaXplZCcgfHxcclxuICAgICAgICAgICAgZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnRmFpbGVkIHRvIGNyZWF0ZSBzZXNzaW9uLicpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TRUxFTklVTV9DT05ORUNUSU9OX0VSUk9SLCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5hYmxlIHRvIGNyZWF0ZSBuZXcgc2VydmljZTonKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fQ09OTkVDVElPTl9FUlJPUiwgZXJyLm1lc3NhZ2UgKyAnXFxuXFxuVGhpcyBpcyBwcm9iYWJseSBkdWUgdG8gbWlzc2luZyBDaHJvbWVEcml2ZXIvSUVEcml2ZXJTZXJ2ZXIvR2Vja29Ecml2ZXIgYmluYXJ5LlxcbicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coJz09PSBFcnJvciBEZXRhaWxzID09PScpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdUeXBlOiAnICsgZXJyLnR5cGUgKyAnIE5hbWU6ICcgKyBlcnIubmFtZSArICcgQ29kZTogJyArIGVyci5jb2RlICsgJyBNc2c6ICcgKyBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgY29uc29sZS5sb2codXRpbC5pbnNwZWN0KGVycikpO1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuVU5LTk9XTl9FUlJPUiwgZXJyLnR5cGUgKyAnOiAnICsgZXJyLm1lc3NhZ2UsIHV0aWwuaW5zcGVjdChlcnIpKTtcclxuICAgIH0sXHJcbiAgICBnZXRBcHBpdW1Jbml0RXJyb3I6IGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnY2Fubm90IGZpbmQgQ2hyb21lIGJpbmFyeScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5DSFJPTUVEUklWRVJfRVJST1IsICdDYW5ub3QgZmluZCBDaHJvbWUgYmluYXJ5Jyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIuY29kZSA9PT0gJ0VDT05OUkVGVVNFRCcgfHwgZXJyLmNvZGUgPT09ICdFQ09OTlJFU0VUJyB8fCBlcnIuY29kZSA9PT0gJ0VOT1RGT1VORCcgfHwgZXJyLm1lc3NhZ2UgPT09ICdGYWlsZWQgdG8gY3JlYXRlIHNlc3Npb24uXFxuc29ja2V0IGhhbmcgdXAnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5BUFBJVU1fVU5SRUFDSEFCTEVfRVJST1IsIFwiQ291bGRuJ3QgY29ubmVjdCB0byBBcHBpdW0gc2VydmVyXCIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ0NvdWxkIG5vdCBmaW5kIGEgY29ubmVjdGVkIEFuZHJvaWQgZGV2aWNlJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkRFVklDRV9OT1RfRk9VTkQsICdDb3VsZCBub3QgZmluZCBhIGNvbm5lY3RlZCBBbmRyb2lkIGRldmljZScpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1VuYWJsZSB0byBhdXRvbWF0ZSBDaHJvbWUgdmVyc2lvbicpKSB7ICAgICAgICAgIC8vIGFwcGl1bSA8PSAxLjE0XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5DSFJPTUVEUklWRVJfRVJST1IsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnTm8gQ2hyb21lZHJpdmVyIGZvdW5kIHRoYXQgY2FuIGF1dG9tYXRlJykpIHsgICAgLy8gYXBwaXVtID49IDEuMTVcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkNIUk9NRURSSVZFUl9FUlJPUiwgZXh0cmFjdE9yaWdpbmFsRXJyb3IoZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdVbmFibGUgdG8gZmluZCBhbiBhY3RpdmUgZGV2aWNlIG9yIGVtdWxhdG9yIHdpdGgnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuREVWSUNFX05PVF9GT1VORCwgZXh0cmFjdE9yaWdpbmFsRXJyb3IoZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdpcyBub3QgaW5zdGFsbGVkIG9uIGRldmljZScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5BUFBMSUNBVElPTl9OT1RfRk9VTkRfRVJST1IsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSA9PT0gJ0FsbCBtaW51dGVzIGZvciB0aGlzIG9yZ2FuaXphdGlvbiBoYXMgYmVlbiBleGF1c3RlZCcgfHxcclxuICAgICAgICAgICAgZXJyLm1lc3NhZ2UgPT09ICc0MDEgVW5hdXRob3JpemVkJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQVBQSVVNX0NPTk5FQ1RJT05fRVJST1IsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIChcclxuICAgICAgICAgICAgICAgIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdBIG5ldyBzZXNzaW9uIGNvdWxkIG5vdCBiZSBjcmVhdGVkLicpIHx8XHJcbiAgICAgICAgICAgICAgICBlcnIubWVzc2FnZS5pbmNsdWRlcygnRmFpbGVkIHRvIGNyZWF0ZSBzZXNzaW9uLicpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQVBQSVVNX1NFU1NJT05fRVJST1IsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSwgbnVsbCwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zb2xlLmxvZygnPT09IEVycm9yIERldGFpbHMgPT09Jyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1R5cGU6ICcgKyBlcnIudHlwZSArICcgTmFtZTogJyArIGVyci5uYW1lICsgJyBDb2RlOiAnICsgZXJyLmNvZGUgKyAnIE1zZzogJyArIGVyci5tZXNzYWdlKTtcclxuICAgICAgICBjb25zb2xlLmxvZyh1dGlsLmluc3BlY3QoZXJyKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5VTktOT1dOX0VSUk9SLCBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnIubWVzc2FnZSksIHV0aWwuaW5zcGVjdChlcnIpKTtcclxuICAgIH0sXHJcbiAgICBnZXRBc3NlcnRFcnJvcjogZnVuY3Rpb24oZXhwZWN0ZWQsIGFjdHVhbCkge1xyXG4gICAgICAgIGFjdHVhbCA9IGFjdHVhbC50b1N0cmluZygpLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKTtcclxuICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQVNTRVJUX0VSUk9SLCBgRXhwZWN0ZWQ6IFwiJHtleHBlY3RlZH1cIi4gR290OiBcIiR7YWN0dWFsfVwiYCk7XHJcbiAgICB9LFxyXG4gICAgZXJyb3JDb2RlOiBFUlJPUl9DT0RFU1xyXG59O1xyXG5cclxuY29uc3QgT1JJR0lOQUxfRVJST1JfTUVTU0FHRSA9ICdPcmlnaW5hbCBlcnJvcjogJztcclxuY29uc3QgVU5LTk9XTl9FUlJPUl9NRVNTQUdFID0gJ3Vua25vd24gZXJyb3I6ICc7XHJcblxyXG5mdW5jdGlvbiBleHRyYWN0T3JpZ2luYWxFcnJvcihtc2cpIHtcclxuICAgIGlmICghbXNnKSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBlcnJvckluZGV4MSA9IG1zZy5pbmRleE9mKE9SSUdJTkFMX0VSUk9SX01FU1NBR0UpO1xyXG4gICAgaWYgKGVycm9ySW5kZXgxID09PSAtMSkge1xyXG4gICAgICAgIHJldHVybiBtc2c7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhlcmUgY291bGQgYW5vdGhlIG5lc3RlZCBcIm9yaWdpbmFsIGVycm9yXCJcclxuICAgIHZhciBlcnJvckluZGV4MiA9IG1zZy5pbmRleE9mKE9SSUdJTkFMX0VSUk9SX01FU1NBR0UsIGVycm9ySW5kZXgxICsgT1JJR0lOQUxfRVJST1JfTUVTU0FHRS5sZW5ndGgpO1xyXG5cclxuICAgIG1zZyA9IG1zZy5zdWJzdHJpbmcoKGVycm9ySW5kZXgyID4gLTEgPyBlcnJvckluZGV4MiA6IGVycm9ySW5kZXgxKSAgKyBPUklHSU5BTF9FUlJPUl9NRVNTQUdFLmxlbmd0aCk7XHJcblxyXG4gICAgLy8gc3RyaXAgJ3Vua25vd24gZXJyb3I6J1xyXG4gICAgdmFyIHVua25vd25FcnJvckluZGV4ID0gbXNnLmluZGV4T2YoVU5LTk9XTl9FUlJPUl9NRVNTQUdFKTtcclxuICAgIGlmICh1bmtub3duRXJyb3JJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIG1zZy5zdWJzdHJpbmcodW5rbm93bkVycm9ySW5kZXggKyBVTktOT1dOX0VSUk9SX01FU1NBR0UubGVuZ3RoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbXNnO1xyXG59XHJcbiJdfQ==
|
package/build/lib/cli.js
CHANGED
|
@@ -132,4 +132,4 @@ Web test options:
|
|
|
132
132
|
Mobile test options:
|
|
133
133
|
-s, --server=SERVER_URL Appium server URL. Default is http://localhost:4723/wd/hub.`);
|
|
134
134
|
}
|
|
135
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLmpzIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJvbiIsImhhbmRsZVNpZ0ludCIsImVycm9yIiwiY29uc29sZSIsImFyZ3YiLCJyZXF1aXJlIiwic2xpY2UiLCJ2IiwidmVyc2lvbiIsImxvZyIsImV4aXQiLCJfIiwiaGVscCIsInByaW50VXNhZ2UiLCJkIiwiZGVsYXkiLCJwYXJzZUludCIsInRhcmdldEZpbGUiLCJjbGl1dGlsIiwicHJvY2Vzc1RhcmdldFBhdGgiLCJjb25maWciLCJnZXRDb25maWd1cmF0aW9ucyIsImdlbmVyYXRlVGVzdE9wdGlvbnMiLCJ0aGVuIiwib3B0aW9ucyIsInByZXBhcmVBbmRTdGFydFRoZVRlc3QiLCJjb2RlIiwiZSIsImZyYW1ld29yayIsInN1aXRlcyIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwiY2Fwc0FyciIsImNhcGFiaWxpdGllcyIsImV4aXRDb2RlIiwicmVwb3J0ZXIiLCJSZXBvcnRBZ2dyZWdhdG9yIiwibGF1bmNoZXIiLCJMYXVuY2hlciIsInJ1biIsImdlbmVyYXRlUmVwb3J0cyIsImdldEV4aXRDb2RlIiwidHJhY2UiLCJzZXRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFTQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFQUEsT0FBTyxDQUFDQyxFQUFSLENBQVcsUUFBWCxFQUFxQkMsWUFBckI7QUFDQUYsT0FBTyxDQUFDQyxFQUFSLENBQVcsbUJBQVgsRUFBZ0NFLEtBQUssSUFBSTtBQUNyQ0MsRUFBQUEsT0FBTyxDQUFDRCxLQUFSLENBQWMsbUJBQWQsRUFBbUNBLEtBQW5DO0FBQ0gsQ0FGRDtBQUlBSCxPQUFPLENBQUNDLEVBQVIsQ0FBVyxvQkFBWCxFQUFpQ0UsS0FBSyxJQUFJO0FBQ3RDQyxFQUFBQSxPQUFPLENBQUNELEtBQVIsQ0FBYyxvQkFBZCxFQUFvQ0EsS0FBcEM7QUFDSCxDQUZEOztBQUtBLE1BQU1FLElBQUksR0FBR0MsT0FBTyxDQUFDLFVBQUQs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QUFFQSxNQUFJO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLElBQUlDLHlCQUFKLENBQXFCYixPQUFyQixDQUFqQjtBQUNBLFVBQU1jLFFBQVEsR0FBRyxJQUFJQyxpQkFBSixDQUFhZixPQUFiLEVBQXNCWSxRQUF0QixDQUFqQjtBQUNBakMsSUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQVksaUJBQVo7QUFDQSxVQUFNNkIsUUFBUSxDQUFDRSxHQUFULENBQWFQLE9BQWIsQ0FBTjtBQUNBRyxJQUFBQSxRQUFRLENBQUNLLGVBQVQ7QUFDQU4sSUFBQUEsUUFBUSxHQUFHQyxRQUFRLENBQUNNLFdBQVQsRUFBWDtBQUNILEdBUEQsQ0FRQSxPQUFPZixDQUFQLEVBQVU7QUFDTnhCLElBQUFBLE9BQU8sQ0FBQ0QsS0FBUixDQUFjLGFBQWQsRUFBNkJ5QixDQUE3QjtBQUNBeEIsSUFBQUEsT0FBTyxDQUFDd0MsS0FBUjtBQUNBNUMsSUFBQUEsT0FBTyxDQUFDVyxJQUFSLENBQWEsQ0FBYjtBQUNIOztBQUNELFNBQU95QixRQUFQO0FBQ0g7O0FBRUQsU0FBU2xDLFlBQVQsR0FBd0I7QUFFcEIyQyxFQUFBQSxVQUFVLENBQUMsTUFBTTdDLE9BQU8sQ0FBQ1csSUFBUixDQUFhLENBQWIsQ0FBUCxFQUF3QixJQUF4QixDQUFWO0FBQ0g7O0FBRUQsU0FBU0csVUFBVCxHQUFzQjtBQUNsQlYsRUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQWE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RkFoQ0k7QUFpQ0giLCJzb3VyY2VzQ29udGVudCI6WyIjISAvdXNyL2Jpbi9lbnYgbm9kZVxuLypcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqL1xuaW1wb3J0ICogYXMgY2xpdXRpbCBmcm9tICcuL2NsaS11dGlsJztcbmltcG9ydCBMYXVuY2hlciBmcm9tICcuL2xhdW5jaGVyJztcbmltcG9ydCBSZXBvcnRBZ2dyZWdhdG9yIGZyb20gJy4uL3JlcG9ydGVyL1JlcG9ydEFnZ3JlZ2F0b3InO1xuXG5wcm9jZXNzLm9uKCdTSUdJTlQnLCBoYW5kbGVTaWdJbnQpO1xucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnJvciA9PiB7XG4gICAgY29uc29sZS5lcnJvcigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnJvcik7XG59KTtcblxucHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyb3IgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoJ3VuaGFuZGxlZFJlamVjdGlvbicsIGVycm9yKTtcbn0pO1xuXG4vLyBwYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzXG5jb25zdCBhcmd2ID0gcmVxdWlyZSgnbWluaW1pc3QnKShwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpO1xuXG5pZiAoYXJndi52IHx8IGFyZ3YudmVyc2lvbikge1xuICAgIGNvbnNvbGUubG9nKHJlcXVpcmUoJy4uLy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb24pO1xuICAgIHByb2Nlc3MuZXhpdCgwKTtcbn0gZWxzZSBpZiAodHlwZW9mKGFyZ3YuX1swXSkgPT09ICd1bmRlZmluZWQnIHx8IGFyZ3YuaGVscCkge1xuICAgIHByaW50VXNhZ2UoKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbmlmIChhcmd2LmQgfHwgYXJndi5kZWxheSkge1xuICAgIGNvbnN0IGRlbGF5ID0gYXJndi5kIHx8IGFyZ3YuZGVsYXk7XG4gICAgaWYgKCEocGFyc2VJbnQoZGVsYXkpID4gMCkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgYXJndW1lbnQgLSAnZGVsYXknIHNob3VsZCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuXCIpO1xuICAgICAgICBwcmludFVzYWdlKCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG59XG5cbmNvbnN0IHRhcmdldEZpbGUgPSBjbGl1dGlsLnByb2Nlc3NUYXJnZXRQYXRoKGFyZ3YuX1swXSk7XG5pZiAodGFyZ2V0RmlsZSA9PSBudWxsKSB7XG4gICAgcHJpbnRVc2FnZSgpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbn1cblxuY29uc3QgY29uZmlnID0gY2xpdXRpbC5nZXRDb25maWd1cmF0aW9ucyh0YXJnZXRGaWxlLCBhcmd2KTtcblxuY2xpdXRpbC5nZW5lcmF0ZVRlc3RPcHRpb25zKGNvbmZpZywgYXJndikudGhlbihcbiAgICAob3B0aW9ucykgPT4ge1xuICAgICAgICBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpLnRoZW4oXG4gICAgICAgICAgICAoY29kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEb25lIScpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdChjb2RlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Rlc3QgZmFpbGVkOiAnLCBlKTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSxcbiAgICAoZSkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdUZXN0IGZhaWxlZCBvbiBnZW5lcmF0ZSBzdGF0ZTogJywgZSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4pO1xuXG5hc3luYyBmdW5jdGlvbiBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5mcmFtZXdvcmsgPT09ICdveHlnZW4nICYmICghb3B0aW9ucy5zdWl0ZXMgfHwgIUFycmF5LmlzQXJyYXkob3B0aW9ucy5zdWl0ZXMpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCB0aGUgdGVzdCAtIG5vIHN1aXRlcyBhcmUgc3BlY2lmaWVkLicpO1xuICAgIH1cbiAgICBsZXQgY2Fwc0FyciA9IG9wdGlvbnMuY2FwYWJpbGl0aWVzIHx8IFt7fV07XG4gICAgLy8gY2hlY2sgaWYgY2FwYWJpbGl0aWVzIG9iamVjdCBpcyBhbiBhcnJheSBvciBhIGhhc2h0YWJsZVxuICAgIGlmICghKGNhcHNBcnIgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgICAgY2Fwc0FyciA9IFtjYXBzQXJyXTtcbiAgICB9XG4gICAgbGV0IGV4aXRDb2RlID0gMDtcbiAgICAvLyBzdGFydCBsYXVuY2hlclxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcG9ydGVyID0gbmV3IFJlcG9ydEFnZ3JlZ2F0b3Iob3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGxhdW5jaGVyID0gbmV3IExhdW5jaGVyKG9wdGlvbnMsIHJlcG9ydGVyKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1Rlc3Qgc3RhcnRlZC4uLicpO1xuICAgICAgICBhd2FpdCBsYXVuY2hlci5ydW4oY2Fwc0Fycik7XG4gICAgICAgIHJlcG9ydGVyLmdlbmVyYXRlUmVwb3J0cygpO1xuICAgICAgICBleGl0Q29kZSA9IHJlcG9ydGVyLmdldEV4aXRDb2RlKCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhdGFsIGVycm9yJywgZSk7XG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgICByZXR1cm4gZXhpdENvZGU7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVNpZ0ludCgpIHtcbiAgICAvLyBkZWxheSBwcm9jZXNzIGV4aXQgdG8gbGV0IE94eWdlbiB0byBwcm9wZXJseSBkaXNwb3NlXG4gICAgc2V0VGltZW91dCgoKSA9PiBwcm9jZXNzLmV4aXQoMCksIDIwMDApO1xufVxuXG5mdW5jdGlvbiBwcmludFVzYWdlKCkge1xuICAgIGNvbnNvbGUubG9nKGBVc2FnZTogb3h5Z2VuIFtPUFRJT05TXS4uLiBGSUxFXG5cbkZJTEUgLSBQYXRoIHRvIGEgdGVzdCBzY3JpcHQgKC5qcykgb3IgYSBwcm9qZWN0IGNvbmZpZ3VyYXRpb24gKC5qc29uKSBmaWxlLlxuXG5HZW5lcmFsIG9wdGlvbnM6XG4gIC1kLCAtLWRlbGF5PVNFQ09ORFMgICAgICAgIERlbGF5IGJldHdlZW4gZWFjaCBjb21tYW5kIGluIHNlY29uZHMuXG4gICAgICAtLXJmPXtodG1sfHBkZnx4bWx8ZXhjZWx8anVuaXR8anNvbn0gIFJlcG9ydHMgZmlsZSBmb3JtYXQuIERlZmF1bHQgaXMgaHRtbC5cbiAgICAgIC0tcm89UEFUSCAgICAgICAgICAgICAgT3V0cHV0IHBhdGggZm9yIHJlcG9ydCBmaWxlLiBJZiBzcGVjaWZpZWQsIHRoZSByZXBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBvdmVyd3JpdGUgYW55IHByZXZpb3VzIHJlcG9ydHMuXG4gIC1pLCAtLWl0ZXI9Q09VTlQgICAgICAgICAgIE51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIHRlc3QuIERlZmF1bHQgaXMgMS5cbiAgLXAsIC0tcGFyYW09RklMRSAgICAgICAgICAgUGFyYW1ldGVycyBmaWxlLiBJZiBub3Qgc3BlY2lmaWVkIGFuIGF0dGVtcHQgd2lsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBtYWRlIHRvIGxvYWQgcGFyYW1ldGVycyBmcm9tIGEgZmlsZSBuYW1lZCBzYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSB0ZXN0IHNjcmlwdCwgbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBoYXZpbmcgZXh0ZW5zaW9uIC0geGxzeCwgeGxzLCBjc3YsIG9yIHR4dC5cbiAgICAgIC0tcG09e3NlcXxyYW5kb218YWxsfSAgT3JkZXIgaW4gd2hpY2ggdG8gcmVhZCB0aGUgcGFyYW1ldGVycyAtIHNlcXVlbnRpYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbSwgYWxsLiBEZWZhdWx0IGlzIHNlcS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gJ3NlcScgYW5kICdyYW5kb20nIG1vZGVzIHRlc3Qgd2lsbCBydW4gZXhhY3QgbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRpbWVzIHNwZWNpZmllZCB3aXRoIHRoZSAtaSBvcHRpb24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluICdhbGwnIG1vZGUsIGFsbCBhdmFpbGFibGUgcGFyYW1ldGVycyB3aWxsIGJlIHJlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVudGlhbGx5LiBUaGlzIG9wdGlvbiBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtaSBvcHRpb24uXG4gICAgICAtLWRiZ3BvcnQ9UE9SVCAgICAgICAgIERlYnVnZ2VyIHBvcnQuXG4gICAgICAtLXN1aXRlcyAgICAgICAgICAgICAgIEZpbHRlciBvdXQgc3VpdGVzIGJ5IG5hbWVcbiAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGluZm9ybWF0aW9uIGFuZCBleGl0LlxuICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgICBEaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQuXG5cbldlYiB0ZXN0IG9wdGlvbnM6XG4gIC1iLCAtLWJyb3dzZXI9e2Nocm9tZXxpZXxzYWZhcml8ZmlyZWZveH0gIEJyb3dzZXIgbmFtZS4gRGVmYXVsdCBpcyBjaHJvbWUuXG4gIC1zLCAtLXNlcnZlcj1TRVJWRVJfVVJMICAgIFNlbGVuaXVtIGh1YiBVUkwuIERlZmF1bHQgaXMgaHR0cDovL2xvY2FsaG9zdDo0NDQ0L3dkL2h1Yi5cbiAgICAgIC0tcmVvcGVuPXt0cnVlfGZhbHNlfSAgUmVvcGVuIGJyb3dzZXIgb24gZWFjaCBpdGVyYXRpb24uIERlZmF1bHQgaXMgZmFsc2UuXG4gICAgICBcbk1vYmlsZSB0ZXN0IG9wdGlvbnM6XG4gICAgLXMsIC0tc2VydmVyPVNFUlZFUl9VUkwgIEFwcGl1bSBzZXJ2ZXIgVVJMLiBEZWZhdWx0IGlzIGh0dHA6Ly9sb2NhbGhvc3Q6NDcyMy93ZC9odWIuYCk7XG59Il19
|
|
135
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLmpzIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJvbiIsImhhbmRsZVNpZ0ludCIsImVycm9yIiwiY29uc29sZSIsImFyZ3YiLCJyZXF1aXJlIiwic2xpY2UiLCJ2IiwidmVyc2lvbiIsImxvZyIsImV4aXQiLCJfIiwiaGVscCIsInByaW50VXNhZ2UiLCJkIiwiZGVsYXkiLCJwYXJzZUludCIsInRhcmdldEZpbGUiLCJjbGl1dGlsIiwicHJvY2Vzc1RhcmdldFBhdGgiLCJjb25maWciLCJnZXRDb25maWd1cmF0aW9ucyIsImdlbmVyYXRlVGVzdE9wdGlvbnMiLCJ0aGVuIiwib3B0aW9ucyIsInByZXBhcmVBbmRTdGFydFRoZVRlc3QiLCJjb2RlIiwiZSIsImZyYW1ld29yayIsInN1aXRlcyIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwiY2Fwc0FyciIsImNhcGFiaWxpdGllcyIsImV4aXRDb2RlIiwicmVwb3J0ZXIiLCJSZXBvcnRBZ2dyZWdhdG9yIiwibGF1bmNoZXIiLCJMYXVuY2hlciIsInJ1biIsImdlbmVyYXRlUmVwb3J0cyIsImdldEV4aXRDb2RlIiwidHJhY2UiLCJzZXRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFTQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFQUEsT0FBTyxDQUFDQyxFQUFSLENBQVcsUUFBWCxFQUFxQkMsWUFBckI7QUFDQUYsT0FBTyxDQUFDQyxFQUFSLENBQVcsbUJBQVgsRUFBZ0NFLEtBQUssSUFBSTtBQUNyQ0MsRUFBQUEsT0FBTyxDQUFDRCxLQUFSLENBQWMsbUJBQWQsRUFBbUNBLEtBQW5DO0FBQ0gsQ0FGRDtBQUlBSCxPQUFPLENBQUNDLEVBQVIsQ0FBVyxvQkFBWCxFQUFpQ0UsS0FBSyxJQUFJO0FBQ3RDQyxFQUFBQSxPQUFPLENBQUNELEtBQVIsQ0FBYyxvQkFBZCxFQUFvQ0EsS0FBcEM7QUFDSCxDQUZEOztBQUtBLE1BQU1FLElBQUksR0FBR0MsT0FBTyxDQUFDLFVBQUQs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QUFFQSxNQUFJO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLElBQUlDLHlCQUFKLENBQXFCYixPQUFyQixDQUFqQjtBQUNBLFVBQU1jLFFBQVEsR0FBRyxJQUFJQyxpQkFBSixDQUFhZixPQUFiLEVBQXNCWSxRQUF0QixDQUFqQjtBQUNBakMsSUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQVksaUJBQVo7QUFDQSxVQUFNNkIsUUFBUSxDQUFDRSxHQUFULENBQWFQLE9BQWIsQ0FBTjtBQUNBRyxJQUFBQSxRQUFRLENBQUNLLGVBQVQ7QUFDQU4sSUFBQUEsUUFBUSxHQUFHQyxRQUFRLENBQUNNLFdBQVQsRUFBWDtBQUNILEdBUEQsQ0FRQSxPQUFPZixDQUFQLEVBQVU7QUFDTnhCLElBQUFBLE9BQU8sQ0FBQ0QsS0FBUixDQUFjLGFBQWQsRUFBNkJ5QixDQUE3QjtBQUNBeEIsSUFBQUEsT0FBTyxDQUFDd0MsS0FBUjtBQUNBNUMsSUFBQUEsT0FBTyxDQUFDVyxJQUFSLENBQWEsQ0FBYjtBQUNIOztBQUNELFNBQU95QixRQUFQO0FBQ0g7O0FBRUQsU0FBU2xDLFlBQVQsR0FBd0I7QUFFcEIyQyxFQUFBQSxVQUFVLENBQUMsTUFBTTdDLE9BQU8sQ0FBQ1csSUFBUixDQUFhLENBQWIsQ0FBUCxFQUF3QixJQUF4QixDQUFWO0FBQ0g7O0FBRUQsU0FBU0csVUFBVCxHQUFzQjtBQUNsQlYsRUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQWE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RkFoQ0k7QUFpQ0giLCJzb3VyY2VzQ29udGVudCI6WyIjISAvdXNyL2Jpbi9lbnYgbm9kZVxyXG4vKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuaW1wb3J0ICogYXMgY2xpdXRpbCBmcm9tICcuL2NsaS11dGlsJztcclxuaW1wb3J0IExhdW5jaGVyIGZyb20gJy4vbGF1bmNoZXInO1xyXG5pbXBvcnQgUmVwb3J0QWdncmVnYXRvciBmcm9tICcuLi9yZXBvcnRlci9SZXBvcnRBZ2dyZWdhdG9yJztcclxuXHJcbnByb2Nlc3Mub24oJ1NJR0lOVCcsIGhhbmRsZVNpZ0ludCk7XHJcbnByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZXJyb3IgPT4ge1xyXG4gICAgY29uc29sZS5lcnJvcigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnJvcik7XHJcbn0pO1xyXG5cclxucHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyb3IgPT4ge1xyXG4gICAgY29uc29sZS5lcnJvcigndW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyb3IpO1xyXG59KTtcclxuXHJcbi8vIHBhcnNlIGNvbW1hbmQgbGluZSBhcmd1bWVudHNcclxuY29uc3QgYXJndiA9IHJlcXVpcmUoJ21pbmltaXN0JykocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKTtcclxuXHJcbmlmIChhcmd2LnYgfHwgYXJndi52ZXJzaW9uKSB7XHJcbiAgICBjb25zb2xlLmxvZyhyZXF1aXJlKCcuLi8uLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uKTtcclxuICAgIHByb2Nlc3MuZXhpdCgwKTtcclxufSBlbHNlIGlmICh0eXBlb2YoYXJndi5fWzBdKSA9PT0gJ3VuZGVmaW5lZCcgfHwgYXJndi5oZWxwKSB7XHJcbiAgICBwcmludFVzYWdlKCk7XHJcbiAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbn1cclxuXHJcbmlmIChhcmd2LmQgfHwgYXJndi5kZWxheSkge1xyXG4gICAgY29uc3QgZGVsYXkgPSBhcmd2LmQgfHwgYXJndi5kZWxheTtcclxuICAgIGlmICghKHBhcnNlSW50KGRlbGF5KSA+IDApKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgYXJndW1lbnQgLSAnZGVsYXknIHNob3VsZCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuXCIpO1xyXG4gICAgICAgIHByaW50VXNhZ2UoKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IHRhcmdldEZpbGUgPSBjbGl1dGlsLnByb2Nlc3NUYXJnZXRQYXRoKGFyZ3YuX1swXSk7XHJcbmlmICh0YXJnZXRGaWxlID09IG51bGwpIHtcclxuICAgIHByaW50VXNhZ2UoKTtcclxuICAgIHByb2Nlc3MuZXhpdCgxKTtcclxufVxyXG5cclxuY29uc3QgY29uZmlnID0gY2xpdXRpbC5nZXRDb25maWd1cmF0aW9ucyh0YXJnZXRGaWxlLCBhcmd2KTtcclxuXHJcbmNsaXV0aWwuZ2VuZXJhdGVUZXN0T3B0aW9ucyhjb25maWcsIGFyZ3YpLnRoZW4oXHJcbiAgICAob3B0aW9ucykgPT4ge1xyXG4gICAgICAgIHByZXBhcmVBbmRTdGFydFRoZVRlc3Qob3B0aW9ucykudGhlbihcclxuICAgICAgICAgICAgKGNvZGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEb25lIScpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KGNvZGUpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVGVzdCBmYWlsZWQ6ICcsIGUpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH0sXHJcbiAgICAoZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Rlc3QgZmFpbGVkIG9uIGdlbmVyYXRlIHN0YXRlOiAnLCBlKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbik7XHJcblxyXG5hc3luYyBmdW5jdGlvbiBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpIHtcclxuICAgIGlmIChvcHRpb25zLmZyYW1ld29yayA9PT0gJ294eWdlbicgJiYgKCFvcHRpb25zLnN1aXRlcyB8fCAhQXJyYXkuaXNBcnJheShvcHRpb25zLnN1aXRlcykpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3RhcnQgdGhlIHRlc3QgLSBubyBzdWl0ZXMgYXJlIHNwZWNpZmllZC4nKTtcclxuICAgIH1cclxuICAgIGxldCBjYXBzQXJyID0gb3B0aW9ucy5jYXBhYmlsaXRpZXMgfHwgW3t9XTtcclxuICAgIC8vIGNoZWNrIGlmIGNhcGFiaWxpdGllcyBvYmplY3QgaXMgYW4gYXJyYXkgb3IgYSBoYXNodGFibGVcclxuICAgIGlmICghKGNhcHNBcnIgaW5zdGFuY2VvZiBBcnJheSkpIHtcclxuICAgICAgICBjYXBzQXJyID0gW2NhcHNBcnJdO1xyXG4gICAgfVxyXG4gICAgbGV0IGV4aXRDb2RlID0gMDtcclxuICAgIC8vIHN0YXJ0IGxhdW5jaGVyXHJcbiAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlcG9ydGVyID0gbmV3IFJlcG9ydEFnZ3JlZ2F0b3Iob3B0aW9ucyk7XHJcbiAgICAgICAgY29uc3QgbGF1bmNoZXIgPSBuZXcgTGF1bmNoZXIob3B0aW9ucywgcmVwb3J0ZXIpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdUZXN0IHN0YXJ0ZWQuLi4nKTtcclxuICAgICAgICBhd2FpdCBsYXVuY2hlci5ydW4oY2Fwc0Fycik7XHJcbiAgICAgICAgcmVwb3J0ZXIuZ2VuZXJhdGVSZXBvcnRzKCk7XHJcbiAgICAgICAgZXhpdENvZGUgPSByZXBvcnRlci5nZXRFeGl0Q29kZSgpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdGYXRhbCBlcnJvcicsIGUpO1xyXG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXhpdENvZGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZVNpZ0ludCgpIHtcclxuICAgIC8vIGRlbGF5IHByb2Nlc3MgZXhpdCB0byBsZXQgT3h5Z2VuIHRvIHByb3Blcmx5IGRpc3Bvc2VcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gcHJvY2Vzcy5leGl0KDApLCAyMDAwKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJpbnRVc2FnZSgpIHtcclxuICAgIGNvbnNvbGUubG9nKGBVc2FnZTogb3h5Z2VuIFtPUFRJT05TXS4uLiBGSUxFXHJcblxyXG5GSUxFIC0gUGF0aCB0byBhIHRlc3Qgc2NyaXB0ICguanMpIG9yIGEgcHJvamVjdCBjb25maWd1cmF0aW9uICguanNvbikgZmlsZS5cclxuXHJcbkdlbmVyYWwgb3B0aW9uczpcclxuICAtZCwgLS1kZWxheT1TRUNPTkRTICAgICAgICBEZWxheSBiZXR3ZWVuIGVhY2ggY29tbWFuZCBpbiBzZWNvbmRzLlxyXG4gICAgICAtLXJmPXtodG1sfHBkZnx4bWx8ZXhjZWx8anVuaXR8anNvbn0gIFJlcG9ydHMgZmlsZSBmb3JtYXQuIERlZmF1bHQgaXMgaHRtbC5cclxuICAgICAgLS1ybz1QQVRIICAgICAgICAgICAgICBPdXRwdXQgcGF0aCBmb3IgcmVwb3J0IGZpbGUuIElmIHNwZWNpZmllZCwgdGhlIHJlcG9ydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgb3ZlcndyaXRlIGFueSBwcmV2aW91cyByZXBvcnRzLlxyXG4gIC1pLCAtLWl0ZXI9Q09VTlQgICAgICAgICAgIE51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIHRlc3QuIERlZmF1bHQgaXMgMS5cclxuICAtcCwgLS1wYXJhbT1GSUxFICAgICAgICAgICBQYXJhbWV0ZXJzIGZpbGUuIElmIG5vdCBzcGVjaWZpZWQgYW4gYXR0ZW1wdCB3aWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgbWFkZSB0byBsb2FkIHBhcmFtZXRlcnMgZnJvbSBhIGZpbGUgbmFtZWQgc2FtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSB0ZXN0IHNjcmlwdCwgbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGhhdmluZyBleHRlbnNpb24gLSB4bHN4LCB4bHMsIGNzdiwgb3IgdHh0LlxyXG4gICAgICAtLXBtPXtzZXF8cmFuZG9tfGFsbH0gIE9yZGVyIGluIHdoaWNoIHRvIHJlYWQgdGhlIHBhcmFtZXRlcnMgLSBzZXF1ZW50aWFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbSwgYWxsLiBEZWZhdWx0IGlzIHNlcS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiAnc2VxJyBhbmQgJ3JhbmRvbScgbW9kZXMgdGVzdCB3aWxsIHJ1biBleGFjdCBudW1iZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aW1lcyBzcGVjaWZpZWQgd2l0aCB0aGUgLWkgb3B0aW9uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluICdhbGwnIG1vZGUsIGFsbCBhdmFpbGFibGUgcGFyYW1ldGVycyB3aWxsIGJlIHJlYWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW50aWFsbHkuIFRoaXMgb3B0aW9uIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWkgb3B0aW9uLlxyXG4gICAgICAtLWRiZ3BvcnQ9UE9SVCAgICAgICAgIERlYnVnZ2VyIHBvcnQuXHJcbiAgICAgIC0tc3VpdGVzICAgICAgICAgICAgICAgRmlsdGVyIG91dCBzdWl0ZXMgYnkgbmFtZVxyXG4gIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBpbmZvcm1hdGlvbiBhbmQgZXhpdC5cclxuICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgICBEaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQuXHJcblxyXG5XZWIgdGVzdCBvcHRpb25zOlxyXG4gIC1iLCAtLWJyb3dzZXI9e2Nocm9tZXxpZXxzYWZhcml8ZmlyZWZveH0gIEJyb3dzZXIgbmFtZS4gRGVmYXVsdCBpcyBjaHJvbWUuXHJcbiAgLXMsIC0tc2VydmVyPVNFUlZFUl9VUkwgICAgU2VsZW5pdW0gaHViIFVSTC4gRGVmYXVsdCBpcyBodHRwOi8vbG9jYWxob3N0OjQ0NDQvd2QvaHViLlxyXG4gICAgICAtLXJlb3Blbj17dHJ1ZXxmYWxzZX0gIFJlb3BlbiBicm93c2VyIG9uIGVhY2ggaXRlcmF0aW9uLiBEZWZhdWx0IGlzIGZhbHNlLlxyXG4gICAgICBcclxuTW9iaWxlIHRlc3Qgb3B0aW9uczpcclxuICAgIC1zLCAtLXNlcnZlcj1TRVJWRVJfVVJMICBBcHBpdW0gc2VydmVyIFVSTC4gRGVmYXVsdCBpcyBodHRwOi8vbG9jYWxob3N0OjQ3MjMvd2QvaHViLmApO1xyXG59Il19
|
|
@@ -79,10 +79,10 @@ module.exports = function () {
|
|
|
79
79
|
}
|
|
80
80
|
};
|
|
81
81
|
/**
|
|
82
|
-
* @summary Asserts that two values are equal.
|
|
82
|
+
* @summary Asserts that two values are equal (non-strict equality).
|
|
83
83
|
* @function equal
|
|
84
|
-
* @param {
|
|
85
|
-
* @param {
|
|
84
|
+
* @param {Object} actual - Actual value.
|
|
85
|
+
* @param {Object} expected - Expected value. Either an object or a string prefixed with `regex:`.
|
|
86
86
|
* @param {String=} message - Message to throw if assertion fails.
|
|
87
87
|
*/
|
|
88
88
|
|
|
@@ -93,16 +93,6 @@ module.exports = function () {
|
|
|
93
93
|
var regex = new RegExp(expected.substring('regex:'.length));
|
|
94
94
|
chai.assert.match(actual, regex, message);
|
|
95
95
|
} else {
|
|
96
|
-
// check if both values are string that can be converted to number
|
|
97
|
-
// if yes, convert them to number first and then compare
|
|
98
|
-
if (typeof actual === 'string' && !isNaN(actual)) {
|
|
99
|
-
actual = parseInt(actual);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
if (typeof expected === 'string' && !isNaN(expected)) {
|
|
103
|
-
expected = parseInt(expected);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
96
|
chai.assert.equal(actual, expected, message);
|
|
107
97
|
}
|
|
108
98
|
} catch (e) {
|
|
@@ -110,10 +100,10 @@ module.exports = function () {
|
|
|
110
100
|
}
|
|
111
101
|
};
|
|
112
102
|
/**
|
|
113
|
-
* @summary Asserts that two values are not equal.
|
|
103
|
+
* @summary Asserts that two values are not equal (non-strict inequality).
|
|
114
104
|
* @function notEqual
|
|
115
|
-
* @param {
|
|
116
|
-
* @param {
|
|
105
|
+
* @param {Object} actual - Actual value.
|
|
106
|
+
* @param {Object} expected - Expected value. Either an object or a string prefixed with `regex:`.
|
|
117
107
|
* @param {String=} message - Message to throw if assertion fails.
|
|
118
108
|
*/
|
|
119
109
|
|
|
@@ -153,4 +143,4 @@ module.exports = function () {
|
|
|
153
143
|
|
|
154
144
|
return module;
|
|
155
145
|
};
|
|
156
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1hc3NlcnQuanMiXSwibmFtZXMiOlsiY2hhaSIsInJlcXVpcmUiLCJlcnJIZWxwZXIiLCJtb2R1bGUiLCJleHBvcnRzIiwiaXNJbml0aWFsaXplZCIsIl90YWtlU2NyZWVuc2hvdFNpbGVudCIsIm5hbWUiLCJtb2QiLCJveCIsIm1vZHVsZXMiLCJtb2IiLCJnZXREcml2ZXIiLCJ3ZWIiLCJ3aW4iLCJfdGFrZVNjcmVlbnNob3QiLCJ0YWtlU2NyZWVuc2hvdCIsImNvbnRhaW4iLCJhY3R1YWwiLCJjb250YWlucyIsIm1lc3NhZ2UiLCJleHBlY3QiLCJ0byIsImUiLCJPeEVycm9yIiwiZXJyb3JDb2RlIiwiQVNTRVJUX0VSUk9SIiwiZXF1YWwiLCJleHBlY3RlZCIsImluZGV4T2YiLCJyZWdleCIsIlJlZ0V4cCIsInN1YnN0cmluZyIsImxlbmd0aCIsImFzc2VydCIsIm1hdGNoIiwiaXNOYU4iLCJwYXJzZUludCIsIm5vdEVxdWFsIiwibm90TWF0Y2giLCJmYWlsIiwicGFzcyIsIkFTU0VSVF9QQVNTRUQiXSwibWFwcGluZ3MiOiI7Ozs7QUFlQTs7OztBQWZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxJQUFJLEdBQUdDLE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUVBLE1BQU1DLFNBQVMsR0FBR0QsT0FBTyxDQUFDLGtCQUFELENBQXpCO0FBRUE7OztBQUVBRSxNQUFNLENBQUNDLE9BQVAsR0FBaUIsWUFBVztBQUN4QkQsRUFBQUEsTUFBTSxDQUFDRSxhQUFQLEdBQXVCLFlBQVc7QUFDOUIsV0FBTyxJQUFQO0FBQ0gsR0FGRDs7QUFJQUYsRUFBQUEsTUFBTSxDQUFDRyxxQkFBUCxHQUErQixVQUFTQyxJQUFULEVBQWU7QUFDMUMsUUFBSUMsR0FBSjs7QUFDQSxRQUFJQyxFQUFFLElBQUlBLEVBQUUsQ0FBQ0MsT0FBVCxJQUFvQkQs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TSxJQUFJSSxvQkFBSixDQUFZdEIsU0FBUyxDQUFDdUIsU0FBVixDQUFvQkMsWUFBaEMsRUFBOENOLE9BQTlDLENBQU47QUFDSCxHQUZEO0FBSUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0lqQixFQUFBQSxNQUFNLENBQUNzQyxJQUFQLEdBQWMsVUFBU3JCLE9BQVQsRUFBa0I7QUFDNUIsVUFBTSxJQUFJSSxvQkFBSixDQUFZdEIsU0FBUyxDQUFDdUIsU0FBVixDQUFvQmlCLGFBQWhDLEVBQStDdEIsT0FBL0MsQ0FBTjtBQUNILEdBRkQ7O0FBSUEsU0FBT2pCLE1BQVA7QUFDSCxDQXRIRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEBuYW1lIGFzc2VydFxyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgZ2VuZXJpYyBhc3NlcnRpb24gbWV0aG9kcy5cclxuICovXHJcblxyXG5jb25zdCBjaGFpID0gcmVxdWlyZSgnY2hhaScpO1xyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG5jb25zdCBlcnJIZWxwZXIgPSByZXF1aXJlKCcuLi9lcnJvcnMvaGVscGVyJyk7XHJcblxyXG4vKmdsb2JhbCBveCovXHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgbW9kdWxlLmlzSW5pdGlhbGl6ZWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH07XHJcblxyXG4gICAgbW9kdWxlLl90YWtlU2NyZWVuc2hvdFNpbGVudCA9IGZ1bmN0aW9uKG5hbWUpIHtcclxuICAgICAgICB2YXIgbW9kO1xyXG4gICAgICAgIGlmIChveCAmJiBveC5tb2R1bGVzICYmIG94Lm1vZHVsZXMubW9iICYmIG94Lm1vZHVsZXMubW9iLmdldERyaXZlciAmJiBveC5tb2R1bGVzLm1vYi5nZXREcml2ZXIoKSkge1xyXG4gICAgICAgICAgICBtb2QgPSBveC5tb2R1bGVzLm1vYjtcclxuICAgICAgICB9IGVsc2UgaWYgKG94ICYmIG94Lm1vZHVsZXMgJiYgb3gubW9kdWxlcy53ZWIgJiYgb3gubW9kdWxlcy53ZWIuZ2V0RHJpdmVyICYmIG94Lm1vZHVsZXMud2ViLmdldERyaXZlcigpKSB7XHJcbiAgICAgICAgICAgIG1vZCA9IG94Lm1vZHVsZXMud2ViO1xyXG4gICAgICAgIH0gZWxzZSBpZiAob3ggJiYgb3gubW9kdWxlcyAmJiBveC5tb2R1bGVzLndpbiAmJiBveC5tb2R1bGVzLndpbi5nZXREcml2ZXIgJiYgb3gubW9kdWxlcy53aW4uZ2V0RHJpdmVyKCkpIHtcclxuICAgICAgICAgICAgbW9kID0gb3gubW9kdWxlcy53aW47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobW9kICYmIG1vZC5fdGFrZVNjcmVlbnNob3RTaWxlbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1vZC5fdGFrZVNjcmVlbnNob3RTaWxlbnQoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIHRha2Ugc2NyZWVuc2hvdCBvbiBlcnJvciBpZiBlaXRoZXIgd2ViLCBtb2IsIG9yIHdpbiBtb2R1bGUgaXMgaW5pdGlhbGl6ZWRcclxuICAgIG1vZHVsZS5fdGFrZVNjcmVlbnNob3QgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICAgICAgdmFyIG1vZDtcclxuICAgICAgICBpZiAob3ggJiYgb3gubW9kdWxlcyAmJiBveC5tb2R1bGVzLm1vYiAmJiBveC5tb2R1bGVzLm1vYi5nZXREcml2ZXIgJiYgb3gubW9kdWxlcy5tb2IuZ2V0RHJpdmVyKCkpIHtcclxuICAgICAgICAgICAgbW9kID0gb3gubW9kdWxlcy5tb2I7XHJcbiAgICAgICAgfSBlbHNlIGlmIChveCAmJiBveC5tb2R1bGVzICYmIG94Lm1vZHVsZXMud2ViICYmIG94Lm1vZHVsZXMud2ViLmdldERyaXZlciAmJiBveC5tb2R1bGVzLndlYi5nZXREcml2ZXIoKSkge1xyXG4gICAgICAgICAgICBtb2QgPSBveC5tb2R1bGVzLndlYjtcclxuICAgICAgICB9IGVsc2UgaWYgKG94ICYmIG94Lm1vZHVsZXMgJiYgb3gubW9kdWxlcy53aW4gJiYgb3gubW9kdWxlcy53aW4uZ2V0RHJpdmVyICYmIG94Lm1vZHVsZXMud2luLmdldERyaXZlcigpKSB7XHJcbiAgICAgICAgICAgIG1vZCA9IG94Lm1vZHVsZXMud2luO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbW9kID8gbW9kLnRha2VTY3JlZW5zaG90KCkgOiBudWxsO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEFzc2VydHMgdGhhdCB0aGUgc3RyaW5nIHZhbHVlIGNvbnRhaW5zIGEgc3Vic3RyaW5nLlxyXG4gICAgICogQGZ1bmN0aW9uIGNvbnRhaW5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBhY3R1YWwgLSBBY3R1YWwgdmFsdWUuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gY29udGFpbnMgLSBWZXJiYXRpbSBzdHJpbmcgdG8gYmUgY29udGFpbmVkLiBcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nPX0gbWVzc2FnZSAtIE1lc3NhZ2UgdG8gdGhyb3cgaWYgYXNzZXJ0aW9uIGZhaWxzLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuY29udGFpbiA9IGZ1bmN0aW9uKGFjdHVhbCwgY29udGFpbnMsIG1lc3NhZ2UpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjaGFpLmV4cGVjdChhY3R1YWwpLnRvLmNvbnRhaW4oY29udGFpbnMsIG1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkFTU0VSVF9FUlJPUiwgZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgQXNzZXJ0cyB0aGF0IHR3byB2YWx1ZXMgYXJlIGVxdWFsLlxyXG4gICAgICogQGZ1bmN0aW9uIGVxdWFsXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gYWN0dWFsIC0gQWN0dWFsIHZhbHVlLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGV4cGVjdGVkIC0gRXhwZWN0ZWQgdmFsdWUuIEVpdGhlciBhIHZlcmJhdGltIHN0cmluZyBvciBhIHJlZ2V4IHN0cmluZyBwcmVmaXhlZCB3aXRoIGByZWdleDpgLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmc9fSBtZXNzYWdlIC0gTWVzc2FnZSB0byB0aHJvdyBpZiBhc3NlcnRpb24gZmFpbHMuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5lcXVhbCA9IGZ1bmN0aW9uKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZXhwZWN0ZWQgJiYgdHlwZW9mIGV4cGVjdGVkID09PSAnc3RyaW5nJyAmJiBleHBlY3RlZC5pbmRleE9mKCdyZWdleDonKSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cChleHBlY3RlZC5zdWJzdHJpbmcoJ3JlZ2V4OicubGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICBjaGFpLmFzc2VydC5tYXRjaChhY3R1YWwsIHJlZ2V4LCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIGJvdGggdmFsdWVzIGFyZSBzdHJpbmcgdGhhdCBjYW4gYmUgY29udmVydGVkIHRvIG51bWJlclxyXG4gICAgICAgICAgICAgICAgLy8gaWYgeWVzLCBjb252ZXJ0IHRoZW0gdG8gbnVtYmVyIGZpcnN0IGFuZCB0aGVuIGNvbXBhcmVcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0dWFsID09PSAnc3RyaW5nJyAmJiAhaXNOYU4oYWN0dWFsKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbCA9IHBhcnNlSW50KGFjdHVhbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGV4cGVjdGVkID09PSAnc3RyaW5nJyAmJiAhaXNOYU4oZXhwZWN0ZWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBwYXJzZUludChleHBlY3RlZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjaGFpLmFzc2VydC5lcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkFTU0VSVF9FUlJPUiwgZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBBc3NlcnRzIHRoYXQgdHdvIHZhbHVlcyBhcmUgbm90IGVxdWFsLlxyXG4gICAgICogQGZ1bmN0aW9uIG5vdEVxdWFsXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gYWN0dWFsIC0gQWN0dWFsIHZhbHVlLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGV4cGVjdGVkIC0gRXhwZWN0ZWQgdmFsdWUuIEVpdGhlciBhIHZlcmJhdGltIHN0cmluZyBvciBhIHJlZ2V4IHN0cmluZyBwcmVmaXhlZCB3aXRoIGByZWdleDpgLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmc9fSBtZXNzYWdlIC0gTWVzc2FnZSB0byB0aHJvdyBpZiBhc3NlcnRpb24gZmFpbHMuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5ub3RFcXVhbCA9IGZ1bmN0aW9uKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZXhwZWN0ZWQgJiYgdHlwZW9mIGV4cGVjdGVkID09PSAnc3RyaW5nJyAmJiBleHBlY3RlZC5pbmRleE9mKCdyZWdleDonKSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cChleHBlY3RlZC5zdWJzdHJpbmcoJ3JlZ2V4OicubGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICBjaGFpLmFzc2VydC5ub3RNYXRjaChhY3R1YWwsIHJlZ2V4LCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNoYWkuYXNzZXJ0Lm5vdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEZhaWxzIHRlc3Qgd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cclxuICAgICAqIEBmdW5jdGlvbiBmYWlsXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlIHRvIHJldHVybi5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmZhaWwgPSBmdW5jdGlvbihtZXNzYWdlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIG1lc3NhZ2UpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFBhc3NlcyB0aGUgdGVzdCB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxyXG4gICAgICogQGZ1bmN0aW9uIHBhc3NcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nPX0gbWVzc2FnZSAtIE1lc3NhZ2UgdG8gcmV0dXJuLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUucGFzcyA9IGZ1bmN0aW9uKG1lc3NhZ2UpIHtcclxuICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkFTU0VSVF9QQVNTRUQsIG1lc3NhZ2UpO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=
|
|
146
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1hc3NlcnQuanMiXSwibmFtZXMiOlsiY2hhaSIsInJlcXVpcmUiLCJlcnJIZWxwZXIiLCJtb2R1bGUiLCJleHBvcnRzIiwiaXNJbml0aWFsaXplZCIsIl90YWtlU2NyZWVuc2hvdFNpbGVudCIsIm5hbWUiLCJtb2QiLCJveCIsIm1vZHVsZXMiLCJtb2IiLCJnZXREcml2ZXIiLCJ3ZWIiLCJ3aW4iLCJfdGFrZVNjcmVlbnNob3QiLCJ0YWtlU2NyZWVuc2hvdCIsImNvbnRhaW4iLCJhY3R1YWwiLCJjb250YWlucyIsIm1lc3NhZ2UiLCJleHBlY3QiLCJ0byIsImUiLCJPeEVycm9yIiwiZXJyb3JDb2RlIiwiQVNTRVJUX0VSUk9SIiwiZXF1YWwiLCJleHBlY3RlZCIsImluZGV4T2YiLCJyZWdleCIsIlJlZ0V4cCIsInN1YnN0cmluZyIsImxlbmd0aCIsImFzc2VydCIsIm1hdGNoIiwibm90RXF1YWwiLCJub3RNYXRjaCIsImZhaWwiLCJwYXNzIiwiQVNTRVJUX1BBU1NFRCJdLCJtYXBwaW5ncyI6Ijs7OztBQWVBOzs7O0FBZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBRUEsTUFBTUMsU0FBUyxHQUFHRCxPQUFPLENBQUMsa0JBQUQsQ0FBekI7QUFFQTs7O0FBRUFFLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixZQUFXO0FBQ3hCRCxFQUFBQSxNQUFNLENBQUNFLGFBQVAsR0FBdUIsWUFBVztBQUM5QixXQUFPLElBQVA7QUFDSCxHQUZEOztBQUlBRixFQUFBQSxNQUFNLENBQUNHLHFCQUFQLEdBQStCLFVBQVNDLElBQVQsRUFBZTtBQUMxQyxRQUFJQyxHQUFKOztBQUNBLFFBQUlDLEVBQUUsSUFBSUEsRUFBRSxDQUFDQyxPQUFULElBQW9CRCxFQUFFLENBQUNDLE9BQUgsQ0FB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Q29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBhc3NlcnRcclxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGdlbmVyaWMgYXNzZXJ0aW9uIG1ldGhvZHMuXHJcbiAqL1xyXG5cclxuY29uc3QgY2hhaSA9IHJlcXVpcmUoJ2NoYWknKTtcclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxuY29uc3QgZXJySGVscGVyID0gcmVxdWlyZSgnLi4vZXJyb3JzL2hlbHBlcicpO1xyXG5cclxuLypnbG9iYWwgb3gqL1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcclxuICAgIG1vZHVsZS5pc0luaXRpYWxpemVkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG5cclxuICAgIG1vZHVsZS5fdGFrZVNjcmVlbnNob3RTaWxlbnQgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICAgICAgdmFyIG1vZDtcclxuICAgICAgICBpZiAob3ggJiYgb3gubW9kdWxlcyAmJiBveC5tb2R1bGVzLm1vYiAmJiBveC5tb2R1bGVzLm1vYi5nZXREcml2ZXIgJiYgb3gubW9kdWxlcy5tb2IuZ2V0RHJpdmVyKCkpIHtcclxuICAgICAgICAgICAgbW9kID0gb3gubW9kdWxlcy5tb2I7XHJcbiAgICAgICAgfSBlbHNlIGlmIChveCAmJiBveC5tb2R1bGVzICYmIG94Lm1vZHVsZXMud2ViICYmIG94Lm1vZHVsZXMud2ViLmdldERyaXZlciAmJiBveC5tb2R1bGVzLndlYi5nZXREcml2ZXIoKSkge1xyXG4gICAgICAgICAgICBtb2QgPSBveC5tb2R1bGVzLndlYjtcclxuICAgICAgICB9IGVsc2UgaWYgKG94ICYmIG94Lm1vZHVsZXMgJiYgb3gubW9kdWxlcy53aW4gJiYgb3gubW9kdWxlcy53aW4uZ2V0RHJpdmVyICYmIG94Lm1vZHVsZXMud2luLmdldERyaXZlcigpKSB7XHJcbiAgICAgICAgICAgIG1vZCA9IG94Lm1vZHVsZXMud2luO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG1vZCAmJiBtb2QuX3Rha2VTY3JlZW5zaG90U2lsZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtb2QuX3Rha2VTY3JlZW5zaG90U2lsZW50KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyB0YWtlIHNjcmVlbnNob3Qgb24gZXJyb3IgaWYgZWl0aGVyIHdlYiwgbW9iLCBvciB3aW4gbW9kdWxlIGlzIGluaXRpYWxpemVkXHJcbiAgICBtb2R1bGUuX3Rha2VTY3JlZW5zaG90ID0gZnVuY3Rpb24obmFtZSkge1xyXG4gICAgICAgIHZhciBtb2Q7XHJcbiAgICAgICAgaWYgKG94ICYmIG94Lm1vZHVsZXMgJiYgb3gubW9kdWxlcy5tb2IgJiYgb3gubW9kdWxlcy5tb2IuZ2V0RHJpdmVyICYmIG94Lm1vZHVsZXMubW9iLmdldERyaXZlcigpKSB7XHJcbiAgICAgICAgICAgIG1vZCA9IG94Lm1vZHVsZXMubW9iO1xyXG4gICAgICAgIH0gZWxzZSBpZiAob3ggJiYgb3gubW9kdWxlcyAmJiBveC5tb2R1bGVzLndlYiAmJiBveC5tb2R1bGVzLndlYi5nZXREcml2ZXIgJiYgb3gubW9kdWxlcy53ZWIuZ2V0RHJpdmVyKCkpIHtcclxuICAgICAgICAgICAgbW9kID0gb3gubW9kdWxlcy53ZWI7XHJcbiAgICAgICAgfSBlbHNlIGlmIChveCAmJiBveC5tb2R1bGVzICYmIG94Lm1vZHVsZXMud2luICYmIG94Lm1vZHVsZXMud2luLmdldERyaXZlciAmJiBveC5tb2R1bGVzLndpbi5nZXREcml2ZXIoKSkge1xyXG4gICAgICAgICAgICBtb2QgPSBveC5tb2R1bGVzLndpbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1vZCA/IG1vZC50YWtlU2NyZWVuc2hvdCgpIDogbnVsbDtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBBc3NlcnRzIHRoYXQgdGhlIHN0cmluZyB2YWx1ZSBjb250YWlucyBhIHN1YnN0cmluZy5cclxuICAgICAqIEBmdW5jdGlvbiBjb250YWluXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gYWN0dWFsIC0gQWN0dWFsIHZhbHVlLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGNvbnRhaW5zIC0gVmVyYmF0aW0gc3RyaW5nIHRvIGJlIGNvbnRhaW5lZC4gXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IG1lc3NhZ2UgLSBNZXNzYWdlIHRvIHRocm93IGlmIGFzc2VydGlvbiBmYWlscy5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmNvbnRhaW4gPSBmdW5jdGlvbihhY3R1YWwsIGNvbnRhaW5zLCBtZXNzYWdlKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY2hhaS5leHBlY3QoYWN0dWFsKS50by5jb250YWluKGNvbnRhaW5zLCBtZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIGUubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEFzc2VydHMgdGhhdCB0d28gdmFsdWVzIGFyZSBlcXVhbCAobm9uLXN0cmljdCBlcXVhbGl0eSkuXHJcbiAgICAgKiBAZnVuY3Rpb24gZXF1YWxcclxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY3R1YWwgLSBBY3R1YWwgdmFsdWUuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZXhwZWN0ZWQgLSBFeHBlY3RlZCB2YWx1ZS4gRWl0aGVyIGFuIG9iamVjdCBvciBhIHN0cmluZyBwcmVmaXhlZCB3aXRoIGByZWdleDpgLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmc9fSBtZXNzYWdlIC0gTWVzc2FnZSB0byB0aHJvdyBpZiBhc3NlcnRpb24gZmFpbHMuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5lcXVhbCA9IGZ1bmN0aW9uKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZXhwZWN0ZWQgJiYgdHlwZW9mIGV4cGVjdGVkID09PSAnc3RyaW5nJyAmJiBleHBlY3RlZC5pbmRleE9mKCdyZWdleDonKSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cChleHBlY3RlZC5zdWJzdHJpbmcoJ3JlZ2V4OicubGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICBjaGFpLmFzc2VydC5tYXRjaChhY3R1YWwsIHJlZ2V4LCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNoYWkuYXNzZXJ0LmVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEFzc2VydHMgdGhhdCB0d28gdmFsdWVzIGFyZSBub3QgZXF1YWwgKG5vbi1zdHJpY3QgaW5lcXVhbGl0eSkuXHJcbiAgICAgKiBAZnVuY3Rpb24gbm90RXF1YWxcclxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY3R1YWwgLSBBY3R1YWwgdmFsdWUuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZXhwZWN0ZWQgLSBFeHBlY3RlZCB2YWx1ZS4gRWl0aGVyIGFuIG9iamVjdCBvciBhIHN0cmluZyBwcmVmaXhlZCB3aXRoIGByZWdleDpgLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmc9fSBtZXNzYWdlIC0gTWVzc2FnZSB0byB0aHJvdyBpZiBhc3NlcnRpb24gZmFpbHMuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5ub3RFcXVhbCA9IGZ1bmN0aW9uKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZXhwZWN0ZWQgJiYgdHlwZW9mIGV4cGVjdGVkID09PSAnc3RyaW5nJyAmJiBleHBlY3RlZC5pbmRleE9mKCdyZWdleDonKSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cChleHBlY3RlZC5zdWJzdHJpbmcoJ3JlZ2V4OicubGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICBjaGFpLmFzc2VydC5ub3RNYXRjaChhY3R1YWwsIHJlZ2V4LCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNoYWkuYXNzZXJ0Lm5vdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEZhaWxzIHRlc3Qgd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cclxuICAgICAqIEBmdW5jdGlvbiBmYWlsXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlIHRvIHJldHVybi5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmZhaWwgPSBmdW5jdGlvbihtZXNzYWdlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIG1lc3NhZ2UpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFBhc3NlcyB0aGUgdGVzdCB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxyXG4gICAgICogQGZ1bmN0aW9uIHBhc3NcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nPX0gbWVzc2FnZSAtIE1lc3NhZ2UgdG8gcmV0dXJuLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUucGFzcyA9IGZ1bmN0aW9uKG1lc3NhZ2UpIHtcclxuICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkFTU0VSVF9QQVNTRUQsIG1lc3NhZ2UpO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=
|