testcafe 3.4.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/lib/api/skip-js-errors/index.js +1 -1
  2. package/lib/api/test-controller/index.js +4 -4
  3. package/lib/browser/connection/gateway/index.js +10 -1
  4. package/lib/browser/connection/index.js +9 -1
  5. package/lib/browser/connection/service-routes.js +2 -1
  6. package/lib/browser/provider/built-in/dedicated/base.js +7 -3
  7. package/lib/browser/provider/built-in/dedicated/chrome/build-chrome-args.js +5 -3
  8. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/index.js +44 -28
  9. package/lib/browser/provider/built-in/dedicated/chrome/cdp-client/utils.js +31 -0
  10. package/lib/browser/provider/built-in/dedicated/chrome/index.js +18 -15
  11. package/lib/browser/provider/built-in/dedicated/chrome/local-chrome.js +3 -3
  12. package/lib/browser/provider/index.js +14 -3
  13. package/lib/browser/provider/plugin-host.js +5 -2
  14. package/lib/cli/argument-parser/index.js +4 -1
  15. package/lib/client/automation/index.js +28 -5
  16. package/lib/client/automation/index.min.js +1 -1
  17. package/lib/client/browser/idle-page/index.js +1 -0
  18. package/lib/client/core/index.js +21 -5
  19. package/lib/client/core/index.min.js +1 -1
  20. package/lib/client/core/utils/style.js +6 -2
  21. package/lib/client/driver/generate-id.js +4 -2
  22. package/lib/client/driver/index.js +94 -24
  23. package/lib/client/driver/index.min.js +1 -1
  24. package/lib/client/test-run/iframe.js.mustache +11 -1
  25. package/lib/client/test-run/index.js.mustache +25 -18
  26. package/lib/client/ui/index.js +41 -16
  27. package/lib/client/ui/index.min.js +1 -1
  28. package/lib/client/ui/styles.css +1 -0
  29. package/lib/client-functions/client-function-builder.js +3 -3
  30. package/lib/client-functions/selectors/selector-builder.js +3 -3
  31. package/lib/configuration/default-values.js +3 -2
  32. package/lib/configuration/option-names.js +3 -1
  33. package/lib/configuration/run-option-names.js +2 -1
  34. package/lib/configuration/screenshot-option-names.js +2 -1
  35. package/lib/configuration/testcafe-configuration.js +3 -1
  36. package/lib/configuration/types.js +1 -1
  37. package/lib/native-automation/index.js +40 -6
  38. package/lib/native-automation/request-pipeline/index.js +9 -5
  39. package/lib/native-automation/request-pipeline/special-handlers.js +19 -5
  40. package/lib/native-automation/request-pipeline/test-run-bridge.js +4 -3
  41. package/lib/native-automation/types.js +1 -1
  42. package/lib/notifications/warning-message.js +2 -1
  43. package/lib/reporter/command/command-formatter.js +5 -5
  44. package/lib/runner/browser-job.js +3 -2
  45. package/lib/runner/fixture-hook-controller.js +14 -5
  46. package/lib/runner/index.js +13 -6
  47. package/lib/runner/task/index.js +3 -2
  48. package/lib/runner/test-run-controller.js +5 -1
  49. package/lib/screenshots/capturer.js +7 -5
  50. package/lib/screenshots/index.js +4 -3
  51. package/lib/test-run/bookmark.js +1 -1
  52. package/lib/test-run/browser-manipulation-queue.js +2 -1
  53. package/lib/test-run/commands/actions.js +3 -3
  54. package/lib/test-run/commands/browser-manipulation.js +2 -1
  55. package/lib/test-run/commands/execute-client-function.js +47 -0
  56. package/lib/test-run/commands/observation.js +10 -38
  57. package/lib/test-run/commands/service.js +3 -2
  58. package/lib/test-run/commands/validations/initializers.js +3 -3
  59. package/lib/test-run/index.js +20 -11
  60. package/lib/test-run/session-controller.js +3 -3
  61. package/lib/utils/path-pattern.js +8 -5
  62. package/package.json +3 -3
  63. package/ts-defs/index.d.ts +4 -0
  64. package/ts-defs/selectors.d.ts +4 -0
  65. package/ts-defs/testcafe-scripts.d.ts +4 -0
@@ -15,7 +15,7 @@ const execute_js_expression_1 = require("../execute-js-expression");
15
15
  const utils_1 = require("./utils");
16
16
  const argument_1 = require("./validations/argument");
17
17
  const test_run_1 = require("../../errors/test-run");
18
- const observation_1 = require("./observation");
18
+ const execute_client_function_1 = require("./execute-client-function");
19
19
  const lodash_1 = require("lodash");
20
20
  const skip_js_errors_1 = require("../../api/skip-js-errors");
21
21
  // Initializers
