@mnaoumov/obsidian-dev-toolkit 1.1.0 → 2.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 (217) hide show
  1. package/dist/demo-vault-helper/main.js +179 -1
  2. package/dist/integration-test-plugin/main.js +1232 -1023
  3. package/dist/integration-test-plugin/manifest.json +2 -2
  4. package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +3 -22
  5. package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +1 -1
  6. package/dist/lib/cjs/bundlers/esbuild-impl/dependency.cjs +2 -21
  7. package/dist/lib/cjs/bundlers/esbuild-impl/dependency.d.cts +1 -1
  8. package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +2 -21
  9. package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.d.cts +1 -1
  10. package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +7 -53
  11. package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +1 -1
  12. package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +4 -23
  13. package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +1 -1
  14. package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +2 -21
  15. package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +1 -1
  16. package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.cjs +2 -21
  17. package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.d.cts +1 -1
  18. package/dist/lib/cjs/bundlers/esbuild.cjs +1 -47
  19. package/dist/lib/cjs/bundlers/esbuild.d.cts +1 -1
  20. package/dist/lib/cjs/bundlers/index.cjs +3 -49
  21. package/dist/lib/cjs/bundlers/index.d.cts +1 -1
  22. package/dist/lib/cjs/demo-vault-app-json.cjs +2 -21
  23. package/dist/lib/cjs/demo-vault-app-json.d.cts +1 -1
  24. package/dist/lib/cjs/demo-vault-buttons.cjs +3 -22
  25. package/dist/lib/cjs/demo-vault-buttons.d.cts +1 -1
  26. package/dist/lib/cjs/demo-vault-coverage.cjs +2 -21
  27. package/dist/lib/cjs/demo-vault-coverage.d.cts +1 -1
  28. package/dist/lib/cjs/demo-vault.cjs +3 -22
  29. package/dist/lib/cjs/demo-vault.d.cts +1 -1
  30. package/dist/lib/cjs/formatters/dprint.cjs +2 -21
  31. package/dist/lib/cjs/formatters/dprint.d.cts +1 -1
  32. package/dist/lib/cjs/formatters/index.cjs +2 -48
  33. package/dist/lib/cjs/formatters/index.d.cts +1 -1
  34. package/dist/lib/cjs/index.cjs +12 -58
  35. package/dist/lib/cjs/integration-test-setup.cjs +1 -47
  36. package/dist/lib/cjs/integration-test-setup.d.cts +5 -5
  37. package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +3 -22
  38. package/dist/lib/cjs/integration-test-vitest-global-setup.d.cts +7 -7
  39. package/dist/lib/cjs/jest-setup.cjs +2 -21
  40. package/dist/lib/cjs/jest-setup.d.cts +1 -1
  41. package/dist/lib/cjs/library-references.d.cts +2 -0
  42. package/dist/lib/cjs/linters/eslint-config.cjs +24 -40
  43. package/dist/lib/cjs/linters/eslint-config.d.cts +1 -1
  44. package/dist/lib/cjs/linters/eslint-rules/index.cjs +16 -62
  45. package/dist/lib/cjs/linters/eslint-rules/index.d.cts +2 -2
  46. package/dist/lib/cjs/linters/eslint-rules/manifest-description.cjs +1 -47
  47. package/dist/lib/cjs/linters/eslint-rules/manifest-description.d.cts +1 -1
  48. package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.cjs +3 -22
  49. package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.d.cts +1 -1
  50. package/dist/lib/cjs/linters/eslint-rules/manifest-id.cjs +1 -47
  51. package/dist/lib/cjs/linters/eslint-rules/manifest-id.d.cts +1 -1
  52. package/dist/lib/cjs/linters/eslint-rules/manifest-name.cjs +1 -47
  53. package/dist/lib/cjs/linters/eslint-rules/manifest-name.d.cts +1 -1
  54. package/dist/lib/cjs/linters/eslint-rules/manifest-schema.cjs +1 -47
  55. package/dist/lib/cjs/linters/eslint-rules/manifest-schema.d.cts +1 -1
  56. package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.cjs +2 -21
  57. package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.d.cts +1 -1
  58. package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.cjs +2 -21
  59. package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.cts +1 -1
  60. package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.cjs +2 -21
  61. package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.d.cts +1 -1
  62. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-toolkit-plugin.cjs +136 -0
  63. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-toolkit-plugin.d.cts +16 -0
  64. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.cjs +1 -47
  65. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.d.cts +1 -1
  66. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.cjs +1 -47
  67. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.d.cts +1 -1
  68. package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.cjs +2 -21
  69. package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.d.cts +1 -1
  70. package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.cjs +2 -21
  71. package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.d.cts +1 -1
  72. package/dist/lib/cjs/linters/eslint.cjs +2 -21
  73. package/dist/lib/cjs/linters/eslint.d.cts +1 -1
  74. package/dist/lib/cjs/linters/index.cjs +9 -55
  75. package/dist/lib/cjs/linters/index.d.cts +1 -1
  76. package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +2 -21
  77. package/dist/lib/cjs/linters/markdownlint-cli2-config.d.cts +1 -1
  78. package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +2 -48
  79. package/dist/lib/cjs/linters/markdownlint-rules/index.d.cts +1 -1
  80. package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.cjs +2 -48
  81. package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.d.cts +1 -1
  82. package/dist/lib/cjs/linters/markdownlint.cjs +2 -21
  83. package/dist/lib/cjs/linters/markdownlint.d.cts +1 -1
  84. package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.cjs +1 -47
  85. package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.d.cts +1 -1
  86. package/dist/lib/cjs/linters/plugin-names.cjs +1 -47
  87. package/dist/lib/cjs/linters/plugin-names.d.cts +1 -1
  88. package/dist/lib/cjs/obsidian-plugin-repo-paths.cjs +1 -47
  89. package/dist/lib/cjs/obsidian-plugin-repo-paths.d.cts +1 -1
  90. package/dist/lib/cjs/setup.cjs +2 -21
  91. package/dist/lib/cjs/setup.d.cts +1 -1
  92. package/dist/lib/cjs/templates.cjs +2 -21
  93. package/dist/lib/cjs/templates.d.cts +1 -1
  94. package/dist/lib/cjs/test-runners/index.cjs +4 -50
  95. package/dist/lib/cjs/test-runners/index.d.cts +1 -1
  96. package/dist/lib/cjs/test-runners/integration-test-plugin.cjs +9 -28
  97. package/dist/lib/cjs/test-runners/integration-test-plugin.d.cts +5 -5
  98. package/dist/lib/cjs/test-runners/performance-eval-cap.cjs +1 -47
  99. package/dist/lib/cjs/test-runners/performance-eval-cap.d.cts +1 -1
  100. package/dist/lib/cjs/test-runners/stale-build-global-setup.cjs +2 -21
  101. package/dist/lib/cjs/test-runners/stale-build-global-setup.d.cts +1 -1
  102. package/dist/lib/cjs/test-runners/vitest-config.cjs +6 -25
  103. package/dist/lib/cjs/test-runners/vitest-config.d.cts +2 -3
  104. package/dist/lib/cjs/version.cjs +2 -21
  105. package/dist/lib/cjs/version.d.cts +1 -1
  106. package/dist/lib/cjs/vitest-setup.cjs +2 -21
  107. package/dist/lib/cjs/vitest-setup.d.cts +1 -1
  108. package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +1 -1
  109. package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +2 -11
  110. package/dist/lib/esm/bundlers/esbuild-impl/dependency.d.mts +1 -1
  111. package/dist/lib/esm/bundlers/esbuild-impl/dependency.mjs +2 -11
  112. package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.d.mts +1 -1
  113. package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +2 -11
  114. package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +1 -1
  115. package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +1 -37
  116. package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +1 -1
  117. package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +2 -11
  118. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +1 -1
  119. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +2 -11
  120. package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.d.mts +1 -1
  121. package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.mjs +2 -11
  122. package/dist/lib/esm/bundlers/esbuild.d.mts +1 -1
  123. package/dist/lib/esm/bundlers/esbuild.mjs +1 -37
  124. package/dist/lib/esm/bundlers/index.d.mts +1 -1
  125. package/dist/lib/esm/bundlers/index.mjs +1 -37
  126. package/dist/lib/esm/demo-vault-app-json.d.mts +1 -1
  127. package/dist/lib/esm/demo-vault-app-json.mjs +2 -11
  128. package/dist/lib/esm/demo-vault-buttons.d.mts +1 -1
  129. package/dist/lib/esm/demo-vault-buttons.mjs +2 -11
  130. package/dist/lib/esm/demo-vault-coverage.d.mts +1 -1
  131. package/dist/lib/esm/demo-vault-coverage.mjs +2 -11
  132. package/dist/lib/esm/demo-vault.d.mts +1 -1
  133. package/dist/lib/esm/demo-vault.mjs +3 -12
  134. package/dist/lib/esm/formatters/dprint.d.mts +1 -1
  135. package/dist/lib/esm/formatters/dprint.mjs +2 -11
  136. package/dist/lib/esm/formatters/index.d.mts +1 -1
  137. package/dist/lib/esm/formatters/index.mjs +1 -37
  138. package/dist/lib/esm/index.mjs +1 -37
  139. package/dist/lib/esm/integration-test-setup.d.mts +5 -5
  140. package/dist/lib/esm/integration-test-setup.mjs +1 -37
  141. package/dist/lib/esm/integration-test-vitest-global-setup.d.mts +7 -7
  142. package/dist/lib/esm/integration-test-vitest-global-setup.mjs +4 -13
  143. package/dist/lib/esm/jest-setup.d.mts +1 -1
  144. package/dist/lib/esm/jest-setup.mjs +2 -11
  145. package/dist/lib/esm/library-references.d.mts +2 -0
  146. package/dist/lib/esm/linters/eslint-config.d.mts +1 -1
  147. package/dist/lib/esm/linters/eslint-config.mjs +23 -29
  148. package/dist/lib/esm/linters/eslint-rules/index.d.mts +2 -2
  149. package/dist/lib/esm/linters/eslint-rules/index.mjs +3 -39
  150. package/dist/lib/esm/linters/eslint-rules/manifest-description.d.mts +1 -1
  151. package/dist/lib/esm/linters/eslint-rules/manifest-description.mjs +1 -37
  152. package/dist/lib/esm/linters/eslint-rules/manifest-helpers.d.mts +1 -1
  153. package/dist/lib/esm/linters/eslint-rules/manifest-helpers.mjs +2 -11
  154. package/dist/lib/esm/linters/eslint-rules/manifest-id.d.mts +1 -1
  155. package/dist/lib/esm/linters/eslint-rules/manifest-id.mjs +1 -37
  156. package/dist/lib/esm/linters/eslint-rules/manifest-name.d.mts +1 -1
  157. package/dist/lib/esm/linters/eslint-rules/manifest-name.mjs +1 -37
  158. package/dist/lib/esm/linters/eslint-rules/manifest-schema.d.mts +1 -1
  159. package/dist/lib/esm/linters/eslint-rules/manifest-schema.mjs +1 -37
  160. package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.d.mts +1 -1
  161. package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.mjs +2 -11
  162. package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.mts +1 -1
  163. package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.mjs +2 -11
  164. package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.d.mts +1 -1
  165. package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.mjs +2 -11
  166. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-toolkit-plugin.d.mts +16 -0
  167. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-toolkit-plugin.mjs +37 -0
  168. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.d.mts +1 -1
  169. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.mjs +1 -37
  170. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.d.mts +1 -1
  171. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.mjs +1 -37
  172. package/dist/lib/esm/linters/eslint-rules/require-component-suffix.d.mts +1 -1
  173. package/dist/lib/esm/linters/eslint-rules/require-component-suffix.mjs +2 -11
  174. package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.d.mts +1 -1
  175. package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.mjs +2 -11
  176. package/dist/lib/esm/linters/eslint.d.mts +1 -1
  177. package/dist/lib/esm/linters/eslint.mjs +2 -11
  178. package/dist/lib/esm/linters/index.d.mts +1 -1
  179. package/dist/lib/esm/linters/index.mjs +1 -37
  180. package/dist/lib/esm/linters/markdownlint-cli2-config.d.mts +1 -1
  181. package/dist/lib/esm/linters/markdownlint-cli2-config.mjs +2 -11
  182. package/dist/lib/esm/linters/markdownlint-rules/index.d.mts +1 -1
  183. package/dist/lib/esm/linters/markdownlint-rules/index.mjs +1 -37
  184. package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.d.mts +1 -1
  185. package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.mjs +1 -37
  186. package/dist/lib/esm/linters/markdownlint.d.mts +1 -1
  187. package/dist/lib/esm/linters/markdownlint.mjs +2 -11
  188. package/dist/lib/esm/linters/obsidianmd-rule-custom-message.d.mts +1 -1
  189. package/dist/lib/esm/linters/obsidianmd-rule-custom-message.mjs +1 -37
  190. package/dist/lib/esm/linters/plugin-names.d.mts +1 -1
  191. package/dist/lib/esm/linters/plugin-names.mjs +1 -37
  192. package/dist/lib/esm/obsidian-plugin-repo-paths.d.mts +1 -1
  193. package/dist/lib/esm/obsidian-plugin-repo-paths.mjs +1 -37
  194. package/dist/lib/esm/setup.d.mts +1 -1
  195. package/dist/lib/esm/setup.mjs +2 -11
  196. package/dist/lib/esm/templates.d.mts +1 -1
  197. package/dist/lib/esm/templates.mjs +2 -11
  198. package/dist/lib/esm/test-runners/index.d.mts +1 -1
  199. package/dist/lib/esm/test-runners/index.mjs +1 -37
  200. package/dist/lib/esm/test-runners/integration-test-plugin.d.mts +5 -5
  201. package/dist/lib/esm/test-runners/integration-test-plugin.mjs +8 -17
  202. package/dist/lib/esm/test-runners/performance-eval-cap.d.mts +1 -1
  203. package/dist/lib/esm/test-runners/performance-eval-cap.mjs +1 -37
  204. package/dist/lib/esm/test-runners/stale-build-global-setup.d.mts +1 -1
  205. package/dist/lib/esm/test-runners/stale-build-global-setup.mjs +2 -11
  206. package/dist/lib/esm/test-runners/vitest-config.d.mts +2 -3
  207. package/dist/lib/esm/test-runners/vitest-config.mjs +5 -14
  208. package/dist/lib/esm/version.d.mts +1 -1
  209. package/dist/lib/esm/version.mjs +2 -11
  210. package/dist/lib/esm/vitest-setup.d.mts +1 -1
  211. package/dist/lib/esm/vitest-setup.mjs +2 -11
  212. package/linters/eslint-rules/{obsidian-dev-utils-plugin → obsidian-dev-toolkit-plugin}/package.json +3 -3
  213. package/package.json +3 -3
  214. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +0 -181
  215. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.d.cts +0 -13
  216. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.d.mts +0 -13
  217. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +0 -73
@@ -2,52 +2,6 @@
2
2
  THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
-
6
- (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
- symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
- }
11
-
12
- function ensureBrowserProcess() {
13
- const browserProcess = {
14
- browser: true,
15
- cwd() {
16
- return "/";
17
- },
18
- env: {},
19
- platform: "android"
20
- };
21
- const existingProcess = globalThis.process;
22
- if (!existingProcess) {
23
- globalThis.process = browserProcess;
24
- return;
25
- }
26
- if (existingProcess.versions?.node) {
27
- return;
28
- }
29
- const existingProcessRecord = existingProcess;
30
- for (const [key, value] of Object.entries(browserProcess)) {
31
- existingProcessRecord[key] ??= value;
32
- }
33
- existingProcessRecord["browser"] = true;
34
- }
35
-
36
- function keepName($unknown) {
37
- return $unknown;
38
- }
39
-
40
- (function initCjs() {
41
- const globalThisRecord = globalThis;
42
- ensureDisposeSymbols();
43
- globalThisRecord["__name"] ??= keepName;
44
- globalThisRecord["__extractDefault"] ??= extractDefault;
45
- ensureBrowserProcess();
46
- function extractDefault(module) {
47
- return module && module.__esModule && "default" in module ? module.default : module;
48
- }
49
- })();
50
- })();
51
5
  (function patchObsidianRequire() {
52
6
  const originalRequire = require;
53
7
  if (!originalRequire || originalRequire.__isPatched) {
@@ -154,4 +108,4 @@ const DESKTOP_PERFORMANCE_TEST_FILE_SUFFIX = ".desktop-performance.integration.t
154
108
  DESKTOP_PERFORMANCE_TEST_FILE_SUFFIX,
155
109
  PERFORMANCE_EVAL_CAP_IN_MILLISECONDS
156
110
  });
157
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVubmVycy9wZXJmb3JtYW5jZS1ldmFsLWNhcC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBwZXItZXZhbCBjYXAgb2YgdGhlIGBpbnRlZ3JhdGlvbi10ZXN0czpkZXNrdG9wLXBlcmZvcm1hbmNlYCBwcm9qZWN0LCBhbmQgdGhlIGZpbGUgc3VmZml4IHRoYXRcbiAqIHByb2plY3QgY29sbGVjdHMuXG4gKlxuICogQm90aCBsaXZlIGhlcmUsIHJhdGhlciB0aGFuIGluIGB2aXRlc3QtY29uZmlnLnRzYCwgYmVjYXVzZSB0aGUgYG5vLW92ZXItY2FwLXdhaXQtaW4tZXZhbC1pbi1vYnNpZGlhbmBcbiAqIEVTTGludCBydWxlIHJlYWRzIHRoZW0gdG9vLCBhbmQgdGhlIHNoYXJlZCBFU0xpbnQgY29uZmlnIGxvYWRzIHRoYXQgcnVsZSBpbiBldmVyeSBjb25zdW1pbmcgcmVwbzpcbiAqIGltcG9ydGluZyBgdml0ZXN0LWNvbmZpZy50c2AgZnJvbSB0aGUgcnVsZSB3b3VsZCBsb2FkIGB2aXRlc3QvY29uZmlnYCBhdCBsaW50IHRpbWUgZm9yIG5vdGhpbmcuXG4gKi9cblxuLyoqXG4gKiBUaGUgcGVyLWV2YWwgY2FwIHRoZSBgaW50ZWdyYXRpb24tdGVzdHM6ZGVza3RvcC1wZXJmb3JtYW5jZWAgcHJvamVjdCBnaXZlcyBpdHMgQ0RQIHRyYW5zcG9ydCwgaW5cbiAqIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBFdmVyeSBvdGhlciBwcm9qZWN0IGtlZXBzIHRoZSB0cmFuc3BvcnQncyBvd24gYERFRkFVTFRfRVZBTF9DQVBfSU5fTUlMTElTRUNPTkRTYCAoMzAgMDAwKSwgYW5kIGEgcmVwb1xuICogdGhhdCByYWlzZXMgaXRzIGRlc2t0b3AgY2FwIGFib3ZlIHRoYXQgaXMgc2V0dGluZyBhIEJBQ0tTVE9QLCBub3QgYSBidWRnZXQgYSBjbG9zdXJlIG1heSBzcGVuZC4gVGhlXG4gKiBwZXJmb3JtYW5jZSBwcm9qZWN0IGlzIHRoZSBvbmUgZXhjZXB0aW9uLCBhbmQgYSBkZWxpYmVyYXRlIG9uZTogaXRzIHdob2xlIG1lYXN1cmVtZW50IGlzIG9uZSBsb25nXG4gKiBpbi1wYWdlIGBSdW50aW1lLmV2YWx1YXRlYCBvdmVyIGEgdmF1bHQgb2YgdGVucyBvZiB0aG91c2FuZHMgb2Ygbm90ZXMsIGFuZCBpdHMgZmlsZXMgcnVuIG9uIG5vIG90aGVyXG4gKiBwcm9qZWN0LiBBIGNyb3NzLXBsYXRmb3JtIHN1aXRlIGdhaW5zIG5vdGhpbmcgZnJvbSBhbnkgZGVza3RvcCByYWlzZSwgYmVjYXVzZSBBcHBpdW0gY2FwcyBpdCBhdFxuICogMzAgMDAwIHdoYXRldmVyIHRoZSBkZXNrdG9wIHByb2plY3Qgc2F5cy5cbiAqL1xuZXhwb3J0IGNvbnN0IFBFUkZPUk1BTkNFX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EUyA9IDYwMF8wMDA7XG5cbi8qKlxuICogVGhlIGZpbGUtbmFtZSBzdWZmaXggb2YgYSBzdWl0ZSB0aGUgYGludGVncmF0aW9uLXRlc3RzOmRlc2t0b3AtcGVyZm9ybWFuY2VgIHByb2plY3QgY29sbGVjdHMuXG4gKi9cbmV4cG9ydCBjb25zdCBERVNLVE9QX1BFUkZPUk1BTkNFX1RFU1RfRklMRV9TVUZGSVggPSAnLmRlc2t0b3AtcGVyZm9ybWFuY2UuaW50ZWdyYXRpb24udGVzdC50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXNCTyxNQUFNLHVDQUF1QztBQUs3QyxNQUFNLHVDQUF1QzsiLAogICJuYW1lcyI6IFtdCn0K
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvcGVyZm9ybWFuY2UtZXZhbC1jYXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBwZXItZXZhbCBjYXAgb2YgdGhlIGBpbnRlZ3JhdGlvbi10ZXN0czpkZXNrdG9wLXBlcmZvcm1hbmNlYCBwcm9qZWN0LCBhbmQgdGhlIGZpbGUgc3VmZml4IHRoYXRcbiAqIHByb2plY3QgY29sbGVjdHMuXG4gKlxuICogQm90aCBsaXZlIGhlcmUsIHJhdGhlciB0aGFuIGluIGB2aXRlc3QtY29uZmlnLnRzYCwgYmVjYXVzZSB0aGUgYG5vLW92ZXItY2FwLXdhaXQtaW4tZXZhbC1pbi1vYnNpZGlhbmBcbiAqIEVTTGludCBydWxlIHJlYWRzIHRoZW0gdG9vLCBhbmQgdGhlIHNoYXJlZCBFU0xpbnQgY29uZmlnIGxvYWRzIHRoYXQgcnVsZSBpbiBldmVyeSBjb25zdW1pbmcgcmVwbzpcbiAqIGltcG9ydGluZyBgdml0ZXN0LWNvbmZpZy50c2AgZnJvbSB0aGUgcnVsZSB3b3VsZCBsb2FkIGB2aXRlc3QvY29uZmlnYCBhdCBsaW50IHRpbWUgZm9yIG5vdGhpbmcuXG4gKi9cblxuLyoqXG4gKiBUaGUgcGVyLWV2YWwgY2FwIHRoZSBgaW50ZWdyYXRpb24tdGVzdHM6ZGVza3RvcC1wZXJmb3JtYW5jZWAgcHJvamVjdCBnaXZlcyBpdHMgQ0RQIHRyYW5zcG9ydCwgaW5cbiAqIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBFdmVyeSBvdGhlciBwcm9qZWN0IGtlZXBzIHRoZSB0cmFuc3BvcnQncyBvd24gYERFRkFVTFRfRVZBTF9DQVBfSU5fTUlMTElTRUNPTkRTYCAoMzAgMDAwKSwgYW5kIGEgcmVwb1xuICogdGhhdCByYWlzZXMgaXRzIGRlc2t0b3AgY2FwIGFib3ZlIHRoYXQgaXMgc2V0dGluZyBhIEJBQ0tTVE9QLCBub3QgYSBidWRnZXQgYSBjbG9zdXJlIG1heSBzcGVuZC4gVGhlXG4gKiBwZXJmb3JtYW5jZSBwcm9qZWN0IGlzIHRoZSBvbmUgZXhjZXB0aW9uLCBhbmQgYSBkZWxpYmVyYXRlIG9uZTogaXRzIHdob2xlIG1lYXN1cmVtZW50IGlzIG9uZSBsb25nXG4gKiBpbi1wYWdlIGBSdW50aW1lLmV2YWx1YXRlYCBvdmVyIGEgdmF1bHQgb2YgdGVucyBvZiB0aG91c2FuZHMgb2Ygbm90ZXMsIGFuZCBpdHMgZmlsZXMgcnVuIG9uIG5vIG90aGVyXG4gKiBwcm9qZWN0LiBBIGNyb3NzLXBsYXRmb3JtIHN1aXRlIGdhaW5zIG5vdGhpbmcgZnJvbSBhbnkgZGVza3RvcCByYWlzZSwgYmVjYXVzZSBBcHBpdW0gY2FwcyBpdCBhdFxuICogMzAgMDAwIHdoYXRldmVyIHRoZSBkZXNrdG9wIHByb2plY3Qgc2F5cy5cbiAqL1xuZXhwb3J0IGNvbnN0IFBFUkZPUk1BTkNFX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EUyA9IDYwMF8wMDA7XG5cbi8qKlxuICogVGhlIGZpbGUtbmFtZSBzdWZmaXggb2YgYSBzdWl0ZSB0aGUgYGludGVncmF0aW9uLXRlc3RzOmRlc2t0b3AtcGVyZm9ybWFuY2VgIHByb2plY3QgY29sbGVjdHMuXG4gKi9cbmV4cG9ydCBjb25zdCBERVNLVE9QX1BFUkZPUk1BTkNFX1RFU1RfRklMRV9TVUZGSVggPSAnLmRlc2t0b3AtcGVyZm9ybWFuY2UuaW50ZWdyYXRpb24udGVzdC50cyc7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzQk8sTUFBTSx1Q0FBdUM7QUFLN0MsTUFBTSx1Q0FBdUM7IiwibmFtZXMiOltdfQ==
@@ -1,4 +1,4 @@
1
- /// <reference path="../index.d.cts" />
1
+ /// <reference path="../library-references.d.cts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -2,13 +2,7 @@
2
2
  THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
- symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
@@ -33,20 +27,7 @@ function ensureBrowserProcess() {
33
27
  existingProcessRecord["browser"] = true;
34
28
  }
35
29
 
36
- function keepName($unknown) {
37
- return $unknown;
38
- }
39
-
40
- (function initCjs() {
41
- const globalThisRecord = globalThis;
42
- ensureDisposeSymbols();
43
- globalThisRecord["__name"] ??= keepName;
44
- globalThisRecord["__extractDefault"] ??= extractDefault;
45
- ensureBrowserProcess();
46
- function extractDefault(module) {
47
- return module && module.__esModule && "default" in module ? module.default : module;
48
- }
49
- })();
30
+ ensureBrowserProcess();
50
31
  })();
