testcafe 2.6.0 → 2.6.1

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 (112) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/bin/testcafe-with-v8-flag-filter.js +10 -16
  3. package/lib/api/exportable-lib/index.js +1 -11
  4. package/lib/api/structure/test.js +4 -11
  5. package/lib/api/test-controller/index.js +3 -10
  6. package/lib/api/test-run-tracker.js +1 -1
  7. package/lib/assertions/executor.js +2 -11
  8. package/lib/browser/connection/gateway/index.js +3 -4
  9. package/lib/cli/argument-parser/index.js +1 -3
  10. package/lib/cli/cli.js +3 -11
  11. package/lib/client/automation/index.js +49 -36
  12. package/lib/client/automation/index.min.js +1 -1
  13. package/lib/client/browser/idle-page/index.js +13 -5
  14. package/lib/client/core/index.js +14 -8
  15. package/lib/client/core/index.min.js +1 -1
  16. package/lib/client/driver/index.js +19 -20
  17. package/lib/client/driver/index.min.js +1 -1
  18. package/lib/compiler/babel/load-libs.js +3 -3
  19. package/lib/compiler/compilers.js +6 -6
  20. package/lib/compiler/index.js +3 -3
  21. package/lib/compiler/interfaces.js +1 -1
  22. package/lib/compiler/test-file/add-export-api.js +3 -3
  23. package/lib/compiler/test-file/api-based.js +5 -34
  24. package/lib/compiler/test-file/formats/es-next/compiler.js +4 -4
  25. package/lib/compiler/test-file/formats/typescript/compiler.js +5 -5
  26. package/lib/configuration/option-names.js +1 -2
  27. package/lib/errors/runtime/templates.js +1 -2
  28. package/lib/errors/types.js +2 -3
  29. package/lib/index.js +1 -3
  30. package/lib/live/bootstrapper.js +3 -3
  31. package/lib/live/test-runner.js +5 -5
  32. package/lib/native-automation/add-custom-debug-formatters.js +3 -2
  33. package/lib/native-automation/client/event-descriptor.js +11 -5
  34. package/lib/native-automation/client/input.js +3 -7
  35. package/lib/native-automation/request-hooks/event-provider.js +4 -1
  36. package/lib/native-automation/request-pipeline/context-info.js +4 -1
  37. package/lib/native-automation/request-pipeline/index.js +39 -19
  38. package/lib/native-automation/request-pipeline/safe-api.js +10 -7
  39. package/lib/native-automation/request-pipeline/special-handlers.js +16 -13
  40. package/lib/native-automation/resource-injector.js +7 -7
  41. package/lib/native-automation/types.js +1 -1
  42. package/lib/native-automation/utils/cdp.js +3 -2
  43. package/lib/role/role.js +4 -39
  44. package/lib/runner/bootstrapper.js +4 -11
  45. package/lib/runner/browser-job.js +4 -5
  46. package/lib/runner/fixture-hook-controller.js +1 -7
  47. package/lib/runner/index.js +6 -53
  48. package/lib/runner/interfaces.js +1 -1
  49. package/lib/runner/task/index.js +2 -4
  50. package/lib/runner/test-run-controller.js +2 -4
  51. package/lib/test-run/bookmark.js +5 -23
  52. package/lib/test-run/commands/service.js +2 -3
  53. package/lib/test-run/commands/utils.js +4 -2
  54. package/lib/test-run/index.js +9 -132
  55. package/lib/testcafe.js +1 -9
  56. package/lib/utils/debug-loggers.js +4 -2
  57. package/lib/utils/parse-user-agent.js +17 -2
  58. package/package.json +3 -4
  59. package/lib/compiler/test-file/test-file-temp-variable-name.js +0 -6
  60. package/lib/dashboard/config-storage.js +0 -26
  61. package/lib/dashboard/connector.js +0 -84
  62. package/lib/dashboard/documentation-url.js +0 -6
  63. package/lib/dashboard/formatting.js +0 -26
  64. package/lib/dashboard/get-dashboard-url.js +0 -10
  65. package/lib/dashboard/get-default-project-link.js +0 -23
  66. package/lib/dashboard/get-env-options.js +0 -26
  67. package/lib/dashboard/index.js +0 -145
  68. package/lib/dashboard/interfaces.js +0 -3
  69. package/lib/dashboard/messages.js +0 -21
  70. package/lib/services/compiler/esm-runtime-holder-name.js +0 -6
  71. package/lib/services/compiler/host.js +0 -370
  72. package/lib/services/compiler/interfaces.js +0 -3
  73. package/lib/services/compiler/io.js +0 -10
  74. package/lib/services/compiler/protocol.js +0 -17
  75. package/lib/services/compiler/service-loader.js +0 -18
  76. package/lib/services/compiler/service.js +0 -362
  77. package/lib/services/compiler/test-run-proxy.js +0 -157
  78. package/lib/services/interfaces.js +0 -3
  79. package/lib/services/process-title.js +0 -10
  80. package/lib/services/serialization/prepare-options.js +0 -23
  81. package/lib/services/serialization/replicator/create-replicator.js +0 -58
  82. package/lib/services/serialization/replicator/interfaces.js +0 -3
  83. package/lib/services/serialization/replicator/transforms/base-transform.js +0 -16
  84. package/lib/services/serialization/replicator/transforms/browser-console-messages-transform.js +0 -23
  85. package/lib/services/serialization/replicator/transforms/callsite-record-transform.js +0 -24
  86. package/lib/services/serialization/replicator/transforms/command-base-trasform/assertion-command-constructors.js +0 -28
  87. package/lib/services/serialization/replicator/transforms/command-base-trasform/command-constructors.js +0 -67
  88. package/lib/services/serialization/replicator/transforms/command-base-trasform/index.js +0 -49
  89. package/lib/services/serialization/replicator/transforms/command-base-trasform/types.js +0 -3
  90. package/lib/services/serialization/replicator/transforms/configure-response-event-option-transform.js +0 -21
  91. package/lib/services/serialization/replicator/transforms/custom-error-transform.js +0 -29
  92. package/lib/services/serialization/replicator/transforms/function-marker-transform/index.js +0 -21
  93. package/lib/services/serialization/replicator/transforms/function-marker-transform/marker.js +0 -9
  94. package/lib/services/serialization/replicator/transforms/promise-marker-transform/index.js +0 -21
  95. package/lib/services/serialization/replicator/transforms/promise-marker-transform/marker.js +0 -9
  96. package/lib/services/serialization/replicator/transforms/raw-command-callsite-record-transform.js +0 -22
  97. package/lib/services/serialization/replicator/transforms/re-executable-promise-transform/index.js +0 -22
  98. package/lib/services/serialization/replicator/transforms/re-executable-promise-transform/marker.js +0 -6
  99. package/lib/services/serialization/replicator/transforms/request-filter-rule-transform.js +0 -23
  100. package/lib/services/serialization/replicator/transforms/request-hook-event-data-transform.js +0 -41
  101. package/lib/services/serialization/replicator/transforms/response-mock-transform.js +0 -23
  102. package/lib/services/serialization/replicator/transforms/role-transform.js +0 -21
  103. package/lib/services/serialization/replicator/transforms/testcafe-error-list-transform.js +0 -23
  104. package/lib/services/serialization/replicator/transforms/url-transform.js +0 -23
  105. package/lib/services/serialization/test-structure.js +0 -91
  106. package/lib/services/utils/ipc/interfaces.js +0 -29
  107. package/lib/services/utils/ipc/io.js +0 -109
  108. package/lib/services/utils/ipc/message.js +0 -84
  109. package/lib/services/utils/ipc/packet.js +0 -57
  110. package/lib/services/utils/ipc/proxy.js +0 -94
  111. package/lib/services/utils/ipc/transport.js +0 -65
  112. package/lib/services/utils/method-should-not-be-called-error.js +0 -10
