obsidian-integration-testing 11.0.0 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/lib/cjs/appium-server-marker.cjs +115 -0
  2. package/dist/lib/cjs/appium-server-marker.d.cts +81 -0
  3. package/dist/lib/cjs/cli.cjs +104 -19
  4. package/dist/lib/cjs/cli.d.cts +16 -8
  5. package/dist/lib/cjs/community-plugin-registry.cjs +52 -0
  6. package/dist/lib/cjs/community-plugin-registry.d.cts +116 -0
  7. package/dist/lib/cjs/context-provider.cjs +12 -1
  8. package/dist/lib/cjs/context-provider.d.cts +26 -3
  9. package/dist/lib/cjs/demo-vault-bootstrap.cjs +148 -0
  10. package/dist/lib/cjs/demo-vault-bootstrap.d.cts +113 -0
  11. package/dist/lib/cjs/demo-vault-populate.cjs +36 -9
  12. package/dist/lib/cjs/demo-vault-populate.d.cts +70 -0
  13. package/dist/lib/cjs/eval-in-obsidian.cjs +1 -1
  14. package/dist/lib/cjs/eval-in-obsidian.d.cts +42 -13
  15. package/dist/lib/cjs/index.cjs +13 -1
  16. package/dist/lib/cjs/index.d.cts +8 -4
  17. package/dist/lib/cjs/installer-asset.cjs +1 -1
  18. package/dist/lib/cjs/installer-asset.d.cts +1 -1
  19. package/dist/lib/cjs/integration-setup-failed-error.cjs +62 -0
  20. package/dist/lib/cjs/integration-setup-failed-error.d.cts +66 -0
  21. package/dist/lib/cjs/jest/global-setup.cjs +2 -2
  22. package/dist/lib/cjs/jest/global-setup.d.cts +5 -1
  23. package/dist/lib/cjs/kill-process-tree.cjs +18 -7
  24. package/dist/lib/cjs/kill-process-tree.d.cts +10 -2
  25. package/dist/lib/cjs/library.cjs +1 -1
  26. package/dist/lib/cjs/mobile-input.cjs +161 -0
  27. package/dist/lib/cjs/mobile-input.d.cts +160 -0
  28. package/dist/lib/cjs/namespace-bootstrap.cjs +92 -9
  29. package/dist/lib/cjs/obsidian-installer.cjs +1 -1
  30. package/dist/lib/cjs/obsidian-metadata.cjs +123 -17
  31. package/dist/lib/cjs/obsidian-metadata.d.cts +17 -6
  32. package/dist/lib/cjs/obsidian-version-switch.cjs +3 -3
  33. package/dist/lib/cjs/release-catalog.cjs +73 -0
  34. package/dist/lib/cjs/release-catalog.d.cts +125 -0
  35. package/dist/lib/cjs/transport-appium.cjs +122 -1
  36. package/dist/lib/cjs/transport-appium.d.cts +51 -0
  37. package/dist/lib/cjs/transport-desktop-cdp.cjs +7 -1
  38. package/dist/lib/cjs/transport-desktop-cdp.d.cts +1 -0
  39. package/dist/lib/cjs/transport-factory.cjs +237 -32
  40. package/dist/lib/cjs/transport-factory.d.cts +10 -1
  41. package/dist/lib/cjs/vitest/global-setup.cjs +13 -7
  42. package/dist/lib/cjs/vitest/global-setup.d.cts +5 -1
  43. package/dist/lib/cjs/vitest/setup.cjs +2 -1
  44. package/dist/lib/cjs/vitest/setup.d.cts +5 -0
  45. package/dist/lib/cjs/vitest/typings.d.cts +6 -4
  46. package/dist/lib/cjs/webview-cdp.cjs +264 -0
  47. package/dist/lib/cjs/webview-cdp.d.cts +152 -0
  48. package/dist/lib/cjs/wedged-appium-server.cjs +113 -0
  49. package/dist/lib/cjs/wedged-appium-server.d.cts +187 -0
  50. package/dist/lib/esm/appium-server-marker.d.mts +81 -0
  51. package/dist/lib/esm/appium-server-marker.mjs +83 -0
  52. package/dist/lib/esm/cli.d.mts +16 -8
  53. package/dist/lib/esm/cli.mjs +110 -19
  54. package/dist/lib/esm/community-plugin-registry.d.mts +116 -0
  55. package/dist/lib/esm/community-plugin-registry.mjs +23 -0
  56. package/dist/lib/esm/context-provider.d.mts +26 -3
  57. package/dist/lib/esm/context-provider.mjs +10 -1
  58. package/dist/lib/esm/demo-vault-bootstrap.d.mts +113 -0
  59. package/dist/lib/esm/demo-vault-bootstrap.mjs +127 -0
  60. package/dist/lib/esm/demo-vault-populate.d.mts +70 -0
  61. package/dist/lib/esm/demo-vault-populate.mjs +33 -8
  62. package/dist/lib/esm/eval-in-obsidian.d.mts +42 -13
  63. package/dist/lib/esm/eval-in-obsidian.mjs +1 -1
  64. package/dist/lib/esm/index.d.mts +8 -4
  65. package/dist/lib/esm/index.mjs +16 -2
  66. package/dist/lib/esm/installer-asset.d.mts +1 -1
  67. package/dist/lib/esm/installer-asset.mjs +1 -1
  68. package/dist/lib/esm/integration-setup-failed-error.d.mts +66 -0
  69. package/dist/lib/esm/integration-setup-failed-error.mjs +38 -0
  70. package/dist/lib/esm/jest/global-setup.d.mts +5 -1
  71. package/dist/lib/esm/jest/global-setup.mjs +2 -2
  72. package/dist/lib/esm/kill-process-tree.d.mts +10 -2
  73. package/dist/lib/esm/kill-process-tree.mjs +16 -6
  74. package/dist/lib/esm/library.mjs +1 -1
  75. package/dist/lib/esm/mobile-input.d.mts +160 -0
  76. package/dist/lib/esm/mobile-input.mjs +132 -0
  77. package/dist/lib/esm/namespace-bootstrap.mjs +95 -9
  78. package/dist/lib/esm/obsidian-installer.mjs +1 -1
  79. package/dist/lib/esm/obsidian-metadata.d.mts +17 -6
  80. package/dist/lib/esm/obsidian-metadata.mjs +123 -17
  81. package/dist/lib/esm/obsidian-version-switch.mjs +3 -3
  82. package/dist/lib/esm/release-catalog.d.mts +125 -0
  83. package/dist/lib/esm/release-catalog.mjs +46 -0
  84. package/dist/lib/esm/transport-appium.d.mts +51 -0
  85. package/dist/lib/esm/transport-appium.mjs +126 -1
  86. package/dist/lib/esm/transport-desktop-cdp.d.mts +1 -0
  87. package/dist/lib/esm/transport-desktop-cdp.mjs +7 -1
  88. package/dist/lib/esm/transport-factory.d.mts +10 -1
  89. package/dist/lib/esm/transport-factory.mjs +249 -35
  90. package/dist/lib/esm/vitest/global-setup.d.mts +5 -1
  91. package/dist/lib/esm/vitest/global-setup.mjs +14 -7
  92. package/dist/lib/esm/vitest/setup.d.mts +5 -0
  93. package/dist/lib/esm/vitest/setup.mjs +3 -1
  94. package/dist/lib/esm/vitest/typings.d.mts +6 -4
  95. package/dist/lib/esm/webview-cdp.d.mts +152 -0
  96. package/dist/lib/esm/webview-cdp.mjs +236 -0
  97. package/dist/lib/esm/wedged-appium-server.d.mts +187 -0
  98. package/dist/lib/esm/wedged-appium-server.mjs +86 -0
  99. package/package.json +2 -1
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var integration_setup_failed_error_exports = {};
20
+ __export(integration_setup_failed_error_exports, {
21
+ IntegrationSetupFailedError: () => IntegrationSetupFailedError
22
+ });
23
+ module.exports = __toCommonJS(integration_setup_failed_error_exports);
24
+ class IntegrationSetupFailedError extends Error {
25
+ /**
26
+ The `name` of the original error the global setup threw.
27
+ */
28
+ errorName;
29
+ /**
30
+ The original setup failure, as stringified by the adapter that caught it.
31
+ */
32
+ originalMessage;
33
+ /**
34
+ The transport the failed project is configured for.
35
+ */
36
+ transportLabel;
37
+ /**
38
+ * Creates the error from the failure the global setup published to its workers.
39
+ *
40
+ * @param params - The configured transport plus the original error's name and message.
41
+ */
42
+ constructor(params) {
43
+ const {
44
+ errorName,
45
+ message,
46
+ transportLabel
47
+ } = params;
48
+ super(
49
+ `Integration setup for transport "${transportLabel}" failed, so its tests cannot run. Original error: ${message}`
50
+ );
51
+ this.name = "IntegrationSetupFailedError";
52
+ this.errorName = errorName;
53
+ this.originalMessage = message;
54
+ this.transportLabel = transportLabel;
55
+ this.stack = `${this.name}: ${this.message}`;
56
+ }
57
+ }
58
+ // Annotate the CommonJS export names for ESM import in node:
59
+ 0 && (module.exports = {
60
+ IntegrationSetupFailedError
61
+ });
62
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ludGVncmF0aW9uLXNldHVwLWZhaWxlZC1lcnJvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBkaXN0aW5jdCBlcnJvciB0aHJvd24gaW4gYSAqKnRlc3Qgd29ya2VyKiogd2hlbiB0aGF0IHByb2plY3QncyBpbnRlZ3JhdGlvblxuICogZ2xvYmFsIHNldHVwIGFscmVhZHkgZmFpbGVkIGluIHRoZSBtYWluIHByb2Nlc3MuXG4gKlxuICogV2l0aG91dCBpdCBhIHdvcmtlciB3aG9zZSBzZXR1cCBmYWlsZWQgZ2V0cyBubyB0cmFuc3BvcnQgb3B0aW9ucyBhdCBhbGwsIGFuZFxuICogc2lsZW50bHkgcmVidWlsZHMgdGhlIG93bmVkICoqZGVza3RvcCoqIENEUCBkZWZhdWx0IFx1MjAxNCBzbyBhbiBBbmRyb2lkIHByb2plY3Qnc1xuICogc3VpdGUgd291bGQgcnVuIG9uIGRlc2t0b3AsIGFuZCB0aGVuIGRpZSBvbiBgRmFpbGVkIHRvIHBhcnNlIFVSTCBmcm9tIC9qc29uYFxuICogKGFuIG93bmVkIGluc3RhbmNlIG5vYm9keSBsYXVuY2hlZCBoYXMgbm8gQ0RQIGVuZHBvaW50KS4gRXZlcnkgZmlsZSBpbiB0aGVcbiAqIHByb2plY3QgcmVwb3J0ZWQgdGhhdCBtYXNrIHdoaWxlIHRoZSByZWFsIGNhdXNlIGFwcGVhcmVkIG9uY2UsIGZhciBhYm92ZSwgaW5cbiAqIHRoZSBzZXR1cCBsb2cuIFRoaXMgZXJyb3IgcmVwbGFjZXMgdGhlIG1hc2s6IGl0IGlzIHJhaXNlZCBiZWZvcmUgYW55IHRyYW5zcG9ydFxuICogaXMgY29uc3RydWN0ZWQsIGFuZCBpdCBjYXJyaWVzIHRoZSBvcmlnaW5hbCBzZXR1cCBmYWlsdXJlIHZlcmJhdGltLCBzbyBlYWNoXG4gKiByZXBvcnQgbmFtZXMgdGhlIGFjdHVhbCBjYXVzZS5cbiAqXG4gKiBJdCBkZWxpYmVyYXRlbHkgY2FycmllcyBubyBzdGFjayB0cmFjZTogdGhlIGZhaWx1cmUgaGFwcGVuZWQgaW4gdGhlIGdsb2JhbFxuICogc2V0dXAsIHdoaWNoIGFscmVhZHkgbG9nZ2VkIGl0cyBvd24gdHJhY2UsIGFuZCBhIHNlY29uZCB0cmFjZSBwb2ludGluZyBpbnRvXG4gKiB0aGUgaGFybmVzcyBvbmx5IHN1Z2dlc3RzIHRoZSBoYXJuZXNzIGJyb2tlLlxuICovXG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3J9IGNvbnN0cnVjdG9yLiBUaGlzIGlzIGFsc28gdGhlXG4gKiBzaGFwZSB0aGUgZnJhbWV3b3JrIGFkYXB0ZXIgcHVibGlzaGVzIHRvIGl0cyB3b3JrZXJzIChWaXRlc3Q6IGBwcm92aWRlKCdzZXR1cEVycm9yJylgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICBUaGUgYG5hbWVgIG9mIHRoZSBvcmlnaW5hbCBlcnJvciB0aGUgZ2xvYmFsIHNldHVwIHRocmV3LCBzbyBhIGNhbGxlciBjYW4gdGVsbCBhblxuICBleHBlY3RlZCBza2lwIChgRGVza3RvcE9ubHlQbHVnaW5Ta2lwRXJyb3JgKSBmcm9tIGEgcmVhbCBicmVha2FnZSB3aXRob3V0IHRoZVxuICBvcmlnaW5hbCBlcnJvciBvYmplY3QsIHdoaWNoIGRvZXMgbm90IHN1cnZpdmUgdGhlIHRyaXAgdG8gYSB3b3JrZXIuXG4gICAqL1xuICByZWFkb25seSBlcnJvck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgVGhlIG9yaWdpbmFsIHNldHVwIGZhaWx1cmUsIGFscmVhZHkgc3RyaW5naWZpZWQgYnkgdGhlIGFkYXB0ZXIgdGhhdCBjYXVnaHQgaXQuXG4gICAqL1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFRoZSB0cmFuc3BvcnQgdGhlIGZhaWxlZCBwcm9qZWN0IGlzIGNvbmZpZ3VyZWQgZm9yIChlLmcuIGBvYnNpZGlhbi1hbmRyb2lkLWFwcGl1bWApLFxuICBzbyB0aGUgcmVwb3J0IG5hbWVzIHRoZSBwbGF0Zm9ybSB0aGUgc3VpdGUgd2FzIG1lYW50IHRvIHJ1biBvbi5cbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zcG9ydExhYmVsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gYSB0ZXN0IHdvcmtlciBhc2tzIGZvciB0aGUgYW1iaWVudCB0cmFuc3BvcnQgb2YgYSBwcm9qZWN0IHdob3NlXG4gKiBnbG9iYWwgc2V0dXAgZmFpbGVkLiBDYXJyaWVzIHRoZSBjb25maWd1cmVkIHRyYW5zcG9ydCwgdGhlIG9yaWdpbmFsIGVycm9yJ3NcbiAqIGBuYW1lYCwgYW5kIGl0cyBtZXNzYWdlLCBzbyBjYWxsZXJzIGNhbiBgaW5zdGFuY2VvZmAtbWF0Y2ggYW5kIHJlcG9ydCB0aGUgcmVhbFxuICogY2F1c2UgaW5zdGVhZCBvZiBhIGRvd25zdHJlYW0gdHJhbnNwb3J0IGVycm9yLlxuICovXG5leHBvcnQgY2xhc3MgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKipcbiAgVGhlIGBuYW1lYCBvZiB0aGUgb3JpZ2luYWwgZXJyb3IgdGhlIGdsb2JhbCBzZXR1cCB0aHJldy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlcnJvck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgVGhlIG9yaWdpbmFsIHNldHVwIGZhaWx1cmUsIGFzIHN0cmluZ2lmaWVkIGJ5IHRoZSBhZGFwdGVyIHRoYXQgY2F1Z2h0IGl0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9yaWdpbmFsTWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgdHJhbnNwb3J0IHRoZSBmYWlsZWQgcHJvamVjdCBpcyBjb25maWd1cmVkIGZvci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0cmFuc3BvcnRMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBlcnJvciBmcm9tIHRoZSBmYWlsdXJlIHRoZSBnbG9iYWwgc2V0dXAgcHVibGlzaGVkIHRvIGl0cyB3b3JrZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGNvbmZpZ3VyZWQgdHJhbnNwb3J0IHBsdXMgdGhlIG9yaWdpbmFsIGVycm9yJ3MgbmFtZSBhbmQgbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IEludGVncmF0aW9uU2V0dXBGYWlsZWRFcnJvckNvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgY29uc3Qge1xuICAgICAgZXJyb3JOYW1lLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHRyYW5zcG9ydExhYmVsXG4gICAgfSA9IHBhcmFtcztcbiAgICBzdXBlcihcbiAgICAgIGBJbnRlZ3JhdGlvbiBzZXR1cCBmb3IgdHJhbnNwb3J0IFwiJHt0cmFuc3BvcnRMYWJlbH1cIiBmYWlsZWQsIHNvIGl0cyB0ZXN0cyBjYW5ub3QgcnVuLiBgXG4gICAgICAgICsgYE9yaWdpbmFsIGVycm9yOiAke21lc3NhZ2V9YFxuICAgICk7XG4gICAgdGhpcy5uYW1lID0gJ0ludGVncmF0aW9uU2V0dXBGYWlsZWRFcnJvcic7XG4gICAgdGhpcy5lcnJvck5hbWUgPSBlcnJvck5hbWU7XG4gICAgdGhpcy5vcmlnaW5hbE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMudHJhbnNwb3J0TGFiZWwgPSB0cmFuc3BvcnRMYWJlbDtcbiAgICAvLyBUaGUgZ2xvYmFsIHNldHVwIGFscmVhZHkgbG9nZ2VkIHRoZSBvcmlnaW5hbCBmYWlsdXJlIHdpdGggaXRzIG93biB0cmFjZS4gQSBzZWNvbmQgdHJhY2UsIHBvaW50aW5nXG4gICAgLy8gQXQgdGhlIGhhcm5lc3MgaW50ZXJuYWxzIHRoYXQgbWVyZWx5IHJlLXJhaXNlZCBpdCwgaXMgd2hhdCBtYWtlcyB0aGUgcmVhbCBjYXVzZSBoYXJkIHRvIGZpbmQuXG4gICAgdGhpcy5zdGFjayA9IGAke3RoaXMubmFtZX06ICR7dGhpcy5tZXNzYWdlfWA7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrRE8sTUFBTSxvQ0FBb0MsTUFBTTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSXJDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPVCxZQUFZLFFBQXNEO0FBQ3ZFLFVBQU07QUFBQSxNQUNKO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLElBQUk7QUFDSjtBQUFBLE1BQ0Usb0NBQW9DLGNBQWMsc0RBQzNCLE9BQU87QUFBQSxJQUNoQztBQUNBLFNBQUssT0FBTztBQUNaLFNBQUssWUFBWTtBQUNqQixTQUFLLGtCQUFrQjtBQUN2QixTQUFLLGlCQUFpQjtBQUd0QixTQUFLLFFBQVEsR0FBRyxLQUFLLElBQUksS0FBSyxLQUFLLE9BQU87QUFBQSxFQUM1QztBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,66 @@
1
+ /**
2
+ * @file
3
+ *
4
+ * The distinct error thrown in a **test worker** when that project's integration
5
+ * global setup already failed in the main process.
6
+ *
7
+ * Without it a worker whose setup failed gets no transport options at all, and
8
+ * silently rebuilds the owned **desktop** CDP default — so an Android project's
9
+ * suite would run on desktop, and then die on `Failed to parse URL from /json`
10
+ * (an owned instance nobody launched has no CDP endpoint). Every file in the
11
+ * project reported that mask while the real cause appeared once, far above, in
12
+ * the setup log. This error replaces the mask: it is raised before any transport
13
+ * is constructed, and it carries the original setup failure verbatim, so each
14
+ * report names the actual cause.
15
+ *
16
+ * It deliberately carries no stack trace: the failure happened in the global
17
+ * setup, which already logged its own trace, and a second trace pointing into
18
+ * the harness only suggests the harness broke.
19
+ */
20
+ /**
21
+ * Parameters for the {@link IntegrationSetupFailedError} constructor. This is also the
22
+ * shape the framework adapter publishes to its workers (Vitest: `provide('setupError')`).
23
+ */
24
+ export interface IntegrationSetupFailedErrorConstructorParams {
25
+ /**
26
+ The `name` of the original error the global setup threw, so a caller can tell an
27
+ expected skip (`DesktopOnlyPluginSkipError`) from a real breakage without the
28
+ original error object, which does not survive the trip to a worker.
29
+ */
30
+ readonly errorName: string;
31
+ /**
32
+ The original setup failure, already stringified by the adapter that caught it.
33
+ */
34
+ readonly message: string;
35
+ /**
36
+ The transport the failed project is configured for (e.g. `obsidian-android-appium`),
37
+ so the report names the platform the suite was meant to run on.
38
+ */
39
+ readonly transportLabel: string;
40
+ }
41
+ /**
42
+ * Thrown when a test worker asks for the ambient transport of a project whose
43
+ * global setup failed. Carries the configured transport, the original error's
44
+ * `name`, and its message, so callers can `instanceof`-match and report the real
45
+ * cause instead of a downstream transport error.
46
+ */
47
+ export declare class IntegrationSetupFailedError extends Error {
48
+ /**
49
+ The `name` of the original error the global setup threw.
50
+ */
51
+ readonly errorName: string;
52
+ /**
53
+ The original setup failure, as stringified by the adapter that caught it.
54
+ */
55
+ readonly originalMessage: string;
56
+ /**
57
+ The transport the failed project is configured for.
58
+ */
59
+ readonly transportLabel: string;
60
+ /**
61
+ * Creates the error from the failure the global setup published to its workers.
62
+ *
63
+ * @param params - The configured transport plus the original error's name and message.
64
+ */
65
+ constructor(params: IntegrationSetupFailedErrorConstructorParams);
66
+ }
@@ -39,7 +39,7 @@ function createSetup(options) {
39
39
  setupResult = await (0, import_global_setup_core.coreSetup)({
40
40
  enableCommunityPlugins: options?.enableCommunityPlugins,
41
41
  installPlugin: options?.installPlugin,
42
- populate: options?.populate?.(),
42
+ populate: await options?.populate?.(),
43
43
  transportOptions
44
44
  });
45
45
  globalThis.__obsidianIntegrationTesting = {
@@ -76,4 +76,4 @@ var global_setup_default = setup;
76
76
  setup,
77
77
  teardown
78
78
  });