51
32
  (function patchObsidianRequire() {
52
33
  const originalRequire = require;
@@ -214,4 +195,4 @@ function getBuildInputPaths(rootFolder) {
214
195
  formatStaleBuildMessage,
215
196
  setup
216
197
  });
217
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVubmVycy9zdGFsZS1idWlsZC1nbG9iYWwtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIHRoYXQgcmVmdXNlcyB0byBzdGFydCBhbiBpbnRlZ3JhdGlvbiBwcm9qZWN0IHdob3NlIHBsdWdpbiBidWlsZCBpcyBzdGFsZS5cbiAqXG4gKiBUaGUgaW50ZWdyYXRpb24gaGFybmVzcyBlbmFibGVzIHRoZSBwbHVnaW4gZnJvbSBpdHMgQlVJTEQsIGBkaXN0L2J1aWxkL21haW4uanNgLCBhbmQgYSBwbHVnaW4nc1xuICogYHRlc3Q6aW50ZWdyYXRpb24qYCBzY3JpcHRzIGNhbGwgdml0ZXN0IGRpcmVjdGx5LCBzbyBub3RoaW5nIG9uIHRoYXQgcGF0aCBidWlsZHMgZmlyc3QuIEEgc2Vzc2lvbiB0aGF0XG4gKiBlZGl0cyBgc3JjL2AgYW5kIHRoZW4gcnVucyBvbmUgaW50ZWdyYXRpb24gcHJvamVjdCB0ZXN0cyB0aGUgbGFzdCBidWlsZCwgaG93ZXZlciBvbGQgaXQgaXMsIGFuZCB0aGVcbiAqIHN1aXRlIHJlcG9ydHMgdGhlIG9sZCBjb2RlIGFzIGEgYmVoYXZpb3IgZGlmZmVyZW5jZSwgbm90IGFzIGEgc3RhbGUgYXJ0aWZhY3QuIE9uZSBzdWNoIHJ1biBjb3N0IGEgQ0RQXG4gKiBwcm9iZSBpbnRvIE9ic2lkaWFuJ3Mgb3duIGxpbmsgcmVzb2x1dGlvbiwgYSB3cm9uZyBjYWNoZS1yYWNlIHRoZW9yeSwgYW5kIGEgaGFybmVzcyBjaGFuZ2UgdGhhdCB3YXNcbiAqIG1hZGUgYW5kIHRoZW4gcmV2ZXJ0ZWQgYmVmb3JlIGFueW9uZSBub3RpY2VkIHRoYXQgdGhlIGJ1aWxkIHdhcyB0aHJlZSBkYXlzIG9sZC4gYG5wbSBydW4gZ2F0ZWAgYXZvaWRlZFxuICogdGhlIHByb2JsZW0gb25seSBiZWNhdXNlIGl0IGhhcHBlbnMgdG8gYnVpbGQgYmVmb3JlIGl0IHJ1bnMgYHRlc3Q6aW50ZWdyYXRpb25gLlxuICpcbiAqIFRoZSBzZXR1cCByZWZ1c2VzIHRvIHN0YXJ0IHJhdGhlciB0aGFuIGJ1aWxkaW5nLiBBIGJ1aWxkIGluc2lkZSBhIGdsb2JhbCBzZXR1cCB3b3VsZCBydW4gb25jZSBwZXJcbiAqIHByb2plY3QgaW4gYSBtdWx0aS1wcm9qZWN0IGFnZ3JlZ2F0ZSwgYW5kIGl0IHdvdWxkIHNsb3cgZG93biBhIGRlbGliZXJhdGUgcmUtcnVuIG9mIGFuIHVuY2hhbmdlZCBidWlsZC5cbiAqIEEgcmVmdXNhbCBpcyBjaGVhcCwgYW5kIGl0IHNheXMgd2hhdCB0byBydW4uXG4gKlxuICogVGVzdCBmaWxlcyBhcmUgbm90IGJ1aWxkIGlucHV0cy4gRWRpdGluZyBhbiBpbnRlZ3JhdGlvbiBjYXNlIGFuZCByZS1ydW5uaW5nIGl0IGlzIGV4YWN0bHkgdGhlIGxvb3AgdGhhdFxuICogbXVzdCBub3QgZm9yY2UgYSByZWJ1aWxkLCBzbyBgKi50ZXN0LnRzYCBmaWxlcyBhbmQgYHNyYy90ZXN0LWhlbHBlcnMvYCBhcmUgaWdub3JlZC4gQSBkZXBlbmRlbmN5IGJ1bXBcbiAqIGlzIG5vdCBkZXRlY3RlZCBlaXRoZXI6IG9ubHkgZmlsZXMgaW4gdGhlIHJlcG8gYXJlIGNvbXBhcmVkLCBub3QgYG5vZGVfbW9kdWxlc2AuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBUZXN0UHJvamVjdCB9IGZyb20gJ3ZpdGVzdC9ub2RlJztcblxuaW1wb3J0IHsgdG9Qb3NpeFBhdGggfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQge1xuICBleGlzdHNTeW5jLFxuICByZWFkZGlyU3luYyxcbiAgc3RhdFN5bmNcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBqb2luLFxuICByZWxhdGl2ZSxcbiAgc2VwXG59IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vb2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kU3RhbGVCdWlsZH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluZFN0YWxlQnVpbGRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHJvb3QgZm9sZGVyIG9mIHRoZSBwbHVnaW4gcmVwby5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3RGb2xkZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgYnVpbGQgZG9lcyBub3QgZXhpc3QgYXQgYWxsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pc3NpbmdCdWlsZCB7XG4gIC8qKlxuICAgKiBUaGUgZGlzY3JpbWluYW50LlxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogJ21pc3NpbmcnO1xufVxuXG4vKipcbiAqIFRoZSBidWlsZCBleGlzdHMgYnV0IGlzIG9sZGVyIHRoYW4gb25lIG9mIGl0cyBpbnB1dHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3V0ZGF0ZWRCdWlsZCB7XG4gIC8qKlxuICAgKiBUaGUgbW9kaWZpY2F0aW9uIHRpbWUgb2YgYGRpc3QvYnVpbGQvbWFpbi5qc2AuXG4gICAqL1xuICByZWFkb25seSBidWlsZE1vZGlmaWVkQXQ6IERhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNjcmltaW5hbnQuXG4gICAqL1xuICByZWFkb25seSBraW5kOiAnb3V0ZGF0ZWQnO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9kaWZpY2F0aW9uIHRpbWUgb2Yge0BsaW5rIE91dGRhdGVkQnVpbGQubmV3ZXN0SW5wdXRQYXRofS5cbiAgICovXG4gIHJlYWRvbmx5IG5ld2VzdElucHV0TW9kaWZpZWRBdDogRGF0ZTtcblxuICAvKipcbiAgICogVGhlIG5ld2VzdCBidWlsZCBpbnB1dCwgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZm9sZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV3ZXN0SW5wdXRQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogV2h5IHRoZSBidWlsZCBjYW5ub3QgYmUgdGVzdGVkLCBhcyByZXR1cm5lZCBieSB7QGxpbmsgZmluZFN0YWxlQnVpbGR9LlxuICovXG5leHBvcnQgdHlwZSBTdGFsZUJ1aWxkID0gTWlzc2luZ0J1aWxkIHwgT3V0ZGF0ZWRCdWlsZDtcblxuY29uc3QgQlVJTERfUEFUSCA9IGAke09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZH0vJHtPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYWluSnN9YDtcbmNvbnN0IFJPT1RfQlVJTERfSU5QVVRTID0gW09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuU3R5bGVzQ3NzXTtcbmNvbnN0IFRFU1RfRklMRV9TVUZGSVggPSBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlUZXN0VHMuc2xpY2UoMSk7XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYGRpc3QvYnVpbGQvbWFpbi5qc2AgaXMgbWlzc2luZywgb3Igb2xkZXIgdGhhbiBvbmUgb2YgdGhlIGZpbGVzIGl0IGlzIGJ1aWx0IGZyb20uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgYG51bGxgIHdoZW4gdGhlIGJ1aWxkIGlzIGN1cnJlbnQ7IG90aGVyd2lzZSBhIGRlc2NyaXB0aW9uIG9mIHRoZSBwcm9ibGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFN0YWxlQnVpbGQocGFyYW1zOiBGaW5kU3RhbGVCdWlsZFBhcmFtcyk6IG51bGwgfCBTdGFsZUJ1aWxkIHtcbiAgY29uc3QgYnVpbGRQYXRoID0gam9pbihwYXJhbXMucm9vdEZvbGRlciwgQlVJTERfUEFUSCk7XG4gIGlmICghZXhpc3RzU3luYyhidWlsZFBhdGgpKSB7XG4gICAgcmV0dXJuIHsga2luZDogJ21pc3NpbmcnIH07XG4gIH1cblxuICBjb25zdCBidWlsZE1vZGlmaWVkQXQgPSBzdGF0U3luYyhidWlsZFBhdGgpLm10aW1lO1xuICBsZXQgbmV3ZXN0SW5wdXRQYXRoOiBudWxsIHwgc3RyaW5nID0gbnVsbDtcbiAgbGV0IG5ld2VzdElucHV0TW9kaWZpZWRBdCA9IGJ1aWxkTW9kaWZpZWRBdDtcblxuICBmb3IgKGNvbnN0IGlucHV0UGF0aCBvZiBnZXRCdWlsZElucHV0UGF0aHMocGFyYW1zLnJvb3RGb2xkZXIpKSB7XG4gICAgY29uc3QgbW9kaWZpZWRBdCA9IHN0YXRTeW5jKGlucHV0UGF0aCkubXRpbWU7XG4gICAgaWYgKG1vZGlmaWVkQXQgPD0gbmV3ZXN0SW5wdXRNb2RpZmllZEF0KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBuZXdlc3RJbnB1dFBhdGggPSBpbnB1dFBhdGg7XG4gICAgbmV3ZXN0SW5wdXRNb2RpZmllZEF0ID0gbW9kaWZpZWRBdDtcbiAgfVxuXG4gIGlmIChuZXdlc3RJbnB1dFBhdGggPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYnVpbGRNb2RpZmllZEF0LFxuICAgIGtpbmQ6ICdvdXRkYXRlZCcsXG4gICAgbmV3ZXN0SW5wdXRNb2RpZmllZEF0LFxuICAgIG5ld2VzdElucHV0UGF0aDogdG9Qb3NpeFBhdGgocmVsYXRpdmUocGFyYW1zLnJvb3RGb2xkZXIsIG5ld2VzdElucHV0UGF0aCkpXG4gIH07XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIHtAbGluayBTdGFsZUJ1aWxkfSBhcyB0aGUgbWVzc2FnZSB0aGUgc2V0dXAgdGhyb3dzLlxuICpcbiAqIEBwYXJhbSBzdGFsZUJ1aWxkIC0gVGhlIHN0YWxlIGJ1aWxkLlxuICogQHJldHVybnMgVGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTdGFsZUJ1aWxkTWVzc2FnZShzdGFsZUJ1aWxkOiBTdGFsZUJ1aWxkKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0YWxlQnVpbGQua2luZCA9PT0gJ21pc3NpbmcnXG4gICAgPyBgJHtCVUlMRF9QQVRIfSBkb2VzIG5vdCBleGlzdCwgc28gdGhlcmUgaXMgbm8gcGx1Z2luIGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdHMgdG8gbG9hZC4gUnVuIFxcYG5wbSBydW4gYnVpbGRcXGAgZmlyc3QuYFxuICAgIDogYCR7QlVJTERfUEFUSH0gaXMgb2xkZXIgdGhhbiAke3N0YWxlQnVpbGQubmV3ZXN0SW5wdXRQYXRofSAoYnVpbHQgJHtzdGFsZUJ1aWxkLmJ1aWxkTW9kaWZpZWRBdC50b0lTT1N0cmluZygpfSwgYFxuICAgICAgKyBgY2hhbmdlZCAke3N0YWxlQnVpbGQubmV3ZXN0SW5wdXRNb2RpZmllZEF0LnRvSVNPU3RyaW5nKCl9KSwgc28gdGhlIGludGVncmF0aW9uIHRlc3RzIHdvdWxkIHJ1biB0aGUgcHJldmlvdXMgYnVpbGQgYFxuICAgICAgKyAnaW5zdGVhZCBvZiB0aGUgY3VycmVudCBzb3VyY2UuIFJ1biBgbnBtIHJ1biBidWlsZGAgZmlyc3QuJztcbn1cblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwOiB0aHJvd3Mgd2hlbiB0aGUgcGx1Z2luIGJ1aWxkIGlzIG1pc3Npbmcgb3Igc3RhbGUuXG4gKlxuICogQHBhcmFtIHByb2plY3QgLSBUaGUgVml0ZXN0IHRlc3QgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldHVwKHByb2plY3Q6IFRlc3RQcm9qZWN0KTogdm9pZCB7XG4gIGNvbnN0IHN0YWxlQnVpbGQgPSBmaW5kU3RhbGVCdWlsZCh7IHJvb3RGb2xkZXI6IHByb2plY3QuY29uZmlnLnJvb3QgfSk7XG4gIGlmIChzdGFsZUJ1aWxkICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdFN0YWxlQnVpbGRNZXNzYWdlKHN0YWxlQnVpbGQpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRCdWlsZElucHV0UGF0aHMocm9vdEZvbGRlcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICBjb25zdCBwYXRocyA9IFJPT1RfQlVJTERfSU5QVVRTLm1hcCgocm9vdElucHV0KSA9PiBqb2luKHJvb3RGb2xkZXIsIHJvb3RJbnB1dCkpLmZpbHRlcigocGF0aCkgPT4gZXhpc3RzU3luYyhwYXRoKSk7XG5cbiAgY29uc3Qgc3JjRm9sZGVyID0gam9pbihyb290Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5TcmMpO1xuICBpZiAoIWV4aXN0c1N5bmMoc3JjRm9sZGVyKSkge1xuICAgIHJldHVybiBwYXRocztcbiAgfVxuXG4gIGNvbnN0IHRlc3RIZWxwZXJzRm9sZGVyUHJlZml4ID0gam9pbihyb290Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Nb2NrcykgKyBzZXA7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgcmVhZGRpclN5bmMoc3JjRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KSkge1xuICAgIGlmICghZW50cnkuaXNGaWxlKCkgfHwgZW50cnkubmFtZS5lbmRzV2l0aChURVNUX0ZJTEVfU1VGRklYKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aCA9IGpvaW4oZW50cnkucGFyZW50UGF0aCwgZW50cnkubmFtZSk7XG4gICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgodGVzdEhlbHBlcnNGb2xkZXJQcmVmaXgpKSB7XG4gICAgICBwYXRocy5wdXNoKHBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXRocztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3QkEsa0JBQTRCO0FBQzVCLHFCQUlPO0FBQ1AsdUJBSU87QUFFUCx3Q0FBd0M7QUFvRHhDLE1BQU0sYUFBYSxHQUFHLDBEQUF3QixTQUFTLElBQUksMERBQXdCLE1BQU07QUFDekYsTUFBTSxvQkFBb0IsQ0FBQywwREFBd0IsY0FBYywwREFBd0IsU0FBUztBQUNsRyxNQUFNLG1CQUFtQiwwREFBd0IsVUFBVSxNQUFNLENBQUM7QUFRM0QsU0FBUyxlQUFlLFFBQWlEO0FBQzlFLFFBQU0sZ0JBQVksdUJBQUssT0FBTyxZQUFZLFVBQVU7QUFDcEQsTUFBSSxLQUFDLDJCQUFXLFNBQVMsR0FBRztBQUMxQixXQUFPLEVBQUUsTUFBTSxVQUFVO0FBQUEsRUFDM0I7QUFFQSxRQUFNLHNCQUFrQix5QkFBUyxTQUFTLEVBQUU7QUFDNUMsTUFBSSxrQkFBaUM7QUFDckMsTUFBSSx3QkFBd0I7QUFFNUIsYUFBVyxhQUFhLG1CQUFtQixPQUFPLFVBQVUsR0FBRztBQUM3RCxVQUFNLGlCQUFhLHlCQUFTLFNBQVMsRUFBRTtBQUN2QyxRQUFJLGNBQWMsdUJBQXVCO0FBQ3ZDO0FBQUEsSUFDRjtBQUVBLHNCQUFrQjtBQUNsQiw0QkFBd0I7QUFBQSxFQUMxQjtBQUVBLE1BQUksb0JBQW9CLE1BQU07QUFDNUIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPO0FBQUEsSUFDTDtBQUFBLElBQ0EsTUFBTTtBQUFBLElBQ047QUFBQSxJQUNBLHFCQUFpQiw2QkFBWSwyQkFBUyxPQUFPLFlBQVksZUFBZSxDQUFDO0FBQUEsRUFDM0U7QUFDRjtBQVFPLFNBQVMsd0JBQXdCLFlBQWdDO0FBQ3RFLFNBQU8sV0FBVyxTQUFTLFlBQ3ZCLEdBQUcsVUFBVSwyR0FDYixHQUFHLFVBQVUsa0JBQWtCLFdBQVcsZUFBZSxXQUFXLFdBQVcsZ0JBQWdCLFlBQVksQ0FBQyxhQUMvRixXQUFXLHNCQUFzQixZQUFZLENBQUM7QUFFakU7QUFPTyxTQUFTLE1BQU0sU0FBNEI7QUFDaEQsUUFBTSxhQUFhLGVBQWUsRUFBRSxZQUFZLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckUsTUFBSSxlQUFlLE1BQU07QUFDdkIsVUFBTSxJQUFJLE1BQU0sd0JBQXdCLFVBQVUsQ0FBQztBQUFBLEVBQ3JEO0FBQ0Y7QUFFQSxTQUFTLG1CQUFtQixZQUE4QjtBQUN4RCxRQUFNLFFBQVEsa0JBQWtCLElBQUksQ0FBQyxrQkFBYyx1QkFBSyxZQUFZLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxhQUFTLDJCQUFXLElBQUksQ0FBQztBQUVqSCxRQUFNLGdCQUFZLHVCQUFLLFlBQVksMERBQXdCLEdBQUc7QUFDOUQsTUFBSSxLQUFDLDJCQUFXLFNBQVMsR0FBRztBQUMxQixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sOEJBQTBCLHVCQUFLLFlBQVksMERBQXdCLEtBQUssSUFBSTtBQUNsRixhQUFXLGFBQVMsNEJBQVksV0FBVyxFQUFFLFdBQVcsTUFBTSxlQUFlLEtBQUssQ0FBQyxHQUFHO0FBQ3BGLFFBQUksQ0FBQyxNQUFNLE9BQU8sS0FBSyxNQUFNLEtBQUssU0FBUyxnQkFBZ0IsR0FBRztBQUM1RDtBQUFBLElBQ0Y7QUFFQSxVQUFNLFdBQU8sdUJBQUssTUFBTSxZQUFZLE1BQU0sSUFBSTtBQUM5QyxRQUFJLENBQUMsS0FBSyxXQUFXLHVCQUF1QixHQUFHO0FBQzdDLFlBQU0sS0FBSyxJQUFJO0FBQUEsSUFDakI7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvc3RhbGUtYnVpbGQtZ2xvYmFsLXNldHVwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIHRoYXQgcmVmdXNlcyB0byBzdGFydCBhbiBpbnRlZ3JhdGlvbiBwcm9qZWN0IHdob3NlIHBsdWdpbiBidWlsZCBpcyBzdGFsZS5cbiAqXG4gKiBUaGUgaW50ZWdyYXRpb24gaGFybmVzcyBlbmFibGVzIHRoZSBwbHVnaW4gZnJvbSBpdHMgQlVJTEQsIGBkaXN0L2J1aWxkL21haW4uanNgLCBhbmQgYSBwbHVnaW4nc1xuICogYHRlc3Q6aW50ZWdyYXRpb24qYCBzY3JpcHRzIGNhbGwgdml0ZXN0IGRpcmVjdGx5LCBzbyBub3RoaW5nIG9uIHRoYXQgcGF0aCBidWlsZHMgZmlyc3QuIEEgc2Vzc2lvbiB0aGF0XG4gKiBlZGl0cyBgc3JjL2AgYW5kIHRoZW4gcnVucyBvbmUgaW50ZWdyYXRpb24gcHJvamVjdCB0ZXN0cyB0aGUgbGFzdCBidWlsZCwgaG93ZXZlciBvbGQgaXQgaXMsIGFuZCB0aGVcbiAqIHN1aXRlIHJlcG9ydHMgdGhlIG9sZCBjb2RlIGFzIGEgYmVoYXZpb3IgZGlmZmVyZW5jZSwgbm90IGFzIGEgc3RhbGUgYXJ0aWZhY3QuIE9uZSBzdWNoIHJ1biBjb3N0IGEgQ0RQXG4gKiBwcm9iZSBpbnRvIE9ic2lkaWFuJ3Mgb3duIGxpbmsgcmVzb2x1dGlvbiwgYSB3cm9uZyBjYWNoZS1yYWNlIHRoZW9yeSwgYW5kIGEgaGFybmVzcyBjaGFuZ2UgdGhhdCB3YXNcbiAqIG1hZGUgYW5kIHRoZW4gcmV2ZXJ0ZWQgYmVmb3JlIGFueW9uZSBub3RpY2VkIHRoYXQgdGhlIGJ1aWxkIHdhcyB0aHJlZSBkYXlzIG9sZC4gYG5wbSBydW4gZ2F0ZWAgYXZvaWRlZFxuICogdGhlIHByb2JsZW0gb25seSBiZWNhdXNlIGl0IGhhcHBlbnMgdG8gYnVpbGQgYmVmb3JlIGl0IHJ1bnMgYHRlc3Q6aW50ZWdyYXRpb25gLlxuICpcbiAqIFRoZSBzZXR1cCByZWZ1c2VzIHRvIHN0YXJ0IHJhdGhlciB0aGFuIGJ1aWxkaW5nLiBBIGJ1aWxkIGluc2lkZSBhIGdsb2JhbCBzZXR1cCB3b3VsZCBydW4gb25jZSBwZXJcbiAqIHByb2plY3QgaW4gYSBtdWx0aS1wcm9qZWN0IGFnZ3JlZ2F0ZSwgYW5kIGl0IHdvdWxkIHNsb3cgZG93biBhIGRlbGliZXJhdGUgcmUtcnVuIG9mIGFuIHVuY2hhbmdlZCBidWlsZC5cbiAqIEEgcmVmdXNhbCBpcyBjaGVhcCwgYW5kIGl0IHNheXMgd2hhdCB0byBydW4uXG4gKlxuICogVGVzdCBmaWxlcyBhcmUgbm90IGJ1aWxkIGlucHV0cy4gRWRpdGluZyBhbiBpbnRlZ3JhdGlvbiBjYXNlIGFuZCByZS1ydW5uaW5nIGl0IGlzIGV4YWN0bHkgdGhlIGxvb3AgdGhhdFxuICogbXVzdCBub3QgZm9yY2UgYSByZWJ1aWxkLCBzbyBgKi50ZXN0LnRzYCBmaWxlcyBhbmQgYHNyYy90ZXN0LWhlbHBlcnMvYCBhcmUgaWdub3JlZC4gQSBkZXBlbmRlbmN5IGJ1bXBcbiAqIGlzIG5vdCBkZXRlY3RlZCBlaXRoZXI6IG9ubHkgZmlsZXMgaW4gdGhlIHJlcG8gYXJlIGNvbXBhcmVkLCBub3QgYG5vZGVfbW9kdWxlc2AuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBUZXN0UHJvamVjdCB9IGZyb20gJ3ZpdGVzdC9ub2RlJztcblxuaW1wb3J0IHsgdG9Qb3NpeFBhdGggfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQge1xuICBleGlzdHNTeW5jLFxuICByZWFkZGlyU3luYyxcbiAgc3RhdFN5bmNcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBqb2luLFxuICByZWxhdGl2ZSxcbiAgc2VwXG59IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vb2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kU3RhbGVCdWlsZH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluZFN0YWxlQnVpbGRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHJvb3QgZm9sZGVyIG9mIHRoZSBwbHVnaW4gcmVwby5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3RGb2xkZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgYnVpbGQgZG9lcyBub3QgZXhpc3QgYXQgYWxsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pc3NpbmdCdWlsZCB7XG4gIC8qKlxuICAgKiBUaGUgZGlzY3JpbWluYW50LlxuICAgKi9cbiAgcmVhZG9ubHkga2luZDogJ21pc3NpbmcnO1xufVxuXG4vKipcbiAqIFRoZSBidWlsZCBleGlzdHMgYnV0IGlzIG9sZGVyIHRoYW4gb25lIG9mIGl0cyBpbnB1dHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3V0ZGF0ZWRCdWlsZCB7XG4gIC8qKlxuICAgKiBUaGUgbW9kaWZpY2F0aW9uIHRpbWUgb2YgYGRpc3QvYnVpbGQvbWFpbi5qc2AuXG4gICAqL1xuICByZWFkb25seSBidWlsZE1vZGlmaWVkQXQ6IERhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNjcmltaW5hbnQuXG4gICAqL1xuICByZWFkb25seSBraW5kOiAnb3V0ZGF0ZWQnO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9kaWZpY2F0aW9uIHRpbWUgb2Yge0BsaW5rIE91dGRhdGVkQnVpbGQubmV3ZXN0SW5wdXRQYXRofS5cbiAgICovXG4gIHJlYWRvbmx5IG5ld2VzdElucHV0TW9kaWZpZWRBdDogRGF0ZTtcblxuICAvKipcbiAgICogVGhlIG5ld2VzdCBidWlsZCBpbnB1dCwgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZm9sZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV3ZXN0SW5wdXRQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogV2h5IHRoZSBidWlsZCBjYW5ub3QgYmUgdGVzdGVkLCBhcyByZXR1cm5lZCBieSB7QGxpbmsgZmluZFN0YWxlQnVpbGR9LlxuICovXG5leHBvcnQgdHlwZSBTdGFsZUJ1aWxkID0gTWlzc2luZ0J1aWxkIHwgT3V0ZGF0ZWRCdWlsZDtcblxuY29uc3QgQlVJTERfUEFUSCA9IGAke09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZH0vJHtPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYWluSnN9YDtcbmNvbnN0IFJPT1RfQlVJTERfSU5QVVRTID0gW09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuU3R5bGVzQ3NzXTtcbmNvbnN0IFRFU1RfRklMRV9TVUZGSVggPSBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BbnlUZXN0VHMuc2xpY2UoMSk7XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYGRpc3QvYnVpbGQvbWFpbi5qc2AgaXMgbWlzc2luZywgb3Igb2xkZXIgdGhhbiBvbmUgb2YgdGhlIGZpbGVzIGl0IGlzIGJ1aWx0IGZyb20uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgYG51bGxgIHdoZW4gdGhlIGJ1aWxkIGlzIGN1cnJlbnQ7IG90aGVyd2lzZSBhIGRlc2NyaXB0aW9uIG9mIHRoZSBwcm9ibGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFN0YWxlQnVpbGQocGFyYW1zOiBGaW5kU3RhbGVCdWlsZFBhcmFtcyk6IG51bGwgfCBTdGFsZUJ1aWxkIHtcbiAgY29uc3QgYnVpbGRQYXRoID0gam9pbihwYXJhbXMucm9vdEZvbGRlciwgQlVJTERfUEFUSCk7XG4gIGlmICghZXhpc3RzU3luYyhidWlsZFBhdGgpKSB7XG4gICAgcmV0dXJuIHsga2luZDogJ21pc3NpbmcnIH07XG4gIH1cblxuICBjb25zdCBidWlsZE1vZGlmaWVkQXQgPSBzdGF0U3luYyhidWlsZFBhdGgpLm10aW1lO1xuICBsZXQgbmV3ZXN0SW5wdXRQYXRoOiBudWxsIHwgc3RyaW5nID0gbnVsbDtcbiAgbGV0IG5ld2VzdElucHV0TW9kaWZpZWRBdCA9IGJ1aWxkTW9kaWZpZWRBdDtcblxuICBmb3IgKGNvbnN0IGlucHV0UGF0aCBvZiBnZXRCdWlsZElucHV0UGF0aHMocGFyYW1zLnJvb3RGb2xkZXIpKSB7XG4gICAgY29uc3QgbW9kaWZpZWRBdCA9IHN0YXRTeW5jKGlucHV0UGF0aCkubXRpbWU7XG4gICAgaWYgKG1vZGlmaWVkQXQgPD0gbmV3ZXN0SW5wdXRNb2RpZmllZEF0KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBuZXdlc3RJbnB1dFBhdGggPSBpbnB1dFBhdGg7XG4gICAgbmV3ZXN0SW5wdXRNb2RpZmllZEF0ID0gbW9kaWZpZWRBdDtcbiAgfVxuXG4gIGlmIChuZXdlc3RJbnB1dFBhdGggPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYnVpbGRNb2RpZmllZEF0LFxuICAgIGtpbmQ6ICdvdXRkYXRlZCcsXG4gICAgbmV3ZXN0SW5wdXRNb2RpZmllZEF0LFxuICAgIG5ld2VzdElucHV0UGF0aDogdG9Qb3NpeFBhdGgocmVsYXRpdmUocGFyYW1zLnJvb3RGb2xkZXIsIG5ld2VzdElucHV0UGF0aCkpXG4gIH07XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIHtAbGluayBTdGFsZUJ1aWxkfSBhcyB0aGUgbWVzc2FnZSB0aGUgc2V0dXAgdGhyb3dzLlxuICpcbiAqIEBwYXJhbSBzdGFsZUJ1aWxkIC0gVGhlIHN0YWxlIGJ1aWxkLlxuICogQHJldHVybnMgVGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTdGFsZUJ1aWxkTWVzc2FnZShzdGFsZUJ1aWxkOiBTdGFsZUJ1aWxkKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0YWxlQnVpbGQua2luZCA9PT0gJ21pc3NpbmcnXG4gICAgPyBgJHtCVUlMRF9QQVRIfSBkb2VzIG5vdCBleGlzdCwgc28gdGhlcmUgaXMgbm8gcGx1Z2luIGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdHMgdG8gbG9hZC4gUnVuIFxcYG5wbSBydW4gYnVpbGRcXGAgZmlyc3QuYFxuICAgIDogYCR7QlVJTERfUEFUSH0gaXMgb2xkZXIgdGhhbiAke3N0YWxlQnVpbGQubmV3ZXN0SW5wdXRQYXRofSAoYnVpbHQgJHtzdGFsZUJ1aWxkLmJ1aWxkTW9kaWZpZWRBdC50b0lTT1N0cmluZygpfSwgYFxuICAgICAgKyBgY2hhbmdlZCAke3N0YWxlQnVpbGQubmV3ZXN0SW5wdXRNb2RpZmllZEF0LnRvSVNPU3RyaW5nKCl9KSwgc28gdGhlIGludGVncmF0aW9uIHRlc3RzIHdvdWxkIHJ1biB0aGUgcHJldmlvdXMgYnVpbGQgYFxuICAgICAgKyAnaW5zdGVhZCBvZiB0aGUgY3VycmVudCBzb3VyY2UuIFJ1biBgbnBtIHJ1biBidWlsZGAgZmlyc3QuJztcbn1cblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwOiB0aHJvd3Mgd2hlbiB0aGUgcGx1Z2luIGJ1aWxkIGlzIG1pc3Npbmcgb3Igc3RhbGUuXG4gKlxuICogQHBhcmFtIHByb2plY3QgLSBUaGUgVml0ZXN0IHRlc3QgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldHVwKHByb2plY3Q6IFRlc3RQcm9qZWN0KTogdm9pZCB7XG4gIGNvbnN0IHN0YWxlQnVpbGQgPSBmaW5kU3RhbGVCdWlsZCh7IHJvb3RGb2xkZXI6IHByb2plY3QuY29uZmlnLnJvb3QgfSk7XG4gIGlmIChzdGFsZUJ1aWxkICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdFN0YWxlQnVpbGRNZXNzYWdlKHN0YWxlQnVpbGQpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRCdWlsZElucHV0UGF0aHMocm9vdEZvbGRlcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICBjb25zdCBwYXRocyA9IFJPT1RfQlVJTERfSU5QVVRTLm1hcCgocm9vdElucHV0KSA9PiBqb2luKHJvb3RGb2xkZXIsIHJvb3RJbnB1dCkpLmZpbHRlcigocGF0aCkgPT4gZXhpc3RzU3luYyhwYXRoKSk7XG5cbiAgY29uc3Qgc3JjRm9sZGVyID0gam9pbihyb290Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5TcmMpO1xuICBpZiAoIWV4aXN0c1N5bmMoc3JjRm9sZGVyKSkge1xuICAgIHJldHVybiBwYXRocztcbiAgfVxuXG4gIGNvbnN0IHRlc3RIZWxwZXJzRm9sZGVyUHJlZml4ID0gam9pbihyb290Rm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Nb2NrcykgKyBzZXA7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgcmVhZGRpclN5bmMoc3JjRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KSkge1xuICAgIGlmICghZW50cnkuaXNGaWxlKCkgfHwgZW50cnkubmFtZS5lbmRzV2l0aChURVNUX0ZJTEVfU1VGRklYKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aCA9IGpvaW4oZW50cnkucGFyZW50UGF0aCwgZW50cnkubmFtZSk7XG4gICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgodGVzdEhlbHBlcnNGb2xkZXJQcmVmaXgpKSB7XG4gICAgICBwYXRocy5wdXNoKHBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXRocztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0JBLGtCQUE0QjtBQUM1QixxQkFJTztBQUNQLHVCQUlPO0FBRVAsd0NBQXdDO0FBb0R4QyxNQUFNLGFBQWEsR0FBRywwREFBd0IsU0FBUyxJQUFJLDBEQUF3QixNQUFNO0FBQ3pGLE1BQU0sb0JBQW9CLENBQUMsMERBQXdCLGNBQWMsMERBQXdCLFNBQVM7QUFDbEcsTUFBTSxtQkFBbUIsMERBQXdCLFVBQVUsTUFBTSxDQUFDO0FBUTNELFNBQVMsZUFBZSxRQUFpRDtBQUM5RSxRQUFNLGdCQUFZLHVCQUFLLE9BQU8sWUFBWSxVQUFVO0FBQ3BELE1BQUksS0FBQywyQkFBVyxTQUFTLEdBQUc7QUFDMUIsV0FBTyxFQUFFLE1BQU0sVUFBVTtBQUFBLEVBQzNCO0FBRUEsUUFBTSxzQkFBa0IseUJBQVMsU0FBUyxFQUFFO0FBQzVDLE1BQUksa0JBQWlDO0FBQ3JDLE1BQUksd0JBQXdCO0FBRTVCLGFBQVcsYUFBYSxtQkFBbUIsT0FBTyxVQUFVLEdBQUc7QUFDN0QsVUFBTSxpQkFBYSx5QkFBUyxTQUFTLEVBQUU7QUFDdkMsUUFBSSxjQUFjLHVCQUF1QjtBQUN2QztBQUFBLElBQ0Y7QUFFQSxzQkFBa0I7QUFDbEIsNEJBQXdCO0FBQUEsRUFDMUI7QUFFQSxNQUFJLG9CQUFvQixNQUFNO0FBQzVCLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBLE1BQU07QUFBQSxJQUNOO0FBQUEsSUFDQSxxQkFBaUIsNkJBQVksMkJBQVMsT0FBTyxZQUFZLGVBQWUsQ0FBQztBQUFBLEVBQzNFO0FBQ0Y7QUFRTyxTQUFTLHdCQUF3QixZQUFnQztBQUN0RSxTQUFPLFdBQVcsU0FBUyxZQUN2QixHQUFHLFVBQVUsMkdBQ2IsR0FBRyxVQUFVLGtCQUFrQixXQUFXLGVBQWUsV0FBVyxXQUFXLGdCQUFnQixZQUFZLENBQUMsYUFDL0YsV0FBVyxzQkFBc0IsWUFBWSxDQUFDO0FBRWpFO0FBT08sU0FBUyxNQUFNLFNBQTRCO0FBQ2hELFFBQU0sYUFBYSxlQUFlLEVBQUUsWUFBWSxRQUFRLE9BQU8sS0FBSyxDQUFDO0FBQ3JFLE1BQUksZUFBZSxNQUFNO0FBQ3ZCLFVBQU0sSUFBSSxNQUFNLHdCQUF3QixVQUFVLENBQUM7QUFBQSxFQUNyRDtBQUNGO0FBRUEsU0FBUyxtQkFBbUIsWUFBOEI7QUFDeEQsUUFBTSxRQUFRLGtCQUFrQixJQUFJLENBQUMsa0JBQWMsdUJBQUssWUFBWSxTQUFTLENBQUMsRUFBRSxPQUFPLENBQUMsYUFBUywyQkFBVyxJQUFJLENBQUM7QUFFakgsUUFBTSxnQkFBWSx1QkFBSyxZQUFZLDBEQUF3QixHQUFHO0FBQzlELE1BQUksS0FBQywyQkFBVyxTQUFTLEdBQUc7QUFDMUIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLDhCQUEwQix1QkFBSyxZQUFZLDBEQUF3QixLQUFLLElBQUk7QUFDbEYsYUFBVyxhQUFTLDRCQUFZLFdBQVcsRUFBRSxXQUFXLE1BQU0sZUFBZSxLQUFLLENBQUMsR0FBRztBQUNwRixRQUFJLENBQUMsTUFBTSxPQUFPLEtBQUssTUFBTSxLQUFLLFNBQVMsZ0JBQWdCLEdBQUc7QUFDNUQ7QUFBQSxJQUNGO0FBRUEsVUFBTSxXQUFPLHVCQUFLLE1BQU0sWUFBWSxNQUFNLElBQUk7QUFDOUMsUUFBSSxDQUFDLEtBQUssV0FBVyx1QkFBdUIsR0FBRztBQUM3QyxZQUFNLEtBQUssSUFBSTtBQUFBLElBQ2pCO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDsiLCJuYW1lcyI6W119
@@ -1,4 +1,4 @@
1
- /// <reference path="../index.d.cts" />
1
+ /// <reference path="../library-references.d.cts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -2,13 +2,7 @@
2
2
  THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
- symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
@@ -33,20 +27,7 @@ function ensureBrowserProcess() {
33
27
  existingProcessRecord["browser"] = true;
34
28
  }
35
29
 
36
- function keepName($unknown) {
37
- return $unknown;
38
- }
39
-
40
- (function initCjs() {
41
- const globalThisRecord = globalThis;
42
- ensureDisposeSymbols();
43
- globalThisRecord["__name"] ??= keepName;
44
- globalThisRecord["__extractDefault"] ??= extractDefault;
45
- ensureBrowserProcess();
46
- function extractDefault(module) {
47
- return module && module.__esModule && "default" in module ? module.default : module;
48
- }
49
- })();
30
+ ensureBrowserProcess();
50
31
  })();
