appium-ios-device 2.4.6 → 2.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/build/lib/afc/index.js +1 -12
- package/build/lib/afc/index.js.map +1 -1
- package/build/lib/afc/streams.js +1 -2
- package/build/lib/afc/streams.js.map +1 -1
- package/build/lib/base-service.js +1 -3
- package/build/lib/base-service.js.map +1 -1
- package/build/lib/house-arrest/index.js +1 -3
- package/build/lib/house-arrest/index.js.map +1 -1
- package/build/lib/installation-proxy/index.js +1 -6
- package/build/lib/installation-proxy/index.js.map +1 -1
- package/build/lib/instrument/headers.js +1 -21
- package/build/lib/instrument/headers.js.map +1 -1
- package/build/lib/instrument/index.js +1 -10
- package/build/lib/instrument/index.js.map +1 -1
- package/build/lib/instrument/transformer/nskeyed.js +1 -13
- package/build/lib/instrument/transformer/nskeyed.js.map +1 -1
- package/build/lib/lockdown/index.js +1 -5
- package/build/lib/lockdown/index.js.map +1 -1
- package/build/lib/mcinstall/index.js +1 -4
- package/build/lib/mcinstall/index.js.map +1 -1
- package/build/lib/notification-proxy/index.js +1 -4
- package/build/lib/notification-proxy/index.js.map +1 -1
- package/build/lib/simulatelocation/index.js +1 -2
- package/build/lib/simulatelocation/index.js.map +1 -1
- package/build/lib/ssl-helper.js +1 -3
- package/build/lib/ssl-helper.js.map +1 -1
- package/build/lib/syslog/index.js +1 -2
- package/build/lib/syslog/index.js.map +1 -1
- package/build/lib/syslog/transformer/syslog-decoder.js +1 -2
- package/build/lib/syslog/transformer/syslog-decoder.js.map +1 -1
- package/build/lib/usbmux/index.js +1 -8
- package/build/lib/usbmux/index.js.map +1 -1
- package/build/lib/util/transformer/stream-logger.js +1 -2
- package/build/lib/util/transformer/stream-logger.js.map +1 -1
- package/build/lib/utilities.js +1 -9
- package/build/lib/utilities.js.map +1 -1
- package/build/lib/webinspector/index.js +3 -12
- package/build/lib/webinspector/index.js.map +1 -1
- package/package.json +2 -1
|
@@ -8,7 +8,6 @@ exports.default = exports.InstallationProxyService = exports.INSTALLATION_PROXY_
|
|
|
8
8
|
require("source-map-support/register");
|
|
9
9
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
10
10
|
var _baseService = require("../base-service");
|
|
11
|
-
|
|
12
11
|
const INSTALLATION_PROXY_SERVICE_NAME = 'com.apple.mobile.installation_proxy';
|
|
13
12
|
exports.INSTALLATION_PROXY_SERVICE_NAME = INSTALLATION_PROXY_SERVICE_NAME;
|
|
14
13
|
class InstallationProxyService extends _baseService.BaseServicePlist {
|
|
@@ -21,7 +20,6 @@ class InstallationProxyService extends _baseService.BaseServicePlist {
|
|
|
21
20
|
this._plistService.sendPlist(request);
|
|
22
21
|
return await this._waitMessageCompletion(timeout);
|
|
23
22
|
}
|
|
24
|
-
|
|
25
23
|
async upgradeApplication(path, clientOptions = {}, timeout = 60000) {
|
|
26
24
|
const request = {
|
|
27
25
|
Command: 'Upgrade',
|
|
@@ -31,7 +29,6 @@ class InstallationProxyService extends _baseService.BaseServicePlist {
|
|
|
31
29
|
this._plistService.sendPlist(request);
|
|
32
30
|
return await this._waitMessageCompletion(timeout);
|
|
33
31
|
}
|
|
34
|
-
|
|
35
32
|
async listApplications(opts = {}) {
|
|
36
33
|
const request = {
|
|
37
34
|
Command: 'Browse',
|
|
@@ -55,7 +52,6 @@ class InstallationProxyService extends _baseService.BaseServicePlist {
|
|
|
55
52
|
return acc;
|
|
56
53
|
}, {});
|
|
57
54
|
}
|
|
58
|
-
|
|
59
55
|
async lookupApplications(opts = {}) {
|
|
60
56
|
const request = {
|
|
61
57
|
Command: 'Lookup',
|
|
@@ -79,7 +75,6 @@ class InstallationProxyService extends _baseService.BaseServicePlist {
|
|
|
79
75
|
}
|
|
80
76
|
throw new Error(`Could not find LookupResult in the response: Response: ${JSON.stringify(messages)}`);
|
|
81
77
|
}
|
|
82
|
-
|
|
83
78
|
async uninstallApplication(bundleId, timeout = 20000) {
|
|
84
79
|
const request = {
|
|
85
80
|
Command: 'Uninstall',
|
|
@@ -111,4 +106,4 @@ class InstallationProxyService extends _baseService.BaseServicePlist {
|
|
|
111
106
|
exports.InstallationProxyService = InstallationProxyService;
|
|
112
107
|
var _default = InstallationProxyService;
|
|
113
108
|
exports.default = _default;
|
|
114
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJTlNUQUxMQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FIiwiSW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlIiwiQmFzZVNlcnZpY2VQbGlzdCIsImluc3RhbGxBcHBsaWNhdGlvbiIsInBhdGgiLCJjbGllbnRPcHRpb25zIiwidGltZW91dCIsInJlcXVlc3QiLCJDb21tYW5kIiwiUGFja2FnZVBhdGgiLCJDbGllbnRPcHRpb25zIiwiX3BsaXN0U2VydmljZSIsInNlbmRQbGlzdCIsIl93YWl0TWVzc2FnZUNvbXBsZXRpb24iLCJ1cGdyYWRlQXBwbGljYXRpb24iLCJsaXN0QXBwbGljYXRpb25zIiwib3B0cyIsImFwcGxpY2F0aW9uVHlwZSIsIkFwcGxpY2F0aW9uVHlwZSIsInJldHVybkF0dHJpYnV0ZXMiLCJSZXR1cm5BdHRyaWJ1dGVzIiwibWVzc2FnZXMiLCJyZWR1Y2UiLCJhY2MiLCJtZXNzYWdlIiwiQ3VycmVudExpc3QiLCJmb3JFYWNoIiwiYXBwIiwiQ0ZCdW5kbGVJZGVudGlmaWVyIiwibG9va3VwQXBwbGljYXRpb25zIiwiYnVuZGxlSWRzIiwiQnVuZGxlSURzIiwiXyIsImlzU3RyaW5nIiwiTG9va3VwUmVzdWx0IiwiRXJyb3IiLCJKU09OIiwic3RyaW5naWZ5IiwidW5pbnN0YWxsQXBwbGljYXRpb24iLCJidW5kbGVJZCIsIkFwcGxpY2F0aW9uSWRlbnRpZmllciIsImkiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwiZGF0YSIsInJlY2VpdmVQbGlzdCIsInB1c2giLCJfaXNGaW5pc2hlZCIsInJlc3BvbnNlIiwiU3RhdHVzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2luc3RhbGxhdGlvbi1wcm94eS9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2VQbGlzdCB9IGZyb20gJy4uL2Jhc2Utc2VydmljZSc7XG5cbi8qXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdG1vdGh5MjAwMTMvbGliaW1vYmlsZWRldmljZS1tYXN0ZXIvYmxvYi9lY2Q4OWI0MjAyMWNmNmY3ZWZlOWFkMjcxYjNiZGRjN2RkNGIyODFlL3NyYy9pbnN0YWxsYXRpb25fcHJveHkuY1xuICovXG5cbmNvbnN0IElOU1RBTExBVElPTl9QUk9YWV9TRVJWSUNFX05BTUUgPSAnY29tLmFwcGxlLm1vYmlsZS5pbnN0YWxsYXRpb25fcHJveHknO1xuXG5jbGFzcyBJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZVBsaXN0IHtcbiAgLyoqXG4gICAqIEluc3RhbGwgdGhlIGFwcGxpY2F0aW9uIG9uIHRoZSByZWxhdGl2ZSBwYXRoIG9uIHRoZSBwaG9uZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgcGF0aCB3aGVyZSB0aGUgLmFwcCBhbmQgLmlwYSBpcyBsb2NhdGVkIGF0IG9uIHRoZSBwaG9uZVxuICAgKiBAcGFyYW0ge09iamVjdH0gY2xpZW50T3B0aW9ucyBUaGUgZXh0cmEgb3B0aW9ucyB0aGF0IHdhbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgaW5zdGFsbGRcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWVvdXQgWzYwMDAwXSBUaGUgdGltZW91dCBiZXR3ZWVuIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gdGhlIHBob25lIGFzIHN0YXR1cyB1cGRhdGVzXG4gICAqL1xuICBhc3luYyBpbnN0YWxsQXBwbGljYXRpb24gKHBhdGgsIGNsaWVudE9wdGlvbnMgPSB7fSwgdGltZW91dCA9IDYwMDAwKSB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIENvbW1hbmQ6ICdJbnN0YWxsJyxcbiAgICAgIFBhY2thZ2VQYXRoOiBwYXRoLFxuICAgICAgQ2xpZW50T3B0aW9uczogY2xpZW50T3B0aW9uc1xuICAgIH07XG5cbiAgICB0aGlzLl9wbGlzdFNlcnZpY2Uuc2VuZFBsaXN0KHJlcXVlc3QpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl93YWl0TWVzc2FnZUNvbXBsZXRpb24odGltZW91dCk7XG4gIH1cblxuICAvKipcbiAgICogVXBncmFkZXMgdGhlIGdpdmVuIGFwcGxpY2F0aW9uIGZyb20gdGhlIHJlbGF0aXZlIHBhdGggb24gdGhlIHBob25lLlxuICAgKiBJdCBpcyByZXF1aXJlZCB0aGF0IGEgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUgc2FtZSBhcHAgaXMgYWxyZWFkeSBpbnN0YWxsZWQgaW4gb3JkZXJcbiAgICogdG8gY2FsbCB0aGlzIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggd2hlcmUgdGhlIC5hcHAgYW5kIC5pcGEgaXMgbG9jYXRlZCBhdCBvbiB0aGUgcGhvbmVcbiAgICogQHBhcmFtIHtPYmplY3R9IGNsaWVudE9wdGlvbnMgVGhlIGV4dHJhIG9wdGlvbnMgdGhhdCB3YW50cyB0byBiZSBwYXNzZWQgdG8gdGhlIGluc3RhbGxkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lb3V0IFs2MDAwMF0gVGhlIHRpbWVvdXQgYmV0d2VlbiBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoZSBwaG9uZSBhcyBzdGF0dXMgdXBkYXRlc1xuICAgKi9cbiAgYXN5bmMgdXBncmFkZUFwcGxpY2F0aW9uIChwYXRoLCBjbGllbnRPcHRpb25zID0ge30sIHRpbWVvdXQgPSA2MDAwMCkge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBDb21tYW5kOiAnVXBncmFkZScsXG4gICAgICBQYWNrYWdlUGF0aDogcGF0aCxcbiAgICAgIENsaWVudE9wdGlvbnM6IGNsaWVudE9wdGlvbnNcbiAgICB9O1xuXG4gICAgdGhpcy5fcGxpc3RTZXJ2aWNlLnNlbmRQbGlzdChyZXF1ZXN0KTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fd2FpdE1lc3NhZ2VDb21wbGV0aW9uKHRpbWVvdXQpO1xuICB9XG5cbiAgLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBMaXN0QXBwbGljYXRpb25PcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFwcGxpY2F0aW9uVHlwZSBvZiB0aGUgd2hpY2ggZ3JvdXAgeW91IHdhbnQgdG8gbGlzdC4gVGhlc2UgY2FuIGJlIFVzZXIsIFN5c3RlbSBvciBsZWF2ZSBpdCBlbXB0eSBmb3IgYm90aFxuICogQHByb3BlcnR5IHtBcnJheX0gcmV0dXJuQXR0cmlidXRlcyB0aGUgZmllbGRzIHdoaWNoIHNob3VsZCBiZSBmaWx0ZXJlZCBhbmQgcmV0dXJuZWQgdG8gdGhlIGNsaWVudC4gTGVhdmUgdGhpcyBwYXJhbWV0ZXIgZW1wdHkgaWYgeW91IGRvbid0IHdhbnQgdG8gZmlsdGVyXG4gKi9cblxuICAvKipcbiAgICogTGlzdHMgYXBwbGljYXRpb25zIGFjY29yZGluZyB0byB0aGUgb3B0cyBhbmQgcmV0dXJucyB0aGVtIGFzIGEgbWFwXG4gICAqIEBwYXJhbSB7TGlzdEFwcGxpY2F0aW9uT3B0aW9uc30gb3B0cyB0aGUgbGlzdGluZyBvcHRpb25zIHRoYXQgd2FudHMgdG8gYmUgcGFzc2VkXG4gICAqIEByZXR1cm5zIEEgbWFwIG9mIHRoZSBhcHBsaWNhdGlvbnMgd2hpY2ggdGhlIGtleSBpcyB0aGUgYnVuZGxlSWRcbiAgICovXG4gIGFzeW5jIGxpc3RBcHBsaWNhdGlvbnMgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBDb21tYW5kOiAnQnJvd3NlJyxcbiAgICAgIENsaWVudE9wdGlvbnM6IHt9XG4gICAgfTtcblxuICAgIGlmIChvcHRzLmFwcGxpY2F0aW9uVHlwZSkge1xuICAgICAgcmVxdWVzdC5DbGllbnRPcHRpb25zLkFwcGxpY2F0aW9uVHlwZSA9IG9wdHMuYXBwbGljYXRpb25UeXBlO1xuICAgIH1cbiAgICBpZiAob3B0cy5yZXR1cm5BdHRyaWJ1dGVzKSB7XG4gICAgICByZXF1ZXN0LkNsaWVudE9wdGlvbnMuUmV0dXJuQXR0cmlidXRlcyA9IG9wdHMucmV0dXJuQXR0cmlidXRlcztcbiAgICB9XG5cbiAgICB0aGlzLl9wbGlzdFNlcnZpY2Uuc2VuZFBsaXN0KHJlcXVlc3QpO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gYXdhaXQgdGhpcy5fd2FpdE1lc3NhZ2VDb21wbGV0aW9uKCk7XG4gICAgcmV0dXJuIG1lc3NhZ2VzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBtZXNzYWdlKSB7XG4gICAgICBpZiAoIW1lc3NhZ2UuQ3VycmVudExpc3QpIHtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cbiAgICAgIG1lc3NhZ2UuQ3VycmVudExpc3QuZm9yRWFjaChmdW5jdGlvbiAoYXBwKSB7XG4gICAgICAgIGFjY1thcHAuQ0ZCdW5kbGVJZGVudGlmaWVyXSA9IGFwcDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gIH1cblxuICAvKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IExvb2t1cEFwcGxpY2F0aW9uT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBsaWNhdGlvblR5cGUgb2YgdGhlIHdoaWNoIGdyb3VwIHlvdSB3YW50IHRvIGxpc3QuIFRoZXNlIGNhbiBiZSBVc2VyLCBTeXN0ZW0gb3IgbGVhdmUgaXQgZW1wdHkgZm9yIGJvdGhcbiAqIEBwcm9wZXJ0eSB7QXJyYXl9IHJldHVybkF0dHJpYnV0ZXMgdGhlIGZpZWxkcyB3aGljaCBzaG91bGQgYmUgZmlsdGVyZWQgYW5kIHJldHVybmVkIHRvIHRoZSBjbGllbnQuIExlYXZlIHRoaXMgcGFyYW1ldGVyIGVtcHR5IGlmIHlvdSBkb24ndCB3YW50IHRvIGZpbHRlclxuICogQHByb3BlcnR5IHtzdHJpbmd8QXJyYXl9IGJ1bmRsZUlkcyBCdW5kbGUgSWRzIG9mIHRoZSBhcHBzIHRoYXQgc2hvdWxkIGJlIHNlYXJjaGVkXG4gKi9cblxuICAvKipcbiAgICogTGlzdHMgYXBwbGljYXRpb25zIGFjY29yZGluZyB0byB0aGUgb3B0cyBhbmQgcmV0dXJucyB0aGVtIGFzIGEgbWFwXG4gICAqIEBwYXJhbSB7TG9va3VwQXBwbGljYXRpb25PcHRpb25zfSBvcHRzIHRoZSBsb29rdXAgb3B0aW9ucyB0aGF0IHdhbnRzIHRvIGJlIHBhc3NlZFxuICAgKiBAcmV0dXJucyBBIG1hcCBvZiB0aGUgYXBwbGljYXRpb25zIHdoaWNoIHRoZSBrZXkgaXMgdGhlIGJ1bmRsZUlkXG4gICAqL1xuICBhc3luYyBsb29rdXBBcHBsaWNhdGlvbnMgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBDb21tYW5kOiAnTG9va3VwJyxcbiAgICAgIENsaWVudE9wdGlvbnM6IHt9XG4gICAgfTtcbiAgICBpZiAob3B0cy5idW5kbGVJZHMpIHtcbiAgICAgIHJlcXVlc3QuQ2xpZW50T3B0aW9ucy5CdW5kbGVJRHMgPSBfLmlzU3RyaW5nKG9wdHMuYnVuZGxlSWRzKSA/IFtvcHRzLmJ1bmRsZUlkc10gOiBvcHRzLmJ1bmRsZUlkcztcbiAgICB9XG4gICAgaWYgKG9wdHMuYXBwbGljYXRpb25UeXBlKSB7XG4gICAgICByZXF1ZXN0LkNsaWVudE9wdGlvbnMuQXBwbGljYXRpb25UeXBlID0gb3B0cy5hcHBsaWNhdGlvblR5cGU7XG4gICAgfVxuICAgIGlmIChvcHRzLnJldHVybkF0dHJpYnV0ZXMpIHtcbiAgICAgIHJlcXVlc3QuQ2xpZW50T3B0aW9ucy5SZXR1cm5BdHRyaWJ1dGVzID0gb3B0cy5yZXR1cm5BdHRyaWJ1dGVzO1xuICAgIH1cblxuICAgIHRoaXMuX3BsaXN0U2VydmljZS5zZW5kUGxpc3QocmVxdWVzdCk7XG4gICAgY29uc3QgbWVzc2FnZXMgPSBhd2FpdCB0aGlzLl93YWl0TWVzc2FnZUNvbXBsZXRpb24oKTtcbiAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgbWVzc2FnZXMpIHtcbiAgICAgIGlmIChtZXNzYWdlLkxvb2t1cFJlc3VsdCkge1xuICAgICAgICByZXR1cm4gbWVzc2FnZS5Mb29rdXBSZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgTG9va3VwUmVzdWx0IGluIHRoZSByZXNwb25zZTogUmVzcG9uc2U6ICR7SlNPTi5zdHJpbmdpZnkobWVzc2FnZXMpfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuaW5zdGFsbHMgYW4gYXBwbGljYXRpb24gYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBidW5kbGVJZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgb2YgdGhlIGFwcCB0aGF0IG5lZWRzIHRvIGJlIHBhc3NlZCBmb3IgdW5pbnN0YWxsYXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWVvdXQgVGhlIHRpbWVvdXQgYmV0d2VlbiBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoZSBwaG9uZSBhcyBzdGF0dXMgdXBkYXRlc1xuICAgKi9cbiAgYXN5bmMgdW5pbnN0YWxsQXBwbGljYXRpb24gKGJ1bmRsZUlkLCB0aW1lb3V0ID0gMjAwMDApIHtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgQ29tbWFuZDogJ1VuaW5zdGFsbCcsXG4gICAgICBBcHBsaWNhdGlvbklkZW50aWZpZXI6IGJ1bmRsZUlkXG4gICAgfTtcblxuICAgIHRoaXMuX3BsaXN0U2VydmljZS5zZW5kUGxpc3QocmVxdWVzdCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3dhaXRNZXNzYWdlQ29tcGxldGlvbih0aW1lb3V0KTtcbiAgfVxuXG4gIGFzeW5jIF93YWl0TWVzc2FnZUNvbXBsZXRpb24gKHRpbWVvdXQpIHtcbiAgICBsZXQgbWVzc2FnZXMgPSBbXTtcbiAgICAvLyBKdXN0IGFkZGVkIGZvciBzYWZldHkuIFRoaXMgc2hvdWxkbid0IGhhcHBlblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7IGkrKykge1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuX3BsaXN0U2VydmljZS5yZWNlaXZlUGxpc3QodGltZW91dCk7XG4gICAgICBtZXNzYWdlcy5wdXNoKGRhdGEpO1xuICAgICAgaWYgKHRoaXMuX2lzRmluaXNoZWQoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9pc0ZpbmlzaGVkIChyZXNwb25zZSkge1xuICAgIGlmIChyZXNwb25zZS5FcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpfWApO1xuICAgIH1cblxuICAgIGlmICghcmVzcG9uc2UuU3RhdHVzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZS5TdGF0dXMgPT09ICdDb21wbGV0ZSc7XG4gIH1cbn1cblxuZXhwb3J0IHsgSW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlLCBJTlNUQUxMQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FIH07XG5leHBvcnQgZGVmYXVsdCBJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2U7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTs7QUFNQSxNQUFNQSwrQkFBK0IsR0FBRyxxQ0FBcUM7QUFBQztBQUU5RSxNQUFNQyx3QkFBd0IsU0FBU0MsNkJBQWdCLENBQUM7RUFPdEQsTUFBTUMsa0JBQWtCLENBQUVDLElBQUksRUFBRUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFQyxPQUFPLEdBQUcsS0FBSyxFQUFFO0lBQ25FLE1BQU1DLE9BQU8sR0FBRztNQUNkQyxPQUFPLEVBQUUsU0FBUztNQUNsQkMsV0FBVyxFQUFFTCxJQUFJO01BQ2pCTSxhQUFhLEVBQUVMO0lBQ2pCLENBQUM7SUFFRCxJQUFJLENBQUNNLGFBQWEsQ0FBQ0MsU0FBUyxDQUFDTCxPQUFPLENBQUM7SUFDckMsT0FBTyxNQUFNLElBQUksQ0FBQ00sc0JBQXNCLENBQUNQLE9BQU8sQ0FBQztFQUNuRDs7RUFXQSxNQUFNUSxrQkFBa0IsQ0FBRVYsSUFBSSxFQUFFQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLEVBQUVDLE9BQU8sR0FBRyxLQUFLLEVBQUU7SUFDbkUsTUFBTUMsT0FBTyxHQUFH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
|
|
109
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJTlNUQUxMQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FIiwiSW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlIiwiQmFzZVNlcnZpY2VQbGlzdCIsImluc3RhbGxBcHBsaWNhdGlvbiIsInBhdGgiLCJjbGllbnRPcHRpb25zIiwidGltZW91dCIsInJlcXVlc3QiLCJDb21tYW5kIiwiUGFja2FnZVBhdGgiLCJDbGllbnRPcHRpb25zIiwiX3BsaXN0U2VydmljZSIsInNlbmRQbGlzdCIsIl93YWl0TWVzc2FnZUNvbXBsZXRpb24iLCJ1cGdyYWRlQXBwbGljYXRpb24iLCJsaXN0QXBwbGljYXRpb25zIiwib3B0cyIsImFwcGxpY2F0aW9uVHlwZSIsIkFwcGxpY2F0aW9uVHlwZSIsInJldHVybkF0dHJpYnV0ZXMiLCJSZXR1cm5BdHRyaWJ1dGVzIiwibWVzc2FnZXMiLCJyZWR1Y2UiLCJhY2MiLCJtZXNzYWdlIiwiQ3VycmVudExpc3QiLCJmb3JFYWNoIiwiYXBwIiwiQ0ZCdW5kbGVJZGVudGlmaWVyIiwibG9va3VwQXBwbGljYXRpb25zIiwiYnVuZGxlSWRzIiwiQnVuZGxlSURzIiwiXyIsImlzU3RyaW5nIiwiTG9va3VwUmVzdWx0IiwiRXJyb3IiLCJKU09OIiwic3RyaW5naWZ5IiwidW5pbnN0YWxsQXBwbGljYXRpb24iLCJidW5kbGVJZCIsIkFwcGxpY2F0aW9uSWRlbnRpZmllciIsImkiLCJOdW1iZXIiLCJNQVhfU0FGRV9JTlRFR0VSIiwiZGF0YSIsInJlY2VpdmVQbGlzdCIsInB1c2giLCJfaXNGaW5pc2hlZCIsInJlc3BvbnNlIiwiU3RhdHVzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2luc3RhbGxhdGlvbi1wcm94eS9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2VQbGlzdCB9IGZyb20gJy4uL2Jhc2Utc2VydmljZSc7XG5cbi8qXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdG1vdGh5MjAwMTMvbGliaW1vYmlsZWRldmljZS1tYXN0ZXIvYmxvYi9lY2Q4OWI0MjAyMWNmNmY3ZWZlOWFkMjcxYjNiZGRjN2RkNGIyODFlL3NyYy9pbnN0YWxsYXRpb25fcHJveHkuY1xuICovXG5cbmNvbnN0IElOU1RBTExBVElPTl9QUk9YWV9TRVJWSUNFX05BTUUgPSAnY29tLmFwcGxlLm1vYmlsZS5pbnN0YWxsYXRpb25fcHJveHknO1xuXG5jbGFzcyBJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZVBsaXN0IHtcbiAgLyoqXG4gICAqIEluc3RhbGwgdGhlIGFwcGxpY2F0aW9uIG9uIHRoZSByZWxhdGl2ZSBwYXRoIG9uIHRoZSBwaG9uZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgcGF0aCB3aGVyZSB0aGUgLmFwcCBhbmQgLmlwYSBpcyBsb2NhdGVkIGF0IG9uIHRoZSBwaG9uZVxuICAgKiBAcGFyYW0ge09iamVjdH0gY2xpZW50T3B0aW9ucyBUaGUgZXh0cmEgb3B0aW9ucyB0aGF0IHdhbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgaW5zdGFsbGRcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWVvdXQgWzYwMDAwXSBUaGUgdGltZW91dCBiZXR3ZWVuIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gdGhlIHBob25lIGFzIHN0YXR1cyB1cGRhdGVzXG4gICAqL1xuICBhc3luYyBpbnN0YWxsQXBwbGljYXRpb24gKHBhdGgsIGNsaWVudE9wdGlvbnMgPSB7fSwgdGltZW91dCA9IDYwMDAwKSB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIENvbW1hbmQ6ICdJbnN0YWxsJyxcbiAgICAgIFBhY2thZ2VQYXRoOiBwYXRoLFxuICAgICAgQ2xpZW50T3B0aW9uczogY2xpZW50T3B0aW9uc1xuICAgIH07XG5cbiAgICB0aGlzLl9wbGlzdFNlcnZpY2Uuc2VuZFBsaXN0KHJlcXVlc3QpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl93YWl0TWVzc2FnZUNvbXBsZXRpb24odGltZW91dCk7XG4gIH1cblxuICAvKipcbiAgICogVXBncmFkZXMgdGhlIGdpdmVuIGFwcGxpY2F0aW9uIGZyb20gdGhlIHJlbGF0aXZlIHBhdGggb24gdGhlIHBob25lLlxuICAgKiBJdCBpcyByZXF1aXJlZCB0aGF0IGEgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUgc2FtZSBhcHAgaXMgYWxyZWFkeSBpbnN0YWxsZWQgaW4gb3JkZXJcbiAgICogdG8gY2FsbCB0aGlzIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggd2hlcmUgdGhlIC5hcHAgYW5kIC5pcGEgaXMgbG9jYXRlZCBhdCBvbiB0aGUgcGhvbmVcbiAgICogQHBhcmFtIHtPYmplY3R9IGNsaWVudE9wdGlvbnMgVGhlIGV4dHJhIG9wdGlvbnMgdGhhdCB3YW50cyB0byBiZSBwYXNzZWQgdG8gdGhlIGluc3RhbGxkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lb3V0IFs2MDAwMF0gVGhlIHRpbWVvdXQgYmV0d2VlbiBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoZSBwaG9uZSBhcyBzdGF0dXMgdXBkYXRlc1xuICAgKi9cbiAgYXN5bmMgdXBncmFkZUFwcGxpY2F0aW9uIChwYXRoLCBjbGllbnRPcHRpb25zID0ge30sIHRpbWVvdXQgPSA2MDAwMCkge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBDb21tYW5kOiAnVXBncmFkZScsXG4gICAgICBQYWNrYWdlUGF0aDogcGF0aCxcbiAgICAgIENsaWVudE9wdGlvbnM6IGNsaWVudE9wdGlvbnNcbiAgICB9O1xuXG4gICAgdGhpcy5fcGxpc3RTZXJ2aWNlLnNlbmRQbGlzdChyZXF1ZXN0KTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fd2FpdE1lc3NhZ2VDb21wbGV0aW9uKHRpbWVvdXQpO1xuICB9XG5cbiAgLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBMaXN0QXBwbGljYXRpb25PcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFwcGxpY2F0aW9uVHlwZSBvZiB0aGUgd2hpY2ggZ3JvdXAgeW91IHdhbnQgdG8gbGlzdC4gVGhlc2UgY2FuIGJlIFVzZXIsIFN5c3RlbSBvciBsZWF2ZSBpdCBlbXB0eSBmb3IgYm90aFxuICogQHByb3BlcnR5IHtBcnJheX0gcmV0dXJuQXR0cmlidXRlcyB0aGUgZmllbGRzIHdoaWNoIHNob3VsZCBiZSBmaWx0ZXJlZCBhbmQgcmV0dXJuZWQgdG8gdGhlIGNsaWVudC4gTGVhdmUgdGhpcyBwYXJhbWV0ZXIgZW1wdHkgaWYgeW91IGRvbid0IHdhbnQgdG8gZmlsdGVyXG4gKi9cblxuICAvKipcbiAgICogTGlzdHMgYXBwbGljYXRpb25zIGFjY29yZGluZyB0byB0aGUgb3B0cyBhbmQgcmV0dXJucyB0aGVtIGFzIGEgbWFwXG4gICAqIEBwYXJhbSB7TGlzdEFwcGxpY2F0aW9uT3B0aW9uc30gb3B0cyB0aGUgbGlzdGluZyBvcHRpb25zIHRoYXQgd2FudHMgdG8gYmUgcGFzc2VkXG4gICAqIEByZXR1cm5zIEEgbWFwIG9mIHRoZSBhcHBsaWNhdGlvbnMgd2hpY2ggdGhlIGtleSBpcyB0aGUgYnVuZGxlSWRcbiAgICovXG4gIGFzeW5jIGxpc3RBcHBsaWNhdGlvbnMgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBDb21tYW5kOiAnQnJvd3NlJyxcbiAgICAgIENsaWVudE9wdGlvbnM6IHt9XG4gICAgfTtcblxuICAgIGlmIChvcHRzLmFwcGxpY2F0aW9uVHlwZSkge1xuICAgICAgcmVxdWVzdC5DbGllbnRPcHRpb25zLkFwcGxpY2F0aW9uVHlwZSA9IG9wdHMuYXBwbGljYXRpb25UeXBlO1xuICAgIH1cbiAgICBpZiAob3B0cy5yZXR1cm5BdHRyaWJ1dGVzKSB7XG4gICAgICByZXF1ZXN0LkNsaWVudE9wdGlvbnMuUmV0dXJuQXR0cmlidXRlcyA9IG9wdHMucmV0dXJuQXR0cmlidXRlcztcbiAgICB9XG5cbiAgICB0aGlzLl9wbGlzdFNlcnZpY2Uuc2VuZFBsaXN0KHJlcXVlc3QpO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gYXdhaXQgdGhpcy5fd2FpdE1lc3NhZ2VDb21wbGV0aW9uKCk7XG4gICAgcmV0dXJuIG1lc3NhZ2VzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBtZXNzYWdlKSB7XG4gICAgICBpZiAoIW1lc3NhZ2UuQ3VycmVudExpc3QpIHtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cbiAgICAgIG1lc3NhZ2UuQ3VycmVudExpc3QuZm9yRWFjaChmdW5jdGlvbiAoYXBwKSB7XG4gICAgICAgIGFjY1thcHAuQ0ZCdW5kbGVJZGVudGlmaWVyXSA9IGFwcDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gIH1cblxuICAvKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IExvb2t1cEFwcGxpY2F0aW9uT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBsaWNhdGlvblR5cGUgb2YgdGhlIHdoaWNoIGdyb3VwIHlvdSB3YW50IHRvIGxpc3QuIFRoZXNlIGNhbiBiZSBVc2VyLCBTeXN0ZW0gb3IgbGVhdmUgaXQgZW1wdHkgZm9yIGJvdGhcbiAqIEBwcm9wZXJ0eSB7QXJyYXl9IHJldHVybkF0dHJpYnV0ZXMgdGhlIGZpZWxkcyB3aGljaCBzaG91bGQgYmUgZmlsdGVyZWQgYW5kIHJldHVybmVkIHRvIHRoZSBjbGllbnQuIExlYXZlIHRoaXMgcGFyYW1ldGVyIGVtcHR5IGlmIHlvdSBkb24ndCB3YW50IHRvIGZpbHRlclxuICogQHByb3BlcnR5IHtzdHJpbmd8QXJyYXl9IGJ1bmRsZUlkcyBCdW5kbGUgSWRzIG9mIHRoZSBhcHBzIHRoYXQgc2hvdWxkIGJlIHNlYXJjaGVkXG4gKi9cblxuICAvKipcbiAgICogTGlzdHMgYXBwbGljYXRpb25zIGFjY29yZGluZyB0byB0aGUgb3B0cyBhbmQgcmV0dXJucyB0aGVtIGFzIGEgbWFwXG4gICAqIEBwYXJhbSB7TG9va3VwQXBwbGljYXRpb25PcHRpb25zfSBvcHRzIHRoZSBsb29rdXAgb3B0aW9ucyB0aGF0IHdhbnRzIHRvIGJlIHBhc3NlZFxuICAgKiBAcmV0dXJucyBBIG1hcCBvZiB0aGUgYXBwbGljYXRpb25zIHdoaWNoIHRoZSBrZXkgaXMgdGhlIGJ1bmRsZUlkXG4gICAqL1xuICBhc3luYyBsb29rdXBBcHBsaWNhdGlvbnMgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBDb21tYW5kOiAnTG9va3VwJyxcbiAgICAgIENsaWVudE9wdGlvbnM6IHt9XG4gICAgfTtcbiAgICBpZiAob3B0cy5idW5kbGVJZHMpIHtcbiAgICAgIHJlcXVlc3QuQ2xpZW50T3B0aW9ucy5CdW5kbGVJRHMgPSBfLmlzU3RyaW5nKG9wdHMuYnVuZGxlSWRzKSA/IFtvcHRzLmJ1bmRsZUlkc10gOiBvcHRzLmJ1bmRsZUlkcztcbiAgICB9XG4gICAgaWYgKG9wdHMuYXBwbGljYXRpb25UeXBlKSB7XG4gICAgICByZXF1ZXN0LkNsaWVudE9wdGlvbnMuQXBwbGljYXRpb25UeXBlID0gb3B0cy5hcHBsaWNhdGlvblR5cGU7XG4gICAgfVxuICAgIGlmIChvcHRzLnJldHVybkF0dHJpYnV0ZXMpIHtcbiAgICAgIHJlcXVlc3QuQ2xpZW50T3B0aW9ucy5SZXR1cm5BdHRyaWJ1dGVzID0gb3B0cy5yZXR1cm5BdHRyaWJ1dGVzO1xuICAgIH1cblxuICAgIHRoaXMuX3BsaXN0U2VydmljZS5zZW5kUGxpc3QocmVxdWVzdCk7XG4gICAgY29uc3QgbWVzc2FnZXMgPSBhd2FpdCB0aGlzLl93YWl0TWVzc2FnZUNvbXBsZXRpb24oKTtcbiAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgbWVzc2FnZXMpIHtcbiAgICAgIGlmIChtZXNzYWdlLkxvb2t1cFJlc3VsdCkge1xuICAgICAgICByZXR1cm4gbWVzc2FnZS5Mb29rdXBSZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgTG9va3VwUmVzdWx0IGluIHRoZSByZXNwb25zZTogUmVzcG9uc2U6ICR7SlNPTi5zdHJpbmdpZnkobWVzc2FnZXMpfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuaW5zdGFsbHMgYW4gYXBwbGljYXRpb24gYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBidW5kbGVJZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYnVuZGxlSWQgb2YgdGhlIGFwcCB0aGF0IG5lZWRzIHRvIGJlIHBhc3NlZCBmb3IgdW5pbnN0YWxsYXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWVvdXQgVGhlIHRpbWVvdXQgYmV0d2VlbiBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoZSBwaG9uZSBhcyBzdGF0dXMgdXBkYXRlc1xuICAgKi9cbiAgYXN5bmMgdW5pbnN0YWxsQXBwbGljYXRpb24gKGJ1bmRsZUlkLCB0aW1lb3V0ID0gMjAwMDApIHtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgQ29tbWFuZDogJ1VuaW5zdGFsbCcsXG4gICAgICBBcHBsaWNhdGlvbklkZW50aWZpZXI6IGJ1bmRsZUlkXG4gICAgfTtcblxuICAgIHRoaXMuX3BsaXN0U2VydmljZS5zZW5kUGxpc3QocmVxdWVzdCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3dhaXRNZXNzYWdlQ29tcGxldGlvbih0aW1lb3V0KTtcbiAgfVxuXG4gIGFzeW5jIF93YWl0TWVzc2FnZUNvbXBsZXRpb24gKHRpbWVvdXQpIHtcbiAgICBsZXQgbWVzc2FnZXMgPSBbXTtcbiAgICAvLyBKdXN0IGFkZGVkIGZvciBzYWZldHkuIFRoaXMgc2hvdWxkbid0IGhhcHBlblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7IGkrKykge1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuX3BsaXN0U2VydmljZS5yZWNlaXZlUGxpc3QodGltZW91dCk7XG4gICAgICBtZXNzYWdlcy5wdXNoKGRhdGEpO1xuICAgICAgaWYgKHRoaXMuX2lzRmluaXNoZWQoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9pc0ZpbmlzaGVkIChyZXNwb25zZSkge1xuICAgIGlmIChyZXNwb25zZS5FcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpfWApO1xuICAgIH1cblxuICAgIGlmICghcmVzcG9uc2UuU3RhdHVzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZS5TdGF0dXMgPT09ICdDb21wbGV0ZSc7XG4gIH1cbn1cblxuZXhwb3J0IHsgSW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlLCBJTlNUQUxMQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FIH07XG5leHBvcnQgZGVmYXVsdCBJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2U7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQU1BLE1BQU1BLCtCQUErQixHQUFHLHFDQUFxQztBQUFDO0FBRTlFLE1BQU1DLHdCQUF3QixTQUFTQyw2QkFBZ0IsQ0FBQztFQU90RCxNQUFNQyxrQkFBa0IsQ0FBRUMsSUFBSSxFQUFFQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLEVBQUVDLE9BQU8sR0FBRyxLQUFLLEVBQUU7SUFDbkUsTUFBTUMsT0FBTyxHQUFHO01BQ2RDLE9BQU8sRUFBRSxTQUFTO01BQ2xCQyxXQUFXLEVBQUVMLElBQUk7TUFDakJNLGFBQWEsRUFBRUw7SUFDakIsQ0FBQztJQUVELElBQUksQ0FBQ00sYUFBYSxDQUFDQyxTQUFTLENBQUNMLE9BQU8sQ0FBQztJQUNyQyxPQUFPLE1BQU0sSUFBSSxDQUFDTSxzQkFBc0IsQ0FBQ1AsT0FBTyxDQUFDO0VBQ25EO0VBV0EsTUFBTVEsa0JBQWtCLENBQUVWLElBQUksRUFBRUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFQyxPQUFPLEdBQUcsS0FBSyxFQUFFO0lBQ25FLE1BQU1DLE9BQU8sR0FBRztN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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["INSTALLATION_PROXY_SERVICE_NAME","InstallationProxyService","BaseServicePlist","installApplication","path","clientOptions","timeout","request","Command","PackagePath","ClientOptions","_plistService","sendPlist","_waitMessageCompletion","upgradeApplication","listApplications","opts","applicationType","ApplicationType","returnAttributes","ReturnAttributes","messages","reduce","acc","message","CurrentList","forEach","app","CFBundleIdentifier","lookupApplications","bundleIds","BundleIDs","_","isString","LookupResult","Error","JSON","stringify","uninstallApplication","bundleId","ApplicationIdentifier","i","Number","MAX_SAFE_INTEGER","data","receivePlist","push","_isFinished","response","Status"],"sources":["../../../lib/installation-proxy/index.js"],"sourcesContent":["import _ from 'lodash';\nimport { BaseServicePlist } from '../base-service';\n\n/*\n * https://github.com/tmothy20013/libimobiledevice-master/blob/ecd89b42021cf6f7efe9ad271b3bddc7dd4b281e/src/installation_proxy.c\n */\n\nconst INSTALLATION_PROXY_SERVICE_NAME = 'com.apple.mobile.installation_proxy';\n\nclass InstallationProxyService extends BaseServicePlist {\n /**\n * Install the application on the relative path on the phone\n * @param {string} path The path where the .app and .ipa is located at on the phone\n * @param {Object} clientOptions The extra options that wants to be passed to the installd\n * @param {number} timeout [60000] The timeout between messages received from the phone as status updates\n */\n async installApplication (path, clientOptions = {}, timeout = 60000) {\n const request = {\n Command: 'Install',\n PackagePath: path,\n ClientOptions: clientOptions\n };\n\n this._plistService.sendPlist(request);\n return await this._waitMessageCompletion(timeout);\n }\n\n /**\n * Upgrades the given application from the relative path on the phone.\n * It is required that a previous version of the same app is already installed in order\n * to call this API.\n *\n * @param {string} path The path where the .app and .ipa is located at on the phone\n * @param {Object} clientOptions The extra options that wants to be passed to the installd\n * @param {number} timeout [60000] The timeout between messages received from the phone as status updates\n */\n async upgradeApplication (path, clientOptions = {}, timeout = 60000) {\n const request = {\n Command: 'Upgrade',\n PackagePath: path,\n ClientOptions: clientOptions\n };\n\n this._plistService.sendPlist(request);\n return await this._waitMessageCompletion(timeout);\n }\n\n /**\n * @typedef {Object} ListApplicationOptions\n *\n * @property {string} applicationType of the which group you want to list. These can be User, System or leave it empty for both\n * @property {Array} returnAttributes the fields which should be filtered and returned to the client. Leave this parameter empty if you don't want to filter\n */\n\n /**\n * Lists applications according to the opts and returns them as a map\n * @param {ListApplicationOptions} opts the listing options that wants to be passed\n * @returns A map of the applications which the key is the bundleId\n */\n async listApplications (opts = {}) {\n const request = {\n Command: 'Browse',\n ClientOptions: {}\n };\n\n if (opts.applicationType) {\n request.ClientOptions.ApplicationType = opts.applicationType;\n }\n if (opts.returnAttributes) {\n request.ClientOptions.ReturnAttributes = opts.returnAttributes;\n }\n\n this._plistService.sendPlist(request);\n const messages = await this._waitMessageCompletion();\n return messages.reduce(function (acc, message) {\n if (!message.CurrentList) {\n return acc;\n }\n message.CurrentList.forEach(function (app) {\n acc[app.CFBundleIdentifier] = app;\n });\n return acc;\n }, {});\n }\n\n /**\n * @typedef {Object} LookupApplicationOptions\n *\n * @property {string} applicationType of the which group you want to list. These can be User, System or leave it empty for both\n * @property {Array} returnAttributes the fields which should be filtered and returned to the client. Leave this parameter empty if you don't want to filter\n * @property {string|Array} bundleIds Bundle Ids of the apps that should be searched\n */\n\n /**\n * Lists applications according to the opts and returns them as a map\n * @param {LookupApplicationOptions} opts the lookup options that wants to be passed\n * @returns A map of the applications which the key is the bundleId\n */\n async lookupApplications (opts = {}) {\n const request = {\n Command: 'Lookup',\n ClientOptions: {}\n };\n if (opts.bundleIds) {\n request.ClientOptions.BundleIDs = _.isString(opts.bundleIds) ? [opts.bundleIds] : opts.bundleIds;\n }\n if (opts.applicationType) {\n request.ClientOptions.ApplicationType = opts.applicationType;\n }\n if (opts.returnAttributes) {\n request.ClientOptions.ReturnAttributes = opts.returnAttributes;\n }\n\n this._plistService.sendPlist(request);\n const messages = await this._waitMessageCompletion();\n for (const message of messages) {\n if (message.LookupResult) {\n return message.LookupResult;\n }\n }\n throw new Error(`Could not find LookupResult in the response: Response: ${JSON.stringify(messages)}`);\n }\n\n /**\n * Uninstalls an application according to the given bundleId\n * @param {string} bundleId of the app that needs to be passed for uninstallation\n * @param {number} timeout The timeout between messages received from the phone as status updates\n */\n async uninstallApplication (bundleId, timeout = 20000) {\n const request = {\n Command: 'Uninstall',\n ApplicationIdentifier: bundleId\n };\n\n this._plistService.sendPlist(request);\n return await this._waitMessageCompletion(timeout);\n }\n\n async _waitMessageCompletion (timeout) {\n let messages = [];\n // Just added for safety. This shouldn't happen\n for (let i = 0; i < Number.MAX_SAFE_INTEGER; i++) {\n const data = await this._plistService.receivePlist(timeout);\n messages.push(data);\n if (this._isFinished(data)) {\n return messages;\n }\n }\n }\n\n _isFinished (response) {\n if (response.Error) {\n throw new Error(`Unexpected data: ${JSON.stringify(response)}`);\n }\n\n if (!response.Status) {\n return false;\n }\n return response.Status === 'Complete';\n }\n}\n\nexport { InstallationProxyService, INSTALLATION_PROXY_SERVICE_NAME };\nexport default InstallationProxyService;\n"],"mappings":";;;;;;;;AAAA;AACA
|
|
1
|
+
{"version":3,"file":"index.js","names":["INSTALLATION_PROXY_SERVICE_NAME","InstallationProxyService","BaseServicePlist","installApplication","path","clientOptions","timeout","request","Command","PackagePath","ClientOptions","_plistService","sendPlist","_waitMessageCompletion","upgradeApplication","listApplications","opts","applicationType","ApplicationType","returnAttributes","ReturnAttributes","messages","reduce","acc","message","CurrentList","forEach","app","CFBundleIdentifier","lookupApplications","bundleIds","BundleIDs","_","isString","LookupResult","Error","JSON","stringify","uninstallApplication","bundleId","ApplicationIdentifier","i","Number","MAX_SAFE_INTEGER","data","receivePlist","push","_isFinished","response","Status"],"sources":["../../../lib/installation-proxy/index.js"],"sourcesContent":["import _ from 'lodash';\nimport { BaseServicePlist } from '../base-service';\n\n/*\n * https://github.com/tmothy20013/libimobiledevice-master/blob/ecd89b42021cf6f7efe9ad271b3bddc7dd4b281e/src/installation_proxy.c\n */\n\nconst INSTALLATION_PROXY_SERVICE_NAME = 'com.apple.mobile.installation_proxy';\n\nclass InstallationProxyService extends BaseServicePlist {\n /**\n * Install the application on the relative path on the phone\n * @param {string} path The path where the .app and .ipa is located at on the phone\n * @param {Object} clientOptions The extra options that wants to be passed to the installd\n * @param {number} timeout [60000] The timeout between messages received from the phone as status updates\n */\n async installApplication (path, clientOptions = {}, timeout = 60000) {\n const request = {\n Command: 'Install',\n PackagePath: path,\n ClientOptions: clientOptions\n };\n\n this._plistService.sendPlist(request);\n return await this._waitMessageCompletion(timeout);\n }\n\n /**\n * Upgrades the given application from the relative path on the phone.\n * It is required that a previous version of the same app is already installed in order\n * to call this API.\n *\n * @param {string} path The path where the .app and .ipa is located at on the phone\n * @param {Object} clientOptions The extra options that wants to be passed to the installd\n * @param {number} timeout [60000] The timeout between messages received from the phone as status updates\n */\n async upgradeApplication (path, clientOptions = {}, timeout = 60000) {\n const request = {\n Command: 'Upgrade',\n PackagePath: path,\n ClientOptions: clientOptions\n };\n\n this._plistService.sendPlist(request);\n return await this._waitMessageCompletion(timeout);\n }\n\n /**\n * @typedef {Object} ListApplicationOptions\n *\n * @property {string} applicationType of the which group you want to list. These can be User, System or leave it empty for both\n * @property {Array} returnAttributes the fields which should be filtered and returned to the client. Leave this parameter empty if you don't want to filter\n */\n\n /**\n * Lists applications according to the opts and returns them as a map\n * @param {ListApplicationOptions} opts the listing options that wants to be passed\n * @returns A map of the applications which the key is the bundleId\n */\n async listApplications (opts = {}) {\n const request = {\n Command: 'Browse',\n ClientOptions: {}\n };\n\n if (opts.applicationType) {\n request.ClientOptions.ApplicationType = opts.applicationType;\n }\n if (opts.returnAttributes) {\n request.ClientOptions.ReturnAttributes = opts.returnAttributes;\n }\n\n this._plistService.sendPlist(request);\n const messages = await this._waitMessageCompletion();\n return messages.reduce(function (acc, message) {\n if (!message.CurrentList) {\n return acc;\n }\n message.CurrentList.forEach(function (app) {\n acc[app.CFBundleIdentifier] = app;\n });\n return acc;\n }, {});\n }\n\n /**\n * @typedef {Object} LookupApplicationOptions\n *\n * @property {string} applicationType of the which group you want to list. These can be User, System or leave it empty for both\n * @property {Array} returnAttributes the fields which should be filtered and returned to the client. Leave this parameter empty if you don't want to filter\n * @property {string|Array} bundleIds Bundle Ids of the apps that should be searched\n */\n\n /**\n * Lists applications according to the opts and returns them as a map\n * @param {LookupApplicationOptions} opts the lookup options that wants to be passed\n * @returns A map of the applications which the key is the bundleId\n */\n async lookupApplications (opts = {}) {\n const request = {\n Command: 'Lookup',\n ClientOptions: {}\n };\n if (opts.bundleIds) {\n request.ClientOptions.BundleIDs = _.isString(opts.bundleIds) ? [opts.bundleIds] : opts.bundleIds;\n }\n if (opts.applicationType) {\n request.ClientOptions.ApplicationType = opts.applicationType;\n }\n if (opts.returnAttributes) {\n request.ClientOptions.ReturnAttributes = opts.returnAttributes;\n }\n\n this._plistService.sendPlist(request);\n const messages = await this._waitMessageCompletion();\n for (const message of messages) {\n if (message.LookupResult) {\n return message.LookupResult;\n }\n }\n throw new Error(`Could not find LookupResult in the response: Response: ${JSON.stringify(messages)}`);\n }\n\n /**\n * Uninstalls an application according to the given bundleId\n * @param {string} bundleId of the app that needs to be passed for uninstallation\n * @param {number} timeout The timeout between messages received from the phone as status updates\n */\n async uninstallApplication (bundleId, timeout = 20000) {\n const request = {\n Command: 'Uninstall',\n ApplicationIdentifier: bundleId\n };\n\n this._plistService.sendPlist(request);\n return await this._waitMessageCompletion(timeout);\n }\n\n async _waitMessageCompletion (timeout) {\n let messages = [];\n // Just added for safety. This shouldn't happen\n for (let i = 0; i < Number.MAX_SAFE_INTEGER; i++) {\n const data = await this._plistService.receivePlist(timeout);\n messages.push(data);\n if (this._isFinished(data)) {\n return messages;\n }\n }\n }\n\n _isFinished (response) {\n if (response.Error) {\n throw new Error(`Unexpected data: ${JSON.stringify(response)}`);\n }\n\n if (!response.Status) {\n return false;\n }\n return response.Status === 'Complete';\n }\n}\n\nexport { InstallationProxyService, INSTALLATION_PROXY_SERVICE_NAME };\nexport default InstallationProxyService;\n"],"mappings":"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"}
|
|
@@ -33,7 +33,6 @@ const AUX_TYPES = Object.freeze({
|
|
|
33
33
|
BigUInt64LE: 4,
|
|
34
34
|
BigInt64LE: 6
|
|
35
35
|
});
|
|
36
|
-
|
|
37
36
|
class DTXMessageHeader {
|
|
38
37
|
static build(data) {
|
|
39
38
|
const messageHeader = Buffer.alloc(DTX_MESSAGE_HEADER_LENGTH);
|
|
@@ -48,7 +47,6 @@ class DTXMessageHeader {
|
|
|
48
47
|
messageHeader.writeUInt32LE(data.expectsReply, 28);
|
|
49
48
|
return messageHeader;
|
|
50
49
|
}
|
|
51
|
-
|
|
52
50
|
static parse(headerBuffer) {
|
|
53
51
|
return {
|
|
54
52
|
magic: headerBuffer.readUInt32LE(0),
|
|
@@ -63,9 +61,7 @@ class DTXMessageHeader {
|
|
|
63
61
|
};
|
|
64
62
|
}
|
|
65
63
|
}
|
|
66
|
-
|
|
67
64
|
exports.DTXMessageHeader = DTXMessageHeader;
|
|
68
|
-
|
|
69
65
|
class DTXMessagePayloadHeader {
|
|
70
66
|
static build(data) {
|
|
71
67
|
const messageHeader = Buffer.alloc(DTX_MESSAGE_PAYLOAD_HEADER_LENGTH);
|
|
@@ -74,7 +70,6 @@ class DTXMessagePayloadHeader {
|
|
|
74
70
|
messageHeader.writeBigUInt64LE(data.totalLength, 8);
|
|
75
71
|
return messageHeader;
|
|
76
72
|
}
|
|
77
|
-
|
|
78
73
|
static parse(headerBuffer) {
|
|
79
74
|
return {
|
|
80
75
|
flags: headerBuffer.readUInt32LE(0),
|
|
@@ -88,7 +83,6 @@ class DTXMessageAux {
|
|
|
88
83
|
constructor(data = []) {
|
|
89
84
|
this.data = data;
|
|
90
85
|
}
|
|
91
|
-
|
|
92
86
|
build() {
|
|
93
87
|
const messageAux = new DTXMessageAuxBuffer();
|
|
94
88
|
let buf = Buffer.alloc(0);
|
|
@@ -108,7 +102,6 @@ class DTXMessageAux {
|
|
|
108
102
|
}
|
|
109
103
|
return Buffer.concat([buf, messageAux.getBytes()]);
|
|
110
104
|
}
|
|
111
|
-
|
|
112
105
|
static parse(headerBuffer, payloadHeader) {
|
|
113
106
|
let cursor = 0;
|
|
114
107
|
const data = [];
|
|
@@ -171,7 +164,6 @@ class DTXMessageAuxBuffer {
|
|
|
171
164
|
constructor() {
|
|
172
165
|
this._buf = Buffer.alloc(0);
|
|
173
166
|
}
|
|
174
|
-
|
|
175
167
|
appendInt(value) {
|
|
176
168
|
const buf = Buffer.alloc(12);
|
|
177
169
|
buf.writeUInt32LE(DTX_AUXILIARY_MAGIC, 0);
|
|
@@ -179,7 +171,6 @@ class DTXMessageAuxBuffer {
|
|
|
179
171
|
buf.writeUInt32LE(value, 8);
|
|
180
172
|
this._buf = Buffer.concat([this._buf, buf]);
|
|
181
173
|
}
|
|
182
|
-
|
|
183
174
|
appendLong(value) {
|
|
184
175
|
const buf = Buffer.alloc(16);
|
|
185
176
|
buf.writeUInt32LE(DTX_AUXILIARY_MAGIC, 0);
|
|
@@ -187,7 +178,6 @@ class DTXMessageAuxBuffer {
|
|
|
187
178
|
buf.writeBigUInt64LE(value, 8);
|
|
188
179
|
this._buf = Buffer.concat([this._buf, buf]);
|
|
189
180
|
}
|
|
190
|
-
|
|
191
181
|
appendSignedInt(value) {
|
|
192
182
|
const buf = Buffer.alloc(12);
|
|
193
183
|
buf.writeUInt32LE(DTX_AUXILIARY_MAGIC, 0);
|
|
@@ -195,7 +185,6 @@ class DTXMessageAuxBuffer {
|
|
|
195
185
|
buf.writeInt32LE(value, 8);
|
|
196
186
|
this._buf = Buffer.concat([this._buf, buf]);
|
|
197
187
|
}
|
|
198
|
-
|
|
199
188
|
appendSignedLong(value) {
|
|
200
189
|
const buf = Buffer.alloc(16);
|
|
201
190
|
buf.writeUInt32LE(DTX_AUXILIARY_MAGIC, 0);
|
|
@@ -203,7 +192,6 @@ class DTXMessageAuxBuffer {
|
|
|
203
192
|
buf.writeBigInt64LE(value, 8);
|
|
204
193
|
this._buf = Buffer.concat([this._buf, buf]);
|
|
205
194
|
}
|
|
206
|
-
|
|
207
195
|
appendObject(value) {
|
|
208
196
|
const buf = (0, _nskeyed.archive)(value);
|
|
209
197
|
const buf2 = Buffer.alloc(12);
|
|
@@ -240,35 +228,28 @@ class DTXMessage {
|
|
|
240
228
|
this._flags = flags;
|
|
241
229
|
this.auxiliaries = new DTXMessageAux();
|
|
242
230
|
}
|
|
243
|
-
|
|
244
231
|
get identifier() {
|
|
245
232
|
var _this$_messageHeader;
|
|
246
233
|
return (_this$_messageHeader = this._messageHeader) === null || _this$_messageHeader === void 0 ? void 0 : _this$_messageHeader.identifier;
|
|
247
234
|
}
|
|
248
|
-
|
|
249
235
|
get channelCode() {
|
|
250
236
|
var _this$_messageHeader2;
|
|
251
237
|
return (_this$_messageHeader2 = this._messageHeader) === null || _this$_messageHeader2 === void 0 ? void 0 : _this$_messageHeader2.channel;
|
|
252
238
|
}
|
|
253
|
-
|
|
254
239
|
get expectsReply() {
|
|
255
240
|
var _this$_messageHeader3;
|
|
256
241
|
return (_this$_messageHeader3 = this._messageHeader) === null || _this$_messageHeader3 === void 0 ? void 0 : _this$_messageHeader3.expectsReply;
|
|
257
242
|
}
|
|
258
|
-
|
|
259
243
|
get selector() {
|
|
260
244
|
return this._selector;
|
|
261
245
|
}
|
|
262
|
-
|
|
263
246
|
set selector(data) {
|
|
264
247
|
this._selector = data;
|
|
265
248
|
}
|
|
266
|
-
|
|
267
249
|
get conversationIndex() {
|
|
268
250
|
var _this$_messageHeader4;
|
|
269
251
|
return (_this$_messageHeader4 = this._messageHeader) === null || _this$_messageHeader4 === void 0 ? void 0 : _this$_messageHeader4.conversationIndex;
|
|
270
252
|
}
|
|
271
|
-
|
|
272
253
|
build() {
|
|
273
254
|
const sel = this._selector ? (0, _nskeyed.archive)(this._selector) : Buffer.alloc(0);
|
|
274
255
|
const aux = this.auxiliaries.build();
|
|
@@ -286,7 +267,6 @@ class DTXMessage {
|
|
|
286
267
|
});
|
|
287
268
|
return Buffer.concat([messageHeader, payloadHeader, aux, sel]);
|
|
288
269
|
}
|
|
289
|
-
|
|
290
270
|
static parse(headerBuf, payloadBuf) {
|
|
291
271
|
let cursor = 0;
|
|
292
272
|
const ret = new DTXMessage();
|
|
@@ -319,4 +299,4 @@ class DTXMessage {
|
|
|
319
299
|
}
|
|
320
300
|
}
|
|
321
301
|
exports.DTXMessage = DTXMessage;
|
|
322
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEVFhfTUVTU0FHRV9QQVlMT0FEX0hFQURFUl9MRU5HVEgiLCJEVFhfTUVTU0FHRV9IRUFERVJfTEVOR1RIIiwiRFRYX01FU1NBR0VfSEVBREVSX01BR0lDIiwiRFRYX01FU1NBR0VfSEVBREVSX01BR0lDX0xFTiIsIkRUWF9NRVNTQUdFX0FVWF9IRUFERVIiLCJEVFhfQVVYSUxJQVJZX01BR0lDIiwiRkxBR19UWVBFUyIsIk9iamVjdCIsImZyZWV6ZSIsInB1c2giLCJyZWN2Iiwic2VuZCIsInJlcGx5IiwiQVVYX1RZUEVTIiwiVGV4dCIsIk5TS2V5ZWQiLCJVSW50MzJMRSIsIkJpZ1VJbnQ2NExFIiwiQmlnSW50NjRMRSIsIkRUWE1lc3NhZ2VIZWFkZXIiLCJidWlsZCIsImRhdGEiLCJtZXNzYWdlSGVhZGVyIiwiQnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQzMkxFIiwid3JpdGVVSW50MTZMRSIsInBheWxvYWRMZW5ndGgiLCJpZGVudGlmaWVyIiwiY29udmVyc2F0aW9uSW5kZXgiLCJjaGFubmVsQ29kZSIsImV4cGVjdHNSZXBseSIsInBhcnNlIiwiaGVhZGVyQnVmZmVyIiwibWFnaWMiLCJyZWFkVUludDMyTEUiLCJoZWFkZXJMZW5ndGgiLCJmcmFnbWVudElkIiwicmVhZFVJbnQxNkxFIiwiZnJhZ21lbnRDb3VudCIsImNoYW5uZWwiLCJEVFhNZXNzYWdlUGF5bG9hZEhlYWRlciIsImZsYWdzIiwiYXV4TGVuZ3RoIiwid3JpdGVCaWdVSW50NjRMRSIsInRvdGFsTGVuZ3RoIiwicmVhZEJpZ0ludDY0TEUiLCJEVFhNZXNzYWdlQXV4IiwiY29uc3RydWN0b3IiLCJtZXNzYWdlQXV4IiwiRFRYTWVzc2FnZUF1eEJ1ZmZlciIsImJ1ZiIsImxlbmd0aCIsImFyZyIsImNvbmNhdCIsImdldEJ5dGVzIiwiXyIsImlzTnVtYmVyIiwiYXBwZW5kSW50IiwiYXBwZW5kTG9uZyIsImFwcGVuZE9iamVjdCIsInBheWxvYWRIZWFkZXIiLCJjdXJzb3IiLCJtIiwiRXJyb3IiLCJ0eXBlIiwic3RyTGVuIiwic2xpY2UiLCJhcmNoaXZlZF9kYXRhIiwidW5hcmNoaXZlIiwicmVhZEJpZ1VJbnQ2NExFIiwiSW5zdHJ1bWVudFJQQ1BhcnNlRXJyb3IiLCJfYnVmIiwidmFsdWUiLCJhcHBlbmRTaWduZWRJbnQiLCJ3cml0ZUludDMyTEUiLCJhcHBlbmRTaWduZWRMb25nIiwid3JpdGVCaWdJbnQ2NExFIiwiYXJjaGl2ZSIsImJ1ZjIiLCJvdXQiLCJEVFhNZXNzYWdlIiwib3B0cyIsInNlbGVjdG9yIiwiX21lc3NhZ2VIZWFkZXIiLCJ1bmRlZmluZWQiLCJfcGF5bG9hZEhlYWRlciIsIl9pZGVudGlmaWVyIiwiX2NoYW5uZWxDb2RlIiwiX2V4cGVjdHNSZXBseSIsIl9zZWxlY3RvciIsIl9jb252ZXJzYXRpb25JbmRleCIsIl9mbGFncyIsImF1eGlsaWFyaWVzIiwic2VsIiwiYXV4IiwiQmlnSW50IiwiaGVhZGVyQnVmIiwicGF5bG9hZEJ1ZiIsInJldCIsImZ1biIsInBsaXN0bGliIiwicGFyc2VCdWZmZXIiLCJlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2luc3RydW1lbnQvaGVhZGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FyY2hpdmUsIHVuYXJjaGl2ZX0gZnJvbSAnLi90cmFuc2Zvcm1lci9uc2tleWVkJztcbmltcG9ydCBwbGlzdGxpYiBmcm9tICdicGxpc3QtcGFyc2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IERUWF9NRVNTQUdFX1BBWUxPQURfSEVBREVSX0xFTkdUSCA9IDE2O1xuY29uc3QgRFRYX01FU1NBR0VfSEVBREVSX0xFTkdUSCA9IDMyO1xuY29uc3QgRFRYX01FU1NBR0VfSEVBREVSX01BR0lDID0gMHgxRjNENUI3OTtcbmNvbnN0IERUWF9NRVNTQUdFX0hFQURFUl9NQUdJQ19MRU4gPSA0O1xuY29uc3QgRFRYX01FU1NBR0VfQVVYX0hFQURFUiA9IDB4MDFGMDtcbmNvbnN0IERUWF9BVVhJTElBUllfTUFHSUMgPSAweGE7XG5cbmNvbnN0IEZMQUdfVFlQRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgcHVzaDogMCxcbiAgcmVjdjogMSxcbiAgc2VuZDogMixcbiAgcmVwbHk6IDNcbn0pO1xuXG5jb25zdCBBVVhfVFlQRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgVGV4dDogMSxcbiAgTlNLZXllZDogMixcbiAgVUludDMyTEU6IDMsXG4gIEJpZ1VJbnQ2NExFOiA0LFxuICBCaWdJbnQ2NExFOiA2XG59KTtcblxuLyoqXG4gKiBEVFhNZXNzYWdlSGVhZGVyIGxlbmd0aCAzMlxuICogc3RydWN0IERUWE1lc3NhZ2VIZWFkZXIge1xuICogICAgIHUzMiBtYWdpYyBEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUNcbiAqICAgICB1MzIgaGVhZGVyTGVuZ3RoXG4gKiAgICAgdTE2IGZyYWdtZW50SWQgICBwYWNrZXQgbnVtYmVyXG4gKiAgICAgdTE2IGZyYWdtZW50Q291bnQgIHBhY2tldHMgdG90YWwgbnVtYmVyXG4gKiAgICAgdTMyIHBheWxvYWRMZW5ndGhcbiAqICAgICB1MzIgaWRlbnRpZmllclxuICogICAgIHUzMiBjb252ZXJzYXRpb25JbmRleFxuICogICAgIHUzMiBjaGFubmVsXG4gKiAgICAgdTMyIGV4cGVjdHNSZXBseVxuICogICAgIH1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IERUWE1lc3NhZ2VPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gaWRlbnRpZmllciBwYWNrZXQgdHJhbnNtaXNzaW9uIHNlcXVlbmNlLCB0aGlzIHZhbHVlIGlzIGluY3JlbWVudGVkIGZvciBlYWNoIHJlcXVlc3RcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjaGFubmVsQ29kZSB0aGUgZGF0YSB0cmFuc21pc3Npb24gb2YgdGhlIHNlcnZpY2Ugd2lsbCB1c2UgdGhpcyBjaGFubmVsIGNvZGUuXG4gKiBFYWNoIHNlcnZpY2UgaGFzIGEgc2VwYXJhdGUgY2hhbm5lbFxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBwYXlsb2FkTGVuZ3RoIERUWE1lc3NhZ2VBdXhCdWZmZXIubGVuZ3RoKG51bGxhYmxlKSArIHNlbGVjdG9yQnVmZmVyLmxlbmd0aChudWxsYWJsZSlcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZXhwZWN0c1JlcGx5IGlmIHRydWUgcmVwbHkgYSBhY2sgbWVzc2FnZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNvbnZlcnNhdGlvbkluZGV4ICByYXcgZGF0YSArMSBpbmRpY2F0ZSBhIHJlcGx5IG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBmbGFncyBtZXNzYWdlIHN0YXR1c1xuICovXG5cbmNsYXNzIERUWE1lc3NhZ2VIZWFkZXIge1xuICAvKipcbiAgICogQHBhcmFtIHtEVFhNZXNzYWdlT3B0aW9uc30gZGF0YVxuICAgKiBAcmV0dXJucyB7QnVmZmVyfSBEVFhNZXNzYWdlSGVhZGVyQnVmZmVyXG4gICAqL1xuICBzdGF0aWMgYnVpbGQgKGRhdGEpIHtcbiAgICBjb25zdCBtZXNzYWdlSGVhZGVyID0gQnVmZmVyLmFsbG9jKERUWF9NRVNTQUdFX0hFQURFUl9MRU5HVEgpO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVVSW50MzJMRShEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUMsIDApO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVVSW50MzJMRShEVFhfTUVTU0FHRV9IRUFERVJfTEVOR1RILCA0KTtcbiAgICBtZXNzYWdlSGVhZGVyLndyaXRlVUludDE2TEUoMCwgOCk7XG4gICAgbWVzc2FnZUhlYWRlci53cml0ZVVJbnQxNkxFKDEsIDEwKTtcbiAgICBtZXNzYWdlSGVhZGVyLndyaXRlVUludDMyTEUoZGF0YS5wYXlsb2FkTGVuZ3RoLCAxMik7XG4gICAgbWVzc2FnZUhlYWRlci53cml0ZVVJbnQzMkxFKGRhdGEuaWRlbnRpZmllciwgMTYpO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVVSW50MzJMRShkYXRhLmNvbnZlcnNhdGlvbkluZGV4LCAyMCk7XG4gICAgbWVzc2FnZUhlYWRlci53cml0ZVVJbnQzMkxFKGRhdGEuY2hhbm5lbENvZGUsIDI0KTtcbiAgICBtZXNzYWdlSGVhZGVyLndyaXRlVUludDMyTEUoZGF0YS5leHBlY3RzUmVwbHksIDI4KTtcbiAgICByZXR1cm4gbWVzc2FnZUhlYWRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gaGVhZGVyQnVmZmVyIERUWE1lc3NhZ2VIZWFkZXJCdWZmZXJcbiAgICogQHJldHVybnMge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBwYXJzZSAoaGVhZGVyQnVmZmVyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1hZ2ljOiBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKDApLFxuICAgICAgaGVhZGVyTGVuZ3RoOiBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKDQpLFxuICAgICAgZnJhZ21lbnRJZDogaGVhZGVyQnVmZmVyLnJlYWRVSW50MTZMRSg4KSxcbiAgICAgIGZyYWdtZW50Q291bnQ6IGhlYWRlckJ1ZmZlci5yZWFkVUludDE2TEUoMTApLFxuICAgICAgcGF5bG9hZExlbmd0aDogaGVhZGVyQnVmZmVyLnJlYWRVSW50MzJMRSgxMiksXG4gICAgICBpZGVudGlmaWVyOiBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKDE2KSxcbiAgICAgIGNvbnZlcnNhdGlvbkluZGV4OiBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKDIwKSxcbiAgICAgIGNoYW5uZWw6IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoMjQpLFxuICAgICAgZXhwZWN0c1JlcGx5OiBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKDI4KSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogRFRYTWVzc2FnZVBheWxvYWRIZWFkZXIgbGVuZ3RoIDE2XG4gKiBzdHJ1Y3QgRFRYTWVzc2FnZUhlYWRlciB7XG4gKiAgICAgdTMyIGZsYWdzIEZMQUdfVFlQRVNcbiAqICAgICB1MzIgYXV4TGVuZ3RoXG4gKiAgICAgdTY0IHRvdGFsTGVuZ3RoXG4gKiAgICAgfVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRFRYTWVzc2FnZVBheWxvYWRIZWFkZXJPYmplY3RcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBmbGFncyBtZXNzYWdlIHN0YXR1c1xuICogQHByb3BlcnR5IHtudW1iZXJ9IGF1eExlbmd0aCBEVFhNZXNzYWdlQXV4QnVmZmVyLmxlbmd0aChudWxsYWJsZSlcbiAqIEBwcm9wZXJ0eSB7YmlnaW50fSB0b3RhbExlbmd0aCBEVFhNZXNzYWdlQXV4QnVmZmVyLmxlbmd0aChudWxsYWJsZSkgKyBzZWxlY3RvckJ1ZmZlci5sZW5ndGhcbiAqL1xuY2xhc3MgRFRYTWVzc2FnZVBheWxvYWRIZWFkZXIge1xuICAvKipcbiAgICogQHBhcmFtIGRhdGEge0RUWE1lc3NhZ2VQYXlsb2FkSGVhZGVyT2JqZWN0fVxuICAgKiBAcmV0dXJucyB7QnVmZmVyfSBEVFhNZXNzYWdlUGF5bG9hZEhlYWRlckJ1ZmZlclxuICAgKi9cbiAgc3RhdGljIGJ1aWxkIChkYXRhKSB7XG4gICAgY29uc3QgbWVzc2FnZUhlYWRlciA9IEJ1ZmZlci5hbGxvYyhEVFhfTUVTU0FHRV9QQVlMT0FEX0hFQURFUl9MRU5HVEgpO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVVSW50MzJMRShkYXRhLmZsYWdzLCAwKTtcbiAgICBtZXNzYWdlSGVhZGVyLndyaXRlVUludDMyTEUoZGF0YS5hdXhMZW5ndGgsIDQpO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVCaWdVSW50NjRMRShkYXRhLnRvdGFsTGVuZ3RoLCA4KTtcbiAgICByZXR1cm4gbWVzc2FnZUhlYWRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gaGVhZGVyQnVmZmVyXG4gICAqIEByZXR1cm5zIHtEVFhNZXNzYWdlUGF5bG9hZEhlYWRlck9iamVjdH1cbiAgICovXG4gIHN0YXRpYyBwYXJzZSAoaGVhZGVyQnVmZmVyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZsYWdzOiBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKDApLFxuICAgICAgYXV4TGVuZ3RoOiBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKDQpLFxuICAgICAgdG90YWxMZW5ndGg6IGhlYWRlckJ1ZmZlci5yZWFkQmlnSW50NjRMRSg4KVxuICAgIH07XG4gIH1cbn1cblxuXG5jbGFzcyBEVFhNZXNzYWdlQXV4IHtcbiAgY29uc3RydWN0b3IgKGRhdGEgPSBbXSkge1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gIH1cblxuICAvKipcbiAgICogSlMgQXJyYXkgdG8gQXBwbGUgTlNLZXllZCBCdWZmZXJcbiAgICogQHJldHVybnMge0J1ZmZlcn1cbiAgICovXG4gIGJ1aWxkICgpIHtcbiAgICBjb25zdCBtZXNzYWdlQXV4ID0gbmV3IERUWE1lc3NhZ2VBdXhCdWZmZXIoKTtcbiAgICBsZXQgYnVmID0gQnVmZmVyLmFsbG9jKDApO1xuICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gYnVmO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGFyZyBvZiB0aGlzLmRhdGEpIHtcbiAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBEVFhNZXNzYWdlQXV4QnVmZmVyKSB7XG4gICAgICAgIGJ1ZiA9IEJ1ZmZlci5jb25jYXQoW2J1ZiwgYXJnLmdldEJ5dGVzKCldKTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc051bWJlcihhcmcpKSB7XG4gICAgICAgIG1lc3NhZ2VBdXguYXBwZW5kSW50KGFyZyk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhcmcgPT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgbWVzc2FnZUF1eC5hcHBlbmRMb25nKGFyZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlQXV4LmFwcGVuZE9iamVjdChhcmcpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbYnVmLCBtZXNzYWdlQXV4LmdldEJ5dGVzKCldKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgbnNrZXllZCBCdWZmZXIgaW50byBqcyBhcnJheVxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gaGVhZGVyQnVmZmVyXG4gICAqIEBwYXJhbSB7RFRYTWVzc2FnZVBheWxvYWRIZWFkZXJPYmplY3R9IHBheWxvYWRIZWFkZXJcbiAgICogQHJldHVybnMge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIHBhcnNlIChoZWFkZXJCdWZmZXIsIHBheWxvYWRIZWFkZXIpIHtcbiAgICBsZXQgY3Vyc29yID0gMDtcbiAgICBjb25zdCBkYXRhID0gW107XG4gICAgY29uc3QgbGVuZ3RoID0gaGVhZGVyQnVmZmVyLnJlYWRCaWdJbnQ2NExFKDgpO1xuICAgIGN1cnNvciArPSAxNjtcbiAgICB3aGlsZSAoY3Vyc29yIDw9IGxlbmd0aCkge1xuICAgICAgaWYgKHBheWxvYWRIZWFkZXIuZmxhZ3MgIT09IEZMQUdfVFlQRVMucHVzaCkge1xuICAgICAgICBjb25zdCBtID0gaGVhZGVyQnVmZmVyLnJlYWRVSW50MzJMRShjdXJzb3IpO1xuICAgICAgICBjdXJzb3IgKz0gNDtcbiAgICAgICAgaWYgKG0gIT09IERUWF9BVVhJTElBUllfTUFHSUMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGluY29ycmVjdCBhdXhpbGlhcnkgbWFnaWM6ICR7bX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgdHlwZSA9IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoY3Vyc29yKTtcbiAgICAgIGN1cnNvciArPSA0O1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgQVVYX1RZUEVTLlRleHQ6IHtcbiAgICAgICAgICBjb25zdCBzdHJMZW4gPSBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKGN1cnNvcik7XG4gICAgICAgICAgY3Vyc29yICs9IDQ7XG4gICAgICAgICAgZGF0YS5wdXNoKGhlYWRlckJ1ZmZlci5zbGljZShjdXJzb3IsIGN1cnNvciArIHN0ckxlbikpO1xuICAgICAgICAgIGN1cnNvciArPSBzdHJMZW47XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBVVhfVFlQRVMuTlNLZXllZDoge1xuICAgICAgICAgIGNvbnN0IHN0ckxlbiA9IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoY3Vyc29yKTtcbiAgICAgICAgICBjdXJzb3IgKz0gNDtcbiAgICAgICAgICBjb25zdCBhcmNoaXZlZF9kYXRhID0gaGVhZGVyQnVmZmVyLnNsaWNlKGN1cnNvciwgY3Vyc29yICsgc3RyTGVuKTtcbiAgICAgICAgICBkYXRhLnB1c2godW5hcmNoaXZlKGFyY2hpdmVkX2RhdGEpKTtcbiAgICAgICAgICBjdXJzb3IgKz0gc3RyTGVuO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQVVYX1RZUEVTLlVJbnQzMkxFOlxuICAgICAgICAgIGRhdGEucHVzaChoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKGN1cnNvcikpO1xuICAgICAgICAgIGN1cnNvciArPSA0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEFVWF9UWVBFUy5CaWdVSW50NjRMRTpcbiAgICAgICAgICBkYXRhLnB1c2goaGVhZGVyQnVmZmVyLnJlYWRCaWdVSW50NjRMRShjdXJzb3IpKTtcbiAgICAgICAgICBjdXJzb3IgKz0gODtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBBVVhfVFlQRVMuQmlnSW50NjRMRTpcbiAgICAgICAgICBkYXRhLnB1c2goaGVhZGVyQnVmZmVyLnJlYWRCaWdJbnQ2NExFKGN1cnNvcikpO1xuICAgICAgICAgIGN1cnNvciArPSA4O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0eXBlICR7dHlwZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbn1cblxuY2xhc3MgSW5zdHJ1bWVudFJQQ1BhcnNlRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAoZGF0YSkge1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gIH1cbn1cblxuY2xhc3MgRFRYTWVzc2FnZUF1eEJ1ZmZlciB7XG4gIGNvbnN0cnVjdG9yICgpIHtcbiAgICB0aGlzLl9idWYgPSBCdWZmZXIuYWxsb2MoMCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gICAqL1xuICBhcHBlbmRJbnQgKHZhbHVlKSB7XG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDEyKTtcbiAgICBidWYud3JpdGVVSW50MzJMRShEVFhfQVVYSUxJQVJZX01BR0lDLCAwKTtcbiAgICBidWYud3JpdGVVSW50MzJMRSgzLCA0KTtcbiAgICBidWYud3JpdGVVSW50MzJMRSh2YWx1ZSwgOCk7XG4gICAgdGhpcy5fYnVmID0gQnVmZmVyLmNvbmNhdChbdGhpcy5fYnVmLCBidWZdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2JpZ2ludH0gdmFsdWVcbiAgICovXG4gIGFwcGVuZExvbmcgKHZhbHVlKSB7XG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDE2KTtcbiAgICBidWYud3JpdGVVSW50MzJMRShEVFhfQVVYSUxJQVJZX01BR0lDLCAwKTtcbiAgICBidWYud3JpdGVVSW50MzJMRSg0LCA0KTtcbiAgICBidWYud3JpdGVCaWdVSW50NjRMRSh2YWx1ZSwgOCk7XG4gICAgdGhpcy5fYnVmID0gQnVmZmVyLmNvbmNhdChbdGhpcy5fYnVmLCBidWZdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAgICovXG4gIGFwcGVuZFNpZ25lZEludCAodmFsdWUpIHtcbiAgICBjb25zdCBidWYgPSBCdWZmZXIuYWxsb2MoMTIpO1xuICAgIGJ1Zi53cml0ZVVJbnQzMkxFKERUWF9BVVhJTElBUllfTUFHSUMsIDApO1xuICAgIGJ1Zi53cml0ZVVJbnQzMkxFKDMsIDQpO1xuICAgIGJ1Zi53cml0ZUludDMyTEUodmFsdWUsIDgpO1xuICAgIHRoaXMuX2J1ZiA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuX2J1ZiwgYnVmXSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtiaWdpbnR9IHZhbHVlXG4gICAqL1xuICBhcHBlbmRTaWduZWRMb25nICh2YWx1ZSkge1xuICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5hbGxvYygxNik7XG4gICAgYnVmLndyaXRlVUludDMyTEUoRFRYX0FVWElMSUFSWV9NQUdJQywgMCk7XG4gICAgYnVmLndyaXRlVUludDMyTEUoNiwgNCk7XG4gICAgYnVmLndyaXRlQmlnSW50NjRMRSh2YWx1ZSwgOCk7XG4gICAgdGhpcy5fYnVmID0gQnVmZmVyLmNvbmNhdChbdGhpcy5fYnVmLCBidWZdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVcbiAgICovXG4gIGFwcGVuZE9iamVjdCAodmFsdWUpIHtcbiAgICBjb25zdCBidWYgPSBhcmNoaXZlKHZhbHVlKTtcbiAgICBjb25zdCBidWYyID0gQnVmZmVyLmFsbG9jKDEyKTtcbiAgICBidWYyLndyaXRlVUludDMyTEUoRFRYX0FVWElMSUFSWV9NQUdJQywgMCk7XG4gICAgYnVmMi53cml0ZVVJbnQzMkxFKDIsIDQpO1xuICAgIGJ1ZjIud3JpdGVVSW50MzJMRShidWYubGVuZ3RoLCA4KTtcbiAgICB0aGlzLl9idWYgPSBCdWZmZXIuY29uY2F0KFt0aGlzLl9idWYsIGJ1ZjIsIGJ1Zl0pO1xuICB9XG5cbiAgZ2V0Qnl0ZXMgKCkge1xuICAgIGNvbnN0IG91dCA9IEJ1ZmZlci5hbGxvYygxNik7XG4gICAgb3V0LndyaXRlVUludDMyTEUoRFRYX01FU1NBR0VfQVVYX0hFQURFUiwgMCk7XG4gICAgb3V0LndyaXRlVUludDMyTEUodGhpcy5fYnVmLmxlbmd0aCwgOCk7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW291dCwgdGhpcy5fYnVmXSk7XG4gIH1cbn1cblxuXG5cbmNsYXNzIERUWE1lc3NhZ2Uge1xuICAvKipcbiAgICogQHBhcmFtIHtEVFhNZXNzYWdlT3B0aW9uc30gb3B0c1xuICAgKi9cbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHtcbiAgICAgIGlkZW50aWZpZXIsXG4gICAgICBjaGFubmVsQ29kZSxcbiAgICAgIHNlbGVjdG9yLFxuICAgICAgZXhwZWN0c1JlcGx5LFxuICAgICAgY29udmVyc2F0aW9uSW5kZXggPSAwLFxuICAgICAgZmxhZ3MgPSBGTEFHX1RZUEVTLnNlbmRcbiAgICB9ID0gb3B0cztcbiAgICB0aGlzLl9tZXNzYWdlSGVhZGVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX3BheWxvYWRIZWFkZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7XG4gICAgdGhpcy5fY2hhbm5lbENvZGUgPSBjaGFubmVsQ29kZTtcbiAgICB0aGlzLl9leHBlY3RzUmVwbHkgPSBleHBlY3RzUmVwbHk7XG4gICAgdGhpcy5fc2VsZWN0b3IgPSBzZWxlY3RvcjtcbiAgICB0aGlzLl9jb252ZXJzYXRpb25JbmRleCA9IGNvbnZlcnNhdGlvbkluZGV4O1xuICAgIHRoaXMuX2ZsYWdzID0gZmxhZ3M7XG4gICAgdGhpcy5hdXhpbGlhcmllcyA9IG5ldyBEVFhNZXNzYWdlQXV4KCk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IERUWE1lc3NhZ2VIZWFkZXIgaWRlbnRpZmllci4gUGFja2V0IHRyYW5zbWlzc2lvbiBzZXF1ZW5jZVxuICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGlkZW50aWZpZXIgKCkge1xuICAgIHJldHVybiB0aGlzLl9tZXNzYWdlSGVhZGVyPy5pZGVudGlmaWVyO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBEVFhNZXNzYWdlSGVhZGVyIGNoYW5uZWxDb2RlLlxuICAgKiBQYWNrZXQgdHJhbnNtaXNzaW9uIGNoYW5uZWxDb2RlLiBVc2UgdGhpcyB2YWx1ZSB0byBkaXN0aW5ndWlzaCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBjaGFubmVsc1xuICAgKiBjYWxsIHRoaXMgbWV0aG9kIGBJbnN0cnVtZW50U2VydmljZS5yZWdpc3RlckNoYW5uZWxDYWxsYmFja2AgZ2V0IHRoZSBjaGFubmVsIG1lc3NhZ2VcbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICovXG4gIGdldCBjaGFubmVsQ29kZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21lc3NhZ2VIZWFkZXI/LmNoYW5uZWw7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IERUWE1lc3NhZ2VIZWFkZXIgZXhwZWN0c1JlcGx5LiBXaGV0aGVyIHRvIG5lZWQgYWNrIG1lc3NhZ2VcbiAgICogaWYgZXhwZWN0c1JlcGx5IGlzIHRydWUgbXVzdCByZXBseSBhY2sgbWVzc2FnZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBleHBlY3RzUmVwbHkgKCkge1xuICAgIHJldHVybiB0aGlzLl9tZXNzYWdlSGVhZGVyPy5leHBlY3RzUmVwbHk7XG4gIH1cblxuICAvKipcbiAgICogY2FsbCB0aGlzIG1ldGhvZCBgSW5zdHJ1bWVudFNlcnZpY2UucmVnaXN0ZXJTZWxlY3RvckNhbGxiYWNrYCBnZXQgdGhlIHNlbGVjdG9yIG1lc3NhZ2VcbiAgICogQHJldHVybnMgeyp9IFVua25vd24gZGF0YVxuICAgKi9cbiAgZ2V0IHNlbGVjdG9yICgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGRhdGFcbiAgICovXG4gIHNldCBzZWxlY3RvciAoZGF0YSkge1xuICAgIHRoaXMuX3NlbGVjdG9yID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgRFRYTWVzc2FnZUhlYWRlciBjb252ZXJzYXRpb25JbmRleFxuICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGNvbnZlcnNhdGlvbkluZGV4ICgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVzc2FnZUhlYWRlcj8uY29udmVyc2F0aW9uSW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogRFRYTWVzc2FnZSBCdWZmZXI6IERUWE1lc3NhZ2VIZWFkZXIgKyBQYXlsb2FkSGVhZGVyICsgRFRYTWVzc2FnZUF1eEJ1ZmZlcihudWxsYWJsZSkgKyBzZWxlY3RvcihudWxsYWJsZSlcbiAgICogQHJldHVybnMge0J1ZmZlcn1cbiAgICovXG4gIGJ1aWxkICgpIHtcbiAgICBjb25zdCBzZWwgPSB0aGlzLl9zZWxlY3RvciA/IGFyY2hpdmUodGhpcy5fc2VsZWN0b3IpIDogQnVmZmVyLmFsbG9jKDApO1xuICAgIGNvbnN0IGF1eCA9IHRoaXMuYXV4aWxpYXJpZXMuYnVpbGQoKTtcbiAgICBjb25zdCBwYXlsb2FkSGVhZGVyID0gRFRYTWVzc2FnZVBheWxvYWRIZWFkZXIuYnVpbGQoe1xuICAgICAgZmxhZ3M6IHRoaXMuX2ZsYWdzLFxuICAgICAgYXV4TGVuZ3RoOiBhdXgubGVuZ3RoLFxuICAgICAgLy8gbmVlZCB0byBjb252ZXJ0IHRvIGJpZ2ludCBpbiBhbnkgY2FzZVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICAgICB0b3RhbExlbmd0aDogQmlnSW50KGF1eC5sZW5ndGggKyBzZWwubGVuZ3RoKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IG1lc3NhZ2VIZWFkZXIgPSBEVFhNZXNzYWdlSGVhZGVyLmJ1aWxkKHtcbiAgICAgIHBheWxvYWRMZW5ndGg6IERUWF9NRVNTQUdFX1BBWUxPQURfSEVBREVSX0xFTkdUSCArIGF1eC5sZW5ndGggKyBzZWwubGVuZ3RoLFxuICAgICAgaWRlbnRpZmllcjogdGhpcy5faWRlbnRpZmllcixcbiAgICAgIGNvbnZlcnNhdGlvbkluZGV4OiB0aGlzLl9jb252ZXJzYXRpb25JbmRleCxcbiAgICAgIGNoYW5uZWxDb2RlOiB0aGlzLl9jaGFubmVsQ29kZSxcbiAgICAgIGV4cGVjdHNSZXBseTogdGhpcy5fZXhwZWN0c1JlcGx5XG4gICAgfSk7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW21lc3NhZ2VIZWFkZXIsIHBheWxvYWRIZWFkZXIsIGF1eCwgc2VsXSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIERUWCBidWZmZXIgaW50byBhbiBqcyBvYmplY3QuIFJldHVybmVkIGluIERUWERlY29kZXIgU3RyZWFtLlRyYW5zZm9ybVxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gaGVhZGVyQnVmICBEVFhNZXNzYWdlSGVhZGVyIGJ1ZmZlclxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gcGF5bG9hZEJ1ZiAgUGF5bG9hZEhlYWRlckJ1ZmZlciArIERUWE1lc3NhZ2VBdXhCdWZmZXIobnVsbGFibGUpICsgc2VsZWN0b3JCdWZmZXIobnVsbGFibGUpXG4gICAqIEByZXR1cm5zIHtEVFhNZXNzYWdlfVxuICAgKi9cbiAgc3RhdGljIHBhcnNlIChoZWFkZXJCdWYsIHBheWxvYWRCdWYpIHtcbiAgICBsZXQgY3Vyc29yID0gMDtcbiAgICBjb25zdCByZXQgPSBuZXcgRFRYTWVzc2FnZSgpO1xuICAgIHJldC5fbWVzc2FnZUhlYWRlciA9IERUWE1lc3NhZ2VIZWFkZXIucGFyc2UoaGVhZGVyQnVmKTtcbiAgICBpZiAocmV0Ll9tZXNzYWdlSGVhZGVyLnBheWxvYWRMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICAgIHJldC5fcGF5bG9hZEhlYWRlciA9IERUWE1lc3NhZ2VQYXlsb2FkSGVhZGVyLnBhcnNlKHBheWxvYWRCdWYuc2xpY2UoY3Vyc29yLCBEVFhfTUVTU0FHRV9QQVlMT0FEX0hFQURFUl9MRU5HVEgpKTtcbiAgICBjdXJzb3IgKz0gRFRYX01FU1NBR0VfUEFZTE9BRF9IRUFERVJfTEVOR1RIO1xuICAgIC8vIHRvdGFsTGVuZ3RoIGlzIGJpZ2ludCB1c2UgMG5cbiAgICBpZiAocmV0Ll9wYXlsb2FkSGVhZGVyLnRvdGFsTGVuZ3RoID09PSAwbikge1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gICAgaWYgKHJldC5fcGF5bG9hZEhlYWRlci5hdXhMZW5ndGggPiAwKSB7XG4gICAgICByZXQuYXV4aWxpYXJpZXMgPSBEVFhNZXNzYWdlQXV4LnBhcnNlKHBheWxvYWRCdWYuc2xpY2UoY3Vyc29yLCBjdXJzb3IgKyByZXQuX3BheWxvYWRIZWFkZXIuYXV4TGVuZ3RoKSwgcmV0Ll9wYXlsb2FkSGVhZGVyKTtcbiAgICAgIGN1cnNvciArPSByZXQuX3BheWxvYWRIZWFkZXIuYXV4TGVuZ3RoO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSBwYXlsb2FkQnVmLnNsaWNlKGN1cnNvciwgY3Vyc29yICsgcGF5bG9hZEJ1Zi5sZW5ndGgpO1xuICAgIHJldC5zZWxlY3RvciA9IGRhdGE7XG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBmdW4gb2YgW3VuYXJjaGl2ZSwgcGxpc3RsaWIucGFyc2VCdWZmZXJdKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0LnNlbGVjdG9yID0gZnVuKGRhdGEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcmV0LnNlbGVjdG9yID0gbmV3IEluc3RydW1lbnRSUENQYXJzZUVycm9yKGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cbn1cblxuZXhwb3J0IHsgRFRYTWVzc2FnZUhlYWRlciwgRFRYTWVzc2FnZVBheWxvYWRIZWFkZXIsIERUWE1lc3NhZ2VBdXhCdWZmZXIsIERUWE1lc3NhZ2VBdXgsIERUWE1lc3NhZ2UsXG4gIERUWF9NRVNTQUdFX1BBWUxPQURfSEVBREVSX0xFTkdUSCwgRFRYX01FU1NBR0VfSEVBREVSX0xFTkdUSCwgRFRYX01FU1NBR0VfSEVBREVSX01BR0lDLCBEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUNfTEVOLFxuICBGTEFHX1RZUEVTfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxpQ0FBaUMsR0FBRyxFQUFFO0FBQUM7QUFDN0MsTUFBTUMs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
|
|
302
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEVFhfTUVTU0FHRV9QQVlMT0FEX0hFQURFUl9MRU5HVEgiLCJEVFhfTUVTU0FHRV9IRUFERVJfTEVOR1RIIiwiRFRYX01FU1NBR0VfSEVBREVSX01BR0lDIiwiRFRYX01FU1NBR0VfSEVBREVSX01BR0lDX0xFTiIsIkRUWF9NRVNTQUdFX0FVWF9IRUFERVIiLCJEVFhfQVVYSUxJQVJZX01BR0lDIiwiRkxBR19UWVBFUyIsIk9iamVjdCIsImZyZWV6ZSIsInB1c2giLCJyZWN2Iiwic2VuZCIsInJlcGx5IiwiQVVYX1RZUEVTIiwiVGV4dCIsIk5TS2V5ZWQiLCJVSW50MzJMRSIsIkJpZ1VJbnQ2NExFIiwiQmlnSW50NjRMRSIsIkRUWE1lc3NhZ2VIZWFkZXIiLCJidWlsZCIsImRhdGEiLCJtZXNzYWdlSGVhZGVyIiwiQnVmZmVyIiwiYWxsb2MiLCJ3cml0ZVVJbnQzMkxFIiwid3JpdGVVSW50MTZMRSIsInBheWxvYWRMZW5ndGgiLCJpZGVudGlmaWVyIiwiY29udmVyc2F0aW9uSW5kZXgiLCJjaGFubmVsQ29kZSIsImV4cGVjdHNSZXBseSIsInBhcnNlIiwiaGVhZGVyQnVmZmVyIiwibWFnaWMiLCJyZWFkVUludDMyTEUiLCJoZWFkZXJMZW5ndGgiLCJmcmFnbWVudElkIiwicmVhZFVJbnQxNkxFIiwiZnJhZ21lbnRDb3VudCIsImNoYW5uZWwiLCJEVFhNZXNzYWdlUGF5bG9hZEhlYWRlciIsImZsYWdzIiwiYXV4TGVuZ3RoIiwid3JpdGVCaWdVSW50NjRMRSIsInRvdGFsTGVuZ3RoIiwicmVhZEJpZ0ludDY0TEUiLCJEVFhNZXNzYWdlQXV4IiwiY29uc3RydWN0b3IiLCJtZXNzYWdlQXV4IiwiRFRYTWVzc2FnZUF1eEJ1ZmZlciIsImJ1ZiIsImxlbmd0aCIsImFyZyIsImNvbmNhdCIsImdldEJ5dGVzIiwiXyIsImlzTnVtYmVyIiwiYXBwZW5kSW50IiwiYXBwZW5kTG9uZyIsImFwcGVuZE9iamVjdCIsInBheWxvYWRIZWFkZXIiLCJjdXJzb3IiLCJtIiwiRXJyb3IiLCJ0eXBlIiwic3RyTGVuIiwic2xpY2UiLCJhcmNoaXZlZF9kYXRhIiwidW5hcmNoaXZlIiwicmVhZEJpZ1VJbnQ2NExFIiwiSW5zdHJ1bWVudFJQQ1BhcnNlRXJyb3IiLCJfYnVmIiwidmFsdWUiLCJhcHBlbmRTaWduZWRJbnQiLCJ3cml0ZUludDMyTEUiLCJhcHBlbmRTaWduZWRMb25nIiwid3JpdGVCaWdJbnQ2NExFIiwiYXJjaGl2ZSIsImJ1ZjIiLCJvdXQiLCJEVFhNZXNzYWdlIiwib3B0cyIsInNlbGVjdG9yIiwiX21lc3NhZ2VIZWFkZXIiLCJ1bmRlZmluZWQiLCJfcGF5bG9hZEhlYWRlciIsIl9pZGVudGlmaWVyIiwiX2NoYW5uZWxDb2RlIiwiX2V4cGVjdHNSZXBseSIsIl9zZWxlY3RvciIsIl9jb252ZXJzYXRpb25JbmRleCIsIl9mbGFncyIsImF1eGlsaWFyaWVzIiwic2VsIiwiYXV4IiwiQmlnSW50IiwiaGVhZGVyQnVmIiwicGF5bG9hZEJ1ZiIsInJldCIsImZ1biIsInBsaXN0bGliIiwicGFyc2VCdWZmZXIiLCJlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2luc3RydW1lbnQvaGVhZGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FyY2hpdmUsIHVuYXJjaGl2ZX0gZnJvbSAnLi90cmFuc2Zvcm1lci9uc2tleWVkJztcbmltcG9ydCBwbGlzdGxpYiBmcm9tICdicGxpc3QtcGFyc2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IERUWF9NRVNTQUdFX1BBWUxPQURfSEVBREVSX0xFTkdUSCA9IDE2O1xuY29uc3QgRFRYX01FU1NBR0VfSEVBREVSX0xFTkdUSCA9IDMyO1xuY29uc3QgRFRYX01FU1NBR0VfSEVBREVSX01BR0lDID0gMHgxRjNENUI3OTtcbmNvbnN0IERUWF9NRVNTQUdFX0hFQURFUl9NQUdJQ19MRU4gPSA0O1xuY29uc3QgRFRYX01FU1NBR0VfQVVYX0hFQURFUiA9IDB4MDFGMDtcbmNvbnN0IERUWF9BVVhJTElBUllfTUFHSUMgPSAweGE7XG5cbmNvbnN0IEZMQUdfVFlQRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgcHVzaDogMCxcbiAgcmVjdjogMSxcbiAgc2VuZDogMixcbiAgcmVwbHk6IDNcbn0pO1xuXG5jb25zdCBBVVhfVFlQRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgVGV4dDogMSxcbiAgTlNLZXllZDogMixcbiAgVUludDMyTEU6IDMsXG4gIEJpZ1VJbnQ2NExFOiA0LFxuICBCaWdJbnQ2NExFOiA2XG59KTtcblxuLyoqXG4gKiBEVFhNZXNzYWdlSGVhZGVyIGxlbmd0aCAzMlxuICogc3RydWN0IERUWE1lc3NhZ2VIZWFkZXIge1xuICogICAgIHUzMiBtYWdpYyBEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUNcbiAqICAgICB1MzIgaGVhZGVyTGVuZ3RoXG4gKiAgICAgdTE2IGZyYWdtZW50SWQgICBwYWNrZXQgbnVtYmVyXG4gKiAgICAgdTE2IGZyYWdtZW50Q291bnQgIHBhY2tldHMgdG90YWwgbnVtYmVyXG4gKiAgICAgdTMyIHBheWxvYWRMZW5ndGhcbiAqICAgICB1MzIgaWRlbnRpZmllclxuICogICAgIHUzMiBjb252ZXJzYXRpb25JbmRleFxuICogICAgIHUzMiBjaGFubmVsXG4gKiAgICAgdTMyIGV4cGVjdHNSZXBseVxuICogICAgIH1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IERUWE1lc3NhZ2VPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gaWRlbnRpZmllciBwYWNrZXQgdHJhbnNtaXNzaW9uIHNlcXVlbmNlLCB0aGlzIHZhbHVlIGlzIGluY3JlbWVudGVkIGZvciBlYWNoIHJlcXVlc3RcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjaGFubmVsQ29kZSB0aGUgZGF0YSB0cmFuc21pc3Npb24gb2YgdGhlIHNlcnZpY2Ugd2lsbCB1c2UgdGhpcyBjaGFubmVsIGNvZGUuXG4gKiBFYWNoIHNlcnZpY2UgaGFzIGEgc2VwYXJhdGUgY2hhbm5lbFxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBwYXlsb2FkTGVuZ3RoIERUWE1lc3NhZ2VBdXhCdWZmZXIubGVuZ3RoKG51bGxhYmxlKSArIHNlbGVjdG9yQnVmZmVyLmxlbmd0aChudWxsYWJsZSlcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZXhwZWN0c1JlcGx5IGlmIHRydWUgcmVwbHkgYSBhY2sgbWVzc2FnZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNvbnZlcnNhdGlvbkluZGV4ICByYXcgZGF0YSArMSBpbmRpY2F0ZSBhIHJlcGx5IG1lc3NhZ2VcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBmbGFncyBtZXNzYWdlIHN0YXR1c1xuICovXG5cbmNsYXNzIERUWE1lc3NhZ2VIZWFkZXIge1xuICAvKipcbiAgICogQHBhcmFtIHtEVFhNZXNzYWdlT3B0aW9uc30gZGF0YVxuICAgKiBAcmV0dXJucyB7QnVmZmVyfSBEVFhNZXNzYWdlSGVhZGVyQnVmZmVyXG4gICAqL1xuICBzdGF0aWMgYnVpbGQgKGRhdGEpIHtcbiAgICBjb25zdCBtZXNzYWdlSGVhZGVyID0gQnVmZmVyLmFsbG9jKERUWF9NRVNTQUdFX0hFQURFUl9MRU5HVEgpO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVVSW50MzJMRShEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUMsIDApO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVVSW50MzJMRShEVFhfTUVTU0FHRV9IRUFERVJfTEVOR1RILCA0KTtcbiAgICBtZXNzYWdlSGVhZGVyLndyaXRlVUludDE2TEUoMCwgOCk7XG4gICAgbWVzc2FnZUhlYWRlci53cml0ZVVJbnQxNkxFKDEsIDEwKTtcbiAgICBtZXNzYWdlSGVhZGVyLndyaXRlVUludDMyTEUoZGF0YS5wYXlsb2FkTGVuZ3RoLCAxMik7XG4gICAgbWVzc2FnZUhlYWRlci53cml0ZVVJbnQzMkxFKGRhdGEuaWRlbnRpZmllciwgMTYpO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVVSW50MzJMRShkYXRhLmNvbnZlcnNhdGlvbkluZGV4LCAyMCk7XG4gICAgbWVzc2FnZUhlYWRlci53cml0ZVVJbnQzMkxFKGRhdGEuY2hhbm5lbENvZGUsIDI0KTtcbiAgICBtZXNzYWdlSGVhZGVyLndyaXRlVUludDMyTEUoZGF0YS5leHBlY3RzUmVwbHksIDI4KTtcbiAgICByZXR1cm4gbWVzc2FnZUhlYWRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gaGVhZGVyQnVmZmVyIERUWE1lc3NhZ2VIZWFkZXJCdWZmZXJcbiAgICogQHJldHVybnMge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBwYXJzZSAoaGVhZGVyQnVmZmVyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1hZ2ljOiBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKDApLFxuICAgICAgaGVhZGVyTGVuZ3RoOiBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKDQpLFxuICAgICAgZnJhZ21lbnRJZDogaGVhZGVyQnVmZmVyLnJlYWRVSW50MTZMRSg4KSxcbiAgICAgIGZyYWdtZW50Q291bnQ6IGhlYWRlckJ1ZmZlci5yZWFkVUludDE2TEUoMTApLFxuICAgICAgcGF5bG9hZExlbmd0aDogaGVhZGVyQnVmZmVyLnJlYWRVSW50MzJMRSgxMiksXG4gICAgICBpZGVudGlmaWVyOiBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKDE2KSxcbiAgICAgIGNvbnZlcnNhdGlvbkluZGV4OiBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKDIwKSxcbiAgICAgIGNoYW5uZWw6IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoMjQpLFxuICAgICAgZXhwZWN0c1JlcGx5OiBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKDI4KSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogRFRYTWVzc2FnZVBheWxvYWRIZWFkZXIgbGVuZ3RoIDE2XG4gKiBzdHJ1Y3QgRFRYTWVzc2FnZUhlYWRlciB7XG4gKiAgICAgdTMyIGZsYWdzIEZMQUdfVFlQRVNcbiAqICAgICB1MzIgYXV4TGVuZ3RoXG4gKiAgICAgdTY0IHRvdGFsTGVuZ3RoXG4gKiAgICAgfVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRFRYTWVzc2FnZVBheWxvYWRIZWFkZXJPYmplY3RcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBmbGFncyBtZXNzYWdlIHN0YXR1c1xuICogQHByb3BlcnR5IHtudW1iZXJ9IGF1eExlbmd0aCBEVFhNZXNzYWdlQXV4QnVmZmVyLmxlbmd0aChudWxsYWJsZSlcbiAqIEBwcm9wZXJ0eSB7YmlnaW50fSB0b3RhbExlbmd0aCBEVFhNZXNzYWdlQXV4QnVmZmVyLmxlbmd0aChudWxsYWJsZSkgKyBzZWxlY3RvckJ1ZmZlci5sZW5ndGhcbiAqL1xuY2xhc3MgRFRYTWVzc2FnZVBheWxvYWRIZWFkZXIge1xuICAvKipcbiAgICogQHBhcmFtIGRhdGEge0RUWE1lc3NhZ2VQYXlsb2FkSGVhZGVyT2JqZWN0fVxuICAgKiBAcmV0dXJucyB7QnVmZmVyfSBEVFhNZXNzYWdlUGF5bG9hZEhlYWRlckJ1ZmZlclxuICAgKi9cbiAgc3RhdGljIGJ1aWxkIChkYXRhKSB7XG4gICAgY29uc3QgbWVzc2FnZUhlYWRlciA9IEJ1ZmZlci5hbGxvYyhEVFhfTUVTU0FHRV9QQVlMT0FEX0hFQURFUl9MRU5HVEgpO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVVSW50MzJMRShkYXRhLmZsYWdzLCAwKTtcbiAgICBtZXNzYWdlSGVhZGVyLndyaXRlVUludDMyTEUoZGF0YS5hdXhMZW5ndGgsIDQpO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVCaWdVSW50NjRMRShkYXRhLnRvdGFsTGVuZ3RoLCA4KTtcbiAgICByZXR1cm4gbWVzc2FnZUhlYWRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gaGVhZGVyQnVmZmVyXG4gICAqIEByZXR1cm5zIHtEVFhNZXNzYWdlUGF5bG9hZEhlYWRlck9iamVjdH1cbiAgICovXG4gIHN0YXRpYyBwYXJzZSAoaGVhZGVyQnVmZmVyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZsYWdzOiBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKDApLFxuICAgICAgYXV4TGVuZ3RoOiBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKDQpLFxuICAgICAgdG90YWxMZW5ndGg6IGhlYWRlckJ1ZmZlci5yZWFkQmlnSW50NjRMRSg4KVxuICAgIH07XG4gIH1cbn1cblxuXG5jbGFzcyBEVFhNZXNzYWdlQXV4IHtcbiAgY29uc3RydWN0b3IgKGRhdGEgPSBbXSkge1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gIH1cblxuICAvKipcbiAgICogSlMgQXJyYXkgdG8gQXBwbGUgTlNLZXllZCBCdWZmZXJcbiAgICogQHJldHVybnMge0J1ZmZlcn1cbiAgICovXG4gIGJ1aWxkICgpIHtcbiAgICBjb25zdCBtZXNzYWdlQXV4ID0gbmV3IERUWE1lc3NhZ2VBdXhCdWZmZXIoKTtcbiAgICBsZXQgYnVmID0gQnVmZmVyLmFsbG9jKDApO1xuICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gYnVmO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGFyZyBvZiB0aGlzLmRhdGEpIHtcbiAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBEVFhNZXNzYWdlQXV4QnVmZmVyKSB7XG4gICAgICAgIGJ1ZiA9IEJ1ZmZlci5jb25jYXQoW2J1ZiwgYXJnLmdldEJ5dGVzKCldKTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc051bWJlcihhcmcpKSB7XG4gICAgICAgIG1lc3NhZ2VBdXguYXBwZW5kSW50KGFyZyk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhcmcgPT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgbWVzc2FnZUF1eC5hcHBlbmRMb25nKGFyZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlQXV4LmFwcGVuZE9iamVjdChhcmcpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbYnVmLCBtZXNzYWdlQXV4LmdldEJ5dGVzKCldKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgbnNrZXllZCBCdWZmZXIgaW50byBqcyBhcnJheVxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gaGVhZGVyQnVmZmVyXG4gICAqIEBwYXJhbSB7RFRYTWVzc2FnZVBheWxvYWRIZWFkZXJPYmplY3R9IHBheWxvYWRIZWFkZXJcbiAgICogQHJldHVybnMge0FycmF5fVxuICAgKi9cbiAgc3RhdGljIHBhcnNlIChoZWFkZXJCdWZmZXIsIHBheWxvYWRIZWFkZXIpIHtcbiAgICBsZXQgY3Vyc29yID0gMDtcbiAgICBjb25zdCBkYXRhID0gW107XG4gICAgY29uc3QgbGVuZ3RoID0gaGVhZGVyQnVmZmVyLnJlYWRCaWdJbnQ2NExFKDgpO1xuICAgIGN1cnNvciArPSAxNjtcbiAgICB3aGlsZSAoY3Vyc29yIDw9IGxlbmd0aCkge1xuICAgICAgaWYgKHBheWxvYWRIZWFkZXIuZmxhZ3MgIT09IEZMQUdfVFlQRVMucHVzaCkge1xuICAgICAgICBjb25zdCBtID0gaGVhZGVyQnVmZmVyLnJlYWRVSW50MzJMRShjdXJzb3IpO1xuICAgICAgICBjdXJzb3IgKz0gNDtcbiAgICAgICAgaWYgKG0gIT09IERUWF9BVVhJTElBUllfTUFHSUMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGluY29ycmVjdCBhdXhpbGlhcnkgbWFnaWM6ICR7bX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgdHlwZSA9IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoY3Vyc29yKTtcbiAgICAgIGN1cnNvciArPSA0O1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgQVVYX1RZUEVTLlRleHQ6IHtcbiAgICAgICAgICBjb25zdCBzdHJMZW4gPSBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKGN1cnNvcik7XG4gICAgICAgICAgY3Vyc29yICs9IDQ7XG4gICAgICAgICAgZGF0YS5wdXNoKGhlYWRlckJ1ZmZlci5zbGljZShjdXJzb3IsIGN1cnNvciArIHN0ckxlbikpO1xuICAgICAgICAgIGN1cnNvciArPSBzdHJMZW47XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBVVhfVFlQRVMuTlNLZXllZDoge1xuICAgICAgICAgIGNvbnN0IHN0ckxlbiA9IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoY3Vyc29yKTtcbiAgICAgICAgICBjdXJzb3IgKz0gNDtcbiAgICAgICAgICBjb25zdCBhcmNoaXZlZF9kYXRhID0gaGVhZGVyQnVmZmVyLnNsaWNlKGN1cnNvciwgY3Vyc29yICsgc3RyTGVuKTtcbiAgICAgICAgICBkYXRhLnB1c2godW5hcmNoaXZlKGFyY2hpdmVkX2RhdGEpKTtcbiAgICAgICAgICBjdXJzb3IgKz0gc3RyTGVuO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQVVYX1RZUEVTLlVJbnQzMkxFOlxuICAgICAgICAgIGRhdGEucHVzaChoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKGN1cnNvcikpO1xuICAgICAgICAgIGN1cnNvciArPSA0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEFVWF9UWVBFUy5CaWdVSW50NjRMRTpcbiAgICAgICAgICBkYXRhLnB1c2goaGVhZGVyQnVmZmVyLnJlYWRCaWdVSW50NjRMRShjdXJzb3IpKTtcbiAgICAgICAgICBjdXJzb3IgKz0gODtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBBVVhfVFlQRVMuQmlnSW50NjRMRTpcbiAgICAgICAgICBkYXRhLnB1c2goaGVhZGVyQnVmZmVyLnJlYWRCaWdJbnQ2NExFKGN1cnNvcikpO1xuICAgICAgICAgIGN1cnNvciArPSA4O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0eXBlICR7dHlwZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbn1cblxuY2xhc3MgSW5zdHJ1bWVudFJQQ1BhcnNlRXJyb3Ige1xuICBjb25zdHJ1Y3RvciAoZGF0YSkge1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gIH1cbn1cblxuY2xhc3MgRFRYTWVzc2FnZUF1eEJ1ZmZlciB7XG4gIGNvbnN0cnVjdG9yICgpIHtcbiAgICB0aGlzLl9idWYgPSBCdWZmZXIuYWxsb2MoMCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gICAqL1xuICBhcHBlbmRJbnQgKHZhbHVlKSB7XG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDEyKTtcbiAgICBidWYud3JpdGVVSW50MzJMRShEVFhfQVVYSUxJQVJZX01BR0lDLCAwKTtcbiAgICBidWYud3JpdGVVSW50MzJMRSgzLCA0KTtcbiAgICBidWYud3JpdGVVSW50MzJMRSh2YWx1ZSwgOCk7XG4gICAgdGhpcy5fYnVmID0gQnVmZmVyLmNvbmNhdChbdGhpcy5fYnVmLCBidWZdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2JpZ2ludH0gdmFsdWVcbiAgICovXG4gIGFwcGVuZExvbmcgKHZhbHVlKSB7XG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDE2KTtcbiAgICBidWYud3JpdGVVSW50MzJMRShEVFhfQVVYSUxJQVJZX01BR0lDLCAwKTtcbiAgICBidWYud3JpdGVVSW50MzJMRSg0LCA0KTtcbiAgICBidWYud3JpdGVCaWdVSW50NjRMRSh2YWx1ZSwgOCk7XG4gICAgdGhpcy5fYnVmID0gQnVmZmVyLmNvbmNhdChbdGhpcy5fYnVmLCBidWZdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAgICovXG4gIGFwcGVuZFNpZ25lZEludCAodmFsdWUpIHtcbiAgICBjb25zdCBidWYgPSBCdWZmZXIuYWxsb2MoMTIpO1xuICAgIGJ1Zi53cml0ZVVJbnQzMkxFKERUWF9BVVhJTElBUllfTUFHSUMsIDApO1xuICAgIGJ1Zi53cml0ZVVJbnQzMkxFKDMsIDQpO1xuICAgIGJ1Zi53cml0ZUludDMyTEUodmFsdWUsIDgpO1xuICAgIHRoaXMuX2J1ZiA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuX2J1ZiwgYnVmXSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtiaWdpbnR9IHZhbHVlXG4gICAqL1xuICBhcHBlbmRTaWduZWRMb25nICh2YWx1ZSkge1xuICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5hbGxvYygxNik7XG4gICAgYnVmLndyaXRlVUludDMyTEUoRFRYX0FVWElMSUFSWV9NQUdJQywgMCk7XG4gICAgYnVmLndyaXRlVUludDMyTEUoNiwgNCk7XG4gICAgYnVmLndyaXRlQmlnSW50NjRMRSh2YWx1ZSwgOCk7XG4gICAgdGhpcy5fYnVmID0gQnVmZmVyLmNvbmNhdChbdGhpcy5fYnVmLCBidWZdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge09iamVjdH0gdmFsdWVcbiAgICovXG4gIGFwcGVuZE9iamVjdCAodmFsdWUpIHtcbiAgICBjb25zdCBidWYgPSBhcmNoaXZlKHZhbHVlKTtcbiAgICBjb25zdCBidWYyID0gQnVmZmVyLmFsbG9jKDEyKTtcbiAgICBidWYyLndyaXRlVUludDMyTEUoRFRYX0FVWElMSUFSWV9NQUdJQywgMCk7XG4gICAgYnVmMi53cml0ZVVJbnQzMkxFKDIsIDQpO1xuICAgIGJ1ZjIud3JpdGVVSW50MzJMRShidWYubGVuZ3RoLCA4KTtcbiAgICB0aGlzLl9idWYgPSBCdWZmZXIuY29uY2F0KFt0aGlzLl9idWYsIGJ1ZjIsIGJ1Zl0pO1xuICB9XG5cbiAgZ2V0Qnl0ZXMgKCkge1xuICAgIGNvbnN0IG91dCA9IEJ1ZmZlci5hbGxvYygxNik7XG4gICAgb3V0LndyaXRlVUludDMyTEUoRFRYX01FU1NBR0VfQVVYX0hFQURFUiwgMCk7XG4gICAgb3V0LndyaXRlVUludDMyTEUodGhpcy5fYnVmLmxlbmd0aCwgOCk7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW291dCwgdGhpcy5fYnVmXSk7XG4gIH1cbn1cblxuXG5cbmNsYXNzIERUWE1lc3NhZ2Uge1xuICAvKipcbiAgICogQHBhcmFtIHtEVFhNZXNzYWdlT3B0aW9uc30gb3B0c1xuICAgKi9cbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHtcbiAgICAgIGlkZW50aWZpZXIsXG4gICAgICBjaGFubmVsQ29kZSxcbiAgICAgIHNlbGVjdG9yLFxuICAgICAgZXhwZWN0c1JlcGx5LFxuICAgICAgY29udmVyc2F0aW9uSW5kZXggPSAwLFxuICAgICAgZmxhZ3MgPSBGTEFHX1RZUEVTLnNlbmRcbiAgICB9ID0gb3B0cztcbiAgICB0aGlzLl9tZXNzYWdlSGVhZGVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX3BheWxvYWRIZWFkZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7XG4gICAgdGhpcy5fY2hhbm5lbENvZGUgPSBjaGFubmVsQ29kZTtcbiAgICB0aGlzLl9leHBlY3RzUmVwbHkgPSBleHBlY3RzUmVwbHk7XG4gICAgdGhpcy5fc2VsZWN0b3IgPSBzZWxlY3RvcjtcbiAgICB0aGlzLl9jb252ZXJzYXRpb25JbmRleCA9IGNvbnZlcnNhdGlvbkluZGV4O1xuICAgIHRoaXMuX2ZsYWdzID0gZmxhZ3M7XG4gICAgdGhpcy5hdXhpbGlhcmllcyA9IG5ldyBEVFhNZXNzYWdlQXV4KCk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IERUWE1lc3NhZ2VIZWFkZXIgaWRlbnRpZmllci4gUGFja2V0IHRyYW5zbWlzc2lvbiBzZXF1ZW5jZVxuICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGlkZW50aWZpZXIgKCkge1xuICAgIHJldHVybiB0aGlzLl9tZXNzYWdlSGVhZGVyPy5pZGVudGlmaWVyO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBEVFhNZXNzYWdlSGVhZGVyIGNoYW5uZWxDb2RlLlxuICAgKiBQYWNrZXQgdHJhbnNtaXNzaW9uIGNoYW5uZWxDb2RlLiBVc2UgdGhpcyB2YWx1ZSB0byBkaXN0aW5ndWlzaCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBjaGFubmVsc1xuICAgKiBjYWxsIHRoaXMgbWV0aG9kIGBJbnN0cnVtZW50U2VydmljZS5yZWdpc3RlckNoYW5uZWxDYWxsYmFja2AgZ2V0IHRoZSBjaGFubmVsIG1lc3NhZ2VcbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICovXG4gIGdldCBjaGFubmVsQ29kZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21lc3NhZ2VIZWFkZXI/LmNoYW5uZWw7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IERUWE1lc3NhZ2VIZWFkZXIgZXhwZWN0c1JlcGx5LiBXaGV0aGVyIHRvIG5lZWQgYWNrIG1lc3NhZ2VcbiAgICogaWYgZXhwZWN0c1JlcGx5IGlzIHRydWUgbXVzdCByZXBseSBhY2sgbWVzc2FnZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGdldCBleHBlY3RzUmVwbHkgKCkge1xuICAgIHJldHVybiB0aGlzLl9tZXNzYWdlSGVhZGVyPy5leHBlY3RzUmVwbHk7XG4gIH1cblxuICAvKipcbiAgICogY2FsbCB0aGlzIG1ldGhvZCBgSW5zdHJ1bWVudFNlcnZpY2UucmVnaXN0ZXJTZWxlY3RvckNhbGxiYWNrYCBnZXQgdGhlIHNlbGVjdG9yIG1lc3NhZ2VcbiAgICogQHJldHVybnMgeyp9IFVua25vd24gZGF0YVxuICAgKi9cbiAgZ2V0IHNlbGVjdG9yICgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGRhdGFcbiAgICovXG4gIHNldCBzZWxlY3RvciAoZGF0YSkge1xuICAgIHRoaXMuX3NlbGVjdG9yID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgRFRYTWVzc2FnZUhlYWRlciBjb252ZXJzYXRpb25JbmRleFxuICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGNvbnZlcnNhdGlvbkluZGV4ICgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVzc2FnZUhlYWRlcj8uY29udmVyc2F0aW9uSW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogRFRYTWVzc2FnZSBCdWZmZXI6IERUWE1lc3NhZ2VIZWFkZXIgKyBQYXlsb2FkSGVhZGVyICsgRFRYTWVzc2FnZUF1eEJ1ZmZlcihudWxsYWJsZSkgKyBzZWxlY3RvcihudWxsYWJsZSlcbiAgICogQHJldHVybnMge0J1ZmZlcn1cbiAgICovXG4gIGJ1aWxkICgpIHtcbiAgICBjb25zdCBzZWwgPSB0aGlzLl9zZWxlY3RvciA/IGFyY2hpdmUodGhpcy5fc2VsZWN0b3IpIDogQnVmZmVyLmFsbG9jKDApO1xuICAgIGNvbnN0IGF1eCA9IHRoaXMuYXV4aWxpYXJpZXMuYnVpbGQoKTtcbiAgICBjb25zdCBwYXlsb2FkSGVhZGVyID0gRFRYTWVzc2FnZVBheWxvYWRIZWFkZXIuYnVpbGQoe1xuICAgICAgZmxhZ3M6IHRoaXMuX2ZsYWdzLFxuICAgICAgYXV4TGVuZ3RoOiBhdXgubGVuZ3RoLFxuICAgICAgLy8gbmVlZCB0byBjb252ZXJ0IHRvIGJpZ2ludCBpbiBhbnkgY2FzZVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICAgICB0b3RhbExlbmd0aDogQmlnSW50KGF1eC5sZW5ndGggKyBzZWwubGVuZ3RoKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IG1lc3NhZ2VIZWFkZXIgPSBEVFhNZXNzYWdlSGVhZGVyLmJ1aWxkKHtcbiAgICAgIHBheWxvYWRMZW5ndGg6IERUWF9NRVNTQUdFX1BBWUxPQURfSEVBREVSX0xFTkdUSCArIGF1eC5sZW5ndGggKyBzZWwubGVuZ3RoLFxuICAgICAgaWRlbnRpZmllcjogdGhpcy5faWRlbnRpZmllcixcbiAgICAgIGNvbnZlcnNhdGlvbkluZGV4OiB0aGlzLl9jb252ZXJzYXRpb25JbmRleCxcbiAgICAgIGNoYW5uZWxDb2RlOiB0aGlzLl9jaGFubmVsQ29kZSxcbiAgICAgIGV4cGVjdHNSZXBseTogdGhpcy5fZXhwZWN0c1JlcGx5XG4gICAgfSk7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW21lc3NhZ2VIZWFkZXIsIHBheWxvYWRIZWFkZXIsIGF1eCwgc2VsXSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIERUWCBidWZmZXIgaW50byBhbiBqcyBvYmplY3QuIFJldHVybmVkIGluIERUWERlY29kZXIgU3RyZWFtLlRyYW5zZm9ybVxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gaGVhZGVyQnVmICBEVFhNZXNzYWdlSGVhZGVyIGJ1ZmZlclxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gcGF5bG9hZEJ1ZiAgUGF5bG9hZEhlYWRlckJ1ZmZlciArIERUWE1lc3NhZ2VBdXhCdWZmZXIobnVsbGFibGUpICsgc2VsZWN0b3JCdWZmZXIobnVsbGFibGUpXG4gICAqIEByZXR1cm5zIHtEVFhNZXNzYWdlfVxuICAgKi9cbiAgc3RhdGljIHBhcnNlIChoZWFkZXJCdWYsIHBheWxvYWRCdWYpIHtcbiAgICBsZXQgY3Vyc29yID0gMDtcbiAgICBjb25zdCByZXQgPSBuZXcgRFRYTWVzc2FnZSgpO1xuICAgIHJldC5fbWVzc2FnZUhlYWRlciA9IERUWE1lc3NhZ2VIZWFkZXIucGFyc2UoaGVhZGVyQnVmKTtcbiAgICBpZiAocmV0Ll9tZXNzYWdlSGVhZGVyLnBheWxvYWRMZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICAgIHJldC5fcGF5bG9hZEhlYWRlciA9IERUWE1lc3NhZ2VQYXlsb2FkSGVhZGVyLnBhcnNlKHBheWxvYWRCdWYuc2xpY2UoY3Vyc29yLCBEVFhfTUVTU0FHRV9QQVlMT0FEX0hFQURFUl9MRU5HVEgpKTtcbiAgICBjdXJzb3IgKz0gRFRYX01FU1NBR0VfUEFZTE9BRF9IRUFERVJfTEVOR1RIO1xuICAgIC8vIHRvdGFsTGVuZ3RoIGlzIGJpZ2ludCB1c2UgMG5cbiAgICBpZiAocmV0Ll9wYXlsb2FkSGVhZGVyLnRvdGFsTGVuZ3RoID09PSAwbikge1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gICAgaWYgKHJldC5fcGF5bG9hZEhlYWRlci5hdXhMZW5ndGggPiAwKSB7XG4gICAgICByZXQuYXV4aWxpYXJpZXMgPSBEVFhNZXNzYWdlQXV4LnBhcnNlKHBheWxvYWRCdWYuc2xpY2UoY3Vyc29yLCBjdXJzb3IgKyByZXQuX3BheWxvYWRIZWFkZXIuYXV4TGVuZ3RoKSwgcmV0Ll9wYXlsb2FkSGVhZGVyKTtcbiAgICAgIGN1cnNvciArPSByZXQuX3BheWxvYWRIZWFkZXIuYXV4TGVuZ3RoO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSBwYXlsb2FkQnVmLnNsaWNlKGN1cnNvciwgY3Vyc29yICsgcGF5bG9hZEJ1Zi5sZW5ndGgpO1xuICAgIHJldC5zZWxlY3RvciA9IGRhdGE7XG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBmdW4gb2YgW3VuYXJjaGl2ZSwgcGxpc3RsaWIucGFyc2VCdWZmZXJdKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0LnNlbGVjdG9yID0gZnVuKGRhdGEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcmV0LnNlbGVjdG9yID0gbmV3IEluc3RydW1lbnRSUENQYXJzZUVycm9yKGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cbn1cblxuZXhwb3J0IHsgRFRYTWVzc2FnZUhlYWRlciwgRFRYTWVzc2FnZVBheWxvYWRIZWFkZXIsIERUWE1lc3NhZ2VBdXhCdWZmZXIsIERUWE1lc3NhZ2VBdXgsIERUWE1lc3NhZ2UsXG4gIERUWF9NRVNTQUdFX1BBWUxPQURfSEVBREVSX0xFTkdUSCwgRFRYX01FU1NBR0VfSEVBREVSX0xFTkdUSCwgRFRYX01FU1NBR0VfSEVBREVSX01BR0lDLCBEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUNfTEVOLFxuICBGTEFHX1RZUEVTfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxpQ0FBaUMsR0FBRyxFQUFFO0FBQUM7QUFDN0MsTUFBTUMs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headers.js","names":["DTX_MESSAGE_PAYLOAD_HEADER_LENGTH","DTX_MESSAGE_HEADER_LENGTH","DTX_MESSAGE_HEADER_MAGIC","DTX_MESSAGE_HEADER_MAGIC_LEN","DTX_MESSAGE_AUX_HEADER","DTX_AUXILIARY_MAGIC","FLAG_TYPES","Object","freeze","push","recv","send","reply","AUX_TYPES","Text","NSKeyed","UInt32LE","BigUInt64LE","BigInt64LE","DTXMessageHeader","build","data","messageHeader","Buffer","alloc","writeUInt32LE","writeUInt16LE","payloadLength","identifier","conversationIndex","channelCode","expectsReply","parse","headerBuffer","magic","readUInt32LE","headerLength","fragmentId","readUInt16LE","fragmentCount","channel","DTXMessagePayloadHeader","flags","auxLength","writeBigUInt64LE","totalLength","readBigInt64LE","DTXMessageAux","constructor","messageAux","DTXMessageAuxBuffer","buf","length","arg","concat","getBytes","_","isNumber","appendInt","appendLong","appendObject","payloadHeader","cursor","m","Error","type","strLen","slice","archived_data","unarchive","readBigUInt64LE","InstrumentRPCParseError","_buf","value","appendSignedInt","writeInt32LE","appendSignedLong","writeBigInt64LE","archive","buf2","out","DTXMessage","opts","selector","_messageHeader","undefined","_payloadHeader","_identifier","_channelCode","_expectsReply","_selector","_conversationIndex","_flags","auxiliaries","sel","aux","BigInt","headerBuf","payloadBuf","ret","fun","plistlib","parseBuffer","e"],"sources":["../../../lib/instrument/headers.js"],"sourcesContent":["import {archive, unarchive} from './transformer/nskeyed';\nimport plistlib from 'bplist-parser';\nimport _ from 'lodash';\n\nconst DTX_MESSAGE_PAYLOAD_HEADER_LENGTH = 16;\nconst DTX_MESSAGE_HEADER_LENGTH = 32;\nconst DTX_MESSAGE_HEADER_MAGIC = 0x1F3D5B79;\nconst DTX_MESSAGE_HEADER_MAGIC_LEN = 4;\nconst DTX_MESSAGE_AUX_HEADER = 0x01F0;\nconst DTX_AUXILIARY_MAGIC = 0xa;\n\nconst FLAG_TYPES = Object.freeze({\n push: 0,\n recv: 1,\n send: 2,\n reply: 3\n});\n\nconst AUX_TYPES = Object.freeze({\n Text: 1,\n NSKeyed: 2,\n UInt32LE: 3,\n BigUInt64LE: 4,\n BigInt64LE: 6\n});\n\n/**\n * DTXMessageHeader length 32\n * struct DTXMessageHeader {\n * u32 magic DTX_MESSAGE_HEADER_MAGIC\n * u32 headerLength\n * u16 fragmentId packet number\n * u16 fragmentCount packets total number\n * u32 payloadLength\n * u32 identifier\n * u32 conversationIndex\n * u32 channel\n * u32 expectsReply\n * }\n */\n\n/**\n * @typedef {Object} DTXMessageOptions\n * @property {number} identifier packet transmission sequence, this value is incremented for each request\n * @property {number} channelCode the data transmission of the service will use this channel code.\n * Each service has a separate channel\n * @property {?number} payloadLength DTXMessageAuxBuffer.length(nullable) + selectorBuffer.length(nullable)\n * @property {boolean} expectsReply if true reply a ack message\n * @property {number} conversationIndex raw data +1 indicate a reply message\n * @property {number} flags message status\n */\n\nclass DTXMessageHeader {\n /**\n * @param {DTXMessageOptions} data\n * @returns {Buffer} DTXMessageHeaderBuffer\n */\n static build (data) {\n const messageHeader = Buffer.alloc(DTX_MESSAGE_HEADER_LENGTH);\n messageHeader.writeUInt32LE(DTX_MESSAGE_HEADER_MAGIC, 0);\n messageHeader.writeUInt32LE(DTX_MESSAGE_HEADER_LENGTH, 4);\n messageHeader.writeUInt16LE(0, 8);\n messageHeader.writeUInt16LE(1, 10);\n messageHeader.writeUInt32LE(data.payloadLength, 12);\n messageHeader.writeUInt32LE(data.identifier, 16);\n messageHeader.writeUInt32LE(data.conversationIndex, 20);\n messageHeader.writeUInt32LE(data.channelCode, 24);\n messageHeader.writeUInt32LE(data.expectsReply, 28);\n return messageHeader;\n }\n\n /**\n * @param headerBuffer DTXMessageHeaderBuffer\n * @returns {Object}\n */\n static parse (headerBuffer) {\n return {\n magic: headerBuffer.readUInt32LE(0),\n headerLength: headerBuffer.readUInt32LE(4),\n fragmentId: headerBuffer.readUInt16LE(8),\n fragmentCount: headerBuffer.readUInt16LE(10),\n payloadLength: headerBuffer.readUInt32LE(12),\n identifier: headerBuffer.readUInt32LE(16),\n conversationIndex: headerBuffer.readUInt32LE(20),\n channel: headerBuffer.readUInt32LE(24),\n expectsReply: headerBuffer.readUInt32LE(28),\n };\n }\n}\n\n/**\n * DTXMessagePayloadHeader length 16\n * struct DTXMessageHeader {\n * u32 flags FLAG_TYPES\n * u32 auxLength\n * u64 totalLength\n * }\n */\n\n/**\n * @typedef {Object} DTXMessagePayloadHeaderObject\n * @property {number} flags message status\n * @property {number} auxLength DTXMessageAuxBuffer.length(nullable)\n * @property {bigint} totalLength DTXMessageAuxBuffer.length(nullable) + selectorBuffer.length\n */\nclass DTXMessagePayloadHeader {\n /**\n * @param data {DTXMessagePayloadHeaderObject}\n * @returns {Buffer} DTXMessagePayloadHeaderBuffer\n */\n static build (data) {\n const messageHeader = Buffer.alloc(DTX_MESSAGE_PAYLOAD_HEADER_LENGTH);\n messageHeader.writeUInt32LE(data.flags, 0);\n messageHeader.writeUInt32LE(data.auxLength, 4);\n messageHeader.writeBigUInt64LE(data.totalLength, 8);\n return messageHeader;\n }\n\n /**\n * @param headerBuffer\n * @returns {DTXMessagePayloadHeaderObject}\n */\n static parse (headerBuffer) {\n return {\n flags: headerBuffer.readUInt32LE(0),\n auxLength: headerBuffer.readUInt32LE(4),\n totalLength: headerBuffer.readBigInt64LE(8)\n };\n }\n}\n\n\nclass DTXMessageAux {\n constructor (data = []) {\n this.data = data;\n }\n\n /**\n * JS Array to Apple NSKeyed Buffer\n * @returns {Buffer}\n */\n build () {\n const messageAux = new DTXMessageAuxBuffer();\n let buf = Buffer.alloc(0);\n if (this.data.length === 0) {\n return buf;\n }\n for (const arg of this.data) {\n if (arg instanceof DTXMessageAuxBuffer) {\n buf = Buffer.concat([buf, arg.getBytes()]);\n } else if (_.isNumber(arg)) {\n messageAux.appendInt(arg);\n } else if (typeof arg == 'bigint') {\n messageAux.appendLong(arg);\n } else {\n messageAux.appendObject(arg);\n }\n }\n return Buffer.concat([buf, messageAux.getBytes()]);\n }\n\n /**\n * Parses nskeyed Buffer into js array\n * @param {Buffer} headerBuffer\n * @param {DTXMessagePayloadHeaderObject} payloadHeader\n * @returns {Array}\n */\n static parse (headerBuffer, payloadHeader) {\n let cursor = 0;\n const data = [];\n const length = headerBuffer.readBigInt64LE(8);\n cursor += 16;\n while (cursor <= length) {\n if (payloadHeader.flags !== FLAG_TYPES.push) {\n const m = headerBuffer.readUInt32LE(cursor);\n cursor += 4;\n if (m !== DTX_AUXILIARY_MAGIC) {\n throw new Error(`incorrect auxiliary magic: ${m}`);\n }\n }\n const type = headerBuffer.readUInt32LE(cursor);\n cursor += 4;\n switch (type) {\n case AUX_TYPES.Text: {\n const strLen = headerBuffer.readUInt32LE(cursor);\n cursor += 4;\n data.push(headerBuffer.slice(cursor, cursor + strLen));\n cursor += strLen;\n break;\n }\n case AUX_TYPES.NSKeyed: {\n const strLen = headerBuffer.readUInt32LE(cursor);\n cursor += 4;\n const archived_data = headerBuffer.slice(cursor, cursor + strLen);\n data.push(unarchive(archived_data));\n cursor += strLen;\n break;\n }\n case AUX_TYPES.UInt32LE:\n data.push(headerBuffer.readUInt32LE(cursor));\n cursor += 4;\n break;\n case AUX_TYPES.BigUInt64LE:\n data.push(headerBuffer.readBigUInt64LE(cursor));\n cursor += 8;\n break;\n case AUX_TYPES.BigInt64LE:\n data.push(headerBuffer.readBigInt64LE(cursor));\n cursor += 8;\n break;\n default:\n throw new Error(`Unknown type ${type}`);\n }\n }\n return data;\n }\n}\n\nclass InstrumentRPCParseError {\n constructor (data) {\n this.data = data;\n }\n}\n\nclass DTXMessageAuxBuffer {\n constructor () {\n this._buf = Buffer.alloc(0);\n }\n\n /**\n * @param {number} value\n */\n appendInt (value) {\n const buf = Buffer.alloc(12);\n buf.writeUInt32LE(DTX_AUXILIARY_MAGIC, 0);\n buf.writeUInt32LE(3, 4);\n buf.writeUInt32LE(value, 8);\n this._buf = Buffer.concat([this._buf, buf]);\n }\n\n /**\n * @param {bigint} value\n */\n appendLong (value) {\n const buf = Buffer.alloc(16);\n buf.writeUInt32LE(DTX_AUXILIARY_MAGIC, 0);\n buf.writeUInt32LE(4, 4);\n buf.writeBigUInt64LE(value, 8);\n this._buf = Buffer.concat([this._buf, buf]);\n }\n\n /**\n * @param {number} value\n */\n appendSignedInt (value) {\n const buf = Buffer.alloc(12);\n buf.writeUInt32LE(DTX_AUXILIARY_MAGIC, 0);\n buf.writeUInt32LE(3, 4);\n buf.writeInt32LE(value, 8);\n this._buf = Buffer.concat([this._buf, buf]);\n }\n\n /**\n * @param {bigint} value\n */\n appendSignedLong (value) {\n const buf = Buffer.alloc(16);\n buf.writeUInt32LE(DTX_AUXILIARY_MAGIC, 0);\n buf.writeUInt32LE(6, 4);\n buf.writeBigInt64LE(value, 8);\n this._buf = Buffer.concat([this._buf, buf]);\n }\n\n /**\n * @param {Object} value\n */\n appendObject (value) {\n const buf = archive(value);\n const buf2 = Buffer.alloc(12);\n buf2.writeUInt32LE(DTX_AUXILIARY_MAGIC, 0);\n buf2.writeUInt32LE(2, 4);\n buf2.writeUInt32LE(buf.length, 8);\n this._buf = Buffer.concat([this._buf, buf2, buf]);\n }\n\n getBytes () {\n const out = Buffer.alloc(16);\n out.writeUInt32LE(DTX_MESSAGE_AUX_HEADER, 0);\n out.writeUInt32LE(this._buf.length, 8);\n return Buffer.concat([out, this._buf]);\n }\n}\n\n\n\nclass DTXMessage {\n /**\n * @param {DTXMessageOptions} opts\n */\n constructor (opts = {}) {\n const {\n identifier,\n channelCode,\n selector,\n expectsReply,\n conversationIndex = 0,\n flags = FLAG_TYPES.send\n } = opts;\n this._messageHeader = undefined;\n this._payloadHeader = undefined;\n this._identifier = identifier;\n this._channelCode = channelCode;\n this._expectsReply = expectsReply;\n this._selector = selector;\n this._conversationIndex = conversationIndex;\n this._flags = flags;\n this.auxiliaries = new DTXMessageAux();\n }\n\n /**\n * get DTXMessageHeader identifier. Packet transmission sequence\n * @returns {number}\n */\n get identifier () {\n return this._messageHeader?.identifier;\n }\n\n /**\n * get DTXMessageHeader channelCode.\n * Packet transmission channelCode. Use this value to distinguish when there are multiple channels\n * call this method `InstrumentService.registerChannelCallback` get the channel message\n * @returns {number}\n */\n get channelCode () {\n return this._messageHeader?.channel;\n }\n\n /**\n * get DTXMessageHeader expectsReply. Whether to need ack message\n * if expectsReply is true must reply ack message\n * @returns {boolean}\n */\n get expectsReply () {\n return this._messageHeader?.expectsReply;\n }\n\n /**\n * call this method `InstrumentService.registerSelectorCallback` get the selector message\n * @returns {*} Unknown data\n */\n get selector () {\n return this._selector;\n }\n\n /**\n * @param data\n */\n set selector (data) {\n this._selector = data;\n }\n\n /**\n * get DTXMessageHeader conversationIndex\n * @returns {number}\n */\n get conversationIndex () {\n return this._messageHeader?.conversationIndex;\n }\n\n /**\n * DTXMessage Buffer: DTXMessageHeader + PayloadHeader + DTXMessageAuxBuffer(nullable) + selector(nullable)\n * @returns {Buffer}\n */\n build () {\n const sel = this._selector ? archive(this._selector) : Buffer.alloc(0);\n const aux = this.auxiliaries.build();\n const payloadHeader = DTXMessagePayloadHeader.build({\n flags: this._flags,\n auxLength: aux.length,\n // need to convert to bigint in any case\n // eslint-disable-next-line no-undef\n totalLength: BigInt(aux.length + sel.length),\n });\n\n const messageHeader = DTXMessageHeader.build({\n payloadLength: DTX_MESSAGE_PAYLOAD_HEADER_LENGTH + aux.length + sel.length,\n identifier: this._identifier,\n conversationIndex: this._conversationIndex,\n channelCode: this._channelCode,\n expectsReply: this._expectsReply\n });\n return Buffer.concat([messageHeader, payloadHeader, aux, sel]);\n }\n\n /**\n * Parses DTX buffer into an js object. Returned in DTXDecoder Stream.Transform\n * @param {Buffer} headerBuf DTXMessageHeader buffer\n * @param {Buffer} payloadBuf PayloadHeaderBuffer + DTXMessageAuxBuffer(nullable) + selectorBuffer(nullable)\n * @returns {DTXMessage}\n */\n static parse (headerBuf, payloadBuf) {\n let cursor = 0;\n const ret = new DTXMessage();\n ret._messageHeader = DTXMessageHeader.parse(headerBuf);\n if (ret._messageHeader.payloadLength === 0) {\n return ret;\n }\n ret._payloadHeader = DTXMessagePayloadHeader.parse(payloadBuf.slice(cursor, DTX_MESSAGE_PAYLOAD_HEADER_LENGTH));\n cursor += DTX_MESSAGE_PAYLOAD_HEADER_LENGTH;\n // totalLength is bigint use 0n\n if (ret._payloadHeader.totalLength === 0n) {\n return ret;\n }\n if (ret._payloadHeader.auxLength > 0) {\n ret.auxiliaries = DTXMessageAux.parse(payloadBuf.slice(cursor, cursor + ret._payloadHeader.auxLength), ret._payloadHeader);\n cursor += ret._payloadHeader.auxLength;\n }\n\n const data = payloadBuf.slice(cursor, cursor + payloadBuf.length);\n ret.selector = data;\n if (data.length > 0) {\n for (const fun of [unarchive, plistlib.parseBuffer]) {\n try {\n ret.selector = fun(data);\n break;\n } catch (e) {\n ret.selector = new InstrumentRPCParseError(data);\n }\n }\n }\n return ret;\n }\n}\n\nexport { DTXMessageHeader, DTXMessagePayloadHeader, DTXMessageAuxBuffer, DTXMessageAux, DTXMessage,\n DTX_MESSAGE_PAYLOAD_HEADER_LENGTH, DTX_MESSAGE_HEADER_LENGTH, DTX_MESSAGE_HEADER_MAGIC, DTX_MESSAGE_HEADER_MAGIC_LEN,\n FLAG_TYPES};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"headers.js","names":["DTX_MESSAGE_PAYLOAD_HEADER_LENGTH","DTX_MESSAGE_HEADER_LENGTH","DTX_MESSAGE_HEADER_MAGIC","DTX_MESSAGE_HEADER_MAGIC_LEN","DTX_MESSAGE_AUX_HEADER","DTX_AUXILIARY_MAGIC","FLAG_TYPES","Object","freeze","push","recv","send","reply","AUX_TYPES","Text","NSKeyed","UInt32LE","BigUInt64LE","BigInt64LE","DTXMessageHeader","build","data","messageHeader","Buffer","alloc","writeUInt32LE","writeUInt16LE","payloadLength","identifier","conversationIndex","channelCode","expectsReply","parse","headerBuffer","magic","readUInt32LE","headerLength","fragmentId","readUInt16LE","fragmentCount","channel","DTXMessagePayloadHeader","flags","auxLength","writeBigUInt64LE","totalLength","readBigInt64LE","DTXMessageAux","constructor","messageAux","DTXMessageAuxBuffer","buf","length","arg","concat","getBytes","_","isNumber","appendInt","appendLong","appendObject","payloadHeader","cursor","m","Error","type","strLen","slice","archived_data","unarchive","readBigUInt64LE","InstrumentRPCParseError","_buf","value","appendSignedInt","writeInt32LE","appendSignedLong","writeBigInt64LE","archive","buf2","out","DTXMessage","opts","selector","_messageHeader","undefined","_payloadHeader","_identifier","_channelCode","_expectsReply","_selector","_conversationIndex","_flags","auxiliaries","sel","aux","BigInt","headerBuf","payloadBuf","ret","fun","plistlib","parseBuffer","e"],"sources":["../../../lib/instrument/headers.js"],"sourcesContent":["import {archive, unarchive} from './transformer/nskeyed';\nimport plistlib from 'bplist-parser';\nimport _ from 'lodash';\n\nconst DTX_MESSAGE_PAYLOAD_HEADER_LENGTH = 16;\nconst DTX_MESSAGE_HEADER_LENGTH = 32;\nconst DTX_MESSAGE_HEADER_MAGIC = 0x1F3D5B79;\nconst DTX_MESSAGE_HEADER_MAGIC_LEN = 4;\nconst DTX_MESSAGE_AUX_HEADER = 0x01F0;\nconst DTX_AUXILIARY_MAGIC = 0xa;\n\nconst FLAG_TYPES = Object.freeze({\n push: 0,\n recv: 1,\n send: 2,\n reply: 3\n});\n\nconst AUX_TYPES = Object.freeze({\n Text: 1,\n NSKeyed: 2,\n UInt32LE: 3,\n BigUInt64LE: 4,\n BigInt64LE: 6\n});\n\n/**\n * DTXMessageHeader length 32\n * struct DTXMessageHeader {\n * u32 magic DTX_MESSAGE_HEADER_MAGIC\n * u32 headerLength\n * u16 fragmentId packet number\n * u16 fragmentCount packets total number\n * u32 payloadLength\n * u32 identifier\n * u32 conversationIndex\n * u32 channel\n * u32 expectsReply\n * }\n */\n\n/**\n * @typedef {Object} DTXMessageOptions\n * @property {number} identifier packet transmission sequence, this value is incremented for each request\n * @property {number} channelCode the data transmission of the service will use this channel code.\n * Each service has a separate channel\n * @property {?number} payloadLength DTXMessageAuxBuffer.length(nullable) + selectorBuffer.length(nullable)\n * @property {boolean} expectsReply if true reply a ack message\n * @property {number} conversationIndex raw data +1 indicate a reply message\n * @property {number} flags message status\n */\n\nclass DTXMessageHeader {\n /**\n * @param {DTXMessageOptions} data\n * @returns {Buffer} DTXMessageHeaderBuffer\n */\n static build (data) {\n const messageHeader = Buffer.alloc(DTX_MESSAGE_HEADER_LENGTH);\n messageHeader.writeUInt32LE(DTX_MESSAGE_HEADER_MAGIC, 0);\n messageHeader.writeUInt32LE(DTX_MESSAGE_HEADER_LENGTH, 4);\n messageHeader.writeUInt16LE(0, 8);\n messageHeader.writeUInt16LE(1, 10);\n messageHeader.writeUInt32LE(data.payloadLength, 12);\n messageHeader.writeUInt32LE(data.identifier, 16);\n messageHeader.writeUInt32LE(data.conversationIndex, 20);\n messageHeader.writeUInt32LE(data.channelCode, 24);\n messageHeader.writeUInt32LE(data.expectsReply, 28);\n return messageHeader;\n }\n\n /**\n * @param headerBuffer DTXMessageHeaderBuffer\n * @returns {Object}\n */\n static parse (headerBuffer) {\n return {\n magic: headerBuffer.readUInt32LE(0),\n headerLength: headerBuffer.readUInt32LE(4),\n fragmentId: headerBuffer.readUInt16LE(8),\n fragmentCount: headerBuffer.readUInt16LE(10),\n payloadLength: headerBuffer.readUInt32LE(12),\n identifier: headerBuffer.readUInt32LE(16),\n conversationIndex: headerBuffer.readUInt32LE(20),\n channel: headerBuffer.readUInt32LE(24),\n expectsReply: headerBuffer.readUInt32LE(28),\n };\n }\n}\n\n/**\n * DTXMessagePayloadHeader length 16\n * struct DTXMessageHeader {\n * u32 flags FLAG_TYPES\n * u32 auxLength\n * u64 totalLength\n * }\n */\n\n/**\n * @typedef {Object} DTXMessagePayloadHeaderObject\n * @property {number} flags message status\n * @property {number} auxLength DTXMessageAuxBuffer.length(nullable)\n * @property {bigint} totalLength DTXMessageAuxBuffer.length(nullable) + selectorBuffer.length\n */\nclass DTXMessagePayloadHeader {\n /**\n * @param data {DTXMessagePayloadHeaderObject}\n * @returns {Buffer} DTXMessagePayloadHeaderBuffer\n */\n static build (data) {\n const messageHeader = Buffer.alloc(DTX_MESSAGE_PAYLOAD_HEADER_LENGTH);\n messageHeader.writeUInt32LE(data.flags, 0);\n messageHeader.writeUInt32LE(data.auxLength, 4);\n messageHeader.writeBigUInt64LE(data.totalLength, 8);\n return messageHeader;\n }\n\n /**\n * @param headerBuffer\n * @returns {DTXMessagePayloadHeaderObject}\n */\n static parse (headerBuffer) {\n return {\n flags: headerBuffer.readUInt32LE(0),\n auxLength: headerBuffer.readUInt32LE(4),\n totalLength: headerBuffer.readBigInt64LE(8)\n };\n }\n}\n\n\nclass DTXMessageAux {\n constructor (data = []) {\n this.data = data;\n }\n\n /**\n * JS Array to Apple NSKeyed Buffer\n * @returns {Buffer}\n */\n build () {\n const messageAux = new DTXMessageAuxBuffer();\n let buf = Buffer.alloc(0);\n if (this.data.length === 0) {\n return buf;\n }\n for (const arg of this.data) {\n if (arg instanceof DTXMessageAuxBuffer) {\n buf = Buffer.concat([buf, arg.getBytes()]);\n } else if (_.isNumber(arg)) {\n messageAux.appendInt(arg);\n } else if (typeof arg == 'bigint') {\n messageAux.appendLong(arg);\n } else {\n messageAux.appendObject(arg);\n }\n }\n return Buffer.concat([buf, messageAux.getBytes()]);\n }\n\n /**\n * Parses nskeyed Buffer into js array\n * @param {Buffer} headerBuffer\n * @param {DTXMessagePayloadHeaderObject} payloadHeader\n * @returns {Array}\n */\n static parse (headerBuffer, payloadHeader) {\n let cursor = 0;\n const data = [];\n const length = headerBuffer.readBigInt64LE(8);\n cursor += 16;\n while (cursor <= length) {\n if (payloadHeader.flags !== FLAG_TYPES.push) {\n const m = headerBuffer.readUInt32LE(cursor);\n cursor += 4;\n if (m !== DTX_AUXILIARY_MAGIC) {\n throw new Error(`incorrect auxiliary magic: ${m}`);\n }\n }\n const type = headerBuffer.readUInt32LE(cursor);\n cursor += 4;\n switch (type) {\n case AUX_TYPES.Text: {\n const strLen = headerBuffer.readUInt32LE(cursor);\n cursor += 4;\n data.push(headerBuffer.slice(cursor, cursor + strLen));\n cursor += strLen;\n break;\n }\n case AUX_TYPES.NSKeyed: {\n const strLen = headerBuffer.readUInt32LE(cursor);\n cursor += 4;\n const archived_data = headerBuffer.slice(cursor, cursor + strLen);\n data.push(unarchive(archived_data));\n cursor += strLen;\n break;\n }\n case AUX_TYPES.UInt32LE:\n data.push(headerBuffer.readUInt32LE(cursor));\n cursor += 4;\n break;\n case AUX_TYPES.BigUInt64LE:\n data.push(headerBuffer.readBigUInt64LE(cursor));\n cursor += 8;\n break;\n case AUX_TYPES.BigInt64LE:\n data.push(headerBuffer.readBigInt64LE(cursor));\n cursor += 8;\n break;\n default:\n throw new Error(`Unknown type ${type}`);\n }\n }\n return data;\n }\n}\n\nclass InstrumentRPCParseError {\n constructor (data) {\n this.data = data;\n }\n}\n\nclass DTXMessageAuxBuffer {\n constructor () {\n this._buf = Buffer.alloc(0);\n }\n\n /**\n * @param {number} value\n */\n appendInt (value) {\n const buf = Buffer.alloc(12);\n buf.writeUInt32LE(DTX_AUXILIARY_MAGIC, 0);\n buf.writeUInt32LE(3, 4);\n buf.writeUInt32LE(value, 8);\n this._buf = Buffer.concat([this._buf, buf]);\n }\n\n /**\n * @param {bigint} value\n */\n appendLong (value) {\n const buf = Buffer.alloc(16);\n buf.writeUInt32LE(DTX_AUXILIARY_MAGIC, 0);\n buf.writeUInt32LE(4, 4);\n buf.writeBigUInt64LE(value, 8);\n this._buf = Buffer.concat([this._buf, buf]);\n }\n\n /**\n * @param {number} value\n */\n appendSignedInt (value) {\n const buf = Buffer.alloc(12);\n buf.writeUInt32LE(DTX_AUXILIARY_MAGIC, 0);\n buf.writeUInt32LE(3, 4);\n buf.writeInt32LE(value, 8);\n this._buf = Buffer.concat([this._buf, buf]);\n }\n\n /**\n * @param {bigint} value\n */\n appendSignedLong (value) {\n const buf = Buffer.alloc(16);\n buf.writeUInt32LE(DTX_AUXILIARY_MAGIC, 0);\n buf.writeUInt32LE(6, 4);\n buf.writeBigInt64LE(value, 8);\n this._buf = Buffer.concat([this._buf, buf]);\n }\n\n /**\n * @param {Object} value\n */\n appendObject (value) {\n const buf = archive(value);\n const buf2 = Buffer.alloc(12);\n buf2.writeUInt32LE(DTX_AUXILIARY_MAGIC, 0);\n buf2.writeUInt32LE(2, 4);\n buf2.writeUInt32LE(buf.length, 8);\n this._buf = Buffer.concat([this._buf, buf2, buf]);\n }\n\n getBytes () {\n const out = Buffer.alloc(16);\n out.writeUInt32LE(DTX_MESSAGE_AUX_HEADER, 0);\n out.writeUInt32LE(this._buf.length, 8);\n return Buffer.concat([out, this._buf]);\n }\n}\n\n\n\nclass DTXMessage {\n /**\n * @param {DTXMessageOptions} opts\n */\n constructor (opts = {}) {\n const {\n identifier,\n channelCode,\n selector,\n expectsReply,\n conversationIndex = 0,\n flags = FLAG_TYPES.send\n } = opts;\n this._messageHeader = undefined;\n this._payloadHeader = undefined;\n this._identifier = identifier;\n this._channelCode = channelCode;\n this._expectsReply = expectsReply;\n this._selector = selector;\n this._conversationIndex = conversationIndex;\n this._flags = flags;\n this.auxiliaries = new DTXMessageAux();\n }\n\n /**\n * get DTXMessageHeader identifier. Packet transmission sequence\n * @returns {number}\n */\n get identifier () {\n return this._messageHeader?.identifier;\n }\n\n /**\n * get DTXMessageHeader channelCode.\n * Packet transmission channelCode. Use this value to distinguish when there are multiple channels\n * call this method `InstrumentService.registerChannelCallback` get the channel message\n * @returns {number}\n */\n get channelCode () {\n return this._messageHeader?.channel;\n }\n\n /**\n * get DTXMessageHeader expectsReply. Whether to need ack message\n * if expectsReply is true must reply ack message\n * @returns {boolean}\n */\n get expectsReply () {\n return this._messageHeader?.expectsReply;\n }\n\n /**\n * call this method `InstrumentService.registerSelectorCallback` get the selector message\n * @returns {*} Unknown data\n */\n get selector () {\n return this._selector;\n }\n\n /**\n * @param data\n */\n set selector (data) {\n this._selector = data;\n }\n\n /**\n * get DTXMessageHeader conversationIndex\n * @returns {number}\n */\n get conversationIndex () {\n return this._messageHeader?.conversationIndex;\n }\n\n /**\n * DTXMessage Buffer: DTXMessageHeader + PayloadHeader + DTXMessageAuxBuffer(nullable) + selector(nullable)\n * @returns {Buffer}\n */\n build () {\n const sel = this._selector ? archive(this._selector) : Buffer.alloc(0);\n const aux = this.auxiliaries.build();\n const payloadHeader = DTXMessagePayloadHeader.build({\n flags: this._flags,\n auxLength: aux.length,\n // need to convert to bigint in any case\n // eslint-disable-next-line no-undef\n totalLength: BigInt(aux.length + sel.length),\n });\n\n const messageHeader = DTXMessageHeader.build({\n payloadLength: DTX_MESSAGE_PAYLOAD_HEADER_LENGTH + aux.length + sel.length,\n identifier: this._identifier,\n conversationIndex: this._conversationIndex,\n channelCode: this._channelCode,\n expectsReply: this._expectsReply\n });\n return Buffer.concat([messageHeader, payloadHeader, aux, sel]);\n }\n\n /**\n * Parses DTX buffer into an js object. Returned in DTXDecoder Stream.Transform\n * @param {Buffer} headerBuf DTXMessageHeader buffer\n * @param {Buffer} payloadBuf PayloadHeaderBuffer + DTXMessageAuxBuffer(nullable) + selectorBuffer(nullable)\n * @returns {DTXMessage}\n */\n static parse (headerBuf, payloadBuf) {\n let cursor = 0;\n const ret = new DTXMessage();\n ret._messageHeader = DTXMessageHeader.parse(headerBuf);\n if (ret._messageHeader.payloadLength === 0) {\n return ret;\n }\n ret._payloadHeader = DTXMessagePayloadHeader.parse(payloadBuf.slice(cursor, DTX_MESSAGE_PAYLOAD_HEADER_LENGTH));\n cursor += DTX_MESSAGE_PAYLOAD_HEADER_LENGTH;\n // totalLength is bigint use 0n\n if (ret._payloadHeader.totalLength === 0n) {\n return ret;\n }\n if (ret._payloadHeader.auxLength > 0) {\n ret.auxiliaries = DTXMessageAux.parse(payloadBuf.slice(cursor, cursor + ret._payloadHeader.auxLength), ret._payloadHeader);\n cursor += ret._payloadHeader.auxLength;\n }\n\n const data = payloadBuf.slice(cursor, cursor + payloadBuf.length);\n ret.selector = data;\n if (data.length > 0) {\n for (const fun of [unarchive, plistlib.parseBuffer]) {\n try {\n ret.selector = fun(data);\n break;\n } catch (e) {\n ret.selector = new InstrumentRPCParseError(data);\n }\n }\n }\n return ret;\n }\n}\n\nexport { DTXMessageHeader, DTXMessagePayloadHeader, DTXMessageAuxBuffer, DTXMessageAux, DTXMessage,\n DTX_MESSAGE_PAYLOAD_HEADER_LENGTH, DTX_MESSAGE_HEADER_LENGTH, DTX_MESSAGE_HEADER_MAGIC, DTX_MESSAGE_HEADER_MAGIC_LEN,\n FLAG_TYPES};\n"],"mappings":"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"}
|