@@ -13,7 +13,7 @@ const fixture_hook_controller_1 = __importDefault(require("../fixture-hook-contr
13
13
  const videos_1 = __importDefault(require("../../video-recorder/videos"));
14
14
  const phase_1 = __importDefault(require("./phase"));
15
15
  class Task extends async_event_emitter_1.default {
16
- constructor({ tests, browserConnectionGroups, proxy, opts, runnerWarningLog, compilerService, messageBus, }) {
16
+ constructor({ tests, browserConnectionGroups, proxy, opts, runnerWarningLog, messageBus, }) {
17
17
  super({ captureRejections: true });
18
18
  this._timeStamp = (0, moment_1.default)();
19
19
  this._phase = phase_1.default.initialized;
@@ -22,7 +22,6 @@ class Task extends async_event_emitter_1.default {
22
22
  this.opts = opts;
23
23
  this._proxy = proxy;
24
24
  this.warningLog = new warning_log_1.default(null, warning_log_1.default.createAddWarningCallback(messageBus));
25
- this._compilerService = compilerService;
26
25
  this._messageBus = messageBus;
27
26
  this.warningLog.copyFrom(runnerWarningLog);
28
27
  const { path, pathPattern, fullPage, thumbnails, autoTakeOnFails } = this.opts.screenshots;
@@ -100,7 +99,6 @@ class Task extends async_event_emitter_1.default {
100
99
  screenshots: this.screenshots,
101
100
  warningLog: this.warningLog,
102
101
  fixtureHookController: this.fixtureHookController,
103
- compilerService: this._compilerService,
104
102
  messageBus: this._messageBus,
105
103
  proxy,
106
104
  opts,
@@ -117,4 +115,4 @@ class Task extends async_event_emitter_1.default {
117
115
  }
118
116
  exports.default = Task;
119
117
  module.exports = exports.default;
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVubmVyL3Rhc2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBaUQ7QUFDakQsb0RBQTRCO0FBQzVCLDBGQUFnRTtBQUNoRSxpRUFBd0M7QUFDeEMsb0VBQTRDO0FBQzVDLGtGQUF5RDtBQUN6RCx5RkFBK0Q7QUFDL0QseUVBQWlEO0FBYWpELG9EQUFnQztBQUtoQyxNQUFxQixJQUFLLFNBQVEsNkJBQWlCO0lBaUIvQyxZQUFvQixFQUNoQixLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLEtBQUssRUFDTCxJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixVQUFVLEdBQ0g7UUFDUCxLQUFLLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxVQUFVLEdBQWdCLElBQUEsZ0JBQU0sR0FBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQW9CLGVBQVMsQ0FBQyxXQUFXLENBQUM7UUFDckQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLHVCQUF1QixDQUFDO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEdBQXFCLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsSUFBSSxHQUFzQixJQUFJLENBQUM7UUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBb0IsS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQWdCLElBQUkscUJBQVUsQ0FBQyxJQUFJLEVBQUUscUJBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLElBQUksQ0FBQyxnQkFBZ0IsR0FBVSxlQUFlLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBZSxVQUFVLENBQUM7UUFFMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUzQyxNQUFNLEVBQUUs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a0JBQWtCLEVBQUssc0JBQXNCO2dCQUM3QyxXQUFXLEVBQVksSUFBSSxDQUFDLFdBQVc7Z0JBQ3ZDLFVBQVUsRUFBYSxJQUFJLENBQUMsVUFBVTtnQkFDdEMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtnQkFDakQsZUFBZSxFQUFRLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQzVDLFVBQVUsRUFBYSxJQUFJLENBQUMsV0FBVztnQkFDdkMsS0FBSztnQkFDTCxJQUFJO2FBQ1AsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUVqRCxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU07SUFDQyxLQUFLO1FBQ1IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDSjtBQXhKRCx1QkF3SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBncm91cEJ5LCBwdWxsIGFzIHJlbW92ZSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgQXN5bmNFdmVudEVtaXR0ZXIgZnJvbSAnLi4vLi4vdXRpbHMvYXN5bmMtZXZlbnQtZW1pdHRlcic7XG5pbXBvcnQgQnJvd3NlckpvYiBmcm9tICcuLi9icm93c2VyLWpvYic7XG5pbXBvcnQgU2NyZWVuc2hvdHMgZnJvbSAnLi4vLi4vc2NyZWVuc2hvdHMnO1xuaW1wb3J0IFdhcm5pbmdMb2cgZnJvbSAnLi4vLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLWxvZyc7XG5pbXBvcnQgRml4dHVyZUhvb2tDb250cm9sbGVyIGZyb20gJy4uL2ZpeHR1cmUtaG9vay1jb250cm9sbGVyJztcbmltcG9ydCBWaWRlb3MgZnJvbSAnLi4vLi4vdmlkZW8tcmVjb3JkZXIvdmlkZW9zJztcbmltcG9ydCBUZXN0UnVuIGZyb20gJy4uLy4uL3Rlc3QtcnVuJztcbmltcG9ydCB7IFByb3h5IH0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgQWN0aW9uRXZlbnRBcmcsXG4gICAgUmVwb3J0ZWRUZXN0U3RydWN0dXJlSXRlbSxcbiAgICBUYXNrSW5pdCxcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9icm93c2VyL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IFRlc3QgZnJvbSAnLi4vLi4vYXBpL3N0cnVjdHVyZS90ZXN0JztcbmltcG9ydCB7IFZpZGVvT3B0aW9ucyB9IGZyb20gJy4uLy4uL3ZpZGVvLXJlY29yZGVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IFRhc2tQaGFzZSBmcm9tICcuL3BoYXNlJztcbmltcG9ydCBDb21waWxlclNlcnZpY2UgZnJvbSAnLi4vLi4vc2VydmljZXMvY29tcGlsZXIvaG9zdCc7XG5pbXBvcnQgRml4dHVyZSBmcm9tICcuLi8uLi9hcGkvc3RydWN0dXJlL2ZpeHR1cmUnO1xuaW1wb3J0IE1lc3NhZ2VCdXMgZnJvbSAnLi4vLi4vdXRpbHMvbWVzc2FnZS1idXMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYXNrIGV4dGVuZHMgQXN5bmNFdmVudEVtaXR0ZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVTdGFtcDogbW9tZW50Lk1vbWVudDtcbiAgICBwcml2YXRlIF9waGFzZTogVGFza1BoYXNlO1xuICAgIHB1YmxpYyBicm93c2VyQ29ubmVjdGlvbkdyb3VwczogQnJvd3NlckNvbm5lY3Rpb25bXVtdO1xuICAgIHB1YmxpYyByZWFkb25seSB0ZXN0czogVGVzdFtdO1xuICAgIHB1YmxpYyByZWFkb25seSBvcHRzOiBEaWN0aW9uYXJ5PE9wdGlvblZhbHVlPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcm94eTogUHJveHk7XG4gICAgcHVibGljIHJlYWRvbmx5IHdhcm5pbmdMb2c6IFdhcm5pbmdMb2c7XG4gICAgcHVibGljIHJlYWRvbmx5IHNjcmVlbnNob3RzOiBTY3JlZW5zaG90cztcbiAgICBwdWJsaWMgcmVhZG9ubHkgZml4dHVyZUhvb2tDb250cm9sbGVyOiBGaXh0dXJlSG9va0NvbnRyb2xsZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfcGVuZGluZ0Jyb3dzZXJKb2JzOiBCcm93c2VySm9iW107XG4gICAgcHVibGljIHJlYWRvbmx5IHRlc3RTdHJ1Y3R1cmU6IFJlcG9ydGVkVGVzdFN0cnVjdHVyZUl0ZW1bXTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmlkZW9zPzogVmlkZW9zO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbXBpbGVyU2VydmljZT86IENvbXBpbGVyU2VydmljZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlQnVzOiBNZXNzYWdlQnVzO1xuICAgIHB1YmxpYyBzdGFydFRpbWU/OiBEYXRlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yICh7XG4gICAgICAgIHRlc3RzLFxuICAgICAgICBicm93c2VyQ29ubmVjdGlvbkdyb3VwcyxcbiAgICAgICAgcHJveHksXG4gICAgICAgIG9wdHMsXG4gICAgICAgIHJ1bm5lcldhcm5pbmdMb2csXG4gICAgICAgIGNvbXBpbGVyU2VydmljZSxcbiAgICAgICAgbWVzc2FnZUJ1cyxcbiAgICB9OiBUYXNrSW5pdCkge1xuICAgICAgICBzdXBlcih7IGNhcHR1cmVSZWplY3Rpb25zOiB0cnVlIH0pO1xuXG4gICAgICAgIHRoaXMuX3RpbWVTdGFtcCAgICAgICAgICAgICAgPSBtb21lbnQoKTtcbiAgICAgICAgdGhpcy5fcGhhc2UgICAgICAgICAgICAgICAgICA9IFRhc2tQaGFzZS5pbml0aWFsaXplZDtcbiAgICAgICAgdGhpcy5icm93c2VyQ29ubmVjdGlvbkdyb3VwcyA9IGJyb3dzZXJDb25uZWN0aW9uR3JvdXBzO1xuICAgICAgICB0aGlzLnRlc3RzICAgICAgICAgICAgICAgICAgID0gdGVzdHM7XG4gICAgICAgIHRoaXMub3B0cyAgICAgICAgICAgICAgICAgICAgPSBvcHRzO1xuICAgICAgICB0aGlzLl9wcm94eSAgICAgICAgICAgICAgICAgID0gcHJveHk7XG4gICAgICAgIHRoaXMud2FybmluZ0xvZyAgICAgICAgICAgICAgPSBuZXcgV2FybmluZ0xvZyhudWxsLCBXYXJuaW5nTG9nLmNyZWF0ZUFkZFdhcm5pbmdDYWxsYmFjayhtZXNzYWdlQnVzKSk7XG4gICAgICAgIHRoaXMuX2NvbXBpbGVyU2VydmljZSAgICAgICAgPSBjb21waWxlclNlcnZpY2U7XG4gICAgICAgIHRoaXMuX21lc3NhZ2VCdXMgICAgICAgICAgICAgPSBtZXNzYWdlQnVzO1xuXG4gICAgICAgIHRoaXMud2FybmluZ0xvZy5jb3B5RnJvbShydW5uZXJXYXJuaW5nTG9nKTtcblxuICAgICAgICBjb25zdCB7IHBhdGgsIHBhdGhQYXR0ZXJuLCBmdWxsUGFnZSwgdGh1bWJuYWlscywgYXV0b1Rha2VPbkZhaWxzIH0gPSB0aGlzLm9wdHMuc2NyZWVuc2hvdHMgYXMgU2NyZWVuc2hvdE9wdGlvblZhbHVlO1xuXG4gICAgICAgIHRoaXMuc2NyZWVuc2hvdHMgPSBuZXcgU2NyZWVuc2hvdHMoe1xuICAgICAgICAgICAgZW5hYmxlZDogIXRoaXMub3B0cy5kaXNhYmxlU2NyZWVuc2hvdHMsXG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgcGF0aFBhdHRlcm4sXG4gICAgICAgICAgICBmdWxsUGFnZSxcbiAgICAgICAgICAgIHRodW1ibmFpbHMsXG4gICAgICAgICAgICBtZXNzYWdlQnVzLFxuICAgICAgICAgICAgYXV0b1Rha2VPbkZhaWxzLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZpeHR1cmVIb29rQ29udHJvbGxlciA9IG5ldyBGaXh0dXJlSG9va0NvbnRyb2xsZXIodGVzdHMsIGJyb3dzZXJDb25uZWN0aW9uR3JvdXBzLmxlbmd0aCk7XG4gICAgICAgIHRoaXMuX3BlbmRpbmdCcm93c2VySm9icyAgID0gdGhpcy5fY3JlYXRlQnJvd3NlckpvYnMocHJveHksIHRoaXMub3B0cyk7XG4gICAgICAgIHRoaXMudGVzdFN0cnVjdHVyZSAgICAgICAgID0gdGhpcy5fcHJlcGFyZVRlc3RTdHJ1Y3R1cmUodGVzdHMpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdHMudmlkZW9QYXRoKSB7XG4gICAgICAgICAgICBjb25zdCB7IHZpZGVvUGF0aCwgdmlkZW9PcHRpb25zLCB2aWRlb0VuY29kaW5nT3B0aW9ucyB9ID0gdGhpcy5vcHRzO1xuXG4gICAgICAgICAgICB0aGlzLnZpZGVvcyA9IG5ldyBWaWRlb3ModGhpcy5fcGVuZGluZ0Jyb3dzZXJKb2JzLCB7IHZpZGVvUGF0aCwgdmlkZW9PcHRpb25zLCB2aWRlb0VuY29kaW5nT3B0aW9ucyB9IGFzIHVua25vd24gYXMgVmlkZW9PcHRpb25zLCB0aGlzLndhcm5pbmdMb2csIHRoaXMuX3RpbWVTdGFtcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9hc3NpZ25Ccm93c2VySm9iRXZlbnRIYW5kbGVycyAoam9iOiBCcm93c2VySm9iKTogdm9pZCB7XG4gICAgICAgIGpvYi5vbigndGVzdC1ydW4tZG9uZScsIGFzeW5jICh0ZXN0UnVuOiBUZXN0UnVuKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9tZXNzYWdlQnVzLmVtaXQoJ3Rlc3QtcnVuLWRvbmUnLCB0ZXN0UnVuKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMub3B0cy5zdG9wT25GaXJzdEZhaWwgJiYgdGVzdFJ1bi5lcnJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWJvcnQoKTtcblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX21lc3NhZ2VCdXMuZW1pdCgnZG9uZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBqb2Iub25jZSgnc3RhcnQnLCBhc3luYyAoc3RhcnRUaW1lOiBEYXRlKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fcGhhc2UgIT09IFRhc2tQaGFzZS5zdGFydGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGhhc2UgICAgPSBUYXNrUGhhc2Uuc3RhcnRlZDtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IHN0YXJ0VGltZTtcblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX21lc3NhZ2VCdXMuZW1pdCgnc3RhcnQnLCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgam9iLm9uY2UoJ2RvbmUnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ2Jyb3dzZXItam9iLWRvbmUnLCBqb2IpO1xuXG4gICAgICAgICAgICByZW1vdmUodGhpcy5fcGVuZGluZ0Jyb3dzZXJKb2JzLCBqb2IpO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3BlbmRpbmdCcm93c2VySm9icy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9waGFzZSA9IFRhc2tQaGFzZS5kb25lO1xuXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fbWVzc2FnZUJ1cy5lbWl0KCdkb25lJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGpvYi5vbigndGVzdC1hY3Rpb24tZG9uZScsIGFzeW5jIChhcmdzOiBBY3Rpb25FdmVudEFyZykgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3BoYXNlID09PSBUYXNrUGhhc2UuZG9uZSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX21lc3NhZ2VCdXMuZW1pdCgndGVzdC1hY3Rpb24tZG9uZScsIGFyZ3MpO1xuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIHByaXZhdGUgX3ByZXBhcmVUZXN0U3RydWN0dXJlICh0ZXN0czogVGVzdFtdKTogUmVwb3J0ZWRUZXN0U3RydWN0dXJlSXRlbVtdIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gZ3JvdXBCeSh0ZXN0cywgJ2ZpeHR1cmUuaWQnKTtcblxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZ3JvdXBzKS5tYXAoZml4dHVyZUlkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRlc3RzQnlHcm91cCA9IGdyb3Vwc1tmaXh0dXJlSWRdIGFzIFRlc3RbXTtcbiAgICAgICAgICAgIGNvbnN0IGZpeHR1cmUgICAgICA9IHRlc3RzQnlHcm91cFswXS5maXh0dXJlIGFzIEZpeHR1cmU7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZml4dHVyZToge1xuICAgICAgICAgICAgICAgICAgICBpZDogICAgZml4dHVyZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogIGZpeHR1cmUubmFtZSBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgIHRlc3RzOiB0ZXN0c0J5R3JvdXAubWFwKHRlc3QgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogICB0ZXN0LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRlc3QubmFtZSBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcDogdGVzdC5za2lwLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NyZWF0ZUJyb3dzZXJKb2JzIChwcm94eTogUHJveHksIG9wdHM6IERpY3Rpb25hcnk8T3B0aW9uVmFsdWU+KTogQnJvd3NlckpvYltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnJvd3NlckNvbm5lY3Rpb25Hcm91cHMubWFwKGJyb3dzZXJDb25uZWN0aW9uR3JvdXAgPT4ge1xuICAgICAgICAgICAgY29uc3Qgam9iID0gbmV3IEJyb3dzZXJKb2Ioe1xuICAgICAgICAgICAgICAgIHRlc3RzOiAgICAgICAgICAgICAgICAgdGhpcy50ZXN0cyxcbiAgICAgICAgICAgICAgICBicm93c2VyQ29ubmVjdGlvbnM6ICAgIGJyb3dzZXJDb25uZWN0aW9uR3JvdXAsXG4gICAgICAgICAgICAgICAgc2NyZWVuc2hvdHM6ICAgICAgICAgICB0aGlzLnNjcmVlbnNob3RzLFxuICAgICAgICAgICAgICAgIHdhcm5pbmdMb2c6ICAgICAgICAgICAgdGhpcy53YXJuaW5nTG9nLFxuICAgICAgICAgICAgICAgIGZpeHR1cmVIb29rQ29udHJvbGxlcjogdGhpcy5maXh0dXJlSG9va0NvbnRyb2xsZXIsXG4gICAgICAgICAgICAgICAgY29tcGlsZXJTZXJ2aWNlOiAgICAgICB0aGlzLl9jb21waWxlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgbWVzc2FnZUJ1czogICAgICAgICAgICB0aGlzLl9tZXNzYWdlQnVzLFxuICAgICAgICAgICAgICAgIHByb3h5LFxuICAgICAgICAgICAgICAgIG9wdHMsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5fYXNzaWduQnJvd3NlckpvYkV2ZW50SGFuZGxlcnMoam9iKTtcbiAgICAgICAgICAgIGJyb3dzZXJDb25uZWN0aW9uR3JvdXAubWFwKGJjID0+IGJjLmFkZEpvYihqb2IpKTtcblxuICAgICAgICAgICAgcmV0dXJuIGpvYjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQVBJXG4gICAgcHVibGljIGFib3J0ICgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcGVuZGluZ0Jyb3dzZXJKb2JzLmZvckVhY2goam9iID0+IGpvYi5hYm9ydCgpKTtcbiAgICB9XG59XG4iXX0=
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVubmVyL3Rhc2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBaUQ7QUFDakQsb0RBQTRCO0FBQzVCLDBGQUFnRTtBQUNoRSxpRUFBd0M7QUFDeEMsb0VBQTRDO0FBQzVDLGtGQUF5RDtBQUN6RCx5RkFBK0Q7QUFDL0QseUVBQWlEO0FBYWpELG9EQUFnQztBQUloQyxNQUFxQixJQUFLLFNBQVEsNkJBQWlCO0lBZ0IvQyxZQUFvQixFQUNoQixLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLEtBQUssRUFDTCxJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLFVBQVUsR0FDSDtRQUNQLEtBQUssQ0FBQyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLFVBQVUsR0FBZ0IsSUFBQSxnQkFBTSxHQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBb0IsZUFBUyxDQUFDLFdBQVcsQ0FBQztRQUNyRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7UUFDdkQsSUFBSSxDQUFDLEtBQUssR0FBcUIsS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQXNCLElBQUksQ0FBQztRQUNwQyxJQUFJLENBQUMsTUFBTSxHQUFvQixLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBZ0IsSUFBSSxxQkFBVSxDQUFDLElBQUksRUFBRSxxQkFBVSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDckcsSUFBSSxDQUFDLFdBQVcsR0FBZSxVQUFVLENBQUM7UUFFMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUzQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBb0MsQ0FBQztRQUVwSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkscUJBQVcsQ0FBQztZQUMvQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtZQUN0QyxJQUFJO1lBQ0osV0FBVztZQUNYLFFBQVE7WUFDUixVQUFVO1lBQ1YsVUFBVTtZQUNWLGVBQWU7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksaUNBQXFCLENBQUMsS0FBSyxFQUFFLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxtQkFBbUIsR0FBSyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsYUFBYSxHQUFXLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3JCLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUVwRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZ0JBQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUE2QixFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3RLO0lBQ0wsQ0FBQztJQUVPLDhCQUE4QixDQUFFLEdBQWU7UUFDbkQsR0FBRyxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLE9BQWdCLEVBQUUsRUFBRTtZQUMvQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUV0RCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNsRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBRWIsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN2QztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQWUsRUFBRSxFQUFFO1lBQ3hDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxlQUFTLENBQUMsT0FBTyxFQUFFO2dCQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFNLGVBQVMsQ0FBQyxPQUFPLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO2dCQUUzQixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQzthQUM5QztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDeEIsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRXpDLElBQUEsYUFBTSxFQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUV0QyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtnQkFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFTLENBQUMsSUFBSSxDQUFDO2dCQUU3QixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3ZDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxHQUFHLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFvQixFQUFFLEVBQUU7WUFDdEQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLGVBQVMsQ0FBQyxJQUFJO2dCQUM5QixPQUFPO1lBRVgsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUVQLENBQUM7SUFFTyxxQkFBcUIsQ0FBRSxLQUFhO1FBQ3hDLE1BQU0sTUFBTSxHQUFHLElBQUEsZ0JBQU8sRUFBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFNUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN2QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFXLENBQUM7WUFDakQsTUFBTSxPQUFPLEdBQVEsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQWtCLENBQUM7WUFFeEQsT0FBTztnQkFDSCxPQUFPLEVBQUU7b0JBQ0wsRUFBRSxFQUFLLE9BQU8sQ0FBQyxFQUFFO29CQUNqQixJQUFJLEVBQUcsT0FBTyxDQUFDLElBQWM7b0JBQzdCLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUMzQixPQUFPOzRCQUNILEVBQUUsRUFBSSxJQUFJLENBQUMsRUFBRTs0QkFDYixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQWM7NEJBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTt5QkFDbEIsQ0FBQztvQkFDTixDQUFDLENBQUM7aUJBQ0w7YUFDSixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sa0JBQWtCLENBQUUsS0FBWSxFQUFFLElBQTZCO1FBQ25FLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1lBQzdELE1BQU0sR0FBRyxHQUFHLElBQUkscUJBQVUsQ0FBQztnQkFDdkIsS0FBSyxFQUFrQixJQUFJLENBQUMsS0FBSztnQkFDakMsa0JBQWtCLEVBQUssc0JBQXNCO2dCQUM3QyxXQUFXLEVBQVksSUFBSSxDQUFDLFdBQVc7Z0JBQ3ZDLFVBQVUsRUFBYSxJQUFJLENBQUMsVUFBVTtnQkFDdEMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQjtnQkFDakQsVUFBVSxFQUFhLElBQUksQ0FBQyxXQUFXO2dCQUN2QyxLQUFLO2dCQUNMLElBQUk7YUFDUCxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsOEJBQThCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRWpELE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsTUFBTTtJQUNDLEtBQUs7UUFDUixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNKO0FBcEpELHVCQW9KQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdyb3VwQnksIHB1bGwgYXMgcmVtb3ZlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCBBc3luY0V2ZW50RW1pdHRlciBmcm9tICcuLi8uLi91dGlscy9hc3luYy1ldmVudC1lbWl0dGVyJztcbmltcG9ydCBCcm93c2VySm9iIGZyb20gJy4uL2Jyb3dzZXItam9iJztcbmltcG9ydCBTY3JlZW5zaG90cyBmcm9tICcuLi8uLi9zY3JlZW5zaG90cyc7XG5pbXBvcnQgV2FybmluZ0xvZyBmcm9tICcuLi8uLi9ub3RpZmljYXRpb25zL3dhcm5pbmctbG9nJztcbmltcG9ydCBGaXh0dXJlSG9va0NvbnRyb2xsZXIgZnJvbSAnLi4vZml4dHVyZS1ob29rLWNvbnRyb2xsZXInO1xuaW1wb3J0IFZpZGVvcyBmcm9tICcuLi8uLi92aWRlby1yZWNvcmRlci92aWRlb3MnO1xuaW1wb3J0IFRlc3RSdW4gZnJvbSAnLi4vLi4vdGVzdC1ydW4nO1xuaW1wb3J0IHsgUHJveHkgfSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgICBBY3Rpb25FdmVudEFyZyxcbiAgICBSZXBvcnRlZFRlc3RTdHJ1Y3R1cmVJdGVtLFxuICAgIFRhc2tJbml0LFxufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuaW1wb3J0IEJyb3dzZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL2Jyb3dzZXIvY29ubmVjdGlvbic7XG5pbXBvcnQgVGVzdCBmcm9tICcuLi8uLi9hcGkvc3RydWN0dXJlL3Rlc3QnO1xuaW1wb3J0IHsgVmlkZW9PcHRpb25zIH0gZnJvbSAnLi4vLi4vdmlkZW8tcmVjb3JkZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgVGFza1BoYXNlIGZyb20gJy4vcGhhc2UnO1xuaW1wb3J0IEZpeHR1cmUgZnJvbSAnLi4vLi4vYXBpL3N0cnVjdHVyZS9maXh0dXJlJztcbmltcG9ydCBNZXNzYWdlQnVzIGZyb20gJy4uLy4uL3V0aWxzL21lc3NhZ2UtYnVzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGFzayBleHRlbmRzIEFzeW5jRXZlbnRFbWl0dGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90aW1lU3RhbXA6IG1vbWVudC5Nb21lbnQ7XG4gICAgcHJpdmF0ZSBfcGhhc2U6IFRhc2tQaGFzZTtcbiAgICBwdWJsaWMgYnJvd3NlckNvbm5lY3Rpb25Hcm91cHM6IEJyb3dzZXJDb25uZWN0aW9uW11bXTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGVzdHM6IFRlc3RbXTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgb3B0czogRGljdGlvbmFyeTxPcHRpb25WYWx1ZT47XG4gICAgcHJpdmF0ZSByZWFkb25seSBfcHJveHk6IFByb3h5O1xuICAgIHB1YmxpYyByZWFkb25seSB3YXJuaW5nTG9nOiBXYXJuaW5nTG9nO1xuICAgIHB1YmxpYyByZWFkb25seSBzY3JlZW5zaG90czogU2NyZWVuc2hvdHM7XG4gICAgcHVibGljIHJlYWRvbmx5IGZpeHR1cmVIb29rQ29udHJvbGxlcjogRml4dHVyZUhvb2tDb250cm9sbGVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BlbmRpbmdCcm93c2VySm9iczogQnJvd3NlckpvYltdO1xuICAgIHB1YmxpYyByZWFkb25seSB0ZXN0U3RydWN0dXJlOiBSZXBvcnRlZFRlc3RTdHJ1Y3R1cmVJdGVtW107XG4gICAgcHVibGljIHJlYWRvbmx5IHZpZGVvcz86IFZpZGVvcztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlQnVzOiBNZXNzYWdlQnVzO1xuICAgIHB1YmxpYyBzdGFydFRpbWU/OiBEYXRlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yICh7XG4gICAgICAgIHRlc3RzLFxuICAgICAgICBicm93c2VyQ29ubmVjdGlvbkdyb3VwcyxcbiAgICAgICAgcHJveHksXG4gICAgICAgIG9wdHMsXG4gICAgICAgIHJ1bm5lcldhcm5pbmdMb2csXG4gICAgICAgIG1lc3NhZ2VCdXMsXG4gICAgfTogVGFza0luaXQpIHtcbiAgICAgICAgc3VwZXIoeyBjYXB0dXJlUmVqZWN0aW9uczogdHJ1ZSB9KTtcblxuICAgICAgICB0aGlzLl90aW1lU3RhbXAgICAgICAgICAgICAgID0gbW9tZW50KCk7XG4gICAgICAgIHRoaXMuX3BoYXNlICAgICAgICAgICAgICAgICAgPSBUYXNrUGhhc2UuaW5pdGlhbGl6ZWQ7XG4gICAgICAgIHRoaXMuYnJvd3NlckNvbm5lY3Rpb25Hcm91cHMgPSBicm93c2VyQ29ubmVjdGlvbkdyb3VwcztcbiAgICAgICAgdGhpcy50ZXN0cyAgICAgICAgICAgICAgICAgICA9IHRlc3RzO1xuICAgICAgICB0aGlzLm9wdHMgICAgICAgICAgICAgICAgICAgID0gb3B0cztcbiAgICAgICAgdGhpcy5fcHJveHkgICAgICAgICAgICAgICAgICA9IHByb3h5O1xuICAgICAgICB0aGlzLndhcm5pbmdMb2cgICAgICAgICAgICAgID0gbmV3IFdhcm5pbmdMb2cobnVsbCwgV2FybmluZ0xvZy5jcmVhdGVBZGRXYXJuaW5nQ2FsbGJhY2sobWVzc2FnZUJ1cykpO1xuICAgICAgICB0aGlzLl9tZXNzYWdlQnVzICAgICAgICAgICAgID0gbWVzc2FnZUJ1cztcblxuICAgICAgICB0aGlzLndhcm5pbmdMb2cuY29weUZyb20ocnVubmVyV2FybmluZ0xvZyk7XG5cbiAgICAgICAgY29uc3QgeyBwYXRoLCBwYXRoUGF0dGVybiwgZnVsbFBhZ2UsIHRodW1ibmFpbHMsIGF1dG9UYWtlT25GYWlscyB9ID0gdGhpcy5vcHRzLnNjcmVlbnNob3RzIGFzIFNjcmVlbnNob3RPcHRpb25WYWx1ZTtcblxuICAgICAgICB0aGlzLnNjcmVlbnNob3RzID0gbmV3IFNjcmVlbnNob3RzKHtcbiAgICAgICAgICAgIGVuYWJsZWQ6ICF0aGlzLm9wdHMuZGlzYWJsZVNjcmVlbnNob3RzLFxuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgIHBhdGhQYXR0ZXJuLFxuICAgICAgICAgICAgZnVsbFBhZ2UsXG4gICAgICAgICAgICB0aHVtYm5haWxzLFxuICAgICAgICAgICAgbWVzc2FnZUJ1cyxcbiAgICAgICAgICAgIGF1dG9UYWtlT25GYWlscyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5maXh0dXJlSG9va0NvbnRyb2xsZXIgPSBuZXcgRml4dHVyZUhvb2tDb250cm9sbGVyKHRlc3RzLCBicm93c2VyQ29ubmVjdGlvbkdyb3Vwcy5sZW5ndGgpO1xuICAgICAgICB0aGlzLl9wZW5kaW5nQnJvd3NlckpvYnMgICA9IHRoaXMuX2NyZWF0ZUJyb3dzZXJKb2JzKHByb3h5LCB0aGlzLm9wdHMpO1xuICAgICAgICB0aGlzLnRlc3RTdHJ1Y3R1cmUgICAgICAgICA9IHRoaXMuX3ByZXBhcmVUZXN0U3RydWN0dXJlKHRlc3RzKTtcblxuICAgICAgICBpZiAodGhpcy5vcHRzLnZpZGVvUGF0aCkge1xuICAgICAgICAgICAgY29uc3QgeyB2aWRlb1BhdGgsIHZpZGVvT3B0aW9ucywgdmlkZW9FbmNvZGluZ09wdGlvbnMgfSA9IHRoaXMub3B0cztcblxuICAgICAgICAgICAgdGhpcy52aWRlb3MgPSBuZXcgVmlkZW9zKHRoaXMuX3BlbmRpbmdCcm93c2VySm9icywgeyB2aWRlb1BhdGgsIHZpZGVvT3B0aW9ucywgdmlkZW9FbmNvZGluZ09wdGlvbnMgfSBhcyB1bmtub3duIGFzIFZpZGVvT3B0aW9ucywgdGhpcy53YXJuaW5nTG9nLCB0aGlzLl90aW1lU3RhbXApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXNzaWduQnJvd3NlckpvYkV2ZW50SGFuZGxlcnMgKGpvYjogQnJvd3NlckpvYik6IHZvaWQge1xuICAgICAgICBqb2Iub24oJ3Rlc3QtcnVuLWRvbmUnLCBhc3luYyAodGVzdFJ1bjogVGVzdFJ1bikgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fbWVzc2FnZUJ1cy5lbWl0KCd0ZXN0LXJ1bi1kb25lJywgdGVzdFJ1bik7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdHMuc3RvcE9uRmlyc3RGYWlsICYmIHRlc3RSdW4uZXJycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFib3J0KCk7XG5cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9tZXNzYWdlQnVzLmVtaXQoJ2RvbmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgam9iLm9uY2UoJ3N0YXJ0JywgYXN5bmMgKHN0YXJ0VGltZTogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3BoYXNlICE9PSBUYXNrUGhhc2Uuc3RhcnRlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3BoYXNlICAgID0gVGFza1BoYXNlLnN0YXJ0ZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFRpbWUgPSBzdGFydFRpbWU7XG5cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9tZXNzYWdlQnVzLmVtaXQoJ3N0YXJ0JywgdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGpvYi5vbmNlKCdkb25lJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCdicm93c2VyLWpvYi1kb25lJywgam9iKTtcblxuICAgICAgICAgICAgcmVtb3ZlKHRoaXMuX3BlbmRpbmdCcm93c2VySm9icywgam9iKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9wZW5kaW5nQnJvd3NlckpvYnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGhhc2UgPSBUYXNrUGhhc2UuZG9uZTtcblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX21lc3NhZ2VCdXMuZW1pdCgnZG9uZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBqb2Iub24oJ3Rlc3QtYWN0aW9uLWRvbmUnLCBhc3luYyAoYXJnczogQWN0aW9uRXZlbnRBcmcpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9waGFzZSA9PT0gVGFza1BoYXNlLmRvbmUpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9tZXNzYWdlQnVzLmVtaXQoJ3Rlc3QtYWN0aW9uLWRvbmUnLCBhcmdzKTtcbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICBwcml2YXRlIF9wcmVwYXJlVGVzdFN0cnVjdHVyZSAodGVzdHM6IFRlc3RbXSk6IFJlcG9ydGVkVGVzdFN0cnVjdHVyZUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGdyb3VwcyA9IGdyb3VwQnkodGVzdHMsICdmaXh0dXJlLmlkJyk7XG5cbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGdyb3VwcykubWFwKGZpeHR1cmVJZCA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXN0c0J5R3JvdXAgPSBncm91cHNbZml4dHVyZUlkXSBhcyBUZXN0W107XG4gICAgICAgICAgICBjb25zdCBmaXh0dXJlICAgICAgPSB0ZXN0c0J5R3JvdXBbMF0uZml4dHVyZSBhcyBGaXh0dXJlO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGZpeHR1cmU6IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICAgIGZpeHR1cmUuaWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICBmaXh0dXJlLm5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICB0ZXN0czogdGVzdHNCeUdyb3VwLm1hcCh0ZXN0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICAgdGVzdC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0ZXN0Lm5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXA6IHRlc3Quc2tpcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jcmVhdGVCcm93c2VySm9icyAocHJveHk6IFByb3h5LCBvcHRzOiBEaWN0aW9uYXJ5PE9wdGlvblZhbHVlPik6IEJyb3dzZXJKb2JbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJyb3dzZXJDb25uZWN0aW9uR3JvdXBzLm1hcChicm93c2VyQ29ubmVjdGlvbkdyb3VwID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGpvYiA9IG5ldyBCcm93c2VySm9iKHtcbiAgICAgICAgICAgICAgICB0ZXN0czogICAgICAgICAgICAgICAgIHRoaXMudGVzdHMsXG4gICAgICAgICAgICAgICAgYnJvd3NlckNvbm5lY3Rpb25zOiAgICBicm93c2VyQ29ubmVjdGlvbkdyb3VwLFxuICAgICAgICAgICAgICAgIHNjcmVlbnNob3RzOiAgICAgICAgICAgdGhpcy5zY3JlZW5zaG90cyxcbiAgICAgICAgICAgICAgICB3YXJuaW5nTG9nOiAgICAgICAgICAgIHRoaXMud2FybmluZ0xvZyxcbiAgICAgICAgICAgICAgICBmaXh0dXJlSG9va0NvbnRyb2xsZXI6IHRoaXMuZml4dHVyZUhvb2tDb250cm9sbGVyLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VCdXM6ICAgICAgICAgICAgdGhpcy5fbWVzc2FnZUJ1cyxcbiAgICAgICAgICAgICAgICBwcm94eSxcbiAgICAgICAgICAgICAgICBvcHRzLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX2Fzc2lnbkJyb3dzZXJKb2JFdmVudEhhbmRsZXJzKGpvYik7XG4gICAgICAgICAgICBicm93c2VyQ29ubmVjdGlvbkdyb3VwLm1hcChiYyA9PiBiYy5hZGRKb2Ioam9iKSk7XG5cbiAgICAgICAgICAgIHJldHVybiBqb2I7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFQSVxuICAgIHB1YmxpYyBhYm9ydCAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BlbmRpbmdCcm93c2VySm9icy5mb3JFYWNoKGpvYiA9PiBqb2IuYWJvcnQoKSk7XG4gICAgfVxufVxuIl19
@@ -39,7 +39,7 @@ const runtime_1 = require("../errors/runtime");
39
39
  const DISCONNECT_THRESHOLD = 3;
40
40
  const debugLogger = (0, debug_1.default)('testcafe:runner:test-run-controller');
41
41
  class TestRunController extends async_event_emitter_1.default {
42
- constructor({ test, index, proxy, screenshots, warningLog, fixtureHookController, opts, testRunHook, compilerService, messageBus, }) {
42
+ constructor({ test, index, proxy, screenshots, warningLog, fixtureHookController, opts, testRunHook, messageBus, }) {
43
43
  super();
44
44
  this.clientScriptRoutes = [];
45
45
  this.isNativeAutomation = false;
@@ -56,7 +56,6 @@ class TestRunController extends async_event_emitter_1.default {
56
56
  this.done = false;
57
57
  this._quarantine = this._opts.quarantineMode ? new quarantine_1.Quarantine() : null;
58
58
  this._disconnectionCount = 0;
59
- this.compilerService = compilerService;
60
59
  this._messageBus = messageBus;
61
60
  }
62
61
  static _getTestRunCtor(test, opts) {
@@ -72,7 +71,6 @@ class TestRunController extends async_event_emitter_1.default {
72
71
  browserConnection: connection,
73
72
  globalWarningLog: this._warningLog,
74
73
  opts: this._opts,
75
- compilerService: this.compilerService,
76
74
  messageBus: this._messageBus,
77
75
  nativeAutomation: this.isNativeAutomation,
78
76
  screenshotCapturer,
@@ -212,4 +210,4 @@ class TestRunController extends async_event_emitter_1.default {
212
210
  }
213
211
  exports.default = TestRunController;
214
212
  module.exports = exports.default;
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1ydW4tY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW5uZXIvdGVzdC1ydW4tY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUZBQTZEO0FBQzdELFlBQVk7QUFDWiw2REFBK0Q7QUFDL0QsMkRBQWtDO0FBQ2xDLHdGQUErRDtBQVUvRCxnRUFBNkQ7QUFHN0QsdUZBQXlFO0FBQ3pFLGtEQUEwQjtBQUMxQiwyQ0FBaUQ7QUFDakQsK0NBQWlEO0FBRWpELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBRS9CLE1BQU0sV0FBVyxHQUFHLElBQUEsZUFBSyxFQUFDLHFDQUFxQyxDQUFDLENBQUM7QUFFakUsTUFBcUIsaUJBQWtCLFNBQVEsNkJBQWlCO0lBbUI1RCxZQUFvQixFQUNoQixJQUFJLEVBQ0osS0FBSyxFQUNMLEtBQUssRUFDTCxXQUFXLEVBQ1gsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixJQUFJLEVBQ0osV0FBVyxFQUNYLGVBQWUsRUFDZixVQUFVLEdBQ1U7UUFDcEIsS0FBSyxFQUFFLENBQUM7UUFmSix1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUFDbEMsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBZ0IvQixJQUFJLENBQUMsSUFBSSxHQUFJLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUVsQixJQUFJLENBQUMsTUFBTSxHQUFtQixLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBYSxXQUFXLENBQUM7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBYyxVQUFVLENBQUM7UUFDekMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHFCQUFxQixDQUFDO1FBQ3BELElBQUksQ0FBQyxZQUFZLEdBQWEsV0FBVyxDQUFD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QUFJLENBQUM7U0FDZjtRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFL0MsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWhCLE9BQU8sNEJBQWlCLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakUsQ0FBQztDQUNKO0FBaFFELG9DQWdRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBc3luY0V2ZW50RW1pdHRlciBmcm9tICcuLi91dGlscy9hc3luYy1ldmVudC1lbWl0dGVyJztcbi8vQHRzLWlnbm9yZVxuaW1wb3J0IHsgVGVzdFJ1biBhcyBMZWdhY3lUZXN0UnVuIH0gZnJvbSAndGVzdGNhZmUtbGVnYWN5LWFwaSc7XG5pbXBvcnQgVGVzdFJ1biBmcm9tICcuLi90ZXN0LXJ1bic7XG5pbXBvcnQgU2Vzc2lvbkNvbnRyb2xsZXIgZnJvbSAnLi4vdGVzdC1ydW4vc2Vzc2lvbi1jb250cm9sbGVyJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuLi9icm93c2VyL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IHsgUHJveHkgfSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcbmltcG9ydCBUZXN0IGZyb20gJy4uL2FwaS9zdHJ1Y3R1cmUvdGVzdCc7XG5pbXBvcnQgU2NyZWVuc2hvdHMgZnJvbSAnLi4vc2NyZWVuc2hvdHMnO1xuaW1wb3J0IFdhcm5pbmdMb2cgZnJvbSAnLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLWxvZyc7XG5pbXBvcnQgRml4dHVyZUhvb2tDb250cm9sbGVyIGZyb20gJy4vZml4dHVyZS1ob29rLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBY3Rpb25FdmVudEFyZywgVGVzdFJ1bkNvbnRyb2xsZXJJbml0IH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCBDb21waWxlclNlcnZpY2UgZnJvbSAnLi4vc2VydmljZXMvY29tcGlsZXIvaG9zdCc7XG5pbXBvcnQgeyBRdWFyYW50aW5lIH0gZnJvbSAnLi4vdXRpbHMvZ2V0LW9wdGlvbnMvcXVhcmFudGluZSc7XG5pbXBvcnQgTWVzc2FnZUJ1cyBmcm9tICcuLi91dGlscy9tZXNzYWdlLWJ1cyc7XG5pbXBvcnQgVGVzdFJ1bkhvb2tDb250cm9sbGVyIGZyb20gJy4vdGVzdC1ydW4taG9vay1jb250cm9sbGVyJztcbmltcG9ydCAqIGFzIGNsaWVudFNjcmlwdHNSb3V0aW5nIGZyb20gJy4uL2N1c3RvbS1jbGllbnQtc2NyaXB0cy9yb3V0aW5nJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBSVU5USU1FX0VSUk9SUyB9IGZyb20gJy4uL2Vycm9ycy90eXBlcyc7XG5pbXBvcnQgeyBHZW5lcmFsRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvcnVudGltZSc7XG5cbmNvbnN0IERJU0NPTk5FQ1RfVEhSRVNIT0xEID0gMztcblxuY29uc3QgZGVidWdMb2dnZXIgPSBkZWJ1ZygndGVzdGNhZmU6cnVubmVyOnRlc3QtcnVuLWNvbnRyb2xsZXInKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVzdFJ1bkNvbnRyb2xsZXIgZXh0ZW5kcyBBc3luY0V2ZW50RW1pdHRlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfcXVhcmFudGluZTogbnVsbCB8IFF1YXJhbnRpbmU7XG4gICAgcHJpdmF0ZSBfZGlzY29ubmVjdGlvbkNvdW50OiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfcHJveHk6IFByb3h5O1xuICAgIHB1YmxpYyByZWFkb25seSBpbmRleDogbnVtYmVyO1xuICAgIHB1YmxpYyB0ZXN0OiBUZXN0O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29wdHM6IERpY3Rpb25hcnk8T3B0aW9uVmFsdWU+O1xuICAgIHByaXZhdGUgX3NjcmVlbnNob3RzOiBTY3JlZW5zaG90cztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF93YXJuaW5nTG9nOiBXYXJuaW5nTG9nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZpeHR1cmVIb29rQ29udHJvbGxlcjogRml4dHVyZUhvb2tDb250cm9sbGVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Rlc3RSdW5DdG9yOiBMZWdhY3lUZXN0UnVuWydjb25zdHJ1Y3RvciddIHwgVGVzdFJ1blsnY29uc3RydWN0b3InXTtcbiAgICBwdWJsaWMgdGVzdFJ1bjogbnVsbCB8IExlZ2FjeVRlc3RSdW4gfCBUZXN0UnVuO1xuICAgIHB1YmxpYyBkb25lOiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcGlsZXJTZXJ2aWNlPzogQ29tcGlsZXJTZXJ2aWNlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2VCdXM6IE1lc3NhZ2VCdXM7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGVzdFJ1bkhvb2s6IFRlc3RSdW5Ib29rQ29udHJvbGxlcjtcbiAgICBwcml2YXRlIGNsaWVudFNjcmlwdFJvdXRlczogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIGlzTmF0aXZlQXV0b21hdGlvbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yICh7XG4gICAgICAgIHRlc3QsXG4gICAgICAgIGluZGV4LFxuICAgICAgICBwcm94eSxcbiAgICAgICAgc2NyZWVuc2hvdHMsXG4gICAgICAgIHdhcm5pbmdMb2csXG4gICAgICAgIGZpeHR1cmVIb29rQ29udHJvbGxlcixcbiAgICAgICAgb3B0cyxcbiAgICAgICAgdGVzdFJ1bkhvb2ssXG4gICAgICAgIGNvbXBpbGVyU2VydmljZSxcbiAgICAgICAgbWVzc2FnZUJ1cyxcbiAgICB9OiBUZXN0UnVuQ29udHJvbGxlckluaXQpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLnRlc3QgID0gdGVzdDtcbiAgICAgICAgdGhpcy5pbmRleCA9IGluZGV4O1xuICAgICAgICB0aGlzLl9vcHRzID0gb3B0cztcblxuICAgICAgICB0aGlzLl9wcm94eSAgICAgICAgICAgICAgICAgPSBwcm94eTtcbiAgICAgICAgdGhpcy5fc2NyZWVuc2hvdHMgICAgICAgICAgID0gc2NyZWVuc2hvdHM7XG4gICAgICAgIHRoaXMuX3dhcm5pbmdMb2cgICAgICAgICAgICA9IHdhcm5pbmdMb2c7XG4gICAgICAgIHRoaXMuX2ZpeHR1cmVIb29rQ29udHJvbGxlciA9IGZpeHR1cmVIb29rQ29udHJvbGxlcjtcbiAgICAgICAgdGhpcy5fdGVzdFJ1bkhvb2sgICAgICAgICAgID0gdGVzdFJ1bkhvb2s7XG5cbiAgICAgICAgdGhpcy5fdGVzdFJ1bkN0b3IgPSBUZXN0UnVuQ29udHJvbGxlci5fZ2V0VGVzdFJ1bkN0b3IodGVzdCwgb3B0cyk7XG5cbiAgICAgICAgdGhpcy50ZXN0UnVuICAgICAgICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5kb25lICAgICAgICAgICAgICAgID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3F1YXJhbnRpbmUgICAgICAgICA9IHRoaXMuX29wdHMucXVhcmFudGluZU1vZGUgPyBuZXcgUXVhcmFudGluZSgpIDogbnVsbDtcbiAgICAgICAgdGhpcy5fZGlzY29ubmVjdGlvbkNvdW50ID0gMDtcbiAgICAgICAgdGhpcy5jb21waWxlclNlcnZpY2UgICAgID0gY29tcGlsZXJTZXJ2aWNlO1xuICAgICAgICB0aGlzLl9tZXNzYWdlQnVzICAgICAgICAgPSBtZXNzYWdlQnVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIF9nZXRUZXN0UnVuQ3RvciAodGVzdDogVGVzdCwgb3B0czogRGljdGlvbmFyeTxPcHRpb25WYWx1ZT4pOiBMZWdhY3lUZXN0UnVuIHwgVGVzdFJ1biB7XG4gICAgICAgIGlmIChvcHRzLlRlc3RSdW5DdG9yKVxuICAgICAgICAgICAgcmV0dXJuIG9wdHMuVGVzdFJ1bkN0b3I7XG5cbiAgICAgICAgcmV0dXJuICh0ZXN0IGFzIExlZ2FjeVRlc3RSdW4pLmlzTGVnYWN5ID8gTGVnYWN5VGVzdFJ1biA6IFRlc3RSdW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfY3JlYXRlVGVzdFJ1biAoY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24sIHN0YXJ0UnVuRXhlY3V0aW9uVGltZT86IERhdGUpOiBQcm9taXNlPFRlc3RSdW4gfCBMZWdhY3lUZXN0UnVuPiB7XG4gICAgICAgIGNvbnN0IHNjcmVlbnNob3RDYXB0dXJlciA9IHRoaXMuX3NjcmVlbnNob3RzLmNyZWF0ZUNhcHR1cmVyRm9yKHRoaXMudGVzdCwgdGhpcy5pbmRleCwgdGhpcy5fcXVhcmFudGluZSwgY29ubmVjdGlvbiwgdGhpcy5fd2FybmluZ0xvZyk7XG4gICAgICAgIGNvbnN0IFRlc3RSdW5DdG9yICAgICAgICA9IHRoaXMuX3Rlc3RSdW5DdG9yO1xuXG4gICAgICAgIHRoaXMudGVzdFJ1biA9IG5ldyBUZXN0UnVuQ3Rvcih7XG4gICAgICAgICAgICB0ZXN0OiAgICAgICAgICAgICAgdGhpcy50ZXN0LFxuICAgICAgICAgICAgYnJvd3NlckNvbm5lY3Rpb246IGNvbm5lY3Rpb24sXG4gICAgICAgICAgICBnbG9iYWxXYXJuaW5nTG9nOiAgdGhpcy5fd2FybmluZ0xvZyxcbiAgICAgICAgICAgIG9wdHM6ICAgICAgICAgICAgICB0aGlzLl9vcHRzLFxuICAgICAgICAgICAgY29tcGlsZXJTZXJ2aWNlOiAgIHRoaXMuY29tcGlsZXJTZXJ2aWNlLFxuICAgICAgICAgICAgbWVzc2FnZUJ1czogICAgICAgIHRoaXMuX21lc3NhZ2VCdXMsXG4gICAgICAgICAgICBuYXRpdmVBdXRvbWF0aW9uOiAgdGhpcy5pc05hdGl2ZUF1dG9tYXRpb24sXG4gICAgICAgICAgICBzY3JlZW5zaG90Q2FwdHVyZXIsXG4gICAgICAgICAgICBzdGFydFJ1bkV4ZWN1dGlvblRpbWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2xpZW50U2NyaXB0Um91dGVzID0gY2xpZW50U2NyaXB0c1JvdXRpbmcucmVnaXN0ZXIodGhpcy5fcHJveHksIHRoaXMudGVzdCwgdGhpcy5pc05hdGl2ZUF1dG9tYXRpb24pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMudGVzdFJ1bi5pbml0aWFsaXplKCk7XG5cbiAgICAgICAgdGhpcy5fc2NyZWVuc2hvdHMuYWRkVGVzdFJ1bih0aGlzLnRlc3QsIHRoaXMudGVzdFJ1bik7XG5cbiAgICAgICAgaWYgKHRoaXMudGVzdFJ1bi5hZGRRdWFyYW50aW5lSW5mbylcbiAgICAgICAgICAgIHRoaXMudGVzdFJ1bi5hZGRRdWFyYW50aW5lSW5mbyh0aGlzLl9xdWFyYW50aW5lKTtcblxuICAgICAgICBpZiAodGhpcy5fcXVhcmFudGluZSkge1xuICAgICAgICAgICAgY29uc3QgeyBzdWNjZXNzVGhyZXNob2xkLCBhdHRlbXB0TGltaXQgfSA9IHRoaXMuX29wdHMucXVhcmFudGluZU1vZGUgYXMgUXVhcmFudGluZU9wdGlvblZhbHVlO1xuXG4gICAgICAgICAgICB0aGlzLl9xdWFyYW50aW5lLnNldEN1c3RvbVBhcmFtZXRlcnMoYXR0ZW1wdExpbWl0LCBzdWNjZXNzVGhyZXNob2xkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fcXVhcmFudGluZSB8fCB0aGlzLl9pc0ZpcnN0UXVhcmFudGluZUF0dGVtcHQoKSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCd0ZXN0LXJ1bi1jcmVhdGUnLCB7XG4gICAgICAgICAgICAgICAgdGVzdFJ1bjogICAgdGhpcy50ZXN0UnVuLFxuICAgICAgICAgICAgICAgIGxlZ2FjeTogICAgIFRlc3RSdW5DdG9yID09PSBMZWdhY3lUZXN0UnVuLFxuICAgICAgICAgICAgICAgIHRlc3Q6ICAgICAgIHRoaXMudGVzdCxcbiAgICAgICAgICAgICAgICBpbmRleDogICAgICB0aGlzLmluZGV4LFxuICAgICAgICAgICAgICAgIHF1YXJhbnRpbmU6IHRoaXMuX3F1YXJhbnRpbmUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRlc3RSdW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZW5kUXVhcmFudGluZSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICgodGhpcy5fcXVhcmFudGluZSBhcyBRdWFyYW50aW5lKS5hdHRlbXB0cy5sZW5ndGggPiAxKVxuICAgICAgICAgICAgdGhpcy50ZXN0UnVuLnVuc3RhYmxlID0gKHRoaXMuX3F1YXJhbnRpbmUgYXMgUXVhcmFudGluZSkuZ2V0UGFzc2VkQXR0ZW1wdHMoKS5sZW5ndGggPiAwO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX2VtaXRUZXN0UnVuRG9uZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Nob3VsZEtlZXBJblF1YXJhbnRpbmUgKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBlcnJvcnMgICAgICAgICA9IHRoaXMudGVzdFJ1bi5lcnJzO1xuICAgICAgICBjb25zdCBoYXNFcnJvcnMgICAgICA9ICEhZXJyb3JzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgYXR0ZW1wdHMgICAgICAgPSAodGhpcy5fcXVhcmFudGluZSBhcyBRdWFyYW50aW5lKS5hdHRlbXB0cztcbiAgICAgICAgY29uc3QgaXNGaXJzdEF0dGVtcHQgPSB0aGlzLl9pc0ZpcnN0UXVhcmFudGluZUF0dGVtcHQoKTtcblxuICAgICAgICBhdHRlbXB0cy5wdXNoKHsgdGVzdFJ1bklkOiB0aGlzLnRlc3RSdW4uaWQsIGVycm9ycyB9KTtcblxuICAgICAgICByZXR1cm4gaXNGaXJzdEF0dGVtcHQgPyBoYXNFcnJvcnMgOiAhKHRoaXMuX3F1YXJhbnRpbmUgYXMgUXVhcmFudGluZSkuaXNUaHJlc2hvbGRSZWFjaGVkKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaXNGaXJzdFF1YXJhbnRpbmVBdHRlbXB0ICgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fcXVhcmFudGluZSAmJiAhdGhpcy5fcXVhcmFudGluZS5hdHRlbXB0cy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfa2VlcEluUXVhcmFudGluZSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuX3Jlc3RhcnRUZXN0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcmVzdGFydFRlc3QgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3Rlc3QtcnVuLXJlc3RhcnQnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF90ZXN0UnVuRG9uZUluUXVhcmFudGluZU1vZGUgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fc2hvdWxkS2VlcEluUXVhcmFudGluZSgpKVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fa2VlcEluUXVhcmFudGluZSgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9lbmRRdWFyYW50aW5lKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfdGVzdFJ1bkRvbmUgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fcXVhcmFudGluZSlcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3Rlc3RSdW5Eb25lSW5RdWFyYW50aW5lTW9kZSgpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9lbWl0VGVzdFJ1bkRvbmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9lbWl0QWN0aW9uU3RhcnQgKGFyZ3M6IEFjdGlvbkV2ZW50QXJnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuX21lc3NhZ2VCdXMuZW1pdCgndGVzdC1hY3Rpb24tc3RhcnQnLCBhcmdzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9lbWl0QWN0aW9uRG9uZSAoYXJnczogQWN0aW9uRXZlbnRBcmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCd0ZXN0LWFjdGlvbi1kb25lJywgYXJncyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZW1pdFRlc3RSdW5Eb25lICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gTk9URTogd2Ugc2hvdWxkIHJlcG9ydCB0ZXN0IHJ1biBjb21wbGV0aW9uIGluIG9yZGVyIHRoZXkgd2VyZSBjb21wbGV0ZWQgaW4gYnJvd3Nlci5cbiAgICAgICAgLy8gVG8ga2VlcCBhIHNlcXVlbmNlIGFmdGVyIGZpeHR1cmUgaG9vayBleGVjdXRpb24gd2UgdXNlIGNvbXBsZXRpb24gcXVldWUuXG4gICAgICAgIGF3YWl0IHRoaXMuX2ZpeHR1cmVIb29rQ29udHJvbGxlci5ydW5GaXh0dXJlQWZ0ZXJIb29rSWZOZWNlc3NhcnkodGhpcy50ZXN0UnVuKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fdGVzdFJ1bkhvb2sucnVuVGVzdFJ1bkFmdGVySG9va0lmTmVjZXNzYXJ5KHRoaXMudGVzdFJ1bik7XG5cbiAgICAgICAgY2xpZW50U2NyaXB0c1JvdXRpbmcudW5SZWdpc3Rlcih0aGlzLl9wcm94eSwgdGhpcy5jbGllbnRTY3JpcHRSb3V0ZXMpO1xuXG4gICAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCd0ZXN0LXJ1bi1kb25lJyk7XG5cbiAgICAgICAgZGVidWdMb2dnZXIoJ2RvbmUnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9lbWl0VGVzdFJ1blN0YXJ0ICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5fbWVzc2FnZUJ1cy5lbWl0KCd0ZXN0LXJ1bi1zdGFydCcsIHRoaXMudGVzdFJ1bik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfdGVzdFJ1bkJlZm9yZURvbmUgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgcmFpc2VFdmVudCA9ICF0aGlzLl9xdWFyYW50aW5lO1xuXG4gICAgICAgIGlmICghcmFpc2VFdmVudCkge1xuICAgICAgICAgICAgY29uc3QgaXNTdWNjZXNzZnVsUXVhcmFudGluZUZpcnN0QXR0ZW1wdCA9IHRoaXMuX2lzRmlyc3RRdWFyYW50aW5lQXR0ZW1wdCgpICYmICF0aGlzLnRlc3RSdW4uZXJycy5sZW5ndGg7XG4gICAgICAgICAgICBjb25zdCBpc0F0dGVtcHRzVGhyZXNob2xkUmVhY2hlZCAgICAgICAgID0gKHRoaXMuX3F1YXJhbnRpbmUgYXMgUXVhcmFudGluZSkuaXNUaHJlc2hvbGRSZWFjaGVkKHRoaXMudGVzdFJ1bi5lcnJzKTtcblxuICAgICAgICAgICAgcmFpc2VFdmVudCA9IGlzU3VjY2Vzc2Z1bFF1YXJhbnRpbmVGaXJzdEF0dGVtcHQgfHwgaXNBdHRlbXB0c1RocmVzaG9sZFJlYWNoZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmFpc2VFdmVudClcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW1pdCgndGVzdC1ydW4tYmVmb3JlLWRvbmUnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF90ZXN0UnVuRGlzY29ubmVjdGVkIChjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLl9kaXNjb25uZWN0aW9uQ291bnQrKztcblxuICAgICAgICBjb25zdCBkaXNjb25uZWN0aW9uVGhyZXNob2xkRXhjZWVkZWVkID0gdGhpcy5fZGlzY29ubmVjdGlvbkNvdW50ID49IERJU0NPTk5FQ1RfVEhSRVNIT0xEO1xuXG4gICAgICAgIHJldHVybiBjb25uZWN0aW9uXG4gICAgICAgICAgICAucHJvY2Vzc0Rpc2Nvbm5lY3Rpb24oZGlzY29ubmVjdGlvblRocmVzaG9sZEV4Y2VlZGVlZClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVzdGFydFRlc3QoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Fzc2lnblRlc3RSdW5FdmVudHMgKHRlc3RSdW46IFRlc3RSdW4gfCBMZWdhY3lUZXN0UnVuLCBjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICB0ZXN0UnVuLm9uKCdhY3Rpb24tc3RhcnQnLCBhc3luYyAoYXJnczogQWN0aW9uRXZlbnRBcmcpID0+IHRoaXMuX2VtaXRBY3Rpb25TdGFydChPYmplY3QuYXNzaWduKGFyZ3MsIHsgdGVzdFJ1biB9KSkpO1xuICAgICAgICB0ZXN0UnVuLm9uKCdhY3Rpb24tZG9uZScsIGFzeW5jIChhcmdzOiBBY3Rpb25FdmVudEFyZykgPT4gdGhpcy5fZW1pdEFjdGlvbkRvbmUoT2JqZWN0LmFzc2lnbihhcmdzLCB7IHRlc3RSdW4gfSkpKTtcblxuICAgICAgICB0ZXN0UnVuLm9uY2UoJ3N0YXJ0JywgYXN5bmMgKCkgPT4gdGhpcy5fZW1pdFRlc3RSdW5TdGFydCgpKTtcbiAgICAgICAgdGVzdFJ1bi5vbmNlKCdyZWFkeScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fcXVhcmFudGluZSB8fCB0aGlzLl9pc0ZpcnN0UXVhcmFudGluZUF0dGVtcHQoKSlcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3Rlc3QtcnVuLXJlYWR5Jyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0ZXN0UnVuLm9uY2UoJ2JlZm9yZS1kb25lJywgKCkgPT4gdGhpcy5fdGVzdFJ1bkJlZm9yZURvbmUoKSk7XG4gICAgICAgIHRlc3RSdW4ub25jZSgnZG9uZScsICgpID0+IHRoaXMuX3Rlc3RSdW5Eb25lKCkpO1xuICAgICAgICB0ZXN0UnVuLm9uY2UoJ2Rpc2Nvbm5lY3RlZCcsICgpID0+IHRoaXMuX3Rlc3RSdW5EaXNjb25uZWN0ZWQoY29ubmVjdGlvbikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYmxvY2tlZCAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maXh0dXJlSG9va0NvbnRyb2xsZXIuaXNUZXN0QmxvY2tlZCh0aGlzLnRlc3QpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2hhbmRsZU5hdGl2ZUF1dG9tYXRpb25Nb2RlIChjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmlzTmF0aXZlQXV0b21hdGlvbiA9ICEhdGhpcy5fb3B0cy5uYXRpdmVBdXRvbWF0aW9uO1xuXG4gICAgICAgIGNvbnN0IHN1cHBvcnROYXRpdmVBdXRvbWF0aW9uID0gY29ubmVjdGlvbi5zdXBwb3J0TmF0aXZlQXV0b21hdGlvbigpO1xuXG4gICAgICAgIGlmICghdGhpcy5pc05hdGl2ZUF1dG9tYXRpb24gfHwgc3VwcG9ydE5hdGl2ZUF1dG9tYXRpb24pXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fbWVzc2FnZUJ1cy5lbWl0KCdiZWZvcmUtdGVzdC1ydW4tY3JlYXRlZC1lcnJvcicpO1xuXG4gICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMuc2V0TmF0aXZlQXV0b21hdGlvbkZvclVuc3VwcG9ydGVkQnJvd3NlcnMsIGNvbm5lY3Rpb24uYnJvd3NlckluZm8ucHJvdmlkZXJOYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc3RhcnQgKGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uLCBzdGFydFJ1bkV4ZWN1dGlvblRpbWU/OiBEYXRlKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgIGRlYnVnTG9nZ2VyKCdzdGFydCcpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX2hhbmRsZU5hdGl2ZUF1dG9tYXRpb25Nb2RlKGNvbm5lY3Rpb24pO1xuXG4gICAgICAgIGNvbnN0IHRlc3RSdW4gPSBhd2FpdCB0aGlzLl9jcmVhdGVUZXN0UnVuKGNvbm5lY3Rpb24sIHN0YXJ0UnVuRXhlY3V0aW9uVGltZSk7XG5cbiAgICAgICAgY29uc3QgaG9va09rID0gYXdhaXQgdGhpcy5fdGVzdFJ1bkhvb2sucnVuVGVzdFJ1bkJlZm9yZUhvb2tJZk5lY2Vzc2FyeSh0ZXN0UnVuKVxuICAgICAgICAgICAgICAgICAgICAgICAmJiBhd2FpdCB0aGlzLl9maXh0dXJlSG9va0NvbnRyb2xsZXIucnVuRml4dHVyZUJlZm9yZUhvb2tJZk5lY2Vzc2FyeSh0ZXN0UnVuKTtcblxuICAgICAgICBpZiAodGhpcy50ZXN0LnNraXAgfHwgIWhvb2tPaykge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZW1pdFRlc3RSdW5TdGFydCgpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCd0ZXN0LXJ1bi1iZWZvcmUtZG9uZScpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZW1pdFRlc3RSdW5Eb25lKCk7XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYXNzaWduVGVzdFJ1bkV2ZW50cyh0ZXN0UnVuLCBjb25uZWN0aW9uKTtcblxuICAgICAgICB0ZXN0UnVuLnN0YXJ0KCk7XG5cbiAgICAgICAgcmV0dXJuIFNlc3Npb25Db250cm9sbGVyLmdldFNlc3Npb25VcmwodGVzdFJ1biwgdGhpcy5fcHJveHkpO1xuICAgIH1cbn1cbiJdfQ==
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1ydW4tY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW5uZXIvdGVzdC1ydW4tY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUZBQTZEO0FBQzdELFlBQVk7QUFDWiw2REFBK0Q7QUFDL0QsMkRBQWtDO0FBQ2xDLHdGQUErRDtBQVMvRCxnRUFBNkQ7QUFHN0QsdUZBQXlFO0FBQ3pFLGtEQUEwQjtBQUMxQiwyQ0FBaUQ7QUFDakQsK0NBQWlEO0FBRWpELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBRS9CLE1BQU0sV0FBVyxHQUFHLElBQUEsZUFBSyxFQUFDLHFDQUFxQyxDQUFDLENBQUM7QUFFakUsTUFBcUIsaUJBQWtCLFNBQVEsNkJBQWlCO0lBa0I1RCxZQUFvQixFQUNoQixJQUFJLEVBQ0osS0FBSyxFQUNMLEtBQUssRUFDTCxXQUFXLEVBQ1gsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixJQUFJLEVBQ0osV0FBVyxFQUNYLFVBQVUsR0FDVTtRQUNwQixLQUFLLEVBQUUsQ0FBQztRQWRKLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQUNsQyx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFlL0IsSUFBSSxDQUFDLElBQUksR0FBSSxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFFbEIsSUFBSSxDQUFDLE1BQU0sR0FBbUIsS0FBSyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQWEsV0FBVyxDQUFDO1FBQzFDLElBQUksQ0FBQyxXQUFXLEdBQWMsVUFBVSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxxQkFBcUIsQ0FBQztRQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFhLFdBQVcsQ0FBQztRQUUxQyxJQUFJ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QUFDLEtBQUssRUFBRSxDQUFDO1FBRWhCLE9BQU8sNEJBQWlCLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakUsQ0FBQztDQUNKO0FBNVBELG9DQTRQQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBc3luY0V2ZW50RW1pdHRlciBmcm9tICcuLi91dGlscy9hc3luYy1ldmVudC1lbWl0dGVyJztcbi8vQHRzLWlnbm9yZVxuaW1wb3J0IHsgVGVzdFJ1biBhcyBMZWdhY3lUZXN0UnVuIH0gZnJvbSAndGVzdGNhZmUtbGVnYWN5LWFwaSc7XG5pbXBvcnQgVGVzdFJ1biBmcm9tICcuLi90ZXN0LXJ1bic7XG5pbXBvcnQgU2Vzc2lvbkNvbnRyb2xsZXIgZnJvbSAnLi4vdGVzdC1ydW4vc2Vzc2lvbi1jb250cm9sbGVyJztcbmltcG9ydCBCcm93c2VyQ29ubmVjdGlvbiBmcm9tICcuLi9icm93c2VyL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IHsgUHJveHkgfSBmcm9tICd0ZXN0Y2FmZS1oYW1tZXJoZWFkJztcbmltcG9ydCBUZXN0IGZyb20gJy4uL2FwaS9zdHJ1Y3R1cmUvdGVzdCc7XG5pbXBvcnQgU2NyZWVuc2hvdHMgZnJvbSAnLi4vc2NyZWVuc2hvdHMnO1xuaW1wb3J0IFdhcm5pbmdMb2cgZnJvbSAnLi4vbm90aWZpY2F0aW9ucy93YXJuaW5nLWxvZyc7XG5pbXBvcnQgRml4dHVyZUhvb2tDb250cm9sbGVyIGZyb20gJy4vZml4dHVyZS1ob29rLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJy4uL2NvbmZpZ3VyYXRpb24vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBY3Rpb25FdmVudEFyZywgVGVzdFJ1bkNvbnRyb2xsZXJJbml0IH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFF1YXJhbnRpbmUgfSBmcm9tICcuLi91dGlscy9nZXQtb3B0aW9ucy9xdWFyYW50aW5lJztcbmltcG9ydCBNZXNzYWdlQnVzIGZyb20gJy4uL3V0aWxzL21lc3NhZ2UtYnVzJztcbmltcG9ydCBUZXN0UnVuSG9va0NvbnRyb2xsZXIgZnJvbSAnLi90ZXN0LXJ1bi1ob29rLWNvbnRyb2xsZXInO1xuaW1wb3J0ICogYXMgY2xpZW50U2NyaXB0c1JvdXRpbmcgZnJvbSAnLi4vY3VzdG9tLWNsaWVudC1zY3JpcHRzL3JvdXRpbmcnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCB7IEdlbmVyYWxFcnJvciB9IGZyb20gJy4uL2Vycm9ycy9ydW50aW1lJztcblxuY29uc3QgRElTQ09OTkVDVF9USFJFU0hPTEQgPSAzO1xuXG5jb25zdCBkZWJ1Z0xvZ2dlciA9IGRlYnVnKCd0ZXN0Y2FmZTpydW5uZXI6dGVzdC1ydW4tY29udHJvbGxlcicpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXN0UnVuQ29udHJvbGxlciBleHRlbmRzIEFzeW5jRXZlbnRFbWl0dGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9xdWFyYW50aW5lOiBudWxsIHwgUXVhcmFudGluZTtcbiAgICBwcml2YXRlIF9kaXNjb25uZWN0aW9uQ291bnQ6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcm94eTogUHJveHk7XG4gICAgcHVibGljIHJlYWRvbmx5IGluZGV4OiBudW1iZXI7XG4gICAgcHVibGljIHRlc3Q6IFRlc3Q7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfb3B0czogRGljdGlvbmFyeTxPcHRpb25WYWx1ZT47XG4gICAgcHJpdmF0ZSBfc2NyZWVuc2hvdHM6IFNjcmVlbnNob3RzO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3dhcm5pbmdMb2c6IFdhcm5pbmdMb2c7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZml4dHVyZUhvb2tDb250cm9sbGVyOiBGaXh0dXJlSG9va0NvbnRyb2xsZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGVzdFJ1bkN0b3I6IExlZ2FjeVRlc3RSdW5bJ2NvbnN0cnVjdG9yJ10gfCBUZXN0UnVuWydjb25zdHJ1Y3RvciddO1xuICAgIHB1YmxpYyB0ZXN0UnVuOiBudWxsIHwgTGVnYWN5VGVzdFJ1biB8IFRlc3RSdW47XG4gICAgcHVibGljIGRvbmU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZUJ1czogTWVzc2FnZUJ1cztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90ZXN0UnVuSG9vazogVGVzdFJ1bkhvb2tDb250cm9sbGVyO1xuICAgIHByaXZhdGUgY2xpZW50U2NyaXB0Um91dGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHByaXZhdGUgaXNOYXRpdmVBdXRvbWF0aW9uID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IgKHtcbiAgICAgICAgdGVzdCxcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIHByb3h5LFxuICAgICAgICBzY3JlZW5zaG90cyxcbiAgICAgICAgd2FybmluZ0xvZyxcbiAgICAgICAgZml4dHVyZUhvb2tDb250cm9sbGVyLFxuICAgICAgICBvcHRzLFxuICAgICAgICB0ZXN0UnVuSG9vayxcbiAgICAgICAgbWVzc2FnZUJ1cyxcbiAgICB9OiBUZXN0UnVuQ29udHJvbGxlckluaXQpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLnRlc3QgID0gdGVzdDtcbiAgICAgICAgdGhpcy5pbmRleCA9IGluZGV4O1xuICAgICAgICB0aGlzLl9vcHRzID0gb3B0cztcblxuICAgICAgICB0aGlzLl9wcm94eSAgICAgICAgICAgICAgICAgPSBwcm94eTtcbiAgICAgICAgdGhpcy5fc2NyZWVuc2hvdHMgICAgICAgICAgID0gc2NyZWVuc2hvdHM7XG4gICAgICAgIHRoaXMuX3dhcm5pbmdMb2cgICAgICAgICAgICA9IHdhcm5pbmdMb2c7XG4gICAgICAgIHRoaXMuX2ZpeHR1cmVIb29rQ29udHJvbGxlciA9IGZpeHR1cmVIb29rQ29udHJvbGxlcjtcbiAgICAgICAgdGhpcy5fdGVzdFJ1bkhvb2sgICAgICAgICAgID0gdGVzdFJ1bkhvb2s7XG5cbiAgICAgICAgdGhpcy5fdGVzdFJ1bkN0b3IgPSBUZXN0UnVuQ29udHJvbGxlci5fZ2V0VGVzdFJ1bkN0b3IodGVzdCwgb3B0cyk7XG5cbiAgICAgICAgdGhpcy50ZXN0UnVuICAgICAgICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5kb25lICAgICAgICAgICAgICAgID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3F1YXJhbnRpbmUgICAgICAgICA9IHRoaXMuX29wdHMucXVhcmFudGluZU1vZGUgPyBuZXcgUXVhcmFudGluZSgpIDogbnVsbDtcbiAgICAgICAgdGhpcy5fZGlzY29ubmVjdGlvbkNvdW50ID0gMDtcbiAgICAgICAgdGhpcy5fbWVzc2FnZUJ1cyAgICAgICAgID0gbWVzc2FnZUJ1cztcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfZ2V0VGVzdFJ1bkN0b3IgKHRlc3Q6IFRlc3QsIG9wdHM6IERpY3Rpb25hcnk8T3B0aW9uVmFsdWU+KTogTGVnYWN5VGVzdFJ1biB8IFRlc3RSdW4ge1xuICAgICAgICBpZiAob3B0cy5UZXN0UnVuQ3RvcilcbiAgICAgICAgICAgIHJldHVybiBvcHRzLlRlc3RSdW5DdG9yO1xuXG4gICAgICAgIHJldHVybiAodGVzdCBhcyBMZWdhY3lUZXN0UnVuKS5pc0xlZ2FjeSA/IExlZ2FjeVRlc3RSdW4gOiBUZXN0UnVuO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2NyZWF0ZVRlc3RSdW4gKGNvbm5lY3Rpb246IEJyb3dzZXJDb25uZWN0aW9uLCBzdGFydFJ1bkV4ZWN1dGlvblRpbWU/OiBEYXRlKTogUHJvbWlzZTxUZXN0UnVuIHwgTGVnYWN5VGVzdFJ1bj4ge1xuICAgICAgICBjb25zdCBzY3JlZW5zaG90Q2FwdHVyZXIgPSB0aGlzLl9zY3JlZW5zaG90cy5jcmVhdGVDYXB0dXJlckZvcih0aGlzLnRlc3QsIHRoaXMuaW5kZXgsIHRoaXMuX3F1YXJhbnRpbmUsIGNvbm5lY3Rpb24sIHRoaXMuX3dhcm5pbmdMb2cpO1xuICAgICAgICBjb25zdCBUZXN0UnVuQ3RvciAgICAgICAgPSB0aGlzLl90ZXN0UnVuQ3RvcjtcblxuICAgICAgICB0aGlzLnRlc3RSdW4gPSBuZXcgVGVzdFJ1bkN0b3Ioe1xuICAgICAgICAgICAgdGVzdDogICAgICAgICAgICAgIHRoaXMudGVzdCxcbiAgICAgICAgICAgIGJyb3dzZXJDb25uZWN0aW9uOiBjb25uZWN0aW9uLFxuICAgICAgICAgICAgZ2xvYmFsV2FybmluZ0xvZzogIHRoaXMuX3dhcm5pbmdMb2csXG4gICAgICAgICAgICBvcHRzOiAgICAgICAgICAgICAgdGhpcy5fb3B0cyxcbiAgICAgICAgICAgIG1lc3NhZ2VCdXM6ICAgICAgICB0aGlzLl9tZXNzYWdlQnVzLFxuICAgICAgICAgICAgbmF0aXZlQXV0b21hdGlvbjogIHRoaXMuaXNOYXRpdmVBdXRvbWF0aW9uLFxuICAgICAgICAgICAgc2NyZWVuc2hvdENhcHR1cmVyLFxuICAgICAgICAgICAgc3RhcnRSdW5FeGVjdXRpb25UaW1lLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNsaWVudFNjcmlwdFJvdXRlcyA9IGNsaWVudFNjcmlwdHNSb3V0aW5nLnJlZ2lzdGVyKHRoaXMuX3Byb3h5LCB0aGlzLnRlc3QsIHRoaXMuaXNOYXRpdmVBdXRvbWF0aW9uKTtcblxuICAgICAgICBhd2FpdCB0aGlzLnRlc3RSdW4uaW5pdGlhbGl6ZSgpO1xuXG4gICAgICAgIHRoaXMuX3NjcmVlbnNob3RzLmFkZFRlc3RSdW4odGhpcy50ZXN0LCB0aGlzLnRlc3RSdW4pO1xuXG4gICAgICAgIGlmICh0aGlzLnRlc3RSdW4uYWRkUXVhcmFudGluZUluZm8pXG4gICAgICAgICAgICB0aGlzLnRlc3RSdW4uYWRkUXVhcmFudGluZUluZm8odGhpcy5fcXVhcmFudGluZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3F1YXJhbnRpbmUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgc3VjY2Vzc1RocmVzaG9sZCwgYXR0ZW1wdExpbWl0IH0gPSB0aGlzLl9vcHRzLnF1YXJhbnRpbmVNb2RlIGFzIFF1YXJhbnRpbmVPcHRpb25WYWx1ZTtcblxuICAgICAgICAgICAgdGhpcy5fcXVhcmFudGluZS5zZXRDdXN0b21QYXJhbWV0ZXJzKGF0dGVtcHRMaW1pdCwgc3VjY2Vzc1RocmVzaG9sZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX3F1YXJhbnRpbmUgfHwgdGhpcy5faXNGaXJzdFF1YXJhbnRpbmVBdHRlbXB0KCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW1pdCgndGVzdC1ydW4tY3JlYXRlJywge1xuICAgICAgICAgICAgICAgIHRlc3RSdW46ICAgIHRoaXMudGVzdFJ1bixcbiAgICAgICAgICAgICAgICBsZWdhY3k6ICAgICBUZXN0UnVuQ3RvciA9PT0gTGVnYWN5VGVzdFJ1bixcbiAgICAgICAgICAgICAgICB0ZXN0OiAgICAgICB0aGlzLnRlc3QsXG4gICAgICAgICAgICAgICAgaW5kZXg6ICAgICAgdGhpcy5pbmRleCxcbiAgICAgICAgICAgICAgICBxdWFyYW50aW5lOiB0aGlzLl9xdWFyYW50aW5lLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy50ZXN0UnVuO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2VuZFF1YXJhbnRpbmUgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoKHRoaXMuX3F1YXJhbnRpbmUgYXMgUXVhcmFudGluZSkuYXR0ZW1wdHMubGVuZ3RoID4gMSlcbiAgICAgICAgICAgIHRoaXMudGVzdFJ1bi51bnN0YWJsZSA9ICh0aGlzLl9xdWFyYW50aW5lIGFzIFF1YXJhbnRpbmUpLmdldFBhc3NlZEF0dGVtcHRzKCkubGVuZ3RoID4gMDtcblxuICAgICAgICBhd2FpdCB0aGlzLl9lbWl0VGVzdFJ1bkRvbmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zaG91bGRLZWVwSW5RdWFyYW50aW5lICgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZXJyb3JzICAgICAgICAgPSB0aGlzLnRlc3RSdW4uZXJycztcbiAgICAgICAgY29uc3QgaGFzRXJyb3JzICAgICAgPSAhIWVycm9ycy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGF0dGVtcHRzICAgICAgID0gKHRoaXMuX3F1YXJhbnRpbmUgYXMgUXVhcmFudGluZSkuYXR0ZW1wdHM7XG4gICAgICAgIGNvbnN0IGlzRmlyc3RBdHRlbXB0ID0gdGhpcy5faXNGaXJzdFF1YXJhbnRpbmVBdHRlbXB0KCk7XG5cbiAgICAgICAgYXR0ZW1wdHMucHVzaCh7IHRlc3RSdW5JZDogdGhpcy50ZXN0UnVuLmlkLCBlcnJvcnMgfSk7XG5cbiAgICAgICAgcmV0dXJuIGlzRmlyc3RBdHRlbXB0ID8gaGFzRXJyb3JzIDogISh0aGlzLl9xdWFyYW50aW5lIGFzIFF1YXJhbnRpbmUpLmlzVGhyZXNob2xkUmVhY2hlZCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lzRmlyc3RRdWFyYW50aW5lQXR0ZW1wdCAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX3F1YXJhbnRpbmUgJiYgIXRoaXMuX3F1YXJhbnRpbmUuYXR0ZW1wdHMubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2tlZXBJblF1YXJhbnRpbmUgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLl9yZXN0YXJ0VGVzdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3Jlc3RhcnRUZXN0ICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCd0ZXN0LXJ1bi1yZXN0YXJ0Jyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfdGVzdFJ1bkRvbmVJblF1YXJhbnRpbmVNb2RlICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZEtlZXBJblF1YXJhbnRpbmUoKSlcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2tlZXBJblF1YXJhbnRpbmUoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZW5kUXVhcmFudGluZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3Rlc3RSdW5Eb25lICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuX3F1YXJhbnRpbmUpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl90ZXN0UnVuRG9uZUluUXVhcmFudGluZU1vZGUoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZW1pdFRlc3RSdW5Eb25lKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZW1pdEFjdGlvblN0YXJ0IChhcmdzOiBBY3Rpb25FdmVudEFyZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLl9tZXNzYWdlQnVzLmVtaXQoJ3Rlc3QtYWN0aW9uLXN0YXJ0JywgYXJncyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZW1pdEFjdGlvbkRvbmUgKGFyZ3M6IEFjdGlvbkV2ZW50QXJnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdCgndGVzdC1hY3Rpb24tZG9uZScsIGFyZ3MpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2VtaXRUZXN0UnVuRG9uZSAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIC8vIE5PVEU6IHdlIHNob3VsZCByZXBvcnQgdGVzdCBydW4gY29tcGxldGlvbiBpbiBvcmRlciB0aGV5IHdlcmUgY29tcGxldGVkIGluIGJyb3dzZXIuXG4gICAgICAgIC8vIFRvIGtlZXAgYSBzZXF1ZW5jZSBhZnRlciBmaXh0dXJlIGhvb2sgZXhlY3V0aW9uIHdlIHVzZSBjb21wbGV0aW9uIHF1ZXVlLlxuICAgICAgICBhd2FpdCB0aGlzLl9maXh0dXJlSG9va0NvbnRyb2xsZXIucnVuRml4dHVyZUFmdGVySG9va0lmTmVjZXNzYXJ5KHRoaXMudGVzdFJ1bik7XG4gICAgICAgIGF3YWl0IHRoaXMuX3Rlc3RSdW5Ib29rLnJ1blRlc3RSdW5BZnRlckhvb2tJZk5lY2Vzc2FyeSh0aGlzLnRlc3RSdW4pO1xuXG4gICAgICAgIGNsaWVudFNjcmlwdHNSb3V0aW5nLnVuUmVnaXN0ZXIodGhpcy5fcHJveHksIHRoaXMuY2xpZW50U2NyaXB0Um91dGVzKTtcblxuICAgICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdCgndGVzdC1ydW4tZG9uZScpO1xuXG4gICAgICAgIGRlYnVnTG9nZ2VyKCdkb25lJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfZW1pdFRlc3RSdW5TdGFydCAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuX21lc3NhZ2VCdXMuZW1pdCgndGVzdC1ydW4tc3RhcnQnLCB0aGlzLnRlc3RSdW4pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3Rlc3RSdW5CZWZvcmVEb25lICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IHJhaXNlRXZlbnQgPSAhdGhpcy5fcXVhcmFudGluZTtcblxuICAgICAgICBpZiAoIXJhaXNlRXZlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzU3VjY2Vzc2Z1bFF1YXJhbnRpbmVGaXJzdEF0dGVtcHQgPSB0aGlzLl9pc0ZpcnN0UXVhcmFudGluZUF0dGVtcHQoKSAmJiAhdGhpcy50ZXN0UnVuLmVycnMubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgaXNBdHRlbXB0c1RocmVzaG9sZFJlYWNoZWQgICAgICAgICA9ICh0aGlzLl9xdWFyYW50aW5lIGFzIFF1YXJhbnRpbmUpLmlzVGhyZXNob2xkUmVhY2hlZCh0aGlzLnRlc3RSdW4uZXJycyk7XG5cbiAgICAgICAgICAgIHJhaXNlRXZlbnQgPSBpc1N1Y2Nlc3NmdWxRdWFyYW50aW5lRmlyc3RBdHRlbXB0IHx8IGlzQXR0ZW1wdHNUaHJlc2hvbGRSZWFjaGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJhaXNlRXZlbnQpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmVtaXQoJ3Rlc3QtcnVuLWJlZm9yZS1kb25lJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdGVzdFJ1bkRpc2Nvbm5lY3RlZCAoY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5fZGlzY29ubmVjdGlvbkNvdW50Kys7XG5cbiAgICAgICAgY29uc3QgZGlzY29ubmVjdGlvblRocmVzaG9sZEV4Y2VlZGVlZCA9IHRoaXMuX2Rpc2Nvbm5lY3Rpb25Db3VudCA+PSBESVNDT05ORUNUX1RIUkVTSE9MRDtcblxuICAgICAgICByZXR1cm4gY29ubmVjdGlvblxuICAgICAgICAgICAgLnByb2Nlc3NEaXNjb25uZWN0aW9uKGRpc2Nvbm5lY3Rpb25UaHJlc2hvbGRFeGNlZWRlZWQpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3RhcnRUZXN0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hc3NpZ25UZXN0UnVuRXZlbnRzICh0ZXN0UnVuOiBUZXN0UnVuIHwgTGVnYWN5VGVzdFJ1biwgY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGVzdFJ1bi5vbignYWN0aW9uLXN0YXJ0JywgYXN5bmMgKGFyZ3M6IEFjdGlvbkV2ZW50QXJnKSA9PiB0aGlzLl9lbWl0QWN0aW9uU3RhcnQoT2JqZWN0LmFzc2lnbihhcmdzLCB7IHRlc3RSdW4gfSkpKTtcbiAgICAgICAgdGVzdFJ1bi5vbignYWN0aW9uLWRvbmUnLCBhc3luYyAoYXJnczogQWN0aW9uRXZlbnRBcmcpID0+IHRoaXMuX2VtaXRBY3Rpb25Eb25lKE9iamVjdC5hc3NpZ24oYXJncywgeyB0ZXN0UnVuIH0pKSk7XG5cbiAgICAgICAgdGVzdFJ1bi5vbmNlKCdzdGFydCcsIGFzeW5jICgpID0+IHRoaXMuX2VtaXRUZXN0UnVuU3RhcnQoKSk7XG4gICAgICAgIHRlc3RSdW4ub25jZSgncmVhZHknLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3F1YXJhbnRpbmUgfHwgdGhpcy5faXNGaXJzdFF1YXJhbnRpbmVBdHRlbXB0KCkpXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5lbWl0KCd0ZXN0LXJ1bi1yZWFkeScpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGVzdFJ1bi5vbmNlKCdiZWZvcmUtZG9uZScsICgpID0+IHRoaXMuX3Rlc3RSdW5CZWZvcmVEb25lKCkpO1xuICAgICAgICB0ZXN0UnVuLm9uY2UoJ2RvbmUnLCAoKSA9PiB0aGlzLl90ZXN0UnVuRG9uZSgpKTtcbiAgICAgICAgdGVzdFJ1bi5vbmNlKCdkaXNjb25uZWN0ZWQnLCAoKSA9PiB0aGlzLl90ZXN0UnVuRGlzY29ubmVjdGVkKGNvbm5lY3Rpb24pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJsb2NrZWQgKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZml4dHVyZUhvb2tDb250cm9sbGVyLmlzVGVzdEJsb2NrZWQodGhpcy50ZXN0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9oYW5kbGVOYXRpdmVBdXRvbWF0aW9uTW9kZSAoY29ubmVjdGlvbjogQnJvd3NlckNvbm5lY3Rpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5pc05hdGl2ZUF1dG9tYXRpb24gPSAhIXRoaXMuX29wdHMubmF0aXZlQXV0b21hdGlvbjtcblxuICAgICAgICBjb25zdCBzdXBwb3J0TmF0aXZlQXV0b21hdGlvbiA9IGNvbm5lY3Rpb24uc3VwcG9ydE5hdGl2ZUF1dG9tYXRpb24oKTtcblxuICAgICAgICBpZiAoIXRoaXMuaXNOYXRpdmVBdXRvbWF0aW9uIHx8IHN1cHBvcnROYXRpdmVBdXRvbWF0aW9uKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX21lc3NhZ2VCdXMuZW1pdCgnYmVmb3JlLXRlc3QtcnVuLWNyZWF0ZWQtZXJyb3InKTtcblxuICAgICAgICB0aHJvdyBuZXcgR2VuZXJhbEVycm9yKFJVTlRJTUVfRVJST1JTLnNldE5hdGl2ZUF1dG9tYXRpb25Gb3JVbnN1cHBvcnRlZEJyb3dzZXJzLCBjb25uZWN0aW9uLmJyb3dzZXJJbmZvLnByb3ZpZGVyTmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHN0YXJ0IChjb25uZWN0aW9uOiBCcm93c2VyQ29ubmVjdGlvbiwgc3RhcnRSdW5FeGVjdXRpb25UaW1lPzogRGF0ZSk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICBkZWJ1Z0xvZ2dlcignc3RhcnQnKTtcblxuICAgICAgICBhd2FpdCB0aGlzLl9oYW5kbGVOYXRpdmVBdXRvbWF0aW9uTW9kZShjb25uZWN0aW9uKTtcblxuICAgICAgICBjb25zdCB0ZXN0UnVuID0gYXdhaXQgdGhpcy5fY3JlYXRlVGVzdFJ1bihjb25uZWN0aW9uLCBzdGFydFJ1bkV4ZWN1dGlvblRpbWUpO1xuXG4gICAgICAgIGNvbnN0IGhvb2tPayA9IGF3YWl0IHRoaXMuX3Rlc3RSdW5Ib29rLnJ1blRlc3RSdW5CZWZvcmVIb29rSWZOZWNlc3NhcnkodGVzdFJ1bilcbiAgICAgICAgICAgICAgICAgICAgICAgJiYgYXdhaXQgdGhpcy5fZml4dHVyZUhvb2tDb250cm9sbGVyLnJ1bkZpeHR1cmVCZWZvcmVIb29rSWZOZWNlc3NhcnkodGVzdFJ1bik7XG5cbiAgICAgICAgaWYgKHRoaXMudGVzdC5za2lwIHx8ICFob29rT2spIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2VtaXRUZXN0UnVuU3RhcnQoKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW1pdCgndGVzdC1ydW4tYmVmb3JlLWRvbmUnKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2VtaXRUZXN0UnVuRG9uZSgpO1xuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2Fzc2lnblRlc3RSdW5FdmVudHModGVzdFJ1biwgY29ubmVjdGlvbik7XG5cbiAgICAgICAgdGVzdFJ1bi5zdGFydCgpO1xuXG4gICAgICAgIHJldHVybiBTZXNzaW9uQ29udHJvbGxlci5nZXRTZXNzaW9uVXJsKHRlc3RSdW4sIHRoaXMuX3Byb3h5KTtcbiAgICB9XG59XG4iXX0=
@@ -28,30 +28,12 @@ class TestRunBookmark {
28
28
  this.consoleMessages = this.testRun.consoleMessages;
29
29
  }
30
30
  async _initCtxs() {
31
- if (this.testRun.compilerService) {
32
- this.ctx = await this.testRun.compilerService.getCtx({ testRunId: this.testRun.id });
33
- this.fixtureCtx = await this.testRun.compilerService.getFixtureCtx({ testRunId: this.testRun.id });
34
- }
35
- else {
36
- this.ctx = this.testRun.ctx;
37
- this.fixtureCtx = this.testRun.fixtureCtx;
38
- }
31
+ this.ctx = this.testRun.ctx;
32
+ this.fixtureCtx = this.testRun.fixtureCtx;
39
33
  }
40
34
  async _restoreCtxs() {
41
- if (this.testRun.compilerService) {
42
- await this.testRun.compilerService.setCtx({
43
- testRunId: this.testRun.id,
44
- value: this.ctx,
45
- });
46
- await this.testRun.compilerService.setFixtureCtx({
47
- testRunId: this.testRun.id,
48
- value: this.fixtureCtx,
49
- });
50
- }
51
- else {
52
- this.testRun.ctx = this.ctx;
53
- this.testRun.fixtureCtx = this.fixtureCtx;
54
- }
35
+ this.testRun.ctx = this.ctx;
36
+ this.testRun.fixtureCtx = this.fixtureCtx;
55
37
  }
56
38
  async init() {
57
39
  await this._initCtxs();
@@ -130,4 +112,4 @@ class TestRunBookmark {
130
112
  }
131
113
  exports.default = TestRunBookmark;
132
114
  module.exports = exports.default;
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va21hcmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC1ydW4vYm9va21hcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4REFBK0M7QUFDL0MsMkNBQWtEO0FBQ2xELDZEQUF3RTtBQUV4RSxnREFNNEI7QUFFNUIsaURBQStGO0FBSS9GLG9FQUFzRTtBQUt0RSxNQUFxQixlQUFlO0lBWWhDLFlBQW9CLE9BQWdCLEVBQUUsSUFBVTtRQUM1QyxJQUFJLENBQUMsT0FBTyxHQUFXLE9BQU8sQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFjLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxHQUFlLHdDQUFrQixDQUFDO1FBQzFDLElBQUksQ0FBQyxHQUFHLEdBQWUsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQVEsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUssSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUksSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQWEsb0NBQW1CLENBQUM7UUFDM0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO1FBQ3hELElBQUksQ0FBQyxjQUFjLEdBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztRQUN6RCxJQUFJLENBQUMsS0FBSyxHQUFhLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzFDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFDcEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQXlDLENBQUM7SUFDbEYs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QUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNKO0FBNUpELGtDQTRKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBURVNUX1JVTl9QSEFTRSBmcm9tICcuLi90ZXN0LXJ1bi9waGFzZSc7XG5pbXBvcnQgeyBURVNUX1JVTl9FUlJPUlMgfSBmcm9tICcuLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IHsgU1BFQ0lBTF9CTEFOS19QQUdFLCBTdGF0ZVNuYXBzaG90IH0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5cbmltcG9ydCB7XG4gICAgU3dpdGNoVG9NYWluV2luZG93Q29tbWFuZCxcbiAgICBTd2l0Y2hUb0lmcmFtZUNvbW1hbmQsXG4gICAgU2V0TmF0aXZlRGlhbG9nSGFuZGxlckNvbW1hbmQsXG4gICAgU2V0VGVzdFNwZWVkQ29tbWFuZCxcbiAgICBTZXRQYWdlTG9hZFRpbWVvdXRDb21tYW5kLFxufSBmcm9tICcuL2NvbW1hbmRzL2FjdGlvbnMnO1xuXG5pbXBvcnQgeyBDdXJyZW50SWZyYW1lTm90Rm91bmRFcnJvciwgQ3VycmVudElmcmFtZUlzTm90TG9hZGVkRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvdGVzdC1ydW4nO1xuaW1wb3J0IFRlc3RSdW4gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBFeGVjdXRlQ2xpZW50RnVuY3Rpb25Db21tYW5kLCBFeGVjdXRlU2VsZWN0b3JDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9vYnNlcnZhdGlvbic7XG5pbXBvcnQgUm9sZSwgeyBSZWRpcmVjdFVybCB9IGZyb20gJy4uL3JvbGUvcm9sZSc7XG5pbXBvcnQgeyBERUZBVUxUX1NQRUVEX1ZBTFVFIH0gZnJvbSAnLi4vY29uZmlndXJhdGlvbi9kZWZhdWx0LXZhbHVlcyc7XG5pbXBvcnQgQnJvd3NlckNvbnNvbGVNZXNzYWdlcyBmcm9tICcuL2Jyb3dzZXItY29uc29sZS1tZXNzYWdlcyc7XG5pbXBvcnQgeyBDb21tYW5kQmFzZSB9IGZyb20gJy4vY29tbWFuZHMvYmFzZSc7XG5pbXBvcnQgeyBDYWxsc2l0ZVJlY29yZCB9IGZyb20gJ2NhbGxzaXRlLXJlY29yZCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlc3RSdW5Cb29rbWFyayB7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXN0UnVuOiBUZXN0UnVuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm9sZTogUm9sZTtcbiAgICBwcml2YXRlIHVybDogc3RyaW5nO1xuICAgIHByaXZhdGUgY3R4OiBvYmplY3QgfCBudWxsO1xuICAgIHByaXZhdGUgZml4dHVyZUN0eDogb2JqZWN0IHwgbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ0hhbmRsZXI6IEV4ZWN1dGVDbGllbnRGdW5jdGlvbkNvbW1hbmQgfCBudWxsO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWZyYW1lU2VsZWN0b3I6IEV4ZWN1dGVTZWxlY3RvckNvbW1hbmQgfCBudWxsO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3BlZWQ6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VMb2FkVGltZW91dDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uc29sZU1lc3NhZ2VzOiBCcm93c2VyQ29uc29sZU1lc3NhZ2VzIHwgbnVsbDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAodGVzdFJ1bjogVGVzdFJ1biwgcm9sZTogUm9sZSkge1xuICAgICAgICB0aGlzLnRlc3RSdW4gICAgICAgICA9IHRlc3RSdW47XG4gICAgICAgIHRoaXMucm9sZSAgICAgICAgICAgID0gcm9sZTtcbiAgICAgICAgdGhpcy51cmwgICAgICAgICAgICAgPSBTUEVDSUFMX0JMQU5LX1BBR0U7XG4gICAgICAgIHRoaXMuY3R4ICAgICAgICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5maXh0dXJlQ3R4ICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLmRpYWxvZ0hhbmRsZXIgICA9IG51bGw7XG4gICAgICAgIHRoaXMuaWZyYW1lU2VsZWN0b3IgID0gbnVsbDtcbiAgICAgICAgdGhpcy5zcGVlZCAgICAgICAgICAgPSBERUZBVUxUX1NQRUVEX1ZBTFVFO1xuICAgICAgICB0aGlzLnBhZ2VMb2FkVGltZW91dCA9IDA7XG4gICAgICAgIHRoaXMuY29uc29sZU1lc3NhZ2VzID0gbnVsbDtcbiAgICAgICAgdGhpcy5kaWFsb2dIYW5kbGVyICAgPSB0aGlzLnRlc3RSdW4uYWN0aXZlRGlhbG9nSGFuZGxlcjtcbiAgICAgICAgdGhpcy5pZnJhbWVTZWxlY3RvciAgPSB0aGlzLnRlc3RSdW4uYWN0aXZlSWZyYW1lU2VsZWN0b3I7XG4gICAgICAgIHRoaXMuc3BlZWQgICAgICAgICAgID0gdGhpcy50ZXN0UnVuLnNwZWVkO1xuICAgICAgICB0aGlzLnBhZ2VMb2FkVGltZW91dCA9IHRoaXMudGVzdFJ1bi5wYWdlTG9hZFRpbWVvdXQ7XG4gICAgICAgIHRoaXMuY29uc29sZU1lc3NhZ2VzID0gdGhpcy50ZXN0UnVuLmNvbnNvbGVNZXNzYWdlcyBhcyBCcm93c2VyQ29uc29sZU1lc3NhZ2VzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2luaXRDdHhzICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMudGVzdFJ1bi5jb21waWxlclNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuY3R4ICAgICAgICA9IGF3YWl0IHRoaXMudGVzdFJ1bi5jb21waWxlclNlcnZpY2UuZ2V0Q3R4KHsgdGVzdFJ1bklkOiB0aGlzLnRlc3RSdW4uaWQgfSk7XG4gICAgICAgICAgICB0aGlzLmZpeHR1cmVDdHggPSBhd2FpdCB0aGlzLnRlc3RSdW4uY29tcGlsZXJTZXJ2aWNlLmdldEZpeHR1cmVDdHgoeyB0ZXN0UnVuSWQ6IHRoaXMudGVzdFJ1bi5pZCB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3R4ICAgICAgICA9IHRoaXMudGVzdFJ1bi5jdHg7XG4gICAgICAgICAgICB0aGlzLmZpeHR1cmVDdHggPSB0aGlzLnRlc3RSdW4uZml4dHVyZUN0eCBhcyBvYmplY3Q7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9yZXN0b3JlQ3R4cyAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLnRlc3RSdW4uY29tcGlsZXJTZXJ2aWNlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnRlc3RSdW4uY29tcGlsZXJTZXJ2aWNlLnNldEN0eCh7XG4gICAgICAgICAgICAgICAgdGVzdFJ1bklkOiB0aGlzLnRlc3RSdW4uaWQsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICAgICB0aGlzLmN0eCBhcyBvYmplY3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudGVzdFJ1bi5jb21waWxlclNlcnZpY2Uuc2V0Rml4dHVyZUN0eCh7XG4gICAgICAgICAgICAgICAgdGVzdFJ1bklkOiB0aGlzLnRlc3RSdW4uaWQsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICAgICB0aGlzLmZpeHR1cmVDdHggYXMgb2JqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRlc3RSdW4uY3R4ICAgICAgICA9IHRoaXMuY3R4IGFzIG9iamVjdDtcbiAgICAgICAgICAgIHRoaXMudGVzdFJ1bi5maXh0dXJlQ3R4ID0gdGhpcy5maXh0dXJlQ3R4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGluaXQgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLl9pbml0Q3R4cygpO1xuXG4gICAgICAgIGlmICh0aGlzLnRlc3RSdW4uYWN0aXZlSWZyYW1lU2VsZWN0b3IpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnRlc3RSdW4uZXhlY3V0ZUNvbW1hbmQobmV3IFN3aXRjaFRvTWFpbldpbmRvd0NvbW1hbmQoKSBhcyBDb21tYW5kQmFzZSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnJvbGUub3B0cy5wcmVzZXJ2ZVVybClcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucm9sZS5zZXRDdXJyZW50VXJsQXNSZWRpcmVjdFVybCh0aGlzLnRlc3RSdW4pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3Jlc3RvcmVEaWFsb2dIYW5kbGVyICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMudGVzdFJ1bi5hY3RpdmVEaWFsb2dIYW5kbGVyICE9PSB0aGlzLmRpYWxvZ0hhbmRsZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3RvcmVEaWFsb2dDb21tYW5kID0gbmV3IFNldE5hdGl2ZURpYWxvZ0hhbmRsZXJDb21tYW5kKHsgZGlhbG9nSGFuZGxlcjogeyBmbjogdGhpcy5kaWFsb2dIYW5kbGVyIH0gfSk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMudGVzdFJ1bi5leGVjdXRlQ29tbWFuZChyZXN0b3JlRGlhbG9nQ29tbWFuZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9yZXN0b3JlU3BlZWQgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy50ZXN0UnVuLnNwZWVkICE9PSB0aGlzLnNwZWVkKSB7XG4gICAgICAgICAgICBjb25zdCByZXN0b3JlU3BlZWRDb21tYW5kID0gbmV3IFNldFRlc3RTcGVlZENvbW1hbmQoeyBzcGVlZDogdGhpcy5zcGVlZCB9KTtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy50ZXN0UnVuLmV4ZWN1dGVDb21tYW5kKHJlc3RvcmVTcGVlZENvbW1hbmQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcmVzdG9yZVBhZ2VMb2FkVGltZW91dCAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLnRlc3RSdW4ucGFnZUxvYWRUaW1lb3V0ICE9PSB0aGlzLnBhZ2VMb2FkVGltZW91dCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdG9yZVBhZ2VMb2FkVGltZW91dENvbW1hbmQgPSBuZXcgU2V0UGFnZUxvYWRUaW1lb3V0Q29tbWFuZCh7IGR1cmF0aW9uOiB0aGlzLnBhZ2VMb2FkVGltZW91dCB9KTtcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy50ZXN0UnVuLmV4ZWN1dGVDb21tYW5kKHJlc3RvcmVQYWdlTG9hZFRpbWVvdXRDb21tYW5kKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3Jlc3RvcmVXb3JraW5nRnJhbWUgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy50ZXN0UnVuLmFjdGl2ZUlmcmFtZVNlbGVjdG9yICE9PSB0aGlzLmlmcmFtZVNlbGVjdG9yKSB7XG4gICAgICAgICAgICBjb25zdCBzd2l0Y2hXb3JraW5nRnJhbWVDb21tYW5kID0gdGhpcy5pZnJhbWVTZWxlY3RvciA/XG4gICAgICAgICAgICAgICAgbmV3IFN3aXRjaFRvSWZyYW1lQ29tbWFuZCh7IHNlbGVjdG9yOiB0aGlzLmlmcmFtZVNlbGVjdG9yIH0pIDpcbiAgICAgICAgICAgICAgICBuZXcgU3dpdGNoVG9NYWluV2luZG93Q29tbWFuZCgpO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudGVzdFJ1bi5leGVjdXRlQ29tbWFuZChzd2l0Y2hXb3JraW5nRnJhbWVDb21tYW5kIGFzIENvbW1hbmRCYXNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgICAgICAgIGlmIChlcnIuY29kZSA9PT0gVEVTVF9SVU5fRVJST1JTLmFjdGlvbkVsZW1lbnROb3RGb3VuZEVycm9yKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ3VycmVudElmcmFtZU5vdEZvdW5kRXJyb3IoKTtcblxuICAgICAgICAgICAgICAgIGlmIChlcnIuY29kZSA9PT0gVEVTVF9SVU5fRVJST1JTLmFjdGlvbklmcmFtZUlzTm90TG9hZGVkRXJyb3IpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBDdXJyZW50SWZyYW1lSXNOb3RMb2FkZWRFcnJvcigpO1xuXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcmVzdG9yZVBhZ2UgKHVybDogc3RyaW5nLCBzdGF0ZVNuYXBzaG90OiBTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMudGVzdFJ1bi5uYXZpZ2F0ZVRvVXJsKHVybCwgdHJ1ZSwgSlNPTi5zdHJpbmdpZnkoc3RhdGVTbmFwc2hvdCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldENvbnNvbGVNZXNzYWdlcyAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGVzdFJ1bi5jb25zb2xlTWVzc2FnZXMgPSB0aGlzLmNvbnNvbGVNZXNzYWdlcyBhcyBCcm93c2VyQ29uc29sZU1lc3NhZ2VzO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldFBoYXNlICh2YWx1ZTogVEVTVF9SVU5fUEhBU0UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50ZXN0UnVuLnBoYXNlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlc3RvcmUgKGNhbGxzaXRlOiBDYWxsc2l0ZVJlY29yZCwgc3RhdGVTbmFwc2hvdDogU3RhdGVTbmFwc2hvdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBwcmV2UGhhc2UgPSBhd2FpdCB0aGlzLnRlc3RSdW4ucGhhc2U7XG5cbiAgICAgICAgdGhpcy5fc2V0UGhhc2UoVEVTVF9SVU5fUEhBU0UuaW5Cb29rbWFya1Jlc3RvcmUpO1xuICAgICAgICBhd2FpdCB0aGlzLl9yZXN0b3JlQ3R4cygpO1xuICAgICAgICB0aGlzLl9zZXRDb25zb2xlTWVzc2FnZXMoKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fcmVzdG9yZVNwZWVkKCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9yZXN0b3JlUGFnZUxvYWRUaW1lb3V0KCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9yZXN0b3JlRGlhbG9nSGFuZGxlcigpO1xuXG4gICAgICAgICAgICBjb25zdCBwcmVzZXJ2ZVVybCA9IHRoaXMucm9sZS5vcHRzLnByZXNlcnZlVXJsO1xuXG4gICAgICAgICAgICBjb25zdCByZWRpcmVjdFVybCA9IHByZXNlcnZlVXJsXG4gICAgICAgICAgICAgICAgPyB0aGlzLnJvbGUucmVkaXJlY3RVcmwgYXMgc3RyaW5nXG4gICAgICAgICAgICAgICAgOiAodGhpcy5yb2xlLnJlZGlyZWN0VXJsIGFzIFJlZGlyZWN0VXJsKVt0aGlzLnRlc3RSdW4udGVzdC5pZF07XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3Jlc3RvcmVQYWdlKHJlZGlyZWN0VXJsLCBzdGF0ZVNuYXBzaG90KTtcblxuICAgICAgICAgICAgaWYgKCFwcmVzZXJ2ZVVybClcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9yZXN0b3JlV29ya2luZ0ZyYW1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgICAgICBlcnIuY2FsbHNpdGUgPSBjYWxsc2l0ZTtcblxuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2V0UGhhc2UocHJldlBoYXNlKTtcbiAgICB9XG59XG4iXX0=
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va21hcmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC1ydW4vYm9va21hcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4REFBK0M7QUFDL0MsMkNBQWtEO0FBQ2xELDZEQUF3RTtBQUV4RSxnREFNNEI7QUFFNUIsaURBQStGO0FBSS9GLG9FQUFzRTtBQUt0RSxNQUFxQixlQUFlO0lBWWhDLFlBQW9CLE9BQWdCLEVBQUUsSUFBVTtRQUM1QyxJQUFJLENBQUMsT0FBTyxHQUFXLE9BQU8sQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFjLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxHQUFlLHdDQUFrQixDQUFDO1FBQzFDLElBQUksQ0FBQyxHQUFHLEdBQWUsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQVEsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUssSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUksSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQWEsb0NBQW1CLENBQUM7UUFDM0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDO1FBQ3hELElBQUksQ0FBQyxjQUFjLEdBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztRQUN6RCxJQUFJLENBQUMsS0FBSyxHQUFhLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzFDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFDcEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQXlDLENBQUM7SUFDbEYs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LElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRW5FLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFFcEQsSUFBSSxDQUFDLFdBQVc7Z0JBQ1osTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztTQUN6QztRQUNELE9BQU8sR0FBUSxFQUFFO1lBQ2IsR0FBRyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFFeEIsTUFBTSxHQUFHLENBQUM7U0FDYjtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNKO0FBMUlELGtDQTBJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBURVNUX1JVTl9QSEFTRSBmcm9tICcuLi90ZXN0LXJ1bi9waGFzZSc7XG5pbXBvcnQgeyBURVNUX1JVTl9FUlJPUlMgfSBmcm9tICcuLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IHsgU1BFQ0lBTF9CTEFOS19QQUdFLCBTdGF0ZVNuYXBzaG90IH0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5cbmltcG9ydCB7XG4gICAgU3dpdGNoVG9NYWluV2luZG93Q29tbWFuZCxcbiAgICBTd2l0Y2hUb0lmcmFtZUNvbW1hbmQsXG4gICAgU2V0TmF0aXZlRGlhbG9nSGFuZGxlckNvbW1hbmQsXG4gICAgU2V0VGVzdFNwZWVkQ29tbWFuZCxcbiAgICBTZXRQYWdlTG9hZFRpbWVvdXRDb21tYW5kLFxufSBmcm9tICcuL2NvbW1hbmRzL2FjdGlvbnMnO1xuXG5pbXBvcnQgeyBDdXJyZW50SWZyYW1lTm90Rm91bmRFcnJvciwgQ3VycmVudElmcmFtZUlzTm90TG9hZGVkRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvdGVzdC1ydW4nO1xuaW1wb3J0IFRlc3RSdW4gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBFeGVjdXRlQ2xpZW50RnVuY3Rpb25Db21tYW5kLCBFeGVjdXRlU2VsZWN0b3JDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9vYnNlcnZhdGlvbic7XG5pbXBvcnQgUm9sZSwgeyBSZWRpcmVjdFVybCB9IGZyb20gJy4uL3JvbGUvcm9sZSc7XG5pbXBvcnQgeyBERUZBVUxUX1NQRUVEX1ZBTFVFIH0gZnJvbSAnLi4vY29uZmlndXJhdGlvbi9kZWZhdWx0LXZhbHVlcyc7XG5pbXBvcnQgQnJvd3NlckNvbnNvbGVNZXNzYWdlcyBmcm9tICcuL2Jyb3dzZXItY29uc29sZS1tZXNzYWdlcyc7XG5pbXBvcnQgeyBDb21tYW5kQmFzZSB9IGZyb20gJy4vY29tbWFuZHMvYmFzZSc7XG5pbXBvcnQgeyBDYWxsc2l0ZVJlY29yZCB9IGZyb20gJ2NhbGxzaXRlLXJlY29yZCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlc3RSdW5Cb29rbWFyayB7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXN0UnVuOiBUZXN0UnVuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm9sZTogUm9sZTtcbiAgICBwcml2YXRlIHVybDogc3RyaW5nO1xuICAgIHByaXZhdGUgY3R4OiBvYmplY3QgfCBudWxsO1xuICAgIHByaXZhdGUgZml4dHVyZUN0eDogb2JqZWN0IHwgbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ0hhbmRsZXI6IEV4ZWN1dGVDbGllbnRGdW5jdGlvbkNvbW1hbmQgfCBudWxsO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWZyYW1lU2VsZWN0b3I6IEV4ZWN1dGVTZWxlY3RvckNvbW1hbmQgfCBudWxsO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3BlZWQ6IG51bWJlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VMb2FkVGltZW91dDogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uc29sZU1lc3NhZ2VzOiBCcm93c2VyQ29uc29sZU1lc3NhZ2VzIHwgbnVsbDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvciAodGVzdFJ1bjogVGVzdFJ1biwgcm9sZTogUm9sZSkge1xuICAgICAgICB0aGlzLnRlc3RSdW4gICAgICAgICA9IHRlc3RSdW47XG4gICAgICAgIHRoaXMucm9sZSAgICAgICAgICAgID0gcm9sZTtcbiAgICAgICAgdGhpcy51cmwgICAgICAgICAgICAgPSBTUEVDSUFMX0JMQU5LX1BBR0U7XG4gICAgICAgIHRoaXMuY3R4ICAgICAgICAgICAgID0gbnVsbDtcbiAgICAgICAgdGhpcy5maXh0dXJlQ3R4ICAgICAgPSBudWxsO1xuICAgICAgICB0aGlzLmRpYWxvZ0hhbmRsZXIgICA9IG51bGw7XG4gICAgICAgIHRoaXMuaWZyYW1lU2VsZWN0b3IgID0gbnVsbDtcbiAgICAgICAgdGhpcy5zcGVlZCAgICAgICAgICAgPSBERUZBVUxUX1NQRUVEX1ZBTFVFO1xuICAgICAgICB0aGlzLnBhZ2VMb2FkVGltZW91dCA9IDA7XG4gICAgICAgIHRoaXMuY29uc29sZU1lc3NhZ2VzID0gbnVsbDtcbiAgICAgICAgdGhpcy5kaWFsb2dIYW5kbGVyICAgPSB0aGlzLnRlc3RSdW4uYWN0aXZlRGlhbG9nSGFuZGxlcjtcbiAgICAgICAgdGhpcy5pZnJhbWVTZWxlY3RvciAgPSB0aGlzLnRlc3RSdW4uYWN0aXZlSWZyYW1lU2VsZWN0b3I7XG4gICAgICAgIHRoaXMuc3BlZWQgICAgICAgICAgID0gdGhpcy50ZXN0UnVuLnNwZWVkO1xuICAgICAgICB0aGlzLnBhZ2VMb2FkVGltZW91dCA9IHRoaXMudGVzdFJ1bi5wYWdlTG9hZFRpbWVvdXQ7XG4gICAgICAgIHRoaXMuY29uc29sZU1lc3NhZ2VzID0gdGhpcy50ZXN0UnVuLmNvbnNvbGVNZXNzYWdlcyBhcyBCcm93c2VyQ29uc29sZU1lc3NhZ2VzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX2luaXRDdHhzICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5jdHggICAgICAgID0gdGhpcy50ZXN0UnVuLmN0eDtcbiAgICAgICAgdGhpcy5maXh0dXJlQ3R4ID0gdGhpcy50ZXN0UnVuLmZpeHR1cmVDdHggYXMgb2JqZWN0O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3Jlc3RvcmVDdHhzICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy50ZXN0UnVuLmN0eCAgICAgICAgPSB0aGlzLmN0eCBhcyBvYmplY3Q7XG4gICAgICAgIHRoaXMudGVzdFJ1bi5maXh0dXJlQ3R4ID0gdGhpcy5maXh0dXJlQ3R4O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBpbml0ICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5faW5pdEN0eHMoKTtcblxuICAgICAgICBpZiAodGhpcy50ZXN0UnVuLmFjdGl2ZUlmcmFtZVNlbGVjdG9yKVxuICAgICAgICAgICAgYXdhaXQgdGhpcy50ZXN0UnVuLmV4ZWN1dGVDb21tYW5kKG5ldyBTd2l0Y2hUb01haW5XaW5kb3dDb21tYW5kKCkgYXMgQ29tbWFuZEJhc2UpO1xuXG4gICAgICAgIGlmICghdGhpcy5yb2xlLm9wdHMucHJlc2VydmVVcmwpXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJvbGUuc2V0Q3VycmVudFVybEFzUmVkaXJlY3RVcmwodGhpcy50ZXN0UnVuKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9yZXN0b3JlRGlhbG9nSGFuZGxlciAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLnRlc3RSdW4uYWN0aXZlRGlhbG9nSGFuZGxlciAhPT0gdGhpcy5kaWFsb2dIYW5kbGVyKSB7XG4gICAgICAgICAgICBjb25zdCByZXN0b3JlRGlhbG9nQ29tbWFuZCA9IG5ldyBTZXROYXRpdmVEaWFsb2dIYW5kbGVyQ29tbWFuZCh7IGRpYWxvZ0hhbmRsZXI6IHsgZm46IHRoaXMuZGlhbG9nSGFuZGxlciB9IH0pO1xuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnRlc3RSdW4uZXhlY3V0ZUNvbW1hbmQocmVzdG9yZURpYWxvZ0NvbW1hbmQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBfcmVzdG9yZVNwZWVkICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMudGVzdFJ1bi5zcGVlZCAhPT0gdGhpcy5zcGVlZCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdG9yZVNwZWVkQ29tbWFuZCA9IG5ldyBTZXRUZXN0U3BlZWRDb21tYW5kKHsgc3BlZWQ6IHRoaXMuc3BlZWQgfSk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMudGVzdFJ1bi5leGVjdXRlQ29tbWFuZChyZXN0b3JlU3BlZWRDb21tYW5kKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3Jlc3RvcmVQYWdlTG9hZFRpbWVvdXQgKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy50ZXN0UnVuLnBhZ2VMb2FkVGltZW91dCAhPT0gdGhpcy5wYWdlTG9hZFRpbWVvdXQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3RvcmVQYWdlTG9hZFRpbWVvdXRDb21tYW5kID0gbmV3IFNldFBhZ2VMb2FkVGltZW91dENvbW1hbmQoeyBkdXJhdGlvbjogdGhpcy5wYWdlTG9hZFRpbWVvdXQgfSk7XG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMudGVzdFJ1bi5leGVjdXRlQ29tbWFuZChyZXN0b3JlUGFnZUxvYWRUaW1lb3V0Q29tbWFuZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIF9yZXN0b3JlV29ya2luZ0ZyYW1lICgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMudGVzdFJ1bi5hY3RpdmVJZnJhbWVTZWxlY3RvciAhPT0gdGhpcy5pZnJhbWVTZWxlY3Rvcikge1xuICAgICAgICAgICAgY29uc3Qgc3dpdGNoV29ya2luZ0ZyYW1lQ29tbWFuZCA9IHRoaXMuaWZyYW1lU2VsZWN0b3IgP1xuICAgICAgICAgICAgICAgIG5ldyBTd2l0Y2hUb0lmcmFtZUNvbW1hbmQoeyBzZWxlY3RvcjogdGhpcy5pZnJhbWVTZWxlY3RvciB9KSA6XG4gICAgICAgICAgICAgICAgbmV3IFN3aXRjaFRvTWFpbldpbmRvd0NvbW1hbmQoKTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnRlc3RSdW4uZXhlY3V0ZUNvbW1hbmQoc3dpdGNoV29ya2luZ0ZyYW1lQ29tbWFuZCBhcyBDb21tYW5kQmFzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgPT09IFRFU1RfUlVOX0VSUk9SUy5hY3Rpb25FbGVtZW50Tm90Rm91bmRFcnJvcilcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEN1cnJlbnRJZnJhbWVOb3RGb3VuZEVycm9yKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgPT09IFRFU1RfUlVOX0VSUk9SUy5hY3Rpb25JZnJhbWVJc05vdExvYWRlZEVycm9yKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ3VycmVudElmcmFtZUlzTm90TG9hZGVkRXJyb3IoKTtcblxuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgX3Jlc3RvcmVQYWdlICh1cmw6IHN0cmluZywgc3RhdGVTbmFwc2hvdDogU3RhdGVTbmFwc2hvdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnRlc3RSdW4ubmF2aWdhdGVUb1VybCh1cmwsIHRydWUsIEpTT04uc3RyaW5naWZ5KHN0YXRlU25hcHNob3QpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRDb25zb2xlTWVzc2FnZXMgKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRlc3RSdW4uY29uc29sZU1lc3NhZ2VzID0gdGhpcy5jb25zb2xlTWVzc2FnZXMgYXMgQnJvd3NlckNvbnNvbGVNZXNzYWdlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRQaGFzZSAodmFsdWU6IFRFU1RfUlVOX1BIQVNFKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGVzdFJ1bi5waGFzZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZXN0b3JlIChjYWxsc2l0ZTogQ2FsbHNpdGVSZWNvcmQsIHN0YXRlU25hcHNob3Q6IFN0YXRlU25hcHNob3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcHJldlBoYXNlID0gYXdhaXQgdGhpcy50ZXN0UnVuLnBoYXNlO1xuXG4gICAgICAgIHRoaXMuX3NldFBoYXNlKFRFU1RfUlVOX1BIQVNFLmluQm9va21hcmtSZXN0b3JlKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fcmVzdG9yZUN0eHMoKTtcbiAgICAgICAgdGhpcy5fc2V0Q29uc29sZU1lc3NhZ2VzKCk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX3Jlc3RvcmVTcGVlZCgpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fcmVzdG9yZVBhZ2VMb2FkVGltZW91dCgpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5fcmVzdG9yZURpYWxvZ0hhbmRsZXIoKTtcblxuICAgICAgICAgICAgY29uc3QgcHJlc2VydmVVcmwgPSB0aGlzLnJvbGUub3B0cy5wcmVzZXJ2ZVVybDtcblxuICAgICAgICAgICAgY29uc3QgcmVkaXJlY3RVcmwgPSBwcmVzZXJ2ZVVybFxuICAgICAgICAgICAgICAgID8gdGhpcy5yb2xlLnJlZGlyZWN0VXJsIGFzIHN0cmluZ1xuICAgICAgICAgICAgICAgIDogKHRoaXMucm9sZS5yZWRpcmVjdFVybCBhcyBSZWRpcmVjdFVybClbdGhpcy50ZXN0UnVuLnRlc3QuaWRdO1xuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9yZXN0b3JlUGFnZShyZWRpcmVjdFVybCwgc3RhdGVTbmFwc2hvdCk7XG5cbiAgICAgICAgICAgIGlmICghcHJlc2VydmVVcmwpXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fcmVzdG9yZVdvcmtpbmdGcmFtZSgpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgICAgZXJyLmNhbGxzaXRlID0gY2FsbHNpdGU7XG5cbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NldFBoYXNlKHByZXZQaGFzZSk7XG4gICAgfVxufVxuIl19
@@ -21,9 +21,8 @@ class HideAssertionRetriesStatusCommand {
21
21
  }
22
22
  exports.HideAssertionRetriesStatusCommand = HideAssertionRetriesStatusCommand;
23
23
  class SetBreakpointCommand {
24
- constructor(isTestError, inCompilerService) {
24
+ constructor(isTestError) {
25
25
  this.type = type_1.default.setBreakpoint;
26
- this.inCompilerService = inCompilerService;
27
26
  this.isTestError = isTestError;
28
27
  }
29
28
  }
@@ -59,4 +58,4 @@ class PrepareClientEnvironmentInDebugMode {
59
58
  }
60
59
  }
61
60
  exports.PrepareClientEnvironmentInDebugMode = PrepareClientEnvironmentInDebugMode;
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0LXJ1bi9jb21tYW5kcy9zZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUUxQixXQUFXO0FBQ1gsTUFBYSxpQ0FBaUM7SUFDMUMsWUFBYSxPQUFPO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQU0sY0FBSSxDQUFDLDBCQUEwQixDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7Q0FDSjtBQUxELDhFQUtDO0FBRUQsTUFBYSxpQ0FBaUM7SUFDMUMsWUFBYSxPQUFPO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQU0sY0FBSSxDQUFDLDBCQUEwQixDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7Q0FDSjtBQUxELDhFQUtDO0FBRUQsTUFBYSxvQkFBb0I7SUFDN0IsWUFBYSxXQUFXLEVBQUUsaUJBQWlCO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLEdBQWdCLGNBQUksQ0FBQyxhQUFhLENBQUM7UUFDNUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQzNDLElBQUksQ0FBQyxXQUFXLEdBQVMsV0FBVyxDQUFDO0lBQ3pDLENBQUM7Q0FDSjtBQU5ELG9EQU1DO0FBRUQsTUFBYSxlQUFlO0lBQ3hCO1FBQ0ksSUFBSSxDQUFDLElBQUksR0FBRyxjQUFJLENBQUMsUUFBUSxDQUFDO0lBQzlCLENBQUM7Q0FDSjtBQUpELDBDQUlDO0FBRUQsTUFBYSxxQkFBcUI7SUFDOUI7UUFDSSxJQUFJLENBQUMsSUFBSSxHQUFHLGNBQUksQ0FBQyxjQUFjLENBQUM7SUFDcEMsQ0FBQztDQUNKO0FBSkQsc0RBSUM7QUFFRCxNQUFhLGlCQUFpQjtJQUMxQjtRQUNJLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBSSxDQUFDLFVBQVUsQ0FBQztJQUNoQyxDQUFDO0NBQ0o7QUFKRCw4Q0FJQztBQUVELE1BQWEsdUJBQXVCO0lBQ2hDO1FBQ0ksSUFBSSxDQUFDLElBQUksR0FBRyxjQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDdEMsQ0FBQztDQUNKO0FBSkQsMERBSUM7QUFFRCxNQUFhLG1DQUFtQztJQUM1QyxZQUFhLFVBQVU7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBUyxjQUFJLENBQUMsbUNBQW1DLENBQUM7UUFDM0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDakMsQ0FBQztDQUNKO0FBTEQsa0ZBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVFlQRSBmcm9tICcuL3R5cGUnO1xuXG4vLyBDb21tYW5kc1xuZXhwb3J0IGNsYXNzIFNob3dBc3NlcnRpb25SZXRyaWVzU3RhdHVzQ29tbWFuZCB7XG4gICAgY29uc3RydWN0b3IgKHRpbWVvdXQpIHtcbiAgICAgICAgdGhpcy50eXBlICAgID0gVFlQRS5zaG93QXNzZXJ0aW9uUmV0cmllc1N0YXR1cztcbiAgICAgICAgdGhpcy50aW1lb3V0ID0gdGltZW91dDtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIaWRlQXNzZXJ0aW9uUmV0cmllc1N0YXR1c0NvbW1hbmQge1xuICAgIGNvbnN0cnVjdG9yIChzdWNjZXNzKSB7XG4gICAgICAgIHRoaXMudHlwZSAgICA9IFRZUEUuaGlkZUFzc2VydGlvblJldHJpZXNTdGF0dXM7XG4gICAgICAgIHRoaXMuc3VjY2VzcyA9IHN1Y2Nlc3M7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0QnJlYWtwb2ludENvbW1hbmQge1xuICAgIGNvbnN0cnVjdG9yIChpc1Rlc3RFcnJvciwgaW5Db21waWxlclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy50eXBlICAgICAgICAgICAgICA9IFRZUEUuc2V0QnJlYWtwb2ludDtcbiAgICAgICAgdGhpcy5pbkNvbXBpbGVyU2VydmljZSA9IGluQ29tcGlsZXJTZXJ2aWNlO1xuICAgICAgICB0aGlzLmlzVGVzdEVycm9yICAgICAgID0gaXNUZXN0RXJyb3I7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVzdERvbmVDb21tYW5kIHtcbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHRoaXMudHlwZSA9IFRZUEUudGVzdERvbmU7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmFja3VwU3RvcmFnZXNDb21tYW5kIHtcbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHRoaXMudHlwZSA9IFRZUEUuYmFja3VwU3RvcmFnZXM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVW5sb2NrUGFnZUNvbW1hbmQge1xuICAgIGNvbnN0cnVjdG9yICgpIHtcbiAgICAgICAgdGhpcy50eXBlID0gVFlQRS51bmxvY2tQYWdlO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldEFjdGl2ZUVsZW1lbnRDb21tYW5kIHtcbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHRoaXMudHlwZSA9IFRZUEUuZ2V0QWN0aXZlRWxlbWVudDtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcmVwYXJlQ2xpZW50RW52aXJvbm1lbnRJbkRlYnVnTW9kZSB7XG4gICAgY29uc3RydWN0b3IgKGVzbVJ1bnRpbWUpIHtcbiAgICAgICAgdGhpcy50eXBlICAgICAgID0gVFlQRS5wcmVwYXJlQ2xpZW50RW52aXJvbm1lbnRJbkRlYnVnTW9kZTtcbiAgICAgICAgdGhpcy5lc21SdW50aW1lID0gZXNtUnVudGltZTtcbiAgICB9XG59XG4iXX0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0LXJ1bi9jb21tYW5kcy9zZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUUxQixXQUFXO0FBQ1gsTUFBYSxpQ0FBaUM7SUFDMUMsWUFBYSxPQUFPO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQU0sY0FBSSxDQUFDLDBCQUEwQixDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7Q0FDSjtBQUxELDhFQUtDO0FBRUQsTUFBYSxpQ0FBaUM7SUFDMUMsWUFBYSxPQUFPO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQU0sY0FBSSxDQUFDLDBCQUEwQixDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7Q0FDSjtBQUxELDhFQUtDO0FBRUQsTUFBYSxvQkFBb0I7SUFDN0IsWUFBYSxXQUFXO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQVUsY0FBSSxDQUFDLGFBQWEsQ0FBQztRQUN0QyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNuQyxDQUFDO0NBQ0o7QUFMRCxvREFLQztBQUVELE1BQWEsZUFBZTtJQUN4QjtRQUNJLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBSSxDQUFDLFFBQVEsQ0FBQztJQUM5QixDQUFDO0NBQ0o7QUFKRCwwQ0FJQztBQUVELE1BQWEscUJBQXFCO0lBQzlCO1FBQ0ksSUFBSSxDQUFDLElBQUksR0FBRyxjQUFJLENBQUMsY0FBYyxDQUFDO0lBQ3BDLENBQUM7Q0FDSjtBQUpELHNEQUlDO0FBRUQsTUFBYSxpQkFBaUI7SUFDMUI7UUFDSSxJQUFJLENBQUMsSUFBSSxHQUFHLGNBQUksQ0FBQyxVQUFVLENBQUM7SUFDaEMsQ0FBQztDQUNKO0FBSkQsOENBSUM7QUFFRCxNQUFhLHVCQUF1QjtJQUNoQztRQUNJLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ3RDLENBQUM7Q0FDSjtBQUpELDBEQUlDO0FBRUQsTUFBYSxtQ0FBbUM7SUFDNUMsWUFBYSxVQUFVO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQVMsY0FBSSxDQUFDLG1DQUFtQyxDQUFDO1FBQzNELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQ2pDLENBQUM7Q0FDSjtBQUxELGtGQUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRZUEUgZnJvbSAnLi90eXBlJztcblxuLy8gQ29tbWFuZHNcbmV4cG9ydCBjbGFzcyBTaG93QXNzZXJ0aW9uUmV0cmllc1N0YXR1c0NvbW1hbmQge1xuICAgIGNvbnN0cnVjdG9yICh0aW1lb3V0KSB7XG4gICAgICAgIHRoaXMudHlwZSAgICA9IFRZUEUuc2hvd0Fzc2VydGlvblJldHJpZXNTdGF0dXM7XG4gICAgICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSGlkZUFzc2VydGlvblJldHJpZXNTdGF0dXNDb21tYW5kIHtcbiAgICBjb25zdHJ1Y3RvciAoc3VjY2Vzcykge1xuICAgICAgICB0aGlzLnR5cGUgICAgPSBUWVBFLmhpZGVBc3NlcnRpb25SZXRyaWVzU3RhdHVzO1xuICAgICAgICB0aGlzLnN1Y2Nlc3MgPSBzdWNjZXNzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNldEJyZWFrcG9pbnRDb21tYW5kIHtcbiAgICBjb25zdHJ1Y3RvciAoaXNUZXN0RXJyb3IpIHtcbiAgICAgICAgdGhpcy50eXBlICAgICAgICA9IFRZUEUuc2V0QnJlYWtwb2ludDtcbiAgICAgICAgdGhpcy5pc1Rlc3RFcnJvciA9IGlzVGVzdEVycm9yO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlc3REb25lQ29tbWFuZCB7XG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgICB0aGlzLnR5cGUgPSBUWVBFLnRlc3REb25lO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJhY2t1cFN0b3JhZ2VzQ29tbWFuZCB7XG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgICB0aGlzLnR5cGUgPSBUWVBFLmJhY2t1cFN0b3JhZ2VzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVubG9ja1BhZ2VDb21tYW5kIHtcbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICAgIHRoaXMudHlwZSA9IFRZUEUudW5sb2NrUGFnZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRBY3RpdmVFbGVtZW50Q29tbWFuZCB7XG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgICB0aGlzLnR5cGUgPSBUWVBFLmdldEFjdGl2ZUVsZW1lbnQ7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJlcGFyZUNsaWVudEVudmlyb25tZW50SW5EZWJ1Z01vZGUge1xuICAgIGNvbnN0cnVjdG9yIChlc21SdW50aW1lKSB7XG4gICAgICAgIHRoaXMudHlwZSAgICAgICA9IFRZUEUucHJlcGFyZUNsaWVudEVudmlyb25tZW50SW5EZWJ1Z01vZGU7XG4gICAgICAgIHRoaXMuZXNtUnVudGltZSA9IGVzbVJ1bnRpbWU7XG4gICAgfVxufVxuIl19
@@ -89,7 +89,9 @@ function isExecutableOnClientCommand(command) {
89
89
  command.type !== type_1.default.useRole &&
90
90
  command.type !== type_1.default.assertion &&
91
91
  command.type !== type_1.default.executeExpression &&
92
- command.type !== type_1.default.executeAsyncExpression;
92
+ command.type !== type_1.default.executeAsyncExpression &&
93
+ command.type !== type_1.default.addRequestHooks &&
94
+ command.type !== type_1.default.removeRequestHooks;
93
95
  }
94
96
  exports.isExecutableOnClientCommand = isExecutableOnClientCommand;
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC1ydW4vY29tbWFuZHMvdXRpbHMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0VBQWdFO0FBQ2hFLGdFQUFnRTtBQUNoRSwrQ0FBK0M7QUFDL0MsZ0VBQWdFO0FBQ2hFLGtEQUEwQjtBQUUxQixNQUFNLDBCQUEwQixHQUFHLFNBQVMsQ0FBQztBQUU3QyxTQUFnQiw4QkFBOEIsQ0FBRSxPQUFPO0lBQ25ELE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1FBQ3RHLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztlQUMzQixDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFKRCx3RUFJQztBQUVELFNBQWdCLHVCQUF1QixDQUFFLE9BQU87SUFDNUMsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxxQkFBcUI7UUFDM0MsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsZUFBZSxDQUFDO0FBQ2pELENBQUM7QUFIRCwwREFHQztBQUVELFNBQWdCLG9CQUFvQixDQUFFLE9BQU87SUFDekMsT0FBTyx1QkFBdUIsQ0FBQyxPQUFPLENBQUM7UUFDaEMsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsSUFBSTtRQUMxQixPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxTQUFTO1FBQy9CLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLGlCQUFpQixDQUFDO0FBQ25ELENBQUM7QUFMRCxvREFLQztBQUVELFNBQWdCLGtCQUFrQixDQUFFLE9BQU87SUFDdkMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUNuQyxDQUFDO0FBRkQsZ0RBRUM7QUFFRCxT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Q2hELE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsSUFBSTtRQUMxQixPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxrQkFBa0I7UUFDeEMsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsS0FBSztRQUMzQixPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxPQUFPO1FBQzdCLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLFNBQVM7UUFDL0IsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsaUJBQWlCO1FBQ3ZDLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLHNCQUFzQixDQUFDO0FBQ3hELENBQUM7QUFSRCxrRUFRQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFdBUk5JTkc6IHRoaXMgZmlsZSBpcyB1c2VkIGJ5IGJvdGggdGhlIGNsaWVudCBhbmQgdGhlIHNlcnZlci5cbi8vIERvIG5vdCB1c2UgYW55IGJyb3dzZXIgb3Igbm9kZS1zcGVjaWZpYyBBUEkhXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5pbXBvcnQgVFlQRSBmcm9tICcuL3R5cGUnO1xuXG5jb25zdCBSQVdfQVBJX0pTX0VYUFJFU1NJT05fVFlQRSA9ICdqcy1leHByJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tbWFuZFJlamVjdGFibGVCeVBhZ2VFcnJvciAoY29tbWFuZCkge1xuICAgIHJldHVybiAhaXNPYnNlcnZhdGlvbkNvbW1hbmQoY29tbWFuZCkgJiYgIWlzQnJvd3Nlck1hbmlwdWxhdGlvbkNvbW1hbmQoY29tbWFuZCkgJiYgIWlzU2VydmljZUNvbW1hbmQoY29tbWFuZCkgfHxcbiAgICAgICAgICAgaXNSZXNpemVXaW5kb3dDb21tYW5kKGNvbW1hbmQpXG4gICAgICAgICAgICYmICFpc1dpbmRvd1N3aXRjaGluZ0NvbW1hbmQoY29tbWFuZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NsaWVudEZ1bmN0aW9uQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBjb21tYW5kLnR5cGUgPT09IFRZUEUuZXhlY3V0ZUNsaWVudEZ1bmN0aW9uIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5leGVjdXRlU2VsZWN0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09ic2VydmF0aW9uQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBpc0NsaWVudEZ1bmN0aW9uQ29tbWFuZChjb21tYW5kKSB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUud2FpdCB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuYXNzZXJ0aW9uIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5leGVjdXRlRXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQXNzZXJ0aW9uQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiAhIWNvbW1hbmQuYXNzZXJ0aW9uVHlwZTtcbn1cblxuZnVuY3Rpb24gaXNXaW5kb3dTd2l0Y2hpbmdDb21tYW5kIChjb21tYW5kKSB7XG4gICAgcmV0dXJuIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zd2l0Y2hUb0lmcmFtZSB8fCBjb21tYW5kLnR5cGUgPT09IFRZUEUuc3dpdGNoVG9NYWluV2luZG93O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FuU2V0RGVidWdnZXJCcmVha3BvaW50QmVmb3JlQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBjb21tYW5kLnR5cGUgIT09IFRZUEUuZGVidWcgJiYgIWlzQ2xpZW50RnVuY3Rpb25Db21tYW5kKGNvbW1hbmQpICYmICFpc1NlcnZpY2VDb21tYW5kKGNvbW1hbmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTY3JlZW5zaG90Q29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBjb21tYW5kLnR5cGUgPT09IFRZUEUudGFrZVNjcmVlbnNob3QgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnRha2VFbGVtZW50U2NyZWVuc2hvdCB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUudGFrZVNjcmVlbnNob3RPbkZhaWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Jlc2l6ZVdpbmRvd0NvbW1hbmQgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gY29tbWFuZC50eXBlID09PSBUWVBFLnJlc2l6ZVdpbmRvdyB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUucmVzaXplV2luZG93VG9GaXREZXZpY2UgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLm1heGltaXplV2luZG93O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCcm93c2VyTWFuaXB1bGF0aW9uQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBpc1NjcmVlbnNob3RDb21tYW5kKGNvbW1hbmQpIHx8IGlzUmVzaXplV2luZG93Q29tbWFuZChjb21tYW5kKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VydmljZUNvbW1hbmQgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gY29tbWFuZC50eXBlID09PSBUWVBFLnRlc3REb25lIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zaG93QXNzZXJ0aW9uUmV0cmllc1N0YXR1cyB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuaGlkZUFzc2VydGlvblJldHJpZXNTdGF0dXMgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnNldEJyZWFrcG9pbnQgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnRha2VTY3JlZW5zaG90T25GYWlsIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5yZWNvcmRlciB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuZ2V0UHJveHlVcmw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0V4ZWN1dGFibGVJblRvcFdpbmRvd09ubHkgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gY29tbWFuZC50eXBlID09PSBUWVBFLnRlc3REb25lIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zd2l0Y2hUb01haW5XaW5kb3cgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnNldE5hdGl2ZURpYWxvZ0hhbmRsZXIgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLmdldE5hdGl2ZURpYWxvZ0hpc3RvcnkgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnNldFRlc3RTcGVlZCB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuc2hvd0Fzc2VydGlvblJldHJpZXNTdGF0dXMgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLmhpZGVBc3NlcnRpb25SZXRyaWVzU3RhdHVzIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zZXRCcmVha3BvaW50IHx8XG4gICAgICAgICAgIGlzQnJvd3Nlck1hbmlwdWxhdGlvbkNvbW1hbmQoY29tbWFuZCkgJiYgY29tbWFuZC50eXBlICE9PSBUWVBFLnRha2VFbGVtZW50U2NyZWVuc2hvdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSlNFeHByZXNzaW9uICh2YWwpIHtcbiAgICByZXR1cm4gdmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbC50eXBlID09PSBSQVdfQVBJX0pTX0VYUFJFU1NJT05fVFlQRSAmJlxuICAgICAgICAgICB0eXBlb2YgdmFsLnZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXhlY3V0YWJsZU9uQ2xpZW50Q29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBjb21tYW5kLnR5cGUgIT09IFRZUEUud2FpdCAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUuc2V0UGFnZUxvYWRUaW1lb3V0ICYmXG4gICAgICAgICAgIGNvbW1hbmQudHlwZSAhPT0gVFlQRS5kZWJ1ZyAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUudXNlUm9sZSAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUuYXNzZXJ0aW9uICYmXG4gICAgICAgICAgIGNvbW1hbmQudHlwZSAhPT0gVFlQRS5leGVjdXRlRXhwcmVzc2lvbiAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUuZXhlY3V0ZUFzeW5jRXhwcmVzc2lvbjtcbn1cbiJdfQ==
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC1ydW4vY29tbWFuZHMvdXRpbHMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0VBQWdFO0FBQ2hFLGdFQUFnRTtBQUNoRSwrQ0FBK0M7QUFDL0MsZ0VBQWdFO0FBQ2hFLGtEQUEwQjtBQUUxQixNQUFNLDBCQUEwQixHQUFHLFNBQVMsQ0FBQztBQUU3QyxTQUFnQiw4QkFBOEIsQ0FBRSxPQUFPO0lBQ25ELE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDO1FBQ3RHLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztlQUMzQixDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFKRCx3RUFJQztBQUVELFNBQWdCLHVCQUF1QixDQUFFLE9BQU87SUFDNUMsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxxQkFBcUI7UUFDM0MsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsZUFBZSxDQUFDO0FBQ2pELENBQUM7QUFIRCwwREFHQztBQUVELFNBQWdCLG9CQUFvQixDQUFFLE9BQU87SUFDekMsT0FBTyx1QkFBdUIsQ0FBQyxPQUFPLENBQUM7UUFDaEMsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsSUFBSTtRQUMxQixPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxTQUFTO1FBQy9CLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLGlCQUFpQixDQUFDO0FBQ25ELENBQUM7QUFMRCxvREFLQztBQUVELFNBQWdCLGtCQUFrQixDQUFFLE9BQU87SUFDdkMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUNuQyxDQUFDO0FBRkQsZ0RBRUM7QUFFRCxT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Q2hELE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsSUFBSTtRQUMxQixPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxrQkFBa0I7UUFDeEMsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsS0FBSztRQUMzQixPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxPQUFPO1FBQzdCLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLFNBQVM7UUFDL0IsT0FBTyxDQUFDLElBQUksS0FBSyxjQUFJLENBQUMsaUJBQWlCO1FBQ3ZDLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLHNCQUFzQjtRQUM1QyxPQUFPLENBQUMsSUFBSSxLQUFLLGNBQUksQ0FBQyxlQUFlO1FBQ3JDLE9BQU8sQ0FBQyxJQUFJLEtBQUssY0FBSSxDQUFDLGtCQUFrQixDQUFDO0FBQ3BELENBQUM7QUFWRCxrRUFVQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFdBUk5JTkc6IHRoaXMgZmlsZSBpcyB1c2VkIGJ5IGJvdGggdGhlIGNsaWVudCBhbmQgdGhlIHNlcnZlci5cbi8vIERvIG5vdCB1c2UgYW55IGJyb3dzZXIgb3Igbm9kZS1zcGVjaWZpYyBBUEkhXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5pbXBvcnQgVFlQRSBmcm9tICcuL3R5cGUnO1xuXG5jb25zdCBSQVdfQVBJX0pTX0VYUFJFU1NJT05fVFlQRSA9ICdqcy1leHByJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tbWFuZFJlamVjdGFibGVCeVBhZ2VFcnJvciAoY29tbWFuZCkge1xuICAgIHJldHVybiAhaXNPYnNlcnZhdGlvbkNvbW1hbmQoY29tbWFuZCkgJiYgIWlzQnJvd3Nlck1hbmlwdWxhdGlvbkNvbW1hbmQoY29tbWFuZCkgJiYgIWlzU2VydmljZUNvbW1hbmQoY29tbWFuZCkgfHxcbiAgICAgICAgICAgaXNSZXNpemVXaW5kb3dDb21tYW5kKGNvbW1hbmQpXG4gICAgICAgICAgICYmICFpc1dpbmRvd1N3aXRjaGluZ0NvbW1hbmQoY29tbWFuZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NsaWVudEZ1bmN0aW9uQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBjb21tYW5kLnR5cGUgPT09IFRZUEUuZXhlY3V0ZUNsaWVudEZ1bmN0aW9uIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5leGVjdXRlU2VsZWN0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09ic2VydmF0aW9uQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBpc0NsaWVudEZ1bmN0aW9uQ29tbWFuZChjb21tYW5kKSB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUud2FpdCB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuYXNzZXJ0aW9uIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5leGVjdXRlRXhwcmVzc2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQXNzZXJ0aW9uQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiAhIWNvbW1hbmQuYXNzZXJ0aW9uVHlwZTtcbn1cblxuZnVuY3Rpb24gaXNXaW5kb3dTd2l0Y2hpbmdDb21tYW5kIChjb21tYW5kKSB7XG4gICAgcmV0dXJuIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zd2l0Y2hUb0lmcmFtZSB8fCBjb21tYW5kLnR5cGUgPT09IFRZUEUuc3dpdGNoVG9NYWluV2luZG93O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FuU2V0RGVidWdnZXJCcmVha3BvaW50QmVmb3JlQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBjb21tYW5kLnR5cGUgIT09IFRZUEUuZGVidWcgJiYgIWlzQ2xpZW50RnVuY3Rpb25Db21tYW5kKGNvbW1hbmQpICYmICFpc1NlcnZpY2VDb21tYW5kKGNvbW1hbmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTY3JlZW5zaG90Q29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBjb21tYW5kLnR5cGUgPT09IFRZUEUudGFrZVNjcmVlbnNob3QgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnRha2VFbGVtZW50U2NyZWVuc2hvdCB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUudGFrZVNjcmVlbnNob3RPbkZhaWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Jlc2l6ZVdpbmRvd0NvbW1hbmQgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gY29tbWFuZC50eXBlID09PSBUWVBFLnJlc2l6ZVdpbmRvdyB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUucmVzaXplV2luZG93VG9GaXREZXZpY2UgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLm1heGltaXplV2luZG93O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCcm93c2VyTWFuaXB1bGF0aW9uQ29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBpc1NjcmVlbnNob3RDb21tYW5kKGNvbW1hbmQpIHx8IGlzUmVzaXplV2luZG93Q29tbWFuZChjb21tYW5kKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VydmljZUNvbW1hbmQgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gY29tbWFuZC50eXBlID09PSBUWVBFLnRlc3REb25lIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zaG93QXNzZXJ0aW9uUmV0cmllc1N0YXR1cyB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuaGlkZUFzc2VydGlvblJldHJpZXNTdGF0dXMgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnNldEJyZWFrcG9pbnQgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnRha2VTY3JlZW5zaG90T25GYWlsIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5yZWNvcmRlciB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuZ2V0UHJveHlVcmw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0V4ZWN1dGFibGVJblRvcFdpbmRvd09ubHkgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gY29tbWFuZC50eXBlID09PSBUWVBFLnRlc3REb25lIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zd2l0Y2hUb01haW5XaW5kb3cgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnNldE5hdGl2ZURpYWxvZ0hhbmRsZXIgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLmdldE5hdGl2ZURpYWxvZ0hpc3RvcnkgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLnNldFRlc3RTcGVlZCB8fFxuICAgICAgICAgICBjb21tYW5kLnR5cGUgPT09IFRZUEUuc2hvd0Fzc2VydGlvblJldHJpZXNTdGF0dXMgfHxcbiAgICAgICAgICAgY29tbWFuZC50eXBlID09PSBUWVBFLmhpZGVBc3NlcnRpb25SZXRyaWVzU3RhdHVzIHx8XG4gICAgICAgICAgIGNvbW1hbmQudHlwZSA9PT0gVFlQRS5zZXRCcmVha3BvaW50IHx8XG4gICAgICAgICAgIGlzQnJvd3Nlck1hbmlwdWxhdGlvbkNvbW1hbmQoY29tbWFuZCkgJiYgY29tbWFuZC50eXBlICE9PSBUWVBFLnRha2VFbGVtZW50U2NyZWVuc2hvdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSlNFeHByZXNzaW9uICh2YWwpIHtcbiAgICByZXR1cm4gdmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbC50eXBlID09PSBSQVdfQVBJX0pTX0VYUFJFU1NJT05fVFlQRSAmJlxuICAgICAgICAgICB0eXBlb2YgdmFsLnZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXhlY3V0YWJsZU9uQ2xpZW50Q29tbWFuZCAoY29tbWFuZCkge1xuICAgIHJldHVybiBjb21tYW5kLnR5cGUgIT09IFRZUEUud2FpdCAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUuc2V0UGFnZUxvYWRUaW1lb3V0ICYmXG4gICAgICAgICAgIGNvbW1hbmQudHlwZSAhPT0gVFlQRS5kZWJ1ZyAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUudXNlUm9sZSAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUuYXNzZXJ0aW9uICYmXG4gICAgICAgICAgIGNvbW1hbmQudHlwZSAhPT0gVFlQRS5leGVjdXRlRXhwcmVzc2lvbiAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUuZXhlY3V0ZUFzeW5jRXhwcmVzc2lvbiAmJlxuICAgICAgICAgICBjb21tYW5kLnR5cGUgIT09IFRZUEUuYWRkUmVxdWVzdEhvb2tzICYmXG4gICAgICAgICAgIGNvbW1hbmQudHlwZSAhPT0gVFlQRS5yZW1vdmVSZXF1ZXN0SG9va3M7XG59XG4iXX0=