79
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2plc3QvZ2xvYmFsLXNldHVwLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogSmVzdCBnbG9iYWwgc2V0dXAgYW5kIHRlYXJkb3duIGFkYXB0ZXIuXG4gKlxuICogRGVsZWdhdGVzIHRvIHRoZSBmcmFtZXdvcmstYWdub3N0aWMgY29yZSBhbmQgYnJpZGdlcyBjb250ZXh0XG4gKiB0byB0ZXN0IHdvcmtlcnMgdmlhIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLmNqcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQuY2pzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcblxuaW1wb3J0IHtcbiAgc2V0VHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBzZXRWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuLi9jb250ZXh0LXByb3ZpZGVyLmNqcyc7XG5pbXBvcnQge1xuICBjb3JlU2V0dXAsXG4gIGNvcmVUZWFyZG93blxufSBmcm9tICcuLi9nbG9iYWwtc2V0dXAtY29yZS5janMnO1xuaW1wb3J0IHsgVGVtcG9yYXJ5VmF1bHQgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQuY2pzJztcblxuLyoqXG4gKiBTaGFwZSBvZiBgZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nYC5cbiAqXG4gKiBDb25zdW1lcnMgbWF5IHByZS1wb3B1bGF0ZSBgdHJhbnNwb3J0T3B0aW9uc2AgYmVmb3JlIHRoZSBnbG9iYWwgc2V0dXAgcnVuc1xuICogKGUuZy4sIHZpYSBKZXN0IGNvbmZpZyBgZ2xvYmFsc2ApLiBUaGUgc2V0dXAgdGhlbiBhZGRzIGB0ZW1wb3JhcnlWYXVsdFBhdGhgLlxuICovXG5pbnRlcmZhY2UgT2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdHbG9iYWwge1xuICAvKipcbiAgVGVtcCB2YXVsdCBwYXRoLCBzZXQgYnkgdGhlIGdsb2JhbCBzZXR1cCBmb3IgdGVzdCB3b3JrZXJzLlxuICAgKi9cbiAgdGVtcG9yYXJ5VmF1bHRQYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICBUcmFuc3BvcnQgb3B0aW9ucy4gU2V0IGJ5IHRoZSBjb25zdW1lciBiZWZvcmUgc2V0dXAsIG9yIGJ5IHRoZSBzZXR1cCBpdHNlbGYuXG4gICAqL1xuICB0cmFuc3BvcnRPcHRpb25zPzogT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSB2YXJzLW9uLXRvcCAtLSBSZXF1aXJlZCBmb3IgYGRlY2xhcmUgZ2xvYmFsYCBhdWdtZW50YXRpb24uICovXG5kZWNsYXJlIGdsb2JhbCB7XG4gIC8qKlxuICAgKiBOYW1lc3BhY2UgZm9yIGFsbCBgb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZ2AgZ2xvYmFsIHN0YXRlLlxuICAgKiBDb25zdW1lcnMgY29uZmlndXJlIHRyYW5zcG9ydCBvcHRpb25zIGhlcmU7IHRoZSBzZXR1cCBwb3B1bGF0ZXMgdGhlIHJlc3QuXG4gICAqL1xuICB2YXIgX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZzogT2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdHbG9iYWwgfCB1bmRlZmluZWQ7XG59XG4vKiBlc2xpbnQtZW5hYmxlIHZhcnMtb24tdG9wIC0tIEVuZCBvZiBgZGVjbGFyZSBnbG9iYWxgIGJsb2NrLiAqL1xuXG5zZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIoKCkgPT4gZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nPy50cmFuc3BvcnRPcHRpb25zKTtcbnNldFZhdWx0UGF0aFJlc29sdmVyKCgpID0+IGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZz8udGVtcG9yYXJ5VmF1bHRQYXRoKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgY3JlYXRlU2V0dXB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNldHVwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDb21tdW5pdHktcGx1Z2luIGlkcyB0byBlbmFibGUgaW4gdGhlIHZhdWx0IGluIGFkZGl0aW9uIHRvIHRoZSBwbHVnaW4tdW5kZXItdGVzdCxcbiAgICogYWZ0ZXIgaXQgaXMgZW5hYmxlZCAoc2VlIHtAbGluayBDb3JlU2V0dXBQYXJhbXMuZW5hYmxlQ29tbXVuaXR5UGx1Z2luc30pLiBTZWVkIGVhY2hcbiAgICogcGx1Z2luJ3MgYnVpbHQgZmlsZXMgdmlhIHtAbGluayBDcmVhdGVTZXR1cE9wdGlvbnMucG9wdWxhdGV9IChlLmcuIHdpdGggYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVgKVxuICAgKiBzbyB0aGUgZW5hYmxlIGZpbmRzIHRoZW0gb24gZGlzay5cbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUNvbW11bml0eVBsdWdpbnM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIGJ1aWx0IHBsdWdpbiBpbiB0aGUgdGVtcCB2YXVsdC4gRGVmYXVsdHNcbiAgICogdG8gYHRydWVgLiBTZXQgdG8gYGZhbHNlYCBmb3IgYSAqKm5vbi1wbHVnaW4qKiBjb25zdW1lciB0aGF0IG9ubHkgbmVlZHMgYVxuICAgKiByZWdpc3RlcmVkLCBlbXB0eSB2YXVsdCB0byBgZXZhbEluT2JzaWRpYW5gIGFnYWluc3QgXHUyMDE0IHRoZSBvd25lZCBpbnN0YW5jZSBpc1xuICAgKiBzdGlsbCBsYXVuY2hlZCBhbmQgaXRzIGVuZHBvaW50IHB1Ymxpc2hlZCB0byB3b3JrZXJzLCBzbyByZS1leHBvcnRpbmdcbiAgICogYGNyZWF0ZVNldHVwKHsgaW5zdGFsbFBsdWdpbjogZmFsc2UgfSlgIHJldXNlcyB0aGUgc2FtZSBhdHRhY2ggd2lyaW5nIHdpdGggbm9cbiAgICogcGx1Z2luIGNvcHkvZW5hYmxlLiBTZWUge0BsaW5rIENvcmVTZXR1cFBhcmFtcy5pbnN0YWxsUGx1Z2lufS5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxQbHVnaW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGZpbGVzL2ZvbGRlcnMgdG8gd3JpdGUgaW50byB0aGUgdmF1bHQgYmVmb3JlIE9ic2lkaWFuIG9wZW5zIGl0IChzZWVcbiAgICoge0BsaW5rIENvcmVTZXR1cFBhcmFtcy5wb3B1bGF0ZX0pLiBBIHRodW5rIHNvIGxhcmdlIGZpeHR1cmVzIGFyZSBidWlsdCBsYXppbHksXG4gICAqIG9uY2UsIGluIHRoZSBzZXR1cCBwcm9jZXNzLlxuICAgKi9cbiAgcG9wdWxhdGU/KHRoaXM6IHZvaWQpOiBQb3B1bGF0ZUZpbGVzUGFyYW1zO1xufVxuXG4vKipcbiAqIEEgSmVzdCBgZ2xvYmFsU2V0dXBgIC8gYGdsb2JhbFRlYXJkb3duYCBtb2R1bGUncyBgc2V0dXBgIC8gYHRlYXJkb3duYCBwYWlyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEplc3RHbG9iYWxTZXR1cCB7XG4gIHNldHVwKHRoaXM6IHZvaWQpOiBQcm9taXNlPHZvaWQ+O1xuICB0ZWFyZG93bih0aGlzOiB2b2lkKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgSmVzdCBnbG9iYWwgc2V0dXAvdGVhcmRvd24gcGFpciwgb3B0aW9uYWxseSBwcmUtcG9wdWxhdGluZyB0aGUgdmF1bHRcbiAqIGJlZm9yZSBPYnNpZGlhbiBvcGVucyBpdCBcdTIwMTQgdXNlIHRoaXMgZm9yIGEgZGVkaWNhdGVkIGxhcmdlLXZhdWx0L3BlcmZvcm1hbmNlXG4gKiBzZXR1cC4gVGhlIHBsYWluIHtAbGluayBzZXR1cH0gLyB7QGxpbmsgdGVhcmRvd259IGV4cG9ydHMgYXJlIHRoZSBuby1wb3B1bGF0ZVxuICogY2FzZSAoYGNyZWF0ZVNldHVwKClgKS4gUGFzcyBgeyBpbnN0YWxsUGx1Z2luOiBmYWxzZSB9YCBmb3IgYSBub24tcGx1Z2luIGNvbnN1bWVyXG4gKiB0aGF0IG9ubHkgbmVlZHMgYSByZWdpc3RlcmVkLCBlbXB0eSB2YXVsdCAoc2VlIHtAbGluayBDcmVhdGVTZXR1cE9wdGlvbnMuaW5zdGFsbFBsdWdpbn0pLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gU2V0dXAgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBgc2V0dXBgIGFuZCBgdGVhcmRvd25gIGZ1bmN0aW9ucyB0byByZS1leHBvcnQgZnJvbSBhIGBnbG9iYWxTZXR1cGAgbW9kdWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2V0dXAob3B0aW9ucz86IENyZWF0ZVNldHVwT3B0aW9ucyk6IEplc3RHbG9iYWxTZXR1cCB7XG4gIGxldCBzZXR1cFJlc3VsdDogQ29yZVNldHVwUmVzdWx0IHwgdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7IHNldHVwLCB0ZWFyZG93biB9O1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHNldHVwKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRyYW5zcG9ydE9wdGlvbnMgPSBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3Rpbmc/LnRyYW5zcG9ydE9wdGlvbnM7XG5cbiAgICBzZXR1cFJlc3VsdCA9IGF3YWl0IGNvcmVTZXR1cCh7XG4gICAgICBlbmFibGVDb21tdW5pdHlQbHVnaW5zOiBvcHRpb25zPy5lbmFibGVDb21tdW5pdHlQbHVnaW5zLFxuICAgICAgaW5zdGFsbFBsdWdpbjogb3B0aW9ucz8uaW5zdGFsbFBsdWdpbixcbiAgICAgIHBvcHVsYXRlOiBvcHRpb25zPy5wb3B1bGF0ZT8uKCksXG4gICAgICB0cmFuc3BvcnRPcHRpb25zXG4gICAgfSk7XG5cbiAgICBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmcgPSB7XG4gICAgICAuLi5nbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmcsXG4gICAgICB0ZW1wb3JhcnlWYXVsdFBhdGg6IHNldHVwUmVzdWx0LnRlbXBvcmFyeVZhdWx0LnBhdGgsXG4gICAgICB0cmFuc3BvcnRPcHRpb25zOiBzZXR1cFJlc3VsdC50cmFuc3BvcnRPcHRpb25zXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHRlYXJkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IGNvcmVUZWFyZG93bihzZXR1cFJlc3VsdCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB0ZW1wb3JhcnkgdmF1bHQgcHJvdmlkZWQgYnkgdGhlIGdsb2JhbCBzZXR1cC5cbiAqXG4gKiBSZWFkcyB0aGUgdmF1bHQgcGF0aCBmcm9tIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmcudGVtcG9yYXJ5VmF1bHRQYXRoYCxcbiAqIHdoaWNoIGlzIHNldCBieSB0aGUgSmVzdCBnbG9iYWwgc2V0dXAuXG4gKlxuICogQHJldHVybnMgVGhlIHRlbXBvcmFyeSB2YXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbXBvcmFyeVZhdWx0KCk6IFRlbXBvcmFyeVZhdWx0IHtcbiAgY29uc3QgdGVtcG9yYXJ5VmF1bHRQYXRoID0gZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nPy50ZW1wb3JhcnlWYXVsdFBhdGg7XG4gIGlmICghdGVtcG9yYXJ5VmF1bHRQYXRoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ2dsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZy50ZW1wb3JhcnlWYXVsdFBhdGggaXMgbm90IHNldC4gRGlkIHlvdSBjb25maWd1cmUgb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy9qZXN0LWdsb2JhbC1zZXR1cCBhcyBhIEplc3QgZ2xvYmFsU2V0dXA/J1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIG5ldyBUZW1wb3JhcnlWYXVsdCh0ZW1wb3JhcnlWYXVsdFBhdGgpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHRyYW5zcG9ydCBvcHRpb25zIHByb3ZpZGVkIGJ5IHRoZSBnbG9iYWwgc2V0dXAuXG4gKlxuICogQHJldHVybnMgVGhlIHRyYW5zcG9ydCBvcHRpb25zLCBvciBgdW5kZWZpbmVkYCBpZiBub3QgY29uZmlndXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zcG9ydE9wdGlvbnMoKTogT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZz8udHJhbnNwb3J0T3B0aW9ucztcbn1cblxuY29uc3QgZGVmYXVsdEdsb2JhbFNldHVwID0gY3JlYXRlU2V0dXAoKTtcblxuLyoqXG4gKiBKZXN0IGdsb2JhbCBzZXR1cCBmdW5jdGlvbiAobm8gcHJlLXBvcHVsYXRpb24pLlxuICpcbiAqIENvcGllcyB0aGUgYnVpbHQgcGx1Z2luIGludG8gYSB0ZW1wb3JhcnkgdmF1bHQsIGVuYWJsZXMgaXQgdmlhIGEgcmVuZGVyZXIgZXZhbFxuICogb3ZlciB0aGUgdHJhbnNwb3J0LCBhbmQgcG9wdWxhdGVzIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdgIGZvciB0ZXN0cy5cbiAqXG4gKiBUcmFuc3BvcnQgb3B0aW9ucyBhcmUgcmVhZCBmcm9tIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmcudHJhbnNwb3J0T3B0aW9uc2AuXG4gKiBTZXQgdGhpcyBpbiB5b3VyIEplc3QgY29uZmlnIHZpYSB0aGUgYGdsb2JhbHNgIG9wdGlvbi5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHNldHVwIGNvbXBsZXRlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldHVwID0gZGVmYXVsdEdsb2JhbFNldHVwLnNldHVwO1xuXG4vKipcbiAqIEplc3QgZ2xvYmFsIHRlYXJkb3duIGZ1bmN0aW9uLlxuICpcbiAqIFJlbW92ZXMgdGhlIHRlbXBvcmFyeSB2YXVsdCBjcmVhdGVkIGR1cmluZyBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRlYXJkb3duIGNvbXBsZXRlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlYXJkb3duID0gZGVmYXVsdEdsb2JhbFNldHVwLnRlYXJkb3duO1xuXG4vLyBKZXN0J3MgYGdsb2JhbFNldHVwYCBjb25maWcgY2FuIHJlZmVyZW5jZSB0aGlzIG1vZHVsZSBkaXJlY3RseSBiZWNhdXNlIGl0cyBkZWZhdWx0IGV4cG9ydCBpcyB0aGUgc2V0dXAgZnVuY3Rpb24uXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tZGVmYXVsdC1leHBvcnQgLS0gSmVzdCdzIGdsb2JhbFNldHVwIGxvYWRlciByZXF1aXJlcyBhIGRlZmF1bHQtZXhwb3J0IGZ1bmN0aW9uLlxuZXhwb3J0IGRlZmF1bHQgc2V0dXA7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWVBLDhCQUdPO0FBQ1AsK0JBR087QUFDUCw2QkFBK0I7QUFBQSxJQThCL0IscURBQTRCLE1BQU0sV0FBVyw4QkFBOEIsZ0JBQWdCO0FBQUEsSUFDM0YsOENBQXFCLE1BQU0sV0FBVyw4QkFBOEIsa0JBQWtCO0FBa0QvRSxTQUFTLFlBQVksU0FBK0M7QUFDekUsTUFBSTtBQUVKLFNBQU8sRUFBRSxPQUFBQSxRQUFPLFVBQUFDLFVBQVM7QUFFekIsaUJBQWVELFNBQXVCO0FBQ3BDLFVBQU0sbUJBQW1CLFdBQVcsOEJBQThCO0FBRWxFLGtCQUFjLFVBQU0sb0NBQVU7QUFBQSxNQUM1Qix3QkFBd0IsU0FBUztBQUFBLE1BQ2pDLGVBQWUsU0FBUztBQUFBLE1BQ3hCLFVBQVUsU0FBUyxXQUFXO0FBQUEsTUFDOUI7QUFBQSxJQUNGLENBQUM7QUFFRCxlQUFXLCtCQUErQjtBQUFBLE1BQ3hDLEdBQUcsV0FBVztBQUFBLE1BQ2Qsb0JBQW9CLFlBQVksZUFBZTtBQUFBLE1BQy9DLGtCQUFrQixZQUFZO0FBQUEsSUFDaEM7QUFBQSxFQUNGO0FBRUEsaUJBQWVDLFlBQTBCO0FBQ3ZDLGNBQU0sdUNBQWEsV0FBVztBQUFBLEVBQ2hDO0FBQ0Y7QUFVTyxTQUFTLG9CQUFvQztBQUNsRCxRQUFNLHFCQUFxQixXQUFXLDhCQUE4QjtBQUNwRSxNQUFJLENBQUMsb0JBQW9CO0FBQ3ZCLFVBQU0sSUFBSTtBQUFBLE1BQ1I7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNBLFNBQU8sSUFBSSxzQ0FBZSxrQkFBa0I7QUFDOUM7QUFPTyxTQUFTLHNCQUE0RDtBQUMxRSxTQUFPLFdBQVcsOEJBQThCO0FBQ2xEO0FBRUEsTUFBTSxxQkFBcUIsWUFBWTtBQWFoQyxNQUFNLFFBQVEsbUJBQW1CO0FBU2pDLE1BQU0sV0FBVyxtQkFBbUI7QUFJM0MsSUFBTyx1QkFBUTsiLAogICJuYW1lcyI6IFsic2V0dXAiLCAidGVhcmRvd24iXQp9Cg==
79
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2plc3QvZ2xvYmFsLXNldHVwLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogSmVzdCBnbG9iYWwgc2V0dXAgYW5kIHRlYXJkb3duIGFkYXB0ZXIuXG4gKlxuICogRGVsZWdhdGVzIHRvIHRoZSBmcmFtZXdvcmstYWdub3N0aWMgY29yZSBhbmQgYnJpZGdlcyBjb250ZXh0XG4gKiB0byB0ZXN0IHdvcmtlcnMgdmlhIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLmNqcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQuY2pzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi4vdHJhbnNwb3J0LW9wdGlvbnMuY2pzJztcblxuaW1wb3J0IHtcbiAgc2V0VHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBzZXRWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuLi9jb250ZXh0LXByb3ZpZGVyLmNqcyc7XG5pbXBvcnQge1xuICBjb3JlU2V0dXAsXG4gIGNvcmVUZWFyZG93blxufSBmcm9tICcuLi9nbG9iYWwtc2V0dXAtY29yZS5janMnO1xuaW1wb3J0IHsgVGVtcG9yYXJ5VmF1bHQgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQuY2pzJztcblxuLyoqXG4gKiBTaGFwZSBvZiBgZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nYC5cbiAqXG4gKiBDb25zdW1lcnMgbWF5IHByZS1wb3B1bGF0ZSBgdHJhbnNwb3J0T3B0aW9uc2AgYmVmb3JlIHRoZSBnbG9iYWwgc2V0dXAgcnVuc1xuICogKGUuZy4sIHZpYSBKZXN0IGNvbmZpZyBgZ2xvYmFsc2ApLiBUaGUgc2V0dXAgdGhlbiBhZGRzIGB0ZW1wb3JhcnlWYXVsdFBhdGhgLlxuICovXG5pbnRlcmZhY2UgT2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdHbG9iYWwge1xuICAvKipcbiAgVGVtcCB2YXVsdCBwYXRoLCBzZXQgYnkgdGhlIGdsb2JhbCBzZXR1cCBmb3IgdGVzdCB3b3JrZXJzLlxuICAgKi9cbiAgdGVtcG9yYXJ5VmF1bHRQYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICBUcmFuc3BvcnQgb3B0aW9ucy4gU2V0IGJ5IHRoZSBjb25zdW1lciBiZWZvcmUgc2V0dXAsIG9yIGJ5IHRoZSBzZXR1cCBpdHNlbGYuXG4gICAqL1xuICB0cmFuc3BvcnRPcHRpb25zPzogT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSB2YXJzLW9uLXRvcCAtLSBSZXF1aXJlZCBmb3IgYGRlY2xhcmUgZ2xvYmFsYCBhdWdtZW50YXRpb24uICovXG5kZWNsYXJlIGdsb2JhbCB7XG4gIC8qKlxuICAgKiBOYW1lc3BhY2UgZm9yIGFsbCBgb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZ2AgZ2xvYmFsIHN0YXRlLlxuICAgKiBDb25zdW1lcnMgY29uZmlndXJlIHRyYW5zcG9ydCBvcHRpb25zIGhlcmU7IHRoZSBzZXR1cCBwb3B1bGF0ZXMgdGhlIHJlc3QuXG4gICAqL1xuICB2YXIgX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZzogT2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdHbG9iYWwgfCB1bmRlZmluZWQ7XG59XG4vKiBlc2xpbnQtZW5hYmxlIHZhcnMtb24tdG9wIC0tIEVuZCBvZiBgZGVjbGFyZSBnbG9iYWxgIGJsb2NrLiAqL1xuXG5zZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIoKCkgPT4gZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nPy50cmFuc3BvcnRPcHRpb25zKTtcbnNldFZhdWx0UGF0aFJlc29sdmVyKCgpID0+IGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZz8udGVtcG9yYXJ5VmF1bHRQYXRoKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgY3JlYXRlU2V0dXB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNldHVwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDb21tdW5pdHktcGx1Z2luIGlkcyB0byBlbmFibGUgaW4gdGhlIHZhdWx0IGluIGFkZGl0aW9uIHRvIHRoZSBwbHVnaW4tdW5kZXItdGVzdCxcbiAgICogYWZ0ZXIgaXQgaXMgZW5hYmxlZCAoc2VlIHtAbGluayBDb3JlU2V0dXBQYXJhbXMuZW5hYmxlQ29tbXVuaXR5UGx1Z2luc30pLiBTZWVkIGVhY2hcbiAgICogcGx1Z2luJ3MgYnVpbHQgZmlsZXMgdmlhIHtAbGluayBDcmVhdGVTZXR1cE9wdGlvbnMucG9wdWxhdGV9IChlLmcuIHdpdGggYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVgKVxuICAgKiBzbyB0aGUgZW5hYmxlIGZpbmRzIHRoZW0gb24gZGlzay5cbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUNvbW11bml0eVBsdWdpbnM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIGJ1aWx0IHBsdWdpbiBpbiB0aGUgdGVtcCB2YXVsdC4gRGVmYXVsdHNcbiAgICogdG8gYHRydWVgLiBTZXQgdG8gYGZhbHNlYCBmb3IgYSAqKm5vbi1wbHVnaW4qKiBjb25zdW1lciB0aGF0IG9ubHkgbmVlZHMgYVxuICAgKiByZWdpc3RlcmVkLCBlbXB0eSB2YXVsdCB0byBgZXZhbEluT2JzaWRpYW5gIGFnYWluc3QgXHUyMDE0IHRoZSBvd25lZCBpbnN0YW5jZSBpc1xuICAgKiBzdGlsbCBsYXVuY2hlZCBhbmQgaXRzIGVuZHBvaW50IHB1Ymxpc2hlZCB0byB3b3JrZXJzLCBzbyByZS1leHBvcnRpbmdcbiAgICogYGNyZWF0ZVNldHVwKHsgaW5zdGFsbFBsdWdpbjogZmFsc2UgfSlgIHJldXNlcyB0aGUgc2FtZSBhdHRhY2ggd2lyaW5nIHdpdGggbm9cbiAgICogcGx1Z2luIGNvcHkvZW5hYmxlLiBTZWUge0BsaW5rIENvcmVTZXR1cFBhcmFtcy5pbnN0YWxsUGx1Z2lufS5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxQbHVnaW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGZpbGVzL2ZvbGRlcnMgdG8gd3JpdGUgaW50byB0aGUgdmF1bHQgYmVmb3JlIE9ic2lkaWFuIG9wZW5zIGl0IChzZWVcbiAgICoge0BsaW5rIENvcmVTZXR1cFBhcmFtcy5wb3B1bGF0ZX0pLiBBIHRodW5rIHNvIGxhcmdlIGZpeHR1cmVzIGFyZSBidWlsdCBsYXppbHksXG4gICAqIG9uY2UsIGluIHRoZSBzZXR1cCBwcm9jZXNzLlxuICAgKlxuICAgKiBNYXkgcmV0dXJuIGEgcHJvbWlzZSwgc28gdGhlIG1hcCBjYW4gYmUgYnVpbHQgYnkgc29tZXRoaW5nIHRoYXQgbmVlZHMgdGhlIG5ldHdvcmsgXHUyMDE0IG5vdGFibHlcbiAgICogYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVBc3luY2AsIHdoaWNoIGluc3RhbGxzIGEgZGVtbyB2YXVsdCdzIG1pc3NpbmcgY29tbXVuaXR5IHBsdWdpbnMgYmVmb3JlXG4gICAqIHJlYWRpbmcgdGhlbS4gQSBzeW5jaHJvbm91cyB0aHVuayAoZS5nLiBgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZWApIGlzIHVuY2hhbmdlZC5cbiAgICovXG4gIHBvcHVsYXRlPyh0aGlzOiB2b2lkKTogUG9wdWxhdGVGaWxlc1BhcmFtcyB8IFByb21pc2U8UG9wdWxhdGVGaWxlc1BhcmFtcz47XG59XG5cbi8qKlxuICogQSBKZXN0IGBnbG9iYWxTZXR1cGAgLyBgZ2xvYmFsVGVhcmRvd25gIG1vZHVsZSdzIGBzZXR1cGAgLyBgdGVhcmRvd25gIHBhaXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSmVzdEdsb2JhbFNldHVwIHtcbiAgc2V0dXAodGhpczogdm9pZCk6IFByb21pc2U8dm9pZD47XG4gIHRlYXJkb3duKHRoaXM6IHZvaWQpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBKZXN0IGdsb2JhbCBzZXR1cC90ZWFyZG93biBwYWlyLCBvcHRpb25hbGx5IHByZS1wb3B1bGF0aW5nIHRoZSB2YXVsdFxuICogYmVmb3JlIE9ic2lkaWFuIG9wZW5zIGl0IFx1MjAxNCB1c2UgdGhpcyBmb3IgYSBkZWRpY2F0ZWQgbGFyZ2UtdmF1bHQvcGVyZm9ybWFuY2VcbiAqIHNldHVwLiBUaGUgcGxhaW4ge0BsaW5rIHNldHVwfSAvIHtAbGluayB0ZWFyZG93bn0gZXhwb3J0cyBhcmUgdGhlIG5vLXBvcHVsYXRlXG4gKiBjYXNlIChgY3JlYXRlU2V0dXAoKWApLiBQYXNzIGB7IGluc3RhbGxQbHVnaW46IGZhbHNlIH1gIGZvciBhIG5vbi1wbHVnaW4gY29uc3VtZXJcbiAqIHRoYXQgb25seSBuZWVkcyBhIHJlZ2lzdGVyZWQsIGVtcHR5IHZhdWx0IChzZWUge0BsaW5rIENyZWF0ZVNldHVwT3B0aW9ucy5pbnN0YWxsUGx1Z2lufSkuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBTZXR1cCBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIGBzZXR1cGAgYW5kIGB0ZWFyZG93bmAgZnVuY3Rpb25zIHRvIHJlLWV4cG9ydCBmcm9tIGEgYGdsb2JhbFNldHVwYCBtb2R1bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZXR1cChvcHRpb25zPzogQ3JlYXRlU2V0dXBPcHRpb25zKTogSmVzdEdsb2JhbFNldHVwIHtcbiAgbGV0IHNldHVwUmVzdWx0OiBDb3JlU2V0dXBSZXN1bHQgfCB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHsgc2V0dXAsIHRlYXJkb3duIH07XG5cbiAgYXN5bmMgZnVuY3Rpb24gc2V0dXAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdHJhbnNwb3J0T3B0aW9ucyA9IGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZz8udHJhbnNwb3J0T3B0aW9ucztcblxuICAgIHNldHVwUmVzdWx0ID0gYXdhaXQgY29yZVNldHVwKHtcbiAgICAgIGVuYWJsZUNvbW11bml0eVBsdWdpbnM6IG9wdGlvbnM/LmVuYWJsZUNvbW11bml0eVBsdWdpbnMsXG4gICAgICBpbnN0YWxsUGx1Z2luOiBvcHRpb25zPy5pbnN0YWxsUGx1Z2luLFxuICAgICAgcG9wdWxhdGU6IGF3YWl0IG9wdGlvbnM/LnBvcHVsYXRlPy4oKSxcbiAgICAgIHRyYW5zcG9ydE9wdGlvbnNcbiAgICB9KTtcblxuICAgIGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZyA9IHtcbiAgICAgIC4uLmdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZyxcbiAgICAgIHRlbXBvcmFyeVZhdWx0UGF0aDogc2V0dXBSZXN1bHQudGVtcG9yYXJ5VmF1bHQucGF0aCxcbiAgICAgIHRyYW5zcG9ydE9wdGlvbnM6IHNldHVwUmVzdWx0LnRyYW5zcG9ydE9wdGlvbnNcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gdGVhcmRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgY29yZVRlYXJkb3duKHNldHVwUmVzdWx0KTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHRlbXBvcmFyeSB2YXVsdCBwcm92aWRlZCBieSB0aGUgZ2xvYmFsIHNldHVwLlxuICpcbiAqIFJlYWRzIHRoZSB2YXVsdCBwYXRoIGZyb20gYGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZy50ZW1wb3JhcnlWYXVsdFBhdGhgLFxuICogd2hpY2ggaXMgc2V0IGJ5IHRoZSBKZXN0IGdsb2JhbCBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgdGVtcG9yYXJ5IHZhdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVtcG9yYXJ5VmF1bHQoKTogVGVtcG9yYXJ5VmF1bHQge1xuICBjb25zdCB0ZW1wb3JhcnlWYXVsdFBhdGggPSBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3Rpbmc/LnRlbXBvcmFyeVZhdWx0UGF0aDtcbiAgaWYgKCF0ZW1wb3JhcnlWYXVsdFBhdGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nLnRlbXBvcmFyeVZhdWx0UGF0aCBpcyBub3Qgc2V0LiBEaWQgeW91IGNvbmZpZ3VyZSBvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL2plc3QtZ2xvYmFsLXNldHVwIGFzIGEgSmVzdCBnbG9iYWxTZXR1cD8nXG4gICAgKTtcbiAgfVxuICByZXR1cm4gbmV3IFRlbXBvcmFyeVZhdWx0KHRlbXBvcmFyeVZhdWx0UGF0aCk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdHJhbnNwb3J0IG9wdGlvbnMgcHJvdmlkZWQgYnkgdGhlIGdsb2JhbCBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgdHJhbnNwb3J0IG9wdGlvbnMsIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBjb25maWd1cmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNwb3J0T3B0aW9ucygpOiBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnMgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nPy50cmFuc3BvcnRPcHRpb25zO1xufVxuXG5jb25zdCBkZWZhdWx0R2xvYmFsU2V0dXAgPSBjcmVhdGVTZXR1cCgpO1xuXG4vKipcbiAqIEplc3QgZ2xvYmFsIHNldHVwIGZ1bmN0aW9uIChubyBwcmUtcG9wdWxhdGlvbikuXG4gKlxuICogQ29waWVzIHRoZSBidWlsdCBwbHVnaW4gaW50byBhIHRlbXBvcmFyeSB2YXVsdCwgZW5hYmxlcyBpdCB2aWEgYSByZW5kZXJlciBldmFsXG4gKiBvdmVyIHRoZSB0cmFuc3BvcnQsIGFuZCBwb3B1bGF0ZXMgYGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZ2AgZm9yIHRlc3RzLlxuICpcbiAqIFRyYW5zcG9ydCBvcHRpb25zIGFyZSByZWFkIGZyb20gYGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZy50cmFuc3BvcnRPcHRpb25zYC5cbiAqIFNldCB0aGlzIGluIHlvdXIgSmVzdCBjb25maWcgdmlhIHRoZSBgZ2xvYmFsc2Agb3B0aW9uLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gc2V0dXAgY29tcGxldGVzLlxuICovXG5leHBvcnQgY29uc3Qgc2V0dXAgPSBkZWZhdWx0R2xvYmFsU2V0dXAuc2V0dXA7XG5cbi8qKlxuICogSmVzdCBnbG9iYWwgdGVhcmRvd24gZnVuY3Rpb24uXG4gKlxuICogUmVtb3ZlcyB0aGUgdGVtcG9yYXJ5IHZhdWx0IGNyZWF0ZWQgZHVyaW5nIHNldHVwLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGVhcmRvd24gY29tcGxldGVzLlxuICovXG5leHBvcnQgY29uc3QgdGVhcmRvd24gPSBkZWZhdWx0R2xvYmFsU2V0dXAudGVhcmRvd247XG5cbi8vIEplc3QncyBgZ2xvYmFsU2V0dXBgIGNvbmZpZyBjYW4gcmVmZXJlbmNlIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGJlY2F1c2UgaXRzIGRlZmF1bHQgZXhwb3J0IGlzIHRoZSBzZXR1cCBmdW5jdGlvbi5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1kZWZhdWx0LWV4cG9ydCAtLSBKZXN0J3MgZ2xvYmFsU2V0dXAgbG9hZGVyIHJlcXVpcmVzIGEgZGVmYXVsdC1leHBvcnQgZnVuY3Rpb24uXG5leHBvcnQgZGVmYXVsdCBzZXR1cDtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZUEsOEJBR087QUFDUCwrQkFHTztBQUNQLDZCQUErQjtBQUFBLElBOEIvQixxREFBNEIsTUFBTSxXQUFXLDhCQUE4QixnQkFBZ0I7QUFBQSxJQUMzRiw4Q0FBcUIsTUFBTSxXQUFXLDhCQUE4QixrQkFBa0I7QUFzRC9FLFNBQVMsWUFBWSxTQUErQztBQUN6RSxNQUFJO0FBRUosU0FBTyxFQUFFLE9BQUFBLFFBQU8sVUFBQUMsVUFBUztBQUV6QixpQkFBZUQsU0FBdUI7QUFDcEMsVUFBTSxtQkFBbUIsV0FBVyw4QkFBOEI7QUFFbEUsa0JBQWMsVUFBTSxvQ0FBVTtBQUFBLE1BQzVCLHdCQUF3QixTQUFTO0FBQUEsTUFDakMsZUFBZSxTQUFTO0FBQUEsTUFDeEIsVUFBVSxNQUFNLFNBQVMsV0FBVztBQUFBLE1BQ3BDO0FBQUEsSUFDRixDQUFDO0FBRUQsZUFBVywrQkFBK0I7QUFBQSxNQUN4QyxHQUFHLFdBQVc7QUFBQSxNQUNkLG9CQUFvQixZQUFZLGVBQWU7QUFBQSxNQUMvQyxrQkFBa0IsWUFBWTtBQUFBLElBQ2hDO0FBQUEsRUFDRjtBQUVBLGlCQUFlQyxZQUEwQjtBQUN2QyxjQUFNLHVDQUFhLFdBQVc7QUFBQSxFQUNoQztBQUNGO0FBVU8sU0FBUyxvQkFBb0M7QUFDbEQsUUFBTSxxQkFBcUIsV0FBVyw4QkFBOEI7QUFDcEUsTUFBSSxDQUFDLG9CQUFvQjtBQUN2QixVQUFNLElBQUk7QUFBQSxNQUNSO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxTQUFPLElBQUksc0NBQWUsa0JBQWtCO0FBQzlDO0FBT08sU0FBUyxzQkFBNEQ7QUFDMUUsU0FBTyxXQUFXLDhCQUE4QjtBQUNsRDtBQUVBLE1BQU0scUJBQXFCLFlBQVk7QUFhaEMsTUFBTSxRQUFRLG1CQUFtQjtBQVNqQyxNQUFNLFdBQVcsbUJBQW1CO0FBSTNDLElBQU8sdUJBQVE7IiwKICAibmFtZXMiOiBbInNldHVwIiwgInRlYXJkb3duIl0KfQo=
@@ -56,8 +56,12 @@ export interface CreateSetupOptions {
56
56
  * Returns files/folders to write into the vault before Obsidian opens it (see
57
57
  * {@link CoreSetupParams.populate}). A thunk so large fixtures are built lazily,
58
58
  * once, in the setup process.
59
+ *
60
+ * May return a promise, so the map can be built by something that needs the network — notably
61
+ * `buildDemoVaultPopulateAsync`, which installs a demo vault's missing community plugins before
62
+ * reading them. A synchronous thunk (e.g. `buildDemoVaultPopulate`) is unchanged.
59
63
  */
60
- populate?(this: void): PopulateFilesParams;
64
+ populate?(this: void): PopulateFilesParams | Promise<PopulateFilesParams>;
61
65
  }