51
32
  (function patchObsidianRequire() {
52
33
  const originalRequire = require;
@@ -160,7 +141,7 @@ __export(vitest_config_exports, {
160
141
  });
161
142
  module.exports = __toCommonJS(vitest_config_exports);
162
143
  var import_vitest_config = require('@mnaoumov/typescript-dev-toolkit/test-runners/vitest-config');
163
- var import_node_process = __toESM(__extractDefault(require('node:process')), 1);
144
+ var import_node_process = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('node:process')), 1);
164
145
  var import_obsidian_integration_testing = require('obsidian-integration-testing');
165
146
  var import_config = require('vitest/config');
166
147
  var import_performance_eval_cap = require('./performance-eval-cap.cjs');
@@ -178,7 +159,7 @@ const INTEGRATION_TEST_FILES = "src/**/*.integration.test.ts";
178
159
  const NO_APP_TEST_FILES = "src/**/*.no-app.integration.test.ts";
179
160
  const UNIT_TEST_FILES = "src/**/*.test.ts";
180
161
  const UNIT_TEST_GLOBAL_STUBS_PROJECT_NAME = "unit-tests:global-stubs";
181
- const STALE_BUILD_GLOBAL_SETUP = "obsidian-dev-utils/script-utils/test-runners/stale-build-global-setup";
162
+ const STALE_BUILD_GLOBAL_SETUP = "@mnaoumov/obsidian-dev-toolkit/test-runners/stale-build-global-setup";
182
163
  const OBSIDIAN_VERSION_ENV_VARIABLE_NAME = "OBSIDIAN_VERSION";
183
164
  const SHARED_EXCLUDE = import_vitest_config.DEFAULT_VITEST_TEST_EXCLUDE;