@@ -46,7 +46,7 @@ function initDialogHandler(name, val, { skipVisibilityCheck, testRun }) {
46
46
  fn = (0, execute_js_expression_1.executeJsExpression)(val.value, testRun, { skipVisibilityCheck });
47
47
  else
48
48
  fn = val.fn;
49
- if (fn === null || fn instanceof observation_1.ExecuteClientFunctionCommand)
49
+ if (fn === null || fn instanceof execute_client_function_1.ExecuteClientFunctionCommand)
50
50
  return fn;
51
51
  const options = val.options;
52
52
  const methodName = 'setNativeDialogHandler';
@@ -674,4 +674,4 @@ class ReportCommand extends base_1.ActionCommandBase {
674
674
  }
675
675
  exports.ReportCommand = ReportCommand;
676
676
  ReportCommand.methodName = (0, lodash_1.camelCase)(type_1.default.report);
677
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0LXJ1bi9jb21tYW5kcy9hY3Rpb25zLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUMxQix5R0FBZ0Y7QUFDaEYsNkdBQW1GO0FBQ25GLDJGQUEwRTtBQUMxRSxpQ0FBd0Q7QUFDeEQsdUNBYW1CO0FBRW5CLDZEQUlvQztBQUNwQyxvRUFBK0Q7QUFDL0QsbUNBQXlDO0FBRXpDLHFEQW1CZ0M7QUFFaEMsb0RBQWlGO0FBQ2pGLCtDQUE2RDtBQUM3RCxtQ0FBbUM7QUFDbkMsNkRBSWtDO0FBR2xDLGVBQWU7QUFDZixTQUFTLGlCQUFpQixDQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFFBQVEsR0FBRyxJQUFJO0lBQy9ELE9BQU8sSUFBSSx1QkFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxRQUFRLEdBQUcsSUFBSTtJQUM5RCxPQUFPLElBQUksc0JBQVksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsUUFBUSxHQUFHLElBQUk7SUFDOUQsT0FBTyxJQUFJLHNCQUFZLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFFBQVEsR0FBRyxJQUFJO0lBQy9ELE9BQU8sSUFBSSx1QkFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsUUFB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QjtRQUNuQixPQUFPO1lBQ0gsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSwrQkFBb0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1NBQ2hFLENBQUM7SUFDTixDQUFDOztBQVhMLDhEQVlDO0FBWFUsb0NBQVUsR0FBRyxJQUFBLGtCQUFTLEVBQUMsY0FBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFhM0QsTUFBYSxhQUFjLFNBQVEsd0JBQWlCO0lBR2hELFlBQWEsR0FBRyxFQUFFLE9BQU8sRUFBRSxrQkFBa0I7UUFDekMsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsY0FBSSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCx1QkFBdUI7UUFDbkIsT0FBTztZQUNILEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1NBQ25DLENBQUM7SUFDTixDQUFDOztBQVhMLHNDQVlDO0FBWFUsd0JBQVUsR0FBRyxJQUFBLGtCQUFTLEVBQUMsY0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRZUEUgZnJvbSAnLi90eXBlJztcbmltcG9ydCBTZWxlY3RvckJ1aWxkZXIgZnJvbSAnLi4vLi4vY2xpZW50LWZ1bmN0aW9ucy9zZWxlY3RvcnMvc2VsZWN0b3ItYnVpbGRlcic7XG5pbXBvcnQgQ2xpZW50RnVuY3Rpb25CdWlsZGVyIGZyb20gJy4uLy4uL2NsaWVudC1mdW5jdGlvbnMvY2xpZW50LWZ1bmN0aW9uLWJ1aWxkZXInO1xuaW1wb3J0IGZ1bmN0aW9uQnVpbGRlclN5bWJvbCBmcm9tICcuLi8uLi9jbGllbnQtZnVuY3Rpb25zL2J1aWxkZXItc3ltYm9sJztcbmltcG9ydCB7IEFjdGlvbkNvbW1hbmRCYXNlLCBDb21tYW5kQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge1xuICAgIEFjdGlvbk9wdGlvbnMsXG4gICAgQ2xpY2tPcHRpb25zLFxuICAgIE1vdXNlT3B0aW9ucyxcbiAgICBUeXBlT3B0aW9ucyxcbiAgICBQcmVzc09wdGlvbnMsXG4gICAgRHJhZ1RvRWxlbWVudE9wdGlvbnMsXG4gICAgT2Zmc2V0T3B0aW9ucyxcbiAgICBDb29raWVPcHRpb25zLFxuICAgIEdldFByb3h5VXJsT3B0aW9ucyxcbiAgICBSZXF1ZXN0T3B0aW9ucyxcbiAgICBTa2lwSnNFcnJvcnNPcHRpb25zLFxuICAgIFNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnMsXG59IGZyb20gJy4vb3B0aW9ucyc7XG5cbmltcG9ydCB7XG4gICAgaW5pdFNlbGVjdG9yLFxuICAgIGluaXRUeXBlU2VsZWN0b3IsXG4gICAgaW5pdFVwbG9hZFNlbGVjdG9yLFxufSBmcm9tICcuL3ZhbGlkYXRpb25zL2luaXRpYWxpemVycyc7XG5pbXBvcnQgeyBleGVjdXRlSnNFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhlY3V0ZS1qcy1leHByZXNzaW9uJztcbmltcG9ydCB7IGlzSlNFeHByZXNzaW9uIH0gZnJvbSAnLi91dGlscyc7XG5cbmltcG9ydCB7XG4gICAgYWN0aW9uT3B0aW9ucyxcbiAgICBpbnRlZ2VyQXJndW1lbnQsXG4gICAgcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsXG4gICAgc3RyaW5nQXJndW1lbnQsXG4gICAgbm9uRW1wdHlTdHJpbmdBcmd1bWVudCxcbiAgICBudWxsYWJsZVN0cmluZ0FyZ3VtZW50LFxuICAgIHBhZ2VVcmxBcmd1bWVudCxcbiAgICBzdHJpbmdPclN0cmluZ0FycmF5QXJndW1lbnQsXG4gICAgc2V0U3BlZWRBcmd1bWVudCxcbiAgICBhY3Rpb25Sb2xlQXJndW1lbnQsXG4gICAgYm9vbGVhbkFyZ3VtZW50LFxuICAgIGZ1bmN0aW9uQXJndW1lbnQsXG4gICAgY29va2llc0FyZ3VtZW50LFxuICAgIHNldENvb2tpZXNBcmd1bWVudCxcbiAgICB1cmxzQXJndW1lbnQsXG4gICAgdXJsQXJndW1lbnQsXG4gICAgc2tpcEpzRXJyb3JPcHRpb25zLFxuICAgIHJlcXVlc3RIb29rc0FyZ3VtZW50LFxufSBmcm9tICcuL3ZhbGlkYXRpb25zL2FyZ3VtZW50JztcblxuaW1wb3J0IHsgU2V0TmF0aXZlRGlhbG9nSGFuZGxlckNvZGVXcm9uZ1R5cGVFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy90ZXN0LXJ1bic7XG5pbXBvcnQgeyBFeGVjdXRlQ2xpZW50RnVuY3Rpb25Db21tYW5kIH0gZnJvbSAnLi9vYnNlcnZhdGlvbic7XG5pbXBvcnQgeyBjYW1lbENhc2UgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgICBwcmVwYXJlU2tpcEpzRXJyb3JzT3B0aW9ucyxcbiAgICBpc1NraXBKc0Vycm9yc09wdGlvbnNPYmplY3QsXG4gICAgaXNTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0LFxufSBmcm9tICcuLi8uLi9hcGkvc2tpcC1qcy1lcnJvcnMnO1xuXG5cbi8vIEluaXRpYWxpemVyc1xuZnVuY3Rpb24gaW5pdEFjdGlvbk9wdGlvbnMgKG5hbWUsIHZhbCwgaW5pdE9wdGlvbnMsIHZhbGlkYXRlID0gdHJ1ZSkge1xuICAgIHJldHVybiBuZXcgQWN0aW9uT3B0aW9ucyh2YWwsIHZhbGlkYXRlKTtcbn1cblxuZnVuY3Rpb24gaW5pdENsaWNrT3B0aW9ucyAobmFtZSwgdmFsLCBpbml0T3B0aW9ucywgdmFsaWRhdGUgPSB0cnVlKSB7XG4gICAgcmV0dXJuIG5ldyBDbGlja09wdGlvbnModmFsLCB2YWxpZGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGluaXRNb3VzZU9wdGlvbnMgKG5hbWUsIHZhbCwgaW5pdE9wdGlvbnMsIHZhbGlkYXRlID0gdHJ1ZSkge1xuICAgIHJldHVybiBuZXcgTW91c2VPcHRpb25zKHZhbCwgdmFsaWRhdGUpO1xufVxuXG5mdW5jdGlvbiBpbml0T2Zmc2V0T3B0aW9ucyAobmFtZSwgdmFsLCBpbml0T3B0aW9ucywgdmFsaWRhdGUgPSB0cnVlKSB7XG4gICAgcmV0dXJuIG5ldyBPZmZzZXRPcHRpb25zKHZhbCwgdmFsaWRhdGUpO1xufVxuXG5mdW5jdGlvbiBpbml0VHlwZU9wdGlvbnMgKG5hbWUsIHZhbCwgaW5pdE9wdGlvbnMsIHZhbGlkYXRlID0gdHJ1ZSkge1xuICAgIHJldHVybiBuZXcgVHlwZU9wdGlvbnModmFsLCB2YWxpZGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGluaXREcmFnVG9FbGVtZW50T3B0aW9ucyAobmFtZSwgdmFsLCBpbml0T3B0aW9ucywgdmFsaWRhdGUgPSB0cnVlKSB7XG4gICAgcmV0dXJuIG5ldyBEcmFnVG9FbGVtZW50T3B0aW9ucyh2YWwsIHZhbGlkYXRlKTtcbn1cblxuZnVuY3Rpb24gaW5pdFByZXNzT3B0aW9ucyAobmFtZSwgdmFsLCBpbml0T3B0aW9ucywgdmFsaWRhdGUgPSB0cnVlKSB7XG4gICAgcmV0dXJuIG5ldyBQcmVzc09wdGlvbnModmFsLCB2YWxpZGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGluaXREaWFsb2dIYW5kbGVyIChuYW1lLCB2YWwsIHsgc2tpcFZpc2liaWxpdHlDaGVjaywgdGVzdFJ1biB9KSB7XG4gICAgbGV0IGZuO1xuXG4gICAgaWYgKGlzSlNFeHByZXNzaW9uKHZhbCkpXG4gICAgICAgIGZuID0gZXhlY3V0ZUpzRXhwcmVzc2lvbih2YWwudmFsdWUsIHRlc3RSdW4sIHsgc2tpcFZpc2liaWxpdHlDaGVjayB9KTtcbiAgICBlbHNlXG4gICAgICAgIGZuID0gdmFsLmZuO1xuXG4gICAgaWYgKGZuID09PSBudWxsIHx8IGZuIGluc3RhbmNlb2YgRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZClcbiAgICAgICAgcmV0dXJuIGZuO1xuXG4gICAgY29uc3Qgb3B0aW9ucyAgICAgID0gdmFsLm9wdGlvbnM7XG4gICAgY29uc3QgbWV0aG9kTmFtZSAgID0gJ3NldE5hdGl2ZURpYWxvZ0hhbmRsZXInO1xuICAgIGNvbnN0IGZ1bmN0aW9uVHlwZSA9IHR5cGVvZiBmbjtcblxuICAgIGxldCBidWlsZGVyID0gZm4gJiYgZm5bZnVuY3Rpb25CdWlsZGVyU3ltYm9sXTtcblxuICAgIGNvbnN0IGlzU2VsZWN0b3IgICAgICAgPSBidWlsZGVyIGluc3RhbmNlb2YgU2VsZWN0b3JCdWlsZGVyO1xuICAgIGNvbnN0IGlzQ2xpZW50RnVuY3Rpb24gPSBidWlsZGVyIGluc3RhbmNlb2YgQ2xpZW50RnVuY3Rpb25CdWlsZGVyO1xuXG4gICAgaWYgKGZ1bmN0aW9uVHlwZSAhPT0gJ2Z1bmN0aW9uJyB8fCBpc1NlbGVjdG9yKVxuICAgICAgICB0aHJvdyBuZXcgU2V0TmF0aXZlRGlhbG9nSGFuZGxlckNvZGVXcm9uZ1R5cGVFcnJvcihpc1NlbGVjdG9yID8gJ1NlbGVjdG9yJyA6IGZ1bmN0aW9uVHlwZSk7XG5cbiAgICBpZiAoaXNDbGllbnRGdW5jdGlvbilcbiAgICAgICAgYnVpbGRlciA9IGZuLndpdGgob3B0aW9ucylbZnVuY3Rpb25CdWlsZGVyU3ltYm9sXTtcbiAgICBlbHNlXG4gICAgICAgIGJ1aWxkZXIgPSBuZXcgQ2xpZW50RnVuY3Rpb25CdWlsZGVyKGZuLCBvcHRpb25zLCB7IGluc3RhbnRpYXRpb246IG1ldGhvZE5hbWUsIGV4ZWN1dGlvbjogbWV0aG9kTmFtZSB9KTtcblxuICAgIHJldHVybiBidWlsZGVyLmdldENvbW1hbmQoKTtcbn1cblxuZnVuY3Rpb24gaW5pdENvb2tpZXNPcHRpb24gKG5hbWUsIHZhbCwgaW5pdE9wdGlvbnMsIHZhbGlkYXRlID0gdHJ1ZSkge1xuICAgIHJldHVybiB2YWwubWFwKGNvb2tpZSA9PiBuZXcgQ29va2llT3B0aW9ucyhjb29raWUsIHZhbGlkYXRlKSk7XG59XG5cbmZ1bmN0aW9uIGluaXRSZXF1ZXN0T3B0aW9uIChuYW1lLCB2YWwsIGluaXRPcHRpb25zLCB2YWxpZGF0ZSA9IHRydWUpIHtcbiAgICByZXR1cm4gbmV3IFJlcXVlc3RPcHRpb25zKHZhbCwgdmFsaWRhdGUpO1xufVxuXG5mdW5jdGlvbiBpbml0R2V0UHJveHlVcmxPcHRpb25zIChuYW1lLCB2YWwsIGluaXRPcHRpb25zLCB2YWxpZGF0ZSA9IHRydWUpIHtcbiAgICByZXR1cm4gbmV3IEdldFByb3h5VXJsT3B0aW9ucyh2YWwsIHZhbGlkYXRlKTtcbn1cblxuZnVuY3Rpb24gaW5pdFNraXBKc0Vycm9yc09wdGlvbnMgKG5hbWUsIHZhbCwgaW5pdE9wdGlvbnMsIHZhbGlkYXRlID0gdHJ1ZSkge1xuICAgIGlmICh2YWwgPT09IHZvaWQgMClcbiAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICBpZiAoaXNTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0KHZhbCkpXG4gICAgICAgIHZhbCA9IG5ldyBTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zKHZhbCwgdmFsaWRhdGUpO1xuXG4gICAgZWxzZSBpZiAoaXNTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0KHZhbCkpXG4gICAgICAgIHZhbCA9IG5ldyBTa2lwSnNFcnJvcnNPcHRpb25zKHZhbCwgdmFsaWRhdGUpO1xuXG4gICAgcmV0dXJuIHByZXBhcmVTa2lwSnNFcnJvcnNPcHRpb25zKHZhbCk7XG59XG5cbi8vIENvbW1hbmRzXG5leHBvcnQgY2xhc3MgRGlzcGF0Y2hFdmVudENvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5kaXNwYXRjaEV2ZW50KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuZGlzcGF0Y2hFdmVudCwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdzZWxlY3RvcicsIGluaXQ6IGluaXRTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2V2ZW50TmFtZScsIHR5cGU6IG5vbkVtcHR5U3RyaW5nQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdvcHRpb25zJywgdHlwZTogYWN0aW9uT3B0aW9ucyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAncmVsYXRlZFRhcmdldCcsIGluaXQ6IGluaXRTZWxlY3RvciwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2xpY2tDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuY2xpY2spO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5jbGljaywgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdzZWxlY3RvcicsIGluaXQ6IGluaXRTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ29wdGlvbnMnLCB0eXBlOiBhY3Rpb25PcHRpb25zLCBpbml0OiBpbml0Q2xpY2tPcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJpZ2h0Q2xpY2tDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUucmlnaHRDbGljayk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnJpZ2h0Q2xpY2ssIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnc2VsZWN0b3InLCBpbml0OiBpbml0U2VsZWN0b3IsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdvcHRpb25zJywgdHlwZTogYWN0aW9uT3B0aW9ucywgaW5pdDogaW5pdENsaWNrT3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFeGVjdXRlRXhwcmVzc2lvbkNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kQmFzZSB7XG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5leGVjdXRlRXhwcmVzc2lvbiwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdleHByZXNzaW9uJywgdHlwZTogbm9uRW1wdHlTdHJpbmdBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3Jlc3VsdFZhcmlhYmxlTmFtZScsIHR5cGU6IG5vbkVtcHR5U3RyaW5nQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogbnVsbCB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEV4ZWN1dGVBc3luY0V4cHJlc3Npb25Db21tYW5kIGV4dGVuZHMgQ29tbWFuZEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuZXhlY3V0ZUFzeW5jRXhwcmVzc2lvbiwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdleHByZXNzaW9uJywgdHlwZTogc3RyaW5nQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRG91YmxlQ2xpY2tDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuZG91YmxlQ2xpY2spO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5kb3VibGVDbGljaywgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdzZWxlY3RvcicsIGluaXQ6IGluaXRTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ29wdGlvbnMnLCB0eXBlOiBhY3Rpb25PcHRpb25zLCBpbml0OiBpbml0Q2xpY2tPcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhvdmVyQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLmhvdmVyKTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuaG92ZXIsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnc2VsZWN0b3InLCBpbml0OiBpbml0U2VsZWN0b3IsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdvcHRpb25zJywgdHlwZTogYWN0aW9uT3B0aW9ucywgaW5pdDogaW5pdE1vdXNlT3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUeXBlVGV4dENvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS50eXBlVGV4dCk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnR5cGVUZXh0LCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3NlbGVjdG9yJywgaW5pdDogaW5pdFR5cGVTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3RleHQnLCB0eXBlOiBub25FbXB0eVN0cmluZ0FyZ3VtZW50LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnb3B0aW9ucycsIHR5cGU6IGFjdGlvbk9wdGlvbnMsIGluaXQ6IGluaXRUeXBlT3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEcmFnQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLmRyYWcpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5kcmFnLCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3NlbGVjdG9yJywgaW5pdDogaW5pdFNlbGVjdG9yLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnZHJhZ09mZnNldFgnLCB0eXBlOiBpbnRlZ2VyQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdkcmFnT2Zmc2V0WScsIHR5cGU6IGludGVnZXJBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ29wdGlvbnMnLCB0eXBlOiBhY3Rpb25PcHRpb25zLCBpbml0OiBpbml0TW91c2VPcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERyYWdUb0VsZW1lbnRDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuZHJhZ1RvRWxlbWVudCk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLmRyYWdUb0VsZW1lbnQsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnc2VsZWN0b3InLCBpbml0OiBpbml0U2VsZWN0b3IsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdkZXN0aW5hdGlvblNlbGVjdG9yJywgaW5pdDogaW5pdFNlbGVjdG9yLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnb3B0aW9ucycsIHR5cGU6IGFjdGlvbk9wdGlvbnMsIGluaXQ6IGluaXREcmFnVG9FbGVtZW50T3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTY3JvbGxDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuc2Nyb2xsKTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuc2Nyb2xsLCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3NlbGVjdG9yJywgaW5pdDogaW5pdFNlbGVjdG9yLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3Bvc2l0aW9uJywgdHlwZTogbnVsbGFibGVTdHJpbmdBcmd1bWVudCwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICd4JywgdHlwZTogcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAneScsIHR5cGU6IHBvc2l0aXZlSW50ZWdlckFyZ3VtZW50LCBkZWZhdWx0VmFsdWU6IG51bGwgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ29wdGlvbnMnLCB0eXBlOiBhY3Rpb25PcHRpb25zLCBpbml0OiBpbml0T2Zmc2V0T3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTY3JvbGxCeUNvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5zY3JvbGxCeSk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnNjcm9sbEJ5LCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3NlbGVjdG9yJywgaW5pdDogaW5pdFNlbGVjdG9yLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2J5WCcsIHR5cGU6IGludGVnZXJBcmd1bWVudCwgZGVmYXVsdFZhbHVlOiAwIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdieVknLCB0eXBlOiBpbnRlZ2VyQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogMCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnb3B0aW9ucycsIHR5cGU6IGFjdGlvbk9wdGlvbnMsIGluaXQ6IGluaXRPZmZzZXRPcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNjcm9sbEludG9WaWV3Q29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnNjcm9sbEludG9WaWV3KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuc2Nyb2xsSW50b1ZpZXcsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnc2VsZWN0b3InLCBpbml0OiBpbml0U2VsZWN0b3IsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdvcHRpb25zJywgdHlwZTogYWN0aW9uT3B0aW9ucywgaW5pdDogaW5pdE9mZnNldE9wdGlvbnMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2VsZWN0VGV4dENvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5zZWxlY3RUZXh0KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuc2VsZWN0VGV4dCwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdzZWxlY3RvcicsIGluaXQ6IGluaXRTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3N0YXJ0UG9zJywgdHlwZTogcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnZW5kUG9zJywgdHlwZTogcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnb3B0aW9ucycsIHR5cGU6IGFjdGlvbk9wdGlvbnMsIGluaXQ6IGluaXRBY3Rpb25PcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlbGVjdEVkaXRhYmxlQ29udGVudENvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5zZWxlY3RFZGl0YWJsZUNvbnRlbnQpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5zZWxlY3RFZGl0YWJsZUNvbnRlbnQsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnc3RhcnRTZWxlY3RvcicsIGluaXQ6IGluaXRTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2VuZFNlbGVjdG9yJywgaW5pdDogaW5pdFNlbGVjdG9yLCBkZWZhdWx0VmFsdWU6IG51bGwgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ29wdGlvbnMnLCB0eXBlOiBhY3Rpb25PcHRpb25zLCBpbml0OiBpbml0QWN0aW9uT3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3RUZXh0QXJlYUNvbnRlbnRDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuc2VsZWN0VGV4dEFyZWFDb250ZW50KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuc2VsZWN0VGV4dEFyZWFDb250ZW50LCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3NlbGVjdG9yJywgaW5pdDogaW5pdFNlbGVjdG9yLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnc3RhcnRMaW5lJywgdHlwZTogcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnc3RhcnRQb3MnLCB0eXBlOiBwb3NpdGl2ZUludGVnZXJBcmd1bWVudCwgZGVmYXVsdFZhbHVlOiBudWxsIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdlbmRMaW5lJywgdHlwZTogcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnZW5kUG9zJywgdHlwZTogcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnb3B0aW9ucycsIHR5cGU6IGFjdGlvbk9wdGlvbnMsIGluaXQ6IGluaXRBY3Rpb25PcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByZXNzS2V5Q29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnByZXNzS2V5KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUucHJlc3NLZXksIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAna2V5cycsIHR5cGU6IG5vbkVtcHR5U3RyaW5nQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdvcHRpb25zJywgdHlwZTogYWN0aW9uT3B0aW9ucywgaW5pdDogaW5pdFByZXNzT3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOYXZpZ2F0ZVRvQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLm5hdmlnYXRlVG8pO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5uYXZpZ2F0ZVRvLCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3VybCcsIHR5cGU6IHBhZ2VVcmxBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3N0YXRlU25hcHNob3QnLCB0eXBlOiBudWxsYWJsZVN0cmluZ0FyZ3VtZW50LCBkZWZhdWx0VmFsdWU6IG51bGwgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2ZvcmNlUmVsb2FkJywgdHlwZTogYm9vbGVhbkFyZ3VtZW50LCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0RmlsZXNUb1VwbG9hZENvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5zZXRGaWxlc1RvVXBsb2FkKTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuc2V0RmlsZXNUb1VwbG9hZCwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdzZWxlY3RvcicsIGluaXQ6IGluaXRVcGxvYWRTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2ZpbGVQYXRoJywgdHlwZTogc3RyaW5nT3JTdHJpbmdBcnJheUFyZ3VtZW50LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsZWFyVXBsb2FkQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLmNsZWFyVXBsb2FkKTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuY2xlYXJVcGxvYWQsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnc2VsZWN0b3InLCBpbml0OiBpbml0VXBsb2FkU2VsZWN0b3IsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3dpdGNoVG9JZnJhbWVDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuc3dpdGNoVG9JZnJhbWUpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5zd2l0Y2hUb0lmcmFtZSwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdzZWxlY3RvcicsIGluaXQ6IGluaXRTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTd2l0Y2hUb01haW5XaW5kb3dDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuc3dpdGNoVG9NYWluV2luZG93KTtcblxuICAgIGNvbnN0cnVjdG9yICgpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gVFlQRS5zd2l0Y2hUb01haW5XaW5kb3c7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3BlbldpbmRvd0NvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5vcGVuV2luZG93KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUub3BlbldpbmRvdywgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICd1cmwnLCB0eXBlOiBwYWdlVXJsQXJndW1lbnQgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbG9zZVdpbmRvd0NvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5jbG9zZVdpbmRvdyk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLmNsb3NlV2luZG93LCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3dpbmRvd0lkJywgdHlwZTogbnVsbGFibGVTdHJpbmdBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIEdldEN1cnJlbnRXaW5kb3dDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuZ2V0Q3VycmVudFdpbmRvdyk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLmdldEN1cnJlbnRXaW5kb3csIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0Q3VycmVudFdpbmRvd3NDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuZ2V0Q3VycmVudFdpbmRvd3MpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5nZXRDdXJyZW50V2luZG93cywgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTd2l0Y2hUb1dpbmRvd0NvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5zd2l0Y2hUb1dpbmRvdyk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnN3aXRjaFRvV2luZG93LCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3dpbmRvd0lkJywgdHlwZTogbm9uRW1wdHlTdHJpbmdBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTd2l0Y2hUb1dpbmRvd0J5UHJlZGljYXRlQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnN3aXRjaFRvV2luZG93KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuc3dpdGNoVG9XaW5kb3dCeVByZWRpY2F0ZSwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdpZCcsIHR5cGU6IG5vbkVtcHR5U3RyaW5nQXJndW1lbnQsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnY2hlY2tXaW5kb3cnLCB0eXBlOiBmdW5jdGlvbkFyZ3VtZW50LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN3aXRjaFRvUGFyZW50V2luZG93Q29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnN3aXRjaFRvUGFyZW50V2luZG93KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuc3dpdGNoVG9QYXJlbnRXaW5kb3csIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3dpdGNoVG9QcmV2aW91c1dpbmRvd0NvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5zd2l0Y2hUb1ByZXZpb3VzV2luZG93KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuc3dpdGNoVG9QcmV2aW91c1dpbmRvdywgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZXROYXRpdmVEaWFsb2dIYW5kbGVyQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnNldE5hdGl2ZURpYWxvZ0hhbmRsZXIpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5zZXROYXRpdmVEaWFsb2dIYW5kbGVyLCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ2RpYWxvZ0hhbmRsZXInLCBpbml0OiBpbml0RGlhbG9nSGFuZGxlciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZnJvbSAodmFsKSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0hhbmRsZXJTdHViID0ge1xuICAgICAgICAgICAgZGlhbG9nSGFuZGxlcjogeyBmbjogbnVsbCB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgU2V0TmF0aXZlRGlhbG9nSGFuZGxlckNvbW1hbmQoZGlhbG9nSGFuZGxlclN0dWIpO1xuXG4gICAgICAgIGNvbW1hbmQuZGlhbG9nSGFuZGxlciA9IHZhbC5kaWFsb2dIYW5kbGVyO1xuXG4gICAgICAgIHJldHVybiBjb21tYW5kO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldE5hdGl2ZURpYWxvZ0hpc3RvcnlDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuZ2V0TmF0aXZlRGlhbG9nSGlzdG9yeSk7XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudHlwZSA9IFRZUEUuZ2V0TmF0aXZlRGlhbG9nSGlzdG9yeTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRCcm93c2VyQ29uc29sZU1lc3NhZ2VzQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLmdldEJyb3dzZXJDb25zb2xlTWVzc2FnZXMpO1xuXG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBUWVBFLmdldEJyb3dzZXJDb25zb2xlTWVzc2FnZXM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0VGVzdFNwZWVkQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnNldFRlc3RTcGVlZCk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnNldFRlc3RTcGVlZCwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdzcGVlZCcsIHR5cGU6IHNldFNwZWVkQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0UGFnZUxvYWRUaW1lb3V0Q29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnNldFBhZ2VMb2FkVGltZW91dCk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnNldFBhZ2VMb2FkVGltZW91dCwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdkdXJhdGlvbicsIHR5cGU6IHBvc2l0aXZlSW50ZWdlckFyZ3VtZW50LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVzZVJvbGVDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUudXNlUm9sZSk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnVzZVJvbGUsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAncm9sZScsIHR5cGU6IGFjdGlvblJvbGVBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbG9zZUNoaWxkV2luZG93T25GaWxlRG93bmxvYWRpbmcgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5jbG9zZUNoaWxkV2luZG93T25GaWxlRG93bmxvYWRpbmcpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5jbG9zZUNoaWxkV2luZG93T25GaWxlRG93bmxvYWRpbmcsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVjb3JkZXJDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUucmVjb3JkZXIpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1bikge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUucmVjb3JkZXIpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3N1YnR5cGUnLCB0eXBlOiBub25FbXB0eVN0cmluZ0FyZ3VtZW50LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnZm9yY2VFeGVjdXRpb25JblRvcFdpbmRvd09ubHknLCB0eXBlOiBib29sZWFuQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRDb29raWVzQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLmdldENvb2tpZXMpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5nZXRDb29raWVzLCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3VybHMnLCB0eXBlOiB1cmxzQXJndW1lbnQsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnY29va2llcycsIHR5cGU6IGNvb2tpZXNBcmd1bWVudCwgaW5pdDogaW5pdENvb2tpZXNPcHRpb24sIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNldENvb2tpZXNDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuc2V0Q29va2llcyk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnNldENvb2tpZXMsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAndXJsJywgdHlwZTogdXJsc0FyZ3VtZW50LCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2Nvb2tpZXMnLCB0eXBlOiBzZXRDb29raWVzQXJndW1lbnQsIGluaXQ6IGluaXRDb29raWVzT3B0aW9uLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERlbGV0ZUNvb2tpZXNDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuZGVsZXRlQ29va2llcyk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLmRlbGV0ZUNvb2tpZXMsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAndXJscycsIHR5cGU6IHVybHNBcmd1bWVudCwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdjb29raWVzJywgdHlwZTogY29va2llc0FyZ3VtZW50LCBpbml0OiBpbml0Q29va2llc09wdGlvbiwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVxdWVzdENvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5yZXF1ZXN0KTtcbiAgICBzdGF0aWMgZXh0ZW5kZWRNZXRob2RzID0gWydnZXQnLCAncG9zdCcsICdkZWxldGUnLCAncHV0JywgJ3BhdGNoJywgJ2hlYWQnXTtcbiAgICBzdGF0aWMgcmVzdWx0R2V0dGVycyA9IFsnc3RhdHVzJywgJ3N0YXR1c1RleHQnLCAnaGVhZGVycycsICdib2R5J107XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnJlcXVlc3QsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAndXJsJywgdHlwZTogdXJsQXJndW1lbnQsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnb3B0aW9ucycsIHR5cGU6IGFjdGlvbk9wdGlvbnMsIGluaXQ6IGluaXRSZXF1ZXN0T3B0aW9uLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRQcm94eVVybENvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5nZXRQcm94eVVybCk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLmdldFByb3h5VXJsLCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3VybCcsIHR5cGU6IHVybEFyZ3VtZW50LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnb3B0aW9ucycsIGluaXQ6IGluaXRHZXRQcm94eVVybE9wdGlvbnMsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNraXBKc0Vycm9yc0NvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5za2lwSnNFcnJvcnMpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5za2lwSnNFcnJvcnMsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnb3B0aW9ucycsIHR5cGU6IHNraXBKc0Vycm9yT3B0aW9ucywgaW5pdDogaW5pdFNraXBKc0Vycm9yc09wdGlvbnMsIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUnVuQ3VzdG9tQWN0aW9uQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnJ1bkN1c3RvbUFjdGlvbik7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnJ1bkN1c3RvbUFjdGlvbiwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdmbicsIHR5cGU6IGZ1bmN0aW9uQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogc3RyaW5nQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdhcmdzJywgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRkUmVxdWVzdEhvb2tzQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLmFkZFJlcXVlc3RIb29rcyk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLmFkZFJlcXVlc3RIb29rcywgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdob29rcycsIHR5cGU6IHJlcXVlc3RIb29rc0FyZ3VtZW50LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlbW92ZVJlcXVlc3RIb29rc0NvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5yZW1vdmVSZXF1ZXN0SG9va3MpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5yZW1vdmVSZXF1ZXN0SG9va3MsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnaG9va3MnLCB0eXBlOiByZXF1ZXN0SG9va3NBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXBvcnRDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUucmVwb3J0KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUucmVwb3J0LCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ2FyZ3MnLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cbiJdfQ==
677
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0LXJ1bi9jb21tYW5kcy9hY3Rpb25zLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUMxQix5R0FBZ0Y7QUFDaEYsNkdBQW1GO0FBQ25GLDJGQUEwRTtBQUMxRSxpQ0FBd0Q7QUFDeEQsdUNBYW1CO0FBRW5CLDZEQUlvQztBQUNwQyxvRUFBK0Q7QUFDL0QsbUNBQXlDO0FBRXpDLHFEQW1CZ0M7QUFFaEMsb0RBQWlGO0FBQ2pGLHVFQUF5RTtBQUN6RSxtQ0FBbUM7QUFDbkMsNkRBSWtDO0FBR2xDLGVBQWU7QUFDZixTQUFTLGlCQUFpQixDQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFFBQVEsR0FBRyxJQUFJO0lBQy9ELE9BQU8sSUFBSSx1QkFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxRQUFRLEdBQUcsSUFBSTtJQUM5RCxPQUFPLElBQUksc0JBQVksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsUUFBUSxHQUFHLElBQUk7SUFDOUQsT0FBTyxJQUFJLHNCQUFZLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFFBQVEsR0FBRyxJQUFJO0lBQy9ELE9BQU8sSUFBSSx1QkFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsUUFB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QjtRQUNuQixPQUFPO1lBQ0gsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSwrQkFBb0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1NBQ2hFLENBQUM7SUFDTixDQUFDOztBQVhMLDhEQVlDO0FBWFUsb0NBQVUsR0FBRyxJQUFBLGtCQUFTLEVBQUMsY0FBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFhM0QsTUFBYSxhQUFjLFNBQVEsd0JBQWlCO0lBR2hELFlBQWEsR0FBRyxFQUFFLE9BQU8sRUFBRSxrQkFBa0I7UUFDekMsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsY0FBSSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCx1QkFBdUI7UUFDbkIsT0FBTztZQUNILEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1NBQ25DLENBQUM7SUFDTixDQUFDOztBQVhMLHNDQVlDO0FBWFUsd0JBQVUsR0FBRyxJQUFBLGtCQUFTLEVBQUMsY0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRZUEUgZnJvbSAnLi90eXBlJztcbmltcG9ydCBTZWxlY3RvckJ1aWxkZXIgZnJvbSAnLi4vLi4vY2xpZW50LWZ1bmN0aW9ucy9zZWxlY3RvcnMvc2VsZWN0b3ItYnVpbGRlcic7XG5pbXBvcnQgQ2xpZW50RnVuY3Rpb25CdWlsZGVyIGZyb20gJy4uLy4uL2NsaWVudC1mdW5jdGlvbnMvY2xpZW50LWZ1bmN0aW9uLWJ1aWxkZXInO1xuaW1wb3J0IGZ1bmN0aW9uQnVpbGRlclN5bWJvbCBmcm9tICcuLi8uLi9jbGllbnQtZnVuY3Rpb25zL2J1aWxkZXItc3ltYm9sJztcbmltcG9ydCB7IEFjdGlvbkNvbW1hbmRCYXNlLCBDb21tYW5kQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge1xuICAgIEFjdGlvbk9wdGlvbnMsXG4gICAgQ2xpY2tPcHRpb25zLFxuICAgIE1vdXNlT3B0aW9ucyxcbiAgICBUeXBlT3B0aW9ucyxcbiAgICBQcmVzc09wdGlvbnMsXG4gICAgRHJhZ1RvRWxlbWVudE9wdGlvbnMsXG4gICAgT2Zmc2V0T3B0aW9ucyxcbiAgICBDb29raWVPcHRpb25zLFxuICAgIEdldFByb3h5VXJsT3B0aW9ucyxcbiAgICBSZXF1ZXN0T3B0aW9ucyxcbiAgICBTa2lwSnNFcnJvcnNPcHRpb25zLFxuICAgIFNraXBKc0Vycm9yc0NhbGxiYWNrV2l0aE9wdGlvbnMsXG59IGZyb20gJy4vb3B0aW9ucyc7XG5cbmltcG9ydCB7XG4gICAgaW5pdFNlbGVjdG9yLFxuICAgIGluaXRUeXBlU2VsZWN0b3IsXG4gICAgaW5pdFVwbG9hZFNlbGVjdG9yLFxufSBmcm9tICcuL3ZhbGlkYXRpb25zL2luaXRpYWxpemVycyc7XG5pbXBvcnQgeyBleGVjdXRlSnNFeHByZXNzaW9uIH0gZnJvbSAnLi4vZXhlY3V0ZS1qcy1leHByZXNzaW9uJztcbmltcG9ydCB7IGlzSlNFeHByZXNzaW9uIH0gZnJvbSAnLi91dGlscyc7XG5cbmltcG9ydCB7XG4gICAgYWN0aW9uT3B0aW9ucyxcbiAgICBpbnRlZ2VyQXJndW1lbnQsXG4gICAgcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsXG4gICAgc3RyaW5nQXJndW1lbnQsXG4gICAgbm9uRW1wdHlTdHJpbmdBcmd1bWVudCxcbiAgICBudWxsYWJsZVN0cmluZ0FyZ3VtZW50LFxuICAgIHBhZ2VVcmxBcmd1bWVudCxcbiAgICBzdHJpbmdPclN0cmluZ0FycmF5QXJndW1lbnQsXG4gICAgc2V0U3BlZWRBcmd1bWVudCxcbiAgICBhY3Rpb25Sb2xlQXJndW1lbnQsXG4gICAgYm9vbGVhbkFyZ3VtZW50LFxuICAgIGZ1bmN0aW9uQXJndW1lbnQsXG4gICAgY29va2llc0FyZ3VtZW50LFxuICAgIHNldENvb2tpZXNBcmd1bWVudCxcbiAgICB1cmxzQXJndW1lbnQsXG4gICAgdXJsQXJndW1lbnQsXG4gICAgc2tpcEpzRXJyb3JPcHRpb25zLFxuICAgIHJlcXVlc3RIb29rc0FyZ3VtZW50LFxufSBmcm9tICcuL3ZhbGlkYXRpb25zL2FyZ3VtZW50JztcblxuaW1wb3J0IHsgU2V0TmF0aXZlRGlhbG9nSGFuZGxlckNvZGVXcm9uZ1R5cGVFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy90ZXN0LXJ1bic7XG5pbXBvcnQgeyBFeGVjdXRlQ2xpZW50RnVuY3Rpb25Db21tYW5kIH0gZnJvbSAnLi9leGVjdXRlLWNsaWVudC1mdW5jdGlvbic7XG5pbXBvcnQgeyBjYW1lbENhc2UgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgICBwcmVwYXJlU2tpcEpzRXJyb3JzT3B0aW9ucyxcbiAgICBpc1NraXBKc0Vycm9yc09wdGlvbnNPYmplY3QsXG4gICAgaXNTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0LFxufSBmcm9tICcuLi8uLi9hcGkvc2tpcC1qcy1lcnJvcnMnO1xuXG5cbi8vIEluaXRpYWxpemVyc1xuZnVuY3Rpb24gaW5pdEFjdGlvbk9wdGlvbnMgKG5hbWUsIHZhbCwgaW5pdE9wdGlvbnMsIHZhbGlkYXRlID0gdHJ1ZSkge1xuICAgIHJldHVybiBuZXcgQWN0aW9uT3B0aW9ucyh2YWwsIHZhbGlkYXRlKTtcbn1cblxuZnVuY3Rpb24gaW5pdENsaWNrT3B0aW9ucyAobmFtZSwgdmFsLCBpbml0T3B0aW9ucywgdmFsaWRhdGUgPSB0cnVlKSB7XG4gICAgcmV0dXJuIG5ldyBDbGlja09wdGlvbnModmFsLCB2YWxpZGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGluaXRNb3VzZU9wdGlvbnMgKG5hbWUsIHZhbCwgaW5pdE9wdGlvbnMsIHZhbGlkYXRlID0gdHJ1ZSkge1xuICAgIHJldHVybiBuZXcgTW91c2VPcHRpb25zKHZhbCwgdmFsaWRhdGUpO1xufVxuXG5mdW5jdGlvbiBpbml0T2Zmc2V0T3B0aW9ucyAobmFtZSwgdmFsLCBpbml0T3B0aW9ucywgdmFsaWRhdGUgPSB0cnVlKSB7XG4gICAgcmV0dXJuIG5ldyBPZmZzZXRPcHRpb25zKHZhbCwgdmFsaWRhdGUpO1xufVxuXG5mdW5jdGlvbiBpbml0VHlwZU9wdGlvbnMgKG5hbWUsIHZhbCwgaW5pdE9wdGlvbnMsIHZhbGlkYXRlID0gdHJ1ZSkge1xuICAgIHJldHVybiBuZXcgVHlwZU9wdGlvbnModmFsLCB2YWxpZGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGluaXREcmFnVG9FbGVtZW50T3B0aW9ucyAobmFtZSwgdmFsLCBpbml0T3B0aW9ucywgdmFsaWRhdGUgPSB0cnVlKSB7XG4gICAgcmV0dXJuIG5ldyBEcmFnVG9FbGVtZW50T3B0aW9ucyh2YWwsIHZhbGlkYXRlKTtcbn1cblxuZnVuY3Rpb24gaW5pdFByZXNzT3B0aW9ucyAobmFtZSwgdmFsLCBpbml0T3B0aW9ucywgdmFsaWRhdGUgPSB0cnVlKSB7XG4gICAgcmV0dXJuIG5ldyBQcmVzc09wdGlvbnModmFsLCB2YWxpZGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGluaXREaWFsb2dIYW5kbGVyIChuYW1lLCB2YWwsIHsgc2tpcFZpc2liaWxpdHlDaGVjaywgdGVzdFJ1biB9KSB7XG4gICAgbGV0IGZuO1xuXG4gICAgaWYgKGlzSlNFeHByZXNzaW9uKHZhbCkpXG4gICAgICAgIGZuID0gZXhlY3V0ZUpzRXhwcmVzc2lvbih2YWwudmFsdWUsIHRlc3RSdW4sIHsgc2tpcFZpc2liaWxpdHlDaGVjayB9KTtcbiAgICBlbHNlXG4gICAgICAgIGZuID0gdmFsLmZuO1xuXG4gICAgaWYgKGZuID09PSBudWxsIHx8IGZuIGluc3RhbmNlb2YgRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZClcbiAgICAgICAgcmV0dXJuIGZuO1xuXG4gICAgY29uc3Qgb3B0aW9ucyAgICAgID0gdmFsLm9wdGlvbnM7XG4gICAgY29uc3QgbWV0aG9kTmFtZSAgID0gJ3NldE5hdGl2ZURpYWxvZ0hhbmRsZXInO1xuICAgIGNvbnN0IGZ1bmN0aW9uVHlwZSA9IHR5cGVvZiBmbjtcblxuICAgIGxldCBidWlsZGVyID0gZm4gJiYgZm5bZnVuY3Rpb25CdWlsZGVyU3ltYm9sXTtcblxuICAgIGNvbnN0IGlzU2VsZWN0b3IgICAgICAgPSBidWlsZGVyIGluc3RhbmNlb2YgU2VsZWN0b3JCdWlsZGVyO1xuICAgIGNvbnN0IGlzQ2xpZW50RnVuY3Rpb24gPSBidWlsZGVyIGluc3RhbmNlb2YgQ2xpZW50RnVuY3Rpb25CdWlsZGVyO1xuXG4gICAgaWYgKGZ1bmN0aW9uVHlwZSAhPT0gJ2Z1bmN0aW9uJyB8fCBpc1NlbGVjdG9yKVxuICAgICAgICB0aHJvdyBuZXcgU2V0TmF0aXZlRGlhbG9nSGFuZGxlckNvZGVXcm9uZ1R5cGVFcnJvcihpc1NlbGVjdG9yID8gJ1NlbGVjdG9yJyA6IGZ1bmN0aW9uVHlwZSk7XG5cbiAgICBpZiAoaXNDbGllbnRGdW5jdGlvbilcbiAgICAgICAgYnVpbGRlciA9IGZuLndpdGgob3B0aW9ucylbZnVuY3Rpb25CdWlsZGVyU3ltYm9sXTtcbiAgICBlbHNlXG4gICAgICAgIGJ1aWxkZXIgPSBuZXcgQ2xpZW50RnVuY3Rpb25CdWlsZGVyKGZuLCBvcHRpb25zLCB7IGluc3RhbnRpYXRpb246IG1ldGhvZE5hbWUsIGV4ZWN1dGlvbjogbWV0aG9kTmFtZSB9KTtcblxuICAgIHJldHVybiBidWlsZGVyLmdldENvbW1hbmQoKTtcbn1cblxuZnVuY3Rpb24gaW5pdENvb2tpZXNPcHRpb24gKG5hbWUsIHZhbCwgaW5pdE9wdGlvbnMsIHZhbGlkYXRlID0gdHJ1ZSkge1xuICAgIHJldHVybiB2YWwubWFwKGNvb2tpZSA9PiBuZXcgQ29va2llT3B0aW9ucyhjb29raWUsIHZhbGlkYXRlKSk7XG59XG5cbmZ1bmN0aW9uIGluaXRSZXF1ZXN0T3B0aW9uIChuYW1lLCB2YWwsIGluaXRPcHRpb25zLCB2YWxpZGF0ZSA9IHRydWUpIHtcbiAgICByZXR1cm4gbmV3IFJlcXVlc3RPcHRpb25zKHZhbCwgdmFsaWRhdGUpO1xufVxuXG5mdW5jdGlvbiBpbml0R2V0UHJveHlVcmxPcHRpb25zIChuYW1lLCB2YWwsIGluaXRPcHRpb25zLCB2YWxpZGF0ZSA9IHRydWUpIHtcbiAgICByZXR1cm4gbmV3IEdldFByb3h5VXJsT3B0aW9ucyh2YWwsIHZhbGlkYXRlKTtcbn1cblxuZnVuY3Rpb24gaW5pdFNraXBKc0Vycm9yc09wdGlvbnMgKG5hbWUsIHZhbCwgaW5pdE9wdGlvbnMsIHZhbGlkYXRlID0gdHJ1ZSkge1xuICAgIGlmICh2YWwgPT09IHZvaWQgMClcbiAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICBpZiAoaXNTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zT2JqZWN0KHZhbCkpXG4gICAgICAgIHZhbCA9IG5ldyBTa2lwSnNFcnJvcnNDYWxsYmFja1dpdGhPcHRpb25zKHZhbCwgdmFsaWRhdGUpO1xuXG4gICAgZWxzZSBpZiAoaXNTa2lwSnNFcnJvcnNPcHRpb25zT2JqZWN0KHZhbCkpXG4gICAgICAgIHZhbCA9IG5ldyBTa2lwSnNFcnJvcnNPcHRpb25zKHZhbCwgdmFsaWRhdGUpO1xuXG4gICAgcmV0dXJuIHByZXBhcmVTa2lwSnNFcnJvcnNPcHRpb25zKHZhbCk7XG59XG5cbi8vIENvbW1hbmRzXG5leHBvcnQgY2xhc3MgRGlzcGF0Y2hFdmVudENvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5kaXNwYXRjaEV2ZW50KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuZGlzcGF0Y2hFdmVudCwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdzZWxlY3RvcicsIGluaXQ6IGluaXRTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2V2ZW50TmFtZScsIHR5cGU6IG5vbkVtcHR5U3RyaW5nQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdvcHRpb25zJywgdHlwZTogYWN0aW9uT3B0aW9ucyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAncmVsYXRlZFRhcmdldCcsIGluaXQ6IGluaXRTZWxlY3RvciwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2xpY2tDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuY2xpY2spO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5jbGljaywgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdzZWxlY3RvcicsIGluaXQ6IGluaXRTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ29wdGlvbnMnLCB0eXBlOiBhY3Rpb25PcHRpb25zLCBpbml0OiBpbml0Q2xpY2tPcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJpZ2h0Q2xpY2tDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUucmlnaHRDbGljayk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnJpZ2h0Q2xpY2ssIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnc2VsZWN0b3InLCBpbml0OiBpbml0U2VsZWN0b3IsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdvcHRpb25zJywgdHlwZTogYWN0aW9uT3B0aW9ucywgaW5pdDogaW5pdENsaWNrT3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFeGVjdXRlRXhwcmVzc2lvbkNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kQmFzZSB7XG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5leGVjdXRlRXhwcmVzc2lvbiwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdleHByZXNzaW9uJywgdHlwZTogbm9uRW1wdHlTdHJpbmdBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3Jlc3VsdFZhcmlhYmxlTmFtZScsIHR5cGU6IG5vbkVtcHR5U3RyaW5nQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogbnVsbCB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEV4ZWN1dGVBc3luY0V4cHJlc3Npb25Db21tYW5kIGV4dGVuZHMgQ29tbWFuZEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuZXhlY3V0ZUFzeW5jRXhwcmVzc2lvbiwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdleHByZXNzaW9uJywgdHlwZTogc3RyaW5nQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRG91YmxlQ2xpY2tDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuZG91YmxlQ2xpY2spO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5kb3VibGVDbGljaywgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdzZWxlY3RvcicsIGluaXQ6IGluaXRTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ29wdGlvbnMnLCB0eXBlOiBhY3Rpb25PcHRpb25zLCBpbml0OiBpbml0Q2xpY2tPcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhvdmVyQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLmhvdmVyKTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuaG92ZXIsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnc2VsZWN0b3InLCBpbml0OiBpbml0U2VsZWN0b3IsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdvcHRpb25zJywgdHlwZTogYWN0aW9uT3B0aW9ucywgaW5pdDogaW5pdE1vdXNlT3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUeXBlVGV4dENvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS50eXBlVGV4dCk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnR5cGVUZXh0LCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3NlbGVjdG9yJywgaW5pdDogaW5pdFR5cGVTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3RleHQnLCB0eXBlOiBub25FbXB0eVN0cmluZ0FyZ3VtZW50LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnb3B0aW9ucycsIHR5cGU6IGFjdGlvbk9wdGlvbnMsIGluaXQ6IGluaXRUeXBlT3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEcmFnQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLmRyYWcpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5kcmFnLCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3NlbGVjdG9yJywgaW5pdDogaW5pdFNlbGVjdG9yLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnZHJhZ09mZnNldFgnLCB0eXBlOiBpbnRlZ2VyQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdkcmFnT2Zmc2V0WScsIHR5cGU6IGludGVnZXJBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ29wdGlvbnMnLCB0eXBlOiBhY3Rpb25PcHRpb25zLCBpbml0OiBpbml0TW91c2VPcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERyYWdUb0VsZW1lbnRDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuZHJhZ1RvRWxlbWVudCk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLmRyYWdUb0VsZW1lbnQsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnc2VsZWN0b3InLCBpbml0OiBpbml0U2VsZWN0b3IsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdkZXN0aW5hdGlvblNlbGVjdG9yJywgaW5pdDogaW5pdFNlbGVjdG9yLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnb3B0aW9ucycsIHR5cGU6IGFjdGlvbk9wdGlvbnMsIGluaXQ6IGluaXREcmFnVG9FbGVtZW50T3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTY3JvbGxDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuc2Nyb2xsKTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuc2Nyb2xsLCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3NlbGVjdG9yJywgaW5pdDogaW5pdFNlbGVjdG9yLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3Bvc2l0aW9uJywgdHlwZTogbnVsbGFibGVTdHJpbmdBcmd1bWVudCwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICd4JywgdHlwZTogcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAneScsIHR5cGU6IHBvc2l0aXZlSW50ZWdlckFyZ3VtZW50LCBkZWZhdWx0VmFsdWU6IG51bGwgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ29wdGlvbnMnLCB0eXBlOiBhY3Rpb25PcHRpb25zLCBpbml0OiBpbml0T2Zmc2V0T3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTY3JvbGxCeUNvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5zY3JvbGxCeSk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnNjcm9sbEJ5LCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3NlbGVjdG9yJywgaW5pdDogaW5pdFNlbGVjdG9yLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2J5WCcsIHR5cGU6IGludGVnZXJBcmd1bWVudCwgZGVmYXVsdFZhbHVlOiAwIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdieVknLCB0eXBlOiBpbnRlZ2VyQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogMCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnb3B0aW9ucycsIHR5cGU6IGFjdGlvbk9wdGlvbnMsIGluaXQ6IGluaXRPZmZzZXRPcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNjcm9sbEludG9WaWV3Q29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnNjcm9sbEludG9WaWV3KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuc2Nyb2xsSW50b1ZpZXcsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnc2VsZWN0b3InLCBpbml0OiBpbml0U2VsZWN0b3IsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdvcHRpb25zJywgdHlwZTogYWN0aW9uT3B0aW9ucywgaW5pdDogaW5pdE9mZnNldE9wdGlvbnMsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2VsZWN0VGV4dENvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5zZWxlY3RUZXh0KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuc2VsZWN0VGV4dCwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdzZWxlY3RvcicsIGluaXQ6IGluaXRTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3N0YXJ0UG9zJywgdHlwZTogcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnZW5kUG9zJywgdHlwZTogcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnb3B0aW9ucycsIHR5cGU6IGFjdGlvbk9wdGlvbnMsIGluaXQ6IGluaXRBY3Rpb25PcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlbGVjdEVkaXRhYmxlQ29udGVudENvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5zZWxlY3RFZGl0YWJsZUNvbnRlbnQpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5zZWxlY3RFZGl0YWJsZUNvbnRlbnQsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnc3RhcnRTZWxlY3RvcicsIGluaXQ6IGluaXRTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2VuZFNlbGVjdG9yJywgaW5pdDogaW5pdFNlbGVjdG9yLCBkZWZhdWx0VmFsdWU6IG51bGwgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ29wdGlvbnMnLCB0eXBlOiBhY3Rpb25PcHRpb25zLCBpbml0OiBpbml0QWN0aW9uT3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3RUZXh0QXJlYUNvbnRlbnRDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuc2VsZWN0VGV4dEFyZWFDb250ZW50KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuc2VsZWN0VGV4dEFyZWFDb250ZW50LCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3NlbGVjdG9yJywgaW5pdDogaW5pdFNlbGVjdG9yLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnc3RhcnRMaW5lJywgdHlwZTogcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnc3RhcnRQb3MnLCB0eXBlOiBwb3NpdGl2ZUludGVnZXJBcmd1bWVudCwgZGVmYXVsdFZhbHVlOiBudWxsIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdlbmRMaW5lJywgdHlwZTogcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnZW5kUG9zJywgdHlwZTogcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnb3B0aW9ucycsIHR5cGU6IGFjdGlvbk9wdGlvbnMsIGluaXQ6IGluaXRBY3Rpb25PcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFByZXNzS2V5Q29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnByZXNzS2V5KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUucHJlc3NLZXksIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAna2V5cycsIHR5cGU6IG5vbkVtcHR5U3RyaW5nQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdvcHRpb25zJywgdHlwZTogYWN0aW9uT3B0aW9ucywgaW5pdDogaW5pdFByZXNzT3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOYXZpZ2F0ZVRvQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLm5hdmlnYXRlVG8pO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5uYXZpZ2F0ZVRvLCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3VybCcsIHR5cGU6IHBhZ2VVcmxBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3N0YXRlU25hcHNob3QnLCB0eXBlOiBudWxsYWJsZVN0cmluZ0FyZ3VtZW50LCBkZWZhdWx0VmFsdWU6IG51bGwgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2ZvcmNlUmVsb2FkJywgdHlwZTogYm9vbGVhbkFyZ3VtZW50LCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0RmlsZXNUb1VwbG9hZENvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5zZXRGaWxlc1RvVXBsb2FkKTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuc2V0RmlsZXNUb1VwbG9hZCwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdzZWxlY3RvcicsIGluaXQ6IGluaXRVcGxvYWRTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2ZpbGVQYXRoJywgdHlwZTogc3RyaW5nT3JTdHJpbmdBcnJheUFyZ3VtZW50LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsZWFyVXBsb2FkQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLmNsZWFyVXBsb2FkKTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuY2xlYXJVcGxvYWQsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnc2VsZWN0b3InLCBpbml0OiBpbml0VXBsb2FkU2VsZWN0b3IsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3dpdGNoVG9JZnJhbWVDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuc3dpdGNoVG9JZnJhbWUpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5zd2l0Y2hUb0lmcmFtZSwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdzZWxlY3RvcicsIGluaXQ6IGluaXRTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTd2l0Y2hUb01haW5XaW5kb3dDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuc3dpdGNoVG9NYWluV2luZG93KTtcblxuICAgIGNvbnN0cnVjdG9yICgpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gVFlQRS5zd2l0Y2hUb01haW5XaW5kb3c7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3BlbldpbmRvd0NvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5vcGVuV2luZG93KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUub3BlbldpbmRvdywgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICd1cmwnLCB0eXBlOiBwYWdlVXJsQXJndW1lbnQgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbG9zZVdpbmRvd0NvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5jbG9zZVdpbmRvdyk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLmNsb3NlV2luZG93LCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3dpbmRvd0lkJywgdHlwZTogbnVsbGFibGVTdHJpbmdBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIEdldEN1cnJlbnRXaW5kb3dDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuZ2V0Q3VycmVudFdpbmRvdyk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLmdldEN1cnJlbnRXaW5kb3csIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0Q3VycmVudFdpbmRvd3NDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuZ2V0Q3VycmVudFdpbmRvd3MpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5nZXRDdXJyZW50V2luZG93cywgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTd2l0Y2hUb1dpbmRvd0NvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5zd2l0Y2hUb1dpbmRvdyk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnN3aXRjaFRvV2luZG93LCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3dpbmRvd0lkJywgdHlwZTogbm9uRW1wdHlTdHJpbmdBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTd2l0Y2hUb1dpbmRvd0J5UHJlZGljYXRlQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnN3aXRjaFRvV2luZG93KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuc3dpdGNoVG9XaW5kb3dCeVByZWRpY2F0ZSwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdpZCcsIHR5cGU6IG5vbkVtcHR5U3RyaW5nQXJndW1lbnQsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnY2hlY2tXaW5kb3cnLCB0eXBlOiBmdW5jdGlvbkFyZ3VtZW50LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN3aXRjaFRvUGFyZW50V2luZG93Q29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnN3aXRjaFRvUGFyZW50V2luZG93KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuc3dpdGNoVG9QYXJlbnRXaW5kb3csIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3dpdGNoVG9QcmV2aW91c1dpbmRvd0NvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5zd2l0Y2hUb1ByZXZpb3VzV2luZG93KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuc3dpdGNoVG9QcmV2aW91c1dpbmRvdywgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZXROYXRpdmVEaWFsb2dIYW5kbGVyQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnNldE5hdGl2ZURpYWxvZ0hhbmRsZXIpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5zZXROYXRpdmVEaWFsb2dIYW5kbGVyLCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ2RpYWxvZ0hhbmRsZXInLCBpbml0OiBpbml0RGlhbG9nSGFuZGxlciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZnJvbSAodmFsKSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0hhbmRsZXJTdHViID0ge1xuICAgICAgICAgICAgZGlhbG9nSGFuZGxlcjogeyBmbjogbnVsbCB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgU2V0TmF0aXZlRGlhbG9nSGFuZGxlckNvbW1hbmQoZGlhbG9nSGFuZGxlclN0dWIpO1xuXG4gICAgICAgIGNvbW1hbmQuZGlhbG9nSGFuZGxlciA9IHZhbC5kaWFsb2dIYW5kbGVyO1xuXG4gICAgICAgIHJldHVybiBjb21tYW5kO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldE5hdGl2ZURpYWxvZ0hpc3RvcnlDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuZ2V0TmF0aXZlRGlhbG9nSGlzdG9yeSk7XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudHlwZSA9IFRZUEUuZ2V0TmF0aXZlRGlhbG9nSGlzdG9yeTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRCcm93c2VyQ29uc29sZU1lc3NhZ2VzQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLmdldEJyb3dzZXJDb25zb2xlTWVzc2FnZXMpO1xuXG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnR5cGUgPSBUWVBFLmdldEJyb3dzZXJDb25zb2xlTWVzc2FnZXM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0VGVzdFNwZWVkQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnNldFRlc3RTcGVlZCk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnNldFRlc3RTcGVlZCwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdzcGVlZCcsIHR5cGU6IHNldFNwZWVkQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0UGFnZUxvYWRUaW1lb3V0Q29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnNldFBhZ2VMb2FkVGltZW91dCk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnNldFBhZ2VMb2FkVGltZW91dCwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdkdXJhdGlvbicsIHR5cGU6IHBvc2l0aXZlSW50ZWdlckFyZ3VtZW50LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVzZVJvbGVDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUudXNlUm9sZSk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnVzZVJvbGUsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAncm9sZScsIHR5cGU6IGFjdGlvblJvbGVBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbG9zZUNoaWxkV2luZG93T25GaWxlRG93bmxvYWRpbmcgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5jbG9zZUNoaWxkV2luZG93T25GaWxlRG93bmxvYWRpbmcpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5jbG9zZUNoaWxkV2luZG93T25GaWxlRG93bmxvYWRpbmcsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVjb3JkZXJDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUucmVjb3JkZXIpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1bikge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUucmVjb3JkZXIpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3N1YnR5cGUnLCB0eXBlOiBub25FbXB0eVN0cmluZ0FyZ3VtZW50LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnZm9yY2VFeGVjdXRpb25JblRvcFdpbmRvd09ubHknLCB0eXBlOiBib29sZWFuQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRDb29raWVzQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLmdldENvb2tpZXMpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5nZXRDb29raWVzLCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3VybHMnLCB0eXBlOiB1cmxzQXJndW1lbnQsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnY29va2llcycsIHR5cGU6IGNvb2tpZXNBcmd1bWVudCwgaW5pdDogaW5pdENvb2tpZXNPcHRpb24sIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNldENvb2tpZXNDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuc2V0Q29va2llcyk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnNldENvb2tpZXMsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAndXJsJywgdHlwZTogdXJsc0FyZ3VtZW50LCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2Nvb2tpZXMnLCB0eXBlOiBzZXRDb29raWVzQXJndW1lbnQsIGluaXQ6IGluaXRDb29raWVzT3B0aW9uLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERlbGV0ZUNvb2tpZXNDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUuZGVsZXRlQ29va2llcyk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLmRlbGV0ZUNvb2tpZXMsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAndXJscycsIHR5cGU6IHVybHNBcmd1bWVudCwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdjb29raWVzJywgdHlwZTogY29va2llc0FyZ3VtZW50LCBpbml0OiBpbml0Q29va2llc09wdGlvbiwgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVxdWVzdENvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5yZXF1ZXN0KTtcbiAgICBzdGF0aWMgZXh0ZW5kZWRNZXRob2RzID0gWydnZXQnLCAncG9zdCcsICdkZWxldGUnLCAncHV0JywgJ3BhdGNoJywgJ2hlYWQnXTtcbiAgICBzdGF0aWMgcmVzdWx0R2V0dGVycyA9IFsnc3RhdHVzJywgJ3N0YXR1c1RleHQnLCAnaGVhZGVycycsICdib2R5J107XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnJlcXVlc3QsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAndXJsJywgdHlwZTogdXJsQXJndW1lbnQsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnb3B0aW9ucycsIHR5cGU6IGFjdGlvbk9wdGlvbnMsIGluaXQ6IGluaXRSZXF1ZXN0T3B0aW9uLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRQcm94eVVybENvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5nZXRQcm94eVVybCk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLmdldFByb3h5VXJsLCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3VybCcsIHR5cGU6IHVybEFyZ3VtZW50LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnb3B0aW9ucycsIGluaXQ6IGluaXRHZXRQcm94eVVybE9wdGlvbnMsIHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNraXBKc0Vycm9yc0NvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5za2lwSnNFcnJvcnMpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5za2lwSnNFcnJvcnMsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnb3B0aW9ucycsIHR5cGU6IHNraXBKc0Vycm9yT3B0aW9ucywgaW5pdDogaW5pdFNraXBKc0Vycm9yc09wdGlvbnMsIHJlcXVpcmVkOiBmYWxzZSwgZGVmYXVsdFZhbHVlOiB0cnVlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUnVuQ3VzdG9tQWN0aW9uQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnJ1bkN1c3RvbUFjdGlvbik7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnJ1bkN1c3RvbUFjdGlvbiwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdmbicsIHR5cGU6IGZ1bmN0aW9uQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICduYW1lJywgdHlwZTogc3RyaW5nQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdhcmdzJywgcmVxdWlyZWQ6IGZhbHNlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRkUmVxdWVzdEhvb2tzQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLmFkZFJlcXVlc3RIb29rcyk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLmFkZFJlcXVlc3RIb29rcywgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdob29rcycsIHR5cGU6IHJlcXVlc3RIb29rc0FyZ3VtZW50LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlbW92ZVJlcXVlc3RIb29rc0NvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5yZW1vdmVSZXF1ZXN0SG9va3MpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5yZW1vdmVSZXF1ZXN0SG9va3MsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnaG9va3MnLCB0eXBlOiByZXF1ZXN0SG9va3NBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXBvcnRDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUucmVwb3J0KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUucmVwb3J0LCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ2FyZ3MnLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cbiJdfQ==
@@ -36,6 +36,7 @@ class TakeScreenshotCommand extends TakeScreenshotBaseCommand {
36
36
  getAssignableProperties() {
37
37
  return [
38
38
  { name: 'path', type: argument_1.screenshotPathArgument, defaultValue: '' },
39
+ { name: 'pathPattern', type: argument_1.stringArgument, defaultValue: '' },
39
40
  { name: 'fullPage', type: argument_1.booleanArgument, defaultValue: void 0 },
40
41
  { name: 'thumbnails', type: argument_1.booleanArgument, defaultValue: void 0 },
41
42
  ];
@@ -104,4 +105,4 @@ class MaximizeWindowCommand extends base_1.ActionCommandBase {
104
105
  }
105
106
  exports.MaximizeWindowCommand = MaximizeWindowCommand;
106
107
  MaximizeWindowCommand.methodName = (0, lodash_1.camelCase)(type_1.default.maximizeWindow);
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1tYW5pcHVsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC1ydW4vY29tbWFuZHMvYnJvd3Nlci1tYW5pcHVsYXRpb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLGlDQUEyQztBQUMzQyx1Q0FBK0U7QUFDL0UsNkRBQTBEO0FBRTFELHFEQU9nQztBQUVoQyxtREFBaUU7QUFDakUsbUNBQW1DO0FBRW5DLFNBQVMsNEJBQTRCLENBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsUUFBUSxHQUFHLElBQUk7SUFDMUUsT0FBTyxJQUFJLGtDQUF3QixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsU0FBUyw0QkFBNEIsQ0FBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxRQUFRLEdBQUcsSUFBSTtJQUMxRSxPQUFPLElBQUksa0NBQXdCLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFFRCxXQUFXO0FBQ1gsTUFBYSx5QkFBMEIsU0FBUSx3QkFBaUI7SUFDNUQsWUFBYSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxrQkFBa0I7UUFDL0MsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELHNCQUFzQjtRQUNsQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFBLDhCQUFzQixHQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0o7QUFYRCw4REFXQztBQUVELE1BQWEscUJBQXNCLFNBQVEseUJBQXlCO0lBR2hFLFlBQWEsR0FBRyxFQUFFLE9BQU8sRUFBRSxrQkFBa0I7UUFDekMsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsY0FBSSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCx1QkFBdUI7UUFDbkIsT0FBTztZQUNILEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsaUNBQXNCLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtZQUNoRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLDBCQUFlLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ2pFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsMEJBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUU7U0FDdEUsQ0FBQztJQUNOLENBQUM7O0FBYkwsc0RBY0M7QUFiVSxnQ0FBVSxHQUFHLElBQUEsa0JBQVMsRUFBQyxjQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7QUFldkQsTUFBYSw0QkFBNkIsU0FBUSx5QkFBeUI7SUFHdkUsWUFBYSxHQUFHLEVBQUUsT0FBTyxFQUFFLGtCQUFrQjtRQUN6QyxLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxjQUFJLENBQUMscUJBQXFCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE9BQU87WUFDSCxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLDJCQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUN4RCxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLDRCQUE0QixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFDdkUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxpQ0FBc0IsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFO1NBQ25FLENBQUM7SUFDTixDQUFDOztBQWJMLG9FQWNDO0FBYlUsdUNBQVUsR0FBRyxJQUFBLGtCQUFTLEVBQUMsY0FBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFlOUQsTUFBYSwyQkFBNEIsU0FBUSx5QkFBeUI7SUFHdEUsWUFBYSxHQUFHLEVBQUUsT0FBTztRQUNyQixLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxjQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE9BQU87WUFDSCxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLDBCQUFlLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRTtZQUNoRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUseUJBQWMsRUFBRTtTQUNuRCxDQUFDO0lBQ04sQ0FBQzs7QUFaTCxrRUFhQztBQVpVLHNDQUFVLEdBQUcsSUFBQSxrQkFBUyxFQUFDLGNBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBYzdELE1BQWEsbUJBQW9CLFNBQVEsd0JBQWlCO0lBR3RELFlBQWEsR0FBRyxFQUFFLE9BQU87UUFDckIsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsY0FBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCx1QkFBdUI7UUFDbkIsT0FBTztZQUNILEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsa0NBQXVCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUNoRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGtDQUF1QixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7U0FDcEUsQ0FBQztJQUNOLENBQUM7O0FBWkwsa0RBYUM7QUFaVSw4QkFBVSxHQUFHLElBQUEsa0JBQVMsRUFBQyxjQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7QUFjckQsTUFBYSw4QkFBK0IsU0FBUSx3QkFBaUI7SUFHakUsWUFBYSxHQUFHLEVBQUUsT0FBTyxFQUFFLGtCQUFrQjtRQUN6QyxLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxjQUFJLENBQUMsdUJBQXVCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE9BQU87WUFDSCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLHFDQUEwQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFDcEUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSx3QkFBYSxFQUFFLElBQUksRUFBRSw0QkFBNEIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1NBQy9GLENBQUM7SUFDTixDQUFDOztBQVpMLHdFQWFDO0FBWlUseUNBQVUsR0FBRyxJQUFBLGtCQUFTLEVBQUMsY0FBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFjaEUsTUFBYSxxQkFBc0IsU0FBUSx3QkFBaUI7SUFHeEQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBSSxDQUFDLGNBQWMsQ0FBQztJQUNwQyxDQUFDOztBQU5MLHNEQU9DO0FBTlUsZ0NBQVUsR0FBRyxJQUFBLGtCQUFTLEVBQUMsY0FBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRZUEUgZnJvbSAnLi90eXBlJztcbmltcG9ydCB7IEFjdGlvbkNvbW1hbmRCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IEVsZW1lbnRTY3JlZW5zaG90T3B0aW9ucywgUmVzaXplVG9GaXREZXZpY2VPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcbmltcG9ydCB7IGluaXRTZWxlY3RvciB9IGZyb20gJy4vdmFsaWRhdGlvbnMvaW5pdGlhbGl6ZXJzJztcblxuaW1wb3J0IHtcbiAgICBib29sZWFuQXJndW1lbnQsXG4gICAgcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsXG4gICAgc2NyZWVuc2hvdFBhdGhBcmd1bWVudCxcbiAgICByZXNpemVXaW5kb3dEZXZpY2VBcmd1bWVudCxcbiAgICBhY3Rpb25PcHRpb25zLFxuICAgIHN0cmluZ0FyZ3VtZW50LFxufSBmcm9tICcuL3ZhbGlkYXRpb25zL2FyZ3VtZW50JztcblxuaW1wb3J0IHsgZ2VuZXJhdGVTY3JlZW5zaG90TWFyayB9IGZyb20gJy4uLy4uL3NjcmVlbnNob3RzL3V0aWxzJztcbmltcG9ydCB7IGNhbWVsQ2FzZSB9IGZyb20gJ2xvZGFzaCc7XG5cbmZ1bmN0aW9uIGluaXRSZXNpemVUb0ZpdERldmljZU9wdGlvbnMgKG5hbWUsIHZhbCwgaW5pdE9wdGlvbnMsIHZhbGlkYXRlID0gdHJ1ZSkge1xuICAgIHJldHVybiBuZXcgUmVzaXplVG9GaXREZXZpY2VPcHRpb25zKHZhbCwgdmFsaWRhdGUpO1xufVxuXG5mdW5jdGlvbiBpbml0RWxlbWVudFNjcmVlbnNob3RPcHRpb25zIChuYW1lLCB2YWwsIGluaXRPcHRpb25zLCB2YWxpZGF0ZSA9IHRydWUpIHtcbiAgICByZXR1cm4gbmV3IEVsZW1lbnRTY3JlZW5zaG90T3B0aW9ucyh2YWwsIHZhbGlkYXRlKTtcbn1cblxuLy8gQ29tbWFuZHNcbmV4cG9ydCBjbGFzcyBUYWtlU2NyZWVuc2hvdEJhc2VDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHR5cGUsIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIHR5cGUsIHZhbGlkYXRlUHJvcGVydGllcyk7XG5cbiAgICAgICAgdGhpcy5tYXJrU2VlZCA9IG51bGw7XG4gICAgICAgIHRoaXMubWFya0RhdGEgPSAnJztcbiAgICB9XG5cbiAgICBnZW5lcmF0ZVNjcmVlbnNob3RNYXJrICgpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBnZW5lcmF0ZVNjcmVlbnNob3RNYXJrKCkpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRha2VTY3JlZW5zaG90Q29tbWFuZCBleHRlbmRzIFRha2VTY3JlZW5zaG90QmFzZUNvbW1hbmQge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUudGFrZVNjcmVlbnNob3QpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS50YWtlU2NyZWVuc2hvdCwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdwYXRoJywgdHlwZTogc2NyZWVuc2hvdFBhdGhBcmd1bWVudCwgZGVmYXVsdFZhbHVlOiAnJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnZnVsbFBhZ2UnLCB0eXBlOiBib29sZWFuQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogdm9pZCAwIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICd0aHVtYm5haWxzJywgdHlwZTogYm9vbGVhbkFyZ3VtZW50LCBkZWZhdWx0VmFsdWU6IHZvaWQgMCB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRha2VFbGVtZW50U2NyZWVuc2hvdENvbW1hbmQgZXh0ZW5kcyBUYWtlU2NyZWVuc2hvdEJhc2VDb21tYW5kIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnRha2VFbGVtZW50U2NyZWVuc2hvdCk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnRha2VFbGVtZW50U2NyZWVuc2hvdCwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdzZWxlY3RvcicsIGluaXQ6IGluaXRTZWxlY3RvciwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ29wdGlvbnMnLCBpbml0OiBpbml0RWxlbWVudFNjcmVlbnNob3RPcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAncGF0aCcsIHR5cGU6IHNjcmVlbnNob3RQYXRoQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogJycgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWtlU2NyZWVuc2hvdE9uRmFpbENvbW1hbmQgZXh0ZW5kcyBUYWtlU2NyZWVuc2hvdEJhc2VDb21tYW5kIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnRha2VTY3JlZW5zaG90T25GYWlsKTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4pIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnRha2VTY3JlZW5zaG90T25GYWlsKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdmdWxsUGFnZScsIHR5cGU6IGJvb2xlYW5Bcmd1bWVudCwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnZmFpbGVkQWN0aW9uSWQnLCB0eXBlOiBzdHJpbmdBcmd1bWVudCB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlc2l6ZVdpbmRvd0NvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5yZXNpemVXaW5kb3cpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1bikge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUucmVzaXplV2luZG93KTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICd3aWR0aCcsIHR5cGU6IHBvc2l0aXZlSW50ZWdlckFyZ3VtZW50LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnaGVpZ2h0JywgdHlwZTogcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVzaXplV2luZG93VG9GaXREZXZpY2VDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUucmVzaXplV2luZG93VG9GaXREZXZpY2UpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5yZXNpemVXaW5kb3dUb0ZpdERldmljZSwgdmFsaWRhdGVQcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdkZXZpY2UnLCB0eXBlOiByZXNpemVXaW5kb3dEZXZpY2VBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ29wdGlvbnMnLCB0eXBlOiBhY3Rpb25PcHRpb25zLCBpbml0OiBpbml0UmVzaXplVG9GaXREZXZpY2VPcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1heGltaXplV2luZG93Q29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLm1heGltaXplV2luZG93KTtcblxuICAgIGNvbnN0cnVjdG9yICgpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy50eXBlID0gVFlQRS5tYXhpbWl6ZVdpbmRvdztcbiAgICB9XG59XG4iXX0=
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1tYW5pcHVsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC1ydW4vY29tbWFuZHMvYnJvd3Nlci1tYW5pcHVsYXRpb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLGlDQUEyQztBQUMzQyx1Q0FBK0U7QUFDL0UsNkRBQTBEO0FBRTFELHFEQU9nQztBQUVoQyxtREFBaUU7QUFDakUsbUNBQW1DO0FBRW5DLFNBQVMsNEJBQTRCLENBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsUUFBUSxHQUFHLElBQUk7SUFDMUUsT0FBTyxJQUFJLGtDQUF3QixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsU0FBUyw0QkFBNEIsQ0FBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxRQUFRLEdBQUcsSUFBSTtJQUMxRSxPQUFPLElBQUksa0NBQXdCLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFFRCxXQUFXO0FBQ1gsTUFBYSx5QkFBMEIsU0FBUSx3QkFBaUI7SUFDNUQsWUFBYSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxrQkFBa0I7UUFDL0MsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELHNCQUFzQjtRQUNsQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFBLDhCQUFzQixHQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0o7QUFYRCw4REFXQztBQUVELE1BQWEscUJBQXNCLFNBQVEseUJBQXlCO0lBR2hFLFlBQWEsR0FBRyxFQUFFLE9B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QUFFLE9BQU8sRUFBRSxrQkFBa0I7UUFDekMsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsY0FBSSxDQUFDLHVCQUF1QixFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELHVCQUF1QjtRQUNuQixPQUFPO1lBQ0gsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxxQ0FBMEIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ3BFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsd0JBQWEsRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtTQUMvRixDQUFDO0lBQ04sQ0FBQzs7QUFaTCx3RUFhQztBQVpVLHlDQUFVLEdBQUcsSUFBQSxrQkFBUyxFQUFDLGNBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBY2hFLE1BQWEscUJBQXNCLFNBQVEsd0JBQWlCO0lBR3hEO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLGNBQUksQ0FBQyxjQUFjLENBQUM7SUFDcEMsQ0FBQzs7QUFOTCxzREFPQztBQU5VLGdDQUFVLEdBQUcsSUFBQSxrQkFBUyxFQUFDLGNBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUWVBFIGZyb20gJy4vdHlwZSc7XG5pbXBvcnQgeyBBY3Rpb25Db21tYW5kQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBFbGVtZW50U2NyZWVuc2hvdE9wdGlvbnMsIFJlc2l6ZVRvRml0RGV2aWNlT3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucyc7XG5pbXBvcnQgeyBpbml0U2VsZWN0b3IgfSBmcm9tICcuL3ZhbGlkYXRpb25zL2luaXRpYWxpemVycyc7XG5cbmltcG9ydCB7XG4gICAgYm9vbGVhbkFyZ3VtZW50LFxuICAgIHBvc2l0aXZlSW50ZWdlckFyZ3VtZW50LFxuICAgIHNjcmVlbnNob3RQYXRoQXJndW1lbnQsXG4gICAgcmVzaXplV2luZG93RGV2aWNlQXJndW1lbnQsXG4gICAgYWN0aW9uT3B0aW9ucyxcbiAgICBzdHJpbmdBcmd1bWVudCxcbn0gZnJvbSAnLi92YWxpZGF0aW9ucy9hcmd1bWVudCc7XG5cbmltcG9ydCB7IGdlbmVyYXRlU2NyZWVuc2hvdE1hcmsgfSBmcm9tICcuLi8uLi9zY3JlZW5zaG90cy91dGlscyc7XG5pbXBvcnQgeyBjYW1lbENhc2UgfSBmcm9tICdsb2Rhc2gnO1xuXG5mdW5jdGlvbiBpbml0UmVzaXplVG9GaXREZXZpY2VPcHRpb25zIChuYW1lLCB2YWwsIGluaXRPcHRpb25zLCB2YWxpZGF0ZSA9IHRydWUpIHtcbiAgICByZXR1cm4gbmV3IFJlc2l6ZVRvRml0RGV2aWNlT3B0aW9ucyh2YWwsIHZhbGlkYXRlKTtcbn1cblxuZnVuY3Rpb24gaW5pdEVsZW1lbnRTY3JlZW5zaG90T3B0aW9ucyAobmFtZSwgdmFsLCBpbml0T3B0aW9ucywgdmFsaWRhdGUgPSB0cnVlKSB7XG4gICAgcmV0dXJuIG5ldyBFbGVtZW50U2NyZWVuc2hvdE9wdGlvbnModmFsLCB2YWxpZGF0ZSk7XG59XG5cbi8vIENvbW1hbmRzXG5leHBvcnQgY2xhc3MgVGFrZVNjcmVlbnNob3RCYXNlQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuLCB0eXBlLCB2YWxpZGF0ZVByb3BlcnRpZXMpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCB0eXBlLCB2YWxpZGF0ZVByb3BlcnRpZXMpO1xuXG4gICAgICAgIHRoaXMubWFya1NlZWQgPSBudWxsO1xuICAgICAgICB0aGlzLm1hcmtEYXRhID0gJyc7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVTY3JlZW5zaG90TWFyayAoKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZ2VuZXJhdGVTY3JlZW5zaG90TWFyaygpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWtlU2NyZWVuc2hvdENvbW1hbmQgZXh0ZW5kcyBUYWtlU2NyZWVuc2hvdEJhc2VDb21tYW5kIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnRha2VTY3JlZW5zaG90KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUudGFrZVNjcmVlbnNob3QsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAncGF0aCcsIHR5cGU6IHNjcmVlbnNob3RQYXRoQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogJycgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3BhdGhQYXR0ZXJuJywgdHlwZTogc3RyaW5nQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogJycgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2Z1bGxQYWdlJywgdHlwZTogYm9vbGVhbkFyZ3VtZW50LCBkZWZhdWx0VmFsdWU6IHZvaWQgMCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAndGh1bWJuYWlscycsIHR5cGU6IGJvb2xlYW5Bcmd1bWVudCwgZGVmYXVsdFZhbHVlOiB2b2lkIDAgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWtlRWxlbWVudFNjcmVlbnNob3RDb21tYW5kIGV4dGVuZHMgVGFrZVNjcmVlbnNob3RCYXNlQ29tbWFuZCB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS50YWtlRWxlbWVudFNjcmVlbnNob3QpO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdmFsaWRhdGVQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS50YWtlRWxlbWVudFNjcmVlbnNob3QsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnc2VsZWN0b3InLCBpbml0OiBpbml0U2VsZWN0b3IsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdvcHRpb25zJywgaW5pdDogaW5pdEVsZW1lbnRTY3JlZW5zaG90T3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3BhdGgnLCB0eXBlOiBzY3JlZW5zaG90UGF0aEFyZ3VtZW50LCBkZWZhdWx0VmFsdWU6ICcnIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFrZVNjcmVlbnNob3RPbkZhaWxDb21tYW5kIGV4dGVuZHMgVGFrZVNjcmVlbnNob3RCYXNlQ29tbWFuZCB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS50YWtlU2NyZWVuc2hvdE9uRmFpbCk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS50YWtlU2NyZWVuc2hvdE9uRmFpbCk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnZnVsbFBhZ2UnLCB0eXBlOiBib29sZWFuQXJndW1lbnQsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2ZhaWxlZEFjdGlvbklkJywgdHlwZTogc3RyaW5nQXJndW1lbnQgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXNpemVXaW5kb3dDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUucmVzaXplV2luZG93KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4pIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLnJlc2l6ZVdpbmRvdyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnd2lkdGgnLCB0eXBlOiBwb3NpdGl2ZUludGVnZXJBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2hlaWdodCcsIHR5cGU6IHBvc2l0aXZlSW50ZWdlckFyZ3VtZW50LCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICBdO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlc2l6ZVdpbmRvd1RvRml0RGV2aWNlQ29tbWFuZCBleHRlbmRzIEFjdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IGNhbWVsQ2FzZShUWVBFLnJlc2l6ZVdpbmRvd1RvRml0RGV2aWNlKTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHZhbGlkYXRlUHJvcGVydGllcykge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUucmVzaXplV2luZG93VG9GaXREZXZpY2UsIHZhbGlkYXRlUHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnZGV2aWNlJywgdHlwZTogcmVzaXplV2luZG93RGV2aWNlQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdvcHRpb25zJywgdHlwZTogYWN0aW9uT3B0aW9ucywgaW5pdDogaW5pdFJlc2l6ZVRvRml0RGV2aWNlT3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNYXhpbWl6ZVdpbmRvd0NvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5tYXhpbWl6ZVdpbmRvdyk7XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudHlwZSA9IFRZUEUubWF4aW1pemVXaW5kb3c7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ExecuteSelectorCommand = exports.ExecuteClientFunctionCommand = exports.ExecuteClientFunctionCommandBase = void 0;
7
+ const type_1 = __importDefault(require("./type"));
8
+ const base_1 = require("./base");
9
+ class ExecuteClientFunctionCommandBase extends base_1.ActionCommandBase {
10
+ constructor(obj, testRun, type) {
11
+ super(obj, testRun, type, false);
12
+ }
13
+ getAssignableProperties() {
14
+ return [
15
+ { name: 'instantiationCallsiteName', defaultValue: '' },
16
+ { name: 'fnCode', defaultValue: '' },
17
+ { name: 'args', defaultValue: [] },
18
+ { name: 'dependencies', defaultValue: [] },
19
+ ];
20
+ }
21
+ }
22
+ exports.ExecuteClientFunctionCommandBase = ExecuteClientFunctionCommandBase;
23
+ class ExecuteClientFunctionCommand extends ExecuteClientFunctionCommandBase {
24
+ constructor(obj, testRun) {
25
+ super(obj, testRun, type_1.default.executeClientFunction);
26
+ }
27
+ }
28
+ exports.ExecuteClientFunctionCommand = ExecuteClientFunctionCommand;
29
+ ExecuteClientFunctionCommand.methodName = type_1.default.executeClientFunction;
30
+ class ExecuteSelectorCommand extends ExecuteClientFunctionCommandBase {
31
+ constructor(obj, testRun) {
32
+ super(obj, testRun, type_1.default.executeSelector);
33
+ }
34
+ getAssignableProperties() {
35
+ return [
36
+ { name: 'visibilityCheck', defaultValue: false },
37
+ { name: 'timeout', defaultValue: null },
38
+ { name: 'apiFnChain' },
39
+ { name: 'needError' },
40
+ { name: 'index', defaultValue: 0 },
41
+ { name: 'strictError' },
42
+ ];
43
+ }
44
+ }
45
+ exports.ExecuteSelectorCommand = ExecuteSelectorCommand;
46
+ ExecuteSelectorCommand.methodName = type_1.default.executeSelector;
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS1jbGllbnQtZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC1ydW4vY29tbWFuZHMvZXhlY3V0ZS1jbGllbnQtZnVuY3Rpb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLGlDQUEyQztBQUUzQyxNQUFhLGdDQUFpQyxTQUFRLHdCQUFpQjtJQUNuRSxZQUFhLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSTtRQUMzQixLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELHVCQUF1QjtRQUNuQixPQUFPO1lBQ0gsRUFBRSxJQUFJLEVBQUUsMkJBQTJCLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtZQUN2RCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtZQUNwQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtZQUNsQyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtTQUM3QyxDQUFDO0lBQ04sQ0FBQztDQUNKO0FBYkQsNEVBYUM7QUFFRCxNQUFhLDRCQUE2QixTQUFRLGdDQUFnQztJQUc5RSxZQUFhLEdBQUcsRUFBRSxPQUFPO1FBQ3JCLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGNBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3BELENBQUM7O0FBTEwsb0VBTUM7QUFMVSx1Q0FBVSxHQUFHLGNBQUksQ0FBQyxxQkFBcUIsQ0FBQztBQU9uRCxNQUFhLHNCQUF1QixTQUFRLGdDQUFnQztJQUd4RSxZQUFhLEdBQUcsRUFBRSxPQUFPO1FBQ3JCLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGNBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE9BQU87WUFDSCxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFO1lBQ2hELEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFO1lBQ3ZDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUN0QixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDckIsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUU7WUFDbEMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1NBQzFCLENBQUM7SUFDTixDQUFDOztBQWhCTCx3REFpQkM7QUFoQlUsaUNBQVUsR0FBRyxjQUFJLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRZUEUgZnJvbSAnLi90eXBlJztcbmltcG9ydCB7IEFjdGlvbkNvbW1hbmRCYXNlIH0gZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNsYXNzIEV4ZWN1dGVDbGllbnRGdW5jdGlvbkNvbW1hbmRCYXNlIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4sIHR5cGUpIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCB0eXBlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnaW5zdGFudGlhdGlvbkNhbGxzaXRlTmFtZScsIGRlZmF1bHRWYWx1ZTogJycgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2ZuQ29kZScsIGRlZmF1bHRWYWx1ZTogJycgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2FyZ3MnLCBkZWZhdWx0VmFsdWU6IFtdIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdkZXBlbmRlbmNpZXMnLCBkZWZhdWx0VmFsdWU6IFtdIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZCBleHRlbmRzIEV4ZWN1dGVDbGllbnRGdW5jdGlvbkNvbW1hbmRCYXNlIHtcbiAgICBzdGF0aWMgbWV0aG9kTmFtZSA9IFRZUEUuZXhlY3V0ZUNsaWVudEZ1bmN0aW9uO1xuXG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1bikge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIFRZUEUuZXhlY3V0ZUNsaWVudEZ1bmN0aW9uKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFeGVjdXRlU2VsZWN0b3JDb21tYW5kIGV4dGVuZHMgRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gVFlQRS5leGVjdXRlU2VsZWN0b3I7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5leGVjdXRlU2VsZWN0b3IpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3Zpc2liaWxpdHlDaGVjaycsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3RpbWVvdXQnLCBkZWZhdWx0VmFsdWU6IG51bGwgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2FwaUZuQ2hhaW4nIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICduZWVkRXJyb3InIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdpbmRleCcsIGRlZmF1bHRWYWx1ZTogMCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnc3RyaWN0RXJyb3InIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuIl19
@@ -3,11 +3,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DebugCommand = exports.ExecuteSelectorCommand = exports.ExecuteClientFunctionCommand = exports.ExecuteClientFunctionCommandBase = exports.WaitCommand = void 0;
6
+ exports.DebugCommand = exports.WaitCommand = void 0;
7
7
  const type_1 = __importDefault(require("./type"));
8
8
  const base_1 = require("./base");
9
9
  const argument_1 = require("./validations/argument");
10
10
  const lodash_1 = require("lodash");
11
+ const initializers_1 = require("./validations/initializers");
12
+ // Initializers
13
+ function initDebugOptions(name, val, options) {
14
+ return (0, initializers_1.initSelector)(name, val, Object.assign({}, options, { skipVisibilityCheck: true, collectionMode: true }));
15
+ }
11
16
  // Commands
12
17
  class WaitCommand extends base_1.ActionCommandBase {
13
18
  constructor(obj, testRun) {
@@ -21,49 +26,16 @@ class WaitCommand extends base_1.ActionCommandBase {
21
26
  }
22
27
  exports.WaitCommand = WaitCommand;
23
28
  WaitCommand.methodName = (0, lodash_1.camelCase)(type_1.default.wait);
24
- class ExecuteClientFunctionCommandBase extends base_1.ActionCommandBase {
25
- constructor(obj, testRun, type) {
26
- super(obj, testRun, type, false);
27
- }
28
- getAssignableProperties() {
29
- return [
30
- { name: 'instantiationCallsiteName', defaultValue: '' },
31
- { name: 'fnCode', defaultValue: '' },
32
- { name: 'args', defaultValue: [] },
33
- { name: 'dependencies', defaultValue: [] },
34
- ];
35
- }
36
- }
37
- exports.ExecuteClientFunctionCommandBase = ExecuteClientFunctionCommandBase;
38
- class ExecuteClientFunctionCommand extends ExecuteClientFunctionCommandBase {
39
- constructor(obj, testRun) {
40
- super(obj, testRun, type_1.default.executeClientFunction);
41
- }
42
- }
43
- exports.ExecuteClientFunctionCommand = ExecuteClientFunctionCommand;
44
- ExecuteClientFunctionCommand.methodName = type_1.default.executeClientFunction;
45
- class ExecuteSelectorCommand extends ExecuteClientFunctionCommandBase {
29
+ class DebugCommand extends base_1.ActionCommandBase {
46
30
  constructor(obj, testRun) {
47
- super(obj, testRun, type_1.default.executeSelector);
31
+ super(obj, testRun, type_1.default.debug);
48
32
  }
49
33
  getAssignableProperties() {
50
34
  return [
51
- { name: 'visibilityCheck', defaultValue: false },
52
- { name: 'timeout', defaultValue: null },
53
- { name: 'apiFnChain' },
54
- { name: 'needError' },
55
- { name: 'index', defaultValue: 0 },
56
- { name: 'strictError' },
35
+ { name: 'selector', init: initDebugOptions, required: false },
57
36
  ];
58
37
  }
59
38
  }
60
- exports.ExecuteSelectorCommand = ExecuteSelectorCommand;
61
- ExecuteSelectorCommand.methodName = type_1.default.executeSelector;
62
- class DebugCommand extends base_1.ActionCommandBase {
63
- constructor() {
64
- super(null, null, type_1.default.debug);
65
- }
66
- }
67
39
  exports.DebugCommand = DebugCommand;
68
40
  DebugCommand.methodName = (0, lodash_1.camelCase)(type_1.default.debug);
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC1ydW4vY29tbWFuZHMvb2JzZXJ2YXRpb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLGlDQUEyQztBQUMzQyxxREFBaUU7QUFDakUsbUNBQW1DO0FBRW5DLFdBQVc7QUFDWCxNQUFhLFdBQVksU0FBUSx3QkFBaUI7SUFHOUMsWUFBYSxHQUFHLEVBQUUsT0FBTztRQUNyQixLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxjQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELHVCQUF1QjtRQUNuQixPQUFPO1lBQ0gsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxrQ0FBdUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1NBQ3JFLENBQUM7SUFDTixDQUFDOztBQVhMLGtDQVlDO0FBWFUsc0JBQVUsR0FBRyxJQUFBLGtCQUFTLEVBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBYTdDLE1BQWEsZ0NBQWlDLFNBQVEsd0JBQWlCO0lBQ25FLFlBQWEsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJO1FBQzNCLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE9BQU87WUFDSCxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFO1lBQ3ZELEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFO1lBQ3BDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFO1lBQ2xDLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFO1NBQzdDLENBQUM7SUFDTixDQUFDO0NBQ0o7QUFiRCw0RUFhQztBQUVELE1BQWEsNEJBQTZCLFNBQVEsZ0NBQWdDO0lBRzlFLFlBQWEsR0FBRyxFQUFFLE9BQU87UUFDckIsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsY0FBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDcEQsQ0FBQzs7QUFMTCxvRUFNQztBQUxVLHVDQUFVLEdBQUcsY0FBSSxDQUFDLHFCQUFxQixDQUFDO0FBT25ELE1BQWEsc0JBQXVCLFNBQVEsZ0NBQWdDO0lBR3hFLFlBQWEsR0FBRyxFQUFFLE9BQU87UUFDckIsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsY0FBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCx1QkFBdUI7UUFDbkIsT0FBTztZQUNILEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUU7WUFDaEQsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUU7WUFDdkMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQ3RCLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUNyQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRTtZQUNsQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7U0FDMUIsQ0FBQztJQUNOLENBQUM7O0FBaEJMLHdEQWlCQztBQWhCVSxpQ0FBVSxHQUFHLGNBQUksQ0FBQyxlQUFlLENBQUM7QUFrQjdDLE1BQWEsWUFBYSxTQUFRLHdCQUFpQjtJQUcvQztRQUNJLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLGNBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDOztBQUxMLG9DQU1DO0FBTFUsdUJBQVUsR0FBRyxJQUFBLGtCQUFTLEVBQUMsY0FBSSxDQUFDLEtBQUssQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRZUEUgZnJvbSAnLi90eXBlJztcbmltcG9ydCB7IEFjdGlvbkNvbW1hbmRCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IHBvc2l0aXZlSW50ZWdlckFyZ3VtZW50IH0gZnJvbSAnLi92YWxpZGF0aW9ucy9hcmd1bWVudCc7XG5pbXBvcnQgeyBjYW1lbENhc2UgfSBmcm9tICdsb2Rhc2gnO1xuXG4vLyBDb21tYW5kc1xuZXhwb3J0IGNsYXNzIFdhaXRDb21tYW5kIGV4dGVuZHMgQWN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gY2FtZWxDYXNlKFRZUEUud2FpdCk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS53YWl0KTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICd0aW1lb3V0JywgdHlwZTogcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZEJhc2UgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgY29uc3RydWN0b3IgKG9iaiwgdGVzdFJ1biwgdHlwZSkge1xuICAgICAgICBzdXBlcihvYmosIHRlc3RSdW4sIHR5cGUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBnZXRBc3NpZ25hYmxlUHJvcGVydGllcyAoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdpbnN0YW50aWF0aW9uQ2FsbHNpdGVOYW1lJywgZGVmYXVsdFZhbHVlOiAnJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnZm5Db2RlJywgZGVmYXVsdFZhbHVlOiAnJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnYXJncycsIGRlZmF1bHRWYWx1ZTogW10gfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2RlcGVuZGVuY2llcycsIGRlZmF1bHRWYWx1ZTogW10gfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFeGVjdXRlQ2xpZW50RnVuY3Rpb25Db21tYW5kIGV4dGVuZHMgRXhlY3V0ZUNsaWVudEZ1bmN0aW9uQ29tbWFuZEJhc2Uge1xuICAgIHN0YXRpYyBtZXRob2ROYW1lID0gVFlQRS5leGVjdXRlQ2xpZW50RnVuY3Rpb247XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5leGVjdXRlQ2xpZW50RnVuY3Rpb24pO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEV4ZWN1dGVTZWxlY3RvckNvbW1hbmQgZXh0ZW5kcyBFeGVjdXRlQ2xpZW50RnVuY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBUWVBFLmV4ZWN1dGVTZWxlY3RvcjtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4pIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLmV4ZWN1dGVTZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAndmlzaWJpbGl0eUNoZWNrJywgZGVmYXVsdFZhbHVlOiBmYWxzZSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAndGltZW91dCcsIGRlZmF1bHRWYWx1ZTogbnVsbCB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnYXBpRm5DaGFpbicgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ25lZWRFcnJvcicgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2luZGV4JywgZGVmYXVsdFZhbHVlOiAwIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdzdHJpY3RFcnJvcicgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZWJ1Z0NvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5kZWJ1Zyk7XG5cbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHN1cGVyKG51bGwsIG51bGwsIFRZUEUuZGVidWcpO1xuICAgIH1cbn1cbiJdfQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC1ydW4vY29tbWFuZHMvb2JzZXJ2YXRpb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLGlDQUEyQztBQUMzQyxxREFBaUU7QUFDakUsbUNBQW1DO0FBQ25DLDZEQUEwRDtBQUcxRCxlQUFlO0FBQ2YsU0FBUyxnQkFBZ0IsQ0FBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU87SUFDekMsT0FBTyxJQUFBLDJCQUFZLEVBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQ3BELEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FDdEQsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELFdBQVc7QUFDWCxNQUFhLFdBQVksU0FBUSx3QkFBaUI7SUFHOUMsWUFBYSxHQUFHLEVBQUUsT0FBTztRQUNyQixLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxjQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELHVCQUF1QjtRQUNuQixPQUFPO1lBQ0gsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxrQ0FBdUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1NBQ3JFLENBQUM7SUFDTixDQUFDOztBQVhMLGtDQVlDO0FBWFUsc0JBQVUsR0FBRyxJQUFBLGtCQUFTLEVBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBYTdDLE1BQWEsWUFBYSxTQUFRLHdCQUFpQjtJQUcvQyxZQUFhLEdBQUcsRUFBRSxPQUFPO1FBQ3JCLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGNBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE9BQU87WUFDSCxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7U0FDaEUsQ0FBQztJQUNOLENBQUM7O0FBWEwsb0NBWUM7QUFYVSx1QkFBVSxHQUFHLElBQUEsa0JBQVMsRUFBQyxjQUFJLENBQUMsS0FBSyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVFlQRSBmcm9tICcuL3R5cGUnO1xuaW1wb3J0IHsgQWN0aW9uQ29tbWFuZEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgcG9zaXRpdmVJbnRlZ2VyQXJndW1lbnQgfSBmcm9tICcuL3ZhbGlkYXRpb25zL2FyZ3VtZW50JztcbmltcG9ydCB7IGNhbWVsQ2FzZSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBpbml0U2VsZWN0b3IgfSBmcm9tICcuL3ZhbGlkYXRpb25zL2luaXRpYWxpemVycyc7XG5cblxuLy8gSW5pdGlhbGl6ZXJzXG5mdW5jdGlvbiBpbml0RGVidWdPcHRpb25zIChuYW1lLCB2YWwsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaW5pdFNlbGVjdG9yKG5hbWUsIHZhbCwgT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucyxcbiAgICAgICAgeyBza2lwVmlzaWJpbGl0eUNoZWNrOiB0cnVlLCBjb2xsZWN0aW9uTW9kZTogdHJ1ZSB9XG4gICAgKSk7XG59XG5cbi8vIENvbW1hbmRzXG5leHBvcnQgY2xhc3MgV2FpdENvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS53YWl0KTtcblxuICAgIGNvbnN0cnVjdG9yIChvYmosIHRlc3RSdW4pIHtcbiAgICAgICAgc3VwZXIob2JqLCB0ZXN0UnVuLCBUWVBFLndhaXQpO1xuICAgIH1cblxuICAgIGdldEFzc2lnbmFibGVQcm9wZXJ0aWVzICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgbmFtZTogJ3RpbWVvdXQnLCB0eXBlOiBwb3NpdGl2ZUludGVnZXJBcmd1bWVudCwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZWJ1Z0NvbW1hbmQgZXh0ZW5kcyBBY3Rpb25Db21tYW5kQmFzZSB7XG4gICAgc3RhdGljIG1ldGhvZE5hbWUgPSBjYW1lbENhc2UoVFlQRS5kZWJ1Zyk7XG5cbiAgICBjb25zdHJ1Y3RvciAob2JqLCB0ZXN0UnVuKSB7XG4gICAgICAgIHN1cGVyKG9iaiwgdGVzdFJ1biwgVFlQRS5kZWJ1Zyk7XG4gICAgfVxuXG4gICAgZ2V0QXNzaWduYWJsZVByb3BlcnRpZXMgKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgeyBuYW1lOiAnc2VsZWN0b3InLCBpbml0OiBpbml0RGVidWdPcHRpb25zLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAgICAgXTtcbiAgICB9XG59XG4iXX0=
@@ -21,9 +21,10 @@ class HideAssertionRetriesStatusCommand {
21
21
  }
22
22
  exports.HideAssertionRetriesStatusCommand = HideAssertionRetriesStatusCommand;
23
23
  class SetBreakpointCommand {
24
- constructor(isTestError) {
24
+ constructor(isTestError, selector) {
25
25
  this.type = type_1.default.setBreakpoint;
26
26
  this.isTestError = isTestError;
27
+ this.selector = selector;
27
28
  }
28
29
  }
29
30
  exports.SetBreakpointCommand = SetBreakpointCommand;
@@ -51,4 +52,4 @@ class GetActiveElementCommand {
51
52
  }
52
53
  }
53
54
  exports.GetActiveElementCommand = GetActiveElementCommand;
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0LXJ1bi9jb21tYW5kcy9zZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUUxQixXQUFXO0FBQ1gsTUFBYSxpQ0FBaUM7SUFDMUMsWUFBYSxPQUFPO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQU0sY0FBSSxDQUFDLDBCQUEwQixDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7Q0FDSjtBQUxELDhFQUtDO0FBRUQsTUFBYSxpQ0FBaUM7SUFDMUMsWUFBYSxPQUFPO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQU0sY0FBSSxDQUFDLDBCQUEwQixDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7Q0FDSjtBQUxELDhFQUtDO0FBRUQsTUFBYSxvQkFBb0I7SUFDN0IsWUFBYSxXQUFXO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQVUsY0FBSSxDQUFDLGFBQWEsQ0FBQztRQUN0QyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNuQyxDQUFDO0NBQ0o7QUFMRCxvREFLQztBQUVELE1BQWEsZUFBZTtJQUN4QjtRQUNJLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBSSxDQUFDLFFBQVEsQ0FBQztJQUM5QixDQUFDO0NBQ0o7QUFKRCwwQ0FJQztBQUVELE1BQWEscUJBQXFCO0lBQzlCO1FBQ0ksSUFBSSxDQUFDLElBQUksR0FBRyxjQUFJLENBQUMsY0FBYyxDQUFDO0lBQ3BDLENBQUM7Q0FDSjtBQUpELHNEQUlDO0FBRUQsTUFBYSxpQkFBaUI7SUFDMUI7UUFDSSxJQUFJLENBQUMsSUFBSSxHQUFHLGNBQUksQ0FBQyxVQUFVLENBQUM7SUFDaEMsQ0FBQztDQUNKO0FBSkQsOENBSUM7QUFFRCxNQUFhLHVCQUF1QjtJQUNoQztRQUNJLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ3RDLENBQUM7Q0FDSjtBQUpELDBEQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRZUEUgZnJvbSAnLi90eXBlJztcblxuLy8gQ29tbWFuZHNcbmV4cG9ydCBjbGFzcyBTaG93QXNzZXJ0aW9uUmV0cmllc1N0YXR1c0NvbW1hbmQge1xuICAgIGNvbnN0cnVjdG9yICh0aW1lb3V0KSB7XG4gICAgICAgIHRoaXMudHlwZSAgICA9IFRZUEUuc2hvd0Fzc2VydGlvblJldHJpZXNTdGF0dXM7XG4gICAgICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSGlkZUFzc2VydGlvblJldHJpZXNTdGF0dXNDb21tYW5kIHtcbiAgICBjb25zdHJ1Y3RvciAoc3VjY2Vzcykge1xuICAgICAgICB0aGlzLnR5cGUgICAgPSBUWVBFLmhpZGVBc3NlcnRpb25SZXRyaWVzU3RhdHVzO1xuICAgICAgICB0aGlzLnN1Y2Nlc3MgPSBzdWNjZXNzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNldEJyZWFrcG9pbnRDb21tYW5kIHtcbiAgICBjb25zdHJ1Y3RvciAoaXNUZXN0RXJyb3IpIHtcbiAgICAgICAgdGhpcy50eXBlICAgICAgICA9IFRZUEUuc2V0QnJlYWtwb2ludDtcbiAgICAgICAgdGhpcy5pc1Rlc3RFcnJvciA9IGlzVGVzdEVycm9yO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlc3REb25lQ29tbWFuZCB7XG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgICB0aGlzLnR5cGUgPSBUWVBFLnRlc3REb25lO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJhY2t1cFN0b3JhZ2VzQ29tbWFuZCB7XG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgICB0aGlzLnR5cGUgPSBUWVBFLmJhY2t1cFN0b3JhZ2VzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVubG9ja1BhZ2VDb21tYW5kIHtcbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHRoaXMudHlwZSA9IFRZUEUudW5sb2NrUGFnZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRBY3RpdmVFbGVtZW50Q29tbWFuZCB7XG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgICB0aGlzLnR5cGUgPSBUWVBFLmdldEFjdGl2ZUVsZW1lbnQ7XG4gICAgfVxufVxuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0LXJ1bi9jb21tYW5kcy9zZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUUxQixXQUFXO0FBQ1gsTUFBYSxpQ0FBaUM7SUFDMUMsWUFBYSxPQUFPO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQU0sY0FBSSxDQUFDLDBCQUEwQixDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7Q0FDSjtBQUxELDhFQUtDO0FBRUQsTUFBYSxpQ0FBaUM7SUFDMUMsWUFBYSxPQUFPO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQU0sY0FBSSxDQUFDLDBCQUEwQixDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7Q0FDSjtBQUxELDhFQUtDO0FBRUQsTUFBYSxvQkFBb0I7SUFDN0IsWUFBYSxXQUFXLEVBQUUsUUFBUTtRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFVLGNBQUksQ0FBQyxhQUFhLENBQUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBTSxRQUFRLENBQUM7SUFDaEMsQ0FBQztDQUNKO0FBTkQsb0RBTUM7QUFFRCxNQUFhLGVBQWU7SUFDeEI7UUFDSSxJQUFJLENBQUMsSUFBSSxHQUFHLGNBQUksQ0FBQyxRQUFRLENBQUM7SUFDOUIsQ0FBQztDQUNKO0FBSkQsMENBSUM7QUFFRCxNQUFhLHFCQUFxQjtJQUM5QjtRQUNJLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBSSxDQUFDLGNBQWMsQ0FBQztJQUNwQyxDQUFDO0NBQ0o7QUFKRCxzREFJQztBQUVELE1BQWEsaUJBQWlCO0lBQzFCO1FBQ0ksSUFBSSxDQUFDLElBQUksR0FBRyxjQUFJLENBQUMsVUFBVSxDQUFDO0lBQ2hDLENBQUM7Q0FDSjtBQUpELDhDQUlDO0FBRUQsTUFBYSx1QkFBdUI7SUFDaEM7UUFDSSxJQUFJLENBQUMsSUFBSSxHQUFHLGNBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUN0QyxDQUFDO0NBQ0o7QUFKRCwwREFJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUWVBFIGZyb20gJy4vdHlwZSc7XG5cbi8vIENvbW1hbmRzXG5leHBvcnQgY2xhc3MgU2hvd0Fzc2VydGlvblJldHJpZXNTdGF0dXNDb21tYW5kIHtcbiAgICBjb25zdHJ1Y3RvciAodGltZW91dCkge1xuICAgICAgICB0aGlzLnR5cGUgICAgPSBUWVBFLnNob3dBc3NlcnRpb25SZXRyaWVzU3RhdHVzO1xuICAgICAgICB0aGlzLnRpbWVvdXQgPSB0aW1lb3V0O1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhpZGVBc3NlcnRpb25SZXRyaWVzU3RhdHVzQ29tbWFuZCB7XG4gICAgY29uc3RydWN0b3IgKHN1Y2Nlc3MpIHtcbiAgICAgICAgdGhpcy50eXBlICAgID0gVFlQRS5oaWRlQXNzZXJ0aW9uUmV0cmllc1N0YXR1cztcbiAgICAgICAgdGhpcy5zdWNjZXNzID0gc3VjY2VzcztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZXRCcmVha3BvaW50Q29tbWFuZCB7XG4gICAgY29uc3RydWN0b3IgKGlzVGVzdEVycm9yLCBzZWxlY3Rvcikge1xuICAgICAgICB0aGlzLnR5cGUgICAgICAgID0gVFlQRS5zZXRCcmVha3BvaW50O1xuICAgICAgICB0aGlzLmlzVGVzdEVycm9yID0gaXNUZXN0RXJyb3I7XG4gICAgICAgIHRoaXMuc2VsZWN0b3IgICAgPSBzZWxlY3RvcjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZXN0RG9uZUNvbW1hbmQge1xuICAgIGNvbnN0cnVjdG9yICgpIHtcbiAgICAgICAgdGhpcy50eXBlID0gVFlQRS50ZXN0RG9uZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCYWNrdXBTdG9yYWdlc0NvbW1hbmQge1xuICAgIGNvbnN0cnVjdG9yICgpIHtcbiAgICAgICAgdGhpcy50eXBlID0gVFlQRS5iYWNrdXBTdG9yYWdlcztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbmxvY2tQYWdlQ29tbWFuZCB7XG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgICB0aGlzLnR5cGUgPSBUWVBFLnVubG9ja1BhZ2U7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0QWN0aXZlRWxlbWVudENvbW1hbmQge1xuICAgIGNvbnN0cnVjdG9yICgpIHtcbiAgICAgICAgdGhpcy50eXBlID0gVFlQRS5nZXRBY3RpdmVFbGVtZW50O1xuICAgIH1cbn1cbiJdfQ==
@@ -18,7 +18,7 @@ exports.initSelector = exports.initTypeSelector = exports.initUploadSelector = v
18
18
  const selector_builder_1 = __importDefault(require("../../../client-functions/selectors/selector-builder"));
19
19
  const test_run_1 = require("../../../errors/test-run");
20
20
  const runtime_1 = require("../../../errors/runtime");
21
- const observation_1 = require("../observation");
21
+ const execute_client_function_1 = require("../execute-client-function");
22
22
  const execute_js_expression_1 = require("../../execute-js-expression");
23
23
  const utils_1 = require("../utils");
24
24
  function initUploadSelector(name, val, initOptions) {
@@ -34,7 +34,7 @@ function initTypeSelector(name, val, initOptions) {
34
34
  exports.initTypeSelector = initTypeSelector;
35
35
  function initSelector(name, val, _a) {
36
36
  var { testRun } = _a, options = __rest(_a, ["testRun"]);
37
- if (val instanceof observation_1.ExecuteSelectorCommand)
37
+ if (val instanceof execute_client_function_1.ExecuteSelectorCommand)
38
38
  return val;
39
39
  try {
40
40
  if ((0, utils_1.isJSExpression)(val))
@@ -48,4 +48,4 @@ function initSelector(name, val, _a) {
48
48
  }
49
49
  }
50
50
  exports.initSelector = initSelector;
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVuL2NvbW1hbmRzL3ZhbGlkYXRpb25zL2luaXRpYWxpemVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRHQUFtRjtBQUNuRix1REFBK0Q7QUFDL0QscURBQW1EO0FBQ25ELGdEQUF3RDtBQUN4RCx1RUFBa0U7QUFDbEUsb0NBQTBDO0FBRTFDLFNBQWdCLGtCQUFrQixDQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsV0FBVztJQUN0RCxXQUFXLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBRXZDLE9BQU8sWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUpELGdEQUlDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxXQUFXO0lBQ3BELFdBQVcsQ0FBQyxTQUFTLEdBQUssSUFBSSxDQUFDO0lBQy9CLFdBQVcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBRS9CLE9BQU8sWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUxELDRDQUtDO0FBRUQsU0FBZ0IsWUFBWSxDQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBdUI7UUFBdkIsRUFBRSxPQUFPLE9BQWMsRUFBVCxPQUFPLGNBQXJCLFdBQXVCLENBQUY7SUFDMUQsSUFBSSxHQUFHLFlBQVksb0NBQXNCO1FBQ3JDLE9BQU8sR0FBRyxDQUFDO0lBRWYsSUFBSTtRQUNBLElBQUksSUFBQSxzQkFBYyxFQUFDLEdBQUcsQ0FBQztZQUNuQixHQUFHLEdBQUcsSUFBQSwyQ0FBbUIsRUFBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUzRCxNQUFNLEVBQUUsbUJBQW1CLEtBQXdCLE9BQU8sRUFBMUIsY0FBYyxVQUFLLE9BQU8sRUFBcEQsdUJBQTBDLENBQVUsQ0FBQztRQUUzRCxNQUFNLE9BQU8sR0FBRyxJQUFJLDBCQUFlLENBQUMsR0FBRyxrQkFDbkMsZUFBZSxFQUFFLENBQUMsbUJBQW1CLElBQ2xDLGNBQWMsR0FDbEIsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUVsQyxPQUFPLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQUMvQjtJQUNELE9BQU8sR0FBRyxFQUFFO1FBQ1IsTUFBTSxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxZQUFZLGtCQUFRLENBQUMsQ0FBQztLQUNyRTtBQUNMLENBQUM7QUFwQkQsb0NBb0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNlbGVjdG9yQnVpbGRlciBmcm9tICcuLi8uLi8uLi9jbGllbnQtZnVuY3Rpb25zL3NlbGVjdG9ycy9zZWxlY3Rvci1idWlsZGVyJztcbmltcG9ydCB7IEFjdGlvblNlbGVjdG9yRXJyb3IgfSBmcm9tICcuLi8uLi8uLi9lcnJvcnMvdGVzdC1ydW4nO1xuaW1wb3J0IHsgQVBJRXJyb3IgfSBmcm9tICcuLi8uLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBFeGVjdXRlU2VsZWN0b3JDb21tYW5kIH0gZnJvbSAnLi4vb2JzZXJ2YXRpb24nO1xuaW1wb3J0IHsgZXhlY3V0ZUpzRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uL2V4ZWN1dGUtanMtZXhwcmVzc2lvbic7XG5pbXBvcnQgeyBpc0pTRXhwcmVzc2lvbiB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRVcGxvYWRTZWxlY3RvciAobmFtZSwgdmFsLCBpbml0T3B0aW9ucykge1xuICAgIGluaXRPcHRpb25zLnNraXBWaXNpYmlsaXR5Q2hlY2sgPSB0cnVlO1xuXG4gICAgcmV0dXJuIGluaXRTZWxlY3RvcihuYW1lLCB2YWwsIGluaXRPcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRUeXBlU2VsZWN0b3IgKG5hbWUsIHZhbCwgaW5pdE9wdGlvbnMpIHtcbiAgICBpbml0T3B0aW9ucy5uZWVkRXJyb3IgICA9IHRydWU7XG4gICAgaW5pdE9wdGlvbnMuc3RyaWN0RXJyb3IgPSB0cnVlO1xuXG4gICAgcmV0dXJuIGluaXRTZWxlY3RvcihuYW1lLCB2YWwsIGluaXRPcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRTZWxlY3RvciAobmFtZSwgdmFsLCB7IHRlc3RSdW4sIC4uLm9wdGlvbnMgfSkge1xuICAgIGlmICh2YWwgaW5zdGFuY2VvZiBFeGVjdXRlU2VsZWN0b3JDb21tYW5kKVxuICAgICAgICByZXR1cm4gdmFsO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKGlzSlNFeHByZXNzaW9uKHZhbCkpXG4gICAgICAgICAgICB2YWwgPSBleGVjdXRlSnNFeHByZXNzaW9uKHZhbC52YWx1ZSwgdGVzdFJ1biwgb3B0aW9ucyk7XG5cbiAgICAgICAgY29uc3QgeyBza2lwVmlzaWJpbGl0eUNoZWNrLCAuLi5idWlsZGVyT3B0aW9ucyB9ID0gb3B0aW9ucztcblxuICAgICAgICBjb25zdCBidWlsZGVyID0gbmV3IFNlbGVjdG9yQnVpbGRlcih2YWwsIHtcbiAgICAgICAgICAgIHZpc2liaWxpdHlDaGVjazogIXNraXBWaXNpYmlsaXR5Q2hlY2ssXG4gICAgICAgICAgICAuLi5idWlsZGVyT3B0aW9ucyxcbiAgICAgICAgfSwgeyBpbnN0YW50aWF0aW9uOiAnU2VsZWN0b3InIH0pO1xuXG4gICAgICAgIHJldHVybiBidWlsZGVyLmdldENvbW1hbmQoKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICB0aHJvdyBuZXcgQWN0aW9uU2VsZWN0b3JFcnJvcihuYW1lLCBlcnIsIGVyciBpbnN0YW5jZW9mIEFQSUVycm9yKTtcbiAgICB9XG59XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVuL2NvbW1hbmRzL3ZhbGlkYXRpb25zL2luaXRpYWxpemVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRHQUFtRjtBQUNuRix1REFBK0Q7QUFDL0QscURBQW1EO0FBQ25ELHdFQUFvRTtBQUNwRSx1RUFBa0U7QUFDbEUsb0NBQTBDO0FBRTFDLFNBQWdCLGtCQUFrQixDQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsV0FBVztJQUN0RCxXQUFXLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBRXZDLE9BQU8sWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUpELGdEQUlDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxXQUFXO0lBQ3BELFdBQVcsQ0FBQyxTQUFTLEdBQUssSUFBSSxDQUFDO0lBQy9CLFdBQVcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBRS9CLE9BQU8sWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUxELDRDQUtDO0FBRUQsU0FBZ0IsWUFBWSxDQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBdUI7UUFBdkIsRUFBRSxPQUFPLE9BQWMsRUFBVCxPQUFPLGNBQXJCLFdBQXVCLENBQUY7SUFDMUQsSUFBSSxHQUFHLFlBQVksZ0RBQXNCO1FBQ3JDLE9BQU8sR0FBRyxDQUFDO0lBRWYsSUFBSTtRQUNBLElBQUksSUFBQSxzQkFBYyxFQUFDLEdBQUcsQ0FBQztZQUNuQixHQUFHLEdBQUcsSUFBQSwyQ0FBbUIsRUFBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUzRCxNQUFNLEVBQUUsbUJBQW1CLEtBQXdCLE9BQU8sRUFBMUIsY0FBYyxVQUFLLE9BQU8sRUFBcEQsdUJBQTBDLENBQVUsQ0FBQztRQUUzRCxNQUFNLE9BQU8sR0FBRyxJQUFJLDBCQUFlLENBQUMsR0FBRyxrQkFDbkMsZUFBZSxFQUFFLENBQUMsbUJBQW1CLElBQ2xDLGNBQWMsR0FDbEIsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUVsQyxPQUFPLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQUMvQjtJQUNELE9BQU8sR0FBRyxFQUFFO1FBQ1IsTUFBTSxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxZQUFZLGtCQUFRLENBQUMsQ0FBQztLQUNyRTtBQUNMLENBQUM7QUFwQkQsb0NBb0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNlbGVjdG9yQnVpbGRlciBmcm9tICcuLi8uLi8uLi9jbGllbnQtZnVuY3Rpb25zL3NlbGVjdG9ycy9zZWxlY3Rvci1idWlsZGVyJztcbmltcG9ydCB7IEFjdGlvblNlbGVjdG9yRXJyb3IgfSBmcm9tICcuLi8uLi8uLi9lcnJvcnMvdGVzdC1ydW4nO1xuaW1wb3J0IHsgQVBJRXJyb3IgfSBmcm9tICcuLi8uLi8uLi9lcnJvcnMvcnVudGltZSc7XG5pbXBvcnQgeyBFeGVjdXRlU2VsZWN0b3JDb21tYW5kIH0gZnJvbSAnLi4vZXhlY3V0ZS1jbGllbnQtZnVuY3Rpb24nO1xuaW1wb3J0IHsgZXhlY3V0ZUpzRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uL2V4ZWN1dGUtanMtZXhwcmVzc2lvbic7XG5pbXBvcnQgeyBpc0pTRXhwcmVzc2lvbiB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRVcGxvYWRTZWxlY3RvciAobmFtZSwgdmFsLCBpbml0T3B0aW9ucykge1xuICAgIGluaXRPcHRpb25zLnNraXBWaXNpYmlsaXR5Q2hlY2sgPSB0cnVlO1xuXG4gICAgcmV0dXJuIGluaXRTZWxlY3RvcihuYW1lLCB2YWwsIGluaXRPcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRUeXBlU2VsZWN0b3IgKG5hbWUsIHZhbCwgaW5pdE9wdGlvbnMpIHtcbiAgICBpbml0T3B0aW9ucy5uZWVkRXJyb3IgICA9IHRydWU7XG4gICAgaW5pdE9wdGlvbnMuc3RyaWN0RXJyb3IgPSB0cnVlO1xuXG4gICAgcmV0dXJuIGluaXRTZWxlY3RvcihuYW1lLCB2YWwsIGluaXRPcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRTZWxlY3RvciAobmFtZSwgdmFsLCB7IHRlc3RSdW4sIC4uLm9wdGlvbnMgfSkge1xuICAgIGlmICh2YWwgaW5zdGFuY2VvZiBFeGVjdXRlU2VsZWN0b3JDb21tYW5kKVxuICAgICAgICByZXR1cm4gdmFsO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKGlzSlNFeHByZXNzaW9uKHZhbCkpXG4gICAgICAgICAgICB2YWwgPSBleGVjdXRlSnNFeHByZXNzaW9uKHZhbC52YWx1ZSwgdGVzdFJ1biwgb3B0aW9ucyk7XG5cbiAgICAgICAgY29uc3QgeyBza2lwVmlzaWJpbGl0eUNoZWNrLCAuLi5idWlsZGVyT3B0aW9ucyB9ID0gb3B0aW9ucztcblxuICAgICAgICBjb25zdCBidWlsZGVyID0gbmV3IFNlbGVjdG9yQnVpbGRlcih2YWwsIHtcbiAgICAgICAgICAgIHZpc2liaWxpdHlDaGVjazogIXNraXBWaXNpYmlsaXR5Q2hlY2ssXG4gICAgICAgICAgICAuLi5idWlsZGVyT3B0aW9ucyxcbiAgICAgICAgfSwgeyBpbnN0YW50aWF0aW9uOiAnU2VsZWN0b3InIH0pO1xuXG4gICAgICAgIHJldHVybiBidWlsZGVyLmdldENvbW1hbmQoKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICB0aHJvdyBuZXcgQWN0aW9uU2VsZWN0b3JFcnJvcihuYW1lLCBlcnIsIGVyciBpbnN0YW5jZW9mIEFQSUVycm9yKTtcbiAgICB9XG59XG4iXX0=