62
66
  /**
63
67
  * A Jest `globalSetup` / `globalTeardown` module's `setup` / `teardown` pair.
@@ -28,7 +28,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var kill_process_tree_exports = {};
30
30
  __export(kill_process_tree_exports, {
31
- killProcessTree: () => killProcessTree
31
+ killProcessTree: () => killProcessTree,
32
+ killProcessTreeByPid: () => killProcessTreeByPid
32
33
  });
33
34
  module.exports = __toCommonJS(kill_process_tree_exports);
34
35
  var import_node_child_process = require("node:child_process");
@@ -38,20 +39,30 @@ function killProcessTree(child) {
38
39
  if (child.pid === void 0) {
39
40
  return;
40
41
  }
42
+ killProcessTreeByPid(child.pid);
43
+ }
44
+ function killProcessTreeByPid(pid) {
41
45
  if (import_node_process.default.platform === "win32") {
42
46
  try {
43
- (0, import_node_child_process.execFileSync)("taskkill", ["/F", "/T", "/PID", String(child.pid)], { stdio: "ignore" });
47
+ (0, import_node_child_process.execFileSync)("taskkill", ["/F", "/T", "/PID", String(pid)], { stdio: "ignore" });
44
48
  } catch (error) {
45
49
  (0, import_log.log)(
46
- `[kill-process-tree] taskkill for PID ${String(child.pid)} failed (may have already exited): ${error instanceof Error ? error.message : "unknown error"}`
50
+ `[kill-process-tree] taskkill for PID ${String(pid)} failed (may have already exited): ${error instanceof Error ? error.message : "unknown error"}`
47
51
  );
48
52
  }
49
- } else {
50
- child.kill("SIGKILL");
53
+ return;
54
+ }
55
+ try {
56
+ import_node_process.default.kill(pid, "SIGKILL");
57
+ } catch (error) {
58
+ (0, import_log.log)(
59
+ `[kill-process-tree] SIGKILL for PID ${String(pid)} failed (may have already exited): ${error instanceof Error ? error.message : "unknown error"}`
60
+ );
51
61
  }
52
62
  }
53
63
  // Annotate the CommonJS export names for ESM import in node:
54
64
  0 && (module.exports = {
55
- killProcessTree
65
+ killProcessTree,
66
+ killProcessTreeByPid
56
67
  });
57
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2tpbGwtcHJvY2Vzcy10cmVlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ3Jvc3MtcGxhdGZvcm0gaGVscGVyIHRvIGtpbGwgYSBjaGlsZCBwcm9jZXNzIGFuZCBpdHMgZW50aXJlIHByb2Nlc3MgdHJlZS5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBwcm9jZXNzIG1hbmFnZW1lbnQgY292ZXJlZCBieSBpbnRlZ3JhdGlvbiB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB0eXBlIHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcblxuaW1wb3J0IHsgZXhlY0ZpbGVTeW5jIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB7IGxvZyB9IGZyb20gJy4vbG9nLmNqcyc7XG5cbi8qKlxuICogS2lsbHMgYSBjaGlsZCBwcm9jZXNzIGFuZCBpdHMgZW50aXJlIHByb2Nlc3MgdHJlZS5cbiAqXG4gKiBPbiBXaW5kb3dzLCBgY2hpbGQua2lsbCgpYCBvbmx5IHNlbmRzIFNJR1RFUk0gdG8gdGhlIGRpcmVjdCBwcm9jZXNzLFxuICogbGVhdmluZyBzcGF3bmVkIGdyYW5kY2hpbGRyZW4gKGUuZy4gRWxlY3Ryb24gcmVuZGVyZXIvR1BVIGhlbHBlcnMsIFFFTVUsXG4gKiBVaUF1dG9tYXRvcikgYWxpdmUuIGB0YXNra2lsbCAvRiAvVCAvUElEYCBmb3JjZWZ1bGx5IHRlcm1pbmF0ZXMgdGhlIGVudGlyZSB0cmVlLlxuICpcbiAqIEBwYXJhbSBjaGlsZCAtIFRoZSBjaGlsZCBwcm9jZXNzIHRvIGtpbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBraWxsUHJvY2Vzc1RyZWUoY2hpbGQ6IENoaWxkUHJvY2Vzcyk6IHZvaWQge1xuICBpZiAoY2hpbGQucGlkID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgIHRyeSB7XG4gICAgICBleGVjRmlsZVN5bmMoJ3Rhc2traWxsJywgWycvRicsICcvVCcsICcvUElEJywgU3RyaW5nKGNoaWxkLnBpZCldLCB7IHN0ZGlvOiAnaWdub3JlJyB9KTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgbG9nKFxuICAgICAgICBgW2tpbGwtcHJvY2Vzcy10cmVlXSB0YXNra2lsbCBmb3IgUElEICR7U3RyaW5nKGNoaWxkLnBpZCl9IGZhaWxlZCAobWF5IGhhdmUgYWxyZWFkeSBleGl0ZWQpOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ3Vua25vd24gZXJyb3InfWBcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNoaWxkLmtpbGwoJ1NJR0tJTEwnKTtcbiAgfVxufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFVQSxnQ0FBNkI7QUFDN0IsMEJBQW9CO0FBRXBCLGlCQUFvQjtBQVdiLFNBQVMsZ0JBQWdCLE9BQTJCO0FBQ3pELE1BQUksTUFBTSxRQUFRLFFBQVc7QUFDM0I7QUFBQSxFQUNGO0FBRUEsTUFBSSxvQkFBQUEsUUFBUSxhQUFhLFNBQVM7QUFDaEMsUUFBSTtBQUNGLGtEQUFhLFlBQVksQ0FBQyxNQUFNLE1BQU0sUUFBUSxPQUFPLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLFNBQVMsQ0FBQztBQUFBLElBQ3ZGLFNBQVMsT0FBZ0I7QUFDdkI7QUFBQSxRQUNFLHdDQUF3QyxPQUFPLE1BQU0sR0FBRyxDQUFDLHNDQUFzQyxpQkFBaUIsUUFBUSxNQUFNLFVBQVUsZUFBZTtBQUFBLE1BQ3pKO0FBQUEsSUFDRjtBQUFBLEVBQ0YsT0FBTztBQUNMLFVBQU0sS0FBSyxTQUFTO0FBQUEsRUFDdEI7QUFDRjsiLAogICJuYW1lcyI6IFsicHJvY2VzcyJdCn0K
68
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2tpbGwtcHJvY2Vzcy10cmVlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ3Jvc3MtcGxhdGZvcm0gaGVscGVyIHRvIGtpbGwgYSBjaGlsZCBwcm9jZXNzIGFuZCBpdHMgZW50aXJlIHByb2Nlc3MgdHJlZS5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBwcm9jZXNzIG1hbmFnZW1lbnQgY292ZXJlZCBieSBpbnRlZ3JhdGlvbiB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB0eXBlIHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcblxuaW1wb3J0IHsgZXhlY0ZpbGVTeW5jIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB7IGxvZyB9IGZyb20gJy4vbG9nLmNqcyc7XG5cbi8qKlxuICogS2lsbHMgYSBjaGlsZCBwcm9jZXNzIGFuZCBpdHMgZW50aXJlIHByb2Nlc3MgdHJlZS5cbiAqXG4gKiBAcGFyYW0gY2hpbGQgLSBUaGUgY2hpbGQgcHJvY2VzcyB0byBraWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24ga2lsbFByb2Nlc3NUcmVlKGNoaWxkOiBDaGlsZFByb2Nlc3MpOiB2b2lkIHtcbiAgaWYgKGNoaWxkLnBpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAga2lsbFByb2Nlc3NUcmVlQnlQaWQoY2hpbGQucGlkKTtcbn1cblxuLyoqXG4gKiBLaWxscyBhIHByb2Nlc3MgdHJlZSBieSBQSUQsIGZvciBhIHByb2Nlc3MgdGhpcyBydW4gZGlkIG5vdCBzcGF3biBpdHNlbGYgXHUyMDE0IGFuXG4gKiBBcHBpdW0gc2VydmVyIGxlZnQgbGlzdGVuaW5nIGJ5IGFuIGVhcmxpZXIgcnVuLCBpZGVudGlmaWVkIHRocm91Z2ggaXRzIG1hcmtlclxuICogKGBhcHBpdW0tc2VydmVyLW1hcmtlci50c2ApLlxuICpcbiAqIE9uIFdpbmRvd3MsIGBjaGlsZC5raWxsKClgIG9ubHkgc2VuZHMgU0lHVEVSTSB0byB0aGUgZGlyZWN0IHByb2Nlc3MsXG4gKiBsZWF2aW5nIHNwYXduZWQgZ3JhbmRjaGlsZHJlbiAoZS5nLiBFbGVjdHJvbiByZW5kZXJlci9HUFUgaGVscGVycywgUUVNVSxcbiAqIFVpQXV0b21hdG9yKSBhbGl2ZS4gYHRhc2traWxsIC9GIC9UIC9QSURgIGZvcmNlZnVsbHkgdGVybWluYXRlcyB0aGUgZW50aXJlIHRyZWUuXG4gKlxuICogQHBhcmFtIHBpZCAtIFRoZSBQSUQgd2hvc2UgcHJvY2VzcyB0cmVlIHRvIGtpbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBraWxsUHJvY2Vzc1RyZWVCeVBpZChwaWQ6IG51bWJlcik6IHZvaWQge1xuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgIHRyeSB7XG4gICAgICBleGVjRmlsZVN5bmMoJ3Rhc2traWxsJywgWycvRicsICcvVCcsICcvUElEJywgU3RyaW5nKHBpZCldLCB7IHN0ZGlvOiAnaWdub3JlJyB9KTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgbG9nKFxuICAgICAgICBgW2tpbGwtcHJvY2Vzcy10cmVlXSB0YXNra2lsbCBmb3IgUElEICR7U3RyaW5nKHBpZCl9IGZhaWxlZCAobWF5IGhhdmUgYWxyZWFkeSBleGl0ZWQpOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ3Vua25vd24gZXJyb3InfWBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcHJvY2Vzcy5raWxsKHBpZCwgJ1NJR0tJTEwnKTtcbiAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICBsb2coXG4gICAgICBgW2tpbGwtcHJvY2Vzcy10cmVlXSBTSUdLSUxMIGZvciBQSUQgJHtTdHJpbmcocGlkKX0gZmFpbGVkIChtYXkgaGF2ZSBhbHJlYWR5IGV4aXRlZCk6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAndW5rbm93biBlcnJvcid9YFxuICAgICk7XG4gIH1cbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFVQSxnQ0FBNkI7QUFDN0IsMEJBQW9CO0FBRXBCLGlCQUFvQjtBQU9iLFNBQVMsZ0JBQWdCLE9BQTJCO0FBQ3pELE1BQUksTUFBTSxRQUFRLFFBQVc7QUFDM0I7QUFBQSxFQUNGO0FBRUEsdUJBQXFCLE1BQU0sR0FBRztBQUNoQztBQWFPLFNBQVMscUJBQXFCLEtBQW1CO0FBQ3RELE1BQUksb0JBQUFBLFFBQVEsYUFBYSxTQUFTO0FBQ2hDLFFBQUk7QUFDRixrREFBYSxZQUFZLENBQUMsTUFBTSxNQUFNLFFBQVEsT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sU0FBUyxDQUFDO0FBQUEsSUFDakYsU0FBUyxPQUFnQjtBQUN2QjtBQUFBLFFBQ0Usd0NBQXdDLE9BQU8sR0FBRyxDQUFDLHNDQUFzQyxpQkFBaUIsUUFBUSxNQUFNLFVBQVUsZUFBZTtBQUFBLE1BQ25KO0FBQUEsSUFDRjtBQUNBO0FBQUEsRUFDRjtBQUVBLE1BQUk7QUFDRix3QkFBQUEsUUFBUSxLQUFLLEtBQUssU0FBUztBQUFBLEVBQzdCLFNBQVMsT0FBZ0I7QUFDdkI7QUFBQSxNQUNFLHVDQUF1QyxPQUFPLEdBQUcsQ0FBQyxzQ0FBc0MsaUJBQWlCLFFBQVEsTUFBTSxVQUFVLGVBQWU7QUFBQSxJQUNsSjtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFsicHJvY2VzcyJdCn0K
@@ -7,10 +7,18 @@ import type { ChildProcess } from 'node:child_process';
7
7
  /**
8
8
  * Kills a child process and its entire process tree.
9
9
  *
10
+ * @param child - The child process to kill.
11
+ */
12
+ export declare function killProcessTree(child: ChildProcess): void;
13
+ /**
14
+ * Kills a process tree by PID, for a process this run did not spawn itself — an
15
+ * Appium server left listening by an earlier run, identified through its marker
16
+ * (`appium-server-marker.ts`).
17
+ *
10
18
  * On Windows, `child.kill()` only sends SIGTERM to the direct process,
11
19
  * leaving spawned grandchildren (e.g. Electron renderer/GPU helpers, QEMU,
12
20
  * UiAutomator) alive. `taskkill /F /T /PID` forcefully terminates the entire tree.
13
21
  *
14
- * @param child - The child process to kill.
22
+ * @param pid - The PID whose process tree to kill.
15
23
  */
