@mnaoumov/obsidian-dev-toolkit 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -1
- package/dist/demo-vault-helper/main.js +678 -18
- package/dist/integration-test-plugin/main.js +12075 -3087
- package/dist/integration-test-plugin/manifest.json +2 -2
- package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +6 -38
- 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 +5 -37
- package/dist/lib/cjs/bundlers/esbuild-impl/dependency.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +5 -37
- 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 -66
- package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +7 -39
- package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +5 -37
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.cjs +5 -37
- package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.d.cts +1 -1
- package/dist/lib/cjs/bundlers/esbuild.cjs +1 -60
- package/dist/lib/cjs/bundlers/esbuild.d.cts +1 -1
- package/dist/lib/cjs/bundlers/index.cjs +3 -62
- package/dist/lib/cjs/bundlers/index.d.cts +1 -1
- package/dist/lib/cjs/demo-vault-app-json.cjs +5 -37
- package/dist/lib/cjs/demo-vault-app-json.d.cts +1 -1
- package/dist/lib/cjs/demo-vault-buttons.cjs +6 -38
- package/dist/lib/cjs/demo-vault-buttons.d.cts +8 -8
- package/dist/lib/cjs/demo-vault-coverage.cjs +7 -38
- package/dist/lib/cjs/demo-vault-coverage.d.cts +1 -1
- package/dist/lib/cjs/demo-vault.cjs +6 -38
- package/dist/lib/cjs/demo-vault.d.cts +1 -1
- package/dist/lib/cjs/formatters/dprint.cjs +5 -37
- package/dist/lib/cjs/formatters/dprint.d.cts +1 -1
- package/dist/lib/cjs/formatters/index.cjs +2 -61
- package/dist/lib/cjs/formatters/index.d.cts +1 -1
- package/dist/lib/cjs/index.cjs +12 -71
- package/dist/lib/cjs/integration-test-setup.cjs +1 -60
- package/dist/lib/cjs/integration-test-setup.d.cts +5 -5
- package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +6 -38
- package/dist/lib/cjs/integration-test-vitest-global-setup.d.cts +7 -7
- package/dist/lib/cjs/jest-setup.cjs +5 -37
- 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 +71 -49
- package/dist/lib/cjs/linters/eslint-config.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/index.cjs +26 -73
- package/dist/lib/cjs/linters/eslint-rules/index.d.cts +6 -2
- package/dist/lib/cjs/linters/eslint-rules/manifest-description.cjs +1 -60
- package/dist/lib/cjs/linters/eslint-rules/manifest-description.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.cjs +6 -38
- package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/manifest-id.cjs +1 -60
- package/dist/lib/cjs/linters/eslint-rules/manifest-id.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/manifest-name.cjs +1 -60
- package/dist/lib/cjs/linters/eslint-rules/manifest-name.d.cts +1 -1
- package/dist/lib/cjs/linters/eslint-rules/manifest-schema.cjs +1 -60
- 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 +240 -0
- package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.d.cts +10 -0
- package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.cjs +5 -37
- 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 +5 -37
- 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 +217 -0
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.d.cts +30 -0
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.cjs +169 -0
- package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.d.cts +29 -0
- package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.cjs +5 -37
- 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 +287 -0
- package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.d.cts +10 -0
- package/dist/lib/cjs/linters/eslint.cjs +5 -37
- package/dist/lib/cjs/linters/eslint.d.cts +1 -1
- package/dist/lib/cjs/linters/index.cjs +17 -67
- package/dist/lib/cjs/linters/index.d.cts +4 -1
- package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +152 -0
- package/dist/lib/cjs/linters/markdownlint-cli2-config.d.cts +12 -0
- package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +118 -0
- package/dist/lib/cjs/linters/markdownlint-rules/index.d.cts +2 -0
- package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.cjs +200 -0
- package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.d.cts +32 -0
- package/dist/lib/cjs/linters/markdownlint.cjs +5 -37
- package/dist/lib/cjs/linters/markdownlint.d.cts +1 -1
- package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.cjs +1 -60
- package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.d.cts +1 -1
- package/dist/lib/cjs/linters/plugin-names.cjs +203 -0
- package/dist/lib/cjs/linters/plugin-names.d.cts +81 -0
- package/dist/lib/cjs/obsidian-plugin-repo-paths.cjs +1 -60
- package/dist/lib/cjs/obsidian-plugin-repo-paths.d.cts +1 -1
- package/dist/lib/cjs/setup.cjs +5 -37
- package/dist/lib/cjs/setup.d.cts +1 -1
- package/dist/lib/cjs/templates.cjs +5 -37
- package/dist/lib/cjs/templates.d.cts +1 -1
- package/dist/lib/cjs/test-runners/index.cjs +4 -63
- package/dist/lib/cjs/test-runners/index.d.cts +1 -1
- package/dist/lib/cjs/test-runners/integration-test-plugin.cjs +12 -44
- package/dist/lib/cjs/test-runners/integration-test-plugin.d.cts +5 -5
- package/dist/lib/cjs/test-runners/performance-eval-cap.cjs +1 -60
- package/dist/lib/cjs/test-runners/performance-eval-cap.d.cts +1 -1
- package/dist/lib/cjs/test-runners/stale-build-global-setup.cjs +5 -37
- package/dist/lib/cjs/test-runners/stale-build-global-setup.d.cts +1 -1
- package/dist/lib/cjs/test-runners/vitest-config.cjs +9 -41
- package/dist/lib/cjs/test-runners/vitest-config.d.cts +2 -3
- package/dist/lib/cjs/version.cjs +5 -37
- package/dist/lib/cjs/version.d.cts +1 -1
- package/dist/lib/cjs/vitest-setup.cjs +5 -37
- 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 +5 -22
- package/dist/lib/esm/bundlers/esbuild-impl/dependency.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/dependency.mjs +5 -22
- 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 +5 -22
- package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +1 -45
- 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 +5 -22
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +5 -22
- 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 +5 -22
- package/dist/lib/esm/bundlers/esbuild.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild.mjs +1 -45
- package/dist/lib/esm/bundlers/index.d.mts +1 -1
- package/dist/lib/esm/bundlers/index.mjs +1 -45
- package/dist/lib/esm/demo-vault-app-json.d.mts +1 -1
- package/dist/lib/esm/demo-vault-app-json.mjs +5 -22
- package/dist/lib/esm/demo-vault-buttons.d.mts +8 -8
- package/dist/lib/esm/demo-vault-buttons.mjs +5 -22
- package/dist/lib/esm/demo-vault-coverage.d.mts +1 -1
- package/dist/lib/esm/demo-vault-coverage.mjs +7 -23
- package/dist/lib/esm/demo-vault.d.mts +1 -1
- package/dist/lib/esm/demo-vault.mjs +6 -23
- package/dist/lib/esm/formatters/dprint.d.mts +1 -1
- package/dist/lib/esm/formatters/dprint.mjs +5 -22
- package/dist/lib/esm/formatters/index.d.mts +1 -1
- package/dist/lib/esm/formatters/index.mjs +1 -45
- package/dist/lib/esm/index.mjs +1 -45
- package/dist/lib/esm/integration-test-setup.d.mts +5 -5
- package/dist/lib/esm/integration-test-setup.mjs +1 -45
- package/dist/lib/esm/integration-test-vitest-global-setup.d.mts +7 -7
- package/dist/lib/esm/integration-test-vitest-global-setup.mjs +7 -24
- package/dist/lib/esm/jest-setup.d.mts +1 -1
- package/dist/lib/esm/jest-setup.mjs +5 -22
- 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 +70 -33
- package/dist/lib/esm/linters/eslint-rules/index.d.mts +6 -2
- package/dist/lib/esm/linters/eslint-rules/index.mjs +12 -48
- package/dist/lib/esm/linters/eslint-rules/manifest-description.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/manifest-description.mjs +1 -45
- package/dist/lib/esm/linters/eslint-rules/manifest-helpers.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/manifest-helpers.mjs +5 -22
- package/dist/lib/esm/linters/eslint-rules/manifest-id.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/manifest-id.mjs +1 -45
- package/dist/lib/esm/linters/eslint-rules/manifest-name.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/manifest-name.mjs +1 -45
- package/dist/lib/esm/linters/eslint-rules/manifest-schema.d.mts +1 -1
- package/dist/lib/esm/linters/eslint-rules/manifest-schema.mjs +1 -45
- package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.d.mts +10 -0
- package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.mjs +141 -0
- 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 +5 -22
- 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 +5 -22
- 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 +30 -0
- package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.mjs +121 -0
- package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.d.mts +29 -0
- package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.mjs +72 -0
- 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 +5 -22
- package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.d.mts +10 -0
- package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.mjs +188 -0
- package/dist/lib/esm/linters/eslint.d.mts +1 -1
- package/dist/lib/esm/linters/eslint.mjs +5 -22
- package/dist/lib/esm/linters/index.d.mts +4 -1
- package/dist/lib/esm/linters/index.mjs +8 -46
- package/dist/lib/esm/linters/markdownlint-cli2-config.d.mts +12 -0
- package/dist/lib/esm/linters/markdownlint-cli2-config.mjs +57 -0
- package/dist/lib/esm/linters/markdownlint-rules/index.d.mts +2 -0
- package/dist/lib/esm/linters/markdownlint-rules/index.mjs +10 -0
- package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.d.mts +32 -0
- package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.mjs +94 -0
- package/dist/lib/esm/linters/markdownlint.d.mts +1 -1
- package/dist/lib/esm/linters/markdownlint.mjs +5 -22
- package/dist/lib/esm/linters/obsidianmd-rule-custom-message.d.mts +1 -1
- package/dist/lib/esm/linters/obsidianmd-rule-custom-message.mjs +1 -45
- package/dist/lib/esm/linters/plugin-names.d.mts +81 -0
- package/dist/lib/esm/linters/plugin-names.mjs +105 -0
- package/dist/lib/esm/obsidian-plugin-repo-paths.d.mts +1 -1
- package/dist/lib/esm/obsidian-plugin-repo-paths.mjs +1 -45
- package/dist/lib/esm/setup.d.mts +1 -1
- package/dist/lib/esm/setup.mjs +5 -22
- package/dist/lib/esm/templates.d.mts +1 -1
- package/dist/lib/esm/templates.mjs +5 -22
- package/dist/lib/esm/test-runners/index.d.mts +1 -1
- package/dist/lib/esm/test-runners/index.mjs +1 -45
- package/dist/lib/esm/test-runners/integration-test-plugin.d.mts +5 -5
- package/dist/lib/esm/test-runners/integration-test-plugin.mjs +11 -28
- package/dist/lib/esm/test-runners/performance-eval-cap.d.mts +1 -1
- package/dist/lib/esm/test-runners/performance-eval-cap.mjs +1 -45
- 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 +5 -22
- package/dist/lib/esm/test-runners/vitest-config.d.mts +2 -3
- package/dist/lib/esm/test-runners/vitest-config.mjs +8 -25
- package/dist/lib/esm/version.d.mts +1 -1
- package/dist/lib/esm/version.mjs +5 -22
- package/dist/lib/esm/vitest-setup.d.mts +1 -1
- package/dist/lib/esm/vitest-setup.mjs +5 -22
- package/dist/templates/scripts/markdownlint-cli2-config.ts +2 -2
- package/linters/eslint-rules/no-local-obsidian-internals/package.json +6 -0
- package/linters/eslint-rules/{obsidian-dev-utils-plugin → obsidian-dev-toolkit-plugin}/package.json +3 -3
- package/linters/eslint-rules/plugin-name-as-code/package.json +6 -0
- package/linters/eslint-rules/plugin-name-as-code-in-ui/package.json +6 -0
- package/linters/eslint-rules/require-plugin-api-contract-schemas/package.json +6 -0
- package/linters/markdownlint-cli2-config/package.json +6 -0
- package/linters/markdownlint-rules/index/package.json +6 -0
- package/linters/markdownlint-rules/package.json +6 -0
- package/linters/markdownlint-rules/plugin-name-as-code/package.json +6 -0
- package/linters/plugin-names/package.json +6 -0
- package/package.json +86 -25
- package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +0 -186
- 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,49 +2,32 @@
|
|
|
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,
|
|
15
9
|
cwd() {
|
|
16
|
-
return
|
|
10
|
+
return "/";
|
|
17
11
|
},
|
|
18
12
|
env: {},
|
|
19
|
-
platform:
|
|
13
|
+
platform: "android"
|
|
20
14
|
};
|
|
21
|
-
|
|
22
|
-
// eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
|
|
23
15
|
const existingProcess = globalThis.process;
|
|
24
|
-
|
|
25
16
|
if (!existingProcess) {
|
|
26
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
27
17
|
globalThis.process = browserProcess;
|
|
28
18
|
return;
|
|
29
19
|
}
|
|
30
|
-
|
|
31
20
|
if (existingProcess.versions?.node) {
|
|
32
21
|
return;
|
|
33
22
|
}
|
|
34
|
-
|
|
35
23
|
const existingProcessRecord = existingProcess;
|
|
36
|
-
|
|
37
24
|
for (const [key, value] of Object.entries(browserProcess)) {
|
|
38
25
|
existingProcessRecord[key] ??= value;
|
|
39
26
|
}
|
|
40
|
-
|
|
41
|
-
existingProcessRecord['browser'] = true;
|
|
27
|
+
existingProcessRecord["browser"] = true;
|
|
42
28
|
}
|
|
43
29
|
|
|
44
|
-
(
|
|
45
|
-
ensureDisposeSymbols();
|
|
46
|
-
ensureBrowserProcess();
|
|
47
|
-
})();
|
|
30
|
+
ensureBrowserProcess();
|
|
48
31
|
})();
|
|
49
32
|
|
|
50
33
|
import {
|
|
@@ -135,7 +118,7 @@ function injectAppJson(params) {
|
|
|
135
118
|
async function injectDemoVaultHelper(demoedPluginId) {
|
|
136
119
|
const packageFolder = getRootFolder(getFolderName(import.meta.url));
|
|
137
120
|
if (!packageFolder) {
|
|
138
|
-
throw new Error("Could not resolve the obsidian-dev-
|
|
121
|
+
throw new Error("Could not resolve the @mnaoumov/obsidian-dev-toolkit package folder to inject the demo-vault-helper plugin.");
|
|
139
122
|
}
|
|
140
123
|
const helperSourcePath = join(packageFolder, ObsidianPluginRepoPaths.DistDemoVaultHelper);
|
|
141
124
|
const helperFolder = resolvePathFromRootSafe({
|
|
@@ -202,4 +185,4 @@ async function readDemoVaultEntries(params) {
|
|
|
202
185
|
export {
|
|
203
186
|
archivePluginDemoVault
|
|
204
187
|
};
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RlbW8tdmF1bHQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBBcmNoaXZlcyBhIHBsdWdpbidzIGRlbW8gdmF1bHQgYXMgYSByZWxlYXNlIGFydGlmYWN0LlxuICpcbiAqIEEgcGx1Z2luIGNhbiBzaGlwIGEgY3VyYXRlZCBkZW1vIHZhdWx0IGF0IGBkZW1vLXZhdWx0L2AgaW4gaXRzIHJlcG8gcm9vdC4gQXQgcmVsZWFzZSB0aW1lIHRoaXNcbiAqIG1vZHVsZSBpbnN0YWxscyB0aGUgZnJlc2hseSBidWlsdCBwbHVnaW4gaW50byB0aGF0IHZhdWx0J3MgYC5vYnNpZGlhbi9wbHVnaW5zLzxpZD4vYCBmb2xkZXIgYW5kXG4gKiB6aXBzIHRoZSB3aG9sZSB2YXVsdCBpbnRvIGBkaXN0L2J1aWxkLzxwbHVnaW4taWQ+LWRlbW8tdmF1bHQuemlwYCwgc28gdGhlIGV4aXN0aW5nIEdpdEh1Yi1yZWxlYXNlXG4gKiBzdGVwICh3aGljaCB1cGxvYWRzIGV2ZXJ5IGZpbGUgaW4gYGRpc3QvYnVpbGQvYCkgYXR0YWNoZXMgaXQgYXV0b21hdGljYWxseS5cbiAqXG4gKiBUaGUgdmVyc2lvbiBpcyBkZWxpYmVyYXRlbHkgYWJzZW50IGZyb20gdGhhdCBuYW1lIGFuZCBsaXZlcyBJTlNJREUgdGhlIGFyY2hpdmUgaW5zdGVhZCBcdTIwMTQgc2VlXG4gKiBgb2JzaWRpYW4vZGVtby12YXVsdC1uYW1pbmcudHNgIGZvciB3aHkgXHUyMDE0IGluIHRoZSB0d28gcGxhY2VzIGEgcGVyc29uIGFjdHVhbGx5IG1lZXRzIGl0OiB0aGUgdmF1bHRcbiAqIHNpdHMgdW5kZXIgYSBzaW5nbGUgYDxwbHVnaW4taWQ+LWRlbW8tdmF1bHQtPHZlcnNpb24+L2AgZm9sZGVyLCBzbyB1bnppcHBpbmcgc2V2ZXJhbCByZWxlYXNlcyBieSBoYW5kXG4gKiBpbnRvIG9uZSBmb2xkZXIgbmVpdGhlciBjb2xsaWRlcyBub3IgcHJvZHVjZXMgYW5vbnltb3VzIGRpcmVjdG9yaWVzLCBhbmQgdGhlIHZhdWx0J3MgYFJFQURNRS5tZGBcbiAqIGhlYWRpbmcgZ2FpbnMgdGhlIHZlcnNpb24gaXQgZGVtb25zdHJhdGVzLlxuICpcbiAqIFRoZSBhcmNoaXZlZCBjb3B5IGFsc28gY2FycmllcyB0aGUgYC5vYnNpZGlhbi9hcHAuanNvbmAgc2V0dGluZ3MgdGhpcyBwYWNrYWdlIG93bnMgKHNlZVxuICogYGRlbW8tdmF1bHQtYXBwLWpzb24udHNgKS4gVGhvc2Ugc2V0dGluZ3MgYW5kIHRoZSBSRUFETUUgaGVhZGluZyBhcmUgd3JpdHRlbiBpbnRvIHRoZSBaSVAgRU5UUlkgYW5kXG4gKiBuZXZlciBpbnRvIHRoZSByZXBvIGZvbGRlcjogYm90aCBmaWxlcyBhcmUgdHJhY2tlZCwgYW5kIGB1cGRhdGVWZXJzaW9uYCBhcmNoaXZlcyBhZnRlciBpdCBoYXMgYWxyZWFkeVxuICogcHVzaGVkLCBzbyBhbiBpbi1wbGFjZSB3cml0ZSB3b3VsZCBsZWF2ZSBhbiB1bmNvbW1pdHRlZCBjaGFuZ2UgYmVoaW5kIGEgcHVibGlzaGVkIHJlbGVhc2UuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBEZW1vVmF1bHRIZWxwZXJTZXR0aW5ncyB9IGZyb20gJ0BtbmFvdW1vdi9vYnNpZGlhbi1saWIvZGVtby12YXVsdC1oZWxwZXItc2V0dGluZ3MnO1xuXG5pbXBvcnQge1xuICBnZXREZW1vVmF1bHRBcmNoaXZlRmlsZU5hbWUsXG4gIGdldERlbW9WYXVsdEZvbGRlck5hbWVcbn0gZnJvbSAnQG1uYW91bW92L29ic2lkaWFuLWxpYi9kZW1vLXZhdWx0LW5hbWluZyc7XG5pbXBvcnQgeyByZWFkZGlyUG9zaXggfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9mcyc7XG5pbXBvcnQge1xuICBnZXRSb290Rm9sZGVyLFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yb290JztcbmltcG9ydCB7XG4gIGdldEZvbGRlck5hbWUsXG4gIGpvaW4sXG4gIHJlbGF0aXZlXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9wYXRoJztcbmltcG9ydCB7IHppcFN5bmMgfSBmcm9tICdmZmxhdGUnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIG1rZGlyLFxuICByZWFkRmlsZSxcbiAgd3JpdGVGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuXG5pbXBvcnQgdHlwZSB7IERlbW9WYXVsdEFwcEpzb24gfSBmcm9tICcuL2RlbW8tdmF1bHQtYXBwLWpzb24udHMnO1xuXG5pbXBvcnQge1xuICBidWlsZEFyY2hpdmVkRGVtb1ZhdWx0QXBwSnNvbkNvbnRlbnQsXG4gIGZpbmRPd25lZERlbW9WYXVsdEFwcEpzb25TZXR0aW5ncyxcbiAgcGFyc2VEZW1vVmF1bHRBcHBKc29uXG59IGZyb20gJy4vZGVtby12YXVsdC1hcHAtanNvbi50cyc7XG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4vb2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMudHMnO1xuXG5jb25zdCBERU1PX1ZBVUxUX0hFTFBFUl9QTFVHSU5fSUQgPSAnZGVtby12YXVsdC1oZWxwZXInO1xuY29uc3QgREFUQV9KU09OX0ZJTEVfTkFNRSA9ICdkYXRhLmpzb24nO1xuY29uc3QgREFUQV9KU09OX0lOREVOVCA9IDI7XG5jb25zdCBSRUFETUVfRklMRV9OQU1FID0gJ1JFQURNRS5tZCc7XG5cbi8vIFRoZSBSRUFETUUncyBvcGVuaW5nIGAjIEgxYCwgYW5kIG9ubHkgdGhhdCBvbmU6IHdpdGhvdXQgdGhlIGBtYCBmbGFnIHRoZSBtYXRjaCBpcyBhbmNob3JlZCB0byB0aGUgc3RhcnRcbi8vIG9mIHRoZSBmaWxlLCBhbmQgYC5gIHN0b3BzIGF0IHRoZSBuZXdsaW5lIHRoYXQgZW5kcyB0aGUgbGluZS5cbmNvbnN0IE9QRU5JTkdfSEVBRElOR19SRUdfRVhQID0gL14jIC4qLztcblxuLyoqXG4gKiBUaGUgYXJjaGl2ZSdzIGVudHJpZXMsIGtleWVkIGJ5IHRoZSBuYW1lIGVhY2ggb25lIHRha2VzIGluc2lkZSB0aGUgWklQLlxuICpcbiAqIFRoZSB3aG9sZSBhcmNoaXZlIGlzIGFzc2VtYmxlZCBhcyB0aGlzIG1hcCBhbmQgc2VyaWFsaXplZCBvbmNlLCBzbyBpbmplY3RpbmcgYW4gZW50cnkgaXMgYW4gb3JkaW5hcnlcbiAqIGBzZXRgIHJhdGhlciB0aGFuIGEgbXV0YXRpb24gb2YgYSBoYWxmLWJ1aWx0IGFyY2hpdmUgb2JqZWN0LlxuICovXG50eXBlIERlbW9WYXVsdFppcEVudHJpZXMgPSBNYXA8c3RyaW5nLCBCdWZmZXI+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpbmplY3RBcHBKc29ufS5cbiAqL1xuaW50ZXJmYWNlIEluamVjdEFwcEpzb25QYXJhbXMge1xuICAvKipcbiAgICogVGhlIGNvbW1pdHRlZCBzZXR0aW5ncyB0aGUgb3duZWQgb25lcyBhcmUgbWVyZ2VkIG92ZXIuXG4gICAqL1xuICByZWFkb25seSBhcHBKc29uOiBEZW1vVmF1bHRBcHBKc29uO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJjaGl2ZSdzIGVudHJpZXMsIGVkaXRlZCBpbiBwbGFjZS5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM6IERlbW9WYXVsdFppcEVudHJpZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBhcmNoaXZlJ3Mgc2luZ2xlIHRvcC1sZXZlbCBmb2xkZXIsIHdoaWNoIGV2ZXJ5IGVudHJ5IG5hbWUgaXMgcmVsYXRpdmUgdG8uXG4gICAqL1xuICByZWFkb25seSByb290Rm9sZGVyTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpbmplY3RSZWFkbWVWZXJzaW9ufS5cbiAqL1xuaW50ZXJmYWNlIEluamVjdFJlYWRtZVZlcnNpb25QYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFyY2hpdmUncyBlbnRyaWVzLCBlZGl0ZWQgaW4gcGxhY2UuXG4gICAqL1xuICByZWFkb25seSBlbnRyaWVzOiBEZW1vVmF1bHRaaXBFbnRyaWVzO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJjaGl2ZSdzIHNpbmdsZSB0b3AtbGV2ZWwgZm9sZGVyLCB3aGljaCBldmVyeSBlbnRyeSBuYW1lIGlzIHJlbGF0aXZlIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9vdEZvbGRlck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBsdWdpbiB2ZXJzaW9uIHRoZSB2YXVsdCBkZW1vbnN0cmF0ZXMuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIG1pbmltYWwgc2hhcGUgb2YgYSBwbHVnaW4gYG1hbmlmZXN0Lmpzb25gIHJlYWQgYnkge0BsaW5rIGFyY2hpdmVQbHVnaW5EZW1vVmF1bHR9LlxuICovXG5pbnRlcmZhY2UgUGx1Z2luTWFuaWZlc3Qge1xuICAvKipcbiAgICogVGhlIHBsdWdpbiBpZCwgdXNlZCBhcyB0aGUgZm9sZGVyIG5hbWUgdW5kZXIgYGRlbW8tdmF1bHQvLm9ic2lkaWFuL3BsdWdpbnMvYC5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gdmVyc2lvbiwgZW1iZWRkZWQgaW4gdGhlIGFyY2hpdmUncyB0b3AtbGV2ZWwgZm9sZGVyIG5hbWUgYW5kIGl0cyBSRUFETUUgaGVhZGluZy5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVhZERlbW9WYXVsdEVudHJpZXN9LlxuICovXG5pbnRlcmZhY2UgUmVhZERlbW9WYXVsdEVudHJpZXNQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHZhdWx0IGZvbGRlciB0byByZWFkLCBhcyBhbiBhYnNvbHV0ZSBwYXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVtb1ZhdWx0UGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJjaGl2ZSdzIHNpbmdsZSB0b3AtbGV2ZWwgZm9sZGVyLCB3aGljaCBldmVyeSBlbnRyeSBuYW1lIGlzIHJlbGF0aXZlIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9vdEZvbGRlck5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcmNoaXZlcyB0aGUgcGx1Z2luJ3MgZGVtbyB2YXVsdCAoYGRlbW8tdmF1bHQvYCBpbiB0aGUgcmVwbyByb290KSBhcyBhIHJlbGVhc2UgYXJ0aWZhY3QuXG4gKlxuICogSW5zdGFsbHMgdGhlIGZyZXNobHkgYnVpbHQgcGx1Z2luIGZyb20gYGRpc3QvYnVpbGQvYCBpbnRvIHRoZSB2YXVsdCdzXG4gKiBgLm9ic2lkaWFuL3BsdWdpbnMvPGlkPi9gIGZvbGRlciwgdGhlbiB6aXBzIHRoZSB3aG9sZSB2YXVsdCB0b1xuICogYGRpc3QvYnVpbGQvPHBsdWdpbi1pZD4tZGVtby12YXVsdC56aXBgLCB1bmRlciBhIHNpbmdsZSBgPHBsdWdpbi1pZD4tZGVtby12YXVsdC08dmVyc2lvbj4vYCBmb2xkZXIuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgY3JlYXRlZCB6aXAgYXJjaGl2ZSwgb3JcbiAqIGBudWxsYCBpZiB0aGUgcmVwbyBoYXMgbm8gYGRlbW8tdmF1bHQvYCBmb2xkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcmNoaXZlUGx1Z2luRGVtb1ZhdWx0KCk6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBjb25zdCBkZW1vVmF1bHRQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EZW1vVmF1bHQgfSk7XG4gIGlmICghZXhpc3RzU3luYyhkZW1vVmF1bHRQYXRoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgbWFuaWZlc3RQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEpzb24gfSk7XG4gIGNvbnN0IG1hbmlmZXN0ID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShtYW5pZmVzdFBhdGgsICd1dGYtOCcpKSBhcyBQbHVnaW5NYW5pZmVzdDtcblxuICBjb25zdCBwbHVnaW5Gb2xkZXIgPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7XG4gICAgcGF0aDogam9pbihcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRlbW9WYXVsdCxcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRvdE9ic2lkaWFuLFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuUGx1Z2lucyxcbiAgICAgIG1hbmlmZXN0LmlkXG4gICAgKVxuICB9KTtcbiAgYXdhaXQgbWtkaXIocGx1Z2luRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBjb25zdCBkaXN0QnVpbGRQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQgfSk7XG4gIGF3YWl0IGNwKGRpc3RCdWlsZFBhdGgsIHBsdWdpbkZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgYXdhaXQgaW5qZWN0RGVtb1ZhdWx0SGVscGVyKG1hbmlmZXN0LmlkKTtcblxuICBjb25zdCB6aXBQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoe1xuICAgIHBhdGg6IGpvaW4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGlzdEJ1aWxkLCBnZXREZW1vVmF1bHRBcmNoaXZlRmlsZU5hbWUobWFuaWZlc3QuaWQpKVxuICB9KTtcbiAgY29uc3Qgcm9vdEZvbGRlck5hbWUgPSBnZXREZW1vVmF1bHRGb2xkZXJOYW1lKHtcbiAgICBwbHVnaW5JZDogbWFuaWZlc3QuaWQsXG4gICAgdmVyc2lvbjogbWFuaWZlc3QudmVyc2lvblxuICB9KTtcbiAgY29uc3QgZW50cmllcyA9IGF3YWl0IHJlYWREZW1vVmF1bHRFbnRyaWVzKHtcbiAgICBkZW1vVmF1bHRQYXRoLFxuICAgIHJvb3RGb2xkZXJOYW1lXG4gIH0pO1xuICBpbmplY3RBcHBKc29uKHtcbiAgICBhcHBKc29uOiBhd2FpdCByZWFkQ29tbWl0dGVkQXBwSnNvbigpLFxuICAgIGVudHJpZXMsXG4gICAgcm9vdEZvbGRlck5hbWVcbiAgfSk7XG4gIGluamVjdFJlYWRtZVZlcnNpb24oe1xuICAgIGVudHJpZXMsXG4gICAgcm9vdEZvbGRlck5hbWUsXG4gICAgdmVyc2lvbjogbWFuaWZlc3QudmVyc2lvblxuICB9KTtcbiAgLy8gRXZlcnkgZW50cnkgaXMgc3RhbXBlZCB3aXRoIHRoZSBtb21lbnQgdGhlIGFyY2hpdmUgaXMgYnVpbHQgcmF0aGVyIHRoYW4gdGhlIGZpbGUncyBvd24gbXRpbWUsIHdoaWNoIGlzXG4gIC8vIHdoYXQgdGhlIHByZXZpb3VzIGFyY2hpdmVyIHdyb3RlLiBBIGRlbW8gdmF1bHQncyBjb21taXR0ZWQgdGltZXN0YW1wcyBhcmUgY2hlY2tvdXQgYXJ0aWZhY3RzIG9mIHdob2V2ZXJcbiAgLy8gcmFuIHRoZSByZWxlYXNlLCBzbyB0aGV5IGNhcnJ5IG5vdGhpbmcgYSByZWFkZXIgY291bGQgdXNlOyB0aGUgYnVpbGQgdGltZSBhdCBsZWFzdCBkZXNjcmliZXMgdGhlXG4gIC8vIGFyY2hpdmUuXG4gIGF3YWl0IHdyaXRlRmlsZSh6aXBQYXRoLCB6aXBTeW5jKE9iamVjdC5mcm9tRW50cmllcyhlbnRyaWVzKSkpO1xuICByZXR1cm4gemlwUGF0aDtcbn1cblxuLy8gU3RvcmVzIHRoZSBhcmNoaXZlZCB2YXVsdCdzIGAub2JzaWRpYW4vYXBwLmpzb25gIFx1MjAxNCB0aGUgY29tbWl0dGVkIHNldHRpbmdzIHdpdGggdGhlIG93bmVkIG9uZXMgbWVyZ2VkXG4vLyBvdmVyIHRoZW0uIFRoZSBFTlRSWSBpcyB3cml0dGVuIHJhdGhlciB0aGFuIHRoZSBmaWxlLCBzbyB0aGUgcmVwbyBmb2xkZXIgaXMgbGVmdCBleGFjdGx5IGFzIGl0IHdhcywgYW5kXG4vLyBBIHZhdWx0IHdpdGggbm90aGluZyBlbHNlIHRvIGNvbmZpZ3VyZSBcdTIwMTQgd2hpY2ggY29tbWl0cyBubyBgYXBwLmpzb25gIGF0IGFsbCBcdTIwMTQgZ2V0cyBvbmUgaGVyZSByZWdhcmRsZXNzLlxuZnVuY3Rpb24gaW5qZWN0QXBwSnNvbihwYXJhbXM6IEluamVjdEFwcEpzb25QYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGFwcEpzb24sXG4gICAgZW50cmllcyxcbiAgICByb290Rm9sZGVyTmFtZVxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGVudHJ5TmFtZSA9IGpvaW4ocm9vdEZvbGRlck5hbWUsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRvdE9ic2lkaWFuLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BcHBKc29uKTtcbiAgZW50cmllcy5zZXQoZW50cnlOYW1lLCBCdWZmZXIuZnJvbShidWlsZEFyY2hpdmVkRGVtb1ZhdWx0QXBwSnNvbkNvbnRlbnQoeyBhcHBKc29uIH0pLCAndXRmLTgnKSk7XG59XG5cbi8vIEluamVjdHMgdGhlIGJ1aWx0LCBgb2JzaWRpYW4tZGV2LXV0aWxzYC1vd25lZCBgZGVtby12YXVsdC1oZWxwZXJgIGJvb3RzdHJhcCBwbHVnaW4gKHNoaXBwZWQgaW4gdGhpcyBwYWNrYWdlKSBpbnRvIHRoZSBkZW1vIHZhdWx0LCBzbyBubyBwZXItdmF1bHQgY29weSBpcyBjb21taXR0ZWQgYW5kIGFuIGBvYnNpZGlhbi1kZXYtdXRpbHNgIGJ1bXAgcHJvcGFnYXRlcyBmaXhlcy5cbi8vXG4vLyBBbG9uZ3NpZGUgdGhlIGJpbmFyaWVzIGl0IHdyaXRlcyB0aGUgaGVscGVyJ3Mgb3duIGBkYXRhLmpzb25gIG5hbWluZyB0aGUgZGVtb25zdHJhdGVkIHBsdWdpbi4gVGhhdCBpc1xuLy8gdGhlIG9uZSBtb21lbnQgdGhlIGlkIGlzIGtub3duIGZvciBjZXJ0YWluIFx1MjAxNCBpdCBjb21lcyBmcm9tIHRoZSBwbHVnaW4ncyBvd24gbWFuaWZlc3QgXHUyMDE0IHdoZXJlYXMgdGhlXG4vLyBvcGVuZWQgdmF1bHQgb25seSBvZmZlcnMgcGx1Z2luIGZvbGRlcnMgdG8gY291bnQsIHdoaWNoIHRoZSBib290c3RyYXAgaXRzZWxmIGFkZHMgdG8gKHNlZVxuLy8gYERlbW9WYXVsdEhlbHBlclNldHRpbmdzYCkuXG5hc3luYyBmdW5jdGlvbiBpbmplY3REZW1vVmF1bHRIZWxwZXIoZGVtb2VkUGx1Z2luSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwYWNrYWdlRm9sZGVyID0gZ2V0Um9vdEZvbGRlcihnZXRGb2xkZXJOYW1lKGltcG9ydC5tZXRhLnVybCkpO1xuICBpZiAoIXBhY2thZ2VGb2xkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCByZXNvbHZlIHRoZSBvYnNpZGlhbi1kZXYtdXRpbHMgcGFja2FnZSBmb2xkZXIgdG8gaW5qZWN0IHRoZSBkZW1vLXZhdWx0LWhlbHBlciBwbHVnaW4uJyk7XG4gIH1cblxuICBjb25zdCBoZWxwZXJTb3VyY2VQYXRoID0gam9pbihwYWNrYWdlRm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0RGVtb1ZhdWx0SGVscGVyKTtcbiAgY29uc3QgaGVscGVyRm9sZGVyID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoe1xuICAgIHBhdGg6IGpvaW4oXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EZW1vVmF1bHQsXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbixcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlBsdWdpbnMsXG4gICAgICBERU1PX1ZBVUxUX0hFTFBFUl9QTFVHSU5fSURcbiAgICApXG4gIH0pO1xuICBhd2FpdCBta2RpcihoZWxwZXJGb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBhd2FpdCBjcChoZWxwZXJTb3VyY2VQYXRoLCBoZWxwZXJGb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHNldHRpbmdzOiBEZW1vVmF1bHRIZWxwZXJTZXR0aW5ncyA9IHsgZGVtb2VkUGx1Z2luSWQgfTtcbiAgYXdhaXQgd3JpdGVGaWxlKGpvaW4oaGVscGVyRm9sZGVyLCBEQVRBX0pTT05fRklMRV9OQU1FKSwgYCR7SlNPTi5zdHJpbmdpZnkoc2V0dGluZ3MsIG51bGwsIERBVEFfSlNPTl9JTkRFTlQpfVxcbmAsICd1dGYtOCcpO1xufVxuXG4vLyBOYW1lcyB0aGUgdmVyc2lvbiBvbiB0aGUgYXJjaGl2ZWQgYFJFQURNRS5tZGAncyBoZWFkaW5nLCBzbyB0aGUgdmF1bHQgc2F5cyB3aGljaCByZWxlYXNlIGl0IGRlbW9uc3RyYXRlc1xuLy8gaG93ZXZlciBmYXIgaXQgdHJhdmVscyBmcm9tIHRoZSByZWxlYXNlIHBhZ2UgaXQgd2FzIGRvd25sb2FkZWQgZnJvbS5cbi8vXG4vLyBFbnRyeS1vbmx5LCBmb3IgdGhlIHNhbWUgcmVhc29uIGBpbmplY3RBcHBKc29uYCBpczogdGhlIGNvbW1pdHRlZCBSRUFETUUgaXMgYSB0cmFja2VkLCBoYW5kLWF1dGhvcmVkXG4vLyBmaWxlIGFuZCBgdXBkYXRlVmVyc2lvbmAgYXJjaGl2ZXMgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgcHVzaGVkLlxuLy9cbi8vIEEgdmF1bHQgdGhhdCBzaGlwcyBubyBSRUFETUUsIG9yIG9uZSBvcGVuaW5nIG9uIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIGAjIEgxYCwgaXMgbGVmdCBhbG9uZSByYXRoZXJcbi8vIHRoYW4gY29ycmVjdGVkLiBUaGUgZGVtby12YXVsdCBjb3ZlcmFnZSBzdWl0ZSBleGVtcHRzIGBSRUFETUUubWRgIGZyb20gaXRzIEgxIGNoZWNrLCBzbyBuZWl0aGVyIHNoYXBlXG4vLyBpcyBhIGRlZmVjdCBcdTIwMTQgYW5kIGEgcmVsZWFzZSBpcyB0aGUgd3JvbmcgbW9tZW50IHRvIHN0YXJ0IGZhaWxpbmcgb24gb25lLlxuZnVuY3Rpb24gaW5qZWN0UmVhZG1lVmVyc2lvbihwYXJhbXM6IEluamVjdFJlYWRtZVZlcnNpb25QYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGVudHJpZXMsXG4gICAgcm9vdEZvbGRlck5hbWUsXG4gICAgdmVyc2lvblxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGVudHJ5TmFtZSA9IGpvaW4ocm9vdEZvbGRlck5hbWUsIFJFQURNRV9GSUxFX05BTUUpO1xuICBjb25zdCBlbnRyeSA9IGVudHJpZXMuZ2V0KGVudHJ5TmFtZSk7XG4gIGlmICghZW50cnkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjb250ZW50ID0gZW50cnkudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gIGNvbnN0IHZlcnNpb25lZENvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoT1BFTklOR19IRUFESU5HX1JFR19FWFAsIChoZWFkaW5nKSA9PiBgJHtoZWFkaW5nfSB2JHt2ZXJzaW9ufWApO1xuICBpZiAodmVyc2lvbmVkQ29udGVudCA9PT0gY29udGVudCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGVudHJpZXMuc2V0KGVudHJ5TmFtZSwgQnVmZmVyLmZyb20odmVyc2lvbmVkQ29udGVudCwgJ3V0Zi04JykpO1xufVxuXG4vLyBSZWFkcyB0aGUgZGVtbyB2YXVsdCdzIGNvbW1pdHRlZCBgLm9ic2lkaWFuL2FwcC5qc29uYCwgcmVmdXNpbmcgdGhlIHNldHRpbmdzIHRoaXMgcGFja2FnZSBvd25zLlxuLy9cbi8vIFRob3NlIHNldHRpbmdzIGFyZSBpbmplY3RlZCBpbnRvIHRoZSBhcmNoaXZlLCBzbyBhIGNvbW1pdHRlZCBvbmUgaXMgYSBzZWNvbmQgc291cmNlIG9mIHRydXRoIHRoYXRcbi8vIG5vdGhpbmcga2VlcHMgaW4gc3RlcC4gVGhlIGRlbW8tdmF1bHQgY292ZXJhZ2Ugc3VpdGUgYWxyZWFkeSBmYWlscyBvbiBpdCwgd2hpY2ggbWVhbnMgcmVhY2hpbmcgaGVyZVxuLy8gbWVhbnMgdGhhdCBnYXRlIHdhcyBza2lwcGVkIFx1MjAxNCBzbyB0aGlzIHJlZnVzZXMgcmF0aGVyIHRoYW4gb3ZlcndyaXRpbmcgYSB2YWx1ZSBzb21lYm9keSBjaG9zZSBvbiBwdXJwb3NlLlxuYXN5bmMgZnVuY3Rpb24gcmVhZENvbW1pdHRlZEFwcEpzb24oKTogUHJvbWlzZTxEZW1vVmF1bHRBcHBKc29uPiB7XG4gIGNvbnN0IGFwcEpzb25QYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoe1xuICAgIHBhdGg6IGpvaW4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGVtb1ZhdWx0LCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbiwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQXBwSnNvbilcbiAgfSk7XG4gIGNvbnN0IGNvbnRlbnQgPSBleGlzdHNTeW5jKGFwcEpzb25QYXRoKSA/IGF3YWl0IHJlYWRGaWxlKGFwcEpzb25QYXRoLCAndXRmLTgnKSA6IG51bGw7XG4gIGNvbnN0IGFwcEpzb24gPSBwYXJzZURlbW9WYXVsdEFwcEpzb24oeyBjb250ZW50LCBwYXRoOiBhcHBKc29uUGF0aCB9KTtcblxuICBjb25zdCBvd25lZFNldHRpbmdzID0gZmluZE93bmVkRGVtb1ZhdWx0QXBwSnNvblNldHRpbmdzKHsgYXBwSnNvbiB9KTtcbiAgaWYgKG93bmVkU2V0dGluZ3MubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke2FwcEpzb25QYXRofSBzZXRzICR7b3duZWRTZXR0aW5ncy5qb2luKCcsICcpfSwgd2hpY2ggb2JzaWRpYW4tZGV2LXV0aWxzIG93bnMgYW5kIHdyaXRlcyBpbnRvIHRoZSBhcmNoaXZlZCBkZW1vIHZhdWx0LiBTZXR0aW5ncyBpdCBvd25zIG11c3Qgbm90IGJlIGNvbW1pdHRlZC5gXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBhcHBKc29uO1xufVxuXG4vLyBSZWFkcyBldmVyeSBmaWxlIGluIHRoZSBkZW1vIHZhdWx0IGFzIGFuIGFyY2hpdmUgZW50cnksIHVuZGVyIHRoZSBzaW5nbGUgdG9wLWxldmVsIGZvbGRlciB0aGUgYXJjaGl2ZVxuLy8gc2l0cyBpbi5cbi8vXG4vLyBPbmx5IEZJTEVTIGJlY29tZSBlbnRyaWVzLiBHaXQgY2Fubm90IHRyYWNrIGFuIGVtcHR5IGZvbGRlciwgc28gYSBjb21taXR0ZWQgZGVtbyB2YXVsdCBoYXMgbm9uZSBcdTIwMTQgYW5kXG4vLyBgZXh0cmFjdFppcEFyY2hpdmVgIGNyZWF0ZXMgYW4gZW50cnkncyBwYXJlbnQgZm9sZGVycyB3aGV0aGVyIG9yIG5vdCB0aGUgYXJjaGl2ZSBkZWNsYXJlZCB0aGVtLCBzbyBhXG4vLyBmb2xkZXIgZW50cnkgd291bGQgZWFybiBub3RoaW5nIGV2ZW4gaWYgb25lIGNvdWxkIGV4aXN0LlxuYXN5bmMgZnVuY3Rpb24gcmVhZERlbW9WYXVsdEVudHJpZXMocGFyYW1zOiBSZWFkRGVtb1ZhdWx0RW50cmllc1BhcmFtcyk6IFByb21pc2U8RGVtb1ZhdWx0WmlwRW50cmllcz4ge1xuICBjb25zdCB7XG4gICAgZGVtb1ZhdWx0UGF0aCxcbiAgICByb290Rm9sZGVyTmFtZVxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGVudHJpZXM6IERlbW9WYXVsdFppcEVudHJpZXMgPSBuZXcgTWFwPHN0cmluZywgQnVmZmVyPigpO1xuICBmb3IgKGNvbnN0IGRpcmVudCBvZiBhd2FpdCByZWFkZGlyUG9zaXgoZGVtb1ZhdWx0UGF0aCwgeyByZWN1cnNpdmU6IHRydWUsIHdpdGhGaWxlVHlwZXM6IHRydWUgfSkpIHtcbiAgICBpZiAoIWRpcmVudC5pc0ZpbGUoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aCA9IGpvaW4oZGlyZW50LnBhcmVudFBhdGgsIGRpcmVudC5uYW1lKTtcbiAgICBlbnRyaWVzLnNldChqb2luKHJvb3RGb2xkZXJOYW1lLCByZWxhdGl2ZShkZW1vVmF1bHRQYXRoLCBwYXRoKSksIGF3YWl0IHJlYWRGaWxlKHBhdGgpKTtcbiAgfVxuXG4gIHJldHVybiBlbnRyaWVzO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsb0JBQW9CO0FBQzdCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxlQUFlO0FBQ3hCLFNBQVMsa0JBQWtCO0FBQzNCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFJUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLCtCQUErQjtBQUV4QyxNQUFNLDhCQUE4QjtBQUNwQyxNQUFNLHNCQUFzQjtBQUM1QixNQUFNLG1CQUFtQjtBQUN6QixNQUFNLG1CQUFtQjtBQUl6QixNQUFNLDBCQUEwQjtBQTBGaEMsZUFBc0IseUJBQWlEO0FBQ3JFLFFBQU0sZ0JBQWdCLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLFVBQVUsQ0FBQztBQUN6RixNQUFJLENBQUMsV0FBVyxhQUFhLEdBQUc7QUFDOUIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLGVBQWUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsYUFBYSxDQUFDO0FBQzNGLFFBQU0sV0FBVyxLQUFLLE1BQU0sTUFBTSxTQUFTLGNBQWMsT0FBTyxDQUFDO0FBRWpFLFFBQU0sZUFBZSx3QkFBd0I7QUFBQSxJQUMzQyxNQUFNO0FBQUEsTUFDSix3QkFBd0I7QUFBQSxNQUN4Qix3QkFBd0I7QUFBQSxNQUN4Qix3QkFBd0I7QUFBQSxNQUN4QixTQUFTO0FBQUEsSUFDWDtBQUFBLEVBQ0YsQ0FBQztBQUNELFFBQU0sTUFBTSxjQUFjLEVBQUUsV0FBVyxLQUFL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
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZW1vLXZhdWx0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBBcmNoaXZlcyBhIHBsdWdpbidzIGRlbW8gdmF1bHQgYXMgYSByZWxlYXNlIGFydGlmYWN0LlxuICpcbiAqIEEgcGx1Z2luIGNhbiBzaGlwIGEgY3VyYXRlZCBkZW1vIHZhdWx0IGF0IGBkZW1vLXZhdWx0L2AgaW4gaXRzIHJlcG8gcm9vdC4gQXQgcmVsZWFzZSB0aW1lIHRoaXNcbiAqIG1vZHVsZSBpbnN0YWxscyB0aGUgZnJlc2hseSBidWlsdCBwbHVnaW4gaW50byB0aGF0IHZhdWx0J3MgYC5vYnNpZGlhbi9wbHVnaW5zLzxpZD4vYCBmb2xkZXIgYW5kXG4gKiB6aXBzIHRoZSB3aG9sZSB2YXVsdCBpbnRvIGBkaXN0L2J1aWxkLzxwbHVnaW4taWQ+LWRlbW8tdmF1bHQuemlwYCwgc28gdGhlIGV4aXN0aW5nIEdpdEh1Yi1yZWxlYXNlXG4gKiBzdGVwICh3aGljaCB1cGxvYWRzIGV2ZXJ5IGZpbGUgaW4gYGRpc3QvYnVpbGQvYCkgYXR0YWNoZXMgaXQgYXV0b21hdGljYWxseS5cbiAqXG4gKiBUaGUgdmVyc2lvbiBpcyBkZWxpYmVyYXRlbHkgYWJzZW50IGZyb20gdGhhdCBuYW1lIGFuZCBsaXZlcyBJTlNJREUgdGhlIGFyY2hpdmUgaW5zdGVhZCDigJQgc2VlXG4gKiBgb2JzaWRpYW4vZGVtby12YXVsdC1uYW1pbmcudHNgIGZvciB3aHkg4oCUIGluIHRoZSB0d28gcGxhY2VzIGEgcGVyc29uIGFjdHVhbGx5IG1lZXRzIGl0OiB0aGUgdmF1bHRcbiAqIHNpdHMgdW5kZXIgYSBzaW5nbGUgYDxwbHVnaW4taWQ+LWRlbW8tdmF1bHQtPHZlcnNpb24+L2AgZm9sZGVyLCBzbyB1bnppcHBpbmcgc2V2ZXJhbCByZWxlYXNlcyBieSBoYW5kXG4gKiBpbnRvIG9uZSBmb2xkZXIgbmVpdGhlciBjb2xsaWRlcyBub3IgcHJvZHVjZXMgYW5vbnltb3VzIGRpcmVjdG9yaWVzLCBhbmQgdGhlIHZhdWx0J3MgYFJFQURNRS5tZGBcbiAqIGhlYWRpbmcgZ2FpbnMgdGhlIHZlcnNpb24gaXQgZGVtb25zdHJhdGVzLlxuICpcbiAqIFRoZSBhcmNoaXZlZCBjb3B5IGFsc28gY2FycmllcyB0aGUgYC5vYnNpZGlhbi9hcHAuanNvbmAgc2V0dGluZ3MgdGhpcyBwYWNrYWdlIG93bnMgKHNlZVxuICogYGRlbW8tdmF1bHQtYXBwLWpzb24udHNgKS4gVGhvc2Ugc2V0dGluZ3MgYW5kIHRoZSBSRUFETUUgaGVhZGluZyBhcmUgd3JpdHRlbiBpbnRvIHRoZSBaSVAgRU5UUlkgYW5kXG4gKiBuZXZlciBpbnRvIHRoZSByZXBvIGZvbGRlcjogYm90aCBmaWxlcyBhcmUgdHJhY2tlZCwgYW5kIGB1cGRhdGVWZXJzaW9uYCBhcmNoaXZlcyBhZnRlciBpdCBoYXMgYWxyZWFkeVxuICogcHVzaGVkLCBzbyBhbiBpbi1wbGFjZSB3cml0ZSB3b3VsZCBsZWF2ZSBhbiB1bmNvbW1pdHRlZCBjaGFuZ2UgYmVoaW5kIGEgcHVibGlzaGVkIHJlbGVhc2UuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBEZW1vVmF1bHRIZWxwZXJTZXR0aW5ncyB9IGZyb20gJ0BtbmFvdW1vdi9vYnNpZGlhbi1saWIvZGVtby12YXVsdC1oZWxwZXItc2V0dGluZ3MnO1xuXG5pbXBvcnQge1xuICBnZXREZW1vVmF1bHRBcmNoaXZlRmlsZU5hbWUsXG4gIGdldERlbW9WYXVsdEZvbGRlck5hbWVcbn0gZnJvbSAnQG1uYW91bW92L29ic2lkaWFuLWxpYi9kZW1vLXZhdWx0LW5hbWluZyc7XG5pbXBvcnQgeyByZWFkZGlyUG9zaXggfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9mcyc7XG5pbXBvcnQge1xuICBnZXRSb290Rm9sZGVyLFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yb290JztcbmltcG9ydCB7XG4gIGdldEZvbGRlck5hbWUsXG4gIGpvaW4sXG4gIHJlbGF0aXZlXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9wYXRoJztcbmltcG9ydCB7IHppcFN5bmMgfSBmcm9tICdmZmxhdGUnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIG1rZGlyLFxuICByZWFkRmlsZSxcbiAgd3JpdGVGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuXG5pbXBvcnQgdHlwZSB7IERlbW9WYXVsdEFwcEpzb24gfSBmcm9tICcuL2RlbW8tdmF1bHQtYXBwLWpzb24udHMnO1xuXG5pbXBvcnQge1xuICBidWlsZEFyY2hpdmVkRGVtb1ZhdWx0QXBwSnNvbkNvbnRlbnQsXG4gIGZpbmRPd25lZERlbW9WYXVsdEFwcEpzb25TZXR0aW5ncyxcbiAgcGFyc2VEZW1vVmF1bHRBcHBKc29uXG59IGZyb20gJy4vZGVtby12YXVsdC1hcHAtanNvbi50cyc7XG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4vb2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMudHMnO1xuXG5jb25zdCBERU1PX1ZBVUxUX0hFTFBFUl9QTFVHSU5fSUQgPSAnZGVtby12YXVsdC1oZWxwZXInO1xuY29uc3QgREFUQV9KU09OX0ZJTEVfTkFNRSA9ICdkYXRhLmpzb24nO1xuY29uc3QgREFUQV9KU09OX0lOREVOVCA9IDI7XG5jb25zdCBSRUFETUVfRklMRV9OQU1FID0gJ1JFQURNRS5tZCc7XG5cbi8vIFRoZSBSRUFETUUncyBvcGVuaW5nIGAjIEgxYCwgYW5kIG9ubHkgdGhhdCBvbmU6IHdpdGhvdXQgdGhlIGBtYCBmbGFnIHRoZSBtYXRjaCBpcyBhbmNob3JlZCB0byB0aGUgc3RhcnRcbi8vIG9mIHRoZSBmaWxlLCBhbmQgYC5gIHN0b3BzIGF0IHRoZSBuZXdsaW5lIHRoYXQgZW5kcyB0aGUgbGluZS5cbmNvbnN0IE9QRU5JTkdfSEVBRElOR19SRUdfRVhQID0gL14jIC4qLztcblxuLyoqXG4gKiBUaGUgYXJjaGl2ZSdzIGVudHJpZXMsIGtleWVkIGJ5IHRoZSBuYW1lIGVhY2ggb25lIHRha2VzIGluc2lkZSB0aGUgWklQLlxuICpcbiAqIFRoZSB3aG9sZSBhcmNoaXZlIGlzIGFzc2VtYmxlZCBhcyB0aGlzIG1hcCBhbmQgc2VyaWFsaXplZCBvbmNlLCBzbyBpbmplY3RpbmcgYW4gZW50cnkgaXMgYW4gb3JkaW5hcnlcbiAqIGBzZXRgIHJhdGhlciB0aGFuIGEgbXV0YXRpb24gb2YgYSBoYWxmLWJ1aWx0IGFyY2hpdmUgb2JqZWN0LlxuICovXG50eXBlIERlbW9WYXVsdFppcEVudHJpZXMgPSBNYXA8c3RyaW5nLCBCdWZmZXI+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpbmplY3RBcHBKc29ufS5cbiAqL1xuaW50ZXJmYWNlIEluamVjdEFwcEpzb25QYXJhbXMge1xuICAvKipcbiAgICogVGhlIGNvbW1pdHRlZCBzZXR0aW5ncyB0aGUgb3duZWQgb25lcyBhcmUgbWVyZ2VkIG92ZXIuXG4gICAqL1xuICByZWFkb25seSBhcHBKc29uOiBEZW1vVmF1bHRBcHBKc29uO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJjaGl2ZSdzIGVudHJpZXMsIGVkaXRlZCBpbiBwbGFjZS5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM6IERlbW9WYXVsdFppcEVudHJpZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBhcmNoaXZlJ3Mgc2luZ2xlIHRvcC1sZXZlbCBmb2xkZXIsIHdoaWNoIGV2ZXJ5IGVudHJ5IG5hbWUgaXMgcmVsYXRpdmUgdG8uXG4gICAqL1xuICByZWFkb25seSByb290Rm9sZGVyTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpbmplY3RSZWFkbWVWZXJzaW9ufS5cbiAqL1xuaW50ZXJmYWNlIEluamVjdFJlYWRtZVZlcnNpb25QYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFyY2hpdmUncyBlbnRyaWVzLCBlZGl0ZWQgaW4gcGxhY2UuXG4gICAqL1xuICByZWFkb25seSBlbnRyaWVzOiBEZW1vVmF1bHRaaXBFbnRyaWVzO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJjaGl2ZSdzIHNpbmdsZSB0b3AtbGV2ZWwgZm9sZGVyLCB3aGljaCBldmVyeSBlbnRyeSBuYW1lIGlzIHJlbGF0aXZlIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9vdEZvbGRlck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBsdWdpbiB2ZXJzaW9uIHRoZSB2YXVsdCBkZW1vbnN0cmF0ZXMuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIG1pbmltYWwgc2hhcGUgb2YgYSBwbHVnaW4gYG1hbmlmZXN0Lmpzb25gIHJlYWQgYnkge0BsaW5rIGFyY2hpdmVQbHVnaW5EZW1vVmF1bHR9LlxuICovXG5pbnRlcmZhY2UgUGx1Z2luTWFuaWZlc3Qge1xuICAvKipcbiAgICogVGhlIHBsdWdpbiBpZCwgdXNlZCBhcyB0aGUgZm9sZGVyIG5hbWUgdW5kZXIgYGRlbW8tdmF1bHQvLm9ic2lkaWFuL3BsdWdpbnMvYC5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gdmVyc2lvbiwgZW1iZWRkZWQgaW4gdGhlIGFyY2hpdmUncyB0b3AtbGV2ZWwgZm9sZGVyIG5hbWUgYW5kIGl0cyBSRUFETUUgaGVhZGluZy5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVhZERlbW9WYXVsdEVudHJpZXN9LlxuICovXG5pbnRlcmZhY2UgUmVhZERlbW9WYXVsdEVudHJpZXNQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHZhdWx0IGZvbGRlciB0byByZWFkLCBhcyBhbiBhYnNvbHV0ZSBwYXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVtb1ZhdWx0UGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJjaGl2ZSdzIHNpbmdsZSB0b3AtbGV2ZWwgZm9sZGVyLCB3aGljaCBldmVyeSBlbnRyeSBuYW1lIGlzIHJlbGF0aXZlIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9vdEZvbGRlck5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcmNoaXZlcyB0aGUgcGx1Z2luJ3MgZGVtbyB2YXVsdCAoYGRlbW8tdmF1bHQvYCBpbiB0aGUgcmVwbyByb290KSBhcyBhIHJlbGVhc2UgYXJ0aWZhY3QuXG4gKlxuICogSW5zdGFsbHMgdGhlIGZyZXNobHkgYnVpbHQgcGx1Z2luIGZyb20gYGRpc3QvYnVpbGQvYCBpbnRvIHRoZSB2YXVsdCdzXG4gKiBgLm9ic2lkaWFuL3BsdWdpbnMvPGlkPi9gIGZvbGRlciwgdGhlbiB6aXBzIHRoZSB3aG9sZSB2YXVsdCB0b1xuICogYGRpc3QvYnVpbGQvPHBsdWdpbi1pZD4tZGVtby12YXVsdC56aXBgLCB1bmRlciBhIHNpbmdsZSBgPHBsdWdpbi1pZD4tZGVtby12YXVsdC08dmVyc2lvbj4vYCBmb2xkZXIuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgY3JlYXRlZCB6aXAgYXJjaGl2ZSwgb3JcbiAqIGBudWxsYCBpZiB0aGUgcmVwbyBoYXMgbm8gYGRlbW8tdmF1bHQvYCBmb2xkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcmNoaXZlUGx1Z2luRGVtb1ZhdWx0KCk6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBjb25zdCBkZW1vVmF1bHRQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EZW1vVmF1bHQgfSk7XG4gIGlmICghZXhpc3RzU3luYyhkZW1vVmF1bHRQYXRoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgbWFuaWZlc3RQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEpzb24gfSk7XG4gIGNvbnN0IG1hbmlmZXN0ID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShtYW5pZmVzdFBhdGgsICd1dGYtOCcpKSBhcyBQbHVnaW5NYW5pZmVzdDtcblxuICBjb25zdCBwbHVnaW5Gb2xkZXIgPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7XG4gICAgcGF0aDogam9pbihcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRlbW9WYXVsdCxcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRvdE9ic2lkaWFuLFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuUGx1Z2lucyxcbiAgICAgIG1hbmlmZXN0LmlkXG4gICAgKVxuICB9KTtcbiAgYXdhaXQgbWtkaXIocGx1Z2luRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBjb25zdCBkaXN0QnVpbGRQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQgfSk7XG4gIGF3YWl0IGNwKGRpc3RCdWlsZFBhdGgsIHBsdWdpbkZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgYXdhaXQgaW5qZWN0RGVtb1ZhdWx0SGVscGVyKG1hbmlmZXN0LmlkKTtcblxuICBjb25zdCB6aXBQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoe1xuICAgIHBhdGg6IGpvaW4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGlzdEJ1aWxkLCBnZXREZW1vVmF1bHRBcmNoaXZlRmlsZU5hbWUobWFuaWZlc3QuaWQpKVxuICB9KTtcbiAgY29uc3Qgcm9vdEZvbGRlck5hbWUgPSBnZXREZW1vVmF1bHRGb2xkZXJOYW1lKHtcbiAgICBwbHVnaW5JZDogbWFuaWZlc3QuaWQsXG4gICAgdmVyc2lvbjogbWFuaWZlc3QudmVyc2lvblxuICB9KTtcbiAgY29uc3QgZW50cmllcyA9IGF3YWl0IHJlYWREZW1vVmF1bHRFbnRyaWVzKHtcbiAgICBkZW1vVmF1bHRQYXRoLFxuICAgIHJvb3RGb2xkZXJOYW1lXG4gIH0pO1xuICBpbmplY3RBcHBKc29uKHtcbiAgICBhcHBKc29uOiBhd2FpdCByZWFkQ29tbWl0dGVkQXBwSnNvbigpLFxuICAgIGVudHJpZXMsXG4gICAgcm9vdEZvbGRlck5hbWVcbiAgfSk7XG4gIGluamVjdFJlYWRtZVZlcnNpb24oe1xuICAgIGVudHJpZXMsXG4gICAgcm9vdEZvbGRlck5hbWUsXG4gICAgdmVyc2lvbjogbWFuaWZlc3QudmVyc2lvblxuICB9KTtcbiAgLy8gRXZlcnkgZW50cnkgaXMgc3RhbXBlZCB3aXRoIHRoZSBtb21lbnQgdGhlIGFyY2hpdmUgaXMgYnVpbHQgcmF0aGVyIHRoYW4gdGhlIGZpbGUncyBvd24gbXRpbWUsIHdoaWNoIGlzXG4gIC8vIHdoYXQgdGhlIHByZXZpb3VzIGFyY2hpdmVyIHdyb3RlLiBBIGRlbW8gdmF1bHQncyBjb21taXR0ZWQgdGltZXN0YW1wcyBhcmUgY2hlY2tvdXQgYXJ0aWZhY3RzIG9mIHdob2V2ZXJcbiAgLy8gcmFuIHRoZSByZWxlYXNlLCBzbyB0aGV5IGNhcnJ5IG5vdGhpbmcgYSByZWFkZXIgY291bGQgdXNlOyB0aGUgYnVpbGQgdGltZSBhdCBsZWFzdCBkZXNjcmliZXMgdGhlXG4gIC8vIGFyY2hpdmUuXG4gIGF3YWl0IHdyaXRlRmlsZSh6aXBQYXRoLCB6aXBTeW5jKE9iamVjdC5mcm9tRW50cmllcyhlbnRyaWVzKSkpO1xuICByZXR1cm4gemlwUGF0aDtcbn1cblxuLy8gU3RvcmVzIHRoZSBhcmNoaXZlZCB2YXVsdCdzIGAub2JzaWRpYW4vYXBwLmpzb25gIOKAlCB0aGUgY29tbWl0dGVkIHNldHRpbmdzIHdpdGggdGhlIG93bmVkIG9uZXMgbWVyZ2VkXG4vLyBvdmVyIHRoZW0uIFRoZSBFTlRSWSBpcyB3cml0dGVuIHJhdGhlciB0aGFuIHRoZSBmaWxlLCBzbyB0aGUgcmVwbyBmb2xkZXIgaXMgbGVmdCBleGFjdGx5IGFzIGl0IHdhcywgYW5kXG4vLyBBIHZhdWx0IHdpdGggbm90aGluZyBlbHNlIHRvIGNvbmZpZ3VyZSDigJQgd2hpY2ggY29tbWl0cyBubyBgYXBwLmpzb25gIGF0IGFsbCDigJQgZ2V0cyBvbmUgaGVyZSByZWdhcmRsZXNzLlxuZnVuY3Rpb24gaW5qZWN0QXBwSnNvbihwYXJhbXM6IEluamVjdEFwcEpzb25QYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGFwcEpzb24sXG4gICAgZW50cmllcyxcbiAgICByb290Rm9sZGVyTmFtZVxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGVudHJ5TmFtZSA9IGpvaW4ocm9vdEZvbGRlck5hbWUsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRvdE9ic2lkaWFuLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5BcHBKc29uKTtcbiAgZW50cmllcy5zZXQoZW50cnlOYW1lLCBCdWZmZXIuZnJvbShidWlsZEFyY2hpdmVkRGVtb1ZhdWx0QXBwSnNvbkNvbnRlbnQoeyBhcHBKc29uIH0pLCAndXRmLTgnKSk7XG59XG5cbi8vIEluamVjdHMgdGhlIGJ1aWx0LCBgb2JzaWRpYW4tZGV2LXV0aWxzYC1vd25lZCBgZGVtby12YXVsdC1oZWxwZXJgIGJvb3RzdHJhcCBwbHVnaW4gKHNoaXBwZWQgaW4gdGhpcyBwYWNrYWdlKSBpbnRvIHRoZSBkZW1vIHZhdWx0LCBzbyBubyBwZXItdmF1bHQgY29weSBpcyBjb21taXR0ZWQgYW5kIGFuIGBvYnNpZGlhbi1kZXYtdXRpbHNgIGJ1bXAgcHJvcGFnYXRlcyBmaXhlcy5cbi8vXG4vLyBBbG9uZ3NpZGUgdGhlIGJpbmFyaWVzIGl0IHdyaXRlcyB0aGUgaGVscGVyJ3Mgb3duIGBkYXRhLmpzb25gIG5hbWluZyB0aGUgZGVtb25zdHJhdGVkIHBsdWdpbi4gVGhhdCBpc1xuLy8gdGhlIG9uZSBtb21lbnQgdGhlIGlkIGlzIGtub3duIGZvciBjZXJ0YWluIOKAlCBpdCBjb21lcyBmcm9tIHRoZSBwbHVnaW4ncyBvd24gbWFuaWZlc3Qg4oCUIHdoZXJlYXMgdGhlXG4vLyBvcGVuZWQgdmF1bHQgb25seSBvZmZlcnMgcGx1Z2luIGZvbGRlcnMgdG8gY291bnQsIHdoaWNoIHRoZSBib290c3RyYXAgaXRzZWxmIGFkZHMgdG8gKHNlZVxuLy8gYERlbW9WYXVsdEhlbHBlclNldHRpbmdzYCkuXG5hc3luYyBmdW5jdGlvbiBpbmplY3REZW1vVmF1bHRIZWxwZXIoZGVtb2VkUGx1Z2luSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwYWNrYWdlRm9sZGVyID0gZ2V0Um9vdEZvbGRlcihnZXRGb2xkZXJOYW1lKGltcG9ydC5tZXRhLnVybCkpO1xuICBpZiAoIXBhY2thZ2VGb2xkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCByZXNvbHZlIHRoZSBAbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXRvb2xraXQgcGFja2FnZSBmb2xkZXIgdG8gaW5qZWN0IHRoZSBkZW1vLXZhdWx0LWhlbHBlciBwbHVnaW4uJyk7XG4gIH1cblxuICBjb25zdCBoZWxwZXJTb3VyY2VQYXRoID0gam9pbihwYWNrYWdlRm9sZGVyLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0RGVtb1ZhdWx0SGVscGVyKTtcbiAgY29uc3QgaGVscGVyRm9sZGVyID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoe1xuICAgIHBhdGg6IGpvaW4oXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EZW1vVmF1bHQsXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbixcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlBsdWdpbnMsXG4gICAgICBERU1PX1ZBVUxUX0hFTFBFUl9QTFVHSU5fSURcbiAgICApXG4gIH0pO1xuICBhd2FpdCBta2RpcihoZWxwZXJGb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBhd2FpdCBjcChoZWxwZXJTb3VyY2VQYXRoLCBoZWxwZXJGb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHNldHRpbmdzOiBEZW1vVmF1bHRIZWxwZXJTZXR0aW5ncyA9IHsgZGVtb2VkUGx1Z2luSWQgfTtcbiAgYXdhaXQgd3JpdGVGaWxlKGpvaW4oaGVscGVyRm9sZGVyLCBEQVRBX0pTT05fRklMRV9OQU1FKSwgYCR7SlNPTi5zdHJpbmdpZnkoc2V0dGluZ3MsIG51bGwsIERBVEFfSlNPTl9JTkRFTlQpfVxcbmAsICd1dGYtOCcpO1xufVxuXG4vLyBOYW1lcyB0aGUgdmVyc2lvbiBvbiB0aGUgYXJjaGl2ZWQgYFJFQURNRS5tZGAncyBoZWFkaW5nLCBzbyB0aGUgdmF1bHQgc2F5cyB3aGljaCByZWxlYXNlIGl0IGRlbW9uc3RyYXRlc1xuLy8gaG93ZXZlciBmYXIgaXQgdHJhdmVscyBmcm9tIHRoZSByZWxlYXNlIHBhZ2UgaXQgd2FzIGRvd25sb2FkZWQgZnJvbS5cbi8vXG4vLyBFbnRyeS1vbmx5LCBmb3IgdGhlIHNhbWUgcmVhc29uIGBpbmplY3RBcHBKc29uYCBpczogdGhlIGNvbW1pdHRlZCBSRUFETUUgaXMgYSB0cmFja2VkLCBoYW5kLWF1dGhvcmVkXG4vLyBmaWxlIGFuZCBgdXBkYXRlVmVyc2lvbmAgYXJjaGl2ZXMgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgcHVzaGVkLlxuLy9cbi8vIEEgdmF1bHQgdGhhdCBzaGlwcyBubyBSRUFETUUsIG9yIG9uZSBvcGVuaW5nIG9uIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIGAjIEgxYCwgaXMgbGVmdCBhbG9uZSByYXRoZXJcbi8vIHRoYW4gY29ycmVjdGVkLiBUaGUgZGVtby12YXVsdCBjb3ZlcmFnZSBzdWl0ZSBleGVtcHRzIGBSRUFETUUubWRgIGZyb20gaXRzIEgxIGNoZWNrLCBzbyBuZWl0aGVyIHNoYXBlXG4vLyBpcyBhIGRlZmVjdCDigJQgYW5kIGEgcmVsZWFzZSBpcyB0aGUgd3JvbmcgbW9tZW50IHRvIHN0YXJ0IGZhaWxpbmcgb24gb25lLlxuZnVuY3Rpb24gaW5qZWN0UmVhZG1lVmVyc2lvbihwYXJhbXM6IEluamVjdFJlYWRtZVZlcnNpb25QYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGVudHJpZXMsXG4gICAgcm9vdEZvbGRlck5hbWUsXG4gICAgdmVyc2lvblxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGVudHJ5TmFtZSA9IGpvaW4ocm9vdEZvbGRlck5hbWUsIFJFQURNRV9GSUxFX05BTUUpO1xuICBjb25zdCBlbnRyeSA9IGVudHJpZXMuZ2V0KGVudHJ5TmFtZSk7XG4gIGlmICghZW50cnkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBjb250ZW50ID0gZW50cnkudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gIGNvbnN0IHZlcnNpb25lZENvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoT1BFTklOR19IRUFESU5HX1JFR19FWFAsIChoZWFkaW5nKSA9PiBgJHtoZWFkaW5nfSB2JHt2ZXJzaW9ufWApO1xuICBpZiAodmVyc2lvbmVkQ29udGVudCA9PT0gY29udGVudCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGVudHJpZXMuc2V0KGVudHJ5TmFtZSwgQnVmZmVyLmZyb20odmVyc2lvbmVkQ29udGVudCwgJ3V0Zi04JykpO1xufVxuXG4vLyBSZWFkcyB0aGUgZGVtbyB2YXVsdCdzIGNvbW1pdHRlZCBgLm9ic2lkaWFuL2FwcC5qc29uYCwgcmVmdXNpbmcgdGhlIHNldHRpbmdzIHRoaXMgcGFja2FnZSBvd25zLlxuLy9cbi8vIFRob3NlIHNldHRpbmdzIGFyZSBpbmplY3RlZCBpbnRvIHRoZSBhcmNoaXZlLCBzbyBhIGNvbW1pdHRlZCBvbmUgaXMgYSBzZWNvbmQgc291cmNlIG9mIHRydXRoIHRoYXRcbi8vIG5vdGhpbmcga2VlcHMgaW4gc3RlcC4gVGhlIGRlbW8tdmF1bHQgY292ZXJhZ2Ugc3VpdGUgYWxyZWFkeSBmYWlscyBvbiBpdCwgd2hpY2ggbWVhbnMgcmVhY2hpbmcgaGVyZVxuLy8gbWVhbnMgdGhhdCBnYXRlIHdhcyBza2lwcGVkIOKAlCBzbyB0aGlzIHJlZnVzZXMgcmF0aGVyIHRoYW4gb3ZlcndyaXRpbmcgYSB2YWx1ZSBzb21lYm9keSBjaG9zZSBvbiBwdXJwb3NlLlxuYXN5bmMgZnVuY3Rpb24gcmVhZENvbW1pdHRlZEFwcEpzb24oKTogUHJvbWlzZTxEZW1vVmF1bHRBcHBKc29uPiB7XG4gIGNvbnN0IGFwcEpzb25QYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoe1xuICAgIHBhdGg6IGpvaW4oT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGVtb1ZhdWx0LCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbiwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQXBwSnNvbilcbiAgfSk7XG4gIGNvbnN0IGNvbnRlbnQgPSBleGlzdHNTeW5jKGFwcEpzb25QYXRoKSA/IGF3YWl0IHJlYWRGaWxlKGFwcEpzb25QYXRoLCAndXRmLTgnKSA6IG51bGw7XG4gIGNvbnN0IGFwcEpzb24gPSBwYXJzZURlbW9WYXVsdEFwcEpzb24oeyBjb250ZW50LCBwYXRoOiBhcHBKc29uUGF0aCB9KTtcblxuICBjb25zdCBvd25lZFNldHRpbmdzID0gZmluZE93bmVkRGVtb1ZhdWx0QXBwSnNvblNldHRpbmdzKHsgYXBwSnNvbiB9KTtcbiAgaWYgKG93bmVkU2V0dGluZ3MubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke2FwcEpzb25QYXRofSBzZXRzICR7b3duZWRTZXR0aW5ncy5qb2luKCcsICcpfSwgd2hpY2ggb2JzaWRpYW4tZGV2LXV0aWxzIG93bnMgYW5kIHdyaXRlcyBpbnRvIHRoZSBhcmNoaXZlZCBkZW1vIHZhdWx0LiBTZXR0aW5ncyBpdCBvd25zIG11c3Qgbm90IGJlIGNvbW1pdHRlZC5gXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBhcHBKc29uO1xufVxuXG4vLyBSZWFkcyBldmVyeSBmaWxlIGluIHRoZSBkZW1vIHZhdWx0IGFzIGFuIGFyY2hpdmUgZW50cnksIHVuZGVyIHRoZSBzaW5nbGUgdG9wLWxldmVsIGZvbGRlciB0aGUgYXJjaGl2ZVxuLy8gc2l0cyBpbi5cbi8vXG4vLyBPbmx5IEZJTEVTIGJlY29tZSBlbnRyaWVzLiBHaXQgY2Fubm90IHRyYWNrIGFuIGVtcHR5IGZvbGRlciwgc28gYSBjb21taXR0ZWQgZGVtbyB2YXVsdCBoYXMgbm9uZSDigJQgYW5kXG4vLyBgZXh0cmFjdFppcEFyY2hpdmVgIGNyZWF0ZXMgYW4gZW50cnkncyBwYXJlbnQgZm9sZGVycyB3aGV0aGVyIG9yIG5vdCB0aGUgYXJjaGl2ZSBkZWNsYXJlZCB0aGVtLCBzbyBhXG4vLyBmb2xkZXIgZW50cnkgd291bGQgZWFybiBub3RoaW5nIGV2ZW4gaWYgb25lIGNvdWxkIGV4aXN0LlxuYXN5bmMgZnVuY3Rpb24gcmVhZERlbW9WYXVsdEVudHJpZXMocGFyYW1zOiBSZWFkRGVtb1ZhdWx0RW50cmllc1BhcmFtcyk6IFByb21pc2U8RGVtb1ZhdWx0WmlwRW50cmllcz4ge1xuICBjb25zdCB7XG4gICAgZGVtb1ZhdWx0UGF0aCxcbiAgICByb290Rm9sZGVyTmFtZVxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGVudHJpZXM6IERlbW9WYXVsdFppcEVudHJpZXMgPSBuZXcgTWFwPHN0cmluZywgQnVmZmVyPigpO1xuICBmb3IgKGNvbnN0IGRpcmVudCBvZiBhd2FpdCByZWFkZGlyUG9zaXgoZGVtb1ZhdWx0UGF0aCwgeyByZWN1cnNpdmU6IHRydWUsIHdpdGhGaWxlVHlwZXM6IHRydWUgfSkpIHtcbiAgICBpZiAoIWRpcmVudC5pc0ZpbGUoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aCA9IGpvaW4oZGlyZW50LnBhcmVudFBhdGgsIGRpcmVudC5uYW1lKTtcbiAgICBlbnRyaWVzLnNldChqb2luKHJvb3RGb2xkZXJOYW1lLCByZWxhdGl2ZShkZW1vVmF1bHRQYXRoLCBwYXRoKSksIGF3YWl0IHJlYWRGaWxlKHBh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
|
|
@@ -2,49 +2,32 @@
|
|
|
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,
|
|
15
9
|
cwd() {
|
|
16
|
-
return
|
|
10
|
+
return "/";
|
|
17
11
|
},
|
|
18
12
|
env: {},
|
|
19
|
-
platform:
|
|
13
|
+
platform: "android"
|
|
20
14
|
};
|
|
21
|
-
|
|
22
|
-
// eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
|
|
23
15
|
const existingProcess = globalThis.process;
|
|
24
|
-
|
|
25
16
|
if (!existingProcess) {
|
|
26
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
27
17
|
globalThis.process = browserProcess;
|
|
28
18
|
return;
|
|
29
19
|
}
|
|
30
|
-
|
|
31
20
|
if (existingProcess.versions?.node) {
|
|
32
21
|
return;
|
|
33
22
|
}
|
|
34
|
-
|
|
35
23
|
const existingProcessRecord = existingProcess;
|
|
36
|
-
|
|
37
24
|
for (const [key, value] of Object.entries(browserProcess)) {
|
|
38
25
|
existingProcessRecord[key] ??= value;
|
|
39
26
|
}
|
|
40
|
-
|
|
41
|
-
existingProcessRecord['browser'] = true;
|
|
27
|
+
existingProcessRecord["browser"] = true;
|
|
42
28
|
}
|
|
43
29
|
|
|
44
|
-
(
|
|
45
|
-
ensureDisposeSymbols();
|
|
46
|
-
ensureBrowserProcess();
|
|
47
|
-
})();
|
|
30
|
+
ensureBrowserProcess();
|
|
48
31
|
})();
|
|
49
32
|
|
|
50
33
|
import { format as formatGeneric } from "@mnaoumov/typescript-dev-toolkit/formatters/dprint";
|
|
@@ -57,4 +40,4 @@ async function format(options) {
|
|
|
57
40
|
export {
|
|
58
41
|
format
|
|
59
42
|
};
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb3JtYXR0ZXJzL2RwcmludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogRm9ybWF0cyBhbiBPYnNpZGlhbiBwbHVnaW4gd2l0aCBkcHJpbnQ6IHRoZSBnZW5lcmljIHJ1bm5lciBmcm9tIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdGAsIGZhbGxpbmdcbiAqIGJhY2sgdG8gdGhpcyBwYWNrYWdlJ3MgYGRwcmludC5qc29uYCB0ZW1wbGF0ZSB3aGVuIHRoZSBwcm9qZWN0IGhhcyBub25lLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRm9ybWF0T3B0aW9ucyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2Zvcm1hdHRlcnMvZHByaW50JztcblxuaW1wb3J0IHsgZm9ybWF0IGFzIGZvcm1hdEdlbmVyaWMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9mb3JtYXR0ZXJzL2RwcmludCc7XG5pbXBvcnQgeyBSZXBvUGF0aHMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZXBvLXBhdGhzJztcblxuaW1wb3J0IHsgZ2V0VGVtcGxhdGVGaWxlUGF0aCB9IGZyb20gJy4uL3RlbXBsYXRlcy50cyc7XG5cbi8qKlxuICogRm9ybWF0cyB0aGUgc291cmNlIGNvZGUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIEZvcm1hdE9wdGlvbnN9LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZm9ybWF0KG9wdGlvbnM/OiBGb3JtYXRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGZvcm1hdEdlbmVyaWMoeyBkZWZhdWx0Q29uZmlnRmlsZVBhdGg6IGdldFRlbXBsYXRlRmlsZVBhdGgoUmVwb1BhdGhzLkRwcmludEpzb24pLCAuLi5vcHRpb25zIH0pO1xufVxuZXhwb3J0IHsgdHlwZSBGb3JtYXRPcHRpb25zIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvZm9ybWF0dGVycy9kcHJpbnQnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNBLFNBQVMsVUFBVSxxQkFBcUI7QUFDeEMsU0FBUyxpQkFBaUI7QUFFMUIsU0FBUywyQkFBMkI7QUFVcEMsZUFBbUM7QUFIbkMsZUFBc0IsT0FBTyxTQUF3QztBQUNuRSxRQUFNLGNBQWMsRUFBRSx1QkFBdUIsb0JBQW9CLFVBQVUsVUFBVSxHQUFHLEdBQUcsUUFBUSxDQUFDO0FBQ3RHOyIsIm5hbWVzIjpbXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/// <reference path="../
|
|
1
|
+
/// <reference path="../library-references.d.mts" />
|
|
2
2
|
export * as 'dprint' from './dprint.mjs';
|
|
@@ -3,52 +3,8 @@ 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
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
|
-
|
|
22
|
-
// eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
|
|
23
|
-
const existingProcess = globalThis.process;
|
|
24
|
-
|
|
25
|
-
if (!existingProcess) {
|
|
26
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
27
|
-
globalThis.process = browserProcess;
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (existingProcess.versions?.node) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const existingProcessRecord = existingProcess;
|
|
36
|
-
|
|
37
|
-
for (const [key, value] of Object.entries(browserProcess)) {
|
|
38
|
-
existingProcessRecord[key] ??= value;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
existingProcessRecord['browser'] = true;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
(function initEsm() {
|
|
45
|
-
ensureDisposeSymbols();
|
|
46
|
-
ensureBrowserProcess();
|
|
47
|
-
})();
|
|
48
|
-
})();
|
|
49
|
-
|
|
50
6
|
import * as dprint from "./dprint.mjs";
|
|
51
7
|
export {
|
|
52
8
|
dprint
|
|
53
9
|
};
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2Zvcm1hdHRlcnMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnZHByaW50JyBmcm9tICcuL2RwcmludC50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQUVBLFlBQVksWUFBYzsiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist/lib/esm/index.mjs
CHANGED
|
@@ -3,50 +3,6 @@ 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
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
|
-
|
|
22
|
-
// eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
|
|
23
|
-
const existingProcess = globalThis.process;
|
|
24
|
-
|
|
25
|
-
if (!existingProcess) {
|
|
26
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
27
|
-
globalThis.process = browserProcess;
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (existingProcess.versions?.node) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const existingProcessRecord = existingProcess;
|
|
36
|
-
|
|
37
|
-
for (const [key, value] of Object.entries(browserProcess)) {
|
|
38
|
-
existingProcessRecord[key] ??= value;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
existingProcessRecord['browser'] = true;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
(function initEsm() {
|
|
45
|
-
ensureDisposeSymbols();
|
|
46
|
-
ensureBrowserProcess();
|
|
47
|
-
})();
|
|
48
|
-
})();
|
|
49
|
-
|
|
50
6
|
import * as bundlers from "./bundlers/index.mjs";
|
|
51
7
|
import * as demo_vault_app_json from "./demo-vault-app-json.mjs";
|
|
52
8
|
import * as demo_vault_buttons from "./demo-vault-buttons.mjs";
|
|
@@ -71,4 +27,4 @@ export {
|
|
|
71
27
|
test_runners as "test-runners",
|
|
72
28
|
version
|
|
73
29
|
};
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2J1bmRsZXJzJyBmcm9tICcuL2J1bmRsZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdkZW1vLXZhdWx0LWFwcC1qc29uJyBmcm9tICcuL2RlbW8tdmF1bHQtYXBwLWpzb24udHMnO1xuZXhwb3J0ICogYXMgJ2RlbW8tdmF1bHQtYnV0dG9ucycgZnJvbSAnLi9kZW1vLXZhdWx0LWJ1dHRvbnMudHMnO1xuZXhwb3J0ICogYXMgJ2RlbW8tdmF1bHQtY292ZXJhZ2UnIGZyb20gJy4vZGVtby12YXVsdC1jb3ZlcmFnZS50cyc7XG5leHBvcnQgKiBhcyAnZGVtby12YXVsdCcgZnJvbSAnLi9kZW1vLXZhdWx0LnRzJztcbmV4cG9ydCAqIGFzICdmb3JtYXR0ZXJzJyBmcm9tICcuL2Zvcm1hdHRlcnMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ2xpbnRlcnMnIGZyb20gJy4vbGludGVycy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnb2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMnIGZyb20gJy4vb2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMudHMnO1xuZXhwb3J0ICogYXMgJ3RlbXBsYXRlcycgZnJvbSAnLi90ZW1wbGF0ZXMudHMnO1xuZXhwb3J0ICogYXMgJ3Rlc3QtcnVubmVycycgZnJvbSAnLi90ZXN0LXJ1bm5lcnMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3ZlcnNpb24nIGZyb20gJy4vdmVyc2lvbi50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQUVBLFlBQVksY0FBZ0I7QUFDNUIsWUFBWUEseUJBQTJCO0FBQ3ZDLFlBQVlDLHdCQUEwQjtBQUN0QyxZQUFZQyx5QkFBMkI7QUFDdkMsWUFBWUMsZ0JBQWtCO0FBQzlCLFlBQVksZ0JBQWtCO0FBQzlCLFlBQVksYUFBZTtBQUMzQixZQUFZQyxnQ0FBa0M7QUFDOUMsWUFBWSxlQUFpQjtBQUM3QixZQUFZQyxrQkFBb0I7QUFDaEMsWUFBWSxhQUFlOyIsCiAgIm5hbWVzIjogWyJkZW1vLXZhdWx0LWFwcC1qc29uIiwgImRlbW8tdmF1bHQtYnV0dG9ucyIsICJkZW1vLXZhdWx0LWNvdmVyYWdlIiwgImRlbW8tdmF1bHQiLCAib2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMiLCAidGVzdC1ydW5uZXJzIl0KfQo=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/// <reference path="./
|
|
1
|
+
/// <reference path="./library-references.d.mts" />
|
|
2
2
|
/**
|
|
3
3
|
* @file
|
|
4
4
|
*
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* ```ts
|
|
12
12
|
* setupFiles: [
|
|
13
13
|
* 'obsidian-integration-testing/vitest-setup',
|
|
14
|
-
* 'obsidian-dev-
|
|
14
|
+
* '@mnaoumov/obsidian-dev-toolkit/integration-test-setup'
|
|
15
15
|
* ]
|
|
16
16
|
* ```
|
|
17
17
|
*
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
*
|
|
21
21
|
* - The **harness plugin** must be loaded in the test vault, because it is what publishes the library on
|
|
22
22
|
* `window.__obsidianDevUtilsModule`. Seed and enable it via
|
|
23
|
-
*
|
|
23
|
+
* `@mnaoumov/obsidian-dev-toolkit/integration-test-vitest-global-setup` (or, when composing with your own vault
|
|
24
24
|
* fixtures, {@link getIntegrationTestPluginPopulate} +
|
|
25
|
-
* `createSetup({ enableCommunityPlugins: [
|
|
25
|
+
* `createSetup({ enableCommunityPlugins: [OBSIDIAN_DEV_TOOLKIT_INTEGRATION_TEST_PLUGIN_ID] })`).
|
|
26
26
|
* - The **types** must be activated, or `lib.<helper>` will not compile. Put
|
|
27
|
-
* `/// <reference types="obsidian-
|
|
27
|
+
* `/// <reference types="@mnaoumov/obsidian-lib/@types/obsidian-integration-testing" />` in a `.d.ts` your
|
|
28
28
|
* `tsconfig.json` already includes. A `compilerOptions.types` entry does NOT work for this.
|
|
29
29
|
*
|
|
30
30
|
* Registration is idempotent (the harness dedupes resolvers by source text), so importing this module from
|
|
@@ -3,50 +3,6 @@ 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
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
|
-
|
|
22
|
-
// eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
|
|
23
|
-
const existingProcess = globalThis.process;
|
|
24
|
-
|
|
25
|
-
if (!existingProcess) {
|
|
26
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
27
|
-
globalThis.process = browserProcess;
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (existingProcess.versions?.node) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const existingProcessRecord = existingProcess;
|
|
36
|
-
|
|
37
|
-
for (const [key, value] of Object.entries(browserProcess)) {
|
|
38
|
-
existingProcessRecord[key] ??= value;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
existingProcessRecord['browser'] = true;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
(function initEsm() {
|
|
45
|
-
ensureDisposeSymbols();
|
|
46
|
-
ensureBrowserProcess();
|
|
47
|
-
})();
|
|
48
|
-
})();
|
|
49
|
-
|
|
50
6
|
import { registerIntegrationTestLibResolver } from "./test-runners/integration-test-plugin.mjs";
|
|
51
7
|
registerIntegrationTestLibResolver();
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ludGVncmF0aW9uLXRlc3Qtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQZXItd29ya2VyIGludGVncmF0aW9uLXRlc3Qgc2V0dXAgZW5kcG9pbnQ6IG1ha2VzIGV2ZXJ5IGxpYnJhcnkgaGVscGVyIHJlYWNoYWJsZSBhcyBgbGliLjxoZWxwZXI+
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ludGVncmF0aW9uLXRlc3Qtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQZXItd29ya2VyIGludGVncmF0aW9uLXRlc3Qgc2V0dXAgZW5kcG9pbnQ6IG1ha2VzIGV2ZXJ5IGxpYnJhcnkgaGVscGVyIHJlYWNoYWJsZSBhcyBgbGliLjxoZWxwZXI+YCBpbnNpZGVcbiAqIGFuIGBldmFsSW5PYnNpZGlhbmAgY2xvc3VyZS5cbiAqXG4gKiBBZGQgaXQgdG8gdGhlIGBzZXR1cEZpbGVzYCBvZiBlYWNoIGludGVncmF0aW9uLXRlc3QgcHJvamVjdCwgYWZ0ZXIgYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmdgJ3Mgb3duXG4gKiBzZXR1cDpcbiAqXG4gKiBgYGB0c1xuICogc2V0dXBGaWxlczogW1xuICogICAnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3Qtc2V0dXAnLFxuICogICAnQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0L2ludGVncmF0aW9uLXRlc3Qtc2V0dXAnXG4gKiBdXG4gKiBgYGBcbiAqXG4gKiBJbXBvcnRpbmcgdGhpcyBtb2R1bGUgcmVnaXN0ZXJzIGEgcmVuZGVyZXItc2lkZSByZXNvbHZlciB3aG9zZSByZXN1bHQgdGhlIGhhcm5lc3MgbWVyZ2VzIGludG8gdGhlIGBsaWJgXG4gKiBhcmd1bWVudCBvZiBldmVyeSBgZXZhbEluT2JzaWRpYW5gIGNhbGxiYWNrLiBUd28gbW9yZSBwaWVjZXMgYXJlIG5lZWRlZCBmb3IgYGxpYi48aGVscGVyPmAgdG8gd29yazpcbiAqXG4gKiAtIFRoZSAqKmhhcm5lc3MgcGx1Z2luKiogbXVzdCBiZSBsb2FkZWQgaW4gdGhlIHRlc3QgdmF1bHQsIGJlY2F1c2UgaXQgaXMgd2hhdCBwdWJsaXNoZXMgdGhlIGxpYnJhcnkgb25cbiAqICAgYHdpbmRvdy5fX29ic2lkaWFuRGV2VXRpbHNNb2R1bGVgLiBTZWVkIGFuZCBlbmFibGUgaXQgdmlhXG4gKiAgIGBAbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXRvb2xraXQvaW50ZWdyYXRpb24tdGVzdC12aXRlc3QtZ2xvYmFsLXNldHVwYCAob3IsIHdoZW4gY29tcG9zaW5nIHdpdGggeW91ciBvd24gdmF1bHRcbiAqICAgZml4dHVyZXMsIHtAbGluayBnZXRJbnRlZ3JhdGlvblRlc3RQbHVnaW5Qb3B1bGF0ZX0gK1xuICogICBgY3JlYXRlU2V0dXAoeyBlbmFibGVDb21tdW5pdHlQbHVnaW5zOiBbT0JTSURJQU5fREVWX1RPT0xLSVRfSU5URUdSQVRJT05fVEVTVF9QTFVHSU5fSURdIH0pYCkuXG4gKiAtIFRoZSAqKnR5cGVzKiogbXVzdCBiZSBhY3RpdmF0ZWQsIG9yIGBsaWIuPGhlbHBlcj5gIHdpbGwgbm90IGNvbXBpbGUuIFB1dFxuICogICBgLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliL0B0eXBlcy9vYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nXCIgLz5gIGluIGEgYC5kLnRzYCB5b3VyXG4gKiAgIGB0c2NvbmZpZy5qc29uYCBhbHJlYWR5IGluY2x1ZGVzLiBBIGBjb21waWxlck9wdGlvbnMudHlwZXNgIGVudHJ5IGRvZXMgTk9UIHdvcmsgZm9yIHRoaXMuXG4gKlxuICogUmVnaXN0cmF0aW9uIGlzIGlkZW1wb3RlbnQgKHRoZSBoYXJuZXNzIGRlZHVwZXMgcmVzb2x2ZXJzIGJ5IHNvdXJjZSB0ZXh0KSwgc28gaW1wb3J0aW5nIHRoaXMgbW9kdWxlIGZyb21cbiAqIG1vcmUgdGhhbiBvbmUgc2V0dXAgZmlsZSBpcyBzYWZlLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGluIHNldHVwLWZpbGUgZ2x1ZTsgZXhlcmNpc2VkIGVuZC10by1lbmQgYnkgdGhlIE9ic2lkaWFuIGludGVncmF0aW9uIHN1aXRlcy4gKi9cbmltcG9ydCB7IHJlZ2lzdGVySW50ZWdyYXRpb25UZXN0TGliUmVzb2x2ZXIgfSBmcm9tICcuL3Rlc3QtcnVubmVycy9pbnRlZ3JhdGlvbi10ZXN0LXBsdWdpbi50cyc7XG5cbnJlZ2lzdGVySW50ZWdyYXRpb25UZXN0TGliUmVzb2x2ZXIoKTtcbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQWlDQSxTQUFTLDBDQUEwQztBQUVuRCxtQ0FBbUM7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
/// <reference path="./
|
|
1
|
+
/// <reference path="./library-references.d.mts" />
|
|
2
2
|
/**
|
|
3
3
|
* @file
|
|
4
4
|
*
|
|
5
5
|
* Turnkey Vitest `globalSetup` for a plugin's integration tests: does everything
|
|
6
6
|
* `obsidian-integration-testing`'s own global setup does (temp vault, install and enable the
|
|
7
|
-
* plugin-under-test), and additionally seeds and enables the
|
|
7
|
+
* plugin-under-test), and additionally seeds and enables the `@mnaoumov/obsidian-dev-toolkit` integration-test harness
|
|
8
8
|
* plugin, so `lib.<helper>` works inside `evalInObsidian` closures.
|
|
9
9
|
*
|
|
10
10
|
* ```ts
|
|
11
|
-
* globalSetup: ['obsidian-dev-
|
|
11
|
+
* globalSetup: ['@mnaoumov/obsidian-dev-toolkit/integration-test-vitest-global-setup'],
|
|
12
12
|
* setupFiles: [
|
|
13
13
|
* 'obsidian-integration-testing/vitest-setup',
|
|
14
|
-
* 'obsidian-dev-
|
|
14
|
+
* '@mnaoumov/obsidian-dev-toolkit/integration-test-setup'
|
|
15
15
|
* ]
|
|
16
16
|
* ```
|
|
17
17
|
*
|
|
@@ -19,18 +19,18 @@
|
|
|
19
19
|
*
|
|
20
20
|
* If the project already needs its own `populate` (demo-vault fixtures, a large performance vault), skip
|
|
21
21
|
* this module and compose instead — merge {@link getIntegrationTestPluginPopulate} into that map and pass
|
|
22
|
-
* {@link
|
|
22
|
+
* {@link OBSIDIAN_DEV_TOOLKIT_INTEGRATION_TEST_PLUGIN_ID} to `enableCommunityPlugins`:
|
|
23
23
|
*
|
|
24
24
|
* ```ts
|
|
25
25
|
* export const { setup, teardown } = createSetup({
|
|
26
|
-
* enableCommunityPlugins: [
|
|
26
|
+
* enableCommunityPlugins: [OBSIDIAN_DEV_TOOLKIT_INTEGRATION_TEST_PLUGIN_ID],
|
|
27
27
|
* populate: () => ({ ...myFixtures(), ...getIntegrationTestPluginPopulate() })
|
|
28
28
|
* });
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
31
|
/**
|
|
32
32
|
* Vitest global setup: creates the temp vault, installs and enables the plugin-under-test, then seeds and
|
|
33
|
-
* enables the
|
|
33
|
+
* enables the `@mnaoumov/obsidian-dev-toolkit` integration-test harness plugin alongside it.
|
|
34
34
|
*/
|
|
35
35
|
export declare const setup: (this: void, project: import("vitest/node").TestProject) => Promise<void>;
|
|
36
36
|
/**
|
|
@@ -2,58 +2,41 @@
|
|
|
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,
|
|
15
9
|
cwd() {
|
|
16
|
-
return
|
|
10
|
+
return "/";
|
|
17
11
|
},
|
|
18
12
|
env: {},
|
|
19
|
-
platform:
|
|
13
|
+
platform: "android"
|
|
20
14
|
};
|
|
21
|
-
|
|
22
|
-
// eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
|
|
23
15
|
const existingProcess = globalThis.process;
|
|
24
|
-
|
|
25
16
|
if (!existingProcess) {
|
|
26
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
27
17
|
globalThis.process = browserProcess;
|
|
28
18
|
return;
|
|
29
19
|
}
|
|
30
|
-
|
|
31
20
|
if (existingProcess.versions?.node) {
|
|
32
21
|
return;
|
|
33
22
|
}
|
|
34
|
-
|
|
35
23
|
const existingProcessRecord = existingProcess;
|
|
36
|
-
|
|
37
24
|
for (const [key, value] of Object.entries(browserProcess)) {
|
|
38
25
|
existingProcessRecord[key] ??= value;
|
|
39
26
|
}
|
|
40
|
-
|
|
41
|
-
existingProcessRecord['browser'] = true;
|
|
27
|
+
existingProcessRecord["browser"] = true;
|
|
42
28
|
}
|
|
43
29
|
|
|
44
|
-
(
|
|
45
|
-
ensureDisposeSymbols();
|
|
46
|
-
ensureBrowserProcess();
|
|
47
|
-
})();
|
|
30
|
+
ensureBrowserProcess();
|
|
48
31
|
})();
|
|
49
32
|
|
|
50
33
|
import { createSetup } from "obsidian-integration-testing/vitest-global-setup-plugin";
|
|
51
34
|
import {
|
|
52
35
|
getIntegrationTestPluginPopulate,
|
|
53
|
-
|
|
36
|
+
OBSIDIAN_DEV_TOOLKIT_INTEGRATION_TEST_PLUGIN_ID
|
|
54
37
|
} from "./test-runners/integration-test-plugin.mjs";
|
|
55
38
|
const globalSetup = createSetup({
|
|
56
|
-
enableCommunityPlugins: [
|
|
39
|
+
enableCommunityPlugins: [OBSIDIAN_DEV_TOOLKIT_INTEGRATION_TEST_PLUGIN_ID],
|
|
57
40
|
populate: getIntegrationTestPluginPopulate
|
|
58
41
|
});
|
|
59
42
|
const setup = globalSetup.setup;
|
|
@@ -62,4 +45,4 @@ export {
|
|
|
62
45
|
setup,
|
|
63
46
|
teardown
|
|
64
47
|
};
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnRlZ3JhdGlvbi10ZXN0LXZpdGVzdC1nbG9iYWwtc2V0dXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFR1cm5rZXkgVml0ZXN0IGBnbG9iYWxTZXR1cGAgZm9yIGEgcGx1Z2luJ3MgaW50ZWdyYXRpb24gdGVzdHM6IGRvZXMgZXZlcnl0aGluZ1xuICogYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmdgJ3Mgb3duIGdsb2JhbCBzZXR1cCBkb2VzICh0ZW1wIHZhdWx0LCBpbnN0YWxsIGFuZCBlbmFibGUgdGhlXG4gKiBwbHVnaW4tdW5kZXItdGVzdCksIGFuZCBhZGRpdGlvbmFsbHkgc2VlZHMgYW5kIGVuYWJsZXMgdGhlIGBAbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXRvb2xraXRgIGludGVncmF0aW9uLXRlc3QgaGFybmVzc1xuICogcGx1Z2luLCBzbyBgbGliLjxoZWxwZXI+YCB3b3JrcyBpbnNpZGUgYGV2YWxJbk9ic2lkaWFuYCBjbG9zdXJlcy5cbiAqXG4gKiBgYGB0c1xuICogZ2xvYmFsU2V0dXA6IFsnQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0L2ludGVncmF0aW9uLXRlc3Qtdml0ZXN0LWdsb2JhbC1zZXR1cCddLFxuICogc2V0dXBGaWxlczogW1xuICogICAnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3Qtc2V0dXAnLFxuICogICAnQG1uYW91bW92L29ic2lkaWFuLWRldi10b29sa2l0L2ludGVncmF0aW9uLXRlc3Qtc2V0dXAnXG4gKiBdXG4gKiBgYGBcbiAqXG4gKiBSZXBsYWNlcyBgb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3QtZ2xvYmFsLXNldHVwLXBsdWdpbmA7IGRvIG5vdCBsaXN0IGJvdGguXG4gKlxuICogSWYgdGhlIHByb2plY3QgYWxyZWFkeSBuZWVkcyBpdHMgb3duIGBwb3B1bGF0ZWAgKGRlbW8tdmF1bHQgZml4dHVyZXMsIGEgbGFyZ2UgcGVyZm9ybWFuY2UgdmF1bHQpLCBza2lwXG4gKiB0aGlzIG1vZHVsZSBhbmQgY29tcG9zZSBpbnN0ZWFkIOKAlCBtZXJnZSB7QGxpbmsgZ2V0SW50ZWdyYXRpb25UZXN0UGx1Z2luUG9wdWxhdGV9IGludG8gdGhhdCBtYXAgYW5kIHBhc3NcbiAqIHtAbGluayBPQlNJRElBTl9ERVZfVE9PTEtJVF9JTlRFR1JBVElPTl9URVNUX1BMVUdJTl9JRH0gdG8gYGVuYWJsZUNvbW11bml0eVBsdWdpbnNgOlxuICpcbiAqIGBgYHRzXG4gKiBleHBvcnQgY29uc3QgeyBzZXR1cCwgdGVhcmRvd24gfSA9IGNyZWF0ZVNldHVwKHtcbiAqICAgZW5hYmxlQ29tbXVuaXR5UGx1Z2luczogW09CU0lESUFOX0RFVl9UT09MS0lUX0lOVEVHUkFUSU9OX1RFU1RfUExVR0lOX0lEXSxcbiAqICAgcG9wdWxhdGU6ICgpID0+ICh7IC4uLm15Rml4dHVyZXMoKSwgLi4uZ2V0SW50ZWdyYXRpb25UZXN0UGx1Z2luUG9wdWxhdGUoKSB9KVxuICogfSk7XG4gKiBgYGBcbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhpbiBnbG9iYWwtc2V0dXAgZ2x1ZTsgZXhlcmNpc2VkIGVuZC10by1lbmQgYnkgdGhlIE9ic2lkaWFuIGludGVncmF0aW9uIHN1aXRlcy4gKi9cbmltcG9ydCB7IGNyZWF0ZVNldHVwIH0gZnJvbSAnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3QtZ2xvYmFsLXNldHVwLXBsdWdpbic7XG5cbmltcG9ydCB7XG4gIGdldEludGVncmF0aW9uVGVzdFBsdWdpblBvcHVsYXRlLFxuICBPQlNJRElBTl9ERVZfVE9PTEtJVF9JTlRFR1JBVElPTl9URVNUX1BMVUdJTl9JRFxufSBmcm9tICcuL3Rlc3QtcnVubmVycy9pbnRlZ3JhdGlvbi10ZXN0LXBsdWdpbi50cyc7XG5cbmNvbnN0IGdsb2JhbFNldHVwID0gY3JlYXRlU2V0dXAoe1xuICBlbmFibGVDb21tdW5pdHlQbHVnaW5zOiBbT0JTSURJQU5fREVWX1RPT0xLSVRfSU5URUdSQVRJT05fVEVTVF9QTFVHSU5fSURdLFxuICBwb3B1bGF0ZTogZ2V0SW50ZWdyYXRpb25UZXN0UGx1Z2luUG9wdWxhdGVcbn0pO1xuXG4vKipcbiAqIFZpdGVzdCBnbG9iYWwgc2V0dXA6IGNyZWF0ZXMgdGhlIHRlbXAgdmF1bHQsIGluc3RhbGxzIGFuZCBlbmFibGVzIHRoZSBwbHVnaW4tdW5kZXItdGVzdCwgdGhlbiBzZWVkcyBhbmRcbiAqIGVuYWJsZXMgdGhlIGBAbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXRvb2xraXRgIGludGVncmF0aW9uLXRlc3QgaGFybmVzcyBwbHVnaW4gYWxvbmdzaWRlIGl0LlxuICovXG5leHBvcnQgY29uc3Qgc2V0dXAgPSBnbG9iYWxTZXR1cC5zZXR1cDtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHRlYXJkb3duOiByZW1vdmVzIHRoZSB0ZW1wIHZhdWx0IGFuZCBkaXNwb3NlcyB0aGUgdHJhbnNwb3J0LlxuICovXG5leHBvcnQgY29uc3QgdGVhcmRvd24gPSBnbG9iYWxTZXR1cC50ZWFyZG93bjtcbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0JBLFNBQVMsbUJBQW1CO0FBRTVCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBRVAsTUFBTSxjQUFjLFlBQVk7QUFBQSxFQUM5Qix3QkFBd0IsQ0FBQywrQ0FBK0M7QUFBQSxFQUN4RSxVQUFVO0FBQ1osQ0FBQztBQU1NLE1BQU0sUUFBUSxZQUFZO0FBSzFCLE1BQU0sV0FBVyxZQUFZOyIsIm5hbWVzIjpbXX0=
|