@appium/base-driver 8.3.1 → 8.4.2
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/build/lib/basedriver/capabilities.d.ts +80 -0
- package/build/lib/basedriver/capabilities.d.ts.map +1 -0
- package/build/lib/basedriver/capabilities.js +11 -10
- package/build/lib/basedriver/commands/event.d.ts +9 -0
- package/build/lib/basedriver/commands/event.d.ts.map +1 -0
- package/build/lib/basedriver/commands/event.js +21 -21
- package/build/lib/basedriver/commands/find.d.ts +11 -0
- package/build/lib/basedriver/commands/find.d.ts.map +1 -0
- package/build/lib/basedriver/commands/find.js +44 -37
- package/build/lib/basedriver/commands/index.d.ts +8 -0
- package/build/lib/basedriver/commands/index.d.ts.map +1 -0
- package/build/lib/basedriver/commands/index.js +17 -14
- package/build/lib/basedriver/commands/log.d.ts +12 -0
- package/build/lib/basedriver/commands/log.d.ts.map +1 -0
- package/build/lib/basedriver/commands/log.js +24 -26
- package/build/lib/basedriver/commands/session.d.ts +11 -0
- package/build/lib/basedriver/commands/session.d.ts.map +1 -0
- package/build/lib/basedriver/commands/session.js +21 -147
- package/build/lib/basedriver/commands/settings.d.ts +10 -0
- package/build/lib/basedriver/commands/settings.d.ts.map +1 -0
- package/build/lib/basedriver/commands/settings.js +19 -17
- package/build/lib/basedriver/commands/timeout.d.ts +8 -0
- package/build/lib/basedriver/commands/timeout.d.ts.map +1 -0
- package/build/lib/basedriver/commands/timeout.js +118 -137
- package/build/lib/basedriver/core.d.ts +235 -0
- package/build/lib/basedriver/core.d.ts.map +1 -0
- package/build/lib/basedriver/core.js +283 -0
- package/build/lib/basedriver/desired-caps.d.ts +5 -0
- package/build/lib/basedriver/desired-caps.d.ts.map +1 -0
- package/build/lib/basedriver/desired-caps.js +1 -1
- package/build/lib/basedriver/device-settings.d.ts +32 -0
- package/build/lib/basedriver/device-settings.d.ts.map +1 -0
- package/build/lib/basedriver/device-settings.js +19 -11
- package/build/lib/basedriver/driver.d.ts +83 -0
- package/build/lib/basedriver/driver.d.ts.map +1 -0
- package/build/lib/basedriver/driver.js +100 -266
- package/build/lib/basedriver/helpers.d.ts +132 -0
- package/build/lib/basedriver/helpers.d.ts.map +1 -0
- package/build/lib/basedriver/helpers.js +17 -1
- package/build/lib/basedriver/logger.d.ts +3 -0
- package/build/lib/basedriver/logger.d.ts.map +1 -0
- package/build/lib/constants.d.ts +9 -0
- package/build/lib/constants.d.ts.map +1 -0
- package/build/lib/express/crash.d.ts +3 -0
- package/build/lib/express/crash.d.ts.map +1 -0
- package/build/lib/express/express-logging.d.ts +3 -0
- package/build/lib/express/express-logging.d.ts.map +1 -0
- package/build/lib/express/idempotency.d.ts +2 -0
- package/build/lib/express/idempotency.d.ts.map +1 -0
- package/build/lib/express/logger.d.ts +3 -0
- package/build/lib/express/logger.d.ts.map +1 -0
- package/build/lib/express/middleware.d.ts +9 -0
- package/build/lib/express/middleware.d.ts.map +1 -0
- package/build/lib/express/server.d.ts +10 -0
- package/build/lib/express/server.d.ts.map +1 -0
- package/build/lib/express/static.d.ts +6 -0
- package/build/lib/express/static.d.ts.map +1 -0
- package/build/lib/express/websocket.d.ts +64 -0
- package/build/lib/express/websocket.d.ts.map +1 -0
- package/build/lib/express/websocket.js +39 -38
- package/build/lib/helpers/capabilities.d.ts +13 -0
- package/build/lib/helpers/capabilities.d.ts.map +1 -0
- package/build/lib/helpers/capabilities.js +41 -1
- package/build/lib/index.d.ts +183 -0
- package/build/lib/index.d.ts.map +1 -0
- package/build/lib/index.js +40 -20
- package/build/lib/jsonwp-proxy/protocol-converter.d.ts +48 -0
- package/build/lib/jsonwp-proxy/protocol-converter.d.ts.map +1 -0
- package/build/lib/jsonwp-proxy/proxy.d.ts +41 -0
- package/build/lib/jsonwp-proxy/proxy.d.ts.map +1 -0
- package/build/lib/jsonwp-proxy/proxy.js +24 -6
- package/build/lib/jsonwp-status/status.d.ts +159 -0
- package/build/lib/jsonwp-status/status.d.ts.map +1 -0
- package/build/lib/protocol/errors.d.ts +310 -0
- package/build/lib/protocol/errors.d.ts.map +1 -0
- package/build/lib/protocol/errors.js +81 -2
- package/build/lib/protocol/helpers.d.ts +22 -0
- package/build/lib/protocol/helpers.d.ts.map +1 -0
- package/build/lib/protocol/index.d.ts +16 -0
- package/build/lib/protocol/index.d.ts.map +1 -0
- package/build/lib/protocol/index.js +7 -7
- package/build/lib/protocol/protocol.d.ts +11 -0
- package/build/lib/protocol/protocol.d.ts.map +1 -0
- package/build/lib/protocol/protocol.js +2 -6
- package/build/lib/protocol/routes.d.ts +6 -0
- package/build/lib/protocol/routes.d.ts.map +1 -0
- package/build/lib/protocol/routes.js +17 -1
- package/build/lib/protocol/validators.d.ts +8 -0
- package/build/lib/protocol/validators.d.ts.map +1 -0
- package/build/test/basedriver/driver-tests.js +30 -3
- package/build/test/e2e/basedriver/websockets.e2e.spec.js +12 -7
- package/build/test/unit/basedriver/commands/event.spec.js +7 -7
- package/build/test/unit/basedriver/commands/log.spec.js +31 -24
- package/build/test/unit/basedriver/timeout.spec.js +1 -1
- package/build/test/unit/protocol/routes.spec.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -0
- package/lib/basedriver/capabilities.js +49 -10
- package/lib/basedriver/commands/event.js +49 -31
- package/lib/basedriver/commands/find.js +108 -43
- package/lib/basedriver/commands/index.js +25 -19
- package/lib/basedriver/commands/log.js +60 -33
- package/lib/basedriver/commands/session.js +39 -141
- package/lib/basedriver/commands/settings.js +33 -13
- package/lib/basedriver/commands/timeout.js +153 -153
- package/lib/basedriver/core.js +497 -0
- package/lib/basedriver/desired-caps.js +1 -1
- package/lib/basedriver/device-settings.js +47 -12
- package/lib/basedriver/driver.js +273 -395
- package/lib/basedriver/helpers.js +18 -2
- package/lib/express/websocket.js +35 -32
- package/lib/helpers/capabilities.js +60 -1
- package/lib/index.js +16 -12
- package/lib/jsonwp-proxy/proxy.js +26 -6
- package/lib/protocol/errors.js +42 -42
- package/lib/protocol/index.js +4 -4
- package/lib/protocol/protocol.js +1 -3
- package/lib/protocol/routes.js +9 -0
- package/package.json +14 -11
- package/test/basedriver/driver-tests.js +31 -2
- package/index.d.ts +0 -386
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export type W3CCapabilities = import('@appium/types').W3CCapabilities;
|
|
2
|
+
export type Constraints = import('@appium/types').Constraints;
|
|
3
|
+
export type Capabilities = import('@appium/types').Capabilities;
|
|
4
|
+
export type ValidateCapsOpts = {
|
|
5
|
+
/**
|
|
6
|
+
* - if true, skip the presence constraint
|
|
7
|
+
*/
|
|
8
|
+
skipPresenceConstraint?: boolean | undefined;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @param {W3CCapabilities} caps
|
|
13
|
+
* @param {Constraints} [constraints]
|
|
14
|
+
* @param {boolean} [shouldValidateCaps]
|
|
15
|
+
* @returns
|
|
16
|
+
*/
|
|
17
|
+
export function parseCaps(caps: W3CCapabilities, constraints?: import("@appium/types").Constraints | undefined, shouldValidateCaps?: boolean | undefined): {
|
|
18
|
+
requiredCaps: Partial<import("@wdio/types/build/Capabilities").Capabilities & import("@wdio/types/build/Capabilities").AppiumW3CCapabilities & {
|
|
19
|
+
[x: `${string}:${string}`]: any;
|
|
20
|
+
}>;
|
|
21
|
+
allFirstMatchCaps: Partial<import("@wdio/types/build/Capabilities").Capabilities & import("@wdio/types/build/Capabilities").AppiumW3CCapabilities & {
|
|
22
|
+
[x: `${string}:${string}`]: any;
|
|
23
|
+
}>[];
|
|
24
|
+
validatedFirstMatchCaps: Partial<import("@wdio/types/build/Capabilities").Capabilities & import("@wdio/types/build/Capabilities").AppiumCapabilities & {
|
|
25
|
+
[x: string]: any;
|
|
26
|
+
}>[];
|
|
27
|
+
matchedCaps: Partial<import("@wdio/types/build/Capabilities").Capabilities & import("@wdio/types/build/Capabilities").AppiumCapabilities & {
|
|
28
|
+
[x: string]: any;
|
|
29
|
+
}> | null;
|
|
30
|
+
validationErrors: any[];
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
*
|
|
34
|
+
* @param {W3CCapabilities} w3cCaps
|
|
35
|
+
* @param {Constraints} [constraints]
|
|
36
|
+
* @param {boolean} [shouldValidateCaps]
|
|
37
|
+
* @returns {Capabilities}
|
|
38
|
+
*/
|
|
39
|
+
export function processCapabilities(w3cCaps: W3CCapabilities, constraints?: import("@appium/types").Constraints | undefined, shouldValidateCaps?: boolean | undefined): Capabilities;
|
|
40
|
+
/**
|
|
41
|
+
*
|
|
42
|
+
* @param {Capabilities} caps
|
|
43
|
+
* @param {Constraints} [constraints]
|
|
44
|
+
* @param {ValidateCapsOpts} [opts]
|
|
45
|
+
* @returns {Capabilities}
|
|
46
|
+
*/
|
|
47
|
+
export function validateCaps(caps: Capabilities, constraints?: import("@appium/types").Constraints | undefined, opts?: ValidateCapsOpts | undefined): Capabilities;
|
|
48
|
+
/**
|
|
49
|
+
* @param {Capabilities} [primary]
|
|
50
|
+
* @param {Capabilities} [secondary]
|
|
51
|
+
* @returns {Capabilities}
|
|
52
|
+
*/
|
|
53
|
+
export function mergeCaps(primary?: Partial<import("@wdio/types/build/Capabilities").Capabilities & import("@wdio/types/build/Capabilities").AppiumCapabilities & {
|
|
54
|
+
[x: string]: any;
|
|
55
|
+
}> | undefined, secondary?: Partial<import("@wdio/types/build/Capabilities").Capabilities & import("@wdio/types/build/Capabilities").AppiumCapabilities & {
|
|
56
|
+
[x: string]: any;
|
|
57
|
+
}> | undefined): Capabilities;
|
|
58
|
+
export const APPIUM_VENDOR_PREFIX: "appium:";
|
|
59
|
+
export const APPIUM_OPTS_CAP: "options";
|
|
60
|
+
/**
|
|
61
|
+
* Get an array of all the unprefixed caps that are being used in 'alwaysMatch' and all of the 'firstMatch' object
|
|
62
|
+
* @param {Object} caps A capabilities object
|
|
63
|
+
*/
|
|
64
|
+
export function findNonPrefixedCaps({ alwaysMatch, firstMatch }: any): string[];
|
|
65
|
+
export function isStandardCap(cap: any): boolean;
|
|
66
|
+
export function stripAppiumPrefixes(caps: any): void;
|
|
67
|
+
/**
|
|
68
|
+
* Return a copy of a capabilities object which has taken everything within the 'options'
|
|
69
|
+
* capability and promoted it to the top level. Note that this function is assumed to be run after
|
|
70
|
+
* all vendor prefixes have already been stripped from the top level. So we are dealing with e.g.
|
|
71
|
+
* 'options' and not 'appium:options' at this point. Any prefixes _inside_ the 'options' capability
|
|
72
|
+
* will themselves be stripped. This is designed as an internal function, not one to operate on
|
|
73
|
+
* user-constructed capabilities.
|
|
74
|
+
*
|
|
75
|
+
* @param {object} originalCaps - the capabilities to analyze and promote from 'options'
|
|
76
|
+
* @return {object!} - the capabilities with 'options' promoted if necessary
|
|
77
|
+
*/
|
|
78
|
+
export function promoteAppiumOptions(originalCaps: object): object;
|
|
79
|
+
export const PREFIXED_APPIUM_OPTS_CAP: string;
|
|
80
|
+
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../lib/basedriver/capabilities.js"],"names":[],"mappings":"8BAiTa,OAAO,eAAe,EAAE,eAAe;0BACvC,OAAO,eAAe,EAAE,WAAW;2BACnC,OAAO,eAAe,EAAE,YAAY;;;;;;;AArKjD;;;;;;GAMG;AACH,gCALW,eAAe;;;;;;;;;;;;;;EAuFzB;AAGD;;;;;;GAMG;AACH,6CALW,eAAe,4GAGb,YAAY,CAiBxB;AA9ND;;;;;;GAMG;AACH,mCALW,YAAY,uGAGV,YAAY,CAmCxB;AA5DD;;;;GAIG;AACH;;;;iBAFa,YAAY,CAcxB;AAvBD,6CAAuC;AACvC,wCAAkC;AAsHlC;;;GAGG;AACH,gFAQC;AAlDD,iDAEC;AAID,qDA8BC;AAqID;;;;;;;;;;GAUG;AACH,mDAHW,MAAM,GACL,MAAM,CA6BjB;AA9RD,8CAA6E"}
|
|
@@ -124,7 +124,7 @@ function findNonPrefixedCaps({
|
|
|
124
124
|
alwaysMatch = {},
|
|
125
125
|
firstMatch = []
|
|
126
126
|
}) {
|
|
127
|
-
return _lodash.default.chain([alwaysMatch, ...firstMatch]).reduce((unprefixedCaps, caps) => [...unprefixedCaps, ...
|
|
127
|
+
return _lodash.default.chain([alwaysMatch, ...firstMatch]).reduce((unprefixedCaps, caps) => [...unprefixedCaps, ...Object.keys(caps).filter(cap => !cap.includes(':') && !isStandardCap(cap))], []).uniq().value();
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
function parseCaps(caps, constraints = {}, shouldValidateCaps = true) {
|
|
@@ -177,14 +177,15 @@ function parseCaps(caps, constraints = {}, shouldValidateCaps = true) {
|
|
|
177
177
|
}
|
|
178
178
|
|
|
179
179
|
let validationErrors = [];
|
|
180
|
-
|
|
180
|
+
|
|
181
|
+
let validatedFirstMatchCaps = _lodash.default.compact(allFirstMatchCaps.map(firstMatchCaps => {
|
|
181
182
|
try {
|
|
182
183
|
return shouldValidateCaps ? validateCaps(firstMatchCaps, filteredConstraints) : firstMatchCaps;
|
|
183
184
|
} catch (e) {
|
|
184
185
|
validationErrors.push(e.message);
|
|
185
|
-
return null;
|
|
186
186
|
}
|
|
187
|
-
})
|
|
187
|
+
}));
|
|
188
|
+
|
|
188
189
|
let matchedCaps = null;
|
|
189
190
|
|
|
190
191
|
for (let firstMatchCaps of validatedFirstMatchCaps) {
|
|
@@ -210,21 +211,21 @@ function parseCaps(caps, constraints = {}, shouldValidateCaps = true) {
|
|
|
210
211
|
};
|
|
211
212
|
}
|
|
212
213
|
|
|
213
|
-
function processCapabilities(
|
|
214
|
+
function processCapabilities(w3cCaps, constraints = {}, shouldValidateCaps = true) {
|
|
214
215
|
const {
|
|
215
216
|
matchedCaps,
|
|
216
217
|
validationErrors
|
|
217
|
-
} = parseCaps(
|
|
218
|
+
} = parseCaps(w3cCaps, constraints, shouldValidateCaps);
|
|
218
219
|
|
|
219
220
|
if (!_support.util.hasValue(matchedCaps)) {
|
|
220
|
-
if (_lodash.default.isArray(
|
|
221
|
-
throw new _errors.errors.InvalidArgumentError(`Could not find matching capabilities from ${JSON.stringify(
|
|
221
|
+
if (_lodash.default.isArray(w3cCaps.firstMatch) && w3cCaps.firstMatch.length > 1) {
|
|
222
|
+
throw new _errors.errors.InvalidArgumentError(`Could not find matching capabilities from ${JSON.stringify(w3cCaps)}:\n ${validationErrors.join('\n')}`);
|
|
222
223
|
} else {
|
|
223
224
|
throw new _errors.errors.InvalidArgumentError(validationErrors[0]);
|
|
224
225
|
}
|
|
225
226
|
}
|
|
226
227
|
|
|
227
|
-
return matchedCaps;
|
|
228
|
+
return matchedCaps !== null && matchedCaps !== void 0 ? matchedCaps : {};
|
|
228
229
|
}
|
|
229
230
|
|
|
230
231
|
function promoteAppiumOptions(originalCaps) {
|
|
@@ -254,4 +255,4 @@ function promoteAppiumOptions(originalCaps) {
|
|
|
254
255
|
delete caps[APPIUM_OPTS_CAP];
|
|
255
256
|
return caps;
|
|
256
257
|
}
|
|
257
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2NhcGFiaWxpdGllcy5qcyJdLCJuYW1lcyI6WyJBUFBJVU1fVkVORE9SX1BSRUZJWCIsIkFQUElVTV9PUFRTX0NBUCIsIlBSRUZJWEVEX0FQUElVTV9PUFRTX0NBUCIsIm1lcmdlQ2FwcyIsInByaW1hcnkiLCJzZWNvbmRhcnkiLCJyZXN1bHQiLCJPYmplY3QiLCJhc3NpZ24iLCJuYW1lIiwidmFsdWUiLCJfIiwidG9QYWlycyIsImlzVW5kZWZpbmVkIiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJKU09OIiwic3RyaW5naWZ5IiwidmFsaWRhdGVDYXBzIiwiY2FwcyIsImNvbnN0cmFpbnRzIiwib3B0cyIsInNraXBQcmVzZW5jZUNvbnN0cmFpbnQiLCJpc1BsYWluT2JqZWN0IiwiY2xvbmVEZWVwIiwia2V5Iiwia2V5cyIsInByZXNlbmNlIiwidmFsaWRhdGlvbkVycm9ycyIsInZhbGlkYXRvciIsInZhbGlkYXRlIiwicGlja0J5IiwidXRpbCIsImhhc1ZhbHVlIiwiZnVsbE1lc3NhZ2VzIiwibWVzc2FnZSIsImF0dHJpYnV0ZSIsInJlYXNvbnMiLCJyZWFzb24iLCJwdXNoIiwiam9pbiIsIlNUQU5EQVJEX0NBUFMiLCJpc1N0YW5kYXJkQ2FwIiwiY2FwIiwiZmluZCIsInN0YW5kYXJkQ2FwIiwidG9Mb3dlckNhc2UiLCJzdHJpcEFwcGl1bVByZWZpeGVzIiwicHJlZml4IiwicHJlZml4ZWRDYXBzIiwiZmlsdGVyIiwic3RhcnRzV2l0aCIsImJhZFByZWZpeGVkQ2FwcyIsInByZWZpeGVkQ2FwIiwic3RyaXBwZWRDYXBOYW1lIiwic3Vic3RyIiwibGVuZ3RoIiwiaXNOaWwiLCJsb2ciLCJ3YXJuIiwiZmluZE5vblByZWZpeGVkQ2FwcyIsImFsd2F5c01hdGNoIiwiZmlyc3RNYXRjaCIsImNoYWluIiwicmVkdWNlIiwidW5wcmVmaXhlZENhcHMiLCJpbmNsdWRlcyIsInVuaXEiLCJwYXJzZUNhcHMiLCJzaG91bGRWYWxpZGF0ZUNhcHMiLCJyZXF1aXJlZENhcHMiLCJhbGxGaXJzdE1hdGNoQ2FwcyIsImlzQXJyYXkiLCJub25QcmVmaXhlZENhcHMiLCJpc0VtcHR5IiwiZmlyc3RNYXRjaENhcHMiLCJmaWx0ZXJlZENvbnN0cmFpbnRzIiwicmVxdWlyZWRDYXBzS2V5cyIsInZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzIiwibWFwIiwiZSIsImlzTnVsbCIsIm1hdGNoZWRDYXBzIiwiZXJyIiwicHJvY2Vzc0NhcGFiaWxpdGllcyIsInByb21vdGVBcHBpdW1PcHRpb25zIiwib3JpZ2luYWxDYXBzIiwiYXBwaXVtT3B0aW9ucyIsIlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IiLCJvdmVyd3JpdHRlbktleXMiLCJpbnRlcnNlY3Rpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxvQkFBb0IsR0FBRyxTQUE3Qjs7QUFDQSxNQUFNQyxlQUFlLEdBQUcsU0FBeEI7O0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUksR0FBRUYsb0JBQXFCLEdBQUVDLGVBQWdCLEVBQTNFOzs7QUFJQSxTQUFTRSxTQUFULENBQW9CQyxPQUFPLEdBQUcsRUFBOUIsRUFBa0NDLFNBQVMsR0FBRyxFQUE5QyxFQUFrRDtBQUNoRCxNQUFJQyxNQUFNLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JKLE9BQWxCLENBQWI7O0FBRUEsT0FBSyxJQUFJLENBQUNLLElBQUQsRUFBT0MsS0FBUCxDQUFULElBQTBCQyxnQkFBRUMsT0FBRixDQUFVUCxTQUFWLENBQTFCLEVBQWdEO0FBRTlDLFFBQUksQ0FBQ00sZ0JBQUVFLFdBQUYsQ0FBY1QsT0FBTyxDQUFDSyxJQUFELENBQXJCLENBQUwsRUFBbUM7QUFDakMsWUFBTSxJQUFJSyxlQUFPQyxvQkFBWCxDQUFpQyxhQUFZTixJQUFLLHVDQUFzQ08sSUFBSSxDQUFDQyxTQUFMLENBQWViLE9BQWYsQ0FB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RCxTQUFTRyxvQkFBVCxDQUErQkMsWUFBL0IsRUFBNkM7QUFDM0MsUUFBTUMsYUFBYSxHQUFHRCxZQUFZLENBQUNyRixlQUFELENBQWxDOztBQUNBLE1BQUksQ0FBQ3NGLGFBQUwsRUFBb0I7QUFDbEIsV0FBT0QsWUFBUDtBQUNEOztBQUVELE1BQUluRSxJQUFJLEdBQUdSLGdCQUFFYSxTQUFGLENBQVk4RCxZQUFaLENBQVg7O0FBQ0EsTUFBSSxDQUFDM0UsZ0JBQUVZLGFBQUYsQ0FBZ0JnRSxhQUFoQixDQUFMLEVBQXFDO0FBQ25DLFVBQU0sSUFBSXpFLGVBQU8wRSxzQkFBWCxDQUFtQyxPQUFNdkYsZUFBZ0IsK0JBQXpELENBQU47QUFDRDs7QUFHRDhDLEVBQUFBLG1CQUFtQixDQUFDd0MsYUFBRCxDQUFuQjs7QUFHQSxRQUFNRSxlQUFlLEdBQUc5RSxnQkFBRStFLFlBQUYsQ0FBZW5GLE1BQU0sQ0FBQ21CLElBQVAsQ0FBWVAsSUFBWixDQUFmLEVBQWtDWixNQUFNLENBQUNtQixJQUFQLENBQVk2RCxhQUFaLENBQWxDLENBQXhCOztBQUNBLE1BQUlFLGVBQWUsQ0FBQ2pDLE1BQWhCLEdBQXlCLENBQTdCLEVBQWdDO0FBQzlCRSxvQkFBSUMsSUFBSixDQUFVLDZCQUE0QnpELHdCQUF5Qix1QkFBdEQsR0FDQyxrQ0FBaUNjLElBQUksQ0FBQ0MsU0FBTCxDQUFld0UsZUFBZixDQUFnQyxFQUQzRTtBQUVEOztBQUdEdEUsRUFBQUEsSUFBSSxHQUFHLEVBQUMsR0FBR0EsSUFBSjtBQUFVLE9BQUdvRTtBQUFiLEdBQVA7QUFHQSxTQUFPcEUsSUFBSSxDQUFDbEIsZUFBRCxDQUFYO0FBQ0EsU0FBT2tCLElBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB2YWxpZGF0b3IgfSBmcm9tICcuL2Rlc2lyZWQtY2Fwcyc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnLi4vcHJvdG9jb2wvZXJyb3JzJztcblxuY29uc3QgQVBQSVVNX1ZFTkRPUl9QUkVGSVggPSAnYXBwaXVtOic7XG5jb25zdCBBUFBJVU1fT1BUU19DQVAgPSAnb3B0aW9ucyc7XG5jb25zdCBQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVAgPSBgJHtBUFBJVU1fVkVORE9SX1BSRUZJWH0ke0FQUElVTV9PUFRTX0NBUH1gO1xuXG4vLyBUYWtlcyBwcmltYXJ5IGNhcHMgb2JqZWN0IGFuZCBtZXJnZXMgaXQgaW50byBhIHNlY29uZGFyeSBjYXBzIG9iamVjdC5cbi8vIChzZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZGZuLW1lcmdpbmctY2FwYWJpbGl0aWVzKVxuZnVuY3Rpb24gbWVyZ2VDYXBzIChwcmltYXJ5ID0ge30sIHNlY29uZGFyeSA9IHt9KSB7XG4gIGxldCByZXN1bHQgPSBPYmplY3QuYXNzaWduKHt9LCBwcmltYXJ5KTtcblxuICBmb3IgKGxldCBbbmFtZSwgdmFsdWVdIG9mIF8udG9QYWlycyhzZWNvbmRhcnkpKSB7XG4gICAgLy8gT3ZlcndyaXRpbmcgaXMgbm90IGFsbG93ZWQuIFByaW1hcnkgYW5kIHNlY29uZGFyeSBtdXN0IGhhdmUgZGlmZmVyZW50IHByb3BlcnRpZXMgKHczYyBydWxlIDQuNClcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocHJpbWFyeVtuYW1lXSkpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYHByb3BlcnR5ICcke25hbWV9JyBzaG91bGQgbm90IGV4aXN0IG9uIGJvdGggcHJpbWFyeSAoJHtKU09OLnN0cmluZ2lmeShwcmltYXJ5KX0pIGFuZCBzZWNvbmRhcnkgKCR7SlNPTi5zdHJpbmdpZnkoc2Vjb25kYXJ5KX0pIG9iamVjdGApO1xuICAgIH1cbiAgICByZXN1bHRbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIFZhbGlkYXRlcyBjYXBzIGFnYWluc3QgYSBzZXQgb2YgY29uc3RyYWludHNcbmZ1bmN0aW9uIHZhbGlkYXRlQ2FwcyAoY2FwcywgY29uc3RyYWludHMgPSB7fSwgb3B0cyA9IHt9KSB7XG5cbiAgbGV0IHtza2lwUHJlc2VuY2VDb25zdHJhaW50fSA9IG9wdHM7XG5cbiAgaWYgKCFfLmlzUGxhaW5PYmplY3QoY2FwcykpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBtdXN0IGJlIGEgSlNPTiBvYmplY3RgKTtcbiAgfVxuXG4gIGNvbnN0cmFpbnRzID0gXy5jbG9uZURlZXAoY29uc3RyYWludHMpOyAvLyBEZWZlbnNpdmUgY29weVxuXG4gIGlmIChza2lwUHJlc2VuY2VDb25zdHJhaW50KSB7XG4gICAgLy8gUmVtb3ZlIHRoZSAncHJlc2VuY2UnIGNvbnN0cmFpbnQgaWYgd2UncmUgbm90IGNoZWNraW5nIGZvciBpdFxuICAgIGZvciAobGV0IGtleSBvZiBfLmtleXMoY29uc3RyYWludHMpKSB7XG4gICAgICBkZWxldGUgY29uc3RyYWludHNba2V5XS5wcmVzZW5jZTtcbiAgICB9XG4gIH1cblxuICBsZXQgdmFsaWRhdGlvbkVycm9ycyA9IHZhbGlkYXRvci52YWxpZGF0ZShfLnBpY2tCeShjYXBzLCB1dGlsLmhhc1ZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZnVsbE1lc3NhZ2VzOiBmYWxzZX0pO1xuXG4gIGlmICh2YWxpZGF0aW9uRXJyb3JzKSB7XG4gICAgbGV0IG1lc3NhZ2UgPSBbXTtcbiAgICBmb3IgKGxldCBbYXR0cmlidXRlLCByZWFzb25zXSBvZiBfLnRvUGFpcnModmFsaWRhdGlvbkVycm9ycykpIHtcbiAgICAgIGZvciAobGV0IHJlYXNvbiBvZiByZWFzb25zKSB7XG4gICAgICAgIG1lc3NhZ2UucHVzaChgJyR7YXR0cmlidXRlfScgJHtyZWFzb259YCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IobWVzc2FnZS5qb2luKCc7ICcpKTtcbiAgfVxuXG4gIC8vIFJldHVybiBjYXBzXG4gIHJldHVybiBjYXBzO1xufVxuXG4vLyBTdGFuZGFyZCwgbm9uLXByZWZpeGVkIGNhcGFiaWxpdGllcyAoc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJkcml2ZXIvI2Rmbi10YWJsZS1vZi1zdGFuZGFyZC1jYXBhYmlsaXRpZXMpXG5jb25zdCBTVEFOREFSRF9DQVBTID0gW1xuICAnYnJvd3Nlck5hbWUnLFxuICAnYnJvd3NlclZlcnNpb24nLFxuICAncGxhdGZvcm1OYW1lJyxcbiAgJ2FjY2VwdEluc2VjdXJlQ2VydHMnLFxuICAncGFnZUxvYWRTdHJhdGVneScsXG4gICdwcm94eScsXG4gICdzZXRXaW5kb3dSZWN0JyxcbiAgJ3RpbWVvdXRzJyxcbiAgJ3VuaGFuZGxlZFByb21wdEJlaGF2aW9yJ1xuXTtcblxuZnVuY3Rpb24gaXNTdGFuZGFyZENhcCAoY2FwKSB7XG4gIHJldHVybiAhIV8uZmluZChTVEFOREFSRF9DQVBTLCAoc3RhbmRhcmRDYXApID0+IHN0YW5kYXJkQ2FwLnRvTG93ZXJDYXNlKCkgPT09IGAke2NhcH1gLnRvTG93ZXJDYXNlKCkpO1xufVxuXG4vLyBJZiB0aGUgJ2FwcGl1bTonIHByZWZpeCB3YXMgcHJvdmlkZWQgYW5kIGl0J3MgYSB2YWxpZCBjYXBhYmlsaXR5LCBzdHJpcCBvdXQgdGhlIHByZWZpeCAoc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJkcml2ZXIvI2Rmbi1leHRlbnNpb24tY2FwYWJpbGl0aWVzKVxuLy8gKE5PVEU6IE1ldGhvZCBpcyBkZXN0cnVjdGl2ZSBhbmQgbXV0YXRlcyBjb250ZW50cyBvZiBjYXBzKVxuZnVuY3Rpb24gc3RyaXBBcHBpdW1QcmVmaXhlcyAoY2Fwcykge1xuICBjb25zdCBwcmVmaXggPSAnYXBwaXVtOic7XG4gIGNvbnN0IHByZWZpeGVkQ2FwcyA9IF8uZmlsdGVyKF8ua2V5cyhjYXBzKSwgKGNhcCkgPT4gYCR7Y2FwfWAuc3RhcnRzV2l0aChwcmVmaXgpKTtcbiAgY29uc3QgYmFkUHJlZml4ZWRDYXBzID0gW107XG5cbiAgLy8gU3RyaXAgb3V0IHRoZSAnYXBwaXVtOicgcHJlZml4XG4gIGZvciAobGV0IHByZWZpeGVkQ2FwIG9mIHByZWZpeGVkQ2Fwcykge1xuICAgIGNvbnN0IHN0cmlwcGVkQ2FwTmFtZSA9IHByZWZpeGVkQ2FwLnN1YnN0cihwcmVmaXgubGVuZ3RoKTtcblxuICAgIC8vIElmIGl0J3Mgc3RhbmRhcmQgY2FwYWJpbGl0eSB0aGF0IHdhcyBwcmVmaXhlZCwgYWRkIGl0IHRvIGFuIGFycmF5IG9mIGluY29ycmVjdGx5IHByZWZpeGVkIGNhcGFiaWxpdGllc1xuICAgIGlmIChpc1N0YW5kYXJkQ2FwKHN0cmlwcGVkQ2FwTmFtZSkpIHtcbiAgICAgIGJhZFByZWZpeGVkQ2Fwcy5wdXNoKHN0cmlwcGVkQ2FwTmFtZSk7XG4gICAgICBpZiAoXy5pc05pbChjYXBzW3N0cmlwcGVkQ2FwTmFtZV0pKSB7XG4gICAgICAgIGNhcHNbc3RyaXBwZWRDYXBOYW1lXSA9IGNhcHNbcHJlZml4ZWRDYXBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLndhcm4oYElnbm9yaW5nIGNhcGFiaWxpdHkgJyR7cHJlZml4ZWRDYXB9PSR7Y2Fwc1twcmVmaXhlZENhcF19JyBhbmQgYCArXG4gICAgICAgICAgYHVzaW5nIGNhcGFiaWxpdHkgJyR7c3RyaXBwZWRDYXBOYW1lfT0ke2NhcHNbc3RyaXBwZWRDYXBOYW1lXX0nYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhcHNbc3RyaXBwZWRDYXBOYW1lXSA9IGNhcHNbcHJlZml4ZWRDYXBdO1xuICAgIH1cblxuICAgIC8vIFN0cmlwIG91dCB0aGUgcHJlZml4XG4gICAgZGVsZXRlIGNhcHNbcHJlZml4ZWRDYXBdO1xuICB9XG5cbiAgLy8gSWYgd2UgZm91bmQgc3RhbmRhcmQgY2FwcyB0aGF0IHdlcmUgaW5jb3JyZWN0bHkgcHJlZml4ZWQsIHRocm93IGFuIGV4Y2VwdGlvbiAoZS5nLjogZG9uJ3QgYWNjZXB0ICdhcHBpdW06cGxhdGZvcm1OYW1lJywgb25seSBhY2NlcHQganVzdCAncGxhdGZvcm1OYW1lJylcbiAgaWYgKGJhZFByZWZpeGVkQ2Fwcy5sZW5ndGggPiAwKSB7XG4gICAgbG9nLndhcm4oYFRoZSBjYXBhYmlsaXRpZXMgJHtKU09OLnN0cmluZ2lmeShiYWRQcmVmaXhlZENhcHMpfSBhcmUgc3RhbmRhcmQgY2FwYWJpbGl0aWVzIGFuZCBkbyBub3QgcmVxdWlyZSBcImFwcGl1bTpcIiBwcmVmaXhgKTtcbiAgfVxufVxuXG4vKipcbiAqIEdldCBhbiBhcnJheSBvZiBhbGwgdGhlIHVucHJlZml4ZWQgY2FwcyB0aGF0IGFyZSBiZWluZyB1c2VkIGluICdhbHdheXNNYXRjaCcgYW5kIGFsbCBvZiB0aGUgJ2ZpcnN0TWF0Y2gnIG9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IGNhcHMgQSBjYXBhYmlsaXRpZXMgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIGZpbmROb25QcmVmaXhlZENhcHMgKHthbHdheXNNYXRjaCA9IHt9LCBmaXJzdE1hdGNoID0gW119KSB7XG4gIHJldHVybiBfLmNoYWluKFthbHdheXNNYXRjaCwgLi4uZmlyc3RNYXRjaF0pXG4gICAgLnJlZHVjZSgodW5wcmVmaXhlZENhcHMsIGNhcHMpID0+IFtcbiAgICAgIC4uLnVucHJlZml4ZWRDYXBzLFxuICAgICAgLi4uXyhjYXBzKS5rZXlzKCkuZmlsdGVyKChjYXApID0+ICFjYXAuaW5jbHVkZXMoJzonKSAmJiAhaXNTdGFuZGFyZENhcChjYXApKSxcbiAgICBdLCBbXSlcbiAgICAudW5pcSgpXG4gICAgLnZhbHVlKCk7XG59XG5cbi8vIFBhcnNlIGNhcGFiaWxpdGllcyAoYmFzZWQgb24gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jcHJvY2Vzc2luZy1jYXBhYmlsaXRpZXMpXG5mdW5jdGlvbiBwYXJzZUNhcHMgKGNhcHMsIGNvbnN0cmFpbnRzID0ge30sIHNob3VsZFZhbGlkYXRlQ2FwcyA9IHRydWUpIHtcbiAgLy8gSWYgY2FwYWJpbGl0aWVzIHJlcXVlc3QgaXMgbm90IGFuIG9iamVjdCwgcmV0dXJuIGVycm9yICgjMS4xKVxuICBpZiAoIV8uaXNQbGFpbk9iamVjdChjYXBzKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoJ1RoZSBjYXBhYmlsaXRpZXMgYXJndW1lbnQgd2FzIG5vdCB2YWxpZCBmb3IgdGhlIGZvbGxvd2luZyByZWFzb24ocyk6IFwiY2FwYWJpbGl0aWVzXCIgbXVzdCBiZSBhIEpTT04gb2JqZWN0LicpO1xuICB9XG5cbiAgLy8gTGV0ICdyZXF1aXJlZENhcHMnIGJlIHByb3BlcnR5IG5hbWVkICdhbHdheXNNYXRjaCcgZnJvbSBjYXBhYmlsaXRpZXMgcmVxdWVzdCAoIzIpXG4gIC8vIGFuZCAnYWxsRmlyc3RNYXRjaENhcHMnIGJlIHByb3BlcnR5IG5hbWVkICdmaXJzdE1hdGNoJyBmcm9tIGNhcGFiaWxpdGllcyByZXF1ZXN0ICgjMylcbiAgbGV0IHtcbiAgICBhbHdheXNNYXRjaDogcmVxdWlyZWRDYXBzID0ge30sIC8vIElmICdyZXF1aXJlZENhcHMnIGlzIHVuZGVmaW5lZCwgc2V0IGl0IHRvIGFuIGVtcHR5IEpTT04gb2JqZWN0ICgjMi4xKVxuICAgIGZpcnN0TWF0Y2g6IGFsbEZpcnN0TWF0Y2hDYXBzID0gW3t9XSwgLy8gSWYgJ2ZpcnN0TWF0Y2gnIGlzIHVuZGVmaW5lZCBzZXQgaXQgdG8gYSBzaW5nbGV0b24gbGlzdCB3aXRoIG9uZSBlbXB0eSBvYmplY3QgKCMzLjEpXG4gIH0gPSBjYXBzO1xuXG4gIC8vIFJlamVjdCAnZmlyc3RNYXRjaCcgYXJndW1lbnQgaWYgaXQncyBub3QgYW4gYXJyYXkgKCMzLjIpXG4gIGlmICghXy5pc0FycmF5KGFsbEZpcnN0TWF0Y2hDYXBzKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoJ1RoZSBjYXBhYmlsaXRpZXMuZmlyc3RNYXRjaCBhcmd1bWVudCB3YXMgbm90IHZhbGlkIGZvciB0aGUgZm9sbG93aW5nIHJlYXNvbihzKTogXCJjYXBhYmlsaXRpZXMuZmlyc3RNYXRjaFwiIG11c3QgYmUgYSBKU09OIGFycmF5IG9yIHVuZGVmaW5lZCcpO1xuICB9XG5cbiAgLy8gSWYgYW4gZW1wdHkgYXJyYXkgYXMgcHJvdmlkZWQsIHdlJ2xsIGJlIGZvcmdpdmluZyBhbmQgbWFrZSBpdCBhbiBhcnJheSBvZiBvbmUgZW1wdHkgb2JqZWN0XG4gIC8vIEluIHRoZSBmdXR1cmUsIHJlamVjdCAnZmlyc3RNYXRjaCcgYXJndW1lbnQgaWYgaXRzIGFycmF5IGRpZCBub3QgaGF2ZSBvbmUgb3IgbW9yZSBlbnRyaWVzICgjMy4yKVxuICBpZiAoYWxsRmlyc3RNYXRjaENhcHMubGVuZ3RoID09PSAwKSB7XG4gICAgbG9nLndhcm4oYFRoZSBmaXJzdE1hdGNoIGFycmF5IGluIHRoZSBnaXZlbiBjYXBhYmlsaXRpZXMgaGFzIG5vIGVudHJpZXMuIEFkZGluZyBhbiBlbXB0eSBlbnRyeSBmbyBybm93LCBgICtcbiAgICAgIGBidXQgaXQgd2lsbCByZXF1aXJlIG9uZSBvciBtb3JlIGVudHJpZXMgYXMgVzNDIHNwZWMuYCk7XG4gICAgYWxsRmlyc3RNYXRjaENhcHMucHVzaCh7fSk7XG4gIH1cblxuICAvLyBDaGVjayBmb3Igbm9uLXByZWZpeGVkLCBub24tc3RhbmRhcmQgY2FwYWJpbGl0aWVzIGFuZCBsb2cgd2FybmluZ3MgaWYgdGhleSBhcmUgZm91bmRcbiAgbGV0IG5vblByZWZpeGVkQ2FwcyA9IGZpbmROb25QcmVmaXhlZENhcHMoY2Fwcyk7XG4gIGlmICghXy5pc0VtcHR5KG5vblByZWZpeGVkQ2FwcykpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBBbGwgbm9uLXN0YW5kYXJkIGNhcGFiaWxpdGllcyBzaG91bGQgaGF2ZSBhIHZlbmRvciBwcmVmaXguIFRoZSBmb2xsb3dpbmcgY2FwYWJpbGl0aWVzIGRpZCBub3QgaGF2ZSBvbmU6ICR7bm9uUHJlZml4ZWRDYXBzfWApO1xuICB9XG5cbiAgLy8gU3RyaXAgb3V0IHRoZSAnYXBwaXVtOicgcHJlZml4IGZyb20gYWxsXG4gIHN0cmlwQXBwaXVtUHJlZml4ZXMocmVxdWlyZWRDYXBzKTtcbiAgZm9yIChsZXQgZmlyc3RNYXRjaENhcHMgb2YgYWxsRmlyc3RNYXRjaENhcHMpIHtcbiAgICBzdHJpcEFwcGl1bVByZWZpeGVzKGZpcnN0TWF0Y2hDYXBzKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIHRoZSByZXF1aXJlZENhcHMuIEJ1dCBkb24ndCB2YWxpZGF0ZSAncHJlc2VuY2UnIGJlY2F1c2UgaWYgdGhhdCBjb25zdHJhaW50IGZhaWxzIG9uICdhbHdheXNNYXRjaCcgaXQgY291bGQgc3RpbGwgcGFzcyBvbiBvbmUgb2YgdGhlICdmaXJzdE1hdGNoJyBrZXlzXG4gIGlmIChzaG91bGRWYWxpZGF0ZUNhcHMpIHtcbiAgICByZXF1aXJlZENhcHMgPSB2YWxpZGF0ZUNhcHMocmVxdWlyZWRDYXBzLCBjb25zdHJhaW50cywge3NraXBQcmVzZW5jZUNvbnN0cmFpbnQ6IHRydWV9KTtcbiAgfVxuXG5cbiAgLy8gUmVtb3ZlIHRoZSAncHJlc2VuY2UnIGNvbnN0cmFpbnQgZm9yIGFueSBrZXlzIHRoYXQgYXJlIGFscmVhZHkgcHJlc2VudCBpbiAncmVxdWlyZWRDYXBzJ1xuICAvLyBzaW5jZSB3ZSBrbm93IHRoYXQgdGhpcyBjb25zdHJhaW50IGhhcyBhbHJlYWR5IHBhc3NlZFxuICBsZXQgZmlsdGVyZWRDb25zdHJhaW50cyA9IHsuLi5jb25zdHJhaW50c307XG4gIGxldCByZXF1aXJlZENhcHNLZXlzID0gXy5rZXlzKHJlcXVpcmVkQ2Fwcyk7XG4gIGZvciAobGV0IGtleSBvZiBfLmtleXMoZmlsdGVyZWRDb25zdHJhaW50cykpIHtcbiAgICBpZiAocmVxdWlyZWRDYXBzS2V5cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICBkZWxldGUgZmlsdGVyZWRDb25zdHJhaW50c1trZXldO1xuICAgIH1cbiAgfVxuXG4gIC8vIFZhbGlkYXRlIGFsbCBvZiB0aGUgZmlyc3QgbWF0Y2ggY2FwYWJpbGl0aWVzIGFuZCByZXR1cm4gYW4gYXJyYXkgd2l0aCBvbmx5IHRoZSB2YWxpZCBjYXBzIChzZWUgc3BlYyAjNSlcbiAgbGV0IHZhbGlkYXRpb25FcnJvcnMgPSBbXTtcbiAgbGV0IHZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzID0gYWxsRmlyc3RNYXRjaENhcHMubWFwKChmaXJzdE1hdGNoQ2FwcykgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBWYWxpZGF0ZSBmaXJzdE1hdGNoIGNhcHNcbiAgICAgIHJldHVybiBzaG91bGRWYWxpZGF0ZUNhcHMgPyB2YWxpZGF0ZUNhcHMoZmlyc3RNYXRjaENhcHMsIGZpbHRlcmVkQ29uc3RyYWludHMpIDogZmlyc3RNYXRjaENhcHM7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKGUubWVzc2FnZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0pLmZpbHRlcigoY2FwcykgPT4gIV8uaXNOdWxsKGNhcHMpKTtcblxuICAvLyBUcnkgdG8gbWVyZ2UgcmVxdWlyZWRDYXBzIHdpdGggZmlyc3QgbWF0Y2ggY2FwYWJpbGl0aWVzLCBicmVhayBvbmNlIGl0IGZpbmRzIGl0cyBmaXJzdCBtYXRjaCAoc2VlIHNwZWMgIzYpXG4gIGxldCBtYXRjaGVkQ2FwcyA9IG51bGw7XG4gIGZvciAobGV0IGZpcnN0TWF0Y2hDYXBzIG9mIHZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzKSB7XG4gICAgdHJ5IHtcbiAgICAgIG1hdGNoZWRDYXBzID0gbWVyZ2VDYXBzKHJlcXVpcmVkQ2FwcywgZmlyc3RNYXRjaENhcHMpO1xuICAgICAgaWYgKG1hdGNoZWRDYXBzKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLndhcm4oZXJyLm1lc3NhZ2UpO1xuICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKGVyci5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm5zIHZhcmlhYmxlcyBmb3IgdGVzdGluZyBwdXJwb3Nlc1xuICByZXR1cm4ge3JlcXVpcmVkQ2FwcywgYWxsRmlyc3RNYXRjaENhcHMsIHZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzLCBtYXRjaGVkQ2FwcywgdmFsaWRhdGlvbkVycm9yc307XG59XG5cbi8vIENhbGxzIHBhcnNlQ2FwcyBhbmQganVzdCByZXR1cm5zIHRoZSBtYXRjaGVkQ2FwcyB2YXJpYWJsZVxuZnVuY3Rpb24gcHJvY2Vzc0NhcGFiaWxpdGllcyAoY2FwcywgY29uc3RyYWludHMgPSB7fSwgc2hvdWxkVmFsaWRhdGVDYXBzID0gdHJ1ZSkge1xuICBjb25zdCB7bWF0Y2hlZENhcHMsIHZhbGlkYXRpb25FcnJvcnN9ID0gcGFyc2VDYXBzKGNhcHMsIGNvbnN0cmFpbnRzLCBzaG91bGRWYWxpZGF0ZUNhcHMpO1xuXG4gIC8vIElmIHdlIGZvdW5kIGFuIGVycm9yIHRocm93IGFuIGV4Y2VwdGlvblxuICBpZiAoIXV0aWwuaGFzVmFsdWUobWF0Y2hlZENhcHMpKSB7XG4gICAgaWYgKF8uaXNBcnJheShjYXBzLmZpcnN0TWF0Y2gpICYmIGNhcHMuZmlyc3RNYXRjaC5sZW5ndGggPiAxKSB7XG4gICAgICAvLyBJZiB0aGVyZSB3YXMgbW9yZSB0aGFuIG9uZSAnZmlyc3RNYXRjaCcgY2FwLCBpbmRpY2F0ZSB0aGF0IHdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaGluZyBjYXBhYmlsaXRpZXMgc2V0IGFuZCBzaG93IGFsbCB0aGUgZXJyb3JzXG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBDb3VsZCBub3QgZmluZCBtYXRjaGluZyBjYXBhYmlsaXRpZXMgZnJvbSAke0pTT04uc3RyaW5naWZ5KGNhcHMpfTpcXG4gJHt2YWxpZGF0aW9uRXJyb3JzLmpvaW4oJ1xcbicpfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2UsIGp1c3Qgc2hvdyB0aGUgc2luZ3VsYXIgZXJyb3IgbWVzc2FnZVxuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcih2YWxpZGF0aW9uRXJyb3JzWzBdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWF0Y2hlZENhcHM7XG59XG5cbi8qKlxuICogUmV0dXJuIGEgY29weSBvZiBhIGNhcGFiaWxpdGllcyBvYmplY3Qgd2hpY2ggaGFzIHRha2VuIGV2ZXJ5dGhpbmcgd2l0aGluIHRoZSAnb3B0aW9ucydcbiAqIGNhcGFiaWxpdHkgYW5kIHByb21vdGVkIGl0IHRvIHRoZSB0b3AgbGV2ZWwuIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGFzc3VtZWQgdG8gYmUgcnVuIGFmdGVyXG4gKiBhbGwgdmVuZG9yIHByZWZpeGVzIGhhdmUgYWxyZWFkeSBiZWVuIHN0cmlwcGVkIGZyb20gdGhlIHRvcCBsZXZlbC4gU28gd2UgYXJlIGRlYWxpbmcgd2l0aCBlLmcuXG4gKiAnb3B0aW9ucycgYW5kIG5vdCAnYXBwaXVtOm9wdGlvbnMnIGF0IHRoaXMgcG9pbnQuIEFueSBwcmVmaXhlcyBfaW5zaWRlXyB0aGUgJ29wdGlvbnMnIGNhcGFiaWxpdHlcbiAqIHdpbGwgdGhlbXNlbHZlcyBiZSBzdHJpcHBlZC4gVGhpcyBpcyBkZXNpZ25lZCBhcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgbm90IG9uZSB0byBvcGVyYXRlIG9uXG4gKiB1c2VyLWNvbnN0cnVjdGVkIGNhcGFiaWxpdGllcy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb3JpZ2luYWxDYXBzIC0gdGhlIGNhcGFiaWxpdGllcyB0byBhbmFseXplIGFuZCBwcm9tb3RlIGZyb20gJ29wdGlvbnMnXG4gKiBAcmV0dXJuIHtvYmplY3R9IC0gdGhlIGNhcGFiaWxpdGllcyB3aXRoICdvcHRpb25zJyBwcm9tb3RlZCBpZiBuZWNlc3NhcnlcbiAqL1xuZnVuY3Rpb24gcHJvbW90ZUFwcGl1bU9wdGlvbnMgKG9yaWdpbmFsQ2Fwcykge1xuICBjb25zdCBhcHBpdW1PcHRpb25zID0gb3JpZ2luYWxDYXBzW0FQUElVTV9PUFRTX0NBUF07XG4gIGlmICghYXBwaXVtT3B0aW9ucykge1xuICAgIHJldHVybiBvcmlnaW5hbENhcHM7XG4gIH1cblxuICBsZXQgY2FwcyA9IF8uY2xvbmVEZWVwKG9yaWdpbmFsQ2Fwcyk7XG4gIGlmICghXy5pc1BsYWluT2JqZWN0KGFwcGl1bU9wdGlvbnMpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5TZXNzaW9uTm90Q3JlYXRlZEVycm9yKGBUaGUgJHtBUFBJVU1fT1BUU19DQVB9IGNhcGFiaWxpdHkgbXVzdCBiZSBhbiBvYmplY3RgKTtcbiAgfVxuXG4gIC8vIGZpcnN0IGdldCByaWQgb2YgYW55IHByZWZpeGVzIGluc2lkZSBhcHBpdW06b3B0aW9uc1xuICBzdHJpcEFwcGl1bVByZWZpeGVzKGFwcGl1bU9wdGlvbnMpO1xuXG4gIC8vIHdhcm4gaWYgd2UgYXJlIGdvaW5nIHRvIG92ZXJ3cml0ZSBhbnkga2V5cyBvbiB0aGUgYmFzZSBjYXBzIG9iamVjdFxuICBjb25zdCBvdmVyd3JpdHRlbktleXMgPSBfLmludGVyc2VjdGlvbihPYmplY3Qua2V5cyhjYXBzKSwgT2JqZWN0LmtleXMoYXBwaXVtT3B0aW9ucykpO1xuICBpZiAob3ZlcndyaXR0ZW5LZXlzLmxlbmd0aCA+IDApIHtcbiAgICBsb2cud2FybihgRm91bmQgY2FwYWJpbGl0aWVzIGluc2lkZSAke1BSRUZJWEVEX0FQUElVTV9PUFRTX0NBUH0gdGhhdCB3aWxsIG92ZXJ3cml0ZSBgICtcbiAgICAgICAgICAgICBgY2FwYWJpbGl0aWVzIGF0IHRoZSB0b3AgbGV2ZWw6ICR7SlNPTi5zdHJpbmdpZnkob3ZlcndyaXR0ZW5LZXlzKX1gKTtcbiAgfVxuXG4gIC8vIG5vdyBqdXN0IGFwcGx5IHRoZW0gdG8gdGhlIG1haW4gY2FwcyBvYmplY3RcbiAgY2FwcyA9IHsuLi5jYXBzLCAuLi5hcHBpdW1PcHRpb25zfTtcblxuICAvLyBhbmQgcmVtb3ZlIGFsbCB0cmFjZXMgb2YgdGhlIG9wdGlvbnMgY2FwXG4gIGRlbGV0ZSBjYXBzW0FQUElVTV9PUFRTX0NBUF07XG4gIHJldHVybiBjYXBzO1xufVxuXG5cbmV4cG9ydCB7XG4gIHBhcnNlQ2FwcywgcHJvY2Vzc0NhcGFiaWxpdGllcywgdmFsaWRhdGVDYXBzLCBtZXJnZUNhcHMsIEFQUElVTV9WRU5ET1JfUFJFRklYLCBBUFBJVU1fT1BUU19DQVAsXG4gIGZpbmROb25QcmVmaXhlZENhcHMsIGlzU3RhbmRhcmRDYXAsIHN0cmlwQXBwaXVtUHJlZml4ZXMsIHByb21vdGVBcHBpdW1PcHRpb25zLCBQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVAsXG59O1xuIl19
|
|
258
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2NhcGFiaWxpdGllcy5qcyJdLCJuYW1lcyI6WyJBUFBJVU1fVkVORE9SX1BSRUZJWCIsIkFQUElVTV9PUFRTX0NBUCIsIlBSRUZJWEVEX0FQUElVTV9PUFRTX0NBUCIsIm1lcmdlQ2FwcyIsInByaW1hcnkiLCJzZWNvbmRhcnkiLCJyZXN1bHQiLCJPYmplY3QiLCJhc3NpZ24iLCJuYW1lIiwidmFsdWUiLCJfIiwidG9QYWlycyIsImlzVW5kZWZpbmVkIiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJKU09OIiwic3RyaW5naWZ5IiwidmFsaWRhdGVDYXBzIiwiY2FwcyIsImNvbnN0cmFpbnRzIiwib3B0cyIsInNraXBQcmVzZW5jZUNvbnN0cmFpbnQiLCJpc1BsYWluT2JqZWN0IiwiY2xvbmVEZWVwIiwia2V5Iiwia2V5cyIsInByZXNlbmNlIiwidmFsaWRhdGlvbkVycm9ycyIsInZhbGlkYXRvciIsInZhbGlkYXRlIiwicGlja0J5IiwidXRpbCIsImhhc1ZhbHVlIiwiZnVsbE1lc3NhZ2VzIiwibWVzc2FnZSIsImF0dHJpYnV0ZSIsInJlYXNvbnMiLCJyZWFzb24iLCJwdXNoIiwiam9pbiIsIlNUQU5EQVJEX0NBUFMiLCJpc1N0YW5kYXJkQ2FwIiwiY2FwIiwiZmluZCIsInN0YW5kYXJkQ2FwIiwidG9Mb3dlckNhc2UiLCJzdHJpcEFwcGl1bVByZWZpeGVzIiwicHJlZml4IiwicHJlZml4ZWRDYXBzIiwiZmlsdGVyIiwic3RhcnRzV2l0aCIsImJhZFByZWZpeGVkQ2FwcyIsInByZWZpeGVkQ2FwIiwic3RyaXBwZWRDYXBOYW1lIiwic3Vic3RyIiwibGVuZ3RoIiwiaXNOaWwiLCJsb2ciLCJ3YXJuIiwiZmluZE5vblByZWZpeGVkQ2FwcyIsImFsd2F5c01hdGNoIiwiZmlyc3RNYXRjaCIsImNoYWluIiwicmVkdWNlIiwidW5wcmVmaXhlZENhcHMiLCJpbmNsdWRlcyIsInVuaXEiLCJwYXJzZUNhcHMiLCJzaG91bGRWYWxpZGF0ZUNhcHMiLCJyZXF1aXJlZENhcHMiLCJhbGxGaXJzdE1hdGNoQ2FwcyIsImlzQXJyYXkiLCJub25QcmVmaXhlZENhcHMiLCJpc0VtcHR5IiwiZmlyc3RNYXRjaENhcHMiLCJmaWx0ZXJlZENvbnN0cmFpbnRzIiwicmVxdWlyZWRDYXBzS2V5cyIsInZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzIiwiY29tcGFjdCIsIm1hcCIsImUiLCJtYXRjaGVkQ2FwcyIsImVyciIsInByb2Nlc3NDYXBhYmlsaXRpZXMiLCJ3M2NDYXBzIiwicHJvbW90ZUFwcGl1bU9wdGlvbnMiLCJvcmlnaW5hbENhcHMiLCJhcHBpdW1PcHRpb25zIiwiU2Vzc2lvbk5vdENyZWF0ZWRFcnJvciIsIm92ZXJ3cml0dGVuS2V5cyIsImludGVyc2VjdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLG9CQUFvQixHQUFHLFNBQTdCOztBQUNBLE1BQU1DLGVBQWUsR0FBRyxTQUF4Qjs7QUFDQSxNQUFNQyx3QkFBd0IsR0FBSSxHQUFFRixvQkFBcUIsR0FBRUMsZUFBZ0IsRUFBM0U7OztBQVNBLFNBQVNFLFNBQVQsQ0FBb0JDLE9BQU8sR0FBRyxFQUE5QixFQUFrQ0MsU0FBUyxHQUFHLEVBQTlDLEVBQWtEO0FBQ2hELE1BQUlDLE1BQU0sR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQkosT0FBbEIsQ0FBYjs7QUFFQSxPQUFLLElBQUksQ0FBQ0ssSUFBRCxFQUFPQyxLQUFQLENBQVQsSUFBMEJDLGdCQUFFQyxPQUFGLENBQVVQLFNBQVYsQ0FBMUIsRUFBZ0Q7QUFFOUMsUUFBSSxDQUFDTSxnQkFBRUUsV0FBRixDQUFjVCxPQUFPLENBQUNLLElBQUQsQ0FBckIsQ0FBTCxFQUFtQztBQUNqQyxZQUFNLElBQUlLLGVBQU9DLG9CQUFYLENBQWlDLGFBQVlOLElBQUssdUNBQXNDTyxJQUFJLENBQUNDLFNBQUwsQ0FB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YUQsU0FBU0ksb0JBQVQsQ0FBK0JDLFlBQS9CLEVBQTZDO0FBQzNDLFFBQU1DLGFBQWEsR0FBR0QsWUFBWSxDQUFDdEYsZUFBRCxDQUFsQzs7QUFDQSxNQUFJLENBQUN1RixhQUFMLEVBQW9CO0FBQ2xCLFdBQU9ELFlBQVA7QUFDRDs7QUFFRCxNQUFJcEUsSUFBSSxHQUFHUixnQkFBRWEsU0FBRixDQUFZK0QsWUFBWixDQUFYOztBQUNBLE1BQUksQ0FBQzVFLGdCQUFFWSxhQUFGLENBQWdCaUUsYUFBaEIsQ0FBTCxFQUFxQztBQUNuQyxVQUFNLElBQUkxRSxlQUFPMkUsc0JBQVgsQ0FBbUMsT0FBTXhGLGVBQWdCLCtCQUF6RCxDQUFOO0FBQ0Q7O0FBR0Q4QyxFQUFBQSxtQkFBbUIsQ0FBQ3lDLGFBQUQsQ0FBbkI7O0FBR0EsUUFBTUUsZUFBZSxHQUFHL0UsZ0JBQUVnRixZQUFGLENBQWVwRixNQUFNLENBQUNtQixJQUFQLENBQVlQLElBQVosQ0FBZixFQUFrQ1osTUFBTSxDQUFDbUIsSUFBUCxDQUFZOEQsYUFBWixDQUFsQyxDQUF4Qjs7QUFDQSxNQUFJRSxlQUFlLENBQUNsQyxNQUFoQixHQUF5QixDQUE3QixFQUFnQztBQUM5QkUsb0JBQUlDLElBQUosQ0FBVSw2QkFBNEJ6RCx3QkFBeUIsdUJBQXRELEdBQ0Msa0NBQWlDYyxJQUFJLENBQUNDLFNBQUwsQ0FBZXlFLGVBQWYsQ0FBZ0MsRUFEM0U7QUFFRDs7QUFHRHZFLEVBQUFBLElBQUksR0FBRyxFQUFDLEdBQUdBLElBQUo7QUFBVSxPQUFHcUU7QUFBYixHQUFQO0FBR0EsU0FBT3JFLElBQUksQ0FBQ2xCLGVBQUQsQ0FBWDtBQUNBLFNBQU9rQixJQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHZhbGlkYXRvciB9IGZyb20gJy4vZGVzaXJlZC1jYXBzJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICcuLi9wcm90b2NvbC9lcnJvcnMnO1xuXG5jb25zdCBBUFBJVU1fVkVORE9SX1BSRUZJWCA9ICdhcHBpdW06JztcbmNvbnN0IEFQUElVTV9PUFRTX0NBUCA9ICdvcHRpb25zJztcbmNvbnN0IFBSRUZJWEVEX0FQUElVTV9PUFRTX0NBUCA9IGAke0FQUElVTV9WRU5ET1JfUFJFRklYfSR7QVBQSVVNX09QVFNfQ0FQfWA7XG5cbi8vIFRha2VzIHByaW1hcnkgY2FwcyBvYmplY3QgYW5kIG1lcmdlcyBpdCBpbnRvIGEgc2Vjb25kYXJ5IGNhcHMgb2JqZWN0LlxuLy8gKHNlZSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNkZm4tbWVyZ2luZy1jYXBhYmlsaXRpZXMpXG4vKipcbiAqIEBwYXJhbSB7Q2FwYWJpbGl0aWVzfSBbcHJpbWFyeV1cbiAqIEBwYXJhbSB7Q2FwYWJpbGl0aWVzfSBbc2Vjb25kYXJ5XVxuICogQHJldHVybnMge0NhcGFiaWxpdGllc31cbiAqL1xuZnVuY3Rpb24gbWVyZ2VDYXBzIChwcmltYXJ5ID0ge30sIHNlY29uZGFyeSA9IHt9KSB7XG4gIGxldCByZXN1bHQgPSBPYmplY3QuYXNzaWduKHt9LCBwcmltYXJ5KTtcblxuICBmb3IgKGxldCBbbmFtZSwgdmFsdWVdIG9mIF8udG9QYWlycyhzZWNvbmRhcnkpKSB7XG4gICAgLy8gT3ZlcndyaXRpbmcgaXMgbm90IGFsbG93ZWQuIFByaW1hcnkgYW5kIHNlY29uZGFyeSBtdXN0IGhhdmUgZGlmZmVyZW50IHByb3BlcnRpZXMgKHczYyBydWxlIDQuNClcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocHJpbWFyeVtuYW1lXSkpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYHByb3BlcnR5ICcke25hbWV9JyBzaG91bGQgbm90IGV4aXN0IG9uIGJvdGggcHJpbWFyeSAoJHtKU09OLnN0cmluZ2lmeShwcmltYXJ5KX0pIGFuZCBzZWNvbmRhcnkgKCR7SlNPTi5zdHJpbmdpZnkoc2Vjb25kYXJ5KX0pIG9iamVjdGApO1xuICAgIH1cbiAgICByZXN1bHRbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIFZhbGlkYXRlcyBjYXBzIGFnYWluc3QgYSBzZXQgb2YgY29uc3RyYWludHNcbi8qKlxuICpcbiAqIEBwYXJhbSB7Q2FwYWJpbGl0aWVzfSBjYXBzXG4gKiBAcGFyYW0ge0NvbnN0cmFpbnRzfSBbY29uc3RyYWludHNdXG4gKiBAcGFyYW0ge1ZhbGlkYXRlQ2Fwc09wdHN9IFtvcHRzXVxuICogQHJldHVybnMge0NhcGFiaWxpdGllc31cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVDYXBzIChjYXBzLCBjb25zdHJhaW50cyA9IHt9LCBvcHRzID0ge30pIHtcblxuICBsZXQge3NraXBQcmVzZW5jZUNvbnN0cmFpbnR9ID0gb3B0cztcblxuICBpZiAoIV8uaXNQbGFpbk9iamVjdChjYXBzKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYG11c3QgYmUgYSBKU09OIG9iamVjdGApO1xuICB9XG5cbiAgY29uc3RyYWludHMgPSBfLmNsb25lRGVlcChjb25zdHJhaW50cyk7IC8vIERlZmVuc2l2ZSBjb3B5XG5cbiAgaWYgKHNraXBQcmVzZW5jZUNvbnN0cmFpbnQpIHtcbiAgICAvLyBSZW1vdmUgdGhlICdwcmVzZW5jZScgY29uc3RyYWludCBpZiB3ZSdyZSBub3QgY2hlY2tpbmcgZm9yIGl0XG4gICAgZm9yIChsZXQga2V5IG9mIF8ua2V5cyhjb25zdHJhaW50cykpIHtcbiAgICAgIGRlbGV0ZSBjb25zdHJhaW50c1trZXldLnByZXNlbmNlO1xuICAgIH1cbiAgfVxuXG4gIGxldCB2YWxpZGF0aW9uRXJyb3JzID0gdmFsaWRhdG9yLnZhbGlkYXRlKF8ucGlja0J5KGNhcHMsIHV0aWwuaGFzVmFsdWUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmdWxsTWVzc2FnZXM6IGZhbHNlfSk7XG5cbiAgaWYgKHZhbGlkYXRpb25FcnJvcnMpIHtcbiAgICBsZXQgbWVzc2FnZSA9IFtdO1xuICAgIGZvciAobGV0IFthdHRyaWJ1dGUsIHJlYXNvbnNdIG9mIF8udG9QYWlycyh2YWxpZGF0aW9uRXJyb3JzKSkge1xuICAgICAgZm9yIChsZXQgcmVhc29uIG9mIHJlYXNvbnMpIHtcbiAgICAgICAgbWVzc2FnZS5wdXNoKGAnJHthdHRyaWJ1dGV9JyAke3JlYXNvbn1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihtZXNzYWdlLmpvaW4oJzsgJykpO1xuICB9XG5cbiAgLy8gUmV0dXJuIGNhcHNcbiAgcmV0dXJuIGNhcHM7XG59XG5cbi8vIFN0YW5kYXJkLCBub24tcHJlZml4ZWQgY2FwYWJpbGl0aWVzIChzZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZGZuLXRhYmxlLW9mLXN0YW5kYXJkLWNhcGFiaWxpdGllcylcbmNvbnN0IFNUQU5EQVJEX0NBUFMgPSBbXG4gICdicm93c2VyTmFtZScsXG4gICdicm93c2VyVmVyc2lvbicsXG4gICdwbGF0Zm9ybU5hbWUnLFxuICAnYWNjZXB0SW5zZWN1cmVDZXJ0cycsXG4gICdwYWdlTG9hZFN0cmF0ZWd5JyxcbiAgJ3Byb3h5JyxcbiAgJ3NldFdpbmRvd1JlY3QnLFxuICAndGltZW91dHMnLFxuICAndW5oYW5kbGVkUHJvbXB0QmVoYXZpb3InXG5dO1xuXG5mdW5jdGlvbiBpc1N0YW5kYXJkQ2FwIChjYXApIHtcbiAgcmV0dXJuICEhXy5maW5kKFNUQU5EQVJEX0NBUFMsIChzdGFuZGFyZENhcCkgPT4gc3RhbmRhcmRDYXAudG9Mb3dlckNhc2UoKSA9PT0gYCR7Y2FwfWAudG9Mb3dlckNhc2UoKSk7XG59XG5cbi8vIElmIHRoZSAnYXBwaXVtOicgcHJlZml4IHdhcyBwcm92aWRlZCBhbmQgaXQncyBhIHZhbGlkIGNhcGFiaWxpdHksIHN0cmlwIG91dCB0aGUgcHJlZml4IChzZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZGZuLWV4dGVuc2lvbi1jYXBhYmlsaXRpZXMpXG4vLyAoTk9URTogTWV0aG9kIGlzIGRlc3RydWN0aXZlIGFuZCBtdXRhdGVzIGNvbnRlbnRzIG9mIGNhcHMpXG5mdW5jdGlvbiBzdHJpcEFwcGl1bVByZWZpeGVzIChjYXBzKSB7XG4gIGNvbnN0IHByZWZpeCA9ICdhcHBpdW06JztcbiAgY29uc3QgcHJlZml4ZWRDYXBzID0gXy5maWx0ZXIoXy5rZXlzKGNhcHMpLCAoY2FwKSA9PiBgJHtjYXB9YC5zdGFydHNXaXRoKHByZWZpeCkpO1xuICBjb25zdCBiYWRQcmVmaXhlZENhcHMgPSBbXTtcblxuICAvLyBTdHJpcCBvdXQgdGhlICdhcHBpdW06JyBwcmVmaXhcbiAgZm9yIChsZXQgcHJlZml4ZWRDYXAgb2YgcHJlZml4ZWRDYXBzKSB7XG4gICAgY29uc3Qgc3RyaXBwZWRDYXBOYW1lID0gcHJlZml4ZWRDYXAuc3Vic3RyKHByZWZpeC5sZW5ndGgpO1xuXG4gICAgLy8gSWYgaXQncyBzdGFuZGFyZCBjYXBhYmlsaXR5IHRoYXQgd2FzIHByZWZpeGVkLCBhZGQgaXQgdG8gYW4gYXJyYXkgb2YgaW5jb3JyZWN0bHkgcHJlZml4ZWQgY2FwYWJpbGl0aWVzXG4gICAgaWYgKGlzU3RhbmRhcmRDYXAoc3RyaXBwZWRDYXBOYW1lKSkge1xuICAgICAgYmFkUHJlZml4ZWRDYXBzLnB1c2goc3RyaXBwZWRDYXBOYW1lKTtcbiAgICAgIGlmIChfLmlzTmlsKGNhcHNbc3RyaXBwZWRDYXBOYW1lXSkpIHtcbiAgICAgICAgY2Fwc1tzdHJpcHBlZENhcE5hbWVdID0gY2Fwc1twcmVmaXhlZENhcF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2cud2FybihgSWdub3JpbmcgY2FwYWJpbGl0eSAnJHtwcmVmaXhlZENhcH09JHtjYXBzW3ByZWZpeGVkQ2FwXX0nIGFuZCBgICtcbiAgICAgICAgICBgdXNpbmcgY2FwYWJpbGl0eSAnJHtzdHJpcHBlZENhcE5hbWV9PSR7Y2Fwc1tzdHJpcHBlZENhcE5hbWVdfSdgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY2Fwc1tzdHJpcHBlZENhcE5hbWVdID0gY2Fwc1twcmVmaXhlZENhcF07XG4gICAgfVxuXG4gICAgLy8gU3RyaXAgb3V0IHRoZSBwcmVmaXhcbiAgICBkZWxldGUgY2Fwc1twcmVmaXhlZENhcF07XG4gIH1cblxuICAvLyBJZiB3ZSBmb3VuZCBzdGFuZGFyZCBjYXBzIHRoYXQgd2VyZSBpbmNvcnJlY3RseSBwcmVmaXhlZCwgdGhyb3cgYW4gZXhjZXB0aW9uIChlLmcuOiBkb24ndCBhY2NlcHQgJ2FwcGl1bTpwbGF0Zm9ybU5hbWUnLCBvbmx5IGFjY2VwdCBqdXN0ICdwbGF0Zm9ybU5hbWUnKVxuICBpZiAoYmFkUHJlZml4ZWRDYXBzLmxlbmd0aCA+IDApIHtcbiAgICBsb2cud2FybihgVGhlIGNhcGFiaWxpdGllcyAke0pTT04uc3RyaW5naWZ5KGJhZFByZWZpeGVkQ2Fwcyl9IGFyZSBzdGFuZGFyZCBjYXBhYmlsaXRpZXMgYW5kIGRvIG5vdCByZXF1aXJlIFwiYXBwaXVtOlwiIHByZWZpeGApO1xuICB9XG59XG5cbi8qKlxuICogR2V0IGFuIGFycmF5IG9mIGFsbCB0aGUgdW5wcmVmaXhlZCBjYXBzIHRoYXQgYXJlIGJlaW5nIHVzZWQgaW4gJ2Fsd2F5c01hdGNoJyBhbmQgYWxsIG9mIHRoZSAnZmlyc3RNYXRjaCcgb2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gY2FwcyBBIGNhcGFiaWxpdGllcyBvYmplY3RcbiAqL1xuZnVuY3Rpb24gZmluZE5vblByZWZpeGVkQ2FwcyAoe2Fsd2F5c01hdGNoID0ge30sIGZpcnN0TWF0Y2ggPSBbXX0pIHtcbiAgcmV0dXJuIF8uY2hhaW4oW2Fsd2F5c01hdGNoLCAuLi5maXJzdE1hdGNoXSlcbiAgICAucmVkdWNlKCh1bnByZWZpeGVkQ2FwcywgY2FwcykgPT4gW1xuICAgICAgLi4udW5wcmVmaXhlZENhcHMsXG4gICAgICAuLi5PYmplY3Qua2V5cyhjYXBzKS5maWx0ZXIoKGNhcCkgPT4gIWNhcC5pbmNsdWRlcygnOicpICYmICFpc1N0YW5kYXJkQ2FwKGNhcCkpLFxuICAgIF0sIFtdKVxuICAgIC51bmlxKClcbiAgICAudmFsdWUoKTtcbn1cblxuLy8gUGFyc2UgY2FwYWJpbGl0aWVzIChiYXNlZCBvbiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNwcm9jZXNzaW5nLWNhcGFiaWxpdGllcylcbi8qKlxuICpcbiAqIEBwYXJhbSB7VzNDQ2FwYWJpbGl0aWVzfSBjYXBzXG4gKiBAcGFyYW0ge0NvbnN0cmFpbnRzfSBbY29uc3RyYWludHNdXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtzaG91bGRWYWxpZGF0ZUNhcHNdXG4gKiBAcmV0dXJuc1xuICovXG5mdW5jdGlvbiBwYXJzZUNhcHMgKGNhcHMsIGNvbnN0cmFpbnRzID0ge30sIHNob3VsZFZhbGlkYXRlQ2FwcyA9IHRydWUpIHtcbiAgLy8gSWYgY2FwYWJpbGl0aWVzIHJlcXVlc3QgaXMgbm90IGFuIG9iamVjdCwgcmV0dXJuIGVycm9yICgjMS4xKVxuICBpZiAoIV8uaXNQbGFpbk9iamVjdChjYXBzKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoJ1RoZSBjYXBhYmlsaXRpZXMgYXJndW1lbnQgd2FzIG5vdCB2YWxpZCBmb3IgdGhlIGZvbGxvd2luZyByZWFzb24ocyk6IFwiY2FwYWJpbGl0aWVzXCIgbXVzdCBiZSBhIEpTT04gb2JqZWN0LicpO1xuICB9XG5cbiAgLy8gTGV0ICdyZXF1aXJlZENhcHMnIGJlIHByb3BlcnR5IG5hbWVkICdhbHdheXNNYXRjaCcgZnJvbSBjYXBhYmlsaXRpZXMgcmVxdWVzdCAoIzIpXG4gIC8vIGFuZCAnYWxsRmlyc3RNYXRjaENhcHMnIGJlIHByb3BlcnR5IG5hbWVkICdmaXJzdE1hdGNoJyBmcm9tIGNhcGFiaWxpdGllcyByZXF1ZXN0ICgjMylcbiAgbGV0IHtcbiAgICBhbHdheXNNYXRjaDogcmVxdWlyZWRDYXBzID0ge30sIC8vIElmICdyZXF1aXJlZENhcHMnIGlzIHVuZGVmaW5lZCwgc2V0IGl0IHRvIGFuIGVtcHR5IEpTT04gb2JqZWN0ICgjMi4xKVxuICAgIGZpcnN0TWF0Y2g6IGFsbEZpcnN0TWF0Y2hDYXBzID0gW3t9XSwgLy8gSWYgJ2ZpcnN0TWF0Y2gnIGlzIHVuZGVmaW5lZCBzZXQgaXQgdG8gYSBzaW5nbGV0b24gbGlzdCB3aXRoIG9uZSBlbXB0eSBvYmplY3QgKCMzLjEpXG4gIH0gPSBjYXBzO1xuXG4gIC8vIFJlamVjdCAnZmlyc3RNYXRjaCcgYXJndW1lbnQgaWYgaXQncyBub3QgYW4gYXJyYXkgKCMzLjIpXG4gIGlmICghXy5pc0FycmF5KGFsbEZpcnN0TWF0Y2hDYXBzKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoJ1RoZSBjYXBhYmlsaXRpZXMuZmlyc3RNYXRjaCBhcmd1bWVudCB3YXMgbm90IHZhbGlkIGZvciB0aGUgZm9sbG93aW5nIHJlYXNvbihzKTogXCJjYXBhYmlsaXRpZXMuZmlyc3RNYXRjaFwiIG11c3QgYmUgYSBKU09OIGFycmF5IG9yIHVuZGVmaW5lZCcpO1xuICB9XG5cbiAgLy8gSWYgYW4gZW1wdHkgYXJyYXkgYXMgcHJvdmlkZWQsIHdlJ2xsIGJlIGZvcmdpdmluZyBhbmQgbWFrZSBpdCBhbiBhcnJheSBvZiBvbmUgZW1wdHkgb2JqZWN0XG4gIC8vIEluIHRoZSBmdXR1cmUsIHJlamVjdCAnZmlyc3RNYXRjaCcgYXJndW1lbnQgaWYgaXRzIGFycmF5IGRpZCBub3QgaGF2ZSBvbmUgb3IgbW9yZSBlbnRyaWVzICgjMy4yKVxuICBpZiAoYWxsRmlyc3RNYXRjaENhcHMubGVuZ3RoID09PSAwKSB7XG4gICAgbG9nLndhcm4oYFRoZSBmaXJzdE1hdGNoIGFycmF5IGluIHRoZSBnaXZlbiBjYXBhYmlsaXRpZXMgaGFzIG5vIGVudHJpZXMuIEFkZGluZyBhbiBlbXB0eSBlbnRyeSBmbyBybm93LCBgICtcbiAgICAgIGBidXQgaXQgd2lsbCByZXF1aXJlIG9uZSBvciBtb3JlIGVudHJpZXMgYXMgVzNDIHNwZWMuYCk7XG4gICAgYWxsRmlyc3RNYXRjaENhcHMucHVzaCh7fSk7XG4gIH1cblxuICAvLyBDaGVjayBmb3Igbm9uLXByZWZpeGVkLCBub24tc3RhbmRhcmQgY2FwYWJpbGl0aWVzIGFuZCBsb2cgd2FybmluZ3MgaWYgdGhleSBhcmUgZm91bmRcbiAgbGV0IG5vblByZWZpeGVkQ2FwcyA9IGZpbmROb25QcmVmaXhlZENhcHMoY2Fwcyk7XG4gIGlmICghXy5pc0VtcHR5KG5vblByZWZpeGVkQ2FwcykpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBBbGwgbm9uLXN0YW5kYXJkIGNhcGFiaWxpdGllcyBzaG91bGQgaGF2ZSBhIHZlbmRvciBwcmVmaXguIFRoZSBmb2xsb3dpbmcgY2FwYWJpbGl0aWVzIGRpZCBub3QgaGF2ZSBvbmU6ICR7bm9uUHJlZml4ZWRDYXBzfWApO1xuICB9XG5cbiAgLy8gU3RyaXAgb3V0IHRoZSAnYXBwaXVtOicgcHJlZml4IGZyb20gYWxsXG4gIHN0cmlwQXBwaXVtUHJlZml4ZXMocmVxdWlyZWRDYXBzKTtcbiAgZm9yIChsZXQgZmlyc3RNYXRjaENhcHMgb2YgYWxsRmlyc3RNYXRjaENhcHMpIHtcbiAgICBzdHJpcEFwcGl1bVByZWZpeGVzKGZpcnN0TWF0Y2hDYXBzKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIHRoZSByZXF1aXJlZENhcHMuIEJ1dCBkb24ndCB2YWxpZGF0ZSAncHJlc2VuY2UnIGJlY2F1c2UgaWYgdGhhdCBjb25zdHJhaW50IGZhaWxzIG9uICdhbHdheXNNYXRjaCcgaXQgY291bGQgc3RpbGwgcGFzcyBvbiBvbmUgb2YgdGhlICdmaXJzdE1hdGNoJyBrZXlzXG4gIGlmIChzaG91bGRWYWxpZGF0ZUNhcHMpIHtcbiAgICByZXF1aXJlZENhcHMgPSB2YWxpZGF0ZUNhcHMocmVxdWlyZWRDYXBzLCBjb25zdHJhaW50cywge3NraXBQcmVzZW5jZUNvbnN0cmFpbnQ6IHRydWV9KTtcbiAgfVxuXG5cbiAgLy8gUmVtb3ZlIHRoZSAncHJlc2VuY2UnIGNvbnN0cmFpbnQgZm9yIGFueSBrZXlzIHRoYXQgYXJlIGFscmVhZHkgcHJlc2VudCBpbiAncmVxdWlyZWRDYXBzJ1xuICAvLyBzaW5jZSB3ZSBrbm93IHRoYXQgdGhpcyBjb25zdHJhaW50IGhhcyBhbHJlYWR5IHBhc3NlZFxuICBsZXQgZmlsdGVyZWRDb25zdHJhaW50cyA9IHsuLi5jb25zdHJhaW50c307XG4gIGxldCByZXF1aXJlZENhcHNLZXlzID0gXy5rZXlzKHJlcXVpcmVkQ2Fwcyk7XG4gIGZvciAobGV0IGtleSBvZiBfLmtleXMoZmlsdGVyZWRDb25zdHJhaW50cykpIHtcbiAgICBpZiAocmVxdWlyZWRDYXBzS2V5cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICBkZWxldGUgZmlsdGVyZWRDb25zdHJhaW50c1trZXldO1xuICAgIH1cbiAgfVxuXG4gIC8vIFZhbGlkYXRlIGFsbCBvZiB0aGUgZmlyc3QgbWF0Y2ggY2FwYWJpbGl0aWVzIGFuZCByZXR1cm4gYW4gYXJyYXkgd2l0aCBvbmx5IHRoZSB2YWxpZCBjYXBzIChzZWUgc3BlYyAjNSlcbiAgbGV0IHZhbGlkYXRpb25FcnJvcnMgPSBbXTtcbiAgLyoqIEB0eXBlIHtDYXBhYmlsaXRpZXNbXX0gKi9cbiAgbGV0IHZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzID0gXy5jb21wYWN0KGFsbEZpcnN0TWF0Y2hDYXBzLm1hcCgoZmlyc3RNYXRjaENhcHMpID0+IHtcbiAgICB0cnkge1xuICAgICAgLy8gVmFsaWRhdGUgZmlyc3RNYXRjaCBjYXBzXG4gICAgICByZXR1cm4gc2hvdWxkVmFsaWRhdGVDYXBzID8gdmFsaWRhdGVDYXBzKGZpcnN0TWF0Y2hDYXBzLCBmaWx0ZXJlZENvbnN0cmFpbnRzKSA6IGZpcnN0TWF0Y2hDYXBzO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaChlLm1lc3NhZ2UpO1xuICAgIH1cbiAgfSkpO1xuXG4gIC8vIFRyeSB0byBtZXJnZSByZXF1aXJlZENhcHMgd2l0aCBmaXJzdCBtYXRjaCBjYXBhYmlsaXRpZXMsIGJyZWFrIG9uY2UgaXQgZmluZHMgaXRzIGZpcnN0IG1hdGNoIChzZWUgc3BlYyAjNilcbiAgbGV0IG1hdGNoZWRDYXBzID0gbnVsbDtcbiAgZm9yIChsZXQgZmlyc3RNYXRjaENhcHMgb2YgdmFsaWRhdGVkRmlyc3RNYXRjaENhcHMpIHtcbiAgICB0cnkge1xuICAgICAgbWF0Y2hlZENhcHMgPSBtZXJnZUNhcHMocmVxdWlyZWRDYXBzLCBmaXJzdE1hdGNoQ2Fwcyk7XG4gICAgICBpZiAobWF0Y2hlZENhcHMpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cud2FybihlcnIubWVzc2FnZSk7XG4gICAgICB2YWxpZGF0aW9uRXJyb3JzLnB1c2goZXJyLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybnMgdmFyaWFibGVzIGZvciB0ZXN0aW5nIHB1cnBvc2VzXG4gIHJldHVybiB7cmVxdWlyZWRDYXBzLCBhbGxGaXJzdE1hdGNoQ2FwcywgdmFsaWRhdGVkRmlyc3RNYXRjaENhcHMsIG1hdGNoZWRDYXBzLCB2YWxpZGF0aW9uRXJyb3JzfTtcbn1cblxuLy8gQ2FsbHMgcGFyc2VDYXBzIGFuZCBqdXN0IHJldHVybnMgdGhlIG1hdGNoZWRDYXBzIHZhcmlhYmxlXG4vKipcbiAqXG4gKiBAcGFyYW0ge1czQ0NhcGFiaWxpdGllc30gdzNjQ2Fwc1xuICogQHBhcmFtIHtDb25zdHJhaW50c30gW2NvbnN0cmFpbnRzXVxuICogQHBhcmFtIHtib29sZWFufSBbc2hvdWxkVmFsaWRhdGVDYXBzXVxuICogQHJldHVybnMge0NhcGFiaWxpdGllc31cbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc0NhcGFiaWxpdGllcyAodzNjQ2FwcywgY29uc3RyYWludHMgPSB7fSwgc2hvdWxkVmFsaWRhdGVDYXBzID0gdHJ1ZSkge1xuICBjb25zdCB7bWF0Y2hlZENhcHMsIHZhbGlkYXRpb25FcnJvcnN9ID0gcGFyc2VDYXBzKHczY0NhcHMsIGNvbnN0cmFpbnRzLCBzaG91bGRWYWxpZGF0ZUNhcHMpO1xuXG4gIC8vIElmIHdlIGZvdW5kIGFuIGVycm9yIHRocm93IGFuIGV4Y2VwdGlvblxuICBpZiAoIXV0aWwuaGFzVmFsdWUobWF0Y2hlZENhcHMpKSB7XG4gICAgaWYgKF8uaXNBcnJheSh3M2NDYXBzLmZpcnN0TWF0Y2gpICYmIHczY0NhcHMuZmlyc3RNYXRjaC5sZW5ndGggPiAxKSB7XG4gICAgICAvLyBJZiB0aGVyZSB3YXMgbW9yZSB0aGFuIG9uZSAnZmlyc3RNYXRjaCcgY2FwLCBpbmRpY2F0ZSB0aGF0IHdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaGluZyBjYXBhYmlsaXRpZXMgc2V0IGFuZCBzaG93IGFsbCB0aGUgZXJyb3JzXG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBDb3VsZCBub3QgZmluZCBtYXRjaGluZyBjYXBhYmlsaXRpZXMgZnJvbSAke0pTT04uc3RyaW5naWZ5KHczY0NhcHMpfTpcXG4gJHt2YWxpZGF0aW9uRXJyb3JzLmpvaW4oJ1xcbicpfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2UsIGp1c3Qgc2hvdyB0aGUgc2luZ3VsYXIgZXJyb3IgbWVzc2FnZVxuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcih2YWxpZGF0aW9uRXJyb3JzWzBdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWF0Y2hlZENhcHMgPz8ge307XG59XG5cbi8qKlxuICogUmV0dXJuIGEgY29weSBvZiBhIGNhcGFiaWxpdGllcyBvYmplY3Qgd2hpY2ggaGFzIHRha2VuIGV2ZXJ5dGhpbmcgd2l0aGluIHRoZSAnb3B0aW9ucydcbiAqIGNhcGFiaWxpdHkgYW5kIHByb21vdGVkIGl0IHRvIHRoZSB0b3AgbGV2ZWwuIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGFzc3VtZWQgdG8gYmUgcnVuIGFmdGVyXG4gKiBhbGwgdmVuZG9yIHByZWZpeGVzIGhhdmUgYWxyZWFkeSBiZWVuIHN0cmlwcGVkIGZyb20gdGhlIHRvcCBsZXZlbC4gU28gd2UgYXJlIGRlYWxpbmcgd2l0aCBlLmcuXG4gKiAnb3B0aW9ucycgYW5kIG5vdCAnYXBwaXVtOm9wdGlvbnMnIGF0IHRoaXMgcG9pbnQuIEFueSBwcmVmaXhlcyBfaW5zaWRlXyB0aGUgJ29wdGlvbnMnIGNhcGFiaWxpdHlcbiAqIHdpbGwgdGhlbXNlbHZlcyBiZSBzdHJpcHBlZC4gVGhpcyBpcyBkZXNpZ25lZCBhcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgbm90IG9uZSB0byBvcGVyYXRlIG9uXG4gKiB1c2VyLWNvbnN0cnVjdGVkIGNhcGFiaWxpdGllcy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb3JpZ2luYWxDYXBzIC0gdGhlIGNhcGFiaWxpdGllcyB0byBhbmFseXplIGFuZCBwcm9tb3RlIGZyb20gJ29wdGlvbnMnXG4gKiBAcmV0dXJuIHtvYmplY3QhfSAtIHRoZSBjYXBhYmlsaXRpZXMgd2l0aCAnb3B0aW9ucycgcHJvbW90ZWQgaWYgbmVjZXNzYXJ5XG4gKi9cbmZ1bmN0aW9uIHByb21vdGVBcHBpdW1PcHRpb25zIChvcmlnaW5hbENhcHMpIHtcbiAgY29uc3QgYXBwaXVtT3B0aW9ucyA9IG9yaWdpbmFsQ2Fwc1tBUFBJVU1fT1BUU19DQVBdO1xuICBpZiAoIWFwcGl1bU9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3JpZ2luYWxDYXBzO1xuICB9XG5cbiAgbGV0IGNhcHMgPSBfLmNsb25lRGVlcChvcmlnaW5hbENhcHMpO1xuICBpZiAoIV8uaXNQbGFpbk9iamVjdChhcHBpdW1PcHRpb25zKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcihgVGhlICR7QVBQSVVNX09QVFNfQ0FQfSBjYXBhYmlsaXR5IG11c3QgYmUgYW4gb2JqZWN0YCk7XG4gIH1cblxuICAvLyBmaXJzdCBnZXQgcmlkIG9mIGFueSBwcmVmaXhlcyBpbnNpZGUgYXBwaXVtOm9wdGlvbnNcbiAgc3RyaXBBcHBpdW1QcmVmaXhlcyhhcHBpdW1PcHRpb25zKTtcblxuICAvLyB3YXJuIGlmIHdlIGFyZSBnb2luZyB0byBvdmVyd3JpdGUgYW55IGtleXMgb24gdGhlIGJhc2UgY2FwcyBvYmplY3RcbiAgY29uc3Qgb3ZlcndyaXR0ZW5LZXlzID0gXy5pbnRlcnNlY3Rpb24oT2JqZWN0LmtleXMoY2FwcyksIE9iamVjdC5rZXlzKGFwcGl1bU9wdGlvbnMpKTtcbiAgaWYgKG92ZXJ3cml0dGVuS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgbG9nLndhcm4oYEZvdW5kIGNhcGFiaWxpdGllcyBpbnNpZGUgJHtQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVB9IHRoYXQgd2lsbCBvdmVyd3JpdGUgYCArXG4gICAgICAgICAgICAgYGNhcGFiaWxpdGllcyBhdCB0aGUgdG9wIGxldmVsOiAke0pTT04uc3RyaW5naWZ5KG92ZXJ3cml0dGVuS2V5cyl9YCk7XG4gIH1cblxuICAvLyBub3cganVzdCBhcHBseSB0aGVtIHRvIHRoZSBtYWluIGNhcHMgb2JqZWN0XG4gIGNhcHMgPSB7Li4uY2FwcywgLi4uYXBwaXVtT3B0aW9uc307XG5cbiAgLy8gYW5kIHJlbW92ZSBhbGwgdHJhY2VzIG9mIHRoZSBvcHRpb25zIGNhcFxuICBkZWxldGUgY2Fwc1tBUFBJVU1fT1BUU19DQVBdO1xuICByZXR1cm4gY2Fwcztcbn1cblxuXG5leHBvcnQge1xuICBwYXJzZUNhcHMsIHByb2Nlc3NDYXBhYmlsaXRpZXMsIHZhbGlkYXRlQ2FwcywgbWVyZ2VDYXBzLCBBUFBJVU1fVkVORE9SX1BSRUZJWCwgQVBQSVVNX09QVFNfQ0FQLFxuICBmaW5kTm9uUHJlZml4ZWRDYXBzLCBpc1N0YW5kYXJkQ2FwLCBzdHJpcEFwcGl1bVByZWZpeGVzLCBwcm9tb3RlQXBwaXVtT3B0aW9ucywgUFJFRklYRURfQVBQSVVNX09QVFNfQ0FQLFxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuVzNDQ2FwYWJpbGl0aWVzfSBXM0NDYXBhYmlsaXRpZXNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Db25zdHJhaW50c30gQ29uc3RyYWludHNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5DYXBhYmlsaXRpZXN9IENhcGFiaWxpdGllc1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYgVmFsaWRhdGVDYXBzT3B0c1xuICogQHByb3BlcnR5IHtib29sZWFufSBbc2tpcFByZXNlbmNlQ29uc3RyYWludF0gLSBpZiB0cnVlLCBza2lwIHRoZSBwcmVzZW5jZSBjb25zdHJhaW50XG4gKi9cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {TimeoutBase} Base
|
|
3
|
+
* @returns {EventBase}
|
|
4
|
+
*/
|
|
5
|
+
export function EventMixin(Base: TimeoutBase): EventBase;
|
|
6
|
+
export type IEventCommands = import('@appium/types').EventCommands;
|
|
7
|
+
export type TimeoutBase = import('./timeout').TimeoutBase;
|
|
8
|
+
export type EventBase = import('../driver').BaseDriverBase<import('@appium/types').TimeoutCommands & IEventCommands>;
|
|
9
|
+
//# sourceMappingURL=event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../../lib/basedriver/commands/event.js"],"names":[],"mappings":"AAIA;;;GAGG;AACH,iCAHW,WAAW,GACT,SAAS,CA6CrB;6BAGY,OAAO,eAAe,EAAE,aAAa;0BACrC,OAAO,WAAW,EAAE,WAAW;wBAC/B,OAAO,WAAW,EAAE,cAAc,CAAC,OAAO,eAAe,EAAE,eAAe,GAAG,cAAc,CAAC"}
|
|
@@ -5,36 +5,36 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.EventMixin = EventMixin;
|
|
9
9
|
|
|
10
10
|
require("source-map-support/register");
|
|
11
11
|
|
|
12
12
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
function EventMixin(Base) {
|
|
15
|
+
class EventCommands extends Base {
|
|
16
|
+
async logCustomEvent(vendor, event) {
|
|
17
|
+
this.logEvent(`${vendor}:${event}`);
|
|
18
|
+
}
|
|
15
19
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
async getLogEvents(type) {
|
|
21
|
+
if (_lodash.default.isEmpty(type)) {
|
|
22
|
+
return this.eventHistory;
|
|
23
|
+
}
|
|
19
24
|
|
|
20
|
-
|
|
21
|
-
if (_lodash.default.isEmpty(type)) {
|
|
22
|
-
return this._eventHistory;
|
|
23
|
-
}
|
|
25
|
+
const typeList = _lodash.default.castArray(type);
|
|
24
26
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
return _lodash.default.reduce(this.eventHistory, (acc, eventTimes, eventType) => {
|
|
28
|
+
if (typeList.includes(eventType)) {
|
|
29
|
+
acc[eventType] = eventTimes;
|
|
30
|
+
}
|
|
28
31
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
acc[eventType] = eventTimes;
|
|
32
|
+
return acc;
|
|
33
|
+
}, {});
|
|
32
34
|
}
|
|
33
35
|
|
|
34
|
-
|
|
35
|
-
}, {});
|
|
36
|
-
};
|
|
36
|
+
}
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
38
|
+
return EventCommands;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL2V2ZW50LmpzIl0sIm5hbWVzIjpbIkV2ZW50TWl4aW4iLCJCYXNlIiwiRXZlbnRDb21tYW5kcyIsImxvZ0N1c3RvbUV2ZW50IiwidmVuZG9yIiwiZXZlbnQiLCJsb2dFdmVudCIsImdldExvZ0V2ZW50cyIsInR5cGUiLCJfIiwiaXNFbXB0eSIsImV2ZW50SGlzdG9yeSIsInR5cGVMaXN0IiwiY2FzdEFycmF5IiwicmVkdWNlIiwiYWNjIiwiZXZlbnRUaW1lcyIsImV2ZW50VHlwZSIsImluY2x1ZGVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUVBOztBQU1PLFNBQVNBLFVBQVQsQ0FBcUJDLElBQXJCLEVBQTJCO0FBSWhDLFFBQU1DLGFBQU4sU0FBNEJELElBQTVCLENBQWlDO0FBUVgsVUFBZEUsY0FBYyxDQUFFQyxNQUFGLEVBQVVDLEtBQVYsRUFBaUI7QUFDbkMsV0FBS0MsUUFBTCxDQUFlLEdBQUVGLE1BQU8sSUFBR0MsS0FBTSxFQUFqQztBQUNEOztBQVFpQixVQUFaRSxZQUFZLENBQUVDLElBQUYsRUFBUTtBQUN4QixVQUFJQyxnQkFBRUMsT0FBRixDQUFVRixJQUFWLENBQUosRUFBcUI7QUFDbkIsZUFBTyxLQUFLRyxZQUFaO0FBQ0Q7O0FBRUQsWUFBTUMsUUFBUSxHQUFHSCxnQkFBRUksU0FBRixDQUFZTCxJQUFaLENBQWpCOztBQUVBLGFBQU9DLGdCQUFFSyxNQUFGLENBQ0wsS0FBS0gsWUFEQSxFQUVMLENBQUNJLEdBQUQsRUFBTUMsVUFBTixFQUFrQkMsU0FBbEIsS0FBZ0M7QUFDOUIsWUFBSUwsUUFBUSxDQUFDTSxRQUFULENBQWtCRCxTQUFsQixDQUFKLEVBQWtDO0FBQ2hDRixVQUFBQSxHQUFHLENBQUNFLFNBQUQsQ0FBSCxHQUFpQkQsVUFBakI7QUFDRDs7QUFDRCxlQUFPRCxHQUFQO0FBQ0QsT0FQSSxFQVFMLEVBUkssQ0FBUDtBQVVEOztBQW5DOEI7O0FBc0NqQyxTQUFPYixhQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZXF1aXJlLWF3YWl0ICovXG4vLyBAdHMtY2hlY2tcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbi8qKlxuICogQHBhcmFtIHtUaW1lb3V0QmFzZX0gQmFzZVxuICogQHJldHVybnMge0V2ZW50QmFzZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEV2ZW50TWl4aW4gKEJhc2UpIHtcbiAgLyoqXG4gICAqIEBpbXBsZW1lbnRzIHtJRXZlbnRDb21tYW5kc31cbiAgICovXG4gIGNsYXNzIEV2ZW50Q29tbWFuZHMgZXh0ZW5kcyBCYXNlIHtcbiAgICAvKipcbiAgICAgKiBMb2cgYSB1c2VyLWRlZmluZWQgZXZlbnQgaW4gdGhlIGV2ZW50IGxvZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2ZW5kb3IgLSBhIHZlbmRvciBwcmVmaXggZm9yIHRoZSB1c2VyLCB0byBlbnN1cmUgbmFtZXNwYWNlXG4gICAgICogc2VwYXJhdGlvblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudCAtIHRoZSBldmVudCBuYW1lXG4gICAgICovXG4gICAgYXN5bmMgbG9nQ3VzdG9tRXZlbnQgKHZlbmRvciwgZXZlbnQpIHtcbiAgICAgIHRoaXMubG9nRXZlbnQoYCR7dmVuZG9yfToke2V2ZW50fWApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgZXZlbnQgbG9nXG4gICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt0eXBlXSAtIHRoZSBldmVudCB0eXBlIHRvIGZpbHRlciB3aXRoLlxuICAgICAqIEl0IHJldHVybnMgYWxsIGV2ZW50cyBpZiB0aGUgdHlwZSBpcyBub3QgcHJvdmlkZWQgb3IgZW1wdHkgc3RyaW5nL2FycmF5LlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydCgnQGFwcGl1bS90eXBlcycpLkV2ZW50SGlzdG9yeXxSZWNvcmQ8c3RyaW5nLG51bWJlcj4+fSAtIHRoZSBldmVudCBoaXN0b3J5IGxvZyBvYmplY3RcbiAgICAgKi9cbiAgICBhc3luYyBnZXRMb2dFdmVudHMgKHR5cGUpIHtcbiAgICAgIGlmIChfLmlzRW1wdHkodHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZlbnRIaXN0b3J5O1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0eXBlTGlzdCA9IF8uY2FzdEFycmF5KHR5cGUpO1xuXG4gICAgICByZXR1cm4gXy5yZWR1Y2UoXG4gICAgICAgIHRoaXMuZXZlbnRIaXN0b3J5LFxuICAgICAgICAoYWNjLCBldmVudFRpbWVzLCBldmVudFR5cGUpID0+IHtcbiAgICAgICAgICBpZiAodHlwZUxpc3QuaW5jbHVkZXMoZXZlbnRUeXBlKSkge1xuICAgICAgICAgICAgYWNjW2V2ZW50VHlwZV0gPSBldmVudFRpbWVzO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LFxuICAgICAgICB7fSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIEV2ZW50Q29tbWFuZHM7XG59XG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkV2ZW50Q29tbWFuZHN9IElFdmVudENvbW1hbmRzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL3RpbWVvdXQnKS5UaW1lb3V0QmFzZX0gVGltZW91dEJhc2VcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL2RyaXZlcicpLkJhc2VEcml2ZXJCYXNlPGltcG9ydCgnQGFwcGl1bS90eXBlcycpLlRpbWVvdXRDb21tYW5kcyAmIElFdmVudENvbW1hbmRzPn0gRXZlbnRCYXNlXG4gKi9cbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {EventBase} Base
|
|
4
|
+
* @returns {FindBase}
|
|
5
|
+
*/
|
|
6
|
+
export function FindMixin(Base: EventBase): FindBase;
|
|
7
|
+
export type Element = import('@appium/types').Element;
|
|
8
|
+
export type IFindCommands = import('@appium/types').FindCommands;
|
|
9
|
+
export type EventBase = import('./event').EventBase;
|
|
10
|
+
export type FindBase = import('../driver').BaseDriverBase<import('@appium/types').TimeoutCommands & import('@appium/types').EventCommands & IFindCommands>;
|
|
11
|
+
//# sourceMappingURL=find.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../../lib/basedriver/commands/find.js"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,gCAHW,SAAS,GACP,QAAQ,CAoGpB;sBAGY,OAAO,eAAe,EAAE,OAAO;4BAC/B,OAAO,eAAe,EAAE,YAAY;wBACpC,OAAO,SAAS,EAAE,SAAS;uBAC3B,OAAO,WAAW,EAAE,cAAc,CAAC,OAAO,eAAe,EAAE,eAAe,GAAG,OAAO,eAAe,EAAE,aAAa,GAAG,aAAa,CAAC"}
|
|
@@ -3,50 +3,57 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.FindMixin = FindMixin;
|
|
7
7
|
|
|
8
8
|
require("source-map-support/register");
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
helpers.findElOrElsWithProcessing = async function findElOrElsWithProcessing(strategy, selector, mult, context) {
|
|
17
|
-
this.validateLocatorStrategy(strategy);
|
|
18
|
-
|
|
19
|
-
try {
|
|
20
|
-
return await this.findElOrEls(strategy, selector, mult, context);
|
|
21
|
-
} catch (err) {
|
|
22
|
-
if (this.opts.printPageSourceOnFindFailure) {
|
|
23
|
-
const src = await this.getPageSource();
|
|
24
|
-
this.log.debug(`Error finding element${mult ? 's' : ''}: ${err.message}`);
|
|
25
|
-
this.log.debug(`Page source requested through 'printPageSourceOnFindFailure':`);
|
|
26
|
-
this.log.debug(src);
|
|
10
|
+
var _protocol = require("../../protocol");
|
|
11
|
+
|
|
12
|
+
function FindMixin(Base) {
|
|
13
|
+
class FindCommands extends Base {
|
|
14
|
+
async findElement(strategy, selector) {
|
|
15
|
+
return await this.findElOrElsWithProcessing(strategy, selector, false);
|
|
27
16
|
}
|
|
28
17
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
18
|
+
async findElements(strategy, selector) {
|
|
19
|
+
return await this.findElOrElsWithProcessing(strategy, selector, true);
|
|
20
|
+
}
|
|
32
21
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
22
|
+
async findElementFromElement(strategy, selector, elementId) {
|
|
23
|
+
return await this.findElOrElsWithProcessing(strategy, selector, false, elementId);
|
|
24
|
+
}
|
|
36
25
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
26
|
+
async findElementsFromElement(strategy, selector, elementId) {
|
|
27
|
+
return await this.findElOrElsWithProcessing(strategy, selector, true, elementId);
|
|
28
|
+
}
|
|
40
29
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
30
|
+
async findElOrEls(strategy, selector, mult, context) {
|
|
31
|
+
throw new _protocol.errors.NotImplementedError('Not implemented yet for find.');
|
|
32
|
+
}
|
|
44
33
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
34
|
+
async getPageSource() {
|
|
35
|
+
throw new _protocol.errors.NotImplementedError('Not implemented yet for find.');
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async findElOrElsWithProcessing(strategy, selector, mult, context) {
|
|
39
|
+
this.validateLocatorStrategy(strategy);
|
|
40
|
+
|
|
41
|
+
try {
|
|
42
|
+
return await this.findElOrEls(strategy, selector, mult, context);
|
|
43
|
+
} catch (err) {
|
|
44
|
+
if (this.opts.printPageSourceOnFindFailure) {
|
|
45
|
+
const src = await this.getPageSource();
|
|
46
|
+
this.log.debug(`Error finding element${mult ? 's' : ''}: ${err.message}`);
|
|
47
|
+
this.log.debug(`Page source requested through 'printPageSourceOnFindFailure':`);
|
|
48
|
+
this.log.debug(src);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
throw err;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
}
|
|
48
56
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL2ZpbmQuanMiXSwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImZpbmRFbE9yRWxzV2l0aFByb2Nlc3NpbmciLCJzdHJhdGVneSIsInNlbGVjdG9yIiwibXVsdCIsImNvbnRleHQiLCJ2YWxpZGF0ZUxvY2F0b3JTdHJhdGVneSIsImZpbmRFbE9yRWxzIiwiZXJyIiwib3B0cyIsInByaW50UGFnZVNvdXJjZU9uRmluZEZhaWx1cmUiLCJzcmMiLCJnZXRQYWdlU291cmNlIiwibG9nIiwiZGVidWciLCJtZXNzYWdlIiwiZmluZEVsZW1lbnQiLCJmaW5kRWxlbWVudHMiLCJmaW5kRWxlbWVudEZyb21FbGVtZW50IiwiZWxlbWVudElkIiwiZmluZEVsZW1lbnRzRnJvbUVsZW1lbnQiLCJPYmplY3QiLCJhc3NpZ24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjtBQUFBLE1BQXFCQyxPQUFPLEdBQUcsRUFBL0I7QUFBQSxNQUFtQ0MsVUFBVSxHQUFHLEVBQWhEOzs7O0FBZUFELE9BQU8sQ0FBQ0UseUJBQVIsR0FBb0MsZUFBZUEseUJBQWYsQ0FBMENDLFFBQTFDLEVBQW9EQyxRQUFwRCxFQUE4REMsSUFBOUQsRUFBb0VDLE9BQXBFLEVBQTZFO0FBQy9HLE9BQUtDLHVCQUFMLENBQTZCSixRQUE3Qjs7QUFDQSxNQUFJO0FBQ0YsV0FBTyxNQUFNLEtBQUtLLFdBQUwsQ0FBaUJMLFFBQWpCLEVBQTJCQyxRQUEzQixFQUFxQ0MsSUFBckMsRUFBMkNDLE9BQTNDLENBQWI7QUFDRCxHQUZELENBRUUsT0FBT0csR0FBUCxFQUFZO0FBQ1osUUFBSSxLQUFLQyxJQUFMLENBQVVDLDRCQUFkLEVBQTRDO0FBQzFDLFlBQU1DLEdBQUcsR0FBRyxNQUFNLEtBQUtDLGFBQUwsRUFBbEI7QUFDQSxXQUFLQyxHQUFMLENBQVNDLEtBQVQsQ0FBZ0Isd0JBQXVCVixJQUFJLEdBQUcsR0FBSCxHQUFTLEVBQUcsS0FBSUksR0FBRyxDQUFDTyxPQUFRLEVBQXZFO0FBQ0EsV0FBS0YsR0FBTCxDQUFTQyxLQUFULENBQWdCLCtEQUFoQjtBQUNBLFdBQUtELEdBQUwsQ0FBU0MsS0FBVCxDQUFlSCxHQUFmO0FBQ0Q7O0FBRUQsVUFBTUgsR0FBTjtBQUNEO0FBQ0YsQ0FkRDs7QUFnQkFWLFFBQVEsQ0FBQ2tCLFdBQVQsR0FBdUIsZUFBZUEsV0FBZixDQUE0QmQsUUFBNUIsRUFBc0NDLFFBQXRDLEVBQWdEO0FBQ3JFLFNBQU8sTUFBTSxLQUFLRix5QkFBTCxDQUErQkMsUUFBL0IsRUFBeUNDLFFBQXpDLEVBQW1ELEtBQW5ELENBQWI7QUFDRCxDQUZEOztBQUlBTCxRQUFRLENBQUNtQixZQUFULEdBQXdCLGVBQWVBLFlBQWYsQ0FBNkJmLFFBQTdCLEVBQXVDQyxRQUF2QyxFQUFpRDtBQUN2RSxTQUFPLE1BQU0sS0FBS0YseUJBQUwsQ0FBK0JDLFFBQS9CLEVBQXlDQyxRQUF6QyxFQUFtRCxJQUFuRCxDQUFiO0FBQ0QsQ0FGRDs7QUFJQUwsUUFBUSxDQUFDb0Isc0JBQVQsR0FBa0MsZUFBZUEsc0JBQWYsQ0FBdUNoQixRQUF2QyxFQUFpREMsUUFBakQsRUFBMkRnQixTQUEzRCxFQUFzRTtBQUN0RyxTQUFPLE1BQU0sS0FBS2xCLHlCQUFMLENBQStCQyxRQUEvQixFQUF5Q0MsUUFBekMsRUFBbUQsS0FBbkQsRUFBMERnQixTQUExRCxDQUFiO0FBQ0QsQ0FGRDs7QUFJQXJCLFFBQVEsQ0FBQ3NCLHVCQUFULEdBQW1DLGVBQWVBLHVCQUFmLENBQXdDbEIsUUFBeEMsRUFBa0RDLFFBQWxELEVBQTREZ0IsU0FBNUQsRUFBdUU7QUFDeEcsU0FBTyxNQUFNLEtBQUtsQix5QkFBTCxDQUErQkMsUUFBL0IsRUFBeUNDLFFBQXpDLEVBQW1ELElBQW5ELEVBQXlEZ0IsU0FBekQsQ0FBYjtBQUNELENBRkQ7O0FBS0FFLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjdEIsVUFBZCxFQUEwQkYsUUFBMUIsRUFBb0NDLE9BQXBDO2VBRWVDLFUiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuXG4vLyBPdmVycmlkZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uIGZvciB5b3VyIG93biBkcml2ZXIsIGFuZCB0aGUgcmVzdCBpcyB0YWtlblxuLy8gY2FyZSBvZiFcblxuLy8gaGVscGVycy5maW5kRWxPckVscyA9IGFzeW5jIGZ1bmN0aW9uIChzdHJhdGVneSwgc2VsZWN0b3IsIG11bHQsIGNvbnRleHQpIHt9XG4vLyAgIHN0cmF0ZWd5OiBsb2NhdG9yIHN0cmF0ZWd5XG4vLyAgIHNlbGVjdG9yOiB0aGUgYWN0dWFsIHNlbGVjdG9yIGZvciBmaW5kaW5nIGFuIGVsZW1lbnRcbi8vICAgbXVsdDogbXVsdGlwbGUgZWxlbWVudHMgb3IganVzdCBvbmU/XG4vLyAgIGNvbnRleHQ6IGZpbmRpbmcgYW4gZWxlbWVudCBmcm9tIHRoZSByb290IGNvbnRleHQ/IG9yIHN0YXJ0aW5nIGZyb20gYW5vdGhlciBlbGVtZW50XG4vL1xuLy8gUmV0dXJucyBhbiBvYmplY3Qgd2hpY2ggYWRoZXJlcyB0byB0aGUgd2F5IHRoZSBKU09OIFdpcmUgUHJvdG9jb2wgcmVwcmVzZW50cyBlbGVtZW50czpcbi8vIHsgRUxFTUVOVDogIyB9ICAgIGVnOiB7IEVMRU1FTlQ6IDMgfSAgb3IgeyBFTEVNRU5UOiAxLjAyMyB9XG5cbmhlbHBlcnMuZmluZEVsT3JFbHNXaXRoUHJvY2Vzc2luZyA9IGFzeW5jIGZ1bmN0aW9uIGZpbmRFbE9yRWxzV2l0aFByb2Nlc3NpbmcgKHN0cmF0ZWd5LCBzZWxlY3RvciwgbXVsdCwgY29udGV4dCkge1xuICB0aGlzLnZhbGlkYXRlTG9jYXRvclN0cmF0ZWd5KHN0cmF0ZWd5KTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5maW5kRWxPckVscyhzdHJhdGVneSwgc2VsZWN0b3IsIG11bHQsIGNvbnRleHQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAodGhpcy5vcHRzLnByaW50UGFnZVNvdXJjZU9uRmluZEZhaWx1cmUpIHtcbiAgICAgIGNvbnN0IHNyYyA9IGF3YWl0IHRoaXMuZ2V0UGFnZVNvdXJjZSgpO1xuICAgICAgdGhpcy5sb2cuZGVidWcoYEVycm9yIGZpbmRpbmcgZWxlbWVudCR7bXVsdCA/ICdzJyA6ICcnfTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBQYWdlIHNvdXJjZSByZXF1ZXN0ZWQgdGhyb3VnaCAncHJpbnRQYWdlU291cmNlT25GaW5kRmFpbHVyZSc6YCk7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhzcmMpO1xuICAgIH1cbiAgICAvLyBzdGlsbCB3YW50IHRoZSBlcnJvciB0byBvY2N1clxuICAgIHRocm93IGVycjtcbiAgfVxufTtcblxuY29tbWFuZHMuZmluZEVsZW1lbnQgPSBhc3luYyBmdW5jdGlvbiBmaW5kRWxlbWVudCAoc3RyYXRlZ3ksIHNlbGVjdG9yKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmZpbmRFbE9yRWxzV2l0aFByb2Nlc3Npbmcoc3RyYXRlZ3ksIHNlbGVjdG9yLCBmYWxzZSk7XG59O1xuXG5jb21tYW5kcy5maW5kRWxlbWVudHMgPSBhc3luYyBmdW5jdGlvbiBmaW5kRWxlbWVudHMgKHN0cmF0ZWd5LCBzZWxlY3Rvcikge1xuICByZXR1cm4gYXdhaXQgdGhpcy5maW5kRWxPckVsc1dpdGhQcm9jZXNzaW5nKHN0cmF0ZWd5LCBzZWxlY3RvciwgdHJ1ZSk7XG59O1xuXG5jb21tYW5kcy5maW5kRWxlbWVudEZyb21FbGVtZW50ID0gYXN5bmMgZnVuY3Rpb24gZmluZEVsZW1lbnRGcm9tRWxlbWVudCAoc3RyYXRlZ3ksIHNlbGVjdG9yLCBlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZEVsT3JFbHNXaXRoUHJvY2Vzc2luZyhzdHJhdGVneSwgc2VsZWN0b3IsIGZhbHNlLCBlbGVtZW50SWQpO1xufTtcblxuY29tbWFuZHMuZmluZEVsZW1lbnRzRnJvbUVsZW1lbnQgPSBhc3luYyBmdW5jdGlvbiBmaW5kRWxlbWVudHNGcm9tRWxlbWVudCAoc3RyYXRlZ3ksIHNlbGVjdG9yLCBlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZEVsT3JFbHNXaXRoUHJvY2Vzc2luZyhzdHJhdGVneSwgc2VsZWN0b3IsIHRydWUsIGVsZW1lbnRJZCk7XG59O1xuXG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXX0=
|
|
57
|
+
return FindCommands;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL2ZpbmQuanMiXSwibmFtZXMiOlsiRmluZE1peGluIiwiQmFzZSIsIkZpbmRDb21tYW5kcyIsImZpbmRFbGVtZW50Iiwic3RyYXRlZ3kiLCJzZWxlY3RvciIsImZpbmRFbE9yRWxzV2l0aFByb2Nlc3NpbmciLCJmaW5kRWxlbWVudHMiLCJmaW5kRWxlbWVudEZyb21FbGVtZW50IiwiZWxlbWVudElkIiwiZmluZEVsZW1lbnRzRnJvbUVsZW1lbnQiLCJmaW5kRWxPckVscyIsIm11bHQiLCJjb250ZXh0IiwiZXJyb3JzIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsImdldFBhZ2VTb3VyY2UiLCJ2YWxpZGF0ZUxvY2F0b3JTdHJhdGVneSIsImVyciIsIm9wdHMiLCJwcmludFBhZ2VTb3VyY2VPbkZpbmRGYWlsdXJlIiwic3JjIiwibG9nIiwiZGVidWciLCJtZXNzYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFHQTs7QUFPTyxTQUFTQSxTQUFULENBQW9CQyxJQUFwQixFQUEwQjtBQUkvQixRQUFNQyxZQUFOLFNBQTJCRCxJQUEzQixDQUFnQztBQUtiLFVBQVhFLFdBQVcsQ0FBRUMsUUFBRixFQUFZQyxRQUFaLEVBQXNCO0FBQ3JDLGFBQU8sTUFBTSxLQUFLQyx5QkFBTCxDQUErQkYsUUFBL0IsRUFBeUNDLFFBQXpDLEVBQW1ELEtBQW5ELENBQWI7QUFDRDs7QUFNaUIsVUFBWkUsWUFBWSxDQUFFSCxRQUFGLEVBQVlDLFFBQVosRUFBc0I7QUFDdEMsYUFBTyxNQUFNLEtBQUtDLHlCQUFMLENBQStCRixRQUEvQixFQUF5Q0MsUUFBekMsRUFBbUQsSUFBbkQsQ0FBYjtBQUNEOztBQU0yQixVQUF0Qkcsc0JBQXNCLENBQUVKLFFBQUYsRUFBWUMsUUFBWixFQUFzQkksU0FBdEIsRUFBaUM7QUFDM0QsYUFBTyxNQUFNLEtBQUtILHlCQUFMLENBQ1hGLFFBRFcsRUFFWEMsUUFGVyxFQUdYLEtBSFcsRUFJWEksU0FKVyxDQUFiO0FBTUQ7O0FBTTRCLFVBQXZCQyx1QkFBdUIsQ0FBRU4sUUFBRixFQUFZQyxRQUFaLEVBQXNCSSxTQUF0QixFQUFpQztBQUM1RCxhQUFPLE1BQU0sS0FBS0gseUJBQUwsQ0FDWEYsUUFEVyxFQUVYQyxRQUZXLEVBR1gsSUFIVyxFQUlYSSxTQUpXLENBQWI7QUFNRDs7QUFhZ0IsVUFBWEUsV0FBVyxDQUFFUCxRQUFGLEVBQVlDLFFBQVosRUFBc0JPLElBQXRCLEVBQTRCQyxPQUE1QixFQUFxQztBQUNwRCxZQUFNLElBQUlDLGlCQUFPQyxtQkFBWCxDQUErQiwrQkFBL0IsQ0FBTjtBQUNEOztBQUtrQixVQUFiQyxhQUFhLEdBQUk7QUFDckIsWUFBTSxJQUFJRixpQkFBT0MsbUJBQVgsQ0FBK0IsK0JBQS9CLENBQU47QUFDRDs7QUFTOEIsVUFBekJULHlCQUF5QixDQUFFRixRQUFGLEVBQVlDLFFBQVosRUFBc0JPLElBQXRCLEVBQTRCQyxPQUE1QixFQUFxQztBQUNsRSxXQUFLSSx1QkFBTCxDQUE2QmIsUUFBN0I7O0FBQ0EsVUFBSTtBQUNGLGVBQU8sTUFBTSxLQUFLTyxXQUFMLENBQWlCUCxRQUFqQixFQUEyQkMsUUFBM0IsRUFBcUNPLElBQXJDLEVBQTJDQyxPQUEzQyxDQUFiO0FBQ0QsT0FGRCxDQUVFLE9BQU9LLEdBQVAsRUFBWTtBQUNaLFlBQUksS0FBS0MsSUFBTCxDQUFVQyw0QkFBZCxFQUE0QztBQUMxQyxnQkFBTUMsR0FBRyxHQUFHLE1BQU0sS0FBS0wsYUFBTCxFQUFsQjtBQUNBLGVBQUtNLEdBQUwsQ0FBU0MsS0FBVCxDQUNHLHdCQUF1QlgsSUFBSSxHQUFHLEdBQUgsR0FBUyxFQUFHLEtBQUlNLEdBQUcsQ0FBQ00sT0FBUSxFQUQxRDtBQUdBLGVBQUtGLEdBQUwsQ0FBU0MsS0FBVCxDQUNHLCtEQURIO0FBR0EsZUFBS0QsR0FBTCxDQUFTQyxLQUFULENBQWVGLEdBQWY7QUFDRDs7QUFFRCxjQUFNSCxHQUFOO0FBQ0Q7QUFDRjs7QUExRjZCOztBQTZGaEMsU0FBT2hCLFlBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZXF1aXJlLWF3YWl0ICovXG4vLyBAdHMtY2hlY2tcbmltcG9ydCB7ZXJyb3JzfSBmcm9tICcuLi8uLi9wcm90b2NvbCc7XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7RXZlbnRCYXNlfSBCYXNlXG4gKiBAcmV0dXJucyB7RmluZEJhc2V9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBGaW5kTWl4aW4gKEJhc2UpIHtcbiAgLyoqXG4gICAqIEBpbXBsZW1lbnRzIHtJRmluZENvbW1hbmRzfVxuICAgKi9cbiAgY2xhc3MgRmluZENvbW1hbmRzIGV4dGVuZHMgQmFzZSB7XG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxFbGVtZW50Pn1cbiAgICAgKi9cbiAgICBhc3luYyBmaW5kRWxlbWVudCAoc3RyYXRlZ3ksIHNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5maW5kRWxPckVsc1dpdGhQcm9jZXNzaW5nKHN0cmF0ZWd5LCBzZWxlY3RvciwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHJldHVybnMge1Byb21pc2U8RWxlbWVudFtdPn1cbiAgICAgKi9cbiAgICBhc3luYyBmaW5kRWxlbWVudHMgKHN0cmF0ZWd5LCBzZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZEVsT3JFbHNXaXRoUHJvY2Vzc2luZyhzdHJhdGVneSwgc2VsZWN0b3IsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHJldHVybnMge1Byb21pc2U8RWxlbWVudD59XG4gICAgICovXG4gICAgYXN5bmMgZmluZEVsZW1lbnRGcm9tRWxlbWVudCAoc3RyYXRlZ3ksIHNlbGVjdG9yLCBlbGVtZW50SWQpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmZpbmRFbE9yRWxzV2l0aFByb2Nlc3NpbmcoXG4gICAgICAgIHN0cmF0ZWd5LFxuICAgICAgICBzZWxlY3RvcixcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGVsZW1lbnRJZCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxFbGVtZW50W10+fVxuICAgICAqL1xuICAgIGFzeW5jIGZpbmRFbGVtZW50c0Zyb21FbGVtZW50IChzdHJhdGVneSwgc2VsZWN0b3IsIGVsZW1lbnRJZCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZEVsT3JFbHNXaXRoUHJvY2Vzc2luZyhcbiAgICAgICAgc3RyYXRlZ3ksXG4gICAgICAgIHNlbGVjdG9yLFxuICAgICAgICB0cnVlLFxuICAgICAgICBlbGVtZW50SWQsXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBPdmVycmlkZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uIGZvciB5b3VyIG93biBkcml2ZXIsIGFuZCB0aGUgcmVzdCBpcyB0YWtlblxuICAgIC8vIGNhcmUgb2YhXG4gICAgLy8gUmV0dXJucyBhbiBvYmplY3Qgd2hpY2ggYWRoZXJlcyB0byB0aGUgd2F5IHRoZSBKU09OIFdpcmUgUHJvdG9jb2wgcmVwcmVzZW50cyBlbGVtZW50czpcbiAgICAvLyB7IEVMRU1FTlQ6ICMgfSAgICBlZzogeyBFTEVNRU5UOiAzIH0gIG9yIHsgRUxFTUVOVDogMS4wMjMgfVxuICAgIC8qKlxuICAgICAqIEB0ZW1wbGF0ZSB7Ym9vbGVhbn0gTXVsdFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJhdGVneVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvclxuICAgICAqIEBwYXJhbSB7TXVsdH0gbXVsdFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY29udGV4dF1cbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxNdWx0IGV4dGVuZHMgdHJ1ZSA/IEVsZW1lbnRbXSA6IEVsZW1lbnQ+fVxuICAgICAqL1xuICAgIGFzeW5jIGZpbmRFbE9yRWxzIChzdHJhdGVneSwgc2VsZWN0b3IsIG11bHQsIGNvbnRleHQpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcignTm90IGltcGxlbWVudGVkIHlldCBmb3IgZmluZC4nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fVxuICAgICAqL1xuICAgIGFzeW5jIGdldFBhZ2VTb3VyY2UgKCkge1xuICAgICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCdOb3QgaW1wbGVtZW50ZWQgeWV0IGZvciBmaW5kLicpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAdGVtcGxhdGUge2Jvb2xlYW59IE11bHRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyYXRlZ3lcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3JcbiAgICAgKiBAcGFyYW0ge011bHR9IG11bHRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NvbnRleHRdXG4gICAgICogQHJldHVybnMge1Byb21pc2U8TXVsdCBleHRlbmRzIHRydWUgPyBFbGVtZW50W10gOiBFbGVtZW50Pn1cbiAgICAgKi9cbiAgICBhc3luYyBmaW5kRWxPckVsc1dpdGhQcm9jZXNzaW5nIChzdHJhdGVneSwgc2VsZWN0b3IsIG11bHQsIGNvbnRleHQpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVMb2NhdG9yU3RyYXRlZ3koc3RyYXRlZ3kpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZEVsT3JFbHMoc3RyYXRlZ3ksIHNlbGVjdG9yLCBtdWx0LCBjb250ZXh0KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAodGhpcy5vcHRzLnByaW50UGFnZVNvdXJjZU9uRmluZEZhaWx1cmUpIHtcbiAgICAgICAgICBjb25zdCBzcmMgPSBhd2FpdCB0aGlzLmdldFBhZ2VTb3VyY2UoKTtcbiAgICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhcbiAgICAgICAgICAgIGBFcnJvciBmaW5kaW5nIGVsZW1lbnQke211bHQgPyAncycgOiAnJ306ICR7ZXJyLm1lc3NhZ2V9YCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMubG9nLmRlYnVnKFxuICAgICAgICAgICAgYFBhZ2Ugc291cmNlIHJlcXVlc3RlZCB0aHJvdWdoICdwcmludFBhZ2VTb3VyY2VPbkZpbmRGYWlsdXJlJzpgLFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5sb2cuZGVidWcoc3JjKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzdGlsbCB3YW50IHRoZSBlcnJvciB0byBvY2N1clxuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIEZpbmRDb21tYW5kcztcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuRWxlbWVudH0gRWxlbWVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkZpbmRDb21tYW5kc30gSUZpbmRDb21tYW5kc1xuICogQHR5cGVkZWYge2ltcG9ydCgnLi9ldmVudCcpLkV2ZW50QmFzZX0gRXZlbnRCYXNlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9kcml2ZXInKS5CYXNlRHJpdmVyQmFzZTxpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5UaW1lb3V0Q29tbWFuZHMgJiBpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5FdmVudENvbW1hbmRzICYgSUZpbmRDb21tYW5kcz59IEZpbmRCYXNlXG4gKi9cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Applies all the mixins to the `BaseDriverBase` class.
|
|
3
|
+
* Returns a `BaseDriver` class.
|
|
4
|
+
* @param {BaseDriverBase} Base
|
|
5
|
+
*/
|
|
6
|
+
export function createBaseDriverClass(Base: BaseDriverBase): import("./session").SessionBase;
|
|
7
|
+
export type BaseDriverBase<T = {}> = import('../driver').BaseDriverBase<T>;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../lib/basedriver/commands/index.js"],"names":[],"mappings":"AASA;;;;GAIG;AACH,4CAFW,cAAc,mCAUxB;qCAIY,OAAO,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC"}
|
|
@@ -1,28 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
8
|
-
exports.
|
|
6
|
+
exports.createBaseDriverClass = createBaseDriverClass;
|
|
9
7
|
|
|
10
8
|
require("source-map-support/register");
|
|
11
9
|
|
|
12
|
-
var
|
|
10
|
+
var _event = require("./event");
|
|
13
11
|
|
|
14
|
-
var
|
|
12
|
+
var _find = require("./find");
|
|
15
13
|
|
|
16
|
-
var
|
|
14
|
+
var _log = require("./log");
|
|
17
15
|
|
|
18
|
-
var
|
|
16
|
+
var _session = require("./session");
|
|
19
17
|
|
|
20
|
-
var
|
|
18
|
+
var _settings = require("./settings");
|
|
21
19
|
|
|
22
|
-
var
|
|
20
|
+
var _timeout = require("./timeout");
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
function createBaseDriverClass(Base) {
|
|
23
|
+
const WithTimeoutCommands = (0, _timeout.TimeoutMixin)(Base);
|
|
24
|
+
const WithEventCommands = (0, _event.EventMixin)(WithTimeoutCommands);
|
|
25
|
+
const WithFindCommands = (0, _find.FindMixin)(WithEventCommands);
|
|
26
|
+
const WithLogCommands = (0, _log.LogMixin)(WithFindCommands);
|
|
27
|
+
const WithSettingsCommands = (0, _settings.SettingsMixin)(WithLogCommands);
|
|
28
|
+
const WithSessionCommands = (0, _session.SessionMixin)(WithSettingsCommands);
|
|
29
|
+
return WithSessionCommands;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2NvbW1hbmRzL2luZGV4LmpzIl0sIm5hbWVzIjpbImNyZWF0ZUJhc2VEcml2ZXJDbGFzcyIsIkJhc2UiLCJXaXRoVGltZW91dENvbW1hbmRzIiwiV2l0aEV2ZW50Q29tbWFuZHMiLCJXaXRoRmluZENvbW1hbmRzIiwiV2l0aExvZ0NvbW1hbmRzIiwiV2l0aFNldHRpbmdzQ29tbWFuZHMiLCJXaXRoU2Vzc2lvbkNvbW1hbmRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFPTyxTQUFTQSxxQkFBVCxDQUFnQ0MsSUFBaEMsRUFBc0M7QUFDM0MsUUFBTUMsbUJBQW1CLEdBQUcsMkJBQWFELElBQWIsQ0FBNUI7QUFDQSxRQUFNRSxpQkFBaUIsR0FBRyx1QkFBV0QsbUJBQVgsQ0FBMUI7QUFDQSxRQUFNRSxnQkFBZ0IsR0FBRyxxQkFBVUQsaUJBQVYsQ0FBekI7QUFDQSxRQUFNRSxlQUFlLEdBQUcsbUJBQVNELGdCQUFULENBQXhCO0FBQ0EsUUFBTUUsb0JBQW9CLEdBQUcsNkJBQWNELGVBQWQsQ0FBN0I7QUFDQSxRQUFNRSxtQkFBbUIsR0FBRywyQkFBYUQsb0JBQWIsQ0FBNUI7QUFDQSxTQUFPQyxtQkFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7IEV2ZW50TWl4aW4gfSBmcm9tICcuL2V2ZW50JztcbmltcG9ydCB7IEZpbmRNaXhpbiB9IGZyb20gJy4vZmluZCc7XG5pbXBvcnQgeyBMb2dNaXhpbiB9IGZyb20gJy4vbG9nJztcbmltcG9ydCB7IFNlc3Npb25NaXhpbiB9IGZyb20gJy4vc2Vzc2lvbic7XG5pbXBvcnQgeyBTZXR0aW5nc01peGluIH0gZnJvbSAnLi9zZXR0aW5ncyc7XG5pbXBvcnQgeyBUaW1lb3V0TWl4aW4gfSBmcm9tICcuL3RpbWVvdXQnO1xuXG4vKipcbiAqIEFwcGxpZXMgYWxsIHRoZSBtaXhpbnMgdG8gdGhlIGBCYXNlRHJpdmVyQmFzZWAgY2xhc3MuXG4gKiBSZXR1cm5zIGEgYEJhc2VEcml2ZXJgIGNsYXNzLlxuICogQHBhcmFtIHtCYXNlRHJpdmVyQmFzZX0gQmFzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmFzZURyaXZlckNsYXNzIChCYXNlKSB7XG4gIGNvbnN0IFdpdGhUaW1lb3V0Q29tbWFuZHMgPSBUaW1lb3V0TWl4aW4oQmFzZSk7XG4gIGNvbnN0IFdpdGhFdmVudENvbW1hbmRzID0gRXZlbnRNaXhpbihXaXRoVGltZW91dENvbW1hbmRzKTtcbiAgY29uc3QgV2l0aEZpbmRDb21tYW5kcyA9IEZpbmRNaXhpbihXaXRoRXZlbnRDb21tYW5kcyk7XG4gIGNvbnN0IFdpdGhMb2dDb21tYW5kcyA9IExvZ01peGluKFdpdGhGaW5kQ29tbWFuZHMpO1xuICBjb25zdCBXaXRoU2V0dGluZ3NDb21tYW5kcyA9IFNldHRpbmdzTWl4aW4oV2l0aExvZ0NvbW1hbmRzKTtcbiAgY29uc3QgV2l0aFNlc3Npb25Db21tYW5kcyA9IFNlc3Npb25NaXhpbihXaXRoU2V0dGluZ3NDb21tYW5kcyk7XG4gIHJldHVybiBXaXRoU2Vzc2lvbkNvbW1hbmRzO1xufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSBbVD17fV1cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL2RyaXZlcicpLkJhc2VEcml2ZXJCYXNlPFQ+fSBCYXNlRHJpdmVyQmFzZVxuICovXG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {FindBase} Base
|
|
4
|
+
* @returns {LogBase}
|
|
5
|
+
*/
|
|
6
|
+
export function LogMixin(Base: FindBase): LogBase;
|
|
7
|
+
export type ILogCommands = import('@appium/types').LogCommands;
|
|
8
|
+
export type Driver = import('@appium/types').Driver;
|
|
9
|
+
export type FindBase = import('./find').FindBase;
|
|
10
|
+
export type LogBase = import('../driver').BaseDriverBase<import('@appium/types').TimeoutCommands & import('@appium/types').EventCommands & import('@appium/types').FindCommands & ILogCommands>;
|
|
11
|
+
export type LogType<T> = import('@appium/types').LogType<T>;
|
|
12
|
+
//# sourceMappingURL=log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../../lib/basedriver/commands/log.js"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,+BAHW,QAAQ,GACN,OAAO,CA2CnB;2BAIY,OAAO,eAAe,EAAE,WAAW;qBACnC,OAAO,eAAe,EAAE,MAAM;uBAC9B,OAAO,QAAQ,EAAE,QAAQ;sBACzB,OAAO,WAAW,EAAE,cAAc,CAAC,OAAO,eAAe,EAAE,eAAe,GAAG,OAAO,eAAe,EAAE,aAAa,GAAG,OAAO,eAAe,EAAE,YAAY,GAAG,YAAY,CAAC;yBAKzK,OAAO,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC"}
|