16
- export declare function killProcessTree(child: ChildProcess): void;
24
+ export declare function killProcessTreeByPid(pid: number): void;
@@ -21,7 +21,7 @@ __export(library_exports, {
21
21
  LIBRARY_VERSION: () => LIBRARY_VERSION
22
22
  });
23
23
  module.exports = __toCommonJS(library_exports);
24
- const LIBRARY_VERSION = false ? "dev" : "11.0.0";
24
+ const LIBRARY_VERSION = false ? "dev" : "12.0.0";
25
25
  // Annotate the CommonJS export names for ESM import in node:
26
26
  0 && (module.exports = {
27
27
  LIBRARY_VERSION
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var mobile_input_exports = {};
20
+ __export(mobile_input_exports, {
21
+ MOBILE_INPUT_BINDING_NAME: () => MOBILE_INPUT_BINDING_NAME,
22
+ MOBILE_INPUT_TIMEOUT_IN_MILLISECONDS: () => MOBILE_INPUT_TIMEOUT_IN_MILLISECONDS,
23
+ buildResolveInputExpression: () => buildResolveInputExpression,
24
+ codePointOf: () => codePointOf,
25
+ toCdpInputCommands: () => toCdpInputCommands,
26
+ toCdpModifiers: () => toCdpModifiers
27
+ });
28
+ module.exports = __toCommonJS(mobile_input_exports);
29
+ const MOBILE_INPUT_BINDING_NAME = "__obsidianIntegrationTestingInput";
30
+ const MOBILE_INPUT_TIMEOUT_IN_MILLISECONDS = 15e3;
31
+ const LONG_PRESS_DWELL_IN_MILLISECONDS = 600;
32
+ const NO_MODIFIERS = 0;
33
+ const MODIFIER_BIT_ALT = 1;
34
+ const MODIFIER_BIT_CONTROL = 2;
35
+ const MODIFIER_BIT_META = 4;
36
+ const MODIFIER_BIT_SHIFT = 8;
37
+ const CDP_MODIFIER_BIT_BY_NAME = /* @__PURE__ */ new Map([
38
+ ["alt", MODIFIER_BIT_ALT],
39
+ ["control", MODIFIER_BIT_CONTROL],
40
+ ["meta", MODIFIER_BIT_META],
41
+ ["shift", MODIFIER_BIT_SHIFT]
42
+ ]);
43
+ const KEY_CODE_BACKSPACE = 8;
44
+ const KEY_CODE_TAB = 9;
45
+ const KEY_CODE_ENTER = 13;
46
+ const KEY_CODE_ESCAPE = 27;
47
+ const KEY_CODE_ARROW_LEFT = 37;
48
+ const KEY_CODE_ARROW_UP = 38;
49
+ const KEY_CODE_ARROW_RIGHT = 39;
50
+ const KEY_CODE_ARROW_DOWN = 40;
51
+ const KEY_CODE_DELETE = 46;
52
+ const NAMED_KEYS = /* @__PURE__ */ new Map([
53
+ ["ArrowDown", { code: "ArrowDown", windowsVirtualKeyCode: KEY_CODE_ARROW_DOWN }],
54
+ ["ArrowLeft", { code: "ArrowLeft", windowsVirtualKeyCode: KEY_CODE_ARROW_LEFT }],
55
+ ["ArrowRight", { code: "ArrowRight", windowsVirtualKeyCode: KEY_CODE_ARROW_RIGHT }],
56
+ ["ArrowUp", { code: "ArrowUp", windowsVirtualKeyCode: KEY_CODE_ARROW_UP }],
57
+ ["Backspace", { code: "Backspace", windowsVirtualKeyCode: KEY_CODE_BACKSPACE }],
58
+ ["Delete", { code: "Delete", windowsVirtualKeyCode: KEY_CODE_DELETE }],
59
+ ["Enter", { code: "Enter", text: "\r", windowsVirtualKeyCode: KEY_CODE_ENTER }],
60
+ ["Escape", { code: "Escape", windowsVirtualKeyCode: KEY_CODE_ESCAPE }],
61
+ ["Tab", { code: "Tab", text: " ", windowsVirtualKeyCode: KEY_CODE_TAB }]
62
+ ]);
63
+ const FIRST_CODE_POINT_INDEX = 0;
64
+ const DIGIT_ZERO_CODE_POINT = codePointOf("0");
65
+ const DIGIT_NINE_CODE_POINT = codePointOf("9");
66
+ const UPPERCASE_A_CODE_POINT = codePointOf("A");
67
+ const UPPERCASE_Z_CODE_POINT = codePointOf("Z");
68
+ function buildResolveInputExpression(id, errorMessage) {
69
+ return `window.__obsidianIntegrationTesting?.resolveInput?.(${JSON.stringify(id)}, ${JSON.stringify(errorMessage ?? null)})`;
70
+ }
71
+ function codePointOf(text) {
72
+ const codePoint = text.codePointAt(FIRST_CODE_POINT_INDEX);
73
+ if (codePoint === void 0) {
74
+ throw new Error("codePointOf received an empty string.");
75
+ }
76
+ return codePoint;
77
+ }
78
+ function toCdpInputCommands(request) {
79
+ if (request.kind === "key") {
80
+ return toKeyCommands(request);
81
+ }
82
+ return toPointerCommands(request);
83
+ }
84
+ function toCdpModifiers(modifiers) {
85
+ const bits = /* @__PURE__ */ new Set();
86
+ for (const modifier of modifiers) {
87
+ const bit = CDP_MODIFIER_BIT_BY_NAME.get(modifier);
88
+ if (bit !== void 0) {
89
+ bits.add(bit);
90
+ }
91
+ }
92
+ let bitmask = NO_MODIFIERS;
93
+ for (const bit of bits) {
94
+ bitmask += bit;
95
+ }
96
+ return bitmask;
97
+ }
98
+ function resolveKey(key) {
99
+ const namedKey = NAMED_KEYS.get(key);
100
+ if (namedKey) {
101
+ return namedKey;
102
+ }
103
+ const codePoint = key.codePointAt(FIRST_CODE_POINT_INDEX);
104
+ if (codePoint === void 0 || String.fromCodePoint(codePoint) !== key) {
105
+ throw new Error(
106
+ `pressKey received an unknown key name on mobile: ${JSON.stringify(key)}. Pass a single character or one of: ${[...NAMED_KEYS.keys()].join(", ")}.`
107
+ );
108
+ }
109
+ const upperCasedCodePoint = codePointOf(key.toUpperCase());
110
+ return {
111
+ code: resolveKeyCode(upperCasedCodePoint),
112
+ text: key,
113
+ windowsVirtualKeyCode: upperCasedCodePoint
114
+ };
115
+ }
116
+ function resolveKeyCode(upperCasedCodePoint) {
117
+ if (upperCasedCodePoint >= UPPERCASE_A_CODE_POINT && upperCasedCodePoint <= UPPERCASE_Z_CODE_POINT) {
118
+ return `Key${String.fromCodePoint(upperCasedCodePoint)}`;
119
+ }
120
+ if (upperCasedCodePoint >= DIGIT_ZERO_CODE_POINT && upperCasedCodePoint <= DIGIT_NINE_CODE_POINT) {
121
+ return `Digit${String.fromCodePoint(upperCasedCodePoint)}`;
122
+ }
123
+ return "";
124
+ }
125
+ function toKeyCommands(request) {
126
+ const { code, text, windowsVirtualKeyCode } = resolveKey(request.key);
127
+ const modifiers = toCdpModifiers(request.modifiers);
128
+ const base = { code, key: request.key, modifiers, windowsVirtualKeyCode };
129
+ const commands = [
130
+ { method: "Input.dispatchKeyEvent", params: { ...base, type: "rawKeyDown" } }
131
+ ];
132
+ if (text !== void 0) {
133
+ commands.push({ method: "Input.dispatchKeyEvent", params: { ...base, text, type: "char" } });
134
+ }
135
+ commands.push({ method: "Input.dispatchKeyEvent", params: { ...base, type: "keyUp" } });
136
+ return commands;
137
+ }
138
+ function toPointerCommands(request) {
139
+ const modifiers = toCdpModifiers(request.modifiers);
140
+ return [
141
+ {
142
+ method: "Input.dispatchTouchEvent",
143
+ params: { modifiers, touchPoints: [{ x: request.x, y: request.y }], type: "touchStart" }
144
+ },
145
+ {
146
+ ...request.kind === "longPress" && { delayBeforeInMilliseconds: LONG_PRESS_DWELL_IN_MILLISECONDS },
147
+ method: "Input.dispatchTouchEvent",
148
+ params: { modifiers, touchPoints: [], type: "touchEnd" }
149
+ }
150
+ ];
151
+ }
152
+ // Annotate the CommonJS export names for ESM import in node:
153
+ 0 && (module.exports = {
154
+ MOBILE_INPUT_BINDING_NAME,
155
+ MOBILE_INPUT_TIMEOUT_IN_MILLISECONDS,
156
+ buildResolveInputExpression,
157
+ codePointOf,
158
+ toCdpInputCommands,
159
+ toCdpModifiers
160
+ });
161
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL21vYmlsZS1pbnB1dC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRyYW5zbGF0ZXMgYSBtb2JpbGUgdHJ1c3RlZC1pbnB1dCByZXF1ZXN0IGludG8gdGhlIG9yZGVyZWQgQ2hyb21lIERldlRvb2xzIFByb3RvY29sIGBJbnB1dC4qYCBjb21tYW5kc1xuICogdGhhdCByZWFsaXplIGl0IChzZWUgKipMMzkqKikuXG4gKlxuICogUHVyZSBhbmQgc3luY2hyb25vdXMgYnkgZGVzaWduOiB0aGUgV2ViVmlldyBjb25uZWN0aW9uICh7QGxpbmsgV2ViVmlld0NkcENvbm5lY3Rpb259KSBzZW5kcyB3aGF0ZXZlciB0aGlzXG4gKiByZXR1cm5zLCBzbyBldmVyeSBkZWNpc2lvbiB0aGF0IGlzIHdvcnRoIGEgdGVzdCBcdTIwMTQgdGhlIHRvdWNoIHBhaXIgYSB0YXAgZXhwYW5kcyBpbnRvLCB0aGUgZHdlbGwgYVxuICogbG9uZy1wcmVzcyBhZGRzLCB0aGUgYHJhd0tleURvd25gIFx1MjE5MiBgY2hhcmAgXHUyMTkyIGBrZXlVcGAgc2hhcGUgYSBrZXkgcHJlc3MgbWlycm9ycyBmcm9tIHRoZSBkZXNrdG9wIHR3aW4sIHRoZVxuICogbW9kaWZpZXIgYml0bWFzayBcdTIwMTQgbGl2ZXMgaGVyZSByYXRoZXIgdGhhbiBpbnNpZGUgdGhlIHRyYW5zcG9ydCdzIEkvTyBwYXRoLlxuICpcbiAqIFRoZSByZXF1ZXN0IHRyYXZlbHMgcmVuZGVyZXIgXHUyMTkyIGhvc3QgYXMgSlNPTiAodGhlIHJlbmRlcmVyIGNvbXB1dGVzIHRoZSBjb29yZGluYXRlcywgYmVjYXVzZSBvbmx5IGl0IGNhblxuICogc2VlIHRoZSBET00pLCBzbyBib3RoIHRoZSByZXF1ZXN0IGFuZCB0aGUgY29tbWFuZCBzaGFwZXMgYXJlIGRlbGliZXJhdGVseSBwbGFpbiBkYXRhLlxuICovXG5cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGBSdW50aW1lLmFkZEJpbmRpbmdgIGZ1bmN0aW9uIHRoZSBob3N0IGV4cG9zZXMgb24gdGhlIHBhZ2Ugc28gdGhlIHJlbmRlcmVyIGNhbiBoYW5kIGl0IGFuXG4gKiBpbnB1dCByZXF1ZXN0IG1pZC1jbG9zdXJlLlxuICpcbiAqIEl0IGlzIHBhc3NlZCAqaW50byogdGhlIHNlcmlhbGl6ZWQgYm9vdHN0cmFwIGNsb3N1cmUgYXMgZGF0YSByYXRoZXIgdGhhbiByZWZlcmVuY2VkIGZyb20gaXQsIGJlY2F1c2UgdGhhdFxuICogY2xvc3VyZSBtYXkgbm90IHJlYWQgb3V0ZXIgc2NvcGUgKCoqTDE1KiopIFx1MjAxNCBzbyB0aGlzIHN0YXlzIHRoZSBzaW5nbGUgZGVmaW5pdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IE1PQklMRV9JTlBVVF9CSU5ESU5HX05BTUUgPSAnX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZ0lucHV0JztcblxuLyoqXG4gKiBIb3cgbG9uZyB0aGUgcmVuZGVyZXIgd2FpdHMgZm9yIHRoZSBob3N0IHRvIHNlcnZpY2Ugb25lIGlucHV0IHJlcXVlc3QgYmVmb3JlIGdpdmluZyB1cC5cbiAqXG4gKiBHZW5lcm91cyByZWxhdGl2ZSB0byB0aGUgd29yayAoYSB0YXAgaXMgdHdvIENEUCBjb21tYW5kczsgYSBsb25nLXByZXNzIGFkZHMgYSA2MDBtcyBkd2VsbCk6IHRoZSBwb2ludCBpc1xuICogdG8gZmFpbCB3aXRoIGEgbGVnaWJsZSBlcnJvciByYXRoZXIgdGhhbiBoYW5nIHRoZSBjbG9zdXJlIHVudGlsIHRoZSB3aG9sZSBydW4gdGltZXMgb3V0LiBQYXNzZWQgaW50byB0aGVcbiAqIGJvb3RzdHJhcCBjbG9zdXJlIGFzIGRhdGEsIGZvciB0aGUgc2FtZSByZWFzb24gYXMge0BsaW5rIE1PQklMRV9JTlBVVF9CSU5ESU5HX05BTUV9LlxuICovXG5leHBvcnQgY29uc3QgTU9CSUxFX0lOUFVUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTID0gMTVfMDAwO1xuXG4vKipcbiAqIEEgc2luZ2xlIENocm9tZSBEZXZUb29scyBQcm90b2NvbCBjb21tYW5kLCBwbHVzIGhvdyBsb25nIHRvIHdhaXQgYmVmb3JlIHNlbmRpbmcgaXQuXG4gKlxuICogVGhlIGRlbGF5IGlzIGNhcnJpZWQgaGVyZSByYXRoZXIgdGhhbiBhcHBsaWVkIGJ5IHRoZSBwcm9kdWNlciBzbyB0aGF0IHRoZSB3aG9sZSBzZXF1ZW5jZSBzdGF5cyBwdXJlXG4gKiBkYXRhIFx1MjAxNCBhIHRlc3QgYXNzZXJ0cyB0aGUgZHdlbGwgd2l0aG91dCB3YWl0aW5nIGZvciBpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZHBJbnB1dENvbW1hbmQge1xuICAvKipcbiAgICogTWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHNlbmRpbmcgdGhpcyBjb21tYW5kLiBBYnNlbnQgbWVhbnMgXCJzZW5kIGltbWVkaWF0ZWx5XCIuXG4gICAqXG4gICAqIFVzZWQgb25seSBieSB0aGUgbG9uZy1wcmVzcyBkd2VsbC5cbiAgICovXG4gIHJlYWRvbmx5IGRlbGF5QmVmb3JlSW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBDRFAgbWV0aG9kIG5hbWUsIGUuZy4gYElucHV0LmRpc3BhdGNoVG91Y2hFdmVudGAuXG4gICAqL1xuICByZWFkb25seSBtZXRob2Q6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIENEUCBtZXRob2QgcGFyYW1ldGVycy5cbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogV2hhdCB0aGUgcmVuZGVyZXIgaGFuZHMgdG8gdGhlIGhvc3QgYmluZGluZzogb25lIHJlcXVlc3QsIHBsdXMgdGhlIGlkIHRvIGFuc3dlciBpdCBvbi5cbiAqXG4gKiBUaGUgcmVuZGVyZXIgYnVpbGRzIHRoaXMgbGl0ZXJhbCBpbnNpZGUgdGhlIHNlcmlhbGl6ZWQgYm9vdHN0cmFwIGNsb3N1cmUsIHdoaWNoIGNhbm5vdCBpbXBvcnQgKCoqTDE1KiopLFxuICogc28gdGhlIHNoYXBlIGlzIGRlY2xhcmVkIGhlcmUgYW5kIG1pcnJvcmVkIHRoZXJlLiBUaGV5IGFyZSBvbmUgd2lyZSBmb3JtYXQ7IGNoYW5nZSB0aGVtIHRvZ2V0aGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vYmlsZUlucHV0RW52ZWxvcGUge1xuICAvKipcbiAgICogVGhlIHJlcXVlc3QgaWQgdGhlIHJlbmRlcmVyIGlzIHdhaXRpbmcgb24uXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGF0IHRvIGluamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3Q6IE1vYmlsZUlucHV0UmVxdWVzdDtcbn1cblxuLyoqXG4gKiBBbnl0aGluZyB0aGUgcmVuZGVyZXIgY2FuIGFzayB0aGUgaG9zdCB0byBpbmplY3QuXG4gKi9cbmV4cG9ydCB0eXBlIE1vYmlsZUlucHV0UmVxdWVzdCA9IE1vYmlsZUtleUlucHV0UmVxdWVzdCB8IE1vYmlsZVBvaW50ZXJJbnB1dFJlcXVlc3Q7XG5cbi8qKlxuICogQSB0cnVzdGVkIGtleSBwcmVzcyB0byBpbmplY3Qgb24gbW9iaWxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vYmlsZUtleUlucHV0UmVxdWVzdCB7XG4gIC8qKlxuICAgKiBUaGUga2V5IHRvIHByZXNzLCBpbiB0aGUgc2FtZSBzcGVsbGluZyB0aGUgZGVza3RvcCB0d2luIHRha2VzOiBlaXRoZXIgYSBuYW1lZCBrZXlcbiAgICogKGBFbnRlcmAsIGBFc2NhcGVgLCBgVGFiYCwgYEJhY2tzcGFjZWAsIGBEZWxldGVgLCBhbiBhcnJvdykgb3IgYSBzaW5nbGUgcHJpbnRhYmxlIGNoYXJhY3Rlci5cbiAgICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEaXNjcmltaW5hbnQuXG4gICAqL1xuICByZWFkb25seSBraW5kOiAna2V5JztcblxuICAvKipcbiAgICogTW9kaWZpZXJzIGFscmVhZHkgcmVzb2x2ZWQgdG8gdGhlaXIgcGxhdGZvcm0taW5kZXBlbmRlbnQgbG93ZXJjYXNlIG5hbWVzIGJ5IHRoZSByZW5kZXJlcidzXG4gICAqIGB0b0VsZWN0cm9uTW9kaWZpZXJzYCBcdTIwMTQgdGhlIG9uZSBtYXBwaW5nIGEga2V5IHByZXNzIGFuZCBhIGNsaWNrIHNoYXJlLCBzbyBgJ01vZCdgIGNhbm5vdCBtZWFuIHR3b1xuICAgKiBkaWZmZXJlbnQgdGhpbmdzICgqKkwxNyoqKS5cbiAgICovXG4gIHJlYWRvbmx5IG1vZGlmaWVyczogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbi8qKlxuICogQSB0cnVzdGVkIHBvaW50ZXIgZ2VzdHVyZSB0byBpbmplY3Qgb24gbW9iaWxlLCBpbiBDU1MgcGl4ZWxzIHdpdGhpbiB0aGUgV2ViVmlldydzIG93biB2aWV3cG9ydC5cbiAqXG4gKiBObyBkZXZpY2UtcGl4ZWwgY29udmVyc2lvbiBpcyBpbnZvbHZlZDogQ0RQIHRha2VzIHBhZ2UgY29vcmRpbmF0ZXMsIHNvIGBkZXZpY2VQaXhlbFJhdGlvYCBhbmQgdGhlXG4gKiBXZWJWaWV3J3Mgb2Zmc2V0IHVuZGVyIHRoZSBzdGF0dXMgYmFyIG5ldmVyIGVudGVyIHRoZSBwaWN0dXJlICh0aGV5IHdvdWxkIGZvciBuYXRpdmUgaW5qZWN0aW9uKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2JpbGVQb2ludGVySW5wdXRSZXF1ZXN0IHtcbiAgLyoqXG4gICAqIGB0YXBgIGlzIHRoZSB0b3VjaCBhbmFsb2cgb2YgYSBsZWZ0IGNsaWNrOyBgbG9uZ1ByZXNzYCBpcyB0aGUgbW9iaWxlIGNvbnRleHQtbWVudSBnZXN0dXJlLCBpLmUuIHdoYXQgYVxuICAgKiBkZXNrdG9wIHJpZ2h0IGNsaWNrIG1lYW5zIGhlcmUuXG4gICAqL1xuICByZWFkb25seSBraW5kOiAnbG9uZ1ByZXNzJyB8ICd0YXAnO1xuXG4gIC8qKlxuICAgKiBTZWUge0BsaW5rIE1vYmlsZUtleUlucHV0UmVxdWVzdC5tb2RpZmllcnN9LlxuICAgKi9cbiAgcmVhZG9ubHkgbW9kaWZpZXJzOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHZpZXdwb3J0IHggY29vcmRpbmF0ZSwgaW4gQ1NTIHBpeGVscy5cbiAgICovXG4gIHJlYWRvbmx5IHg6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHZpZXdwb3J0IHkgY29vcmRpbmF0ZSwgaW4gQ1NTIHBpeGVscy5cbiAgICovXG4gIHJlYWRvbmx5IHk6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBIb3cgbG9uZyBhIGxvbmctcHJlc3MgaG9sZHMgdGhlIHRvdWNoIGRvd24gYmVmb3JlIHJlbGVhc2luZyBpdC5cbiAqXG4gKiBPYnNpZGlhbiBNb2JpbGUgaW1wbGVtZW50cyBsb25nLXByZXNzIGluIEphdmFTY3JpcHQgKGEgdGltZXIgc3RhcnRlZCBvbiBgdG91Y2hzdGFydGApIHJhdGhlciB0aGFuXG4gKiByZWx5aW5nIG9uIGEgbmF0aXZlIGdlc3R1cmUsIHNvIHRoaXMgaGFzIHRvIGNsZWFyICppdHMqIHRocmVzaG9sZCwgbm90IEFuZHJvaWQncy4gNjAwbXMgaXMgdGhlXG4gKiBjb252ZW50aW9uYWwgQW5kcm9pZCBsb25nLXByZXNzIHRocmVzaG9sZCBhbmQgY2xlYXJzIE9ic2lkaWFuJ3MgY29tZm9ydGFibHkuXG4gKi9cbmNvbnN0IExPTkdfUFJFU1NfRFdFTExfSU5fTUlMTElTRUNPTkRTID0gNjAwO1xuXG5jb25zdCBOT19NT0RJRklFUlMgPSAwO1xuY29uc3QgTU9ESUZJRVJfQklUX0FMVCA9IDE7XG5jb25zdCBNT0RJRklFUl9CSVRfQ09OVFJPTCA9IDI7XG5jb25zdCBNT0RJRklFUl9CSVRfTUVUQSA9IDQ7XG5jb25zdCBNT0RJRklFUl9CSVRfU0hJRlQgPSA4O1xuXG4vKipcbiAqIENEUCdzIG1vZGlmaWVyIGJpdG1hc2ssIHdoaWNoIGlzIG5vdCB0aGUgc2FtZSBzcGVsbGluZyBhcyBFbGVjdHJvbidzIHN0cmluZyBsaXN0LlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vY2hyb21lZGV2dG9vbHMuZ2l0aHViLmlvL2RldnRvb2xzLXByb3RvY29sL3RvdC9JbnB1dC8jbWV0aG9kLWRpc3BhdGNoS2V5RXZlbnR9XG4gKi9cbmNvbnN0IENEUF9NT0RJRklFUl9CSVRfQllfTkFNRSA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KFtcbiAgWydhbHQnLCBNT0RJRklFUl9CSVRfQUxUXSxcbiAgWydjb250cm9sJywgTU9ESUZJRVJfQklUX0NPTlRST0xdLFxuICBbJ21ldGEnLCBNT0RJRklFUl9CSVRfTUVUQV0sXG4gIFsnc2hpZnQnLCBNT0RJRklFUl9CSVRfU0hJRlRdXG5dKTtcblxuY29uc3QgS0VZX0NPREVfQkFDS1NQQUNFID0gODtcbmNvbnN0IEtFWV9DT0RFX1RBQiA9IDk7XG5jb25zdCBLRVlfQ09ERV9FTlRFUiA9IDEzO1xuY29uc3QgS0VZX0NPREVfRVNDQVBFID0gMjc7XG5jb25zdCBLRVlfQ09ERV9BUlJPV19MRUZUID0gMzc7XG5jb25zdCBLRVlfQ09ERV9BUlJPV19VUCA9IDM4O1xuY29uc3QgS0VZX0NPREVfQVJST1dfUklHSFQgPSAzOTtcbmNvbnN0IEtFWV9DT0RFX0FSUk9XX0RPV04gPSA0MDtcbmNvbnN0IEtFWV9DT0RFX0RFTEVURSA9IDQ2O1xuXG4vKipcbiAqIE5hbWVkIGtleXMsIHdpdGggdGhlIGB0ZXh0YCBhIHJlYWwga2V5IHByZXNzIHdvdWxkIHByb2R1Y2UgKGFic2VudCB3aGVuIGl0IHByb2R1Y2VzIG5vbmUpLlxuICpcbiAqIE9ubHkga2V5cyB0aGUgZmxlZXQgYWN0dWFsbHkgcHJlc3NlcyBhcmUgbGlzdGVkLCBwbHVzIHRoZSBlZGl0aW5nIGtleXMgYSBjYWxsZXIgd291bGQgcmVhc29uYWJseSByZWFjaFxuICogZm9yIG5leHQuIEFuIHVua25vd24gbXVsdGktY2hhcmFjdGVyIGtleSBpcyBhIGNhbGxlciBlcnJvciwgbm90IGEgc2lsZW50IG5vLW9wIFx1MjAxNCBzZWVcbiAqIHtAbGluayB0b0tleUNvbW1hbmRzfS5cbiAqL1xuY29uc3QgTkFNRURfS0VZUyA9IG5ldyBNYXA8c3RyaW5nLCBOYW1lZEtleT4oW1xuICBbJ0Fycm93RG93bicsIHsgY29kZTogJ0Fycm93RG93bicsIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZTogS0VZX0NPREVfQVJST1dfRE9XTiB9XSxcbiAgWydBcnJvd0xlZnQnLCB7IGNvZGU6ICdBcnJvd0xlZnQnLCB3aW5kb3dzVmlydHVhbEtleUNvZGU6IEtFWV9DT0RFX0FSUk9XX0xFRlQgfV0sXG4gIFsnQXJyb3dSaWdodCcsIHsgY29kZTogJ0Fycm93UmlnaHQnLCB3aW5kb3dzVmlydHVhbEtleUNvZGU6IEtFWV9DT0RFX0FSUk9XX1JJR0hUIH1dLFxuICBbJ0Fycm93VXAnLCB7IGNvZGU6ICdBcnJvd1VwJywgd2luZG93c1ZpcnR1YWxLZXlDb2RlOiBLRVlfQ09ERV9BUlJPV19VUCB9XSxcbiAgWydCYWNrc3BhY2UnLCB7IGNvZGU6ICdCYWNrc3BhY2UnLCB3aW5kb3dzVmlydHVhbEtleUNvZGU6IEtFWV9DT0RFX0JBQ0tTUEFDRSB9XSxcbiAgWydEZWxldGUnLCB7IGNvZGU6ICdEZWxldGUnLCB3aW5kb3dzVmlydHVhbEtleUNvZGU6IEtFWV9DT0RFX0RFTEVURSB9XSxcbiAgWydFbnRlcicsIHsgY29kZTogJ0VudGVyJywgdGV4dDogJ1xccicsIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZTogS0VZX0NPREVfRU5URVIgfV0sXG4gIFsnRXNjYXBlJywgeyBjb2RlOiAnRXNjYXBlJywgd2luZG93c1ZpcnR1YWxLZXlDb2RlOiBLRVlfQ09ERV9FU0NBUEUgfV0sXG4gIFsnVGFiJywgeyBjb2RlOiAnVGFiJywgdGV4dDogJ1xcdCcsIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZTogS0VZX0NPREVfVEFCIH1dXG5dKTtcblxuY29uc3QgRklSU1RfQ09ERV9QT0lOVF9JTkRFWCA9IDA7XG5jb25zdCBESUdJVF9aRVJPX0NPREVfUE9JTlQgPSBjb2RlUG9pbnRPZignMCcpO1xuY29uc3QgRElHSVRfTklORV9DT0RFX1BPSU5UID0gY29kZVBvaW50T2YoJzknKTtcbmNvbnN0IFVQUEVSQ0FTRV9BX0NPREVfUE9JTlQgPSBjb2RlUG9pbnRPZignQScpO1xuY29uc3QgVVBQRVJDQVNFX1pfQ09ERV9QT0lOVCA9IGNvZGVQb2ludE9mKCdaJyk7XG5cbi8qKlxuICogVGhlIENEUCBzcGVsbGluZyBvZiBvbmUgbmFtZWQga2V5LlxuICovXG5pbnRlcmZhY2UgTmFtZWRLZXkge1xuICByZWFkb25seSBjb2RlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRleHQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgZXhwcmVzc2lvbiB0aGUgaG9zdCBldmFsdWF0ZXMgdG8gYW5zd2VyIG9uZSBpbnB1dCByZXF1ZXN0LlxuICpcbiAqIE9wdGlvbmFsIGNoYWluaW5nIHRocm91Z2hvdXQ6IGJ5IHRoZSB0aW1lIHRoZSBob3N0IGFuc3dlcnMsIHRoZSBwYWdlIG1heSBoYXZlIG5hdmlnYXRlZCBhbmQgZHJvcHBlZCB0aGVcbiAqIG5hbWVzcGFjZSwgYW5kIGEgYFR5cGVFcnJvcmAgaW5zaWRlIHRoaXMgZXZhbHVhdGUgd291bGQgYmUgcmVwb3J0ZWQgYXMgYW4gaW5qZWN0aW9uIGZhaWx1cmUgdGhhdCBhbHJlYWR5XG4gKiBzdWNjZWVkZWQuXG4gKlxuICogQHBhcmFtIGlkIC0gVGhlIHJlcXVlc3QgaWQgdGhlIHJlbmRlcmVyIGlzIHdhaXRpbmcgb24uXG4gKiBAcGFyYW0gZXJyb3JNZXNzYWdlIC0gV2h5IHRoZSBpbmplY3Rpb24gZmFpbGVkLCB3aGVuIGl0IGRpZC4gT21pdCBvbiBzdWNjZXNzLlxuICogQHJldHVybnMgQSBzZWxmLWNvbnRhaW5lZCBleHByZXNzaW9uIHRvIHBhc3MgdG8gYFJ1bnRpbWUuZXZhbHVhdGVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRSZXNvbHZlSW5wdXRFeHByZXNzaW9uKGlkOiBzdHJpbmcsIGVycm9yTWVzc2FnZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgd2luZG93Ll9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3Rpbmc/LnJlc29sdmVJbnB1dD8uKCR7SlNPTi5zdHJpbmdpZnkoaWQpfSwgJHtKU09OLnN0cmluZ2lmeShlcnJvck1lc3NhZ2UgPz8gbnVsbCl9KWA7XG59XG5cbi8qKlxuICogVGhlIGZpcnN0IGNvZGUgcG9pbnQgb2YgYSBub24tZW1wdHkgc3RyaW5nLlxuICpcbiAqIGBTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0YCBpcyB0eXBlZCBgbnVtYmVyIHwgdW5kZWZpbmVkYCwgc28gZXZlcnkgY2FsbCBzaXRlIHdvdWxkIG90aGVyd2lzZSBjYXJyeSBhXG4gKiBgPz8gZmFsbGJhY2tgIHRoYXQgbm8gaW5wdXQgY2FuIGV2ZXIgcmVhY2ggXHUyMDE0IGEgZGVhZCBicmFuY2ggdW5kZXIgdGhlIDEwMCUgY292ZXJhZ2UgZ2F0ZS4gVGhyb3dpbmcgaGVyZVxuICoga2VlcHMgdGhhdCBpbXBvc3NpYmxlIGNhc2UgaW4gT05FIHBsYWNlLCB3aGVyZSBhIHVuaXQgdGVzdCBjYW4gcmVhY2ggaXQgZGlyZWN0bHksIGluc3RlYWQgb2Ygc3ByZWFkaW5nXG4gKiB1bnJlYWNoYWJsZSBmYWxsYmFja3MgKG9yIGNvdmVyYWdlIHN1cHByZXNzaW9ucykgYWNyb3NzIHRoZSBtb2R1bGUuXG4gKlxuICogQHBhcmFtIHRleHQgLSBBIG5vbi1lbXB0eSBzdHJpbmcuXG4gKiBAcmV0dXJucyBJdHMgZmlyc3QgY29kZSBwb2ludC5cbiAqIEB0aHJvd3MgV2hlbiBgdGV4dGAgaXMgZW1wdHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2RlUG9pbnRPZih0ZXh0OiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCBjb2RlUG9pbnQgPSB0ZXh0LmNvZGVQb2ludEF0KEZJUlNUX0NPREVfUE9JTlRfSU5ERVgpO1xuICBpZiAoY29kZVBvaW50ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvZGVQb2ludE9mIHJlY2VpdmVkIGFuIGVtcHR5IHN0cmluZy4nKTtcbiAgfVxuXG4gIHJldHVybiBjb2RlUG9pbnQ7XG59XG5cbi8qKlxuICogVHJhbnNsYXRlcyBhIG1vYmlsZSBpbnB1dCByZXF1ZXN0IGludG8gdGhlIG9yZGVyZWQgQ0RQIGNvbW1hbmRzIHRoYXQgcmVhbGl6ZSBpdC5cbiAqXG4gKiBAcGFyYW0gcmVxdWVzdCAtIFdoYXQgdGhlIHJlbmRlcmVyIGFza2VkIHRoZSBob3N0IHRvIGluamVjdC5cbiAqIEByZXR1cm5zIFRoZSBjb21tYW5kcyB0byBzZW5kLCBpbiBvcmRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ2RwSW5wdXRDb21tYW5kcyhyZXF1ZXN0OiBNb2JpbGVJbnB1dFJlcXVlc3QpOiBDZHBJbnB1dENvbW1hbmRbXSB7XG4gIGlmIChyZXF1ZXN0LmtpbmQgPT09ICdrZXknKSB7XG4gICAgcmV0dXJuIHRvS2V5Q29tbWFuZHMocmVxdWVzdCk7XG4gIH1cblxuICByZXR1cm4gdG9Qb2ludGVyQ29tbWFuZHMocmVxdWVzdCk7XG59XG5cbi8qKlxuICogRm9sZHMgcmVzb2x2ZWQgbW9kaWZpZXIgbmFtZXMgaW50byBDRFAncyBiaXRtYXNrLlxuICpcbiAqIFVua25vd24gbmFtZXMgYXJlIGlnbm9yZWQgcmF0aGVyIHRoYW4gdGhyb3dpbmc6IHRoZSByZW5kZXJlcidzIGB0b0VsZWN0cm9uTW9kaWZpZXJzYCBpcyBleGhhdXN0aXZlIG92ZXJcbiAqIE9ic2lkaWFuJ3MgYE1vZGlmaWVyYCB1bmlvbiwgc28gYW4gdW5rbm93biBuYW1lIGhlcmUgd291bGQgbWVhbiB0aGUgdHdvIGNvcGllcyBoYXZlIGFscmVhZHkgZHJpZnRlZCwgYW5kXG4gKiBmYWlsaW5nIHRoZSB3aG9sZSBnZXN0dXJlIGlzIGEgd29yc2Ugb3V0Y29tZSB0aGFuIHByZXNzaW5nIGl0IHVubW9kaWZpZWQuXG4gKlxuICogQHBhcmFtIG1vZGlmaWVycyAtIFJlc29sdmVkIGxvd2VyY2FzZSBtb2RpZmllciBuYW1lcy5cbiAqIEByZXR1cm5zIFRoZSBDRFAgbW9kaWZpZXIgYml0bWFzay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ2RwTW9kaWZpZXJzKG1vZGlmaWVyczogcmVhZG9ubHkgc3RyaW5nW10pOiBudW1iZXIge1xuICAvLyBTdW1taW5nIERJU1RJTkNUIGJpdHMgZXF1YWxzIE9SLWluZyB0aGVtLCBhbmQgdGhlIGBTZXRgIGlzIHdoYXQgbWFrZXMgdGhhdCBob2xkIGV2ZW4gd2hlbiBhIGNhbGxlclxuICAvLyBQYXNzZXMgdGhlIHNhbWUgbW9kaWZpZXIgdHdpY2UgXHUyMDE0IHNvIHRoZSBtYXNrIGlzIGJ1aWx0IHdpdGhvdXQgYSBiaXR3aXNlIG9wZXJhdG9yLlxuICBjb25zdCBiaXRzID0gbmV3IFNldDxudW1iZXI+KCk7XG4gIGZvciAoY29uc3QgbW9kaWZpZXIgb2YgbW9kaWZpZXJzKSB7XG4gICAgY29uc3QgYml0ID0gQ0RQX01PRElGSUVSX0JJVF9CWV9OQU1FLmdldChtb2RpZmllcik7XG4gICAgaWYgKGJpdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBiaXRzLmFkZChiaXQpO1xuICAgIH1cbiAgfVxuXG4gIGxldCBiaXRtYXNrID0gTk9fTU9ESUZJRVJTO1xuICBmb3IgKGNvbnN0IGJpdCBvZiBiaXRzKSB7XG4gICAgYml0bWFzayArPSBiaXQ7XG4gIH1cblxuICByZXR1cm4gYml0bWFzaztcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBhIGtleSBuYW1lIHRvIGl0cyBDRFAgc3BlbGxpbmcuXG4gKlxuICogQHBhcmFtIGtleSAtIEEgbmFtZWQga2V5IG9yIGEgc2luZ2xlIHByaW50YWJsZSBjaGFyYWN0ZXIuXG4gKiBAcmV0dXJucyBUaGUgQ0RQIHNwZWxsaW5nLlxuICovXG5mdW5jdGlvbiByZXNvbHZlS2V5KGtleTogc3RyaW5nKTogTmFtZWRLZXkge1xuICBjb25zdCBuYW1lZEtleSA9IE5BTUVEX0tFWVMuZ2V0KGtleSk7XG4gIGlmIChuYW1lZEtleSkge1xuICAgIHJldHVybiBuYW1lZEtleTtcbiAgfVxuXG4gIC8vIFwiRXhhY3RseSBvbmUgY29kZSBwb2ludFwiLCB0ZXN0ZWQgd2l0aG91dCBzcGxpdHRpbmcgdGhlIHN0cmluZzogYGZyb21Db2RlUG9pbnRgIHJvdW5kLXRyaXBzIG9ubHkgd2hlblxuICAvLyBga2V5YCBpcyB0aGF0IHNpbmdsZSBjb2RlIHBvaW50LCBzbyBhbiBhc3RyYWwtcGxhbmUgY2hhcmFjdGVyIGNvdW50cyBhcyBvbmUgYW5kIGAnQ3RybCtLJ2AgZG9lcyBub3QuXG4gIGNvbnN0IGNvZGVQb2ludCA9IGtleS5jb2RlUG9pbnRBdChGSVJTVF9DT0RFX1BPSU5UX0lOREVYKTtcbiAgaWYgKGNvZGVQb2ludCA9PT0gdW5kZWZpbmVkIHx8IFN0cmluZy5mcm9tQ29kZVBvaW50KGNvZGVQb2ludCkgIT09IGtleSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBwcmVzc0tleSByZWNlaXZlZCBhbiB1bmtub3duIGtleSBuYW1lIG9uIG1vYmlsZTogJHtKU09OLnN0cmluZ2lmeShrZXkpfS4gYFxuICAgICAgICArIGBQYXNzIGEgc2luZ2xlIGNoYXJhY3RlciBvciBvbmUgb2Y6ICR7Wy4uLk5BTUVEX0tFWVMua2V5cygpXS5qb2luKCcsICcpfS5gXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHVwcGVyQ2FzZWRDb2RlUG9pbnQgPSBjb2RlUG9pbnRPZihrZXkudG9VcHBlckNhc2UoKSk7XG4gIHJldHVybiB7XG4gICAgY29kZTogcmVzb2x2ZUtleUNvZGUodXBwZXJDYXNlZENvZGVQb2ludCksXG4gICAgdGV4dDoga2V5LFxuICAgIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZTogdXBwZXJDYXNlZENvZGVQb2ludFxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBwaHlzaWNhbCBgY29kZWAgZm9yIGEgcHJpbnRhYmxlIGNoYXJhY3Rlci5cbiAqXG4gKiBDaGFyYWN0ZXJzIG91dHNpZGUgdGhlIEFTQ0lJIGxldHRlci9kaWdpdCByb3dzIGhhdmUgbm8gc3RhYmxlIHBoeXNpY2FsIGtleSwgc28gdGhleSBnZXQgYW4gZW1wdHlcbiAqIGBjb2RlYCBcdTIwMTQgdGhlIGB0ZXh0YCBzdGlsbCBjYXJyaWVzIHRoZW0sIHdoaWNoIGlzIHdoYXQgYW4gZWRpdG9yIHJlYWRzLlxuICpcbiAqIEBwYXJhbSB1cHBlckNhc2VkQ29kZVBvaW50IC0gVGhlIGNoYXJhY3RlcidzIHVwcGVyLWNhc2VkIGNvZGUgcG9pbnQuXG4gKiBAcmV0dXJucyBUaGUgQ0RQIGBjb2RlYCwgb3IgYW4gZW1wdHkgc3RyaW5nIHdoZW4gdGhlcmUgaXMgbm8gc3RhYmxlIG9uZS5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUtleUNvZGUodXBwZXJDYXNlZENvZGVQb2ludDogbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKHVwcGVyQ2FzZWRDb2RlUG9pbnQgPj0gVVBQRVJDQVNFX0FfQ09ERV9QT0lOVCAmJiB1cHBlckNhc2VkQ29kZVBvaW50IDw9IFVQUEVSQ0FTRV9aX0NPREVfUE9JTlQpIHtcbiAgICByZXR1cm4gYEtleSR7U3RyaW5nLmZyb21Db2RlUG9pbnQodXBwZXJDYXNlZENvZGVQb2ludCl9YDtcbiAgfVxuXG4gIGlmICh1cHBlckNhc2VkQ29kZVBvaW50ID49IERJR0lUX1pFUk9fQ09ERV9QT0lOVCAmJiB1cHBlckNhc2VkQ29kZVBvaW50IDw9IERJR0lUX05JTkVfQ09ERV9QT0lOVCkge1xuICAgIHJldHVybiBgRGlnaXQke1N0cmluZy5mcm9tQ29kZVBvaW50KHVwcGVyQ2FzZWRDb2RlUG9pbnQpfWA7XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBjb21tYW5kIHNlcXVlbmNlIGZvciBhIGtleSBwcmVzcy5cbiAqXG4gKiBNaXJyb3JzIHRoZSBkZXNrdG9wIHR3aW4ncyB0cnVzdGVkIGBrZXlEb3duYCBcdTIxOTIgYGNoYXJgIFx1MjE5MiBga2V5VXBgIGluIENEUCdzIHNwZWxsaW5nOiBgcmF3S2V5RG93bmAgZmlyZXNcbiAqIGBrZXlkb3duYCBhbG9uZSwgYGNoYXJgIGZpcmVzIGBrZXlwcmVzc2AgLyBgYmVmb3JlaW5wdXRgIC8gYGlucHV0YCwgYGtleVVwYCBmaXJlcyBga2V5dXBgLiBBIGtleSB0aGF0XG4gKiBwcm9kdWNlcyBubyB0ZXh0IChgRXNjYXBlYCkgc2tpcHMgdGhlIGBjaGFyYCwgZXhhY3RseSBhcyBhIHJlYWwgb25lIGRvZXMuXG4gKlxuICogQHBhcmFtIHJlcXVlc3QgLSBUaGUga2V5IHJlcXVlc3QuXG4gKiBAcmV0dXJucyBUaGUgY29tbWFuZHMgdG8gc2VuZCwgaW4gb3JkZXIuXG4gKi9cbmZ1bmN0aW9uIHRvS2V5Q29tbWFuZHMocmVxdWVzdDogTW9iaWxlS2V5SW5wdXRSZXF1ZXN0KTogQ2RwSW5wdXRDb21tYW5kW10ge1xuICBjb25zdCB7IGNvZGUsIHRleHQsIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSB9ID0gcmVzb2x2ZUtleShyZXF1ZXN0LmtleSk7XG4gIGNvbnN0IG1vZGlmaWVycyA9IHRvQ2RwTW9kaWZpZXJzKHJlcXVlc3QubW9kaWZpZXJzKTtcbiAgY29uc3QgYmFzZSA9IHsgY29kZSwga2V5OiByZXF1ZXN0LmtleSwgbW9kaWZpZXJzLCB3aW5kb3dzVmlydHVhbEtleUNvZGUgfTtcblxuICBjb25zdCBjb21tYW5kczogQ2RwSW5wdXRDb21tYW5kW10gPSBbXG4gICAgeyBtZXRob2Q6ICdJbnB1dC5kaXNwYXRjaEtleUV2ZW50JywgcGFyYW1zOiB7IC4uLmJhc2UsIHR5cGU6ICdyYXdLZXlEb3duJyB9IH1cbiAgXTtcblxuICBpZiAodGV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29tbWFuZHMucHVzaCh7IG1ldGhvZDogJ0lucHV0LmRpc3BhdGNoS2V5RXZlbnQnLCBwYXJhbXM6IHsgLi4uYmFzZSwgdGV4dCwgdHlwZTogJ2NoYXInIH0gfSk7XG4gIH1cblxuICBjb21tYW5kcy5wdXNoKHsgbWV0aG9kOiAnSW5wdXQuZGlzcGF0Y2hLZXlFdmVudCcsIHBhcmFtczogeyAuLi5iYXNlLCB0eXBlOiAna2V5VXAnIH0gfSk7XG5cbiAgcmV0dXJuIGNvbW1hbmRzO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgY29tbWFuZCBzZXF1ZW5jZSBmb3IgYSB0YXAgb3IgYSBsb25nLXByZXNzLlxuICpcbiAqIEEgdHJ1c3RlZCB0b3VjaCBwYWlyIGlzIGFsbCBDaHJvbWl1bSBuZWVkcyBcdTIwMTQgaXQgc3ludGhlc2l6ZXMgYHBvaW50ZXJkb3duYCAvIGB0b3VjaHN0YXJ0YCAvXG4gKiBgcG9pbnRlcnVwYCAvIGB0b3VjaGVuZGAgLyBgY2xpY2tgIGZyb20gaXQsIGV2ZXJ5IG9uZSBgaXNUcnVzdGVkYC4gVGhlIHJlbGVhc2UgY2FycmllcyBhbiBlbXB0eVxuICogYHRvdWNoUG9pbnRzYCBsaXN0LCB3aGljaCBpcyBDRFAncyBzcGVsbGluZyBmb3IgXCJhbGwgZmluZ2VycyBsaWZ0ZWRcIi5cbiAqXG4gKiBAcGFyYW0gcmVxdWVzdCAtIFRoZSBwb2ludGVyIHJlcXVlc3QuXG4gKiBAcmV0dXJucyBUaGUgY29tbWFuZHMgdG8gc2VuZCwgaW4gb3JkZXIuXG4gKi9cbmZ1bmN0aW9uIHRvUG9pbnRlckNvbW1hbmRzKHJlcXVlc3Q6IE1vYmlsZVBvaW50ZXJJbnB1dFJlcXVlc3QpOiBDZHBJbnB1dENvbW1hbmRbXSB7XG4gIGNvbnN0IG1vZGlmaWVycyA9IHRvQ2RwTW9kaWZpZXJzKHJlcXVlc3QubW9kaWZpZXJzKTtcblxuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIG1ldGhvZDogJ0lucHV0LmRpc3BhdGNoVG91Y2hFdmVudCcsXG4gICAgICBwYXJhbXM6IHsgbW9kaWZpZXJzLCB0b3VjaFBvaW50czogW3sgeDogcmVxdWVzdC54LCB5OiByZXF1ZXN0LnkgfV0sIHR5cGU6ICd0b3VjaFN0YXJ0JyB9XG4gICAgfSxcbiAgICB7XG4gICAgICAuLi4ocmVxdWVzdC5raW5kID09PSAnbG9uZ1ByZXNzJyAmJiB7IGRlbGF5QmVmb3JlSW5NaWxsaXNlY29uZHM6IExPTkdfUFJFU1NfRFdFTExfSU5fTUlMTElTRUNPTkRTIH0pLFxuICAgICAgbWV0aG9kOiAnSW5wdXQuZGlzcGF0Y2hUb3VjaEV2ZW50JyxcbiAgICAgIHBhcmFtczogeyBtb2RpZmllcnMsIHRvdWNoUG9pbnRzOiBbXSwgdHlwZTogJ3RvdWNoRW5kJyB9XG4gICAgfVxuICBdO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzQk8sTUFBTSw0QkFBNEI7QUFTbEMsTUFBTSx1Q0FBdUM7QUE2R3BELE1BQU0sbUNBQW1DO0FBRXpDLE1BQU0sZUFBZTtBQUNyQixNQUFNLG1CQUFtQjtBQUN6QixNQUFNLHVCQUF1QjtBQUM3QixNQUFNLG9CQUFvQjtBQUMxQixNQUFNLHFCQUFxQjtBQU8zQixNQUFNLDJCQUEyQixvQkFBSSxJQUFvQjtBQUFBLEVBQ3ZELENBQUMsT0FBTyxnQkFBZ0I7QUFBQSxFQUN4QixDQUFDLFdBQVcsb0JBQW9CO0FBQUEsRUFDaEMsQ0FBQyxRQUFRLGlCQUFpQjtBQUFBLEVBQzFCLENBQUMsU0FBUyxrQkFBa0I7QUFDOUIsQ0FBQztBQUVELE1BQU0scUJBQXFCO0FBQzNCLE1BQU0sZUFBZTtBQUNyQixNQUFNLGlCQUFpQjtBQUN2QixNQUFNLGtCQUFrQjtBQUN4QixNQUFNLHNCQUFzQjtBQUM1QixNQUFNLG9CQUFvQjtBQUMxQixNQUFNLHVCQUF1QjtBQUM3QixNQUFNLHNCQUFzQjtBQUM1QixNQUFNLGtCQUFrQjtBQVN4QixNQUFNLGFBQWEsb0JBQUksSUFBc0I7QUFBQSxFQUMzQyxDQUFDLGFBQWEsRUFBRSxNQUFNLGFBQWEsdUJBQXVCLG9CQUFvQixDQUFDO0FBQUEsRUFDL0UsQ0FBQyxhQUFhLEVBQUUsTUFBTSxhQUFhLHVCQUF1QixvQkFBb0IsQ0FBQztBQUFBLEVBQy9FLENBQUMsY0FBYyxFQUFFLE1BQU0sY0FBYyx1QkFBdUIscUJBQXFCLENBQUM7QUFBQSxFQUNsRixDQUFDLFdBQVcsRUFBRSxNQUFN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