@mnaoumov/obsidian-dev-toolkit 1.1.0 → 2.1.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.
- package/dist/demo-vault-helper/main.js +179 -1
- package/dist/integration-test-plugin/main.js +1232 -1023
- package/dist/integration-test-plugin/manifest.json +2 -2
- package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +3 -22
- package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/dependency.cjs +2 -21
- package/dist/lib/cjs/bundlers/esbuild-impl/dependency.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +2 -21
- package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +7 -53
- package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +4 -23
- package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +2 -21
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.cjs +2 -21
- package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild.cjs +1 -47
- package/dist/lib/cjs/bundlers/esbuild.d.cts +1 -1
- package/dist/lib/cjs/bundlers/index.cjs +3 -49
- package/dist/lib/cjs/bundlers/index.d.cts +1 -1
- package/dist/lib/cjs/demo-vault-app-json.cjs +2 -21
- package/dist/lib/cjs/demo-vault-app-json.d.cts +1 -1
- package/dist/lib/cjs/demo-vault-buttons.cjs +3 -22
- package/dist/lib/cjs/demo-vault-buttons.d.cts +1 -1
- package/dist/lib/cjs/demo-vault-coverage.cjs +2 -21
- package/dist/lib/cjs/demo-vault-coverage.d.cts +1 -1
- package/dist/lib/cjs/demo-vault.cjs +3 -22
- package/dist/lib/cjs/demo-vault.d.cts +1 -1
- package/dist/lib/cjs/docs-site/index.cjs +118 -0
- package/dist/lib/cjs/docs-site/index.d.cts +2 -0
- package/dist/lib/cjs/docs-site/obsidian-external-type-links.cjs +119 -0
- package/dist/lib/cjs/docs-site/obsidian-external-type-links.d.cts +25 -0
- package/dist/lib/cjs/formatters/dprint.cjs +2 -21
- package/dist/lib/cjs/formatters/dprint.d.cts +1 -1
- package/dist/lib/cjs/formatters/index.cjs +2 -48
- package/dist/lib/cjs/formatters/index.d.cts +1 -1
- package/dist/lib/cjs/index.cjs +15 -58
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/integration-test-setup.cjs +1 -47
- package/dist/lib/cjs/integration-test-setup.d.cts +5 -5
- package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +3 -22
- package/dist/lib/cjs/integration-test-vitest-global-setup.d.cts +7 -7
- package/dist/lib/cjs/jest-setup.cjs +2 -21
- package/dist/lib/cjs/jest-setup.d.cts +1 -1
- package/dist/lib/cjs/library-references.d.cts +2 -0
- package/dist/lib/cjs/linters/eslint-config.cjs +24 -40
- package/dist/lib/cjs/linters/eslint-config.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/index.cjs +16 -62
- package/dist/lib/cjs/linters/eslint-rules/index.d.cts +2 -2
- package/dist/lib/cjs/linters/eslint-rules/manifest-description.cjs +1 -47
- package/dist/lib/cjs/linters/eslint-rules/manifest-description.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.cjs +3 -22
- package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/manifest-id.cjs +1 -47
- package/dist/lib/cjs/linters/eslint-rules/manifest-id.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/manifest-name.cjs +1 -47
- package/dist/lib/cjs/linters/eslint-rules/manifest-name.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/manifest-schema.cjs +1 -47
- package/dist/lib/cjs/linters/eslint-rules/manifest-schema.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.cjs +2 -21
- package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.cjs +2 -21
- package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.cjs +2 -21
- package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-toolkit-plugin.cjs +136 -0
- package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-toolkit-plugin.d.cts +16 -0
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.cjs +1 -47
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.cjs +1 -47
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.cjs +2 -21
- package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.cjs +2 -21
- package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint.cjs +2 -21
- package/dist/lib/cjs/linters/eslint.d.cts +1 -1
- package/dist/lib/cjs/linters/index.cjs +9 -55
- package/dist/lib/cjs/linters/index.d.cts +1 -1
- package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +2 -21
- package/dist/lib/cjs/linters/markdownlint-cli2-config.d.cts +1 -1
- package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +2 -48
- package/dist/lib/cjs/linters/markdownlint-rules/index.d.cts +1 -1
- package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.cjs +2 -48
- package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.d.cts +1 -1
- package/dist/lib/cjs/linters/markdownlint.cjs +2 -21
- package/dist/lib/cjs/linters/markdownlint.d.cts +1 -1
- package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.cjs +1 -47
- package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.d.cts +1 -1
- package/dist/lib/cjs/linters/plugin-names.cjs +1 -47
- package/dist/lib/cjs/linters/plugin-names.d.cts +1 -1
- package/dist/lib/cjs/obsidian-plugin-repo-paths.cjs +1 -47
- package/dist/lib/cjs/obsidian-plugin-repo-paths.d.cts +1 -1
- package/dist/lib/cjs/setup.cjs +2 -21
- package/dist/lib/cjs/setup.d.cts +1 -1
- package/dist/lib/cjs/templates.cjs +2 -21
- package/dist/lib/cjs/templates.d.cts +1 -1
- package/dist/lib/cjs/test-runners/index.cjs +4 -50
- package/dist/lib/cjs/test-runners/index.d.cts +1 -1
- package/dist/lib/cjs/test-runners/integration-test-plugin.cjs +9 -28
- package/dist/lib/cjs/test-runners/integration-test-plugin.d.cts +5 -5
- package/dist/lib/cjs/test-runners/performance-eval-cap.cjs +1 -47
- package/dist/lib/cjs/test-runners/performance-eval-cap.d.cts +1 -1
- package/dist/lib/cjs/test-runners/stale-build-global-setup.cjs +2 -21
- package/dist/lib/cjs/test-runners/stale-build-global-setup.d.cts +1 -1
- package/dist/lib/cjs/test-runners/vitest-config.cjs +6 -25
- package/dist/lib/cjs/test-runners/vitest-config.d.cts +2 -3
- package/dist/lib/cjs/version.cjs +2 -21
- package/dist/lib/cjs/version.d.cts +1 -1
- package/dist/lib/cjs/vitest-setup.cjs +2 -21
- package/dist/lib/cjs/vitest-setup.d.cts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +2 -11
- package/dist/lib/esm/bundlers/esbuild-impl/dependency.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/dependency.mjs +2 -11
- package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +2 -11
- package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +1 -37
- package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +2 -11
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +2 -11
- package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.mjs +2 -11
- package/dist/lib/esm/bundlers/esbuild.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild.mjs +1 -37
- package/dist/lib/esm/bundlers/index.d.mts +1 -1
- package/dist/lib/esm/bundlers/index.mjs +1 -37
- package/dist/lib/esm/demo-vault-app-json.d.mts +1 -1
- package/dist/lib/esm/demo-vault-app-json.mjs +2 -11
- package/dist/lib/esm/demo-vault-buttons.d.mts +1 -1
- package/dist/lib/esm/demo-vault-buttons.mjs +2 -11
- package/dist/lib/esm/demo-vault-coverage.d.mts +1 -1
- package/dist/lib/esm/demo-vault-coverage.mjs +2 -11
- package/dist/lib/esm/demo-vault.d.mts +1 -1
- package/dist/lib/esm/demo-vault.mjs +3 -12
- package/dist/lib/esm/docs-site/index.d.mts +2 -0
- package/dist/lib/esm/docs-site/index.mjs +10 -0
- package/dist/lib/esm/docs-site/obsidian-external-type-links.d.mts +25 -0
- package/dist/lib/esm/docs-site/obsidian-external-type-links.mjs +21 -0
- package/dist/lib/esm/formatters/dprint.d.mts +1 -1
- package/dist/lib/esm/formatters/dprint.mjs +2 -11
- package/dist/lib/esm/formatters/index.d.mts +1 -1
- package/dist/lib/esm/formatters/index.mjs +1 -37
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -37
- package/dist/lib/esm/integration-test-setup.d.mts +5 -5
- package/dist/lib/esm/integration-test-setup.mjs +1 -37
- package/dist/lib/esm/integration-test-vitest-global-setup.d.mts +7 -7
- package/dist/lib/esm/integration-test-vitest-global-setup.mjs +4 -13
- package/dist/lib/esm/jest-setup.d.mts +1 -1
- package/dist/lib/esm/jest-setup.mjs +2 -11
- package/dist/lib/esm/library-references.d.mts +2 -0
- package/dist/lib/esm/linters/eslint-config.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-config.mjs +23 -29
- package/dist/lib/esm/linters/eslint-rules/index.d.mts +2 -2
- package/dist/lib/esm/linters/eslint-rules/index.mjs +3 -39
- package/dist/lib/esm/linters/eslint-rules/manifest-description.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/manifest-description.mjs +1 -37
- package/dist/lib/esm/linters/eslint-rules/manifest-helpers.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/manifest-helpers.mjs +2 -11
- package/dist/lib/esm/linters/eslint-rules/manifest-id.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/manifest-id.mjs +1 -37
- package/dist/lib/esm/linters/eslint-rules/manifest-name.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/manifest-name.mjs +1 -37
- package/dist/lib/esm/linters/eslint-rules/manifest-schema.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/manifest-schema.mjs +1 -37
- package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.mjs +2 -11
- package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.mjs +2 -11
- package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.mjs +2 -11
- package/dist/lib/esm/linters/eslint-rules/obsidian-dev-toolkit-plugin.d.mts +16 -0
- package/dist/lib/esm/linters/eslint-rules/obsidian-dev-toolkit-plugin.mjs +37 -0
- package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.mjs +1 -37
- package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.mjs +1 -37
- package/dist/lib/esm/linters/eslint-rules/require-component-suffix.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/require-component-suffix.mjs +2 -11
- package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.mjs +2 -11
- package/dist/lib/esm/linters/eslint.d.mts +1 -1
- package/dist/lib/esm/linters/eslint.mjs +2 -11
- package/dist/lib/esm/linters/index.d.mts +1 -1
- package/dist/lib/esm/linters/index.mjs +1 -37
- package/dist/lib/esm/linters/markdownlint-cli2-config.d.mts +1 -1
- package/dist/lib/esm/linters/markdownlint-cli2-config.mjs +2 -11
- package/dist/lib/esm/linters/markdownlint-rules/index.d.mts +1 -1
- package/dist/lib/esm/linters/markdownlint-rules/index.mjs +1 -37
- package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.d.mts +1 -1
- package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.mjs +1 -37
- package/dist/lib/esm/linters/markdownlint.d.mts +1 -1
- package/dist/lib/esm/linters/markdownlint.mjs +2 -11
- package/dist/lib/esm/linters/obsidianmd-rule-custom-message.d.mts +1 -1
- package/dist/lib/esm/linters/obsidianmd-rule-custom-message.mjs +1 -37
- package/dist/lib/esm/linters/plugin-names.d.mts +1 -1
- package/dist/lib/esm/linters/plugin-names.mjs +1 -37
- package/dist/lib/esm/obsidian-plugin-repo-paths.d.mts +1 -1
- package/dist/lib/esm/obsidian-plugin-repo-paths.mjs +1 -37
- package/dist/lib/esm/setup.d.mts +1 -1
- package/dist/lib/esm/setup.mjs +2 -11
- package/dist/lib/esm/templates.d.mts +1 -1
- package/dist/lib/esm/templates.mjs +2 -11
- package/dist/lib/esm/test-runners/index.d.mts +1 -1
- package/dist/lib/esm/test-runners/index.mjs +1 -37
- package/dist/lib/esm/test-runners/integration-test-plugin.d.mts +5 -5
- package/dist/lib/esm/test-runners/integration-test-plugin.mjs +8 -17
- package/dist/lib/esm/test-runners/performance-eval-cap.d.mts +1 -1
- package/dist/lib/esm/test-runners/performance-eval-cap.mjs +1 -37
- package/dist/lib/esm/test-runners/stale-build-global-setup.d.mts +1 -1
- package/dist/lib/esm/test-runners/stale-build-global-setup.mjs +2 -11
- package/dist/lib/esm/test-runners/vitest-config.d.mts +2 -3
- package/dist/lib/esm/test-runners/vitest-config.mjs +5 -14
- package/dist/lib/esm/version.d.mts +1 -1
- package/dist/lib/esm/version.mjs +2 -11
- package/dist/lib/esm/vitest-setup.d.mts +1 -1
- package/dist/lib/esm/vitest-setup.mjs +2 -11
- package/dist/templates/dprint.json +1 -0
- package/dist/templates/scripts/commitlint-config.ts +2 -2
- package/docs-site/index/package.json +6 -0
- package/docs-site/obsidian-external-type-links/package.json +6 -0
- package/docs-site/package.json +6 -0
- package/linters/eslint-rules/{obsidian-dev-utils-plugin → obsidian-dev-toolkit-plugin}/package.json +3 -3
- package/package.json +37 -6
- package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +0 -181
- package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.d.cts +0 -13
- package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.d.mts +0 -13
- package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +0 -73
|
@@ -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
|
-
|
|
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;
|
|
@@ -143,7 +124,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
143
124
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
144
125
|
var integration_test_plugin_exports = {};
|
|
145
126
|
__export(integration_test_plugin_exports, {
|
|
146
|
-
|
|
127
|
+
OBSIDIAN_DEV_TOOLKIT_INTEGRATION_TEST_PLUGIN_ID: () => OBSIDIAN_DEV_TOOLKIT_INTEGRATION_TEST_PLUGIN_ID,
|
|
147
128
|
getIntegrationTestPluginPopulate: () => getIntegrationTestPluginPopulate,
|
|
148
129
|
registerIntegrationTestLibResolver: () => registerIntegrationTestLibResolver
|
|
149
130
|
});
|
|
@@ -163,17 +144,17 @@ var __import_meta_url = globalThis["import.meta.url"] ?? (function getObsidianCj
|
|
|
163
144
|
}
|
|
164
145
|
return typeof window === "undefined" ? "" : activeWindow.location.href;
|
|
165
146
|
})();
|
|
166
|
-
const
|
|
147
|
+
const OBSIDIAN_DEV_TOOLKIT_INTEGRATION_TEST_PLUGIN_ID = "obsidian-dev-toolkit-integration-test";
|
|
167
148
|
function getIntegrationTestPluginPopulate() {
|
|
168
149
|
const packageFolder = (0, import_root.getRootFolder)((0, import_path.getFolderName)(__import_meta_url));
|
|
169
150
|
if (!packageFolder) {
|
|
170
|
-
throw new Error("Could not resolve the obsidian-dev-
|
|
151
|
+
throw new Error("Could not resolve the @mnaoumov/obsidian-dev-toolkit package folder to seed the integration-test harness plugin.");
|
|
171
152
|
}
|
|
172
153
|
const pluginSourceFolder = (0, import_path.join)(packageFolder, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DistIntegrationTestPlugin);
|
|
173
154
|
const pluginVaultFolder = (0, import_path.join)(
|
|
174
155
|
import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DotObsidian,
|
|
175
156
|
import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.Plugins,
|
|
176
|
-
|
|
157
|
+
OBSIDIAN_DEV_TOOLKIT_INTEGRATION_TEST_PLUGIN_ID
|
|
177
158
|
);
|
|
178
159
|
const populate = {};
|
|
179
160
|
for (const fileName of [import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.MainJs, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.ManifestJson]) {
|
|
@@ -183,7 +164,7 @@ function getIntegrationTestPluginPopulate() {
|
|
|
183
164
|
content = (0, import_node_fs.readFileSync)(sourcePath);
|
|
184
165
|
} catch (error) {
|
|
185
166
|
throw new Error(
|
|
186
|
-
`Could not read ${sourcePath}. The integration-test harness plugin is missing from the installed obsidian-dev-
|
|
167
|
+
`Could not read ${sourcePath}. The integration-test harness plugin is missing from the installed @mnaoumov/obsidian-dev-toolkit package \u2014 reinstall it, or run \`npm run build\` in its checkout.`,
|
|
187
168
|
{ cause: error }
|
|
188
169
|
);
|
|
189
170
|
}
|
|
@@ -196,7 +177,7 @@ function registerIntegrationTestLibResolver() {
|
|
|
196
177
|
const obsidianDevUtilsModule = window.__obsidianDevUtilsModule;
|
|
197
178
|
if (!obsidianDevUtilsModule) {
|
|
198
179
|
throw new Error(
|
|
199
|
-
"The
|
|
180
|
+
"The library module is not exposed on `window`. Is the @mnaoumov/obsidian-dev-toolkit integration-test harness plugin installed and enabled in the test vault? See `@mnaoumov/obsidian-dev-toolkit/integration-test-vitest-global-setup`."
|
|
200
181
|
);
|
|
201
182
|
}
|
|
202
183
|
return obsidianDevUtilsModule.__merged;
|
|
@@ -204,8 +185,8 @@ function registerIntegrationTestLibResolver() {
|
|
|
204
185
|
}
|
|
205
186
|
// Annotate the CommonJS export names for ESM import in node:
|
|
206
187
|
0 && (module.exports = {
|
|
207
|
-
|
|
188
|
+
OBSIDIAN_DEV_TOOLKIT_INTEGRATION_TEST_PLUGIN_ID,
|
|
208
189
|
getIntegrationTestPluginPopulate,
|
|
209
190
|
registerIntegrationTestLibResolver
|
|
210
191
|
});
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvaW50ZWdyYXRpb24tdGVzdC1wbHVnaW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9faW1wb3J0X21ldGFfdXJsID0gZ2xvYmFsVGhpc1snaW1wb3J0Lm1ldGEudXJsJ10gPz8gKGZ1bmN0aW9uIGdldE9ic2lkaWFuQ2pzSW1wb3J0TWV0YVVybCgpIHtcbiAgaWYgKHR5cGVvZiBfX2ZpbGVuYW1lID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvY2FsUmVxdWlyZSA9IHJlcXVpcmU7XG4gICAgY29uc3QgdXJsID0gbG9jYWxSZXF1aXJlKCdub2RlOnVybCcpO1xuICAgIGlmICh0eXBlb2YgdXJsLnBhdGhUb0ZpbGVVUkwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB1cmwucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKS5ocmVmO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZhbGxiYWNrIHRvIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgZW52aXJvbm1lbnQgaXMgdW5rbm93blxuICByZXR1cm4gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgPyAnJyA6IGFjdGl2ZVdpbmRvdy5sb2NhdGlvbi5ocmVmO1xufSkoKTtcbi8qKlxuICogQGZpbGVcbiAqXG4gKiBXaXJlcyB0aGUgc2hpcHBlZCBpbnRlZ3JhdGlvbi10ZXN0IGhhcm5lc3MgcGx1Z2luIGludG8gYSBjb25zdW1lciBwbHVnaW4ncyBpbnRlZ3JhdGlvbiB0ZXN0cywgc28gZXZlcnlcbiAqIGxpYnJhcnkgaGVscGVyIGlzIHJlYWNoYWJsZSBhcyBgbGliLjxoZWxwZXI+YCBpbnNpZGUgYW4gYGV2YWxJbk9ic2lkaWFuYCBjbG9zdXJlLlxuICpcbiAqIFR3byBoYWx2ZXMsIGFuZCBib3RoIG11c3QgYmUgd2lyZWQgb3IgYGxpYi48aGVscGVyPmAgZmFpbHM6XG4gKlxuICogLSB7QGxpbmsgZ2V0SW50ZWdyYXRpb25UZXN0UGx1Z2luUG9wdWxhdGV9IHB1dHMgdGhlIGhhcm5lc3MgcGx1Z2luJ3MgYmluYXJpZXMgaW4gdGhlIHRlc3QgdmF1bHQuIFRoZVxuICogICBoYXJuZXNzIHBsdWdpbiBpcyB3aGF0IHB1Ymxpc2hlcyB0aGUgbGlicmFyeSBvbiBgd2luZG93Ll9fb2JzaWRpYW5EZXZVdGlsc01vZHVsZWA7IGluIHRoaXMgcmVwbydzIG93blxuICogICBzdWl0ZSBpdCBJUyB0aGUgcGx1Z2luLXVuZGVyLXRlc3QsIGJ1dCBpbiBhIGNvbnN1bWVyJ3Mgc3VpdGUgdGhlIHBsdWdpbi11bmRlci10ZXN0IGlzIHRoZSBjb25zdW1lcidzIG93blxuICogICBwbHVnaW4sIHNvIHRoZSBoYXJuZXNzIGhhcyB0byByaWRlIGFsb25nIGFzIGEgc2Vjb25kLCB0ZXN0LW9ubHkgY29tbXVuaXR5IHBsdWdpbiDigJQgc2VlZGVkIGhlcmUsIGFuZFxuICogICB0dXJuZWQgb24gYnkgYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmdgJ3MgYGNyZWF0ZVNldHVwKHsgZW5hYmxlQ29tbXVuaXR5UGx1Z2lucyB9KWAuXG4gKiAtIHtAbGluayByZWdpc3RlckludGVncmF0aW9uVGVzdExpYlJlc29sdmVyfSByZWdpc3RlcnMgdGhlIHJlbmRlcmVyLXNpZGUgcmVzb2x2ZXIgdGhhdCByZWFkcyB0aGF0IGdsb2JhbC5cbiAqXG4gKiBgQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0L2ludGVncmF0aW9uLXRlc3Qtdml0ZXN0LWdsb2JhbC1zZXR1cGAgYW5kXG4gKiBgQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0L2ludGVncmF0aW9uLXRlc3Qtc2V0dXBgIGFyZSB0aGUgdHVybmtleSBlbmRwb2ludHMgdGhhdCBjYWxsIHRoZXNlIGZvciB5b3UuXG4gKi9cblxuaW1wb3J0IHsgZ2V0Um9vdEZvbGRlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L3Jvb3QnO1xuaW1wb3J0IHtcbiAgZ2V0Rm9sZGVyTmFtZSxcbiAgam9pblxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IHJlZ2lzdGVyTGliUmVzb2x2ZXIgfSBmcm9tICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nJztcblxuaW1wb3J0IHsgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMgfSBmcm9tICcuLi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5cbi8qKlxuICogVGhlIGlkIG9mIHRoZSBpbnRlZ3JhdGlvbi10ZXN0IGhhcm5lc3MgcGx1Z2luIOKAlCB0aGUgZm9sZGVyIG5hbWUgaXQgaXMgc2VlZGVkIGludG8sIGFuZCB0aGUgdmFsdWUgdG8gcGFzc1xuICogdG8gYGNyZWF0ZVNldHVwKHsgZW5hYmxlQ29tbXVuaXR5UGx1Z2lucyB9KWAgc28gdGhlIGhhcm5lc3MgZW5hYmxlcyBpdCBhZnRlciB0aGUgcGx1Z2luLXVuZGVyLXRlc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBPQlNJRElBTl9ERVZfVE9PTEtJVF9JTlRFR1JBVElPTl9URVNUX1BMVUdJTl9JRCA9ICdvYnNpZGlhbi1kZXYtdG9vbGtpdC1pbnRlZ3JhdGlvbi10ZXN0JztcblxuLyoqXG4gKiBUaGUgZmxhdCBsaWJyYXJ5IGJhcnJlbCB0aGUgaGFybmVzcyBwbHVnaW4gcHVibGlzaGVzLlxuICovXG5pbnRlcmZhY2UgT2JzaWRpYW5EZXZVdGlsc01vZHVsZSB7XG4gIF9fbWVyZ2VkOiBvYmplY3Q7XG59XG5cbi8qKlxuICogVGhlIHNoYXBlIHRoZSBoYXJuZXNzIHBsdWdpbiBwdWJsaXNoZXMgb24gdGhlIHJlbmRlcmVyJ3MgYHdpbmRvd2AuXG4gKi9cbmludGVyZmFjZSBPYnNpZGlhbkRldlV0aWxzTW9kdWxlV2luZG93IHtcbiAgX19vYnNpZGlhbkRldlV0aWxzTW9kdWxlOiBPYnNpZGlhbkRldlV0aWxzTW9kdWxlO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgdmF1bHQtcmVsYXRpdmUgZmlsZSBtYXAgdGhhdCBpbnN0YWxscyB0aGUgc2hpcHBlZCBpbnRlZ3JhdGlvbi10ZXN0IGhhcm5lc3MgcGx1Z2luLCByZWFkeSB0b1xuICogaGFuZCB0byBhIGdsb2JhbCBzZXR1cCdzIGBwb3B1bGF0ZWAgKG9yIHRvIG1lcmdlIGludG8gYSBsYXJnZXIgbWFwIHRoZSBjb25zdW1lciBhbHJlYWR5IGJ1aWxkcykuXG4gKlxuICogVGhlIHJlc3VsdCBpcyBhIGBSZWNvcmQ8c3RyaW5nLCBVaW50OEFycmF5PmAsIHdoaWNoIGlzIGFzc2lnbmFibGUgdG8gYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmdgJ3NcbiAqIGBQb3B1bGF0ZUZpbGVzUGFyYW1zYCDigJQgc28gaXQgY29tcG9zZXMgd2l0aCBgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZWAgYW5kIGZyaWVuZHMuXG4gKlxuICogQHJldHVybnMgVGhlIG1hcCBvZiB2YXVsdC1yZWxhdGl2ZSBwYXRocyB0byBmaWxlIGNvbnRlbnRzLlxuICogQHRocm93cyBJZiB0aGUgaGFybmVzcyBwbHVnaW4gd2FzIG5vdCBidWlsdCBpbnRvIHRoaXMgcGFja2FnZSDigJQgaS5lLiBgbnBtIHJ1biBidWlsZGAgbmV2ZXIgcmFuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW50ZWdyYXRpb25UZXN0UGx1Z2luUG9wdWxhdGUoKTogUmVjb3JkPHN0cmluZywgVWludDhBcnJheT4ge1xuICBjb25zdCBwYWNrYWdlRm9sZGVyID0gZ2V0Um9vdEZvbGRlcihnZXRGb2xkZXJOYW1lKGltcG9ydC5tZXRhLnVybCkpO1xuICBpZiAoIXBhY2thZ2VGb2xkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCByZXNvbHZlIHRoZSBAbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXRvb2xraXQgcGFja2FnZSBmb2xkZXIgdG8gc2VlZCB0aGUgaW50ZWdyYXRpb24tdGVzdCBoYXJuZXNzIHBsdWdpbi4nKTtcbiAgfVxuXG4gIGNvbnN0IHBsdWdpblNvdXJjZUZvbGRlciA9IGpvaW4ocGFja2FnZUZvbGRlciwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGlzdEludGVncmF0aW9uVGVzdFBsdWdpbik7XG4gIGNvbnN0IHBsdWdpblZhdWx0Rm9sZGVyID0gam9pbihcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbixcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5QbHVnaW5zLFxuICAgIE9CU0lESUFOX0RFVl9UT09MS0lUX0lOVEVHUkFUSU9OX1RFU1RfUExVR0lOX0lEXG4gICk7XG5cbiAgY29uc3QgcG9wdWxhdGU6IFJlY29yZDxzdHJpbmcsIFVpbnQ4QXJyYXk+ID0ge307XG5cbiAgZm9yIChjb25zdCBmaWxlTmFtZSBvZiBbT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFpbkpzLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEpzb25dKSB7XG4gICAgY29uc3Qgc291cmNlUGF0aCA9IGpvaW4ocGx1Z2luU291cmNlRm9sZGVyLCBmaWxlTmFtZSk7XG4gICAgbGV0IGNvbnRlbnQ6IFVpbnQ4QXJyYXk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnRlbnQgPSByZWFkRmlsZVN5bmMoc291cmNlUGF0aCk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENvdWxkIG5vdCByZWFkICR7c291cmNlUGF0aH0uIFRoZSBpbnRlZ3JhdGlvbi10ZXN0IGhhcm5lc3MgcGx1Z2luIGlzIG1pc3NpbmcgZnJvbSB0aGUgaW5zdGFsbGVkIGBcbiAgICAgICAgICArICdAbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXRvb2xraXQgcGFja2FnZSDigJQgcmVpbnN0YWxsIGl0LCBvciBydW4gYG5wbSBydW4gYnVpbGRgIGluIGl0cyBjaGVja291dC4nLFxuICAgICAgICB7IGNhdXNlOiBlcnJvciB9XG4gICAgICApO1xuICAgIH1cbiAgICBwb3B1bGF0ZVtqb2luKHBsdWdpblZhdWx0Rm9sZGVyLCBmaWxlTmFtZSldID0gY29udGVudDtcbiAgfVxuXG4gIHJldHVybiBwb3B1bGF0ZTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIHJlbmRlcmVyLXNpZGUgcmVzb2x2ZXIgdGhhdCBtZXJnZXMgdGhlIHdob2xlIGxpYnJhcnkgaW50byB0aGUgYGxpYmAgYXJndW1lbnQgb2YgZXZlcnlcbiAqIGBldmFsSW5PYnNpZGlhbmAgY2FsbGJhY2ssIHJlYWRpbmcgaXQgZnJvbSB0aGUgZ2xvYmFsIHRoZSBoYXJuZXNzIHBsdWdpbiBwdWJsaXNoZXMuXG4gKlxuICogQ2FsbCBvbmNlIHBlciB0ZXN0IHdvcmtlciDigJQgdGhlIHB1Ymxpc2hlZCBgQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0L2ludGVncmF0aW9uLXRlc3Qtc2V0dXBgIGVuZHBvaW50IGRvZXMgaXRcbiAqIGZvciB5b3Ugd2hlbiBsaXN0ZWQgaW4gYHNldHVwRmlsZXNgLiBSZWdpc3RyYXRpb24gaXMgaWRlbXBvdGVudCAodGhlIGhhcm5lc3MgZGVkdXBlcyByZXNvbHZlcnMgYnkgc291cmNlXG4gKiB0ZXh0KSwgc28gY2FsbGluZyBpdCBtb3JlIHRoYW4gb25jZSBpcyBzYWZlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJJbnRlZ3JhdGlvblRlc3RMaWJSZXNvbHZlcigpOiB2b2lkIHtcbiAgcmVnaXN0ZXJMaWJSZXNvbHZlcigoKTogb2JqZWN0ID0+IHtcbiAgICBjb25zdCBvYnNpZGlhbkRldlV0aWxzTW9kdWxlID0gKHdpbmRvdyBhcyBQYXJ0aWFsPE9ic2lkaWFuRGV2VXRpbHNNb2R1bGVXaW5kb3c+KS5fX29ic2lkaWFuRGV2VXRpbHNNb2R1bGU7XG4gICAgaWYgKCFvYnNpZGlhbkRldlV0aWxzTW9kdWxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdUaGUgbGlicmFyeSBtb2R1bGUgaXMgbm90IGV4cG9zZWQgb24gYHdpbmRvd2AuIElzIHRoZSBAbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXRvb2xraXQgaW50ZWdyYXRpb24tdGVzdCAnXG4gICAgICAgICAgKyAnaGFybmVzcyBwbHVnaW4gaW5zdGFsbGVkIGFuZCBlbmFibGVkIGluIHRoZSB0ZXN0IHZhdWx0PyBTZWUgJ1xuICAgICAgICAgICsgJ2BAbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXRvb2xraXQvaW50ZWdyYXRpb24tdGVzdC12aXRlc3QtZ2xvYmFsLXNldHVwYC4nXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gb2JzaWRpYW5EZXZVdGlsc01vZHVsZS5fX21lcmdlZDtcbiAgfSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQStCQSxrQkFBOEI7QUFDOUIsa0JBR087QUFDUCxxQkFBNkI7QUFDN0IsMENBQW9DO0FBRXBDLHdDQUF3QztBQXZDeEMsSUFBSSxvQkFBb0IsV0FBVyxpQkFBaUIsTUFBTSxTQUFTLDhCQUE4QjtBQUMvRixNQUFJLE9BQU8sZUFBZSxVQUFVO0FBQ2xDLFVBQU0sZUFBZTtBQUNyQixVQUFNLE1BQU0sYUFBYSxVQUFVO0FBQ25DLFFBQUksT0FBTyxJQUFJLGtCQUFrQixZQUFZO0FBQzNDLGFBQU8sSUFBSSxjQUFjLFVBQVUsRUFBRTtBQUFBLElBQ3ZDO0FBQUEsRUFDRjtBQUdBLFNBQU8sT0FBTyxXQUFXLGNBQWMsS0FBSyxhQUFhLFNBQVM7QUFDcEUsR0FBRztBQWtDSSxNQUFNLGtEQUFrRDtBQTBCeEQsU0FBUyxtQ0FBK0Q7QUFDN0UsUUFBTSxvQkFBZ0IsK0JBQWMsMkJBQWMsaUJBQWUsQ0FBQztBQUNsRSxNQUFJLENBQUMsZUFBZTtBQUNsQixVQUFNLElBQUksTUFBTSxrSEFBa0g7QUFBQSxFQUNwSTtBQUVBLFFBQU0seUJBQXFCLGtCQUFLLGVBQWUsMERBQXdCLHlCQUF5QjtBQUNoRyxRQUFNLHdCQUFvQjtBQUFBLElBQ3hCLDBEQUF3QjtBQUFBLElBQ3hCLDBEQUF3QjtBQUFBLElBQ3hCO0FBQUEsRUFDRjtBQUVBLFFBQU0sV0FBdUMsQ0FBQztBQUU5QyxhQUFXLFlBQVksQ0FBQywwREFBd0IsUUFBUSwwREFBd0IsWUFBWSxHQUFHO0FBQzdGLFVBQU0saUJBQWEsa0JBQUssb0JBQW9CLFFBQVE7QUFDcEQsUUFBSTtBQUNKLFFBQUk7QUFDRixvQkFBVSw2QkFBYSxVQUFVO0FBQUEsSUFDbkMsU0FBUyxPQUFnQjtBQUN2QixZQUFNLElBQUk7QUFBQSxRQUNSLGtCQUFrQixVQUFVO0FBQUEsUUFFNUIsRUFBRSxPQUFPLE1BQU07QUFBQSxNQUNqQjtBQUFBLElBQ0Y7QUFDQSxpQkFBUyxrQkFBSyxtQkFBbUIsUUFBUSxDQUFDLElBQUk7QUFBQSxFQUNoRDtBQUVBLFNBQU87QUFDVDtBQVVPLFNBQVMscUNBQTJDO0FBQ3pELCtEQUFvQixNQUFjO0FBQ2hDLFVBQU0seUJBQTBCLE9BQWlEO0FBQ2pGLFFBQUksQ0FBQyx3QkFBd0I7QUFDM0IsWUFBTSxJQUFJO0FBQUEsUUFDUjtBQUFBLE1BR0Y7QUFBQSxJQUNGO0FBQ0EsV0FBTyx1QkFBdUI7QUFBQSxFQUNoQyxDQUFDO0FBQ0g7IiwibmFtZXMiOltdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/// <reference path="../
|
|
1
|
+
/// <reference path="../library-references.d.cts" />
|
|
2
2
|
/**
|
|
3
3
|
* @file
|
|
4
4
|
*
|
|
@@ -14,14 +14,14 @@
|
|
|
14
14
|
* turned on by `obsidian-integration-testing`'s `createSetup({ enableCommunityPlugins })`.
|
|
15
15
|
* - {@link registerIntegrationTestLibResolver} registers the renderer-side resolver that reads that global.
|
|
16
16
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
17
|
+
* `@mnaoumov/obsidian-dev-toolkit/integration-test-vitest-global-setup` and
|
|
18
|
+
* `@mnaoumov/obsidian-dev-toolkit/integration-test-setup` are the turnkey endpoints that call these for you.
|
|
19
19
|
*/
|
|
20
20
|
/**
|
|
21
21
|
* The id of the integration-test harness plugin — the folder name it is seeded into, and the value to pass
|
|
22
22
|
* to `createSetup({ enableCommunityPlugins })` so the harness enables it after the plugin-under-test.
|
|
23
23
|
*/
|
|
24
|
-
export declare const
|
|
24
|
+
export declare const OBSIDIAN_DEV_TOOLKIT_INTEGRATION_TEST_PLUGIN_ID = "obsidian-dev-toolkit-integration-test";
|
|
25
25
|
/**
|
|
26
26
|
* Builds the vault-relative file map that installs the shipped integration-test harness plugin, ready to
|
|
27
27
|
* hand to a global setup's `populate` (or to merge into a larger map the consumer already builds).
|
|
@@ -37,7 +37,7 @@ export declare function getIntegrationTestPluginPopulate(): Record<string, Uint8
|
|
|
37
37
|
* Registers the renderer-side resolver that merges the whole library into the `lib` argument of every
|
|
38
38
|
* `evalInObsidian` callback, reading it from the global the harness plugin publishes.
|
|
39
39
|
*
|
|
40
|
-
* Call once per test worker — the published
|
|
40
|
+
* Call once per test worker — the published `@mnaoumov/obsidian-dev-toolkit/integration-test-setup` endpoint does it
|
|
41
41
|
* for you when listed in `setupFiles`. Registration is idempotent (the harness dedupes resolvers by source
|
|
42
42
|
* text), so calling it more than once is safe.
|
|
43
43
|
*/
|
|
@@ -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,
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvcGVyZm9ybWFuY2UtZXZhbC1jYXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBwZXItZXZhbCBjYXAgb2YgdGhlIGBpbnRlZ3JhdGlvbi10ZXN0czpkZXNrdG9wLXBlcmZvcm1hbmNlYCBwcm9qZWN0LCBhbmQgdGhlIGZpbGUgc3VmZml4IHRoYXRcbiAqIHByb2plY3QgY29sbGVjdHMuXG4gKlxuICogQm90aCBsaXZlIGhlcmUsIHJhdGhlciB0aGFuIGluIGB2aXRlc3QtY29uZmlnLnRzYCwgYmVjYXVzZSB0aGUgYG5vLW92ZXItY2FwLXdhaXQtaW4tZXZhbC1pbi1vYnNpZGlhbmBcbiAqIEVTTGludCBydWxlIHJlYWRzIHRoZW0gdG9vLCBhbmQgdGhlIHNoYXJlZCBFU0xpbnQgY29uZmlnIGxvYWRzIHRoYXQgcnVsZSBpbiBldmVyeSBjb25zdW1pbmcgcmVwbzpcbiAqIGltcG9ydGluZyBgdml0ZXN0LWNvbmZpZy50c2AgZnJvbSB0aGUgcnVsZSB3b3VsZCBsb2FkIGB2aXRlc3QvY29uZmlnYCBhdCBsaW50IHRpbWUgZm9yIG5vdGhpbmcuXG4gKi9cblxuLyoqXG4gKiBUaGUgcGVyLWV2YWwgY2FwIHRoZSBgaW50ZWdyYXRpb24tdGVzdHM6ZGVza3RvcC1wZXJmb3JtYW5jZWAgcHJvamVjdCBnaXZlcyBpdHMgQ0RQIHRyYW5zcG9ydCwgaW5cbiAqIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBFdmVyeSBvdGhlciBwcm9qZWN0IGtlZXBzIHRoZSB0cmFuc3BvcnQncyBvd24gYERFRkFVTFRfRVZBTF9DQVBfSU5fTUlMTElTRUNPTkRTYCAoMzAgMDAwKSwgYW5kIGEgcmVwb1xuICogdGhhdCByYWlzZXMgaXRzIGRlc2t0b3AgY2FwIGFib3ZlIHRoYXQgaXMgc2V0dGluZyBhIEJBQ0tTVE9QLCBub3QgYSBidWRnZXQgYSBjbG9zdXJlIG1heSBzcGVuZC4gVGhlXG4gKiBwZXJmb3JtYW5jZSBwcm9qZWN0IGlzIHRoZSBvbmUgZXhjZXB0aW9uLCBhbmQgYSBkZWxpYmVyYXRlIG9uZTogaXRzIHdob2xlIG1lYXN1cmVtZW50IGlzIG9uZSBsb25nXG4gKiBpbi1wYWdlIGBSdW50aW1lLmV2YWx1YXRlYCBvdmVyIGEgdmF1bHQgb2YgdGVucyBvZiB0aG91c2FuZHMgb2Ygbm90ZXMsIGFuZCBpdHMgZmlsZXMgcnVuIG9uIG5vIG90aGVyXG4gKiBwcm9qZWN0LiBBIGNyb3NzLXBsYXRmb3JtIHN1aXRlIGdhaW5zIG5vdGhpbmcgZnJvbSBhbnkgZGVza3RvcCByYWlzZSwgYmVjYXVzZSBBcHBpdW0gY2FwcyBpdCBhdFxuICogMzAgMDAwIHdoYXRldmVyIHRoZSBkZXNrdG9wIHByb2plY3Qgc2F5cy5cbiAqL1xuZXhwb3J0IGNvbnN0IFBFUkZPUk1BTkNFX0VWQUxfQ0FQX0lOX01JTExJU0VDT05EUyA9IDYwMF8wMDA7XG5cbi8qKlxuICogVGhlIGZpbGUtbmFtZSBzdWZmaXggb2YgYSBzdWl0ZSB0aGUgYGludGVncmF0aW9uLXRlc3RzOmRlc2t0b3AtcGVyZm9ybWFuY2VgIHByb2plY3QgY29sbGVjdHMuXG4gKi9cbmV4cG9ydCBjb25zdCBERVNLVE9QX1BFUkZPUk1BTkNFX1RFU1RfRklMRV9TVUZGSVggPSAnLmRlc2t0b3AtcGVyZm9ybWFuY2UuaW50ZWdyYXRpb24udGVzdC50cyc7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzQk8sTUFBTSx1Q0FBdUM7QUFLN0MsTUFBTSx1Q0FBdUM7IiwibmFtZXMiOltdfQ==
|
|
@@ -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
|
-
|
|
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
|
|
@@ -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
|
-
|
|
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(
|
|
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-
|
|
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: ["@
|
|
356
|
+
inline: ["@mnaoumov", "@obsidian-typings"]
|
|
376
357
|
}
|
|
377
358
|
},
|
|
378
359
|
setupFiles: [
|
|
379
360
|
"obsidian-test-mocks/vitest-setup",
|
|
380
|
-
"obsidian-dev-
|
|
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="../
|
|
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
|
|
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}.
|