appium-xcuitest-driver 3.62.0 → 4.3.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/README.md +21 -3
- package/build/lib/app-utils.js +9 -9
- package/build/lib/commands/app-management.js +37 -6
- package/build/lib/commands/appearance.js +4 -4
- package/build/lib/commands/certificate.js +12 -12
- package/build/lib/commands/context.js +14 -14
- package/build/lib/commands/cookies.js +5 -5
- package/build/lib/commands/deviceInfo.js +15 -2
- package/build/lib/commands/element.js +17 -17
- package/build/lib/commands/execute.js +12 -11
- package/build/lib/commands/file-movement.js +12 -12
- package/build/lib/commands/find.js +5 -5
- package/build/lib/commands/general.js +12 -12
- package/build/lib/commands/gesture.js +21 -21
- package/build/lib/commands/iohid.js +5 -5
- package/build/lib/commands/location.js +5 -5
- package/build/lib/commands/log.js +3 -3
- package/build/lib/commands/navigation.js +3 -3
- package/build/lib/commands/notifications.js +5 -5
- package/build/lib/commands/pcap.js +8 -8
- package/build/lib/commands/performance.js +14 -14
- package/build/lib/commands/proxy-helper.js +4 -4
- package/build/lib/commands/record-audio.js +10 -10
- package/build/lib/commands/recordscreen.js +9 -9
- package/build/lib/commands/screenshots.js +4 -4
- package/build/lib/commands/web.js +32 -32
- package/build/lib/commands/xctest.js +3 -3
- package/build/lib/cookies.js +3 -3
- package/build/lib/css-converter.js +5 -5
- package/build/lib/device-connections-factory.js +8 -8
- package/build/lib/device-log/ios-crash-log.js +11 -11
- package/build/lib/device-log/ios-device-log.js +3 -3
- package/build/lib/device-log/ios-performance-log.js +3 -3
- package/build/lib/device-log/ios-simulator-log.js +3 -3
- package/build/lib/device-log/rotating-log.js +3 -3
- package/build/lib/device-log/safari-console-log.js +3 -3
- package/build/lib/device-log/safari-network-log.js +3 -3
- package/build/lib/driver.js +25 -21
- package/build/lib/ios-deploy.js +4 -4
- package/build/lib/ios-fs-helpers.js +15 -15
- package/build/lib/logger.js +3 -3
- package/build/lib/py-ios-device-client.js +15 -7
- package/build/lib/server.js +4 -4
- package/build/lib/simulator-management.js +4 -4
- package/build/lib/utils.js +18 -18
- package/lib/app-utils.js +1 -1
- package/lib/commands/app-management.js +30 -2
- package/lib/commands/appearance.js +1 -1
- package/lib/commands/certificate.js +1 -1
- package/lib/commands/context.js +7 -7
- package/lib/commands/cookies.js +1 -1
- package/lib/commands/deviceInfo.js +10 -1
- package/lib/commands/element.js +2 -2
- package/lib/commands/execute.js +3 -2
- package/lib/commands/file-movement.js +1 -1
- package/lib/commands/find.js +2 -2
- package/lib/commands/general.js +2 -2
- package/lib/commands/gesture.js +2 -2
- package/lib/commands/iohid.js +1 -1
- package/lib/commands/location.js +2 -2
- package/lib/commands/log.js +1 -1
- package/lib/commands/navigation.js +1 -1
- package/lib/commands/notifications.js +1 -1
- package/lib/commands/pcap.js +1 -1
- package/lib/commands/performance.js +3 -1
- package/lib/commands/proxy-helper.js +1 -1
- package/lib/commands/record-audio.js +1 -1
- package/lib/commands/recordscreen.js +1 -1
- package/lib/commands/screenshots.js +1 -1
- package/lib/commands/web.js +2 -2
- package/lib/commands/xctest.js +1 -1
- package/lib/cookies.js +1 -1
- package/lib/css-converter.js +1 -1
- package/lib/device-connections-factory.js +1 -1
- package/lib/device-log/ios-crash-log.js +1 -1
- package/lib/device-log/ios-device-log.js +1 -1
- package/lib/device-log/ios-performance-log.js +1 -1
- package/lib/device-log/ios-simulator-log.js +1 -1
- package/lib/device-log/rotating-log.js +1 -1
- package/lib/device-log/safari-console-log.js +1 -1
- package/lib/device-log/safari-network-log.js +1 -1
- package/lib/driver.js +16 -7
- package/lib/ios-deploy.js +1 -1
- package/lib/ios-fs-helpers.js +1 -1
- package/lib/logger.js +1 -1
- package/lib/py-ios-device-client.js +8 -1
- package/lib/server.js +1 -1
- package/lib/simulator-management.js +1 -1
- package/lib/utils.js +4 -1
- package/package.json +15 -16
package/README.md
CHANGED
|
@@ -197,7 +197,7 @@ Capability | Description
|
|
|
197
197
|
|`appium:iosSimulatorLogsPredicate`|Set the `--predicate` flag in the ios simulator logs|e.g.: `'process != "locationd" AND process != "DTServiceHub"' AND process != "mobileassetd"`|
|
|
198
198
|
|`appium:simulatorPasteboardAutomaticSync`| Handle the `-PasteboardAutomaticSync` flag when simulator process launches. It could improve launching simulator performance not to sync pasteboard with the system when this value is `off`. `on` forces the flag enabled. `system` does not provide the flag to the launching command. `on`, `off`, or `system` is available. They are case insensitive. Defaults to `off` | e.g. `system` |
|
|
199
199
|
|`appium:simulatorDevicesSetPath`| This capability allows to set an alternative path to the simulator devices set in case you have multiple sets deployed on your local system. Such feature could be useful if you, for example, would like to save disk space on the main system volume. | e.g. `/MyVolume/Devices` |
|
|
200
|
-
|`appium:customSSLCert`| Adds a root SSL certificate to IOS
|
|
200
|
+
|`appium:customSSLCert`| Adds a root SSL certificate to IOS Simulators and real devices. Real devices only work if [py-ios-device](https://github.com/YueChen-C/py-ios-device) tool is available on the server machine. The certificate content must be provided in [PEM](https://knowledge.digicert.com/quovadis/ssl-certificates/ssl-general-topics/what-is-pem-format.html) format | e.g. ```-----BEGIN CERTIFICATE-----MIIFWjCCBEKg...-----END CERTIFICATE-----```|
|
|
201
201
|
|`appium:webkitResponseTimeout`| (Real device only) Set the time, in ms, to wait for a response from WebKit in a Safari session. Defaults to `5000` | e.g., `10000`|
|
|
202
202
|
|
|
203
203
|
### Web Context
|
|
@@ -493,7 +493,7 @@ environment | dict | no | Environment variables mapping for the app. If the app
|
|
|
493
493
|
|
|
494
494
|
### mobile: terminateApp
|
|
495
495
|
|
|
496
|
-
Terminates the given app on the device under test. If the app is not installed an exception is thrown. If the app is not running then nothing is done.
|
|
496
|
+
Terminates the given app on the device under test via [XCTest's terminate](https://developer.apple.com/documentation/xctest/xcuiapplication/1500637-terminate) API. If the app is not installed an exception is thrown. If the app is not running then nothing is done.
|
|
497
497
|
|
|
498
498
|
#### Arguments
|
|
499
499
|
|
|
@@ -505,6 +505,22 @@ bundleId | string | yes | The bundle identifier of the application to be termina
|
|
|
505
505
|
|
|
506
506
|
Either `true` if the app was successfully terminated, otherwise `false`
|
|
507
507
|
|
|
508
|
+
### mobile: killApp
|
|
509
|
+
|
|
510
|
+
Kill the given app on the real device under test by instruments service via [py-ios-device](https://github.com/YueChen-C/py-ios-device) if it is installed on the server machine.
|
|
511
|
+
If the app is not running or failed to kill, then nothing is done.
|
|
512
|
+
Note that this method takes a few more time than `mobile:terminateApp` for now since it calls the instruments service via external command, `py-ios-device`.
|
|
513
|
+
|
|
514
|
+
#### Arguments
|
|
515
|
+
|
|
516
|
+
Name | Type | Required | Description | Example
|
|
517
|
+
--- | --- | --- | --- | ---
|
|
518
|
+
bundleId | string | yes | The bundle identifier of the application to be terminated | com.mycompany.myapp
|
|
519
|
+
|
|
520
|
+
#### Returned Result
|
|
521
|
+
|
|
522
|
+
Either `true` if the app was successfully killed, otherwise `false`
|
|
523
|
+
|
|
508
524
|
### mobile: queryAppState
|
|
509
525
|
|
|
510
526
|
Queries the state of an installed application from the device under test. An exception will be thrown if the app with given identifier is not installed.
|
|
@@ -584,7 +600,8 @@ The resulting file in .trace format can be either returned directly as base64-en
|
|
|
584
600
|
### mobile: installCertificate
|
|
585
601
|
|
|
586
602
|
Installs a custom certificate onto the device. Since Xcode SDK 11.4 Apple has added a dedicated simctl subcommand to quickly handle certificates on Simulator over CLI.
|
|
587
|
-
On real devices
|
|
603
|
+
On real devices the certificate could be installed via CLI if [py-ios-device](https://github.com/YueChen-C/py-ios-device) tool is available on the server machine.
|
|
604
|
+
On simulators before Xcode 11.4 SDK Apple provides no official way to do it via the command line. In such case (and also as a fallback if CLI setup fails) this method tries to wrap the certificate into .mobileconfig format and then deploys the wrapped file to the internal HTTP server, so one can open it via mobile Safari. Then the algorithm goes through the profile installation procedure by clicking the necessary buttons using WebDriverAgent.
|
|
588
605
|
|
|
589
606
|
#### Arguments
|
|
590
607
|
|
|
@@ -626,6 +643,7 @@ The actual battery info map, which consists of the following entries:
|
|
|
626
643
|
### mobile: deviceInfo
|
|
627
644
|
|
|
628
645
|
Returns the miscellaneous information about the device under test.
|
|
646
|
+
It includes device information via lockdown in a real device since XCUITest driver 4.2.0.
|
|
629
647
|
|
|
630
648
|
#### Returned Result
|
|
631
649
|
|
package/build/lib/app-utils.js
CHANGED
|
@@ -15,7 +15,7 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
15
15
|
|
|
16
16
|
var _path = _interopRequireDefault(require("path"));
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _support = require("@appium/support");
|
|
19
19
|
|
|
20
20
|
var _logger = _interopRequireDefault(require("./logger.js"));
|
|
21
21
|
|
|
@@ -26,7 +26,7 @@ async function extractPlistEntry(app, entryName) {
|
|
|
26
26
|
const plistPath = _path.default.resolve(app, 'Info.plist');
|
|
27
27
|
|
|
28
28
|
try {
|
|
29
|
-
return (await
|
|
29
|
+
return (await _support.plist.parsePlistFile(plistPath))[entryName];
|
|
30
30
|
} catch (err) {
|
|
31
31
|
throw new Error(`Could not extract Info.plist from '${_path.default.basename(app)}': ${err.message}`);
|
|
32
32
|
}
|
|
@@ -75,7 +75,7 @@ async function verifyApplicationPlatform(app, expectedPlatform) {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
async function readResource(resourcePath) {
|
|
78
|
-
const data = await
|
|
78
|
+
const data = await _support.plist.parsePlistFile(resourcePath);
|
|
79
79
|
const result = {};
|
|
80
80
|
|
|
81
81
|
for (const [key, value] of _lodash.default.toPairs(data)) {
|
|
@@ -111,7 +111,7 @@ async function parseLocalizableStrings(opts) {
|
|
|
111
111
|
for (const subfolder of [`${language}.lproj`, localizableStringsDir, '']) {
|
|
112
112
|
lprojRoot = _path.default.resolve(app, subfolder);
|
|
113
113
|
|
|
114
|
-
if (await
|
|
114
|
+
if (await _support.fs.exists(lprojRoot)) {
|
|
115
115
|
break;
|
|
116
116
|
}
|
|
117
117
|
|
|
@@ -131,7 +131,7 @@ async function parseLocalizableStrings(opts) {
|
|
|
131
131
|
if (stringFile) {
|
|
132
132
|
const dstPath = _path.default.resolve(lprojRoot, stringFile);
|
|
133
133
|
|
|
134
|
-
if (await
|
|
134
|
+
if (await _support.fs.exists(dstPath)) {
|
|
135
135
|
resourcePaths.push(dstPath);
|
|
136
136
|
} else {
|
|
137
137
|
const message = `No '${dstPath}' resource file has been found for '${app}'`;
|
|
@@ -146,8 +146,8 @@ async function parseLocalizableStrings(opts) {
|
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
if (_lodash.default.isEmpty(resourcePaths) && (await
|
|
150
|
-
const resourceFiles = (await
|
|
149
|
+
if (_lodash.default.isEmpty(resourcePaths) && (await _support.fs.exists(lprojRoot))) {
|
|
150
|
+
const resourceFiles = (await _support.fs.readdir(lprojRoot)).filter(name => _lodash.default.some([STRINGS_RESOURCE, STRINGSDICT_RESOURCE], x => name.endsWith(x))).map(name => _path.default.resolve(lprojRoot, name));
|
|
151
151
|
resourcePaths.push(...resourceFiles);
|
|
152
152
|
}
|
|
153
153
|
|
|
@@ -164,7 +164,7 @@ async function parseLocalizableStrings(opts) {
|
|
|
164
164
|
};
|
|
165
165
|
|
|
166
166
|
for (const resourcePath of resourcePaths) {
|
|
167
|
-
if (!
|
|
167
|
+
if (!_support.util.isSubPath(toAbsolutePath(resourcePath), toAbsolutePath(app))) {
|
|
168
168
|
throw new Error(`'${resourcePath}' is expected to be located under '${app}'`);
|
|
169
169
|
}
|
|
170
170
|
|
|
@@ -185,4 +185,4 @@ async function parseLocalizableStrings(opts) {
|
|
|
185
185
|
}require('source-map-support').install();
|
|
186
186
|
|
|
187
187
|
|
|
188
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9hcHAtdXRpbHMuanMiXSwibmFtZXMiOlsiU1RSSU5HU0RJQ1RfUkVTT1VSQ0UiLCJTVFJJTkdTX1JFU09VUkNFIiwiZXh0cmFjdFBsaXN0RW50cnkiLCJhcHAiLCJlbnRyeU5hbWUiLCJwbGlzdFBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsInBsaXN0IiwicGFyc2VQbGlzdEZpbGUiLCJlcnIiLCJFcnJvciIsImJhc2VuYW1lIiwibWVzc2FnZSIsImV4dHJhY3RCdW5kbGVJZCIsImJ1bmRsZUlkIiwibG9nIiwiZGVidWciLCJ2ZXJpZnlBcHBsaWNhdGlvblBsYXRmb3JtIiwiZXhwZWN0ZWRQbGF0Zm9ybSIsInN1cHBvcnRlZFBsYXRmb3JtcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJfIiwiaXNBcnJheSIsImlzU2ltdWxhdG9yIiwiaXNUdk9TIiwicHJlZml4Iiwic3VmZml4IiwiZHN0UGxhdGZvcm0iLCJpbmNsdWRlcyIsInJlYWRSZXNvdXJjZSIsInJlc291cmNlUGF0aCIsImRhdGEiLCJyZXN1bHQiLCJrZXkiLCJ2YWx1ZSIsInRvUGFpcnMiLCJpc1N0cmluZyIsInBhcnNlTG9jYWxpemFibGVTdHJpbmdzIiwib3B0cyIsImxhbmd1YWdlIiwibG9jYWxpemFibGVTdHJpbmdzRGlyIiwic3RyaW5nRmlsZSIsInN0cmljdE1vZGUiLCJpbmZvIiwibHByb2pSb290Iiwic3ViZm9sZGVyIiwiZnMiLCJleGlzdHMiLCJyZXNvdXJjZVBhdGhzIiwiZHN0UGF0aCIsInB1c2giLCJpc0VtcHR5IiwicmVzb3VyY2VGaWxlcyIsInJlYWRkaXIiLCJmaWx0ZXIiLCJuYW1lIiwic29tZSIsIngiLCJlbmRzV2l0aCIsIm1hcCIsImxlbmd0aCIsInJlc3VsdFN0cmluZ3MiLCJ0b0Fic29sdXRlUGF0aCIsInAiLCJpc0Fic29sdXRlIiwicHJvY2VzcyIsImN3ZCIsInV0aWwiLCJpc1N1YlBhdGgiLCJrZXlzIiwibWVyZ2UiLCJlIiwid2FybiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLG9CQUFvQixHQUFHLGNBQTdCO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUcsVUFBekI7O0FBR0EsZUFBZUMsaUJBQWYsQ0FBa0NDLEdBQWxDLEVBQXVDQyxTQUF2QyxFQUFrRDtBQUNoRCxRQUFNQyxTQUFTLEdBQUdDLGNBQUtDLE9BQUwsQ0FBYUosR0FBYixFQUFrQixZQUFsQixDQUFsQjs7QUFDQSxNQUFJO0FBQ0YsV0FBTyxDQUFDLE1BQU1LLHFCQUFNQyxjQUFOLENBQXFCSixTQUFyQixDQUFQLEVBQXdDRCxTQUF4QyxDQUFQO0FBQ0QsR0FGRCxDQUVFLE9BQU9NLEdBQVAsRUFBWTtBQUNaLFVBQU0sSUFBSUMsS0FBSixDQUFXLHNDQUFxQ0wsY0FBS00sUUFBTCxDQUFjVCxHQUFkLENBQW1CLE1BQUtPLEdBQUcsQ0FBQ0csT0FBUSxFQUFwRixDQUFOO0FBQ0Q7QUFDRjs7QUFFRCxlQUFlQyxlQUFmLENBQWdDWCxHQUFoQyxFQUFxQztBQUNuQyxRQUFNWSxRQUFRLEdBQUcsTUFBTWIsaUJBQWlCLENBQUNDLEdBQUQsRUFBTSxvQkFBTixDQUF4Qzs7QUFDQWEsa0JBQUlDLEtBQUosQ0FBVywrQkFBOEJkLEdBQUksT0FBTVksUUFBUyxHQUE1RDs7QUFDQSxTQUFPQSxRQUFQO0FBQ0Q7O0FBaUJELGVBQWVHLHlCQUFmLENBQTBDZixHQUExQyxFQUErQ2dCLGdCQUEvQyxFQUFpRTtBQUMvREgsa0JBQUlDLEtBQUosQ0FBVSxnQ0FBVjs7QUFFQSxNQUFJRyxrQkFBSjs7QUFDQSxNQUFJO0FBQ0ZBLElBQUFBLGtCQUFrQixHQUFHLE1BQU1sQixpQkFBaUIsQ0FBQ0MsR0FBRCxFQUFNLDRCQUFOLENBQTVDO0FBQ0QsR0FGRCxDQUVFLE9BQU9PLEdBQVAsRUFBWTtBQUNaTSxvQkFBSUMsS0FBSixDQUFVUCxHQUFHLENBQUNHLE9BQWQ7O0FBQ0E7QUFDRDs7QUFDREcsa0JBQUlDLEtBQUosQ0FBVywrQkFBOEJJLElBQUksQ0FBQ0MsU0FBTCxDQUFlRixrQkFBZixDQUFtQyxFQUE1RTs7QUFDQSxNQUFJLENBQUNHLGdCQUFFQyxPQUFGLENBQVVKLGtCQUFWLENBQUwsRUFBb0M7QUFDbENKLG9CQUFJQyxLQUFKLENBQVcscURBQW9EWCxjQUFLTSxRQUFMLENBQWNULEdBQWQsQ0FBbUIsR0FBbEY7O0FBQ0E7QUFDRDs7QUFFRCxRQUFNO0FBQ0pzQixJQUFBQSxXQURJO0FBRUpDLElBQUFBO0FBRkksTUFHRlAsZ0JBSEo7QUFJQSxRQUFNUSxNQUFNLEdBQUdELE1BQU0sR0FBRyxTQUFILEdBQWUsUUFBcEM7QUFDQSxRQUFNRSxNQUFNLEdBQUdILFdBQVcsR0FBRyxXQUFILEdBQWlCLElBQTNDO0FBQ0EsUUFBTUksV0FBVyxHQUFJLEdBQUVGLE1BQU8sR0FBRUMsTUFBTyxFQUF2Qzs7QUFDQSxNQUFJLENBQUNSLGtCQUFrQixDQUFDVSxRQUFuQixDQUE0QkQsV0FBNUIsQ0FBTCxFQUErQztBQUM3QyxVQUFNLElBQUlsQixLQUFKLENBQVcsR0FBRWMsV0FBVyxHQUFHLFdBQUgsR0FBaUIsYUFBYyx3Q0FBdUN0QixHQUFJLGlCQUF4RixHQUNiLHlGQURHLENBQU47QUFFRDtBQUNGOztBQUVELGVBQWU0QixZQUFmLENBQTZCQyxZQUE3QixFQUEyQztBQUN6QyxRQUFNQyxJQUFJLEdBQUcsTUFBTXpCLHFCQUFNQyxjQUFOLENBQXFCdUIsWUFBckIsQ0FBbkI7QUFDQSxRQUFNRSxNQUFNLEdBQUcsRUFBZjs7QUFDQSxPQUFLLE1BQU0sQ0FBQ0MsR0FBRCxFQUFNQyxLQUFOLENBQVgsSUFBMkJiLGdCQUFFYyxPQUFGLENBQVVKLElBQVYsQ0FBM0IsRUFBNEM7QUFDMUNDLElBQUFBLE1BQU0sQ0FBQ0MsR0FBRCxDQUFOLEdBQWNaLGdCQUFFZSxRQUFGLENBQVdGLEtBQVgsSUFBb0JBLEtBQXBCLEdBQTRCZixJQUFJLENBQUNDLFNBQUwsQ0FBZWMsS0FBZixDQUExQztBQUNEOztBQUNELFNBQU9GLE1BQVA7QUFDRDs7QUFFRCxlQUFlSyx1QkFBZixDQUF3Q0MsSUFBeEMsRUFBOEM7QUFDNUMsUUFBTTtBQUNKckMsSUFBQUEsR0FESTtBQUVKc0MsSUFBQUEsUUFBUSxHQUFHLElBRlA7QUFHSkMsSUFBQUEscUJBSEk7QUFJSkMsSUFBQUEsVUFKSTtBQUtKQyxJQUFBQTtBQUxJLE1BTUZKLElBTko7O0FBUUEsTUFBSSxDQUFDckMsR0FBTCxFQUFVO0FBQ1IsVUFBTVUsT0FBTyxHQUFJLG9FQUFqQjs7QUFDQSxRQUFJK0IsVUFBSixFQUFnQjtBQUNkLFlBQU0sSUFBSWpDLEtBQUosQ0FBVUUsT0FBVixDQUFOO0FBQ0Q7O0FBQ0RHLG9CQUFJNkIsSUFBSixDQUFTaEMsT0FBVDs7QUFDQSxXQUFPLEVBQVA7QUFDRDs7QUFFRCxNQUFJaUMsU0FBSjs7QUFDQSxPQUFLLE1BQU1DLFNBQVgsSUFBd0IsQ0FBRSxHQUFFTixRQUFTLFFBQWIsRUFBc0JDLHFCQUF0QixFQUE2QyxFQUE3QyxDQUF4QixFQUEwRTtBQUN4RUksSUFBQUEsU0FBUyxHQUFHeEMsY0FBS0MsT0FBTCxDQUFhSixHQUFiLEVBQWtCNEMsU0FBbEIsQ0FBWjs7QUFDQSxRQUFJLE1BQU1DLGtCQUFHQyxNQUFILENBQVVILFNBQVYsQ0FBVixFQUFnQztBQUM5QjtBQUNEOztBQUNELFVBQU1qQyxPQUFPLEdBQUksT0FBTWlDLFNBQVUsbUNBQWpDOztBQUNBLFFBQUlGLFVBQUosRUFBZ0I7QUFDZCxZQUFNLElBQUlqQyxLQUFKLENBQVVFLE9BQVYsQ0FBTjtBQUNEOztBQUNERyxvQkFBSUMsS0FBSixDQUFVSixPQUFWO0FBQ0Q7O0FBQ0RHLGtCQUFJNkIsSUFBSixDQUFVLHVDQUFzQ0MsU0FBVSxHQUExRDs7QUFFQSxRQUFNSSxhQUFhLEdBQUcsRUFBdEI7O0FBQ0EsTUFBSVAsVUFBSixFQUFnQjtBQUNkLFVBQU1RLE9BQU8sR0FBRzdDLGNBQUtDLE9BQUwsQ0FBYXVDLFNBQWIsRUFBd0JILFVBQXhCLENBQWhCOztBQUNBLFFBQUksTUFBTUssa0JBQUdDLE1BQUgsQ0FBVUUsT0FBVixDQUFWLEVBQThCO0FBQzVCRCxNQUFBQSxhQUFhLENBQUNFLElBQWQsQ0FBbUJELE9BQW5CO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsWUFBTXRDLE9BQU8sR0FBSSxPQUFNc0MsT0FBUSx1Q0FBc0NoRCxHQUFJLEdBQXpFOztBQUNBLFVBQUl5QyxVQUFKLEVBQWdCO0FBQ2QsY0FBTSxJQUFJakMsS0FBSixDQUFVRSxPQUFWLENBQU47QUFDRDs7QUFDREcsc0JBQUk2QixJQUFKLENBQVNoQyxPQUFUOztBQUNBRyxzQkFBSTZCLElBQUosQ0FBVSwyQ0FBMENDLFNBQVUsR0FBOUQ7QUFDRDtBQUNGOztBQUVELE1BQUl2QixnQkFBRThCLE9BQUYsQ0FBVUgsYUFBVixNQUE0QixNQUFNRixrQkFBR0MsTUFBSCxDQUFVSCxTQUFWLENBQWxDLENBQUosRUFBNEQ7QUFDMUQsVUFBTVEsYUFBYSxHQUFHLENBQUMsTUFBTU4sa0JBQUdPLE9BQUgsQ0FBV1QsU0FBWCxDQUFQLEVBQ25CVSxNQURtQixDQUNYQyxJQUFELElBQVVsQyxnQkFBRW1DLElBQUYsQ0FBTyxDQUFDekQsZ0JBQUQsRUFBbUJELG9CQUFuQixDQUFQLEVBQWtEMkQsQ0FBRCxJQUFPRixJQUFJLENBQUNHLFFBQUwsQ0FBY0QsQ0FBZCxDQUF4RCxDQURFLEVBRW5CRSxHQUZtQixDQUVkSixJQUFELElBQVVuRCxjQUFLQyxPQUFMLENBQWF1QyxTQUFiLEVBQXdCVyxJQUF4QixDQUZLLENBQXRCO0FBR0FQLElBQUFBLGFBQWEsQ0FBQ0UsSUFBZCxDQUFtQixHQUFHRSxhQUF0QjtBQUNEOztBQUNEdEMsa0JBQUk2QixJQUFKLENBQVUsT0FBTUssYUFBYSxDQUFDWSxNQUFPLHlCQUF3QmhCLFNBQVUsR0FBdkU7O0FBRUEsTUFBSXZCLGdCQUFFOEIsT0FBRixDQUFVSCxhQUFWLENBQUosRUFBOEI7QUFDNUIsV0FBTyxFQUFQO0FBQ0Q7O0FBRUQsUUFBTWEsYUFBYSxHQUFHLEVBQXRCOztBQUNBLFFBQU1DLGNBQWMsR0FBRyxVQUFVQyxDQUFWLEVBQWE7QUFDbEMsV0FBTzNELGNBQUs0RCxVQUFMLENBQWdCRCxDQUFoQixJQUFxQkEsQ0FBckIsR0FBeUIzRCxjQUFLQyxPQUFMLENBQWE0RCxPQUFPLENBQUNDLEdBQVIsRUFBYixFQUE0QkgsQ0FBNUIsQ0FBaEM7QUFDRCxHQUZEOztBQUdBLE9BQUssTUFBTWpDLFlBQVgsSUFBMkJrQixhQUEzQixFQUEwQztBQUN4QyxRQUFJLENBQUNtQixvQkFBS0MsU0FBTCxDQUFlTixjQUFjLENBQUNoQyxZQUFELENBQTdCLEVBQTZDZ0MsY0FBYyxDQUFDN0QsR0FBRCxDQUEzRCxDQUFMLEVBQXdFO0FBRXRFLFlBQU0sSUFBSVEsS0FBSixDQUFXLElBQUdxQixZQUFhLHNDQUFxQzdCLEdBQUksR0FBcEUsQ0FBTjtBQUNEOztBQUNELFFBQUk7QUFDRixZQUFNOEIsSUFBSSxHQUFHLE1BQU1GLFlBQVksQ0FBQ0MsWUFBRCxDQUEvQjs7QUFDQWhCLHNCQUFJQyxLQUFKLENBQVcsVUFBU00sZ0JBQUVnRCxJQUFGLENBQU90QyxJQUFQLEVBQWE2QixNQUFPLG9CQUFtQjlCLFlBQWEsR0FBeEU7O0FBQ0FULHNCQUFFaUQsS0FBRixDQUFRVCxhQUFSLEVBQXVCOUIsSUFBdkI7QUFDRCxLQUpELENBSUUsT0FBT3dDLENBQVAsRUFBVTtBQUNWekQsc0JBQUkwRCxJQUFKLENBQVUsaUJBQWdCMUMsWUFBYSwrQkFBOEJ5QyxDQUFDLENBQUM1RCxPQUFRLEVBQS9FO0FBQ0Q7QUFDRjs7QUFFREcsa0JBQUk2QixJQUFKLENBQVUsT0FBTXRCLGdCQUFFZ0QsSUFBRixDQUFPUixhQUFQLEVBQXNCRCxNQUFPLG9CQUFtQmhCLFNBQVUsR0FBMUU7O0FBQ0EsU0FBT2lCLGFBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHBsaXN0LCBmcywgdXRpbCB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXIuanMnO1xuXG5jb25zdCBTVFJJTkdTRElDVF9SRVNPVVJDRSA9ICcuc3RyaW5nc2RpY3QnO1xuY29uc3QgU1RSSU5HU19SRVNPVVJDRSA9ICcuc3RyaW5ncyc7XG5cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFBsaXN0RW50cnkgKGFwcCwgZW50cnlOYW1lKSB7XG4gIGNvbnN0IHBsaXN0UGF0aCA9IHBhdGgucmVzb2x2ZShhcHAsICdJbmZvLnBsaXN0Jyk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChhd2FpdCBwbGlzdC5wYXJzZVBsaXN0RmlsZShwbGlzdFBhdGgpKVtlbnRyeU5hbWVdO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBleHRyYWN0IEluZm8ucGxpc3QgZnJvbSAnJHtwYXRoLmJhc2VuYW1lKGFwcCl9JzogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0QnVuZGxlSWQgKGFwcCkge1xuICBjb25zdCBidW5kbGVJZCA9IGF3YWl0IGV4dHJhY3RQbGlzdEVudHJ5KGFwcCwgJ0NGQnVuZGxlSWRlbnRpZmllcicpO1xuICBsb2cuZGVidWcoYEdldHRpbmcgYnVuZGxlIElEIGZyb20gYXBwICcke2FwcH0nOiAnJHtidW5kbGVJZH0nYCk7XG4gIHJldHVybiBidW5kbGVJZDtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBQbGF0Zm9ybU9wdHNcbiAqXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzU2ltdWxhdG9yIC0gV2hldGhlciB0aGUgZGVzdGluYXRpb24gcGxhdGZvcm0gaXMgYSBTaW11bGF0b3JcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNUdk9TIC0gV2hldGhlciB0aGUgZGVzdGluYXRpb24gcGxhdGZvcm0gaXMgYSBTaW11bGF0b3JcbiAqL1xuXG4vKipcbiAqIFZlcmlmeSB3aGV0aGVyIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiBpcyBjb21wYXRpYmxlIHRvIHRoZVxuICogcGxhdGZvcm0gd2hlcmUgaXQgaXMgZ29pbmcgdG8gYmUgaW5zdGFsbGVkIGFuZCB0ZXN0ZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcCAtIFRoZSBhY3R1YWwgcGF0aCB0byB0aGUgYXBwbGljYXRpb24gYnVuZGxlXG4gKiBAcGFyYW0ge1BsYXRmb3JtT3B0c30gZXhwZWN0ZWRQbGF0Zm9ybVxuICogQHRocm93cyB7RXJyb3J9IElmIGJ1bmRsZSBhcmNoaXRlY3R1cmUgZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGRldmljZSBhcmNoaXRlY3R1cmUuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeUFwcGxpY2F0aW9uUGxhdGZvcm0gKGFwcCwgZXhwZWN0ZWRQbGF0Zm9ybSkge1xuICBsb2cuZGVidWcoJ1ZlcmlmeWluZyBhcHBsaWNhdGlvbiBwbGF0Zm9ybScpO1xuXG4gIGxldCBzdXBwb3J0ZWRQbGF0Zm9ybXM7XG4gIHRyeSB7XG4gICAgc3VwcG9ydGVkUGxhdGZvcm1zID0gYXdhaXQgZXh0cmFjdFBsaXN0RW50cnkoYXBwLCAnQ0ZCdW5kbGVTdXBwb3J0ZWRQbGF0Zm9ybXMnKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmRlYnVnKGVyci5tZXNzYWdlKTtcbiAgICByZXR1cm47XG4gIH1cbiAgbG9nLmRlYnVnKGBDRkJ1bmRsZVN1cHBvcnRlZFBsYXRmb3JtczogJHtKU09OLnN0cmluZ2lmeShzdXBwb3J0ZWRQbGF0Zm9ybXMpfWApO1xuICBpZiAoIV8uaXNBcnJheShzdXBwb3J0ZWRQbGF0Zm9ybXMpKSB7XG4gICAgbG9nLmRlYnVnKGBDRkJ1bmRsZVN1cHBvcnRlZFBsYXRmb3JtcyBrZXkgZG9lcyBub3QgZXhpc3QgaW4gJyR7cGF0aC5iYXNlbmFtZShhcHApfSdgKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7XG4gICAgaXNTaW11bGF0b3IsXG4gICAgaXNUdk9TLFxuICB9ID0gZXhwZWN0ZWRQbGF0Zm9ybTtcbiAgY29uc3QgcHJlZml4ID0gaXNUdk9TID8gJ0FwcGxlVFYnIDogJ2lQaG9uZSc7XG4gIGNvbnN0IHN1ZmZpeCA9IGlzU2ltdWxhdG9yID8gJ1NpbXVsYXRvcicgOiAnT1MnO1xuICBjb25zdCBkc3RQbGF0Zm9ybSA9IGAke3ByZWZpeH0ke3N1ZmZpeH1gO1xuICBpZiAoIXN1cHBvcnRlZFBsYXRmb3Jtcy5pbmNsdWRlcyhkc3RQbGF0Zm9ybSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7aXNTaW11bGF0b3IgPyAnU2ltdWxhdG9yJyA6ICdSZWFsIGRldmljZSd9IGFyY2hpdGVjdHVyZSBpcyB1bnN1cHBvcnRlZCBieSB0aGUgJyR7YXBwfScgYXBwbGljYXRpb24uIGAgK1xuICAgICAgYE1ha2Ugc3VyZSB0aGUgY29ycmVjdCBkZXBsb3ltZW50IHRhcmdldCBoYXMgYmVlbiBzZWxlY3RlZCBmb3IgaXRzIGNvbXBpbGF0aW9uIGluIFhjb2RlLmApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRSZXNvdXJjZSAocmVzb3VyY2VQYXRoKSB7XG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBwbGlzdC5wYXJzZVBsaXN0RmlsZShyZXNvdXJjZVBhdGgpO1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgXy50b1BhaXJzKGRhdGEpKSB7XG4gICAgcmVzdWx0W2tleV0gPSBfLmlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBhcnNlTG9jYWxpemFibGVTdHJpbmdzIChvcHRzKSB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbGFuZ3VhZ2UgPSAnZW4nLFxuICAgIGxvY2FsaXphYmxlU3RyaW5nc0RpcixcbiAgICBzdHJpbmdGaWxlLFxuICAgIHN0cmljdE1vZGUsXG4gIH0gPSBvcHRzO1xuXG4gIGlmICghYXBwKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGBTdHJpbmdzIGV4dHJhY3Rpb24gaXMgbm90IHN1cHBvcnRlZCBpZiAnYXBwJyBjYXBhYmlsaXR5IGlzIG5vdCBzZXRgO1xuICAgIGlmIChzdHJpY3RNb2RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuICAgIGxvZy5pbmZvKG1lc3NhZ2UpO1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGxldCBscHJvalJvb3Q7XG4gIGZvciAoY29uc3Qgc3ViZm9sZGVyIG9mIFtgJHtsYW5ndWFnZX0ubHByb2pgLCBsb2NhbGl6YWJsZVN0cmluZ3NEaXIsICcnXSkge1xuICAgIGxwcm9qUm9vdCA9IHBhdGgucmVzb2x2ZShhcHAsIHN1YmZvbGRlcik7XG4gICAgaWYgKGF3YWl0IGZzLmV4aXN0cyhscHJvalJvb3QpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZSA9IGBObyAnJHtscHJvalJvb3R9JyByZXNvdXJjZXMgZm9sZGVyIGhhcyBiZWVuIGZvdW5kYDtcbiAgICBpZiAoc3RyaWN0TW9kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICBsb2cuZGVidWcobWVzc2FnZSk7XG4gIH1cbiAgbG9nLmluZm8oYFdpbGwgZXh0cmFjdCByZXNvdXJjZSBzdHJpbmdzIGZyb20gJyR7bHByb2pSb290fSdgKTtcblxuICBjb25zdCByZXNvdXJjZVBhdGhzID0gW107XG4gIGlmIChzdHJpbmdGaWxlKSB7XG4gICAgY29uc3QgZHN0UGF0aCA9IHBhdGgucmVzb2x2ZShscHJvalJvb3QsIHN0cmluZ0ZpbGUpO1xuICAgIGlmIChhd2FpdCBmcy5leGlzdHMoZHN0UGF0aCkpIHtcbiAgICAgIHJlc291cmNlUGF0aHMucHVzaChkc3RQYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBObyAnJHtkc3RQYXRofScgcmVzb3VyY2UgZmlsZSBoYXMgYmVlbiBmb3VuZCBmb3IgJyR7YXBwfSdgO1xuICAgICAgaWYgKHN0cmljdE1vZGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgbG9nLmluZm8obWVzc2FnZSk7XG4gICAgICBsb2cuaW5mbyhgR2V0dGluZyBhbGwgdGhlIGF2YWlsYWJsZSBzdHJpbmdzIGZyb20gJyR7bHByb2pSb290fSdgKTtcbiAgICB9XG4gIH1cblxuICBpZiAoXy5pc0VtcHR5KHJlc291cmNlUGF0aHMpICYmIGF3YWl0IGZzLmV4aXN0cyhscHJvalJvb3QpKSB7XG4gICAgY29uc3QgcmVzb3VyY2VGaWxlcyA9IChhd2FpdCBmcy5yZWFkZGlyKGxwcm9qUm9vdCkpXG4gICAgICAuZmlsdGVyKChuYW1lKSA9PiBfLnNvbWUoW1NUUklOR1NfUkVTT1VSQ0UsIFNUUklOR1NESUNUX1JFU09VUkNFXSwgKHgpID0+IG5hbWUuZW5kc1dpdGgoeCkpKVxuICAgICAgLm1hcCgobmFtZSkgPT4gcGF0aC5yZXNvbHZlKGxwcm9qUm9vdCwgbmFtZSkpO1xuICAgIHJlc291cmNlUGF0aHMucHVzaCguLi5yZXNvdXJjZUZpbGVzKTtcbiAgfVxuICBsb2cuaW5mbyhgR290ICR7cmVzb3VyY2VQYXRocy5sZW5ndGh9IHJlc291cmNlIGZpbGUocykgaW4gJyR7bHByb2pSb290fSdgKTtcblxuICBpZiAoXy5pc0VtcHR5KHJlc291cmNlUGF0aHMpKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgcmVzdWx0U3RyaW5ncyA9IHt9O1xuICBjb25zdCB0b0Fic29sdXRlUGF0aCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgcmV0dXJuIHBhdGguaXNBYnNvbHV0ZShwKSA/IHAgOiBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgcCk7XG4gIH07XG4gIGZvciAoY29uc3QgcmVzb3VyY2VQYXRoIG9mIHJlc291cmNlUGF0aHMpIHtcbiAgICBpZiAoIXV0aWwuaXNTdWJQYXRoKHRvQWJzb2x1dGVQYXRoKHJlc291cmNlUGF0aCksIHRvQWJzb2x1dGVQYXRoKGFwcCkpKSB7XG4gICAgICAvLyBzZWN1cml0eSBwcmVjYXV0aW9uXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke3Jlc291cmNlUGF0aH0nIGlzIGV4cGVjdGVkIHRvIGJlIGxvY2F0ZWQgdW5kZXIgJyR7YXBwfSdgKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWFkUmVzb3VyY2UocmVzb3VyY2VQYXRoKTtcbiAgICAgIGxvZy5kZWJ1ZyhgUGFyc2VkICR7Xy5rZXlzKGRhdGEpLmxlbmd0aH0gc3RyaW5nKHMpIGZyb20gJyR7cmVzb3VyY2VQYXRofSdgKTtcbiAgICAgIF8ubWVyZ2UocmVzdWx0U3RyaW5ncywgZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nLndhcm4oYENhbm5vdCBwYXJzZSAnJHtyZXNvdXJjZVBhdGh9JyByZXNvdXJjZS4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIGxvZy5pbmZvKGBHb3QgJHtfLmtleXMocmVzdWx0U3RyaW5ncykubGVuZ3RofSBzdHJpbmcocykgZnJvbSAnJHtscHJvalJvb3R9J2ApO1xuICByZXR1cm4gcmVzdWx0U3RyaW5ncztcbn1cblxuZXhwb3J0IHsgZXh0cmFjdEJ1bmRsZUlkLCB2ZXJpZnlBcHBsaWNhdGlvblBsYXRmb3JtLCBwYXJzZUxvY2FsaXphYmxlU3RyaW5ncyB9O1xuIl0sImZpbGUiOiJsaWIvYXBwLXV0aWxzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
|
|
188
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9hcHAtdXRpbHMuanMiXSwibmFtZXMiOlsiU1RSSU5HU0RJQ1RfUkVTT1VSQ0UiLCJTVFJJTkdTX1JFU09VUkNFIiwiZXh0cmFjdFBsaXN0RW50cnkiLCJhcHAiLCJlbnRyeU5hbWUiLCJwbGlzdFBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsInBsaXN0IiwicGFyc2VQbGlzdEZpbGUiLCJlcnIiLCJFcnJvciIsImJhc2VuYW1lIiwibWVzc2FnZSIsImV4dHJhY3RCdW5kbGVJZCIsImJ1bmRsZUlkIiwibG9nIiwiZGVidWciLCJ2ZXJpZnlBcHBsaWNhdGlvblBsYXRmb3JtIiwiZXhwZWN0ZWRQbGF0Zm9ybSIsInN1cHBvcnRlZFBsYXRmb3JtcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJfIiwiaXNBcnJheSIsImlzU2ltdWxhdG9yIiwiaXNUdk9TIiwicHJlZml4Iiwic3VmZml4IiwiZHN0UGxhdGZvcm0iLCJpbmNsdWRlcyIsInJlYWRSZXNvdXJjZSIsInJlc291cmNlUGF0aCIsImRhdGEiLCJyZXN1bHQiLCJrZXkiLCJ2YWx1ZSIsInRvUGFpcnMiLCJpc1N0cmluZyIsInBhcnNlTG9jYWxpemFibGVTdHJpbmdzIiwib3B0cyIsImxhbmd1YWdlIiwibG9jYWxpemFibGVTdHJpbmdzRGlyIiwic3RyaW5nRmlsZSIsInN0cmljdE1vZGUiLCJpbmZvIiwibHByb2pSb290Iiwic3ViZm9sZGVyIiwiZnMiLCJleGlzdHMiLCJyZXNvdXJjZVBhdGhzIiwiZHN0UGF0aCIsInB1c2giLCJpc0VtcHR5IiwicmVzb3VyY2VGaWxlcyIsInJlYWRkaXIiLCJmaWx0ZXIiLCJuYW1lIiwic29tZSIsIngiLCJlbmRzV2l0aCIsIm1hcCIsImxlbmd0aCIsInJlc3VsdFN0cmluZ3MiLCJ0b0Fic29sdXRlUGF0aCIsInAiLCJpc0Fic29sdXRlIiwicHJvY2VzcyIsImN3ZCIsInV0aWwiLCJpc1N1YlBhdGgiLCJrZXlzIiwibWVyZ2UiLCJlIiwid2FybiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLG9CQUFvQixHQUFHLGNBQTdCO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUcsVUFBekI7O0FBR0EsZUFBZUMsaUJBQWYsQ0FBa0NDLEdBQWxDLEVBQXVDQyxTQUF2QyxFQUFrRDtBQUNoRCxRQUFNQyxTQUFTLEdBQUdDLGNBQUtDLE9BQUwsQ0FBYUosR0FBYixFQUFrQixZQUFsQixDQUFsQjs7QUFDQSxNQUFJO0FBQ0YsV0FBTyxDQUFDLE1BQU1LLGVBQU1DLGNBQU4sQ0FBcUJKLFNBQXJCLENBQVAsRUFBd0NELFNBQXhDLENBQVA7QUFDRCxHQUZELENBRUUsT0FBT00sR0FBUCxFQUFZO0FBQ1osVUFBTSxJQUFJQyxLQUFKLENBQVcsc0NBQXFDTCxjQUFLTSxRQUFMLENBQWNULEdBQWQsQ0FBbUIsTUFBS08sR0FBRyxDQUFDRyxPQUFRLEVBQXBGLENBQU47QUFDRDtBQUNGOztBQUVELGVBQWVDLGVBQWYsQ0FBZ0NYLEdBQWhDLEVBQXFDO0FBQ25DLFFBQU1ZLFFBQVEsR0FBRyxNQUFNYixpQkFBaUIsQ0FBQ0MsR0FBRCxFQUFNLG9CQUFOLENBQXhDOztBQUNBYSxrQkFBSUMsS0FBSixDQUFXLCtCQUE4QmQsR0FBSSxPQUFNWSxRQUFTLEdBQTVEOztBQUNBLFNBQU9BLFFBQVA7QUFDRDs7QUFpQkQsZUFBZUcseUJBQWYsQ0FBMENmLEdBQTFDLEVBQStDZ0IsZ0JBQS9DLEVBQWlFO0FBQy9ESCxrQkFBSUMsS0FBSixDQUFVLGdDQUFWOztBQUVBLE1BQUlHLGtCQUFKOztBQUNBLE1BQUk7QUFDRkEsSUFBQUEsa0JBQWtCLEdBQUcsTUFBTWxCLGlCQUFpQixDQUFDQyxHQUFELEVBQU0sNEJBQU4sQ0FBNUM7QUFDRCxHQUZELENBRUUsT0FBT08sR0FBUCxFQUFZO0FBQ1pNLG9CQUFJQyxLQUFKLENBQVVQLEdBQUcsQ0FBQ0csT0FBZDs7QUFDQTtBQUNEOztBQUNERyxrQkFBSUMsS0FBSixDQUFXLCtCQUE4QkksSUFBSSxDQUFDQyxTQUFMLENBQWVGLGtCQUFmLENBQW1DLEVBQTVFOztBQUNBLE1BQUksQ0FBQ0csZ0JBQUVDLE9BQUYsQ0FBVUosa0JBQVYsQ0FBTCxFQUFvQztBQUNsQ0osb0JBQUlDLEtBQUosQ0FBVyxxREFBb0RYLGNBQUtNLFFBQUwsQ0FBY1QsR0FBZCxDQUFtQixHQUFsRjs7QUFDQTtBQUNEOztBQUVELFFBQU07QUFDSnNCLElBQUFBLFdBREk7QUFFSkMsSUFBQUE7QUFGSSxNQUdGUCxnQkFISjtBQUlBLFFBQU1RLE1BQU0sR0FBR0QsTUFBTSxHQUFHLFNBQUgsR0FBZSxRQUFwQztBQUNBLFFBQU1FLE1BQU0sR0FBR0gsV0FBVyxHQUFHLFdBQUgsR0FBaUIsSUFBM0M7QUFDQSxRQUFNSSxXQUFXLEdBQUksR0FBRUYsTUFBTyxHQUFFQyxNQUFPLEVBQXZDOztBQUNBLE1BQUksQ0FBQ1Isa0JBQWtCLENBQUNVLFFBQW5CLENBQTRCRCxXQUE1QixDQUFMLEVBQStDO0FBQzdDLFVBQU0sSUFBSWxCLEtBQUosQ0FBVyxHQUFFYyxXQUFXLEdBQUcsV0FBSCxHQUFpQixhQUFjLHdDQUF1Q3RCLEdBQUksaUJBQXhGLEdBQ2IseUZBREcsQ0FBTjtBQUVEO0FBQ0Y7O0FBRUQsZUFBZTRCLFlBQWYsQ0FBNkJDLFlBQTdCLEVBQTJDO0FBQ3pDLFFBQU1DLElBQUksR0FBRyxNQUFNekIsZUFBTUMsY0FBTixDQUFxQnVCLFlBQXJCLENBQW5CO0FBQ0EsUUFBTUUsTUFBTSxHQUFHLEVBQWY7O0FBQ0EsT0FBSyxNQUFNLENBQUNDLEdBQUQsRUFBTUMsS0FBTixDQUFYLElBQTJCYixnQkFBRWMsT0FBRixDQUFVSixJQUFWLENBQTNCLEVBQTRDO0FBQzFDQyxJQUFBQSxNQUFNLENBQUNDLEdBQUQsQ0FBTixHQUFjWixnQkFBRWUsUUFBRixDQUFXRixLQUFYLElBQW9CQSxLQUFwQixHQUE0QmYsSUFBSSxDQUFDQyxTQUFMLENBQWVjLEtBQWYsQ0FBMUM7QUFDRDs7QUFDRCxTQUFPRixNQUFQO0FBQ0Q7O0FBRUQsZUFBZUssdUJBQWYsQ0FBd0NDLElBQXhDLEVBQThDO0FBQzVDLFFBQU07QUFDSnJDLElBQUFBLEdBREk7QUFFSnNDLElBQUFBLFFBQVEsR0FBRyxJQUZQO0FBR0pDLElBQUFBLHFCQUhJO0FBSUpDLElBQUFBLFVBSkk7QUFLSkMsSUFBQUE7QUFMSSxNQU1GSixJQU5KOztBQVFBLE1BQUksQ0FBQ3JDLEdBQUwsRUFBVTtBQUNSLFVBQU1VLE9BQU8sR0FBSSxvRUFBakI7O0FBQ0EsUUFBSStCLFVBQUosRUFBZ0I7QUFDZCxZQUFNLElBQUlqQyxLQUFKLENBQVVFLE9BQVYsQ0FBTjtBQUNEOztBQUNERyxvQkFBSTZCLElBQUosQ0FBU2hDLE9BQVQ7O0FBQ0EsV0FBTyxFQUFQO0FBQ0Q7O0FBRUQsTUFBSWlDLFNBQUo7O0FBQ0EsT0FBSyxNQUFNQyxTQUFYLElBQXdCLENBQUUsR0FBRU4sUUFBUyxRQUFiLEVBQXNCQyxxQkFBdEIsRUFBNkMsRUFBN0MsQ0FBeEIsRUFBMEU7QUFDeEVJLElBQUFBLFNBQVMsR0FBR3hDLGNBQUtDLE9BQUwsQ0FBYUosR0FBYixFQUFrQjRDLFNBQWxCLENBQVo7O0FBQ0EsUUFBSSxNQUFNQyxZQUFHQyxNQUFILENBQVVILFNBQVYsQ0FBVixFQUFnQztBQUM5QjtBQUNEOztBQUNELFVBQU1qQyxPQUFPLEdBQUksT0FBTWlDLFNBQVUsbUNBQWpDOztBQUNBLFFBQUlGLFVBQUosRUFBZ0I7QUFDZCxZQUFNLElBQUlqQyxLQUFKLENBQVVFLE9BQVYsQ0FBTjtBQUNEOztBQUNERyxvQkFBSUMsS0FBSixDQUFVSixPQUFWO0FBQ0Q7O0FBQ0RHLGtCQUFJNkIsSUFBSixDQUFVLHVDQUFzQ0MsU0FBVSxHQUExRDs7QUFFQSxRQUFNSSxhQUFhLEdBQUcsRUFBdEI7O0FBQ0EsTUFBSVAsVUFBSixFQUFnQjtBQUNkLFVBQU1RLE9BQU8sR0FBRzdDLGNBQUtDLE9BQUwsQ0FBYXVDLFNBQWIsRUFBd0JILFVBQXhCLENBQWhCOztBQUNBLFFBQUksTUFBTUssWUFBR0MsTUFBSCxDQUFVRSxPQUFWLENBQVYsRUFBOEI7QUFDNUJELE1BQUFBLGFBQWEsQ0FBQ0UsSUFBZCxDQUFtQkQsT0FBbkI7QUFDRCxLQUZELE1BRU87QUFDTCxZQUFNdEMsT0FBTyxHQUFJLE9BQU1zQyxPQUFRLHVDQUFzQ2hELEdBQUksR0FBekU7O0FBQ0EsVUFBSXlDLFVBQUosRUFBZ0I7QUFDZCxjQUFNLElBQUlqQyxLQUFKLENBQVVFLE9BQVYsQ0FBTjtBQUNEOztBQUNERyxzQkFBSTZCLElBQUosQ0FBU2hDLE9BQVQ7O0FBQ0FHLHNCQUFJNkIsSUFBSixDQUFVLDJDQUEwQ0MsU0FBVSxHQUE5RDtBQUNEO0FBQ0Y7O0FBRUQsTUFBSXZCLGdCQUFFOEIsT0FBRixDQUFVSCxhQUFWLE1BQTRCLE1BQU1GLFlBQUdDLE1BQUgsQ0FBVUgsU0FBVixDQUFsQyxDQUFKLEVBQTREO0FBQzFELFVBQU1RLGFBQWEsR0FBRyxDQUFDLE1BQU1OLFlBQUdPLE9BQUgsQ0FBV1QsU0FBWCxDQUFQLEVBQ25CVSxNQURtQixDQUNYQyxJQUFELElBQVVsQyxnQkFBRW1DLElBQUYsQ0FBTyxDQUFDekQsZ0JBQUQsRUFBbUJELG9CQUFuQixDQUFQLEVBQWtEMkQsQ0FBRCxJQUFPRixJQUFJLENBQUNHLFFBQUwsQ0FBY0QsQ0FBZCxDQUF4RCxDQURFLEVBRW5CRSxHQUZtQixDQUVkSixJQUFELElBQVVuRCxjQUFLQyxPQUFMLENBQWF1QyxTQUFiLEVBQXdCVyxJQUF4QixDQUZLLENBQXRCO0FBR0FQLElBQUFBLGFBQWEsQ0FBQ0UsSUFBZCxDQUFtQixHQUFHRSxhQUF0QjtBQUNEOztBQUNEdEMsa0JBQUk2QixJQUFKLENBQVUsT0FBTUssYUFBYSxDQUFDWSxNQUFPLHlCQUF3QmhCLFNBQVUsR0FBdkU7O0FBRUEsTUFBSXZCLGdCQUFFOEIsT0FBRixDQUFVSCxhQUFWLENBQUosRUFBOEI7QUFDNUIsV0FBTyxFQUFQO0FBQ0Q7O0FBRUQsUUFBTWEsYUFBYSxHQUFHLEVBQXRCOztBQUNBLFFBQU1DLGNBQWMsR0FBRyxVQUFVQyxDQUFWLEVBQWE7QUFDbEMsV0FBTzNELGNBQUs0RCxVQUFMLENBQWdCRCxDQUFoQixJQUFxQkEsQ0FBckIsR0FBeUIzRCxjQUFLQyxPQUFMLENBQWE0RCxPQUFPLENBQUNDLEdBQVIsRUFBYixFQUE0QkgsQ0FBNUIsQ0FBaEM7QUFDRCxHQUZEOztBQUdBLE9BQUssTUFBTWpDLFlBQVgsSUFBMkJrQixhQUEzQixFQUEwQztBQUN4QyxRQUFJLENBQUNtQixjQUFLQyxTQUFMLENBQWVOLGNBQWMsQ0FBQ2hDLFlBQUQsQ0FBN0IsRUFBNkNnQyxjQUFjLENBQUM3RCxHQUFELENBQTNELENBQUwsRUFBd0U7QUFFdEUsWUFBTSxJQUFJUSxLQUFKLENBQVcsSUFBR3FCLFlBQWEsc0NBQXFDN0IsR0FBSSxHQUFwRSxDQUFOO0FBQ0Q7O0FBQ0QsUUFBSTtBQUNGLFlBQU04QixJQUFJLEdBQUcsTUFBTUYsWUFBWSxDQUFDQyxZQUFELENBQS9COztBQUNBaEIsc0JBQUlDLEtBQUosQ0FBVyxVQUFTTSxnQkFBRWdELElBQUYsQ0FBT3RDLElBQVAsRUFBYTZCLE1BQU8sb0JBQW1COUIsWUFBYSxHQUF4RTs7QUFDQVQsc0JBQUVpRCxLQUFGLENBQVFULGFBQVIsRUFBdUI5QixJQUF2QjtBQUNELEtBSkQsQ0FJRSxPQUFPd0MsQ0FBUCxFQUFVO0FBQ1Z6RCxzQkFBSTBELElBQUosQ0FBVSxpQkFBZ0IxQyxZQUFhLCtCQUE4QnlDLENBQUMsQ0FBQzVELE9BQVEsRUFBL0U7QUFDRDtBQUNGOztBQUVERyxrQkFBSTZCLElBQUosQ0FBVSxPQUFNdEIsZ0JBQUVnRCxJQUFGLENBQU9SLGFBQVAsRUFBc0JELE1BQU8sb0JBQW1CaEIsU0FBVSxHQUExRTs7QUFDQSxTQUFPaUIsYUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgcGxpc3QsIGZzLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXIuanMnO1xuXG5jb25zdCBTVFJJTkdTRElDVF9SRVNPVVJDRSA9ICcuc3RyaW5nc2RpY3QnO1xuY29uc3QgU1RSSU5HU19SRVNPVVJDRSA9ICcuc3RyaW5ncyc7XG5cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFBsaXN0RW50cnkgKGFwcCwgZW50cnlOYW1lKSB7XG4gIGNvbnN0IHBsaXN0UGF0aCA9IHBhdGgucmVzb2x2ZShhcHAsICdJbmZvLnBsaXN0Jyk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChhd2FpdCBwbGlzdC5wYXJzZVBsaXN0RmlsZShwbGlzdFBhdGgpKVtlbnRyeU5hbWVdO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBleHRyYWN0IEluZm8ucGxpc3QgZnJvbSAnJHtwYXRoLmJhc2VuYW1lKGFwcCl9JzogJHtlcnIubWVzc2FnZX1gKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0QnVuZGxlSWQgKGFwcCkge1xuICBjb25zdCBidW5kbGVJZCA9IGF3YWl0IGV4dHJhY3RQbGlzdEVudHJ5KGFwcCwgJ0NGQnVuZGxlSWRlbnRpZmllcicpO1xuICBsb2cuZGVidWcoYEdldHRpbmcgYnVuZGxlIElEIGZyb20gYXBwICcke2FwcH0nOiAnJHtidW5kbGVJZH0nYCk7XG4gIHJldHVybiBidW5kbGVJZDtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBQbGF0Zm9ybU9wdHNcbiAqXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzU2ltdWxhdG9yIC0gV2hldGhlciB0aGUgZGVzdGluYXRpb24gcGxhdGZvcm0gaXMgYSBTaW11bGF0b3JcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNUdk9TIC0gV2hldGhlciB0aGUgZGVzdGluYXRpb24gcGxhdGZvcm0gaXMgYSBTaW11bGF0b3JcbiAqL1xuXG4vKipcbiAqIFZlcmlmeSB3aGV0aGVyIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiBpcyBjb21wYXRpYmxlIHRvIHRoZVxuICogcGxhdGZvcm0gd2hlcmUgaXQgaXMgZ29pbmcgdG8gYmUgaW5zdGFsbGVkIGFuZCB0ZXN0ZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcCAtIFRoZSBhY3R1YWwgcGF0aCB0byB0aGUgYXBwbGljYXRpb24gYnVuZGxlXG4gKiBAcGFyYW0ge1BsYXRmb3JtT3B0c30gZXhwZWN0ZWRQbGF0Zm9ybVxuICogQHRocm93cyB7RXJyb3J9IElmIGJ1bmRsZSBhcmNoaXRlY3R1cmUgZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGRldmljZSBhcmNoaXRlY3R1cmUuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeUFwcGxpY2F0aW9uUGxhdGZvcm0gKGFwcCwgZXhwZWN0ZWRQbGF0Zm9ybSkge1xuICBsb2cuZGVidWcoJ1ZlcmlmeWluZyBhcHBsaWNhdGlvbiBwbGF0Zm9ybScpO1xuXG4gIGxldCBzdXBwb3J0ZWRQbGF0Zm9ybXM7XG4gIHRyeSB7XG4gICAgc3VwcG9ydGVkUGxhdGZvcm1zID0gYXdhaXQgZXh0cmFjdFBsaXN0RW50cnkoYXBwLCAnQ0ZCdW5kbGVTdXBwb3J0ZWRQbGF0Zm9ybXMnKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLmRlYnVnKGVyci5tZXNzYWdlKTtcbiAgICByZXR1cm47XG4gIH1cbiAgbG9nLmRlYnVnKGBDRkJ1bmRsZVN1cHBvcnRlZFBsYXRmb3JtczogJHtKU09OLnN0cmluZ2lmeShzdXBwb3J0ZWRQbGF0Zm9ybXMpfWApO1xuICBpZiAoIV8uaXNBcnJheShzdXBwb3J0ZWRQbGF0Zm9ybXMpKSB7XG4gICAgbG9nLmRlYnVnKGBDRkJ1bmRsZVN1cHBvcnRlZFBsYXRmb3JtcyBrZXkgZG9lcyBub3QgZXhpc3QgaW4gJyR7cGF0aC5iYXNlbmFtZShhcHApfSdgKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7XG4gICAgaXNTaW11bGF0b3IsXG4gICAgaXNUdk9TLFxuICB9ID0gZXhwZWN0ZWRQbGF0Zm9ybTtcbiAgY29uc3QgcHJlZml4ID0gaXNUdk9TID8gJ0FwcGxlVFYnIDogJ2lQaG9uZSc7XG4gIGNvbnN0IHN1ZmZpeCA9IGlzU2ltdWxhdG9yID8gJ1NpbXVsYXRvcicgOiAnT1MnO1xuICBjb25zdCBkc3RQbGF0Zm9ybSA9IGAke3ByZWZpeH0ke3N1ZmZpeH1gO1xuICBpZiAoIXN1cHBvcnRlZFBsYXRmb3Jtcy5pbmNsdWRlcyhkc3RQbGF0Zm9ybSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7aXNTaW11bGF0b3IgPyAnU2ltdWxhdG9yJyA6ICdSZWFsIGRldmljZSd9IGFyY2hpdGVjdHVyZSBpcyB1bnN1cHBvcnRlZCBieSB0aGUgJyR7YXBwfScgYXBwbGljYXRpb24uIGAgK1xuICAgICAgYE1ha2Ugc3VyZSB0aGUgY29ycmVjdCBkZXBsb3ltZW50IHRhcmdldCBoYXMgYmVlbiBzZWxlY3RlZCBmb3IgaXRzIGNvbXBpbGF0aW9uIGluIFhjb2RlLmApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRSZXNvdXJjZSAocmVzb3VyY2VQYXRoKSB7XG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBwbGlzdC5wYXJzZVBsaXN0RmlsZShyZXNvdXJjZVBhdGgpO1xuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgXy50b1BhaXJzKGRhdGEpKSB7XG4gICAgcmVzdWx0W2tleV0gPSBfLmlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBhcnNlTG9jYWxpemFibGVTdHJpbmdzIChvcHRzKSB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbGFuZ3VhZ2UgPSAnZW4nLFxuICAgIGxvY2FsaXphYmxlU3RyaW5nc0RpcixcbiAgICBzdHJpbmdGaWxlLFxuICAgIHN0cmljdE1vZGUsXG4gIH0gPSBvcHRzO1xuXG4gIGlmICghYXBwKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGBTdHJpbmdzIGV4dHJhY3Rpb24gaXMgbm90IHN1cHBvcnRlZCBpZiAnYXBwJyBjYXBhYmlsaXR5IGlzIG5vdCBzZXRgO1xuICAgIGlmIChzdHJpY3RNb2RlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuICAgIGxvZy5pbmZvKG1lc3NhZ2UpO1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGxldCBscHJvalJvb3Q7XG4gIGZvciAoY29uc3Qgc3ViZm9sZGVyIG9mIFtgJHtsYW5ndWFnZX0ubHByb2pgLCBsb2NhbGl6YWJsZVN0cmluZ3NEaXIsICcnXSkge1xuICAgIGxwcm9qUm9vdCA9IHBhdGgucmVzb2x2ZShhcHAsIHN1YmZvbGRlcik7XG4gICAgaWYgKGF3YWl0IGZzLmV4aXN0cyhscHJvalJvb3QpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZSA9IGBObyAnJHtscHJvalJvb3R9JyByZXNvdXJjZXMgZm9sZGVyIGhhcyBiZWVuIGZvdW5kYDtcbiAgICBpZiAoc3RyaWN0TW9kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICBsb2cuZGVidWcobWVzc2FnZSk7XG4gIH1cbiAgbG9nLmluZm8oYFdpbGwgZXh0cmFjdCByZXNvdXJjZSBzdHJpbmdzIGZyb20gJyR7bHByb2pSb290fSdgKTtcblxuICBjb25zdCByZXNvdXJjZVBhdGhzID0gW107XG4gIGlmIChzdHJpbmdGaWxlKSB7XG4gICAgY29uc3QgZHN0UGF0aCA9IHBhdGgucmVzb2x2ZShscHJvalJvb3QsIHN0cmluZ0ZpbGUpO1xuICAgIGlmIChhd2FpdCBmcy5leGlzdHMoZHN0UGF0aCkpIHtcbiAgICAgIHJlc291cmNlUGF0aHMucHVzaChkc3RQYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBObyAnJHtkc3RQYXRofScgcmVzb3VyY2UgZmlsZSBoYXMgYmVlbiBmb3VuZCBmb3IgJyR7YXBwfSdgO1xuICAgICAgaWYgKHN0cmljdE1vZGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgbG9nLmluZm8obWVzc2FnZSk7XG4gICAgICBsb2cuaW5mbyhgR2V0dGluZyBhbGwgdGhlIGF2YWlsYWJsZSBzdHJpbmdzIGZyb20gJyR7bHByb2pSb290fSdgKTtcbiAgICB9XG4gIH1cblxuICBpZiAoXy5pc0VtcHR5KHJlc291cmNlUGF0aHMpICYmIGF3YWl0IGZzLmV4aXN0cyhscHJvalJvb3QpKSB7XG4gICAgY29uc3QgcmVzb3VyY2VGaWxlcyA9IChhd2FpdCBmcy5yZWFkZGlyKGxwcm9qUm9vdCkpXG4gICAgICAuZmlsdGVyKChuYW1lKSA9PiBfLnNvbWUoW1NUUklOR1NfUkVTT1VSQ0UsIFNUUklOR1NESUNUX1JFU09VUkNFXSwgKHgpID0+IG5hbWUuZW5kc1dpdGgoeCkpKVxuICAgICAgLm1hcCgobmFtZSkgPT4gcGF0aC5yZXNvbHZlKGxwcm9qUm9vdCwgbmFtZSkpO1xuICAgIHJlc291cmNlUGF0aHMucHVzaCguLi5yZXNvdXJjZUZpbGVzKTtcbiAgfVxuICBsb2cuaW5mbyhgR290ICR7cmVzb3VyY2VQYXRocy5sZW5ndGh9IHJlc291cmNlIGZpbGUocykgaW4gJyR7bHByb2pSb290fSdgKTtcblxuICBpZiAoXy5pc0VtcHR5KHJlc291cmNlUGF0aHMpKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgcmVzdWx0U3RyaW5ncyA9IHt9O1xuICBjb25zdCB0b0Fic29sdXRlUGF0aCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgcmV0dXJuIHBhdGguaXNBYnNvbHV0ZShwKSA/IHAgOiBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgcCk7XG4gIH07XG4gIGZvciAoY29uc3QgcmVzb3VyY2VQYXRoIG9mIHJlc291cmNlUGF0aHMpIHtcbiAgICBpZiAoIXV0aWwuaXNTdWJQYXRoKHRvQWJzb2x1dGVQYXRoKHJlc291cmNlUGF0aCksIHRvQWJzb2x1dGVQYXRoKGFwcCkpKSB7XG4gICAgICAvLyBzZWN1cml0eSBwcmVjYXV0aW9uXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke3Jlc291cmNlUGF0aH0nIGlzIGV4cGVjdGVkIHRvIGJlIGxvY2F0ZWQgdW5kZXIgJyR7YXBwfSdgKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZWFkUmVzb3VyY2UocmVzb3VyY2VQYXRoKTtcbiAgICAgIGxvZy5kZWJ1ZyhgUGFyc2VkICR7Xy5rZXlzKGRhdGEpLmxlbmd0aH0gc3RyaW5nKHMpIGZyb20gJyR7cmVzb3VyY2VQYXRofSdgKTtcbiAgICAgIF8ubWVyZ2UocmVzdWx0U3RyaW5ncywgZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nLndhcm4oYENhbm5vdCBwYXJzZSAnJHtyZXNvdXJjZVBhdGh9JyByZXNvdXJjZS4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIGxvZy5pbmZvKGBHb3QgJHtfLmtleXMocmVzdWx0U3RyaW5ncykubGVuZ3RofSBzdHJpbmcocykgZnJvbSAnJHtscHJvalJvb3R9J2ApO1xuICByZXR1cm4gcmVzdWx0U3RyaW5ncztcbn1cblxuZXhwb3J0IHsgZXh0cmFjdEJ1bmRsZUlkLCB2ZXJpZnlBcHBsaWNhdGlvblBsYXRmb3JtLCBwYXJzZUxvY2FsaXphYmxlU3RyaW5ncyB9O1xuIl0sImZpbGUiOiJsaWIvYXBwLXV0aWxzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
|
|
@@ -11,20 +11,22 @@ require("source-map-support/register");
|
|
|
11
11
|
|
|
12
12
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _support = require("@appium/support");
|
|
15
15
|
|
|
16
16
|
var _logger = _interopRequireDefault(require("../logger"));
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _baseDriver = require("@appium/base-driver");
|
|
19
19
|
|
|
20
20
|
var _appiumIosDevice = require("appium-ios-device");
|
|
21
21
|
|
|
22
|
+
var _pyIosDeviceClient = _interopRequireDefault(require("../py-ios-device-client"));
|
|
23
|
+
|
|
22
24
|
const commands = {};
|
|
23
25
|
|
|
24
26
|
function requireOptions(opts = {}, reqKeys = []) {
|
|
25
27
|
for (const key of reqKeys) {
|
|
26
28
|
if (!_lodash.default.isString(opts[key]) || _lodash.default.isEmpty(opts[key])) {
|
|
27
|
-
throw new
|
|
29
|
+
throw new _baseDriver.errors.InvalidArgumentError(`'${key}' is expected to be a valid string. '${opts[key]}' is given instead`);
|
|
28
30
|
}
|
|
29
31
|
}
|
|
30
32
|
|
|
@@ -41,7 +43,7 @@ commands.mobileInstallApp = async function mobileInstallApp(opts = {}) {
|
|
|
41
43
|
|
|
42
44
|
_logger.default.info(`Installing '${srcAppPath}' to the ${this.isRealDevice() ? 'real device' : 'Simulator'} ` + `with UDID '${this.opts.device.udid}'`);
|
|
43
45
|
|
|
44
|
-
if (!(await
|
|
46
|
+
if (!(await _support.fs.exists(srcAppPath))) {
|
|
45
47
|
_logger.default.errorAndThrow(`The application at '${srcAppPath}' does not exist or is not accessible`);
|
|
46
48
|
}
|
|
47
49
|
|
|
@@ -103,6 +105,35 @@ commands.mobileActivateApp = async function mobileActivateApp(opts = {}) {
|
|
|
103
105
|
return await this.proxyCommand('/wda/apps/activate', 'POST', requireOptions(opts, ['bundleId']));
|
|
104
106
|
};
|
|
105
107
|
|
|
108
|
+
commands.mobileKillApp = async function mobileKillApp(opts = {}) {
|
|
109
|
+
if (!this.isRealDevice()) {
|
|
110
|
+
throw new _baseDriver.errors.UnsupportedOperationError('A real device is required');
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const {
|
|
114
|
+
bundleId
|
|
115
|
+
} = requireOptions(opts, ['bundleId']);
|
|
116
|
+
|
|
117
|
+
try {
|
|
118
|
+
const {
|
|
119
|
+
stdout,
|
|
120
|
+
stderr
|
|
121
|
+
} = await new _pyIosDeviceClient.default(this.opts.device.udid).killApp(bundleId);
|
|
122
|
+
|
|
123
|
+
if ((stdout + stderr).includes('did not start')) {
|
|
124
|
+
_logger.default.info(`The bundle id '${bundleId}' did not start or it was already killed`);
|
|
125
|
+
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return true;
|
|
130
|
+
} catch (err) {
|
|
131
|
+
_logger.default.warn(`Failed to kill '${bundleId}'. Original error: ${err.stderr || err.message}`);
|
|
132
|
+
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
|
|
106
137
|
commands.mobileQueryAppState = async function mobileQueryAppState(opts = {}) {
|
|
107
138
|
return await this.proxyCommand('/wda/apps/state', 'POST', requireOptions(opts, ['bundleId']));
|
|
108
139
|
};
|
|
@@ -139,7 +170,7 @@ commands.queryAppState = async function queryAppState(bundleId) {
|
|
|
139
170
|
|
|
140
171
|
commands.mobileListApps = async function mobileListApps(opts = {}) {
|
|
141
172
|
if (!this.isRealDevice()) {
|
|
142
|
-
throw new
|
|
173
|
+
throw new _baseDriver.errors.NotImplementedError(`This extension is only supported on real devices`);
|
|
143
174
|
}
|
|
144
175
|
|
|
145
176
|
const {
|
|
@@ -160,4 +191,4 @@ var _default = commands;
|
|
|
160
191
|
exports.default = _default;require('source-map-support').install();
|
|
161
192
|
|
|
162
193
|
|
|
163
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9hcHAtbWFuYWdlbWVudC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsInJlcXVpcmVPcHRpb25zIiwib3B0cyIsInJlcUtleXMiLCJrZXkiLCJfIiwiaXNTdHJpbmciLCJpc0VtcHR5IiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJtb2JpbGVJbnN0YWxsQXBwIiwiYXBwIiwidGltZW91dE1zIiwic3RyYXRlZ3kiLCJzcmNBcHBQYXRoIiwiaGVscGVycyIsImNvbmZpZ3VyZUFwcCIsImxvZyIsImluZm8iLCJpc1JlYWxEZXZpY2UiLCJkZXZpY2UiLCJ1ZGlkIiwiZnMiLCJleGlzdHMiLCJlcnJvckFuZFRocm93IiwiaW5zdGFsbEFwcCIsImFwcFB1c2hUaW1lb3V0IiwiYXBwSW5zdGFsbFN0cmF0ZWd5IiwibW9iaWxlSXNBcHBJbnN0YWxsZWQiLCJidW5kbGVJZCIsImluc3RhbGxlZCIsImlzQXBwSW5zdGFsbGVkIiwibW9iaWxlUmVtb3ZlQXBwIiwicmVtb3ZlQXBwIiwiZXJyIiwid2FybiIsIm1lc3NhZ2UiLCJtb2JpbGVMYXVuY2hBcHAiLCJsYXVuY2hPcHRpb25zIiwiYXJndW1lbnRzIiwiaXNBcnJheSIsImVudmlyb25tZW50IiwicHJveHlDb21tYW5kIiwibW9iaWxlVGVybWluYXRlQXBwIiwibW9iaWxlQWN0aXZhdGVBcHAiLCJtb2JpbGVRdWVyeUFwcFN0YXRlIiwiYXBwUGF0aCIsImlzUGxhaW5PYmplY3QiLCJhY3RpdmF0ZUFwcCIsIk9iamVjdCIsImFzc2lnbiIsInRlcm1pbmF0ZUFwcCIsInF1ZXJ5QXBwU3RhdGUiLCJtb2JpbGVMaXN0QXBwcyIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJhcHBsaWNhdGlvblR5cGUiLCJzZXJ2aWNlIiwic2VydmljZXMiLCJzdGFydEluc3RhbGxhdGlvblByb3h5U2VydmljZSIsImxpc3RBcHBsaWNhdGlvbnMiLCJjbG9zZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7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RixRQUEvQixFQUF5QztBQUNqRSxTQUFPLE1BQU0sS0FBS0Qsb0JBQUwsQ0FBMEI7QUFBQ0MsSUFBQUE7QUFBRCxHQUExQixDQUFiO0FBQ0QsQ0FGRDs7QUFJQTdCLFFBQVEsQ0FBQ21ELFlBQVQsR0FBd0IsZUFBZUEsWUFBZixDQUE2QnRCLFFBQTdCLEVBQXVDO0FBQzdELFNBQU8sTUFBTSxLQUFLYyxrQkFBTCxDQUF3QjtBQUFDZCxJQUFBQTtBQUFELEdBQXhCLENBQWI7QUFDRCxDQUZEOztBQUlBN0IsUUFBUSxDQUFDb0QsYUFBVCxHQUF5QixlQUFlQSxhQUFmLENBQThCdkIsUUFBOUIsRUFBd0M7QUFDL0QsU0FBTyxNQUFNLEtBQUtnQixtQkFBTCxDQUF5QjtBQUFDaEIsSUFBQUE7QUFBRCxHQUF6QixDQUFiO0FBQ0QsQ0FGRDs7QUFnQkE3QixRQUFRLENBQUNxRCxjQUFULEdBQTBCLGVBQWVBLGNBQWYsQ0FBK0JuRCxJQUFJLEdBQUcsRUFBdEMsRUFBMEM7QUFDbEUsTUFBSSxDQUFDLEtBQUtpQixZQUFMLEVBQUwsRUFBMEI7QUFDeEIsVUFBTSxJQUFJWCx5QkFBTzhDLG1CQUFYLENBQWdDLGtEQUFoQyxDQUFOO0FBQ0Q7O0FBRUQsUUFBTTtBQUNKQyxJQUFBQSxlQUFlLEdBQUc7QUFEZCxNQUVGckQsSUFGSjtBQUdBLFFBQU1zRCxPQUFPLEdBQUcsTUFBTUMsMEJBQVNDLDZCQUFULENBQXVDLEtBQUt4RCxJQUFMLENBQVVrQixNQUFWLENBQWlCQyxJQUF4RCxDQUF0Qjs7QUFDQSxNQUFJO0FBQ0YsV0FBTyxNQUFNbUMsT0FBTyxDQUFDRyxnQkFBUixDQUF5QjtBQUFDSixNQUFBQTtBQUFELEtBQXpCLENBQWI7QUFDRCxHQUZELFNBRVU7QUFDUkMsSUFBQUEsT0FBTyxDQUFDSSxLQUFSO0FBQ0Q7QUFDRixDQWREOztlQWdCZTVELFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0tYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgc2VydmljZXMgfSBmcm9tICdhcHBpdW0taW9zLWRldmljZSc7XG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbmZ1bmN0aW9uIHJlcXVpcmVPcHRpb25zIChvcHRzID0ge30sIHJlcUtleXMgPSBbXSkge1xuICBmb3IgKGNvbnN0IGtleSBvZiByZXFLZXlzKSB7XG4gICAgaWYgKCFfLmlzU3RyaW5nKG9wdHNba2V5XSkgfHwgXy5pc0VtcHR5KG9wdHNba2V5XSkpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAgIGAnJHtrZXl9JyBpcyBleHBlY3RlZCB0byBiZSBhIHZhbGlkIHN0cmluZy4gJyR7b3B0c1trZXldfScgaXMgZ2l2ZW4gaW5zdGVhZGBcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvcHRzO1xufVxuXG5jb21tYW5kcy5tb2JpbGVJbnN0YWxsQXBwID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlSW5zdGFsbEFwcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHsgYXBwLCB0aW1lb3V0TXMsIHN0cmF0ZWd5IH0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2FwcCddKTtcbiAgY29uc3Qgc3JjQXBwUGF0aCA9IGF3YWl0IHRoaXMuaGVscGVycy5jb25maWd1cmVBcHAoYXBwLCAnLmFwcCcpO1xuICBsb2cuaW5mbyhgSW5zdGFsbGluZyAnJHtzcmNBcHBQYXRofScgdG8gdGhlICR7dGhpcy5pc1JlYWxEZXZpY2UoKSA/ICdyZWFsIGRldmljZScgOiAnU2ltdWxhdG9yJ30gYCArXG4gICAgYHdpdGggVURJRCAnJHt0aGlzLm9wdHMuZGV2aWNlLnVkaWR9J2ApO1xuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhzcmNBcHBQYXRoKSkge1xuICAgIGxvZy5lcnJvckFuZFRocm93KGBUaGUgYXBwbGljYXRpb24gYXQgJyR7c3JjQXBwUGF0aH0nIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhY2Nlc3NpYmxlYCk7XG4gIH1cbiAgYXdhaXQgdGhpcy5vcHRzLmRldmljZS5pbnN0YWxsQXBwKFxuICAgIHNyY0FwcFBhdGgsIHRpbWVvdXRNcyA/PyB0aGlzLm9wdHMuYXBwUHVzaFRpbWVvdXQsIHN0cmF0ZWd5ID8/IHRoaXMub3B0cy5hcHBJbnN0YWxsU3RyYXRlZ3lcbiAgKTtcbiAgbG9nLmluZm8oYEluc3RhbGxhdGlvbiBvZiAnJHtzcmNBcHBQYXRofScgc3VjY2VlZGVkYCk7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVJc0FwcEluc3RhbGxlZCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUlzQXBwSW5zdGFsbGVkIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2J1bmRsZUlkfSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYnVuZGxlSWQnXSk7XG4gIGNvbnN0IGluc3RhbGxlZCA9IGF3YWl0IHRoaXMub3B0cy5kZXZpY2UuaXNBcHBJbnN0YWxsZWQoYnVuZGxlSWQpO1xuICBsb2cuaW5mbyhgQXBwICcke2J1bmRsZUlkfScgaXMke2luc3RhbGxlZCA/ICcnIDogJyBub3QnfSBpbnN0YWxsZWRgKTtcbiAgcmV0dXJuIGluc3RhbGxlZDtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVJlbW92ZUFwcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVJlbW92ZUFwcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtidW5kbGVJZH0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2J1bmRsZUlkJ10pO1xuICBsb2cuaW5mbyhgVW5pbnN0YWxsaW5nIHRoZSBhcHBsaWNhdGlvbiB3aXRoIGJ1bmRsZSBpZGVudGlmaWVyICcke2J1bmRsZUlkfScgYCArXG4gICAgYGZyb20gdGhlICR7dGhpcy5pc1JlYWxEZXZpY2UoKSA/ICdyZWFsIGRldmljZScgOiAnU2ltdWxhdG9yJ30gd2l0aCBVRElEICcke3RoaXMub3B0cy5kZXZpY2UudWRpZH0nYCk7XG4gIHRyeSB7XG4gICAgYXdhaXQgdGhpcy5vcHRzLmRldmljZS5yZW1vdmVBcHAoYnVuZGxlSWQpO1xuICAgIGxvZy5pbmZvKGBSZW1vdmFsIG9mICcke2J1bmRsZUlkfScgc3VjY2VlZGVkYCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy53YXJuKGBDYW5ub3QgcmVtb3ZlICcke2J1bmRsZUlkfScuIE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuY29tbWFuZHMubW9iaWxlTGF1bmNoQXBwID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlTGF1bmNoQXBwIChvcHRzID0ge30pIHtcbiAgY29uc3QgbGF1bmNoT3B0aW9ucyA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYnVuZGxlSWQnXSk7XG4gIGlmIChvcHRzLmFyZ3VtZW50cykge1xuICAgIGxhdW5jaE9wdGlvbnMuYXJndW1lbnRzID0gXy5pc0FycmF5KG9wdHMuYXJndW1lbnRzKSA/IG9wdHMuYXJndW1lbnRzIDogW29wdHMuYXJndW1lbnRzXTtcbiAgfVxuICBpZiAob3B0cy5lbnZpcm9ubWVudCkge1xuICAgIGxhdW5jaE9wdGlvbnMuZW52aXJvbm1lbnQgPSBvcHRzLmVudmlyb25tZW50O1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS9hcHBzL2xhdW5jaCcsICdQT1NUJywgbGF1bmNoT3B0aW9ucyk7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVUZXJtaW5hdGVBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVUZXJtaW5hdGVBcHAgKG9wdHMgPSB7fSkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvYXBwcy90ZXJtaW5hdGUnLCAnUE9TVCcsIHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYnVuZGxlSWQnXSkpO1xufTtcblxuY29tbWFuZHMubW9iaWxlQWN0aXZhdGVBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVBY3RpdmF0ZUFwcCAob3B0cyA9IHt9KSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS9hcHBzL2FjdGl2YXRlJywgJ1BPU1QnLCByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2J1bmRsZUlkJ10pKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBzdGF0ZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gT3B0aW9ucyBzZXQsIHdoaWNoIG11c3QgY29udGFpbiBgYnVuZGxlSWRgIHByb3BlcnR5XG4gKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgYWN0dWFsIGFwcGxpY2F0aW9uIHN0YXRlIGNvZGUuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlhcHBsaWNhdGlvbnN0YXRlP2xhbmd1YWdlPW9iamNcbiAqIHRvIGdldCB0aGUgbGlzdCBvZiBwb3NzaWJsZSB2YWx1ZXMuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVF1ZXJ5QXBwU3RhdGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVRdWVyeUFwcFN0YXRlIChvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvd2RhL2FwcHMvc3RhdGUnLCAnUE9TVCcsIHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYnVuZGxlSWQnXSkpO1xufTtcblxuY29tbWFuZHMuaW5zdGFsbEFwcCA9IGFzeW5jIGZ1bmN0aW9uIGluc3RhbGxBcHAgKGFwcFBhdGgsIG9wdHMgPSB7fSkge1xuICBhd2FpdCB0aGlzLm1vYmlsZUluc3RhbGxBcHAoe1xuICAgIC4uLihfLmlzUGxhaW5PYmplY3Qob3B0cykgPyBvcHRzIDoge30pLFxuICAgIGFwcDogYXBwUGF0aCxcbiAgfSk7XG59O1xuXG5jb21tYW5kcy5hY3RpdmF0ZUFwcCA9IGFzeW5jIGZ1bmN0aW9uIGFjdGl2YXRlQXBwIChidW5kbGVJZCwgb3B0cyA9IHt9KSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLm1vYmlsZUxhdW5jaEFwcChPYmplY3QuYXNzaWduKHt9LCBvcHRzLCB7YnVuZGxlSWR9KSk7XG59O1xuXG5jb21tYW5kcy5pc0FwcEluc3RhbGxlZCA9IGFzeW5jIGZ1bmN0aW9uIGlzQXBwSW5zdGFsbGVkIChidW5kbGVJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5tb2JpbGVJc0FwcEluc3RhbGxlZCh7YnVuZGxlSWR9KTtcbn07XG5cbmNvbW1hbmRzLnRlcm1pbmF0ZUFwcCA9IGFzeW5jIGZ1bmN0aW9uIHRlcm1pbmF0ZUFwcCAoYnVuZGxlSWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMubW9iaWxlVGVybWluYXRlQXBwKHtidW5kbGVJZH0pO1xufTtcblxuY29tbWFuZHMucXVlcnlBcHBTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwU3RhdGUgKGJ1bmRsZUlkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLm1vYmlsZVF1ZXJ5QXBwU3RhdGUoe2J1bmRsZUlkfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IExpc3RBcHBzT3B0aW9uc1xuICogQHByb3BlcnR5IHsnU3lzdGVtJ3wnVXNlcid9IGFwcGxpY2F0aW9uVHlwZSBbVXNlcl0gVGhlIHR5cGUgb2YgYXBwbGljYXRpb25zIHRvIGxpc3RcbiAqL1xuXG4vKipcbiAqIExpc3QgYXBwbGljYXRpb25zIGluc3RhbGxlZCBvbiB0aGUgcmVhbCBkZXZpY2UgdW5kZXIgdGVzdFxuICpcbiAqIEBwYXJhbSB7TGlzdEFwcHNPcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJucyB7QXJyYXk8T2JqZWN0Pn0gQSBsaXN0IG9mIGFwcHMsIHdoZXJlIGVhY2ggaXRlbSBpcyBhIG1hcCB3aGVyZSBrZXlzIGFyZVxuICogYnVuZGxlIGlkZW50aWZpZXJzIGFuZCB2YWx1ZXMgYXJlIG1hcHMgb2YgcGxhdGZvcm0tc3BlY2lmaWMgYXBwIHByb3BlcnRpZXMuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUxpc3RBcHBzID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlTGlzdEFwcHMgKG9wdHMgPSB7fSkge1xuICBpZiAoIXRoaXMuaXNSZWFsRGV2aWNlKCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoYFRoaXMgZXh0ZW5zaW9uIGlzIG9ubHkgc3VwcG9ydGVkIG9uIHJlYWwgZGV2aWNlc2ApO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGFwcGxpY2F0aW9uVHlwZSA9ICdVc2VyJyxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCBzZXJ2aWNlcy5zdGFydEluc3RhbGxhdGlvblByb3h5U2VydmljZSh0aGlzLm9wdHMuZGV2aWNlLnVkaWQpO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBzZXJ2aWNlLmxpc3RBcHBsaWNhdGlvbnMoe2FwcGxpY2F0aW9uVHlwZX0pO1xuICB9IGZpbmFsbHkge1xuICAgIHNlcnZpY2UuY2xvc2UoKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9hcHAtbWFuYWdlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
194
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9hcHAtbWFuYWdlbWVudC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsInJlcXVpcmVPcHRpb25zIiwib3B0cyIsInJlcUtleXMiLCJrZXkiLCJfIiwiaXNTdHJpbmciLCJpc0VtcHR5IiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJtb2JpbGVJbnN0YWxsQXBwIiwiYXBwIiwidGltZW91dE1zIiwic3RyYXRlZ3kiLCJzcmNBcHBQYXRoIiwiaGVscGVycyIsImNvbmZpZ3VyZUFwcCIsImxvZyIsImluZm8iLCJpc1JlYWxEZXZpY2UiLCJkZXZpY2UiLCJ1ZGlkIiwiZnMiLCJleGlzdHMiLCJlcnJvckFuZFRocm93IiwiaW5zdGFsbEFwcCIsImFwcFB1c2hUaW1lb3V0IiwiYXBwSW5zdGFsbFN0cmF0ZWd5IiwibW9iaWxlSXNBcHBJbnN0YWxsZWQiLCJidW5kbGVJZCIsImluc3RhbGxlZCIsImlzQXBwSW5zdGFsbGVkIiwibW9iaWxlUmVtb3ZlQXBwIiwicmVtb3ZlQXBwIiwiZXJyIiwid2FybiIsIm1lc3NhZ2UiLCJtb2JpbGVMYXVuY2hBcHAiLCJsYXVuY2hPcHRpb25zIiwiYXJndW1lbnRzIiwiaXNBcnJheSIsImVudmlyb25tZW50IiwicHJveHlDb21tYW5kIiwibW9iaWxlVGVybWluYXRlQXBwIiwibW9iaWxlQWN0aXZhdGVBcHAiLCJtb2JpbGVLaWxsQXBwIiwiVW5zdXBwb3J0ZWRPcGVyYXRpb25FcnJvciIsInN0ZG91dCIsInN0ZGVyciIsIlB5aWRldmljZSIsImtpbGxBcHAiLCJpbmNsdWRlcyIsIm1vYmlsZVF1ZXJ5QXBwU3RhdGUiLCJhcHBQYXRoIiwiaXNQbGFpbk9iamVjdCIsImFjdGl2YXRlQXBwIiwiT2JqZWN0IiwiYXNzaWduIiwidGVybWluYXRlQXBwIiwicXVlcnlBcHBTdGF0ZSIsIm1vYmlsZUxpc3RBcHBzIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsImFwcGxpY2F0aW9uVHlwZSIsInNlcnZpY2UiLCJzZXJ2aWNlcyIsInN0YXJ0SW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlIiwibGlzdEFwcGxpY2F0aW9ucyIsImNsb3NlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjs7QUFFQSxTQUFTQyxjQUFULENBQXlCQyxJQUFJLEdBQUcsRUFBaEMsRUFBb0NDLE9BQU8sR0FBRyxFQUE5QyxFQUFrRDtBQUNoRCxPQUFLLE1BQU1DLEdBQVgsSUFBa0JELE9BQWxCLEVBQTJCO0FBQ3pCLFFBQUksQ0FBQ0UsZ0JBQUVDLFFBQUYsQ0FBV0osSUFBSSxDQUFDRSxHQUFELENBQWYsQ0FBRCxJQUEwQkMsZ0JBQUVFLE9BQUYsQ0FBVUwsSUFBSSxDQUFDRSxHQUFELENBQWQsQ0FBOUIsRUFBb0Q7QUFDbEQsWUFBTSxJQUFJSSxtQkFBT0Msb0JBQVgsQ0FDSCxJQUFHTCxHQUFJLHdDQUF1Q0YsSUFBSSxDQUFDRSxHQUFELENBQU0sb0JBRHJELENBQU47QUFHRDtBQUNGOztBQUNELFNBQU9GLElBQVA7QUFDRDs7QUFFREYsUUFBUSxDQUFDVSxnQkFBVCxHQUE0QixlQUFlQSxnQkFBZixDQUFpQ1IsSUFBSSxHQUFHLEVBQXhDLEVBQTRDO0FBQ3RFLFFBQU07QUFBRVMsSUFBQUEsR0FBRjtBQUFPQyxJQUFBQSxTQUFQO0FBQWtCQyxJQUFBQTtBQUFsQixNQUErQlosY0FBYyxDQUFDQyxJQUFELEVBQU8sQ0FBQyxLQUFELENBQVAsQ0FBbkQ7QUFDQSxRQUFNWSxVQUFVLEdBQUcsTUFBTSxLQUFLQyxPQUFMLENBQWFDLFlBQWIsQ0FBMEJMLEdBQTFCLEVBQStCLE1BQS9CLENBQXpCOztBQUNBTSxrQkFBSUMsSUFBSixDQUFVLGVBQWNKLFVBQVcsWUFBVyxLQUFLSyxZQUFMLEtBQXNCLGFBQXRCLEdBQXNDLFdBQVksR0FBdkYsR0FDTixjQUFhLEtBQUtqQixJQUFMLENBQVVrQixNQUFWLENBQWlCQyxJQUFLLEdBRHRD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QUFRLENBQUMwRCxZQUFULEdBQXdCLGVBQWVBLFlBQWYsQ0FBNkI3QixRQUE3QixFQUF1QztBQUM3RCxTQUFPLE1BQU0sS0FBS2Msa0JBQUwsQ0FBd0I7QUFBQ2QsSUFBQUE7QUFBRCxHQUF4QixDQUFiO0FBQ0QsQ0FGRDs7QUFJQTdCLFFBQVEsQ0FBQzJELGFBQVQsR0FBeUIsZUFBZUEsYUFBZixDQUE4QjlCLFFBQTlCLEVBQXdDO0FBQy9ELFNBQU8sTUFBTSxLQUFLdUIsbUJBQUwsQ0FBeUI7QUFBQ3ZCLElBQUFBO0FBQUQsR0FBekIsQ0FBYjtBQUNELENBRkQ7O0FBZ0JBN0IsUUFBUSxDQUFDNEQsY0FBVCxHQUEwQixlQUFlQSxjQUFmLENBQStCMUQsSUFBSSxHQUFHLEVBQXRDLEVBQTBDO0FBQ2xFLE1BQUksQ0FBQyxLQUFLaUIsWUFBTCxFQUFMLEVBQTBCO0FBQ3hCLFVBQU0sSUFBSVgsbUJBQU9xRCxtQkFBWCxDQUFnQyxrREFBaEMsQ0FBTjtBQUNEOztBQUVELFFBQU07QUFDSkMsSUFBQUEsZUFBZSxHQUFHO0FBRGQsTUFFRjVELElBRko7QUFHQSxRQUFNNkQsT0FBTyxHQUFHLE1BQU1DLDBCQUFTQyw2QkFBVCxDQUF1QyxLQUFLL0QsSUFBTCxDQUFVa0IsTUFBVixDQUFpQkMsSUFBeEQsQ0FBdEI7O0FBQ0EsTUFBSTtBQUNGLFdBQU8sTUFBTTBDLE9BQU8sQ0FBQ0csZ0JBQVIsQ0FBeUI7QUFBQ0osTUFBQUE7QUFBRCxLQUF6QixDQUFiO0FBQ0QsR0FGRCxTQUVVO0FBQ1JDLElBQUFBLE9BQU8sQ0FBQ0ksS0FBUjtBQUNEO0FBQ0YsQ0FkRDs7ZUFnQmVuRSxRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgc2VydmljZXMgfSBmcm9tICdhcHBpdW0taW9zLWRldmljZSc7XG5pbXBvcnQgUHlpZGV2aWNlIGZyb20gJy4uL3B5LWlvcy1kZXZpY2UtY2xpZW50JztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuZnVuY3Rpb24gcmVxdWlyZU9wdGlvbnMgKG9wdHMgPSB7fSwgcmVxS2V5cyA9IFtdKSB7XG4gIGZvciAoY29uc3Qga2V5IG9mIHJlcUtleXMpIHtcbiAgICBpZiAoIV8uaXNTdHJpbmcob3B0c1trZXldKSB8fCBfLmlzRW1wdHkob3B0c1trZXldKSkge1xuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgYCcke2tleX0nIGlzIGV4cGVjdGVkIHRvIGJlIGEgdmFsaWQgc3RyaW5nLiAnJHtvcHRzW2tleV19JyBpcyBnaXZlbiBpbnN0ZWFkYFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9wdHM7XG59XG5cbmNvbW1hbmRzLm1vYmlsZUluc3RhbGxBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVJbnN0YWxsQXBwIChvcHRzID0ge30pIHtcbiAgY29uc3QgeyBhcHAsIHRpbWVvdXRNcywgc3RyYXRlZ3kgfSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYXBwJ10pO1xuICBjb25zdCBzcmNBcHBQYXRoID0gYXdhaXQgdGhpcy5oZWxwZXJzLmNvbmZpZ3VyZUFwcChhcHAsICcuYXBwJyk7XG4gIGxvZy5pbmZvKGBJbnN0YWxsaW5nICcke3NyY0FwcFBhdGh9JyB0byB0aGUgJHt0aGlzLmlzUmVhbERldmljZSgpID8gJ3JlYWwgZGV2aWNlJyA6ICdTaW11bGF0b3InfSBgICtcbiAgICBgd2l0aCBVRElEICcke3RoaXMub3B0cy5kZXZpY2UudWRpZH0nYCk7XG4gIGlmICghYXdhaXQgZnMuZXhpc3RzKHNyY0FwcFBhdGgpKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coYFRoZSBhcHBsaWNhdGlvbiBhdCAnJHtzcmNBcHBQYXRofScgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGFjY2Vzc2libGVgKTtcbiAgfVxuICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLmluc3RhbGxBcHAoXG4gICAgc3JjQXBwUGF0aCwgdGltZW91dE1zID8/IHRoaXMub3B0cy5hcHBQdXNoVGltZW91dCwgc3RyYXRlZ3kgPz8gdGhpcy5vcHRzLmFwcEluc3RhbGxTdHJhdGVneVxuICApO1xuICBsb2cuaW5mbyhgSW5zdGFsbGF0aW9uIG9mICcke3NyY0FwcFBhdGh9JyBzdWNjZWVkZWRgKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZUlzQXBwSW5zdGFsbGVkID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlSXNBcHBJbnN0YWxsZWQgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7YnVuZGxlSWR9ID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydidW5kbGVJZCddKTtcbiAgY29uc3QgaW5zdGFsbGVkID0gYXdhaXQgdGhpcy5vcHRzLmRldmljZS5pc0FwcEluc3RhbGxlZChidW5kbGVJZCk7XG4gIGxvZy5pbmZvKGBBcHAgJyR7YnVuZGxlSWR9JyBpcyR7aW5zdGFsbGVkID8gJycgOiAnIG5vdCd9IGluc3RhbGxlZGApO1xuICByZXR1cm4gaW5zdGFsbGVkO1xufTtcblxuY29tbWFuZHMubW9iaWxlUmVtb3ZlQXBwID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlUmVtb3ZlQXBwIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2J1bmRsZUlkfSA9IHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYnVuZGxlSWQnXSk7XG4gIGxvZy5pbmZvKGBVbmluc3RhbGxpbmcgdGhlIGFwcGxpY2F0aW9uIHdpdGggYnVuZGxlIGlkZW50aWZpZXIgJyR7YnVuZGxlSWR9JyBgICtcbiAgICBgZnJvbSB0aGUgJHt0aGlzLmlzUmVhbERldmljZSgpID8gJ3JlYWwgZGV2aWNlJyA6ICdTaW11bGF0b3InfSB3aXRoIFVESUQgJyR7dGhpcy5vcHRzLmRldmljZS51ZGlkfSdgKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLnJlbW92ZUFwcChidW5kbGVJZCk7XG4gICAgbG9nLmluZm8oYFJlbW92YWwgb2YgJyR7YnVuZGxlSWR9JyBzdWNjZWVkZWRgKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLndhcm4oYENhbm5vdCByZW1vdmUgJyR7YnVuZGxlSWR9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5jb21tYW5kcy5tb2JpbGVMYXVuY2hBcHAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVMYXVuY2hBcHAgKG9wdHMgPSB7fSkge1xuICBjb25zdCBsYXVuY2hPcHRpb25zID0gcmVxdWlyZU9wdGlvbnMob3B0cywgWydidW5kbGVJZCddKTtcbiAgaWYgKG9wdHMuYXJndW1lbnRzKSB7XG4gICAgbGF1bmNoT3B0aW9ucy5hcmd1bWVudHMgPSBfLmlzQXJyYXkob3B0cy5hcmd1bWVudHMpID8gb3B0cy5hcmd1bWVudHMgOiBbb3B0cy5hcmd1bWVudHNdO1xuICB9XG4gIGlmIChvcHRzLmVudmlyb25tZW50KSB7XG4gICAgbGF1bmNoT3B0aW9ucy5lbnZpcm9ubWVudCA9IG9wdHMuZW52aXJvbm1lbnQ7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvd2RhL2FwcHMvbGF1bmNoJywgJ1BPU1QnLCBsYXVuY2hPcHRpb25zKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVRlcm1pbmF0ZUFwcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVRlcm1pbmF0ZUFwcCAob3B0cyA9IHt9KSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3dkYS9hcHBzL3Rlcm1pbmF0ZScsICdQT1NUJywgcmVxdWlyZU9wdGlvbnMob3B0cywgWydidW5kbGVJZCddKSk7XG59O1xuXG5jb21tYW5kcy5tb2JpbGVBY3RpdmF0ZUFwcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUFjdGl2YXRlQXBwIChvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvd2RhL2FwcHMvYWN0aXZhdGUnLCAnUE9TVCcsIHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYnVuZGxlSWQnXSkpO1xufTtcblxuLyoqXG4gKiBLaWxsIHRoZSBnaXZlbiBidW5kbGUgaWQgcHJvY2VzcyB2aWEgaW5zdHJ1bWVudHMgc2VydmljZS5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ZdWVDaGVuLUMvcHktaW9zLWRldmljZS9ibG9iLzUxZjQ2ODNjNWMzYzM4NWEwMTU4NThhZGEwN2E1ZjFjNjJkM2NmNTcvaW9zX2RldmljZS9jbGkvYmFzZS5weSNMMjIwXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBPcHRpb25zIHNldCwgd2hpY2ggbXVzdCBjb250YWluIGBidW5kbGVJZGAgcHJvcGVydHlcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIHRydWUgaWYgdGhlIGJ1bmRsZSBpZCBwcm9jZXNzIHdhcyBraWxsZWQuIE90aGVyd2lzZSBmYWxzZS5cbiAqL1xuY29tbWFuZHMubW9iaWxlS2lsbEFwcCA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUtpbGxBcHAgKG9wdHMgPSB7fSkge1xuICBpZiAoIXRoaXMuaXNSZWFsRGV2aWNlKCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXJyb3IoJ0EgcmVhbCBkZXZpY2UgaXMgcmVxdWlyZWQnKTtcbiAgfVxuXG4gIGNvbnN0IHtidW5kbGVJZH0gPSByZXF1aXJlT3B0aW9ucyhvcHRzLCBbJ2J1bmRsZUlkJ10pO1xuICB0cnkge1xuICAgIC8vIFRPRE86IGV2ZW50dWFsbHkgd2UnZCBsaWtlIHRvIGNhbGwgdGhlIGluc3RydW1lbnRzIGtpbGwgbWV0aG9kIHZpYSBhcHBpdW0taW9zLWRldmljZS5cbiAgICBjb25zdCB7c3Rkb3V0LCBzdGRlcnJ9ID0gYXdhaXQgbmV3IFB5aWRldmljZSh0aGlzLm9wdHMuZGV2aWNlLnVkaWQpLmtpbGxBcHAoYnVuZGxlSWQpO1xuICAgIGlmICgoc3Rkb3V0ICsgc3RkZXJyKS5pbmNsdWRlcygnZGlkIG5vdCBzdGFydCcpKSB7XG4gICAgICBsb2cuaW5mbyhgVGhlIGJ1bmRsZSBpZCAnJHtidW5kbGVJZH0nIGRpZCBub3Qgc3RhcnQgb3IgaXQgd2FzIGFscmVhZHkga2lsbGVkYCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cud2FybihgRmFpbGVkIHRvIGtpbGwgJyR7YnVuZGxlSWR9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLnN0ZGVyciB8fCBlcnIubWVzc2FnZX1gKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBzdGF0ZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gT3B0aW9ucyBzZXQsIHdoaWNoIG11c3QgY29udGFpbiBgYnVuZGxlSWRgIHByb3BlcnR5XG4gKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgYWN0dWFsIGFwcGxpY2F0aW9uIHN0YXRlIGNvZGUuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlhcHBsaWNhdGlvbnN0YXRlP2xhbmd1YWdlPW9iamNcbiAqIHRvIGdldCB0aGUgbGlzdCBvZiBwb3NzaWJsZSB2YWx1ZXMuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVF1ZXJ5QXBwU3RhdGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVRdWVyeUFwcFN0YXRlIChvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvd2RhL2FwcHMvc3RhdGUnLCAnUE9TVCcsIHJlcXVpcmVPcHRpb25zKG9wdHMsIFsnYnVuZGxlSWQnXSkpO1xufTtcblxuY29tbWFuZHMuaW5zdGFsbEFwcCA9IGFzeW5jIGZ1bmN0aW9uIGluc3RhbGxBcHAgKGFwcFBhdGgsIG9wdHMgPSB7fSkge1xuICBhd2FpdCB0aGlzLm1vYmlsZUluc3RhbGxBcHAoe1xuICAgIC4uLihfLmlzUGxhaW5PYmplY3Qob3B0cykgPyBvcHRzIDoge30pLFxuICAgIGFwcDogYXBwUGF0aCxcbiAgfSk7XG59O1xuXG5jb21tYW5kcy5hY3RpdmF0ZUFwcCA9IGFzeW5jIGZ1bmN0aW9uIGFjdGl2YXRlQXBwIChidW5kbGVJZCwgb3B0cyA9IHt9KSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLm1vYmlsZUxhdW5jaEFwcChPYmplY3QuYXNzaWduKHt9LCBvcHRzLCB7YnVuZGxlSWR9KSk7XG59O1xuXG5jb21tYW5kcy5pc0FwcEluc3RhbGxlZCA9IGFzeW5jIGZ1bmN0aW9uIGlzQXBwSW5zdGFsbGVkIChidW5kbGVJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5tb2JpbGVJc0FwcEluc3RhbGxlZCh7YnVuZGxlSWR9KTtcbn07XG5cbmNvbW1hbmRzLnRlcm1pbmF0ZUFwcCA9IGFzeW5jIGZ1bmN0aW9uIHRlcm1pbmF0ZUFwcCAoYnVuZGxlSWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMubW9iaWxlVGVybWluYXRlQXBwKHtidW5kbGVJZH0pO1xufTtcblxuY29tbWFuZHMucXVlcnlBcHBTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwU3RhdGUgKGJ1bmRsZUlkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLm1vYmlsZVF1ZXJ5QXBwU3RhdGUoe2J1bmRsZUlkfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IExpc3RBcHBzT3B0aW9uc1xuICogQHByb3BlcnR5IHsnU3lzdGVtJ3wnVXNlcid9IGFwcGxpY2F0aW9uVHlwZSBbVXNlcl0gVGhlIHR5cGUgb2YgYXBwbGljYXRpb25zIHRvIGxpc3RcbiAqL1xuXG4vKipcbiAqIExpc3QgYXBwbGljYXRpb25zIGluc3RhbGxlZCBvbiB0aGUgcmVhbCBkZXZpY2UgdW5kZXIgdGVzdFxuICpcbiAqIEBwYXJhbSB7TGlzdEFwcHNPcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJucyB7QXJyYXk8T2JqZWN0Pn0gQSBsaXN0IG9mIGFwcHMsIHdoZXJlIGVhY2ggaXRlbSBpcyBhIG1hcCB3aGVyZSBrZXlzIGFyZVxuICogYnVuZGxlIGlkZW50aWZpZXJzIGFuZCB2YWx1ZXMgYXJlIG1hcHMgb2YgcGxhdGZvcm0tc3BlY2lmaWMgYXBwIHByb3BlcnRpZXMuXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUxpc3RBcHBzID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlTGlzdEFwcHMgKG9wdHMgPSB7fSkge1xuICBpZiAoIXRoaXMuaXNSZWFsRGV2aWNlKCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoYFRoaXMgZXh0ZW5zaW9uIGlzIG9ubHkgc3VwcG9ydGVkIG9uIHJlYWwgZGV2aWNlc2ApO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGFwcGxpY2F0aW9uVHlwZSA9ICdVc2VyJyxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCBzZXJ2aWNlcy5zdGFydEluc3RhbGxhdGlvblByb3h5U2VydmljZSh0aGlzLm9wdHMuZGV2aWNlLnVkaWQpO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBzZXJ2aWNlLmxpc3RBcHBsaWNhdGlvbnMoe2FwcGxpY2F0aW9uVHlwZX0pO1xuICB9IGZpbmFsbHkge1xuICAgIHNlcnZpY2UuY2xvc2UoKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9hcHAtbWFuYWdlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
@@ -11,7 +11,7 @@ require("source-map-support/register");
|
|
|
11
11
|
|
|
12
12
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _support = require("@appium/support");
|
|
15
15
|
|
|
16
16
|
const commands = {};
|
|
17
17
|
exports.commands = commands;
|
|
@@ -25,7 +25,7 @@ commands.mobileSetAppearance = async function mobileSetAppearance(opts = {}) {
|
|
|
25
25
|
throw new Error(`The 'style' option is expected to be present`);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
if (
|
|
28
|
+
if (_support.util.compareVersions(this.opts.platformVersion, '<', '12.0')) {
|
|
29
29
|
throw new Error('Changing appearance is only supported since iOS 12');
|
|
30
30
|
}
|
|
31
31
|
|
|
@@ -41,7 +41,7 @@ commands.mobileSetAppearance = async function mobileSetAppearance(opts = {}) {
|
|
|
41
41
|
};
|
|
42
42
|
|
|
43
43
|
commands.mobileGetAppearance = async function mobileGetAppearance() {
|
|
44
|
-
if (
|
|
44
|
+
if (_support.util.compareVersions(this.opts.platformVersion, '<', '12.0')) {
|
|
45
45
|
return 'unsupported';
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -66,4 +66,4 @@ var _default = commands;
|
|
|
66
66
|
exports.default = _default;require('source-map-support').install();
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9hcHBlYXJhbmNlLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwibW9iaWxlU2V0QXBwZWFyYW5jZSIsIm9wdHMiLCJzdHlsZSIsIkVycm9yIiwidXRpbCIsImNvbXBhcmVWZXJzaW9ucyIsInBsYXRmb3JtVmVyc2lvbiIsImlzU2ltdWxhdG9yIiwiZGV2aWNlIiwic2V0QXBwZWFyYW5jZSIsImlnbiIsIm1vYmlsZVNpcmlDb21tYW5kIiwidGV4dCIsIl8iLCJ0b0xvd2VyIiwibW9iaWxlR2V0QXBwZWFyYW5jZSIsImdldEFwcGVhcmFuY2UiLCJwcm94eUNvbW1hbmQiLCJ1c2VySW50ZXJmYWNlU3R5bGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOzs7QUFrQkFBLFFBQVEsQ0FBQ0MsbUJBQVQsR0FBK0IsZUFBZUEsbUJBQWYsQ0FBb0NDLElBQUksR0FBRyxFQUEzQyxFQUErQztBQUM1RSxRQUFNO0FBQ0pDLElBQUFBO0FBREksTUFFRkQsSUFGSjs7QUFHQSxNQUFJLENBQUNDLEtBQUwsRUFBWTtBQUNWLFVBQU0sSUFBSUMsS0FBSixDQUFXLDhDQUFYLENBQU47QUFDRDs7QUFDRCxNQUFJQyxjQUFLQyxlQUFMLENBQXFCLEtBQUtKLElBQUwsQ0FBVUssZUFBL0IsRUFBZ0QsR0FBaEQsRUFBcUQsTUFBckQsQ0FBSixFQUFrRTtBQUNoRSxVQUFNLElBQUlILEtBQUosQ0FBVSxvREFBVixDQUFOO0FBQ0Q7O0FBRUQsTUFBSSxLQUFLSSxXQUFMLEVBQUosRUFBd0I7QUFDdEIsUUFBSTtBQUNGLGFBQU8sTUFBTSxNQUFNLEtBQUtOLElBQUwsQ0FBVU8sTUFBVixDQUFpQkMsYUFBakIsQ0FBK0JQLEtBQS9CLENBQVosQ0FBUDtBQUNELEtBRkQsQ0FFRSxPQUFPUSxHQUFQLEVBQVksQ0FBRTtBQUNqQjs7QUFHRCxRQUFNLEtBQUtDLGlCQUFMLENBQXVCO0FBQzNCQyxJQUFBQSxJQUFJLEVBQUcsUUFBT0MsZ0JBQUVDLE9BQUYsQ0FBVVosS0FBVixNQUFxQixNQUFyQixHQUE4QixJQUE5QixHQUFxQyxLQUFNO0FBRDlCLEdBQXZCLENBQU47QUFHRCxDQXJCRDs7QUF1Q0FILFFBQVEsQ0FBQ2dCLG1CQUFULEdBQStCLGVBQWVBLG1CQUFmLEdBQXNDO0FBQ25FLE1BQUlYLGNBQUtDLGVBQUwsQ0FBcUIsS0FBS0osSUFBTCxDQUFVSyxlQUEvQixFQUFnRCxHQUFoRCxFQUFxRCxNQUFyRCxDQUFKLEVBQWtFO0FBQ2hFLFdBQU8sYUFBUDtBQUNEOztBQUVELE1BQUlKLEtBQUo7O0FBQ0EsTUFBSSxLQUFLSyxXQUFMLEVBQUosRUFBd0I7QUFDdEIsUUFBSTtBQUNGTCxNQUFBQSxLQUFLLEdBQUcsTUFBTSxLQUFLRCxJQUFMLENBQVVPLE1BQVYsQ0FBaUJRLGFBQWpCLEVBQWQ7QUFDRCxLQUZELENBRUUsT0FBT04sR0FBUCxFQUFZLENBQUU7QUFDakI7O0FBQ0QsTUFBSSxDQUFDUixLQUFMLEVBQVk7QUFDVkEsSUFBQUEsS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLZSxZQUFMLENBQWtCLGtCQUFsQixFQUFzQyxLQUF0QyxDQUFQLEVBQXFEQyxrQkFBckQsSUFBMkUsU0FBbkY7QUFDRDs7QUFDRCxTQUFPO0FBQ0xoQixJQUFBQTtBQURLLEdBQVA7QUFHRCxDQWpCRDs7ZUFxQmVILFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5cblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTZXRBcHBlYXJhbmNlT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdHlsZSAtIEN1cnJlbnRseSB0d28gc3R5bGVzIGFyZSBzdXBwb3J0ZWQ6XG4gKiAtIGRhcmtcbiAqIC0gbGlnaHRcbiAqL1xuXG4vKipcbiAqIFNldCB0aGUgZGV2aWNlJ3MgVUkgYXBwZWFyYW5jZSBzdHlsZVxuICpcbiAqIEBzaW5jZSBpT1MgMTIuMFxuICogQHBhcmFtIHtTZXRBcHBlYXJhbmNlT3B0aW9uc30gb3B0c1xuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZSBjdXJyZW50IHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgVUlcbiAqIGFwcGVhcmFuY2UgY2hhbmdlc1xuICovXG5jb21tYW5kcy5tb2JpbGVTZXRBcHBlYXJhbmNlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlU2V0QXBwZWFyYW5jZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBzdHlsZSxcbiAgfSA9IG9wdHM7XG4gIGlmICghc3R5bGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSAnc3R5bGUnIG9wdGlvbiBpcyBleHBlY3RlZCB0byBiZSBwcmVzZW50YCk7XG4gIH1cbiAgaWYgKHV0aWwuY29tcGFyZVZlcnNpb25zKHRoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb24sICc8JywgJzEyLjAnKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2hhbmdpbmcgYXBwZWFyYW5jZSBpcyBvbmx5IHN1cHBvcnRlZCBzaW5jZSBpT1MgMTInKTtcbiAgfVxuXG4gIGlmICh0aGlzLmlzU2ltdWxhdG9yKCkpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHZvaWQgKGF3YWl0IHRoaXMub3B0cy5kZXZpY2Uuc2V0QXBwZWFyYW5jZShzdHlsZSkpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxuICAvLyBGYWxsIGJhY2sgdG8gdGhlIHVnbHkgU2lyaSB3b3JrYXJvdW5kIGlmIHRoZSBzaW11bGF0b3IgaXMgdG9vIG9sZFxuICAvLyBvciB0aGlzIGlzIGEgcmVhbCBkZXZpY2VcbiAgYXdhaXQgdGhpcy5tb2JpbGVTaXJpQ29tbWFuZCh7XG4gICAgdGV4dDogYFR1cm4gJHtfLnRvTG93ZXIoc3R5bGUpID09PSAnZGFyaycgPyAnb24nIDogJ29mZid9IGRhcmsgbW9kZWAsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBBcHBlYXJhbmNlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc3R5bGUgLSBUaGUgZGV2aWNlJ3MgVUkgYXBwZWFyYW5jZSB2YWx1ZS5cbiAqIFRoaXMgY291bGQgYmUgb25lIG9mOlxuICogLSBgbGlnaHRgXG4gKiAtIGBkYXJrYFxuICogLSBgdW5rbm93bmBcbiAqIC0gYHVuc3VwcG9ydGVkYFxuICovXG5cbi8qKlxuICogR2V0IHRoZSBkZXZpY2UncyBVSSBhcHBlYXJhbmNlIHN0eWxlLlxuICpcbiAqIEBzaW5jZSBYY29kZSBTREsgMTFcbiAqIEByZXR1cm5zIHtBcHBlYXJhbmNlfVxuICovXG5jb21tYW5kcy5tb2JpbGVHZXRBcHBlYXJhbmNlID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlR2V0QXBwZWFyYW5jZSAoKSB7XG4gIGlmICh1dGlsLmNvbXBhcmVWZXJzaW9ucyh0aGlzLm9wdHMucGxhdGZvcm1WZXJzaW9uLCAnPCcsICcxMi4wJykpIHtcbiAgICByZXR1cm4gJ3Vuc3VwcG9ydGVkJztcbiAgfVxuXG4gIGxldCBzdHlsZTtcbiAgaWYgKHRoaXMuaXNTaW11bGF0b3IoKSkge1xuICAgIHRyeSB7XG4gICAgICBzdHlsZSA9IGF3YWl0IHRoaXMub3B0cy5kZXZpY2UuZ2V0QXBwZWFyYW5jZSgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxuICBpZiAoIXN0eWxlKSB7XG4gICAgc3R5bGUgPSAoYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvZGV2aWNlL2luZm8nLCAnR0VUJykpLnVzZXJJbnRlcmZhY2VTdHlsZSB8fCAndW5rbm93bic7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdHlsZSxcbiAgfTtcbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvYXBwZWFyYW5jZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|