appium-xcuitest-driver 3.61.0 → 3.62.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 +20 -0
- package/build/lib/commands/execute.js +4 -2
- package/build/lib/commands/index.js +4 -2
- package/build/lib/commands/pcap.js +170 -0
- package/build/lib/driver.js +2 -2
- package/build/lib/py-ios-device-client.js +18 -2
- package/lib/commands/execute.js +3 -0
- package/lib/commands/index.js +2 -1
- package/lib/commands/pcap.js +167 -0
- package/lib/driver.js +3 -1
- package/lib/py-ios-device-client.js +14 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -886,6 +886,26 @@ Stops recording of the audio input. If no audio recording process is running the
|
|
|
886
886
|
|
|
887
887
|
Base64-encoded content of the recorded media file or an empty string if no audio recording has been started before.
|
|
888
888
|
|
|
889
|
+
### mobile: startPcap
|
|
890
|
+
|
|
891
|
+
Start mobile device network traffic capture. This extension only works if [py-ios-device](https://github.com/YueChen-C/py-ios-device) utility is installed on the server machine and only supports
|
|
892
|
+
real iOS devices.
|
|
893
|
+
|
|
894
|
+
#### Arguments
|
|
895
|
+
|
|
896
|
+
Name | Type | Required | Description | Example
|
|
897
|
+
--- | --- | --- | --- | ---
|
|
898
|
+
timeLimitSec | string or int | no | The maximum recording time, in seconds. The default value is `180`, the maximum value is `43200` (12 hours). | 60
|
|
899
|
+
forceRestart | boolean | no | Whether to restart traffic capture process forcefully when startPcap is called (`true`) or ignore the call until the current traffic capture is completed (`false`, the default value). | true
|
|
900
|
+
|
|
901
|
+
### mobile: stopPcap
|
|
902
|
+
|
|
903
|
+
Stops network traffic capture. If no traffic capture process is running then the endpoint will try to get the recently recorded file. If no previously recorded file is found and no active traffic capture processes are running then the method returns an empty string.
|
|
904
|
+
|
|
905
|
+
#### Returned Result
|
|
906
|
+
|
|
907
|
+
Base64-encoded content of the traffic capture file (.pcap) or an empty string if no traffic capture has been started before. Netowrk capture files could be opened in [Wireshark](https://www.wireshark.org/) application.
|
|
908
|
+
|
|
889
909
|
### mobile: runXCTest
|
|
890
910
|
|
|
891
911
|
Run a native XCTest script. Launches a subprocess that runs the XC Test and blocks until it is completed. Parses the stdout of the process and returns its result as an array. Facebook's [IDB](https://github.com/facebook/idb) tool is required to run such tests.
|
|
@@ -124,7 +124,9 @@ extensions.executeMobile = async function executeMobile(mobileCommand, opts = {}
|
|
|
124
124
|
expectNotification: 'mobileExpectNotification',
|
|
125
125
|
performIoHidEvent: 'mobilePerformIoHidEvent',
|
|
126
126
|
configureLocalization: 'mobileConfigureLocalization',
|
|
127
|
-
resetLocationService: 'mobileResetLocationService'
|
|
127
|
+
resetLocationService: 'mobileResetLocationService',
|
|
128
|
+
startPcap: 'mobileStartPcap',
|
|
129
|
+
stopPcap: 'mobileStopPcap'
|
|
128
130
|
};
|
|
129
131
|
|
|
130
132
|
if (!_lodash.default.has(commandMap, mobileCommand)) {
|
|
@@ -138,4 +140,4 @@ var _default = extensions;
|
|
|
138
140
|
exports.default = _default;require('source-map-support').install();
|
|
139
141
|
|
|
140
142
|
|
|
141
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sIm5hbWVzIjpbImV4dGVuc2lvbnMiLCJyZWNlaXZlQXN5bmNSZXNwb25zZSIsInN0YXR1cyIsInZhbHVlIiwibG9nIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5IiwidXRpbCIsImhhc1ZhbHVlIiwiYXN5bmNQcm9taXNlIiwid2FybiIsInJlamVjdCIsIm1lc3NhZ2UiLCJfIiwiaXNTdHJpbmciLCJlcnJvciIsInN0YWNrdHJhY2UiLCJyZXNvbHZlIiwiZXhlY3V0ZSIsInNjcmlwdCIsImFyZ3MiLCJtYXRjaCIsInJlcGxhY2UiLCJ0cmltIiwiZXhlY3V0ZU1vYmlsZSIsImlzQXJyYXkiLCJpc1dlYkNvbnRleHQiLCJjb252ZXJ0RWxlbWVudHNGb3JBdG9tcyIsInJlc3VsdCIsImV4ZWN1dGVBdG9tIiwiY2FjaGVXZWJFbGVtZW50cyIsImVycm9ycyIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJleGVjdXRlQXN5bmMiLCJhc3luY1dhaXRNcyIsInByb21pc2UiLCJyZW1vdGUiLCJleGVjdXRlQXRvbUFzeW5jIiwiY3VyV2ViRnJhbWVzIiwid2FpdEZvckF0b20iLCJtb2JpbGVDb21tYW5kIiwib3B0cyIsImNvbW1hbmRNYXAiLCJ0YXAiLCJzY3JvbGwiLCJzZWxlY3RQaWNrZXJXaGVlbFZhbHVlIiwic3dpcGUiLCJwaW5jaCIsImRvdWJsZVRhcCIsInR3b0ZpbmdlclRhcCIsInRhcFdpdGhOdW1iZXJPZlRhcHMiLCJ0b3VjaEFuZEhvbGQiLCJkcmFnRnJvbVRvRm9yRHVyYXRpb24iLCJyb3RhdGVFbGVtZW50IiwiYWxlcnQiLCJzZXRQYXN0ZWJvYXJkIiwiZ2V0UGFzdGVib2FyZCIsInNvdXJjZSIsImdldENvbnRleHRzIiwiaW5zdGFsbEFwcCIsImlzQXBwSW5zdGFsbGVkIiwicmVtb3ZlQXBwIiwibGF1bmNoQXBwIiwidGVybWluYXRlQXBwIiwicXVlcnlBcHBTdGF0ZSIsImFjdGl2YXRlQXBwIiwibGlzdEFwcHMiLCJ2aWV3cG9ydFNjcmVlbnNob3QiLCJ2aWV3cG9ydFJlY3QiLCJzdGFydFBlcmZSZWNvcmQiLCJzdG9wUGVyZlJlY29yZCIsImluc3RhbGxDZXJ0aWZpY2F0ZSIsInN0YXJ0TG9nc0Jyb2FkY2FzdCIsInN0b3BMb2dzQnJvYWRjYXN0IiwiYmF0dGVyeUluZm8iLCJkZXZpY2VJbmZvIiwiZ2V0RGV2aWNlVGltZSIsImFjdGl2ZUFwcEluZm8iLCJkZXZpY2VTY3JlZW5JbmZvIiwicHJlc3NCdXR0b24iLCJlbnJvbGxCaW9tZXRyaWMiLCJzZW5kQmlvbWV0cmljTWF0Y2giLCJpc0Jpb21ldHJpY0Vucm9sbGVkIiwiY2xlYXJLZXljaGFpbnMiLCJnZXRQZXJtaXNzaW9uIiwic2V0UGVybWlzc2lvbiIsInJlc2V0UGVybWlzc2lvbiIsImdldEFwcGVhcmFuY2UiLCJzZXRBcHBlYXJhbmNlIiwic2lyaUNvbW1hbmQiLCJkZWxldGVGaWxlIiwiZGVsZXRlRm9sZGVyIiwic3RhcnRBdWRpb1JlY29yZGluZyIsInN0b3BBdWRpb1JlY29yZGluZyIsInJ1blhDVGVzdCIsImluc3RhbGxYQ1Rlc3RCdW5kbGUiLCJsaXN0WENUZXN0QnVuZGxlcyIsImxpc3RYQ1Rlc3RzSW5UZXN0QnVuZGxlIiwicHVzaE5vdGlmaWNhdGlvbiIsImV4cGVjdE5vdGlmaWNhdGlvbiIsInBlcmZvcm1Jb0hpZEV2ZW50IiwiY29uZmlndXJlTG9jYWxpemF0aW9uIiwicmVzZXRMb2NhdGlvblNlcnZpY2UiLCJoYXMiLCJVbmtub3duQ29tbWFuZEVycm9yIiwia2V5cyIsImpvaW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHLEVBQW5COztBQUVBQSxVQUFVLENBQUNDLG9CQUFYLEdBQWtDLGVBQWVBLG9CQUFmLENBQXFDQyxNQUFyQyxFQUE2Q0MsS0FBN0MsRUFBb0Q7QUFDcEZDLGtCQUFJQyxLQUFKLENBQVcsNEJBQTJCQyxJQUFJLENBQUNDLFNB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QTlGRjtBQWdHakJDLElBQUFBLHFCQUFxQixFQUFFLDZCQWhHTjtBQWtHakJDLElBQUFBLG9CQUFvQixFQUFFO0FBbEdMLEdBQW5COztBQXFHQSxNQUFJLENBQUN6RixnQkFBRTBGLEdBQUYsQ0FBTTdELFVBQU4sRUFBa0JGLGFBQWxCLENBQUwsRUFBdUM7QUFDckMsVUFBTSxJQUFJVCx5QkFBT3lFLG1CQUFYLENBQWdDLDJCQUEwQmhFLGFBQWMsV0FBVTNCLGdCQUFFNEYsSUFBRixDQUFPL0QsVUFBUCxFQUFtQmdFLElBQW5CLENBQXdCLElBQXhCLENBQThCLDBCQUFoSCxDQUFOO0FBQ0Q7O0FBQ0QsU0FBTyxNQUFNLEtBQUtoRSxVQUFVLENBQUNGLGFBQUQsQ0FBZixFQUFnQ0MsSUFBaEMsQ0FBYjtBQUNELENBMUdEOztlQTRHZTFDLFUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgZXJyb3JzLCBlcnJvckZyb21Db2RlLCBlcnJvckZyb21XM0NKc29uQ29kZVxufSBmcm9tICdhcHBpdW0tYmFzZS1kcml2ZXInO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcblxuY29uc3QgZXh0ZW5zaW9ucyA9IHt9O1xuXG5leHRlbnNpb25zLnJlY2VpdmVBc3luY1Jlc3BvbnNlID0gYXN5bmMgZnVuY3Rpb24gcmVjZWl2ZUFzeW5jUmVzcG9uc2UgKHN0YXR1cywgdmFsdWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgYXN5bmMgcmVzcG9uc2U6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApO1xuICBpZiAoIXV0aWwuaGFzVmFsdWUodGhpcy5hc3luY1Byb21pc2UpKSB7XG4gICAgbG9nLndhcm4oYFJlY2VpdmVkIGFzeW5jIHJlc3BvbnNlIHdoZW4gd2Ugd2VyZSBub3QgZXhwZWN0aW5nIG9uZSEgYCArXG4gICAgICBgUmVzcG9uc2Ugd2FzOiAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodXRpbC5oYXNWYWx1ZShzdGF0dXMpICYmIHN0YXR1cyAhPT0gMCkge1xuICAgIC8vIE1KU09OV1BcbiAgICByZXR1cm4gdGhpcy5hc3luY1Byb21pc2UucmVqZWN0KGVycm9yRnJvbUNvZGUoc3RhdHVzLCB2YWx1ZS5tZXNzYWdlKSk7XG4gIH1cbiAgaWYgKCF1dGlsLmhhc1ZhbHVlKHN0YXR1cykgJiYgdmFsdWUgJiYgXy5pc1N0cmluZyh2YWx1ZS5lcnJvcikpIHtcbiAgICAvLyBXM0NcbiAgICByZXR1cm4gdGhpcy5hc3luY1Byb21pc2UucmVqZWN0KGVycm9yRnJvbVczQ0pzb25Db2RlKHZhbHVlLmVycm9yLCB2YWx1ZS5tZXNzYWdlLCB2YWx1ZS5zdGFja3RyYWNlKSk7XG4gIH1cbiAgcmV0dXJuIHRoaXMuYXN5bmNQcm9taXNlLnJlc29sdmUodmFsdWUpO1xufTtcblxuZXh0ZW5zaW9ucy5leGVjdXRlID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZSAoc2NyaXB0LCBhcmdzKSB7XG4gIGlmIChzY3JpcHQubWF0Y2goL15tb2JpbGU6LykpIHtcbiAgICBzY3JpcHQgPSBzY3JpcHQucmVwbGFjZSgvXm1vYmlsZTovLCAnJykudHJpbSgpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVNb2JpbGUoc2NyaXB0LCBfLmlzQXJyYXkoYXJncykgPyBhcmdzWzBdIDogYXJncyk7XG4gIH0gZWxzZSBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIGFyZ3MgPSB0aGlzLmNvbnZlcnRFbGVtZW50c0ZvckF0b21zKGFyZ3MpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZXhlY3V0ZUF0b20oJ2V4ZWN1dGVfc2NyaXB0JywgW3NjcmlwdCwgYXJnc10pO1xuICAgIHJldHVybiB0aGlzLmNhY2hlV2ViRWxlbWVudHMocmVzdWx0KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxufTtcblxuZXh0ZW5zaW9ucy5leGVjdXRlQXN5bmMgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlQXN5bmMgKHNjcmlwdCwgYXJncykge1xuICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxuXG4gIGFyZ3MgPSB0aGlzLmNvbnZlcnRFbGVtZW50c0ZvckF0b21zKGFyZ3MpO1xuICB0aGlzLmFzeW5jV2FpdE1zID0gdGhpcy5hc3luY1dhaXRNcyB8fCAwO1xuICBjb25zdCBwcm9taXNlID0gdGhpcy5yZW1vdGUuZXhlY3V0ZUF0b21Bc3luYygnZXhlY3V0ZV9hc3luY19zY3JpcHQnLCBbc2NyaXB0LCBhcmdzLCB0aGlzLmFzeW5jV2FpdE1zXSwgdGhpcy5jdXJXZWJGcmFtZXMpO1xuICByZXR1cm4gYXdhaXQgdGhpcy53YWl0Rm9yQXRvbShwcm9taXNlKTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZU1vYmlsZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVNb2JpbGUgKG1vYmlsZUNvbW1hbmQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBjb21tYW5kTWFwID0ge1xuICAgIC8vcmVnaW9uIGdlc3R1cmVzIHN1cHBvcnRcbiAgICB0YXA6ICdtb2JpbGVUYXAnLFxuICAgIHNjcm9sbDogJ21vYmlsZVNjcm9sbCcsXG4gICAgc2VsZWN0UGlja2VyV2hlZWxWYWx1ZTogJ21vYmlsZVNlbGVjdFBpY2tlcldoZWVsVmFsdWUnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY4LXN3aXBlbGVmdD9sYW5ndWFnZT1vYmpjXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzQtc3dpcGVyaWdodD9sYW5ndWFnZT1vYmpjXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2Njctc3dpcGV1cD9sYW5ndWFnZT1vYmpjXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjQtc3dpcGVkb3duP2xhbmd1YWdlPW9iamNcbiAgICBzd2lwZTogJ21vYmlsZVN3aXBlJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2OS1waW5jaHdpdGhzY2FsZT9sYW5ndWFnZT1vYmpjXG4gICAgcGluY2g6ICdtb2JpbGVQaW5jaCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzMtZG91YmxldGFwP2xhbmd1YWdlPW9iamNcbiAgICBkb3VibGVUYXA6ICdtb2JpbGVEb3VibGVUYXAnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4Njc1LXR3b2ZpbmdlcnRhcD9sYW5ndWFnZT1vYmpjXG4gICAgdHdvRmluZ2VyVGFwOiAnbW9iaWxlVHdvRmluZ2VyVGFwJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3MS10YXB3aXRobnVtYmVyb2Z0YXBzP2xhbmd1YWdlPW9iamNcbiAgICB0YXBXaXRoTnVtYmVyT2ZUYXBzOiAnbW9iaWxlVGFwV2l0aE51bWJlck9mVGFwcycsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjMtcHJlc3Nmb3JkdXJhdGlvbj9sYW5ndWFnZT1vYmpjXG4gICAgdG91Y2hBbmRIb2xkOiAnbW9iaWxlVG91Y2hBbmRIb2xkJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3MC1wcmVzc2ZvcmR1cmF0aW9uP2xhbmd1YWdlPW9iamNcbiAgICBkcmFnRnJvbVRvRm9yRHVyYXRpb246ICdtb2JpbGVEcmFnRnJvbVRvRm9yRHVyYXRpb24nLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY1LXJvdGF0ZT9sYW5ndWFnZT1vYmpjXG4gICAgcm90YXRlRWxlbWVudDogJ21vYmlsZVJvdGF0ZUVsZW1lbnQnLFxuXG4gICAgLy9lbmRyZWdpb24gZ2VzdHVyZXMgc3VwcG9ydFxuICAgIGFsZXJ0OiAnbW9iaWxlSGFuZGxlQWxlcnQnLFxuXG4gICAgc2V0UGFzdGVib2FyZDogJ21vYmlsZVNldFBhc3RlYm9hcmQnLFxuICAgIGdldFBhc3RlYm9hcmQ6ICdtb2JpbGVHZXRQYXN0ZWJvYXJkJyxcblxuICAgIHNvdXJjZTogJ21vYmlsZUdldFNvdXJjZScsXG4gICAgZ2V0Q29udGV4dHM6ICdtb2JpbGVHZXRDb250ZXh0cycsXG5cbiAgICAvL3JlZ2lvbiBtdWx0aXBsZSBhcHBzIG1hbmFnZW1lbnRcbiAgICBpbnN0YWxsQXBwOiAnbW9iaWxlSW5zdGFsbEFwcCcsXG4gICAgaXNBcHBJbnN0YWxsZWQ6ICdtb2JpbGVJc0FwcEluc3RhbGxlZCcsXG4gICAgcmVtb3ZlQXBwOiAnbW9iaWxlUmVtb3ZlQXBwJyxcbiAgICBsYXVuY2hBcHA6ICdtb2JpbGVMYXVuY2hBcHAnLFxuICAgIHRlcm1pbmF0ZUFwcDogJ21vYmlsZVRlcm1pbmF0ZUFwcCcsXG4gICAgcXVlcnlBcHBTdGF0ZTogJ21vYmlsZVF1ZXJ5QXBwU3RhdGUnLFxuICAgIGFjdGl2YXRlQXBwOiAnbW9iaWxlQWN0aXZhdGVBcHAnLFxuICAgIGxpc3RBcHBzOiAnbW9iaWxlTGlzdEFwcHMnLFxuICAgIC8vZW5kcmVnaW9uIG11bHRpcGxlIGFwcHMgbWFuYWdlbWVudFxuXG4gICAgdmlld3BvcnRTY3JlZW5zaG90OiAnZ2V0Vmlld3BvcnRTY3JlZW5zaG90JyxcbiAgICB2aWV3cG9ydFJlY3Q6ICdnZXRWaWV3cG9ydFJlY3QnLFxuXG4gICAgc3RhcnRQZXJmUmVjb3JkOiAnbW9iaWxlU3RhcnRQZXJmUmVjb3JkJyxcbiAgICBzdG9wUGVyZlJlY29yZDogJ21vYmlsZVN0b3BQZXJmUmVjb3JkJyxcblxuICAgIGluc3RhbGxDZXJ0aWZpY2F0ZTogJ21vYmlsZUluc3RhbGxDZXJ0aWZpY2F0ZScsXG5cbiAgICBzdGFydExvZ3NCcm9hZGNhc3Q6ICdtb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QnLFxuICAgIHN0b3BMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RvcExvZ3NCcm9hZGNhc3QnLFxuXG4gICAgYmF0dGVyeUluZm86ICdtb2JpbGVHZXRCYXR0ZXJ5SW5mbycsXG4gICAgZGV2aWNlSW5mbzogJ21vYmlsZUdldERldmljZUluZm8nLFxuICAgIGdldERldmljZVRpbWU6ICdtb2JpbGVHZXREZXZpY2VUaW1lJyxcbiAgICBhY3RpdmVBcHBJbmZvOiAnbW9iaWxlR2V0QWN0aXZlQXBwSW5mbycsXG4gICAgZGV2aWNlU2NyZWVuSW5mbzogJ2dldFNjcmVlbkluZm8nLFxuXG4gICAgcHJlc3NCdXR0b246ICdtb2JpbGVQcmVzc0J1dHRvbicsXG5cbiAgICBlbnJvbGxCaW9tZXRyaWM6ICdtb2JpbGVFbnJvbGxCaW9tZXRyaWMnLFxuICAgIHNlbmRCaW9tZXRyaWNNYXRjaDogJ21vYmlsZVNlbmRCaW9tZXRyaWNNYXRjaCcsXG4gICAgaXNCaW9tZXRyaWNFbnJvbGxlZDogJ21vYmlsZUlzQmlvbWV0cmljRW5yb2xsZWQnLFxuXG4gICAgY2xlYXJLZXljaGFpbnM6ICdtb2JpbGVDbGVhcktleWNoYWlucycsXG5cbiAgICBnZXRQZXJtaXNzaW9uOiAnbW9iaWxlR2V0UGVybWlzc2lvbicsXG4gICAgc2V0UGVybWlzc2lvbjogJ21vYmlsZVNldFBlcm1pc3Npb25zJyxcbiAgICByZXNldFBlcm1pc3Npb246ICdtb2JpbGVSZXNldFBlcm1pc3Npb24nLFxuXG4gICAgZ2V0QXBwZWFyYW5jZTogJ21vYmlsZUdldEFwcGVhcmFuY2UnLFxuICAgIHNldEFwcGVhcmFuY2U6ICdtb2JpbGVTZXRBcHBlYXJhbmNlJyxcblxuICAgIHNpcmlDb21tYW5kOiAnbW9iaWxlU2lyaUNvbW1hbmQnLFxuXG4gICAgZGVsZXRlRmlsZTogJ21vYmlsZURlbGV0ZUZpbGUnLFxuICAgIGRlbGV0ZUZvbGRlcjogJ21vYmlsZURlbGV0ZUZvbGRlcicsXG5cbiAgICBzdGFydEF1ZGlvUmVjb3JkaW5nOiAnc3RhcnRBdWRpb1JlY29yZGluZycsXG4gICAgc3RvcEF1ZGlvUmVjb3JkaW5nOiAnc3RvcEF1ZGlvUmVjb3JkaW5nJyxcblxuICAgIC8vIFhDVGVzdFxuICAgIHJ1blhDVGVzdDogJ21vYmlsZVJ1blhDVGVzdCcsXG4gICAgaW5zdGFsbFhDVGVzdEJ1bmRsZTogJ21vYmlsZUluc3RhbGxYQ1Rlc3RCdW5kbGUnLFxuICAgIGxpc3RYQ1Rlc3RCdW5kbGVzOiAnbW9iaWxlTGlzdFhDVGVzdEJ1bmRsZXMnLFxuICAgIGxpc3RYQ1Rlc3RzSW5UZXN0QnVuZGxlOiAnbW9iaWxlTGlzdFhDVGVzdHNJblRlc3RCdW5kbGUnLFxuXG4gICAgcHVzaE5vdGlmaWNhdGlvbjogJ21vYmlsZVB1c2hOb3RpZmljYXRpb24nLFxuICAgIGV4cGVjdE5vdGlmaWNhdGlvbjogJ21vYmlsZUV4cGVjdE5vdGlmaWNhdGlvbicsXG5cbiAgICBwZXJmb3JtSW9IaWRFdmVudDogJ21vYmlsZVBlcmZvcm1Jb0hpZEV2ZW50JyxcblxuICAgIGNvbmZpZ3VyZUxvY2FsaXphdGlvbjogJ21vYmlsZUNvbmZpZ3VyZUxvY2FsaXphdGlvbicsXG5cbiAgICByZXNldExvY2F0aW9uU2VydmljZTogJ21vYmlsZVJlc2V0TG9jYXRpb25TZXJ2aWNlJyxcbiAgfTtcblxuICBpZiAoIV8uaGFzKGNvbW1hbmRNYXAsIG1vYmlsZUNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIG1vYmlsZSBjb21tYW5kICcke21vYmlsZUNvbW1hbmR9Jy4gT25seSAke18ua2V5cyhjb21tYW5kTWFwKS5qb2luKCcsICcpfSBjb21tYW5kcyBhcmUgc3VwcG9ydGVkLmApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzW2NvbW1hbmRNYXBbbW9iaWxlQ29tbWFuZF1dKG9wdHMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZXh0ZW5zaW9ucztcbiJdLCJmaWxlIjoibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
143
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sIm5hbWVzIjpbImV4dGVuc2lvbnMiLCJyZWNlaXZlQXN5bmNSZXNwb25zZSIsInN0YXR1cyIsInZhbHVlIiwibG9nIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5IiwidXRpbCIsImhhc1ZhbHVlIiwiYXN5bmNQcm9taXNlIiwid2FybiIsInJlamVjdCIsIm1lc3NhZ2UiLCJfIiwiaXNTdHJpbmciLCJlcnJvciIsInN0YWNrdHJhY2UiLCJyZXNvbHZlIiwiZXhlY3V0ZSIsInNjcmlwdCIsImFyZ3MiLCJtYXRjaCIsInJlcGxhY2UiLCJ0cmltIiwiZXhlY3V0ZU1vYmlsZSIsImlzQXJyYXkiLCJpc1dlYkNvbnRleHQiLCJjb252ZXJ0RWxlbWVudHNGb3JBdG9tcyIsInJlc3VsdCIsImV4ZWN1dGVBdG9tIiwiY2FjaGVXZWJFbGVtZW50cyIsImVycm9ycyIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJleGVjdXRlQXN5bmMiLCJhc3luY1dhaXRNcyIsInByb21pc2UiLCJyZW1vdGUiLCJleGVjdXRlQXRvbUFzeW5jIiwiY3VyV2ViRnJhbWVzIiwid2FpdEZvckF0b20iLCJtb2JpbGVDb21tYW5kIiwib3B0cyIsImNvbW1hbmRNYXAiLCJ0YXAiLCJzY3JvbGwiLCJzZWxlY3RQaWNrZXJXaGVlbFZhbHVlIiwic3dpcGUiLCJwaW5jaCIsImRvdWJsZVRhcCIsInR3b0ZpbmdlclRhcCIsInRhcFdpdGhOdW1iZXJPZlRhcHMiLCJ0b3VjaEFuZEhvbGQiLCJkcmFnRnJvbVRvRm9yRHVyYXRpb24iLCJyb3RhdGVFbGVtZW50IiwiYWxlcnQiLCJzZXRQYXN0ZWJvYXJkIiwiZ2V0UGFzdGVib2FyZCIsInNvdXJjZSIsImdldENvbnRleHRzIiwiaW5zdGFsbEFwcCIsImlzQXBwSW5zdGFsbGVkIiwicmVtb3ZlQXBwIiwibGF1bmNoQXBwIiwidGVybWluYXRlQXBwIiwicXVlcnlBcHBTdGF0ZSIsImFjdGl2YXRlQXBwIiwibGlzdEFwcHMiLCJ2aWV3cG9ydFNjcmVlbnNob3QiLCJ2aWV3cG9ydFJlY3QiLCJzdGFydFBlcmZSZWNvcmQiLCJzdG9wUGVyZlJlY29yZCIsImluc3RhbGxDZXJ0aWZpY2F0ZSIsInN0YXJ0TG9nc0Jyb2FkY2FzdCIsInN0b3BMb2dzQnJvYWRjYXN0IiwiYmF0dGVyeUluZm8iLCJkZXZpY2VJbmZvIiwiZ2V0RGV2aWNlVGltZSIsImFjdGl2ZUFwcEluZm8iLCJkZXZpY2VTY3JlZW5JbmZvIiwicHJlc3NCdXR0b24iLCJlbnJvbGxCaW9tZXRyaWMiLCJzZW5kQmlvbWV0cmljTWF0Y2giLCJpc0Jpb21ldHJpY0Vucm9sbGVkIiwiY2xlYXJLZXljaGFpbnMiLCJnZXRQZXJtaXNzaW9uIiwic2V0UGVybWlzc2lvbiIsInJlc2V0UGVybWlzc2lvbiIsImdldEFwcGVhcmFuY2UiLCJzZXRBcHBlYXJhbmNlIiwic2lyaUNvbW1hbmQiLCJkZWxldGVGaWxlIiwiZGVsZXRlRm9sZGVyIiwic3RhcnRBdWRpb1JlY29yZGluZyIsInN0b3BBdWRpb1JlY29yZGluZyIsInJ1blhDVGVzdCIsImluc3RhbGxYQ1Rlc3RCdW5kbGUiLCJsaXN0WENUZXN0QnVuZGxlcyIsImxpc3RYQ1Rlc3RzSW5UZXN0QnVuZGxlIiwicHVzaE5vdGlmaWNhdGlvbiIsImV4cGVjdE5vdGlmaWNhdGlvbiIsInBlcmZvcm1Jb0hpZEV2ZW50IiwiY29uZmlndXJlTG9jYWxpemF0aW9uIiwicmVzZXRMb2NhdGlvblNlcnZpY2UiLCJzdGFydFBjYXAiLCJzdG9wUGNhcCIsImhhcyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJrZXlzIiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFFQSxNQUFNQSxVQUFVLEdBQUcsRUFBbkI7O0FBRUFBLFVBQVUsQ0FBQ0Msb0JBQVgsR0FBa0MsZUFBZUEsb0JBQWYsQ0FBcUNDLE1BQXJDLEVBQTZDQyxLQUE3QyxFQUFvRDtBQUNwRkMsa0JBQUlDLEtBQUosQ0FB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QkMsSUFBQUEsaUJBQWlCLEVBQUUseUJBOUZGO0FBZ0dqQkMsSUFBQUEscUJBQXFCLEVBQUUsNkJBaEdOO0FBa0dqQkMsSUFBQUEsb0JBQW9CLEVBQUUsNEJBbEdMO0FBb0dqQkMsSUFBQUEsU0FBUyxFQUFFLGlCQXBHTTtBQXFHakJDLElBQUFBLFFBQVEsRUFBRTtBQXJHTyxHQUFuQjs7QUF3R0EsTUFBSSxDQUFDM0YsZ0JBQUU0RixHQUFGLENBQU0vRCxVQUFOLEVBQWtCRixhQUFsQixDQUFMLEVBQXVDO0FBQ3JDLFVBQU0sSUFBSVQseUJBQU8yRSxtQkFBWCxDQUFnQywyQkFBMEJsRSxhQUFjLFdBQVUzQixnQkFBRThGLElBQUYsQ0FBT2pFLFVBQVAsRUFBbUJrRSxJQUFuQixDQUF3QixJQUF4QixDQUE4QiwwQkFBaEgsQ0FBTjtBQUNEOztBQUNELFNBQU8sTUFBTSxLQUFLbEUsVUFBVSxDQUFDRixhQUFELENBQWYsRUFBZ0NDLElBQWhDLENBQWI7QUFDRCxDQTdHRDs7ZUErR2UxQyxVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIGVycm9ycywgZXJyb3JGcm9tQ29kZSwgZXJyb3JGcm9tVzNDSnNvbkNvZGVcbn0gZnJvbSAnYXBwaXVtLWJhc2UtZHJpdmVyJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5cbmNvbnN0IGV4dGVuc2lvbnMgPSB7fTtcblxuZXh0ZW5zaW9ucy5yZWNlaXZlQXN5bmNSZXNwb25zZSA9IGFzeW5jIGZ1bmN0aW9uIHJlY2VpdmVBc3luY1Jlc3BvbnNlIChzdGF0dXMsIHZhbHVlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICBsb2cuZGVidWcoYFJlY2VpdmVkIGFzeW5jIHJlc3BvbnNlOiAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gKTtcbiAgaWYgKCF1dGlsLmhhc1ZhbHVlKHRoaXMuYXN5bmNQcm9taXNlKSkge1xuICAgIGxvZy53YXJuKGBSZWNlaXZlZCBhc3luYyByZXNwb25zZSB3aGVuIHdlIHdlcmUgbm90IGV4cGVjdGluZyBvbmUhIGAgK1xuICAgICAgYFJlc3BvbnNlIHdhczogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHV0aWwuaGFzVmFsdWUoc3RhdHVzKSAmJiBzdGF0dXMgIT09IDApIHtcbiAgICAvLyBNSlNPTldQXG4gICAgcmV0dXJuIHRoaXMuYXN5bmNQcm9taXNlLnJlamVjdChlcnJvckZyb21Db2RlKHN0YXR1cywgdmFsdWUubWVzc2FnZSkpO1xuICB9XG4gIGlmICghdXRpbC5oYXNWYWx1ZShzdGF0dXMpICYmIHZhbHVlICYmIF8uaXNTdHJpbmcodmFsdWUuZXJyb3IpKSB7XG4gICAgLy8gVzNDXG4gICAgcmV0dXJuIHRoaXMuYXN5bmNQcm9taXNlLnJlamVjdChlcnJvckZyb21XM0NKc29uQ29kZSh2YWx1ZS5lcnJvciwgdmFsdWUubWVzc2FnZSwgdmFsdWUuc3RhY2t0cmFjZSkpO1xuICB9XG4gIHJldHVybiB0aGlzLmFzeW5jUHJvbWlzZS5yZXNvbHZlKHZhbHVlKTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKHNjcmlwdCwgYXJncykge1xuICBpZiAoc2NyaXB0Lm1hdGNoKC9ebW9iaWxlOi8pKSB7XG4gICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoL15tb2JpbGU6LywgJycpLnRyaW0oKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlTW9iaWxlKHNjcmlwdCwgXy5pc0FycmF5KGFyZ3MpID8gYXJnc1swXSA6IGFyZ3MpO1xuICB9IGVsc2UgaWYgKHRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICBhcmdzID0gdGhpcy5jb252ZXJ0RWxlbWVudHNGb3JBdG9tcyhhcmdzKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVBdG9tKCdleGVjdXRlX3NjcmlwdCcsIFtzY3JpcHQsIGFyZ3NdKTtcbiAgICByZXR1cm4gdGhpcy5jYWNoZVdlYkVsZW1lbnRzKHJlc3VsdCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZUFzeW5jID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUFzeW5jIChzY3JpcHQsIGFyZ3MpIHtcbiAgaWYgKCF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICBhcmdzID0gdGhpcy5jb252ZXJ0RWxlbWVudHNGb3JBdG9tcyhhcmdzKTtcbiAgdGhpcy5hc3luY1dhaXRNcyA9IHRoaXMuYXN5bmNXYWl0TXMgfHwgMDtcbiAgY29uc3QgcHJvbWlzZSA9IHRoaXMucmVtb3RlLmV4ZWN1dGVBdG9tQXN5bmMoJ2V4ZWN1dGVfYXN5bmNfc2NyaXB0JywgW3NjcmlwdCwgYXJncywgdGhpcy5hc3luY1dhaXRNc10sIHRoaXMuY3VyV2ViRnJhbWVzKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2FpdEZvckF0b20ocHJvbWlzZSk7XG59O1xuXG5leHRlbnNpb25zLmV4ZWN1dGVNb2JpbGUgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlTW9iaWxlIChtb2JpbGVDb21tYW5kLCBvcHRzID0ge30pIHtcbiAgY29uc3QgY29tbWFuZE1hcCA9IHtcbiAgICAvL3JlZ2lvbiBnZXN0dXJlcyBzdXBwb3J0XG4gICAgdGFwOiAnbW9iaWxlVGFwJyxcbiAgICBzY3JvbGw6ICdtb2JpbGVTY3JvbGwnLFxuICAgIHNlbGVjdFBpY2tlcldoZWVsVmFsdWU6ICdtb2JpbGVTZWxlY3RQaWNrZXJXaGVlbFZhbHVlJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2OC1zd2lwZWxlZnQ/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4Njc0LXN3aXBlcmlnaHQ/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY3LXN3aXBldXA/bGFuZ3VhZ2U9b2JqY1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY0LXN3aXBlZG93bj9sYW5ndWFnZT1vYmpjXG4gICAgc3dpcGU6ICdtb2JpbGVTd2lwZScsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjktcGluY2h3aXRoc2NhbGU/bGFuZ3VhZ2U9b2JqY1xuICAgIHBpbmNoOiAnbW9iaWxlUGluY2gnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjczLWRvdWJsZXRhcD9sYW5ndWFnZT1vYmpjXG4gICAgZG91YmxlVGFwOiAnbW9iaWxlRG91YmxlVGFwJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3NS10d29maW5nZXJ0YXA/bGFuZ3VhZ2U9b2JqY1xuICAgIHR3b0ZpbmdlclRhcDogJ21vYmlsZVR3b0ZpbmdlclRhcCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzEtdGFwd2l0aG51bWJlcm9mdGFwcz9sYW5ndWFnZT1vYmpjXG4gICAgdGFwV2l0aE51bWJlck9mVGFwczogJ21vYmlsZVRhcFdpdGhOdW1iZXJPZlRhcHMnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjYzLXByZXNzZm9yZHVyYXRpb24/bGFuZ3VhZ2U9b2JqY1xuICAgIHRvdWNoQW5kSG9sZDogJ21vYmlsZVRvdWNoQW5kSG9sZCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzAtcHJlc3Nmb3JkdXJhdGlvbj9sYW5ndWFnZT1vYmpjXG4gICAgZHJhZ0Zyb21Ub0ZvckR1cmF0aW9uOiAnbW9iaWxlRHJhZ0Zyb21Ub0ZvckR1cmF0aW9uJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2NS1yb3RhdGU/bGFuZ3VhZ2U9b2JqY1xuICAgIHJvdGF0ZUVsZW1lbnQ6ICdtb2JpbGVSb3RhdGVFbGVtZW50JyxcblxuICAgIC8vZW5kcmVnaW9uIGdlc3R1cmVzIHN1cHBvcnRcbiAgICBhbGVydDogJ21vYmlsZUhhbmRsZUFsZXJ0JyxcblxuICAgIHNldFBhc3RlYm9hcmQ6ICdtb2JpbGVTZXRQYXN0ZWJvYXJkJyxcbiAgICBnZXRQYXN0ZWJvYXJkOiAnbW9iaWxlR2V0UGFzdGVib2FyZCcsXG5cbiAgICBzb3VyY2U6ICdtb2JpbGVHZXRTb3VyY2UnLFxuICAgIGdldENvbnRleHRzOiAnbW9iaWxlR2V0Q29udGV4dHMnLFxuXG4gICAgLy9yZWdpb24gbXVsdGlwbGUgYXBwcyBtYW5hZ2VtZW50XG4gICAgaW5zdGFsbEFwcDogJ21vYmlsZUluc3RhbGxBcHAnLFxuICAgIGlzQXBwSW5zdGFsbGVkOiAnbW9iaWxlSXNBcHBJbnN0YWxsZWQnLFxuICAgIHJlbW92ZUFwcDogJ21vYmlsZVJlbW92ZUFwcCcsXG4gICAgbGF1bmNoQXBwOiAnbW9iaWxlTGF1bmNoQXBwJyxcbiAgICB0ZXJtaW5hdGVBcHA6ICdtb2JpbGVUZXJtaW5hdGVBcHAnLFxuICAgIHF1ZXJ5QXBwU3RhdGU6ICdtb2JpbGVRdWVyeUFwcFN0YXRlJyxcbiAgICBhY3RpdmF0ZUFwcDogJ21vYmlsZUFjdGl2YXRlQXBwJyxcbiAgICBsaXN0QXBwczogJ21vYmlsZUxpc3RBcHBzJyxcbiAgICAvL2VuZHJlZ2lvbiBtdWx0aXBsZSBhcHBzIG1hbmFnZW1lbnRcblxuICAgIHZpZXdwb3J0U2NyZWVuc2hvdDogJ2dldFZpZXdwb3J0U2NyZWVuc2hvdCcsXG4gICAgdmlld3BvcnRSZWN0OiAnZ2V0Vmlld3BvcnRSZWN0JyxcblxuICAgIHN0YXJ0UGVyZlJlY29yZDogJ21vYmlsZVN0YXJ0UGVyZlJlY29yZCcsXG4gICAgc3RvcFBlcmZSZWNvcmQ6ICdtb2JpbGVTdG9wUGVyZlJlY29yZCcsXG5cbiAgICBpbnN0YWxsQ2VydGlmaWNhdGU6ICdtb2JpbGVJbnN0YWxsQ2VydGlmaWNhdGUnLFxuXG4gICAgc3RhcnRMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0JyxcbiAgICBzdG9wTG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0b3BMb2dzQnJvYWRjYXN0JyxcblxuICAgIGJhdHRlcnlJbmZvOiAnbW9iaWxlR2V0QmF0dGVyeUluZm8nLFxuICAgIGRldmljZUluZm86ICdtb2JpbGVHZXREZXZpY2VJbmZvJyxcbiAgICBnZXREZXZpY2VUaW1lOiAnbW9iaWxlR2V0RGV2aWNlVGltZScsXG4gICAgYWN0aXZlQXBwSW5mbzogJ21vYmlsZUdldEFjdGl2ZUFwcEluZm8nLFxuICAgIGRldmljZVNjcmVlbkluZm86ICdnZXRTY3JlZW5JbmZvJyxcblxuICAgIHByZXNzQnV0dG9uOiAnbW9iaWxlUHJlc3NCdXR0b24nLFxuXG4gICAgZW5yb2xsQmlvbWV0cmljOiAnbW9iaWxlRW5yb2xsQmlvbWV0cmljJyxcbiAgICBzZW5kQmlvbWV0cmljTWF0Y2g6ICdtb2JpbGVTZW5kQmlvbWV0cmljTWF0Y2gnLFxuICAgIGlzQmlvbWV0cmljRW5yb2xsZWQ6ICdtb2JpbGVJc0Jpb21ldHJpY0Vucm9sbGVkJyxcblxuICAgIGNsZWFyS2V5Y2hhaW5zOiAnbW9iaWxlQ2xlYXJLZXljaGFpbnMnLFxuXG4gICAgZ2V0UGVybWlzc2lvbjogJ21vYmlsZUdldFBlcm1pc3Npb24nLFxuICAgIHNldFBlcm1pc3Npb246ICdtb2JpbGVTZXRQZXJtaXNzaW9ucycsXG4gICAgcmVzZXRQZXJtaXNzaW9uOiAnbW9iaWxlUmVzZXRQZXJtaXNzaW9uJyxcblxuICAgIGdldEFwcGVhcmFuY2U6ICdtb2JpbGVHZXRBcHBlYXJhbmNlJyxcbiAgICBzZXRBcHBlYXJhbmNlOiAnbW9iaWxlU2V0QXBwZWFyYW5jZScsXG5cbiAgICBzaXJpQ29tbWFuZDogJ21vYmlsZVNpcmlDb21tYW5kJyxcblxuICAgIGRlbGV0ZUZpbGU6ICdtb2JpbGVEZWxldGVGaWxlJyxcbiAgICBkZWxldGVGb2xkZXI6ICdtb2JpbGVEZWxldGVGb2xkZXInLFxuXG4gICAgc3RhcnRBdWRpb1JlY29yZGluZzogJ3N0YXJ0QXVkaW9SZWNvcmRpbmcnLFxuICAgIHN0b3BBdWRpb1JlY29yZGluZzogJ3N0b3BBdWRpb1JlY29yZGluZycsXG5cbiAgICAvLyBYQ1Rlc3RcbiAgICBydW5YQ1Rlc3Q6ICdtb2JpbGVSdW5YQ1Rlc3QnLFxuICAgIGluc3RhbGxYQ1Rlc3RCdW5kbGU6ICdtb2JpbGVJbnN0YWxsWENUZXN0QnVuZGxlJyxcbiAgICBsaXN0WENUZXN0QnVuZGxlczogJ21vYmlsZUxpc3RYQ1Rlc3RCdW5kbGVzJyxcbiAgICBsaXN0WENUZXN0c0luVGVzdEJ1bmRsZTogJ21vYmlsZUxpc3RYQ1Rlc3RzSW5UZXN0QnVuZGxlJyxcblxuICAgIHB1c2hOb3RpZmljYXRpb246ICdtb2JpbGVQdXNoTm90aWZpY2F0aW9uJyxcbiAgICBleHBlY3ROb3RpZmljYXRpb246ICdtb2JpbGVFeHBlY3ROb3RpZmljYXRpb24nLFxuXG4gICAgcGVyZm9ybUlvSGlkRXZlbnQ6ICdtb2JpbGVQZXJmb3JtSW9IaWRFdmVudCcsXG5cbiAgICBjb25maWd1cmVMb2NhbGl6YXRpb246ICdtb2JpbGVDb25maWd1cmVMb2NhbGl6YXRpb24nLFxuXG4gICAgcmVzZXRMb2NhdGlvblNlcnZpY2U6ICdtb2JpbGVSZXNldExvY2F0aW9uU2VydmljZScsXG5cbiAgICBzdGFydFBjYXA6ICdtb2JpbGVTdGFydFBjYXAnLFxuICAgIHN0b3BQY2FwOiAnbW9iaWxlU3RvcFBjYXAnLFxuICB9O1xuXG4gIGlmICghXy5oYXMoY29tbWFuZE1hcCwgbW9iaWxlQ29tbWFuZCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3IoYFVua25vd24gbW9iaWxlIGNvbW1hbmQgJyR7bW9iaWxlQ29tbWFuZH0nLiBPbmx5ICR7Xy5rZXlzKGNvbW1hbmRNYXApLmpvaW4oJywgJyl9IGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXNbY29tbWFuZE1hcFttb2JpbGVDb21tYW5kXV0ob3B0cyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvZXhlY3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
@@ -81,10 +81,12 @@ var _iohid = _interopRequireDefault(require("./iohid"));
|
|
|
81
81
|
|
|
82
82
|
var _localization = _interopRequireDefault(require("./localization"));
|
|
83
83
|
|
|
84
|
+
var _pcap = _interopRequireDefault(require("./pcap"));
|
|
85
|
+
|
|
84
86
|
const commands = {};
|
|
85
|
-
Object.assign(commands, _context.default, _execute.default, _gesture.default, _find.default, _proxyHelper.default, _source.default, _general.default, _log.default, _web.default, _timeouts.default, _navigation.default, _element.default, _fileMovement.default, _alert.default, _screenshots.default, _pasteboard.default, _location.default, _lock.default, _recordscreen.default, _appManagement.default, _performance.default, _clipboard.default, _certificate.default, _battery.default, _cookies.default, _biometric.default, _keychains.default, _permissions.default, _deviceInfo.default, _activeAppInfo.default, _recordAudio.default, _appearance.default, _xctest.default, _notifications.default, _iohid.default, _localization.default);
|
|
87
|
+
Object.assign(commands, _context.default, _execute.default, _gesture.default, _find.default, _proxyHelper.default, _source.default, _general.default, _log.default, _web.default, _timeouts.default, _navigation.default, _element.default, _fileMovement.default, _alert.default, _screenshots.default, _pasteboard.default, _location.default, _lock.default, _recordscreen.default, _appManagement.default, _performance.default, _clipboard.default, _certificate.default, _battery.default, _cookies.default, _biometric.default, _keychains.default, _permissions.default, _deviceInfo.default, _activeAppInfo.default, _recordAudio.default, _appearance.default, _xctest.default, _notifications.default, _iohid.default, _localization.default, _pcap.default);
|
|
86
88
|
var _default = commands;
|
|
87
89
|
exports.default = _default;require('source-map-support').install();
|
|
88
90
|
|
|
89
91
|
|
|
90
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbmRleC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImNvbnRleHRDb21tYW5kcyIsImV4ZWN1dGVFeHRlbnNpb25zIiwiZ2VzdHVyZUV4dGVuc2lvbnMiLCJmaW5kRXh0ZW5zaW9ucyIsInByb3h5SGVscGVyRXh0ZW5zaW9ucyIsInNvdXJjZUV4dGVuc2lvbnMiLCJnZW5lcmFsRXh0ZW5zaW9ucyIsImxvZ0V4dGVuc2lvbnMiLCJ3ZWJFeHRlbnNpb25zIiwidGltZW91dEV4dGVuc2lvbnMiLCJuYXZpZ2F0aW9uRXh0ZW5zaW9ucyIsImVsZW1lbnRFeHRlbnNpb25zIiwiZmlsZU1vdmVtZW50RXh0ZW5zaW9ucyIsImFsZXJ0RXh0ZW5zaW9ucyIsInNjcmVlbnNob3RFeHRlbnNpb25zIiwicGFzdGVib2FyZEV4dGVuc2lvbnMiLCJsb2NhdGlvbkV4dGVuc2lvbnMiLCJsb2NrRXh0ZW5zaW9ucyIsInJlY29yZFNjcmVlbkV4dGVuc2lvbnMiLCJhcHBNYW5hZ2VtZW50RXh0ZW5zaW9ucyIsInBlcmZvcm1hbmNlRXh0ZW5zaW9ucyIsImNsaXBib2FyZEV4dGVuc2lvbnMiLCJjZXJ0aWZpY2F0ZUV4dGVuc2lvbnMiLCJiYXR0ZXJ5RXh0ZW5zaW9ucyIsImNvb2tpZXNFeHRlbnNpb25zIiwiYmlvbWV0cmljRXh0ZW5zaW9ucyIsImtleWNoYWluc0V4dGVuc2lvbnMiLCJwZXJtaXNzaW9uc0V4dGVuc2lvbnMiLCJkZXZpY2VJbmZvRXh0ZW5zaW9ucyIsImFjdGl2ZUFwcEluZm9FeHRlbnNpb25zIiwicmVjb3JkQXVkaW9FeHRlbnNpb25zIiwiYXBwZWFyYW5jZUV4dGVuc2lvbnMiLCJ4Y3Rlc3RFeHRlbnNpb25zIiwibm90aWZpY2F0aW9uc0V4dGVuc2lvbnMiLCJpb2hpZEV4dGVuc2lvbnMiLCJsb2NhbGl6YXRpb25FeHRlbnNpb25zIiwicGNhcEV4dGVuc2lvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsUUFBUSxHQUFHLEVBQWpCO0FBRUFDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjRixRQUFkLEVBQXdCRyxnQkFBeEIsRUFBeUNDLGdCQUF6QyxFQUNFQyxnQkFERixFQUNxQkMsYUFEckIsRUFDcUNDLG9CQURyQyxFQUM0REMsZUFENUQsRUFFRUMsZ0JBRkYsRUFFcUJDLFlBRnJCLEVBRW9DQyxZQUZwQyxFQUVtREMsaUJBRm5ELEVBR0VDLG1CQUhGLEVBR3dCQyxnQkFIeEIsRUFHMkNDLHFCQUgzQyxFQUlFQyxjQUpGLEVBSW1CQyxvQkFKbkIsRUFJeUNDLG1CQUp6QyxFQUkrREMsaUJBSi9ELEVBS0VDLGFBTEYsRUFLa0JDLHFCQUxsQixFQUswQ0Msc0JBTDFDLEVBS21FQyxvQkFMbkUsRUFNRUMsa0JBTkYsRUFNdUJDLG9CQU52QixFQU04Q0MsZ0JBTjlDLEVBTWlFQyxnQkFOakUsRUFPRUMsa0JBUEYsRUFPdUJDLGtCQVB2QixFQU80Q0Msb0JBUDVDLEVBT21FQyxtQkFQbkUsRUFRRUMsc0JBUkYsRUFRMkJDLG9CQVIzQixFQVFrREMsbUJBUmxELEVBUXdFQyxlQVJ4RSxFQVNFQyxzQkFURixFQVMyQkMsY0FUM0IsRUFTNENDLHFCQVQ1QyxFQVNvRUMsYUFUcEU7ZUFZZXZDLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29udGV4dENvbW1hbmRzIGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgZXhlY3V0ZUV4dGVuc2lvbnMgZnJvbSAnLi9leGVjdXRlJztcbmltcG9ydCBnZXN0dXJlRXh0ZW5zaW9ucyBmcm9tICcuL2dlc3R1cmUnO1xuaW1wb3J0IGZpbmRFeHRlbnNpb25zIGZyb20gJy4vZmluZCc7XG5pbXBvcnQgcHJveHlIZWxwZXJFeHRlbnNpb25zIGZyb20gJy4vcHJveHktaGVscGVyJztcbmltcG9ydCBhbGVydEV4dGVuc2lvbnMgZnJvbSAnLi9hbGVydCc7XG5pbXBvcnQgc291cmNlRXh0ZW5zaW9ucyBmcm9tICcuL3NvdXJjZSc7XG5pbXBvcnQgZ2VuZXJhbEV4dGVuc2lvbnMgZnJvbSAnLi9nZW5lcmFsJztcbmltcG9ydCBsb2dFeHRlbnNpb25zIGZyb20gJy4vbG9nJztcbmltcG9ydCB3ZWJFeHRlbnNpb25zIGZyb20gJy4vd2ViJztcbmltcG9ydCB0aW1lb3V0RXh0ZW5zaW9ucyBmcm9tICcuL3RpbWVvdXRzJztcbmltcG9ydCBuYXZpZ2F0aW9uRXh0ZW5zaW9ucyBmcm9tICcuL25hdmlnYXRpb24nO1xuaW1wb3J0IGVsZW1lbnRFeHRlbnNpb25zIGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgZmlsZU1vdmVtZW50RXh0ZW5zaW9ucyBmcm9tICcuL2ZpbGUtbW92ZW1lbnQnO1xuaW1wb3J0IHNjcmVlbnNob3RFeHRlbnNpb25zIGZyb20gJy4vc2NyZWVuc2hvdHMnO1xuaW1wb3J0IHBhc3RlYm9hcmRFeHRlbnNpb25zIGZyb20gJy4vcGFzdGVib2FyZCc7XG5pbXBvcnQgbG9jYXRpb25FeHRlbnNpb25zIGZyb20gJy4vbG9jYXRpb24nO1xuaW1wb3J0IHJlY29yZEF1ZGlvRXh0ZW5zaW9ucyBmcm9tICcuL3JlY29yZC1hdWRpbyc7XG5pbXBvcnQgcmVjb3JkU2NyZWVuRXh0ZW5zaW9ucyBmcm9tICcuL3JlY29yZHNjcmVlbic7XG5pbXBvcnQgbG9ja0V4dGVuc2lvbnMgZnJvbSAnLi9sb2NrJztcbmltcG9ydCBhcHBNYW5hZ2VtZW50RXh0ZW5zaW9ucyBmcm9tICcuL2FwcC1tYW5hZ2VtZW50JztcbmltcG9ydCBwZXJmb3JtYW5jZUV4dGVuc2lvbnMgZnJvbSAnLi9wZXJmb3JtYW5jZSc7XG5pbXBvcnQgY2xpcGJvYXJkRXh0ZW5zaW9ucyBmcm9tICcuL2NsaXBib2FyZCc7XG5pbXBvcnQgY2VydGlmaWNhdGVFeHRlbnNpb25zIGZyb20gJy4vY2VydGlmaWNhdGUnO1xuaW1wb3J0IGJhdHRlcnlFeHRlbnNpb25zIGZyb20gJy4vYmF0dGVyeSc7XG5pbXBvcnQgZGV2aWNlSW5mb0V4dGVuc2lvbnMgZnJvbSAnLi9kZXZpY2VJbmZvJztcbmltcG9ydCBhY3RpdmVBcHBJbmZvRXh0ZW5zaW9ucyBmcm9tICcuL2FjdGl2ZUFwcEluZm8nO1xuaW1wb3J0IGNvb2tpZXNFeHRlbnNpb25zIGZyb20gJy4vY29va2llcyc7XG5pbXBvcnQgYmlvbWV0cmljRXh0ZW5zaW9ucyBmcm9tICcuL2Jpb21ldHJpYyc7XG5pbXBvcnQga2V5Y2hhaW5zRXh0ZW5zaW9ucyBmcm9tICcuL2tleWNoYWlucyc7XG5pbXBvcnQgcGVybWlzc2lvbnNFeHRlbnNpb25zIGZyb20gJy4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IGFwcGVhcmFuY2VFeHRlbnNpb25zIGZyb20gJy4vYXBwZWFyYW5jZSc7XG5pbXBvcnQgeGN0ZXN0RXh0ZW5zaW9ucyBmcm9tICcuL3hjdGVzdCc7XG5pbXBvcnQgbm90aWZpY2F0aW9uc0V4dGVuc2lvbnMgZnJvbSAnLi9ub3RpZmljYXRpb25zJztcbmltcG9ydCBpb2hpZEV4dGVuc2lvbnMgZnJvbSAnLi9pb2hpZCc7XG5pbXBvcnQgbG9jYWxpemF0aW9uRXh0ZW5zaW9ucyBmcm9tICcuL2xvY2FsaXphdGlvbic7XG5pbXBvcnQgcGNhcEV4dGVuc2lvbnMgZnJvbSAnLi9wY2FwJztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuT2JqZWN0LmFzc2lnbihjb21tYW5kcywgY29udGV4dENvbW1hbmRzLCBleGVjdXRlRXh0ZW5zaW9ucyxcbiAgZ2VzdHVyZUV4dGVuc2lvbnMsIGZpbmRFeHRlbnNpb25zLCBwcm94eUhlbHBlckV4dGVuc2lvbnMsIHNvdXJjZUV4dGVuc2lvbnMsXG4gIGdlbmVyYWxFeHRlbnNpb25zLCBsb2dFeHRlbnNpb25zLCB3ZWJFeHRlbnNpb25zLCB0aW1lb3V0RXh0ZW5zaW9ucyxcbiAgbmF2aWdhdGlvbkV4dGVuc2lvbnMsIGVsZW1lbnRFeHRlbnNpb25zLCBmaWxlTW92ZW1lbnRFeHRlbnNpb25zLFxuICBhbGVydEV4dGVuc2lvbnMsIHNjcmVlbnNob3RFeHRlbnNpb25zLCBwYXN0ZWJvYXJkRXh0ZW5zaW9ucywgbG9jYXRpb25FeHRlbnNpb25zLFxuICBsb2NrRXh0ZW5zaW9ucywgcmVjb3JkU2NyZWVuRXh0ZW5zaW9ucywgYXBwTWFuYWdlbWVudEV4dGVuc2lvbnMsIHBlcmZvcm1hbmNlRXh0ZW5zaW9ucyxcbiAgY2xpcGJvYXJkRXh0ZW5zaW9ucywgY2VydGlmaWNhdGVFeHRlbnNpb25zLCBiYXR0ZXJ5RXh0ZW5zaW9ucywgY29va2llc0V4dGVuc2lvbnMsXG4gIGJpb21ldHJpY0V4dGVuc2lvbnMsIGtleWNoYWluc0V4dGVuc2lvbnMsIHBlcm1pc3Npb25zRXh0ZW5zaW9ucywgZGV2aWNlSW5mb0V4dGVuc2lvbnMsXG4gIGFjdGl2ZUFwcEluZm9FeHRlbnNpb25zLCByZWNvcmRBdWRpb0V4dGVuc2lvbnMsIGFwcGVhcmFuY2VFeHRlbnNpb25zLCB4Y3Rlc3RFeHRlbnNpb25zLFxuICBub3RpZmljYXRpb25zRXh0ZW5zaW9ucywgaW9oaWRFeHRlbnNpb25zLCBsb2NhbGl6YXRpb25FeHRlbnNpb25zLCBwY2FwRXh0ZW5zaW9ucyxcbik7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.commands = void 0;
|
|
9
|
+
|
|
10
|
+
require("source-map-support/register");
|
|
11
|
+
|
|
12
|
+
var _pyIosDeviceClient = _interopRequireDefault(require("../py-ios-device-client"));
|
|
13
|
+
|
|
14
|
+
var _appiumSupport = require("appium-support");
|
|
15
|
+
|
|
16
|
+
var _logger = _interopRequireDefault(require("../logger"));
|
|
17
|
+
|
|
18
|
+
var _utils = require("../utils");
|
|
19
|
+
|
|
20
|
+
const MAX_CAPTURE_TIME_SEC = 60 * 60 * 12;
|
|
21
|
+
const DEFAULT_CAPTURE_TIME_SEC = 60 * 5;
|
|
22
|
+
const DEFAULT_EXT = '.pcap';
|
|
23
|
+
|
|
24
|
+
const pcapLogger = _appiumSupport.logger.getLogger('pcapd');
|
|
25
|
+
|
|
26
|
+
const commands = {};
|
|
27
|
+
exports.commands = commands;
|
|
28
|
+
|
|
29
|
+
class TrafficCapture {
|
|
30
|
+
constructor(udid, resultPath) {
|
|
31
|
+
this.udid = udid;
|
|
32
|
+
this.resultPath = resultPath;
|
|
33
|
+
this.mainProcess = null;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async start(timeoutSeconds) {
|
|
37
|
+
this.mainProcess = await new _pyIosDeviceClient.default(this.udid).collectPcap(this.resultPath);
|
|
38
|
+
this.mainProcess.on('output', (stdout, stderr) => {
|
|
39
|
+
if (stderr) {
|
|
40
|
+
pcapLogger.info(`${stderr}`);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
_logger.default.info(`Starting network traffic capture session on the device '${this.udid}'. ` + `Will timeout in ${timeoutSeconds}s`);
|
|
45
|
+
|
|
46
|
+
setTimeout(async () => await this.interrupt(), timeoutSeconds * 1000);
|
|
47
|
+
this.mainProcess.once('exit', (code, signal) => {
|
|
48
|
+
_logger.default.debug(`The traffic capture session on the device '${this.udid}' has exited ` + `with code ${code}, signal ${signal}`);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
isCapturing() {
|
|
53
|
+
var _this$mainProcess;
|
|
54
|
+
|
|
55
|
+
return !!((_this$mainProcess = this.mainProcess) !== null && _this$mainProcess !== void 0 && _this$mainProcess.isRunning);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async interrupt(force = false) {
|
|
59
|
+
if (this.isCapturing()) {
|
|
60
|
+
const interruptPromise = this.mainProcess.stop(force ? 'SIGTERM' : 'SIGINT');
|
|
61
|
+
this.mainProcess = null;
|
|
62
|
+
|
|
63
|
+
try {
|
|
64
|
+
await interruptPromise;
|
|
65
|
+
} catch (e) {
|
|
66
|
+
_logger.default.warn(`Cannot ${force ? 'terminate' : 'interrupt'} the traffic capture session. ` + `Original error: ${e.message}`);
|
|
67
|
+
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
async finish() {
|
|
76
|
+
await this.interrupt();
|
|
77
|
+
return this.resultPath;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
async cleanup() {
|
|
81
|
+
if (await _appiumSupport.fs.exists(this.resultPath)) {
|
|
82
|
+
await _appiumSupport.fs.rimraf(this.resultPath);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
commands.mobileStartPcap = async function mobileStartPcap(options = {}) {
|
|
89
|
+
var _this$_trafficCapture;
|
|
90
|
+
|
|
91
|
+
if (this.isSimulator()) {
|
|
92
|
+
_logger.default.errorAndThrow('Network traffic capture only works on real devices');
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const {
|
|
96
|
+
timeLimitSec = DEFAULT_CAPTURE_TIME_SEC,
|
|
97
|
+
forceRestart
|
|
98
|
+
} = options;
|
|
99
|
+
|
|
100
|
+
if ((_this$_trafficCapture = this._trafficCapture) !== null && _this$_trafficCapture !== void 0 && _this$_trafficCapture.isCapturing()) {
|
|
101
|
+
_logger.default.info(`There is an active traffic capture process`);
|
|
102
|
+
|
|
103
|
+
if (forceRestart) {
|
|
104
|
+
_logger.default.info(`Stopping it because 'forceRestart' option is set to true`);
|
|
105
|
+
|
|
106
|
+
await this._trafficCapture.interrupt(true);
|
|
107
|
+
} else {
|
|
108
|
+
_logger.default.info(`Doing nothing. ` + `Set 'forceRestart' option to true if you'd like to start a new traffic capture session`);
|
|
109
|
+
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (this._trafficCapture) {
|
|
115
|
+
await this._trafficCapture.cleanup();
|
|
116
|
+
this._trafficCapture = null;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const resultPath = await _appiumSupport.tempDir.path({
|
|
120
|
+
prefix: `appium_${_appiumSupport.util.uuidV4().substring(0, 8)}`,
|
|
121
|
+
suffix: DEFAULT_EXT
|
|
122
|
+
});
|
|
123
|
+
const trafficCollector = new TrafficCapture(this.opts.device.udid, resultPath);
|
|
124
|
+
const timeoutSeconds = parseInt(timeLimitSec, 10);
|
|
125
|
+
|
|
126
|
+
if (isNaN(timeoutSeconds) || timeoutSeconds > MAX_CAPTURE_TIME_SEC || timeoutSeconds <= 0) {
|
|
127
|
+
_logger.default.errorAndThrow(`The timeLimitSec value must be in range [1, ${MAX_CAPTURE_TIME_SEC}] seconds. ` + `The value of '${timeLimitSec}' has been passed instead.`);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
try {
|
|
131
|
+
await trafficCollector.start(timeoutSeconds);
|
|
132
|
+
} catch (e) {
|
|
133
|
+
await trafficCollector.interrupt(true);
|
|
134
|
+
await trafficCollector.cleanup();
|
|
135
|
+
throw e;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
this._trafficCapture = trafficCollector;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
commands.mobileStopPcap = async function mobileStopPcap() {
|
|
142
|
+
if (!this._trafficCapture) {
|
|
143
|
+
_logger.default.info('Network traffic collector has not been started. There is nothing to stop');
|
|
144
|
+
|
|
145
|
+
return '';
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
let resultPath;
|
|
149
|
+
|
|
150
|
+
try {
|
|
151
|
+
resultPath = await this._trafficCapture.finish();
|
|
152
|
+
|
|
153
|
+
if (!(await _appiumSupport.fs.exists(resultPath))) {
|
|
154
|
+
_logger.default.errorAndThrow(`The network traffic capture utility has failed ` + `to store the actual traffic capture at '${resultPath}'`);
|
|
155
|
+
}
|
|
156
|
+
} catch (e) {
|
|
157
|
+
await this._trafficCapture.interrupt(true);
|
|
158
|
+
await this._trafficCapture.cleanup();
|
|
159
|
+
this._trafficCapture = null;
|
|
160
|
+
throw e;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
return await (0, _utils.encodeBase64OrUpload)(resultPath);
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
var _default = commands;
|
|
167
|
+
exports.default = _default;require('source-map-support').install();
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9wY2FwLmpzIl0sIm5hbWVzIjpbIk1BWF9DQVBUVVJFX1RJTUVfU0VDIiwiREVGQVVMVF9DQVBUVVJFX1RJTUVfU0VDIiwiREVGQVVMVF9FWFQiLCJwY2FwTG9nZ2VyIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiY29tbWFuZHMiLCJUcmFmZmljQ2FwdHVyZSIsImNvbnN0cnVjdG9yIiwidWRpZCIsInJlc3VsdFBhdGgiLCJtYWluUHJvY2VzcyIsInN0YXJ0IiwidGltZW91dFNlY29uZHMiLCJQeWlkZXZpY2UiLCJjb2xsZWN0UGNhcCIsIm9uIiwic3Rkb3V0Iiwic3RkZXJyIiwiaW5mbyIsImxvZyIsInNldFRpbWVvdXQiLCJpbnRlcnJ1cHQiLCJvbmNlIiwiY29kZSIsInNpZ25hbCIsImRlYnVnIiwiaXNDYXB0dXJpbmciLCJpc1J1bm5pbmciLCJmb3JjZSIsImludGVycnVwdFByb21pc2UiLCJzdG9wIiwiZSIsIndhcm4iLCJtZXNzYWdlIiwiZmluaXNoIiwiY2xlYW51cCIsImZzIiwiZXhpc3RzIiwicmltcmFmIiwibW9iaWxlU3RhcnRQY2FwIiwib3B0aW9ucyIsImlzU2ltdWxhdG9yIiwiZXJyb3JBbmRUaHJvdyIsInRpbWVMaW1pdFNlYyIsImZvcmNlUmVzdGFydCIsIl90cmFmZmljQ2FwdHVyZSIsInRlbXBEaXIiLCJwYXRoIiwicHJlZml4IiwidXRpbCIsInV1aWRWNCIsInN1YnN0cmluZyIsInN1ZmZpeCIsInRyYWZmaWNDb2xsZWN0b3IiLCJvcHRzIiwiZGV2aWNlIiwicGFyc2VJbnQiLCJpc05hTiIsIm1vYmlsZVN0b3BQY2FwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLG9CQUFvQixHQUFHLEtBQUssRUFBTCxHQUFVLEVBQXZDO0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUcsS0FBSyxDQUF0QztBQUNBLE1BQU1DLFdBQVcsR0FBRyxPQUFwQjs7QUFDQSxNQUFN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Q0QsR0FGRCxDQUVFLE9BQU9tQixDQUFQLEVBQVU7QUFDVixVQUFNc0IsZ0JBQWdCLENBQUNoQyxTQUFqQixDQUEyQixJQUEzQixDQUFOO0FBQ0EsVUFBTWdDLGdCQUFnQixDQUFDbEIsT0FBakIsRUFBTjtBQUNBLFVBQU1KLENBQU47QUFDRDs7QUFDRCxPQUFLYyxlQUFMLEdBQXVCUSxnQkFBdkI7QUFDRCxDQS9DRDs7QUEyREFoRCxRQUFRLENBQUNxRCxjQUFULEdBQTBCLGVBQWVBLGNBQWYsR0FBaUM7QUFDekQsTUFBSSxDQUFDLEtBQUtiLGVBQVYsRUFBMkI7QUFDekIxQixvQkFBSUQsSUFBSixDQUFTLDBFQUFUOztBQUNBLFdBQU8sRUFBUDtBQUNEOztBQUVELE1BQUlULFVBQUo7O0FBQ0EsTUFBSTtBQUNGQSxJQUFBQSxVQUFVLEdBQUcsTUFBTSxLQUFLb0MsZUFBTCxDQUFxQlgsTUFBckIsRUFBbkI7O0FBQ0EsUUFBSSxFQUFDLE1BQU1FLGtCQUFHQyxNQUFILENBQVU1QixVQUFWLENBQVAsQ0FBSixFQUFrQztBQUNoQ1Usc0JBQUl1QixhQUFKLENBQW1CLGlEQUFELEdBQ2YsMkNBQTBDakMsVUFBVyxHQUR4RDtBQUVEO0FBQ0YsR0FORCxDQU1FLE9BQU9zQixDQUFQLEVBQVU7QUFDVixVQUFNLEtBQUtjLGVBQUwsQ0FBcUJ4QixTQUFyQixDQUErQixJQUEvQixDQUFOO0FBQ0EsVUFBTSxLQUFLd0IsZUFBTCxDQUFxQlYsT0FBckIsRUFBTjtBQUNBLFNBQUtVLGVBQUwsR0FBdUIsSUFBdkI7QUFDQSxVQUFNZCxDQUFOO0FBQ0Q7O0FBQ0QsU0FBTyxNQUFNLGlDQUFxQnRCLFVBQXJCLENBQWI7QUFDRCxDQXBCRDs7ZUF1QmVKLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHlpZGV2aWNlIGZyb20gJy4uL3B5LWlvcy1kZXZpY2UtY2xpZW50JztcbmltcG9ydCB7IGZzLCB0ZW1wRGlyLCBsb2dnZXIsIHV0aWwgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBlbmNvZGVCYXNlNjRPclVwbG9hZCB9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgTUFYX0NBUFRVUkVfVElNRV9TRUMgPSA2MCAqIDYwICogMTI7XG5jb25zdCBERUZBVUxUX0NBUFRVUkVfVElNRV9TRUMgPSA2MCAqIDU7XG5jb25zdCBERUZBVUxUX0VYVCA9ICcucGNhcCc7XG5jb25zdCBwY2FwTG9nZ2VyID0gbG9nZ2VyLmdldExvZ2dlcigncGNhcGQnKTtcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuXG5jbGFzcyBUcmFmZmljQ2FwdHVyZSB7XG4gIGNvbnN0cnVjdG9yICh1ZGlkLCByZXN1bHRQYXRoKSB7XG4gICAgdGhpcy51ZGlkID0gdWRpZDtcbiAgICB0aGlzLnJlc3VsdFBhdGggPSByZXN1bHRQYXRoO1xuICAgIHRoaXMubWFpblByb2Nlc3MgPSBudWxsO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQgKHRpbWVvdXRTZWNvbmRzKSB7XG4gICAgdGhpcy5tYWluUHJvY2VzcyA9IGF3YWl0IG5ldyBQeWlkZXZpY2UodGhpcy51ZGlkKS5jb2xsZWN0UGNhcCh0aGlzLnJlc3VsdFBhdGgpO1xuICAgIHRoaXMubWFpblByb2Nlc3Mub24oJ291dHB1dCcsIChzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgaWYgKHN0ZGVycikge1xuICAgICAgICBwY2FwTG9nZ2VyLmluZm8oYCR7c3RkZXJyfWApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGxvZy5pbmZvKGBTdGFydGluZyBuZXR3b3JrIHRyYWZmaWMgY2FwdHVyZSBzZXNzaW9uIG9uIHRoZSBkZXZpY2UgJyR7dGhpcy51ZGlkfScuIGAgK1xuICAgICAgYFdpbGwgdGltZW91dCBpbiAke3RpbWVvdXRTZWNvbmRzfXNgKTtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IGF3YWl0IHRoaXMuaW50ZXJydXB0KCksIHRpbWVvdXRTZWNvbmRzICogMTAwMCk7XG4gICAgdGhpcy5tYWluUHJvY2Vzcy5vbmNlKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgbG9nLmRlYnVnKGBUaGUgdHJhZmZpYyBjYXB0dXJlIHNlc3Npb24gb24gdGhlIGRldmljZSAnJHt0aGlzLnVkaWR9JyBoYXMgZXhpdGVkIGAgK1xuICAgICAgICBgd2l0aCBjb2RlICR7Y29kZX0sIHNpZ25hbCAke3NpZ25hbH1gKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlzQ2FwdHVyaW5nICgpIHtcbiAgICByZXR1cm4gISEodGhpcy5tYWluUHJvY2Vzcz8uaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIGludGVycnVwdCAoZm9yY2UgPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLmlzQ2FwdHVyaW5nKCkpIHtcbiAgICAgIGNvbnN0IGludGVycnVwdFByb21pc2UgPSB0aGlzLm1haW5Qcm9jZXNzLnN0b3AoZm9yY2UgPyAnU0lHVEVSTScgOiAnU0lHSU5UJyk7XG4gICAgICB0aGlzLm1haW5Qcm9jZXNzID0gbnVsbDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGludGVycnVwdFByb21pc2U7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZy53YXJuKGBDYW5ub3QgJHtmb3JjZSA/ICd0ZXJtaW5hdGUnIDogJ2ludGVycnVwdCd9IHRoZSB0cmFmZmljIGNhcHR1cmUgc2Vzc2lvbi4gYCArXG4gICAgICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgZmluaXNoICgpIHtcbiAgICBhd2FpdCB0aGlzLmludGVycnVwdCgpO1xuICAgIHJldHVybiB0aGlzLnJlc3VsdFBhdGg7XG4gIH1cblxuICBhc3luYyBjbGVhbnVwICgpIHtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKHRoaXMucmVzdWx0UGF0aCkpIHtcbiAgICAgIGF3YWl0IGZzLnJpbXJhZih0aGlzLnJlc3VsdFBhdGgpO1xuICAgIH1cbiAgfVxufVxuXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RhcnRDYXB0dXJlT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IHRpbWVMaW1pdFNlYyBbMTgwXSAtIFRoZSBtYXhpbXVtIHRyYWZmaWMgY2FwdHVyZSB0aW1lLCBpbiBzZWNvbmRzLlxuICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTgwLCB0aGUgbWF4aW11bSB2YWx1ZSBpcyA0MzIwMCAoMTIgaG91cnMpLlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gZm9yY2VSZXN0YXJ0IFtmYWxzZV0gLSBXaGV0aGVyIHRvIHJlc3RhcnQgYXVkaW8gY2FwdHVyZSBwcm9jZXNzIGZvcmNlZnVsbHkgd2hlblxuICogc3RhcnRQY2FwIGlzIGNhbGxlZCAoYHRydWVgKSBvciBpZ25vcmUgdGhlIGNhbGwgdW50aWwgdGhlIGN1cnJlbnQgbmV0d29yayB0cmFmZmljIGNhcHR1cmUgaXMgY29tcGxldGVkLlxuICovXG5cbi8qKlxuICogUmVjb3JkcyB0aGUgZ2l2ZW4gbmV0d29yayB0cmFmZmljIGNhcHR1cmUgaW50byBhIC5wY2FwIGZpbGUuXG4gKlxuICogQHBhcmFtIHs/U3RhcnRDYXB0dXJlT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBhdmFpbGFibGUgb3B0aW9ucy5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBuZXR3b3JrIHRyYWZmaWMgY2FwdHVyZSBoYXMgZmFpbGVkIHRvIHN0YXJ0LlxuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydFBjYXAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydFBjYXAgKG9wdGlvbnMgPSB7fSkge1xuICBpZiAodGhpcy5pc1NpbXVsYXRvcigpKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coJ05ldHdvcmsgdHJhZmZpYyBjYXB0dXJlIG9ubHkgd29ya3Mgb24gcmVhbCBkZXZpY2VzJyk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgdGltZUxpbWl0U2VjID0gREVGQVVMVF9DQVBUVVJFX1RJTUVfU0VDLFxuICAgIGZvcmNlUmVzdGFydCxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKHRoaXMuX3RyYWZmaWNDYXB0dXJlPy5pc0NhcHR1cmluZygpKSB7XG4gICAgbG9nLmluZm8oYFRoZXJlIGlzIGFuIGFjdGl2ZSB0cmFmZmljIGNhcHR1cmUgcHJvY2Vzc2ApO1xuICAgIGlmIChmb3JjZVJlc3RhcnQpIHtcbiAgICAgIGxvZy5pbmZvKGBTdG9wcGluZyBpdCBiZWNhdXNlICdmb3JjZVJlc3RhcnQnIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZWApO1xuICAgICAgYXdhaXQgdGhpcy5fdHJhZmZpY0NhcHR1cmUuaW50ZXJydXB0KHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2cuaW5mbyhgRG9pbmcgbm90aGluZy4gYCArXG4gICAgICAgIGBTZXQgJ2ZvcmNlUmVzdGFydCcgb3B0aW9uIHRvIHRydWUgaWYgeW91J2QgbGlrZSB0byBzdGFydCBhIG5ldyB0cmFmZmljIGNhcHR1cmUgc2Vzc2lvbmApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBpZiAodGhpcy5fdHJhZmZpY0NhcHR1cmUpIHtcbiAgICBhd2FpdCB0aGlzLl90cmFmZmljQ2FwdHVyZS5jbGVhbnVwKCk7XG4gICAgdGhpcy5fdHJhZmZpY0NhcHR1cmUgPSBudWxsO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0UGF0aCA9IGF3YWl0IHRlbXBEaXIucGF0aCh7XG4gICAgcHJlZml4OiBgYXBwaXVtXyR7dXRpbC51dWlkVjQoKS5zdWJzdHJpbmcoMCwgOCl9YCxcbiAgICBzdWZmaXg6IERFRkFVTFRfRVhULFxuICB9KTtcblxuICBjb25zdCB0cmFmZmljQ29sbGVjdG9yID0gbmV3IFRyYWZmaWNDYXB0dXJlKHRoaXMub3B0cy5kZXZpY2UudWRpZCwgcmVzdWx0UGF0aCk7XG5cbiAgY29uc3QgdGltZW91dFNlY29uZHMgPSBwYXJzZUludCh0aW1lTGltaXRTZWMsIDEwKTtcbiAgaWYgKGlzTmFOKHRpbWVvdXRTZWNvbmRzKSB8fCB0aW1lb3V0U2Vjb25kcyA+IE1BWF9DQVBUVVJFX1RJTUVfU0VDIHx8IHRpbWVvdXRTZWNvbmRzIDw9IDApIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdyhgVGhlIHRpbWVMaW1pdFNlYyB2YWx1ZSBtdXN0IGJlIGluIHJhbmdlIFsxLCAke01BWF9DQVBUVVJFX1RJTUVfU0VDfV0gc2Vjb25kcy4gYCArXG4gICAgICBgVGhlIHZhbHVlIG9mICcke3RpbWVMaW1pdFNlY30nIGhhcyBiZWVuIHBhc3NlZCBpbnN0ZWFkLmApO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCB0cmFmZmljQ29sbGVjdG9yLnN0YXJ0KHRpbWVvdXRTZWNvbmRzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGF3YWl0IHRyYWZmaWNDb2xsZWN0b3IuaW50ZXJydXB0KHRydWUpO1xuICAgIGF3YWl0IHRyYWZmaWNDb2xsZWN0b3IuY2xlYW51cCgpO1xuICAgIHRocm93IGU7XG4gIH1cbiAgdGhpcy5fdHJhZmZpY0NhcHR1cmUgPSB0cmFmZmljQ29sbGVjdG9yO1xufTtcblxuLyoqXG4gKiBTdG9wIGNhcHR1cmUgb2YgdGhlIGRldmljZSBuZXR3b3JrIHRyYWZmaWMuIElmIG5vIHRyYWZmaWMgY2FwdHVyZSBwcm9jZXNzIGlzIHJ1bm5pbmcgdGhlblxuICogdGhlIGVuZHBvaW50IHdpbGwgdHJ5IHRvIGdldCB0aGUgcmVjZW50bHkgcmVjb3JkZWQgZmlsZS5cbiAqIElmIG5vIHByZXZpb3VzbHkgcmVjb3JkZWQgZmlsZSBpcyBmb3VuZCBhbmQgbm8gYWN0aXZlIHRyYWZmaWMgY2FwdHVyZVxuICogcHJvY2Vzc2VzIGFyZSBydW5uaW5nIHRoZW4gdGhlIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQtZW5jb2RlZCBjb250ZW50IG9mIHRoZSByZWNvcmRlZCBwY2FwIGZpbGUgb3IgYW5cbiAqIGVtcHR5IHN0cmluZyBpZiBubyB0cmFmZmljIGNhcHR1cmUgaGFzIGJlZW4gc3RhcnRlZCBiZWZvcmUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGdldHRpbmcgdGhlIGNhcHR1cmUgZmlsZS5cbiAqL1xuY29tbWFuZHMubW9iaWxlU3RvcFBjYXAgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdG9wUGNhcCAoKSB7XG4gIGlmICghdGhpcy5fdHJhZmZpY0NhcHR1cmUpIHtcbiAgICBsb2cuaW5mbygnTmV0d29yayB0cmFmZmljIGNvbGxlY3RvciBoYXMgbm90IGJlZW4gc3RhcnRlZC4gVGhlcmUgaXMgbm90aGluZyB0byBzdG9wJyk7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgbGV0IHJlc3VsdFBhdGg7XG4gIHRyeSB7XG4gICAgcmVzdWx0UGF0aCA9IGF3YWl0IHRoaXMuX3RyYWZmaWNDYXB0dXJlLmZpbmlzaCgpO1xuICAgIGlmICghYXdhaXQgZnMuZXhpc3RzKHJlc3VsdFBhdGgpKSB7XG4gICAgICBsb2cuZXJyb3JBbmRUaHJvdyhgVGhlIG5ldHdvcmsgdHJhZmZpYyBjYXB0dXJlIHV0aWxpdHkgaGFzIGZhaWxlZCBgICtcbiAgICAgICAgYHRvIHN0b3JlIHRoZSBhY3R1YWwgdHJhZmZpYyBjYXB0dXJlIGF0ICcke3Jlc3VsdFBhdGh9J2ApO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGF3YWl0IHRoaXMuX3RyYWZmaWNDYXB0dXJlLmludGVycnVwdCh0cnVlKTtcbiAgICBhd2FpdCB0aGlzLl90cmFmZmljQ2FwdHVyZS5jbGVhbnVwKCk7XG4gICAgdGhpcy5fdHJhZmZpY0NhcHR1cmUgPSBudWxsO1xuICAgIHRocm93IGU7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IGVuY29kZUJhc2U2NE9yVXBsb2FkKHJlc3VsdFBhdGgpO1xufTtcblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvcGNhcC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|