testcafe 2.2.0 → 2.3.0-rc.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/bin/testcafe-with-v8-flag-filter.js +16 -3
- package/lib/api/exportable-lib/index.mjs +27 -0
- package/lib/api/skip-js-errors/index.js +36 -12
- package/lib/api/structure/fixture.js +6 -1
- package/lib/api/structure/test.js +7 -1
- package/lib/browser/connection/gateway.js +13 -1
- package/lib/browser/connection/index.js +6 -1
- package/lib/browser/connection/service-routes.js +2 -1
- package/lib/browser/provider/built-in/dedicated/chrome/index.js +6 -1
- package/lib/browser/provider/index.js +4 -1
- package/lib/cli/argument-parser/index.js +58 -59
- package/lib/cli/cli.js +3 -2
- package/lib/client/automation/index.js +88 -4
- package/lib/client/automation/index.min.js +1 -1
- package/lib/client/browser/idle-page/index.js +7 -5
- package/lib/client/core/deps/hammerhead.js +24 -0
- package/lib/client/core/index.js +21 -6
- package/lib/client/core/index.min.js +1 -1
- package/lib/client/driver/index.js +140 -52
- package/lib/client/driver/index.min.js +1 -1
- package/lib/client/test-run/iframe.js.mustache +2 -1
- package/lib/client/test-run/index.js.mustache +30 -28
- package/lib/client/ui/index.js +30 -23
- package/lib/client/ui/index.min.js +1 -1
- package/lib/compiler/babel/load-libs.js +10 -9
- package/lib/compiler/compilers.js +7 -7
- package/lib/compiler/esm-loader.js +38 -0
- package/lib/compiler/index.js +8 -7
- package/lib/compiler/interfaces.js +1 -1
- package/lib/compiler/prevent-module-caching-suffix.js +6 -0
- package/lib/compiler/test-file/add-export-api.js +3 -9
- package/lib/compiler/test-file/api-based.js +30 -14
- package/lib/compiler/test-file/base.js +4 -1
- package/lib/compiler/test-file/formats/coffeescript/compiler.js +5 -4
- package/lib/compiler/test-file/formats/es-next/compiler.js +23 -11
- package/lib/compiler/test-file/formats/extensions.js +15 -0
- package/lib/compiler/test-file/formats/typescript/compiler.js +27 -17
- package/lib/compiler/test-file/get-exportable-lib-path.js +17 -0
- package/lib/configuration/option-names.js +2 -1
- package/lib/errors/is-internal-stack-frame.js +3 -2
- package/lib/errors/process-test-fn-error.js +3 -2
- package/lib/errors/runtime/index.js +18 -4
- package/lib/errors/runtime/templates.js +2 -1
- package/lib/errors/test-run/utils.js +8 -3
- package/lib/errors/types.js +2 -1
- package/lib/proxyless/api-base.js +25 -0
- package/lib/proxyless/client/event-simulator.js +35 -0
- package/lib/proxyless/client/types.js +11 -0
- package/lib/proxyless/client/utils.js +24 -0
- package/lib/proxyless/console-messages/formatter.js +23 -0
- package/lib/proxyless/console-messages/index.js +56 -0
- package/lib/proxyless/console-messages/types.js +5 -0
- package/lib/proxyless/index.js +29 -2
- package/lib/proxyless/js-error-handling/index.js +70 -0
- package/lib/proxyless/native-dialogs/index.js +40 -0
- package/lib/proxyless/request-pipeline/index.js +6 -3
- package/lib/proxyless/resource-injector.js +7 -3
- package/lib/proxyless/session-storage/index.js +30 -0
- package/lib/proxyless/types.js +8 -1
- package/lib/proxyless/utils/cdp.js +19 -2
- package/lib/runner/bootstrapper.js +3 -2
- package/lib/runner/browser-job.js +1 -1
- package/lib/services/compiler/service.js +4 -4
- package/lib/services/utils/ipc/interfaces.js +1 -1
- package/lib/services/utils/ipc/proxy.js +1 -4
- package/lib/shared/utils/is-file-protocol.js +9 -0
- package/lib/test-run/commands/actions.js +2 -2
- package/lib/test-run/index.js +36 -9
- package/lib/testcafe.js +3 -3
- package/lib/utils/async-event-emitter.js +1 -1
- package/lib/utils/convert-to-best-fit-type.js +1 -1
- package/lib/utils/get-options/base.js +1 -1
- package/lib/utils/setup-sourcemap-support.js +10 -4
- package/package.json +11 -7
- package/ts-defs/index.d.ts +4 -4
- package/ts-defs/selectors.d.ts +2 -2
- package/ts-defs/testcafe-scripts.d.ts +2 -2
- package/lib/compiler/test-file/exportble-lib-path.js +0 -7
|
@@ -3,12 +3,25 @@
|
|
|
3
3
|
'use strict';
|
|
4
4
|
|
|
5
5
|
const path = require('path');
|
|
6
|
-
const
|
|
6
|
+
const url = require('url');
|
|
7
|
+
const v8FlagsFilter = require('@devexpress/bin-v8-flags-filter');
|
|
7
8
|
|
|
8
9
|
const EXPERIMENTAL_DEBUG_OPTION = '--experimental-debug';
|
|
10
|
+
const EXPERIMENTAL_ESM_OPTION = '--experimental-esm';
|
|
9
11
|
|
|
10
12
|
if (process.argv.slice(2).includes(EXPERIMENTAL_DEBUG_OPTION))
|
|
11
13
|
require('../lib/cli');
|
|
12
14
|
|
|
13
|
-
else
|
|
14
|
-
|
|
15
|
+
else {
|
|
16
|
+
const forcedArgs = [];
|
|
17
|
+
|
|
18
|
+
if (process.argv.slice(2).includes(EXPERIMENTAL_ESM_OPTION)) {
|
|
19
|
+
forcedArgs.push('--no-warnings');
|
|
20
|
+
forcedArgs.push(`--experimental-loader=${url.pathToFileURL(path.join(__dirname, '../lib/compiler/esm-loader.js')).href}`);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
v8FlagsFilter(path.join(__dirname, '../lib/cli'), {
|
|
24
|
+
useShutdownMessage: true,
|
|
25
|
+
forcedArgs,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import exportableLib from './index.js';
|
|
2
|
+
|
|
3
|
+
const {
|
|
4
|
+
Role,
|
|
5
|
+
ClientFunction,
|
|
6
|
+
Selector,
|
|
7
|
+
RequestLogger,
|
|
8
|
+
RequestMock,
|
|
9
|
+
RequestHook,
|
|
10
|
+
t,
|
|
11
|
+
userVariables,
|
|
12
|
+
fixture,
|
|
13
|
+
test,
|
|
14
|
+
} = exportableLib;
|
|
15
|
+
|
|
16
|
+
export {
|
|
17
|
+
Role,
|
|
18
|
+
ClientFunction,
|
|
19
|
+
Selector,
|
|
20
|
+
RequestLogger,
|
|
21
|
+
RequestMock,
|
|
22
|
+
RequestHook,
|
|
23
|
+
t,
|
|
24
|
+
userVariables,
|
|
25
|
+
fixture,
|
|
26
|
+
test,
|
|
27
|
+
};
|
|
@@ -6,11 +6,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.prepareSkipJsErrorsOptions = exports.ensureSkipJsErrorsCallbackWrapped = exports.isSkipJsErrorsOptionsObject = exports.isSkipJsErrorsCallbackWithOptionsObject = void 0;
|
|
7
7
|
const make_reg_exp_1 = require("../../utils/make-reg-exp");
|
|
8
8
|
const client_function_builder_1 = __importDefault(require("../../client-functions/client-function-builder"));
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
function depsToJsonWithRegExp(deps) {
|
|
10
|
+
return `{
|
|
11
|
+
stack: ${deps.stack},
|
|
12
|
+
pageUrl: ${deps.pageUrl},
|
|
13
|
+
message: ${deps.message},
|
|
14
|
+
}`;
|
|
15
|
+
}
|
|
16
|
+
function getSkipJSErrorsObjectFunction(deps, proxyless) {
|
|
17
|
+
const dependencies = proxyless ? depsToJsonWithRegExp(deps) : 'deps';
|
|
18
|
+
return `
|
|
19
|
+
let { stack, pageUrl, message } = ${dependencies};
|
|
11
20
|
|
|
12
|
-
|
|
13
|
-
|
|
21
|
+
return stack.test(err.stack) && pageUrl.test(err.pageUrl) && message.test(err.message);
|
|
22
|
+
`;
|
|
23
|
+
}
|
|
24
|
+
function getSkipJSErrorsDependenciesFunction({ fn, dependencies }) {
|
|
25
|
+
let varDeclaration = '';
|
|
26
|
+
if (dependencies)
|
|
27
|
+
varDeclaration = `const { ${Object.keys(dependencies).join(', ')} } = ${JSON.stringify(dependencies)};`;
|
|
28
|
+
return `
|
|
29
|
+
${varDeclaration}
|
|
30
|
+
|
|
31
|
+
return (${fn.toString()})(err);
|
|
32
|
+
`;
|
|
33
|
+
}
|
|
14
34
|
function isSkipJsErrorsCallbackWithOptionsObject(obj) {
|
|
15
35
|
return !!obj && typeof obj === 'object' && 'fn' in obj;
|
|
16
36
|
}
|
|
@@ -28,24 +48,28 @@ exports.ensureSkipJsErrorsCallbackWrapped = ensureSkipJsErrorsCallbackWrapped;
|
|
|
28
48
|
function wrapSkipJsErrorsCallback(options, dependencies) {
|
|
29
49
|
return { fn: options, dependencies };
|
|
30
50
|
}
|
|
31
|
-
function prepareSkipJsErrorsOptions(options) {
|
|
51
|
+
function prepareSkipJsErrorsOptions(options, proxyless) {
|
|
32
52
|
options = ensureSkipJsErrorsCallbackWrapped(options);
|
|
33
53
|
if (isSkipJsErrorsCallbackWithOptionsObject(options))
|
|
34
|
-
return createSkipJsErrorsCallbackFunction(options);
|
|
54
|
+
return createSkipJsErrorsCallbackFunction(options, proxyless);
|
|
35
55
|
if (isSkipJsErrorsOptionsObject(options))
|
|
36
|
-
return createSkipJsErrorsObjectFunction(prepareOptionsObject(options));
|
|
56
|
+
return createSkipJsErrorsObjectFunction(prepareOptionsObject(options), proxyless);
|
|
37
57
|
return options;
|
|
38
58
|
}
|
|
39
59
|
exports.prepareSkipJsErrorsOptions = prepareSkipJsErrorsOptions;
|
|
40
|
-
function createSkipJsErrorsObjectFunction(deps) {
|
|
60
|
+
function createSkipJsErrorsObjectFunction(deps, proxyless) {
|
|
41
61
|
deps.message = deps.message || new RegExp('');
|
|
42
62
|
deps.stack = deps.stack || new RegExp('');
|
|
43
63
|
deps.pageUrl = deps.pageUrl || new RegExp('');
|
|
44
|
-
const func = new Function('err',
|
|
64
|
+
const func = new Function('err', getSkipJSErrorsObjectFunction(deps, proxyless));
|
|
65
|
+
if (proxyless)
|
|
66
|
+
return func;
|
|
45
67
|
const callbackWrapper = wrapSkipJsErrorsCallback(func, { deps });
|
|
46
|
-
return createSkipJsErrorsCallbackFunction(callbackWrapper);
|
|
68
|
+
return createSkipJsErrorsCallbackFunction(callbackWrapper, false);
|
|
47
69
|
}
|
|
48
|
-
function createSkipJsErrorsCallbackFunction({ fn, dependencies }) {
|
|
70
|
+
function createSkipJsErrorsCallbackFunction({ fn, dependencies }, proxyless) {
|
|
71
|
+
if (proxyless)
|
|
72
|
+
return new Function('err', getSkipJSErrorsDependenciesFunction({ fn, dependencies }));
|
|
49
73
|
const methodName = 'skipJsErrors handler';
|
|
50
74
|
const options = { dependencies };
|
|
51
75
|
return new client_function_builder_1.default(fn, options, {
|
|
@@ -59,4 +83,4 @@ function prepareOptionsObject(opts) {
|
|
|
59
83
|
opts.pageUrl = (0, make_reg_exp_1.parseRegExpString)(opts.pageUrl);
|
|
60
84
|
return opts;
|
|
61
85
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3NraXAtanMtZXJyb3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLDJEQUE2RDtBQUU3RCw2R0FBbUY7QUFFbkYsU0FBUyxvQkFBb0IsQ0FBRSxJQUErQjtJQUMxRCxPQUFPO2lCQUNNLElBQUksQ0FBQyxLQUFLO21CQUNSLElBQUksQ0FBQyxPQUFPO21CQUNaLElBQUksQ0FBQyxPQUFPO01BQ3pCLENBQUM7QUFDUCxDQUFDO0FBRUQsU0FBUyw2QkFBNkIsQ0FBRSxJQUErQixFQUFFLFNBQWtCO0lBQ3ZGLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUVyRSxPQUFPOzRDQUNpQyxZQUFZOzs7S0FHbkQsQ0FBQztBQUNOLENBQUM7QUFFRCxTQUFTLG1DQUFtQyxDQUFFLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBeUM7SUFDckcsSUFBSSxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBRXhCLElBQUksWUFBWTtRQUNaLGNBQWMsR0FBRyxXQUFXLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztJQUU1RyxPQUFPO1VBQ0QsY0FBYzs7a0JBRU4sRUFBRSxDQUFDLFFBQVEsRUFBRTtLQUMxQixDQUFDO0FBQ04sQ0FBQztBQUVELFNBQWdCLHVDQUF1QyxDQUFFLEdBQVk7SUFDakUsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDO0FBQzNELENBQUM7QUFGRCwwRkFFQztBQUVELFNBQWdCLDJCQUEyQixDQUFFLEdBQVk7SUFDckQsT0FB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T0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGljdGlvbmFyeSwgU2tpcEpzRXJyb3JzQ2FsbGJhY2ssIFNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3QsIFNraXBKc0Vycm9yc09wdGlvbnNPYmplY3QsXG59IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBwYXJzZVJlZ0V4cFN0cmluZyB9IGZyb20gJy4uLy4uL3V0aWxzL21ha2UtcmVnLWV4cCc7XG5pbXBvcnQgeyBFeGVjdXRlQ2xpZW50RnVuY3Rpb25Db21tYW5kIH0gZnJvbSAnLi4vLi4vdGVzdC1ydW4vY29tbWFuZHMvb2JzZXJ2YXRpb24nO1xuaW1wb3J0IENsaWVudEZ1bmN0aW9uQnVpbGRlciBmcm9tICcuLi8uLi9jbGllbnQtZnVuY3Rpb25zL2NsaWVudC1mdW5jdGlvbi1idWlsZGVyJztcblxuZnVuY3Rpb24gZGVwc1RvSnNvbldpdGhSZWdFeHAgKGRlcHM6IFNraXBKc0Vycm9yc09wdGlvbnNPYmplY3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBge1xuICAgICAgICBzdGFjazogJHtkZXBzLnN0YWNrfSwgXG4gICAgICAgIHBhZ2VVcmw6ICR7ZGVwcy5wYWdlVXJsfSxcbiAgICAgICAgbWVzc2FnZTogJHtkZXBzLm1lc3NhZ2V9LCBcbiAgICB9YDtcbn1cblxuZnVuY3Rpb24gZ2V0U2tpcEpTRXJyb3JzT2JqZWN0RnVuY3Rpb24gKGRlcHM6IFNraXBKc0Vycm9yc09wdGlvbnNPYmplY3QsIHByb3h5bGVzczogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gcHJveHlsZXNzID8gZGVwc1RvSnNvbldpdGhSZWdFeHAoZGVwcykgOiAnZGVwcyc7XG5cbiAgICByZXR1cm4gYFxuICAgICAgICBsZXQgeyBzdGFjaywgcGFnZVVybCwgbWVzc2FnZSB9ID0gJHtkZXBlbmRlbmNpZXN9O1xuXG4gICAgICAgIHJldHVybiBzdGFjay50ZXN0KGVyci5zdGFjaykgJiYgcGFnZVVybC50ZXN0KGVyci5wYWdlVXJsKSAmJiBtZXNzYWdlLnRlc3QoZXJyLm1lc3NhZ2UpO1xuICAgIGA7XG59XG5cbmZ1bmN0aW9uIGdldFNraXBKU0Vycm9yc0RlcGVuZGVuY2llc0Z1bmN0aW9uICh7IGZuLCBkZXBlbmRlbmNpZXMgfTogU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09iamVjdCk6IHN0cmluZyB7XG4gICAgbGV0IHZhckRlY2xhcmF0aW9uID0gJyc7XG5cbiAgICBpZiAoZGVwZW5kZW5jaWVzKVxuICAgICAgICB2YXJEZWNsYXJhdGlvbiA9IGBjb25zdCB7ICR7T2JqZWN0LmtleXMoZGVwZW5kZW5jaWVzKS5qb2luKCcsICcpfSB9ID0gJHtKU09OLnN0cmluZ2lmeShkZXBlbmRlbmNpZXMpfTtgO1xuXG4gICAgcmV0dXJuIGBcbiAgICAgICAgJHt2YXJEZWNsYXJhdGlvbn1cbiAgICAgICAgXG4gICAgICAgIHJldHVybiAoJHtmbi50b1N0cmluZygpfSkoZXJyKTtcbiAgICBgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0IChvYmo6IHVua25vd24pOiBvYmogaXMgU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09iamVjdCB7XG4gICAgcmV0dXJuICEhb2JqICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmICdmbicgaW4gb2JqO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0IChvYmo6IHVua25vd24pOiBvYmogaXMgU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdCB7XG4gICAgcmV0dXJuICEhb2JqICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmICFpc1NraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3Qob2JqKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZVNraXBKc0Vycm9yc0NhbGxiYWNrV3JhcHBlZCAob3B0aW9uczogYm9vbGVhbiB8IFNraXBKc0Vycm9yc09wdGlvbnNPYmplY3QgfCBTa2lwSnNFcnJvcnNDYWxsYmFjayB8IFNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnNPYmplY3QsIGRlcGVuZGVuY2llczogRGljdGlvbmFyeTxhbnk+ID0ge30pOiBTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0IHwgU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09iamVjdCB8IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgcmV0dXJuIHdyYXBTa2lwSnNFcnJvcnNDYWxsYmFjayhvcHRpb25zLCBkZXBlbmRlbmNpZXMpO1xuXG4gICAgcmV0dXJuIG9wdGlvbnM7XG59XG5cbmZ1bmN0aW9uIHdyYXBTa2lwSnNFcnJvcnNDYWxsYmFjayAob3B0aW9uczogU2tpcEpzRXJyb3JzQ2FsbGJhY2ssIGRlcGVuZGVuY2llczogRGljdGlvbmFyeTxhbnk+KTogU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09iamVjdCB7XG4gICAgcmV0dXJuIHsgZm46IG9wdGlvbnMsIGRlcGVuZGVuY2llcyB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVNraXBKc0Vycm9yc09wdGlvbnMgKG9wdGlvbnM6IGJvb2xlYW4gfCBTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0IHwgU2tpcEpzRXJyb3JzQ2FsbGJhY2sgfCBTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0LCBwcm94eWxlc3M6IGJvb2xlYW4pOiBib29sZWFuIHwgRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZCB8IFNraXBKc0Vycm9yc0NhbGxiYWNrIHtcbiAgICBvcHRpb25zID0gZW5zdXJlU2tpcEpzRXJyb3JzQ2FsbGJhY2tXcmFwcGVkKG9wdGlvbnMpO1xuXG4gICAgaWYgKGlzU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09iamVjdChvcHRpb25zKSlcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVNraXBKc0Vycm9yc0NhbGxiYWNrRnVuY3Rpb24ob3B0aW9ucywgcHJveHlsZXNzKTtcblxuICAgIGlmIChpc1NraXBKc0Vycm9yc09wdGlvbnNPYmplY3Qob3B0aW9ucykpXG4gICAgICAgIHJldHVybiBjcmVhdGVTa2lwSnNFcnJvcnNPYmplY3RGdW5jdGlvbihwcmVwYXJlT3B0aW9uc09iamVjdChvcHRpb25zKSwgcHJveHlsZXNzKTtcblxuICAgIHJldHVybiBvcHRpb25zO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTa2lwSnNFcnJvcnNPYmplY3RGdW5jdGlvbiAoZGVwczogU2tpcEpzRXJyb3JzT3B0aW9uc09iamVjdCwgcHJveHlsZXNzOiBib29sZWFuKTogRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZCB8IFNraXBKc0Vycm9yc0NhbGxiYWNrIHtcbiAgICBkZXBzLm1lc3NhZ2UgPSBkZXBzLm1lc3NhZ2UgfHwgbmV3IFJlZ0V4cCgnJyk7XG4gICAgZGVwcy5zdGFjayAgID0gZGVwcy5zdGFjayB8fCBuZXcgUmVnRXhwKCcnKTtcbiAgICBkZXBzLnBhZ2VVcmwgPSBkZXBzLnBhZ2VVcmwgfHwgbmV3IFJlZ0V4cCgnJyk7XG5cbiAgICBjb25zdCBmdW5jID0gbmV3IEZ1bmN0aW9uKCdlcnInLCBnZXRTa2lwSlNFcnJvcnNPYmplY3RGdW5jdGlvbihkZXBzLCBwcm94eWxlc3MpKSBhcyBTa2lwSnNFcnJvcnNDYWxsYmFjaztcblxuICAgIGlmIChwcm94eWxlc3MpXG4gICAgICAgIHJldHVybiBmdW5jO1xuXG4gICAgY29uc3QgY2FsbGJhY2tXcmFwcGVyID0gd3JhcFNraXBKc0Vycm9yc0NhbGxiYWNrKGZ1bmMsIHsgZGVwcyB9KTtcblxuICAgIHJldHVybiBjcmVhdGVTa2lwSnNFcnJvcnNDYWxsYmFja0Z1bmN0aW9uKGNhbGxiYWNrV3JhcHBlciwgZmFsc2UpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTa2lwSnNFcnJvcnNDYWxsYmFja0Z1bmN0aW9uICh7IGZuLCBkZXBlbmRlbmNpZXMgfTogU2tpcEpzRXJyb3JzQ2FsbGJhY2tXaXRoT3B0aW9uc09iamVjdCwgcHJveHlsZXNzOiBib29sZWFuKTogRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZCB8IFNraXBKc0Vycm9yc0NhbGxiYWNrIHtcbiAgICBpZiAocHJveHlsZXNzKVxuICAgICAgICByZXR1cm4gbmV3IEZ1bmN0aW9uKCdlcnInLCBnZXRTa2lwSlNFcnJvcnNEZXBlbmRlbmNpZXNGdW5jdGlvbih7IGZuLCBkZXBlbmRlbmNpZXMgfSkpIGFzIFNraXBKc0Vycm9yc0NhbGxiYWNrO1xuXG4gICAgY29uc3QgbWV0aG9kTmFtZSA9ICdza2lwSnNFcnJvcnMgaGFuZGxlcic7XG4gICAgY29uc3Qgb3B0aW9ucyAgICA9IHsgZGVwZW5kZW5jaWVzIH07XG5cbiAgICByZXR1cm4gbmV3IENsaWVudEZ1bmN0aW9uQnVpbGRlcihmbiwgb3B0aW9ucywge1xuICAgICAgICBpbnN0YW50aWF0aW9uOiBtZXRob2ROYW1lLFxuICAgICAgICBleGVjdXRpb246ICAgICBtZXRob2ROYW1lLFxuICAgIH0pLmdldENvbW1hbmQoKTtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZU9wdGlvbnNPYmplY3QgKG9wdHM6IFNraXBKc0Vycm9yc09wdGlvbnNPYmplY3QpOiBTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0IHtcbiAgICBvcHRzLm1lc3NhZ2UgPSBwYXJzZVJlZ0V4cFN0cmluZyhvcHRzLm1lc3NhZ2UpO1xuICAgIG9wdHMuc3RhY2sgICA9IHBhcnNlUmVnRXhwU3RyaW5nKG9wdHMuc3RhY2spO1xuICAgIG9wdHMucGFnZVVybCA9IHBhcnNlUmVnRXhwU3RyaW5nKG9wdHMucGFnZVVybCk7XG5cbiAgICByZXR1cm4gb3B0cztcbn1cbiJdfQ==
|
|
@@ -28,6 +28,11 @@ class Fixture extends testing_unit_1.default {
|
|
|
28
28
|
this.globalAfterFn = null;
|
|
29
29
|
return this.apiOrigin;
|
|
30
30
|
}
|
|
31
|
+
static init(initOptions, name, ...rest) {
|
|
32
|
+
const { testFile, baseUrl } = initOptions;
|
|
33
|
+
const fixture = new Fixture(testFile, baseUrl);
|
|
34
|
+
return fixture(name, ...rest);
|
|
35
|
+
}
|
|
31
36
|
_add(name, ...rest) {
|
|
32
37
|
name = (0, handle_tag_args_1.default)(name, rest);
|
|
33
38
|
(0, type_assertions_1.assertType)(type_assertions_1.is.string, 'apiOrigin', 'The fixture name', name);
|
|
@@ -77,4 +82,4 @@ class Fixture extends testing_unit_1.default {
|
|
|
77
82
|
exports.default = Fixture;
|
|
78
83
|
testing_unit_1.default.makeAPIListForChildClass(Fixture);
|
|
79
84
|
module.exports = exports.default;
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvc3RydWN0dXJlL2ZpeHR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBZ0Q7QUFDaEQsa0VBQXlDO0FBQ3pDLDREQUFtQztBQUNuQywwRUFBc0U7QUFDdEUsa0ZBQXdEO0FBQ3hELCtFQUFxRDtBQUNyRCwrRUFBaUU7QUFDakUsMEZBQTZFO0FBQzdFLG9GQUE0RDtBQUM1RCxrREFBZ0Q7QUFDaEQsOENBQW9EO0FBSXBELDZEQUF5RDtBQU96RCxNQUFxQixPQUFRLFNBQVEsc0JBQVc7SUFTNUMsWUFBb0IsUUFBa0IsRUFBRSxPQUFnQjtRQUNwRCxNQUFNLE9BQU8sR0FBRyxPQUFPLElBQUksd0NBQWtCLENBQUM7UUFFOUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxtQkFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLElBQUksR0FBYSxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLEdBQUssSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQU0sSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQVMsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxPQUFPLEdBQVUsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUksSUFBSSxDQUFDO1FBRTNCLE9BQU8sSUFBSSxDQUFDLFNBQStCLENBQUM7SUFDaEQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFJLENBQUUsV0FBK0IsRUFBRSxJQUFZLEVBQUUsR0FBRyxJQUFlO1FBQ2pGLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEdBQUcsV0FBVyxDQUFDO1FBRTFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxD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O1FBQ2hELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTdDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0NBQ0o7QUF2R0QsMEJBdUdDO0FBRUQsc0JBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZsYXR0ZW5EZWVwIGFzIGZsYXR0ZW4gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IFRlc3RpbmdVbml0IGZyb20gJy4vdGVzdGluZy11bml0JztcbmltcG9ydCBVbml0VHlwZSBmcm9tICcuL3VuaXQtdHlwZSc7XG5pbXBvcnQgeyBhc3NlcnRUeXBlLCBpcyB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lL3R5cGUtYXNzZXJ0aW9ucyc7XG5pbXBvcnQgaGFuZGxlVGFnQXJncyBmcm9tICcuLi8uLi91dGlscy9oYW5kbGUtdGFnLWFyZ3MnO1xuaW1wb3J0IHdyYXBUZXN0RnVuY3Rpb24gZnJvbSAnLi4vd3JhcC10ZXN0LWZ1bmN0aW9uJztcbmltcG9ydCBhc3NlcnRSZXF1ZXN0SG9va1R5cGUgZnJvbSAnLi4vcmVxdWVzdC1ob29rcy9hc3NlcnQtdHlwZSc7XG5pbXBvcnQgYXNzZXJ0Q2xpZW50U2NyaXB0VHlwZSBmcm9tICcuLi8uLi9jdXN0b20tY2xpZW50LXNjcmlwdHMvYXNzZXJ0LXR5cGUnO1xuaW1wb3J0IE9QVElPTl9OQU1FUyBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL29wdGlvbi1uYW1lcyc7XG5pbXBvcnQgeyBBUElFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCBUZXN0RmlsZSBmcm9tICcuL3Rlc3QtZmlsZSc7XG5pbXBvcnQgUmVxdWVzdEhvb2sgZnJvbSAnLi4vcmVxdWVzdC1ob29rcy9ob29rJztcbmltcG9ydCBDbGllbnRTY3JpcHRJbml0IGZyb20gJy4uLy4uL2N1c3RvbS1jbGllbnQtc2NyaXB0cy9jbGllbnQtc2NyaXB0LWluaXQnO1xuaW1wb3J0IHsgU1BFQ0lBTF9CTEFOS19QQUdFIH0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5cbmludGVyZmFjZSBGaXh0dXJlSW5pdE9wdGlvbnMge1xuICAgIGJhc2VVcmw/OiBzdHJpbmc7XG4gICAgdGVzdEZpbGU6IFRlc3RGaWxlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGaXh0dXJlIGV4dGVuZHMgVGVzdGluZ1VuaXQge1xuICAgIHB1YmxpYyBwYXRoOiBzdHJpbmc7XG4gICAgcHVibGljIGJlZm9yZUVhY2hGbjogRnVuY3Rpb24gfCBudWxsO1xuICAgIHB1YmxpYyBhZnRlckVhY2hGbjogRnVuY3Rpb24gfCBudWxsO1xuICAgIHB1YmxpYyBiZWZvcmVGbjogRnVuY3Rpb24gfCBudWxsO1xuICAgIHB1YmxpYyBhZnRlckZuOiBGdW5jdGlvbiB8IG51bGw7XG4gICAgcHVibGljIGdsb2JhbEJlZm9yZUZuOiBGdW5jdGlvbiB8IG51bGw7XG4gICAgcHVibGljIGdsb2JhbEFmdGVyRm46IEZ1bmN0aW9uIHwgbnVsbDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAodGVzdEZpbGU6IFRlc3RGaWxlLCBiYXNlVXJsPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHBhZ2VVcmwgPSBiYXNlVXJsIHx8IFNQRUNJQUxfQkxBTktfUEFHRTtcblxuICAgICAgICBzdXBlcih0ZXN0RmlsZSwgVW5pdFR5cGUuZml4dHVyZSwgcGFnZVVybCwgYmFzZVVybCk7XG5cbiAgICAgICAgdGhpcy5wYXRoICAgICAgICAgICA9IHRlc3RGaWxlLmZpbGVuYW1lO1xuICAgICAgICB0aGlzLmJlZm9yZUVhY2hGbiAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5hZnRlckVhY2hGbiAgICA9IG51bGw7XG4gICAgICAgIHRoaXMuYmVmb3JlRm4gICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLmFmdGVyRm4gICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5nbG9iYWxCZWZvcmVGbiA9IG51bGw7XG4gICAgICAgIHRoaXMuZ2xvYmFsQWZ0ZXJGbiAgPSBudWxsO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbiBhcyB1bmtub3duIGFzIEZpeHR1cmU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpbml0IChpbml0T3B0aW9uczogRml4dHVyZUluaXRPcHRpb25zLCBuYW1lOiBzdHJpbmcsIC4uLnJlc3Q6IHVua25vd25bXSk6IEZpeHR1cmUgfCBudWxsIHtcbiAgICAgICAgY29uc3QgeyB0ZXN0RmlsZSwgYmFzZVVybCB9ID0gaW5pdE9wdGlvbnM7XG5cbiAgICAgICAgY29uc3QgZml4dHVyZSA9IG5ldyBGaXh0dXJlKHRlc3RGaWxlLCBiYXNlVXJsKTtcblxuICAgICAgICByZXR1cm4gKGZpeHR1cmUgYXMgdW5rbm93biBhcyBGdW5jdGlvbikobmFtZSwgLi4ucmVzdCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9hZGQgKG5hbWU6IHN0cmluZywgLi4ucmVzdDogdW5rbm93bltdKTogRnVuY3Rpb24ge1xuICAgICAgICBuYW1lID0gaGFuZGxlVGFnQXJncyhuYW1lLCByZXN0KTtcblxuICAgICAgICBhc3NlcnRUeXBlKGlzLnN0cmluZywgJ2FwaU9yaWdpbicsICdUaGUgZml4dHVyZSBuYW1lJywgbmFtZSk7XG5cbiAgICAgICAgdGhpcy5uYW1lICAgICAgICAgICAgICAgICAgICA9IG5hbWU7XG4gICAgICAgIHRoaXMudGVzdEZpbGUuY3VycmVudEZpeHR1cmUgPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9iZWZvcmUkIChmbjogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgICAgIGFzc2VydFR5cGUoaXMuZnVuY3Rpb24sICdiZWZvcmUnLCAnVGhlIGZpeHR1cmUuYmVmb3JlIGhvb2snLCBmbik7XG5cbiAgICAgICAgdGhpcy5iZWZvcmVGbiA9IGZuO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hZnRlciQgKGZuOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICAgICAgYXNzZXJ0VHlwZShpcy5mdW5jdGlvbiwgJ2FmdGVyJywgJ1RoZSBmaXh0dXJlLmFmdGVyIGhvb2snLCBmbik7XG5cbiAgICAgICAgdGhpcy5hZnRlckZuID0gZm47XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2JlZm9yZUVhY2gkIChmbjogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgICAgIGFzc2VydFR5cGUoaXMuZnVuY3Rpb24sICdiZWZvcmVFYWNoJywgJ1RoZSBmaXh0dXJlLmJlZm9yZUVhY2ggaG9vaycsIGZuKTtcblxuICAgICAgICB0aGlzLmJlZm9yZUVhY2hGbiA9IHdyYXBUZXN0RnVuY3Rpb24oZm4pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hZnRlckVhY2gkIChmbjogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgICAgIGFzc2VydFR5cGUoaXMuZnVuY3Rpb24sICdhZnRlckVhY2gnLCAnVGhlIGZpeHR1cmUuYWZ0ZXJFYWNoIGhvb2snLCBmbik7XG5cbiAgICAgICAgdGhpcy5hZnRlckVhY2hGbiA9IHdyYXBUZXN0RnVuY3Rpb24oZm4pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZXF1ZXN0SG9va3MkICguLi5ob29rczogUmVxdWVzdEhvb2tbXSk6IEZ1bmN0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuYXBpTWV0aG9kV2FzQ2FsbGVkLnJlcXVlc3RIb29rcylcbiAgICAgICAgICAgIHRocm93IG5ldyBBUElFcnJvcihPUFRJT05fTkFNRVMucmVxdWVzdEhvb2tzLCBSVU5USU1FX0VSUk9SUy5tdWx0aXBsZUFQSU1ldGhvZENhbGxGb3JiaWRkZW4sIE9QVElPTl9OQU1FUy5yZXF1ZXN0SG9va3MpO1xuXG4gICAgICAgIGhvb2tzID0gZmxhdHRlbihob29rcyk7XG5cbiAgICAgICAgYXNzZXJ0UmVxdWVzdEhvb2tUeXBlKGhvb2tzKTtcblxuICAgICAgICB0aGlzLnJlcXVlc3RIb29rcyAgICAgICAgICAgICAgICAgICAgPSBob29rcztcbiAgICAgICAgdGhpcy5hcGlNZXRob2RXYXNDYWxsZWQucmVxdWVzdEhvb2tzID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2xpZW50U2NyaXB0cyQgKC4uLnNjcmlwdHM6IENsaWVudFNjcmlwdEluaXRbXSk6IEZ1bmN0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuYXBpTWV0aG9kV2FzQ2FsbGVkLmNsaWVudFNjcmlwdHMpXG4gICAgICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoT1BUSU9OX05BTUVTLmNsaWVudFNjcmlwdHMsIFJVTlRJTUVfRVJST1JTLm11bHRpcGxlQVBJTWV0aG9kQ2FsbEZvcmJpZGRlbiwgT1BUSU9OX05BTUVTLmNsaWVudFNjcmlwdHMpO1xuXG4gICAgICAgIHNjcmlwdHMgPSBmbGF0dGVuKHNjcmlwdHMpO1xuXG4gICAgICAgIGFzc2VydENsaWVudFNjcmlwdFR5cGUoc2NyaXB0cyk7XG5cbiAgICAgICAgdGhpcy5jbGllbnRTY3JpcHRzICAgICAgICAgICAgICAgICAgICA9IHNjcmlwdHM7XG4gICAgICAgIHRoaXMuYXBpTWV0aG9kV2FzQ2FsbGVkLmNsaWVudFNjcmlwdHMgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG59XG5cblRlc3RpbmdVbml0Lm1ha2VBUElMaXN0Rm9yQ2hpbGRDbGFzcyhGaXh0dXJlKTtcbiJdfQ==
|
|
@@ -36,10 +36,16 @@ class Test extends testing_unit_1.default {
|
|
|
36
36
|
this.esmRuntime = global[esm_runtime_holder_name_1.default] || null;
|
|
37
37
|
return this.apiOrigin;
|
|
38
38
|
}
|
|
39
|
+
static init(initOptions, name, fn) {
|
|
40
|
+
const { testFile, baseUrl, isCompilerServiceMode } = initOptions;
|
|
41
|
+
const test = new Test(testFile, isCompilerServiceMode, baseUrl);
|
|
42
|
+
return test(name, fn);
|
|
43
|
+
}
|
|
39
44
|
_initFixture(testFile) {
|
|
40
45
|
this.fixture = testFile.currentFixture;
|
|
41
46
|
if (!this.fixture)
|
|
42
47
|
return;
|
|
48
|
+
this.pageUrl = this.fixture.pageUrl || testcafe_hammerhead_1.SPECIAL_BLANK_PAGE;
|
|
43
49
|
this.requestHooks = this.fixture.requestHooks.slice();
|
|
44
50
|
this.clientScripts = this.fixture.clientScripts.slice();
|
|
45
51
|
this.skipJsErrorsOptions = this.fixture.skipJsErrorsOptions;
|
|
@@ -98,4 +104,4 @@ class Test extends testing_unit_1.default {
|
|
|
98
104
|
exports.default = Test;
|
|
99
105
|
testing_unit_1.default.makeAPIListForChildClass(Test);
|
|
100
106
|
module.exports = exports.default;
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvc3RydWN0dXJlL3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBdUQ7QUFDdkQsa0VBQXlDO0FBQ3pDLDREQUFtQztBQUNuQywwRUFBc0U7QUFDdEUsK0VBQXFEO0FBQ3JELCtFQUFpRTtBQUNqRSwwRkFBNkU7QUFDN0UsOENBQW9EO0FBQ3BELGtEQUFnRDtBQUNoRCxvRkFBNEQ7QUFLNUQsNkRBQXlEO0FBRXpELGtFQUF5QztBQUN6Qyw4R0FBc0Y7QUFHdEYsTUFBcUIsSUFBSyxTQUFRLHNCQUFXO0lBV3pDLFlBQW9CLFFBQWtCLEVBQUUscUJBQXFCLEdBQUcsS0FBSyxFQUFFLE9BQWdCO1FBQ25GLDJDQUEyQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBeUIsQ0FBQztRQUNuRCxNQUFNLE9BQU8sR0FBRyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxPQUFPLEtBQUksd0NBQWtCLENBQUM7UUFFdkQsS0FBSyxDQUFDLFFBQVEsRUFBRSxtQkFBUSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFakQsSUFBSSxDQUFDLE9BQU8sR0FBVSxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLEVBQUUsR0FBZSxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBUyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBVSxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBSSxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBUyxJQUFJLENBQUM7UUFFM0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLHFCQUFxQixDQUFDO1FBRWhELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxD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QUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUV6QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztDQUNKO0FBMUhELHVCQTBIQztBQUVELHNCQUFXLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmbGF0dGVuRGVlcCBhcyBmbGF0dGVuLCB1bmlvbiB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgVGVzdGluZ1VuaXQgZnJvbSAnLi90ZXN0aW5nLXVuaXQnO1xuaW1wb3J0IFVuaXRUeXBlIGZyb20gJy4vdW5pdC10eXBlJztcbmltcG9ydCB7IGFzc2VydFR5cGUsIGlzIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUvdHlwZS1hc3NlcnRpb25zJztcbmltcG9ydCB3cmFwVGVzdEZ1bmN0aW9uIGZyb20gJy4uL3dyYXAtdGVzdC1mdW5jdGlvbic7XG5pbXBvcnQgYXNzZXJ0UmVxdWVzdEhvb2tUeXBlIGZyb20gJy4uL3JlcXVlc3QtaG9va3MvYXNzZXJ0LXR5cGUnO1xuaW1wb3J0IGFzc2VydENsaWVudFNjcmlwdFR5cGUgZnJvbSAnLi4vLi4vY3VzdG9tLWNsaWVudC1zY3JpcHRzL2Fzc2VydC10eXBlJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IE9QVElPTl9OQU1FUyBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL29wdGlvbi1uYW1lcyc7XG5pbXBvcnQgVGVzdEZpbGUgZnJvbSAnLi90ZXN0LWZpbGUnO1xuaW1wb3J0IEZpeHR1cmUgZnJvbSAnLi9maXh0dXJlJztcbmltcG9ydCBSZXF1ZXN0SG9vayBmcm9tICcuLi9yZXF1ZXN0LWhvb2tzL2hvb2snO1xuaW1wb3J0IENsaWVudFNjcmlwdEluaXQgZnJvbSAnLi4vLi4vY3VzdG9tLWNsaWVudC1zY3JpcHRzL2NsaWVudC1zY3JpcHQtaW5pdCc7XG5pbXBvcnQgeyBTUEVDSUFMX0JMQU5LX1BBR0UgfSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcbmltcG9ydCB7IFRlc3RUaW1lb3V0cyB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgVGVzdFRpbWVvdXQgZnJvbSAnLi90ZXN0LXRpbWVvdXQnO1xuaW1wb3J0IEVTTV9SVU5USU1FX0hPTERFUl9OQU1FIGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbXBpbGVyL2VzbS1ydW50aW1lLWhvbGRlci1uYW1lJztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXN0IGV4dGVuZHMgVGVzdGluZ1VuaXQge1xuICAgIHB1YmxpYyBmaXh0dXJlOiBGaXh0dXJlIHwgbnVsbDtcbiAgICBwdWJsaWMgZm46IEZ1bmN0aW9uIHwgbnVsbDtcbiAgICBwdWJsaWMgYmVmb3JlRm46IEZ1bmN0aW9uIHwgbnVsbDtcbiAgICBwdWJsaWMgYWZ0ZXJGbjogRnVuY3Rpb24gfCBudWxsO1xuICAgIHB1YmxpYyBnbG9iYWxCZWZvcmVGbjogRnVuY3Rpb24gfCBudWxsO1xuICAgIHB1YmxpYyBnbG9iYWxBZnRlckZuOiBGdW5jdGlvbiB8IG51bGw7XG4gICAgcHVibGljIHRpbWVvdXRzOiBUZXN0VGltZW91dHMgfCBudWxsO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lzQ29tcGlsZXJTZXJ2aWNlOiBib29sZWFuO1xuICAgIHB1YmxpYyByZWFkb25seSBlc21SdW50aW1lOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHRlc3RGaWxlOiBUZXN0RmlsZSwgaXNDb21waWxlclNlcnZpY2VNb2RlID0gZmFsc2UsIGJhc2VVcmw/OiBzdHJpbmcpIHtcbiAgICAgICAgLy8gTk9URTogJ2ZpeHR1cmUnIGRpcmVjdGl2ZSBjYW4gYmUgbWlzc2luZ1xuICAgICAgICBjb25zdCBmaXh0dXJlID0gdGVzdEZpbGUuY3VycmVudEZpeHR1cmUgYXMgRml4dHVyZTtcbiAgICAgICAgY29uc3QgcGFnZVVybCA9IGZpeHR1cmU/LnBhZ2VVcmwgfHwgU1BFQ0lBTF9CTEFOS19QQUdFO1xuXG4gICAgICAgIHN1cGVyKHRlc3RGaWxlLCBVbml0VHlwZS50ZXN0LCBwYWdlVXJsLCBiYXNlVXJsKTtcblxuICAgICAgICB0aGlzLmZpeHR1cmUgICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5mbiAgICAgICAgICAgICA9IG51bGw7XG4gICAgICAgIHRoaXMuYmVmb3JlRm4gICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLmFmdGVyRm4gICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5nbG9iYWxCZWZvcmVGbiA9IG51bGw7XG4gICAgICAgIHRoaXMuZ2xvYmFsQWZ0ZXJGbiAgPSBudWxsO1xuICAgICAgICB0aGlzLnRpbWVvdXRzICAgICAgID0gbnVsbDtcblxuICAgICAgICB0aGlzLl9pc0NvbXBpbGVyU2VydmljZSA9IGlzQ29tcGlsZXJTZXJ2aWNlTW9kZTtcblxuICAgICAgICB0aGlzLl9pbml0Rml4dHVyZSh0ZXN0RmlsZSk7XG5cbiAgICAgICAgLy8gTk9URTogVGhpcyBpcyBpbnRlcm5hbCBkYXRhIG9mICdlc20nIG1vZHVsZVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuZXNtUnVudGltZSA9IGdsb2JhbFtFU01fUlVOVElNRV9IT0xERVJfTkFNRV0gfHwgbnVsbDtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW4gYXMgdW5rbm93biBhcyBUZXN0O1xuICAgIH1cblxuICAgIHByaXZhdGUgX2luaXRGaXh0dXJlICh0ZXN0RmlsZTogVGVzdEZpbGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maXh0dXJlID0gdGVzdEZpbGUuY3VycmVudEZpeHR1cmU7XG5cbiAgICAgICAgaWYgKCF0aGlzLmZpeHR1cmUpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5yZXF1ZXN0SG9va3MgICAgICAgID0gdGhpcy5maXh0dXJlLnJlcXVlc3RIb29rcy5zbGljZSgpO1xuICAgICAgICB0aGlzLmNsaWVudFNjcmlwdHMgICAgICAgPSB0aGlzLmZpeHR1cmUuY2xpZW50U2NyaXB0cy5zbGljZSgpO1xuICAgICAgICB0aGlzLnNraXBKc0Vycm9yc09wdGlvbnMgPSB0aGlzLmZpeHR1cmUuc2tpcEpzRXJyb3JzT3B0aW9ucztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2FkZCAobmFtZTogc3RyaW5nLCBmbjogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgICAgIGlmICh0aGlzLl9pc0NvbXBpbGVyU2VydmljZSAmJiAhdGhpcy5maXh0dXJlKVxuICAgICAgICAgICAgdGhpcy5faW5pdEZpeHR1cmUodGhpcy50ZXN0RmlsZSk7XG5cbiAgICAgICAgYXNzZXJ0VHlwZShpcy5zdHJpbmcsICdhcGlPcmlnaW4nLCAnVGhlIHRlc3QgbmFtZScsIG5hbWUpO1xuICAgICAgICBhc3NlcnRUeXBlKGlzLmZ1bmN0aW9uLCAnYXBpT3JpZ2luJywgJ1RoZSB0ZXN0IGJvZHknLCBmbik7XG4gICAgICAgIGFzc2VydFR5cGUoaXMubm9uTnVsbE9iamVjdCwgJ2FwaU9yaWdpbicsIGBUaGUgZml4dHVyZSBvZiAnJHtuYW1lfScgdGVzdGAsIHRoaXMuZml4dHVyZSk7XG5cbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5mbiAgID0gd3JhcFRlc3RGdW5jdGlvbihmbik7XG5cbiAgICAgICAgaWYgKCF0aGlzLnRlc3RGaWxlLmNvbGxlY3RlZFRlc3RzLmluY2x1ZGVzKHRoaXMpKVxuICAgICAgICAgICAgdGhpcy50ZXN0RmlsZS5jb2xsZWN0ZWRUZXN0cy5wdXNoKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9iZWZvcmUkIChmbjogRnVuY3Rpb24pOiBGdW5jdGlvbiB7XG4gICAgICAgIGFzc2VydFR5cGUoaXMuZnVuY3Rpb24sICdiZWZvcmUnLCAnVGhlIHRlc3QuYmVmb3JlIGhvb2snLCBmbik7XG5cbiAgICAgICAgdGhpcy5iZWZvcmVGbiA9IHdyYXBUZXN0RnVuY3Rpb24oZm4pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hZnRlciQgKGZuOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICAgICAgYXNzZXJ0VHlwZShpcy5mdW5jdGlvbiwgJ2FmdGVyJywgJ1RoZSB0ZXN0LmFmdGVyIGhvb2snLCBmbik7XG5cbiAgICAgICAgdGhpcy5hZnRlckZuID0gd3JhcFRlc3RGdW5jdGlvbihmbik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlcXVlc3RIb29rcyQgKC4uLmhvb2tzOiBSZXF1ZXN0SG9va1tdKTogRnVuY3Rpb24ge1xuICAgICAgICBpZiAodGhpcy5hcGlNZXRob2RXYXNDYWxsZWQucmVxdWVzdEhvb2tzKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEFQSUVycm9yKE9QVElPTl9OQU1FUy5yZXF1ZXN0SG9va3MsIFJVTlRJTUVfRVJST1JTLm11bHRpcGxlQVBJTWV0aG9kQ2FsbEZvcmJpZGRlbiwgT1BUSU9OX05BTUVTLnJlcXVlc3RIb29rcyk7XG5cbiAgICAgICAgaG9va3MgPSBmbGF0dGVuKGhvb2tzKTtcblxuICAgICAgICBhc3NlcnRSZXF1ZXN0SG9va1R5cGUoaG9va3MpO1xuXG4gICAgICAgIHRoaXMucmVxdWVzdEhvb2tzICAgICAgICAgICAgICAgICAgICA9IHVuaW9uKHRoaXMucmVxdWVzdEhvb2tzLCBob29rcyk7XG4gICAgICAgIHRoaXMuYXBpTWV0aG9kV2FzQ2FsbGVkLnJlcXVlc3RIb29rcyA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NsaWVudFNjcmlwdHMkICguLi5zY3JpcHRzOiBDbGllbnRTY3JpcHRJbml0W10pOiBGdW5jdGlvbiB7XG4gICAgICAgIGlmICh0aGlzLmFwaU1ldGhvZFdhc0NhbGxlZC5jbGllbnRTY3JpcHRzKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEFQSUVycm9yKE9QVElPTl9OQU1FUy5jbGllbnRTY3JpcHRzLCBSVU5USU1FX0VSUk9SUy5tdWx0aXBsZUFQSU1ldGhvZENhbGxGb3JiaWRkZW4sIE9QVElPTl9OQU1FUy5jbGllbnRTY3JpcHRzKTtcblxuICAgICAgICBzY3JpcHRzID0gZmxhdHRlbihzY3JpcHRzKTtcblxuICAgICAgICBhc3NlcnRDbGllbnRTY3JpcHRUeXBlKHNjcmlwdHMpO1xuXG4gICAgICAgIHRoaXMuY2xpZW50U2NyaXB0cyAgICAgICAgICAgICAgICAgICAgPSB1bmlvbih0aGlzLmNsaWVudFNjcmlwdHMsIHNjcmlwdHMpO1xuICAgICAgICB0aGlzLmFwaU1ldGhvZFdhc0NhbGxlZC5jbGllbnRTY3JpcHRzID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdGltZW91dHMkICh0aW1lb3V0czogVGVzdFRpbWVvdXRzKTogRnVuY3Rpb24ge1xuICAgICAgICBhc3NlcnRUeXBlKGlzLnRlc3RUaW1lb3V0cywgJ3RpbWVvdXRzJywgJ3Rlc3QudGltZW91dHMnLCB0aW1lb3V0cyk7XG5cbiAgICAgICAgT2JqZWN0LmtleXMoVGVzdFRpbWVvdXQpXG4gICAgICAgICAgICAuZmlsdGVyKHRpbWVvdXQgPT4gdGltZW91dCBpbiB0aW1lb3V0cylcbiAgICAgICAgICAgIC5mb3JFYWNoKHRpbWVvdXQgPT4ge1xuICAgICAgICAgICAgICAgIGFzc2VydFR5cGUoaXMubm9uTmVnYXRpdmVOdW1iZXIsICd0aW1lb3V0cycsIGB0ZXN0LnRpbWVvdXRzLiR7dGltZW91dH1gLCB0aW1lb3V0c1t0aW1lb3V0IGFzIGtleW9mIFRlc3RUaW1lb3V0c10pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy50aW1lb3V0cyA9IHRpbWVvdXRzO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG59XG5cblRlc3RpbmdVbml0Lm1ha2VBUElMaXN0Rm9yQ2hpbGRDbGFzcyhUZXN0KTtcbiJdfQ==
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvc3RydWN0dXJlL3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBdUQ7QUFDdkQsa0VBQXlDO0FBQ3pDLDREQUFtQztBQUNuQywwRUFBc0U7QUFDdEUsK0VBQXFEO0FBQ3JELCtFQUFpRTtBQUNqRSwwRkFBNkU7QUFDN0UsOENBQW9EO0FBQ3BELGtEQUFnRDtBQUNoRCxvRkFBNEQ7QUFLNUQsNkRBQXlEO0FBRXpELGtFQUF5QztBQUN6Qyw4R0FBc0Y7QUFRdEYsTUFBcUIsSUFBSyxTQUFRLHNCQUFXO0lBV3pDLFlBQW9CLFFBQWtCLEVBQUUscUJBQXFCLEdBQUcsS0FBSyxFQUFFLE9BQWdCO1FBQ25GLDJDQUEyQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBeUIsQ0FBQztRQUNuRCxNQUFNLE9BQU8sR0FBRyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxPQUFPLEtBQUksd0NBQWtCLENBQUM7UUFFdkQsS0FBSyxDQUFDLFFBQVEsRUFBRSxtQkFBUSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFakQsSUFBSSxDQUFDLE9BQU8sR0FBVSxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLEVBQUUsR0FBZSxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBUyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBVSxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBSSxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBUyxJQUFJLENBQUM7UUFFM0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLHFCQUFxQixDQUFDO1FBRWhELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUIsOENBQThDO1FBQzlDLGFBQWE7UUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxpQ0FBdUIsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUUxRCxPQUFPLElBQUksQ0FBQyxTQUE0QixDQUFDO0lBQzdDLENBQUM7SUFFTSxNQUFNLENBQUMsSUFBSSxDQUFFLFdBQTRCLEVBQUUsSUFBWSxFQUFFLEVBQVk7UUFDeEUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxXQUFXLENBQUM7UUFFakUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWhFLE9BQVEsSUFBNEIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLFlBQVksQ0FBRSxRQUFrQjtRQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7UUFFdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQ2IsT0FBTztRQUVYLElBQUksQ0FBQyxPQUFPLEdBQWUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksd0NBQWtCLENBQUM7UUFDdEUsSUFBSSxDQUFDLFlBQVksR0FBVSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3RCxJQUFJLENBQUMsYUFBYSxHQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO0lBQ2hFLENBQUM7SUFFUyxJQUFJLENBQUUsSUFBWSxFQUFFLEVBQVk7UUFDdEMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVyQyxJQUFBLDRCQUFVLEVBQUMsb0JBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRCxJQUFBLDRCQUFVLEVBQUMsb0JBQUUsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFBLDRCQUFVLEVBQUMsb0JBQUUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixJQUFJLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFekYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLEVBQUUsR0FBSyxJQUFBLDRCQUFnQixFQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWpDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVPLFFBQVEsQ0FBRSxFQUFZO1FBQzFCLElBQUEsNEJBQVUsRUFBQyxvQkFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFBLDRCQUFnQixFQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXJDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRU8sT0FBTyxDQUFFLEVBQVk7UUFDekIsSUFBQSw0QkFBVSxFQUFDLG9CQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU1RCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUEsNEJBQWdCLEVBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFTyxjQUFjLENBQUUsR0FBRyxLQUFvQjtRQUMzQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZO1lBQ3BDLE1BQU0sSUFBSSxrQkFBUSxDQUFDLHNCQUFZLENBQUMsWUFBWSxFQUFFLHNCQUFjLENBQUMsOEJBQThCLEVBQUUsc0JBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU1SCxLQUFLLEdBQUcsSUFBQSxvQkFBTyxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXZCLElBQUEscUJBQXFCLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0IsSUFBSSxDQUFDLFlBQVksR0FBc0IsSUFBQSxjQUFLLEVBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUU1QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVPLGVBQWUsQ0FBRSxHQUFHLE9BQTJCO1FBQ25ELElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWE7WUFDckMsTUFBTSxJQUFJLGtCQUFRLENBQUMsc0JBQVksQ0FBQyxhQUFhLEVBQUUsc0JBQWMsQ0FBQyw4QkFBOEIsRUFBRSxzQkFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTlILE9BQU8sR0FBRyxJQUFBLG9CQUFPLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0IsSUFBQSxxQkFBc0IsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUVoQyxJQUFJLENBQUMsYUFBYSxHQUFzQixJQUFBLGNBQUssRUFBQyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTdDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRU8sVUFBVSxDQUFFLFFBQXNCO1FBQ3RDLElBQUEsNEJBQVUsRUFBQyxvQkFBRSxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRW5FLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQVcsQ0FBQzthQUNuQixNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDO2FBQ3RDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNmLElBQUEsNEJBQVUsRUFBQyxvQkFBRSxDQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxpQkFBaUIsT0FBTyxFQUFFLEVBQUUsUUFBUSxDQUFDLE9BQTZCLENBQUMsQ0FBQyxDQUFDO1FBQ3RILENBQUMsQ0FBQyxDQUFDO1FBRVAsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFekIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7Q0FDSjtBQW5JRCx1QkFtSUM7QUFFRCxzQkFBVyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmxhdHRlbkRlZXAgYXMgZmxhdHRlbiwgdW5pb24gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IFRlc3RpbmdVbml0IGZyb20gJy4vdGVzdGluZy11bml0JztcbmltcG9ydCBVbml0VHlwZSBmcm9tICcuL3VuaXQtdHlwZSc7XG5pbXBvcnQgeyBhc3NlcnRUeXBlLCBpcyB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lL3R5cGUtYXNzZXJ0aW9ucyc7XG5pbXBvcnQgd3JhcFRlc3RGdW5jdGlvbiBmcm9tICcuLi93cmFwLXRlc3QtZnVuY3Rpb24nO1xuaW1wb3J0IGFzc2VydFJlcXVlc3RIb29rVHlwZSBmcm9tICcuLi9yZXF1ZXN0LWhvb2tzL2Fzc2VydC10eXBlJztcbmltcG9ydCBhc3NlcnRDbGllbnRTY3JpcHRUeXBlIGZyb20gJy4uLy4uL2N1c3RvbS1jbGllbnQtc2NyaXB0cy9hc3NlcnQtdHlwZSc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uLy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgeyBBUElFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCBPUFRJT05fTkFNRVMgZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9vcHRpb24tbmFtZXMnO1xuaW1wb3J0IFRlc3RGaWxlIGZyb20gJy4vdGVzdC1maWxlJztcbmltcG9ydCBGaXh0dXJlIGZyb20gJy4vZml4dHVyZSc7XG5pbXBvcnQgUmVxdWVzdEhvb2sgZnJvbSAnLi4vcmVxdWVzdC1ob29rcy9ob29rJztcbmltcG9ydCBDbGllbnRTY3JpcHRJbml0IGZyb20gJy4uLy4uL2N1c3RvbS1jbGllbnQtc2NyaXB0cy9jbGllbnQtc2NyaXB0LWluaXQnO1xuaW1wb3J0IHsgU1BFQ0lBTF9CTEFOS19QQUdFIH0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5pbXBvcnQgeyBUZXN0VGltZW91dHMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IFRlc3RUaW1lb3V0IGZyb20gJy4vdGVzdC10aW1lb3V0JztcbmltcG9ydCBFU01fUlVOVElNRV9IT0xERVJfTkFNRSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21waWxlci9lc20tcnVudGltZS1ob2xkZXItbmFtZSc7XG5cbmludGVyZmFjZSBUZXN0SW5pdE9wdGlvbnMge1xuICAgIHRlc3RGaWxlOiBUZXN0RmlsZTtcbiAgICBiYXNlVXJsPzogc3RyaW5nO1xuICAgIGlzQ29tcGlsZXJTZXJ2aWNlTW9kZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlc3QgZXh0ZW5kcyBUZXN0aW5nVW5pdCB7XG4gICAgcHVibGljIGZpeHR1cmU6IEZpeHR1cmUgfCBudWxsO1xuICAgIHB1YmxpYyBmbjogRnVuY3Rpb24gfCBudWxsO1xuICAgIHB1YmxpYyBiZWZvcmVGbjogRnVuY3Rpb24gfCBudWxsO1xuICAgIHB1YmxpYyBhZnRlckZuOiBGdW5jdGlvbiB8IG51bGw7XG4gICAgcHVibGljIGdsb2JhbEJlZm9yZUZuOiBGdW5jdGlvbiB8IG51bGw7XG4gICAgcHVibGljIGdsb2JhbEFmdGVyRm46IEZ1bmN0aW9uIHwgbnVsbDtcbiAgICBwdWJsaWMgdGltZW91dHM6IFRlc3RUaW1lb3V0cyB8IG51bGw7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfaXNDb21waWxlclNlcnZpY2U6IGJvb2xlYW47XG4gICAgcHVibGljIHJlYWRvbmx5IGVzbVJ1bnRpbWU6IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAodGVzdEZpbGU6IFRlc3RGaWxlLCBpc0NvbXBpbGVyU2VydmljZU1vZGUgPSBmYWxzZSwgYmFzZVVybD86IHN0cmluZykge1xuICAgICAgICAvLyBOT1RFOiAnZml4dHVyZScgZGlyZWN0aXZlIGNhbiBiZSBtaXNzaW5nXG4gICAgICAgIGNvbnN0IGZpeHR1cmUgPSB0ZXN0RmlsZS5jdXJyZW50Rml4dHVyZSBhcyBGaXh0dXJlO1xuICAgICAgICBjb25zdCBwYWdlVXJsID0gZml4dHVyZT8ucGFnZVVybCB8fCBTUEVDSUFMX0JMQU5LX1BBR0U7XG5cbiAgICAgICAgc3VwZXIodGVzdEZpbGUsIFVuaXRUeXBlLnRlc3QsIHBhZ2VVcmwsIGJhc2VVcmwpO1xuXG4gICAgICAgIHRoaXMuZml4dHVyZSAgICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLmZuICAgICAgICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5iZWZvcmVGbiAgICAgICA9IG51bGw7XG4gICAgICAgIHRoaXMuYWZ0ZXJGbiAgICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLmdsb2JhbEJlZm9yZUZuID0gbnVsbDtcbiAgICAgICAgdGhpcy5nbG9iYWxBZnRlckZuICA9IG51bGw7XG4gICAgICAgIHRoaXMudGltZW91dHMgICAgICAgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuX2lzQ29tcGlsZXJTZXJ2aWNlID0gaXNDb21waWxlclNlcnZpY2VNb2RlO1xuXG4gICAgICAgIHRoaXMuX2luaXRGaXh0dXJlKHRlc3RGaWxlKTtcblxuICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGludGVybmFsIGRhdGEgb2YgJ2VzbScgbW9kdWxlXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy5lc21SdW50aW1lID0gZ2xvYmFsW0VTTV9SVU5USU1FX0hPTERFUl9OQU1FXSB8fCBudWxsO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbiBhcyB1bmtub3duIGFzIFRlc3Q7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpbml0IChpbml0T3B0aW9uczogVGVzdEluaXRPcHRpb25zLCBuYW1lOiBzdHJpbmcsIGZuOiBGdW5jdGlvbik6IFRlc3Qge1xuICAgICAgICBjb25zdCB7IHRlc3RGaWxlLCBiYXNlVXJsLCBpc0NvbXBpbGVyU2VydmljZU1vZGUgfSA9IGluaXRPcHRpb25zO1xuXG4gICAgICAgIGNvbnN0IHRlc3QgPSBuZXcgVGVzdCh0ZXN0RmlsZSwgaXNDb21waWxlclNlcnZpY2VNb2RlLCBiYXNlVXJsKTtcblxuICAgICAgICByZXR1cm4gKHRlc3QgYXMgdW5rbm93biBhcyBGdW5jdGlvbikobmFtZSwgZm4pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2luaXRGaXh0dXJlICh0ZXN0RmlsZTogVGVzdEZpbGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maXh0dXJlID0gdGVzdEZpbGUuY3VycmVudEZpeHR1cmU7XG5cbiAgICAgICAgaWYgKCF0aGlzLmZpeHR1cmUpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgdGhpcy5wYWdlVXJsICAgICAgICAgICAgID0gdGhpcy5maXh0dXJlLnBhZ2VVcmwgfHwgU1BFQ0lBTF9CTEFOS19QQUdFO1xuICAgICAgICB0aGlzLnJlcXVlc3RIb29rcyAgICAgICAgPSB0aGlzLmZpeHR1cmUucmVxdWVzdEhvb2tzLnNsaWNlKCk7XG4gICAgICAgIHRoaXMuY2xpZW50U2NyaXB0cyAgICAgICA9IHRoaXMuZml4dHVyZS5jbGllbnRTY3JpcHRzLnNsaWNlKCk7XG4gICAgICAgIHRoaXMuc2tpcEpzRXJyb3JzT3B0aW9ucyA9IHRoaXMuZml4dHVyZS5za2lwSnNFcnJvcnNPcHRpb25zO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfYWRkIChuYW1lOiBzdHJpbmcsIGZuOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ29tcGlsZXJTZXJ2aWNlICYmICF0aGlzLmZpeHR1cmUpXG4gICAgICAgICAgICB0aGlzLl9pbml0Rml4dHVyZSh0aGlzLnRlc3RGaWxlKTtcblxuICAgICAgICBhc3NlcnRUeXBlKGlzLnN0cmluZywgJ2FwaU9yaWdpbicsICdUaGUgdGVzdCBuYW1lJywgbmFtZSk7XG4gICAgICAgIGFzc2VydFR5cGUoaXMuZnVuY3Rpb24sICdhcGlPcmlnaW4nLCAnVGhlIHRlc3QgYm9keScsIGZuKTtcbiAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OdWxsT2JqZWN0LCAnYXBpT3JpZ2luJywgYFRoZSBmaXh0dXJlIG9mICcke25hbWV9JyB0ZXN0YCwgdGhpcy5maXh0dXJlKTtcblxuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmZuICAgPSB3cmFwVGVzdEZ1bmN0aW9uKGZuKTtcblxuICAgICAgICBpZiAoIXRoaXMudGVzdEZpbGUuY29sbGVjdGVkVGVzdHMuaW5jbHVkZXModGhpcykpXG4gICAgICAgICAgICB0aGlzLnRlc3RGaWxlLmNvbGxlY3RlZFRlc3RzLnB1c2godGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2JlZm9yZSQgKGZuOiBGdW5jdGlvbik6IEZ1bmN0aW9uIHtcbiAgICAgICAgYXNzZXJ0VHlwZShpcy5mdW5jdGlvbiwgJ2JlZm9yZScsICdUaGUgdGVzdC5iZWZvcmUgaG9vaycsIGZuKTtcblxuICAgICAgICB0aGlzLmJlZm9yZUZuID0gd3JhcFRlc3RGdW5jdGlvbihmbik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FmdGVyJCAoZm46IEZ1bmN0aW9uKTogRnVuY3Rpb24ge1xuICAgICAgICBhc3NlcnRUeXBlKGlzLmZ1bmN0aW9uLCAnYWZ0ZXInLCAnVGhlIHRlc3QuYWZ0ZXIgaG9vaycsIGZuKTtcblxuICAgICAgICB0aGlzLmFmdGVyRm4gPSB3cmFwVGVzdEZ1bmN0aW9uKGZuKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVxdWVzdEhvb2tzJCAoLi4uaG9va3M6IFJlcXVlc3RIb29rW10pOiBGdW5jdGlvbiB7XG4gICAgICAgIGlmICh0aGlzLmFwaU1ldGhvZFdhc0NhbGxlZC5yZXF1ZXN0SG9va3MpXG4gICAgICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoT1BUSU9OX05BTUVTLnJlcXVlc3RIb29rcywgUlVOVElNRV9FUlJPUlMubXVsdGlwbGVBUElNZXRob2RDYWxsRm9yYmlkZGVuLCBPUFRJT05fTkFNRVMucmVxdWVzdEhvb2tzKTtcblxuICAgICAgICBob29rcyA9IGZsYXR0ZW4oaG9va3MpO1xuXG4gICAgICAgIGFzc2VydFJlcXVlc3RIb29rVHlwZShob29rcyk7XG5cbiAgICAgICAgdGhpcy5yZXF1ZXN0SG9va3MgICAgICAgICAgICAgICAgICAgID0gdW5pb24odGhpcy5yZXF1ZXN0SG9va3MsIGhvb2tzKTtcbiAgICAgICAgdGhpcy5hcGlNZXRob2RXYXNDYWxsZWQucmVxdWVzdEhvb2tzID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGlPcmlnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2xpZW50U2NyaXB0cyQgKC4uLnNjcmlwdHM6IENsaWVudFNjcmlwdEluaXRbXSk6IEZ1bmN0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuYXBpTWV0aG9kV2FzQ2FsbGVkLmNsaWVudFNjcmlwdHMpXG4gICAgICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoT1BUSU9OX05BTUVTLmNsaWVudFNjcmlwdHMsIFJVTlRJTUVfRVJST1JTLm11bHRpcGxlQVBJTWV0aG9kQ2FsbEZvcmJpZGRlbiwgT1BUSU9OX05BTUVTLmNsaWVudFNjcmlwdHMpO1xuXG4gICAgICAgIHNjcmlwdHMgPSBmbGF0dGVuKHNjcmlwdHMpO1xuXG4gICAgICAgIGFzc2VydENsaWVudFNjcmlwdFR5cGUoc2NyaXB0cyk7XG5cbiAgICAgICAgdGhpcy5jbGllbnRTY3JpcHRzICAgICAgICAgICAgICAgICAgICA9IHVuaW9uKHRoaXMuY2xpZW50U2NyaXB0cywgc2NyaXB0cyk7XG4gICAgICAgIHRoaXMuYXBpTWV0aG9kV2FzQ2FsbGVkLmNsaWVudFNjcmlwdHMgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaU9yaWdpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIF90aW1lb3V0cyQgKHRpbWVvdXRzOiBUZXN0VGltZW91dHMpOiBGdW5jdGlvbiB7XG4gICAgICAgIGFzc2VydFR5cGUoaXMudGVzdFRpbWVvdXRzLCAndGltZW91dHMnLCAndGVzdC50aW1lb3V0cycsIHRpbWVvdXRzKTtcblxuICAgICAgICBPYmplY3Qua2V5cyhUZXN0VGltZW91dClcbiAgICAgICAgICAgIC5maWx0ZXIodGltZW91dCA9PiB0aW1lb3V0IGluIHRpbWVvdXRzKVxuICAgICAgICAgICAgLmZvckVhY2godGltZW91dCA9PiB7XG4gICAgICAgICAgICAgICAgYXNzZXJ0VHlwZShpcy5ub25OZWdhdGl2ZU51bWJlciwgJ3RpbWVvdXRzJywgYHRlc3QudGltZW91dHMuJHt0aW1lb3V0fWAsIHRpbWVvdXRzW3RpbWVvdXQgYXMga2V5b2YgVGVzdFRpbWVvdXRzXSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnRpbWVvdXRzID0gdGltZW91dHM7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpT3JpZ2luO1xuICAgIH1cbn1cblxuVGVzdGluZ1VuaXQubWFrZUFQSUxpc3RGb3JDaGlsZENsYXNzKFRlc3QpO1xuIl19
|
|
@@ -47,6 +47,7 @@ class BrowserConnectionGateway {
|
|
|
47
47
|
this._dispatch(`${service_routes_1.default.activeWindowId}/{id}`, proxy, BrowserConnectionGateway._onSetActiveWindowIdRequest, 'POST', this.proxyless);
|
|
48
48
|
this._dispatch(`${service_routes_1.default.closeWindow}/{id}`, proxy, BrowserConnectionGateway._onCloseWindowRequest, 'POST');
|
|
49
49
|
this._dispatch(`${service_routes_1.default.openFileProtocol}/{id}`, proxy, BrowserConnectionGateway._onOpenFileProtocolRequest, 'POST');
|
|
50
|
+
this._dispatch(`${service_routes_1.default.dispatchProxylessEvent}/{id}`, proxy, BrowserConnectionGateway._onDispatchProxylessEvent, 'POST', this.proxyless);
|
|
50
51
|
proxy.GET(service_routes_1.default.connect, (req, res) => this._connectNextRemoteBrowser(req, res));
|
|
51
52
|
proxy.GET(service_routes_1.default.connectWithTrailingSlash, (req, res) => this._connectNextRemoteBrowser(req, res));
|
|
52
53
|
proxy.GET(service_routes_1.default.serviceWorker, { content: serviceWorkerScript, contentType: 'application/x-javascript' });
|
|
@@ -164,6 +165,17 @@ class BrowserConnectionGateway {
|
|
|
164
165
|
});
|
|
165
166
|
}
|
|
166
167
|
}
|
|
168
|
+
static _onDispatchProxylessEvent(req, res, connection) {
|
|
169
|
+
if (BrowserConnectionGateway._ensureConnectionReady(res, connection)) {
|
|
170
|
+
BrowserConnectionGateway._fetchRequestData(req, data => {
|
|
171
|
+
const { type, options } = JSON.parse(data);
|
|
172
|
+
connection.dispatchProxylessEvent(type, options)
|
|
173
|
+
.then(() => {
|
|
174
|
+
(0, http_1.respondWithJSON)(res);
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
167
179
|
async _connectNextRemoteBrowser(req, res) {
|
|
168
180
|
(0, http_1.preventCaching)(res);
|
|
169
181
|
const remoteConnection = await this._remotesQueue.shift();
|
|
@@ -190,4 +202,4 @@ class BrowserConnectionGateway {
|
|
|
190
202
|
}
|
|
191
203
|
exports.default = BrowserConnectionGateway;
|
|
192
204
|
module.exports = exports.default;
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9icm93c2VyL2Nvbm5lY3Rpb24vZ2F0ZXdheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9FQUEyQztBQUMzQywyQ0FNMEI7QUFFMUIsb0VBQTJDO0FBQzNDLDZEQUErRDtBQUkvRCxzRUFBOEM7QUFDOUMsMEZBQWtFO0FBQ2xFLDhFQUFnRTtBQUVoRSxNQUFxQix3QkFBd0I7SUFRekMsWUFBb0IsS0FBWSxFQUFFLE9BQXdEO1FBUGxGLGlCQUFZLEdBQWtDLEVBQUUsQ0FBQztRQVFyRCxJQUFJLENBQUMsYUFBYSxHQUFLLElBQUksdUJBQVksRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxVQUFVLEdBQVEsS0FBSyxDQUFDLHlCQUF5QixDQUFDLHdCQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLGNBQWMsR0FBSSxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzlDLElBQUksQ0FBQyxTQUFTLEdBQVMsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFhLEtBQUssQ0FBQztRQUU3QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxTQUFTLENBQUUsR0FBVyxFQUFFLEtBQVksRUFBRSxPQUFpQixFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQUUsdUJBQWlDO1FBQzlHLHlFQUF5RTtRQUN6RSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBb0IsRUFBRSxHQUFtQixFQUFFLFVBQVUsRUFBRSxNQUEwQixFQUFFLEVBQUU7WUFDckcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFaEQsSUFBQSxxQkFBYyxFQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXBCLElBQUksdUJBQXVC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Li4vLi4vbG9hZC1hc3NldHMnO1xuaW1wb3J0IHtcbiAgICByZXNwb25kNDA0LFxuICAgIHJlc3BvbmQ1MDAsXG4gICAgcmVzcG9uZFdpdGhKU09OLFxuICAgIHJlZGlyZWN0LFxuICAgIHByZXZlbnRDYWNoaW5nLFxufSBmcm9tICcuLi8uLi91dGlscy9odHRwJztcblxuaW1wb3J0IFJlbW90ZXNRdWV1ZSBmcm9tICcuL3JlbW90ZXMtcXVldWUnO1xuaW1wb3J0IHsgUHJveHksIGFjY2VwdENyb3NzT3JpZ2luIH0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7IEluY29taW5nTWVzc2FnZSwgU2VydmVyUmVzcG9uc2UgfSBmcm9tICdodHRwJztcbmltcG9ydCBTRVJWSUNFX1JPVVRFUyBmcm9tICcuL3NlcnZpY2Utcm91dGVzJztcbmltcG9ydCBFTVBUWV9QQUdFX01BUktVUCBmcm9tICcuLi8uLi9wcm94eWxlc3MvZW1wdHktcGFnZS1tYXJrdXAnO1xuaW1wb3J0IFBST1hZTEVTU19FUlJPUl9ST1VURSBmcm9tICcuLi8uLi9wcm94eWxlc3MvZXJyb3Itcm91dGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkge1xuICAgIHByaXZhdGUgX2Nvbm5lY3Rpb25zOiBEaWN0aW9uYXJ5PEJyb3dzZXJDb25uZWN0aW9uPiA9IHt9O1xuICAgIHByaXZhdGUgX3JlbW90ZXNRdWV1ZTogUmVtb3Rlc1F1ZXVlO1xuICAgIHB1YmxpYyByZWFkb25seSBjb25uZWN0VXJsOiBzdHJpbmc7XG4gICAgcHVibGljIHJldHJ5VGVzdFBhZ2VzOiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJveHlsZXNzOiBib29sZWFuO1xuICAgIHB1YmxpYyByZWFkb25seSBwcm94eTogUHJveHk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHByb3h5OiBQcm94eSwgb3B0aW9uczogeyByZXRyeVRlc3RQYWdlczogYm9vbGVhbjsgcHJveHlsZXNzOiBib29sZWFuIH0pIHtcbiAgICAgICAgdGhpcy5fcmVtb3Rlc1F1ZXVlICAgPSBuZXcgUmVtb3Rlc1F1ZXVlKCk7XG4gICAgICAgIHRoaXMuY29ubmVjdFVybCAgICAgID0gcHJveHkucmVzb2x2ZVJlbGF0aXZlU2VydmljZVVybChTRVJWSUNFX1JPVVRFUy5jb25uZWN0KTtcbiAgICAgICAgdGhpcy5yZXRyeVRlc3RQYWdlcyAgPSBvcHRpb25zLnJldHJ5VGVzdFBhZ2VzO1xuICAgICAgICB0aGlzLnByb3h5bGVzcyAgICAgICA9IG9wdGlvbnMucHJveHlsZXNzO1xuICAgICAgICB0aGlzLnByb3h5ICAgICAgICAgICA9IHByb3h5O1xuXG4gICAgICAgIHRoaXMuX3JlZ2lzdGVyUm91dGVzKHByb3h5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kaXNwYXRjaCAodXJsOiBzdHJpbmcsIHByb3h5OiBQcm94eSwgaGFuZGxlcjogRnVuY3Rpb24sIG1ldGhvZCA9ICdHRVQnLCBzaG91bGRBY2NlcHRDcm9zc09yaWdpbj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZSBOZWVkIHRvIGltcHJvdmUgdHlwaW5ncyBvZiB0aGUgJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnIG1vZHVsZVxuICAgICAgICBwcm94eVttZXRob2RdKHVybCwgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBzZXJ2ZXJJbmZvLCBwYXJhbXM6IERpY3Rpb25hcnk8c3RyaW5nPikgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuX2Nvbm5lY3Rpb25zW3BhcmFtcy5pZF07XG5cbiAgICAgICAgICAgIHByZXZlbnRDYWNoaW5nKHJlcyk7XG5cbiAgICAgICAgICAgIGlmIChzaG91bGRBY2NlcHRDcm9zc09yaWdpbilcbiAgICAgICAgICAgICAgICBhY2NlcHRDcm9zc09yaWdpbihyZXMpO1xuXG4gICAgICAgICAgICBpZiAoY29ubmVjdGlvbilcbiAgICAgICAgICAgICAgICBoYW5kbGVyKHJlcSwgcmVzLCBjb25uZWN0aW9uKTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICByZXNwb25kNDA0KHJlcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlZ2lzdGVyUm91dGVzIChwcm94eTogUHJveHkpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgaWRsZVBhZ2VTY3JpcHQsXG4gICAgICAgICAgICBpZGxlUGFnZVN0eWxlLFxuICAgICAgICAgICAgaWRsZVBhZ2VMb2dvLFxuICAgICAgICAgICAgc2VydmljZVdvcmtlclNjcmlwdCxcbiAgICAgICAgfSA9IGxvYWRBc3NldHMoKTtcblxuICAgICAgICB0aGlzLl9kaXNwYXRjaChgJHtTRVJWSUNFX1JPVVRFUy5jb25uZWN0fS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25Db25uZWN0aW9uKTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMuaGVhcnRiZWF0fS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25IZWFydGJlYXQsICdHRVQnLCB0aGlzLnByb3h5bGVzcyk7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoKGAke1NFUlZJQ0VfUk9VVEVTLmlkbGV9L3tpZH1gLCBwcm94eSwgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9vbklkbGUpO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaChgJHtTRVJWSUNFX1JPVVRFUy5pZGxlRm9yY2VkfS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25JZGxlRm9yY2VkKTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMuc3RhdHVzfS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25TdGF0dXNSZXF1ZXN0KTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMuc3RhdHVzRG9uZX0ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uU3RhdHVzUmVxdWVzdE9uVGVzdERvbmUsICdHRVQnLCB0aGlzLnByb3h5bGVzcyk7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoKGAke1NFUlZJQ0VfUk9VVEVTLmluaXRTY3JpcHR9L3tpZH1gLCBwcm94eSwgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9vbkluaXRTY3JpcHRSZXF1ZXN0KTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMuaW5pdFNjcmlwdH0ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uSW5pdFNjcmlwdFJlc3BvbnNlLCAnUE9TVCcpO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaChgJHtTRVJWSUNFX1JPVVRFUy5hY3RpdmVXaW5kb3dJZH0ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uR2V0QWN0aXZlV2luZG93SWRSZXF1ZXN0LCAnR0VUJywgdGhpcy5wcm94eWxlc3MpO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaChgJHtTRVJWSUNFX1JPVVRFUy5hY3RpdmVXaW5kb3dJZH0ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uU2V0QWN0aXZlV2luZG93SWRSZXF1ZXN0LCAnUE9TVCcsIHRoaXMucHJveHlsZXNzKTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMuY2xvc2VXaW5kb3d9L3tpZH1gLCBwcm94eSwgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9vbkNsb3NlV2luZG93UmVxdWVzdCwgJ1BPU1QnKTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMub3BlbkZpbGVQcm90b2NvbH0ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uT3BlbkZpbGVQcm90b2NvbFJlcXVlc3QsICdQT1NUJyk7XG5cbiAgICAgICAgcHJveHkuR0VUKFNFUlZJQ0VfUk9VVEVTLmNvbm5lY3QsIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSkgPT4gdGhpcy5fY29ubmVjdE5leHRSZW1vdGVCcm93c2VyKHJlcSwgcmVzKSk7XG4gICAgICAgIHByb3h5LkdFVChTRVJWSUNFX1JPVVRFUy5jb25uZWN0V2l0aFRyYWlsaW5nU2xhc2gsIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSkgPT4gdGhpcy5fY29ubmVjdE5leHRSZW1vdGVCcm93c2VyKHJlcSwgcmVzKSk7XG5cbiAgICAgICAgcHJveHkuR0VUKFNFUlZJQ0VfUk9VVEVTLnNlcnZpY2VXb3JrZXIsIHsgY29udGVudDogc2VydmljZVdvcmtlclNjcmlwdCwgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnIH0pO1xuICAgICAgICBwcm94eS5HRVQoU0VSVklDRV9ST1VURVMuYXNzZXRzLmluZGV4LCB7IGNvbnRlbnQ6IGlkbGVQYWdlU2NyaXB0LCBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCcgfSk7XG4gICAgICAgIHByb3h5LkdFVChTRVJWSUNFX1JPVVRFUy5hc3NldHMuc3R5bGVzLCB7IGNvbnRlbnQ6IGlkbGVQYWdlU3R5bGUsIGNvbnRlbnRUeXBlOiAndGV4dC9jc3MnIH0pO1xuICAgICAgICBwcm94eS5HRVQoU0VSVklDRV9ST1VURVMuYXNzZXRzLmxvZ28sIHsgY29udGVudDogaWRsZVBhZ2VMb2dvLCBjb250ZW50VHlwZTogJ2ltYWdlL3N2Zyt4bWwnIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3h5bGVzcykge1xuICAgICAgICAgICAgcHJveHkuR0VUKFBST1hZTEVTU19FUlJPUl9ST1VURSwgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWwnIH0pO1xuICAgICAgICAgICAgICAgIHJlcy5lbmQoRU1QVFlfUEFHRV9NQVJLVVApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIZWxwZXJzXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2Vuc3VyZUNvbm5lY3Rpb25SZWFkeSAocmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFjb25uZWN0aW9uLmlzUmVhZHkoKSkge1xuICAgICAgICAgICAgcmVzcG9uZDUwMChyZXMsICdUaGUgY29ubmVjdGlvbiBpcyBub3QgcmVhZHkgeWV0LicpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2ZldGNoUmVxdWVzdERhdGEgKHJlcTogSW5jb21pbmdNZXNzYWdlLCBjYWxsYmFjazogKGRhdGE6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBsZXQgZGF0YSA9ICcnO1xuXG4gICAgICAgIHJlcS5vbignZGF0YScsIGNodW5rID0+IHtcbiAgICAgICAgICAgIGRhdGEgKz0gY2h1bms7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJlcS5vbignZW5kJywgKCkgPT4ge1xuICAgICAgICAgICAgY2FsbGJhY2soZGF0YS50b1N0cmluZygpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gUm91dGUgaGFuZGxlcnNcbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyBfb25Db25uZWN0aW9uIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKGNvbm5lY3Rpb24uaXNSZWFkeSgpKVxuICAgICAgICAgICAgcmVzcG9uZDUwMChyZXMsICdUaGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5IGVzdGFibGlzaGVkLicpO1xuXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdXNlckFnZW50ID0gcmVxLmhlYWRlcnNbJ3VzZXItYWdlbnQnXSBhcyBzdHJpbmc7XG5cbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24uZXN0YWJsaXNoKHVzZXJBZ2VudCk7XG4gICAgICAgICAgICByZWRpcmVjdChyZXMsIGNvbm5lY3Rpb24uaWRsZVVybCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25IZWFydGJlYXQgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gY29ubmVjdGlvbi5oZWFydGJlYXQoKTtcblxuICAgICAgICAgICAgcmVzcG9uZFdpdGhKU09OKHJlcywgc3RhdHVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9vbklkbGUgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSlcbiAgICAgICAgICAgIHJlcy5lbmQoY29ubmVjdGlvbi5yZW5kZXJJZGxlUGFnZSgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyBfb25JZGxlRm9yY2VkIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZW5zdXJlQ29ubmVjdGlvblJlYWR5KHJlcywgY29ubmVjdGlvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IGNvbm5lY3Rpb24uZ2V0U3RhdHVzKHRydWUpO1xuXG4gICAgICAgICAgICByZWRpcmVjdChyZXMsIHN0YXR1cy51cmwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgX29uU3RhdHVzUmVxdWVzdCAocmVxOiBJbmNvbWluZ01lc3NhZ2UsIHJlczogU2VydmVyUmVzcG9uc2UsIGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uU3RhdHVzUmVxdWVzdENvcmUocmVxLCByZXMsIGNvbm5lY3Rpb24sIGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyBfb25TdGF0dXNSZXF1ZXN0T25UZXN0RG9uZSAocmVxOiBJbmNvbWluZ01lc3NhZ2UsIHJlczogU2VydmVyUmVzcG9uc2UsIGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uU3RhdHVzUmVxdWVzdENvcmUocmVxLCByZXMsIGNvbm5lY3Rpb24sIHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGFzeW5jIF9vblN0YXR1c1JlcXVlc3RDb3JlIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24sIGlzVGVzdERvbmU6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZW5zdXJlQ29ubmVjdGlvblJlYWR5KHJlcywgY29ubmVjdGlvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IGNvbm5lY3Rpb24uZ2V0U3RhdHVzKGlzVGVzdERvbmUpO1xuXG4gICAgICAgICAgICByZXNwb25kV2l0aEpTT04ocmVzLCBzdGF0dXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX29uSW5pdFNjcmlwdFJlcXVlc3QgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgY29uc3Qgc2NyaXB0ID0gY29ubmVjdGlvbi5nZXRJbml0U2NyaXB0KCk7XG5cbiAgICAgICAgICAgIHJlc3BvbmRXaXRoSlNPTihyZXMsIHNjcmlwdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25Jbml0U2NyaXB0UmVzcG9uc2UgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9mZXRjaFJlcXVlc3REYXRhKHJlcSwgZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgY29ubmVjdGlvbi5oYW5kbGVJbml0U2NyaXB0UmVzdWx0KGRhdGEpO1xuXG4gICAgICAgICAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25HZXRBY3RpdmVXaW5kb3dJZFJlcXVlc3QgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgcmVzcG9uZFdpdGhKU09OKHJlcywge1xuICAgICAgICAgICAgICAgIGFjdGl2ZVdpbmRvd0lkOiBjb25uZWN0aW9uLmFjdGl2ZVdpbmRvd0lkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25TZXRBY3RpdmVXaW5kb3dJZFJlcXVlc3QgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9mZXRjaFJlcXVlc3REYXRhKHJlcSwgZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7XG5cbiAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmFjdGl2ZVdpbmRvd0lkID0gcGFyc2VkRGF0YS53aW5kb3dJZDtcblxuICAgICAgICAgICAgICAgIHJlc3BvbmRXaXRoSlNPTihyZXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25DbG9zZVdpbmRvd1JlcXVlc3QgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgY29ubmVjdGlvbi5wcm92aWRlci5jbG9zZUJyb3dzZXJDaGlsZFdpbmRvdyhjb25uZWN0aW9uLmlkKVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uZFdpdGhKU09OKHJlcyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25PcGVuRmlsZVByb3RvY29sUmVxdWVzdCAocmVxOiBJbmNvbWluZ01lc3NhZ2UsIHJlczogU2VydmVyUmVzcG9uc2UsIGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmIChCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX2Vuc3VyZUNvbm5lY3Rpb25SZWFkeShyZXMsIGNvbm5lY3Rpb24pKSB7XG4gICAgICAgICAgICBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX2ZldGNoUmVxdWVzdERhdGEocmVxLCBkYXRhID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWREYXRhID0gSlNPTi5wYXJzZShkYXRhKTtcblxuICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24ub3BlbkZpbGVQcm90b2NvbChwYXJzZWREYXRhLnVybClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uZFdpdGhKU09OKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9jb25uZWN0TmV4dFJlbW90ZUJyb3dzZXIgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHByZXZlbnRDYWNoaW5nKHJlcyk7XG5cbiAgICAgICAgY29uc3QgcmVtb3RlQ29ubmVjdGlvbiA9IGF3YWl0IHRoaXMuX3JlbW90ZXNRdWV1ZS5zaGlmdCgpO1xuXG4gICAgICAgIGlmIChyZW1vdGVDb25uZWN0aW9uKVxuICAgICAgICAgICAgcmVkaXJlY3QocmVzLCByZW1vdGVDb25uZWN0aW9uLnVybCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJlc3BvbmQ1MDAocmVzLCAnVGhlcmUgYXJlIG5vIGF2YWlsYWJsZSBfY29ubmVjdGlvbnMgdG8gZXN0YWJsaXNoLicpO1xuICAgIH1cblxuICAgIC8vIEFQSVxuICAgIHB1YmxpYyBzdGFydFNlcnZpbmdDb25uZWN0aW9uIChjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb25uZWN0aW9uc1tjb25uZWN0aW9uLmlkXSA9IGNvbm5lY3Rpb247XG5cbiAgICAgICAgaWYgKGNvbm5lY3Rpb24uYnJvd3NlckluZm8ucHJvdmlkZXJOYW1lID09PSAncmVtb3RlJylcbiAgICAgICAgICAgIHRoaXMuX3JlbW90ZXNRdWV1ZS5hZGQoY29ubmVjdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIHN0b3BTZXJ2aW5nQ29ubmVjdGlvbiAoY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuX2Nvbm5lY3Rpb25zW2Nvbm5lY3Rpb24uaWRdO1xuXG4gICAgICAgIGlmIChjb25uZWN0aW9uLmJyb3dzZXJJbmZvLnByb3ZpZGVyTmFtZSA9PT0gJ3JlbW90ZScpXG4gICAgICAgICAgICB0aGlzLl9yZW1vdGVzUXVldWUucmVtb3ZlKGNvbm5lY3Rpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjbG9zZSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGZvciAoY29uc3QgaWQgaW4gdGhpcy5fY29ubmVjdGlvbnMpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9jb25uZWN0aW9uc1tpZF0uY2xvc2UoKTtcbiAgICB9XG59XG5cbiJdfQ==
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9icm93c2VyL2Nvbm5lY3Rpb24vZ2F0ZXdheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9FQUEyQztBQUMzQywyQ0FNMEI7QUFFMUIsb0VBQTJDO0FBQzNDLDZEQUErRDtBQUkvRCxzRUFBOEM7QUFDOUMsMEZBQWtFO0FBQ2xFLDhFQUFnRTtBQUVoRSxNQUFxQix3QkFBd0I7SUFRekMsWUFBb0IsS0FBWSxFQUFFLE9BQXdEO1FBUGxGLGlCQUFZLEdBQWtDLEVBQUUsQ0FBQztRQVFyRCxJQUFJLENBQUMsYUFBYSxHQUFLLElBQUksdUJBQVksRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxVQUFVLEdBQVEsS0FBSyxDQUFDLHlCQUF5QixDQUFDLHdCQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLGNBQWMsR0FBSSxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzlDLElBQUksQ0FBQyxTQUFTLEdBQVMsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFhLEtBQUssQ0FBQztRQUU3QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxTQUFTLENBQUUsR0FBVyxFQUFFLEtBQVksRUFBRSxPQUFpQixFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQUUsdUJBQWlDO1FBQzlHLHlFQUF5RTtRQUN6RSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBb0IsRUFBRSxHQUFtQixFQUFFLFVBQVUsRUFBRSxNQUEwQixFQUFFLEVBQUU7WUFDckcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFaEQsSUFBQSxxQkFBYyxFQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXBCLElBQUksdUJBQXVCO2dCQUN2QixJQUFBLHVDQUFpQixFQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRTNCLElBQUksVUFBVTtnQkFDVixPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQzs7Z0JBRTlCLElBQUEsaUJBQVUsRUFBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxlQUFlLENBQUUsS0FBWTtRQUNqQyxNQUFNLEVBQ0YsY0FBYyxFQUNkLGFBQWEsRUFDYixZQUFZLEVBQ1osbUJBQW1CLEdBQ3RCLEdBQUcsSUFBQSxxQkFBVSxHQUFFLENBQUM7UUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLHdCQUFjLENBQUMsT0FBTyxPQUFPLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyx3QkFBYyxDQUFDLFNBQVMsT0FBTyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4SCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsd0JBQWMsQ0FBQyxJQUFJLE9BQU8sRUFBRSxLQUFLLEVBQUUsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLHdCQUFjLENBQUMsVUFBVSxPQUFPLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25HLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyx3QkFBYyxDQUFDLE1BQU0sT0FBTyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyx3QkFBYyxDQUFDLFVBQVUsT0FBTyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsQ0FBQywwQkFBMEIsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyx3QkFBYyxDQUFDLFVBQVUsT0FBTyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyx3QkFBYyxDQUFDLFVBQVUsT0FBTyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuSCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsd0JBQWMsQ0FBQyxjQUFjLE9BQU8sRUFBRSxLQUFLLEVBQUUsd0JBQXdCLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1SSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsd0JBQWMsQ0FBQyxjQUFjLE9BQU8sRUFBRSxLQUFLLEVBQUUsd0JBQXdCLENBQUMsMkJBQTJCLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3SSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsd0JBQWMsQ0FBQyxXQUFXLE9BQU8sRUFBRSxLQUFLLEVBQUUsd0JBQXdCLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLHdCQUFjLENBQUMsZ0JBQWdCLE9BQU8sRUFBRSxLQUFLLEVBQUUsd0JBQXdCLENBQUMsMEJBQTBCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLHdCQUFjLENBQUMsc0JBQXNCLE9BQU8sRUFBRSxLQUFLLEVBQUUsd0JBQXdCLENBQUMseUJBQXlCLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVuSixLQUFLLENBQUMsR0FBRyxDQUFDLHdCQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBb0IsRUFBRSxHQUFtQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0gsS0FBSyxDQUFDLEdBQUcsQ0FBQyx3QkFBYyxDQUFDLHdCQUF3QixFQUFFLENBQUMsR0FBb0IsRUFBRSxHQUFtQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFNUksS0FBSyxDQUFDLEdBQUcsQ0FBQyx3QkFBYyxDQUFDLGFBQWEsRUFBRSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBQ25ILEtBQUssQ0FBQyxHQUFHLENBQUMsd0JBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBQzdHLEtBQUssQ0FBQyxHQUFHLENBQUMsd0JBQWMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUM3RixLQUFLLENBQUMsR0FBRyxDQUFDLHdCQUFjLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFFL0YsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLEtBQUssQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFvQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtnQkFDM0UsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztnQkFDcEQsR0FBRyxDQUFDLEdBQUcsQ0FBQywyQkFBaUIsQ0FBQyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsVUFBVTtJQUNGLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBRSxHQUFtQixFQUFFLFVBQTZCO1FBQ3JGLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdkIsSUFBQSxpQkFBVSxFQUFDLEdBQUcsRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBRSxHQUFvQixFQUFFLFFBQWdDO1FBQ3BGLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVkLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ25CLElBQUksSUFBSSxLQUFLLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7WUFDZixRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsaUJBQWlCO0lBQ1QsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUUsR0FBb0IsRUFBRSxHQUFtQixFQUFFLFVBQTZCO1FBQ3hHLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUNwQixJQUFBLGlCQUFVLEVBQUMsR0FBRyxFQUFFLHdDQUF3QyxDQUFDLENBQUM7YUFFekQ7WUFDRCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBVyxDQUFDO1lBRXRELE1BQU0sVUFBVSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0QyxJQUFBLGVBQVEsRUFBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztJQUVPLE1BQU0sQ0FBQyxZQUFZLENBQUUsR0FBb0IsRUFBRSxHQUFtQixFQUFFLFVBQTZCO1FBQ2pHLElBQUksd0JBQXdCLENBQUMsc0JBQXNCLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxFQUFFO1lBQ2xFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUV0QyxJQUFBLHNCQUFlLEVBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQUVPLE1BQU0sQ0FBQyxPQUFPLENBQUUsR0FBb0IsRUFBRSxHQUFtQixFQUFFLFVBQTZCO1FBQzVGLElBQUksd0JBQXdCLENBQUMsc0JBQXNCLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQztZQUNoRSxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBRSxHQUFvQixFQUFFLEdBQW1CLEVBQUUsVUFBNkI7UUFDeEcsSUFBSSx3QkFBd0IsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDbEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWhELElBQUEsZUFBUSxFQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0I7SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBRSxHQUFvQixFQUFFLEdBQW1CLEVBQUUsVUFBNkI7UUFDM0csT0FBTyx3QkFBd0IsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBRSxHQUFvQixFQUFFLEdBQW1CLEVBQUUsVUFBNkI7UUFDckgsT0FBTyx3QkFBd0IsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBRSxHQUFvQixFQUFFLEdBQW1CLEVBQUUsVUFBNkIsRUFBRSxVQUFtQjtRQUNwSSxJQUFJLHdCQUF3QixDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRTtZQUNsRSxNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFdEQsSUFBQSxzQkFBZSxFQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNoQztJQUNMLENBQUM7SUFFTyxNQUFNLENBQUMsb0JBQW9CLENBQUUsR0FBb0IsRUFBRSxHQUFtQixFQUFFLFVBQTZCO1FBQ3pHLElBQUksd0JBQXdCLENBQUMsc0JBQXNCLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxFQUFFO1lBQ2xFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUUxQyxJQUFBLHNCQUFlLEVBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQUVPLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBRSxHQUFvQixFQUFFLEdBQW1CLEVBQUUsVUFBNkI7UUFDMUcsSUFBSSx3QkFBd0IsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDbEUsd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNuRCxVQUFVLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRXhDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLDJCQUEyQixDQUFFLEdBQW9CLEVBQUUsR0FBbUIsRUFBRSxVQUE2QjtRQUNoSCxJQUFJLHdCQUF3QixDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRTtZQUNsRSxJQUFBLHNCQUFlLEVBQUMsR0FBRyxFQUFFO2dCQUNqQixjQUFjLEVBQUUsVUFBVSxDQUFDLGNBQWM7YUFDNUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLDJCQUEyQixDQUFFLEdBQW9CLEVBQUUsR0FBbUIsRUFBRSxVQUE2QjtRQUNoSCxJQUFJLHdCQUF3QixDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRTtZQUNsRSx3QkFBd0IsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ25ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRXBDLFVBQVUsQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFFaEQsSUFBQSxzQkFBZSxFQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLHFCQUFxQixDQUFFLEdBQW9CLEVBQUUsR0FBbUIsRUFBRSxVQUE2QjtRQUMxRyxJQUFJLHdCQUF3QixDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRTtZQUNsRSxVQUFVLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7aUJBQ3JELElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1AsSUFBQSxzQkFBZSxFQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1NBQ1Y7SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLDBCQUEwQixDQUFFLEdBQW9CLEVBQUUsR0FBbUIsRUFBRSxVQUE2QjtRQUMvRyxJQUFJLHdCQUF3QixDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRTtZQUNsRSx3QkFBd0IsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ25ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRXBDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO3FCQUN0QyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNQLElBQUEsc0JBQWUsRUFBQyxHQUFHLENBQUMsQ0FBQztnQkFDekIsQ0FBQyxDQUFDLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVPLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBRSxHQUFvQixFQUFFLEdBQW1CLEVBQUUsVUFBNkI7UUFDOUcsSUFBSSx3QkFBd0IsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDbEUsd0JBQXdCLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNuRCxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTNDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO3FCQUMzQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNQLElBQUEsc0JBQWUsRUFBQyxHQUFHLENBQUMsQ0FBQztnQkFDekIsQ0FBQyxDQUFDLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQyx5QkFBeUIsQ0FBRSxHQUFvQixFQUFFLEdBQW1CO1FBQzlFLElBQUEscUJBQWMsRUFBQyxHQUFHLENBQUMsQ0FBQztRQUVwQixNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUxRCxJQUFJLGdCQUFnQjtZQUNoQixJQUFBLGVBQVEsRUFBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7O1lBRXBDLElBQUEsaUJBQVUsRUFBQyxHQUFHLEVBQUUsbURBQW1ELENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsTUFBTTtJQUNDLHNCQUFzQixDQUFFLFVBQTZCO1FBQ3hELElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUU5QyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsWUFBWSxLQUFLLFFBQVE7WUFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLHFCQUFxQixDQUFFLFVBQTZCO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFeEMsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLFlBQVksS0FBSyxRQUFRO1lBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNkLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVk7WUFDOUIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVDLENBQUM7Q0FDSjtBQXhQRCwyQ0F3UEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9hZEFzc2V0cyBmcm9tICcuLi8uLi9sb2FkLWFzc2V0cyc7XG5pbXBvcnQge1xuICAgIHJlc3BvbmQ0MDQsXG4gICAgcmVzcG9uZDUwMCxcbiAgICByZXNwb25kV2l0aEpTT04sXG4gICAgcmVkaXJlY3QsXG4gICAgcHJldmVudENhY2hpbmcsXG59IGZyb20gJy4uLy4uL3V0aWxzL2h0dHAnO1xuXG5pbXBvcnQgUmVtb3Rlc1F1ZXVlIGZyb20gJy4vcmVtb3Rlcy1xdWV1ZSc7XG5pbXBvcnQgeyBQcm94eSwgYWNjZXB0Q3Jvc3NPcmlnaW4gfSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IEJyb3dzZXJDb25uZWN0aW9uIGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHsgSW5jb21pbmdNZXNzYWdlLCBTZXJ2ZXJSZXNwb25zZSB9IGZyb20gJ2h0dHAnO1xuaW1wb3J0IFNFUlZJQ0VfUk9VVEVTIGZyb20gJy4vc2VydmljZS1yb3V0ZXMnO1xuaW1wb3J0IEVNUFRZX1BBR0VfTUFSS1VQIGZyb20gJy4uLy4uL3Byb3h5bGVzcy9lbXB0eS1wYWdlLW1hcmt1cCc7XG5pbXBvcnQgUFJPWFlMRVNTX0VSUk9SX1JPVVRFIGZyb20gJy4uLy4uL3Byb3h5bGVzcy9lcnJvci1yb3V0ZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheSB7XG4gICAgcHJpdmF0ZSBfY29ubmVjdGlvbnM6IERpY3Rpb25hcnk8QnJvd3NlckNvbm5lY3Rpb24+ID0ge307XG4gICAgcHJpdmF0ZSBfcmVtb3Rlc1F1ZXVlOiBSZW1vdGVzUXVldWU7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3RVcmw6IHN0cmluZztcbiAgICBwdWJsaWMgcmV0cnlUZXN0UGFnZXM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm94eWxlc3M6IGJvb2xlYW47XG4gICAgcHVibGljIHJlYWRvbmx5IHByb3h5OiBQcm94eTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAocHJveHk6IFByb3h5LCBvcHRpb25zOiB7IHJldHJ5VGVzdFBhZ2VzOiBib29sZWFuOyBwcm94eWxlc3M6IGJvb2xlYW4gfSkge1xuICAgICAgICB0aGlzLl9yZW1vdGVzUXVldWUgICA9IG5ldyBSZW1vdGVzUXVldWUoKTtcbiAgICAgICAgdGhpcy5jb25uZWN0VXJsICAgICAgPSBwcm94eS5yZXNvbHZlUmVsYXRpdmVTZXJ2aWNlVXJsKFNFUlZJQ0VfUk9VVEVTLmNvbm5lY3QpO1xuICAgICAgICB0aGlzLnJldHJ5VGVzdFBhZ2VzICA9IG9wdGlvbnMucmV0cnlUZXN0UGFnZXM7XG4gICAgICAgIHRoaXMucHJveHlsZXNzICAgICAgID0gb3B0aW9ucy5wcm94eWxlc3M7XG4gICAgICAgIHRoaXMucHJveHkgICAgICAgICAgID0gcHJveHk7XG5cbiAgICAgICAgdGhpcy5fcmVnaXN0ZXJSb3V0ZXMocHJveHkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Rpc3BhdGNoICh1cmw6IHN0cmluZywgcHJveHk6IFByb3h5LCBoYW5kbGVyOiBGdW5jdGlvbiwgbWV0aG9kID0gJ0dFVCcsIHNob3VsZEFjY2VwdENyb3NzT3JpZ2luPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICAvLyBAdHMtaWdub3JlIE5lZWQgdG8gaW1wcm92ZSB0eXBpbmdzIG9mIHRoZSAndGVzdGNhZmUtaGFtbWVyaGVhZCcgbW9kdWxlXG4gICAgICAgIHByb3h5W21ldGhvZF0odXJsLCAocmVxOiBJbmNvbWluZ01lc3NhZ2UsIHJlczogU2VydmVyUmVzcG9uc2UsIHNlcnZlckluZm8sIHBhcmFtczogRGljdGlvbmFyeTxzdHJpbmc+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5fY29ubmVjdGlvbnNbcGFyYW1zLmlkXTtcblxuICAgICAgICAgICAgcHJldmVudENhY2hpbmcocmVzKTtcblxuICAgICAgICAgICAgaWYgKHNob3VsZEFjY2VwdENyb3NzT3JpZ2luKVxuICAgICAgICAgICAgICAgIGFjY2VwdENyb3NzT3JpZ2luKHJlcyk7XG5cbiAgICAgICAgICAgIGlmIChjb25uZWN0aW9uKVxuICAgICAgICAgICAgICAgIGhhbmRsZXIocmVxLCByZXMsIGNvbm5lY3Rpb24pO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJlc3BvbmQ0MDQocmVzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVnaXN0ZXJSb3V0ZXMgKHByb3h5OiBQcm94eSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBpZGxlUGFnZVNjcmlwdCxcbiAgICAgICAgICAgIGlkbGVQYWdlU3R5bGUsXG4gICAgICAgICAgICBpZGxlUGFnZUxvZ28sXG4gICAgICAgICAgICBzZXJ2aWNlV29ya2VyU2NyaXB0LFxuICAgICAgICB9ID0gbG9hZEFzc2V0cygpO1xuXG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoKGAke1NFUlZJQ0VfUk9VVEVTLmNvbm5lY3R9L3tpZH1gLCBwcm94eSwgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9vbkNvbm5lY3Rpb24pO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaChgJHtTRVJWSUNFX1JPVVRFUy5oZWFydGJlYXR9L3tpZH1gLCBwcm94eSwgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9vbkhlYXJ0YmVhdCwgJ0dFVCcsIHRoaXMucHJveHlsZXNzKTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMuaWRsZX0ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uSWRsZSk7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoKGAke1NFUlZJQ0VfUk9VVEVTLmlkbGVGb3JjZWR9L3tpZH1gLCBwcm94eSwgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9vbklkbGVGb3JjZWQpO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaChgJHtTRVJWSUNFX1JPVVRFUy5zdGF0dXN9L3tpZH1gLCBwcm94eSwgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9vblN0YXR1c1JlcXVlc3QpO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaChgJHtTRVJWSUNFX1JPVVRFUy5zdGF0dXNEb25lfS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25TdGF0dXNSZXF1ZXN0T25UZXN0RG9uZSwgJ0dFVCcsIHRoaXMucHJveHlsZXNzKTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMuaW5pdFNjcmlwdH0ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uSW5pdFNjcmlwdFJlcXVlc3QpO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaChgJHtTRVJWSUNFX1JPVVRFUy5pbml0U2NyaXB0fS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25Jbml0U2NyaXB0UmVzcG9uc2UsICdQT1NUJyk7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoKGAke1NFUlZJQ0VfUk9VVEVTLmFjdGl2ZVdpbmRvd0lkfS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25HZXRBY3RpdmVXaW5kb3dJZFJlcXVlc3QsICdHRVQnLCB0aGlzLnByb3h5bGVzcyk7XG4gICAgICAgIHRoaXMuX2Rpc3BhdGNoKGAke1NFUlZJQ0VfUk9VVEVTLmFjdGl2ZVdpbmRvd0lkfS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25TZXRBY3RpdmVXaW5kb3dJZFJlcXVlc3QsICdQT1NUJywgdGhpcy5wcm94eWxlc3MpO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaChgJHtTRVJWSUNFX1JPVVRFUy5jbG9zZVdpbmRvd30ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uQ2xvc2VXaW5kb3dSZXF1ZXN0LCAnUE9TVCcpO1xuICAgICAgICB0aGlzLl9kaXNwYXRjaChgJHtTRVJWSUNFX1JPVVRFUy5vcGVuRmlsZVByb3RvY29sfS97aWR9YCwgcHJveHksIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fb25PcGVuRmlsZVByb3RvY29sUmVxdWVzdCwgJ1BPU1QnKTtcbiAgICAgICAgdGhpcy5fZGlzcGF0Y2goYCR7U0VSVklDRV9ST1VURVMuZGlzcGF0Y2hQcm94eWxlc3NFdmVudH0ve2lkfWAsIHByb3h5LCBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uRGlzcGF0Y2hQcm94eWxlc3NFdmVudCwgJ1BPU1QnLCB0aGlzLnByb3h5bGVzcyk7XG5cbiAgICAgICAgcHJveHkuR0VUKFNFUlZJQ0VfUk9VVEVTLmNvbm5lY3QsIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSkgPT4gdGhpcy5fY29ubmVjdE5leHRSZW1vdGVCcm93c2VyKHJlcSwgcmVzKSk7XG4gICAgICAgIHByb3h5LkdFVChTRVJWSUNFX1JPVVRFUy5jb25uZWN0V2l0aFRyYWlsaW5nU2xhc2gsIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSkgPT4gdGhpcy5fY29ubmVjdE5leHRSZW1vdGVCcm93c2VyKHJlcSwgcmVzKSk7XG5cbiAgICAgICAgcHJveHkuR0VUKFNFUlZJQ0VfUk9VVEVTLnNlcnZpY2VXb3JrZXIsIHsgY29udGVudDogc2VydmljZVdvcmtlclNjcmlwdCwgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnIH0pO1xuICAgICAgICBwcm94eS5HRVQoU0VSVklDRV9ST1VURVMuYXNzZXRzLmluZGV4LCB7IGNvbnRlbnQ6IGlkbGVQYWdlU2NyaXB0LCBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCcgfSk7XG4gICAgICAgIHByb3h5LkdFVChTRVJWSUNFX1JPVVRFUy5hc3NldHMuc3R5bGVzLCB7IGNvbnRlbnQ6IGlkbGVQYWdlU3R5bGUsIGNvbnRlbnRUeXBlOiAndGV4dC9jc3MnIH0pO1xuICAgICAgICBwcm94eS5HRVQoU0VSVklDRV9ST1VURVMuYXNzZXRzLmxvZ28sIHsgY29udGVudDogaWRsZVBhZ2VMb2dvLCBjb250ZW50VHlwZTogJ2ltYWdlL3N2Zyt4bWwnIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3h5bGVzcykge1xuICAgICAgICAgICAgcHJveHkuR0VUKFBST1hZTEVTU19FUlJPUl9ST1VURSwgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWwnIH0pO1xuICAgICAgICAgICAgICAgIHJlcy5lbmQoRU1QVFlfUEFHRV9NQVJLVVApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIZWxwZXJzXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2Vuc3VyZUNvbm5lY3Rpb25SZWFkeSAocmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFjb25uZWN0aW9uLmlzUmVhZHkoKSkge1xuICAgICAgICAgICAgcmVzcG9uZDUwMChyZXMsICdUaGUgY29ubmVjdGlvbiBpcyBub3QgcmVhZHkgeWV0LicpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2ZldGNoUmVxdWVzdERhdGEgKHJlcTogSW5jb21pbmdNZXNzYWdlLCBjYWxsYmFjazogKGRhdGE6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBsZXQgZGF0YSA9ICcnO1xuXG4gICAgICAgIHJlcS5vbignZGF0YScsIGNodW5rID0+IHtcbiAgICAgICAgICAgIGRhdGEgKz0gY2h1bms7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJlcS5vbignZW5kJywgKCkgPT4ge1xuICAgICAgICAgICAgY2FsbGJhY2soZGF0YS50b1N0cmluZygpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gUm91dGUgaGFuZGxlcnNcbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyBfb25Db25uZWN0aW9uIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKGNvbm5lY3Rpb24uaXNSZWFkeSgpKVxuICAgICAgICAgICAgcmVzcG9uZDUwMChyZXMsICdUaGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5IGVzdGFibGlzaGVkLicpO1xuXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdXNlckFnZW50ID0gcmVxLmhlYWRlcnNbJ3VzZXItYWdlbnQnXSBhcyBzdHJpbmc7XG5cbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24uZXN0YWJsaXNoKHVzZXJBZ2VudCk7XG4gICAgICAgICAgICByZWRpcmVjdChyZXMsIGNvbm5lY3Rpb24uaWRsZVVybCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25IZWFydGJlYXQgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gY29ubmVjdGlvbi5oZWFydGJlYXQoKTtcblxuICAgICAgICAgICAgcmVzcG9uZFdpdGhKU09OKHJlcywgc3RhdHVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9vbklkbGUgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSlcbiAgICAgICAgICAgIHJlcy5lbmQoY29ubmVjdGlvbi5yZW5kZXJJZGxlUGFnZSgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyBfb25JZGxlRm9yY2VkIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZW5zdXJlQ29ubmVjdGlvblJlYWR5KHJlcywgY29ubmVjdGlvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IGNvbm5lY3Rpb24uZ2V0U3RhdHVzKHRydWUpO1xuXG4gICAgICAgICAgICByZWRpcmVjdChyZXMsIHN0YXR1cy51cmwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgX29uU3RhdHVzUmVxdWVzdCAocmVxOiBJbmNvbWluZ01lc3NhZ2UsIHJlczogU2VydmVyUmVzcG9uc2UsIGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uU3RhdHVzUmVxdWVzdENvcmUocmVxLCByZXMsIGNvbm5lY3Rpb24sIGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyBfb25TdGF0dXNSZXF1ZXN0T25UZXN0RG9uZSAocmVxOiBJbmNvbWluZ01lc3NhZ2UsIHJlczogU2VydmVyUmVzcG9uc2UsIGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX29uU3RhdHVzUmVxdWVzdENvcmUocmVxLCByZXMsIGNvbm5lY3Rpb24sIHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGFzeW5jIF9vblN0YXR1c1JlcXVlc3RDb3JlIChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24sIGlzVGVzdERvbmU6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZW5zdXJlQ29ubmVjdGlvblJlYWR5KHJlcywgY29ubmVjdGlvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IGNvbm5lY3Rpb24uZ2V0U3RhdHVzKGlzVGVzdERvbmUpO1xuXG4gICAgICAgICAgICByZXNwb25kV2l0aEpTT04ocmVzLCBzdGF0dXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX29uSW5pdFNjcmlwdFJlcXVlc3QgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgY29uc3Qgc2NyaXB0ID0gY29ubmVjdGlvbi5nZXRJbml0U2NyaXB0KCk7XG5cbiAgICAgICAgICAgIHJlc3BvbmRXaXRoSlNPTihyZXMsIHNjcmlwdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25Jbml0U2NyaXB0UmVzcG9uc2UgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9mZXRjaFJlcXVlc3REYXRhKHJlcSwgZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgY29ubmVjdGlvbi5oYW5kbGVJbml0U2NyaXB0UmVzdWx0KGRhdGEpO1xuXG4gICAgICAgICAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25HZXRBY3RpdmVXaW5kb3dJZFJlcXVlc3QgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgcmVzcG9uZFdpdGhKU09OKHJlcywge1xuICAgICAgICAgICAgICAgIGFjdGl2ZVdpbmRvd0lkOiBjb25uZWN0aW9uLmFjdGl2ZVdpbmRvd0lkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25TZXRBY3RpdmVXaW5kb3dJZFJlcXVlc3QgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9mZXRjaFJlcXVlc3REYXRhKHJlcSwgZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7XG5cbiAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmFjdGl2ZVdpbmRvd0lkID0gcGFyc2VkRGF0YS53aW5kb3dJZDtcblxuICAgICAgICAgICAgICAgIHJlc3BvbmRXaXRoSlNPTihyZXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25DbG9zZVdpbmRvd1JlcXVlc3QgKHJlcTogSW5jb21pbmdNZXNzYWdlLCByZXM6IFNlcnZlclJlc3BvbnNlLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoQnJvd3NlckNvbm5lY3Rpb25HYXRld2F5Ll9lbnN1cmVDb25uZWN0aW9uUmVhZHkocmVzLCBjb25uZWN0aW9uKSkge1xuICAgICAgICAgICAgY29ubmVjdGlvbi5wcm92aWRlci5jbG9zZUJyb3dzZXJDaGlsZFdpbmRvdyhjb25uZWN0aW9uLmlkKVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uZFdpdGhKU09OKHJlcyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25PcGVuRmlsZVByb3RvY29sUmVxdWVzdCAocmVxOiBJbmNvbWluZ01lc3NhZ2UsIHJlczogU2VydmVyUmVzcG9uc2UsIGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmIChCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX2Vuc3VyZUNvbm5lY3Rpb25SZWFkeShyZXMsIGNvbm5lY3Rpb24pKSB7XG4gICAgICAgICAgICBCcm93c2VyQ29ubmVjdGlvbkdhdGV3YXkuX2ZldGNoUmVxdWVzdERhdGEocmVxLCBkYXRhID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWREYXRhID0gSlNPTi5wYXJzZShkYXRhKTtcblxuICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24ub3BlbkZpbGVQcm90b2NvbChwYXJzZWREYXRhLnVybClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uZFdpdGhKU09OKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfb25EaXNwYXRjaFByb3h5bGVzc0V2ZW50IChyZXE6IEluY29taW5nTWVzc2FnZSwgcmVzOiBTZXJ2ZXJSZXNwb25zZSwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZW5zdXJlQ29ubmVjdGlvblJlYWR5KHJlcywgY29ubmVjdGlvbikpIHtcbiAgICAgICAgICAgIEJyb3dzZXJDb25uZWN0aW9uR2F0ZXdheS5fZmV0Y2hSZXF1ZXN0RGF0YShyZXEsIGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgdHlwZSwgb3B0aW9ucyB9ID0gSlNPTi5wYXJzZShkYXRhKTtcblxuICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uZGlzcGF0Y2hQcm94eWxlc3NFdmVudCh0eXBlLCBvcHRpb25zKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25kV2l0aEpTT04ocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2Nvbm5lY3ROZXh0UmVtb3RlQnJvd3NlciAocmVxOiBJbmNvbWluZ01lc3NhZ2UsIHJlczogU2VydmVyUmVzcG9uc2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcHJldmVudENhY2hpbmcocmVzKTtcblxuICAgICAgICBjb25zdCByZW1vdGVDb25uZWN0aW9uID0gYXdhaXQgdGhpcy5fcmVtb3Rlc1F1ZXVlLnNoaWZ0KCk7XG5cbiAgICAgICAgaWYgKHJlbW90ZUNvbm5lY3Rpb24pXG4gICAgICAgICAgICByZWRpcmVjdChyZXMsIHJlbW90ZUNvbm5lY3Rpb24udXJsKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmVzcG9uZDUwMChyZXMsICdUaGVyZSBhcmUgbm8gYXZhaWxhYmxlIF9jb25uZWN0aW9ucyB0byBlc3RhYmxpc2guJyk7XG4gICAgfVxuXG4gICAgLy8gQVBJXG4gICAgcHVibGljIHN0YXJ0U2VydmluZ0Nvbm5lY3Rpb24gKGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Nvbm5lY3Rpb25zW2Nvbm5lY3Rpb24uaWRdID0gY29ubmVjdGlvbjtcblxuICAgICAgICBpZiAoY29ubmVjdGlvbi5icm93c2VySW5mby5wcm92aWRlck5hbWUgPT09ICdyZW1vdGUnKVxuICAgICAgICAgICAgdGhpcy5fcmVtb3Rlc1F1ZXVlLmFkZChjb25uZWN0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RvcFNlcnZpbmdDb25uZWN0aW9uIChjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICBkZWxldGUgdGhpcy5fY29ubmVjdGlvbnNbY29ubmVjdGlvbi5pZF07XG5cbiAgICAgICAgaWYgKGNvbm5lY3Rpb24uYnJvd3NlckluZm8ucHJvdmlkZXJOYW1lID09PSAncmVtb3RlJylcbiAgICAgICAgICAgIHRoaXMuX3JlbW90ZXNRdWV1ZS5yZW1vdmUoY29ubmVjdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGNsb3NlICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgZm9yIChjb25zdCBpZCBpbiB0aGlzLl9jb25uZWN0aW9ucylcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2Nvbm5lY3Rpb25zW2lkXS5jbG9zZSgpO1xuICAgIH1cbn1cblxuIl19
|