appium-safari-driver 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/publish.js.yml +30 -0
- package/.releaserc +12 -0
- package/README.md +6 -0
- package/build/lib/commands/cookies.js +21 -0
- package/build/lib/commands/index.js +4 -2
- package/build/lib/commands/record-screen.js +26 -36
- package/build/lib/driver.js +4 -7
- package/build/lib/safari.js +10 -9
- package/lib/commands/cookies.js +8 -0
- package/lib/commands/index.js +2 -0
- package/lib/commands/record-screen.js +22 -20
- package/lib/driver.js +4 -3
- package/lib/safari.js +9 -9
- package/npm-shrinkwrap.json +2401 -0
- package/package.json +6 -9
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches: [ master ]
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build:
|
|
10
|
+
runs-on: macos-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v2
|
|
13
|
+
- name: Use Node.js 14.x
|
|
14
|
+
uses: actions/setup-node@v1
|
|
15
|
+
with:
|
|
16
|
+
node-version: 14.x
|
|
17
|
+
- run: npm install --production
|
|
18
|
+
name: Install prod dependencies
|
|
19
|
+
- run: rm -rf package-lock.json
|
|
20
|
+
- run: npm shrinkwrap
|
|
21
|
+
- run: npm install --no-package-lock
|
|
22
|
+
name: Install dev dependencies
|
|
23
|
+
- run: npm test
|
|
24
|
+
name: Run NPM Test
|
|
25
|
+
- run: npx semantic-release
|
|
26
|
+
env:
|
|
27
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
28
|
+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
29
|
+
name: Release
|
|
30
|
+
|
package/.releaserc
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"plugins": [
|
|
3
|
+
"@semantic-release/commit-analyzer",
|
|
4
|
+
"@semantic-release/npm",
|
|
5
|
+
"@semantic-release/release-notes-generator",
|
|
6
|
+
["@semantic-release/git", {
|
|
7
|
+
"assets": ["docs", "package.json"],
|
|
8
|
+
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
|
|
9
|
+
}],
|
|
10
|
+
"@semantic-release/github",
|
|
11
|
+
]
|
|
12
|
+
}
|
package/README.md
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
Appium Safari Driver
|
|
2
2
|
====
|
|
3
3
|
|
|
4
|
+
[](https://npmjs.org/package/appium-safari-driver)
|
|
5
|
+
[](https://npmjs.org/package/appium-safari-driver)
|
|
6
|
+
|
|
7
|
+
[](https://github.com/appium/appium-safari-driver/actions/workflows/publish.js.yml)
|
|
8
|
+
|
|
4
9
|
This is Appium driver for automating Safari on [macOS](https://developer.apple.com/documentation/webkit/testing_with_webdriver_in_safari?language=objc) and iOS [since version 13](https://webkit.org/blog/9395/webdriver-is-coming-to-safari-in-ios-13/).
|
|
5
10
|
The driver only supports Safari automation using [W3C WebDriver protocol](https://www.w3.org/TR/webdriver/).
|
|
6
11
|
Under the hood this driver is a wrapper/proxy over Apple's `safaridriver` binary. Check the output of `man safaridriver` command to get more details on the supported features and possible pitfalls.
|
|
@@ -146,3 +151,4 @@ def test_feature_status_page_filters(driver):
|
|
|
146
151
|
npm install
|
|
147
152
|
gulp watch
|
|
148
153
|
```
|
|
154
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.commands = void 0;
|
|
7
|
+
|
|
8
|
+
require("source-map-support/register");
|
|
9
|
+
|
|
10
|
+
const commands = {};
|
|
11
|
+
exports.commands = commands;
|
|
12
|
+
|
|
13
|
+
commands.deleteCookies = async function deleteCookies() {
|
|
14
|
+
return await this.safari.proxy.command('/cookie', 'DELETE');
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
var _default = commands;
|
|
18
|
+
exports.default = _default;require('source-map-support').install();
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9jb29raWVzLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiZGVsZXRlQ29va2llcyIsInNhZmFyaSIsInByb3h5IiwiY29tbWFuZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOzs7QUFFQUEsUUFBUSxDQUFDQyxhQUFULEdBQXlCLGVBQWVBLGFBQWYsR0FBZ0M7QUFDdkQsU0FBTyxNQUFNLEtBQUtDLE1BQUwsQ0FBWUMsS0FBWixDQUFrQkMsT0FBbEIsQ0FBMEIsU0FBMUIsRUFBcUMsUUFBckMsQ0FBYjtBQUNELENBRkQ7O2VBS2VKLFEiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21tYW5kcyA9IHt9O1xuXG5jb21tYW5kcy5kZWxldGVDb29raWVzID0gYXN5bmMgZnVuY3Rpb24gZGVsZXRlQ29va2llcyAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnNhZmFyaS5wcm94eS5jb21tYW5kKCcvY29va2llJywgJ0RFTEVURScpO1xufTtcblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvY29va2llcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
@@ -11,13 +11,15 @@ require("source-map-support/register");
|
|
|
11
11
|
|
|
12
12
|
var _find = _interopRequireDefault(require("./find"));
|
|
13
13
|
|
|
14
|
+
var _cookies = _interopRequireDefault(require("./cookies"));
|
|
15
|
+
|
|
14
16
|
var _recordScreen = _interopRequireDefault(require("./record-screen"));
|
|
15
17
|
|
|
16
18
|
const commands = {};
|
|
17
19
|
exports.commands = commands;
|
|
18
|
-
Object.assign(commands, _find.default, _recordScreen.default);
|
|
20
|
+
Object.assign(commands, _find.default, _cookies.default, _recordScreen.default);
|
|
19
21
|
var _default = commands;
|
|
20
22
|
exports.default = _default;require('source-map-support').install();
|
|
21
23
|
|
|
22
24
|
|
|
23
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbmRleC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImZpbmRDbWRzIiwiY29va2llQ21kcyIsInJlY29yZFNjcmVlbkNvbW1hbmRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjs7QUFDQUMsTUFBTSxDQUFDQyxNQUFQLENBQ0VGLFFBREYsRUFFRUcsYUFGRixFQUdFQyxnQkFIRixFQUlFQyxxQkFKRjtlQVNlTCxRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZpbmRDbWRzIGZyb20gJy4vZmluZCc7XG5pbXBvcnQgY29va2llQ21kcyBmcm9tICcuL2Nvb2tpZXMnO1xuaW1wb3J0IHJlY29yZFNjcmVlbkNvbW1hbmRzIGZyb20gJy4vcmVjb3JkLXNjcmVlbic7XG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5PYmplY3QuYXNzaWduKFxuICBjb21tYW5kcyxcbiAgZmluZENtZHMsXG4gIGNvb2tpZUNtZHMsXG4gIHJlY29yZFNjcmVlbkNvbW1hbmRzLFxuICAvLyBhZGQgb3RoZXIgY29tbWFuZCB0eXBlcyBoZXJlXG4pO1xuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
@@ -15,8 +15,6 @@ var _support = require("@appium/support");
|
|
|
15
15
|
|
|
16
16
|
var _asyncbox = require("asyncbox");
|
|
17
17
|
|
|
18
|
-
var _logger = _interopRequireDefault(require("../logger"));
|
|
19
|
-
|
|
20
18
|
var _nodeSimctl = _interopRequireDefault(require("node-simctl"));
|
|
21
19
|
|
|
22
20
|
const commands = {};
|
|
@@ -28,12 +26,6 @@ const DEFAULT_EXT = '.mp4';
|
|
|
28
26
|
|
|
29
27
|
async function uploadRecordedMedia(localFile, remotePath = null, uploadOptions = {}) {
|
|
30
28
|
if (_lodash.default.isEmpty(remotePath)) {
|
|
31
|
-
const {
|
|
32
|
-
size
|
|
33
|
-
} = await _support.fs.stat(localFile);
|
|
34
|
-
|
|
35
|
-
_logger.default.debug(`The size of the resulting screen recording is ${_support.util.toReadableSizeString(size)}`);
|
|
36
|
-
|
|
37
29
|
return (await _support.util.toInMemoryBase64(localFile)).toString();
|
|
38
30
|
}
|
|
39
31
|
|
|
@@ -73,7 +65,8 @@ process.on('exit', () => {
|
|
|
73
65
|
});
|
|
74
66
|
|
|
75
67
|
class ScreenRecorder {
|
|
76
|
-
constructor(udid, videoPath, opts = {}) {
|
|
68
|
+
constructor(udid, videoPath, log, opts = {}) {
|
|
69
|
+
this.log = log;
|
|
77
70
|
this._process = null;
|
|
78
71
|
this._udid = udid;
|
|
79
72
|
this._videoPath = videoPath;
|
|
@@ -101,7 +94,7 @@ class ScreenRecorder {
|
|
|
101
94
|
|
|
102
95
|
async _enforceTermination() {
|
|
103
96
|
if (this.isRunning) {
|
|
104
|
-
|
|
97
|
+
this.log.debug('Force-stopping the currently running video recording');
|
|
105
98
|
|
|
106
99
|
try {
|
|
107
100
|
await this._process.stop('SIGKILL');
|
|
@@ -139,14 +132,13 @@ class ScreenRecorder {
|
|
|
139
132
|
args,
|
|
140
133
|
asynchronous: true
|
|
141
134
|
});
|
|
142
|
-
|
|
143
|
-
_logger.default.debug(`Starting video recording with arguments: ${_support.util.quote(args)}`);
|
|
135
|
+
this.log.debug(`Starting video recording with arguments: ${_support.util.quote(args)}`);
|
|
144
136
|
|
|
145
137
|
this._process.on('output', (stdout, stderr) => {
|
|
146
138
|
const line = _lodash.default.trim(stdout || stderr);
|
|
147
139
|
|
|
148
140
|
if (line) {
|
|
149
|
-
|
|
141
|
+
this.log.debug(`[recordVideo@${this._udid.substring(0, 8)}] ${line}`);
|
|
150
142
|
}
|
|
151
143
|
});
|
|
152
144
|
|
|
@@ -154,11 +146,10 @@ class ScreenRecorder {
|
|
|
154
146
|
this._process = null;
|
|
155
147
|
|
|
156
148
|
if (code === 0) {
|
|
157
|
-
|
|
149
|
+
this.log.debug('Screen recording exited without errors');
|
|
158
150
|
} else {
|
|
159
151
|
await this._enforceTermination();
|
|
160
|
-
|
|
161
|
-
_logger.default.warn(`Screen recording exited with error code ${code}, signal ${signal}`);
|
|
152
|
+
this.log.warn(`Screen recording exited with error code ${code}, signal ${signal}`);
|
|
162
153
|
}
|
|
163
154
|
});
|
|
164
155
|
|
|
@@ -177,8 +168,7 @@ class ScreenRecorder {
|
|
|
177
168
|
});
|
|
178
169
|
} catch (e) {
|
|
179
170
|
await this._enforceTermination();
|
|
180
|
-
|
|
181
|
-
_logger.default.errorAndThrow(`The expected screen record file '${this._videoPath}' does not exist after ${STARTUP_TIMEOUT_MS}ms. ` + `Check the server log for more details`);
|
|
171
|
+
this.log.errorAndThrow(`The expected screen record file '${this._videoPath}' does not exist after ${STARTUP_TIMEOUT_MS}ms. ` + `Check the server log for more details`);
|
|
182
172
|
}
|
|
183
173
|
|
|
184
174
|
this._timer = setTimeout(async () => {
|
|
@@ -186,12 +176,11 @@ class ScreenRecorder {
|
|
|
186
176
|
try {
|
|
187
177
|
await this.stop();
|
|
188
178
|
} catch (e) {
|
|
189
|
-
|
|
179
|
+
this.log.error(e);
|
|
190
180
|
}
|
|
191
181
|
}
|
|
192
182
|
}, this._timeLimitMs);
|
|
193
|
-
|
|
194
|
-
_logger.default.info(`The video recording has started. Will timeout in ${this._timeLimitMs}ms`);
|
|
183
|
+
this.log.info(`The video recording has started. Will timeout in ${this._timeLimitMs}ms`);
|
|
195
184
|
}
|
|
196
185
|
|
|
197
186
|
async stop(force = false) {
|
|
@@ -205,8 +194,7 @@ class ScreenRecorder {
|
|
|
205
194
|
}
|
|
206
195
|
|
|
207
196
|
if (!this.isRunning) {
|
|
208
|
-
|
|
209
|
-
|
|
197
|
+
this.log.debug('Screen recording is not running. Returning the recently recorded video');
|
|
210
198
|
return await this.getVideoPath();
|
|
211
199
|
}
|
|
212
200
|
|
|
@@ -263,16 +251,14 @@ commands.startRecordingScreen = async function startRecordingScreen(options = {}
|
|
|
263
251
|
} = options;
|
|
264
252
|
|
|
265
253
|
if ((_this$_screenRecorder = this._screenRecorder) !== null && _this$_screenRecorder !== void 0 && _this$_screenRecorder.isRunning) {
|
|
266
|
-
|
|
254
|
+
this.log.info('The screen recording is already running');
|
|
267
255
|
|
|
268
256
|
if (!forceRestart) {
|
|
269
|
-
|
|
270
|
-
|
|
257
|
+
this.log.info('Doing nothing');
|
|
271
258
|
return;
|
|
272
259
|
}
|
|
273
260
|
|
|
274
|
-
|
|
275
|
-
|
|
261
|
+
this.log.info('Forcing the active screen recording to stop');
|
|
276
262
|
await this._screenRecorder.stop(true);
|
|
277
263
|
}
|
|
278
264
|
|
|
@@ -287,7 +273,7 @@ commands.startRecordingScreen = async function startRecordingScreen(options = {}
|
|
|
287
273
|
prefix: _support.util.uuidV4().substring(0, 8),
|
|
288
274
|
suffix: DEFAULT_EXT
|
|
289
275
|
});
|
|
290
|
-
this._screenRecorder = new ScreenRecorder(udid, videoPath, {
|
|
276
|
+
this._screenRecorder = new ScreenRecorder(udid, videoPath, this.log, {
|
|
291
277
|
timeLimit: parseInt(timeLimit, 10),
|
|
292
278
|
codec,
|
|
293
279
|
display,
|
|
@@ -304,21 +290,25 @@ commands.startRecordingScreen = async function startRecordingScreen(options = {}
|
|
|
304
290
|
|
|
305
291
|
commands.stopRecordingScreen = async function stopRecordingScreen(options = {}) {
|
|
306
292
|
if (!this._screenRecorder) {
|
|
307
|
-
|
|
308
|
-
|
|
293
|
+
this.log.info('No screen recording has been started. Doing nothing');
|
|
309
294
|
return '';
|
|
310
295
|
}
|
|
311
296
|
|
|
312
|
-
|
|
313
|
-
|
|
297
|
+
this.log.debug('Retrieving the resulting video data');
|
|
314
298
|
const videoPath = await this._screenRecorder.stop();
|
|
315
299
|
|
|
316
300
|
if (!videoPath) {
|
|
317
|
-
|
|
318
|
-
|
|
301
|
+
this.log.info('No video data is found. Returning an empty string');
|
|
319
302
|
return '';
|
|
320
303
|
}
|
|
321
304
|
|
|
305
|
+
if (_lodash.default.isEmpty(options.remotePath)) {
|
|
306
|
+
const {
|
|
307
|
+
size
|
|
308
|
+
} = await _support.fs.stat(videoPath);
|
|
309
|
+
this.log.debug(`The size of the resulting screen recording is ${_support.util.toReadableSizeString(size)}`);
|
|
310
|
+
}
|
|
311
|
+
|
|
322
312
|
return await uploadRecordedMedia(videoPath, options.remotePath, options);
|
|
323
313
|
};
|
|
324
314
|
|
|
@@ -326,4 +316,4 @@ var _default = commands;
|
|
|
326
316
|
exports.default = _default;require('source-map-support').install();
|
|
327
317
|
|
|
328
318
|
|
|
329
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9yZWNvcmQtc2NyZWVuLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiU1RBUlRVUF9JTlRFUlZBTF9NUyIsIlNUQVJUVVBfVElNRU9VVF9NUyIsIkRFRkFVTFRfVElNRV9MSU1JVF9NUyIsIlBST0NFU1NfU0hVVERPV05fVElNRU9VVF9NUyIsIkRFRkFVTFRfRVhUIiwidXBsb2FkUmVjb3JkZWRNZWRpYSIsImxvY2FsRmlsZSIsInJlbW90ZVBhdGgiLCJ1cGxvYWRPcHRpb25zIiwiXyIsImlzRW1wdHkiLCJzaXplIiwiZnMiLCJzdGF0IiwibG9nIiwiZGVidWciLCJ1dGlsIiwidG9SZWFkYWJsZVNpemVTdHJpbmciLCJ0b0luTWVtb3J5QmFzZTY0IiwidG9TdHJpbmciLCJ1c2VyIiwicGFzcyIsIm1ldGhvZCIsImhlYWRlcnMiLCJmaWxlRmllbGROYW1lIiwiZm9ybUZpZWxkcyIsIm9wdGlvbnMiLCJhdXRoIiwibmV0IiwidXBsb2FkRmlsZSIsIlZJREVPX0ZJTEVTIiwiU2V0IiwicHJvY2VzcyIsIm9uIiwidmlkZW9GaWxlIiwicmltcmFmU3luYyIsImlnbiIsIlNjcmVlblJlY29yZGVyIiwiY29uc3RydWN0b3IiLCJ1ZGlkIiwidmlkZW9QYXRoIiwib3B0cyIsIl9wcm9jZXNzIiwiX3VkaWQiLCJfdmlkZW9QYXRoIiwiX2NvZGVjIiwiY29kZWMiLCJfZGlzcGxheSIsImRpc3BsYXkiLCJfbWFzayIsIm1hc2siLCJfdGltZUxpbWl0TXMiLCJ0aW1lTGltaXQiLCJfdGltZXIiLCJnZXRWaWRlb1BhdGgiLCJleGlzdHMiLCJhZGQiLCJpc1J1bm5pbmciLCJfZW5mb3JjZVRlcm1pbmF0aW9uIiwic3RvcCIsInJpbXJhZiIsImRlbGV0ZSIsInN0YXJ0IiwiYXJncyIsInB1c2giLCJTaW1jdGwiLCJleGVjIiwiYXN5bmNocm9ub3VzIiwicXVvdGUiLCJzdGRvdXQiLCJzdGRlcnIiLCJsaW5lIiwidHJpbSIsInN1YnN0cmluZyIsIm9uY2UiLCJjb2RlIiwic2lnbmFsIiwid2FybiIsIkVycm9yIiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsImUiLCJlcnJvckFuZFRocm93Iiwic2V0VGltZW91dCIsImVycm9yIiwiaW5mbyIsImZvcmNlIiwiY2xlYXJUaW1lb3V0IiwiZXh0cmFjdFNpbXVsYXRvclVkaWQiLCJjYXBzIiwiYWxsRGV2aWNlcyIsImZsYXRNYXAiLCJ2YWx1ZXMiLCJnZXREZXZpY2VzIiwibmFtZSIsInN0YXRlIiwic2RrIiwidG9Mb3dlciIsInN0YXJ0UmVjb3JkaW5nU2NyZWVuIiwiZm9yY2VSZXN0YXJ0IiwiX3NjcmVlblJlY29yZGVyIiwidGVtcERpciIsInBhdGgiLCJwcmVmaXgiLCJ1dWlkVjQiLCJzdWZmaXgiLCJwYXJzZUludCIsInN0b3BSZWNvcmRpbmdTY3JlZW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCO0FBRUEsTUFBTUMsbUJBQW1CLEdBQUcsR0FBNUI7QUFDQSxNQUFNQyxrQkFBa0IsR0FBRyxLQUFLLElBQWhDO0FBQ0EsTUFBTUMscUJBQXFCLEdBQUcsS0FBSyxFQUFMLEdBQVUsSUFBeEM7QUFDQSxNQUFNQywyQkFBMkIsR0FBRyxLQUFLLElBQXpDO0FBQ0EsTUFBTUMsV0FBVyxHQUFHLE1BQXBCOztBQUdBLGVBQWVDLG1CQUFmLENBQW9DQyxTQUFwQyxFQUErQ0MsVUFBVSxHQUFHLElBQTVELEVBQWtFQyxhQUFhLEdBQUcsRUFBbEYsRUFBc0Y7QUFDcEYsTUFBSUMsZ0JBQUVDLE9BQUYsQ0FBVUgsVUFBVixDQUFKLEVBQTJCO0FBQ3pCLFVBQU07QUFBQ0ksTUFBQUE7QUFBRCxRQUFTLE1BQU1DLFlBQUdDLElBQUgsQ0FBUVAsU0FBUixDQUFyQjs7QUFDQVEsb0JBQUlDLEtBQUosQ0FBVyxpREFBZ0RDLGNBQUtDLG9CQUFMLENBQTBCTixJQUExQixDQUFnQyxFQUEzRjs7QUFDQSxXQUFPLENBQUMsTUFBTUss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QVY7O0FBQ0EsUUFBTXlCLFNBQVMsR0FBRyxNQUFNLEtBQUs0RCxlQUFMLENBQXFCekMsSUFBckIsRUFBeEI7O0FBQ0EsTUFBSSxDQUFDbkIsU0FBTCxFQUFnQjtBQUNkMUIsb0JBQUl1RSxJQUFKLENBQVMsbURBQVQ7O0FBQ0EsV0FBTyxFQUFQO0FBQ0Q7O0FBQ0QsU0FBTyxNQUFNaEYsbUJBQW1CLENBQUNtQyxTQUFELEVBQVlkLE9BQU8sQ0FBQ25CLFVBQXBCLEVBQWdDbUIsT0FBaEMsQ0FBaEM7QUFDRCxDQWJEOztlQWVlM0IsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB1dGlsLCBmcywgbmV0LCB0ZW1wRGlyIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgU2ltY3RsIGZyb20gJ25vZGUtc2ltY3RsJztcblxuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5jb25zdCBTVEFSVFVQX0lOVEVSVkFMX01TID0gMzAwO1xuY29uc3QgU1RBUlRVUF9USU1FT1VUX01TID0gMTAgKiAxMDAwO1xuY29uc3QgREVGQVVMVF9USU1FX0xJTUlUX01TID0gNjAgKiAxMCAqIDEwMDA7IC8vIDEwIG1pbnV0ZXNcbmNvbnN0IFBST0NFU1NfU0hVVERPV05fVElNRU9VVF9NUyA9IDEwICogMTAwMDtcbmNvbnN0IERFRkFVTFRfRVhUID0gJy5tcDQnO1xuXG5cbmFzeW5jIGZ1bmN0aW9uIHVwbG9hZFJlY29yZGVkTWVkaWEgKGxvY2FsRmlsZSwgcmVtb3RlUGF0aCA9IG51bGwsIHVwbG9hZE9wdGlvbnMgPSB7fSkge1xuICBpZiAoXy5pc0VtcHR5KHJlbW90ZVBhdGgpKSB7XG4gICAgY29uc3Qge3NpemV9ID0gYXdhaXQgZnMuc3RhdChsb2NhbEZpbGUpO1xuICAgIGxvZy5kZWJ1ZyhgVGhlIHNpemUgb2YgdGhlIHJlc3VsdGluZyBzY3JlZW4gcmVjb3JkaW5nIGlzICR7dXRpbC50b1JlYWRhYmxlU2l6ZVN0cmluZyhzaXplKX1gKTtcbiAgICByZXR1cm4gKGF3YWl0IHV0aWwudG9Jbk1lbW9yeUJhc2U2NChsb2NhbEZpbGUpKS50b1N0cmluZygpO1xuICB9XG5cbiAgY29uc3Qge3VzZXIsIHBhc3MsIG1ldGhvZCwgaGVhZGVycywgZmlsZUZpZWxkTmFtZSwgZm9ybUZpZWxkc30gPSB1cGxvYWRPcHRpb25zO1xuICBjb25zdCBvcHRpb25zID0ge1xuICAgIG1ldGhvZDogbWV0aG9kIHx8ICdQVVQnLFxuICAgIGhlYWRlcnMsXG4gICAgZmlsZUZpZWxkTmFtZSxcbiAgICBmb3JtRmllbGRzLFxuICB9O1xuICBpZiAodXNlciAmJiBwYXNzKSB7XG4gICAgb3B0aW9ucy5hdXRoID0ge3VzZXIsIHBhc3N9O1xuICB9XG4gIGF3YWl0IG5ldC51cGxvYWRGaWxlKGxvY2FsRmlsZSwgcmVtb3RlUGF0aCwgb3B0aW9ucyk7XG4gIHJldHVybiAnJztcbn1cblxuY29uc3QgVklERU9fRklMRVMgPSBuZXcgU2V0KCk7XG5wcm9jZXNzLm9uKCdleGl0JywgKCkgPT4ge1xuICBmb3IgKGNvbnN0IHZpZGVvRmlsZSBvZiBWSURFT19GSUxFUykge1xuICAgIHRyeSB7XG4gICAgICBmcy5yaW1yYWZTeW5jKHZpZGVvRmlsZSk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG59KTtcblxuY2xhc3MgU2NyZWVuUmVjb3JkZXIge1xuICBjb25zdHJ1Y3RvciAodWRpZCwgdmlkZW9QYXRoLCBvcHRzID0ge30pIHtcbiAgICB0aGlzLl9wcm9jZXNzID0gbnVsbDtcbiAgICB0aGlzLl91ZGlkID0gdWRpZDtcbiAgICB0aGlzLl92aWRlb1BhdGggPSB2aWRlb1BhdGg7XG4gICAgdGhpcy5fY29kZWMgPSBvcHRzLmNvZGVjO1xuICAgIHRoaXMuX2Rpc3BsYXkgPSBvcHRzLmRpc3BsYXk7XG4gICAgdGhpcy5fbWFzayA9IG9wdHMubWFzaztcbiAgICB0aGlzLl90aW1lTGltaXRNcyA9IG9wdHMudGltZUxpbWl0ID4gMCA/IG9wdHMudGltZUxpbWl0ICogMTAwMCA6IERFRkFVTFRfVElNRV9MSU1JVF9NUztcbiAgICB0aGlzLl90aW1lciA9IG51bGw7XG4gIH1cblxuICBhc3luYyBnZXRWaWRlb1BhdGggKCkge1xuICAgIGlmIChhd2FpdCBmcy5leGlzdHModGhpcy5fdmlkZW9QYXRoKSkge1xuICAgICAgVklERU9fRklMRVMuYWRkKHRoaXMuX3ZpZGVvUGF0aCk7XG4gICAgICByZXR1cm4gdGhpcy5fdmlkZW9QYXRoO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBnZXQgaXNSdW5uaW5nICgpIHtcbiAgICByZXR1cm4gISEodGhpcy5fcHJvY2Vzcz8uaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIF9lbmZvcmNlVGVybWluYXRpb24gKCkge1xuICAgIGlmICh0aGlzLmlzUnVubmluZykge1xuICAgICAgbG9nLmRlYnVnKCdGb3JjZS1zdG9wcGluZyB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdmlkZW8gcmVjb3JkaW5nJyk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLl9wcm9jZXNzLnN0b3AoJ1NJR0tJTEwnKTtcbiAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICB9XG4gICAgdGhpcy5fcHJvY2VzcyA9IG51bGw7XG4gICAgY29uc3QgdmlkZW9QYXRoID0gYXdhaXQgdGhpcy5nZXRWaWRlb1BhdGgoKTtcbiAgICBpZiAodmlkZW9QYXRoKSB7XG4gICAgICBhd2FpdCBmcy5yaW1yYWYodmlkZW9QYXRoKTtcbiAgICAgIFZJREVPX0ZJTEVTLmRlbGV0ZSh2aWRlb1BhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBhc3luYyBzdGFydCAoKSB7XG4gICAgY29uc3QgYXJncyA9IFtcbiAgICAgIHRoaXMuX3VkaWQsICdyZWNvcmRWaWRlbydcbiAgICBdO1xuICAgIGlmICh0aGlzLl9kaXNwbGF5KSB7XG4gICAgICBhcmdzLnB1c2goJy0tZGlzcGxheScsIHRoaXMuX2Rpc3BsYXkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fY29kZWMpIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1jb2RlYycsIHRoaXMuX2NvZGVjKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX21hc2spIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1tYXNrJywgdGhpcy5fbWFzayk7XG4gICAgfVxuICAgIGFyZ3MucHVzaCgnLS1mb3JjZScsIHRoaXMuX3ZpZGVvUGF0aCk7XG4gICAgdGhpcy5fcHJvY2VzcyA9IGF3YWl0IG5ldyBTaW1jdGwoKS5leGVjKCdpbycsIHtcbiAgICAgIGFyZ3MsXG4gICAgICBhc3luY2hyb25vdXM6IHRydWUsXG4gICAgfSk7XG4gICAgbG9nLmRlYnVnKGBTdGFydGluZyB2aWRlbyByZWNvcmRpbmcgd2l0aCBhcmd1bWVudHM6ICR7dXRpbC5xdW90ZShhcmdzKX1gKTtcbiAgICB0aGlzLl9wcm9jZXNzLm9uKCdvdXRwdXQnLCAoc3Rkb3V0LCBzdGRlcnIpID0+IHtcbiAgICAgIGNvbnN0IGxpbmUgPSBfLnRyaW0oc3Rkb3V0IHx8IHN0ZGVycik7XG4gICAgICBpZiAobGluZSkge1xuICAgICAgICBsb2cuZGVidWcoYFtyZWNvcmRWaWRlb0Ake3RoaXMuX3VkaWQuc3Vic3RyaW5nKDAsIDgpfV0gJHtsaW5lfWApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuX3Byb2Nlc3Mub25jZSgnZXhpdCcsIGFzeW5jIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgIHRoaXMuX3Byb2Nlc3MgPSBudWxsO1xuICAgICAgaWYgKGNvZGUgPT09IDApIHtcbiAgICAgICAgbG9nLmRlYnVnKCdTY3JlZW4gcmVjb3JkaW5nIGV4aXRlZCB3aXRob3V0IGVycm9ycycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5fZW5mb3JjZVRlcm1pbmF0aW9uKCk7XG4gICAgICAgIGxvZy53YXJuKGBTY3JlZW4gcmVjb3JkaW5nIGV4aXRlZCB3aXRoIGVycm9yIGNvZGUgJHtjb2RlfSwgc2lnbmFsICR7c2lnbmFsfWApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMuX3Byb2Nlc3Muc3RhcnQoMCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICEhKGF3YWl0IHRoaXMuZ2V0VmlkZW9QYXRoKCkpO1xuICAgICAgfSwge1xuICAgICAgICB3YWl0TXM6IFNUQVJUVVBfVElNRU9VVF9NUyxcbiAgICAgICAgaW50ZXJ2YWxNczogU1RBUlRVUF9JTlRFUlZBTF9NUyxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuX2VuZm9yY2VUZXJtaW5hdGlvbigpO1xuICAgICAgbG9nLmVycm9yQW5kVGhyb3coYFRoZSBleHBlY3RlZCBzY3JlZW4gcmVjb3JkIGZpbGUgJyR7dGhpcy5fdmlkZW9QYXRofScgZG9lcyBub3QgZXhpc3QgYWZ0ZXIgJHtTVEFSVFVQX1RJTUVPVVRfTVN9bXMuIGAgK1xuICAgICAgICBgQ2hlY2sgdGhlIHNlcnZlciBsb2cgZm9yIG1vcmUgZGV0YWlsc2ApO1xuICAgIH1cbiAgICB0aGlzLl90aW1lciA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zdG9wKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBsb2cuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB0aGlzLl90aW1lTGltaXRNcyk7XG4gICAgbG9nLmluZm8oYFRoZSB2aWRlbyByZWNvcmRpbmcgaGFzIHN0YXJ0ZWQuIFdpbGwgdGltZW91dCBpbiAke3RoaXMuX3RpbWVMaW1pdE1zfW1zYCk7XG4gIH1cblxuICBhc3luYyBzdG9wIChmb3JjZSA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuX3RpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpO1xuICAgICAgdGhpcy5fdGltZXIgPSBudWxsO1xuICAgIH1cblxuICAgIGlmIChmb3JjZSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2VuZm9yY2VUZXJtaW5hdGlvbigpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIGxvZy5kZWJ1ZygnU2NyZWVuIHJlY29yZGluZyBpcyBub3QgcnVubmluZy4gUmV0dXJuaW5nIHRoZSByZWNlbnRseSByZWNvcmRlZCB2aWRlbycpO1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0VmlkZW9QYXRoKCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuX3Byb2Nlc3Muc3RvcCgnU0lHSU5UJywgUFJPQ0VTU19TSFVURE9XTl9USU1FT1VUX01TKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLl9lbmZvcmNlVGVybWluYXRpb24oKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU2NyZWVuIHJlY29yZGluZyBoYXMgZmFpbGVkIHRvIHN0b3AgYWZ0ZXIgJHtQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVRfTVN9bXNgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRWaWRlb1BhdGgoKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0U2ltdWxhdG9yVWRpZCAoY2Fwcykge1xuICBpZiAoY2Fwc1snc2FmYXJpOnVzZVNpbXVsYXRvciddID09PSBmYWxzZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgYWxsRGV2aWNlcyA9IF8uZmxhdE1hcChfLnZhbHVlcyhhd2FpdCBuZXcgU2ltY3RsKCkuZ2V0RGV2aWNlcyhudWxsLCAnaU9TJykpKTtcbiAgZm9yIChjb25zdCB7bmFtZSwgdWRpZCwgc3RhdGUsIHNka30gb2YgYWxsRGV2aWNlcykge1xuICAgIGlmIChzdGF0ZSAhPT0gJ0Jvb3RlZCcpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChfLnRvTG93ZXIoY2Fwc1snc2FmYXJpOmRldmljZVVESUQnXSkgPT09IF8udG9Mb3dlcih1ZGlkKSkge1xuICAgICAgcmV0dXJuIHVkaWQ7XG4gICAgfVxuICAgIGlmIChfLnRvTG93ZXIoY2Fwc1snc2FmYXJpOmRldmljZU5hbWUnXSkgPT09IF8udG9Mb3dlcihuYW1lKSAmJlxuICAgICAgKGNhcHNbJ3NhZmFyaTpwbGF0Zm9ybVZlcnNpb24nXSAmJiBjYXBzWydzYWZhcmk6cGxhdGZvcm1WZXJzaW9uJ10gPT09IHNka1xuICAgICAgICB8fCAhY2Fwc1snc2FmYXJpOnBsYXRmb3JtVmVyc2lvbiddKSkge1xuICAgICAgcmV0dXJuIHVkaWQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydFJlY29yZGluZ09wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGNvZGVjIFtoZXZjXSAtIFNwZWNpZmllcyB0aGUgY29kZWMgdHlwZTogXCJoMjY0XCIgb3IgXCJoZXZjXCJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZGlzcGxheSBbaW50ZXJuYWxdIC0gU3VwcG9ydHMgXCJpbnRlcm5hbFwiIG9yIFwiZXh0ZXJuYWxcIi4gRGVmYXVsdCBpcyBcImludGVybmFsXCJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWFzayAtIEZvciBub24tcmVjdGFuZ3VsYXIgZGlzcGxheXMsIGhhbmRsZSB0aGUgbWFzayBieSBwb2xpY3k6XG4gKiAtIGlnbm9yZWQ6IFRoZSBtYXNrIGlzIGlnbm9yZWQgYW5kIHRoZSB1bm1hc2tlZCBmcmFtZWJ1ZmZlciBpcyBzYXZlZC5cbiAqIC0gYWxwaGE6IE5vdCBzdXBwb3J0ZWQsIGJ1dCByZXRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eTsgdGhlIG1hc2sgaXMgcmVuZGVyZWQgYmxhY2suXG4gKiAtIGJsYWNrOiBUaGUgbWFzayBpcyByZW5kZXJlZCBibGFjay5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfG51bWJlcn0gdGltZUxpbWl0IFs2MDBdIC0gVGhlIG1heGltdW0gcmVjb3JkaW5nIHRpbWUsIGluIHNlY29uZHMuIFRoZSBkZWZhdWx0XG4gKiB2YWx1ZSBpcyA2MDAgc2Vjb25kcyAoMTAgbWludXRlcykuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGZvcmNlUmVzdGFydCBbdHJ1ZV0gLSBXaGV0aGVyIHRvIGlnbm9yZSB0aGUgY2FsbCBpZiBhIHNjcmVlbiByZWNvcmRpbmcgaXMgY3VycmVudGx5IHJ1bm5pbmdcbiAqIChgZmFsc2VgKSBvciB0byBzdGFydCBhIG5ldyByZWNvcmRpbmcgaW1tZWRpYXRlbHkgYW5kIHRlcm1pbmF0ZSB0aGUgZXhpc3Rpbmcgb25lIGlmIHJ1bm5pbmcgKGB0cnVlYCkuXG4gKi9cblxuLyoqXG4gKiBSZWNvcmQgdGhlIFNpbXVsYXRvcidzIGRpc3BsYXkgaW4gYmFja2dyb3VuZCB3aGlsZSB0aGUgYXV0b21hdGVkIHRlc3QgaXMgcnVubmluZy5cbiAqIFRoaXMgbWV0aG9kIHVzZXMgYHhjcnVuIHNpbWN0bCBpbyByZWNvcmRWaWRlb2AgaGVscGVyIHVuZGVyIHRoZSBob29kLlxuICogQ2hlY2sgdGhlIG91dHB1dCBvZiBgeGNydW4gc2ltY3RsIGlvYCBjb21tYW5kIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHBhcmFtIHs/U3RhcnRSZWNvcmRpbmdPcHRpb25zfSBvcHRpb25zIC0gVGhlIGF2YWlsYWJsZSBvcHRpb25zLlxuICogQHRocm93cyB7RXJyb3J9IElmIHNjcmVlbiByZWNvcmRpbmcgaGFzIGZhaWxlZCB0byBzdGFydCBvciBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGUgZGVzdGluYXRpb24gZGV2aWNlLlxuICovXG5jb21tYW5kcy5zdGFydFJlY29yZGluZ1NjcmVlbiA9IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0UmVjb3JkaW5nU2NyZWVuIChvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRpbWVMaW1pdCxcbiAgICBjb2RlYyxcbiAgICBkaXNwbGF5LFxuICAgIG1hc2ssXG4gICAgZm9yY2VSZXN0YXJ0ID0gdHJ1ZSxcbiAgfSA9IG9wdGlvbnM7XG4gIGlmICh0aGlzLl9zY3JlZW5SZWNvcmRlcj8uaXNSdW5uaW5nKSB7XG4gICAgbG9nLmluZm8oJ1RoZSBzY3JlZW4gcmVjb3JkaW5nIGlzIGFscmVhZHkgcnVubmluZycpO1xuICAgIGlmICghZm9yY2VSZXN0YXJ0KSB7XG4gICAgICBsb2cuaW5mbygnRG9pbmcgbm90aGluZycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsb2cuaW5mbygnRm9yY2luZyB0aGUgYWN0aXZlIHNjcmVlbiByZWNvcmRpbmcgdG8gc3RvcCcpO1xuICAgIGF3YWl0IHRoaXMuX3NjcmVlblJlY29yZGVyLnN0b3AodHJ1ZSk7XG4gIH1cbiAgdGhpcy5fc2NyZWVuUmVjb3JkZXIgPSBudWxsO1xuXG4gIGNvbnN0IHVkaWQgPSBhd2FpdCBleHRyYWN0U2ltdWxhdG9yVWRpZCh0aGlzLmNhcHMpO1xuICBpZiAoIXVkaWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZXRlcm1pbmUgU2ltdWxhdG9yIFVESUQgdG8gcmVjb3JkIHRoZSB2aWRlbyBmcm9tLiAnICtcbiAgICAgICdEb3VibGUgY2hlY2sgeW91ciBzZXNzaW9uIGNhcGFiaWxpdGllcycpO1xuICB9XG5cbiAgY29uc3QgdmlkZW9QYXRoID0gYXdhaXQgdGVtcERpci5wYXRoKHtcbiAgICBwcmVmaXg6IHV0aWwudXVpZFY0KCkuc3Vic3RyaW5nKDAsIDgpLFxuICAgIHN1ZmZpeDogREVGQVVMVF9FWFQsXG4gIH0pO1xuICB0aGlzLl9zY3JlZW5SZWNvcmRlciA9IG5ldyBTY3JlZW5SZWNvcmRlcih1ZGlkLCB2aWRlb1BhdGgsIHtcbiAgICB0aW1lTGltaXQ6IHBhcnNlSW50KHRpbWVMaW1pdCwgMTApLFxuICAgIGNvZGVjLFxuICAgIGRpc3BsYXksXG4gICAgbWFzayxcbiAgfSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgdGhpcy5fc2NyZWVuUmVjb3JkZXIuc3RhcnQoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRoaXMuX3NjcmVlblJlY29yZGVyID0gbnVsbDtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0b3BSZWNvcmRpbmdPcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSByZW1vdGVQYXRoIC0gVGhlIHBhdGggdG8gdGhlIHJlbW90ZSBsb2NhdGlvbiwgd2hlcmUgdGhlIHJlc3VsdGluZyB2aWRlbyBzaG91bGQgYmUgdXBsb2FkZWQuXG4gKiBUaGUgZm9sbG93aW5nIHByb3RvY29scyBhcmUgc3VwcG9ydGVkOiBodHRwL2h0dHBzLCBmdHAuXG4gKiBOdWxsIG9yIGVtcHR5IHN0cmluZyB2YWx1ZSAodGhlIGRlZmF1bHQgc2V0dGluZykgbWVhbnMgdGhlIGNvbnRlbnQgb2YgcmVzdWx0aW5nXG4gKiBmaWxlIHNob3VsZCBiZSBlbmNvZGVkIGFzIEJhc2U2NCBhbmQgcGFzc2VkIGFzIHRoZSBlbmRwb2ludCByZXNwb25zZSB2YWx1ZS5cbiAqIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB0aGUgZ2VuZXJhdGVkIG1lZGlhIGZpbGUgaXMgdG9vIGJpZyB0b1xuICogZml0IGludG8gdGhlIGF2YWlsYWJsZSBwcm9jZXNzIG1lbW9yeS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXNlciAtIFRoZSBuYW1lIG9mIHRoZSB1c2VyIGZvciB0aGUgcmVtb3RlIGF1dGhlbnRpY2F0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYXNzIC0gVGhlIHBhc3N3b3JkIGZvciB0aGUgcmVtb3RlIGF1dGhlbnRpY2F0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtZXRob2QgLSBUaGUgaHR0cCBtdWx0aXBhcnQgdXBsb2FkIG1ldGhvZCBuYW1lLiBUaGUgJ1BVVCcgb25lIGlzIHVzZWQgYnkgZGVmYXVsdC5cbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gaGVhZGVycyAtIEFkZGl0aW9uYWwgaGVhZGVycyBtYXBwaW5nIGZvciBtdWx0aXBhcnQgaHR0cChzKSB1cGxvYWRzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZpbGVGaWVsZE5hbWUgW2ZpbGVdIC0gVGhlIG5hbWUgb2YgdGhlIGZvcm0gZmllbGQsIHdoZXJlIHRoZSBmaWxlIGNvbnRlbnQgQkxPQiBzaG91bGQgYmUgc3RvcmVkIGZvclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHAocykgdXBsb2Fkc1xuICogQHByb3BlcnR5IHs/T2JqZWN0fEFycmF5PFBhaXI+fSBmb3JtRmllbGRzIC0gQWRkaXRpb25hbCBmb3JtIGZpZWxkcyBmb3IgbXVsdGlwYXJ0IGh0dHAocykgdXBsb2Fkc1xuICovXG5cbi8qKlxuICogU3RvcCByZWNvcmRpbmcgdGhlIHNjcmVlbi5cbiAqIElmIG5vIHNjcmVlbiByZWNvcmRpbmcgaGFzIGJlZW4gc3RhcnRlZCBiZWZvcmUgdGhlbiB0aGUgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7P1N0b3BSZWNvcmRpbmdPcHRpb25zfSBvcHRpb25zIC0gVGhlIGF2YWlsYWJsZSBvcHRpb25zLlxuICogQHJldHVybnMge3N0cmluZ30gQmFzZTY0LWVuY29kZWQgY29udGVudCBvZiB0aGUgcmVjb3JkZWQgbWVkaWEgZmlsZSBpZiAncmVtb3RlUGF0aCdcbiAqIHBhcmFtZXRlciBpcyBmYWxzeSBvciBhbiBlbXB0eSBzdHJpbmcuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGdldHRpbmcgdGhlIG5hbWUgb2YgYSBtZWRpYSBmaWxlXG4gKiBvciB0aGUgZmlsZSBjb250ZW50IGNhbm5vdCBiZSB1cGxvYWRlZCB0byB0aGUgcmVtb3RlIGxvY2F0aW9uXG4gKiBvciBzY3JlZW4gcmVjb3JkaW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlIGRldmljZSB1bmRlciB0ZXN0LlxuICovXG5jb21tYW5kcy5zdG9wUmVjb3JkaW5nU2NyZWVuID0gYXN5bmMgZnVuY3Rpb24gc3RvcFJlY29yZGluZ1NjcmVlbiAob3B0aW9ucyA9IHt9KSB7XG4gIGlmICghdGhpcy5fc2NyZWVuUmVjb3JkZXIpIHtcbiAgICBsb2cuaW5mbygnTm8gc2NyZWVuIHJlY29yZGluZyBoYXMgYmVlbiBzdGFydGVkLiBEb2luZyBub3RoaW5nJyk7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgbG9nLmRlYnVnKCdSZXRyaWV2aW5nIHRoZSByZXN1bHRpbmcgdmlkZW8gZGF0YScpO1xuICBjb25zdCB2aWRlb1BhdGggPSBhd2FpdCB0aGlzLl9zY3JlZW5SZWNvcmRlci5zdG9wKCk7XG4gIGlmICghdmlkZW9QYXRoKSB7XG4gICAgbG9nLmluZm8oJ05vIHZpZGVvIGRhdGEgaXMgZm91bmQuIFJldHVybmluZyBhbiBlbXB0eSBzdHJpbmcnKTtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHVwbG9hZFJlY29yZGVkTWVkaWEodmlkZW9QYXRoLCBvcHRpb25zLnJlbW90ZVBhdGgsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9yZWNvcmQtc2NyZWVuLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
319
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9yZWNvcmQtc2NyZWVuLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiU1RBUlRVUF9JTlRFUlZBTF9NUyIsIlNUQVJUVVBfVElNRU9VVF9NUyIsIkRFRkFVTFRfVElNRV9MSU1JVF9NUyIsIlBST0NFU1NfU0hVVERPV05fVElNRU9VVF9NUyIsIkRFRkFVTFRfRVhUIiwidXBsb2FkUmVjb3JkZWRNZWRpYSIsImxvY2FsRmlsZSIsInJlbW90ZVBhdGgiLCJ1cGxvYWRPcHRpb25zIiwiXyIsImlzRW1wdHkiLCJ1dGlsIiwidG9Jbk1lbW9yeUJhc2U2NCIsInRvU3RyaW5nIiwidXNlciIsInBhc3MiLCJtZXRob2QiLCJoZWFkZXJzIiwiZmlsZUZpZWxkTmFtZSIsImZvcm1GaWVsZHMiLCJvcHRpb25zIiwiYXV0aCIsIm5ldCIsInVwbG9hZEZpbGUiLCJWSURFT19GSUxFUyIsIlNldCIsInByb2Nlc3MiLCJvbiIsInZpZGVvRmlsZSIsImZzIiwicmltcmFmU3luYyIsImlnbiIsIlNjcmVlblJlY29yZGVyIiwiY29uc3RydWN0b3IiLCJ1ZGlkIiwidmlkZW9QYXRoIiwibG9nIiwib3B0cyIsIl9wcm9jZXNzIiwiX3VkaWQiLCJfdmlkZW9QYXRoIiwiX2NvZGVjIiwiY29kZWMiLCJfZGlzcGxheSIsImRpc3BsYXkiLCJfbWFzayIsIm1hc2siLCJfdGltZUxpbWl0TXMiLCJ0aW1lTGltaXQiLCJfdGltZXIiLCJnZXRWaWRlb1BhdGgiLCJleGlzdHMiLCJhZGQiLCJpc1J1bm5pbmciLCJfZW5mb3JjZVRlcm1pbmF0aW9uIiwiZGVidWciLCJzdG9wIiwicmltcmFmIiwiZGVsZXRlIiwic3RhcnQiLCJhcmdzIiwicHVzaCIsIlNpbWN0bCIsImV4ZWMiLCJhc3luY2hyb25vdXMiLCJxdW90ZSIsInN0ZG91dCIsInN0ZGVyciIsImxpbmUiLCJ0cmltIiwic3Vic3RyaW5nIiwib25jZSIsImNvZGUiLCJzaWduYWwiLCJ3YXJuIiwiRXJyb3IiLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwiZSIsImVycm9yQW5kVGhyb3ciLCJzZXRUaW1lb3V0IiwiZXJyb3IiLCJpbmZvIiwiZm9yY2UiLCJjbGVhclRpbWVvdXQiLCJleHRyYWN0U2ltdWxhdG9yVWRpZCIsImNhcHMiLCJhbGxEZXZpY2VzIiwiZmxhdE1hcCIsInZhbHVlcyIsImdldERldmljZXMiLCJuYW1lIiwic3RhdGUiLCJzZGsiLCJ0b0xvd2VyIiwic3RhcnRSZWNvcmRpbmdTY3JlZW4iLCJmb3JjZVJlc3RhcnQiLCJfc2NyZWVuUmVjb3JkZXIiLCJ0ZW1wRGlyIiwicGF0aCIsInByZWZpeCIsInV1aWRWNCIsInN1ZmZpeCIsInBhcnNlSW50Iiwic3RvcFJlY29yZGluZ1NjcmVlbiIsInNpemUiLCJzdGF0IiwidG9SZWFkYWJsZVNpemVTdHJpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCO0FBRUEsTUFBTUMsbUJBQW1CLEdBQUcsR0FBNUI7QUFDQSxNQUFNQyxrQkFBa0IsR0FBRyxLQUFLLElBQWhDO0FBQ0EsTUFBTUMscUJBQXFCLEdBQUcsS0FBSyxFQUFMLEdBQVUsSUFBeEM7QUFDQSxNQUFNQywyQkFBMkIsR0FBRyxLQUFLLElBQXpDO0FBQ0EsTUFBTUMsV0FBVyxHQUFHLE1BQXBCOztBQUdBLGVBQWVDLG1CQUFmLENBQW9DQyxTQUFwQyxFQUErQ0MsVUFBVSxHQUFHLElBQTVELEVBQWtFQyxhQUFhLEdBQUcsRUFBbEYsRUFBc0Y7QUFDcEYsTUFBSUMsZ0JBQUVDLE9BQUYsQ0FBVUgsVUFBVixDQUFKLEVBQTJCO0FBQ3pCLFdBQU8sQ0FBQyxNQUFNSSxjQUFLQyxnQkFBTCxDQUFzQk4sU0FBdEIsQ0FBUCxFQUF5Q08sUUFBekMsRUFBUDtBQUNEOztBQUVELFFBQU07QUFBQ0MsSUFBQUEsSUFBRDtBQUFPQyxJQUFBQSxJQUFQO0FBQWFDLElBQUFBLE1BQWI7QUFBcUJDLElBQUFBLE9BQXJCO0FBQThCQyxJQUFBQSxhQUE5QjtBQUE2Q0MsSUFBQUE7QUFBN0MsTUFBMkRYLGFBQWpFO0FBQ0EsUUFBTVksT0FBTyxHQUFHO0FBQ2RKLElBQUFBLE1BQU0sRUFBRUEsTUFBTSxJQUFJLEtBREo7QUFFZEMsSUFBQUEsT0FGYztBQUdkQyxJQUFBQSxhQUhjO0FBSWRDLElBQUFBO0FBSmMsR0FBaEI7O0FBTUEsTUFBSUwsSUFBSSxJQUFJQyxJQUFaLEVBQWtCO0FBQ2hCSyxJQUFBQSxPQUFPLENBQUNDLElBQVIsR0FBZTtBQUFDUCxNQUFBQSxJQUFEO0FBQU9DLE1BQUFBO0FBQVAsS0FBZjtBQUNEOztBQUNELFFBQU1PLGFBQUlDLFVBQUosQ0FBZWpCLFNBQWYsRUFBMEJDLFVBQTFCLEVBQXNDYSxPQUF0QyxDQUFOO0FBQ0EsU0FBTyxFQUFQO0FBQ0Q7O0FBRUQsTUFBTUksV0FBVyxHQUFHLElBQUlDLEdBQUosRUFBcEI7QUFDQUMsT0FBTyxDQUFDQyxFQUFSLENBQVcsTUFBWCxFQUFtQixNQUFNO0FBQ3ZCLE9BQUssTUFBTUMsU0FBWCxJQUF3QkosV0FBeEIsRUFBcUM7QUFDbkMsUUFBSTtBQUNGSyxrQkFBR0MsVUFBSCxDQUFjRixTQUFkO0FBQ0QsS0FGRCxDQUVFLE9BQU9HLEdBQVAsRUFBWSxDQUFFO0FBQ2pCO0FBQ0YsQ0FORDs7QUFRQSxNQUFNQyxjQUFOLENBQXFCO0FBQ25CQyxFQUFBQSxXQUFXLENBQUVDLElBQUYsRUFBUUMsU0FBUixFQUFtQkMsR0FBbkIsRUFBd0JDLElBQUksR0FBRyxFQUEvQixFQUFtQztBQUM1QyxTQUFLRCxHQUFMLEdBQVdBLEdBQVg7QUFDQSxTQUFLRSxRQUFMLEdBQWdCLElBQWhCO0FBQ0EsU0FBS0MsS0FBTCxHQUFhTCxJQUFiO0FBQ0EsU0FBS00sVUFBTCxHQUFrQkwsU0FBbEI7QUFDQSxTQUFLTSxNQUFMLEdBQWNKLElBQUksQ0FBQ0ssS0FBbkI7QUFDQSxTQUFLQyxRQUFMLEdBQWdCTixJQUFJLENBQUNPLE9BQXJCO0FBQ0EsU0FBS0MsS0FBTCxHQUFhUixJQUFJLENBQUNTLElBQWxCO0FBQ0EsU0FBS0MsWUFBTCxHQUFvQlYsSUFBSSxDQUFDVyxTQUFMLEdBQWlCLENBQWpCLEdBQXFCWCxJQUFJLENBQUNXLFNBQUwsR0FBaUIsSUFBdEMsR0FBNkM5QyxxQkFBakU7QUFDQSxTQUFLK0MsTUFBTCxHQUFjLElBQWQ7QUFDRDs7QUFFaUIsUUFBWkMsWUFBWSxHQUFJO0FBQ3BCLFFBQUksTUFBTXJCLFlBQUdzQixNQUFILENBQVUsS0FBS1gsVUFBZixDQUFWLEVBQXNDO0FBQ3BDaEIsTUFBQUEsV0FBVyxDQUFDNEIsR0FBWixDQUFnQixLQUFLWixVQUFyQjtBQUNBLGFBQU8sS0FBS0EsVUFBWjtBQUNEOztBQUNELFdBQU8sRUFBUDtBQUNEOztBQUVZLE1BQVRhLFNBQVMsR0FBSTtBQUFBOztBQUNmLFdBQU8sQ0FBQyxvQkFBRSxLQUFLZixRQUFQLDJDQUFFLGVBQWVlLFNBQWpCLENBQVI7QUFDRDs7QUFFd0IsUUFBbkJDLG1CQUFtQixHQUFJO0FBQzNCLFFBQUksS0FBS0QsU0FBVCxFQUFvQjtBQUNsQixXQUFLakIsR0FBTCxDQUFTbUIsS0FBVCxDQUFlLHNEQUFmOztBQUNBLFVBQUk7QUFDRixjQUFNLEtBQUtqQixRQUFMLENBQWNrQixJQUFkLENBQW1CLFNBQW5CLENBQU47QUFDRCxPQUZELENBRUUsT0FBT3pCLEdBQVAsRUFBWSxDQUFFO0FBQ2pCOztBQUNELFNBQUtPLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQSxVQUFNSCxTQUFTLEdBQUcsTUFBTSxLQUFLZSxZQUFMLEVBQXhCOztBQUNBLFFBQUlmLFNBQUosRUFBZTtBQUNiLFlBQU1OLFlBQUc0QixNQUFILENBQVV0QixTQUFWLENBQU47QUFDQVgsTUFBQUEsV0FBVyxDQUFDa0MsTUFBWixDQUFtQnZCLFNBQW5CO0FBQ0Q7O0FBQ0QsV0FBTyxFQUFQO0FBQ0Q7O0FBRVUsUUFBTHdCLEtBQUssR0FBSTtBQUNiLFVBQU1DLElBQUksR0FBRyxDQUNYLEtBQUtyQixLQURNLEVBQ0MsYUFERCxDQUFiOztBQUdBLFFBQUksS0FBS0ksUUFBVCxFQUFtQjtBQUNqQmlCLE1BQUFBLElBQUksQ0FBQ0MsSUFBTCxDQUFVLFdBQVYsRUFBdUIsS0FBS2xCLFFBQTVCO0FBQ0Q7O0FBQ0QsUUFBSSxLQUFLRixNQUFULEVBQWlCO0FBQ2ZtQixNQUFBQSxJQUFJLENBQUNDLElBQUwsQ0FBVSxTQUFWLEVBQXFCLEtBQUtwQixNQUExQjtBQUNEOztBQUNELFFBQUksS0FBS0ksS0FBVCxFQUFnQjtBQUNkZSxNQUFBQSxJQUFJLENBQUNDLElBQUwsQ0FBVSxRQUFWLEVBQW9CLEtBQUtoQixLQUF6QjtBQUNEOztBQUNEZSxJQUFBQSxJQUFJLENBQUNDLElBQUwsQ0FBVSxTQUFWLEVBQXFCLEtBQUtyQixVQUExQjtBQUNBLFNBQUtGLFFBQUwsR0FBZ0IsTUFBTSxJQUFJd0IsbUJBQUosR0FBYUMsSUFBYixDQUFrQixJQUFsQixFQUF3QjtBQUM1Q0gsTUFBQUEsSUFENEM7QUFFNUNJLE1BQUFBLFlBQVksRUFBRTtBQUY4QixLQUF4QixDQUF0QjtBQUlBLFNBQUs1QixHQUFMLENBQVNtQixLQUFULENBQWdCLDRDQUEyQzVDLGNBQUtzRCxLQUFMLENBQVdMLElBQVgsQ0FBaUIsRUFBNUU7O0FBQ0EsU0FBS3RCLFFBQUwsQ0FBY1gsRUFBZCxDQUFpQixRQUFqQixFQUEyQixDQUFDdUMsTUFBRCxFQUFTQyxNQUFULEtBQW9CO0FBQzdDLFlBQU1DLElBQUksR0FBRzNELGdCQUFFNEQsSUFBRixDQUFPSCxNQUFNLElBQUlDLE1BQWpCLENBQWI7O0FBQ0EsVUFBSUMsSUFBSixFQUFVO0FBQ1IsYUFBS2hDLEdBQUwsQ0FBU21CLEtBQVQsQ0FBZ0IsZ0JBQWUsS0FBS2hCLEtBQUwsQ0FBVytCLFNBQVgsQ0FBcUIsQ0FBckIsRUFBd0IsQ0FBeEIsQ0FBMkIsS0FBSUYsSUFBSyxFQUFuRTtBQUNEO0FBQ0YsS0FMRDs7QUFNQSxTQUFLOUIsUUFBTCxDQUFjaUMsSUFBZCxDQUFtQixNQUFuQixFQUEyQixPQUFPQyxJQUFQLEVBQWFDLE1BQWIsS0FBd0I7QUFDakQsV0FBS25DLFFBQUwsR0FBZ0IsSUFBaEI7O0FBQ0EsVUFBSWtDLElBQUksS0FBSyxDQUFiLEVBQWdCO0FBQ2QsYUFBS3BDLEdBQUwsQ0FBU21CLEtBQVQsQ0FBZSx3Q0FBZjtBQUNELE9BRkQsTUFFTztBQUNMLGNBQU0sS0FBS0QsbUJBQUwsRUFBTjtBQUNBLGFBQUtsQixHQUFMLENBQVNzQyxJQUFULENBQWUsMkNBQTBDRixJQUFLLFlBQVdDLE1BQU8sRUFBaEY7QUFDRDtBQUNGLEtBUkQ7O0FBU0EsVUFBTSxLQUFLbkMsUUFBTCxDQUFjcUIsS0FBZCxDQUFvQixDQUFwQixDQUFOOztBQUNBLFFBQUk7QUFDRixZQUFNLGdDQUFpQixZQUFZO0FBQ2pDLFlBQUksQ0FBQyxLQUFLTixTQUFWLEVBQXFCO0FBQ25CLGdCQUFNLElBQUlzQixLQUFKLEVBQU47QUFDRDs7QUFDRCxlQUFPLENBQUMsRUFBRSxNQUFNLEtBQUt6QixZQUFMLEVBQVIsQ0FBUjtBQUNELE9BTEssRUFLSDtBQUNEMEIsUUFBQUEsTUFBTSxFQUFFM0Usa0JBRFA7QUFFRDRFLFFBQUFBLFVBQVUsRUFBRTdFO0FBRlgsT0FMRyxDQUFOO0FBU0QsS0FWRCxDQVVFLE9BQU84RSxDQUFQLEVBQVU7QUFDVixZQUFNLEtBQUt4QixtQkFBTCxFQUFOO0FBQ0EsV0FBS2xCLEdBQUwsQ0FBUzJDLGFBQVQsQ0FBd0Isb0NBQW1DLEtBQUt2QyxVQUFXLDBCQUF5QnZDLGtCQUFtQixNQUFoRyxHQUNwQix1Q0FESDtBQUVEOztBQUNELFNBQUtnRCxNQUFMLEdBQWMrQixVQUFVLENBQUMsWUFBWTtBQUNuQyxVQUFJLEtBQUszQixTQUFULEVBQW9CO0FBQ2xCLFlBQUk7QUFDRixnQkFBTSxLQUFLRyxJQUFMLEVBQU47QUFDRCxTQUZELENBRUUsT0FBT3NCLENBQVAsRUFBVTtBQUNWLGVBQUsxQyxHQUFMLENBQVM2QyxLQUFULENBQWVILENBQWY7QUFDRDtBQUNGO0FBQ0YsS0FSdUIsRUFRckIsS0FBSy9CLFlBUmdCLENBQXhCO0FBU0EsU0FBS1gsR0FBTCxDQUFTOEMsSUFBVCxDQUFlLG9EQUFtRCxLQUFLbkMsWUFBYSxJQUFwRjtBQUNEOztBQUVTLFFBQUpTLElBQUksQ0FBRTJCLEtBQUssR0FBRyxLQUFWLEVBQWlCO0FBQ3pCLFFBQUksS0FBS2xDLE1BQVQsRUFBaUI7QUFDZm1DLE1BQUFBLFlBQVksQ0FBQyxLQUFLbkMsTUFBTixDQUFaO0FBQ0EsV0FBS0EsTUFBTCxHQUFjLElBQWQ7QUFDRDs7QUFFRCxRQUFJa0MsS0FBSixFQUFXO0FBQ1QsYUFBTyxNQUFNLEtBQUs3QixtQkFBTCxFQUFiO0FBQ0Q7O0FBRUQsUUFBSSxDQUFDLEtBQUtELFNBQVYsRUFBcUI7QUFDbkIsV0FBS2pCLEdBQUwsQ0FBU21CLEtBQVQsQ0FBZSx3RUFBZjtBQUNBLGFBQU8sTUFBTSxLQUFLTCxZQUFMLEVBQWI7QUFDRDs7QUFFRCxRQUFJO0FBQ0YsWUFBTSxLQUFLWixRQUFMLENBQWNrQixJQUFkLENBQW1CLFFBQW5CLEVBQTZCckQsMkJBQTdCLENBQU47QUFDRCxLQUZELENBRUUsT0FBTzJFLENBQVAsRUFBVTtBQUNWLFlBQU0sS0FBS3hCLG1CQUFMLEVBQU47QUFDQSxZQUFNLElBQUlxQixLQUFKLENBQVcsNkNBQTRDeEUsMkJBQTRCLElBQW5GLENBQU47QUFDRDs7QUFFRCxXQUFPLE1BQU0sS0FBSytDLFlBQUwsRUFBYjtBQUNEOztBQTlIa0I7O0FBaUlyQixlQUFlbUMsb0JBQWYsQ0FBcUNDLElBQXJDLEVBQTJDO0FBQ3pDLE1BQUlBLElBQUksQ0FBQyxxQkFBRCxDQUFKLEtBQWdDLEtBQXBDLEVBQTJDO0FBQ3pDLFdBQU8sSUFBUDtBQUNEOztBQUVELFFBQU1DLFVBQVUsR0FBRzlFLGdCQUFFK0UsT0FBRixDQUFVL0UsZ0JBQUVnRixNQUFGLENBQVMsTUFBTSxJQUFJM0IsbUJBQUosR0FBYTRCLFVBQWIsQ0FBd0IsSUFBeEIsRUFBOEIsS0FBOUIsQ0FBZixDQUFWLENBQW5COztBQUNBLE9BQUssTUFBTTtBQUFDQyxJQUFBQSxJQUFEO0FBQU96RCxJQUFBQSxJQUFQO0FBQWEwRCxJQUFBQSxLQUFiO0FBQW9CQyxJQUFBQTtBQUFwQixHQUFYLElBQXVDTixVQUF2QyxFQUFtRDtBQUNqRCxRQUFJSyxLQUFLLEtBQUssUUFBZCxFQUF3QjtBQUN0QjtBQUNEOztBQUVELFFBQUluRixnQkFBRXFGLE9BQUYsQ0FBVVIsSUFBSSxDQUFDLG1CQUFELENBQWQsTUFBeUM3RSxnQkFBRXFGLE9BQUYsQ0FBVTVELElBQVYsQ0FBN0MsRUFBOEQ7QUFDNUQsYUFBT0EsSUFBUDtBQUNEOztBQUNELFFBQUl6QixnQkFBRXFGLE9BQUYsQ0FBVVIsSUFBSSxDQUFDLG1CQUFELENBQWQsTUFBeUM3RSxnQkFBRXFGLE9BQUYsQ0FBVUgsSUFBVixDQUF6QyxLQUNETCxJQUFJLENBQUMsd0JBQUQsQ0FBSixJQUFrQ0EsSUFBSSxDQUFDLHdCQUFELENBQUosS0FBbUNPLEdBQXJFLElBQ0ksQ0FBQ1AsSUFBSSxDQUFDLHdCQUFELENBRlIsQ0FBSixFQUV5QztBQUN2QyxhQUFPcEQsSUFBUDtBQUNEO0FBQ0Y7O0FBRUQsU0FBTyxJQUFQO0FBQ0Q7O0FBMEJEbkMsUUFBUSxDQUFDZ0csb0JBQVQsR0FBZ0MsZUFBZUEsb0JBQWYsQ0FBcUMzRSxPQUFPLEdBQUcsRUFBL0MsRUFBbUQ7QUFBQTs7QUFDakYsUUFBTTtBQUNKNEIsSUFBQUEsU0FESTtBQUVKTixJQUFBQSxLQUZJO0FBR0pFLElBQUFBLE9BSEk7QUFJSkUsSUFBQUEsSUFKSTtBQUtKa0QsSUFBQUEsWUFBWSxHQUFHO0FBTFgsTUFNRjVFLE9BTko7O0FBT0EsK0JBQUksS0FBSzZFLGVBQVQsa0RBQUksc0JBQXNCNUMsU0FBMUIsRUFBcUM7QUFDbkMsU0FBS2pCLEdBQUwsQ0FBUzhDLElBQVQsQ0FBYyx5Q0FBZDs7QUFDQSxRQUFJLENBQUNjLFlBQUwsRUFBbUI7QUFDakIsV0FBSzVELEdBQUwsQ0FBUzhDLElBQVQsQ0FBYyxlQUFkO0FBQ0E7QUFDRDs7QUFDRCxTQUFLOUMsR0FBTCxDQUFTOEMsSUFBVCxDQUFjLDZDQUFkO0FBQ0EsVUFBTSxLQUFLZSxlQUFMLENBQXFCekMsSUFBckIsQ0FBMEIsSUFBMUIsQ0FBTjtBQUNEOztBQUNELE9BQUt5QyxlQUFMLEdBQXVCLElBQXZCO0FBRUEsUUFBTS9ELElBQUksR0FBRyxNQUFNbUQsb0JBQW9CLENBQUMsS0FBS0MsSUFBTixDQUF2Qzs7QUFDQSxNQUFJLENBQUNwRCxJQUFMLEVBQVc7QUFDVCxVQUFNLElBQUl5QyxLQUFKLENBQVUsK0RBQ2Qsd0NBREksQ0FBTjtBQUVEOztBQUVELFFBQU14QyxTQUFTLEdBQUcsTUFBTStELGlCQUFRQyxJQUFSLENBQWE7QUFDbkNDLElBQUFBLE1BQU0sRUFBRXpGLGNBQUswRixNQUFMLEdBQWMvQixTQUFkLENBQXdCLENBQXhCLEVBQTJCLENBQTNCLENBRDJCO0FBRW5DZ0MsSUFBQUEsTUFBTSxFQUFFbEc7QUFGMkIsR0FBYixDQUF4QjtBQUlBLE9BQUs2RixlQUFMLEdBQXVCLElBQUlqRSxjQUFKLENBQW1CRSxJQUFuQixFQUF5QkMsU0FBekIsRUFBb0MsS0FBS0MsR0FBekMsRUFBOEM7QUFDbkVZLElBQUFBLFNBQVMsRUFBRXVELFFBQVEsQ0FBQ3ZELFNBQUQsRUFBWSxFQUFaLENBRGdEO0FBRW5FTixJQUFBQSxLQUZtRTtBQUduRUUsSUFBQUEsT0FIbUU7QUFJbkVFLElBQUFBO0FBSm1FLEdBQTlDLENBQXZCOztBQU1BLE1BQUk7QUFDRixVQUFNLEtBQUttRCxlQUFMLENBQXFCdEMsS0FBckIsRUFBTjtBQUNELEdBRkQsQ0FFRSxPQUFPbUIsQ0FBUCxFQUFVO0FBQ1YsU0FBS21CLGVBQUwsR0FBdUIsSUFBdkI7QUFDQSxVQUFNbkIsQ0FBTjtBQUNEO0FBQ0YsQ0F6Q0Q7O0FBd0VBL0UsUUFBUSxDQUFDeUcsbUJBQVQsR0FBK0IsZUFBZUEsbUJBQWYsQ0FBb0NwRixPQUFPLEdBQUcsRUFBOUMsRUFBa0Q7QUFDL0UsTUFBSSxDQUFDLEtBQUs2RSxlQUFWLEVBQTJCO0FBQ3pCLFNBQUs3RCxHQUFMLENBQVM4QyxJQUFULENBQWMscURBQWQ7QUFDQSxXQUFPLEVBQVA7QUFDRDs7QUFFRCxPQUFLOUMsR0FBTCxDQUFTbUIsS0FBVCxDQUFlLHFDQUFmO0FBQ0EsUUFBTXBCLFNBQVMsR0FBRyxNQUFNLEtBQUs4RCxlQUFMLENBQXFCekMsSUFBckIsRUFBeEI7O0FBQ0EsTUFBSSxDQUFDckIsU0FBTCxFQUFnQjtBQUNkLFNBQUtDLEdBQUwsQ0FBUzhDLElBQVQsQ0FBYyxtREFBZDtBQUNBLFdBQU8sRUFBUDtBQUNEOztBQUNELE1BQUl6RSxnQkFBRUMsT0FBRixDQUFVVSxPQUFPLENBQUNiLFVBQWxCLENBQUosRUFBbUM7QUFDakMsVUFBTTtBQUFDa0csTUFBQUE7QUFBRCxRQUFTLE1BQU01RSxZQUFHNkUsSUFBSCxDQUFRdkUsU0FBUixDQUFyQjtBQUNBLFNBQUtDLEdBQUwsQ0FBU21CLEtBQVQsQ0FBZ0IsaURBQWdENUMsY0FBS2dHLG9CQUFMLENBQTBCRixJQUExQixDQUFnQyxFQUFoRztBQUNEOztBQUNELFNBQU8sTUFBTXBHLG1CQUFtQixDQUFDOEIsU0FBRCxFQUFZZixPQUFPLENBQUNiLFVBQXBCLEVBQWdDYSxPQUFoQyxDQUFoQztBQUNELENBakJEOztlQW1CZXJCLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgdXRpbCwgZnMsIG5ldCwgdGVtcERpciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IFNpbWN0bCBmcm9tICdub2RlLXNpbWN0bCc7XG5cblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuY29uc3QgU1RBUlRVUF9JTlRFUlZBTF9NUyA9IDMwMDtcbmNvbnN0IFNUQVJUVVBfVElNRU9VVF9NUyA9IDEwICogMTAwMDtcbmNvbnN0IERFRkFVTFRfVElNRV9MSU1JVF9NUyA9IDYwICogMTAgKiAxMDAwOyAvLyAxMCBtaW51dGVzXG5jb25zdCBQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVRfTVMgPSAxMCAqIDEwMDA7XG5jb25zdCBERUZBVUxUX0VYVCA9ICcubXA0JztcblxuXG5hc3luYyBmdW5jdGlvbiB1cGxvYWRSZWNvcmRlZE1lZGlhIChsb2NhbEZpbGUsIHJlbW90ZVBhdGggPSBudWxsLCB1cGxvYWRPcHRpb25zID0ge30pIHtcbiAgaWYgKF8uaXNFbXB0eShyZW1vdGVQYXRoKSkge1xuICAgIHJldHVybiAoYXdhaXQgdXRpbC50b0luTWVtb3J5QmFzZTY0KGxvY2FsRmlsZSkpLnRvU3RyaW5nKCk7XG4gIH1cblxuICBjb25zdCB7dXNlciwgcGFzcywgbWV0aG9kLCBoZWFkZXJzLCBmaWxlRmllbGROYW1lLCBmb3JtRmllbGRzfSA9IHVwbG9hZE9wdGlvbnM7XG4gIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgbWV0aG9kOiBtZXRob2QgfHwgJ1BVVCcsXG4gICAgaGVhZGVycyxcbiAgICBmaWxlRmllbGROYW1lLFxuICAgIGZvcm1GaWVsZHMsXG4gIH07XG4gIGlmICh1c2VyICYmIHBhc3MpIHtcbiAgICBvcHRpb25zLmF1dGggPSB7dXNlciwgcGFzc307XG4gIH1cbiAgYXdhaXQgbmV0LnVwbG9hZEZpbGUobG9jYWxGaWxlLCByZW1vdGVQYXRoLCBvcHRpb25zKTtcbiAgcmV0dXJuICcnO1xufVxuXG5jb25zdCBWSURFT19GSUxFUyA9IG5ldyBTZXQoKTtcbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gIGZvciAoY29uc3QgdmlkZW9GaWxlIG9mIFZJREVPX0ZJTEVTKSB7XG4gICAgdHJ5IHtcbiAgICAgIGZzLnJpbXJhZlN5bmModmlkZW9GaWxlKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cbn0pO1xuXG5jbGFzcyBTY3JlZW5SZWNvcmRlciB7XG4gIGNvbnN0cnVjdG9yICh1ZGlkLCB2aWRlb1BhdGgsIGxvZywgb3B0cyA9IHt9KSB7XG4gICAgdGhpcy5sb2cgPSBsb2c7XG4gICAgdGhpcy5fcHJvY2VzcyA9IG51bGw7XG4gICAgdGhpcy5fdWRpZCA9IHVkaWQ7XG4gICAgdGhpcy5fdmlkZW9QYXRoID0gdmlkZW9QYXRoO1xuICAgIHRoaXMuX2NvZGVjID0gb3B0cy5jb2RlYztcbiAgICB0aGlzLl9kaXNwbGF5ID0gb3B0cy5kaXNwbGF5O1xuICAgIHRoaXMuX21hc2sgPSBvcHRzLm1hc2s7XG4gICAgdGhpcy5fdGltZUxpbWl0TXMgPSBvcHRzLnRpbWVMaW1pdCA+IDAgPyBvcHRzLnRpbWVMaW1pdCAqIDEwMDAgOiBERUZBVUxUX1RJTUVfTElNSVRfTVM7XG4gICAgdGhpcy5fdGltZXIgPSBudWxsO1xuICB9XG5cbiAgYXN5bmMgZ2V0VmlkZW9QYXRoICgpIHtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKHRoaXMuX3ZpZGVvUGF0aCkpIHtcbiAgICAgIFZJREVPX0ZJTEVTLmFkZCh0aGlzLl92aWRlb1BhdGgpO1xuICAgICAgcmV0dXJuIHRoaXMuX3ZpZGVvUGF0aDtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZ2V0IGlzUnVubmluZyAoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMuX3Byb2Nlc3M/LmlzUnVubmluZyk7XG4gIH1cblxuICBhc3luYyBfZW5mb3JjZVRlcm1pbmF0aW9uICgpIHtcbiAgICBpZiAodGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdGb3JjZS1zdG9wcGluZyB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdmlkZW8gcmVjb3JkaW5nJyk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLl9wcm9jZXNzLnN0b3AoJ1NJR0tJTEwnKTtcbiAgICAgIH0gY2F0Y2ggKGlnbikge31cbiAgICB9XG4gICAgdGhpcy5fcHJvY2VzcyA9IG51bGw7XG4gICAgY29uc3QgdmlkZW9QYXRoID0gYXdhaXQgdGhpcy5nZXRWaWRlb1BhdGgoKTtcbiAgICBpZiAodmlkZW9QYXRoKSB7XG4gICAgICBhd2FpdCBmcy5yaW1yYWYodmlkZW9QYXRoKTtcbiAgICAgIFZJREVPX0ZJTEVTLmRlbGV0ZSh2aWRlb1BhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBhc3luYyBzdGFydCAoKSB7XG4gICAgY29uc3QgYXJncyA9IFtcbiAgICAgIHRoaXMuX3VkaWQsICdyZWNvcmRWaWRlbydcbiAgICBdO1xuICAgIGlmICh0aGlzLl9kaXNwbGF5KSB7XG4gICAgICBhcmdzLnB1c2goJy0tZGlzcGxheScsIHRoaXMuX2Rpc3BsYXkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fY29kZWMpIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1jb2RlYycsIHRoaXMuX2NvZGVjKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX21hc2spIHtcbiAgICAgIGFyZ3MucHVzaCgnLS1tYXNrJywgdGhpcy5fbWFzayk7XG4gICAgfVxuICAgIGFyZ3MucHVzaCgnLS1mb3JjZScsIHRoaXMuX3ZpZGVvUGF0aCk7XG4gICAgdGhpcy5fcHJvY2VzcyA9IGF3YWl0IG5ldyBTaW1jdGwoKS5leGVjKCdpbycsIHtcbiAgICAgIGFyZ3MsXG4gICAgICBhc3luY2hyb25vdXM6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5sb2cuZGVidWcoYFN0YXJ0aW5nIHZpZGVvIHJlY29yZGluZyB3aXRoIGFyZ3VtZW50czogJHt1dGlsLnF1b3RlKGFyZ3MpfWApO1xuICAgIHRoaXMuX3Byb2Nlc3Mub24oJ291dHB1dCcsIChzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgY29uc3QgbGluZSA9IF8udHJpbShzdGRvdXQgfHwgc3RkZXJyKTtcbiAgICAgIGlmIChsaW5lKSB7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBbcmVjb3JkVmlkZW9AJHt0aGlzLl91ZGlkLnN1YnN0cmluZygwLCA4KX1dICR7bGluZX1gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLl9wcm9jZXNzLm9uY2UoJ2V4aXQnLCBhc3luYyAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICB0aGlzLl9wcm9jZXNzID0gbnVsbDtcbiAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKCdTY3JlZW4gcmVjb3JkaW5nIGV4aXRlZCB3aXRob3V0IGVycm9ycycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5fZW5mb3JjZVRlcm1pbmF0aW9uKCk7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYFNjcmVlbiByZWNvcmRpbmcgZXhpdGVkIHdpdGggZXJyb3IgY29kZSAke2NvZGV9LCBzaWduYWwgJHtzaWduYWx9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy5fcHJvY2Vzcy5zdGFydCgwKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gISEoYXdhaXQgdGhpcy5nZXRWaWRlb1BhdGgoKSk7XG4gICAgICB9LCB7XG4gICAgICAgIHdhaXRNczogU1RBUlRVUF9USU1FT1VUX01TLFxuICAgICAgICBpbnRlcnZhbE1zOiBTVEFSVFVQX0lOVEVSVkFMX01TLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5fZW5mb3JjZVRlcm1pbmF0aW9uKCk7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBUaGUgZXhwZWN0ZWQgc2NyZWVuIHJlY29yZCBmaWxlICcke3RoaXMuX3ZpZGVvUGF0aH0nIGRvZXMgbm90IGV4aXN0IGFmdGVyICR7U1RBUlRVUF9USU1FT1VUX01TfW1zLiBgICtcbiAgICAgICAgYENoZWNrIHRoZSBzZXJ2ZXIgbG9nIGZvciBtb3JlIGRldGFpbHNgKTtcbiAgICB9XG4gICAgdGhpcy5fdGltZXIgPSBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzUnVubmluZykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcCgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhpcy5sb2cuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB0aGlzLl90aW1lTGltaXRNcyk7XG4gICAgdGhpcy5sb2cuaW5mbyhgVGhlIHZpZGVvIHJlY29yZGluZyBoYXMgc3RhcnRlZC4gV2lsbCB0aW1lb3V0IGluICR7dGhpcy5fdGltZUxpbWl0TXN9bXNgKTtcbiAgfVxuXG4gIGFzeW5jIHN0b3AgKGZvcmNlID0gZmFsc2UpIHtcbiAgICBpZiAodGhpcy5fdGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lcik7XG4gICAgICB0aGlzLl90aW1lciA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGZvcmNlKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5fZW5mb3JjZVRlcm1pbmF0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzUnVubmluZykge1xuICAgICAgdGhpcy5sb2cuZGVidWcoJ1NjcmVlbiByZWNvcmRpbmcgaXMgbm90IHJ1bm5pbmcuIFJldHVybmluZyB0aGUgcmVjZW50bHkgcmVjb3JkZWQgdmlkZW8nKTtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldFZpZGVvUGF0aCgpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLl9wcm9jZXNzLnN0b3AoJ1NJR0lOVCcsIFBST0NFU1NfU0hVVERPV05fVElNRU9VVF9NUyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5fZW5mb3JjZVRlcm1pbmF0aW9uKCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNjcmVlbiByZWNvcmRpbmcgaGFzIGZhaWxlZCB0byBzdG9wIGFmdGVyICR7UFJPQ0VTU19TSFVURE9XTl9USU1FT1VUX01TfW1zYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0VmlkZW9QYXRoKCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFNpbXVsYXRvclVkaWQgKGNhcHMpIHtcbiAgaWYgKGNhcHNbJ3NhZmFyaTp1c2VTaW11bGF0b3InXSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGFsbERldmljZXMgPSBfLmZsYXRNYXAoXy52YWx1ZXMoYXdhaXQgbmV3IFNpbWN0bCgpLmdldERldmljZXMobnVsbCwgJ2lPUycpKSk7XG4gIGZvciAoY29uc3Qge25hbWUsIHVkaWQsIHN0YXRlLCBzZGt9IG9mIGFsbERldmljZXMpIHtcbiAgICBpZiAoc3RhdGUgIT09ICdCb290ZWQnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoXy50b0xvd2VyKGNhcHNbJ3NhZmFyaTpkZXZpY2VVRElEJ10pID09PSBfLnRvTG93ZXIodWRpZCkpIHtcbiAgICAgIHJldHVybiB1ZGlkO1xuICAgIH1cbiAgICBpZiAoXy50b0xvd2VyKGNhcHNbJ3NhZmFyaTpkZXZpY2VOYW1lJ10pID09PSBfLnRvTG93ZXIobmFtZSkgJiZcbiAgICAgIChjYXBzWydzYWZhcmk6cGxhdGZvcm1WZXJzaW9uJ10gJiYgY2Fwc1snc2FmYXJpOnBsYXRmb3JtVmVyc2lvbiddID09PSBzZGtcbiAgICAgICAgfHwgIWNhcHNbJ3NhZmFyaTpwbGF0Zm9ybVZlcnNpb24nXSkpIHtcbiAgICAgIHJldHVybiB1ZGlkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RhcnRSZWNvcmRpbmdPcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb2RlYyBbaGV2Y10gLSBTcGVjaWZpZXMgdGhlIGNvZGVjIHR5cGU6IFwiaDI2NFwiIG9yIFwiaGV2Y1wiXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGRpc3BsYXkgW2ludGVybmFsXSAtIFN1cHBvcnRzIFwiaW50ZXJuYWxcIiBvciBcImV4dGVybmFsXCIuIERlZmF1bHQgaXMgXCJpbnRlcm5hbFwiXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1hc2sgLSBGb3Igbm9uLXJlY3Rhbmd1bGFyIGRpc3BsYXlzLCBoYW5kbGUgdGhlIG1hc2sgYnkgcG9saWN5OlxuICogLSBpZ25vcmVkOiBUaGUgbWFzayBpcyBpZ25vcmVkIGFuZCB0aGUgdW5tYXNrZWQgZnJhbWVidWZmZXIgaXMgc2F2ZWQuXG4gKiAtIGFscGhhOiBOb3Qgc3VwcG9ydGVkLCBidXQgcmV0YWluZWQgZm9yIGNvbXBhdGliaWxpdHk7IHRoZSBtYXNrIGlzIHJlbmRlcmVkIGJsYWNrLlxuICogLSBibGFjazogVGhlIG1hc2sgaXMgcmVuZGVyZWQgYmxhY2suXG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHRpbWVMaW1pdCBbNjAwXSAtIFRoZSBtYXhpbXVtIHJlY29yZGluZyB0aW1lLCBpbiBzZWNvbmRzLiBUaGUgZGVmYXVsdFxuICogdmFsdWUgaXMgNjAwIHNlY29uZHMgKDEwIG1pbnV0ZXMpLlxuICogQHByb3BlcnR5IHtib29sZWFufSBmb3JjZVJlc3RhcnQgW3RydWVdIC0gV2hldGhlciB0byBpZ25vcmUgdGhlIGNhbGwgaWYgYSBzY3JlZW4gcmVjb3JkaW5nIGlzIGN1cnJlbnRseSBydW5uaW5nXG4gKiAoYGZhbHNlYCkgb3IgdG8gc3RhcnQgYSBuZXcgcmVjb3JkaW5nIGltbWVkaWF0ZWx5IGFuZCB0ZXJtaW5hdGUgdGhlIGV4aXN0aW5nIG9uZSBpZiBydW5uaW5nIChgdHJ1ZWApLlxuICovXG5cbi8qKlxuICogUmVjb3JkIHRoZSBTaW11bGF0b3IncyBkaXNwbGF5IGluIGJhY2tncm91bmQgd2hpbGUgdGhlIGF1dG9tYXRlZCB0ZXN0IGlzIHJ1bm5pbmcuXG4gKiBUaGlzIG1ldGhvZCB1c2VzIGB4Y3J1biBzaW1jdGwgaW8gcmVjb3JkVmlkZW9gIGhlbHBlciB1bmRlciB0aGUgaG9vZC5cbiAqIENoZWNrIHRoZSBvdXRwdXQgb2YgYHhjcnVuIHNpbWN0bCBpb2AgY29tbWFuZCBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEBwYXJhbSB7P1N0YXJ0UmVjb3JkaW5nT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBhdmFpbGFibGUgb3B0aW9ucy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBzY3JlZW4gcmVjb3JkaW5nIGhhcyBmYWlsZWQgdG8gc3RhcnQgb3IgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhlIGRlc3RpbmF0aW9uIGRldmljZS5cbiAqL1xuY29tbWFuZHMuc3RhcnRSZWNvcmRpbmdTY3JlZW4gPSBhc3luYyBmdW5jdGlvbiBzdGFydFJlY29yZGluZ1NjcmVlbiAob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0aW1lTGltaXQsXG4gICAgY29kZWMsXG4gICAgZGlzcGxheSxcbiAgICBtYXNrLFxuICAgIGZvcmNlUmVzdGFydCA9IHRydWUsXG4gIH0gPSBvcHRpb25zO1xuICBpZiAodGhpcy5fc2NyZWVuUmVjb3JkZXI/LmlzUnVubmluZykge1xuICAgIHRoaXMubG9nLmluZm8oJ1RoZSBzY3JlZW4gcmVjb3JkaW5nIGlzIGFscmVhZHkgcnVubmluZycpO1xuICAgIGlmICghZm9yY2VSZXN0YXJ0KSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdEb2luZyBub3RoaW5nJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubG9nLmluZm8oJ0ZvcmNpbmcgdGhlIGFjdGl2ZSBzY3JlZW4gcmVjb3JkaW5nIHRvIHN0b3AnKTtcbiAgICBhd2FpdCB0aGlzLl9zY3JlZW5SZWNvcmRlci5zdG9wKHRydWUpO1xuICB9XG4gIHRoaXMuX3NjcmVlblJlY29yZGVyID0gbnVsbDtcblxuICBjb25zdCB1ZGlkID0gYXdhaXQgZXh0cmFjdFNpbXVsYXRvclVkaWQodGhpcy5jYXBzKTtcbiAgaWYgKCF1ZGlkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGV0ZXJtaW5lIFNpbXVsYXRvciBVRElEIHRvIHJlY29yZCB0aGUgdmlkZW8gZnJvbS4gJyArXG4gICAgICAnRG91YmxlIGNoZWNrIHlvdXIgc2Vzc2lvbiBjYXBhYmlsaXRpZXMnKTtcbiAgfVxuXG4gIGNvbnN0IHZpZGVvUGF0aCA9IGF3YWl0IHRlbXBEaXIucGF0aCh7XG4gICAgcHJlZml4OiB1dGlsLnV1aWRWNCgpLnN1YnN0cmluZygwLCA4KSxcbiAgICBzdWZmaXg6IERFRkFVTFRfRVhULFxuICB9KTtcbiAgdGhpcy5fc2NyZWVuUmVjb3JkZXIgPSBuZXcgU2NyZWVuUmVjb3JkZXIodWRpZCwgdmlkZW9QYXRoLCB0aGlzLmxvZywge1xuICAgIHRpbWVMaW1pdDogcGFyc2VJbnQodGltZUxpbWl0LCAxMCksXG4gICAgY29kZWMsXG4gICAgZGlzcGxheSxcbiAgICBtYXNrLFxuICB9KTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLl9zY3JlZW5SZWNvcmRlci5zdGFydCgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhpcy5fc2NyZWVuUmVjb3JkZXIgPSBudWxsO1xuICAgIHRocm93IGU7XG4gIH1cbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RvcFJlY29yZGluZ09wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHJlbW90ZVBhdGggLSBUaGUgcGF0aCB0byB0aGUgcmVtb3RlIGxvY2F0aW9uLCB3aGVyZSB0aGUgcmVzdWx0aW5nIHZpZGVvIHNob3VsZCBiZSB1cGxvYWRlZC5cbiAqIFRoZSBmb2xsb3dpbmcgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWQ6IGh0dHAvaHR0cHMsIGZ0cC5cbiAqIE51bGwgb3IgZW1wdHkgc3RyaW5nIHZhbHVlICh0aGUgZGVmYXVsdCBzZXR0aW5nKSBtZWFucyB0aGUgY29udGVudCBvZiByZXN1bHRpbmdcbiAqIGZpbGUgc2hvdWxkIGJlIGVuY29kZWQgYXMgQmFzZTY0IGFuZCBwYXNzZWQgYXMgdGhlIGVuZHBvaW50IHJlc3BvbnNlIHZhbHVlLlxuICogQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHRoZSBnZW5lcmF0ZWQgbWVkaWEgZmlsZSBpcyB0b28gYmlnIHRvXG4gKiBmaXQgaW50byB0aGUgYXZhaWxhYmxlIHByb2Nlc3MgbWVtb3J5LlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1c2VyIC0gVGhlIG5hbWUgb2YgdGhlIHVzZXIgZm9yIHRoZSByZW1vdGUgYXV0aGVudGljYXRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBhc3MgLSBUaGUgcGFzc3dvcmQgZm9yIHRoZSByZW1vdGUgYXV0aGVudGljYXRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1ldGhvZCAtIFRoZSBodHRwIG11bHRpcGFydCB1cGxvYWQgbWV0aG9kIG5hbWUuIFRoZSAnUFVUJyBvbmUgaXMgdXNlZCBieSBkZWZhdWx0LlxuICogQHByb3BlcnR5IHs/T2JqZWN0fSBoZWFkZXJzIC0gQWRkaXRpb25hbCBoZWFkZXJzIG1hcHBpbmcgZm9yIG11bHRpcGFydCBodHRwKHMpIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmlsZUZpZWxkTmFtZSBbZmlsZV0gLSBUaGUgbmFtZSBvZiB0aGUgZm9ybSBmaWVsZCwgd2hlcmUgdGhlIGZpbGUgY29udGVudCBCTE9CIHNob3VsZCBiZSBzdG9yZWQgZm9yXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cChzKSB1cGxvYWRzXG4gKiBAcHJvcGVydHkgez9PYmplY3R8QXJyYXk8UGFpcj59IGZvcm1GaWVsZHMgLSBBZGRpdGlvbmFsIGZvcm0gZmllbGRzIGZvciBtdWx0aXBhcnQgaHR0cChzKSB1cGxvYWRzXG4gKi9cblxuLyoqXG4gKiBTdG9wIHJlY29yZGluZyB0aGUgc2NyZWVuLlxuICogSWYgbm8gc2NyZWVuIHJlY29yZGluZyBoYXMgYmVlbiBzdGFydGVkIGJlZm9yZSB0aGVuIHRoZSBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHs/U3RvcFJlY29yZGluZ09wdGlvbnN9IG9wdGlvbnMgLSBUaGUgYXZhaWxhYmxlIG9wdGlvbnMuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQtZW5jb2RlZCBjb250ZW50IG9mIHRoZSByZWNvcmRlZCBtZWRpYSBmaWxlIGlmICdyZW1vdGVQYXRoJ1xuICogcGFyYW1ldGVyIGlzIGZhbHN5IG9yIGFuIGVtcHR5IHN0cmluZy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgZ2V0dGluZyB0aGUgbmFtZSBvZiBhIG1lZGlhIGZpbGVcbiAqIG9yIHRoZSBmaWxlIGNvbnRlbnQgY2Fubm90IGJlIHVwbG9hZGVkIHRvIHRoZSByZW1vdGUgbG9jYXRpb25cbiAqIG9yIHNjcmVlbiByZWNvcmRpbmcgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgZGV2aWNlIHVuZGVyIHRlc3QuXG4gKi9cbmNvbW1hbmRzLnN0b3BSZWNvcmRpbmdTY3JlZW4gPSBhc3luYyBmdW5jdGlvbiBzdG9wUmVjb3JkaW5nU2NyZWVuIChvcHRpb25zID0ge30pIHtcbiAgaWYgKCF0aGlzLl9zY3JlZW5SZWNvcmRlcikge1xuICAgIHRoaXMubG9nLmluZm8oJ05vIHNjcmVlbiByZWNvcmRpbmcgaGFzIGJlZW4gc3RhcnRlZC4gRG9pbmcgbm90aGluZycpO1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHRoaXMubG9nLmRlYnVnKCdSZXRyaWV2aW5nIHRoZSByZXN1bHRpbmcgdmlkZW8gZGF0YScpO1xuICBjb25zdCB2aWRlb1BhdGggPSBhd2FpdCB0aGlzLl9zY3JlZW5SZWNvcmRlci5zdG9wKCk7XG4gIGlmICghdmlkZW9QYXRoKSB7XG4gICAgdGhpcy5sb2cuaW5mbygnTm8gdmlkZW8gZGF0YSBpcyBmb3VuZC4gUmV0dXJuaW5nIGFuIGVtcHR5IHN0cmluZycpO1xuICAgIHJldHVybiAnJztcbiAgfVxuICBpZiAoXy5pc0VtcHR5KG9wdGlvbnMucmVtb3RlUGF0aCkpIHtcbiAgICBjb25zdCB7c2l6ZX0gPSBhd2FpdCBmcy5zdGF0KHZpZGVvUGF0aCk7XG4gICAgdGhpcy5sb2cuZGVidWcoYFRoZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgc2NyZWVuIHJlY29yZGluZyBpcyAke3V0aWwudG9SZWFkYWJsZVNpemVTdHJpbmcoc2l6ZSl9YCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHVwbG9hZFJlY29yZGVkTWVkaWEodmlkZW9QYXRoLCBvcHRpb25zLnJlbW90ZVBhdGgsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9yZWNvcmQtc2NyZWVuLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
package/build/lib/driver.js
CHANGED
|
@@ -13,8 +13,6 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
13
13
|
|
|
14
14
|
var _baseDriver = require("@appium/base-driver");
|
|
15
15
|
|
|
16
|
-
var _logger = _interopRequireDefault(require("./logger"));
|
|
17
|
-
|
|
18
16
|
var _safari = _interopRequireDefault(require("./safari"));
|
|
19
17
|
|
|
20
18
|
var _desiredCaps = require("./desired-caps");
|
|
@@ -23,7 +21,7 @@ var _index = _interopRequireDefault(require("./commands/index"));
|
|
|
23
21
|
|
|
24
22
|
var _utils = require("./utils");
|
|
25
23
|
|
|
26
|
-
const NO_PROXY = [['GET', new RegExp('^/session/[^/]+/appium')], ['POST', new RegExp('^/session/[^/]+/appium')], ['POST', new RegExp('^/session/[^/]+/element/[^/]+/elements?$')], ['POST', new RegExp('^/session/[^/]+/elements?$')]];
|
|
24
|
+
const NO_PROXY = [['GET', new RegExp('^/session/[^/]+/appium')], ['POST', new RegExp('^/session/[^/]+/appium')], ['POST', new RegExp('^/session/[^/]+/element/[^/]+/elements?$')], ['POST', new RegExp('^/session/[^/]+/elements?$')], ['DELETE', new RegExp('^/session/[^/]+/cookie$')]];
|
|
27
25
|
|
|
28
26
|
class SafariDriver extends _baseDriver.BaseDriver {
|
|
29
27
|
constructor(opts = {}) {
|
|
@@ -58,7 +56,7 @@ class SafariDriver extends _baseDriver.BaseDriver {
|
|
|
58
56
|
|
|
59
57
|
async createSession(...args) {
|
|
60
58
|
const [sessionId, caps] = await super.createSession(...args);
|
|
61
|
-
this.safari = new _safari.default();
|
|
59
|
+
this.safari = new _safari.default(this.log);
|
|
62
60
|
|
|
63
61
|
try {
|
|
64
62
|
await this.safari.start((0, _utils.formatCapsForServer)(caps));
|
|
@@ -75,8 +73,7 @@ class SafariDriver extends _baseDriver.BaseDriver {
|
|
|
75
73
|
async deleteSession() {
|
|
76
74
|
var _this$_screenRecorder, _this$safari;
|
|
77
75
|
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
this.log.info('Ending Safari session');
|
|
80
77
|
await ((_this$_screenRecorder = this._screenRecorder) === null || _this$_screenRecorder === void 0 ? void 0 : _this$_screenRecorder.stop(true));
|
|
81
78
|
await ((_this$safari = this.safari) === null || _this$safari === void 0 ? void 0 : _this$safari.stop());
|
|
82
79
|
this.resetState();
|
|
@@ -89,4 +86,4 @@ var _default = SafariDriver;
|
|
|
89
86
|
exports.default = _default;require('source-map-support').install();
|
|
90
87
|
|
|
91
88
|
|
|
92
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kcml2ZXIuanMiXSwibmFtZXMiOlsiTk9fUFJPWFkiLCJSZWdFeHAiLCJTYWZhcmlEcml2ZXIiLCJCYXNlRHJpdmVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwibG9jYXRvclN0cmF0ZWdpZXMiLCJyZXNldFN0YXRlIiwiY21kIiwiZm4iLCJfIiwidG9QYWlycyIsImNvbW1hbmRzIiwicHJvdG90eXBlIiwic2FmYXJpIiwicHJveHlSZXFSZXMiLCJpc1Byb3h5QWN0aXZlIiwiX3NjcmVlblJlY29yZGVyIiwicHJveHlBY3RpdmUiLCJnZXRQcm94eUF2b2lkTGlzdCIsImNhblByb3h5IiwiY3JlYXRlU2Vzc2lvbiIsImFyZ3MiLCJzZXNzaW9uSWQiLCJjYXBzIiwiU2FmYXJpRHJpdmVyU2VydmVyIiwibG9nIiwic3RhcnQiLCJlIiwiZGVsZXRlU2Vzc2lvbiIsInByb3h5IiwiYmluZCIsImluZm8iLCJzdG9wIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFFBQVEsR0FBRyxDQUNmLENBQUMsS0FBRCxFQUFRLElBQUlDLE1BQUosQ0FBVyx3QkFBWCxDQUFSLENBRGUsRUFFZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsd0JBQVgsQ0FBVCxDQUZlLEVBR2YsQ0FBQyxNQUFELEVBQVMsSUFBSUEsTUFBSixDQUFXLDBDQUFYLENBQVQsQ0FIZSxFQUlmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyw0QkFBWCxDQUFULENBSmUsRUFNZixDQUFDLFFBQUQsRUFBVyxJQUFJQSxNQUFKLENBQVcseUJBQVgsQ0FBWCxDQU5lLENBQWpCOztBQVNBLE1BQU1DLFlBQU4sU0FBMkJDLHNCQUEzQixDQUFzQztBQUNwQ0MsRUFBQUEsV0FBVyxDQUFFQyxJQUFJLEdBQUcsRUFBVCxFQUFhO0FBQ3RCLFVBQU1BLElBQU47QUFDQSxTQUFLQyxxQkFBTCxHQUE2QkEsa0NBQTdCO0FBQ0EsU0FBS0MsaUJBQUwsR0FBeUIsQ0FDdkIsT0FEdUIsRUFFdkIsVUFGdUIsRUFHdkIsV0FIdUIsRUFJdkIsbUJBSnVCLEVBS3ZCLGNBTHVCLEVBT3ZCLElBUHVCLEVBUXZCLE1BUnVCLENBQXpCO0FBVUEsU0FBS0MsVUFBTDs7QUFFQSxTQUFLLE1BQU0sQ0FBQ0MsR0FBRCxFQUFNQyxFQUFOLENBQVgsSUFBd0JDLGdCQUFFQyxPQUFGLENBQVVDLGNBQVYsQ0FBeEIsRUFBNkM7QUFDM0NYLE1BQUFBLFlBQVksQ0FBQ1ksU0FBYixDQUF1QkwsR0FBdkIsSUFBOEJDLEVBQTlCO0FBQ0Q7QUFDRjs7QUFFREYsRUFBQUEsVUFBVSxHQUFJO0FBQ1osU0FBS08sTUFBTCxHQUFjLElBQWQ7QUFDQSxTQUFLQyxXQUFMLEdBQW1CLElBQW5CO0FBQ0EsU0FBS0MsYUFBTCxHQUFxQixLQUFyQjtBQUNBLFNBQUtDLGVBQUwsR0FBdUIsSUFBdkI7QUFDRDs7QUFFREMsRUFBQUEsV0FBVyxHQUFJO0FBQ2IsV0FBTyxLQUFLRixhQUFaO0FBQ0Q7O0FBRURHLEVBQUFBLGlCQUFpQixHQUFJO0FBQ25CLFdBQU9wQixRQUFQO0FBQ0Q7O0FBRURxQixFQUFBQSxRQUFRLEdBQUk7QUFDVixXQUFPLElBQVA7QUFDRDs7QUFFa0IsUUFBYkMsYUFBYSxDQUFFLEdBQUdDLElBQUwsRUFBVztBQUM1QixVQUFNLENBQUNDLFNBQUQsRUFBWUMsSUFBWixJQUFvQixNQUFNLE1BQU1ILGFBQU4sQ0FBb0IsR0FBR0MsSUFBdkIsQ0FBaEM7QUFDQSxTQUFLUixNQUFMLEdBQWMsSUFBSVcsZUFBSixDQUF1QixLQUFLQyxHQUE1QixDQUFkOztBQUNBLFFBQUk7QUFDRixZQUFNLEtBQUtaLE1BQUwsQ0FBWWEsS0FBWixDQUFrQixnQ0FBb0JILElBQXBCLENBQWxCLENBQU47QUFDRCxLQUZELENBRUUsT0FBT0ksQ0FBUCxFQUFVO0FBQ1YsWUFBTSxLQUFLQyxhQUFMLEVBQU47QUFDQSxZQUFNRCxDQUFOO0FBQ0Q7O0FBQ0QsU0FBS2IsV0FBTCxHQUFtQixLQUFLRCxNQUFMLENBQVlnQixLQUFaLENBQWtCZixXQUFsQixDQUE4QmdCLElBQTlCLENBQW1DLEtBQUtqQixNQUFMLENBQVlnQixLQUEvQyxDQUFuQjtBQUNBLFNBQUtkLGFBQUwsR0FBcUIsSUFBckI7QUFDQSxXQUFPLENBQUNPLFNBQUQsRUFBWUMsSUFBWixDQUFQO0FBQ0Q7O0FBRWtCLFFBQWJLLGFBQWEsR0FBSTtBQUFBOztBQUNyQixTQUFLSCxHQUFMLENBQVNNLElBQVQsQ0FBYyx1QkFBZDtBQUNBLG9DQUFNLEtBQUtmLGVBQVgsMERBQU0sc0JBQXNCZ0IsSUFBdEIsQ0FBMkIsSUFBM0IsQ0FBTjtBQUNBLDJCQUFNLEtBQUtuQixNQUFYLGlEQUFNLGFBQWFtQixJQUFiLEVBQU47QUFDQSxTQUFLMUIsVUFBTDtBQUVBLFVBQU0sTUFBTXNCLGFBQU4sRUFBTjtBQUNEOztBQTdEbUM7O2VBZ0V2QjVCLFkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmFzZURyaXZlciB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IFNhZmFyaURyaXZlclNlcnZlciBmcm9tICcuL3NhZmFyaSc7XG5pbXBvcnQgeyBkZXNpcmVkQ2FwQ29uc3RyYWludHMgfSBmcm9tICcuL2Rlc2lyZWQtY2Fwcyc7XG5pbXBvcnQgY29tbWFuZHMgZnJvbSAnLi9jb21tYW5kcy9pbmRleCc7XG5pbXBvcnQgeyBmb3JtYXRDYXBzRm9yU2VydmVyIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IE5PX1BST1hZID0gW1xuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL2VsZW1lbnRzPyQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50cz8kJyldLFxuXG4gIFsnREVMRVRFJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2Nvb2tpZSQnKV0sXG5dO1xuXG5jbGFzcyBTYWZhcmlEcml2ZXIgZXh0ZW5kcyBCYXNlRHJpdmVyIHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMuZGVzaXJlZENhcENvbnN0cmFpbnRzID0gZGVzaXJlZENhcENvbnN0cmFpbnRzO1xuICAgIHRoaXMubG9jYXRvclN0cmF0ZWdpZXMgPSBbXG4gICAgICAneHBhdGgnLFxuICAgICAgJ3RhZyBuYW1lJyxcbiAgICAgICdsaW5rIHRleHQnLFxuICAgICAgJ3BhcnRpYWwgbGluayB0ZXh0JyxcbiAgICAgICdjc3Mgc2VsZWN0b3InLFxuICAgICAgLy8gTGV0IHRoZXNlIHR3byByZWFjaCBTYWZhcmkgRHJpdmVyIGFuZCBmYWlsIHRoZXJlIHdpdGggYSBwcm9wZXIgZXJyb3IgbWVzc2FnZVxuICAgICAgJ2lkJyxcbiAgICAgICduYW1lJyxcbiAgICBdO1xuICAgIHRoaXMucmVzZXRTdGF0ZSgpO1xuXG4gICAgZm9yIChjb25zdCBbY21kLCBmbl0gb2YgXy50b1BhaXJzKGNvbW1hbmRzKSkge1xuICAgICAgU2FmYXJpRHJpdmVyLnByb3RvdHlwZVtjbWRdID0gZm47XG4gICAgfVxuICB9XG5cbiAgcmVzZXRTdGF0ZSAoKSB7XG4gICAgdGhpcy5zYWZhcmkgPSBudWxsO1xuICAgIHRoaXMucHJveHlSZXFSZXMgPSBudWxsO1xuICAgIHRoaXMuaXNQcm94eUFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3NjcmVlblJlY29yZGVyID0gbnVsbDtcbiAgfVxuXG4gIHByb3h5QWN0aXZlICgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1Byb3h5QWN0aXZlO1xuICB9XG5cbiAgZ2V0UHJveHlBdm9pZExpc3QgKCkge1xuICAgIHJldHVybiBOT19QUk9YWTtcbiAgfVxuXG4gIGNhblByb3h5ICgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlc3Npb24gKC4uLmFyZ3MpIHtcbiAgICBjb25zdCBbc2Vzc2lvbklkLCBjYXBzXSA9IGF3YWl0IHN1cGVyLmNyZWF0ZVNlc3Npb24oLi4uYXJncyk7XG4gICAgdGhpcy5zYWZhcmkgPSBuZXcgU2FmYXJpRHJpdmVyU2VydmVyKHRoaXMubG9nKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5zYWZhcmkuc3RhcnQoZm9ybWF0Q2Fwc0ZvclNlcnZlcihjYXBzKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgdGhpcy5kZWxldGVTZXNzaW9uKCk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICB0aGlzLnByb3h5UmVxUmVzID0gdGhpcy5zYWZhcmkucHJveHkucHJveHlSZXFSZXMuYmluZCh0aGlzLnNhZmFyaS5wcm94eSk7XG4gICAgdGhpcy5pc1Byb3h5QWN0aXZlID0gdHJ1ZTtcbiAgICByZXR1cm4gW3Nlc3Npb25JZCwgY2Fwc107XG4gIH1cblxuICBhc3luYyBkZWxldGVTZXNzaW9uICgpIHtcbiAgICB0aGlzLmxvZy5pbmZvKCdFbmRpbmcgU2FmYXJpIHNlc3Npb24nKTtcbiAgICBhd2FpdCB0aGlzLl9zY3JlZW5SZWNvcmRlcj8uc3RvcCh0cnVlKTtcbiAgICBhd2FpdCB0aGlzLnNhZmFyaT8uc3RvcCgpO1xuICAgIHRoaXMucmVzZXRTdGF0ZSgpO1xuXG4gICAgYXdhaXQgc3VwZXIuZGVsZXRlU2Vzc2lvbigpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNhZmFyaURyaXZlcjtcbiJdLCJmaWxlIjoibGliL2RyaXZlci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
|
package/build/lib/safari.js
CHANGED
|
@@ -25,8 +25,6 @@ var _portscanner = require("portscanner");
|
|
|
25
25
|
|
|
26
26
|
var _child_process = require("child_process");
|
|
27
27
|
|
|
28
|
-
const log = _support.logger.getLogger('SafariDriverServer');
|
|
29
|
-
|
|
30
28
|
const SD_BINARY = 'safaridriver';
|
|
31
29
|
const STARTUP_TIMEOUT = 10000;
|
|
32
30
|
const SAFARI_PORT_RANGE = [5100, 5200];
|
|
@@ -49,6 +47,7 @@ class SafariProxy extends _baseDriver.JWProxy {
|
|
|
49
47
|
|
|
50
48
|
class SafariDriverProcess {
|
|
51
49
|
constructor() {
|
|
50
|
+
this.log = _support.logger.getLogger('SafariDriverProcess');
|
|
52
51
|
this.port = null;
|
|
53
52
|
this.proc = null;
|
|
54
53
|
}
|
|
@@ -84,12 +83,12 @@ class SafariDriverProcess {
|
|
|
84
83
|
this.proc = new _teen_process.SubProcess(safariBin, ['-p', this.port, '--diagnose']);
|
|
85
84
|
this.proc.on('output', (stdout, stderr) => {
|
|
86
85
|
const line = stdout || stderr;
|
|
87
|
-
log.debug(`[${SD_BINARY}] ${line}`);
|
|
86
|
+
this.log.debug(`[${SD_BINARY}] ${line}`);
|
|
88
87
|
});
|
|
89
88
|
this.proc.on('exit', (code, signal) => {
|
|
90
|
-
log.info(`${SD_BINARY} has exited with code ${code}, signal ${signal}`);
|
|
89
|
+
this.log.info(`${SD_BINARY} has exited with code ${code}, signal ${signal}`);
|
|
91
90
|
});
|
|
92
|
-
log.info(`Starting '${safariBin}' on port ${this.port}`);
|
|
91
|
+
this.log.info(`Starting '${safariBin}' on port ${this.port}`);
|
|
93
92
|
await this.proc.start(0);
|
|
94
93
|
});
|
|
95
94
|
}
|
|
@@ -114,7 +113,8 @@ process.once('exit', () => {
|
|
|
114
113
|
});
|
|
115
114
|
|
|
116
115
|
class SafariDriverServer {
|
|
117
|
-
constructor() {
|
|
116
|
+
constructor(log) {
|
|
117
|
+
this.log = log;
|
|
118
118
|
this.proxy = null;
|
|
119
119
|
}
|
|
120
120
|
|
|
@@ -128,6 +128,7 @@ class SafariDriverServer {
|
|
|
128
128
|
server: '127.0.0.1',
|
|
129
129
|
port: SAFARI_DRIVER_PROCESS.port,
|
|
130
130
|
base: '',
|
|
131
|
+
log: this.log,
|
|
131
132
|
keepAlive: true
|
|
132
133
|
});
|
|
133
134
|
this.proxy.didProcessExit = false;
|
|
@@ -175,7 +176,7 @@ class SafariDriverServer {
|
|
|
175
176
|
var _this$proxy;
|
|
176
177
|
|
|
177
178
|
if (!this.isRunning) {
|
|
178
|
-
log.info(`${SD_BINARY} session cannot be stopped, because the server is not running`);
|
|
179
|
+
this.log.info(`${SD_BINARY} session cannot be stopped, because the server is not running`);
|
|
179
180
|
return;
|
|
180
181
|
}
|
|
181
182
|
|
|
@@ -183,7 +184,7 @@ class SafariDriverServer {
|
|
|
183
184
|
try {
|
|
184
185
|
await this.proxy.command(`/session/${this.proxy.sessionId}`, 'DELETE');
|
|
185
186
|
} catch (e) {
|
|
186
|
-
log.info(`${SD_BINARY} session cannot be deleted. Original error: ${e.message}`);
|
|
187
|
+
this.log.info(`${SD_BINARY} session cannot be deleted. Original error: ${e.message}`);
|
|
187
188
|
}
|
|
188
189
|
}
|
|
189
190
|
}
|
|
@@ -194,4 +195,4 @@ var _default = SafariDriverServer;
|
|
|
194
195
|
exports.default = _default;require('source-map-support').install();
|
|
195
196
|
|
|
196
197
|
|
|
197
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zYWZhcmkuanMiXSwibmFtZXMiOlsibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiU0RfQklOQVJZIiwiU1RBUlRVUF9USU1FT1VUIiwiU0FGQVJJX1BPUlRfUkFOR0UiLCJTQUZBUklfU0VSVkVSX0dVQVJEIiwidXRpbCIsImdldExvY2tGaWxlR3VhcmQiLCJwYXRoIiwicmVzb2x2ZSIsIm9zIiwidG1wZGlyIiwidGltZW91dCIsInRyeVJlY292ZXJ5IiwiU2FmYXJpUHJveHkiLCJKV1Byb3h5IiwicHJveHlDb21tYW5kIiwidXJsIiwibWV0aG9kIiwiYm9keSIsImRpZFByb2Nlc3NFeGl0IiwiZXJyb3JzIiwiSW52YWxpZENvbnRleHRFcnJvciIsIlNhZmFyaURyaXZlclByb2Nlc3MiLCJjb25zdHJ1Y3RvciIsInBvcnQiLCJwcm9jIiwiaXNSdW5uaW5nIiwiaW5pdCIsInN0YXJ0UG9ydCIsImVuZFBvcnQiLCJlIiwiRXJyb3IiLCJzYWZhcmlCaW4iLCJmcyIsIndoaWNoIiwiU3ViUHJvY2VzcyIsIm9uIiwic3Rkb3V0Iiwic3RkZXJyIiwibGluZSIsImRlYnVnIiwiY29kZSIsInNpZ25hbCIsImluZm8iLCJzdGFydCIsImtpbGwiLCJzdG9wIiwiaWduIiwiU0FGQVJJX0RSSVZFUl9QUk9DRVNTIiwicHJvY2VzcyIsIm9uY2UiLCJwaWQiLCJTYWZhcmlEcml2ZXJTZXJ2ZXIiLCJwcm94eSIsImNhcHMiLCJzZXJ2ZXIiLCJiYXNlIiwia2VlcEFsaXZlIiwiY29tbWFuZCIsImVyciIsIm1lc3NhZ2UiLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwidGVzdCIsImNhcGFiaWxpdGllcyIsImZpcnN0TWF0Y2giLCJhbHdheXNNYXRjaCIsInNlc3Npb25JZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxHQUFHLEdBQUdDLGdCQUFPQyxTQUFQLENBQWlC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RUFBRCxDQURBO0FBRVpDLFFBQUFBLFdBQVcsRUFBRVo7QUFGRDtBQUQ2QixLQUF2QyxDQUFOO0FBTUQ7O0FBRVMsUUFBSlIsSUFBSSxHQUFJO0FBQUE7O0FBQ1osUUFBSSxDQUFDLEtBQUtwQixTQUFWLEVBQXFCO0FBQ25CNUIsTUFBQUEsR0FBRyxDQUFDNkMsSUFBSixDQUFVLEdBQUUxQyxTQUFVLCtEQUF0QjtBQUNBO0FBQ0Q7O0FBRUQsdUJBQUksS0FBS29ELEtBQVQsd0NBQUksWUFBWWMsU0FBaEIsRUFBMkI7QUFDekIsVUFBSTtBQUNGLGNBQU0sS0FBS2QsS0FBTCxDQUFXSyxPQUFYLENBQW9CLFlBQVcsS0FBS0wsS0FBTCxDQUFXYyxTQUFVLEVBQXBELEVBQXVELFFBQXZELENBQU47QUFDRCxPQUZELENBRUUsT0FBT3JDLENBQVAsRUFBVTtBQUNWaEMsUUFBQUEsR0FBRyxDQUFDNkMsSUFBSixDQUFVLEdBQUUxQyxTQUFVLCtDQUE4QzZCLENBQUMsQ0FBQzhCLE9BQVEsRUFBOUU7QUFDRDtBQUNGO0FBQ0Y7O0FBeEVzQjs7ZUEyRVZSLGtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgSldQcm94eSwgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyBmcywgbG9nZ2VyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IFN1YlByb2Nlc3MgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgd2FpdEZvckNvbmRpdGlvbiB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IGZpbmRBUG9ydE5vdEluVXNlIH0gZnJvbSAncG9ydHNjYW5uZXInO1xuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignU2FmYXJpRHJpdmVyU2VydmVyJyk7XG5cbmNvbnN0IFNEX0JJTkFSWSA9ICdzYWZhcmlkcml2ZXInO1xuY29uc3QgU1RBUlRVUF9USU1FT1VUID0gMTAwMDA7IC8vIHNlY29uZHNcbmNvbnN0IFNBRkFSSV9QT1JUX1JBTkdFID0gWzUxMDAsIDUyMDBdO1xuLy8gVGhpcyBndWFyZCBpcyBuZWVkZWQgdG8gbWFrZSBzdXJlXG4vLyB3ZSBuZXZlciBydW4gbXVsdGlwbGUgU2FmYXJpIGRyaXZlciBwcm9jZXNzZXMgZm9yIHRoZSBzYW1lIEFwcGl1bSBwcm9jZXNzXG5jb25zdCBTQUZBUklfU0VSVkVSX0dVQVJEID0gdXRpbC5nZXRMb2NrRmlsZUd1YXJkKFxuICBwYXRoLnJlc29sdmUob3MudG1wZGlyKCksICdzYWZhcmlfc2VydmVyX2d1YXJkLmxvY2snKSxcbiAge3RpbWVvdXQ6IDUsIHRyeVJlY292ZXJ5OiB0cnVlfVxuKTtcblxuXG5jbGFzcyBTYWZhcmlQcm94eSBleHRlbmRzIEpXUHJveHkge1xuICBhc3luYyBwcm94eUNvbW1hbmQgKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGlmICh0aGlzLmRpZFByb2Nlc3NFeGl0KSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRDb250ZXh0RXJyb3IoXG4gICAgICAgIGAnJHttZXRob2R9ICR7dXJsfScgY2Fubm90IGJlIHByb3hpZWQgdG8gU2FmYXJpIERyaXZlciBzZXJ2ZXIgYmVjYXVzZSBgICtcbiAgICAgICAgJ3RoZSBwcm9jZXNzIGlzIG5vdCBydW5uaW5nIChwcm9iYWJseSBjcmFzaGVkKS4gQ2hlY2sgdGhlIHNlcnZlciBsb2cgZm9yIG1vcmUgZGV0YWlscycpO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgc3VwZXIucHJveHlDb21tYW5kKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxufVxuXG5cbmNsYXNzIFNhZmFyaURyaXZlclByb2Nlc3Mge1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgdGhpcy5wb3J0ID0gbnVsbDtcbiAgICB0aGlzLnByb2MgPSBudWxsO1xuICB9XG5cbiAgZ2V0IGlzUnVubmluZyAoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMucHJvYz8uaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIGluaXQgKCkge1xuICAgIGF3YWl0IFNBRkFSSV9TRVJWRVJfR1VBUkQoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgW3N0YXJ0UG9ydCwgZW5kUG9ydF0gPSBTQUZBUklfUE9SVF9SQU5HRTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMucG9ydCA9IGF3YWl0IGZpbmRBUG9ydE5vdEluVXNlKHN0YXJ0UG9ydCwgZW5kUG9ydCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2Fubm90IGZpbmQgYW55IGZyZWUgcG9ydCBpbiByYW5nZSAke3N0YXJ0UG9ydH0uLiR7ZW5kUG9ydH0uIGAgK1xuICAgICAgICAgIGBEb3VibGUgY2hlY2sgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBsb2NraW5nIHBvcnRzIHdpdGhpbiB0aGlzIHJhbmdlIGFuZCB0ZXJtaW5hdGUgYCArXG4gICAgICAgICAgYHRoZXNlIHdoaWNoIGFyZSBub3QgbmVlZGVkIGFueW1vcmVgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHNhZmFyaUJpbjtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNhZmFyaUJpbiA9IGF3YWl0IGZzLndoaWNoKFNEX0JJTkFSWSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtTRF9CSU5BUll9IGJpbmFyeSBjYW5ub3QgYmUgZm91bmQgaW4gUEFUSC4gYCArXG4gICAgICAgICAgYFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgcHJlc2VudCBvbiB5b3VyIHN5c3RlbWApO1xuICAgICAgfVxuICAgICAgdGhpcy5wcm9jID0gbmV3IFN1YlByb2Nlc3Moc2FmYXJpQmluLCBbJy1wJywgdGhpcy5wb3J0LCAnLS1kaWFnbm9zZSddKTtcbiAgICAgIHRoaXMucHJvYy5vbignb3V0cHV0JywgKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBzdGRvdXQgfHwgc3RkZXJyO1xuICAgICAgICBsb2cuZGVidWcoYFske1NEX0JJTkFSWX1dICR7bGluZX1gKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wcm9jLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICBsb2cuaW5mbyhgJHtTRF9CSU5BUll9IGhhcyBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX0sIHNpZ25hbCAke3NpZ25hbH1gKTtcbiAgICAgIH0pO1xuICAgICAgbG9nLmluZm8oYFN0YXJ0aW5nICcke3NhZmFyaUJpbn0nIG9uIHBvcnQgJHt0aGlzLnBvcnR9YCk7XG4gICAgICBhd2FpdCB0aGlzLnByb2Muc3RhcnQoMCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBraWxsICgpIHtcbiAgICBpZiAodGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCdTSUdLSUxMJyk7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgfVxuICB9XG59XG5cbi8vIFNpbmdsZSBzZXJ2ZXIgcHJvY2VzcyBwZXIgQXBwaXVtIGluc3RhbmNlXG5jb25zdCBTQUZBUklfRFJJVkVSX1BST0NFU1MgPSBuZXcgU2FmYXJpRHJpdmVyUHJvY2VzcygpO1xucHJvY2Vzcy5vbmNlKCdleGl0JywgKCkgPT4ge1xuICBpZiAoU0FGQVJJX0RSSVZFUl9QUk9DRVNTLmlzUnVubmluZykge1xuICAgIHRyeSB7XG4gICAgICBleGVjU3luYyhga2lsbCAke1NBRkFSSV9EUklWRVJfUFJPQ0VTUy5wcm9jLnBpZH1gKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cbn0pO1xuXG5jbGFzcyBTYWZhcmlEcml2ZXJTZXJ2ZXIge1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgdGhpcy5wcm94eSA9IG51bGw7XG4gIH1cblxuICBnZXQgaXNSdW5uaW5nICgpIHtcbiAgICByZXR1cm4gISEoU0FGQVJJX0RSSVZFUl9QUk9DRVNTLmlzUnVubmluZyk7XG4gIH1cblxuICBhc3luYyBzdGFydCAoY2Fwcykge1xuICAgIGF3YWl0IFNBRkFSSV9EUklWRVJfUFJPQ0VTUy5pbml0KCk7XG5cbiAgICB0aGlzLnByb3h5ID0gbmV3IFNhZmFyaVByb3h5KHtcbiAgICAgIHNlcnZlcjogJzEyNy4wLjAuMScsXG4gICAgICBwb3J0OiBTQUZBUklfRFJJVkVSX1BST0NFU1MucG9ydCxcbiAgICAgIGJhc2U6ICcnLFxuICAgICAga2VlcEFsaXZlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMucHJveHkuZGlkUHJvY2Vzc0V4aXQgPSBmYWxzZTtcbiAgICBTQUZBUklfRFJJVkVSX1BST0NFU1MucHJvYy5vbignZXhpdCcsICgpID0+IHtcbiAgICAgIHRoaXMucHJveHkuZGlkUHJvY2Vzc0V4aXQgPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHdhaXRGb3JDb25kaXRpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucHJveHkuY29tbWFuZCgnL3N0YXR1cycsICdHRVQnKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgaWYgKHRoaXMucHJveHkuZGlkUHJvY2Vzc0V4aXQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnIubWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICB3YWl0TXM6IFNUQVJUVVBfVElNRU9VVCxcbiAgICAgICAgaW50ZXJ2YWxNczogMTAwMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICgvQ29uZGl0aW9uIHVubWV0Ly50ZXN0KGUubWVzc2FnZSkpIHtcbiAgICAgICAgaWYgKFNBRkFSSV9EUklWRVJfUFJPQ0VTUy5pc1J1bm5pbmcpIHtcbiAgICAgICAgICAvLyBhdm9pZCBcImZyb3plblwiIHByb2Nlc3NlcyxcbiAgICAgICAgICBhd2FpdCBTQUZBUklfRFJJVkVSX1BST0NFU1Mua2lsbCgpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU2FmYXJpIERyaXZlciBzZXJ2ZXIgaXMgbm90IGxpc3RlbmluZyB3aXRoaW4gJHtTVEFSVFVQX1RJTUVPVVR9bXMgdGltZW91dC4gYCArXG4gICAgICAgICAgYE1ha2Ugc3VyZSBpdCBoYXMgYmVlbiBleGVjdXRlZCBtYW51YWxseSBhdCBsZWFzdCBvbmNlIHdpdGggJy0tZW5hYmxlJyBjb21tYW5kIGxpbmUgYXJndW1lbnQuIGAgK1xuICAgICAgICAgIGBDaGVjayB0aGUgc2VydmVyIGxvZyBmb3IgbW9yZSBkZXRhaWxzYCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucHJveHkuY29tbWFuZCgnL3Nlc3Npb24nLCAnUE9TVCcsIHtcbiAgICAgIGNhcGFiaWxpdGllczoge1xuICAgICAgICBmaXJzdE1hdGNoOiBbe31dLFxuICAgICAgICBhbHdheXNNYXRjaDogY2FwcyxcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHN0b3AgKCkge1xuICAgIGlmICghdGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIGxvZy5pbmZvKGAke1NEX0JJTkFSWX0gc2Vzc2lvbiBjYW5ub3QgYmUgc3RvcHBlZCwgYmVjYXVzZSB0aGUgc2VydmVyIGlzIG5vdCBydW5uaW5nYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJveHk/LnNlc3Npb25JZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm94eS5jb21tYW5kKGAvc2Vzc2lvbi8ke3RoaXMucHJveHkuc2Vzc2lvbklkfWAsICdERUxFVEUnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbG9nLmluZm8oYCR7U0RfQklOQVJZfSBzZXNzaW9uIGNhbm5vdCBiZSBkZWxldGVkLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNhZmFyaURyaXZlclNlcnZlcjtcbiJdLCJmaWxlIjoibGliL3NhZmFyaS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
|
|
198
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zYWZhcmkuanMiXSwibmFtZXMiOlsiU0RfQklOQVJZIiwiU1RBUlRVUF9USU1FT1VUIiwiU0FGQVJJX1BPUlRfUkFOR0UiLCJTQUZBUklfU0VSVkVSX0dVQVJEIiwidXRpbCIsImdldExvY2tGaWxlR3VhcmQiLCJwYXRoIiwicmVzb2x2ZSIsIm9zIiwidG1wZGlyIiwidGltZW91dCIsInRyeVJlY292ZXJ5IiwiU2FmYXJpUHJveHkiLCJKV1Byb3h5IiwicHJveHlDb21tYW5kIiwidXJsIiwibWV0aG9kIiwiYm9keSIsImRpZFByb2Nlc3NFeGl0IiwiZXJyb3JzIiwiSW52YWxpZENvbnRleHRFcnJvciIsIlNhZmFyaURyaXZlclByb2Nlc3MiLCJjb25zdHJ1Y3RvciIsImxvZyIsImxvZ2dlciIsImdldExvZ2dlciIsInBvcnQiLCJwcm9jIiwiaXNSdW5uaW5nIiwiaW5pdCIsInN0YXJ0UG9ydCIsImVuZFBvcnQiLCJlIiwiRXJyb3IiLCJzYWZhcmlCaW4iLCJmcyIsIndoaWNoIiwiU3ViUHJvY2VzcyIsIm9uIiwic3Rkb3V0Iiwic3RkZXJyIiwibGluZSIsImRlYnVnIiwiY29kZSIsInNpZ25hbCIsImluZm8iLCJzdGFydCIsImtpbGwiLCJzdG9wIiwiaWduIiwiU0FGQVJJX0RSSVZFUl9QUk9DRVNTIiwicHJvY2VzcyIsIm9uY2UiLCJwaWQiLCJTYWZhcmlEcml2ZXJTZXJ2ZXIiLCJwcm94eSIsImNhcHMiLCJzZXJ2ZXIiLCJiYXNlIiwia2VlcEFsaXZlIiwiY29tbWFuZCIsImVyciIsIm1lc3NhZ2UiLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwidGVzdCIsImNhcGFiaWxpdGllcyIsImZpcnN0TWF0Y2giLCJhbHdheXNNYXRjaCIsInNlc3Npb25JZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxTQUFTLEdBQUcsY0FBbEI7QUFDQSxNQUFNQyxl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QUFuQixFQUErQixNQUEvQixFQUF1QztBQUMzQ00sTUFBQUEsWUFBWSxFQUFFO0FBQ1pDLFFBQUFBLFVBQVUsRUFBRSxDQUFDLEVBQUQsQ0FEQTtBQUVaQyxRQUFBQSxXQUFXLEVBQUVaO0FBRkQ7QUFENkIsS0FBdkMsQ0FBTjtBQU1EOztBQUVTLFFBQUpSLElBQUksR0FBSTtBQUFBOztBQUNaLFFBQUksQ0FBQyxLQUFLcEIsU0FBVixFQUFxQjtBQUNuQixXQUFLTCxHQUFMLENBQVNzQixJQUFULENBQWUsR0FBRTdDLFNBQVUsK0RBQTNCO0FBQ0E7QUFDRDs7QUFFRCx1QkFBSSxLQUFLdUQsS0FBVCx3Q0FBSSxZQUFZYyxTQUFoQixFQUEyQjtBQUN6QixVQUFJO0FBQ0YsY0FBTSxLQUFLZCxLQUFMLENBQVdLLE9BQVgsQ0FBb0IsWUFBVyxLQUFLTCxLQUFMLENBQVdjLFNBQVUsRUFBcEQsRUFBdUQsUUFBdkQsQ0FBTjtBQUNELE9BRkQsQ0FFRSxPQUFPckMsQ0FBUCxFQUFVO0FBQ1YsYUFBS1QsR0FBTCxDQUFTc0IsSUFBVCxDQUFlLEdBQUU3QyxTQUFVLCtDQUE4Q2dDLENBQUMsQ0FBQzhCLE9BQVEsRUFBbkY7QUFDRDtBQUNGO0FBQ0Y7O0FBMUVzQjs7ZUE2RVZSLGtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgSldQcm94eSwgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyBmcywgbG9nZ2VyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IFN1YlByb2Nlc3MgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHsgd2FpdEZvckNvbmRpdGlvbiB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IGZpbmRBUG9ydE5vdEluVXNlIH0gZnJvbSAncG9ydHNjYW5uZXInO1xuaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcblxuY29uc3QgU0RfQklOQVJZID0gJ3NhZmFyaWRyaXZlcic7XG5jb25zdCBTVEFSVFVQX1RJTUVPVVQgPSAxMDAwMDsgLy8gc2Vjb25kc1xuY29uc3QgU0FGQVJJX1BPUlRfUkFOR0UgPSBbNTEwMCwgNTIwMF07XG4vLyBUaGlzIGd1YXJkIGlzIG5lZWRlZCB0byBtYWtlIHN1cmVcbi8vIHdlIG5ldmVyIHJ1biBtdWx0aXBsZSBTYWZhcmkgZHJpdmVyIHByb2Nlc3NlcyBmb3IgdGhlIHNhbWUgQXBwaXVtIHByb2Nlc3NcbmNvbnN0IFNBRkFSSV9TRVJWRVJfR1VBUkQgPSB1dGlsLmdldExvY2tGaWxlR3VhcmQoXG4gIHBhdGgucmVzb2x2ZShvcy50bXBkaXIoKSwgJ3NhZmFyaV9zZXJ2ZXJfZ3VhcmQubG9jaycpLFxuICB7dGltZW91dDogNSwgdHJ5UmVjb3Zlcnk6IHRydWV9XG4pO1xuXG5cbmNsYXNzIFNhZmFyaVByb3h5IGV4dGVuZHMgSldQcm94eSB7XG4gIGFzeW5jIHByb3h5Q29tbWFuZCAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgaWYgKHRoaXMuZGlkUHJvY2Vzc0V4aXQpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZENvbnRleHRFcnJvcihcbiAgICAgICAgYCcke21ldGhvZH0gJHt1cmx9JyBjYW5ub3QgYmUgcHJveGllZCB0byBTYWZhcmkgRHJpdmVyIHNlcnZlciBiZWNhdXNlIGAgK1xuICAgICAgICAndGhlIHByb2Nlc3MgaXMgbm90IHJ1bm5pbmcgKHByb2JhYmx5IGNyYXNoZWQpLiBDaGVjayB0aGUgc2VydmVyIGxvZyBmb3IgbW9yZSBkZXRhaWxzJyk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBzdXBlci5wcm94eUNvbW1hbmQodXJsLCBtZXRob2QsIGJvZHkpO1xuICB9XG59XG5cbmNsYXNzIFNhZmFyaURyaXZlclByb2Nlc3Mge1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgdGhpcy5sb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdTYWZhcmlEcml2ZXJQcm9jZXNzJyk7XG4gICAgdGhpcy5wb3J0ID0gbnVsbDtcbiAgICB0aGlzLnByb2MgPSBudWxsO1xuICB9XG5cbiAgZ2V0IGlzUnVubmluZyAoKSB7XG4gICAgcmV0dXJuICEhKHRoaXMucHJvYz8uaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIGluaXQgKCkge1xuICAgIGF3YWl0IFNBRkFSSV9TRVJWRVJfR1VBUkQoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgW3N0YXJ0UG9ydCwgZW5kUG9ydF0gPSBTQUZBUklfUE9SVF9SQU5HRTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMucG9ydCA9IGF3YWl0IGZpbmRBUG9ydE5vdEluVXNlKHN0YXJ0UG9ydCwgZW5kUG9ydCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2Fubm90IGZpbmQgYW55IGZyZWUgcG9ydCBpbiByYW5nZSAke3N0YXJ0UG9ydH0uLiR7ZW5kUG9ydH0uIGAgK1xuICAgICAgICAgIGBEb3VibGUgY2hlY2sgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBsb2NraW5nIHBvcnRzIHdpdGhpbiB0aGlzIHJhbmdlIGFuZCB0ZXJtaW5hdGUgYCArXG4gICAgICAgICAgYHRoZXNlIHdoaWNoIGFyZSBub3QgbmVlZGVkIGFueW1vcmVgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHNhZmFyaUJpbjtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNhZmFyaUJpbiA9IGF3YWl0IGZzLndoaWNoKFNEX0JJTkFSWSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtTRF9CSU5BUll9IGJpbmFyeSBjYW5ub3QgYmUgZm91bmQgaW4gUEFUSC4gYCArXG4gICAgICAgICAgYFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgcHJlc2VudCBvbiB5b3VyIHN5c3RlbWApO1xuICAgICAgfVxuICAgICAgdGhpcy5wcm9jID0gbmV3IFN1YlByb2Nlc3Moc2FmYXJpQmluLCBbJy1wJywgdGhpcy5wb3J0LCAnLS1kaWFnbm9zZSddKTtcbiAgICAgIHRoaXMucHJvYy5vbignb3V0cHV0JywgKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBzdGRvdXQgfHwgc3RkZXJyO1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgWyR7U0RfQklOQVJZfV0gJHtsaW5lfWApO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnByb2Mub24oJ2V4aXQnLCAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYCR7U0RfQklOQVJZfSBoYXMgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9LCBzaWduYWwgJHtzaWduYWx9YCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMubG9nLmluZm8oYFN0YXJ0aW5nICcke3NhZmFyaUJpbn0nIG9uIHBvcnQgJHt0aGlzLnBvcnR9YCk7XG4gICAgICBhd2FpdCB0aGlzLnByb2Muc3RhcnQoMCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBraWxsICgpIHtcbiAgICBpZiAodGhpcy5pc1J1bm5pbmcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCdTSUdLSUxMJyk7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgfVxuICB9XG59XG5cbi8vIFNpbmdsZSBzZXJ2ZXIgcHJvY2VzcyBwZXIgQXBwaXVtIGluc3RhbmNlXG5jb25zdCBTQUZBUklfRFJJVkVSX1BST0NFU1MgPSBuZXcgU2FmYXJpRHJpdmVyUHJvY2VzcygpO1xucHJvY2Vzcy5vbmNlKCdleGl0JywgKCkgPT4ge1xuICBpZiAoU0FGQVJJX0RSSVZFUl9QUk9DRVNTLmlzUnVubmluZykge1xuICAgIHRyeSB7XG4gICAgICBleGVjU3luYyhga2lsbCAke1NBRkFSSV9EUklWRVJfUFJPQ0VTUy5wcm9jLnBpZH1gKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cbn0pO1xuXG5jbGFzcyBTYWZhcmlEcml2ZXJTZXJ2ZXIge1xuICBjb25zdHJ1Y3RvciAobG9nKSB7XG4gICAgdGhpcy5sb2cgPSBsb2c7XG4gICAgdGhpcy5wcm94eSA9IG51bGw7XG4gIH1cblxuICBnZXQgaXNSdW5uaW5nICgpIHtcbiAgICByZXR1cm4gISEoU0FGQVJJX0RSSVZFUl9QUk9DRVNTLmlzUnVubmluZyk7XG4gIH1cblxuICBhc3luYyBzdGFydCAoY2Fwcykge1xuICAgIGF3YWl0IFNBRkFSSV9EUklWRVJfUFJPQ0VTUy5pbml0KCk7XG5cbiAgICB0aGlzLnByb3h5ID0gbmV3IFNhZmFyaVByb3h5KHtcbiAgICAgIHNlcnZlcjogJzEyNy4wLjAuMScsXG4gICAgICBwb3J0OiBTQUZBUklfRFJJVkVSX1BST0NFU1MucG9ydCxcbiAgICAgIGJhc2U6ICcnLFxuICAgICAgbG9nOiB0aGlzLmxvZyxcbiAgICAgIGtlZXBBbGl2ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLnByb3h5LmRpZFByb2Nlc3NFeGl0ID0gZmFsc2U7XG4gICAgU0FGQVJJX0RSSVZFUl9QUk9DRVNTLnByb2Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gICAgICB0aGlzLnByb3h5LmRpZFByb2Nlc3NFeGl0ID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnByb3h5LmNvbW1hbmQoJy9zdGF0dXMnLCAnR0VUJyk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmICh0aGlzLnByb3h5LmRpZFByb2Nlc3NFeGl0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgd2FpdE1zOiBTVEFSVFVQX1RJTUVPVVQsXG4gICAgICAgIGludGVydmFsTXM6IDEwMDAsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoL0NvbmRpdGlvbiB1bm1ldC8udGVzdChlLm1lc3NhZ2UpKSB7XG4gICAgICAgIGlmIChTQUZBUklfRFJJVkVSX1BST0NFU1MuaXNSdW5uaW5nKSB7XG4gICAgICAgICAgLy8gYXZvaWQgXCJmcm96ZW5cIiBwcm9jZXNzZXMsXG4gICAgICAgICAgYXdhaXQgU0FGQVJJX0RSSVZFUl9QUk9DRVNTLmtpbGwoKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNhZmFyaSBEcml2ZXIgc2VydmVyIGlzIG5vdCBsaXN0ZW5pbmcgd2l0aGluICR7U1RBUlRVUF9USU1FT1VUfW1zIHRpbWVvdXQuIGAgK1xuICAgICAgICAgIGBNYWtlIHN1cmUgaXQgaGFzIGJlZW4gZXhlY3V0ZWQgbWFudWFsbHkgYXQgbGVhc3Qgb25jZSB3aXRoICctLWVuYWJsZScgY29tbWFuZCBsaW5lIGFyZ3VtZW50LiBgICtcbiAgICAgICAgICBgQ2hlY2sgdGhlIHNlcnZlciBsb2cgZm9yIG1vcmUgZGV0YWlsc2ApO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnByb3h5LmNvbW1hbmQoJy9zZXNzaW9uJywgJ1BPU1QnLCB7XG4gICAgICBjYXBhYmlsaXRpZXM6IHtcbiAgICAgICAgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgICAgYWx3YXlzTWF0Y2g6IGNhcHMsXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdG9wICgpIHtcbiAgICBpZiAoIXRoaXMuaXNSdW5uaW5nKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGAke1NEX0JJTkFSWX0gc2Vzc2lvbiBjYW5ub3QgYmUgc3RvcHBlZCwgYmVjYXVzZSB0aGUgc2VydmVyIGlzIG5vdCBydW5uaW5nYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJveHk/LnNlc3Npb25JZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm94eS5jb21tYW5kKGAvc2Vzc2lvbi8ke3RoaXMucHJveHkuc2Vzc2lvbklkfWAsICdERUxFVEUnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgJHtTRF9CSU5BUll9IHNlc3Npb24gY2Fubm90IGJlIGRlbGV0ZWQuIE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU2FmYXJpRHJpdmVyU2VydmVyO1xuIl0sImZpbGUiOiJsaWIvc2FmYXJpLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
|
package/lib/commands/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import findCmds from './find';
|
|
2
|
+
import cookieCmds from './cookies';
|
|
2
3
|
import recordScreenCommands from './record-screen';
|
|
3
4
|
|
|
4
5
|
const commands = {};
|
|
5
6
|
Object.assign(
|
|
6
7
|
commands,
|
|
7
8
|
findCmds,
|
|
9
|
+
cookieCmds,
|
|
8
10
|
recordScreenCommands,
|
|
9
11
|
// add other command types here
|
|
10
12
|
);
|