184
165
  class ObsidianPluginVitestConfigContext {
@@ -372,12 +353,12 @@ class ObsidianPluginVitestConfigContext {
372
353
  server: {
373
354
  // eslint-disable-next-line unicorn/name-replacements -- `deps` is declared by `vitest`; renaming it here would not match the API.
374
355
  deps: {
375
- inline: ["@obsidian-typings", "obsidian-dev-utils"]
356
+ inline: ["@mnaoumov", "@obsidian-typings"]
376
357
  }
377
358
  },
378
359
  setupFiles: [
379
360
  "obsidian-test-mocks/vitest-setup",
380
- "obsidian-dev-utils/vitest-setup"
361
+ "@mnaoumov/obsidian-dev-toolkit/vitest-setup"
381
362
  ]
382
363
  };
383
364
  /**
@@ -481,4 +462,4 @@ function validateCustomProjects(customProjects) {
481
462
  ObsidianPluginVitestConfigContext,
482
463
  defineObsidianPluginVitestConfig
483
464
  });
484
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVubmVycy92aXRlc3QtY29uZmlnLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogU2hhcmVkIHZpdGVzdCBjb25maWd1cmF0aW9uIGZvciBPYnNpZGlhbiBwbHVnaW5zLlxuICpcbiAqIEV2ZXJ5IHBsdWdpbiBpbiB0aGUgd29ya3NwYWNlIGRlY2xhcmVzIHRoZSBzYW1lIGZpdmUgdml0ZXN0IHByb2plY3RzIFx1MjAxNCBgdW5pdC10ZXN0c2AgcGx1cyB0aGVcbiAqIGBpbnRlZ3JhdGlvbi10ZXN0czp7bm8tYXBwLGRlc2t0b3AsZGVza3RvcC1wZXJmb3JtYW5jZSxhbmRyb2lkfWAgZmFtaWx5IFx1MjAxNCB3aXRoIHRoZSBzYW1lIHRpbWVvdXRzLFxuICogYHNldHVwRmlsZXNgLCBhbmQgYGdsb2JhbFNldHVwYCB3aXJpbmcuIE1haW50YWluaW5nIHRoYXQgcGVyIHJlcG8gbWVhbnMgYSBjb252ZW50aW9uIGNoYW5nZSBjb3N0cyBvbmVcbiAqIG5lYXItaWRlbnRpY2FsIGVkaXQgcGVyIHBsdWdpbiwgYW5kIGFueSByZXBvIHRoYXQgaXMgbWlzc2VkIGRyaWZ0cyBzaWxlbnRseS4gVGhpcyBtb2R1bGUgb3ducyB0aGF0XG4gKiBjb25maWd1cmF0aW9uIG9uY2UsIHNvIGEgcGx1Z2luJ3MgYHNjcmlwdHMvdml0ZXN0LWNvbmZpZy50c2AgY29sbGFwc2VzIHRvIGEgc2luZ2xlIGNhbGwuXG4gKlxuICogVGhlIHNlYW0gbWlycm9ycyB7QGxpbmsgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvb2JzaWRpYW4tZGV2LXV0aWxzIHwgdGhlIEVTTGludCBvbmV9XG4gKiAoYGRlZmluZUVzbGludENvbmZpZ3NgKTogdGhlIGZhY3RvcnkgYnVpbGRzIGEgY29udGV4dCBob2xkaW5nIHRoZSBzdGFuZGFyZCBwcm9qZWN0cywgdGhlIGNhbGxlciBlZGl0c1xuICogaXQgaW4gcGxhY2UgdGhyb3VnaCB7QGxpbmsgRGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdPcHRpb25zLmVkaXRDb250ZXh0fSwgYW5kIGFwcGVuZHMgYW55XG4gKiBwcm9qZWN0IHRoZSBiYXNlIGRvZXMgbm90IGtub3cgYWJvdXQgdGhyb3VnaFxuICoge0BsaW5rIERlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnT3B0aW9ucy5jdXN0b21Qcm9qZWN0c30uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBWaXRlc3RSZXBvcnRlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L3Rlc3QtcnVubmVycy92aXRlc3QtY29uZmlnJztcbmltcG9ydCB0eXBlIHtcbiAgVGVzdFByb2plY3RDb25maWd1cmF0aW9uLFxuICBUZXN0UHJvamVjdElubGluZUNvbmZpZ3VyYXRpb24sXG4gIFZpdGVVc2VyQ29uZmlnXG59IGZyb20gJ3ZpdGVzdC9jb25maWcnO1xuXG5pbXBvcnQge1xuICBERUZBVUxUX1ZJVEVTVF9SRVBPUlRFUlMsXG4gIERFRkFVTFRfVklURVNUX1RFU1RfRVhDTFVERVxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC90ZXN0LXJ1bm5lcnMvdml0ZXN0LWNvbmZpZyc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IHsgREVGQVVMVF9FVkFMX0NBUF9JTl9NSUxMSVNFQ09ORFMgfSBmcm9tICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nJztcbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gJ3ZpdGVzdC9jb25maWcnO1xuXG5pbXBvcnQge1xuICBERVNLVE9QX1BFUkZPUk1BTkNFX1RFU1RfRklMRV9TVUZGSVgsXG4gIFBFUkZPUk1BTkNFX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EU1xufSBmcm9tICcuL3BlcmZvcm1hbmNlLWV2YWwtY2FwLnRzJztcblxuLyoqXG4gKiBUaGUgYHRlc3RgIHNlY3Rpb24gb2YgYSBzaW5nbGUgdml0ZXN0IHByb2plY3QgZW50cnkuXG4gKi9cbmV4cG9ydCB0eXBlIE9ic2lkaWFuUGx1Z2luVml0ZXN0UHJvamVjdENvbmZpZyA9IE5vbk51bGxhYmxlPFRlc3RQcm9qZWN0SW5saW5lQ29uZmlndXJhdGlvblsndGVzdCddPjtcblxuLyoqXG4gKiBPbmUgZW50cnkgb2YgYSB2aXRlc3QgYHJlcG9ydGVyc2AgbGlzdDogdGhlIG5hbWUgb2YgYSBidWlsdC1pbiByZXBvcnRlciBvciBhIHJlcG9ydGVyIGluc3RhbmNlLiBUaGUgc2FtZSBzaGFwZSBhc1xuICogdGhlIGxpYnJhcnkgY29uZmlndXJhdGlvbidzIHtAbGluayBWaXRlc3RSZXBvcnRlcn0uXG4gKi9cbmV4cG9ydCB0eXBlIE9ic2lkaWFuUGx1Z2luVml0ZXN0UmVwb3J0ZXIgPSBWaXRlc3RSZXBvcnRlcjtcblxuLy8gVGhlIGxpYnJhcnkgY29uZmlndXJhdGlvbidzIHBpbm5lZCByZXBvcnRlcnMsIHJlLWV4cG9ydGVkIHNvIGEgcGx1Z2luIHJlcG8gdGhhdCBhc3NlbWJsZXMgaXRzIHZpdGVzdCBwcm9qZWN0cyBieVxuLy8gaGFuZCBuZWVkcyBvbmx5IHRoaXMgcGFja2FnZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1leHBvcnQtZnJvbSAtLSBUaGUgYmluZGluZyBpcyBhbHNvIHVzZWQgYmVsb3csIHNvIGl0IGlzIGltcG9ydGVkIG9uY2UuXG5leHBvcnQgeyBERUZBVUxUX1ZJVEVTVF9SRVBPUlRFUlMgfTtcblxuLypcbiAqIEhvdyBtdWNoIGEgcHJvamVjdCdzIHBlci10ZXN0IGJ1ZGdldCBjbGVhcnMgYERFRkFVTFRfRVZBTF9DQVBfSU5fTUlMTElTRUNPTkRTYCBieSBcdTIwMTQgdGhlIHBlci1ldmFsIGNhcFxuICogQk9USCB0cmFuc3BvcnRzIGVuZm9yY2UsIGltcG9ydGVkIGZyb20gYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmdgIHJhdGhlciB0aGFuIHJlc3RhdGVkIHNvIHRoZVxuICogYnVkZ2V0cyBiZWxvdyBhbmQgdGhlIGNhcCB0aGV5IGFyZSBzaXplZCBhZ2FpbnN0IGNhbiBuZXZlciBiZSB0d28gbnVtYmVycy4gT25lIGBldmFsSW5PYnNpZGlhbmAgY2xvc3VyZVxuICogZ2V0cyB0aGF0IG11Y2ggYW5kIG5vIG1vcmUsIG1lYXN1cmVkIGZyb20gdGhlIG1vbWVudCB0aGUgdHJhbnNwb3J0IGRpc3BhdGNoZXMgaXQ7IG91dHJ1bm5pbmcgaXQgcmFpc2VzXG4gKiBgRXZhbENhcEV4Y2VlZGVkRXJyb3JgLCB3aGljaCBuYW1lcyB0aGUgY2FwLCB0aGUgdHJhbnNwb3J0IHRoYXQgZW5mb3JjZWQgaXQsIGFuZCB0aGUgYHBvbGxJbk9ic2lkaWFuYFxuICogcmVtZWR5IFx1MjAxNCB0aGUgb25lIG1lc3NhZ2UgdGhhdCB0dXJucyBcInRoaXMgdGltZWQgb3V0XCIgaW50byBcInRoaXMgY2xvc3VyZSBhc2tlZCBmb3IgbW9yZSB0aW1lIHRoYW5cbiAqIGV4aXN0c1wiLlxuICpcbiAqIEEgdGVzdCBidWRnZXQgRVFVQUwgdG8gdGhlIGNhcCBtYWtlcyB0aGUgY2FwJ3Mgb3duIGRpYWdub3NpcyB1bnJlYWNoYWJsZTogdml0ZXN0IHN0YXJ0cyBpdHMgY2xvY2sgYXRcbiAqIHRoZSB0b3Agb2YgdGhlIHRlc3QgYW5kIHRoZSB0cmFuc3BvcnQgc3RhcnRzIGl0cyBvd24gb25seSBvbmNlIHRoZSBldmFsIGlzIGRpc3BhdGNoZWQsIHNvIHZpdGVzdCBhbHdheXNcbiAqIHdpbnMgYnkgdGhlIGZldyBtaWxsaXNlY29uZHMgaW4gYmV0d2VlbiBhbmQgcmVwb3J0cyBpdHMgYW5vbnltb3VzIGBUZXN0IHRpbWVkIG91dCBpbiAzMDAwMG1zYC4gVGhhdCBpc1xuICogbm90IGEgaHlwb3RoZXRpY2FsIFx1MjAxNCBpdCBpcyBob3cgZXZlcnkgb3Zlci1jYXAgZGVza3RvcCBldmFsIGhhZCBzdXJmYWNlZCBoZXJlIHVudGlsIHRoaXMgbWFyZ2luIGV4aXN0ZWQsXG4gKiBhbmQgb25lIG9mIHRoZW0gYWJvcnRlZCBhbiBvdGhlcndpc2UgZ3JlZW4gcmVsZWFzZSBmaXZlIG1pbnV0ZXMgaW50byB0aGUgcHJlZmxpZ2h0IHdpdGggbm8gaW5kaWNhdGlvblxuICogb2Ygd2hpY2ggd2FpdCB3YXMgdG8gYmxhbWUgKG1lYXN1cmVkIDIwMjYtMDktMTU6IDMwMDQ0IG1zIGJ1cm5lZCBhZ2FpbnN0IGEgMzAwMDAgbXMgYnVkZ2V0KS5cbiAqXG4gKiBUaGUgbWFyZ2luIGhhcyB0byBjb3ZlciBldmVyeXRoaW5nIGEgdGVzdCBkb2VzIEJFRk9SRSB0aGUgZXZhbCB0aGF0IGhhbmdzIFx1MjAxNCBlYXJsaWVyIG9uZXMgaW5jbHVkZWQgXHUyMDE0XG4gKiBzbyBpdCBpcyBhIGhlYWx0aHkgZnJhY3Rpb24gb2YgdGhlIGNhcCByYXRoZXIgdGhhbiBhIGNvdXBsZSBvZiBzZWNvbmRzLlxuICovXG5jb25zdCBUUkFOU1BPUlRfRVZBTF9DQVBfTUFSR0lOX0lOX01JTExJU0VDT05EUyA9IDE1XzAwMDtcblxuLypcbiAqIEFuZHJvaWQgd2FzIG5ldmVyIGFmZmVjdGVkLCBhbmQgdGhhdCBhc3ltbWV0cnkgaXMgdGhlIGV2aWRlbmNlIHRoZSBkZXNrdG9wIGVxdWFsaXR5IHdhcyBhbiBvdmVyc2lnaHRcbiAqIHJhdGhlciB0aGFuIGEgZGVjaXNpb246IGl0cyBidWRnZXQgaGFzIGFsd2F5cyBiZWVuIGRvdWJsZSB0aGUgQXBwaXVtIGNhcCwgc28gYW4gb3Zlci1jYXAgbW9iaWxlIGNsb3N1cmVcbiAqIGhhcyBhbHdheXMgYmVlbiBhYmxlIHRvIHJlcG9ydCBpdHNlbGYuXG4gKi9cbmNvbnN0IEFORFJPSURfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSA2MF8wMDA7XG5jb25zdCBIT09LX1RJTUVPVVRfTVVMVElQTElFUiA9IDQ7XG5cbi8qXG4gKiBUaGUgcGVyZm9ybWFuY2UgcHJvamVjdCdzIGJ1ZGdldCBjbGVhcnMgaXRzIG93biBwZXItZXZhbCBjYXAgYnkgdGhlIHNhbWUgbWFyZ2luLCBmb3IgdGhlIHNhbWUgcmVhc29uXG4gKiB0aGUgcmVndWxhciBidWRnZXQgY2xlYXJzIHRoZSB0cmFuc3BvcnQgZGVmYXVsdDogYW4gZXF1YWwgYnVkZ2V0IGxldHMgdml0ZXN0J3MgYW5vbnltb3VzIHRpbWVvdXQgd2luXG4gKiB0aGUgcmFjZSBhZ2FpbnN0IHRoZSBjYXAncyBvd24gYEV2YWxDYXBFeGNlZWRlZEVycm9yYC5cbiAqL1xuY29uc3QgUEVSRk9STUFOQ0VfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSBQRVJGT1JNQU5DRV9FVkFMX0NBUF9JTl9NSUxMSVNFQ09ORFMgKyBUUkFOU1BPUlRfRVZBTF9DQVBfTUFSR0lOX0lOX01JTExJU0VDT05EUztcblxuLyoqXG4gKiBUaGUgcGVyLXRlc3QgYnVkZ2V0IG9mIHRoZSByZWd1bGFyIGludGVncmF0aW9uIHByb2plY3RzLCBpbiBtaWxsaXNlY29uZHMuXG4gKlxuICogRXhwb3J0ZWQgYmVjYXVzZSBhIHJlcG8gdGhhdCBhc3NlbWJsZXMgaXRzIHZpdGVzdCBwcm9qZWN0cyBieSBoYW5kIGluc3RlYWQgb2YgdGhyb3VnaFxuICoge0BsaW5rIGRlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnfSBzdGlsbCBuZWVkcyB0aGUgc2FtZSByZWxhdGlvbnNoaXAgdG8gdGhlIHBlci1ldmFsIGNhcCwgYW5kXG4gKiByZXN0YXRpbmcgdGhlIG51bWJlciB0aGVyZSBpcyBob3cgdGhlIHR3byBkcmlmdCBhcGFydC5cbiAqL1xuZXhwb3J0IGNvbnN0IElOVEVHUkFUSU9OX1RFU1RfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSBERUZBVUxUX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EUyArIFRSQU5TUE9SVF9FVkFMX0NBUF9NQVJHSU5fSU5fTUlMTElTRUNPTkRTO1xuXG5jb25zdCBBTkRST0lEX1RFU1RfRklMRVMgPSAnc3JjLyoqLyouYW5kcm9pZC5pbnRlZ3JhdGlvbi50ZXN0LnRzJztcbmNvbnN0IENST1NTX1BMQVRGT1JNX1RFU1RfRklMRVMgPSAnc3JjLyoqLyouY3Jvc3MtcGxhdGZvcm0uaW50ZWdyYXRpb24udGVzdC50cyc7XG5jb25zdCBERUNMQVJBVElPTl9GSUxFUyA9ICdzcmMvKiovKi5kLnRzJztcbmNvbnN0IERFU0tUT1BfUEVSRk9STUFOQ0VfVEVTVF9GSUxFUyA9IGBzcmMvKiovKiR7REVTS1RPUF9QRVJGT1JNQU5DRV9URVNUX0ZJTEVfU1VGRklYfWA7XG5jb25zdCBERVNLVE9QX1RFU1RfRklMRVMgPSAnc3JjLyoqLyouZGVza3RvcC5pbnRlZ3JhdGlvbi50ZXN0LnRzJztcbmNvbnN0IElOVEVHUkFUSU9OX1RFU1RfRklMRVMgPSAnc3JjLyoqLyouaW50ZWdyYXRpb24udGVzdC50cyc7XG5jb25zdCBOT19BUFBfVEVTVF9GSUxFUyA9ICdzcmMvKiovKi5uby1hcHAuaW50ZWdyYXRpb24udGVzdC50cyc7XG5jb25zdCBVTklUX1RFU1RfRklMRVMgPSAnc3JjLyoqLyoudGVzdC50cyc7XG5jb25zdCBVTklUX1RFU1RfR0xPQkFMX1NUVUJTX1BST0pFQ1RfTkFNRSA9ICd1bml0LXRlc3RzOmdsb2JhbC1zdHVicyc7XG5cbi8qXG4gKiBSdW5zIGJlZm9yZSB0aGUgaGFybmVzcydzIG93biBzZXR1cCBpbiBldmVyeSBwcm9qZWN0IHRoYXQgbG9hZHMgdGhlIHBsdWdpbiBmcm9tIGBkaXN0L2J1aWxkL21haW4uanNgLFxuICogYW5kIHJlZnVzZXMgdG8gc3RhcnQgd2hlbiB0aGF0IGJ1aWxkIGlzIG1pc3Npbmcgb3Igb2xkZXIgdGhhbiB0aGUgc291cmNlLiBBIHBsdWdpbidzXG4gKiBgdGVzdDppbnRlZ3JhdGlvbipgIHNjcmlwdHMgY2FsbCB2aXRlc3QgZGlyZWN0bHkgYW5kIG5ldmVyIGJ1aWxkLCBzbyB3aXRob3V0IGl0IGEgc2Vzc2lvbiB0aGF0IGVkaXRzXG4gKiBgc3JjL2AgYW5kIHJ1bnMgb25lIGludGVncmF0aW9uIHByb2plY3QgdGVzdHMgdGhlIHByZXZpb3VzIGJ1aWxkIGFuZCByZWFkcyB0aGUgcmVzdWx0IGFzIGEgZGVmZWN0LlxuICovXG5jb25zdCBTVEFMRV9CVUlMRF9HTE9CQUxfU0VUVVAgPSAnb2JzaWRpYW4tZGV2LXV0aWxzL3NjcmlwdC11dGlscy90ZXN0LXJ1bm5lcnMvc3RhbGUtYnVpbGQtZ2xvYmFsLXNldHVwJztcblxuY29uc3QgT0JTSURJQU5fVkVSU0lPTl9FTlZfVkFSSUFCTEVfTkFNRSA9ICdPQlNJRElBTl9WRVJTSU9OJztcbmNvbnN0IFNIQVJFRF9FWENMVURFID0gREVGQVVMVF9WSVRFU1RfVEVTVF9FWENMVURFO1xuXG4vKipcbiAqIFRoZSBvcHRpb25zIGZvciBkZWZpbmluZyBhIHBsdWdpbidzIHZpdGVzdCBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgYnVpbGRzIHByb2plY3RzIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZG9lcyBub3Qga25vdyBhYm91dCwgc3VjaCBhcyBhIHBsdWdpbidzIG93blxuICAgKiBgaW50ZWdyYXRpb24tdGVzdHM6ZGVtby12YXVsdGAgcHJvamVjdC4gVGhlIHJldHVybmVkIHByb2plY3RzIGFyZSBhcHBlbmRlZCBhZnRlciB0aGUgc3RhbmRhcmQgZml2ZS5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgdml0ZXN0IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICogQHJldHVybnMgVGhlIGV4dHJhIHByb2plY3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tUHJvamVjdHM/OiAoY29udGV4dDogT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdDb250ZXh0KSA9PiBUZXN0UHJvamVjdENvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGVkaXRzIHRoZSB2aXRlc3QgY29uZmlndXJhdGlvbiBjb250ZXh0IGJlZm9yZSBpdCBpcyBhc3NlbWJsZWQgaW50byBhIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIHZpdGVzdCBjb25maWd1cmF0aW9uIGNvbnRleHQuXG4gICAqL1xuICByZWFkb25seSBlZGl0Q29udGV4dD86IChjb250ZXh0OiBPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZ0NvbnRleHQpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogVGhlIGNvbnRleHQgZm9yIGRlZmluaW5nIGEgcGx1Z2luJ3Mgdml0ZXN0IGNvbmZpZ3VyYXRpb24uXG4gKlxuICogRXZlcnkgbWVtYmVyIGlzIGxpdmU6IHRoZSBhcnJheXMgYW5kIG9iamVjdHMgaXQgZXhwb3NlcyBhcmUgdGhlIHZlcnkgb25lcyB0aGUgYXNzZW1ibGVkIGNvbmZpZ3VyYXRpb25cbiAqIGlzIGJ1aWx0IGZyb20sIHNvIGVkaXRpbmcgdGhlbSBpbiBwbGFjZSB0aHJvdWdoXG4gKiB7QGxpbmsgRGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdPcHRpb25zLmVkaXRDb250ZXh0fSBpcyB3aGF0IGN1c3RvbWl6ZXMgdGhlIHJlc3VsdC5cbiAqL1xuZXhwb3J0IGNsYXNzIE9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnQ29udGV4dCB7XG4gIC8qKlxuICAgKiBUaGUgYGludGVncmF0aW9uLXRlc3RzOmFuZHJvaWRgIHByb2plY3QsIHJ1bm5pbmcgdGhlIG1vYmlsZS1vbmx5IGFuZCBjcm9zcy1wbGF0Zm9ybSBzdWl0ZXMgYWdhaW5zdCBhblxuICAgKiBBbmRyb2lkIGVtdWxhdG9yIHRocm91Z2ggQXBwaXVtLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFuZHJvaWQ6IE9ic2lkaWFuUGx1Z2luVml0ZXN0UHJvamVjdENvbmZpZyA9IHtcbiAgICBlbnZpcm9ubWVudDogJ25vZGUnLFxuICAgIGVudmlyb25tZW50T3B0aW9uczoge1xuICAgICAgb2JzaWRpYW5UcmFuc3BvcnQ6IHtcbiAgICAgICAgYXBwaXVtVXJsOiAnaHR0cDovL2xvY2FsaG9zdDo0NzIzJyxcbiAgICAgICAgYXZkTmFtZTogJ29ic2lkaWFuX3Rlc3QnLFxuICAgICAgICB0eXBlOiAnb2JzaWRpYW4tYW5kcm9pZC1hcHBpdW0nXG4gICAgICB9XG4gICAgfSxcbiAgICBmaWxlUGFyYWxsZWxpc206IGZhbHNlLFxuICAgIGdsb2JhbFNldHVwOiBbU1RBTEVfQlVJTERfR0xPQkFMX1NFVFVQLCAnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3QtZ2xvYmFsLXNldHVwLXBsdWdpbiddLFxuICAgIGhvb2tUaW1lb3V0OiBBTkRST0lEX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTICogSE9PS19USU1FT1VUX01VTFRJUExJRVIsXG4gICAgaW5jbHVkZTogW0FORFJPSURfVEVTVF9GSUxFUywgQ1JPU1NfUExBVEZPUk1fVEVTVF9GSUxFU10sXG4gICAgbmFtZTogJ2ludGVncmF0aW9uLXRlc3RzOmFuZHJvaWQnLFxuICAgIHNldHVwRmlsZXM6IFsnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3Qtc2V0dXAnXSxcbiAgICB0ZXN0VGltZW91dDogQU5EUk9JRF9USU1FT1VUX0lOX01JTExJU0VDT05EU1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcGVyLXRlc3QgYnVkZ2V0IG9mIHRoZSBBbmRyb2lkIGludGVncmF0aW9uIHByb2plY3QsIGluIG1pbGxpc2Vjb25kcy4gQm9vdGluZyBhbiBlbXVsYXRvciBhbmRcbiAgICogZHJpdmluZyBpdCBvdmVyIEFwcGl1bSBpcyBzbG93ZXIgdGhhbiB0aGUgZGVza3RvcCBwYXRoLCBoZW5jZSBpdHMgb3duIGNvbnN0YW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNjAwMDBgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYW5kcm9pZFRpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IEFORFJPSURfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFM7XG5cbiAgLyoqXG4gICAqIFRoZSBwZXItdGVzdCBidWRnZXQgb2YgdGhlIHJlZ3VsYXIgaW50ZWdyYXRpb24gcHJvamVjdHMsIGluIG1pbGxpc2Vjb25kcy5cbiAgICpcbiAgICogSXQgZGVsaWJlcmF0ZWx5IENMRUFSUyB0aGUgdHJhbnNwb3J0cycgcGVyLWV2YWwgY2FwIHJhdGhlciB0aGFuIG1hdGNoaW5nIGl0LCBzbyB0aGF0IGEgY2xvc3VyZSB3aGljaFxuICAgKiBvdXRydW5zIHRoZSBjYXAgZmFpbHMgd2l0aCB0aGUgaGFybmVzcydzIGBFdmFsQ2FwRXhjZWVkZWRFcnJvcmAgXHUyMDE0IG5hbWluZyB0aGUgY2FwIGFuZCB0aGUgcmVtZWR5IFx1MjAxNFxuICAgKiBpbnN0ZWFkIG9mIHdpdGggdml0ZXN0J3MgYW5vbnltb3VzIHRpbWVvdXQuIExvd2VyaW5nIGl0IHRvIHRoZSBjYXAgcmVzdG9yZXMgdGhhdCBibGluZCBzcG90LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNDUwMDBgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYmlnVGltZW91dEluTWlsbGlzZWNvbmRzID0gSU5URUdSQVRJT05fVEVTVF9USU1FT1VUX0lOX01JTExJU0VDT05EUztcblxuICAvKipcbiAgICogVGhlIGNvdmVyYWdlIGBleGNsdWRlYCBnbG9icy4gUHVzaCBvbnRvIGl0IHRvIGRyb3AgbW9yZSBmaWxlcyBmcm9tIHRoZSBjb3ZlcmFnZSByZXBvcnQuXG4gICAqXG4gICAqIERlY2xhcmF0aW9uIGZpbGVzIGFyZSBleGNsdWRlZCBieSBkZWZhdWx0IGJlY2F1c2UgdGhlIGNvdmVyYWdlIGBpbmNsdWRlYCBiZWxvdyBpcyBgc3JjLyoqXFwvKi50c2AsXG4gICAqIHdoaWNoIGEgYC5kLnRzYCBtYXRjaGVzLiBBIGRlY2xhcmF0aW9uIGZpbGUgZW1pdHMgbm8gcnVudGltZSBjb2RlLCBzbyBpdCByZXBvcnRzIDAlIGFuZCBubyB0ZXN0IGNhblxuICAgKiBldmVyIHJhaXNlIGl0IFx1MjAxNCBhIHBsdWdpbiB0aGF0IGdyb3dzIG9uZSB1bmRlciBgc3JjL2Agc2lsZW50bHkgbG9zZXMgaXRzIDEwMCUgZ2F0ZSwgYW5kIHRoZSB1c3VhbFxuICAgKiByZW1lZHkgb2YgYW4gaW5saW5lIGB2OCBpZ25vcmVgIGNvbW1lbnQgZG9lcyBub3QgYXBwbHkgdG8gYSB0eXBlLW9ubHkgZmlsZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb3ZlcmFnZUV4Y2x1ZGU6IHN0cmluZ1tdID0gW1VOSVRfVEVTVF9GSUxFUywgREVDTEFSQVRJT05fRklMRVNdO1xuXG4gIC8qKlxuICAgKiBUaGUgYGludGVncmF0aW9uLXRlc3RzOmRlc2t0b3BgIHByb2plY3QsIHJ1bm5pbmcgdGhlIGRlc2t0b3Atb25seSBhbmQgY3Jvc3MtcGxhdGZvcm0gc3VpdGVzIGFnYWluc3QgYVxuICAgKiByZWFsIGRlc2t0b3AgT2JzaWRpYW4gb3ZlciBDRFAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVza3RvcDogT2JzaWRpYW5QbHVnaW5WaXRlc3RQcm9qZWN0Q29uZmlnID0ge1xuICAgIGVudmlyb25tZW50OiAnbm9kZScsXG4gICAgZmlsZVBhcmFsbGVsaXNtOiBmYWxzZSxcbiAgICBnbG9iYWxTZXR1cDogW1NUQUxFX0JVSUxEX0dMT0JBTF9TRVRVUCwgJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3Rpbmcvdml0ZXN0LWdsb2JhbC1zZXR1cC1wbHVnaW4nXSxcbiAgICBob29rVGltZW91dDogSU5URUdSQVRJT05fVEVTVF9USU1FT1VUX0lOX01JTExJU0VDT05EUyAqIEhPT0tfVElNRU9VVF9NVUxUSVBMSUVSLFxuICAgIGluY2x1ZGU6IFtERVNLVE9QX1RFU1RfRklMRVMsIENST1NTX1BMQVRGT1JNX1RFU1RfRklMRVNdLFxuICAgIG5hbWU6ICdpbnRlZ3JhdGlvbi10ZXN0czpkZXNrdG9wJyxcbiAgICBzZXR1cEZpbGVzOiBbJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3Rpbmcvdml0ZXN0LXNldHVwJ10sXG4gICAgdGVzdFRpbWVvdXQ6IElOVEVHUkFUSU9OX1RFU1RfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFNcbiAgfTtcblxuICAvKipcbiAgICogVGhlIGBpbnRlZ3JhdGlvbi10ZXN0czpkZXNrdG9wLXBlcmZvcm1hbmNlYCBwcm9qZWN0LCBydW5uaW5nIHRoZSBhdC1zY2FsZSBzdWl0ZXMuIEl0IGlzIGRlY2xhcmVkIGZvclxuICAgKiBldmVyeSBwbHVnaW4gZXZlbiB3aGVuIHRoZXJlIGlzIG5vIHN1Y2ggc3VpdGUgeWV0IFx1MjAxNCBgcGFzc1dpdGhOb1Rlc3RzYCBtYWtlcyBhbiBlbXB0eSBwcm9qZWN0IGZyZWUsXG4gICAqIGFuZCB0aGUgbWF0Y2hpbmcgYHRlc3Q6aW50ZWdyYXRpb246ZGVza3RvcDpwZXJmb3JtYW5jZWAgc2NyaXB0IGV4aXN0cyBpbiBldmVyeSBwbHVnaW4gYnVpbHQgb24gdGhpcyBsaWJyYXJ5LlxuICAgKlxuICAgKiBBIHBsdWdpbidzIGB0ZXN0OmludGVncmF0aW9uYCBhZ2dyZWdhdGUgbGVhdmVzIHRoaXMgcHJvamVjdCBvdXQgb24gcHVycG9zZSwgYW5kIGl0IHN0YXlzIG91dCBldmVuIG9uIGFcbiAgICogbWFjaGluZSB3aXRoIGEgZGVza3RvcCBPYnNpZGlhbiBzZXQgdXAuIFRoZSByZWFzb24gaXMgdGhlIGZpeHR1cmUgcmF0aGVyIHRoYW4gdGhlIGNvc3Q6IGEgcGVyZiBzdWl0ZVxuICAgKiBuZWVkcyBpdHMgb3duIGdlbmVyYXRlZCwgcG9wdWxhdGVkIHZhdWx0LCBzaXplZCB0aHJvdWdoIGVudiB2YXJzLCBhbmQgdGhlIGFnZ3JlZ2F0ZSdzIHNtYWxsIHRlbXBvcmFyeVxuICAgKiB2YXVsdCBpcyB0aGUgd3Jvbmcgb25lLiBUaGUgNjAwIHMgYmVsb3cgaXMgYSB0aW1lb3V0LCBub3QgYSBkdXJhdGlvbiBcdTIwMTQgbWVhc3VyZWQgZW5kIHRvIGVuZCwgbW9zdCBwZXJmXG4gICAqIHN1aXRlcyBmaW5pc2ggaW4gc2Vjb25kcywgYW5kIG9ubHkgb25lIHRoYXQgZ2VuZXJhdGVzIHRlbnMgb2YgdGhvdXNhbmRzIG9mIG5vdGVzIHRha2VzIG1pbnV0ZXMuXG4gICAqXG4gICAqIEl0cyBDRFAgdHJhbnNwb3J0J3MgcGVyLWV2YWwgY2FwIGlzIHJhaXNlZCB0byA2MDAgcyBhcyB3ZWxsICh0aGUgYnVkZ2V0IGNsZWFycyBpdCBieSB0aGUgdXN1YWxcbiAgICogbWFyZ2luKSwgYmVjYXVzZSBhIHBlcmYgc3VpdGUncyB3aG9sZSBtZWFzdXJlbWVudCBpcyB0eXBpY2FsbHkgT05FIGxvbmcgaW4tcGFnZSBldmFsdWF0aW9uLCB3aGljaCB0aGVcbiAgICogdHJhbnNwb3J0J3MgMzAgcyBkZWZhdWx0IGtpbGxlZCBhcyBhIGJhcmUgYENEUCBjb21tYW5kIHRpbWVkIG91dCBcdTIwMjYgUnVudGltZS5ldmFsdWF0ZWAgbmFtaW5nIG5laXRoZXIgdGhlXG4gICAqIHdhaXQgbm9yIHRoZSBhc3NlcnRpb24uIFRocmVlIHBsdWdpbnMgaGFkIGVhY2ggaGFuZC13cml0dGVuIHRoaXMgcmFpc2UgaW4gdGhlaXIgb3duIGBlZGl0Q29udGV4dGBcbiAgICogYmVmb3JlIGl0IG1vdmVkIGhlcmUuIFVubGlrZSBhIHJhaXNlZCBkZXNrdG9wIGNhcCwgd2hpY2ggaXMgYSBiYWNrc3RvcCByYXRoZXIgdGhhbiBhIGJ1ZGdldCBhIGNsb3N1cmVcbiAgICogbWF5IHNwZW5kLCB0aGlzIG9uZSBJUyBhIGJ1ZGdldDogYG5vLW92ZXItY2FwLXdhaXQtaW4tZXZhbC1pbi1vYnNpZGlhbmAgcmVhZHMgaXQgZm9yIHRoZXNlIGZpbGVzIGFuZFxuICAgKiBmb3Igbm8gb3RoZXIuXG4gICAqXG4gICAqIE5vIHJvdXRpbmUgY29tbWFuZCBydW5zIHRoZW0sIGJ1dCBzb21ldGhpbmcgZG9lczogYSB3ZWVrbHkgc3dlZXAgcnVucyBldmVyeSBwbHVnaW4nc1xuICAgKiBgdGVzdDppbnRlZ3JhdGlvbjpkZXNrdG9wOnBlcmZvcm1hbmNlYCwgd2hpY2ggaXMgYWxzbyBob3cgdG8gcmVhY2ggdGhlbSBieSBoYW5kLiBBZGRpbmcgdGhlbSB0byB0aGF0XG4gICAqIGFnZ3JlZ2F0ZSBpcyBkcmlmdCwgbm90IGEgZ2FwIHRvIGNsb3NlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlc2t0b3BQZXJmb3JtYW5jZTogT2JzaWRpYW5QbHVnaW5WaXRlc3RQcm9qZWN0Q29uZmlnID0ge1xuICAgIGVudmlyb25tZW50OiAnbm9kZScsXG4gICAgZW52aXJvbm1lbnRPcHRpb25zOiB7XG4gICAgICBvYnNpZGlhblRyYW5zcG9ydDoge1xuICAgICAgICBjb21tYW5kVGltZW91dEluTWlsbGlzZWNvbmRzOiBQRVJGT1JNQU5DRV9FVkFMX0NBUF9JTl9NSUxMSVNFQ09ORFMsXG4gICAgICAgIHR5cGU6ICdvYnNpZGlhbi1jZHAnXG4gICAgICB9XG4gICAgfSxcbiAgICBmaWxlUGFyYWxsZWxpc206IGZhbHNlLFxuICAgIGdsb2JhbFNldHVwOiBbU1RBTEVfQlVJTERfR0xPQkFMX1NFVFVQLCAnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3QtZ2xvYmFsLXNldHVwLXBsdWdpbiddLFxuICAgIGhvb2tUaW1lb3V0OiBQRVJGT1JNQU5DRV9USU1FT1VUX0lOX01JTExJU0VDT05EUyxcbiAgICBpbmNsdWRlOiBbREVTS1RPUF9QRVJGT1JNQU5DRV9URVNUX0ZJTEVTXSxcbiAgICBuYW1lOiAnaW50ZWdyYXRpb24tdGVzdHM6ZGVza3RvcC1wZXJmb3JtYW5jZScsXG4gICAgc2V0dXBGaWxlczogWydvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL3ZpdGVzdC1zZXR1cCddLFxuICAgIHRlc3RUaW1lb3V0OiBQRVJGT1JNQU5DRV9USU1FT1VUX0lOX01JTExJU0VDT05EU1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgdW5pdCB0ZXN0IGZpbGVzIHRoYXQgcmVkZWZpbmUgYHdpbmRvd2AsIGBkb2N1bWVudGAsIGBsb2NhdGlvbmAgb3IgYHRvcGAsIHdoaWNoIHRoZSBgdW5pdC10ZXN0c2BcbiAgICogcHJvamVjdCdzIFZNIHBvb2wgY2Fubm90IHJ1bi5cbiAgICpcbiAgICogVW5kZXIgYHBvb2w6ICd2bVRocmVhZHMnYCB0aG9zZSBmb3VyIGFyZSBub24tY29uZmlndXJhYmxlIHByb3BlcnRpZXMgb2YgdGhlIFZNIGdsb2JhbCwgc29cbiAgICogYHZpLnN0dWJHbG9iYWwoJ3dpbmRvdycsIFx1MjAyNilgIG9yIGBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnbG9jYXRpb24nLCBcdTIwMjYpYCB0aHJvd3NcbiAgICogYENhbm5vdCByZWRlZmluZSBwcm9wZXJ0eWAuIFRoYXQgaXMgSlMgc2VtYW50aWNzLCBub3QgYSBidWcgdG8gcm91dGUgYXJvdW5kLiBFdmVyeSBvdGhlciBnbG9iYWwgc3RheXNcbiAgICogY29uZmlndXJhYmxlIGFuZCBzdHVicyBub3JtYWxseS5cbiAgICpcbiAgICogUHVzaCBhIGZpbGUgaGVyZSBhbmQgaXQgbGVhdmVzIGB1bml0LXRlc3RzYCBmb3IgYSBzaWJsaW5nIGB1bml0LXRlc3RzOmdsb2JhbC1zdHVic2AgcHJvamVjdCB0aGF0IGlzXG4gICAqIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwb29sLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBvbmUuIEEgcGx1Z2luJ3MgYHRlc3RgIGFuZCBgdGVzdDpjb3ZlcmFnZWAgc2NyaXB0c1xuICAgKiBuYW1lIGB1bml0LXRlc3RzYCwgd2hpY2ggYWxzbyBzZWxlY3RzIGV2ZXJ5IGB1bml0LXRlc3RzOipgIHByb2plY3QsIHNvIHRoZSBzaWJsaW5nIHJ1bnMgYW5kIGlzIGNvdmVyZWRcbiAgICogd2l0aG91dCBhIHNjcmlwdCBjaGFuZ2UuIEl0IGlzIGVtaXR0ZWQgb25seSB3aGVuIHRoaXMgbGlzdCBpcyBub24tZW1wdHkuXG4gICAqXG4gICAqIFRvIGtlZXAgYSB3aG9sZSBzdWl0ZSBvbiB0aGUgZGVmYXVsdCBwb29sIGluc3RlYWQsIHNldCBgdW5pdFRlc3RzLnBvb2xgIHRvIGAnZm9ya3MnYCBhbmQgc2F5IHdoeS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnbG9iYWxTdHViVGVzdEZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgbXVsdGlwbGllciBhcHBsaWVkIHRvIGEgcHJvamVjdCdzIHRlc3QgYnVkZ2V0IHRvIGdldCBpdHMgaG9vayBidWRnZXQuIEEgaG9vayB0eXBpY2FsbHkgcG9wdWxhdGVzXG4gICAqIGFuZCBvcGVucyBhIHZhdWx0LCBzbyBpdCBuZWVkcyBzZXZlcmFsIHRpbWVzIHdoYXQgYSBzaW5nbGUgdGVzdCBkb2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBob29rVGltZW91dE11bHRpcGxpZXIgPSBIT09LX1RJTUVPVVRfTVVMVElQTElFUjtcblxuICAvKipcbiAgICogVGhlIGBpbnRlZ3JhdGlvbi10ZXN0czpuby1hcHBgIHByb2plY3QsIHJ1bm5pbmcgdGhlIHN1aXRlcyB0aGF0IG5lZWQgbm8gT2JzaWRpYW4gaW5zdGFuY2UgYXQgYWxsLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5vQXBwOiBPYnNpZGlhblBsdWdpblZpdGVzdFByb2plY3RDb25maWcgPSB7XG4gICAgZW52aXJvbm1lbnQ6ICdub2RlJyxcbiAgICBmaWxlUGFyYWxsZWxpc206IGZhbHNlLFxuICAgIGhvb2tUaW1lb3V0OiBJTlRFR1JBVElPTl9URVNUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTICogSE9PS19USU1FT1VUX01VTFRJUExJRVIsXG4gICAgaW5jbHVkZTogW05PX0FQUF9URVNUX0ZJTEVTXSxcbiAgICBuYW1lOiAnaW50ZWdyYXRpb24tdGVzdHM6bm8tYXBwJyxcbiAgICB0ZXN0VGltZW91dDogSU5URUdSQVRJT05fVEVTVF9USU1FT1VUX0lOX01JTExJU0VDT05EU1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcGVyLWV2YWwgY2FwIHRoZSBwZXJmb3JtYW5jZSBpbnRlZ3JhdGlvbiBwcm9qZWN0IGdpdmVzIGl0cyBDRFAgdHJhbnNwb3J0LCBpbiBtaWxsaXNlY29uZHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA2MDAwMDBgXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGVyZm9ybWFuY2VFdmFsQ2FwSW5NaWxsaXNlY29uZHMgPSBQRVJGT1JNQU5DRV9FVkFMX0NBUF9JTl9NSUxMSVNFQ09ORFM7XG5cbiAgLyoqXG4gICAqIFRoZSBwZXItdGVzdCBidWRnZXQgb2YgdGhlIHBlcmZvcm1hbmNlIGludGVncmF0aW9uIHByb2plY3QsIGluIG1pbGxpc2Vjb25kcy4gQSBwZXJmb3JtYW5jZSB2YXVsdCBpc1xuICAgKiBwcmUtcG9wdWxhdGVkIHdpdGggdGVucyBvZiB0aG91c2FuZHMgb2Ygbm90ZXMgYmVmb3JlIE9ic2lkaWFuIG9wZW5zLCBzbyBib3RoIGl0cyBzZXR1cCBhbmQgaXRzIHRlc3RzXG4gICAqIG5lZWQgZmFyIG1vcmUgdGltZSB0aGFuIHRoZSByZWd1bGFyIGludGVncmF0aW9uIHByb2plY3RzLlxuICAgKlxuICAgKiBMaWtlIHRoZSByZWd1bGFyIGJ1ZGdldCwgaXQgQ0xFQVJTIHRoZSBwcm9qZWN0J3MgcGVyLWV2YWwgY2FwXG4gICAqICh7QGxpbmsgT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdDb250ZXh0LnBlcmZvcm1hbmNlRXZhbENhcEluTWlsbGlzZWNvbmRzfSkgcmF0aGVyIHRoYW4gbWF0Y2hpbmcgaXQsXG4gICAqIHNvIGFuIGV2YWx1YXRpb24gdGhhdCBvdXRydW5zIHRoZSBjYXAgcmVwb3J0cyBpdHNlbGYgaW5zdGVhZCBvZiBkeWluZyBhcyB2aXRlc3QncyBhbm9ueW1vdXMgdGltZW91dC5cbiAgICpcbiAgICogQGRlZmF1bHQgYDYxNTAwMGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwZXJmb3JtYW5jZVRpbWVvdXRJbk1pbGxpc2Vjb25kcyA9IFBFUkZPUk1BTkNFX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVwb3J0ZXJzIHRoZSBydW4gcHJpbnRzIHRocm91Z2guXG4gICAqXG4gICAqIFBpbm5lZCByYXRoZXIgdGhhbiBsZWZ0IHRvIHZpdGVzdCwgd2hpY2ggcmVzb2x2ZXMgYW4gdW5zZXQgYHJlcG9ydGVyc2AgZGlmZmVyZW50bHkgZm9yIGEgZGV2ZWxvcGVyXG4gICAqIGFuZCBmb3IgYW4gQUkgY29kaW5nIHNlc3Npb24gXHUyMDE0IHNlZSB7QGxpbmsgREVGQVVMVF9WSVRFU1RfUkVQT1JURVJTfSBmb3IgdGhlIHdob2xlIG9mIHdoeSwgYW5kIGZvclxuICAgKiB3aGF0IGl0IGRlbGliZXJhdGVseSBsZWF2ZXMgdG8gdml0ZXN0IDUgaXRzZWxmLlxuICAgKlxuICAgKiBQdXNoIG9udG8gaXQgdG8gYWRkIGEgcmVwb3J0ZXIgYmVzaWRlIHRoZSBwaW5uZWQgb25lLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7QGxpbmsgREVGQVVMVF9WSVRFU1RfUkVQT1JURVJTfVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlcG9ydGVyczogT2JzaWRpYW5QbHVnaW5WaXRlc3RSZXBvcnRlcltdID0gWy4uLkRFRkFVTFRfVklURVNUX1JFUE9SVEVSU107XG5cbiAgLyoqXG4gICAqIFRoZSBgdW5pdC10ZXN0c2AgcHJvamVjdCwgcnVubmluZyB0aGUgbW9ja2VkLU9ic2lkaWFuIHN1aXRlcyBpbiBganNkb21gLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVuaXRUZXN0czogT2JzaWRpYW5QbHVnaW5WaXRlc3RQcm9qZWN0Q29uZmlnID0ge1xuICAgIGVudmlyb25tZW50OiAnanNkb20nLFxuICAgIGV4Y2x1ZGU6IFsuLi5TSEFSRURfRVhDTFVERSwgSU5URUdSQVRJT05fVEVTVF9GSUxFU10sXG4gICAgLy8gQSB0aHJlYWRzL2ZvcmtzIHBvb2wgb3B0aW9uIHRoYXQgc3RpbGwgcmVhY2hlcyB0aGUgd29ya2VyIHVuZGVyIHRoZSBWTSBwb29sIGJlbG93OiBtZWFzdXJlZFxuICAgIC8vIDIwMjYtMDktMTYsIGBwcm9jZXNzLmV4ZWNBcmd2YCBjYXJyaWVzIGl0IGFuZCBOb2RlJ3Mgb3duIGBsb2NhbFN0b3JhZ2VgIGRlc2NyaXB0b3IgaXMgZ29uZSwgYXMgaXRcbiAgICAvLyBpcyB1bmRlciBgdGhyZWFkc2AuIFdpdGhvdXQgdGhlIGZsYWcgdGhlIGRlc2NyaXB0b3IgaXMgYmFjayB1bmRlciBib3RoIHBvb2xzLlxuICAgIGV4ZWNBcmd2OiBbJy0tbm8td2Vic3RvcmFnZSddLFxuICAgIGluY2x1ZGU6IFtVTklUX1RFU1RfRklMRVNdLFxuICAgIG5hbWU6ICd1bml0LXRlc3RzJyxcbiAgICAvKlxuICAgICAqIFRoZSBkZWZhdWx0IHBvb2wgY29uc3RydWN0cyBvbmUganNkb20gcGVyIHRlc3QgZmlsZSwgYW5kIHRoYXQgY29uc3RydWN0aW9uLCBub3QgdGhlIHRlc3RzLCB3YXNcbiAgICAgKiB0aGUgdW5pdCBzdWl0ZSdzIGNvc3Q6IDY3JSBvZiB0cmFja2VkIHRpbWUgaW4gYG9ic2lkaWFuLWRldi11dGlsc2AnIG93biBzdWl0ZS4gQSBWTSBwb29sIGJ1aWxkc1xuICAgICAqIHRoZSBqc2RvbSBvbmNlIHBlciB3b3JrZXIgYW5kIGdpdmVzIGVhY2ggZmlsZSBhIGZyZXNoIFZNIGNvbnRleHQsIHNvIHBlci1maWxlIGlzb2xhdGlvbiBob2xkcy5cbiAgICAgKiBNZWFzdXJlZCB0aGVyZSBvbiAyMDI2LTA5LTE1OiB0aGUganNkb20gcHJvamVjdCAzNi4wNnMgLT4gOS45MnMsIGBjb3ZlcmFnZS9sY292LmluZm9gXG4gICAgICogYnl0ZS1pZGVudGljYWwgdG8gdGhlIGRlZmF1bHQgcG9vbCdzLCBhbmQgbm8gRE9NLCBgZ2xvYmFsVGhpc2Agb3IgcHJvdG90eXBlIHN0YXRlIGNyb3NzaW5nIGZpbGVzLlxuICAgICAqIGBpc29sYXRlOiBmYWxzZWAsIHRoZSBvdGhlciByZW1lZHkgdml0ZXN0IHN1Z2dlc3RzLCB3YXMgc2xvd2VyICg5MS42MnMpIGFuZCBicm9rZSA2OCB0ZXN0cy5cbiAgICAgKiBUaGUgb25lIGNvc3QgaXMgcmVkZWZpbmluZyBgd2luZG93YCwgYGRvY3VtZW50YCwgYGxvY2F0aW9uYCBvciBgdG9wYDogc2VlIGBnbG9iYWxTdHViVGVzdEZpbGVzYC5cbiAgICAgKi9cbiAgICBwb29sOiAndm1UaHJlYWRzJyxcbiAgICBzZXJ2ZXI6IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIGBkZXBzYCBpcyBkZWNsYXJlZCBieSBgdml0ZXN0YDsgcmVuYW1pbmcgaXQgaGVyZSB3b3VsZCBub3QgbWF0Y2ggdGhlIEFQSS5cbiAgICAgIGRlcHM6IHtcbiAgICAgICAgaW5saW5lOiBbJ0BvYnNpZGlhbi10eXBpbmdzJywgJ29ic2lkaWFuLWRldi11dGlscyddXG4gICAgICB9XG4gICAgfSxcbiAgICBzZXR1cEZpbGVzOiBbXG4gICAgICAnb2JzaWRpYW4tdGVzdC1tb2Nrcy92aXRlc3Qtc2V0dXAnLFxuICAgICAgJ29ic2lkaWFuLWRldi11dGlscy92aXRlc3Qtc2V0dXAnXG4gICAgXVxuICB9O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGNvbnRleHQgc2VlZGVkIHdpdGggdGhlIHN0YW5kYXJkIHByb2plY3RzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG9ic2lkaWFuVmVyc2lvbiA9IHByb2Nlc3MuZW52W09CU0lESUFOX1ZFUlNJT05fRU5WX1ZBUklBQkxFX05BTUVdO1xuXG4gICAgLypcbiAgICAgKiBTdXBwb3J0IGlzIHRoZSByYW5nZSBbbGF0ZXN0IHB1YmxpYywgbGF0ZXN0IGNhdGFseXN0XSBhbmQgQk9USCBlbmRzIG11c3Qgd29yaywgc28gdGhlIHZlcnNpb25cbiAgICAgKiBpcyBhIGtub2IgcmF0aGVyIHRoYW4gYSBjb25zdGFudC4gVGhlIGtleSBpcyBhZGRlZCBPTkxZIHdoZW4gdGhlIHZhcmlhYmxlIGlzIHNldDogYW4gZXhwbGljaXRcbiAgICAgKiBgb2JzaWRpYW5WZXJzaW9uYCBtYWtlcyB0aGUgaGFybmVzcyByZXNvbHZlIGEgY29uY3JldGUgdmVyc2lvbiBhbmQgc3dhcCB0aGUgYXNhciwgd2hpY2ggaXMgbm90IHdoYXRcbiAgICAgKiBhbiB1bnBpbm5lZCBydW4gZG9lcywgc28gc2VlZGluZyBhIGRlZmF1bHQgaGVyZSB3b3VsZCBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIGV2ZXJ5IHBsdWdpbi5cbiAgICAgKi9cbiAgICBpZiAob2JzaWRpYW5WZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGVza3RvcC5lbnZpcm9ubWVudE9wdGlvbnMgPSB7XG4gICAgICAgIG9ic2lkaWFuVHJhbnNwb3J0OiB7XG4gICAgICAgICAgb2JzaWRpYW5WZXJzaW9uLFxuICAgICAgICAgIHR5cGU6ICdvYnNpZGlhbi1jZHAnXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgdml0ZXN0IGNvbmZpZ3VyYXRpb24gZm9yIGFuIE9ic2lkaWFuIHBsdWdpbi5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBkZWZpbmluZyB0aGUgY29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm5zIFRoZSB2aXRlc3QgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnKG9wdGlvbnM6IERlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnT3B0aW9ucyA9IHt9KTogVml0ZVVzZXJDb25maWcge1xuICBjb25zdCBjb250ZXh0ID0gbmV3IE9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnQ29udGV4dCgpO1xuXG4gIGlmIChvcHRpb25zLmVkaXRDb250ZXh0KSB7XG4gICAgb3B0aW9ucy5lZGl0Q29udGV4dChjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IGN1c3RvbVByb2plY3RzID0gb3B0aW9ucy5jdXN0b21Qcm9qZWN0cz8uKGNvbnRleHQpID8/IFtdO1xuICB2YWxpZGF0ZUN1c3RvbVByb2plY3RzKGN1c3RvbVByb2plY3RzKTtcblxuICBjb25zdCB1bml0VGVzdHNSZXNvbHZlID0ge1xuICAgIGFsaWFzOiB7XG4gICAgICBvYnNpZGlhbjogJ29ic2lkaWFuLXRlc3QtbW9ja3Mvb2JzaWRpYW4nXG4gICAgfVxuICB9O1xuICBjb25zdCBnbG9iYWxTdHViVGVzdEZpbGVzID0gWy4uLmNvbnRleHQuZ2xvYmFsU3R1YlRlc3RGaWxlc107XG4gIGNvbnN0IHVuaXRUZXN0czogT2JzaWRpYW5QbHVnaW5WaXRlc3RQcm9qZWN0Q29uZmlnID0gZ2xvYmFsU3R1YlRlc3RGaWxlcy5sZW5ndGggPT09IDBcbiAgICA/IGNvbnRleHQudW5pdFRlc3RzXG4gICAgOiB7IC4uLmNvbnRleHQudW5pdFRlc3RzLCBleGNsdWRlOiBbLi4uY29udGV4dC51bml0VGVzdHMuZXhjbHVkZSA/PyBbXSwgLi4uZ2xvYmFsU3R1YlRlc3RGaWxlc10gfTtcbiAgY29uc3QgZ2xvYmFsU3R1YnNQcm9qZWN0czogVGVzdFByb2plY3RDb25maWd1cmF0aW9uW10gPSBnbG9iYWxTdHViVGVzdEZpbGVzLmxlbmd0aCA9PT0gMFxuICAgID8gW11cbiAgICA6IFt7XG4gICAgICByZXNvbHZlOiB1bml0VGVzdHNSZXNvbHZlLFxuICAgICAgdGVzdDoge1xuICAgICAgICAuLi5jb250ZXh0LnVuaXRUZXN0cyxcbiAgICAgICAgaW5jbHVkZTogZ2xvYmFsU3R1YlRlc3RGaWxlcyxcbiAgICAgICAgbmFtZTogVU5JVF9URVNUX0dMT0JBTF9TVFVCU19QUk9KRUNUX05BTUUsXG4gICAgICAgIC8vIFRoZSBkZWZhdWx0IHBvb2wsIG5hbWVkIHJhdGhlciB0aGFuIG9taXR0ZWQgc28gdGhlIHNwcmVhZCBhYm92ZSBjYW5ub3QgY2FycnkgdGhlIFZNIHBvb2wgb3Zlci5cbiAgICAgICAgcG9vbDogJ2ZvcmtzJ1xuICAgICAgfVxuICAgIH1dO1xuXG4gIHJldHVybiBkZWZpbmVDb25maWcoe1xuICAgIHRlc3Q6IHtcbiAgICAgIGNvdmVyYWdlOiB7XG4gICAgICAgIGV4Y2x1ZGU6IGNvbnRleHQuY292ZXJhZ2VFeGNsdWRlLFxuICAgICAgICBpbmNsdWRlOiBbJ3NyYy8qKi8qLnRzJ10sXG4gICAgICAgIHByb3ZpZGVyOiAndjgnLFxuICAgICAgICByZXBvcnRlcjogWyd0ZXh0JywgJ2xjb3YnLCAnaHRtbCddLFxuICAgICAgICByZXBvcnRzRGlyZWN0b3J5OiAnLi9jb3ZlcmFnZSdcbiAgICAgIH0sXG4gICAgICBleGNsdWRlOiBbLi4uU0hBUkVEX0VYQ0xVREVdLFxuICAgICAgZ2xvYmFsczogZmFsc2UsXG4gICAgICAvKlxuICAgICAgICogVGhlcmUgaXMgZGVsaWJlcmF0ZWx5IE5PIHJvb3QtbGV2ZWwgYGluY2x1ZGVgIGhlcmUsIGFuZCByZXN0b3Jpbmcgb25lIGJyZWFrcyBldmVyeSBwcm9qZWN0LlxuICAgICAgICogVW5kZXIgdml0ZXN0IDQgYSBwcm9qZWN0J3Mgb3duIGBpbmNsdWRlYCByZXBsYWNlZCB0aGUgcm9vdCBvbmUsIHNvIGEgcm9vdFxuICAgICAgICogYGluY2x1ZGU6IFtVTklUX1RFU1RfRklMRVNdYCB3YXMgbWVyZWx5IHJlZHVuZGFudCBcdTIwMTQgdGhlIGB1bml0LXRlc3RzYCBwcm9qZWN0IGFscmVhZHkgZGVjbGFyZXNcbiAgICAgICAqIHRoYXQgc2FtZSBnbG9iIGZvciBpdHNlbGYuIFVuZGVyIHZpdGVzdCA1IHRoZSBwcm9qZWN0IGdsb2Igbm8gbG9uZ2VyIHJlcGxhY2VzIGl0LCBhbmRcbiAgICAgICAqIGBzcmMvKipcXC8qLnRlc3QudHNgIGlzIGEgc3VwZXJzZXQgb2YgZXZlcnkgcHJvamVjdCBnbG9iLCBzbyBFVkVSWSBwcm9qZWN0IGNvbGxlY3RlZCBFVkVSWSB0ZXN0XG4gICAgICAgKiBmaWxlOiB1bml0IHN1aXRlcyByYW4gaW4gdGhlIENEUCBpbnRlZ3JhdGlvbiBlbnZpcm9ubWVudCBhbmQgZGllZCBvbiBgRmFpbGVkIHRvIHJlc29sdmUgZW50cnlcbiAgICAgICAqIGZvciBwYWNrYWdlIFwib2JzaWRpYW5cImAsIHRoZSBzY3JlZW5zaG90LWNhcHR1cmUgc3VpdGVzIHJhbiBhbmQgcmV3cm90ZSBjaGVja2VkLWluIFBOR3MsIGFuZCB0aGVcbiAgICAgICAqIGFuZHJvaWQgLyBkZW1vLXZhdWx0IHN1aXRlcyByYW4gdW5kZXIgdGhlIGRlc2t0b3AgdHJhbnNwb3J0LiBNZWFzdXJlZCBpbiBhIGNvbnN1bWVyOiB0aGUgZGVza3RvcFxuICAgICAgICogcHJvamVjdCBjb2xsZWN0ZWQgMjI3IGZpbGVzIGluc3RlYWQgb2YgaXRzIG93biAxMDUsIGFuZCBkZWxldGluZyB0aGlzIG9uZSBsaW5lIHJlc3RvcmVkIDEwNS5cbiAgICAgICAqL1xuICAgICAgcGFzc1dpdGhOb1Rlc3RzOiB0cnVlLFxuICAgICAgcHJvamVjdHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJlc29sdmU6IHVuaXRUZXN0c1Jlc29sdmUsXG4gICAgICAgICAgdGVzdDogdW5pdFRlc3RzXG4gICAgICAgIH0sXG4gICAgICAgIHsgdGVzdDogY29udGV4dC5ub0FwcCB9LFxuICAgICAgICB7IHRlc3Q6IGNvbnRleHQuZGVza3RvcCB9LFxuICAgICAgICB7IHRlc3Q6IGNvbnRleHQuZGVza3RvcFBlcmZvcm1hbmNlIH0sXG4gICAgICAgIHsgdGVzdDogY29udGV4dC5hbmRyb2lkIH0sXG4gICAgICAgIC4uLmdsb2JhbFN0dWJzUHJvamVjdHMsXG4gICAgICAgIC4uLmN1c3RvbVByb2plY3RzXG4gICAgICBdLFxuICAgICAgcmVwb3J0ZXJzOiBbLi4uY29udGV4dC5yZXBvcnRlcnNdXG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZWZ1c2VzIGEgY3VzdG9tIHByb2plY3QgdGhhdCBkZWNsYXJlcyBubyBgaW5jbHVkZWAgZ2xvYiBvZiBpdHMgb3duLlxuICpcbiAqIFRoZSByb290IHNlY3Rpb24gZGVsaWJlcmF0ZWx5IGRlY2xhcmVzIG5vIGBpbmNsdWRlYCAoc2VlIHRoZSBjb21tZW50IG9uIGl0IGFib3ZlKSwgc28gYSBwcm9qZWN0IHRoYXRcbiAqIGRlY2xhcmVzIG5vbmUgZmFsbHMgYmFjayB0byB2aXRlc3QncyBvd24gZGVmYXVsdCBnbG9iIFx1MjAxNCB3aGljaCBtYXRjaGVzIEVWRVJZIHRlc3QgZmlsZSBpbiB0aGUgcmVwby5cbiAqIFRoYXQgcHJvamVjdCB0aGVuIHJ1bnMgdGhlIHVuaXQgc3VpdGVzIGluIGFuIE9ic2lkaWFuIGVudmlyb25tZW50LCB0aGUgYW5kcm9pZCBzdWl0ZXMgdW5kZXIgdGhlXG4gKiBkZXNrdG9wIHRyYW5zcG9ydCwgYW5kIHRoZSBgKi1jYXB0dXJlLmAgc2NyZWVuc2hvdCBzdWl0ZXMgdGhhdCBvcGVuIGEgd2luZG93IGFuZCByZXdyaXRlIGNoZWNrZWQtaW5cbiAqIFBOR3MuIEEgd2lkZW5lZCBwcm9qZWN0IGlzIHNpbGVudDogaXQgcGFzc2VzLCBzbG93bHksIGhhdmluZyBkb25lIGFsbCBvZiB0aGF0LlxuICpcbiAqIE9ubHkgYSBwbGFpbiBpbmxpbmUgY29uZmlndXJhdGlvbiBjYW4gYmUgY2hlY2tlZCBoZXJlLiBBIHByb2plY3QgbmFtZWQgYnkgYSBnbG9iIHN0cmluZywgYnVpbHQgYnkgYVxuICogZnVuY3Rpb24sIG9yIGF3YWl0ZWQgZnJvbSBhIHByb21pc2UgaXMgcmVzb2x2ZWQgYnkgdml0ZXN0IGl0c2VsZiwgb3V0IG9mIHRoaXMgZnVuY3Rpb24ncyByZWFjaC5cbiAqXG4gKiBAcGFyYW0gY3VzdG9tUHJvamVjdHMgLSBUaGUgcHJvamVjdHMgcmV0dXJuZWQgYnkge0BsaW5rIERlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnT3B0aW9ucy5jdXN0b21Qcm9qZWN0c30uXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQ3VzdG9tUHJvamVjdHMoY3VzdG9tUHJvamVjdHM6IFRlc3RQcm9qZWN0Q29uZmlndXJhdGlvbltdKTogdm9pZCB7XG4gIGZvciAoY29uc3QgW2luZGV4LCBjdXN0b21Qcm9qZWN0XSBvZiBjdXN0b21Qcm9qZWN0cy5lbnRyaWVzKCkpIHtcbiAgICBpZiAodHlwZW9mIGN1c3RvbVByb2plY3QgIT09ICdvYmplY3QnIHx8ICd0aGVuJyBpbiBjdXN0b21Qcm9qZWN0KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmNsdWRlID0gY3VzdG9tUHJvamVjdC50ZXN0Py5pbmNsdWRlO1xuXG4gICAgaWYgKGluY2x1ZGUgJiYgaW5jbHVkZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBuYW1lID0gY3VzdG9tUHJvamVjdC50ZXN0Py5uYW1lO1xuICAgIGNvbnN0IGxhYmVsID0gdHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnID8gbmFtZSA6IG5hbWU/LmxhYmVsID8/IGBhdCBpbmRleCAke1N0cmluZyhpbmRleCl9YDtcblxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBUaGUgY3VzdG9tIHZpdGVzdCBwcm9qZWN0ICR7bGFiZWx9IGRlY2xhcmVzIG5vIFxcYHRlc3QuaW5jbHVkZVxcYCwgc28gdml0ZXN0IGZhbGxzIGJhY2sgdG8gaXRzIGRlZmF1bHQgZ2xvYiBhbmQgdGhlIHByb2plY3QgY29sbGVjdHMgRVZFUlkgdGVzdCBmaWxlIFx1MjAxNCBpbmNsdWRpbmcgdGhlIFxcYCotY2FwdHVyZS5cXGAgc3VpdGVzIHRoYXQgcmV3cml0ZSBjaGVja2VkLWluIHNjcmVlbnNob3RzLiBEZWNsYXJlIGFuIGV4cGxpY2l0IFxcYGluY2x1ZGVcXGAsIG9yIHNwcmVhZCBhIHN0YW5kYXJkIHByb2plY3QgKFxcYC4uLmNvbnRleHQuZGVza3RvcFxcYCkgYW5kIG92ZXJyaWRlIGl0LmBcbiAgICApO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBeUJBLDJC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
465
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvdml0ZXN0LWNvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogU2hhcmVkIHZpdGVzdCBjb25maWd1cmF0aW9uIGZvciBPYnNpZGlhbiBwbHVnaW5zLlxuICpcbiAqIEV2ZXJ5IHBsdWdpbiBpbiB0aGUgd29ya3NwYWNlIGRlY2xhcmVzIHRoZSBzYW1lIGZpdmUgdml0ZXN0IHByb2plY3RzIOKAlCBgdW5pdC10ZXN0c2AgcGx1cyB0aGVcbiAqIGBpbnRlZ3JhdGlvbi10ZXN0czp7bm8tYXBwLGRlc2t0b3AsZGVza3RvcC1wZXJmb3JtYW5jZSxhbmRyb2lkfWAgZmFtaWx5IOKAlCB3aXRoIHRoZSBzYW1lIHRpbWVvdXRzLFxuICogYHNldHVwRmlsZXNgLCBhbmQgYGdsb2JhbFNldHVwYCB3aXJpbmcuIE1haW50YWluaW5nIHRoYXQgcGVyIHJlcG8gbWVhbnMgYSBjb252ZW50aW9uIGNoYW5nZSBjb3N0cyBvbmVcbiAqIG5lYXItaWRlbnRpY2FsIGVkaXQgcGVyIHBsdWdpbiwgYW5kIGFueSByZXBvIHRoYXQgaXMgbWlzc2VkIGRyaWZ0cyBzaWxlbnRseS4gVGhpcyBtb2R1bGUgb3ducyB0aGF0XG4gKiBjb25maWd1cmF0aW9uIG9uY2UsIHNvIGEgcGx1Z2luJ3MgYHNjcmlwdHMvdml0ZXN0LWNvbmZpZy50c2AgY29sbGFwc2VzIHRvIGEgc2luZ2xlIGNhbGwuXG4gKlxuICogVGhlIHNlYW0gbWlycm9ycyB0aGUgRVNMaW50IG9uZSAoYGRlZmluZUVzbGludENvbmZpZ3NgKTogdGhlIGZhY3RvcnkgYnVpbGRzIGEgY29udGV4dCBob2xkaW5nIHRoZSBzdGFuZGFyZCBwcm9qZWN0cywgdGhlIGNhbGxlciBlZGl0c1xuICogaXQgaW4gcGxhY2UgdGhyb3VnaCB7QGxpbmsgRGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdPcHRpb25zLmVkaXRDb250ZXh0fSwgYW5kIGFwcGVuZHMgYW55XG4gKiBwcm9qZWN0IHRoZSBiYXNlIGRvZXMgbm90IGtub3cgYWJvdXQgdGhyb3VnaFxuICoge0BsaW5rIERlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnT3B0aW9ucy5jdXN0b21Qcm9qZWN0c30uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBWaXRlc3RSZXBvcnRlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L3Rlc3QtcnVubmVycy92aXRlc3QtY29uZmlnJztcbmltcG9ydCB0eXBlIHtcbiAgVGVzdFByb2plY3RDb25maWd1cmF0aW9uLFxuICBUZXN0UHJvamVjdElubGluZUNvbmZpZ3VyYXRpb24sXG4gIFZpdGVVc2VyQ29uZmlnXG59IGZyb20gJ3ZpdGVzdC9jb25maWcnO1xuXG5pbXBvcnQge1xuICBERUZBVUxUX1ZJVEVTVF9SRVBPUlRFUlMsXG4gIERFRkFVTFRfVklURVNUX1RFU1RfRVhDTFVERVxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC90ZXN0LXJ1bm5lcnMvdml0ZXN0LWNvbmZpZyc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IHsgREVGQVVMVF9FVkFMX0NBUF9JTl9NSUxMSVNFQ09ORFMgfSBmcm9tICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nJztcbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gJ3ZpdGVzdC9jb25maWcnO1xuXG5pbXBvcnQge1xuICBERVNLVE9QX1BFUkZPUk1BTkNFX1RFU1RfRklMRV9TVUZGSVgsXG4gIFBFUkZPUk1BTkNFX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EU1xufSBmcm9tICcuL3BlcmZvcm1hbmNlLWV2YWwtY2FwLnRzJztcblxuLyoqXG4gKiBUaGUgYHRlc3RgIHNlY3Rpb24gb2YgYSBzaW5nbGUgdml0ZXN0IHByb2plY3QgZW50cnkuXG4gKi9cbmV4cG9ydCB0eXBlIE9ic2lkaWFuUGx1Z2luVml0ZXN0UHJvamVjdENvbmZpZyA9IE5vbk51bGxhYmxlPFRlc3RQcm9qZWN0SW5saW5lQ29uZmlndXJhdGlvblsndGVzdCddPjtcblxuLyoqXG4gKiBPbmUgZW50cnkgb2YgYSB2aXRlc3QgYHJlcG9ydGVyc2AgbGlzdDogdGhlIG5hbWUgb2YgYSBidWlsdC1pbiByZXBvcnRlciBvciBhIHJlcG9ydGVyIGluc3RhbmNlLiBUaGUgc2FtZSBzaGFwZSBhc1xuICogdGhlIGxpYnJhcnkgY29uZmlndXJhdGlvbidzIHtAbGluayBWaXRlc3RSZXBvcnRlcn0uXG4gKi9cbmV4cG9ydCB0eXBlIE9ic2lkaWFuUGx1Z2luVml0ZXN0UmVwb3J0ZXIgPSBWaXRlc3RSZXBvcnRlcjtcblxuLy8gVGhlIGxpYnJhcnkgY29uZmlndXJhdGlvbidzIHBpbm5lZCByZXBvcnRlcnMsIHJlLWV4cG9ydGVkIHNvIGEgcGx1Z2luIHJlcG8gdGhhdCBhc3NlbWJsZXMgaXRzIHZpdGVzdCBwcm9qZWN0cyBieVxuLy8gaGFuZCBuZWVkcyBvbmx5IHRoaXMgcGFja2FnZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1leHBvcnQtZnJvbSAtLSBUaGUgYmluZGluZyBpcyBhbHNvIHVzZWQgYmVsb3csIHNvIGl0IGlzIGltcG9ydGVkIG9uY2UuXG5leHBvcnQgeyBERUZBVUxUX1ZJVEVTVF9SRVBPUlRFUlMgfTtcblxuLypcbiAqIEhvdyBtdWNoIGEgcHJvamVjdCdzIHBlci10ZXN0IGJ1ZGdldCBjbGVhcnMgYERFRkFVTFRfRVZBTF9DQVBfSU5fTUlMTElTRUNPTkRTYCBieSDigJQgdGhlIHBlci1ldmFsIGNhcFxuICogQk9USCB0cmFuc3BvcnRzIGVuZm9yY2UsIGltcG9ydGVkIGZyb20gYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmdgIHJhdGhlciB0aGFuIHJlc3RhdGVkIHNvIHRoZVxuICogYnVkZ2V0cyBiZWxvdyBhbmQgdGhlIGNhcCB0aGV5IGFyZSBzaXplZCBhZ2FpbnN0IGNhbiBuZXZlciBiZSB0d28gbnVtYmVycy4gT25lIGBldmFsSW5PYnNpZGlhbmAgY2xvc3VyZVxuICogZ2V0cyB0aGF0IG11Y2ggYW5kIG5vIG1vcmUsIG1lYXN1cmVkIGZyb20gdGhlIG1vbWVudCB0aGUgdHJhbnNwb3J0IGRpc3BhdGNoZXMgaXQ7IG91dHJ1bm5pbmcgaXQgcmFpc2VzXG4gKiBgRXZhbENhcEV4Y2VlZGVkRXJyb3JgLCB3aGljaCBuYW1lcyB0aGUgY2FwLCB0aGUgdHJhbnNwb3J0IHRoYXQgZW5mb3JjZWQgaXQsIGFuZCB0aGUgYHBvbGxJbk9ic2lkaWFuYFxuICogcmVtZWR5IOKAlCB0aGUgb25lIG1lc3NhZ2UgdGhhdCB0dXJucyBcInRoaXMgdGltZWQgb3V0XCIgaW50byBcInRoaXMgY2xvc3VyZSBhc2tlZCBmb3IgbW9yZSB0aW1lIHRoYW5cbiAqIGV4aXN0c1wiLlxuICpcbiAqIEEgdGVzdCBidWRnZXQgRVFVQUwgdG8gdGhlIGNhcCBtYWtlcyB0aGUgY2FwJ3Mgb3duIGRpYWdub3NpcyB1bnJlYWNoYWJsZTogdml0ZXN0IHN0YXJ0cyBpdHMgY2xvY2sgYXRcbiAqIHRoZSB0b3Agb2YgdGhlIHRlc3QgYW5kIHRoZSB0cmFuc3BvcnQgc3RhcnRzIGl0cyBvd24gb25seSBvbmNlIHRoZSBldmFsIGlzIGRpc3BhdGNoZWQsIHNvIHZpdGVzdCBhbHdheXNcbiAqIHdpbnMgYnkgdGhlIGZldyBtaWxsaXNlY29uZHMgaW4gYmV0d2VlbiBhbmQgcmVwb3J0cyBpdHMgYW5vbnltb3VzIGBUZXN0IHRpbWVkIG91dCBpbiAzMDAwMG1zYC4gVGhhdCBpc1xuICogbm90IGEgaHlwb3RoZXRpY2FsIOKAlCBpdCBpcyBob3cgZXZlcnkgb3Zlci1jYXAgZGVza3RvcCBldmFsIGhhZCBzdXJmYWNlZCBoZXJlIHVudGlsIHRoaXMgbWFyZ2luIGV4aXN0ZWQsXG4gKiBhbmQgb25lIG9mIHRoZW0gYWJvcnRlZCBhbiBvdGhlcndpc2UgZ3JlZW4gcmVsZWFzZSBmaXZlIG1pbnV0ZXMgaW50byB0aGUgcHJlZmxpZ2h0IHdpdGggbm8gaW5kaWNhdGlvblxuICogb2Ygd2hpY2ggd2FpdCB3YXMgdG8gYmxhbWUgKG1lYXN1cmVkIDIwMjYtMDktMTU6IDMwMDQ0IG1zIGJ1cm5lZCBhZ2FpbnN0IGEgMzAwMDAgbXMgYnVkZ2V0KS5cbiAqXG4gKiBUaGUgbWFyZ2luIGhhcyB0byBjb3ZlciBldmVyeXRoaW5nIGEgdGVzdCBkb2VzIEJFRk9SRSB0aGUgZXZhbCB0aGF0IGhhbmdzIOKAlCBlYXJsaWVyIG9uZXMgaW5jbHVkZWQg4oCUXG4gKiBzbyBpdCBpcyBhIGhlYWx0aHkgZnJhY3Rpb24gb2YgdGhlIGNhcCByYXRoZXIgdGhhbiBhIGNvdXBsZSBvZiBzZWNvbmRzLlxuICovXG5jb25zdCBUUkFOU1BPUlRfRVZBTF9DQVBfTUFSR0lOX0lOX01JTExJU0VDT05EUyA9IDE1XzAwMDtcblxuLypcbiAqIEFuZHJvaWQgd2FzIG5ldmVyIGFmZmVjdGVkLCBhbmQgdGhhdCBhc3ltbWV0cnkgaXMgdGhlIGV2aWRlbmNlIHRoZSBkZXNrdG9wIGVxdWFsaXR5IHdhcyBhbiBvdmVyc2lnaHRcbiAqIHJhdGhlciB0aGFuIGEgZGVjaXNpb246IGl0cyBidWRnZXQgaGFzIGFsd2F5cyBiZWVuIGRvdWJsZSB0aGUgQXBwaXVtIGNhcCwgc28gYW4gb3Zlci1jYXAgbW9iaWxlIGNsb3N1cmVcbiAqIGhhcyBhbHdheXMgYmVlbiBhYmxlIHRvIHJlcG9ydCBpdHNlbGYuXG4gKi9cbmNvbnN0IEFORFJPSURfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSA2MF8wMDA7XG5jb25zdCBIT09LX1RJTUVPVVRfTVVMVElQTElFUiA9IDQ7XG5cbi8qXG4gKiBUaGUgcGVyZm9ybWFuY2UgcHJvamVjdCdzIGJ1ZGdldCBjbGVhcnMgaXRzIG93biBwZXItZXZhbCBjYXAgYnkgdGhlIHNhbWUgbWFyZ2luLCBmb3IgdGhlIHNhbWUgcmVhc29uXG4gKiB0aGUgcmVndWxhciBidWRnZXQgY2xlYXJzIHRoZSB0cmFuc3BvcnQgZGVmYXVsdDogYW4gZXF1YWwgYnVkZ2V0IGxldHMgdml0ZXN0J3MgYW5vbnltb3VzIHRpbWVvdXQgd2luXG4gKiB0aGUgcmFjZSBhZ2FpbnN0IHRoZSBjYXAncyBvd24gYEV2YWxDYXBFeGNlZWRlZEVycm9yYC5cbiAqL1xuY29uc3QgUEVSRk9STUFOQ0VfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSBQRVJGT1JNQU5DRV9FVkFMX0NBUF9JTl9NSUxMSVNFQ09ORFMgKyBUUkFOU1BPUlRfRVZBTF9DQVBfTUFSR0lOX0lOX01JTExJU0VDT05EUztcblxuLyoqXG4gKiBUaGUgcGVyLXRlc3QgYnVkZ2V0IG9mIHRoZSByZWd1bGFyIGludGVncmF0aW9uIHByb2plY3RzLCBpbiBtaWxsaXNlY29uZHMuXG4gKlxuICogRXhwb3J0ZWQgYmVjYXVzZSBhIHJlcG8gdGhhdCBhc3NlbWJsZXMgaXRzIHZpdGVzdCBwcm9qZWN0cyBieSBoYW5kIGluc3RlYWQgb2YgdGhyb3VnaFxuICoge0BsaW5rIGRlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnfSBzdGlsbCBuZWVkcyB0aGUgc2FtZSByZWxhdGlvbnNoaXAgdG8gdGhlIHBlci1ldmFsIGNhcCwgYW5kXG4gKiByZXN0YXRpbmcgdGhlIG51bWJlciB0aGVyZSBpcyBob3cgdGhlIHR3byBkcmlmdCBhcGFydC5cbiAqL1xuZXhwb3J0IGNvbnN0IElOVEVHUkFUSU9OX1RFU1RfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSBERUZBVUxUX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EUyArIFRSQU5TUE9SVF9FVkFMX0NBUF9NQVJHSU5fSU5fTUlMTElTRUNPTkRTO1xuXG5jb25zdCBBTkRST0lEX1RFU1RfRklMRVMgPSAnc3JjLyoqLyouYW5kcm9pZC5pbnRlZ3JhdGlvbi50ZXN0LnRzJztcbmNvbnN0IENST1NTX1BMQVRGT1JNX1RFU1RfRklMRVMgPSAnc3JjLyoqLyouY3Jvc3MtcGxhdGZvcm0uaW50ZWdyYXRpb24udGVzdC50cyc7XG5jb25zdCBERUNMQVJBVElPTl9GSUxFUyA9ICdzcmMvKiovKi5kLnRzJztcbmNvbnN0IERFU0tUT1BfUEVSRk9STUFOQ0VfVEVTVF9GSUxFUyA9IGBzcmMvKiovKiR7REVTS1RPUF9QRVJGT1JNQU5DRV9URVNUX0ZJTEVfU1VGRklYfWA7XG5jb25zdCBERVNLVE9QX1RFU1RfRklMRVMgPSAnc3JjLyoqLyouZGVza3RvcC5pbnRlZ3JhdGlvbi50ZXN0LnRzJztcbmNvbnN0IElOVEVHUkFUSU9OX1RFU1RfRklMRVMgPSAnc3JjLyoqLyouaW50ZWdyYXRpb24udGVzdC50cyc7XG5jb25zdCBOT19BUFBfVEVTVF9GSUxFUyA9ICdzcmMvKiovKi5uby1hcHAuaW50ZWdyYXRpb24udGVzdC50cyc7XG5jb25zdCBVTklUX1RFU1RfRklMRVMgPSAnc3JjLyoqLyoudGVzdC50cyc7XG5jb25zdCBVTklUX1RFU1RfR0xPQkFMX1NUVUJTX1BST0pFQ1RfTkFNRSA9ICd1bml0LXRlc3RzOmdsb2JhbC1zdHVicyc7XG5cbi8qXG4gKiBSdW5zIGJlZm9yZSB0aGUgaGFybmVzcydzIG93biBzZXR1cCBpbiBldmVyeSBwcm9qZWN0IHRoYXQgbG9hZHMgdGhlIHBsdWdpbiBmcm9tIGBkaXN0L2J1aWxkL21haW4uanNgLFxuICogYW5kIHJlZnVzZXMgdG8gc3RhcnQgd2hlbiB0aGF0IGJ1aWxkIGlzIG1pc3Npbmcgb3Igb2xkZXIgdGhhbiB0aGUgc291cmNlLiBBIHBsdWdpbidzXG4gKiBgdGVzdDppbnRlZ3JhdGlvbipgIHNjcmlwdHMgY2FsbCB2aXRlc3QgZGlyZWN0bHkgYW5kIG5ldmVyIGJ1aWxkLCBzbyB3aXRob3V0IGl0IGEgc2Vzc2lvbiB0aGF0IGVkaXRzXG4gKiBgc3JjL2AgYW5kIHJ1bnMgb25lIGludGVncmF0aW9uIHByb2plY3QgdGVzdHMgdGhlIHByZXZpb3VzIGJ1aWxkIGFuZCByZWFkcyB0aGUgcmVzdWx0IGFzIGEgZGVmZWN0LlxuICovXG5jb25zdCBTVEFMRV9CVUlMRF9HTE9CQUxfU0VUVVAgPSAnQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0L3Rlc3QtcnVubmVycy9zdGFsZS1idWlsZC1nbG9iYWwtc2V0dXAnO1xuXG5jb25zdCBPQlNJRElBTl9WRVJTSU9OX0VOVl9WQVJJQUJMRV9OQU1FID0gJ09CU0lESUFOX1ZFUlNJT04nO1xuY29uc3QgU0hBUkVEX0VYQ0xVREUgPSBERUZBVUxUX1ZJVEVTVF9URVNUX0VYQ0xVREU7XG5cbi8qKlxuICogVGhlIG9wdGlvbnMgZm9yIGRlZmluaW5nIGEgcGx1Z2luJ3Mgdml0ZXN0IGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBidWlsZHMgcHJvamVjdHMgdGhlIGJhc2UgY29uZmlndXJhdGlvbiBkb2VzIG5vdCBrbm93IGFib3V0LCBzdWNoIGFzIGEgcGx1Z2luJ3Mgb3duXG4gICAqIGBpbnRlZ3JhdGlvbi10ZXN0czpkZW1vLXZhdWx0YCBwcm9qZWN0LiBUaGUgcmV0dXJuZWQgcHJvamVjdHMgYXJlIGFwcGVuZGVkIGFmdGVyIHRoZSBzdGFuZGFyZCBmaXZlLlxuICAgKlxuICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSB2aXRlc3QgY29uZmlndXJhdGlvbiBjb250ZXh0LlxuICAgKiBAcmV0dXJucyBUaGUgZXh0cmEgcHJvamVjdHMuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21Qcm9qZWN0cz86IChjb250ZXh0OiBPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZ0NvbnRleHQpID0+IFRlc3RQcm9qZWN0Q29uZmlndXJhdGlvbltdO1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgZWRpdHMgdGhlIHZpdGVzdCBjb25maWd1cmF0aW9uIGNvbnRleHQgYmVmb3JlIGl0IGlzIGFzc2VtYmxlZCBpbnRvIGEgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgdml0ZXN0IGNvbmZpZ3VyYXRpb24gY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGVkaXRDb250ZXh0PzogKGNvbnRleHQ6IE9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnQ29udGV4dCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgY29udGV4dCBmb3IgZGVmaW5pbmcgYSBwbHVnaW4ncyB2aXRlc3QgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBFdmVyeSBtZW1iZXIgaXMgbGl2ZTogdGhlIGFycmF5cyBhbmQgb2JqZWN0cyBpdCBleHBvc2VzIGFyZSB0aGUgdmVyeSBvbmVzIHRoZSBhc3NlbWJsZWQgY29uZmlndXJhdGlvblxuICogaXMgYnVpbHQgZnJvbSwgc28gZWRpdGluZyB0aGVtIGluIHBsYWNlIHRocm91Z2hcbiAqIHtAbGluayBEZWZpbmVPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZ09wdGlvbnMuZWRpdENvbnRleHR9IGlzIHdoYXQgY3VzdG9taXplcyB0aGUgcmVzdWx0LlxuICovXG5leHBvcnQgY2xhc3MgT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBgaW50ZWdyYXRpb24tdGVzdHM6YW5kcm9pZGAgcHJvamVjdCwgcnVubmluZyB0aGUgbW9iaWxlLW9ubHkgYW5kIGNyb3NzLXBsYXRmb3JtIHN1aXRlcyBhZ2FpbnN0IGFuXG4gICAqIEFuZHJvaWQgZW11bGF0b3IgdGhyb3VnaCBBcHBpdW0uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYW5kcm9pZDogT2JzaWRpYW5QbHVnaW5WaXRlc3RQcm9qZWN0Q29uZmlnID0ge1xuICAgIGVudmlyb25tZW50OiAnbm9kZScsXG4gICAgZW52aXJvbm1lbnRPcHRpb25zOiB7XG4gICAgICBvYnNpZGlhblRyYW5zcG9ydDoge1xuICAgICAgICBhcHBpdW1Vcmw6ICdodHRwOi8vbG9jYWxob3N0OjQ3MjMnLFxuICAgICAgICBhdmROYW1lOiAnb2JzaWRpYW5fdGVzdCcsXG4gICAgICAgIHR5cGU6ICdvYnNpZGlhbi1hbmRyb2lkLWFwcGl1bSdcbiAgICAgIH1cbiAgICB9LFxuICAgIGZpbGVQYXJhbGxlbGlzbTogZmFsc2UsXG4gICAgZ2xvYmFsU2V0dXA6IFtTVEFMRV9CVUlMRF9HTE9CQUxfU0VUVVAsICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL3ZpdGVzdC1nbG9iYWwtc2V0dXAtcGx1Z2luJ10sXG4gICAgaG9va1RpbWVvdXQ6IEFORFJPSURfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgKiBIT09LX1RJTUVPVVRfTVVMVElQTElFUixcbiAgICBpbmNsdWRlOiBbQU5EUk9JRF9URVNUX0ZJTEVTLCBDUk9TU19QTEFURk9STV9URVNUX0ZJTEVTXSxcbiAgICBuYW1lOiAnaW50ZWdyYXRpb24tdGVzdHM6YW5kcm9pZCcsXG4gICAgc2V0dXBGaWxlczogWydvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL3ZpdGVzdC1zZXR1cCddLFxuICAgIHRlc3RUaW1lb3V0OiBBTkRST0lEX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTXG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBwZXItdGVzdCBidWRnZXQgb2YgdGhlIEFuZHJvaWQgaW50ZWdyYXRpb24gcHJvamVjdCwgaW4gbWlsbGlzZWNvbmRzLiBCb290aW5nIGFuIGVtdWxhdG9yIGFuZFxuICAgKiBkcml2aW5nIGl0IG92ZXIgQXBwaXVtIGlzIHNsb3dlciB0aGFuIHRoZSBkZXNrdG9wIHBhdGgsIGhlbmNlIGl0cyBvd24gY29uc3RhbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA2MDAwMGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbmRyb2lkVGltZW91dEluTWlsbGlzZWNvbmRzID0gQU5EUk9JRF9USU1FT1VUX0lOX01JTExJU0VDT05EUztcblxuICAvKipcbiAgICogVGhlIHBlci10ZXN0IGJ1ZGdldCBvZiB0aGUgcmVndWxhciBpbnRlZ3JhdGlvbiBwcm9qZWN0cywgaW4gbWlsbGlzZWNvbmRzLlxuICAgKlxuICAgKiBJdCBkZWxpYmVyYXRlbHkgQ0xFQVJTIHRoZSB0cmFuc3BvcnRzJyBwZXItZXZhbCBjYXAgcmF0aGVyIHRoYW4gbWF0Y2hpbmcgaXQsIHNvIHRoYXQgYSBjbG9zdXJlIHdoaWNoXG4gICAqIG91dHJ1bnMgdGhlIGNhcCBmYWlscyB3aXRoIHRoZSBoYXJuZXNzJ3MgYEV2YWxDYXBFeGNlZWRlZEVycm9yYCDigJQgbmFtaW5nIHRoZSBjYXAgYW5kIHRoZSByZW1lZHkg4oCUXG4gICAqIGluc3RlYWQgb2Ygd2l0aCB2aXRlc3QncyBhbm9ueW1vdXMgdGltZW91dC4gTG93ZXJpbmcgaXQgdG8gdGhlIGNhcCByZXN0b3JlcyB0aGF0IGJsaW5kIHNwb3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA0NTAwMGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBiaWdUaW1lb3V0SW5NaWxsaXNlY29uZHMgPSBJTlRFR1JBVElPTl9URVNUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTO1xuXG4gIC8qKlxuICAgKiBUaGUgY292ZXJhZ2UgYGV4Y2x1ZGVgIGdsb2JzLiBQdXNoIG9udG8gaXQgdG8gZHJvcCBtb3JlIGZpbGVzIGZyb20gdGhlIGNvdmVyYWdlIHJlcG9ydC5cbiAgICpcbiAgICogRGVjbGFyYXRpb24gZmlsZXMgYXJlIGV4Y2x1ZGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSB0aGUgY292ZXJhZ2UgYGluY2x1ZGVgIGJlbG93IGlzIGBzcmMvKipcXC8qLnRzYCxcbiAgICogd2hpY2ggYSBgLmQudHNgIG1hdGNoZXMuIEEgZGVjbGFyYXRpb24gZmlsZSBlbWl0cyBubyBydW50aW1lIGNvZGUsIHNvIGl0IHJlcG9ydHMgMCUgYW5kIG5vIHRlc3QgY2FuXG4gICAqIGV2ZXIgcmFpc2UgaXQg4oCUIGEgcGx1Z2luIHRoYXQgZ3Jvd3Mgb25lIHVuZGVyIGBzcmMvYCBzaWxlbnRseSBsb3NlcyBpdHMgMTAwJSBnYXRlLCBhbmQgdGhlIHVzdWFsXG4gICAqIHJlbWVkeSBvZiBhbiBpbmxpbmUgYHY4IGlnbm9yZWAgY29tbWVudCBkb2VzIG5vdCBhcHBseSB0byBhIHR5cGUtb25seSBmaWxlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvdmVyYWdlRXhjbHVkZTogc3RyaW5nW10gPSBbVU5JVF9URVNUX0ZJTEVTLCBERUNMQVJBVElPTl9GSUxFU107XG5cbiAgLyoqXG4gICAqIFRoZSBgaW50ZWdyYXRpb24tdGVzdHM6ZGVza3RvcGAgcHJvamVjdCwgcnVubmluZyB0aGUgZGVza3RvcC1vbmx5IGFuZCBjcm9zcy1wbGF0Zm9ybSBzdWl0ZXMgYWdhaW5zdCBhXG4gICAqIHJlYWwgZGVza3RvcCBPYnNpZGlhbiBvdmVyIENEUC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXNrdG9wOiBPYnNpZGlhblBsdWdpblZpdGVzdFByb2plY3RDb25maWcgPSB7XG4gICAgZW52aXJvbm1lbnQ6ICdub2RlJyxcbiAgICBmaWxlUGFyYWxsZWxpc206IGZhbHNlLFxuICAgIGdsb2JhbFNldHVwOiBbU1RBTEVfQlVJTERfR0xPQkFMX1NFVFVQLCAnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3QtZ2xvYmFsLXNldHVwLXBsdWdpbiddLFxuICAgIGhvb2tUaW1lb3V0OiBJTlRFR1JBVElPTl9URVNUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTICogSE9PS19USU1FT1VUX01VTFRJUExJRVIsXG4gICAgaW5jbHVkZTogW0RFU0tUT1BfVEVTVF9GSUxFUywgQ1JPU1NfUExBVEZPUk1fVEVTVF9GSUxFU10sXG4gICAgbmFtZTogJ2ludGVncmF0aW9uLXRlc3RzOmRlc2t0b3AnLFxuICAgIHNldHVwRmlsZXM6IFsnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3Qtc2V0dXAnXSxcbiAgICB0ZXN0VGltZW91dDogSU5URUdSQVRJT05fVEVTVF9USU1FT1VUX0lOX01JTExJU0VDT05EU1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgYGludGVncmF0aW9uLXRlc3RzOmRlc2t0b3AtcGVyZm9ybWFuY2VgIHByb2plY3QsIHJ1bm5pbmcgdGhlIGF0LXNjYWxlIHN1aXRlcy4gSXQgaXMgZGVjbGFyZWQgZm9yXG4gICAqIGV2ZXJ5IHBsdWdpbiBldmVuIHdoZW4gdGhlcmUgaXMgbm8gc3VjaCBzdWl0ZSB5ZXQg4oCUIGBwYXNzV2l0aE5vVGVzdHNgIG1ha2VzIGFuIGVtcHR5IHByb2plY3QgZnJlZSxcbiAgICogYW5kIHRoZSBtYXRjaGluZyBgdGVzdDppbnRlZ3JhdGlvbjpkZXNrdG9wOnBlcmZvcm1hbmNlYCBzY3JpcHQgZXhpc3RzIGluIGV2ZXJ5IHBsdWdpbiBidWlsdCBvbiB0aGlzIGxpYnJhcnkuXG4gICAqXG4gICAqIEEgcGx1Z2luJ3MgYHRlc3Q6aW50ZWdyYXRpb25gIGFnZ3JlZ2F0ZSBsZWF2ZXMgdGhpcyBwcm9qZWN0IG91dCBvbiBwdXJwb3NlLCBhbmQgaXQgc3RheXMgb3V0IGV2ZW4gb24gYVxuICAgKiBtYWNoaW5lIHdpdGggYSBkZXNrdG9wIE9ic2lkaWFuIHNldCB1cC4gVGhlIHJlYXNvbiBpcyB0aGUgZml4dHVyZSByYXRoZXIgdGhhbiB0aGUgY29zdDogYSBwZXJmIHN1aXRlXG4gICAqIG5lZWRzIGl0cyBvd24gZ2VuZXJhdGVkLCBwb3B1bGF0ZWQgdmF1bHQsIHNpemVkIHRocm91Z2ggZW52IHZhcnMsIGFuZCB0aGUgYWdncmVnYXRlJ3Mgc21hbGwgdGVtcG9yYXJ5XG4gICAqIHZhdWx0IGlzIHRoZSB3cm9uZyBvbmUuIFRoZSA2MDAgcyBiZWxvdyBpcyBhIHRpbWVvdXQsIG5vdCBhIGR1cmF0aW9uIOKAlCBtZWFzdXJlZCBlbmQgdG8gZW5kLCBtb3N0IHBlcmZcbiAgICogc3VpdGVzIGZpbmlzaCBpbiBzZWNvbmRzLCBhbmQgb25seSBvbmUgdGhhdCBnZW5lcmF0ZXMgdGVucyBvZiB0aG91c2FuZHMgb2Ygbm90ZXMgdGFrZXMgbWludXRlcy5cbiAgICpcbiAgICogSXRzIENEUCB0cmFuc3BvcnQncyBwZXItZXZhbCBjYXAgaXMgcmFpc2VkIHRvIDYwMCBzIGFzIHdlbGwgKHRoZSBidWRnZXQgY2xlYXJzIGl0IGJ5IHRoZSB1c3VhbFxuICAgKiBtYXJnaW4pLCBiZWNhdXNlIGEgcGVyZiBzdWl0ZSdzIHdob2xlIG1lYXN1cmVtZW50IGlzIHR5cGljYWxseSBPTkUgbG9uZyBpbi1wYWdlIGV2YWx1YXRpb24sIHdoaWNoIHRoZVxuICAgKiB0cmFuc3BvcnQncyAzMCBzIGRlZmF1bHQga2lsbGVkIGFzIGEgYmFyZSBgQ0RQIGNvbW1hbmQgdGltZWQgb3V0IOKApiBSdW50aW1lLmV2YWx1YXRlYCBuYW1pbmcgbmVpdGhlciB0aGVcbiAgICogd2FpdCBub3IgdGhlIGFzc2VydGlvbi4gVGhyZWUgcGx1Z2lucyBoYWQgZWFjaCBoYW5kLXdyaXR0ZW4gdGhpcyByYWlzZSBpbiB0aGVpciBvd24gYGVkaXRDb250ZXh0YFxuICAgKiBiZWZvcmUgaXQgbW92ZWQgaGVyZS4gVW5saWtlIGEgcmFpc2VkIGRlc2t0b3AgY2FwLCB3aGljaCBpcyBhIGJhY2tzdG9wIHJhdGhlciB0aGFuIGEgYnVkZ2V0IGEgY2xvc3VyZVxuICAgKiBtYXkgc3BlbmQsIHRoaXMgb25lIElTIGEgYnVkZ2V0OiBgbm8tb3Zlci1jYXAtd2FpdC1pbi1ldmFsLWluLW9ic2lkaWFuYCByZWFkcyBpdCBmb3IgdGhlc2UgZmlsZXMgYW5kXG4gICAqIGZvciBubyBvdGhlci5cbiAgICpcbiAgICogTm8gcm91dGluZSBjb21tYW5kIHJ1bnMgdGhlbSwgYnV0IHNvbWV0aGluZyBkb2VzOiBhIHdlZWtseSBzd2VlcCBydW5zIGV2ZXJ5IHBsdWdpbidzXG4gICAqIGB0ZXN0OmludGVncmF0aW9uOmRlc2t0b3A6cGVyZm9ybWFuY2VgLCB3aGljaCBpcyBhbHNvIGhvdyB0byByZWFjaCB0aGVtIGJ5IGhhbmQuIEFkZGluZyB0aGVtIHRvIHRoYXRcbiAgICogYWdncmVnYXRlIGlzIGRyaWZ0LCBub3QgYSBnYXAgdG8gY2xvc2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVza3RvcFBlcmZvcm1hbmNlOiBPYnNpZGlhblBsdWdpblZpdGVzdFByb2plY3RDb25maWcgPSB7XG4gICAgZW52aXJvbm1lbnQ6ICdub2RlJyxcbiAgICBlbnZpcm9ubWVudE9wdGlvbnM6IHtcbiAgICAgIG9ic2lkaWFuVHJhbnNwb3J0OiB7XG4gICAgICAgIGNvbW1hbmRUaW1lb3V0SW5NaWxsaXNlY29uZHM6IFBFUkZPUk1BTkNFX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EUyxcbiAgICAgICAgdHlwZTogJ29ic2lkaWFuLWNkcCdcbiAgICAgIH1cbiAgICB9LFxuICAgIGZpbGVQYXJhbGxlbGlzbTogZmFsc2UsXG4gICAgZ2xvYmFsU2V0dXA6IFtTVEFMRV9CVUlMRF9HTE9CQUxfU0VUVVAsICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL3ZpdGVzdC1nbG9iYWwtc2V0dXAtcGx1Z2luJ10sXG4gICAgaG9va1RpbWVvdXQ6IFBFUkZPUk1BTkNFX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTLFxuICAgIGluY2x1ZGU6IFtERVNLVE9QX1BFUkZPUk1BTkNFX1RFU1RfRklMRVNdLFxuICAgIG5hbWU6ICdpbnRlZ3JhdGlvbi10ZXN0czpkZXNrdG9wLXBlcmZvcm1hbmNlJyxcbiAgICBzZXR1cEZpbGVzOiBbJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3Rpbmcvdml0ZXN0LXNldHVwJ10sXG4gICAgdGVzdFRpbWVvdXQ6IFBFUkZPUk1BTkNFX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTXG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSB1bml0IHRlc3QgZmlsZXMgdGhhdCByZWRlZmluZSBgd2luZG93YCwgYGRvY3VtZW50YCwgYGxvY2F0aW9uYCBvciBgdG9wYCwgd2hpY2ggdGhlIGB1bml0LXRlc3RzYFxuICAgKiBwcm9qZWN0J3MgVk0gcG9vbCBjYW5ub3QgcnVuLlxuICAgKlxuICAgKiBVbmRlciBgcG9vbDogJ3ZtVGhyZWFkcydgIHRob3NlIGZvdXIgYXJlIG5vbi1jb25maWd1cmFibGUgcHJvcGVydGllcyBvZiB0aGUgVk0gZ2xvYmFsLCBzb1xuICAgKiBgdmkuc3R1Ykdsb2JhbCgnd2luZG93Jywg4oCmKWAgb3IgYE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csICdsb2NhdGlvbicsIOKApilgIHRocm93c1xuICAgKiBgQ2Fubm90IHJlZGVmaW5lIHByb3BlcnR5YC4gVGhhdCBpcyBKUyBzZW1hbnRpY3MsIG5vdCBhIGJ1ZyB0byByb3V0ZSBhcm91bmQuIEV2ZXJ5IG90aGVyIGdsb2JhbCBzdGF5c1xuICAgKiBjb25maWd1cmFibGUgYW5kIHN0dWJzIG5vcm1hbGx5LlxuICAgKlxuICAgKiBQdXNoIGEgZmlsZSBoZXJlIGFuZCBpdCBsZWF2ZXMgYHVuaXQtdGVzdHNgIGZvciBhIHNpYmxpbmcgYHVuaXQtdGVzdHM6Z2xvYmFsLXN0dWJzYCBwcm9qZWN0IHRoYXQgaXNcbiAgICogaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHBvb2wsIHdoaWNoIGlzIHRoZSBkZWZhdWx0IG9uZS4gQSBwbHVnaW4ncyBgdGVzdGAgYW5kIGB0ZXN0OmNvdmVyYWdlYCBzY3JpcHRzXG4gICAqIG5hbWUgYHVuaXQtdGVzdHNgLCB3aGljaCBhbHNvIHNlbGVjdHMgZXZlcnkgYHVuaXQtdGVzdHM6KmAgcHJvamVjdCwgc28gdGhlIHNpYmxpbmcgcnVucyBhbmQgaXMgY292ZXJlZFxuICAgKiB3aXRob3V0IGEgc2NyaXB0IGNoYW5nZS4gSXQgaXMgZW1pdHRlZCBvbmx5IHdoZW4gdGhpcyBsaXN0IGlzIG5vbi1lbXB0eS5cbiAgICpcbiAgICogVG8ga2VlcCBhIHdob2xlIHN1aXRlIG9uIHRoZSBkZWZhdWx0IHBvb2wgaW5zdGVhZCwgc2V0IGB1bml0VGVzdHMucG9vbGAgdG8gYCdmb3JrcydgIGFuZCBzYXkgd2h5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdsb2JhbFN0dWJUZXN0RmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBtdWx0aXBsaWVyIGFwcGxpZWQgdG8gYSBwcm9qZWN0J3MgdGVzdCBidWRnZXQgdG8gZ2V0IGl0cyBob29rIGJ1ZGdldC4gQSBob29rIHR5cGljYWxseSBwb3B1bGF0ZXNcbiAgICogYW5kIG9wZW5zIGEgdmF1bHQsIHNvIGl0IG5lZWRzIHNldmVyYWwgdGltZXMgd2hhdCBhIHNpbmdsZSB0ZXN0IGRvZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA0YFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGhvb2tUaW1lb3V0TXVsdGlwbGllciA9IEhPT0tfVElNRU9VVF9NVUxUSVBMSUVSO1xuXG4gIC8qKlxuICAgKiBUaGUgYGludGVncmF0aW9uLXRlc3RzOm5vLWFwcGAgcHJvamVjdCwgcnVubmluZyB0aGUgc3VpdGVzIHRoYXQgbmVlZCBubyBPYnNpZGlhbiBpbnN0YW5jZSBhdCBhbGwuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbm9BcHA6IE9ic2lkaWFuUGx1Z2luVml0ZXN0UHJvamVjdENvbmZpZyA9IHtcbiAgICBlbnZpcm9ubWVudDogJ25vZGUnLFxuICAgIGZpbGVQYXJhbGxlbGlzbTogZmFsc2UsXG4gICAgaG9va1RpbWVvdXQ6IElOVEVHUkFUSU9OX1RFU1RfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgKiBIT09LX1RJTUVPVVRfTVVMVElQTElFUixcbiAgICBpbmNsdWRlOiBbTk9fQVBQX1RFU1RfRklMRVNdLFxuICAgIG5hbWU6ICdpbnRlZ3JhdGlvbi10ZXN0czpuby1hcHAnLFxuICAgIHRlc3RUaW1lb3V0OiBJTlRFR1JBVElPTl9URVNUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTXG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBwZXItZXZhbCBjYXAgdGhlIHBlcmZvcm1hbmNlIGludGVncmF0aW9uIHByb2plY3QgZ2l2ZXMgaXRzIENEUCB0cmFuc3BvcnQsIGluIG1pbGxpc2Vjb25kcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDYwMDAwMGBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwZXJmb3JtYW5jZUV2YWxDYXBJbk1pbGxpc2Vjb25kcyA9IFBFUkZPUk1BTkNFX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EUztcblxuICAvKipcbiAgICogVGhlIHBlci10ZXN0IGJ1ZGdldCBvZiB0aGUgcGVyZm9ybWFuY2UgaW50ZWdyYXRpb24gcHJvamVjdCwgaW4gbWlsbGlzZWNvbmRzLiBBIHBlcmZvcm1hbmNlIHZhdWx0IGlzXG4gICAqIHByZS1wb3B1bGF0ZWQgd2l0aCB0ZW5zIG9mIHRob3VzYW5kcyBvZiBub3RlcyBiZWZvcmUgT2JzaWRpYW4gb3BlbnMsIHNvIGJvdGggaXRzIHNldHVwIGFuZCBpdHMgdGVzdHNcbiAgICogbmVlZCBmYXIgbW9yZSB0aW1lIHRoYW4gdGhlIHJlZ3VsYXIgaW50ZWdyYXRpb24gcHJvamVjdHMuXG4gICAqXG4gICAqIExpa2UgdGhlIHJlZ3VsYXIgYnVkZ2V0LCBpdCBDTEVBUlMgdGhlIHByb2plY3QncyBwZXItZXZhbCBjYXBcbiAgICogKHtAbGluayBPYnNpZGlhblBsdWdpblZpdGVzdENvbmZpZ0NvbnRleHQucGVyZm9ybWFuY2VFdmFsQ2FwSW5NaWxsaXNlY29uZHN9KSByYXRoZXIgdGhhbiBtYXRjaGluZyBpdCxcbiAgICogc28gYW4gZXZhbHVhdGlvbiB0aGF0IG91dHJ1bnMgdGhlIGNhcCByZXBvcnRzIGl0c2VsZiBpbnN0ZWFkIG9mIGR5aW5nIGFzIHZpdGVzdCdzIGFub255bW91cyB0aW1lb3V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNjE1MDAwYFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBlcmZvcm1hbmNlVGltZW91dEluTWlsbGlzZWNvbmRzID0gUEVSRk9STUFOQ0VfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFM7XG5cbiAgLyoqXG4gICAqIFRoZSByZXBvcnRlcnMgdGhlIHJ1biBwcmludHMgdGhyb3VnaC5cbiAgICpcbiAgICogUGlubmVkIHJhdGhlciB0aGFuIGxlZnQgdG8gdml0ZXN0LCB3aGljaCByZXNvbHZlcyBhbiB1bnNldCBgcmVwb3J0ZXJzYCBkaWZmZXJlbnRseSBmb3IgYSBkZXZlbG9wZXJcbiAgICogYW5kIGZvciBhbiBBSSBjb2Rpbmcgc2Vzc2lvbiDigJQgc2VlIHtAbGluayBERUZBVUxUX1ZJVEVTVF9SRVBPUlRFUlN9IGZvciB0aGUgd2hvbGUgb2Ygd2h5LCBhbmQgZm9yXG4gICAqIHdoYXQgaXQgZGVsaWJlcmF0ZWx5IGxlYXZlcyB0byB2aXRlc3QgNSBpdHNlbGYuXG4gICAqXG4gICAqIFB1c2ggb250byBpdCB0byBhZGQgYSByZXBvcnRlciBiZXNpZGUgdGhlIHBpbm5lZCBvbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtAbGluayBERUZBVUxUX1ZJVEVTVF9SRVBPUlRFUlN9XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVwb3J0ZXJzOiBPYnNpZGlhblBsdWdpblZpdGVzdFJlcG9ydGVyW10gPSBbLi4uREVGQVVMVF9WSVRFU1RfUkVQT1JURVJTXTtcblxuICAvKipcbiAgICogVGhlIGB1bml0LXRlc3RzYCBwcm9qZWN0LCBydW5uaW5nIHRoZSBtb2NrZWQtT2JzaWRpYW4gc3VpdGVzIGluIGBqc2RvbWAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdW5pdFRlc3RzOiBPYnNpZGlhblBsdWdpblZpdGVzdFByb2plY3RDb25maWcgPSB7XG4gICAgZW52aXJvbm1lbnQ6ICdqc2RvbScsXG4gICAgZXhjbHVkZTogWy4uLlNIQVJFRF9FWENMVURFLCBJTlRFR1JBVElPTl9URVNUX0ZJTEVTXSxcbiAgICAvLyBBIHRocmVhZHMvZm9ya3MgcG9vbCBvcHRpb24gdGhhdCBzdGlsbCByZWFjaGVzIHRoZSB3b3JrZXIgdW5kZXIgdGhlIFZNIHBvb2wgYmVsb3c6IG1lYXN1cmVkXG4gICAgLy8gMjAyNi0wOS0xNiwgYHByb2Nlc3MuZXhlY0FyZ3ZgIGNhcnJpZXMgaXQgYW5kIE5vZGUncyBvd24gYGxvY2FsU3RvcmFnZWAgZGVzY3JpcHRvciBpcyBnb25lLCBhcyBpdFxuICAgIC8vIGlzIHVuZGVyIGB0aHJlYWRzYC4gV2l0aG91dCB0aGUgZmxhZyB0aGUgZGVzY3JpcHRvciBpcyBiYWNrIHVuZGVyIGJvdGggcG9vbHMuXG4gICAgZXhlY0FyZ3Y6IFsnLS1uby13ZWJzdG9yYWdlJ10sXG4gICAgaW5jbHVkZTogW1VOSVRfVEVTVF9GSUxFU10sXG4gICAgbmFtZTogJ3VuaXQtdGVzdHMnLFxuICAgIC8qXG4gICAgICogVGhlIGRlZmF1bHQgcG9vbCBjb25zdHJ1Y3RzIG9uZSBqc2RvbSBwZXIgdGVzdCBmaWxlLCBhbmQgdGhhdCBjb25zdHJ1Y3Rpb24sIG5vdCB0aGUgdGVzdHMsIHdhc1xuICAgICAqIHRoZSB1bml0IHN1aXRlJ3MgY29zdDogNjclIG9mIHRyYWNrZWQgdGltZSBpbiBgb2JzaWRpYW4tZGV2LXV0aWxzYCcgb3duIHN1aXRlLiBBIFZNIHBvb2wgYnVpbGRzXG4gICAgICogdGhlIGpzZG9tIG9uY2UgcGVyIHdvcmtlciBhbmQgZ2l2ZXMgZWFjaCBmaWxlIGEgZnJlc2ggVk0gY29udGV4dCwgc28gcGVyLWZpbGUgaXNvbGF0aW9uIGhvbGRzLlxuICAgICAqIE1lYXN1cmVkIHRoZXJlIG9uIDIwMjYtMDktMTU6IHRoZSBqc2RvbSBwcm9qZWN0IDM2LjA2cyAtPiA5LjkycywgYGNvdmVyYWdlL2xjb3YuaW5mb2BcbiAgICAgKiBieXRlLWlkZW50aWNhbCB0byB0aGUgZGVmYXVsdCBwb29sJ3MsIGFuZCBubyBET00sIGBnbG9iYWxUaGlzYCBvciBwcm90b3R5cGUgc3RhdGUgY3Jvc3NpbmcgZmlsZXMuXG4gICAgICogYGlzb2xhdGU6IGZhbHNlYCwgdGhlIG90aGVyIHJlbWVkeSB2aXRlc3Qgc3VnZ2VzdHMsIHdhcyBzbG93ZXIgKDkxLjYycykgYW5kIGJyb2tlIDY4IHRlc3RzLlxuICAgICAqIFRoZSBvbmUgY29zdCBpcyByZWRlZmluaW5nIGB3aW5kb3dgLCBgZG9jdW1lbnRgLCBgbG9jYXRpb25gIG9yIGB0b3BgOiBzZWUgYGdsb2JhbFN0dWJUZXN0RmlsZXNgLlxuICAgICAqL1xuICAgIHBvb2w6ICd2bVRocmVhZHMnLFxuICAgIHNlcnZlcjoge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYGRlcHNgIGlzIGRlY2xhcmVkIGJ5IGB2aXRlc3RgOyByZW5hbWluZyBpdCBoZXJlIHdvdWxkIG5vdCBtYXRjaCB0aGUgQVBJLlxuICAgICAgZGVwczoge1xuICAgICAgICBpbmxpbmU6IFsnQG1uYW91bW92JywgJ0BvYnNpZGlhbi10eXBpbmdzJ11cbiAgICAgIH1cbiAgICB9LFxuICAgIHNldHVwRmlsZXM6IFtcbiAgICAgICdvYnNpZGlhbi10ZXN0LW1vY2tzL3ZpdGVzdC1zZXR1cCcsXG4gICAgICAnQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0L3ZpdGVzdC1zZXR1cCdcbiAgICBdXG4gIH07XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgY29udGV4dCBzZWVkZWQgd2l0aCB0aGUgc3RhbmRhcmQgcHJvamVjdHMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3Qgb2JzaWRpYW5WZXJzaW9uID0gcHJvY2Vzcy5lbnZbT0JTSURJQU5fVkVSU0lPTl9FTlZfVkFSSUFCTEVfTkFNRV07XG5cbiAgICAvKlxuICAgICAqIFN1cHBvcnQgaXMgdGhlIHJhbmdlIFtsYXRlc3QgcHVibGljLCBsYXRlc3QgY2F0YWx5c3RdIGFuZCBCT1RIIGVuZHMgbXVzdCB3b3JrLCBzbyB0aGUgdmVyc2lvblxuICAgICAqIGlzIGEga25vYiByYXRoZXIgdGhhbiBhIGNvbnN0YW50LiBUaGUga2V5IGlzIGFkZGVkIE9OTFkgd2hlbiB0aGUgdmFyaWFibGUgaXMgc2V0OiBhbiBleHBsaWNpdFxuICAgICAqIGBvYnNpZGlhblZlcnNpb25gIG1ha2VzIHRoZSBoYXJuZXNzIHJlc29sdmUgYSBjb25jcmV0ZSB2ZXJzaW9uIGFuZCBzd2FwIHRoZSBhc2FyLCB3aGljaCBpcyBub3Qgd2hhdFxuICAgICAqIGFuIHVucGlubmVkIHJ1biBkb2VzLCBzbyBzZWVkaW5nIGEgZGVmYXVsdCBoZXJlIHdvdWxkIGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YgZXZlcnkgcGx1Z2luLlxuICAgICAqL1xuICAgIGlmIChvYnNpZGlhblZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kZXNrdG9wLmVudmlyb25tZW50T3B0aW9ucyA9IHtcbiAgICAgICAgb2JzaWRpYW5UcmFuc3BvcnQ6IHtcbiAgICAgICAgICBvYnNpZGlhblZlcnNpb24sXG4gICAgICAgICAgdHlwZTogJ29ic2lkaWFuLWNkcCdcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSB2aXRlc3QgY29uZmlndXJhdGlvbiBmb3IgYW4gT2JzaWRpYW4gcGx1Z2luLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGRlZmluaW5nIHRoZSBjb25maWd1cmF0aW9uLlxuICogQHJldHVybnMgVGhlIHZpdGVzdCBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWcob3B0aW9uczogRGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdPcHRpb25zID0ge30pOiBWaXRlVXNlckNvbmZpZyB7XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdDb250ZXh0KCk7XG5cbiAgaWYgKG9wdGlvbnMuZWRpdENvbnRleHQpIHtcbiAgICBvcHRpb25zLmVkaXRDb250ZXh0KGNvbnRleHQpO1xuICB9XG5cbiAgY29uc3QgY3VzdG9tUHJvamVjdHMgPSBvcHRpb25zLmN1c3RvbVByb2plY3RzPy4oY29udGV4dCkgPz8gW107XG4gIHZhbGlkYXRlQ3VzdG9tUHJvamVjdHMoY3VzdG9tUHJvamVjdHMpO1xuXG4gIGNvbnN0IHVuaXRUZXN0c1Jlc29sdmUgPSB7XG4gICAgYWxpYXM6IHtcbiAgICAgIG9ic2lkaWFuOiAnb2JzaWRpYW4tdGVzdC1tb2Nrcy9vYnNpZGlhbidcbiAgICB9XG4gIH07XG4gIGNvbnN0IGdsb2JhbFN0dWJUZXN0RmlsZXMgPSBbLi4uY29udGV4dC5nbG9iYWxTdHViVGVzdEZpbGVzXTtcbiAgY29uc3QgdW5pdFRlc3RzOiBPYnNpZGlhblBsdWdpblZpdGVzdFByb2plY3RDb25maWcgPSBnbG9iYWxTdHViVGVzdEZpbGVzLmxlbmd0aCA9PT0gMFxuICAgID8gY29udGV4dC51bml0VGVzdHNcbiAgICA6IHsgLi4uY29udGV4dC51bml0VGVzdHMsIGV4Y2x1ZGU6IFsuLi5jb250ZXh0LnVuaXRUZXN0cy5leGNsdWRlID8/IFtdLCAuLi5nbG9iYWxTdHViVGVzdEZpbGVzXSB9O1xuICBjb25zdCBnbG9iYWxTdHVic1Byb2plY3RzOiBUZXN0UHJvamVjdENvbmZpZ3VyYXRpb25bXSA9IGdsb2JhbFN0dWJUZXN0RmlsZXMubGVuZ3RoID09PSAwXG4gICAgPyBbXVxuICAgIDogW3tcbiAgICAgIHJlc29sdmU6IHVuaXRUZXN0c1Jlc29sdmUsXG4gICAgICB0ZXN0OiB7XG4gICAgICAgIC4uLmNvbnRleHQudW5pdFRlc3RzLFxuICAgICAgICBpbmNsdWRlOiBnbG9iYWxTdHViVGVzdEZpbGVzLFxuICAgICAgICBuYW1lOiBVTklUX1RFU1RfR0xPQkFMX1NUVUJTX1BST0pFQ1RfTkFNRSxcbiAgICAgICAgLy8gVGhlIGRlZmF1bHQgcG9vbCwgbmFtZWQgcmF0aGVyIHRoYW4gb21pdHRlZCBzbyB0aGUgc3ByZWFkIGFib3ZlIGNhbm5vdCBjYXJyeSB0aGUgVk0gcG9vbCBvdmVyLlxuICAgICAgICBwb29sOiAnZm9ya3MnXG4gICAgICB9XG4gICAgfV07XG5cbiAgcmV0dXJuIGRlZmluZUNvbmZpZyh7XG4gICAgdGVzdDoge1xuICAgICAgY292ZXJhZ2U6IHtcbiAgICAgICAgZXhjbHVkZTogY29udGV4dC5jb3ZlcmFnZUV4Y2x1ZGUsXG4gICAgICAgIGluY2x1ZGU6IFsnc3JjLyoqLyoudHMnXSxcbiAgICAgICAgcHJvdmlkZXI6ICd2OCcsXG4gICAgICAgIHJlcG9ydGVyOiBbJ3RleHQnLCAnbGNvdicsICdodG1sJ10sXG4gICAgICAgIHJlcG9ydHNEaXJlY3Rvcnk6ICcuL2NvdmVyYWdlJ1xuICAgICAgfSxcbiAgICAgIGV4Y2x1ZGU6IFsuLi5TSEFSRURfRVhDTFVERV0sXG4gICAgICBnbG9iYWxzOiBmYWxzZSxcbiAgICAgIC8qXG4gICAgICAgKiBUaGVyZSBpcyBkZWxpYmVyYXRlbHkgTk8gcm9vdC1sZXZlbCBgaW5jbHVkZWAgaGVyZSwgYW5kIHJlc3RvcmluZyBvbmUgYnJlYWtzIGV2ZXJ5IHByb2plY3QuXG4gICAgICAgKiBVbmRlciB2aXRlc3QgNCBhIHByb2plY3QncyBvd24gYGluY2x1ZGVgIHJlcGxhY2VkIHRoZSByb290IG9uZSwgc28gYSByb290XG4gICAgICAgKiBgaW5jbHVkZTogW1VOSVRfVEVTVF9GSUxFU11gIHdhcyBtZXJlbHkgcmVkdW5kYW50IOKAlCB0aGUgYHVuaXQtdGVzdHNgIHByb2plY3QgYWxyZWFkeSBkZWNsYXJlc1xuICAgICAgICogdGhhdCBzYW1lIGdsb2IgZm9yIGl0c2VsZi4gVW5kZXIgdml0ZXN0IDUgdGhlIHByb2plY3QgZ2xvYiBubyBsb25nZXIgcmVwbGFjZXMgaXQsIGFuZFxuICAgICAgICogYHNyYy8qKlxcLyoudGVzdC50c2AgaXMgYSBzdXBlcnNldCBvZiBldmVyeSBwcm9qZWN0IGdsb2IsIHNvIEVWRVJZIHByb2plY3QgY29sbGVjdGVkIEVWRVJZIHRlc3RcbiAgICAgICAqIGZpbGU6IHVuaXQgc3VpdGVzIHJhbiBpbiB0aGUgQ0RQIGludGVncmF0aW9uIGVudmlyb25tZW50IGFuZCBkaWVkIG9uIGBGYWlsZWQgdG8gcmVzb2x2ZSBlbnRyeVxuICAgICAgICogZm9yIHBhY2thZ2UgXCJvYnNpZGlhblwiYCwgdGhlIHNjcmVlbnNob3QtY2FwdHVyZSBzdWl0ZXMgcmFuIGFuZCByZXdyb3RlIGNoZWNrZWQtaW4gUE5HcywgYW5kIHRoZVxuICAgICAgICogYW5kcm9pZCAvIGRlbW8tdmF1bHQgc3VpdGVzIHJhbiB1bmRlciB0aGUgZGVza3RvcCB0cmFuc3BvcnQuIE1lYXN1cmVkIGluIGEgY29uc3VtZXI6IHRoZSBkZXNrdG9wXG4gICAgICAgKiBwcm9qZWN0IGNvbGxlY3RlZCAyMjcgZmlsZXMgaW5zdGVhZCBvZiBpdHMgb3duIDEwNSwgYW5kIGRlbGV0aW5nIHRoaXMgb25lIGxpbmUgcmVzdG9yZWQgMTA1LlxuICAgICAgICovXG4gICAgICBwYXNzV2l0aE5vVGVzdHM6IHRydWUsXG4gICAgICBwcm9qZWN0czogW1xuICAgICAgICB7XG4gICAgICAgICAgcmVzb2x2ZTogdW5pdFRlc3RzUmVzb2x2ZSxcbiAgICAgICAgICB0ZXN0OiB1bml0VGVzdHNcbiAgICAgICAgfSxcbiAgICAgICAgeyB0ZXN0OiBjb250ZXh0Lm5vQXBwIH0sXG4gICAgICAgIHsgdGVzdDogY29udGV4dC5kZXNrdG9wIH0sXG4gICAgICAgIHsgdGVzdDogY29udGV4dC5kZXNrdG9wUGVyZm9ybWFuY2UgfSxcbiAgICAgICAgeyB0ZXN0OiBjb250ZXh0LmFuZHJvaWQgfSxcbiAgICAgICAgLi4uZ2xvYmFsU3R1YnNQcm9qZWN0cyxcbiAgICAgICAgLi4uY3VzdG9tUHJvamVjdHNcbiAgICAgIF0sXG4gICAgICByZXBvcnRlcnM6IFsuLi5jb250ZXh0LnJlcG9ydGVyc11cbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlZnVzZXMgYSBjdXN0b20gcHJvamVjdCB0aGF0IGRlY2xhcmVzIG5vIGBpbmNsdWRlYCBnbG9iIG9mIGl0cyBvd24uXG4gKlxuICogVGhlIHJvb3Qgc2VjdGlvbiBkZWxpYmVyYXRlbHkgZGVjbGFyZXMgbm8gYGluY2x1ZGVgIChzZWUgdGhlIGNvbW1lbnQgb24gaXQgYWJvdmUpLCBzbyBhIHByb2plY3QgdGhhdFxuICogZGVjbGFyZXMgbm9uZSBmYWxscyBiYWNrIHRvIHZpdGVzdCdzIG93biBkZWZhdWx0IGdsb2Ig4oCUIHdoaWNoIG1hdGNoZXMgRVZFUlkgdGVzdCBmaWxlIGluIHRoZSByZXBvLlxuICogVGhhdCBwcm9qZWN0IHRoZW4gcnVucyB0aGUgdW5pdCBzdWl0ZXMgaW4gYW4gT2JzaWRpYW4gZW52aXJvbm1lbnQsIHRoZSBhbmRyb2lkIHN1aXRlcyB1bmRlciB0aGVcbiAqIGRlc2t0b3AgdHJhbnNwb3J0LCBhbmQgdGhlIGAqLWNhcHR1cmUuYCBzY3JlZW5zaG90IHN1aXRlcyB0aGF0IG9wZW4gYSB3aW5kb3cgYW5kIHJld3JpdGUgY2hlY2tlZC1pblxuICogUE5Hcy4gQSB3aWRlbmVkIHByb2plY3QgaXMgc2lsZW50OiBpdCBwYXNzZXMsIHNsb3dseSwgaGF2aW5nIGRvbmUgYWxsIG9mIHRoYXQuXG4gKlxuICogT25seSBhIHBsYWluIGlubGluZSBjb25maWd1cmF0aW9uIGNhbiBiZSBjaGVja2VkIGhlcmUuIEEgcHJvamVjdCBuYW1lZCBieSBhIGdsb2Igc3RyaW5nLCBidWlsdCBieSBhXG4gKiBmdW5jdGlvbiwgb3IgYXdhaXRlZCBmcm9tIGEgcHJvbWlzZSBpcyByZXNvbHZlZCBieSB2aXRlc3QgaXRzZWxmLCBvdXQgb2YgdGhpcyBmdW5jdGlvbidzIHJlYWNoLlxuICpcbiAqIEBwYXJhbSBjdXN0b21Qcm9qZWN0cyAtIFRoZSBwcm9qZWN0cyByZXR1cm5lZCBieSB7QGxpbmsgRGVmaW5lT2JzaWRpYW5QbHVnaW5WaXRlc3RDb25maWdPcHRpb25zLmN1c3RvbVByb2plY3RzfS5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVDdXN0b21Qcm9qZWN0cyhjdXN0b21Qcm9qZWN0czogVGVzdFByb2plY3RDb25maWd1cmF0aW9uW10pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBbaW5kZXgsIGN1c3RvbVByb2plY3RdIG9mIGN1c3RvbVByb2plY3RzLmVudHJpZXMoKSkge1xuICAgIGlmICh0eXBlb2YgY3VzdG9tUHJvamVjdCAhPT0gJ29iamVjdCcgfHwgJ3RoZW4nIGluIGN1c3RvbVByb2plY3QpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGluY2x1ZGUgPSBjdXN0b21Qcm9qZWN0LnRlc3Q/LmluY2x1ZGU7XG5cbiAgICBpZiAoaW5jbHVkZSAmJiBpbmNsdWRlLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IG5hbWUgPSBjdXN0b21Qcm9qZWN0LnRlc3Q/Lm5hbWU7XG4gICAgY29uc3QgbGFiZWwgPSB0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycgPyBuYW1lIDogbmFtZT8ubGFiZWwgPz8gYGF0IGluZGV4ICR7U3RyaW5nKGluZGV4KX1gO1xuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFRoZSBjdXN0b20gdml0ZXN0IHByb2plY3QgJHtsYWJlbH0gZGVjbGFyZXMgbm8gXFxgdGVzdC5pbmNsdWRlXFxgLCBzbyB2aXRlc3QgZmFsbHMgYmFjayB0byBpdHMgZGVmYXVsdCBnbG9iIGFuZCB0aGUgcHJvamVjdCBjb2xsZWN0cyBFVkVSWSB0ZXN0IGZpbGUg4oCUIGluY2x1ZGluZyB0aGUgXFxgKi1jYXB0dXJlLlxcYCBzdWl0ZXMgdGhhdCByZXdyaXRlIGNoZWNrZWQtaW4gc2NyZWVuc2hvdHMuIERlY2xhcmUgYW4gZXhwbGljaXQgXFxgaW5jbHVkZVxcYCwgb3Igc3ByZWFkIGEgc3RhbmRhcmQgcHJvamVjdCAoXFxgLi4uY29udGV4dC5kZXNrdG9wXFxgKSBhbmQgb3ZlcnJpZGUgaXQuYFxuICAgICk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0JBLDJCQUdPO0FBQ1AsMEJBQW9CO0FBQ3BCLDBDQUFpRDtBQUNqRCxvQkFBNkI7QUFFN0Isa0NBR087QUFxQ1AsTUFBTSw0Q0FBNEM7QUFPbEQsTUFBTSxrQ0FBa0M7QUFDeEMsTUFBTSwwQkFBMEI7QUFPaEMsTUFBTSxzQ0FBc0MsbUVBQXVDO0FBUzVFLE1BQU0sMkNBQTJDLHVF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
@@ -1,4 +1,4 @@
1
- /// <reference path="../index.d.cts" />
1
+ /// <reference path="../library-references.d.cts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -10,8 +10,7 @@
10
10
  * near-identical edit per plugin, and any repo that is missed drifts silently. This module owns that
11
11
  * configuration once, so a plugin's `scripts/vitest-config.ts` collapses to a single call.
12
12
  *
13
- * The seam mirrors {@link https://www.npmjs.com/package/obsidian-dev-utils | the ESLint one}
14
- * (`defineEslintConfigs`): the factory builds a context holding the standard projects, the caller edits
13
+ * The seam mirrors the ESLint one (`defineEslintConfigs`): the factory builds a context holding the standard projects, the caller edits
15
14
  * it in place through {@link DefineObsidianPluginVitestConfigOptions.editContext}, and appends any
16
15
  * project the base does not know about through
17
16
  * {@link DefineObsidianPluginVitestConfigOptions.customProjects}.
@@ -2,13 +2,7 @@
2
2
  THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
- symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
@@ -33,20 +27,7 @@ function ensureBrowserProcess() {
33
27
  existingProcessRecord["browser"] = true;
34
28
  }
35
29
 
36
- function keepName($unknown) {
37
- return $unknown;
38
- }
39
-
40
- (function initCjs() {
41
- const globalThisRecord = globalThis;
42
- ensureDisposeSymbols();
43
- globalThisRecord["__name"] ??= keepName;
44
- globalThisRecord["__extractDefault"] ??= extractDefault;
45
- ensureBrowserProcess();
46
- function extractDefault(module) {
47
- return module && module.__esModule && "default" in module ? module.default : module;
48
- }
49
- })();
30
+ ensureBrowserProcess();
50
31
  })();
51
32
  (function patchObsidianRequire() {
52
33
  const originalRequire = require;
@@ -259,4 +240,4 @@ async function updateVersionInFilesForPlugin(newVersion, minAppVersion) {
259
240
  parseVersionArguments,
260
241
  updateVersion
261
242
  });
262
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZlcnNpb24udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBSZWxlYXNlcyBhbiBPYnNpZGlhbiBwbHVnaW46IHRoZSBnZW5lcmljIHJlbGVhc2UgZnJvbSBgQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvdmVyc2lvbmAsIHBsdXMgd2hhdCBvbmx5IGFcbiAqIHBsdWdpbiBoYXMgXHUyMDE0IGBtYW5pZmVzdC5qc29uYCAoYW5kIGBtYW5pZmVzdC1iZXRhLmpzb25gIGZvciBhIHByZS1yZWxlYXNlKSBhbmQgYHZlcnNpb25zLmpzb25gIGJ1bXBlZCB3aXRoIHRoZVxuICogcGx1Z2luJ3MgYG1pbkFwcFZlcnNpb25gLCB0aGUgdXBkYXRlZCBtYW5pZmVzdCBjb3BpZWQgaW50byBgZGlzdC9idWlsZGAsIHRoZSBkZW1vIHZhdWx0IGFyY2hpdmVkIGFzIGEgcmVsZWFzZVxuICogYXNzZXQsIGFuZCB0aGUgZmlsZXMgaW4gYGRpc3QvYnVpbGRgIGF0dGFjaGVkIHRvIHRoZSBHaXRIdWIgcmVsZWFzZSBpbnN0ZWFkIG9mIGFuIGBucG0gcGFja2AgdGFyYmFsbC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIFBhcnNlZFZlcnNpb25Bcmd1bWVudHMgYXMgR2VuZXJpY1BhcnNlZFZlcnNpb25Bcmd1bWVudHMsXG4gIFVwZGF0ZVZlcnNpb25PcHRpb25zIGFzIEdlbmVyaWNVcGRhdGVWZXJzaW9uT3B0aW9uc1xufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC92ZXJzaW9uJztcblxuaW1wb3J0IHsgcmVhZGRpclBvc2l4IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvZnMnO1xuaW1wb3J0IHsgZWRpdEpzb24gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9qc29uJztcbmltcG9ydCB7IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvcm9vdCc7XG5pbXBvcnQge1xuICBpc1ByZVJlbGVhc2UsXG4gIHRvVXBkYXRlVmVyc2lvbk9wdGlvbnMsXG4gIHVwZGF0ZVZlcnNpb24gYXMgdXBkYXRlVmVyc2lvbkdlbmVyaWMsXG4gIFZFUlNJT05fQVJHVU1FTlRfT1BUSU9OU1xufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC92ZXJzaW9uJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBjcCxcbiAgcm1cbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBwYXJzZUFyZ3MgfSBmcm9tICdub2RlOnV0aWwnO1xuXG5pbXBvcnQgeyBhcmNoaXZlUGx1Z2luRGVtb1ZhdWx0IH0gZnJvbSAnLi9kZW1vLXZhdWx0LnRzJztcbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5cbi8qKlxuICogVHlwZSByZXByZXNlbnRpbmcgdGhlIHN0cnVjdHVyZSBvZiBPYnNpZGlhbidzIGBkZXNrdG9wLXJlbGVhc2VzLmpzb25gIGZlZWQuXG4gKlxuICogVGhpcyBpcyB0aGUgZmVlZCB0aGUgZGVza3RvcCBhcHAgaXRzZWxmIHVwZGF0ZXMgZnJvbSwgc28gaXQgaXMgdGhlIG9ubHkgc291cmNlIHRoYXQgc3RhdGVzIGEgdmVyc2lvblxuICogZGVza3RvcCB1c2VycyBjYW4gYWN0dWFsbHkgcnVuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc2t0b3BSZWxlYXNlc0pzb24ge1xuICAvKipcbiAgICogVGhlIGxhdGVzdCBPYnNpZGlhbiB2ZXJzaW9uIGF2YWlsYWJsZSBmb3IgZGVza3RvcC5cbiAgICovXG4gIGxhdGVzdFZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyB0aGUgbWFuaWZlc3QgZmlsZSBmb3JtYXQgZm9yIE9ic2lkaWFuIHBsdWdpbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFuaWZlc3Qge1xuICAvKipcbiAgICogQSBtaW5pbXVtIE9ic2lkaWFuIHZlcnNpb24gcmVxdWlyZWQgZm9yIHRoZSBwbHVnaW4uXG4gICAqL1xuICBtaW5BcHBWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdmVyc2lvbiBvZiB0aGUgcGx1Z2luLlxuICAgKi9cbiAgdmVyc2lvbjogc3RyaW5nO1xufVxuLyoqXG4gKiBUaGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgZm9yIGEgcGx1Z2luIHJlbGVhc2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkVmVyc2lvbkFyZ3VtZW50cyBleHRlbmRzIEdlbmVyaWNQYXJzZWRWZXJzaW9uQXJndW1lbnRzIHtcbiAgLyoqXG4gICAqIFRoZSB7QGxpbmsgVXBkYXRlVmVyc2lvbk9wdGlvbnN9IHBhcnNlZCBmcm9tIHRoZSBmbGFncy5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbnM6IFVwZGF0ZVZlcnNpb25PcHRpb25zO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayB1cGRhdGVWZXJzaW9ufTogdGhlIGdlbmVyaWMgcmVsZWFzZSBvcHRpb25zIHBsdXMgdGhlIHBsdWdpbidzIG93bi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVWZXJzaW9uT3B0aW9ucyBleHRlbmRzIEdlbmVyaWNVcGRhdGVWZXJzaW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBleHBsaWNpdCBgbWluQXBwVmVyc2lvbmAgdG8gd3JpdGUgaW50byB0aGUgcGx1Z2luJ3MgYG1hbmlmZXN0Lmpzb25gIGFuZCBpdHMgbmV3IGB2ZXJzaW9ucy5qc29uYFxuICAgKiBlbnRyeS4gV2hlbiBzZXQsIGl0IGlzIHVzZWQgdmVyYmF0aW0gYW5kIHRoZSBsYXRlc3QgT2JzaWRpYW4gZGVza3RvcCB2ZXJzaW9uIGlzIG5vdCBmZXRjaGVkIGF0IGFsbC5cbiAgICpcbiAgICogU2V0IHRoaXMgd2hlbiB0aGUgcGx1Z2luIGhhcyBhIGtub3duIG1pbmltdW0gaXQgYWN0dWFsbHkgcmVxdWlyZXMsIHJhdGhlciB0aGFuIHRyYWNraW5nIHdoYXRldmVyXG4gICAqIE9ic2lkaWFuIHJlbGVhc2VkIG1vc3QgcmVjZW50bHkuIE9ubHkgYXBwbGllcyB0byBub24tcHJlLXJlbGVhc2UgdmVyc2lvbnMgKGEgcHJlLXJlbGVhc2UgY29waWVzIHRoZVxuICAgKiBleGlzdGluZyBgbWFuaWZlc3QuanNvbmAgYW5kIG5ldmVyIHdyaXRlcyBgbWluQXBwVmVyc2lvbmApLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgbGF0ZXN0IE9ic2lkaWFuIGRlc2t0b3AgdmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbWluQXBwVmVyc2lvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhcmNoaXZlIHRoZSBwbHVnaW4ncyBkZW1vIHZhdWx0IChgZGVtby12YXVsdC9gIGluIHRoZSByZXBvIHJvb3QpIGFzIGEgcmVsZWFzZSBhcnRpZmFjdC4gSWdub3JlZFxuICAgKiB3aGVuIHRoZSByZXBvIGhhcyBubyBgZGVtby12YXVsdC9gIGZvbGRlci5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRBcmNoaXZlRGVtb1ZhdWx0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgZmVlZCB0aGUgT2JzaWRpYW4gZGVza3RvcCBhcHAgdXBkYXRlcyBmcm9tLlxuICpcbiAqIERlbGliZXJhdGVseSBOT1QgdGhlIEdpdEh1YiBgcmVsZWFzZXMvbGF0ZXN0YCBBUEk6IHRoYXQgZW5kcG9pbnQgcmV0dXJucyB0aGUgbmV3ZXN0IHJlbGVhc2Ugb2YgYW55IGtpbmRcbiAqIGluIGBvYnNpZGlhbm1kL29ic2lkaWFuLXJlbGVhc2VzYCwgaW5jbHVkaW5nIG9uZSB3aG9zZSBvbmx5IGFzc2V0IGlzIHRoZSBBbmRyb2lkIEFQSywgd2hpY2ggbm8gZGVza3RvcFxuICogdXNlciBjYW4gaW5zdGFsbC4gU2VlIHtAbGluayBnZXRMYXRlc3RPYnNpZGlhblZlcnNpb259LlxuICovXG5jb25zdCBERVNLVE9QX1JFTEVBU0VTX0pTT05fVVJMID0gJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vYnNpZGlhbm1kL29ic2lkaWFuLXJlbGVhc2VzL21hc3Rlci9kZXNrdG9wLXJlbGVhc2VzLmpzb24nO1xuXG4vKipcbiAqIENvcGllcyB0aGUgdXBkYXRlZCBtYW5pZmVzdCBmaWxlIHRvIHRoZSBkaXN0cmlidXRpb24gYnVpbGQgZm9sZGVyLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY29weSBvcGVyYXRpb24gaXMgY29tcGxldGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5VXBkYXRlZE1hbmlmZXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBjcChcbiAgICByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiB9KSxcbiAgICByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IGpvaW4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGlzdEJ1aWxkLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEpzb24pIH0pLFxuICAgIHsgZm9yY2U6IHRydWUgfVxuICApO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBmb3IgYSBwbHVnaW4gcmVsZWFzZTogZXZlcnkgZmxhZyB0aGUgZ2VuZXJpYyBgcGFyc2VWZXJzaW9uQXJndW1lbnRzYFxuICogcmVjb2duaXplcywgcGx1cyB0d28gb2YgdGhlIHBsdWdpbidzIG93bjpcbiAqIC0gYC0tbWluLWFwcC12ZXJzaW9uPTx4Lnkuej5gIFx1MjAxNCB3cml0ZSB0aGlzIGBtaW5BcHBWZXJzaW9uYCBpbnRvIHRoZSBwbHVnaW4ncyBgbWFuaWZlc3QuanNvbmAgYW5kIGl0cyBuZXdcbiAqICAgYHZlcnNpb25zLmpzb25gIGVudHJ5IGluc3RlYWQgb2YgdHJhY2tpbmcgdGhlIGxhdGVzdCBPYnNpZGlhbiBkZXNrdG9wIHZlcnNpb24uXG4gKiAtIGAtLW5vLWRlbW8tdmF1bHRgIFx1MjAxNCBza2lwIGFyY2hpdmluZyB0aGUgcGx1Z2luJ3MgZGVtbyB2YXVsdCAoYGRlbW8tdmF1bHQvYCkgYXMgYSByZWxlYXNlIGFydGlmYWN0LlxuICpcbiAqIEBwYXJhbSAkYXJndW1lbnRzIC0gVGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgdG8gcGFyc2UgKHR5cGljYWxseSBgcHJvY2Vzcy5hcmd2LnNsaWNlKDIpYCkuXG4gKiBAcmV0dXJucyBUaGUge0BsaW5rIFBhcnNlZFZlcnNpb25Bcmd1bWVudHN9IGNvbnRhaW5pbmcgdGhlIHZlcnNpb24gdXBkYXRlIHR5cGUgYW5kIHRoZSBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VWZXJzaW9uQXJndW1lbnRzKCRhcmd1bWVudHM6IHN0cmluZ1tdKTogUGFyc2VkVmVyc2lvbkFyZ3VtZW50cyB7XG4gIGNvbnN0IHsgcG9zaXRpb25hbHMsIHZhbHVlcyB9ID0gcGFyc2VBcmdzKHtcbiAgICBhbGxvd1Bvc2l0aW9uYWxzOiB0cnVlLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIGBhcmdzYCBpcyB0aGUgb3B0aW9uIG5hbWUgTm9kZSdzIGBwYXJzZUFyZ3NgIHJlYWRzLlxuICAgIGFyZ3M6ICRhcmd1bWVudHMsXG4gICAgb3B0aW9uczoge1xuICAgICAgLi4uVkVSU0lPTl9BUkdVTUVOVF9PUFRJT05TLFxuICAgICAgJ21pbi1hcHAtdmVyc2lvbic6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICduby1kZW1vLXZhdWx0JzogeyB0eXBlOiAnYm9vbGVhbicgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBvcHRpb25zOiB7XG4gICAgICAuLi50b1VwZGF0ZVZlcnNpb25PcHRpb25zKHZhbHVlcyksXG4gICAgICBtaW5BcHBWZXJzaW9uOiB2YWx1ZXNbJ21pbi1hcHAtdmVyc2lvbiddLFxuICAgICAgc2hvdWxkQXJjaGl2ZURlbW9WYXVsdDogISh2YWx1ZXNbJ25vLWRlbW8tdmF1bHQnXSA/PyBmYWxzZSlcbiAgICB9LFxuICAgIHZlcnNpb25VcGRhdGVUeXBlOiBwb3NpdGlvbmFsc1swXVxuICB9O1xufVxuXG4vKipcbiAqIFJlbGVhc2VzIHRoZSBwbHVnaW4uIFNlZSB0aGUgYEBmaWxlYCBvdmVydmlldyBmb3Igd2hhdCBpdCBhZGRzIHRvIHRoZSBnZW5lcmljIHJlbGVhc2UuXG4gKlxuICogQHBhcmFtIHZlcnNpb25VcGRhdGVUeXBlIC0gVGhlIHR5cGUgb2YgdmVyc2lvbiB1cGRhdGUgdG8gcGVyZm9ybSAobWFqb3IsIG1pbm9yLCBwYXRjaCwgcHJlbWFqb3IsIHByZW1pbm9yLCBwcmVwYXRjaCwgcHJlcmVsZWFzZSwgb3IgeC55LnpbLXN1ZmZpeF0pLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIFVwZGF0ZVZlcnNpb25PcHRpb25zfSBjb250cm9sbGluZyB0aGUgcmVsZWFzZSBiZWhhdmlvci5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcmVsZWFzZSBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVZlcnNpb24odmVyc2lvblVwZGF0ZVR5cGU/OiBzdHJpbmcsIG9wdGlvbnM6IFVwZGF0ZVZlcnNpb25PcHRpb25zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIG1pbkFwcFZlcnNpb24sXG4gICAgcHJlcGFyZUdpdEh1YlJlbGVhc2UsXG4gICAgc2hvdWxkQXJjaGl2ZURlbW9WYXVsdCA9IHRydWUsXG4gICAgLi4uZ2VuZXJpY09wdGlvbnNcbiAgfSA9IG9wdGlvbnM7XG5cbiAgYXdhaXQgdXBkYXRlVmVyc2lvbkdlbmVyaWModmVyc2lvblVwZGF0ZVR5cGUsIHtcbiAgICAuLi5nZW5lcmljT3B0aW9ucyxcbiAgICBnZXRSZWxlYXNlQXNzZXRQYXRoczogZ2V0UGx1Z2luUmVsZWFzZUFzc2V0UGF0aHMsXG4gICAgYXN5bmMgcHJlcGFyZUdpdEh1YlJlbGVhc2UobmV3VmVyc2lvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBhd2FpdCBwcmVwYXJlR2l0SHViUmVsZWFzZT8uKG5ld1ZlcnNpb24pO1xuICAgICAgaWYgKHNob3VsZEFyY2hpdmVEZW1vVmF1bHQpIHtcbiAgICAgICAgYXdhaXQgYXJjaGl2ZVBsdWdpbkRlbW9WYXVsdCgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgdXBkYXRlVmVyc2lvbkluRXh0cmFGaWxlcyhuZXdWZXJzaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGF3YWl0IHVwZGF0ZVZlcnNpb25JbkZpbGVzRm9yUGx1Z2luKG5ld1ZlcnNpb24sIG1pbkFwcFZlcnNpb24pO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmV0Y2hlcyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgT2JzaWRpYW4gdGhhdCB0aGUgZGVza3RvcCBhcHAgY2FuIGFjdHVhbGx5IHJ1bi5cbiAqXG4gKiBSZWFkcyB7QGxpbmsgREVTS1RPUF9SRUxFQVNFU19KU09OX1VSTH0sIG5vdCB0aGUgR2l0SHViIGByZWxlYXNlcy9sYXRlc3RgIEFQSS4gVGhlIEFQSSByZXR1cm5zIHRoZSBuZXdlc3RcbiAqIHJlbGVhc2Ugb2YgQU5ZIGtpbmQsIHNvIHdoZW5ldmVyIGEgbW9iaWxlLW9ubHkgcmVsZWFzZSAoYW4gQVBLLW9ubHkgYXNzZXQpIGlzIG5ld2VyIHRoYW4gdGhlIGRlc2t0b3Agb25lLFxuICogaXQgcmVwb3J0cyBhIHZlcnNpb24gdGhhdCBkb2VzIG5vdCBleGlzdCBmb3IgZGVza3RvcC4gQSBwbHVnaW4gcmVsZWFzZWQgaW4gdGhhdCB3aW5kb3cgZ2V0cyBhXG4gKiBgbWluQXBwVmVyc2lvbmAgbm8gZGVza3RvcCB1c2VyIGNhbiBzYXRpc2Z5LCBhbmQgT2JzaWRpYW4gc2lsZW50bHkga2VlcHMgb2ZmZXJpbmcgdGhlbSB0aGUgcHJldmlvdXNcbiAqIHJlbGVhc2UgaW5zdGVhZCBcdTIwMTQgdGhlIHJlbGVhc2Ugc3VjY2VlZHMgYW5kIHJlYWNoZXMgbm9ib2R5LlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGxhdGVzdCBPYnNpZGlhbiB2ZXJzaW9uIGF2YWlsYWJsZSBmb3IgZGVza3RvcC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0T2JzaWRpYW5WZXJzaW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gV2UgcnVuIHRoaXMgb3V0c2lkZSBvZiBPYnNpZGlhbiwgc28gd2UgZG9uJ3QgaGF2ZSBgcmVxdWVzdFVybCgpYC5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChERVNLVE9QX1JFTEVBU0VTX0pTT05fVVJMKTtcbiAgY29uc3QgZGVza3RvcFJlbGVhc2VzSnNvbiA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBQYXJ0aWFsPERlc2t0b3BSZWxlYXNlc0pzb24+O1xuICByZXR1cm4gZW5zdXJlTm9uTnVsbGFibGUoZGVza3RvcFJlbGVhc2VzSnNvbi5sYXRlc3RWZXJzaW9uLCAnQ291bGQgbm90IGZpbmQgdGhlIGxhdGVzdCBkZXNrdG9wIE9ic2lkaWFuIHZlcnNpb24nKTtcbn1cbi8qKlxuICogVGhlIHBsdWdpbidzIHJlbGVhc2UgYXNzZXRzOiBldmVyeSBmaWxlIGluIGBkaXN0L2J1aWxkYC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgYXNzZXQgcGF0aHMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldFBsdWdpblJlbGVhc2VBc3NldFBhdGhzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3QgYnVpbGRGb2xkZXIgPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZCB9KTtcbiAgY29uc3QgZmlsZU5hbWVzID0gYXdhaXQgcmVhZGRpclBvc2l4KGJ1aWxkRm9sZGVyKTtcbiAgcmV0dXJuIGZpbGVOYW1lcy5tYXAoKGZpbGVOYW1lKSA9PiBqb2luKGJ1aWxkRm9sZGVyLCBmaWxlTmFtZSkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVWZXJzaW9uSW5GaWxlc0ZvclBsdWdpbihuZXdWZXJzaW9uOiBzdHJpbmcsIG1pbkFwcFZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBtYW5pZmVzdEJldGFKc29uUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RCZXRhSnNvbiB9KTtcbiAgaWYgKGlzUHJlUmVsZWFzZShuZXdWZXJzaW9uKSkge1xuICAgIGF3YWl0IGNwKFxuICAgICAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEpzb24gfSksXG4gICAgICBtYW5pZmVzdEJldGFKc29uUGF0aCxcbiAgICAgIHsgZm9yY2U6IHRydWUgfVxuICAgICk7XG4gICAgYXdhaXQgZWRpdEpzb248TWFuaWZlc3Q+KHtcbiAgICAgIGVkaXRGdW5jdGlvbjogKG1hbmlmZXN0KSA9PiB7XG4gICAgICAgIG1hbmlmZXN0LnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgICAgfSxcbiAgICAgIHBhdGg6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0QmV0YUpzb25cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCByZXNvbHZlZE1pbkFwcFZlcnNpb24gPSBtaW5BcHBWZXJzaW9uID8/IGF3YWl0IGdldExhdGVzdE9ic2lkaWFuVmVyc2lvbigpO1xuXG4gICAgYXdhaXQgZWRpdEpzb248TWFuaWZlc3Q+KHtcbiAgICAgIGVkaXRGdW5jdGlvbjogKG1hbmlmZXN0KSA9PiB7XG4gICAgICAgIG1hbmlmZXN0Lm1pbkFwcFZlcnNpb24gPSByZXNvbHZlZE1pbkFwcFZlcnNpb247XG4gICAgICAgIG1hbmlmZXN0LnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgICAgfSxcbiAgICAgIHBhdGg6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvblxuICAgIH0pO1xuXG4gICAgYXdhaXQgZWRpdEpzb248UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oe1xuICAgICAgZWRpdEZ1bmN0aW9uOiAodmVyc2lvbnMpID0+IHtcbiAgICAgICAgdmVyc2lvbnNbbmV3VmVyc2lvbl0gPSByZXNvbHZlZE1pbkFwcFZlcnNpb247XG4gICAgICB9LFxuICAgICAgcGF0aDogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuVmVyc2lvbnNKc29uXG4gICAgfSk7XG5cbiAgICBpZiAoZXhpc3RzU3luYyhtYW5pZmVzdEJldGFKc29uUGF0aCkpIHtcbiAgICAgIGF3YWl0IHJtKG1hbmlmZXN0QmV0YUpzb25QYXRoKTtcbiAgICB9XG4gIH1cblxuICBhd2FpdCBjb3B5VXBkYXRlZE1hbmlmZXN0KCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFVO0FBQUEsTUFDckI7QUFBQSxNQUNBLE1BQU0sMERBQXdCO0FBQUEsSUFDaEMsQ0FBQztBQUFBLEVBQ0gsT0FBTztBQUNMLFVBQU0sd0JBQXdCLGlCQUFpQixNQUFNLHlCQUF5QjtBQUU5RSxjQUFNLHNCQUFtQjtBQUFBLE1BQ3ZCLGNBQWMsQ0FBQyxhQUFhO0FBQzFCLGlCQUFTLGdCQUFnQjtBQUN6QixpQkFBUyxVQUFVO0FBQUEsTUFDckI7QUFBQSxNQUNBLE1BQU0sMERBQXdCO0FBQUEsSUFDaEMsQ0FBQztBQUVELGNBQU0sc0JBQWlDO0FBQUEsTUFDckMsY0FBYyxDQUFDLGFBQWE7QUFDMUIsaUJBQVMsVUFBVSxJQUFJO0FBQUEsTUFDekI7QUFBQSxNQUNBLE1BQU0sMERBQXdCO0FBQUEsSUFDaEMsQ0FBQztBQUVELFlBQUksMkJBQVcsb0JBQW9CLEdBQUc7QUFDcEMsZ0JBQU0sb0JBQUcsb0JBQW9CO0FBQUEsSUFDL0I7QUFBQSxFQUNGO0FBRUEsUUFBTSxvQkFBb0I7QUFDNUI7IiwKICAibmFtZXMiOiBbInVwZGF0ZVZlcnNpb25HZW5lcmljIl0KfQo=
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJzaW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBSZWxlYXNlcyBhbiBPYnNpZGlhbiBwbHVnaW46IHRoZSBnZW5lcmljIHJlbGVhc2UgZnJvbSBgQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvdmVyc2lvbmAsIHBsdXMgd2hhdCBvbmx5IGFcbiAqIHBsdWdpbiBoYXMg4oCUIGBtYW5pZmVzdC5qc29uYCAoYW5kIGBtYW5pZmVzdC1iZXRhLmpzb25gIGZvciBhIHByZS1yZWxlYXNlKSBhbmQgYHZlcnNpb25zLmpzb25gIGJ1bXBlZCB3aXRoIHRoZVxuICogcGx1Z2luJ3MgYG1pbkFwcFZlcnNpb25gLCB0aGUgdXBkYXRlZCBtYW5pZmVzdCBjb3BpZWQgaW50byBgZGlzdC9idWlsZGAsIHRoZSBkZW1vIHZhdWx0IGFyY2hpdmVkIGFzIGEgcmVsZWFzZVxuICogYXNzZXQsIGFuZCB0aGUgZmlsZXMgaW4gYGRpc3QvYnVpbGRgIGF0dGFjaGVkIHRvIHRoZSBHaXRIdWIgcmVsZWFzZSBpbnN0ZWFkIG9mIGFuIGBucG0gcGFja2AgdGFyYmFsbC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIFBhcnNlZFZlcnNpb25Bcmd1bWVudHMgYXMgR2VuZXJpY1BhcnNlZFZlcnNpb25Bcmd1bWVudHMsXG4gIFVwZGF0ZVZlcnNpb25PcHRpb25zIGFzIEdlbmVyaWNVcGRhdGVWZXJzaW9uT3B0aW9uc1xufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC92ZXJzaW9uJztcblxuaW1wb3J0IHsgcmVhZGRpclBvc2l4IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvZnMnO1xuaW1wb3J0IHsgZWRpdEpzb24gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9qc29uJztcbmltcG9ydCB7IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvcm9vdCc7XG5pbXBvcnQge1xuICBpc1ByZVJlbGVhc2UsXG4gIHRvVXBkYXRlVmVyc2lvbk9wdGlvbnMsXG4gIHVwZGF0ZVZlcnNpb24gYXMgdXBkYXRlVmVyc2lvbkdlbmVyaWMsXG4gIFZFUlNJT05fQVJHVU1FTlRfT1BUSU9OU1xufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC92ZXJzaW9uJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBjcCxcbiAgcm1cbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBwYXJzZUFyZ3MgfSBmcm9tICdub2RlOnV0aWwnO1xuXG5pbXBvcnQgeyBhcmNoaXZlUGx1Z2luRGVtb1ZhdWx0IH0gZnJvbSAnLi9kZW1vLXZhdWx0LnRzJztcbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5cbi8qKlxuICogVHlwZSByZXByZXNlbnRpbmcgdGhlIHN0cnVjdHVyZSBvZiBPYnNpZGlhbidzIGBkZXNrdG9wLXJlbGVhc2VzLmpzb25gIGZlZWQuXG4gKlxuICogVGhpcyBpcyB0aGUgZmVlZCB0aGUgZGVza3RvcCBhcHAgaXRzZWxmIHVwZGF0ZXMgZnJvbSwgc28gaXQgaXMgdGhlIG9ubHkgc291cmNlIHRoYXQgc3RhdGVzIGEgdmVyc2lvblxuICogZGVza3RvcCB1c2VycyBjYW4gYWN0dWFsbHkgcnVuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc2t0b3BSZWxlYXNlc0pzb24ge1xuICAvKipcbiAgICogVGhlIGxhdGVzdCBPYnNpZGlhbiB2ZXJzaW9uIGF2YWlsYWJsZSBmb3IgZGVza3RvcC5cbiAgICovXG4gIGxhdGVzdFZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyB0aGUgbWFuaWZlc3QgZmlsZSBmb3JtYXQgZm9yIE9ic2lkaWFuIHBsdWdpbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFuaWZlc3Qge1xuICAvKipcbiAgICogQSBtaW5pbXVtIE9ic2lkaWFuIHZlcnNpb24gcmVxdWlyZWQgZm9yIHRoZSBwbHVnaW4uXG4gICAqL1xuICBtaW5BcHBWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdmVyc2lvbiBvZiB0aGUgcGx1Z2luLlxuICAgKi9cbiAgdmVyc2lvbjogc3RyaW5nO1xufVxuLyoqXG4gKiBUaGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgZm9yIGEgcGx1Z2luIHJlbGVhc2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkVmVyc2lvbkFyZ3VtZW50cyBleHRlbmRzIEdlbmVyaWNQYXJzZWRWZXJzaW9uQXJndW1lbnRzIHtcbiAgLyoqXG4gICAqIFRoZSB7QGxpbmsgVXBkYXRlVmVyc2lvbk9wdGlvbnN9IHBhcnNlZCBmcm9tIHRoZSBmbGFncy5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbnM6IFVwZGF0ZVZlcnNpb25PcHRpb25zO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayB1cGRhdGVWZXJzaW9ufTogdGhlIGdlbmVyaWMgcmVsZWFzZSBvcHRpb25zIHBsdXMgdGhlIHBsdWdpbidzIG93bi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVWZXJzaW9uT3B0aW9ucyBleHRlbmRzIEdlbmVyaWNVcGRhdGVWZXJzaW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBleHBsaWNpdCBgbWluQXBwVmVyc2lvbmAgdG8gd3JpdGUgaW50byB0aGUgcGx1Z2luJ3MgYG1hbmlmZXN0Lmpzb25gIGFuZCBpdHMgbmV3IGB2ZXJzaW9ucy5qc29uYFxuICAgKiBlbnRyeS4gV2hlbiBzZXQsIGl0IGlzIHVzZWQgdmVyYmF0aW0gYW5kIHRoZSBsYXRlc3QgT2JzaWRpYW4gZGVza3RvcCB2ZXJzaW9uIGlzIG5vdCBmZXRjaGVkIGF0IGFsbC5cbiAgICpcbiAgICogU2V0IHRoaXMgd2hlbiB0aGUgcGx1Z2luIGhhcyBhIGtub3duIG1pbmltdW0gaXQgYWN0dWFsbHkgcmVxdWlyZXMsIHJhdGhlciB0aGFuIHRyYWNraW5nIHdoYXRldmVyXG4gICAqIE9ic2lkaWFuIHJlbGVhc2VkIG1vc3QgcmVjZW50bHkuIE9ubHkgYXBwbGllcyB0byBub24tcHJlLXJlbGVhc2UgdmVyc2lvbnMgKGEgcHJlLXJlbGVhc2UgY29waWVzIHRoZVxuICAgKiBleGlzdGluZyBgbWFuaWZlc3QuanNvbmAgYW5kIG5ldmVyIHdyaXRlcyBgbWluQXBwVmVyc2lvbmApLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgbGF0ZXN0IE9ic2lkaWFuIGRlc2t0b3AgdmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbWluQXBwVmVyc2lvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhcmNoaXZlIHRoZSBwbHVnaW4ncyBkZW1vIHZhdWx0IChgZGVtby12YXVsdC9gIGluIHRoZSByZXBvIHJvb3QpIGFzIGEgcmVsZWFzZSBhcnRpZmFjdC4gSWdub3JlZFxuICAgKiB3aGVuIHRoZSByZXBvIGhhcyBubyBgZGVtby12YXVsdC9gIGZvbGRlci5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRBcmNoaXZlRGVtb1ZhdWx0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgZmVlZCB0aGUgT2JzaWRpYW4gZGVza3RvcCBhcHAgdXBkYXRlcyBmcm9tLlxuICpcbiAqIERlbGliZXJhdGVseSBOT1QgdGhlIEdpdEh1YiBgcmVsZWFzZXMvbGF0ZXN0YCBBUEk6IHRoYXQgZW5kcG9pbnQgcmV0dXJucyB0aGUgbmV3ZXN0IHJlbGVhc2Ugb2YgYW55IGtpbmRcbiAqIGluIGBvYnNpZGlhbm1kL29ic2lkaWFuLXJlbGVhc2VzYCwgaW5jbHVkaW5nIG9uZSB3aG9zZSBvbmx5IGFzc2V0IGlzIHRoZSBBbmRyb2lkIEFQSywgd2hpY2ggbm8gZGVza3RvcFxuICogdXNlciBjYW4gaW5zdGFsbC4gU2VlIHtAbGluayBnZXRMYXRlc3RPYnNpZGlhblZlcnNpb259LlxuICovXG5jb25zdCBERVNLVE9QX1JFTEVBU0VTX0pTT05fVVJMID0gJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vYnNpZGlhbm1kL29ic2lkaWFuLXJlbGVhc2VzL21hc3Rlci9kZXNrdG9wLXJlbGVhc2VzLmpzb24nO1xuXG4vKipcbiAqIENvcGllcyB0aGUgdXBkYXRlZCBtYW5pZmVzdCBmaWxlIHRvIHRoZSBkaXN0cmlidXRpb24gYnVpbGQgZm9sZGVyLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY29weSBvcGVyYXRpb24gaXMgY29tcGxldGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5VXBkYXRlZE1hbmlmZXN0KCk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBjcChcbiAgICByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiB9KSxcbiAgICByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IGpvaW4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGlzdEJ1aWxkLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEpzb24pIH0pLFxuICAgIHsgZm9yY2U6IHRydWUgfVxuICApO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBmb3IgYSBwbHVnaW4gcmVsZWFzZTogZXZlcnkgZmxhZyB0aGUgZ2VuZXJpYyBgcGFyc2VWZXJzaW9uQXJndW1lbnRzYFxuICogcmVjb2duaXplcywgcGx1cyB0d28gb2YgdGhlIHBsdWdpbidzIG93bjpcbiAqIC0gYC0tbWluLWFwcC12ZXJzaW9uPTx4Lnkuej5gIOKAlCB3cml0ZSB0aGlzIGBtaW5BcHBWZXJzaW9uYCBpbnRvIHRoZSBwbHVnaW4ncyBgbWFuaWZlc3QuanNvbmAgYW5kIGl0cyBuZXdcbiAqICAgYHZlcnNpb25zLmpzb25gIGVudHJ5IGluc3RlYWQgb2YgdHJhY2tpbmcgdGhlIGxhdGVzdCBPYnNpZGlhbiBkZXNrdG9wIHZlcnNpb24uXG4gKiAtIGAtLW5vLWRlbW8tdmF1bHRgIOKAlCBza2lwIGFyY2hpdmluZyB0aGUgcGx1Z2luJ3MgZGVtbyB2YXVsdCAoYGRlbW8tdmF1bHQvYCkgYXMgYSByZWxlYXNlIGFydGlmYWN0LlxuICpcbiAqIEBwYXJhbSAkYXJndW1lbnRzIC0gVGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgdG8gcGFyc2UgKHR5cGljYWxseSBgcHJvY2Vzcy5hcmd2LnNsaWNlKDIpYCkuXG4gKiBAcmV0dXJucyBUaGUge0BsaW5rIFBhcnNlZFZlcnNpb25Bcmd1bWVudHN9IGNvbnRhaW5pbmcgdGhlIHZlcnNpb24gdXBkYXRlIHR5cGUgYW5kIHRoZSBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VWZXJzaW9uQXJndW1lbnRzKCRhcmd1bWVudHM6IHN0cmluZ1tdKTogUGFyc2VkVmVyc2lvbkFyZ3VtZW50cyB7XG4gIGNvbnN0IHsgcG9zaXRpb25hbHMsIHZhbHVlcyB9ID0gcGFyc2VBcmdzKHtcbiAgICBhbGxvd1Bvc2l0aW9uYWxzOiB0cnVlLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIGBhcmdzYCBpcyB0aGUgb3B0aW9uIG5hbWUgTm9kZSdzIGBwYXJzZUFyZ3NgIHJlYWRzLlxuICAgIGFyZ3M6ICRhcmd1bWVudHMsXG4gICAgb3B0aW9uczoge1xuICAgICAgLi4uVkVSU0lPTl9BUkdVTUVOVF9PUFRJT05TLFxuICAgICAgJ21pbi1hcHAtdmVyc2lvbic6IHsgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICduby1kZW1vLXZhdWx0JzogeyB0eXBlOiAnYm9vbGVhbicgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBvcHRpb25zOiB7XG4gICAgICAuLi50b1VwZGF0ZVZlcnNpb25PcHRpb25zKHZhbHVlcyksXG4gICAgICBtaW5BcHBWZXJzaW9uOiB2YWx1ZXNbJ21pbi1hcHAtdmVyc2lvbiddLFxuICAgICAgc2hvdWxkQXJjaGl2ZURlbW9WYXVsdDogISh2YWx1ZXNbJ25vLWRlbW8tdmF1bHQnXSA/PyBmYWxzZSlcbiAgICB9LFxuICAgIHZlcnNpb25VcGRhdGVUeXBlOiBwb3NpdGlvbmFsc1swXVxuICB9O1xufVxuXG4vKipcbiAqIFJlbGVhc2VzIHRoZSBwbHVnaW4uIFNlZSB0aGUgYEBmaWxlYCBvdmVydmlldyBmb3Igd2hhdCBpdCBhZGRzIHRvIHRoZSBnZW5lcmljIHJlbGVhc2UuXG4gKlxuICogQHBhcmFtIHZlcnNpb25VcGRhdGVUeXBlIC0gVGhlIHR5cGUgb2YgdmVyc2lvbiB1cGRhdGUgdG8gcGVyZm9ybSAobWFqb3IsIG1pbm9yLCBwYXRjaCwgcHJlbWFqb3IsIHByZW1pbm9yLCBwcmVwYXRjaCwgcHJlcmVsZWFzZSwgb3IgeC55LnpbLXN1ZmZpeF0pLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIFVwZGF0ZVZlcnNpb25PcHRpb25zfSBjb250cm9sbGluZyB0aGUgcmVsZWFzZSBiZWhhdmlvci5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcmVsZWFzZSBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVZlcnNpb24odmVyc2lvblVwZGF0ZVR5cGU/OiBzdHJpbmcsIG9wdGlvbnM6IFVwZGF0ZVZlcnNpb25PcHRpb25zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIG1pbkFwcFZlcnNpb24sXG4gICAgcHJlcGFyZUdpdEh1YlJlbGVhc2UsXG4gICAgc2hvdWxkQXJjaGl2ZURlbW9WYXVsdCA9IHRydWUsXG4gICAgLi4uZ2VuZXJpY09wdGlvbnNcbiAgfSA9IG9wdGlvbnM7XG5cbiAgYXdhaXQgdXBkYXRlVmVyc2lvbkdlbmVyaWModmVyc2lvblVwZGF0ZVR5cGUsIHtcbiAgICAuLi5nZW5lcmljT3B0aW9ucyxcbiAgICBnZXRSZWxlYXNlQXNzZXRQYXRoczogZ2V0UGx1Z2luUmVsZWFzZUFzc2V0UGF0aHMsXG4gICAgYXN5bmMgcHJlcGFyZUdpdEh1YlJlbGVhc2UobmV3VmVyc2lvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBhd2FpdCBwcmVwYXJlR2l0SHViUmVsZWFzZT8uKG5ld1ZlcnNpb24pO1xuICAgICAgaWYgKHNob3VsZEFyY2hpdmVEZW1vVmF1bHQpIHtcbiAgICAgICAgYXdhaXQgYXJjaGl2ZVBsdWdpbkRlbW9WYXVsdCgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgdXBkYXRlVmVyc2lvbkluRXh0cmFGaWxlcyhuZXdWZXJzaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGF3YWl0IHVwZGF0ZVZlcnNpb25JbkZpbGVzRm9yUGx1Z2luKG5ld1ZlcnNpb24sIG1pbkFwcFZlcnNpb24pO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogRmV0Y2hlcyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgT2JzaWRpYW4gdGhhdCB0aGUgZGVza3RvcCBhcHAgY2FuIGFjdHVhbGx5IHJ1bi5cbiAqXG4gKiBSZWFkcyB7QGxpbmsgREVTS1RPUF9SRUxFQVNFU19KU09OX1VSTH0sIG5vdCB0aGUgR2l0SHViIGByZWxlYXNlcy9sYXRlc3RgIEFQSS4gVGhlIEFQSSByZXR1cm5zIHRoZSBuZXdlc3RcbiAqIHJlbGVhc2Ugb2YgQU5ZIGtpbmQsIHNvIHdoZW5ldmVyIGEgbW9iaWxlLW9ubHkgcmVsZWFzZSAoYW4gQVBLLW9ubHkgYXNzZXQpIGlzIG5ld2VyIHRoYW4gdGhlIGRlc2t0b3Agb25lLFxuICogaXQgcmVwb3J0cyBhIHZlcnNpb24gdGhhdCBkb2VzIG5vdCBleGlzdCBmb3IgZGVza3RvcC4gQSBwbHVnaW4gcmVsZWFzZWQgaW4gdGhhdCB3aW5kb3cgZ2V0cyBhXG4gKiBgbWluQXBwVmVyc2lvbmAgbm8gZGVza3RvcCB1c2VyIGNhbiBzYXRpc2Z5LCBhbmQgT2JzaWRpYW4gc2lsZW50bHkga2VlcHMgb2ZmZXJpbmcgdGhlbSB0aGUgcHJldmlvdXNcbiAqIHJlbGVhc2UgaW5zdGVhZCDigJQgdGhlIHJlbGVhc2Ugc3VjY2VlZHMgYW5kIHJlYWNoZXMgbm9ib2R5LlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGxhdGVzdCBPYnNpZGlhbiB2ZXJzaW9uIGF2YWlsYWJsZSBmb3IgZGVza3RvcC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0T2JzaWRpYW5WZXJzaW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gV2UgcnVuIHRoaXMgb3V0c2lkZSBvZiBPYnNpZGlhbiwgc28gd2UgZG9uJ3QgaGF2ZSBgcmVxdWVzdFVybCgpYC5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChERVNLVE9QX1JFTEVBU0VTX0pTT05fVVJMKTtcbiAgY29uc3QgZGVza3RvcFJlbGVhc2VzSnNvbiA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBQYXJ0aWFsPERlc2t0b3BSZWxlYXNlc0pzb24+O1xuICByZXR1cm4gZW5zdXJlTm9uTnVsbGFibGUoZGVza3RvcFJlbGVhc2VzSnNvbi5sYXRlc3RWZXJzaW9uLCAnQ291bGQgbm90IGZpbmQgdGhlIGxhdGVzdCBkZXNrdG9wIE9ic2lkaWFuIHZlcnNpb24nKTtcbn1cbi8qKlxuICogVGhlIHBsdWdpbidzIHJlbGVhc2UgYXNzZXRzOiBldmVyeSBmaWxlIGluIGBkaXN0L2J1aWxkYC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgYXNzZXQgcGF0aHMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldFBsdWdpblJlbGVhc2VBc3NldFBhdGhzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3QgYnVpbGRGb2xkZXIgPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZCB9KTtcbiAgY29uc3QgZmlsZU5hbWVzID0gYXdhaXQgcmVhZGRpclBvc2l4KGJ1aWxkRm9sZGVyKTtcbiAgcmV0dXJuIGZpbGVOYW1lcy5tYXAoKGZpbGVOYW1lKSA9PiBqb2luKGJ1aWxkRm9sZGVyLCBmaWxlTmFtZSkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVWZXJzaW9uSW5GaWxlc0ZvclBsdWdpbihuZXdWZXJzaW9uOiBzdHJpbmcsIG1pbkFwcFZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBtYW5pZmVzdEJldGFKc29uUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RCZXRhSnNvbiB9KTtcbiAgaWYgKGlzUHJlUmVsZWFzZShuZXdWZXJzaW9uKSkge1xuICAgIGF3YWl0IGNwKFxuICAgICAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEpzb24gfSksXG4gICAgICBtYW5pZmVzdEJldGFKc29uUGF0aCxcbiAgICAgIHsgZm9yY2U6IHRydWUgfVxuICAgICk7XG4gICAgYXdhaXQgZWRpdEpzb248TWFuaWZlc3Q+KHtcbiAgICAgIGVkaXRGdW5jdGlvbjogKG1hbmlmZXN0KSA9PiB7XG4gICAgICAgIG1hbmlmZXN0LnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgICAgfSxcbiAgICAgIHBhdGg6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0QmV0YUpzb25cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCByZXNvbHZlZE1pbkFwcFZlcnNpb24gPSBtaW5BcHBWZXJzaW9uID8/IGF3YWl0IGdldExhdGVzdE9ic2lkaWFuVmVyc2lvbigpO1xuXG4gICAgYXdhaXQgZWRpdEpzb248TWFuaWZlc3Q+KHtcbiAgICAgIGVkaXRGdW5jdGlvbjogKG1hbmlmZXN0KSA9PiB7XG4gICAgICAgIG1hbmlmZXN0Lm1pbkFwcFZlcnNpb24gPSByZXNvbHZlZE1pbkFwcFZlcnNpb247XG4gICAgICAgIG1hbmlmZXN0LnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgICAgfSxcbiAgICAgIHBhdGg6IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvblxuICAgIH0pO1xuXG4gICAgYXdhaXQgZWRpdEpzb248UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oe1xuICAgICAgZWRpdEZ1bmN0aW9uOiAodmVyc2lvbnMpID0+IHtcbiAgICAgICAgdmVyc2lvbnNbbmV3VmVyc2lvbl0gPSByZXNvbHZlZE1pbkFwcFZlcnNpb247XG4gICAgICB9LFxuICAgICAgcGF0aDogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuVmVyc2lvbnNKc29uXG4gICAgfSk7XG5cbiAgICBpZiAoZXhpc3RzU3luYyhtYW5pZmVzdEJldGFKc29uUGF0aCkpIHtcbiAgICAgIGF3YWl0IHJtKG1hbmlmZXN0QmV0YUpzb25QYXRoKTtcbiAgICB9XG4gIH1cblxuICBhd2FpdCBjb3B5VXBkYXRlZE1hbmlmZXN0KCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -1,4 +1,4 @@
1
- /// <reference path="./index.d.cts" />
1
+ /// <reference path="./library-references.d.cts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -2,13 +2,7 @@
2
2
  THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
- symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
@@ -33,20 +27,7 @@ function ensureBrowserProcess() {
33
27
  existingProcessRecord["browser"] = true;
34
28
  }
35
29
 
36
- function keepName($unknown) {
37
- return $unknown;
38
- }
39
-
40
- (function initCjs() {
41
- const globalThisRecord = globalThis;
42
- ensureDisposeSymbols();
43
- globalThisRecord["__name"] ??= keepName;
44
- globalThisRecord["__extractDefault"] ??= extractDefault;
45
- ensureBrowserProcess();
46
- function extractDefault(module) {
47
- return module && module.__esModule && "default" in module ? module.default : module;
48
- }
49
- })();
30
+ ensureBrowserProcess();
50
31
  })();
51
32
  (function patchObsidianRequire() {
52
33
  const originalRequire = require;
@@ -131,4 +112,4 @@ var import_setup = require('./setup.cjs');
131
112
  afterEach: import_vitest.afterEach,
132
113
  beforeEach: import_vitest.beforeEach
133
114
  });
134
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZpdGVzdC1zZXR1cC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFZpdGVzdCBzZXR1cCBmaWxlIGZvciBPYnNpZGlhbiBwbHVnaW5zIGJ1aWx0IG9uIGBAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliYC5cbiAqXG4gKiBBZGQgaXQgdG8geW91ciBWaXRlc3QgY29uZmlnJ3MgYHNldHVwRmlsZXNgIChvciBpbXBvcnQgaXQgZnJvbSBhbm90aGVyIHNldHVwIGZpbGUpLiBCZWZvcmUgZWFjaFxuICogdGVzdCBpdCByZXNldHMgdGhlIGdlbmVyaWMgc2hhcmVkLXN0YXRlIHNsb3QsIHRoZSBgX19vYnNpZGlhbkRldlV0aWxzYCBiYWcgYW5kIHRoZSBsaWJyYXJ5IGNvbnRleHRzLCBhbmQgZW5hYmxlcyBhc3luYy1vcGVyYXRpb24gdHJhY2tpbmc7IGFmdGVyIGVhY2ggdGVzdCBpdFxuICogZGlzYWJsZXMgdHJhY2tpbmcsIHNvIHRlc3RzIGNhbiBgYXdhaXQgd2FpdEZvckFsbEFzeW5jT3BlcmF0aW9ucygpYCBhZ2FpbnN0IGlzb2xhdGVkIHN0YXRlLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGluIFZpdGVzdCBzZXR1cC1maWxlIGdsdWU7IHNldHVwIGlzIHVuaXQtdGVzdGVkIHNlcGFyYXRlbHkuICovXG5pbXBvcnQge1xuICBhZnRlckFsbCxcbiAgYWZ0ZXJFYWNoLFxuICBiZWZvcmVFYWNoXG59IGZyb20gJ3ZpdGVzdCc7XG5cbmltcG9ydCB7IHNldHVwIH0gZnJvbSAnLi9zZXR1cC50cyc7XG5cbnNldHVwKHtcbiAgYWZ0ZXJBbGwsXG4gIGFmdGVyRWFjaCxcbiAgYmVmb3JlRWFjaFxufSk7XG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV0Esb0JBSU87QUFFUCxtQkFBc0I7QUFBQSxJQUV0QixvQkFBTTtBQUFBLEVBQ0o7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLENBQUM7IiwKICAibmFtZXMiOiBbXQp9Cg==
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92aXRlc3Qtc2V0dXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFZpdGVzdCBzZXR1cCBmaWxlIGZvciBPYnNpZGlhbiBwbHVnaW5zIGJ1aWx0IG9uIGBAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliYC5cbiAqXG4gKiBBZGQgaXQgdG8geW91ciBWaXRlc3QgY29uZmlnJ3MgYHNldHVwRmlsZXNgIChvciBpbXBvcnQgaXQgZnJvbSBhbm90aGVyIHNldHVwIGZpbGUpLiBCZWZvcmUgZWFjaFxuICogdGVzdCBpdCByZXNldHMgdGhlIGdlbmVyaWMgc2hhcmVkLXN0YXRlIHNsb3QsIHRoZSBgX19vYnNpZGlhbkRldlV0aWxzYCBiYWcgYW5kIHRoZSBsaWJyYXJ5IGNvbnRleHRzLCBhbmQgZW5hYmxlcyBhc3luYy1vcGVyYXRpb24gdHJhY2tpbmc7IGFmdGVyIGVhY2ggdGVzdCBpdFxuICogZGlzYWJsZXMgdHJhY2tpbmcsIHNvIHRlc3RzIGNhbiBgYXdhaXQgd2FpdEZvckFsbEFzeW5jT3BlcmF0aW9ucygpYCBhZ2FpbnN0IGlzb2xhdGVkIHN0YXRlLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGluIFZpdGVzdCBzZXR1cC1maWxlIGdsdWU7IHNldHVwIGlzIHVuaXQtdGVzdGVkIHNlcGFyYXRlbHkuICovXG5pbXBvcnQge1xuICBhZnRlckFsbCxcbiAgYWZ0ZXJFYWNoLFxuICBiZWZvcmVFYWNoXG59IGZyb20gJ3ZpdGVzdCc7XG5cbmltcG9ydCB7IHNldHVwIH0gZnJvbSAnLi9zZXR1cC50cyc7XG5cbnNldHVwKHtcbiAgYWZ0ZXJBbGwsXG4gIGFmdGVyRWFjaCxcbiAgYmVmb3JlRWFjaFxufSk7XG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVdBLG9CQUlPO0FBRVAsbUJBQXNCO0FBQUEsSUFFdEIsb0JBQU07QUFBQSxFQUNKO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRixDQUFDOyIsIm5hbWVzIjpbXX0=
@@ -1,4 +1,4 @@
1
- /// <reference path="./index.d.cts" />
1
+ /// <reference path="./library-references.d.cts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -1,4 +1,4 @@
1
- /// <reference path="../../index.d.mts" />
1
+ /// <reference path="../../library-references.d.mts" />
2
2
  /**
3
3
  * @file
4
4
  *