appium-remote-debugger 9.1.3 → 9.1.5
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 +3 -0
- package/build/index.js +1 -6
- package/build/lib/atoms.js +8 -32
- package/build/lib/atoms.js.map +1 -0
- package/build/lib/logger.js +2 -6
- package/build/lib/logger.js.map +1 -0
- package/build/lib/mixins/connect.js +6 -70
- package/build/lib/mixins/connect.js.map +1 -0
- package/build/lib/mixins/events.js +1 -3
- package/build/lib/mixins/events.js.map +1 -0
- package/build/lib/mixins/execute.js +6 -37
- package/build/lib/mixins/execute.js.map +1 -0
- package/build/lib/mixins/index.js +1 -9
- package/build/lib/mixins/index.js.map +1 -0
- package/build/lib/mixins/message-handlers.js +1 -33
- package/build/lib/mixins/message-handlers.js.map +1 -0
- package/build/lib/mixins/navigate.js +5 -53
- package/build/lib/mixins/navigate.js.map +1 -0
- package/build/lib/protocol/index.js +20 -7
- package/build/lib/protocol/index.js.map +1 -0
- package/build/lib/remote-debugger-real-device.js +1 -9
- package/build/lib/remote-debugger-real-device.js.map +1 -0
- package/build/lib/remote-debugger.js +3 -68
- package/build/lib/remote-debugger.js.map +1 -0
- package/build/lib/rpc/index.js +1 -5
- package/build/lib/rpc/index.js.map +1 -0
- package/build/lib/rpc/remote-messages.js +5 -28
- package/build/lib/rpc/remote-messages.js.map +1 -0
- package/build/lib/rpc/rpc-client-real-device.js +1 -16
- package/build/lib/rpc/rpc-client-real-device.js.map +1 -0
- package/build/lib/rpc/rpc-client-simulator.js +4 -30
- package/build/lib/rpc/rpc-client-simulator.js.map +1 -0
- package/build/lib/rpc/rpc-client.js +14 -108
- package/build/lib/rpc/rpc-client.js.map +1 -0
- package/build/lib/rpc/rpc-message-handler.js +2 -53
- package/build/lib/rpc/rpc-message-handler.js.map +1 -0
- package/build/lib/utils.js +23 -47
- package/build/lib/utils.js.map +1 -0
- package/lib/atoms.js +8 -15
- package/lib/logger.js +1 -1
- package/lib/mixins/connect.js +1 -1
- package/lib/mixins/execute.js +2 -2
- package/lib/mixins/navigate.js +1 -1
- package/lib/remote-debugger.js +2 -10
- package/lib/rpc/rpc-client.js +1 -1
- package/lib/rpc/rpc-message-handler.js +1 -1
- package/lib/utils.js +18 -3
- package/package.json +6 -6
|
@@ -1,54 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = exports.RemoteDebugger = exports.RPC_RESPONSE_TIMEOUT_MS = exports.REMOTE_DEBUGGER_PORT = void 0;
|
|
9
|
-
|
|
10
8
|
require("source-map-support/register");
|
|
11
|
-
|
|
12
9
|
var _events = require("events");
|
|
13
|
-
|
|
14
10
|
var _logger = _interopRequireDefault(require("./logger"));
|
|
15
|
-
|
|
16
11
|
var _rpc = require("./rpc");
|
|
17
|
-
|
|
18
12
|
var _utils = require("./utils");
|
|
19
|
-
|
|
20
13
|
var _mixins = require("./mixins");
|
|
21
|
-
|
|
22
14
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
23
|
-
|
|
24
15
|
var _bluebird = _interopRequireDefault(require("bluebird"));
|
|
25
|
-
|
|
26
16
|
var _path = _interopRequireDefault(require("path"));
|
|
27
|
-
|
|
28
17
|
var _asyncLock = _interopRequireDefault(require("async-lock"));
|
|
29
|
-
|
|
30
|
-
let VERSION;
|
|
31
|
-
|
|
32
|
-
try {
|
|
33
|
-
VERSION = require(_path.default.resolve(__dirname, '..', '..', 'package.json')).version;
|
|
34
|
-
} catch (ign) {}
|
|
35
|
-
|
|
36
18
|
const REMOTE_DEBUGGER_PORT = 27753;
|
|
37
19
|
exports.REMOTE_DEBUGGER_PORT = REMOTE_DEBUGGER_PORT;
|
|
38
20
|
const SAFARI_BUNDLE_ID = 'com.apple.mobilesafari';
|
|
21
|
+
|
|
39
22
|
const RPC_RESPONSE_TIMEOUT_MS = 5000;
|
|
40
23
|
exports.RPC_RESPONSE_TIMEOUT_MS = RPC_RESPONSE_TIMEOUT_MS;
|
|
41
24
|
const PAGE_READY_TIMEOUT = 5000;
|
|
42
25
|
const GARBAGE_COLLECT_TIMEOUT = 5000;
|
|
43
|
-
|
|
44
26
|
class RemoteDebugger extends _events.EventEmitter {
|
|
45
27
|
constructor(opts = {}) {
|
|
46
28
|
super();
|
|
47
|
-
|
|
48
|
-
if (VERSION) {
|
|
49
|
-
_logger.default.info(`Remote Debugger version ${VERSION}`);
|
|
50
|
-
}
|
|
51
|
-
|
|
29
|
+
_logger.default.info(`Remote Debugger version ${require(_path.default.resolve((0, _utils.getModuleRoot)(), 'package.json')).version}`);
|
|
52
30
|
const {
|
|
53
31
|
bundleId,
|
|
54
32
|
additionalBundleIds = [],
|
|
@@ -77,9 +55,7 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
77
55
|
this.includeSafari = includeSafari;
|
|
78
56
|
this.useNewSafari = useNewSafari;
|
|
79
57
|
this.pageLoadMs = pageLoadMs;
|
|
80
|
-
|
|
81
58
|
_logger.default.debug(`useNewSafari --> ${this.useNewSafari}`);
|
|
82
|
-
|
|
83
59
|
this.garbageCollectOnExecute = garbageCollectOnExecute;
|
|
84
60
|
this.host = host;
|
|
85
61
|
this.port = port;
|
|
@@ -89,15 +65,12 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
89
65
|
this.logAllCommunication = _lodash.default.isNil(logAllCommunication) ? !!logFullResponse : !!logAllCommunication;
|
|
90
66
|
this.logAllCommunicationHexDump = logAllCommunicationHexDump;
|
|
91
67
|
this.socketChunkSize = socketChunkSize;
|
|
92
|
-
|
|
93
68
|
if (_lodash.default.isInteger(webInspectorMaxFrameLength)) {
|
|
94
69
|
this.webInspectorMaxFrameLength = webInspectorMaxFrameLength;
|
|
95
70
|
}
|
|
96
|
-
|
|
97
71
|
this.fullPageInitialization = fullPageInitialization;
|
|
98
72
|
this._lock = new _asyncLock.default();
|
|
99
73
|
}
|
|
100
|
-
|
|
101
74
|
setup() {
|
|
102
75
|
this.appDict = {};
|
|
103
76
|
this.appIdKey = null;
|
|
@@ -108,10 +81,8 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
108
81
|
this.rpcClient = null;
|
|
109
82
|
this._clientEventListeners = {};
|
|
110
83
|
}
|
|
111
|
-
|
|
112
84
|
teardown() {
|
|
113
85
|
_logger.default.debug('Cleaning up listeners');
|
|
114
|
-
|
|
115
86
|
this.appDict = {};
|
|
116
87
|
this.appIdKey = null;
|
|
117
88
|
this.pageIdKey = null;
|
|
@@ -120,7 +91,6 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
120
91
|
this.removeAllListeners(RemoteDebugger.EVENT_PAGE_CHANGE);
|
|
121
92
|
this.removeAllListeners(RemoteDebugger.EVENT_DISCONNECT);
|
|
122
93
|
}
|
|
123
|
-
|
|
124
94
|
initRpcClient() {
|
|
125
95
|
this.rpcClient = new _rpc.RpcClientSimulator({
|
|
126
96
|
bundleId: this.bundleId,
|
|
@@ -136,32 +106,25 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
136
106
|
webInspectorMaxFrameLength: this.webInspectorMaxFrameLength
|
|
137
107
|
});
|
|
138
108
|
}
|
|
139
|
-
|
|
140
109
|
get isConnected() {
|
|
141
110
|
var _this$rpcClient;
|
|
142
|
-
|
|
143
111
|
return !!((_this$rpcClient = this.rpcClient) !== null && _this$rpcClient !== void 0 && _this$rpcClient.isConnected);
|
|
144
112
|
}
|
|
145
|
-
|
|
146
113
|
async launchSafari() {
|
|
147
114
|
await this.rpcClient.send('launchApplication', {
|
|
148
115
|
bundleId: SAFARI_BUNDLE_ID
|
|
149
116
|
});
|
|
150
117
|
}
|
|
151
|
-
|
|
152
118
|
async startTimeline(fn) {
|
|
153
119
|
_logger.default.debug('Starting to record the timeline');
|
|
154
|
-
|
|
155
120
|
this.rpcClient.on('Timeline.eventRecorded', fn);
|
|
156
121
|
return await this.rpcClient.send('startTimeline', {
|
|
157
122
|
appIdKey: this.appIdKey,
|
|
158
123
|
pageIdKey: this.pageIdKey
|
|
159
124
|
});
|
|
160
125
|
}
|
|
161
|
-
|
|
162
126
|
async stopTimeline() {
|
|
163
127
|
_logger.default.debug('Stopping to record the timeline');
|
|
164
|
-
|
|
165
128
|
await this.rpcClient.send('Timeline.stop', {
|
|
166
129
|
appIdKey: this.appIdKey,
|
|
167
130
|
pageIdKey: this.pageIdKey
|
|
@@ -170,65 +133,48 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
170
133
|
|
|
171
134
|
addClientEventListener(eventName, listener) {
|
|
172
135
|
this._clientEventListeners[eventName] = this._clientEventListeners[eventName] || [];
|
|
173
|
-
|
|
174
136
|
this._clientEventListeners[eventName].push(listener);
|
|
175
|
-
|
|
176
137
|
this.rpcClient.on(eventName, listener);
|
|
177
138
|
}
|
|
178
|
-
|
|
179
139
|
removeClientEventListener(eventName) {
|
|
180
140
|
for (const listener of this._clientEventListeners[eventName] || []) {
|
|
181
141
|
this.rpcClient.off(eventName, listener);
|
|
182
142
|
}
|
|
183
143
|
}
|
|
184
|
-
|
|
185
144
|
startConsole(listener) {
|
|
186
145
|
_logger.default.debug('Starting to listen for JavaScript console');
|
|
187
|
-
|
|
188
146
|
this.addClientEventListener('Console.messageAdded', listener);
|
|
189
147
|
this.addClientEventListener('Console.messageRepeatCountUpdated', listener);
|
|
190
148
|
}
|
|
191
|
-
|
|
192
149
|
stopConsole() {
|
|
193
150
|
_logger.default.debug('Stopping to listen for JavaScript console');
|
|
194
|
-
|
|
195
151
|
this.removeClientEventListener('Console.messageAdded');
|
|
196
152
|
this.removeClientEventListener('Console.messageRepeatCountUpdated');
|
|
197
153
|
}
|
|
198
|
-
|
|
199
154
|
startNetwork(listener) {
|
|
200
155
|
_logger.default.debug('Starting to listen for network events');
|
|
201
|
-
|
|
202
156
|
this.addClientEventListener('NetworkEvent', listener);
|
|
203
157
|
}
|
|
204
|
-
|
|
205
158
|
stopNetwork() {
|
|
206
159
|
_logger.default.debug('Stopping to listen for network events');
|
|
207
|
-
|
|
208
160
|
this.removeClientEventListener('NetworkEvent');
|
|
209
161
|
}
|
|
210
|
-
|
|
211
162
|
set allowNavigationWithoutReload(allow) {
|
|
212
163
|
this._allowNavigationWithoutReload = allow;
|
|
213
164
|
}
|
|
214
|
-
|
|
215
165
|
get allowNavigationWithoutReload() {
|
|
216
166
|
return this._allowNavigationWithoutReload;
|
|
217
167
|
}
|
|
218
|
-
|
|
219
168
|
async getCookies(urls) {
|
|
220
169
|
_logger.default.debug('Getting cookies');
|
|
221
|
-
|
|
222
170
|
return await this.rpcClient.send('Page.getCookies', {
|
|
223
171
|
appIdKey: this.appIdKey,
|
|
224
172
|
pageIdKey: this.pageIdKey,
|
|
225
173
|
urls
|
|
226
174
|
});
|
|
227
175
|
}
|
|
228
|
-
|
|
229
176
|
async deleteCookie(cookieName, url) {
|
|
230
177
|
_logger.default.debug(`Deleting cookie '${cookieName}' on '${url}'`);
|
|
231
|
-
|
|
232
178
|
return await this.rpcClient.send('Page.deleteCookie', {
|
|
233
179
|
appIdKey: this.appIdKey,
|
|
234
180
|
pageIdKey: this.pageIdKey,
|
|
@@ -236,10 +182,8 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
236
182
|
url
|
|
237
183
|
});
|
|
238
184
|
}
|
|
239
|
-
|
|
240
185
|
async garbageCollect(timeoutMs = GARBAGE_COLLECT_TIMEOUT) {
|
|
241
186
|
_logger.default.debug(`Garbage collecting with ${timeoutMs}ms timeout`);
|
|
242
|
-
|
|
243
187
|
try {
|
|
244
188
|
(0, _utils.checkParams)({
|
|
245
189
|
appIdKey: this.appIdKey,
|
|
@@ -247,10 +191,8 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
247
191
|
});
|
|
248
192
|
} catch (err) {
|
|
249
193
|
_logger.default.debug(`Unable to collect garbage at this time`);
|
|
250
|
-
|
|
251
194
|
return;
|
|
252
195
|
}
|
|
253
|
-
|
|
254
196
|
await _bluebird.default.resolve(this.rpcClient.send('Heap.gc', {
|
|
255
197
|
appIdKey: this.appIdKey,
|
|
256
198
|
pageIdKey: this.pageIdKey
|
|
@@ -264,27 +206,20 @@ class RemoteDebugger extends _events.EventEmitter {
|
|
|
264
206
|
}
|
|
265
207
|
});
|
|
266
208
|
}
|
|
267
|
-
|
|
268
209
|
async useAppDictLock(fn) {
|
|
269
210
|
return await this._lock.acquire('appDict', fn);
|
|
270
211
|
}
|
|
271
|
-
|
|
272
212
|
get skippedApps() {
|
|
273
213
|
return this._skippedApps || [];
|
|
274
214
|
}
|
|
275
|
-
|
|
276
215
|
}
|
|
277
|
-
|
|
278
216
|
exports.RemoteDebugger = RemoteDebugger;
|
|
279
|
-
|
|
280
217
|
for (const [name, fn] of _lodash.default.toPairs(_mixins.mixins)) {
|
|
281
218
|
RemoteDebugger.prototype[name] = fn;
|
|
282
219
|
}
|
|
283
|
-
|
|
284
220
|
for (const [name, event] of _lodash.default.toPairs(_mixins.events)) {
|
|
285
221
|
RemoteDebugger[name] = event;
|
|
286
222
|
}
|
|
287
|
-
|
|
288
223
|
var _default = RemoteDebugger;
|
|
289
224
|
exports.default = _default;
|
|
290
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWRVJTSU9OIiwicmVxdWlyZSIsInBhdGgiLCJyZXNvbHZlIiwiX19kaXJuYW1lIiwidmVyc2lvbiIsImlnbiIsIlJFTU9URV9ERUJVR0dFUl9QT1JUIiwiU0FGQVJJX0JVTkRMRV9JRCIsIlJQQ19SRVNQT05TRV9USU1FT1VUX01TIiwiUEFHRV9SRUFEWV9USU1FT1VUIiwiR0FSQkFHRV9DT0xMRUNUX1RJTUVPVVQiLCJSZW1vdGVEZWJ1Z2dlciIsIkV2ZW50RW1pdHRlciIsImNvbnN0cnVjdG9yIiwib3B0cyIsImxvZyIsImluZm8iLCJidW5kbGVJZCIsImFkZGl0aW9uYWxCdW5kbGVJZHMiLCJwbGF0Zm9ybVZlcnNpb24iLCJpc1NhZmFyaSIsImluY2x1ZGVTYWZhcmkiLCJ1c2VOZXdTYWZhcmkiLCJwYWdlTG9hZE1zIiwiaG9zdCIsInBvcnQiLCJzb2NrZXRQYXRoIiwicGFnZVJlYWR5VGltZW91dCIsInJlbW90ZURlYnVnUHJveHkiLCJnYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZSIsImxvZ0Z1bGxSZXNwb25zZSIsImxvZ0FsbENvbW11bmljYXRpb24iLCJsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCIsIndlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoIiwic29ja2V0Q2h1bmtTaXplIiwiZnVsbFBhZ2VJbml0aWFsaXphdGlvbiIsImRlYnVnIiwiXyIsImlzTmlsIiwiaXNJbnRlZ2VyIiwiX2xvY2siLCJBc3luY0xvY2siLCJzZXR1cCIsImFwcERpY3QiLCJhcHBJZEtleSIsInBhZ2VJZEtleSIsInBhZ2VMb2FkaW5nIiwiX25hdmlnYXRpbmdUb1BhZ2UiLCJhbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkIiwicnBjQ2xpZW50IiwiX2NsaWVudEV2ZW50TGlzdGVuZXJzIiwidGVhcmRvd24iLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJFVkVOVF9QQUdFX0NIQU5HRSIsIkVWRU5UX0RJU0NPTk5FQ1QiLCJpbml0UnBjQ2xpZW50IiwiUnBjQ2xpZW50U2ltdWxhdG9yIiwibWVzc2FnZVByb3h5IiwiaXNDb25uZWN0ZWQiLCJsYXVuY2hTYWZhcmkiLCJzZW5kIiwic3RhcnRUaW1lbGluZSIsImZuIiwib24iLCJzdG9wVGltZWxpbmUiLCJhZGRDbGllbnRFdmVudExpc3RlbmVyIiwiZXZlbnROYW1lIiwibGlzdGVuZXIiLCJwdXNoIiwicmVtb3ZlQ2xpZW50RXZlbnRMaXN0ZW5lciIsIm9mZiIsInN0YXJ0Q29uc29sZSIsInN0b3BDb25zb2xlIiwic3RhcnROZXR3b3JrIiwic3RvcE5ldHdvcmsiLCJhbGxvdyIsIl9hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkIiwiZ2V0Q29va2llcyIsInVybHMiLCJkZWxldGVDb29raWUiLCJjb29raWVOYW1lIiwidXJsIiwiZ2FyYmFnZUNvbGxlY3QiLCJ0aW1lb3V0TXMiLCJjaGVja1BhcmFtcyIsImVyciIsIkIiLCJ0aW1lb3V0IiwidGhlbiIsImdjU3VjY2VzcyIsImNhdGNoIiwiZ2NFcnJvciIsIlRpbWVvdXRFcnJvciIsIm1lc3NhZ2UiLCJ1c2VBcHBEaWN0TG9jayIsImFjcXVpcmUiLCJza2lwcGVkQXBwcyIsIl9za2lwcGVkQXBwcyIsIm5hbWUiLCJ0b1BhaXJzIiwibWl4aW5zIiwicHJvdG90eXBlIiwiZXZlbnQiLCJldmVudHMiXSwic291cmNlcyI6WyIuLi8uLi9saWIvcmVtb3RlLWRlYnVnZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IFJwY0NsaWVudFNpbXVsYXRvciB9IGZyb20gJy4vcnBjJztcbmltcG9ydCB7IGNoZWNrUGFyYW1zIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBtaXhpbnMsIGV2ZW50cyB9IGZyb20gJy4vbWl4aW5zJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBBc3luY0xvY2sgZnJvbSAnYXN5bmMtbG9jayc7XG5cblxubGV0IFZFUlNJT047XG50cnkge1xuICBWRVJTSU9OID0gcmVxdWlyZShwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAncGFja2FnZS5qc29uJykpLnZlcnNpb247XG59IGNhdGNoIChpZ24pIHt9XG5cbmNvbnN0IFJFTU9URV9ERUJVR0dFUl9QT1JUID0gMjc3NTM7XG5jb25zdCBTQUZBUklfQlVORExFX0lEID0gJ2NvbS5hcHBsZS5tb2JpbGVzYWZhcmknO1xuXG4vKiBIb3cgbWFueSBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3Igd2Via2l0IHRvIHJldHVybiBhIHJlc3BvbnNlIGJlZm9yZSB0aW1pbmcgb3V0ICovXG5jb25zdCBSUENfUkVTUE9OU0VfVElNRU9VVF9NUyA9IDUwMDA7XG5cbmNvbnN0IFBBR0VfUkVBRFlfVElNRU9VVCA9IDUwMDA7XG5cbmNvbnN0IEdBUkJBR0VfQ09MTEVDVF9USU1FT1VUID0gNTAwMDtcblxuXG5jbGFzcyBSZW1vdGVEZWJ1Z2dlciBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIC8qXG4gICAqIFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhbiBvcHRzIGhhc2ggd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqICAgLSBidW5kbGVJZCAtIGlkIG9mIHRoZSBhcHAgYmVpbmcgY29ubmVjdGVkIHRvXG4gICAqICAgLSBhZGRpdGlvbmFsQnVuZGxlSWRzIC0gYXJyYXkgb2YgcG9zc2libGUgYnVuZGxlIGlkcyB0aGF0IHRoZSBpbnNwZWN0b3JcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VsZCByZXR1cm5cbiAgICogICAtIHBsYXRmb3JtVmVyc2lvbiAtIHZlcnNpb24gb2YgaU9TXG4gICAqICAgLSB1c2VOZXdTYWZhcmkgLSBmb3Igd2ViIGluc3BlY3Rvciwgd2hldGhlciB0aGlzIGlzIGEgbmV3IFNhZmFyaSBpbnN0YW5jZVxuICAgKiAgIC0gcGFnZUxvYWRNcyAtIHRoZSB0aW1lLCBpbiBtcywgdGhhdCBzaG91bGQgYmUgd2FpdGVkIGZvciBwYWdlIGxvYWRpbmdcbiAgICogICAtIGhvc3QgLSB0aGUgcmVtb3RlIGRlYnVnZ2VyJ3MgaG9zdCBhZGRyZXNzXG4gICAqICAgLSBwb3J0IC0gdGhlIHJlbW90ZSBkZWJ1Z2dlciBwb3J0IHRocm91Z2ggd2hpY2ggdG8gY29tbXVuaWNhdGVcbiAgICogICAtIGxvZ0FsbENvbW11bmljYXRpb24gLSBsb2cgcGxpc3RzIHNlbnQgYW5kIHJlY2VpdmVkIGZyb20gV2ViIEluc3BlY3RvclxuICAgKiAgIC0gbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgLSBsb2cgY29tbXVuaWNhdGlvbiBmcm9tIFdlYiBJbnNwZWN0b3IgYXMgaGV4IGR1bXBcbiAgICogICAtIHNvY2tldENodW5rU2l6ZSAtIHNpemUsIGluIGJ5dGVzLCBvZiBjaHVua3Mgb2YgZGF0YSBzZW50IHRvIFdlYiBJbnNwZWN0b3IgKHJlYWwgZGV2aWNlIG9ubHkpXG4gICAqICAgLSB3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCAtIFRoZSBtYXhpbXVtIHNpemUgaW4gYnl0ZXMgb2YgYSBzaW5nbGUgZGF0YSBmcmFtZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZGV2aWNlIGNvbW11bmljYXRpb24gcHJvdG9jb2xcbiAgICovXG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgaWYgKFZFUlNJT04pIHtcbiAgICAgIGxvZy5pbmZvKGBSZW1vdGUgRGVidWdnZXIgdmVyc2lvbiAke1ZFUlNJT059YCk7XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgYnVuZGxlSWQsXG4gICAgICBhZGRpdGlvbmFsQnVuZGxlSWRzID0gW10sXG4gICAgICBwbGF0Zm9ybVZlcnNpb24sXG4gICAgICBpc1NhZmFyaSA9IHRydWUsXG4gICAgICBpbmNsdWRlU2FmYXJpID0gZmFsc2UsXG4gICAgICB1c2VOZXdTYWZhcmkgPSBmYWxzZSxcbiAgICAgIHBhZ2VMb2FkTXMsXG4gICAgICBob3N0LFxuICAgICAgcG9ydCA9IFJFTU9URV9ERUJVR0dFUl9QT1JULFxuICAgICAgc29ja2V0UGF0aCxcbiAgICAgIHBhZ2VSZWFkeVRpbWVvdXQgPSBQQUdFX1JFQURZX1RJTUVPVVQsXG4gICAgICByZW1vdGVEZWJ1Z1Byb3h5LFxuICAgICAgZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUgPSBmYWxzZSxcbiAgICAgIGxvZ0Z1bGxSZXNwb25zZSA9IGZhbHNlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbiA9IGZhbHNlLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgPSBmYWxzZSxcbiAgICAgIHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoLFxuICAgICAgc29ja2V0Q2h1bmtTaXplLFxuICAgICAgZnVsbFBhZ2VJbml0aWFsaXphdGlvbixcbiAgICB9ID0gb3B0cztcblxuICAgIHRoaXMuYnVuZGxlSWQgPSBidW5kbGVJZDtcbiAgICB0aGlzLmFkZGl0aW9uYWxCdW5kbGVJZHMgPSBhZGRpdGlvbmFsQnVuZGxlSWRzO1xuICAgIHRoaXMucGxhdGZvcm1WZXJzaW9uID0gcGxhdGZvcm1WZXJzaW9uO1xuICAgIHRoaXMuaXNTYWZhcmkgPSBpc1NhZmFyaTtcbiAgICB0aGlzLmluY2x1ZGVTYWZhcmkgPSBpbmNsdWRlU2FmYXJpO1xuICAgIHRoaXMudXNlTmV3U2FmYXJpID0gdXNlTmV3U2FmYXJpO1xuICAgIHRoaXMucGFnZUxvYWRNcyA9IHBhZ2VMb2FkTXM7XG4gICAgbG9nLmRlYnVnKGB1c2VOZXdTYWZhcmkgLS0+ICR7dGhpcy51c2VOZXdTYWZhcml9YCk7XG5cbiAgICB0aGlzLmdhcmJhZ2VDb2xsZWN0T25FeGVjdXRlID0gZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGU7XG5cbiAgICB0aGlzLmhvc3QgPSBob3N0O1xuICAgIHRoaXMucG9ydCA9IHBvcnQ7XG4gICAgdGhpcy5zb2NrZXRQYXRoID0gc29ja2V0UGF0aDtcbiAgICB0aGlzLnJlbW90ZURlYnVnUHJveHkgPSByZW1vdGVEZWJ1Z1Byb3h5O1xuICAgIHRoaXMucGFnZVJlYWR5VGltZW91dCA9IHBhZ2VSZWFkeVRpbWVvdXQ7XG5cbiAgICB0aGlzLmxvZ0FsbENvbW11bmljYXRpb24gPSBfLmlzTmlsKGxvZ0FsbENvbW11bmljYXRpb24pID8gISFsb2dGdWxsUmVzcG9uc2UgOiAhIWxvZ0FsbENvbW11bmljYXRpb247XG4gICAgdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCA9IGxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wO1xuICAgIHRoaXMuc29ja2V0Q2h1bmtTaXplID0gc29ja2V0Q2h1bmtTaXplO1xuXG4gICAgaWYgKF8uaXNJbnRlZ2VyKHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoKSkge1xuICAgICAgdGhpcy53ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCA9IHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoO1xuICAgIH1cblxuICAgIHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbiA9IGZ1bGxQYWdlSW5pdGlhbGl6YXRpb247XG5cbiAgICB0aGlzLl9sb2NrID0gbmV3IEFzeW5jTG9jaygpO1xuICB9XG5cbiAgc2V0dXAgKCkge1xuICAgIC8vIGFwcCBoYW5kbGluZyBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5hcHBEaWN0ID0ge307XG4gICAgdGhpcy5hcHBJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlSWRLZXkgPSBudWxsO1xuICAgIHRoaXMucGFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9uYXZpZ2F0aW5nVG9QYWdlID0gZmFsc2U7XG4gICAgdGhpcy5hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkID0gZmFsc2U7XG5cbiAgICB0aGlzLnJwY0NsaWVudCA9IG51bGw7XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnMgPSB7fTtcbiAgfVxuXG4gIHRlYXJkb3duICgpIHtcbiAgICBsb2cuZGVidWcoJ0NsZWFuaW5nIHVwIGxpc3RlbmVycycpO1xuXG4gICAgdGhpcy5hcHBEaWN0ID0ge307XG4gICAgdGhpcy5hcHBJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlSWRLZXkgPSBudWxsO1xuICAgIHRoaXMucGFnZUxvYWRpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMucnBjQ2xpZW50ID0gbnVsbDtcblxuICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKFJlbW90ZURlYnVnZ2VyLkVWRU5UX1BBR0VfQ0hBTkdFKTtcbiAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhSZW1vdGVEZWJ1Z2dlci5FVkVOVF9ESVNDT05ORUNUKTtcbiAgfVxuXG4gIGluaXRScGNDbGllbnQgKCkge1xuICAgIHRoaXMucnBjQ2xpZW50ID0gbmV3IFJwY0NsaWVudFNpbXVsYXRvcih7XG4gICAgICBidW5kbGVJZDogdGhpcy5idW5kbGVJZCxcbiAgICAgIHBsYXRmb3JtVmVyc2lvbjogdGhpcy5wbGF0Zm9ybVZlcnNpb24sXG4gICAgICBpc1NhZmFyaTogdGhpcy5pc1NhZmFyaSxcbiAgICAgIGhvc3Q6IHRoaXMuaG9zdCxcbiAgICAgIHBvcnQ6IHRoaXMucG9ydCxcbiAgICAgIHNvY2tldFBhdGg6IHRoaXMuc29ja2V0UGF0aCxcbiAgICAgIG1lc3NhZ2VQcm94eTogdGhpcy5yZW1vdGVEZWJ1Z1Byb3h5LFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbjogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uLFxuICAgICAgbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXA6IHRoaXMubG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAsXG4gICAgICBmdWxsUGFnZUluaXRpYWxpemF0aW9uOiB0aGlzLmZ1bGxQYWdlSW5pdGlhbGl6YXRpb24sXG4gICAgICB3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aDogdGhpcy53ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBpc0Nvbm5lY3RlZCAoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5ycGNDbGllbnQ/LmlzQ29ubmVjdGVkO1xuICB9XG5cbiAgYXN5bmMgbGF1bmNoU2FmYXJpICgpIHtcbiAgICBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdsYXVuY2hBcHBsaWNhdGlvbicsIHtcbiAgICAgIGJ1bmRsZUlkOiBTQUZBUklfQlVORExFX0lEXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdGFydFRpbWVsaW5lIChmbikge1xuICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgdG8gcmVjb3JkIHRoZSB0aW1lbGluZScpO1xuICAgIHRoaXMucnBjQ2xpZW50Lm9uKCdUaW1lbGluZS5ldmVudFJlY29yZGVkJywgZm4pO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdzdGFydFRpbWVsaW5lJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc3RvcFRpbWVsaW5lICgpIHtcbiAgICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRvIHJlY29yZCB0aGUgdGltZWxpbmUnKTtcbiAgICBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdUaW1lbGluZS5zdG9wJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgIH0pO1xuICB9XG5cbiAgLypcbiAgICogS2VlcCB0cmFjayBvZiB0aGUgY2xpZW50IGV2ZW50IGxpc3RlbmVycyBzbyB0aGV5IGNhbiBiZSByZW1vdmVkXG4gICAqL1xuICBhZGRDbGllbnRFdmVudExpc3RlbmVyIChldmVudE5hbWUsIGxpc3RlbmVyKSB7XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXSA9IHRoaXMuX2NsaWVudEV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0gfHwgW107XG4gICAgdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXS5wdXNoKGxpc3RlbmVyKTtcbiAgICB0aGlzLnJwY0NsaWVudC5vbihldmVudE5hbWUsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIHJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIgKGV2ZW50TmFtZSkge1xuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgKHRoaXMuX2NsaWVudEV2ZW50TGlzdGVuZXJzW2V2ZW50TmFtZV0gfHwgW10pKSB7XG4gICAgICB0aGlzLnJwY0NsaWVudC5vZmYoZXZlbnROYW1lLCBsaXN0ZW5lcik7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRDb25zb2xlIChsaXN0ZW5lcikge1xuICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgdG8gbGlzdGVuIGZvciBKYXZhU2NyaXB0IGNvbnNvbGUnKTtcbiAgICB0aGlzLmFkZENsaWVudEV2ZW50TGlzdGVuZXIoJ0NvbnNvbGUubWVzc2FnZUFkZGVkJywgbGlzdGVuZXIpO1xuICAgIHRoaXMuYWRkQ2xpZW50RXZlbnRMaXN0ZW5lcignQ29uc29sZS5tZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkJywgbGlzdGVuZXIpO1xuICB9XG5cbiAgc3RvcENvbnNvbGUgKCkge1xuICAgIGxvZy5kZWJ1ZygnU3RvcHBpbmcgdG8gbGlzdGVuIGZvciBKYXZhU2NyaXB0IGNvbnNvbGUnKTtcbiAgICB0aGlzLnJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIoJ0NvbnNvbGUubWVzc2FnZUFkZGVkJyk7XG4gICAgdGhpcy5yZW1vdmVDbGllbnRFdmVudExpc3RlbmVyKCdDb25zb2xlLm1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQnKTtcbiAgfVxuXG4gIHN0YXJ0TmV0d29yayAobGlzdGVuZXIpIHtcbiAgICBsb2cuZGVidWcoJ1N0YXJ0aW5nIHRvIGxpc3RlbiBmb3IgbmV0d29yayBldmVudHMnKTtcbiAgICB0aGlzLmFkZENsaWVudEV2ZW50TGlzdGVuZXIoJ05ldHdvcmtFdmVudCcsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIHN0b3BOZXR3b3JrICgpIHtcbiAgICBsb2cuZGVidWcoJ1N0b3BwaW5nIHRvIGxpc3RlbiBmb3IgbmV0d29yayBldmVudHMnKTtcbiAgICB0aGlzLnJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIoJ05ldHdvcmtFdmVudCcpO1xuICB9XG5cbiAgc2V0IGFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgKGFsbG93KSB7XG4gICAgdGhpcy5fYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCA9IGFsbG93O1xuICB9XG5cbiAgZ2V0IGFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q29va2llcyAodXJscykge1xuICAgIGxvZy5kZWJ1ZygnR2V0dGluZyBjb29raWVzJyk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ1BhZ2UuZ2V0Q29va2llcycsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICAgIHVybHMsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVDb29raWUgKGNvb2tpZU5hbWUsIHVybCkge1xuICAgIGxvZy5kZWJ1ZyhgRGVsZXRpbmcgY29va2llICcke2Nvb2tpZU5hbWV9JyBvbiAnJHt1cmx9J2ApO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJwY0NsaWVudC5zZW5kKCdQYWdlLmRlbGV0ZUNvb2tpZScsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICAgIGNvb2tpZU5hbWUsXG4gICAgICB1cmwsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnYXJiYWdlQ29sbGVjdCAodGltZW91dE1zID0gR0FSQkFHRV9DT0xMRUNUX1RJTUVPVVQpIHtcbiAgICBsb2cuZGVidWcoYEdhcmJhZ2UgY29sbGVjdGluZyB3aXRoICR7dGltZW91dE1zfW1zIHRpbWVvdXRgKTtcbiAgICB0cnkge1xuICAgICAgY2hlY2tQYXJhbXMoe2FwcElkS2V5OiB0aGlzLmFwcElkS2V5LCBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5fSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cuZGVidWcoYFVuYWJsZSB0byBjb2xsZWN0IGdhcmJhZ2UgYXQgdGhpcyB0aW1lYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgQi5yZXNvbHZlKHRoaXMucnBjQ2xpZW50LnNlbmQoJ0hlYXAuZ2MnLCB7XG4gICAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gICAgfSkpLnRpbWVvdXQodGltZW91dE1zKVxuICAgIC50aGVuKGZ1bmN0aW9uIGdjU3VjY2VzcyAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tdGhlblxuICAgICAgbG9nLmRlYnVnKGBHYXJiYWdlIGNvbGxlY3Rpb24gc3VjY2Vzc2Z1bGApO1xuICAgIH0pLmNhdGNoKGZ1bmN0aW9uIGdjRXJyb3IgKGVycikgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrc1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEIuVGltZW91dEVycm9yKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgR2FyYmFnZSBjb2xsZWN0aW9uIHRpbWVkIG91dCBhZnRlciAke3RpbWVvdXRNc31tc2ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmRlYnVnKGBVbmFibGUgdG8gY29sbGVjdCBnYXJiYWdlOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXNlQXBwRGljdExvY2sgKGZuKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2xvY2suYWNxdWlyZSgnYXBwRGljdCcsIGZuKTtcbiAgfVxuXG4gIGdldCBza2lwcGVkQXBwcyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NraXBwZWRBcHBzIHx8IFtdO1xuICB9XG59XG5cbmZvciAoY29uc3QgW25hbWUsIGZuXSBvZiBfLnRvUGFpcnMobWl4aW5zKSkge1xuICBSZW1vdGVEZWJ1Z2dlci5wcm90b3R5cGVbbmFtZV0gPSBmbjtcbn1cblxuZm9yIChjb25zdCBbbmFtZSwgZXZlbnRdIG9mIF8udG9QYWlycyhldmVudHMpKSB7XG4gIFJlbW90ZURlYnVnZ2VyW25hbWVdID0gZXZlbnQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlbW90ZURlYnVnZ2VyO1xuZXhwb3J0IHtcbiAgUmVtb3RlRGVidWdnZXIsIFJFTU9URV9ERUJVR0dFUl9QT1JULCBSUENfUkVTUE9OU0VfVElNRU9VVF9NUyxcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsSUFBSUEsT0FBSjs7QUFDQSxJQUFJO0VBQ0ZBLE9BQU8sR0FBR0MsT0FBTyxDQUFDQyxhQUFBLENBQUtDLE9BQUwsQ0FBYUMsU0FBYixFQUF3QixJQUF4QixFQUE4QixJQUE5QixFQUFvQyxjQUFwQyxDQUFELENBQVAsQ0FBNkRDLE9BQXZFO0FBQ0QsQ0FGRCxDQUVFLE9BQU9DLEdBQVAsRUFBWSxDQUFFOztBQUVoQixNQUFNQyxvQkFBb0IsR0FBRyxLQUE3Qjs7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyx3QkFBekI7QUFHQSxNQUFNQyx1QkFBdUIsR0FBRyxJQUFoQzs7QUFFQSxNQUFNQyxrQkFBa0IsR0FBRyxJQUEzQjtBQUVBLE1BQU1DLHVCQUF1QixHQUFHLElBQWhDOztBQUdBLE1BQU1DLGNBQU4sU0FBNkJDLG9CQUE3QixDQUEwQztFQWlCeENDLFdBQVcsQ0FBRUMsSUFBSSxHQUFHLEVBQVQsRUFBYTtJQUN0Qjs7SUFFQSxJQUFJZixPQUFKLEVBQWE7TUFDWGdCLGVBQUEsQ0FBSUMsSUFBSixDQUFVLDJCQUEwQmpCLE9BQVEsRUFBNUM7SUFDRDs7SUFFRCxNQUFNO01BQ0prQixRQURJO01BRUpDLG1CQUFtQixHQUFHLEVBRmxCO01BR0pDLGVBSEk7TUFJSkMsUUFBUSxHQUFHLElBSlA7TUFLSkMsYUFBYSxHQUFHLEtBTFo7TUFNSkMsWUFBWSxHQUFHLEtBTlg7TUFPSkMsVUFQSTtNQVFKQyxJQVJJO01BU0pDLElBQUksR0FBR25CLG9CQVRIO01BVUpvQixVQVZJO01BV0pDLGdCQUFnQixHQUFHbEIsa0JBWGY7TUFZSm1CLGdCQVpJO01BYUpDLHVCQUF1QixHQUFHLEtBYnRCO01BY0pDLGVBQWUsR0FBRyxLQWRkO01BZUpDLG1CQUFtQixHQUFHLEtBZmxCO01BZ0JKQywwQkFBMEIsR0FBRyxLQWhCekI7TUFpQkpDLDBCQWpCSTtNQWtCSkMsZUFsQkk7TUFtQkpDO0lBbkJJLElBb0JGckIsSUFwQko7SUFzQkEsS0FBS0csUUFBTCxHQUFnQkEsUUFBaEI7SUFDQSxLQUFLQyxtQkFBTCxHQUEyQkEsbUJBQTNCO0lBQ0EsS0FBS0MsZUFBTCxHQUF1QkEsZUFBdkI7SUFDQSxLQUFLQyxRQUFMLEdBQWdCQSxRQUFoQjtJQUNBLEtBQUtDLGFBQUwsR0FBcUJBLGFBQXJCO0lBQ0EsS0FBS0MsWUFBTCxHQUFvQkEsWUFBcEI7SUFDQSxLQUFLQyxVQUFMLEdBQWtCQSxVQUFsQjs7SUFDQVIsZUFBQSxDQUFJcUIsS0FBSixDQUFXLG9CQUFtQixLQUFLZCxZQUFhLEVBQWhEOztJQUVBLEtBQUtPLHVCQUFMLEdBQStCQSx1QkFBL0I7SUFFQSxLQUFLTCxJQUFMLEdBQVlBLElBQVo7SUFDQSxLQUFLQyxJQUFMLEdBQVlBLElBQVo7SUFDQSxLQUFLQyxVQUFMLEdBQWtCQSxVQUFsQjtJQUNBLEtBQUtFLGdCQUFMLEdBQXdCQSxnQkFBeEI7SUFDQSxLQUFLRCxnQkFBTCxHQUF3QkEsZ0JBQXhCO0lBRUEsS0FBS0ksbUJBQUwsR0FBMkJNLGVBQUEsQ0FBRUMsS0FBRixDQUFRUCxtQkFBUixJQUErQixDQUFDLENBQUNELGVBQWpDLEdBQW1ELENBQUMsQ0FBQ0MsbUJBQWhGO0lBQ0EsS0FBS0MsMEJBQUwsR0FBa0NBLDBCQUFsQztJQUNBLEtBQUtFLGVBQUwsR0FBdUJBLGVBQXZCOztJQUVBLElBQUlHLGVBQUEsQ0FBRUUsU0FBRixDQUFZTiwwQkFBWixDQUFKLEVBQTZDO01BQzNDLEtBQUtBLDBCQUFMLEdBQWtDQSwwQkFBbEM7SUFDRDs7SUFFRCxLQUFLRSxzQkFBTCxHQUE4QkEsc0JBQTlCO0lBRUEsS0FBS0ssS0FBTCxHQUFhLElBQUlDLGtCQUFKLEVBQWI7RUFDRDs7RUFFREMsS0FBSyxHQUFJO0lBRVAsS0FBS0MsT0FBTCxHQUFlLEVBQWY7SUFDQSxLQUFLQyxRQUFMLEdBQWdCLElBQWhCO0lBQ0EsS0FBS0MsU0FBTCxHQUFpQixJQUFqQjtJQUNBLEtBQUtDLFdBQUwsR0FBbUIsS0FBbkI7SUFDQSxLQUFLQyxpQkFBTCxHQUF5QixLQUF6QjtJQUNBLEtBQUtDLDRCQUFMLEdBQW9DLEtBQXBDO0lBRUEsS0FBS0MsU0FBTCxHQUFpQixJQUFqQjtJQUNBLEtBQUtDLHFCQUFMLEdBQTZCLEVBQTdCO0VBQ0Q7O0VBRURDLFFBQVEsR0FBSTtJQUNWcEMsZUFBQSxDQUFJcUIsS0FBSixDQUFVLHVCQUFWOztJQUVBLEtBQUtPLE9BQUwsR0FBZSxFQUFmO0lBQ0EsS0FBS0MsUUFBTCxHQUFnQixJQUFoQjtJQUNBLEtBQUtDLFNBQUwsR0FBaUIsSUFBakI7SUFDQSxLQUFLQyxXQUFMLEdBQW1CLEtBQW5CO0lBRUEsS0FBS0csU0FBTCxHQUFpQixJQUFqQjtJQUVBLEtBQUtHLGtCQUFMLENBQXdCekMsY0FBYyxDQUFDMEMsaUJBQXZDO0lBQ0EsS0FBS0Qsa0JBQUwsQ0FBd0J6QyxjQUFjLENBQUMyQyxnQkFBdkM7RUFDRDs7RUFFREMsYUFBYSxHQUFJO0lBQ2YsS0FBS04sU0FBTCxHQUFpQixJQUFJTyx1QkFBSixDQUF1QjtNQUN0Q3ZDLFFBQVEsRUFBRSxLQUFLQSxRQUR1QjtNQUV0Q0UsZUFBZSxFQUFFLEtBQUtBLGVBRmdCO01BR3RDQyxRQUFRLEVBQUUsS0FBS0EsUUFIdUI7TUFJdENJLElBQUksRUFBRSxLQUFLQSxJQUoyQjtNQUt0Q0MsSUFBSSxFQUFFLEtBQUtBLElBTDJCO01BTXRDQyxVQUFVLEVBQUUsS0FBS0EsVUFOcUI7TUFPdEMrQixZQUFZLEVBQUUsS0FBSzdCLGdCQVBtQjtNQVF0Q0csbUJBQW1CLEVBQUUsS0FBS0EsbUJBUlk7TUFTdENDLDBCQUEwQixFQUFFLEtBQUtBLDBCQVRLO01BVXRDRyxzQkFBc0IsRUFBRSxLQUFLQSxzQkFWUztNQVd0Q0YsMEJBQTBCLEVBQUUsS0FBS0E7SUFYSyxDQUF2QixDQUFqQjtFQWFEOztFQUVjLElBQVh5QixXQUFXLEdBQUk7SUFBQTs7SUFDakIsT0FBTyxDQUFDLHFCQUFDLEtBQUtULFNBQU4sNENBQUMsZ0JBQWdCUyxXQUFqQixDQUFSO0VBQ0Q7O0VBRWlCLE1BQVpDLFlBQVksR0FBSTtJQUNwQixNQUFNLEtBQUtWLFNBQUwsQ0FBZVcsSUFBZixDQUFvQixtQkFBcEIsRUFBeUM7TUFDN0MzQyxRQUFRLEVBQUVWO0lBRG1DLENBQXpDLENBQU47RUFHRDs7RUFFa0IsTUFBYnNELGFBQWEsQ0FBRUMsRUFBRixFQUFNO0lBQ3ZCL0MsZUFBQSxDQUFJcUIsS0FBSixDQUFVLGlDQUFWOztJQUNBLEtBQUthLFNBQUwsQ0FBZWMsRUFBZixDQUFrQix3QkFBbEIsRUFBNENELEVBQTVDO0lBQ0EsT0FBTyxNQUFNLEtBQUtiLFNBQUwsQ0FBZVcsSUFBZixDQUFvQixlQUFwQixFQUFxQztNQUNoRGhCLFFBQVEsRUFBRSxLQUFLQSxRQURpQztNQUVoREMsU0FBUyxFQUFFLEtBQUtBO0lBRmdDLENBQXJDLENBQWI7RUFJRDs7RUFFaUIsTUFBWm1CLFlBQVksR0FBSTtJQUNwQmpELGVBQUEsQ0FBSXFCLEtBQUosQ0FBVSxpQ0FBVjs7SUFDQSxNQUFNLEtBQUthLFNBQUwsQ0FBZVcsSUFBZixDQUFvQixlQUFwQixFQUFxQztNQUN6Q2hCLFFBQVEsRUFBRSxLQUFLQSxRQUQwQjtNQUV6Q0MsU0FBUyxFQUFFLEtBQUtBO0lBRnlCLENBQXJDLENBQU47RUFJRDs7RUFLRG9CLHNCQUFzQixDQUFFQyxTQUFGLEVBQWFDLFFBQWIsRUFBdUI7SUFDM0MsS0FBS2pCLHFCQUFMLENBQTJCZ0IsU0FBM0IsSUFBd0MsS0FBS2hCLHFCQUFMLENBQTJCZ0IsU0FBM0IsS0FBeUMsRUFBakY7O0lBQ0EsS0FBS2hCLHFCQUFMLENBQTJCZ0IsU0FBM0IsRUFBc0NFLElBQXRDLENBQTJDRCxRQUEzQzs7SUFDQSxLQUFLbEIsU0FBTCxDQUFlYyxFQUFmLENBQWtCRyxTQUFsQixFQUE2QkMsUUFBN0I7RUFDRDs7RUFFREUseUJBQXlCLENBQUVILFNBQUYsRUFBYTtJQUNwQyxLQUFLLE1BQU1DLFFBQVgsSUFBd0IsS0FBS2pCLHFCQUFMLENBQTJCZ0IsU0FBM0IsS0FBeUMsRUFBakUsRUFBc0U7TUFDcEUsS0FBS2pCLFNBQUwsQ0FBZXFCLEdBQWYsQ0FBbUJKLFNBQW5CLEVBQThCQyxRQUE5QjtJQUNEO0VBQ0Y7O0VBRURJLFlBQVksQ0FBRUosUUFBRixFQUFZO0lBQ3RCcEQsZUFBQSxDQUFJcUIsS0FBSixDQUFVLDJDQUFWOztJQUNBLEtBQUs2QixzQkFBTCxDQUE0QixzQkFBNUIsRUFBb0RFLFFBQXBEO0lBQ0EsS0FBS0Ysc0JBQUwsQ0FBNEIsbUNBQTVCLEVBQWlFRSxRQUFqRTtFQUNEOztFQUVESyxXQUFXLEdBQUk7SUFDYnpELGVBQUEsQ0FBSXFCLEtBQUosQ0FBVSwyQ0FBVjs7SUFDQSxLQUFLaUMseUJBQUwsQ0FBK0Isc0JBQS9CO0lBQ0EsS0FBS0EseUJBQUwsQ0FBK0IsbUNBQS9CO0VBQ0Q7O0VBRURJLFlBQVksQ0FBRU4sUUFBRixFQUFZO0lBQ3RCcEQsZUFBQSxDQUFJcUIsS0FBSixDQUFVLHVDQUFWOztJQUNBLEtBQUs2QixzQkFBTCxDQUE0QixjQUE1QixFQUE0Q0UsUUFBNUM7RUFDRDs7RUFFRE8sV0FBVyxHQUFJO0lBQ2IzRCxlQUFBLENBQUlxQixLQUFKLENBQVUsdUNBQVY7O0lBQ0EsS0FBS2lDLHlCQUFMLENBQStCLGNBQS9CO0VBQ0Q7O0VBRStCLElBQTVCckIsNEJBQTRCLENBQUUyQixLQUFGLEVBQVM7SUFDdkMsS0FBS0MsNkJBQUwsR0FBcUNELEtBQXJDO0VBQ0Q7O0VBRStCLElBQTVCM0IsNEJBQTRCLEdBQUk7SUFDbEMsT0FBTyxLQUFLNEIsNkJBQVo7RUFDRDs7RUFFZSxNQUFWQyxVQUFVLENBQUVDLElBQUYsRUFBUTtJQUN0Qi9ELGVBQUEsQ0FBSXFCLEtBQUosQ0FBVSxpQkFBVjs7SUFDQSxPQUFPLE1BQU0sS0FBS2EsU0FBTCxDQUFlVyxJQUFmLENBQW9CLGlCQUFwQixFQUF1QztNQUNsRGhCLFFBQVEsRUFBRSxLQUFLQSxRQURtQztNQUVsREMsU0FBUyxFQUFFLEtBQUtBLFNBRmtDO01BR2xEaUM7SUFIa0QsQ0FBdkMsQ0FBYjtFQUtEOztFQUVpQixNQUFaQyxZQUFZLENBQUVDLFVBQUYsRUFBY0MsR0FBZCxFQUFtQjtJQUNuQ2xFLGVBQUEsQ0FBSXFCLEtBQUosQ0FBVyxvQkFBbUI0QyxVQUFXLFNBQVFDLEdBQUksR0FBckQ7O0lBQ0EsT0FBTyxNQUFNLEtBQUtoQyxTQUFMLENBQWVXLElBQWYsQ0FBb0IsbUJBQXBCLEVBQXlDO01BQ3BEaEIsUUFBUSxFQUFFLEtBQUtBLFFBRHFDO01BRXBEQyxTQUFTLEVBQUUsS0FBS0EsU0FGb0M7TUFHcERtQyxVQUhvRDtNQUlwREM7SUFKb0QsQ0FBekMsQ0FBYjtFQU1EOztFQUVtQixNQUFkQyxjQUFjLENBQUVDLFNBQVMsR0FBR3pFLHVCQUFkLEVBQXVDO0lBQ3pESyxlQUFBLENBQUlxQixLQUFKLENBQVcsMkJBQTBCK0MsU0FBVSxZQUEvQzs7SUFDQSxJQUFJO01BQ0YsSUFBQUMsa0JBQUEsRUFBWTtRQUFDeEMsUUFBUSxFQUFFLEtBQUtBLFFBQWhCO1FBQTBCQyxTQUFTLEVBQUUsS0FBS0E7TUFBMUMsQ0FBWjtJQUNELENBRkQsQ0FFRSxPQUFPd0MsR0FBUCxFQUFZO01BQ1p0RSxlQUFBLENBQUlxQixLQUFKLENBQVcsd0NBQVg7O01BQ0E7SUFDRDs7SUFFRCxNQUFNa0QsaUJBQUEsQ0FBRXBGLE9BQUYsQ0FBVSxLQUFLK0MsU0FBTCxDQUFlVyxJQUFmLENBQW9CLFNBQXBCLEVBQStCO01BQzdDaEIsUUFBUSxFQUFFLEtBQUtBLFFBRDhCO01BRTdDQyxTQUFTLEVBQUUsS0FBS0E7SUFGNkIsQ0FBL0IsQ0FBVixFQUdGMEMsT0FIRSxDQUdNSixTQUhOLEVBSUxLLElBSkssQ0FJQSxTQUFTQyxTQUFULEdBQXNCO01BQzFCMUUsZUFBQSxDQUFJcUIsS0FBSixDQUFXLCtCQUFYO0lBQ0QsQ0FOSyxFQU1Ic0QsS0FORyxDQU1HLFNBQVNDLE9BQVQsQ0FBa0JOLEdBQWxCLEVBQXVCO01BQzlCLElBQUlBLEdBQUcsWUFBWUMsaUJBQUEsQ0FBRU0sWUFBckIsRUFBbUM7UUFDakM3RSxlQUFBLENBQUlxQixLQUFKLENBQVcsc0NBQXFDK0MsU0FBVSxJQUExRDtNQUNELENBRkQsTUFFTztRQUNMcEUsZUFBQSxDQUFJcUIsS0FBSixDQUFXLDhCQUE2QmlELEdBQUcsQ0FBQ1EsT0FBUSxFQUFwRDtNQUNEO0lBQ0YsQ0FaSyxDQUFOO0VBYUQ7O0VBRW1CLE1BQWRDLGNBQWMsQ0FBRWhDLEVBQUYsRUFBTTtJQUN4QixPQUFPLE1BQU0sS0FBS3RCLEtBQUwsQ0FBV3VELE9BQVgsQ0FBbUIsU0FBbkIsRUFBOEJqQyxFQUE5QixDQUFiO0VBQ0Q7O0VBRWMsSUFBWGtDLFdBQVcsR0FBSTtJQUNqQixPQUFPLEtBQUtDLFlBQUwsSUFBcUIsRUFBNUI7RUFDRDs7QUFoUHVDOzs7O0FBbVAxQyxLQUFLLE1BQU0sQ0FBQ0MsSUFBRCxFQUFPcEMsRUFBUCxDQUFYLElBQXlCekIsZUFBQSxDQUFFOEQsT0FBRixDQUFVQyxjQUFWLENBQXpCLEVBQTRDO0VBQzFDekYsY0FBYyxDQUFDMEYsU0FBZixDQUF5QkgsSUFBekIsSUFBaUNwQyxFQUFqQztBQUNEOztBQUVELEtBQUssTUFBTSxDQUFDb0MsSUFBRCxFQUFPSSxLQUFQLENBQVgsSUFBNEJqRSxlQUFBLENBQUU4RCxPQUFGLENBQVVJLGNBQVYsQ0FBNUIsRUFBK0M7RUFDN0M1RixjQUFjLENBQUN1RixJQUFELENBQWQsR0FBdUJJLEtBQXZCO0FBQ0Q7O2VBRWMzRixjIn0=
|
|
225
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSRU1PVEVfREVCVUdHRVJfUE9SVCIsIlNBRkFSSV9CVU5ETEVfSUQiLCJSUENfUkVTUE9OU0VfVElNRU9VVF9NUyIsIlBBR0VfUkVBRFlfVElNRU9VVCIsIkdBUkJBR0VfQ09MTEVDVF9USU1FT1VUIiwiUmVtb3RlRGVidWdnZXIiLCJFdmVudEVtaXR0ZXIiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJsb2ciLCJpbmZvIiwicmVxdWlyZSIsInBhdGgiLCJyZXNvbHZlIiwiZ2V0TW9kdWxlUm9vdCIsInZlcnNpb24iLCJidW5kbGVJZCIsImFkZGl0aW9uYWxCdW5kbGVJZHMiLCJwbGF0Zm9ybVZlcnNpb24iLCJpc1NhZmFyaSIsImluY2x1ZGVTYWZhcmkiLCJ1c2VOZXdTYWZhcmkiLCJwYWdlTG9hZE1zIiwiaG9zdCIsInBvcnQiLCJzb2NrZXRQYXRoIiwicGFnZVJlYWR5VGltZW91dCIsInJlbW90ZURlYnVnUHJveHkiLCJnYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZSIsImxvZ0Z1bGxSZXNwb25zZSIsImxvZ0FsbENvbW11bmljYXRpb24iLCJsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCIsIndlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoIiwic29ja2V0Q2h1bmtTaXplIiwiZnVsbFBhZ2VJbml0aWFsaXphdGlvbiIsImRlYnVnIiwiXyIsImlzTmlsIiwiaXNJbnRlZ2VyIiwiX2xvY2siLCJBc3luY0xvY2siLCJzZXR1cCIsImFwcERpY3QiLCJhcHBJZEtleSIsInBhZ2VJZEtleSIsInBhZ2VMb2FkaW5nIiwiX25hdmlnYXRpbmdUb1BhZ2UiLCJhbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkIiwicnBjQ2xpZW50IiwiX2NsaWVudEV2ZW50TGlzdGVuZXJzIiwidGVhcmRvd24iLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJFVkVOVF9QQUdFX0NIQU5HRSIsIkVWRU5UX0RJU0NPTk5FQ1QiLCJpbml0UnBjQ2xpZW50IiwiUnBjQ2xpZW50U2ltdWxhdG9yIiwibWVzc2FnZVByb3h5IiwiaXNDb25uZWN0ZWQiLCJsYXVuY2hTYWZhcmkiLCJzZW5kIiwic3RhcnRUaW1lbGluZSIsImZuIiwib24iLCJzdG9wVGltZWxpbmUiLCJhZGRDbGllbnRFdmVudExpc3RlbmVyIiwiZXZlbnROYW1lIiwibGlzdGVuZXIiLCJwdXNoIiwicmVtb3ZlQ2xpZW50RXZlbnRMaXN0ZW5lciIsIm9mZiIsInN0YXJ0Q29uc29sZSIsInN0b3BDb25zb2xlIiwic3RhcnROZXR3b3JrIiwic3RvcE5ldHdvcmsiLCJhbGxvdyIsIl9hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkIiwiZ2V0Q29va2llcyIsInVybHMiLCJkZWxldGVDb29raWUiLCJjb29raWVOYW1lIiwidXJsIiwiZ2FyYmFnZUNvbGxlY3QiLCJ0aW1lb3V0TXMiLCJjaGVja1BhcmFtcyIsImVyciIsIkIiLCJ0aW1lb3V0IiwidGhlbiIsImdjU3VjY2VzcyIsImNhdGNoIiwiZ2NFcnJvciIsIlRpbWVvdXRFcnJvciIsIm1lc3NhZ2UiLCJ1c2VBcHBEaWN0TG9jayIsImFjcXVpcmUiLCJza2lwcGVkQXBwcyIsIl9za2lwcGVkQXBwcyIsIm5hbWUiLCJ0b1BhaXJzIiwibWl4aW5zIiwicHJvdG90eXBlIiwiZXZlbnQiLCJldmVudHMiXSwic291cmNlcyI6WyIuLi8uLi9saWIvcmVtb3RlLWRlYnVnZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IFJwY0NsaWVudFNpbXVsYXRvciB9IGZyb20gJy4vcnBjJztcbmltcG9ydCB7IGNoZWNrUGFyYW1zLCBnZXRNb2R1bGVSb290IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBtaXhpbnMsIGV2ZW50cyB9IGZyb20gJy4vbWl4aW5zJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBBc3luY0xvY2sgZnJvbSAnYXN5bmMtbG9jayc7XG5cbmNvbnN0IFJFTU9URV9ERUJVR0dFUl9QT1JUID0gMjc3NTM7XG5jb25zdCBTQUZBUklfQlVORExFX0lEID0gJ2NvbS5hcHBsZS5tb2JpbGVzYWZhcmknO1xuXG4vKiBIb3cgbWFueSBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3Igd2Via2l0IHRvIHJldHVybiBhIHJlc3BvbnNlIGJlZm9yZSB0aW1pbmcgb3V0ICovXG5jb25zdCBSUENfUkVTUE9OU0VfVElNRU9VVF9NUyA9IDUwMDA7XG5cbmNvbnN0IFBBR0VfUkVBRFlfVElNRU9VVCA9IDUwMDA7XG5cbmNvbnN0IEdBUkJBR0VfQ09MTEVDVF9USU1FT1VUID0gNTAwMDtcblxuXG5jbGFzcyBSZW1vdGVEZWJ1Z2dlciBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIC8qXG4gICAqIFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhbiBvcHRzIGhhc2ggd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqICAgLSBidW5kbGVJZCAtIGlkIG9mIHRoZSBhcHAgYmVpbmcgY29ubmVjdGVkIHRvXG4gICAqICAgLSBhZGRpdGlvbmFsQnVuZGxlSWRzIC0gYXJyYXkgb2YgcG9zc2libGUgYnVuZGxlIGlkcyB0aGF0IHRoZSBpbnNwZWN0b3JcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VsZCByZXR1cm5cbiAgICogICAtIHBsYXRmb3JtVmVyc2lvbiAtIHZlcnNpb24gb2YgaU9TXG4gICAqICAgLSB1c2VOZXdTYWZhcmkgLSBmb3Igd2ViIGluc3BlY3Rvciwgd2hldGhlciB0aGlzIGlzIGEgbmV3IFNhZmFyaSBpbnN0YW5jZVxuICAgKiAgIC0gcGFnZUxvYWRNcyAtIHRoZSB0aW1lLCBpbiBtcywgdGhhdCBzaG91bGQgYmUgd2FpdGVkIGZvciBwYWdlIGxvYWRpbmdcbiAgICogICAtIGhvc3QgLSB0aGUgcmVtb3RlIGRlYnVnZ2VyJ3MgaG9zdCBhZGRyZXNzXG4gICAqICAgLSBwb3J0IC0gdGhlIHJlbW90ZSBkZWJ1Z2dlciBwb3J0IHRocm91Z2ggd2hpY2ggdG8gY29tbXVuaWNhdGVcbiAgICogICAtIGxvZ0FsbENvbW11bmljYXRpb24gLSBsb2cgcGxpc3RzIHNlbnQgYW5kIHJlY2VpdmVkIGZyb20gV2ViIEluc3BlY3RvclxuICAgKiAgIC0gbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAgLSBsb2cgY29tbXVuaWNhdGlvbiBmcm9tIFdlYiBJbnNwZWN0b3IgYXMgaGV4IGR1bXBcbiAgICogICAtIHNvY2tldENodW5rU2l6ZSAtIHNpemUsIGluIGJ5dGVzLCBvZiBjaHVua3Mgb2YgZGF0YSBzZW50IHRvIFdlYiBJbnNwZWN0b3IgKHJlYWwgZGV2aWNlIG9ubHkpXG4gICAqICAgLSB3ZWJJbnNwZWN0b3JNYXhGcmFtZUxlbmd0aCAtIFRoZSBtYXhpbXVtIHNpemUgaW4gYnl0ZXMgb2YgYSBzaW5nbGUgZGF0YSBmcmFtZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZGV2aWNlIGNvbW11bmljYXRpb24gcHJvdG9jb2xcbiAgICovXG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgbG9nLmluZm8oYFJlbW90ZSBEZWJ1Z2dlciB2ZXJzaW9uICR7cmVxdWlyZShwYXRoLnJlc29sdmUoZ2V0TW9kdWxlUm9vdCgpLCAncGFja2FnZS5qc29uJykpLnZlcnNpb259YCk7XG5cbiAgICBjb25zdCB7XG4gICAgICBidW5kbGVJZCxcbiAgICAgIGFkZGl0aW9uYWxCdW5kbGVJZHMgPSBbXSxcbiAgICAgIHBsYXRmb3JtVmVyc2lvbixcbiAgICAgIGlzU2FmYXJpID0gdHJ1ZSxcbiAgICAgIGluY2x1ZGVTYWZhcmkgPSBmYWxzZSxcbiAgICAgIHVzZU5ld1NhZmFyaSA9IGZhbHNlLFxuICAgICAgcGFnZUxvYWRNcyxcbiAgICAgIGhvc3QsXG4gICAgICBwb3J0ID0gUkVNT1RFX0RFQlVHR0VSX1BPUlQsXG4gICAgICBzb2NrZXRQYXRoLFxuICAgICAgcGFnZVJlYWR5VGltZW91dCA9IFBBR0VfUkVBRFlfVElNRU9VVCxcbiAgICAgIHJlbW90ZURlYnVnUHJveHksXG4gICAgICBnYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZSA9IGZhbHNlLFxuICAgICAgbG9nRnVsbFJlc3BvbnNlID0gZmFsc2UsXG4gICAgICBsb2dBbGxDb21tdW5pY2F0aW9uID0gZmFsc2UsXG4gICAgICBsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCA9IGZhbHNlLFxuICAgICAgd2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGgsXG4gICAgICBzb2NrZXRDaHVua1NpemUsXG4gICAgICBmdWxsUGFnZUluaXRpYWxpemF0aW9uLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgdGhpcy5idW5kbGVJZCA9IGJ1bmRsZUlkO1xuICAgIHRoaXMuYWRkaXRpb25hbEJ1bmRsZUlkcyA9IGFkZGl0aW9uYWxCdW5kbGVJZHM7XG4gICAgdGhpcy5wbGF0Zm9ybVZlcnNpb24gPSBwbGF0Zm9ybVZlcnNpb247XG4gICAgdGhpcy5pc1NhZmFyaSA9IGlzU2FmYXJpO1xuICAgIHRoaXMuaW5jbHVkZVNhZmFyaSA9IGluY2x1ZGVTYWZhcmk7XG4gICAgdGhpcy51c2VOZXdTYWZhcmkgPSB1c2VOZXdTYWZhcmk7XG4gICAgdGhpcy5wYWdlTG9hZE1zID0gcGFnZUxvYWRNcztcbiAgICBsb2cuZGVidWcoYHVzZU5ld1NhZmFyaSAtLT4gJHt0aGlzLnVzZU5ld1NhZmFyaX1gKTtcblxuICAgIHRoaXMuZ2FyYmFnZUNvbGxlY3RPbkV4ZWN1dGUgPSBnYXJiYWdlQ29sbGVjdE9uRXhlY3V0ZTtcblxuICAgIHRoaXMuaG9zdCA9IGhvc3Q7XG4gICAgdGhpcy5wb3J0ID0gcG9ydDtcbiAgICB0aGlzLnNvY2tldFBhdGggPSBzb2NrZXRQYXRoO1xuICAgIHRoaXMucmVtb3RlRGVidWdQcm94eSA9IHJlbW90ZURlYnVnUHJveHk7XG4gICAgdGhpcy5wYWdlUmVhZHlUaW1lb3V0ID0gcGFnZVJlYWR5VGltZW91dDtcblxuICAgIHRoaXMubG9nQWxsQ29tbXVuaWNhdGlvbiA9IF8uaXNOaWwobG9nQWxsQ29tbXVuaWNhdGlvbikgPyAhIWxvZ0Z1bGxSZXNwb25zZSA6ICEhbG9nQWxsQ29tbXVuaWNhdGlvbjtcbiAgICB0aGlzLmxvZ0FsbENvbW11bmljYXRpb25IZXhEdW1wID0gbG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXA7XG4gICAgdGhpcy5zb2NrZXRDaHVua1NpemUgPSBzb2NrZXRDaHVua1NpemU7XG5cbiAgICBpZiAoXy5pc0ludGVnZXIod2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGgpKSB7XG4gICAgICB0aGlzLndlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoID0gd2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGg7XG4gICAgfVxuXG4gICAgdGhpcy5mdWxsUGFnZUluaXRpYWxpemF0aW9uID0gZnVsbFBhZ2VJbml0aWFsaXphdGlvbjtcblxuICAgIHRoaXMuX2xvY2sgPSBuZXcgQXN5bmNMb2NrKCk7XG4gIH1cblxuICBzZXR1cCAoKSB7XG4gICAgLy8gYXBwIGhhbmRsaW5nIGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLmFwcERpY3QgPSB7fTtcbiAgICB0aGlzLmFwcElkS2V5ID0gbnVsbDtcbiAgICB0aGlzLnBhZ2VJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuX25hdmlnYXRpbmdUb1BhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLmFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgPSBmYWxzZTtcblxuICAgIHRoaXMucnBjQ2xpZW50ID0gbnVsbDtcbiAgICB0aGlzLl9jbGllbnRFdmVudExpc3RlbmVycyA9IHt9O1xuICB9XG5cbiAgdGVhcmRvd24gKCkge1xuICAgIGxvZy5kZWJ1ZygnQ2xlYW5pbmcgdXAgbGlzdGVuZXJzJyk7XG5cbiAgICB0aGlzLmFwcERpY3QgPSB7fTtcbiAgICB0aGlzLmFwcElkS2V5ID0gbnVsbDtcbiAgICB0aGlzLnBhZ2VJZEtleSA9IG51bGw7XG4gICAgdGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgdGhpcy5ycGNDbGllbnQgPSBudWxsO1xuXG4gICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoUmVtb3RlRGVidWdnZXIuRVZFTlRfUEFHRV9DSEFOR0UpO1xuICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKFJlbW90ZURlYnVnZ2VyLkVWRU5UX0RJU0NPTk5FQ1QpO1xuICB9XG5cbiAgaW5pdFJwY0NsaWVudCAoKSB7XG4gICAgdGhpcy5ycGNDbGllbnQgPSBuZXcgUnBjQ2xpZW50U2ltdWxhdG9yKHtcbiAgICAgIGJ1bmRsZUlkOiB0aGlzLmJ1bmRsZUlkLFxuICAgICAgcGxhdGZvcm1WZXJzaW9uOiB0aGlzLnBsYXRmb3JtVmVyc2lvbixcbiAgICAgIGlzU2FmYXJpOiB0aGlzLmlzU2FmYXJpLFxuICAgICAgaG9zdDogdGhpcy5ob3N0LFxuICAgICAgcG9ydDogdGhpcy5wb3J0LFxuICAgICAgc29ja2V0UGF0aDogdGhpcy5zb2NrZXRQYXRoLFxuICAgICAgbWVzc2FnZVByb3h5OiB0aGlzLnJlbW90ZURlYnVnUHJveHksXG4gICAgICBsb2dBbGxDb21tdW5pY2F0aW9uOiB0aGlzLmxvZ0FsbENvbW11bmljYXRpb24sXG4gICAgICBsb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcDogdGhpcy5sb2dBbGxDb21tdW5pY2F0aW9uSGV4RHVtcCxcbiAgICAgIGZ1bGxQYWdlSW5pdGlhbGl6YXRpb246IHRoaXMuZnVsbFBhZ2VJbml0aWFsaXphdGlvbixcbiAgICAgIHdlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoOiB0aGlzLndlYkluc3BlY3Rvck1heEZyYW1lTGVuZ3RoLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGlzQ29ubmVjdGVkICgpIHtcbiAgICByZXR1cm4gISF0aGlzLnJwY0NsaWVudD8uaXNDb25uZWN0ZWQ7XG4gIH1cblxuICBhc3luYyBsYXVuY2hTYWZhcmkgKCkge1xuICAgIGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ2xhdW5jaEFwcGxpY2F0aW9uJywge1xuICAgICAgYnVuZGxlSWQ6IFNBRkFSSV9CVU5ETEVfSURcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0VGltZWxpbmUgKGZuKSB7XG4gICAgbG9nLmRlYnVnKCdTdGFydGluZyB0byByZWNvcmQgdGhlIHRpbWVsaW5lJyk7XG4gICAgdGhpcy5ycGNDbGllbnQub24oJ1RpbWVsaW5lLmV2ZW50UmVjb3JkZWQnLCBmbik7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ3N0YXJ0VGltZWxpbmUnLCB7XG4gICAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdG9wVGltZWxpbmUgKCkge1xuICAgIGxvZy5kZWJ1ZygnU3RvcHBpbmcgdG8gcmVjb3JkIHRoZSB0aW1lbGluZScpO1xuICAgIGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ1RpbWVsaW5lLnN0b3AnLCB7XG4gICAgICBhcHBJZEtleTogdGhpcy5hcHBJZEtleSxcbiAgICAgIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXksXG4gICAgfSk7XG4gIH1cblxuICAvKlxuICAgKiBLZWVwIHRyYWNrIG9mIHRoZSBjbGllbnQgZXZlbnQgbGlzdGVuZXJzIHNvIHRoZXkgY2FuIGJlIHJlbW92ZWRcbiAgICovXG4gIGFkZENsaWVudEV2ZW50TGlzdGVuZXIgKGV2ZW50TmFtZSwgbGlzdGVuZXIpIHtcbiAgICB0aGlzLl9jbGllbnRFdmVudExpc3RlbmVyc1tldmVudE5hbWVdID0gdGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXSB8fCBbXTtcbiAgICB0aGlzLl9jbGllbnRFdmVudExpc3RlbmVyc1tldmVudE5hbWVdLnB1c2gobGlzdGVuZXIpO1xuICAgIHRoaXMucnBjQ2xpZW50Lm9uKGV2ZW50TmFtZSwgbGlzdGVuZXIpO1xuICB9XG5cbiAgcmVtb3ZlQ2xpZW50RXZlbnRMaXN0ZW5lciAoZXZlbnROYW1lKSB7XG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiAodGhpcy5fY2xpZW50RXZlbnRMaXN0ZW5lcnNbZXZlbnROYW1lXSB8fCBbXSkpIHtcbiAgICAgIHRoaXMucnBjQ2xpZW50Lm9mZihldmVudE5hbWUsIGxpc3RlbmVyKTtcbiAgICB9XG4gIH1cblxuICBzdGFydENvbnNvbGUgKGxpc3RlbmVyKSB7XG4gICAgbG9nLmRlYnVnKCdTdGFydGluZyB0byBsaXN0ZW4gZm9yIEphdmFTY3JpcHQgY29uc29sZScpO1xuICAgIHRoaXMuYWRkQ2xpZW50RXZlbnRMaXN0ZW5lcignQ29uc29sZS5tZXNzYWdlQWRkZWQnLCBsaXN0ZW5lcik7XG4gICAgdGhpcy5hZGRDbGllbnRFdmVudExpc3RlbmVyKCdDb25zb2xlLm1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQnLCBsaXN0ZW5lcik7XG4gIH1cblxuICBzdG9wQ29uc29sZSAoKSB7XG4gICAgbG9nLmRlYnVnKCdTdG9wcGluZyB0byBsaXN0ZW4gZm9yIEphdmFTY3JpcHQgY29uc29sZScpO1xuICAgIHRoaXMucmVtb3ZlQ2xpZW50RXZlbnRMaXN0ZW5lcignQ29uc29sZS5tZXNzYWdlQWRkZWQnKTtcbiAgICB0aGlzLnJlbW92ZUNsaWVudEV2ZW50TGlzdGVuZXIoJ0NvbnNvbGUubWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCcpO1xuICB9XG5cbiAgc3RhcnROZXR3b3JrIChsaXN0ZW5lcikge1xuICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgdG8gbGlzdGVuIGZvciBuZXR3b3JrIGV2ZW50cycpO1xuICAgIHRoaXMuYWRkQ2xpZW50RXZlbnRMaXN0ZW5lcignTmV0d29ya0V2ZW50JywgbGlzdGVuZXIpO1xuICB9XG5cbiAgc3RvcE5ldHdvcmsgKCkge1xuICAgIGxvZy5kZWJ1ZygnU3RvcHBpbmcgdG8gbGlzdGVuIGZvciBuZXR3b3JrIGV2ZW50cycpO1xuICAgIHRoaXMucmVtb3ZlQ2xpZW50RXZlbnRMaXN0ZW5lcignTmV0d29ya0V2ZW50Jyk7XG4gIH1cblxuICBzZXQgYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCAoYWxsb3cpIHtcbiAgICB0aGlzLl9hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkID0gYWxsb3c7XG4gIH1cblxuICBnZXQgYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQ7XG4gIH1cblxuICBhc3luYyBnZXRDb29raWVzICh1cmxzKSB7XG4gICAgbG9nLmRlYnVnKCdHZXR0aW5nIGNvb2tpZXMnKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ycGNDbGllbnQuc2VuZCgnUGFnZS5nZXRDb29raWVzJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgICAgdXJscyxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUNvb2tpZSAoY29va2llTmFtZSwgdXJsKSB7XG4gICAgbG9nLmRlYnVnKGBEZWxldGluZyBjb29raWUgJyR7Y29va2llTmFtZX0nIG9uICcke3VybH0nYCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucnBjQ2xpZW50LnNlbmQoJ1BhZ2UuZGVsZXRlQ29va2llJywge1xuICAgICAgYXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXk6IHRoaXMucGFnZUlkS2V5LFxuICAgICAgY29va2llTmFtZSxcbiAgICAgIHVybCxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGdhcmJhZ2VDb2xsZWN0ICh0aW1lb3V0TXMgPSBHQVJCQUdFX0NPTExFQ1RfVElNRU9VVCkge1xuICAgIGxvZy5kZWJ1ZyhgR2FyYmFnZSBjb2xsZWN0aW5nIHdpdGggJHt0aW1lb3V0TXN9bXMgdGltZW91dGApO1xuICAgIHRyeSB7XG4gICAgICBjaGVja1BhcmFtcyh7YXBwSWRLZXk6IHRoaXMuYXBwSWRLZXksIHBhZ2VJZEtleTogdGhpcy5wYWdlSWRLZXl9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgVW5hYmxlIHRvIGNvbGxlY3QgZ2FyYmFnZSBhdCB0aGlzIHRpbWVgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCBCLnJlc29sdmUodGhpcy5ycGNDbGllbnQuc2VuZCgnSGVhcC5nYycsIHtcbiAgICAgIGFwcElkS2V5OiB0aGlzLmFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5OiB0aGlzLnBhZ2VJZEtleSxcbiAgICB9KSkudGltZW91dCh0aW1lb3V0TXMpXG4gICAgLnRoZW4oZnVuY3Rpb24gZ2NTdWNjZXNzICgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by10aGVuXG4gICAgICBsb2cuZGVidWcoYEdhcmJhZ2UgY29sbGVjdGlvbiBzdWNjZXNzZnVsYCk7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24gZ2NFcnJvciAoZXJyKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tY2FsbGJhY2tzXG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgQi5UaW1lb3V0RXJyb3IpIHtcbiAgICAgICAgbG9nLmRlYnVnKGBHYXJiYWdlIGNvbGxlY3Rpb24gdGltZWQgb3V0IGFmdGVyICR7dGltZW91dE1zfW1zYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2cuZGVidWcoYFVuYWJsZSB0byBjb2xsZWN0IGdhcmJhZ2U6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1c2VBcHBEaWN0TG9jayAoZm4pIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fbG9jay5hY3F1aXJlKCdhcHBEaWN0JywgZm4pO1xuICB9XG5cbiAgZ2V0IHNraXBwZWRBcHBzICgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2tpcHBlZEFwcHMgfHwgW107XG4gIH1cbn1cblxuZm9yIChjb25zdCBbbmFtZSwgZm5dIG9mIF8udG9QYWlycyhtaXhpbnMpKSB7XG4gIFJlbW90ZURlYnVnZ2VyLnByb3RvdHlwZVtuYW1lXSA9IGZuO1xufVxuXG5mb3IgKGNvbnN0IFtuYW1lLCBldmVudF0gb2YgXy50b1BhaXJzKGV2ZW50cykpIHtcbiAgUmVtb3RlRGVidWdnZXJbbmFtZV0gPSBldmVudDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVtb3RlRGVidWdnZXI7XG5leHBvcnQge1xuICBSZW1vdGVEZWJ1Z2dlciwgUkVNT1RFX0RFQlVHR0VSX1BPUlQsIFJQQ19SRVNQT05TRV9USU1FT1VUX01TLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxNQUFNQSxvQkFBb0IsR0FBRyxLQUFLO0FBQUM7QUFDbkMsTUFBTUMsZ0JBQWdCLEdBQUcsd0JBQXdCOztBQUdqRCxNQUFNQyx1QkFBdUIsR0FBRyxJQUFJO0FBQUM7QUFFckMsTUFBTUMsa0JBQWtCLEdBQUcsSUFBSTtBQUUvQixNQUFNQyx1QkFBdUIsR0FBRyxJQUFJO0FBR3BDLE1BQU1DLGNBQWMsU0FBU0Msb0JBQVksQ0FBQztFQWlCeENDLFdBQVcsQ0FBRUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ3RCLEtBQUssRUFBRTtJQUVQQyxlQUFHLENBQUNDLElBQUksQ0FBRSwyQkFBMEJDLE9BQU8sQ0FBQ0MsYUFBSSxDQUFDQyxPQUFPLENBQUMsSUFBQUMsb0JBQWEsR0FBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUNDLE9BQVEsRUFBQyxDQUFDO0lBRXJHLE1BQU07TUFDSkMsUUFBUTtNQUNSQyxtQkFBbUIsR0FBRyxFQUFFO01BQ3hCQyxlQUFlO01BQ2ZDLFFBQVEsR0FBRyxJQUFJO01BQ2ZDLGFBQWEsR0FBRyxL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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-debugger.js","names":["REMOTE_DEBUGGER_PORT","SAFARI_BUNDLE_ID","RPC_RESPONSE_TIMEOUT_MS","PAGE_READY_TIMEOUT","GARBAGE_COLLECT_TIMEOUT","RemoteDebugger","EventEmitter","constructor","opts","log","info","require","path","resolve","getModuleRoot","version","bundleId","additionalBundleIds","platformVersion","isSafari","includeSafari","useNewSafari","pageLoadMs","host","port","socketPath","pageReadyTimeout","remoteDebugProxy","garbageCollectOnExecute","logFullResponse","logAllCommunication","logAllCommunicationHexDump","webInspectorMaxFrameLength","socketChunkSize","fullPageInitialization","debug","_","isNil","isInteger","_lock","AsyncLock","setup","appDict","appIdKey","pageIdKey","pageLoading","_navigatingToPage","allowNavigationWithoutReload","rpcClient","_clientEventListeners","teardown","removeAllListeners","EVENT_PAGE_CHANGE","EVENT_DISCONNECT","initRpcClient","RpcClientSimulator","messageProxy","isConnected","launchSafari","send","startTimeline","fn","on","stopTimeline","addClientEventListener","eventName","listener","push","removeClientEventListener","off","startConsole","stopConsole","startNetwork","stopNetwork","allow","_allowNavigationWithoutReload","getCookies","urls","deleteCookie","cookieName","url","garbageCollect","timeoutMs","checkParams","err","B","timeout","then","gcSuccess","catch","gcError","TimeoutError","message","useAppDictLock","acquire","skippedApps","_skippedApps","name","toPairs","mixins","prototype","event","events"],"sources":["../../lib/remote-debugger.js"],"sourcesContent":["import { EventEmitter } from 'events';\nimport log from './logger';\nimport { RpcClientSimulator } from './rpc';\nimport { checkParams, getModuleRoot } from './utils';\nimport { mixins, events } from './mixins';\nimport _ from 'lodash';\nimport B from 'bluebird';\nimport path from 'path';\nimport AsyncLock from 'async-lock';\n\nconst REMOTE_DEBUGGER_PORT = 27753;\nconst SAFARI_BUNDLE_ID = 'com.apple.mobilesafari';\n\n/* How many milliseconds to wait for webkit to return a response before timing out */\nconst RPC_RESPONSE_TIMEOUT_MS = 5000;\n\nconst PAGE_READY_TIMEOUT = 5000;\n\nconst GARBAGE_COLLECT_TIMEOUT = 5000;\n\n\nclass RemoteDebugger extends EventEmitter {\n /*\n * The constructor takes an opts hash with the following properties:\n * - bundleId - id of the app being connected to\n * - additionalBundleIds - array of possible bundle ids that the inspector\n * could return\n * - platformVersion - version of iOS\n * - useNewSafari - for web inspector, whether this is a new Safari instance\n * - pageLoadMs - the time, in ms, that should be waited for page loading\n * - host - the remote debugger's host address\n * - port - the remote debugger port through which to communicate\n * - logAllCommunication - log plists sent and received from Web Inspector\n * - logAllCommunicationHexDump - log communication from Web Inspector as hex dump\n * - socketChunkSize - size, in bytes, of chunks of data sent to Web Inspector (real device only)\n * - webInspectorMaxFrameLength - The maximum size in bytes of a single data frame\n * in the device communication protocol\n */\n constructor (opts = {}) {\n super();\n\n log.info(`Remote Debugger version ${require(path.resolve(getModuleRoot(), 'package.json')).version}`);\n\n const {\n bundleId,\n additionalBundleIds = [],\n platformVersion,\n isSafari = true,\n includeSafari = false,\n useNewSafari = false,\n pageLoadMs,\n host,\n port = REMOTE_DEBUGGER_PORT,\n socketPath,\n pageReadyTimeout = PAGE_READY_TIMEOUT,\n remoteDebugProxy,\n garbageCollectOnExecute = false,\n logFullResponse = false,\n logAllCommunication = false,\n logAllCommunicationHexDump = false,\n webInspectorMaxFrameLength,\n socketChunkSize,\n fullPageInitialization,\n } = opts;\n\n this.bundleId = bundleId;\n this.additionalBundleIds = additionalBundleIds;\n this.platformVersion = platformVersion;\n this.isSafari = isSafari;\n this.includeSafari = includeSafari;\n this.useNewSafari = useNewSafari;\n this.pageLoadMs = pageLoadMs;\n log.debug(`useNewSafari --> ${this.useNewSafari}`);\n\n this.garbageCollectOnExecute = garbageCollectOnExecute;\n\n this.host = host;\n this.port = port;\n this.socketPath = socketPath;\n this.remoteDebugProxy = remoteDebugProxy;\n this.pageReadyTimeout = pageReadyTimeout;\n\n this.logAllCommunication = _.isNil(logAllCommunication) ? !!logFullResponse : !!logAllCommunication;\n this.logAllCommunicationHexDump = logAllCommunicationHexDump;\n this.socketChunkSize = socketChunkSize;\n\n if (_.isInteger(webInspectorMaxFrameLength)) {\n this.webInspectorMaxFrameLength = webInspectorMaxFrameLength;\n }\n\n this.fullPageInitialization = fullPageInitialization;\n\n this._lock = new AsyncLock();\n }\n\n setup () {\n // app handling configuration\n this.appDict = {};\n this.appIdKey = null;\n this.pageIdKey = null;\n this.pageLoading = false;\n this._navigatingToPage = false;\n this.allowNavigationWithoutReload = false;\n\n this.rpcClient = null;\n this._clientEventListeners = {};\n }\n\n teardown () {\n log.debug('Cleaning up listeners');\n\n this.appDict = {};\n this.appIdKey = null;\n this.pageIdKey = null;\n this.pageLoading = false;\n\n this.rpcClient = null;\n\n this.removeAllListeners(RemoteDebugger.EVENT_PAGE_CHANGE);\n this.removeAllListeners(RemoteDebugger.EVENT_DISCONNECT);\n }\n\n initRpcClient () {\n this.rpcClient = new RpcClientSimulator({\n bundleId: this.bundleId,\n platformVersion: this.platformVersion,\n isSafari: this.isSafari,\n host: this.host,\n port: this.port,\n socketPath: this.socketPath,\n messageProxy: this.remoteDebugProxy,\n logAllCommunication: this.logAllCommunication,\n logAllCommunicationHexDump: this.logAllCommunicationHexDump,\n fullPageInitialization: this.fullPageInitialization,\n webInspectorMaxFrameLength: this.webInspectorMaxFrameLength,\n });\n }\n\n get isConnected () {\n return !!this.rpcClient?.isConnected;\n }\n\n async launchSafari () {\n await this.rpcClient.send('launchApplication', {\n bundleId: SAFARI_BUNDLE_ID\n });\n }\n\n async startTimeline (fn) {\n log.debug('Starting to record the timeline');\n this.rpcClient.on('Timeline.eventRecorded', fn);\n return await this.rpcClient.send('startTimeline', {\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n });\n }\n\n async stopTimeline () {\n log.debug('Stopping to record the timeline');\n await this.rpcClient.send('Timeline.stop', {\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n });\n }\n\n /*\n * Keep track of the client event listeners so they can be removed\n */\n addClientEventListener (eventName, listener) {\n this._clientEventListeners[eventName] = this._clientEventListeners[eventName] || [];\n this._clientEventListeners[eventName].push(listener);\n this.rpcClient.on(eventName, listener);\n }\n\n removeClientEventListener (eventName) {\n for (const listener of (this._clientEventListeners[eventName] || [])) {\n this.rpcClient.off(eventName, listener);\n }\n }\n\n startConsole (listener) {\n log.debug('Starting to listen for JavaScript console');\n this.addClientEventListener('Console.messageAdded', listener);\n this.addClientEventListener('Console.messageRepeatCountUpdated', listener);\n }\n\n stopConsole () {\n log.debug('Stopping to listen for JavaScript console');\n this.removeClientEventListener('Console.messageAdded');\n this.removeClientEventListener('Console.messageRepeatCountUpdated');\n }\n\n startNetwork (listener) {\n log.debug('Starting to listen for network events');\n this.addClientEventListener('NetworkEvent', listener);\n }\n\n stopNetwork () {\n log.debug('Stopping to listen for network events');\n this.removeClientEventListener('NetworkEvent');\n }\n\n set allowNavigationWithoutReload (allow) {\n this._allowNavigationWithoutReload = allow;\n }\n\n get allowNavigationWithoutReload () {\n return this._allowNavigationWithoutReload;\n }\n\n async getCookies (urls) {\n log.debug('Getting cookies');\n return await this.rpcClient.send('Page.getCookies', {\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n urls,\n });\n }\n\n async deleteCookie (cookieName, url) {\n log.debug(`Deleting cookie '${cookieName}' on '${url}'`);\n return await this.rpcClient.send('Page.deleteCookie', {\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n cookieName,\n url,\n });\n }\n\n async garbageCollect (timeoutMs = GARBAGE_COLLECT_TIMEOUT) {\n log.debug(`Garbage collecting with ${timeoutMs}ms timeout`);\n try {\n checkParams({appIdKey: this.appIdKey, pageIdKey: this.pageIdKey});\n } catch (err) {\n log.debug(`Unable to collect garbage at this time`);\n return;\n }\n\n await B.resolve(this.rpcClient.send('Heap.gc', {\n appIdKey: this.appIdKey,\n pageIdKey: this.pageIdKey,\n })).timeout(timeoutMs)\n .then(function gcSuccess () { // eslint-disable-line promise/prefer-await-to-then\n log.debug(`Garbage collection successful`);\n }).catch(function gcError (err) { // eslint-disable-line promise/prefer-await-to-callbacks\n if (err instanceof B.TimeoutError) {\n log.debug(`Garbage collection timed out after ${timeoutMs}ms`);\n } else {\n log.debug(`Unable to collect garbage: ${err.message}`);\n }\n });\n }\n\n async useAppDictLock (fn) {\n return await this._lock.acquire('appDict', fn);\n }\n\n get skippedApps () {\n return this._skippedApps || [];\n }\n}\n\nfor (const [name, fn] of _.toPairs(mixins)) {\n RemoteDebugger.prototype[name] = fn;\n}\n\nfor (const [name, event] of _.toPairs(events)) {\n RemoteDebugger[name] = event;\n}\n\nexport default RemoteDebugger;\nexport {\n RemoteDebugger, REMOTE_DEBUGGER_PORT, RPC_RESPONSE_TIMEOUT_MS,\n};\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMA,oBAAoB,GAAG,KAAK;AAAC;AACnC,MAAMC,gBAAgB,GAAG,wBAAwB;;AAGjD,MAAMC,uBAAuB,GAAG,IAAI;AAAC;AAErC,MAAMC,kBAAkB,GAAG,IAAI;AAE/B,MAAMC,uBAAuB,GAAG,IAAI;AAGpC,MAAMC,cAAc,SAASC,oBAAY,CAAC;EAiBxCC,WAAW,CAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;IACtB,KAAK,EAAE;IAEPC,eAAG,CAACC,IAAI,CAAE,2BAA0BC,OAAO,CAACC,aAAI,CAACC,OAAO,CAAC,IAAAC,oBAAa,GAAE,EAAE,cAAc,CAAC,CAAC,CAACC,OAAQ,EAAC,CAAC;IAErG,MAAM;MACJC,QAAQ;MACRC,mBAAmB,GAAG,EAAE;MACxBC,eAAe;MACfC,QAAQ,GAAG,IAAI;MACfC,aAAa,GAAG,KAAK;MACrBC,YAAY,GAAG,KAAK;MACpBC,UAAU;MACVC,IAAI;MACJC,IAAI,GAAGxB,oBAAoB;MAC3ByB,UAAU;MACVC,gBAAgB,GAAGvB,kBAAkB;MACrCwB,gBAAgB;MAChBC,uBAAuB,GAAG,KAAK;MAC/BC,eAAe,GAAG,KAAK;MACvBC,mBAAmB,GAAG,KAAK;MAC3BC,0BAA0B,GAAG,KAAK;MAClCC,0BAA0B;MAC1BC,eAAe;MACfC;IACF,CAAC,GAAG1B,IAAI;IAER,IAAI,CAACQ,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,mBAAmB,GAAGA,mBAAmB;IAC9C,IAAI,CAACC,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5Bb,eAAG,CAAC0B,KAAK,CAAE,oBAAmB,IAAI,CAACd,YAAa,EAAC,CAAC;IAElD,IAAI,CAACO,uBAAuB,GAAGA,uBAAuB;IAEtD,IAAI,CAACL,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACE,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACD,gBAAgB,GAAGA,gBAAgB;IAExC,IAAI,CAACI,mBAAmB,GAAGM,eAAC,CAACC,KAAK,CAACP,mBAAmB,CAAC,GAAG,CAAC,CAACD,eAAe,GAAG,CAAC,CAACC,mBAAmB;IACnG,IAAI,CAACC,0BAA0B,GAAGA,0BAA0B;IAC5D,IAAI,CAACE,eAAe,GAAGA,eAAe;IAEtC,IAAIG,eAAC,CAACE,SAAS,CAACN,0BAA0B,CAAC,EAAE;MAC3C,IAAI,CAACA,0BAA0B,GAAGA,0BAA0B;IAC9D;IAEA,IAAI,CAACE,sBAAsB,GAAGA,sBAAsB;IAEpD,IAAI,CAACK,KAAK,GAAG,IAAIC,kBAAS,EAAE;EAC9B;EAEAC,KAAK,GAAI;IAEP,IAAI,CAACC,OAAO,GAAG,CAAC,CAAC;IACjB,IAAI,CAACC,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,WAAW,GAAG,KAAK;IACxB,IAAI,CAACC,iBAAiB,GAAG,KAAK;IAC9B,IAAI,CAACC,4BAA4B,GAAG,KAAK;IAEzC,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,qBAAqB,GAAG,CAAC,CAAC;EACjC;EAEAC,QAAQ,GAAI;IACVzC,eAAG,CAAC0B,KAAK,CAAC,uBAAuB,CAAC;IAElC,IAAI,CAACO,OAAO,GAAG,CAAC,CAAC;IACjB,IAAI,CAACC,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,WAAW,GAAG,KAAK;IAExB,IAAI,CAACG,SAAS,GAAG,IAAI;IAErB,IAAI,CAACG,kBAAkB,CAAC9C,cAAc,CAAC+C,iBAAiB,CAAC;IACzD,IAAI,CAACD,kBAAkB,CAAC9C,cAAc,CAACgD,gBAAgB,CAAC;EAC1D;EAEAC,aAAa,GAAI;IACf,IAAI,CAACN,SAAS,GAAG,IAAIO,uBAAkB,CAAC;MACtCvC,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBE,eAAe,EAAE,IAAI,CAACA,eAAe;MACrCC,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBI,IAAI,EAAE,IAAI,CAACA,IAAI;MACfC,IAAI,EAAE,IAAI,CAACA,IAAI;MACfC,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3B+B,YAAY,EAAE,IAAI,CAAC7B,gBAAgB;MACnCG,mBAAmB,EAAE,IAAI,CAACA,mBAAmB;MAC7CC,0BAA0B,EAAE,IAAI,CAACA,0BAA0B;MAC3DG,sBAAsB,EAAE,IAAI,CAACA,sBAAsB;MACnDF,0BAA0B,EAAE,IAAI,CAACA;IACnC,CAAC,CAAC;EACJ;EAEA,IAAIyB,WAAW,GAAI;IAAA;IACjB,OAAO,CAAC,qBAAC,IAAI,CAACT,SAAS,4CAAd,gBAAgBS,WAAW;EACtC;EAEA,MAAMC,YAAY,GAAI;IACpB,MAAM,IAAI,CAACV,SAAS,CAACW,IAAI,CAAC,mBAAmB,EAAE;MAC7C3C,QAAQ,EAAEf;IACZ,CAAC,CAAC;EACJ;EAEA,MAAM2D,aAAa,CAAEC,EAAE,EAAE;IACvBpD,eAAG,CAAC0B,KAAK,CAAC,iCAAiC,CAAC;IAC5C,IAAI,CAACa,SAAS,CAACc,EAAE,CAAC,wBAAwB,EAAED,EAAE,CAAC;IAC/C,OAAO,MAAM,IAAI,CAACb,SAAS,CAACW,IAAI,CAAC,eAAe,EAAE;MAChDhB,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,SAAS,EAAE,IAAI,CAACA;IAClB,CAAC,CAAC;EACJ;EAEA,MAAMmB,YAAY,GAAI;IACpBtD,eAAG,CAAC0B,KAAK,CAAC,iCAAiC,CAAC;IAC5C,MAAM,IAAI,CAACa,SAAS,CAACW,IAAI,CAAC,eAAe,EAAE;MACzChB,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,SAAS,EAAE,IAAI,CAACA;IAClB,CAAC,CAAC;EACJ;;EAKAoB,sBAAsB,CAAEC,SAAS,EAAEC,QAAQ,EAAE;IAC3C,IAAI,CAACjB,qBAAqB,CAACgB,SAAS,CAAC,GAAG,IAAI,CAAChB,qBAAqB,CAACgB,SAAS,CAAC,IAAI,EAAE;IACnF,IAAI,CAAChB,qBAAqB,CAACgB,SAAS,CAAC,CAACE,IAAI,CAACD,QAAQ,CAAC;IACpD,IAAI,CAAClB,SAAS,CAACc,EAAE,CAACG,SAAS,EAAEC,QAAQ,CAAC;EACxC;EAEAE,yBAAyB,CAAEH,SAAS,EAAE;IACpC,KAAK,MAAMC,QAAQ,IAAK,IAAI,CAACjB,qBAAqB,CAACgB,SAAS,CAAC,IAAI,EAAE,EAAG;MACpE,IAAI,CAACjB,SAAS,CAACqB,GAAG,CAACJ,SAAS,EAAEC,QAAQ,CAAC;IACzC;EACF;EAEAI,YAAY,CAAEJ,QAAQ,EAAE;IACtBzD,eAAG,CAAC0B,KAAK,CAAC,2CAA2C,CAAC;IACtD,IAAI,CAAC6B,sBAAsB,CAAC,sBAAsB,EAAEE,QAAQ,CAAC;IAC7D,IAAI,CAACF,sBAAsB,CAAC,mCAAmC,EAAEE,QAAQ,CAAC;EAC5E;EAEAK,WAAW,GAAI;IACb9D,eAAG,CAAC0B,KAAK,CAAC,2CAA2C,CAAC;IACtD,IAAI,CAACiC,yBAAyB,CAAC,sBAAsB,CAAC;IACtD,IAAI,CAACA,yBAAyB,CAAC,mCAAmC,CAAC;EACrE;EAEAI,YAAY,CAAEN,QAAQ,EAAE;IACtBzD,eAAG,CAAC0B,KAAK,CAAC,uCAAuC,CAAC;IAClD,IAAI,CAAC6B,sBAAsB,CAAC,cAAc,EAAEE,QAAQ,CAAC;EACvD;EAEAO,WAAW,GAAI;IACbhE,eAAG,CAAC0B,KAAK,CAAC,uCAAuC,CAAC;IAClD,IAAI,CAACiC,yBAAyB,CAAC,cAAc,CAAC;EAChD;EAEA,IAAIrB,4BAA4B,CAAE2B,KAAK,EAAE;IACvC,IAAI,CAACC,6BAA6B,GAAGD,KAAK;EAC5C;EAEA,IAAI3B,4BAA4B,GAAI;IAClC,OAAO,IAAI,CAAC4B,6BAA6B;EAC3C;EAEA,MAAMC,UAAU,CAAEC,IAAI,EAAE;IACtBpE,eAAG,CAAC0B,KAAK,CAAC,iBAAiB,CAAC;IAC5B,OAAO,MAAM,IAAI,CAACa,SAAS,CAACW,IAAI,CAAC,iBAAiB,EAAE;MAClDhB,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBiC;IACF,CAAC,CAAC;EACJ;EAEA,MAAMC,YAAY,CAAEC,UAAU,EAAEC,GAAG,EAAE;IACnCvE,eAAG,CAAC0B,KAAK,CAAE,oBAAmB4C,UAAW,SAAQC,GAAI,GAAE,CAAC;IACxD,OAAO,MAAM,IAAI,CAAChC,SAAS,CAACW,IAAI,CAAC,mBAAmB,EAAE;MACpDhB,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBmC,UAAU;MACVC;IACF,CAAC,CAAC;EACJ;EAEA,MAAMC,cAAc,CAAEC,SAAS,GAAG9E,uBAAuB,EAAE;IACzDK,eAAG,CAAC0B,KAAK,CAAE,2BAA0B+C,SAAU,YAAW,CAAC;IAC3D,IAAI;MACF,IAAAC,kBAAW,EAAC;QAACxC,QAAQ,EAAE,IAAI,CAACA,QAAQ;QAAEC,SAAS,EAAE,IAAI,CAACA;MAAS,CAAC,CAAC;IACnE,CAAC,CAAC,OAAOwC,GAAG,EAAE;MACZ3E,eAAG,CAAC0B,KAAK,CAAE,wCAAuC,CAAC;MACnD;IACF;IAEA,MAAMkD,iBAAC,CAACxE,OAAO,CAAC,IAAI,CAACmC,SAAS,CAACW,IAAI,CAAC,SAAS,EAAE;MAC7ChB,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,SAAS,EAAE,IAAI,CAACA;IAClB,CAAC,CAAC,CAAC,CAAC0C,OAAO,CAACJ,SAAS,CAAC,CACrBK,IAAI,CAAC,SAASC,SAAS,GAAI;MAC1B/E,eAAG,CAAC0B,KAAK,CAAE,+BAA8B,CAAC;IAC5C,CAAC,CAAC,CAACsD,KAAK,CAAC,SAASC,OAAO,CAAEN,GAAG,EAAE;MAC9B,IAAIA,GAAG,YAAYC,iBAAC,CAACM,YAAY,EAAE;QACjClF,eAAG,CAAC0B,KAAK,CAAE,sCAAqC+C,SAAU,IAAG,CAAC;MAChE,CAAC,MAAM;QACLzE,eAAG,CAAC0B,KAAK,CAAE,8BAA6BiD,GAAG,CAACQ,OAAQ,EAAC,CAAC;MACxD;IACF,CAAC,CAAC;EACJ;EAEA,MAAMC,cAAc,CAAEhC,EAAE,EAAE;IACxB,OAAO,MAAM,IAAI,CAACtB,KAAK,CAACuD,OAAO,CAAC,SAAS,EAAEjC,EAAE,CAAC;EAChD;EAEA,IAAIkC,WAAW,GAAI;IACjB,OAAO,IAAI,CAACC,YAAY,IAAI,EAAE;EAChC;AACF;AAAC;AAED,KAAK,MAAM,CAACC,IAAI,EAAEpC,EAAE,CAAC,IAAIzB,eAAC,CAAC8D,OAAO,CAACC,cAAM,CAAC,EAAE;EAC1C9F,cAAc,CAAC+F,SAAS,CAACH,IAAI,CAAC,GAAGpC,EAAE;AACrC;AAEA,KAAK,MAAM,CAACoC,IAAI,EAAEI,KAAK,CAAC,IAAIjE,eAAC,CAAC8D,OAAO,CAACI,cAAM,CAAC,EAAE;EAC7CjG,cAAc,CAAC4F,IAAI,CAAC,GAAGI,KAAK;AAC9B;AAAC,eAEchG,cAAc;AAAA"}
|
package/build/lib/rpc/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
@@ -17,10 +16,7 @@ Object.defineProperty(exports, "RpcClientSimulator", {
|
|
|
17
16
|
return _rpcClientSimulator.default;
|
|
18
17
|
}
|
|
19
18
|
});
|
|
20
|
-
|
|
21
19
|
require("source-map-support/register");
|
|
22
|
-
|
|
23
20
|
var _rpcClientSimulator = _interopRequireDefault(require("./rpc-client-simulator"));
|
|
24
|
-
|
|
25
21
|
var _rpcClientRealDevice = _interopRequireDefault(require("./rpc-client-real-device"));
|
|
26
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3JwYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUnBjQ2xpZW50U2ltdWxhdG9yIGZyb20gJy4vcnBjLWNsaWVudC1zaW11bGF0b3InO1xuaW1wb3J0IFJwY0NsaWVudFJlYWxEZXZpY2UgZnJvbSAnLi9ycGMtY2xpZW50LXJlYWwtZGV2aWNlJztcblxuXG5leHBvcnQgeyBScGNDbGllbnRTaW11bGF0b3IsIFJwY0NsaWVudFJlYWxEZXZpY2UgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0EifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../lib/rpc/index.js"],"sourcesContent":["import RpcClientSimulator from './rpc-client-simulator';\nimport RpcClientRealDevice from './rpc-client-real-device';\n\n\nexport { RpcClientSimulator, RpcClientRealDevice };\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AACA"}
|
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = exports.RemoteMessages = void 0;
|
|
9
|
-
|
|
10
8
|
require("source-map-support/register");
|
|
11
|
-
|
|
12
9
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
|
-
|
|
14
10
|
var _protocol = _interopRequireDefault(require("../protocol"));
|
|
15
|
-
|
|
16
11
|
const OBJECT_GROUP = 'console';
|
|
17
12
|
const MINIMAL_COMMAND = 'getMinimalCommand';
|
|
18
13
|
const FULL_COMMAND = 'getFullCommand';
|
|
19
14
|
const DIRECT_COMMAND = 'getDirectCommand';
|
|
15
|
+
|
|
20
16
|
const COMMANDS = {
|
|
21
17
|
'Page.getCookies': FULL_COMMAND,
|
|
22
18
|
'Page.navigate': FULL_COMMAND,
|
|
@@ -27,16 +23,13 @@ const COMMANDS = {
|
|
|
27
23
|
'Timeline.start': FULL_COMMAND,
|
|
28
24
|
'Timeline.stop': FULL_COMMAND
|
|
29
25
|
};
|
|
30
|
-
|
|
31
26
|
class RemoteMessages {
|
|
32
27
|
constructor(isTargetBased = false) {
|
|
33
28
|
this.isTargetBased = isTargetBased;
|
|
34
29
|
}
|
|
35
|
-
|
|
36
30
|
set isTargetBased(isTargetBased) {
|
|
37
31
|
this._isTargetBased = isTargetBased;
|
|
38
32
|
}
|
|
39
|
-
|
|
40
33
|
get isTargetBased() {
|
|
41
34
|
return this._isTargetBased;
|
|
42
35
|
}
|
|
@@ -49,7 +42,6 @@ class RemoteMessages {
|
|
|
49
42
|
__selector: '_rpc_reportIdentifier:'
|
|
50
43
|
};
|
|
51
44
|
}
|
|
52
|
-
|
|
53
45
|
connectToApp(connId, appIdKey) {
|
|
54
46
|
return {
|
|
55
47
|
__argument: {
|
|
@@ -59,7 +51,6 @@ class RemoteMessages {
|
|
|
59
51
|
__selector: '_rpc_forwardGetListing:'
|
|
60
52
|
};
|
|
61
53
|
}
|
|
62
|
-
|
|
63
54
|
setSenderKey(connId, senderId, appIdKey, pageIdKey) {
|
|
64
55
|
return {
|
|
65
56
|
__argument: {
|
|
@@ -72,7 +63,6 @@ class RemoteMessages {
|
|
|
72
63
|
__selector: '_rpc_forwardSocketSetup:'
|
|
73
64
|
};
|
|
74
65
|
}
|
|
75
|
-
|
|
76
66
|
indicateWebView(connId, appIdKey, pageIdKey, enabled) {
|
|
77
67
|
return {
|
|
78
68
|
__argument: {
|
|
@@ -84,7 +74,6 @@ class RemoteMessages {
|
|
|
84
74
|
__selector: '_rpc_forwardIndicateWebView:'
|
|
85
75
|
};
|
|
86
76
|
}
|
|
87
|
-
|
|
88
77
|
launchApplication(bundleId) {
|
|
89
78
|
return {
|
|
90
79
|
__argument: {
|
|
@@ -93,7 +82,6 @@ class RemoteMessages {
|
|
|
93
82
|
__selector: '_rpc_requestApplicationLaunch:'
|
|
94
83
|
};
|
|
95
84
|
}
|
|
96
|
-
|
|
97
85
|
getFullCommand(opts = {}) {
|
|
98
86
|
const {
|
|
99
87
|
method,
|
|
@@ -105,9 +93,9 @@ class RemoteMessages {
|
|
|
105
93
|
targetId,
|
|
106
94
|
id
|
|
107
95
|
} = opts;
|
|
96
|
+
|
|
108
97
|
let realMethod;
|
|
109
98
|
let realParams;
|
|
110
|
-
|
|
111
99
|
if (this.isTargetBased) {
|
|
112
100
|
realMethod = 'Target.sendMessageToTarget';
|
|
113
101
|
realParams = {
|
|
@@ -134,7 +122,6 @@ class RemoteMessages {
|
|
|
134
122
|
emulateUserGesture: false
|
|
135
123
|
}, params);
|
|
136
124
|
}
|
|
137
|
-
|
|
138
125
|
const plist = {
|
|
139
126
|
__argument: {
|
|
140
127
|
WIRSocketDataKey: {
|
|
@@ -150,7 +137,6 @@ class RemoteMessages {
|
|
|
150
137
|
};
|
|
151
138
|
return _lodash.default.omitBy(plist, _lodash.default.isNil);
|
|
152
139
|
}
|
|
153
|
-
|
|
154
140
|
getMinimalCommand(opts = {}) {
|
|
155
141
|
const {
|
|
156
142
|
method,
|
|
@@ -164,7 +150,6 @@ class RemoteMessages {
|
|
|
164
150
|
} = opts;
|
|
165
151
|
let realMethod = method;
|
|
166
152
|
let realParams = params;
|
|
167
|
-
|
|
168
153
|
if (this.isTargetBased) {
|
|
169
154
|
realMethod = 'Target.sendMessageToTarget';
|
|
170
155
|
realParams = {
|
|
@@ -176,7 +161,6 @@ class RemoteMessages {
|
|
|
176
161
|
})
|
|
177
162
|
};
|
|
178
163
|
}
|
|
179
|
-
|
|
180
164
|
const plist = {
|
|
181
165
|
__argument: {
|
|
182
166
|
WIRSocketDataKey: {
|
|
@@ -192,7 +176,6 @@ class RemoteMessages {
|
|
|
192
176
|
};
|
|
193
177
|
return _lodash.default.omitBy(plist, _lodash.default.isNil);
|
|
194
178
|
}
|
|
195
|
-
|
|
196
179
|
getDirectCommand(opts = {}) {
|
|
197
180
|
const {
|
|
198
181
|
method,
|
|
@@ -219,7 +202,6 @@ class RemoteMessages {
|
|
|
219
202
|
};
|
|
220
203
|
return _lodash.default.omitBy(plist, _lodash.default.isNil);
|
|
221
204
|
}
|
|
222
|
-
|
|
223
205
|
getRemoteCommand(command, opts) {
|
|
224
206
|
const {
|
|
225
207
|
id,
|
|
@@ -233,22 +215,19 @@ class RemoteMessages {
|
|
|
233
215
|
switch (command) {
|
|
234
216
|
case 'setConnectionKey':
|
|
235
217
|
return this.setConnectionKey(connId);
|
|
236
|
-
|
|
237
218
|
case 'indicateWebView':
|
|
238
219
|
return this.indicateWebView(connId, appIdKey, pageIdKey, opts.enabled);
|
|
239
|
-
|
|
240
220
|
case 'connectToApp':
|
|
241
221
|
return this.connectToApp(connId, appIdKey);
|
|
242
|
-
|
|
243
222
|
case 'setSenderKey':
|
|
244
223
|
return this.setSenderKey(connId, senderId, appIdKey, pageIdKey);
|
|
245
|
-
|
|
246
224
|
case 'launchApplication':
|
|
247
225
|
return this.launchApplication(opts.bundleId);
|
|
248
226
|
}
|
|
249
227
|
|
|
250
228
|
const builderFunction = COMMANDS[command] || MINIMAL_COMMAND;
|
|
251
|
-
return this[builderFunction]({
|
|
229
|
+
return this[builderFunction]({
|
|
230
|
+
...(0, _protocol.default)(id, command, opts),
|
|
252
231
|
connId,
|
|
253
232
|
appIdKey,
|
|
254
233
|
senderId,
|
|
@@ -256,10 +235,8 @@ class RemoteMessages {
|
|
|
256
235
|
targetId
|
|
257
236
|
});
|
|
258
237
|
}
|
|
259
|
-
|
|
260
238
|
}
|
|
261
|
-
|
|
262
239
|
exports.RemoteMessages = RemoteMessages;
|
|
263
240
|
var _default = RemoteMessages;
|
|
264
241
|
exports.default = _default;
|
|
265
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPQkpFQ1RfR1JPVVAiLCJNSU5JTUFMX0NPTU1BTkQiLCJGVUxMX0NPTU1BTkQiLCJESVJFQ1RfQ09NTUFORCIsIkNPTU1BTkRTIiwiUmVtb3RlTWVzc2FnZXMiLCJjb25zdHJ1Y3RvciIsImlzVGFyZ2V0QmFzZWQiLCJfaXNUYXJnZXRCYXNlZCIsInNldENvbm5lY3Rpb25LZXkiLCJjb25uSWQiLCJfX2FyZ3VtZW50IiwiV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXkiLCJfX3NlbGVjdG9yIiwiY29ubmVjdFRvQXBwIiwiYXBwSWRLZXkiLCJXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiLCJzZXRTZW5kZXJLZXkiLCJzZW5kZXJJZCIsInBhZ2VJZEtleSIsIldJUlNlbmRlcktleSIsIldJUlBhZ2VJZGVudGlmaWVyS2V5IiwiV0lSQXV0b21hdGljYWxseVBhdXNlIiwiaW5kaWNhdGVXZWJWaWV3IiwiZW5hYmxlZCIsIldJUkluZGljYXRlRW5hYmxlZEtleSIsIl8iLCJpc05pbCIsImxhdW5jaEFwcGxpY2F0aW9uIiwiYnVuZGxlSWQiLCJXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkiLCJnZXRGdWxsQ29tbWFuZCIsIm9wdHMiLCJtZXRob2QiLCJwYXJhbXMiLCJ0YXJnZXRJZCIsImlkIiwicmVhbE1ldGhvZCIsInJlYWxQYXJhbXMiLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsIk9iamVjdCIsImFzc2lnbiIsIm9iamVjdEdyb3VwIiwiaW5jbHVkZUNvbW1hbmRMaW5lQVBJIiwiZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlIiwiZW11bGF0ZVVzZXJHZXN0dXJlIiwiZ2VuZXJhdGVQcmV2aWV3Iiwic2F2ZVJlc3VsdCIsInBsaXN0IiwiV0lSU29ja2V0RGF0YUtleSIsIm9taXRCeSIsImdldE1pbmltYWxDb21tYW5kIiwiZ2V0RGlyZWN0Q29tbWFuZCIsImdldFJlbW90ZUNvbW1hbmQiLCJjb21tYW5kIiwiYnVpbGRlckZ1bmN0aW9uIiwiZ2V0UHJvdG9jb2xDb21tYW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3JwYy9yZW1vdGUtbWVzc2FnZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBnZXRQcm90b2NvbENvbW1hbmQgZnJvbSAnLi4vcHJvdG9jb2wnO1xuXG5cbmNvbnN0IE9CSkVDVF9HUk9VUCA9ICdjb25zb2xlJztcblxuY29uc3QgTUlOSU1BTF9DT01NQU5EID0gJ2dldE1pbmltYWxDb21tYW5kJztcbmNvbnN0IEZVTExfQ09NTUFORCA9ICdnZXRGdWxsQ29tbWFuZCc7XG5jb25zdCBESVJFQ1RfQ09NTUFORCA9ICdnZXREaXJlY3RDb21tYW5kJztcblxuLy8gbWFwcGluZyBvZiBjb21tYW5kcyB0byB0aGUgZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIGNvbW1hbmRcbi8vIGRlZmF1bHRzIHRvIGBnZXRNaW5pbWFsQ29tbWFuZGAsIHNvIG5vIG5lZWQgdG8gaGF2ZSB0aG9zZSBsaXN0ZWQgaGVyZVxuY29uc3QgQ09NTUFORFMgPSB7XG4gICdQYWdlLmdldENvb2tpZXMnOiBGVUxMX0NPTU1BTkQsXG4gICdQYWdlLm5hdmlnYXRlJzogRlVMTF9DT01NQU5ELFxuXG4gICdSdW50aW1lLmF3YWl0UHJvbWlzZSc6IEZVTExfQ09NTUFORCxcbiAgJ1J1bnRpbWUuY2FsbEZ1bmN0aW9uT24nOiBGVUxMX0NPTU1BTkQsXG4gICdSdW50aW1lLmV2YWx1YXRlJzogRlVMTF9DT01NQU5ELFxuXG4gICdUYXJnZXQuZXhpc3RzJzogRElSRUNUX0NPTU1BTkQsXG5cbiAgJ1RpbWVsaW5lLnN0YXJ0JzogRlVMTF9DT01NQU5ELFxuICAnVGltZWxpbmUuc3RvcCc6IEZVTExfQ09NTUFORCxcbn07XG5cbmNsYXNzIFJlbW90ZU1lc3NhZ2VzIHtcbiAgY29uc3RydWN0b3IgKGlzVGFyZ2V0QmFzZWQgPSBmYWxzZSkge1xuICAgIHRoaXMuaXNUYXJnZXRCYXNlZCA9IGlzVGFyZ2V0QmFzZWQ7XG4gIH1cblxuICBzZXQgaXNUYXJnZXRCYXNlZCAoaXNUYXJnZXRCYXNlZCkge1xuICAgIHRoaXMuX2lzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgZ2V0IGlzVGFyZ2V0QmFzZWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgLypcbiAgICogQ29ubmVjdGlvbiBmdW5jdGlvbnNcbiAgICovXG5cbiAgc2V0Q29ubmVjdGlvbktleSAoY29ubklkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fYXJndW1lbnQ6IHtcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZFxuICAgICAgfSxcbiAgICAgIF9fc2VsZWN0b3I6ICdfcnBjX3JlcG9ydElkZW50aWZpZXI6J1xuICAgIH07XG4gIH1cblxuICBjb25uZWN0VG9BcHAgKGNvbm5JZCwgYXBwSWRLZXkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubklkLFxuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5XG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZEdldExpc3Rpbmc6J1xuICAgIH07XG4gIH1cblxuICBzZXRTZW5kZXJLZXkgKGNvbm5JZCwgc2VuZGVySWQsIGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5LFxuICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubklkLFxuICAgICAgICBXSVJTZW5kZXJLZXk6IHNlbmRlcklkLFxuICAgICAgICBXSVJQYWdlSWRlbnRpZmllcktleTogcGFnZUlkS2V5LFxuICAgICAgICBXSVJBdXRvbWF0aWNhbGx5UGF1c2U6IGZhbHNlXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZFNvY2tldFNldHVwOidcbiAgICB9O1xuICB9XG5cbiAgaW5kaWNhdGVXZWJWaWV3IChjb25uSWQsIGFwcElkS2V5LCBwYWdlSWRLZXksIGVuYWJsZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5LFxuICAgICAgICBXSVJJbmRpY2F0ZUVuYWJsZWRLZXk6IF8uaXNOaWwoZW5hYmxlZCkgPyB0cnVlIDogZW5hYmxlZCxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleVxuICAgICAgfSxcbiAgICAgIF9fc2VsZWN0b3I6ICdfcnBjX2ZvcndhcmRJbmRpY2F0ZVdlYlZpZXc6J1xuICAgIH07XG4gIH1cblxuICBsYXVuY2hBcHBsaWNhdGlvbiAoYnVuZGxlSWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXk6IGJ1bmRsZUlkXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfcmVxdWVzdEFwcGxpY2F0aW9uTGF1bmNoOidcbiAgICB9O1xuICB9XG5cbiAgZ2V0RnVsbENvbW1hbmQgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIHBhcmFtcyxcbiAgICAgIGNvbm5JZCxcbiAgICAgIHNlbmRlcklkLFxuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXksXG4gICAgICB0YXJnZXRJZCxcbiAgICAgIGlkLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgLyogVGhlIFdlYiBJbnNwZWN0b3IgaGFzIGEgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdGhhdCBjYW4gYmUgcGFzc2VkIGluLCBhc1xuICAgICAqIHNlZW4gd2hlbiBkdW1waW5nIHdoYXQgU2FmYXJpIGlzIGRvaW5nIHdoZW4gY29tbXVuaWNhdGluZyB3aXRoIGl0LiBNb3N0XG4gICAgICogYXJlIGtlcHQgYXMgdGhleSBhcmUgc2V0IGZvciBTYWZhcmkuIFRoZSBleGNlcHRpb24gaXMgYGVtdWxhdGVVc2VyR2VzdHVyZWBcbiAgICAgKiB3aGljaCwgb24gaU9TIDEzKywgYnJlYWtzIHBvcHVwIGJsb2NraW5nIChpLmUuLCBldmVuIHdpdGggdGhlIHBvcHVwXG4gICAgICogYmxvY2tpbmcgc2V0dGluZyBvbiwgbmV3IHdpbmRvd3MgYXJlIG9wZW5hYmxlIGJvdGggZnJvbSBsaW5rcyBhbmQgZnJvbVxuICAgICAqIEphdmFTY3JpcHQpLlxuICAgICAqL1xuXG4gICAgbGV0IHJlYWxNZXRob2Q7XG4gICAgbGV0IHJlYWxQYXJhbXM7XG4gICAgaWYgKHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgcmVhbE1ldGhvZCA9ICdUYXJnZXQuc2VuZE1lc3NhZ2VUb1RhcmdldCc7XG4gICAgICByZWFsUGFyYW1zID0ge1xuICAgICAgICB0YXJnZXRJZCxcbiAgICAgICAgbWVzc2FnZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBwYXJhbXM6IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgb2JqZWN0R3JvdXA6IE9CSkVDVF9HUk9VUCxcbiAgICAgICAgICAgIGluY2x1ZGVDb21tYW5kTGluZUFQSTogdHJ1ZSxcbiAgICAgICAgICAgIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogZmFsc2UsXG4gICAgICAgICAgICBlbXVsYXRlVXNlckdlc3R1cmU6IGZhbHNlLFxuICAgICAgICAgICAgZ2VuZXJhdGVQcmV2aWV3OiBmYWxzZSxcbiAgICAgICAgICAgIHNhdmVSZXN1bHQ6IGZhbHNlLFxuICAgICAgICAgIH0sIHBhcmFtcylcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZWFsTWV0aG9kID0gbWV0aG9kO1xuICAgICAgcmVhbFBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBvYmplY3RHcm91cDogT0JKRUNUX0dST1VQLFxuICAgICAgICBpbmNsdWRlQ29tbWFuZExpbmVBUEk6IHRydWUsXG4gICAgICAgIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogZmFsc2UsXG4gICAgICAgIGVtdWxhdGVVc2VyR2VzdHVyZTogZmFsc2UsXG4gICAgICB9LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHBsaXN0ID0ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJTb2NrZXREYXRhS2V5OiB7XG4gICAgICAgICAgbWV0aG9kOiByZWFsTWV0aG9kLFxuICAgICAgICAgIHBhcmFtczogcmVhbFBhcmFtcyxcbiAgICAgICAgfSxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSU2VuZGVyS2V5OiBzZW5kZXJJZCxcbiAgICAgICAgV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5OiBhcHBJZEtleSxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleSxcbiAgICAgIH0sXG4gICAgICBfX3NlbGVjdG9yOiAnX3JwY19mb3J3YXJkU29ja2V0RGF0YTonLFxuICAgIH07XG4gICAgcmV0dXJuIF8ub21pdEJ5KHBsaXN0LCBfLmlzTmlsKTtcbiAgfVxuXG4gIGdldE1pbmltYWxDb21tYW5kIChvcHRzID0ge30pIHtcbiAgICBjb25zdCB7bWV0aG9kLCBwYXJhbXMsIGNvbm5JZCwgc2VuZGVySWQsIGFwcElkS2V5LCBwYWdlSWRLZXksIHRhcmdldElkLCBpZH0gPSBvcHRzO1xuXG4gICAgbGV0IHJlYWxNZXRob2QgPSBtZXRob2Q7XG4gICAgbGV0IHJlYWxQYXJhbXMgPSBwYXJhbXM7XG4gICAgaWYgKHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgcmVhbE1ldGhvZCA9ICdUYXJnZXQuc2VuZE1lc3NhZ2VUb1RhcmdldCc7XG4gICAgICByZWFsUGFyYW1zID0ge1xuICAgICAgICB0YXJnZXRJZCxcbiAgICAgICAgbWVzc2FnZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBwYXJhbXMsXG4gICAgICAgIH0pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBwbGlzdCA9IHtcbiAgICAgIF9fYXJndW1lbnQ6IHtcbiAgICAgICAgV0lSU29ja2V0RGF0YUtleToge1xuICAgICAgICAgIG1ldGhvZDogcmVhbE1ldGhvZCxcbiAgICAgICAgICBwYXJhbXM6IHJlYWxQYXJhbXMsXG4gICAgICAgIH0sXG4gICAgICAgIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5OiBjb25uSWQsXG4gICAgICAgIFdJUlNlbmRlcktleTogc2VuZGVySWQsXG4gICAgICAgIFdJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTogYXBwSWRLZXksXG4gICAgICAgIFdJUlBhZ2VJZGVudGlmaWVyS2V5OiBwYWdlSWRLZXksXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZFNvY2tldERhdGE6J1xuICAgIH07XG4gICAgcmV0dXJuIF8ub21pdEJ5KHBsaXN0LCBfLmlzTmlsKTtcbiAgfVxuXG4gIGdldERpcmVjdENvbW1hbmQgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHttZXRob2QsIHBhcmFtcywgY29ubklkLCBzZW5kZXJJZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgaWR9ID0gb3B0cztcblxuICAgIGNvbnN0IHBsaXN0ID0ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJTb2NrZXREYXRhS2V5OiB7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgfSxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSU2VuZGVyS2V5OiBzZW5kZXJJZCxcbiAgICAgICAgV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5OiBhcHBJZEtleSxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleSxcbiAgICAgIH0sXG4gICAgICBfX3NlbGVjdG9yOiAnX3JwY19mb3J3YXJkU29ja2V0RGF0YTonXG4gICAgfTtcbiAgICByZXR1cm4gXy5vbWl0QnkocGxpc3QsIF8uaXNOaWwpO1xuICB9XG5cbiAgZ2V0UmVtb3RlQ29tbWFuZCAoY29tbWFuZCwgb3B0cykge1xuICAgIGNvbnN0IHtcbiAgICAgIGlkLFxuICAgICAgY29ubklkLFxuICAgICAgYXBwSWRLZXksXG4gICAgICBzZW5kZXJJZCxcbiAgICAgIHBhZ2VJZEtleSxcbiAgICAgIHRhcmdldElkLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgLy8gZGVhbCB3aXRoIFNhZmFyaSBXZWIgSW5zcGVjdG9yIGNvbW1hbmRzXG4gICAgc3dpdGNoIChjb21tYW5kKSB7XG4gICAgICBjYXNlICdzZXRDb25uZWN0aW9uS2V5JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0Q29ubmVjdGlvbktleShjb25uSWQpO1xuICAgICAgY2FzZSAnaW5kaWNhdGVXZWJWaWV3JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kaWNhdGVXZWJWaWV3KGNvbm5JZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgb3B0cy5lbmFibGVkKTtcbiAgICAgIGNhc2UgJ2Nvbm5lY3RUb0FwcCc6XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RUb0FwcChjb25uSWQsIGFwcElkS2V5KTtcbiAgICAgIGNhc2UgJ3NldFNlbmRlcktleSc6XG4gICAgICAgIHJldHVybiB0aGlzLnNldFNlbmRlcktleShjb25uSWQsIHNlbmRlcklkLCBhcHBJZEtleSwgcGFnZUlkS2V5KTtcbiAgICAgIGNhc2UgJ2xhdW5jaEFwcGxpY2F0aW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubGF1bmNoQXBwbGljYXRpb24ob3B0cy5idW5kbGVJZCk7XG4gICAgfVxuXG4gICAgLy8gZGVhbCB3aXRoIFdlYktpdCBjb21tYW5kc1xuICAgIGNvbnN0IGJ1aWxkZXJGdW5jdGlvbiA9IENPTU1BTkRTW2NvbW1hbmRdIHx8IE1JTklNQUxfQ09NTUFORDtcbiAgICByZXR1cm4gdGhpc1tidWlsZGVyRnVuY3Rpb25dKHtcbiAgICAgIC4uLmdldFByb3RvY29sQ29tbWFuZChpZCwgY29tbWFuZCwgb3B0cyksXG4gICAgICBjb25uSWQsXG4gICAgICBhcHBJZEtleSxcbiAgICAgIHNlbmRlcklkLFxuICAgICAgcGFnZUlkS2V5LFxuICAgICAgdGFyZ2V0SWQsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgUmVtb3RlTWVzc2FnZXMgfTtcbmV4cG9ydCBkZWZhdWx0IFJlbW90ZU1lc3NhZ2VzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdBLE1BQU1BLFlBQVksR0FBRyxTQUFyQjtBQUVBLE1BQU1DLGVBQWUsR0FBRyxtQkFBeEI7QUFDQSxNQUFNQyxZQUFZLEdBQUcsZ0JBQXJCO0FBQ0EsTUFBTUMsY0FBYyxHQUFHLGtCQUF2QjtBQUlBLE1BQU1DLFFBQVEsR0FBRztFQUNmLG1CQUFtQkYsWUFESjtFQUVmLGlCQUFpQkEsWUFGRjtFQUlmLHdCQUF3QkEsWUFKVDtFQUtmLDBCQUEwQkEsWUFMWDtFQU1mLG9CQUFvQkEsWUFOTDtFQVFmLGlCQUFpQkMsY0FSRjtFQVVmLGtCQUFrQkQsWUFWSDtFQVdmLGlCQUFpQkE7QUFYRixDQUFqQjs7QUFjQSxNQUFNRyxjQUFOLENBQXFCO0VBQ25CQyxXQUFXLENBQUVDLGFBQWEsR0FBRyxLQUFsQixFQUF5QjtJQUNsQyxLQUFLQSxhQUFMLEdBQXFCQSxhQUFyQjtFQUNEOztFQUVn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
|
|
242
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPQkpFQ1RfR1JPVVAiLCJNSU5JTUFMX0NPTU1BTkQiLCJGVUxMX0NPTU1BTkQiLCJESVJFQ1RfQ09NTUFORCIsIkNPTU1BTkRTIiwiUmVtb3RlTWVzc2FnZXMiLCJjb25zdHJ1Y3RvciIsImlzVGFyZ2V0QmFzZWQiLCJfaXNUYXJnZXRCYXNlZCIsInNldENvbm5lY3Rpb25LZXkiLCJjb25uSWQiLCJfX2FyZ3VtZW50IiwiV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXkiLCJfX3NlbGVjdG9yIiwiY29ubmVjdFRvQXBwIiwiYXBwSWRLZXkiLCJXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiLCJzZXRTZW5kZXJLZXkiLCJzZW5kZXJJZCIsInBhZ2VJZEtleSIsIldJUlNlbmRlcktleSIsIldJUlBhZ2VJZGVudGlmaWVyS2V5IiwiV0lSQXV0b21hdGljYWxseVBhdXNlIiwiaW5kaWNhdGVXZWJWaWV3IiwiZW5hYmxlZCIsIldJUkluZGljYXRlRW5hYmxlZEtleSIsIl8iLCJpc05pbCIsImxhdW5jaEFwcGxpY2F0aW9uIiwiYnVuZGxlSWQiLCJXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkiLCJnZXRGdWxsQ29tbWFuZCIsIm9wdHMiLCJtZXRob2QiLCJwYXJhbXMiLCJ0YXJnZXRJZCIsImlkIiwicmVhbE1ldGhvZCIsInJlYWxQYXJhbXMiLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsIk9iamVjdCIsImFzc2lnbiIsIm9iamVjdEdyb3VwIiwiaW5jbHVkZUNvbW1hbmRMaW5lQVBJIiwiZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlIiwiZW11bGF0ZVVzZXJHZXN0dXJlIiwiZ2VuZXJhdGVQcmV2aWV3Iiwic2F2ZVJlc3VsdCIsInBsaXN0IiwiV0lSU29ja2V0RGF0YUtleSIsIm9taXRCeSIsImdldE1pbmltYWxDb21tYW5kIiwiZ2V0RGlyZWN0Q29tbWFuZCIsImdldFJlbW90ZUNvbW1hbmQiLCJjb21tYW5kIiwiYnVpbGRlckZ1bmN0aW9uIiwiZ2V0UHJvdG9jb2xDb21tYW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3JwYy9yZW1vdGUtbWVzc2FnZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBnZXRQcm90b2NvbENvbW1hbmQgZnJvbSAnLi4vcHJvdG9jb2wnO1xuXG5cbmNvbnN0IE9CSkVDVF9HUk9VUCA9ICdjb25zb2xlJztcblxuY29uc3QgTUlOSU1BTF9DT01NQU5EID0gJ2dldE1pbmltYWxDb21tYW5kJztcbmNvbnN0IEZVTExfQ09NTUFORCA9ICdnZXRGdWxsQ29tbWFuZCc7XG5jb25zdCBESVJFQ1RfQ09NTUFORCA9ICdnZXREaXJlY3RDb21tYW5kJztcblxuLy8gbWFwcGluZyBvZiBjb21tYW5kcyB0byB0aGUgZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIGNvbW1hbmRcbi8vIGRlZmF1bHRzIHRvIGBnZXRNaW5pbWFsQ29tbWFuZGAsIHNvIG5vIG5lZWQgdG8gaGF2ZSB0aG9zZSBsaXN0ZWQgaGVyZVxuY29uc3QgQ09NTUFORFMgPSB7XG4gICdQYWdlLmdldENvb2tpZXMnOiBGVUxMX0NPTU1BTkQsXG4gICdQYWdlLm5hdmlnYXRlJzogRlVMTF9DT01NQU5ELFxuXG4gICdSdW50aW1lLmF3YWl0UHJvbWlzZSc6IEZVTExfQ09NTUFORCxcbiAgJ1J1bnRpbWUuY2FsbEZ1bmN0aW9uT24nOiBGVUxMX0NPTU1BTkQsXG4gICdSdW50aW1lLmV2YWx1YXRlJzogRlVMTF9DT01NQU5ELFxuXG4gICdUYXJnZXQuZXhpc3RzJzogRElSRUNUX0NPTU1BTkQsXG5cbiAgJ1RpbWVsaW5lLnN0YXJ0JzogRlVMTF9DT01NQU5ELFxuICAnVGltZWxpbmUuc3RvcCc6IEZVTExfQ09NTUFORCxcbn07XG5cbmNsYXNzIFJlbW90ZU1lc3NhZ2VzIHtcbiAgY29uc3RydWN0b3IgKGlzVGFyZ2V0QmFzZWQgPSBmYWxzZSkge1xuICAgIHRoaXMuaXNUYXJnZXRCYXNlZCA9IGlzVGFyZ2V0QmFzZWQ7XG4gIH1cblxuICBzZXQgaXNUYXJnZXRCYXNlZCAoaXNUYXJnZXRCYXNlZCkge1xuICAgIHRoaXMuX2lzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgZ2V0IGlzVGFyZ2V0QmFzZWQgKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgLypcbiAgICogQ29ubmVjdGlvbiBmdW5jdGlvbnNcbiAgICovXG5cbiAgc2V0Q29ubmVjdGlvbktleSAoY29ubklkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9fYXJndW1lbnQ6IHtcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZFxuICAgICAgfSxcbiAgICAgIF9fc2VsZWN0b3I6ICdfcnBjX3JlcG9ydElkZW50aWZpZXI6J1xuICAgIH07XG4gIH1cblxuICBjb25uZWN0VG9BcHAgKGNvbm5JZCwgYXBwSWRLZXkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubklkLFxuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5XG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZEdldExpc3Rpbmc6J1xuICAgIH07XG4gIH1cblxuICBzZXRTZW5kZXJLZXkgKGNvbm5JZCwgc2VuZGVySWQsIGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5LFxuICAgICAgICBXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleTogY29ubklkLFxuICAgICAgICBXSVJTZW5kZXJLZXk6IHNlbmRlcklkLFxuICAgICAgICBXSVJQYWdlSWRlbnRpZmllcktleTogcGFnZUlkS2V5LFxuICAgICAgICBXSVJBdXRvbWF0aWNhbGx5UGF1c2U6IGZhbHNlXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZFNvY2tldFNldHVwOidcbiAgICB9O1xuICB9XG5cbiAgaW5kaWNhdGVXZWJWaWV3IChjb25uSWQsIGFwcElkS2V5LCBwYWdlSWRLZXksIGVuYWJsZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk6IGFwcElkS2V5LFxuICAgICAgICBXSVJJbmRpY2F0ZUVuYWJsZWRLZXk6IF8uaXNOaWwoZW5hYmxlZCkgPyB0cnVlIDogZW5hYmxlZCxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleVxuICAgICAgfSxcbiAgICAgIF9fc2VsZWN0b3I6ICdfcnBjX2ZvcndhcmRJbmRpY2F0ZVdlYlZpZXc6J1xuICAgIH07XG4gIH1cblxuICBsYXVuY2hBcHBsaWNhdGlvbiAoYnVuZGxlSWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXk6IGJ1bmRsZUlkXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfcmVxdWVzdEFwcGxpY2F0aW9uTGF1bmNoOidcbiAgICB9O1xuICB9XG5cbiAgZ2V0RnVsbENvbW1hbmQgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIHBhcmFtcyxcbiAgICAgIGNvbm5JZCxcbiAgICAgIHNlbmRlcklkLFxuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXksXG4gICAgICB0YXJnZXRJZCxcbiAgICAgIGlkLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgLyogVGhlIFdlYiBJbnNwZWN0b3IgaGFzIGEgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdGhhdCBjYW4gYmUgcGFzc2VkIGluLCBhc1xuICAgICAqIHNlZW4gd2hlbiBkdW1waW5nIHdoYXQgU2FmYXJpIGlzIGRvaW5nIHdoZW4gY29tbXVuaWNhdGluZyB3aXRoIGl0LiBNb3N0XG4gICAgICogYXJlIGtlcHQgYXMgdGhleSBhcmUgc2V0IGZvciBTYWZhcmkuIFRoZSBleGNlcHRpb24gaXMgYGVtdWxhdGVVc2VyR2VzdHVyZWBcbiAgICAgKiB3aGljaCwgb24gaU9TIDEzKywgYnJlYWtzIHBvcHVwIGJsb2NraW5nIChpLmUuLCBldmVuIHdpdGggdGhlIHBvcHVwXG4gICAgICogYmxvY2tpbmcgc2V0dGluZyBvbiwgbmV3IHdpbmRvd3MgYXJlIG9wZW5hYmxlIGJvdGggZnJvbSBsaW5rcyBhbmQgZnJvbVxuICAgICAqIEphdmFTY3JpcHQpLlxuICAgICAqL1xuXG4gICAgbGV0IHJlYWxNZXRob2Q7XG4gICAgbGV0IHJlYWxQYXJhbXM7XG4gICAgaWYgKHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgcmVhbE1ldGhvZCA9ICdUYXJnZXQuc2VuZE1lc3NhZ2VUb1RhcmdldCc7XG4gICAgICByZWFsUGFyYW1zID0ge1xuICAgICAgICB0YXJnZXRJZCxcbiAgICAgICAgbWVzc2FnZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBwYXJhbXM6IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICAgb2JqZWN0R3JvdXA6IE9CSkVDVF9HUk9VUCxcbiAgICAgICAgICAgIGluY2x1ZGVDb21tYW5kTGluZUFQSTogdHJ1ZSxcbiAgICAgICAgICAgIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogZmFsc2UsXG4gICAgICAgICAgICBlbXVsYXRlVXNlckdlc3R1cmU6IGZhbHNlLFxuICAgICAgICAgICAgZ2VuZXJhdGVQcmV2aWV3OiBmYWxzZSxcbiAgICAgICAgICAgIHNhdmVSZXN1bHQ6IGZhbHNlLFxuICAgICAgICAgIH0sIHBhcmFtcylcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZWFsTWV0aG9kID0gbWV0aG9kO1xuICAgICAgcmVhbFBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBvYmplY3RHcm91cDogT0JKRUNUX0dST1VQLFxuICAgICAgICBpbmNsdWRlQ29tbWFuZExpbmVBUEk6IHRydWUsXG4gICAgICAgIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZTogZmFsc2UsXG4gICAgICAgIGVtdWxhdGVVc2VyR2VzdHVyZTogZmFsc2UsXG4gICAgICB9LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHBsaXN0ID0ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJTb2NrZXREYXRhS2V5OiB7XG4gICAgICAgICAgbWV0aG9kOiByZWFsTWV0aG9kLFxuICAgICAgICAgIHBhcmFtczogcmVhbFBhcmFtcyxcbiAgICAgICAgfSxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSU2VuZGVyS2V5OiBzZW5kZXJJZCxcbiAgICAgICAgV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5OiBhcHBJZEtleSxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleSxcbiAgICAgIH0sXG4gICAgICBfX3NlbGVjdG9yOiAnX3JwY19mb3J3YXJkU29ja2V0RGF0YTonLFxuICAgIH07XG4gICAgcmV0dXJuIF8ub21pdEJ5KHBsaXN0LCBfLmlzTmlsKTtcbiAgfVxuXG4gIGdldE1pbmltYWxDb21tYW5kIChvcHRzID0ge30pIHtcbiAgICBjb25zdCB7bWV0aG9kLCBwYXJhbXMsIGNvbm5JZCwgc2VuZGVySWQsIGFwcElkS2V5LCBwYWdlSWRLZXksIHRhcmdldElkLCBpZH0gPSBvcHRzO1xuXG4gICAgbGV0IHJlYWxNZXRob2QgPSBtZXRob2Q7XG4gICAgbGV0IHJlYWxQYXJhbXMgPSBwYXJhbXM7XG4gICAgaWYgKHRoaXMuaXNUYXJnZXRCYXNlZCkge1xuICAgICAgcmVhbE1ldGhvZCA9ICdUYXJnZXQuc2VuZE1lc3NhZ2VUb1RhcmdldCc7XG4gICAgICByZWFsUGFyYW1zID0ge1xuICAgICAgICB0YXJnZXRJZCxcbiAgICAgICAgbWVzc2FnZTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBwYXJhbXMsXG4gICAgICAgIH0pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBwbGlzdCA9IHtcbiAgICAgIF9fYXJndW1lbnQ6IHtcbiAgICAgICAgV0lSU29ja2V0RGF0YUtleToge1xuICAgICAgICAgIG1ldGhvZDogcmVhbE1ldGhvZCxcbiAgICAgICAgICBwYXJhbXM6IHJlYWxQYXJhbXMsXG4gICAgICAgIH0sXG4gICAgICAgIFdJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5OiBjb25uSWQsXG4gICAgICAgIFdJUlNlbmRlcktleTogc2VuZGVySWQsXG4gICAgICAgIFdJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTogYXBwSWRLZXksXG4gICAgICAgIFdJUlBhZ2VJZGVudGlmaWVyS2V5OiBwYWdlSWRLZXksXG4gICAgICB9LFxuICAgICAgX19zZWxlY3RvcjogJ19ycGNfZm9yd2FyZFNvY2tldERhdGE6J1xuICAgIH07XG4gICAgcmV0dXJuIF8ub21pdEJ5KHBsaXN0LCBfLmlzTmlsKTtcbiAgfVxuXG4gIGdldERpcmVjdENvbW1hbmQgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHttZXRob2QsIHBhcmFtcywgY29ubklkLCBzZW5kZXJJZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgaWR9ID0gb3B0cztcblxuICAgIGNvbnN0IHBsaXN0ID0ge1xuICAgICAgX19hcmd1bWVudDoge1xuICAgICAgICBXSVJTb2NrZXREYXRhS2V5OiB7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgfSxcbiAgICAgICAgV0lSQ29ubmVjdGlvbklkZW50aWZpZXJLZXk6IGNvbm5JZCxcbiAgICAgICAgV0lSU2VuZGVyS2V5OiBzZW5kZXJJZCxcbiAgICAgICAgV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5OiBhcHBJZEtleSxcbiAgICAgICAgV0lSUGFnZUlkZW50aWZpZXJLZXk6IHBhZ2VJZEtleSxcbiAgICAgIH0sXG4gICAgICBfX3NlbGVjdG9yOiAnX3JwY19mb3J3YXJkU29ja2V0RGF0YTonXG4gICAgfTtcbiAgICByZXR1cm4gXy5vbWl0QnkocGxpc3QsIF8uaXNOaWwpO1xuICB9XG5cbiAgZ2V0UmVtb3RlQ29tbWFuZCAoY29tbWFuZCwgb3B0cykge1xuICAgIGNvbnN0IHtcbiAgICAgIGlkLFxuICAgICAgY29ubklkLFxuICAgICAgYXBwSWRLZXksXG4gICAgICBzZW5kZXJJZCxcbiAgICAgIHBhZ2VJZEtleSxcbiAgICAgIHRhcmdldElkLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgLy8gZGVhbCB3aXRoIFNhZmFyaSBXZWIgSW5zcGVjdG9yIGNvbW1hbmRzXG4gICAgc3dpdGNoIChjb21tYW5kKSB7XG4gICAgICBjYXNlICdzZXRDb25uZWN0aW9uS2V5JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0Q29ubmVjdGlvbktleShjb25uSWQpO1xuICAgICAgY2FzZSAnaW5kaWNhdGVXZWJWaWV3JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kaWNhdGVXZWJWaWV3KGNvbm5JZCwgYXBwSWRLZXksIHBhZ2VJZEtleSwgb3B0cy5lbmFibGVkKTtcbiAgICAgIGNhc2UgJ2Nvbm5lY3RUb0FwcCc6XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RUb0FwcChjb25uSWQsIGFwcElkS2V5KTtcbiAgICAgIGNhc2UgJ3NldFNlbmRlcktleSc6XG4gICAgICAgIHJldHVybiB0aGlzLnNldFNlbmRlcktleShjb25uSWQsIHNlbmRlcklkLCBhcHBJZEtleSwgcGFnZUlkS2V5KTtcbiAgICAgIGNhc2UgJ2xhdW5jaEFwcGxpY2F0aW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubGF1bmNoQXBwbGljYXRpb24ob3B0cy5idW5kbGVJZCk7XG4gICAgfVxuXG4gICAgLy8gZGVhbCB3aXRoIFdlYktpdCBjb21tYW5kc1xuICAgIGNvbnN0IGJ1aWxkZXJGdW5jdGlvbiA9IENPTU1BTkRTW2NvbW1hbmRdIHx8IE1JTklNQUxfQ09NTUFORDtcbiAgICByZXR1cm4gdGhpc1tidWlsZGVyRnVuY3Rpb25dKHtcbiAgICAgIC4uLmdldFByb3RvY29sQ29tbWFuZChpZCwgY29tbWFuZCwgb3B0cyksXG4gICAgICBjb25uSWQsXG4gICAgICBhcHBJZEtleSxcbiAgICAgIHNlbmRlcklkLFxuICAgICAgcGFnZUlkS2V5LFxuICAgICAgdGFyZ2V0SWQsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgUmVtb3RlTWVzc2FnZXMgfTtcbmV4cG9ydCBkZWZhdWx0IFJlbW90ZU1lc3NhZ2VzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFHQSxNQUFNQSxZQUFZLEdBQUcsU0FBUztBQUU5QixNQUFNQyxlQUFlLEdBQUcsbUJBQW1CO0FBQzNDLE1BQU1DLFlBQVksR0FBRyxnQkFBZ0I7QUFDckMsTUFBTUMsY0FBYyxHQUFHLGtCQUFrQjs7QUFJekMsTUFBTUMsUUFBUSxHQUFHO0VBQ2YsaUJBQWlCLEVBQUVGLFlBQVk7RUFDL0IsZUFBZSxFQUFFQSxZQUFZO0VBRTdCLHNCQUFzQixFQUFFQSxZQUFZO0VBQ3BDLHdCQUF3QixFQUFFQSxZQUFZO0VBQ3RDLGtCQUFrQixFQUFFQSxZQUFZO0VBRWhDLGVBQWUsRUFBRUMsY0FBYztFQUUvQixnQkFBZ0IsRUFBRUQsWUFBWTtFQUM5QixlQUFlLEVBQUVBO0FBQ25CLENBQUM7QUFFRCxNQUFNRyxjQUFjLENBQUM7RUFDbkJDLFdBQVcsQ0FBRUMsYUFBYSxHQUFHLEtBQUssRUFBRTtJQUNs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
|