obsidian-dev-utils 2.26.3 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/lib/@types/compare-versions.d.ts +2 -2
  3. package/dist/lib/@types.cjs +11 -2
  4. package/dist/lib/Async.cjs +18 -7
  5. package/dist/lib/Async.d.ts +2 -2
  6. package/dist/lib/Blob.cjs +21 -6
  7. package/dist/lib/DocumentFragment.cjs +11 -2
  8. package/dist/lib/Error.cjs +20 -6
  9. package/dist/lib/Error.d.ts +7 -0
  10. package/dist/lib/Object.cjs +38 -5
  11. package/dist/lib/Object.d.ts +21 -0
  12. package/dist/lib/Path.cjs +14 -6
  13. package/dist/lib/Path.d.ts +1 -1
  14. package/dist/lib/RegExp.cjs +11 -2
  15. package/dist/lib/String.cjs +14 -4
  16. package/dist/lib/String.d.ts +4 -1
  17. package/dist/lib/ValueProvider.cjs +11 -2
  18. package/dist/lib/ValueProvider.d.ts +1 -1
  19. package/dist/lib/_dependencies.cjs +7734 -1266
  20. package/dist/lib/_dependencies.d.ts +4 -6
  21. package/dist/lib/index.cjs +14 -23
  22. package/dist/lib/index.d.ts +13 -19
  23. package/dist/lib/obsidian/App.cjs +13 -3
  24. package/dist/lib/obsidian/App.d.ts +1 -1
  25. package/dist/lib/obsidian/AttachmentPath.cjs +13 -4
  26. package/dist/lib/obsidian/AttachmentPath.d.ts +2 -2
  27. package/dist/lib/obsidian/Backlink.cjs +16 -6
  28. package/dist/lib/obsidian/Backlink.d.ts +7 -7
  29. package/dist/lib/obsidian/Callout.cjs +14 -4
  30. package/dist/lib/obsidian/Callout.d.ts +4 -4
  31. package/dist/lib/obsidian/Dataview.cjs +20 -9
  32. package/dist/lib/obsidian/Dataview.d.ts +22 -16
  33. package/dist/lib/obsidian/DataviewLink.cjs +12 -4
  34. package/dist/lib/obsidian/DataviewLink.d.ts +2 -2
  35. package/dist/lib/obsidian/FrontMatter.cjs +17 -7
  36. package/dist/lib/obsidian/FrontMatter.d.ts +31 -7
  37. package/dist/lib/obsidian/Link.cjs +19 -10
  38. package/dist/lib/obsidian/Link.d.ts +25 -13
  39. package/dist/lib/obsidian/MarkdownCodeBlockProcessor.cjs +14 -4
  40. package/dist/lib/obsidian/MarkdownCodeBlockProcessor.d.ts +1 -1
  41. package/dist/lib/obsidian/MetadataCache.cjs +30 -5
  42. package/dist/lib/obsidian/MetadataCache.d.ts +11 -5
  43. package/dist/lib/obsidian/Modal/Alert.cjs +14 -3
  44. package/dist/lib/obsidian/Modal/Alert.d.ts +1 -1
  45. package/dist/lib/obsidian/Modal/Prompt.cjs +14 -3
  46. package/dist/lib/obsidian/Modal/Prompt.d.ts +3 -3
  47. package/dist/lib/obsidian/Modal/SelectItem.cjs +11 -2
  48. package/dist/lib/obsidian/Modal/SelectItem.d.ts +4 -4
  49. package/dist/lib/obsidian/Modal/index.cjs +11 -2
  50. package/dist/lib/obsidian/Modal/index.d.ts +3 -3
  51. package/dist/lib/obsidian/ObsidianSettings.cjs +11 -2
  52. package/dist/lib/obsidian/ObsidianSettings.d.ts +1 -1
  53. package/dist/lib/obsidian/Plugin/ObsidianPluginRepoPaths.cjs +11 -2
  54. package/dist/lib/obsidian/Plugin/Plugin.cjs +11 -2
  55. package/dist/lib/obsidian/Plugin/Plugin.d.ts +1 -1
  56. package/dist/lib/obsidian/Plugin/PluginBase.cjs +37 -23
  57. package/dist/lib/obsidian/Plugin/PluginBase.d.ts +8 -9
  58. package/dist/lib/obsidian/Plugin/PluginSettings.cjs +11 -2
  59. package/dist/lib/obsidian/Plugin/PluginSettingsTabBase.cjs +11 -2
  60. package/dist/lib/obsidian/Plugin/PluginSettingsTabBase.d.ts +2 -2
  61. package/dist/lib/obsidian/Plugin/UIComponent.cjs +11 -2
  62. package/dist/lib/obsidian/Plugin/UIComponent.d.ts +2 -2
  63. package/dist/lib/obsidian/Plugin/index.cjs +11 -2
  64. package/dist/lib/obsidian/Plugin/index.d.ts +6 -6
  65. package/dist/lib/obsidian/ResourceUrl.cjs +11 -2
  66. package/dist/lib/obsidian/ResourceUrl.d.ts +1 -1
  67. package/dist/lib/obsidian/TAbstractFile.cjs +12 -3
  68. package/dist/lib/obsidian/TAbstractFile.d.ts +1 -1
  69. package/dist/lib/obsidian/TFile.cjs +11 -2
  70. package/dist/lib/obsidian/TFile.d.ts +1 -1
  71. package/dist/lib/obsidian/TFolder.cjs +11 -2
  72. package/dist/lib/obsidian/TFolder.d.ts +2 -1
  73. package/dist/lib/obsidian/Vault.cjs +23 -15
  74. package/dist/lib/obsidian/Vault.d.ts +21 -7
  75. package/dist/lib/obsidian/index.cjs +11 -2
  76. package/dist/lib/obsidian/index.d.ts +18 -18
  77. package/dist/lib/scripts/CliUtils.cjs +170 -0
  78. package/dist/lib/{cli.d.ts → scripts/CliUtils.d.ts} +1 -1
  79. package/dist/lib/scripts/CodeGenerator.cjs +56 -0
  80. package/dist/lib/{bin → scripts}/ESLint/@types/@guardian__eslint-plugin-tsdoc-required.d.ts +3 -2
  81. package/dist/lib/{bin → scripts}/ESLint/@types/eslint-plugin-modules-newlines.d.ts +3 -2
  82. package/dist/lib/{bin → scripts}/ESLint/@types/eslint-plugin-verify-tsdoc.d.ts +3 -2
  83. package/dist/lib/scripts/ESLint/ESLint.cjs +92 -0
  84. package/dist/lib/{bin → scripts}/ESLint/ESLint.d.ts +2 -2
  85. package/dist/lib/scripts/ESLint/eslint.config.cjs +170 -0
  86. package/dist/lib/scripts/ESLint/eslint.config.d.ts +16 -0
  87. package/dist/lib/scripts/ESLint/index.cjs +62 -0
  88. package/dist/lib/scripts/ESLint/index.d.ts +2 -0
  89. package/dist/lib/scripts/Fs.cjs +98 -0
  90. package/dist/lib/{Fs.d.ts → scripts/Fs.d.ts} +3 -3
  91. package/dist/lib/scripts/JSON.cjs +71 -0
  92. package/dist/lib/{JSON.d.ts → scripts/JSON.d.ts} +3 -24
  93. package/dist/lib/scripts/NodeModules.cjs +87 -0
  94. package/dist/lib/scripts/NodeModules.d.ts +9 -0
  95. package/dist/lib/scripts/Npm.cjs +97 -0
  96. package/dist/lib/{Npm.d.ts → scripts/Npm.d.ts} +3 -3
  97. package/dist/lib/scripts/ObsidianDevUtilsRepoPaths.cjs +76 -0
  98. package/dist/lib/{bin → scripts}/ObsidianDevUtilsRepoPaths.d.ts +4 -0
  99. package/dist/lib/scripts/Root.cjs +142 -0
  100. package/dist/lib/{Root.d.ts → scripts/Root.d.ts} +4 -4
  101. package/dist/lib/scripts/build.cjs +67 -0
  102. package/dist/lib/scripts/cli.cjs +80 -0
  103. package/dist/lib/scripts/esbuild/Dependency.cjs +135 -0
  104. package/dist/lib/scripts/esbuild/ObsidianPluginBuilder.cjs +167 -0
  105. package/dist/lib/{bin → scripts}/esbuild/ObsidianPluginBuilder.d.ts +5 -5
  106. package/dist/lib/scripts/esbuild/copyToObsidianPluginsFolderPlugin.cjs +67 -0
  107. package/dist/lib/{bin → scripts}/esbuild/copyToObsidianPluginsFolderPlugin.d.ts +1 -1
  108. package/dist/lib/scripts/esbuild/fixSourceMapsPlugin.cjs +83 -0
  109. package/dist/lib/{bin → scripts}/esbuild/fixSourceMapsPlugin.d.ts +1 -1
  110. package/dist/lib/{bin → scripts}/esbuild/index.cjs +11 -2
  111. package/dist/lib/scripts/esbuild/index.d.ts +7 -0
  112. package/dist/lib/scripts/esbuild/lintPlugin.cjs +64 -0
  113. package/dist/lib/{bin → scripts}/esbuild/lintPlugin.d.ts +1 -1
  114. package/dist/lib/scripts/esbuild/preprocessPlugin.cjs +95 -0
  115. package/dist/lib/{bin → scripts}/esbuild/preprocessPlugin.d.ts +1 -1
  116. package/dist/lib/scripts/esbuild/renameToCjsPlugin.cjs +85 -0
  117. package/dist/lib/{bin → scripts}/esbuild/renameToCjsPlugin.d.ts +1 -1
  118. package/dist/lib/scripts/index.cjs +98 -0
  119. package/dist/lib/scripts/index.d.ts +14 -0
  120. package/dist/lib/scripts/spellcheck.cjs +67 -0
  121. package/dist/lib/{bin → scripts}/spellcheck.d.ts +1 -1
  122. package/dist/lib/scripts/version.cjs +349 -0
  123. package/dist/lib/{bin → scripts}/version.d.ts +7 -8
  124. package/dist/lib/url.cjs +11 -2
  125. package/package.json +136 -131
  126. package/dist/lib/CodeGenerator.cjs +0 -47
  127. package/dist/lib/Fs.cjs +0 -89
  128. package/dist/lib/JSON.cjs +0 -85
  129. package/dist/lib/Npm.cjs +0 -88
  130. package/dist/lib/Root.cjs +0 -145
  131. package/dist/lib/bin/ESLint/@types/@stylistic__eslint-plugin.d.ts +0 -10
  132. package/dist/lib/bin/ESLint/@types/@typescript-eslint__eslint-plugin.d.ts +0 -21
  133. package/dist/lib/bin/ESLint/@types/@typescript-eslint__parser.d.ts +0 -10
  134. package/dist/lib/bin/ESLint/@types/eslint-plugin-deprecation.d.ts +0 -11
  135. package/dist/lib/bin/ESLint/@types/eslint-plugin-import.d.ts +0 -10
  136. package/dist/lib/bin/ESLint/@types/globals.d.ts +0 -16
  137. package/dist/lib/bin/ESLint/ESLint.cjs +0 -84
  138. package/dist/lib/bin/ESLint/eslint.config.cjs +0 -114
  139. package/dist/lib/bin/ESLint/eslint.config.d.ts +0 -20
  140. package/dist/lib/bin/ESLint/index.cjs +0 -53
  141. package/dist/lib/bin/ESLint/index.d.ts +0 -2
  142. package/dist/lib/bin/ObsidianDevUtilsRepoPaths.cjs +0 -66
  143. package/dist/lib/bin/build.cjs +0 -58
  144. package/dist/lib/bin/cli.cjs +0 -81
  145. package/dist/lib/bin/esbuild/Dependency.cjs +0 -125
  146. package/dist/lib/bin/esbuild/ObsidianPluginBuilder.cjs +0 -160
  147. package/dist/lib/bin/esbuild/copyToObsidianPluginsFolderPlugin.cjs +0 -59
  148. package/dist/lib/bin/esbuild/fixSourceMapsPlugin.cjs +0 -74
  149. package/dist/lib/bin/esbuild/index.d.ts +0 -7
  150. package/dist/lib/bin/esbuild/lintPlugin.cjs +0 -55
  151. package/dist/lib/bin/esbuild/preprocessPlugin.cjs +0 -89
  152. package/dist/lib/bin/esbuild/renameToCjsPlugin.cjs +0 -75
  153. package/dist/lib/bin/index.cjs +0 -68
  154. package/dist/lib/bin/index.d.ts +0 -7
  155. package/dist/lib/bin/spellcheck.cjs +0 -58
  156. package/dist/lib/bin/version.cjs +0 -352
  157. package/dist/lib/cli.cjs +0 -170
  158. /package/dist/lib/{CodeGenerator.d.ts → scripts/CodeGenerator.d.ts} +0 -0
  159. /package/dist/lib/{bin → scripts}/build.d.ts +0 -0
  160. /package/dist/lib/{bin → scripts}/cli.d.ts +0 -0
  161. /package/dist/lib/{bin → scripts}/esbuild/Dependency.d.ts +0 -0
@@ -3,8 +3,8 @@
3
3
  * This module defines a base class for creating plugin setting tabs in Obsidian.
4
4
  * It provides a utility method to bind value components to plugin settings and handle changes.
5
5
  */
6
- import { PluginSettingTab } from "obsidian";
7
- import { PluginBase } from "./PluginBase.ts";
6
+ import { PluginSettingTab } from 'obsidian';
7
+ import { PluginBase } from './PluginBase.ts';
8
8
  /**
9
9
  * Base class for creating plugin settings tabs in Obsidian.
10
10
  * Provides a method for binding value components to plugin settings and handling changes.
@@ -27,7 +27,16 @@ __export(UIComponent_exports, {
27
27
  });
28
28
  module.exports = __toCommonJS(UIComponent_exports);
29
29
  var import_obsidian = require("obsidian");
30
- var __import_meta_url = globalThis["import.meta.url"] ?? (() => require("node:url").pathToFileURL(__filename))();
30
+ var __import_meta_url = globalThis["import.meta.url"] ?? (() => {
31
+ const normalizedPath = __filename.replace(/\\/g, "/");
32
+ const windowsDriveLetterMatch = /^([a-zA-Z]):/.exec(normalizedPath);
33
+ let path = normalizedPath;
34
+ if (windowsDriveLetterMatch) {
35
+ path = `/${windowsDriveLetterMatch[1].toUpperCase()}:${normalizedPath.slice(2)}`;
36
+ }
37
+ const encodedPath = encodeURIComponent(path).replace(/%2F/g, "/").replace(/%3A/g, ":");
38
+ return new URL(`file://${encodedPath}`);
39
+ })();
31
40
  var __process = globalThis["process"] ?? {
32
41
  "cwd": () => "/",
33
42
  "env": {},
@@ -81,4 +90,4 @@ function getValidatorElement(uiComponent) {
81
90
  0 && (module.exports = {
82
91
  bindUiComponent
83
92
  });
84
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9VSUNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIF9faW1wb3J0X21ldGFfdXJsID0gZ2xvYmFsVGhpc1tcImltcG9ydC5tZXRhLnVybFwiXSA/PyAoKCk9PnJlcXVpcmUoXCJub2RlOnVybFwiKS5wYXRoVG9GaWxlVVJMKF9fZmlsZW5hbWUpKSgpO1xudmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbXCJwcm9jZXNzXCJdID8/IHtcbiAgXCJjd2RcIjogKCk9PlwiL1wiLFxuICBcImVudlwiOiB7fSxcbiAgXCJwbGF0Zm9ybVwiOiBcImFuZHJvaWRcIlxufTtcbmltcG9ydCB0eXBlIHsgS2V5c01hdGNoaW5nIH0gZnJvbSBcIi4uLy4uL0B0eXBlcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5CYXNlIH0gZnJvbSBcIi4vUGx1Z2luQmFzZS50c1wiO1xuaW1wb3J0IHtcbiAgRHJvcGRvd25Db21wb25lbnQsXG4gIFNsaWRlckNvbXBvbmVudCxcbiAgVGV4dEFyZWFDb21wb25lbnQsXG4gIFRleHRDb21wb25lbnRcbn0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbi8qKlxuICogQSBVSSBjb21wb25lbnQgdGhhdCBjYW4gYmUgYm91bmQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVSUNvbXBvbmVudDxVSVZhbHVlPiB7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBzZXRWYWx1ZSh2YWx1ZTogVUlWYWx1ZSk6IHRoaXM7XG5cbiAgLyoqXG4gICAqIFNldHMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudCBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQgY2hhbmdlcy5cbiAgICovXG4gIG9uQ2hhbmdlKGNhbGxiYWNrOiAobmV3VmFsdWU6IFVJVmFsdWUpID0+IFByb21pc2U8dm9pZD4pOiB0aGlzO1xufVxuXG4vKipcbiAqIEEgVUkgY29tcG9uZW50IHRoYXQgY2FuIGJlIHZhbGlkYXRlZC5cbiAqL1xuaW50ZXJmYWNlIFZhbGlkYXRvckVsZW1lbnQge1xuICAvKipcbiAgICogU2V0cyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIG9uIHRoZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IgbWVzc2FnZSB0byBzZXQgb24gdGhlIGVsZW1lbnQuXG4gICAqL1xuICBzZXRDdXN0b21WYWxpZGl0eShlcnJvcjogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogUmVwb3J0cyB0aGUgdmFsaWRpdHkgb2YgdGhlIGVsZW1lbnQuXG4gICAqL1xuICByZXBvcnRWYWxpZGl0eSgpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGJpbmRpbmcgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAqL1xuaW50ZXJmYWNlIEJpbmRVSUNvbXBvbmVudE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlPiB7XG4gIC8vIElmIHRydWUsIHNhdmVzIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXV0b21hdGljYWxseSBhZnRlciB0aGUgY29tcG9uZW50IHZhbHVlIGNoYW5nZXMuIERlZmF1bHQgaXMgYHRydWVgLlxuICBhdXRvU2F2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0IHRvIGJpbmQgdGhlIGNvbXBvbmVudCB0by4gRGVmYXVsdCBpcyB0aGUgcGx1Z2luJ3MgY3VycmVudCBzZXR0aW5ncy5cbiAgICovXG4gIHBsdWdpblNldHRpbmdzPzogUGx1Z2luU2V0dGluZ3M7XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgVUkgdmFsdWUgYmVmb3JlIHNldHRpbmcgaXQgb24gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICogQHBhcmFtIHVpVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgQW4gZXJyb3IgbWVzc2FnZSBpZiB0aGUgdmFsdWUgaXMgaW52YWxpZCwgb3IgYG51bGxgIGlmIGl0IGlzIHZhbGlkLlxuICAgKi9cbiAgdWlWYWx1ZVZhbGlkYXRvcj86ICh1aVZhbHVlOiBVSVZhbHVlVHlwZSkgPT4gc3RyaW5nIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBFeHRlbmRlZCBvcHRpb25zIGZvciBiaW5kaW5nIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gKi9cbmludGVyZmFjZSBCaW5kVUlDb21wb25lbnRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlLCBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFBsdWdpblNldHRpbmdzPiBleHRlbmRzIEJpbmRVSUNvbXBvbmVudE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlPiB7XG4gIC8qKlxuICogQ29udmVydHMgdGhlIHNldHRpbmcgdmFsdWUgdG8gdGhlIHZhbHVlIHVzZWQgYnkgdGhlIFVJIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBwcm9wZXJ0eVZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgVUkgY29tcG9uZW50LlxuICovXG4gIHNldHRpbmdUb1VJVmFsdWVDb252ZXJ0ZXI6IChwcm9wZXJ0eVZhbHVlOiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV0pID0+IFVJVmFsdWVUeXBlO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgVUkgY29tcG9uZW50J3MgdmFsdWUgYmFjayB0byB0aGUgc2V0dGluZyB2YWx1ZS5cbiAgICogQHBhcmFtIHVpVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgdWlUb1NldHRpbmdWYWx1ZUNvbnZlcnRlcjogKHVpVmFsdWU6IFVJVmFsdWVUeXBlKSA9PiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV07XG59XG5cbi8qKlxuICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwcm9wZXJ0eSBpbiB0aGUgcGx1Z2luIHNldHRpbmdzIHdpdGggb3B0aW9uYWwgYXV0b21hdGljIHNhdmluZyBhbmQgdmFsdWUgY29udmVyc2lvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCBleHRlbmRzIGBQbHVnaW5CYXNlYC5cbiAqIEB0eXBlUGFyYW0gVFVJQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudCBleHRlbmRpbmcgYFVJQ29tcG9uZW50YC5cbiAqIEB0eXBlUGFyYW0gUHJvcGVydHkgLSBUaGUga2V5IG9mIHRoZSBwbHVnaW4gc2V0dGluZyB0aGF0IHRoZSBjb21wb25lbnQgaXMgYm91bmQgdG8uXG4gKiBAdHlwZVBhcmFtIFVJVmFsdWVUeXBlIC0gVGhlIGluZmVycmVkIHR5cGUgYmFzZWQgb24gdGhlIFVJIGNvbXBvbmVudCdzIHR5cGUuXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIGluZmVycmVkIHR5cGUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyBvYmplY3QuXG4gKlxuICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4uXG4gKiBAcGFyYW0gdWlDb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRoYXQgd2lsbCBkaXNwbGF5IGFuZCBpbnRlcmFjdCB3aXRoIHRoZSBzZXR0aW5nIHZhbHVlLlxuICogQHBhcmFtIHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IGtleSBpbiBgUGx1Z2luU2V0dGluZ3NgIHRvIGJpbmQgdG8gdGhlIFVJIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuICpcbiAqIEByZXR1cm5zIFRoZSBgVUlDb21wb25lbnRgIGluc3RhbmNlIHRoYXQgd2FzIGJvdW5kIHRvIHRoZSBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJpbmRVaUNvbXBvbmVudDxcbiAgUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxvYmplY3Q+LFxuICBUVUlDb21wb25lbnQgZXh0ZW5kcyBVSUNvbXBvbmVudDx1bmtub3duPixcbiAgUHJvcGVydHkgZXh0ZW5kcyBLZXlzTWF0Y2hpbmc8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlPixcbiAgVUlWYWx1ZVR5cGUgPSBUVUlDb21wb25lbnQgZXh0ZW5kcyBVSUNvbXBvbmVudDxpbmZlciBQPiA/IFAgOiBuZXZlcixcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QgPSBQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPGluZmVyIFA+ID8gUCA6IG5ldmVyLFxuPihcbiAgcGx1Z2luOiBQbHVnaW4sXG4gIHVpQ29tcG9uZW50OiBUVUlDb21wb25lbnQsXG4gIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgb3B0aW9ucz86IEJpbmRVSUNvbXBvbmVudE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlPlxuKTogVFVJQ29tcG9uZW50O1xuXG4vKipcbiAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncyB3aXRoIG9wdGlvbmFsIGF1dG9tYXRpYyBzYXZpbmcgYW5kIHZhbHVlIGNvbnZlcnNpb24uXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgZXh0ZW5kcyBgUGx1Z2luQmFzZWAuXG4gKiBAdHlwZVBhcmFtIFRVSUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQgZXh0ZW5kaW5nIGBVSUNvbXBvbmVudGAuXG4gKiBAdHlwZVBhcmFtIFByb3BlcnR5IC0gVGhlIGtleSBvZiB0aGUgcGx1Z2luIHNldHRpbmcgdGhhdCB0aGUgY29tcG9uZW50IGlzIGJvdW5kIHRvLlxuICogQHR5cGVQYXJhbSBVSVZhbHVlVHlwZSAtIFRoZSBpbmZlcnJlZCB0eXBlIGJhc2VkIG9uIHRoZSBVSSBjb21wb25lbnQncyB0eXBlLlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSBpbmZlcnJlZCB0eXBlIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luLlxuICogQHBhcmFtIHVpQ29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHdpbGwgZGlzcGxheSBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgc2V0dGluZyB2YWx1ZS5cbiAqIEBwYXJhbSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgaW4gYFBsdWdpblNldHRpbmdzYCB0byBiaW5kIHRvIHRoZSBVSSBjb21wb25lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgYFVJQ29tcG9uZW50YCBpbnN0YW5jZSB0aGF0IHdhcyBib3VuZCB0byB0aGUgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kVWlDb21wb25lbnQ8XG4gIFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8b2JqZWN0PixcbiAgVFVJQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQ8dW5rbm93bj4sXG4gIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUGx1Z2luU2V0dGluZ3MsXG4gIFVJVmFsdWVUeXBlID0gVFVJQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQ8aW5mZXIgUD4gPyBQIDogbmV2ZXIsXG4gIFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0ID0gUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxpbmZlciBQPiA/IFAgOiBuZXZlcixcbj4oXG4gIHBsdWdpbjogUGx1Z2luLFxuICB1aUNvbXBvbmVudDogVFVJQ29tcG9uZW50LFxuICBwcm9wZXJ0eTogUHJvcGVydHksXG4gIG9wdGlvbnM6IEJpbmRVSUNvbXBvbmVudE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZVR5cGUsIFByb3BlcnR5PlxuKTogVFVJQ29tcG9uZW50O1xuXG4vKipcbiAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncyB3aXRoIG9wdGlvbmFsIGF1dG9tYXRpYyBzYXZpbmcgYW5kIHZhbHVlIGNvbnZlcnNpb24uXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgZXh0ZW5kcyBgUGx1Z2luQmFzZWAuXG4gKiBAdHlwZVBhcmFtIFRVSUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQgZXh0ZW5kaW5nIGBVSUNvbXBvbmVudGAuXG4gKiBAdHlwZVBhcmFtIFByb3BlcnR5IC0gVGhlIGtleSBvZiB0aGUgcGx1Z2luIHNldHRpbmcgdGhhdCB0aGUgY29tcG9uZW50IGlzIGJvdW5kIHRvLlxuICogQHR5cGVQYXJhbSBVSVZhbHVlVHlwZSAtIFRoZSBpbmZlcnJlZCB0eXBlIGJhc2VkIG9uIHRoZSBVSSBjb21wb25lbnQncyB0eXBlLlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSBpbmZlcnJlZCB0eXBlIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luLlxuICogQHBhcmFtIHVpQ29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHdpbGwgZGlzcGxheSBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgc2V0dGluZyB2YWx1ZS5cbiAqIEBwYXJhbSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgaW4gYFBsdWdpblNldHRpbmdzYCB0byBiaW5kIHRvIHRoZSBVSSBjb21wb25lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgYFVJQ29tcG9uZW50YCBpbnN0YW5jZSB0aGF0IHdhcyBib3VuZCB0byB0aGUgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kVWlDb21wb25lbnQ8XG4gIFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8b2JqZWN0PixcbiAgVFVJQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQ8dW5rbm93bj4sXG4gIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUGx1Z2luU2V0dGluZ3MsXG4gIFVJVmFsdWVUeXBlID0gVFVJQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQ8aW5mZXIgUD4gPyBQIDogbmV2ZXIsXG4gIFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0ID0gUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxpbmZlciBQPiA/IFAgOiBuZXZlcixcbj4oXG4gIHBsdWdpbjogUGx1Z2luLFxuICB1aUNvbXBvbmVudDogVFVJQ29tcG9uZW50LFxuICBwcm9wZXJ0eTogUHJvcGVydHksXG4gIG9wdGlvbnM/OiBCaW5kVUlDb21wb25lbnRPcHRpb25zPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlVHlwZT4gfCBCaW5kVUlDb21wb25lbnRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlLCBQcm9wZXJ0eT5cbik6IFRVSUNvbXBvbmVudCB7XG4gIHR5cGUgUHJvcGVydHlUeXBlID0gUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldO1xuICBjb25zdCBERUZBVUxUX09QVElPTlM6IEJpbmRVSUNvbXBvbmVudE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZVR5cGUsIFByb3BlcnR5PiA9IHtcbiAgICBhdXRvU2F2ZTogdHJ1ZSxcbiAgICBzZXR0aW5nVG9VSVZhbHVlQ29udmVydGVyOiAodmFsdWUpOiBVSVZhbHVlVHlwZSA9PiB2YWx1ZSBhcyBVSVZhbHVlVHlwZSxcbiAgICB1aVRvU2V0dGluZ1ZhbHVlQ29udmVydGVyOiAodmFsdWUpOiBQcm9wZXJ0eVR5cGUgPT4gdmFsdWUgYXMgUHJvcGVydHlUeXBlXG4gIH07XG5cbiAgY29uc3Qgb3B0aW9uc0V4dCA9IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMsIERFRkFVTFRfT1BUSU9OUyk7XG4gIGNvbnN0IHBsdWdpbkV4dCA9IHBsdWdpbiBhcyB1bmtub3duIGFzIFBsdWdpbkJhc2U8UGx1Z2luU2V0dGluZ3M+O1xuICBjb25zdCB1aUNvbXBvbmVudEV4dCA9IHVpQ29tcG9uZW50IGFzIFVJQ29tcG9uZW50PFVJVmFsdWVUeXBlPjtcbiAgY29uc3QgcGx1Z2luU2V0dGluZ3MgPSBvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzID8/IHBsdWdpbkV4dC5zZXR0aW5nc0NvcHk7XG4gIHVpQ29tcG9uZW50RXh0XG4gICAgLnNldFZhbHVlKG9wdGlvbnNFeHQuc2V0dGluZ1RvVUlWYWx1ZUNvbnZlcnRlcihwbHVnaW5TZXR0aW5nc1twcm9wZXJ0eV0pKVxuICAgIC5vbkNoYW5nZShhc3luYyAodWlWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG9wdGlvbnNFeHQudWlWYWx1ZVZhbGlkYXRvcikge1xuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBvcHRpb25zRXh0LnVpVmFsdWVWYWxpZGF0b3IodWlWYWx1ZSk7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvckVsZW1lbnQgPSBnZXRWYWxpZGF0b3JFbGVtZW50KHVpQ29tcG9uZW50KTtcbiAgICAgICAgaWYgKHZhbGlkYXRvckVsZW1lbnQpIHtcbiAgICAgICAgICB2YWxpZGF0b3JFbGVtZW50LnNldEN1c3RvbVZhbGlkaXR5KGVycm9yTWVzc2FnZSA/PyBcIlwiKTtcbiAgICAgICAgICB2YWxpZGF0b3JFbGVtZW50LnJlcG9ydFZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcGx1Z2luU2V0dGluZ3NbcHJvcGVydHldID0gb3B0aW9uc0V4dC51aVRvU2V0dGluZ1ZhbHVlQ29udmVydGVyKHVpVmFsdWUpO1xuICAgICAgaWYgKG9wdGlvbnNFeHQuYXV0b1NhdmUpIHtcbiAgICAgICAgYXdhaXQgcGx1Z2luRXh0LnNhdmVTZXR0aW5ncyhwbHVnaW5TZXR0aW5ncyk7XG4gICAgICB9XG4gICAgfSk7XG4gIHJldHVybiB1aUNvbXBvbmVudDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB2YWxpZGF0b3IgZWxlbWVudCBmcm9tIGEgVUkgY29tcG9uZW50IGlmIGl0IGV4aXN0cy5cbiAqIEBwYXJhbSB1aUNvbXBvbmVudCAtIFRoZSBVSSBjb21wb25lbnQgdG8gZ2V0IHRoZSB2YWxpZGF0b3IgZWxlbWVudCBmcm9tLlxuICogQHJldHVybnMgVGhlIHZhbGlkYXRvciBlbGVtZW50IGlmIGl0IGV4aXN0cywgb3IgYG51bGxgIGlmIGl0IGRvZXMgbm90LlxuICovXG5mdW5jdGlvbiBnZXRWYWxpZGF0b3JFbGVtZW50KHVpQ29tcG9uZW50OiBVSUNvbXBvbmVudDx1bmtub3duPik6IFZhbGlkYXRvckVsZW1lbnQgfCBudWxsIHtcbiAgaWYgKHVpQ29tcG9uZW50IGluc3RhbmNlb2YgRHJvcGRvd25Db21wb25lbnQpIHtcbiAgICByZXR1cm4gdWlDb21wb25lbnQuc2VsZWN0RWw7XG4gIH1cblxuICBpZiAodWlDb21wb25lbnQgaW5zdGFuY2VvZiBTbGlkZXJDb21wb25lbnQpIHtcbiAgICByZXR1cm4gdWlDb21wb25lbnQuc2xpZGVyRWw7XG4gIH1cblxuICBpZiAodWlDb21wb25lbnQgaW5zdGFuY2VvZiBUZXh0QXJlYUNvbXBvbmVudCkge1xuICAgIHJldHVybiB1aUNvbXBvbmVudC5pbnB1dEVsO1xuICB9XG5cbiAgaWYgKHVpQ29tcG9uZW50IGluc3RhbmNlb2YgVGV4dENvbXBvbmVudCkge1xuICAgIHJldHVybiB1aUNvbXBvbmVudC5pbnB1dEVsO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxzQkFLTztBQWJQLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sTUFBSSxRQUFRLFVBQVUsRUFBRSxjQUFjLFVBQVUsR0FBRztBQUM3RyxJQUFJLFlBQVksV0FBVyxTQUFTLEtBQUs7QUFBQSxFQUN2QyxPQUFPLE1BQUk7QUFBQSxFQUNYLE9BQU8sQ0FBQztBQUFBLEVBQ1IsWUFBWTtBQUNkO0FBNEpPLFNBQVMsZ0JBT2QsUUFDQSxhQUNBLFVBQ0EsU0FDYztBQUVkLFFBQU0sa0JBQXlGO0FBQUEsSUFDN0YsVUFBVTtBQUFBLElBQ1YsMkJBQTJCLENBQUMsVUFBdUI7QUFBQSxJQUNuRCwyQkFBMkIsQ0FBQyxVQUF3QjtBQUFBLEVBQ3REO0FBRUEsUUFBTSxhQUFhLE9BQU8sT0FBTyxDQUFDLEdBQUcsU0FBUyxlQUFlO0FBQzdELFFBQU0sWUFBWTtBQUNsQixRQUFNLGlCQUFpQjtBQUN2QixRQUFNLGlCQUFpQixXQUFXLGtCQUFrQixVQUFVO0FBQzlELGlCQUNHLFNBQVMsV0FBVywwQkFBMEIsZUFBZSxRQUFRLENBQUMsQ0FBQyxFQUN2RSxTQUFTLE9BQU8sWUFBWTtBQUMzQixRQUFJLFdBQVcsa0JBQWtCO0FBQy9CLFlBQU0sZUFBZSxXQUFXLGlCQUFpQixPQUFPO0FBQ3hELFlBQU0sbUJBQW1CLG9CQUFvQixXQUFXO0FBQ3hELFVBQUksa0JBQWtCO0FBQ3BCLHlCQUFpQixrQkFBa0IsZ0JBQWdCLEVBQUU7QUFDckQseUJBQWlCLGVBQWU7QUFBQSxNQUNsQztBQUNBLFVBQUksY0FBYztBQUNoQjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQ0EsbUJBQWUsUUFBUSxJQUFJLFdBQVcsMEJBQTBCLE9BQU87QUFDdkUsUUFBSSxXQUFXLFVBQVU7QUFDdkIsWUFBTSxVQUFVLGFBQWEsY0FBYztBQUFBLElBQzdDO0FBQUEsRUFDRixDQUFDO0FBQ0gsU0FBTztBQUNUO0FBT0EsU0FBUyxvQkFBb0IsYUFBNEQ7QUFDdkYsTUFBSSx1QkFBdUIsbUNBQW1CO0FBQzVDLFdBQU8sWUFBWTtBQUFBLEVBQ3JCO0FBRUEsTUFBSSx1QkFBdUIsaUNBQWlCO0FBQzFDLFdBQU8sWUFBWTtBQUFBLEVBQ3JCO0FBRUEsTUFBSSx1QkFBdUIsbUNBQW1CO0FBQzVDLFdBQU8sWUFBWTtBQUFBLEVBQ3JCO0FBRUEsTUFBSSx1QkFBdUIsK0JBQWU7QUFDeEMsV0FBTyxZQUFZO0FBQUEsRUFDckI7QUFFQSxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
93
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9VSUNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIF9faW1wb3J0X21ldGFfdXJsID0gZ2xvYmFsVGhpc1tcImltcG9ydC5tZXRhLnVybFwiXSA/PyAoKCk9Pntjb25zdCBub3JtYWxpemVkUGF0aD1fX2ZpbGVuYW1lLnJlcGxhY2UoL1xcXFwvZyxcIi9cIik7Y29uc3Qgd2luZG93c0RyaXZlTGV0dGVyTWF0Y2g9L14oW2EtekEtWl0pOi8uZXhlYyhub3JtYWxpemVkUGF0aCk7bGV0IHBhdGg9bm9ybWFsaXplZFBhdGg7aWYod2luZG93c0RyaXZlTGV0dGVyTWF0Y2gpe3BhdGg9YC8ke3dpbmRvd3NEcml2ZUxldHRlck1hdGNoWzFdLnRvVXBwZXJDYXNlKCl9OiR7bm9ybWFsaXplZFBhdGguc2xpY2UoMil9YH1jb25zdCBlbmNvZGVkUGF0aD1lbmNvZGVVUklDb21wb25lbnQocGF0aCkucmVwbGFjZSgvJTJGL2csXCIvXCIpLnJlcGxhY2UoLyUzQS9nLFwiOlwiKTtyZXR1cm4gbmV3IFVSTChgZmlsZTovLyR7ZW5jb2RlZFBhdGh9YCl9KSgpO1xudmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbXCJwcm9jZXNzXCJdID8/IHtcbiAgXCJjd2RcIjogKCk9PlwiL1wiLFxuICBcImVudlwiOiB7fSxcbiAgXCJwbGF0Zm9ybVwiOiBcImFuZHJvaWRcIlxufTtcbmltcG9ydCB7XG4gIERyb3Bkb3duQ29tcG9uZW50LFxuICBTbGlkZXJDb21wb25lbnQsXG4gIFRleHRBcmVhQ29tcG9uZW50LFxuICBUZXh0Q29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBLZXlzTWF0Y2hpbmcgfSBmcm9tICcuLi8uLi9AdHlwZXMudHMnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5CYXNlIH0gZnJvbSAnLi9QbHVnaW5CYXNlLnRzJztcblxuLyoqXG4gKiBBIFVJIGNvbXBvbmVudCB0aGF0IGNhbiBiZSBib3VuZCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVJQ29tcG9uZW50PFVJVmFsdWU+IHtcbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQgb24gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHNldFZhbHVlKHZhbHVlOiBVSVZhbHVlKTogdGhpcztcblxuICAvKipcbiAgICogU2V0cyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudCBjaGFuZ2VzLlxuICAgKi9cbiAgb25DaGFuZ2UoY2FsbGJhY2s6IChuZXdWYWx1ZTogVUlWYWx1ZSkgPT4gUHJvbWlzZTx2b2lkPik6IHRoaXM7XG59XG5cbi8qKlxuICogQSBVSSBjb21wb25lbnQgdGhhdCBjYW4gYmUgdmFsaWRhdGVkLlxuICovXG5pbnRlcmZhY2UgVmFsaWRhdG9yRWxlbWVudCB7XG4gIC8qKlxuICAgKiBTZXRzIGEgY3VzdG9tIGVycm9yIG1lc3NhZ2Ugb24gdGhlIGVsZW1lbnQuXG4gICAqIEBwYXJhbSBlcnJvciAtIFRoZSBlcnJvciBtZXNzYWdlIHRvIHNldCBvbiB0aGUgZWxlbWVudC5cbiAgICovXG4gIHNldEN1c3RvbVZhbGlkaXR5KGVycm9yOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXBvcnRzIHRoZSB2YWxpZGl0eSBvZiB0aGUgZWxlbWVudC5cbiAgICovXG4gIHJlcG9ydFZhbGlkaXR5KCk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYmluZGluZyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICovXG5pbnRlcmZhY2UgQmluZFVJQ29tcG9uZW50T3B0aW9uczxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZVR5cGU+IHtcbiAgLy8gSWYgdHJ1ZSwgc2F2ZXMgdGhlIHBsdWdpbiBzZXR0aW5ncyBhdXRvbWF0aWNhbGx5IGFmdGVyIHRoZSBjb21wb25lbnQgdmFsdWUgY2hhbmdlcy4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gIGF1dG9TYXZlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBsdWdpbiBzZXR0aW5ncyBvYmplY3QgdG8gYmluZCB0aGUgY29tcG9uZW50IHRvLiBEZWZhdWx0IGlzIHRoZSBwbHVnaW4ncyBjdXJyZW50IHNldHRpbmdzLlxuICAgKi9cbiAgcGx1Z2luU2V0dGluZ3M/OiBQbHVnaW5TZXR0aW5ncztcblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBVSSB2YWx1ZSBiZWZvcmUgc2V0dGluZyBpdCBvbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKiBAcGFyYW0gdWlWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBBbiBlcnJvciBtZXNzYWdlIGlmIHRoZSB2YWx1ZSBpcyBpbnZhbGlkLCBvciBgbnVsbGAgaWYgaXQgaXMgdmFsaWQuXG4gICAqL1xuICB1aVZhbHVlVmFsaWRhdG9yPzogKHVpVmFsdWU6IFVJVmFsdWVUeXBlKSA9PiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKipcbiAqIEV4dGVuZGVkIG9wdGlvbnMgZm9yIGJpbmRpbmcgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAqL1xuaW50ZXJmYWNlIEJpbmRVSUNvbXBvbmVudE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZVR5cGUsIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUGx1Z2luU2V0dGluZ3M+IGV4dGVuZHMgQmluZFVJQ29tcG9uZW50T3B0aW9uczxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZVR5cGU+IHtcbiAgLyoqXG4gKiBDb252ZXJ0cyB0aGUgc2V0dGluZyB2YWx1ZSB0byB0aGUgdmFsdWUgdXNlZCBieSB0aGUgVUkgY29tcG9uZW50LlxuICogQHBhcmFtIHByb3BlcnR5VmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBVSSBjb21wb25lbnQuXG4gKi9cbiAgc2V0dGluZ1RvVUlWYWx1ZUNvbnZlcnRlcjogKHByb3BlcnR5VmFsdWU6IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5XSkgPT4gVUlWYWx1ZVR5cGU7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBVSSBjb21wb25lbnQncyB2YWx1ZSBiYWNrIHRvIHRoZSBzZXR0aW5nIHZhbHVlLlxuICAgKiBAcGFyYW0gdWlWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqL1xuICB1aVRvU2V0dGluZ1ZhbHVlQ29udmVydGVyOiAodWlWYWx1ZTogVUlWYWx1ZVR5cGUpID0+IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5XTtcbn1cblxuLyoqXG4gKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3Mgd2l0aCBvcHRpb25hbCBhdXRvbWF0aWMgc2F2aW5nIGFuZCB2YWx1ZSBjb252ZXJzaW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IGV4dGVuZHMgYFBsdWdpbkJhc2VgLlxuICogQHR5cGVQYXJhbSBUVUlDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50IGV4dGVuZGluZyBgVUlDb21wb25lbnRgLlxuICogQHR5cGVQYXJhbSBQcm9wZXJ0eSAtIFRoZSBrZXkgb2YgdGhlIHBsdWdpbiBzZXR0aW5nIHRoYXQgdGhlIGNvbXBvbmVudCBpcyBib3VuZCB0by5cbiAqIEB0eXBlUGFyYW0gVUlWYWx1ZVR5cGUgLSBUaGUgaW5mZXJyZWQgdHlwZSBiYXNlZCBvbiB0aGUgVUkgY29tcG9uZW50J3MgdHlwZS5cbiAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgaW5mZXJyZWQgdHlwZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbi5cbiAqIEBwYXJhbSB1aUNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdGhhdCB3aWxsIGRpc3BsYXkgYW5kIGludGVyYWN0IHdpdGggdGhlIHNldHRpbmcgdmFsdWUuXG4gKiBAcGFyYW0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IGluIGBQbHVnaW5TZXR0aW5nc2AgdG8gYmluZCB0byB0aGUgVUkgY29tcG9uZW50LlxuICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gKlxuICogQHJldHVybnMgVGhlIGBVSUNvbXBvbmVudGAgaW5zdGFuY2UgdGhhdCB3YXMgYm91bmQgdG8gdGhlIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYmluZFVpQ29tcG9uZW50PFxuICBQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPG9iamVjdD4sXG4gIFRVSUNvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50PHVua25vd24+LFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVyc1xuICBQcm9wZXJ0eSBleHRlbmRzIEtleXNNYXRjaGluZzxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZVR5cGU+LFxuICBVSVZhbHVlVHlwZSA9IFRVSUNvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50PGluZmVyIFA+ID8gUCA6IG5ldmVyLFxuICBQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdCA9IFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8aW5mZXIgUD4gPyBQIDogbmV2ZXJcbj4oXG4gIHBsdWdpbjogUGx1Z2luLFxuICB1aUNvbXBvbmVudDogVFVJQ29tcG9uZW50LFxuICBwcm9wZXJ0eTogUHJvcGVydHksXG4gIG9wdGlvbnM/OiBCaW5kVUlDb21wb25lbnRPcHRpb25zPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlVHlwZT5cbik6IFRVSUNvbXBvbmVudDtcblxuLyoqXG4gKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3Mgd2l0aCBvcHRpb25hbCBhdXRvbWF0aWMgc2F2aW5nIGFuZCB2YWx1ZSBjb252ZXJzaW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IGV4dGVuZHMgYFBsdWdpbkJhc2VgLlxuICogQHR5cGVQYXJhbSBUVUlDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50IGV4dGVuZGluZyBgVUlDb21wb25lbnRgLlxuICogQHR5cGVQYXJhbSBQcm9wZXJ0eSAtIFRoZSBrZXkgb2YgdGhlIHBsdWdpbiBzZXR0aW5nIHRoYXQgdGhlIGNvbXBvbmVudCBpcyBib3VuZCB0by5cbiAqIEB0eXBlUGFyYW0gVUlWYWx1ZVR5cGUgLSBUaGUgaW5mZXJyZWQgdHlwZSBiYXNlZCBvbiB0aGUgVUkgY29tcG9uZW50J3MgdHlwZS5cbiAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgaW5mZXJyZWQgdHlwZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbi5cbiAqIEBwYXJhbSB1aUNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdGhhdCB3aWxsIGRpc3BsYXkgYW5kIGludGVyYWN0IHdpdGggdGhlIHNldHRpbmcgdmFsdWUuXG4gKiBAcGFyYW0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IGluIGBQbHVnaW5TZXR0aW5nc2AgdG8gYmluZCB0byB0aGUgVUkgY29tcG9uZW50LlxuICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gKlxuICogQHJldHVybnMgVGhlIGBVSUNvbXBvbmVudGAgaW5zdGFuY2UgdGhhdCB3YXMgYm91bmQgdG8gdGhlIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYmluZFVpQ29tcG9uZW50PFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVyc1xuICBQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPG9iamVjdD4sXG4gIFRVSUNvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50PHVua25vd24+LFxuICBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFBsdWdpblNldHRpbmdzLFxuICBVSVZhbHVlVHlwZSA9IFRVSUNvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50PGluZmVyIFA+ID8gUCA6IG5ldmVyLFxuICBQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdCA9IFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8aW5mZXIgUD4gPyBQIDogbmV2ZXJcbj4oXG4gIHBsdWdpbjogUGx1Z2luLFxuICB1aUNvbXBvbmVudDogVFVJQ29tcG9uZW50LFxuICBwcm9wZXJ0eTogUHJvcGVydHksXG4gIG9wdGlvbnM6IEJpbmRVSUNvbXBvbmVudE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZVR5cGUsIFByb3BlcnR5PlxuKTogVFVJQ29tcG9uZW50O1xuXG4vKipcbiAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncyB3aXRoIG9wdGlvbmFsIGF1dG9tYXRpYyBzYXZpbmcgYW5kIHZhbHVlIGNvbnZlcnNpb24uXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgZXh0ZW5kcyBgUGx1Z2luQmFzZWAuXG4gKiBAdHlwZVBhcmFtIFRVSUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQgZXh0ZW5kaW5nIGBVSUNvbXBvbmVudGAuXG4gKiBAdHlwZVBhcmFtIFByb3BlcnR5IC0gVGhlIGtleSBvZiB0aGUgcGx1Z2luIHNldHRpbmcgdGhhdCB0aGUgY29tcG9uZW50IGlzIGJvdW5kIHRvLlxuICogQHR5cGVQYXJhbSBVSVZhbHVlVHlwZSAtIFRoZSBpbmZlcnJlZCB0eXBlIGJhc2VkIG9uIHRoZSBVSSBjb21wb25lbnQncyB0eXBlLlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSBpbmZlcnJlZCB0eXBlIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luLlxuICogQHBhcmFtIHVpQ29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHdpbGwgZGlzcGxheSBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgc2V0dGluZyB2YWx1ZS5cbiAqIEBwYXJhbSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgaW4gYFBsdWdpblNldHRpbmdzYCB0byBiaW5kIHRvIHRoZSBVSSBjb21wb25lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgYFVJQ29tcG9uZW50YCBpbnN0YW5jZSB0aGF0IHdhcyBib3VuZCB0byB0aGUgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kVWlDb21wb25lbnQ8XG4gIFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8b2JqZWN0PixcbiAgVFVJQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQ8dW5rbm93bj4sXG4gIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUGx1Z2luU2V0dGluZ3MsXG4gIFVJVmFsdWVUeXBlID0gVFVJQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQ8aW5mZXIgUD4gPyBQIDogbmV2ZXIsXG4gIFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0ID0gUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxpbmZlciBQPiA/IFAgOiBuZXZlclxuPihcbiAgcGx1Z2luOiBQbHVnaW4sXG4gIHVpQ29tcG9uZW50OiBUVUlDb21wb25lbnQsXG4gIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgb3B0aW9ucz86IEJpbmRVSUNvbXBvbmVudE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlPiB8IEJpbmRVSUNvbXBvbmVudE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZVR5cGUsIFByb3BlcnR5PlxuKTogVFVJQ29tcG9uZW50IHtcbiAgdHlwZSBQcm9wZXJ0eVR5cGUgPSBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV07XG4gIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogQmluZFVJQ29tcG9uZW50T3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlVHlwZSwgUHJvcGVydHk+ID0ge1xuICAgIGF1dG9TYXZlOiB0cnVlLFxuICAgIHNldHRpbmdUb1VJVmFsdWVDb252ZXJ0ZXI6ICh2YWx1ZSk6IFVJVmFsdWVUeXBlID0+IHZhbHVlIGFzIFVJVmFsdWVUeXBlLFxuICAgIHVpVG9TZXR0aW5nVmFsdWVDb252ZXJ0ZXI6ICh2YWx1ZSk6IFByb3BlcnR5VHlwZSA9PiB2YWx1ZSBhcyBQcm9wZXJ0eVR5cGVcbiAgfTtcblxuICBjb25zdCBvcHRpb25zRXh0ID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucywgREVGQVVMVF9PUFRJT05TKTtcbiAgY29uc3QgcGx1Z2luRXh0ID0gcGx1Z2luIGFzIHVua25vd24gYXMgUGx1Z2luQmFzZTxQbHVnaW5TZXR0aW5ncz47XG4gIGNvbnN0IHVpQ29tcG9uZW50RXh0ID0gdWlDb21wb25lbnQgYXMgVUlDb21wb25lbnQ8VUlWYWx1ZVR5cGU+O1xuICBjb25zdCBwbHVnaW5TZXR0aW5ncyA9IG9wdGlvbnNFeHQucGx1Z2luU2V0dGluZ3MgPz8gcGx1Z2luRXh0LnNldHRpbmdzQ29weTtcbiAgdWlDb21wb25lbnRFeHRcbiAgICAuc2V0VmFsdWUob3B0aW9uc0V4dC5zZXR0aW5nVG9VSVZhbHVlQ29udmVydGVyKHBsdWdpblNldHRpbmdzW3Byb3BlcnR5XSkpXG4gICAgLm9uQ2hhbmdlKGFzeW5jICh1aVZhbHVlKSA9PiB7XG4gICAgICBpZiAob3B0aW9uc0V4dC51aVZhbHVlVmFsaWRhdG9yKSB7XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IG9wdGlvbnNFeHQudWlWYWx1ZVZhbGlkYXRvcih1aVZhbHVlKTtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9yRWxlbWVudCA9IGdldFZhbGlkYXRvckVsZW1lbnQodWlDb21wb25lbnQpO1xuICAgICAgICBpZiAodmFsaWRhdG9yRWxlbWVudCkge1xuICAgICAgICAgIHZhbGlkYXRvckVsZW1lbnQuc2V0Q3VzdG9tVmFsaWRpdHkoZXJyb3JNZXNzYWdlID8/ICcnKTtcbiAgICAgICAgICB2YWxpZGF0b3JFbGVtZW50LnJlcG9ydFZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcGx1Z2luU2V0dGluZ3NbcHJvcGVydHldID0gb3B0aW9uc0V4dC51aVRvU2V0dGluZ1ZhbHVlQ29udmVydGVyKHVpVmFsdWUpO1xuICAgICAgaWYgKG9wdGlvbnNFeHQuYXV0b1NhdmUpIHtcbiAgICAgICAgYXdhaXQgcGx1Z2luRXh0LnNhdmVTZXR0aW5ncyhwbHVnaW5TZXR0aW5ncyk7XG4gICAgICB9XG4gICAgfSk7XG4gIHJldHVybiB1aUNvbXBvbmVudDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB2YWxpZGF0b3IgZWxlbWVudCBmcm9tIGEgVUkgY29tcG9uZW50IGlmIGl0IGV4aXN0cy5cbiAqIEBwYXJhbSB1aUNvbXBvbmVudCAtIFRoZSBVSSBjb21wb25lbnQgdG8gZ2V0IHRoZSB2YWxpZGF0b3IgZWxlbWVudCBmcm9tLlxuICogQHJldHVybnMgVGhlIHZhbGlkYXRvciBlbGVtZW50IGlmIGl0IGV4aXN0cywgb3IgYG51bGxgIGlmIGl0IGRvZXMgbm90LlxuICovXG5mdW5jdGlvbiBnZXRWYWxpZGF0b3JFbGVtZW50KHVpQ29tcG9uZW50OiBVSUNvbXBvbmVudDx1bmtub3duPik6IFZhbGlkYXRvckVsZW1lbnQgfCBudWxsIHtcbiAgaWYgKHVpQ29tcG9uZW50IGluc3RhbmNlb2YgRHJvcGRvd25Db21wb25lbnQpIHtcbiAgICByZXR1cm4gdWlDb21wb25lbnQuc2VsZWN0RWw7XG4gIH1cblxuICBpZiAodWlDb21wb25lbnQgaW5zdGFuY2VvZiBTbGlkZXJDb21wb25lbnQpIHtcbiAgICByZXR1cm4gdWlDb21wb25lbnQuc2xpZGVyRWw7XG4gIH1cblxuICBpZiAodWlDb21wb25lbnQgaW5zdGFuY2VvZiBUZXh0QXJlYUNvbXBvbmVudCkge1xuICAgIHJldHVybiB1aUNvbXBvbmVudC5pbnB1dEVsO1xuICB9XG5cbiAgaWYgKHVpQ29tcG9uZW50IGluc3RhbmNlb2YgVGV4dENvbXBvbmVudCkge1xuICAgIHJldHVybiB1aUNvbXBvbmVudC5pbnB1dEVsO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxzQkFLTztBQVhQLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sTUFBSTtBQUFDLFFBQU0saUJBQWUsV0FBVyxRQUFRLE9BQU0sR0FBRztBQUFFLFFBQU0sMEJBQXdCLGVBQWUsS0FBSyxjQUFjO0FBQUUsTUFBSSxPQUFLO0FBQWUsTUFBRyx5QkFBd0I7QUFBQyxXQUFLLElBQUksd0JBQXdCLENBQUMsRUFBRSxZQUFZLENBQUMsSUFBSSxlQUFlLE1BQU0sQ0FBQyxDQUFDO0FBQUEsRUFBRTtBQUFDLFFBQU0sY0FBWSxtQkFBbUIsSUFBSSxFQUFFLFFBQVEsUUFBTyxHQUFHLEVBQUUsUUFBUSxRQUFPLEdBQUc7QUFBRSxTQUFPLElBQUksSUFBSSxVQUFVLFdBQVcsRUFBRTtBQUFDLEdBQUc7QUFDcGIsSUFBSSxZQUFZLFdBQVcsU0FBUyxLQUFLO0FBQUEsRUFDdkMsT0FBTyxNQUFJO0FBQUEsRUFDWCxPQUFPLENBQUM7QUFBQSxFQUNSLFlBQVk7QUFDZDtBQStKTyxTQUFTLGdCQU9kLFFBQ0EsYUFDQSxVQUNBLFNBQ2M7QUFFZCxRQUFNLGtCQUF5RjtBQUFBLElBQzdGLFVBQVU7QUFBQSxJQUNWLDJCQUEyQixDQUFDLFVBQXVCO0FBQUEsSUFDbkQsMkJBQTJCLENBQUMsVUFBd0I7QUFBQSxFQUN0RDtBQUVBLFFBQU0sYUFBYSxPQUFPLE9BQU8sQ0FBQyxHQUFHLFNBQVMsZUFBZTtBQUM3RCxRQUFNLFlBQVk7QUFDbEIsUUFBTSxpQkFBaUI7QUFDdkIsUUFBTSxpQkFBaUIsV0FBVyxrQkFBa0IsVUFBVTtBQUM5RCxpQkFDRyxTQUFTLFdBQVcsMEJBQTBCLGVBQWUsUUFBUSxDQUFDLENBQUMsRUFDdkUsU0FBUyxPQUFPLFlBQVk7QUFDM0IsUUFBSSxXQUFXLGtCQUFrQjtBQUMvQixZQUFNLGVBQWUsV0FBVyxpQkFBaUIsT0FBTztBQUN4RCxZQUFNLG1CQUFtQixvQkFBb0IsV0FBVztBQUN4RCxVQUFJLGtCQUFrQjtBQUNwQix5QkFBaUIsa0JBQWtCLGdCQUFnQixFQUFFO0FBQ3JELHlCQUFpQixlQUFlO0FBQUEsTUFDbEM7QUFDQSxVQUFJLGNBQWM7QUFDaEI7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUNBLG1CQUFlLFFBQVEsSUFBSSxXQUFXLDBCQUEwQixPQUFPO0FBQ3ZFLFFBQUksV0FBVyxVQUFVO0FBQ3ZCLFlBQU0sVUFBVSxhQUFhLGNBQWM7QUFBQSxJQUM3QztBQUFBLEVBQ0YsQ0FBQztBQUNILFNBQU87QUFDVDtBQU9BLFNBQVMsb0JBQW9CLGFBQTREO0FBQ3ZGLE1BQUksdUJBQXVCLG1DQUFtQjtBQUM1QyxXQUFPLFlBQVk7QUFBQSxFQUNyQjtBQUVBLE1BQUksdUJBQXVCLGlDQUFpQjtBQUMxQyxXQUFPLFlBQVk7QUFBQSxFQUNyQjtBQUVBLE1BQUksdUJBQXVCLG1DQUFtQjtBQUM1QyxXQUFPLFlBQVk7QUFBQSxFQUNyQjtBQUVBLE1BQUksdUJBQXVCLCtCQUFlO0FBQ3hDLFdBQU8sWUFBWTtBQUFBLEVBQ3JCO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -1,5 +1,5 @@
1
- import type { KeysMatching } from "../../@types.ts";
2
- import type { PluginBase } from "./PluginBase.ts";
1
+ import type { KeysMatching } from '../../@types.ts';
2
+ import type { PluginBase } from './PluginBase.ts';
3
3
  /**
4
4
  * A UI component that can be bound to a plugin setting.
5
5
  */
@@ -47,7 +47,16 @@ var PluginBase = __toESM(require("./PluginBase.cjs"), 1);
47
47
  var PluginSettings = __toESM(require("./PluginSettings.cjs"), 1);
48
48
  var PluginSettingsTabBase = __toESM(require("./PluginSettingsTabBase.cjs"), 1);
49
49
  var UIComponent = __toESM(require("./UIComponent.cjs"), 1);
50
- var __import_meta_url = globalThis["import.meta.url"] ?? (() => require("node:url").pathToFileURL(__filename))();
50
+ var __import_meta_url = globalThis["import.meta.url"] ?? (() => {
51
+ const normalizedPath = __filename.replace(/\\/g, "/");
52
+ const windowsDriveLetterMatch = /^([a-zA-Z]):/.exec(normalizedPath);
53
+ let path = normalizedPath;
54
+ if (windowsDriveLetterMatch) {
55
+ path = `/${windowsDriveLetterMatch[1].toUpperCase()}:${normalizedPath.slice(2)}`;
56
+ }
57
+ const encodedPath = encodeURIComponent(path).replace(/%2F/g, "/").replace(/%3A/g, ":");
58
+ return new URL(`file://${encodedPath}`);
59
+ })();
51
60
  var __process = globalThis["process"] ?? {
52
61
  "cwd": () => "/",
53
62
  "env": {},
@@ -62,4 +71,4 @@ var __process = globalThis["process"] ?? {
62
71
  PluginSettingsTabBase,
63
72
  UIComponent
64
73
  });
65
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIF9faW1wb3J0X21ldGFfdXJsID0gZ2xvYmFsVGhpc1tcImltcG9ydC5tZXRhLnVybFwiXSA/PyAoKCk9PnJlcXVpcmUoXCJub2RlOnVybFwiKS5wYXRoVG9GaWxlVVJMKF9fZmlsZW5hbWUpKSgpO1xudmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbXCJwcm9jZXNzXCJdID8/IHtcbiAgXCJjd2RcIjogKCk9PlwiL1wiLFxuICBcImVudlwiOiB7fSxcbiAgXCJwbGF0Zm9ybVwiOiBcImFuZHJvaWRcIlxufTtcbi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyBmcm9tIFwiLi9PYnNpZGlhblBsdWdpblJlcG9QYXRocy50c1wiO1xuZXhwb3J0ICogYXMgUGx1Z2luIGZyb20gXCIuL1BsdWdpbi50c1wiO1xuZXhwb3J0ICogYXMgUGx1Z2luQmFzZSBmcm9tIFwiLi9QbHVnaW5CYXNlLnRzXCI7XG5leHBvcnQgKiBhcyBQbHVnaW5TZXR0aW5ncyBmcm9tIFwiLi9QbHVnaW5TZXR0aW5ncy50c1wiO1xuZXhwb3J0ICogYXMgUGx1Z2luU2V0dGluZ3NUYWJCYXNlIGZyb20gXCIuL1BsdWdpblNldHRpbmdzVGFiQmFzZS50c1wiO1xuZXhwb3J0ICogYXMgVUlDb21wb25lbnQgZnJvbSBcIi4vVUlDb21wb25lbnQudHNcIjtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEsOEJBQXlDO0FBQ3pDLGFBQXdCO0FBQ3hCLGlCQUE0QjtBQUM1QixxQkFBZ0M7QUFDaEMsNEJBQXVDO0FBQ3ZDLGtCQUE2QjtBQWI3QixJQUFJLG9CQUFvQixXQUFXLGlCQUFpQixNQUFNLE1BQUksUUFBUSxVQUFVLEVBQUUsY0FBYyxVQUFVLEdBQUc7QUFDN0csSUFBSSxZQUFZLFdBQVcsU0FBUyxLQUFLO0FBQUEsRUFDdkMsT0FBTyxNQUFJO0FBQUEsRUFDWCxPQUFPLENBQUM7QUFBQSxFQUNSLFlBQVk7QUFDZDsiLAogICJuYW1lcyI6IFtdCn0K
74
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIF9faW1wb3J0X21ldGFfdXJsID0gZ2xvYmFsVGhpc1tcImltcG9ydC5tZXRhLnVybFwiXSA/PyAoKCk9Pntjb25zdCBub3JtYWxpemVkUGF0aD1fX2ZpbGVuYW1lLnJlcGxhY2UoL1xcXFwvZyxcIi9cIik7Y29uc3Qgd2luZG93c0RyaXZlTGV0dGVyTWF0Y2g9L14oW2EtekEtWl0pOi8uZXhlYyhub3JtYWxpemVkUGF0aCk7bGV0IHBhdGg9bm9ybWFsaXplZFBhdGg7aWYod2luZG93c0RyaXZlTGV0dGVyTWF0Y2gpe3BhdGg9YC8ke3dpbmRvd3NEcml2ZUxldHRlck1hdGNoWzFdLnRvVXBwZXJDYXNlKCl9OiR7bm9ybWFsaXplZFBhdGguc2xpY2UoMil9YH1jb25zdCBlbmNvZGVkUGF0aD1lbmNvZGVVUklDb21wb25lbnQocGF0aCkucmVwbGFjZSgvJTJGL2csXCIvXCIpLnJlcGxhY2UoLyUzQS9nLFwiOlwiKTtyZXR1cm4gbmV3IFVSTChgZmlsZTovLyR7ZW5jb2RlZFBhdGh9YCl9KSgpO1xudmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbXCJwcm9jZXNzXCJdID8/IHtcbiAgXCJjd2RcIjogKCk9PlwiL1wiLFxuICBcImVudlwiOiB7fSxcbiAgXCJwbGF0Zm9ybVwiOiBcImFuZHJvaWRcIlxufTtcbi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyBmcm9tICcuL09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLnRzJztcbmV4cG9ydCAqIGFzIFBsdWdpbiBmcm9tICcuL1BsdWdpbi50cyc7XG5leHBvcnQgKiBhcyBQbHVnaW5CYXNlIGZyb20gJy4vUGx1Z2luQmFzZS50cyc7XG5leHBvcnQgKiBhcyBQbHVnaW5TZXR0aW5ncyBmcm9tICcuL1BsdWdpblNldHRpbmdzLnRzJztcbmV4cG9ydCAqIGFzIFBsdWdpblNldHRpbmdzVGFiQmFzZSBmcm9tICcuL1BsdWdpblNldHRpbmdzVGFiQmFzZS50cyc7XG5leHBvcnQgKiBhcyBVSUNvbXBvbmVudCBmcm9tICcuL1VJQ29tcG9uZW50LnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEsOEJBQXlDO0FBQ3pDLGFBQXdCO0FBQ3hCLGlCQUE0QjtBQUM1QixxQkFBZ0M7QUFDaEMsNEJBQXVDO0FBQ3ZDLGtCQUE2QjtBQWI3QixJQUFJLG9CQUFvQixXQUFXLGlCQUFpQixNQUFNLE1BQUk7QUFBQyxRQUFNLGlCQUFlLFdBQVcsUUFBUSxPQUFNLEdBQUc7QUFBRSxRQUFNLDBCQUF3QixlQUFlLEtBQUssY0FBYztBQUFFLE1BQUksT0FBSztBQUFlLE1BQUcseUJBQXdCO0FBQUMsV0FBSyxJQUFJLHdCQUF3QixDQUFDLEVBQUUsWUFBWSxDQUFDLElBQUksZUFBZSxNQUFNLENBQUMsQ0FBQztBQUFBLEVBQUU7QUFBQyxRQUFNLGNBQVksbUJBQW1CLElBQUksRUFBRSxRQUFRLFFBQU8sR0FBRyxFQUFFLFFBQVEsUUFBTyxHQUFHO0FBQUUsU0FBTyxJQUFJLElBQUksVUFBVSxXQUFXLEVBQUU7QUFBQyxHQUFHO0FBQ3BiLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -1,6 +1,6 @@
1
- export * as ObsidianPluginRepoPaths from "./ObsidianPluginRepoPaths.ts";
2
- export * as Plugin from "./Plugin.ts";
3
- export * as PluginBase from "./PluginBase.ts";
4
- export * as PluginSettings from "./PluginSettings.ts";
5
- export * as PluginSettingsTabBase from "./PluginSettingsTabBase.ts";
6
- export * as UIComponent from "./UIComponent.ts";
1
+ export * as ObsidianPluginRepoPaths from './ObsidianPluginRepoPaths.ts';
2
+ export * as Plugin from './Plugin.ts';
3
+ export * as PluginBase from './PluginBase.ts';
4
+ export * as PluginSettings from './PluginSettings.ts';
5
+ export * as PluginSettingsTabBase from './PluginSettingsTabBase.ts';
6
+ export * as UIComponent from './UIComponent.ts';
@@ -28,7 +28,16 @@ __export(ResourceUrl_exports, {
28
28
  module.exports = __toCommonJS(ResourceUrl_exports);
29
29
  var import_obsidian = require("obsidian");
30
30
  var import_Path = require("../Path.cjs");
31
- var __import_meta_url = globalThis["import.meta.url"] ?? (() => require("node:url").pathToFileURL(__filename))();
31
+ var __import_meta_url = globalThis["import.meta.url"] ?? (() => {
32
+ const normalizedPath = __filename.replace(/\\/g, "/");
33
+ const windowsDriveLetterMatch = /^([a-zA-Z]):/.exec(normalizedPath);
34
+ let path = normalizedPath;
35
+ if (windowsDriveLetterMatch) {
36
+ path = `/${windowsDriveLetterMatch[1].toUpperCase()}:${normalizedPath.slice(2)}`;
37
+ }
38
+ const encodedPath = encodeURIComponent(path).replace(/%2F/g, "/").replace(/%3A/g, ":");
39
+ return new URL(`file://${encodedPath}`);
40
+ })();
32
41
  var __process = globalThis["process"] ?? {
33
42
  "cwd": () => "/",
34
43
  "env": {},
@@ -44,4 +53,4 @@ function relativePathToResourceUrl(app, relativePath, notePath) {
44
53
  0 && (module.exports = {
45
54
  relativePathToResourceUrl
46
55
  });
47
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1Jlc291cmNlVXJsLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzW1wiaW1wb3J0Lm1ldGEudXJsXCJdID8/ICgoKT0+cmVxdWlyZShcIm5vZGU6dXJsXCIpLnBhdGhUb0ZpbGVVUkwoX19maWxlbmFtZSkpKCk7XG52YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1tcInByb2Nlc3NcIl0gPz8ge1xuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gUmVzb3VyY2VVcmxcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggcmVzb3VyY2UgVVJMcyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQge1xuICB0eXBlIEFwcCxcbiAgUGxhdGZvcm1cbn0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyB0b1Bvc2l4UGF0aCB9IGZyb20gXCIuLi9QYXRoLnRzXCI7XG5cbi8qKlxuICogQ29udmVydHMgYSByZWxhdGl2ZSBwYXRoIHRvIGEgcmVzb3VyY2UgVVJMLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcmVsYXRpdmVQYXRoIC0gVGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIHJlc291cmNlLlxuICogQHBhcmFtIG5vdGVQYXRoIC0gVGhlIHBhdGggb2YgdGhlIG5vdGUuXG4gKiBAcmV0dXJucyBUaGUgcmVzb3VyY2UgVVJMLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmVQYXRoVG9SZXNvdXJjZVVybChhcHA6IEFwcCwgcmVsYXRpdmVQYXRoOiBzdHJpbmcsIG5vdGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBub3RlRnVsbFBhdGggPSB0b1Bvc2l4UGF0aChhcHAudmF1bHQuYWRhcHRlci5nZXRGdWxsUmVhbFBhdGgobm90ZVBhdGgpKTtcbiAgY29uc3Qgbm90ZVVybCA9IGAke1BsYXRmb3JtLnJlc291cmNlUGF0aFByZWZpeH0ke25vdGVGdWxsUGF0aH1gO1xuICBjb25zdCByZWxhdGl2ZVVybCA9IG5ldyBVUkwocmVsYXRpdmVQYXRoLCBub3RlVXJsKTtcbiAgcmV0dXJuIHJlbGF0aXZlVXJsLnRvU3RyaW5nKCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQSxzQkFHTztBQUNQLGtCQUE0QjtBQWY1QixJQUFJLG9CQUFvQixXQUFXLGlCQUFpQixNQUFNLE1BQUksUUFBUSxVQUFVLEVBQUUsY0FBYyxVQUFVLEdBQUc7QUFDN0csSUFBSSxZQUFZLFdBQVcsU0FBUyxLQUFLO0FBQUEsRUFDdkMsT0FBTyxNQUFJO0FBQUEsRUFDWCxPQUFPLENBQUM7QUFBQSxFQUNSLFlBQVk7QUFDZDtBQW9CTyxTQUFTLDBCQUEwQixLQUFVLGNBQXNCLFVBQTBCO0FBQ2xHLFFBQU0sbUJBQWUseUJBQVksSUFBSSxNQUFNLFFBQVEsZ0JBQWdCLFFBQVEsQ0FBQztBQUM1RSxRQUFNLFVBQVUsR0FBRyx5QkFBUyxrQkFBa0IsR0FBRyxZQUFZO0FBQzdELFFBQU0sY0FBYyxJQUFJLElBQUksY0FBYyxPQUFPO0FBQ2pELFNBQU8sWUFBWSxTQUFTO0FBQzlCOyIsCiAgIm5hbWVzIjogW10KfQo=
56
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1Jlc291cmNlVXJsLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzW1wiaW1wb3J0Lm1ldGEudXJsXCJdID8/ICgoKT0+e2NvbnN0IG5vcm1hbGl6ZWRQYXRoPV9fZmlsZW5hbWUucmVwbGFjZSgvXFxcXC9nLFwiL1wiKTtjb25zdCB3aW5kb3dzRHJpdmVMZXR0ZXJNYXRjaD0vXihbYS16QS1aXSk6Ly5leGVjKG5vcm1hbGl6ZWRQYXRoKTtsZXQgcGF0aD1ub3JtYWxpemVkUGF0aDtpZih3aW5kb3dzRHJpdmVMZXR0ZXJNYXRjaCl7cGF0aD1gLyR7d2luZG93c0RyaXZlTGV0dGVyTWF0Y2hbMV0udG9VcHBlckNhc2UoKX06JHtub3JtYWxpemVkUGF0aC5zbGljZSgyKX1gfWNvbnN0IGVuY29kZWRQYXRoPWVuY29kZVVSSUNvbXBvbmVudChwYXRoKS5yZXBsYWNlKC8lMkYvZyxcIi9cIikucmVwbGFjZSgvJTNBL2csXCI6XCIpO3JldHVybiBuZXcgVVJMKGBmaWxlOi8vJHtlbmNvZGVkUGF0aH1gKX0pKCk7XG52YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1tcInByb2Nlc3NcIl0gPz8ge1xuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gUmVzb3VyY2VVcmxcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggcmVzb3VyY2UgVVJMcyBpbiBPYnNpZGlhbi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyB0b1Bvc2l4UGF0aCB9IGZyb20gJy4uL1BhdGgudHMnO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgcmVsYXRpdmUgcGF0aCB0byBhIHJlc291cmNlIFVSTC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHJlbGF0aXZlUGF0aCAtIFRoZSByZWxhdGl2ZSBwYXRoIHRvIHRoZSByZXNvdXJjZS5cbiAqIEBwYXJhbSBub3RlUGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBub3RlLlxuICogQHJldHVybnMgVGhlIHJlc291cmNlIFVSTC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbGF0aXZlUGF0aFRvUmVzb3VyY2VVcmwoYXBwOiBBcHAsIHJlbGF0aXZlUGF0aDogc3RyaW5nLCBub3RlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgbm90ZUZ1bGxQYXRoID0gdG9Qb3NpeFBhdGgoYXBwLnZhdWx0LmFkYXB0ZXIuZ2V0RnVsbFJlYWxQYXRoKG5vdGVQYXRoKSk7XG4gIGNvbnN0IG5vdGVVcmwgPSBgJHtQbGF0Zm9ybS5yZXNvdXJjZVBhdGhQcmVmaXh9JHtub3RlRnVsbFBhdGh9YDtcbiAgY29uc3QgcmVsYXRpdmVVcmwgPSBuZXcgVVJMKHJlbGF0aXZlUGF0aCwgbm90ZVVybCk7XG4gIHJldHVybiByZWxhdGl2ZVVybC50b1N0cmluZygpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBWUEsc0JBQXlCO0FBRXpCLGtCQUE0QjtBQWQ1QixJQUFJLG9CQUFvQixXQUFXLGlCQUFpQixNQUFNLE1BQUk7QUFBQyxRQUFNLGlCQUFlLFdBQVcsUUFBUSxPQUFNLEdBQUc7QUFBRSxRQUFNLDBCQUF3QixlQUFlLEtBQUssY0FBYztBQUFFLE1BQUksT0FBSztBQUFlLE1BQUcseUJBQXdCO0FBQUMsV0FBSyxJQUFJLHdCQUF3QixDQUFDLEVBQUUsWUFBWSxDQUFDLElBQUksZUFBZSxNQUFNLENBQUMsQ0FBQztBQUFBLEVBQUU7QUFBQyxRQUFNLGNBQVksbUJBQW1CLElBQUksRUFBRSxRQUFRLFFBQU8sR0FBRyxFQUFFLFFBQVEsUUFBTyxHQUFHO0FBQUUsU0FBTyxJQUFJLElBQUksVUFBVSxXQUFXLEVBQUU7QUFBQyxHQUFHO0FBQ3BiLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7QUFtQk8sU0FBUywwQkFBMEIsS0FBVSxjQUFzQixVQUEwQjtBQUNsRyxRQUFNLG1CQUFlLHlCQUFZLElBQUksTUFBTSxRQUFRLGdCQUFnQixRQUFRLENBQUM7QUFDNUUsUUFBTSxVQUFVLEdBQUcseUJBQVMsa0JBQWtCLEdBQUcsWUFBWTtBQUM3RCxRQUFNLGNBQWMsSUFBSSxJQUFJLGNBQWMsT0FBTztBQUNqRCxTQUFPLFlBQVksU0FBUztBQUM5QjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -2,7 +2,7 @@
2
2
  * @packageDocumentation ResourceUrl
3
3
  * This module provides utility functions for working with resource URLs in Obsidian.
4
4
  */
5
- import { type App } from "obsidian";
5
+ import type { App } from 'obsidian';
6
6
  /**
7
7
  * Converts a relative path to a resource URL.
8
8
  *
@@ -38,9 +38,18 @@ __export(TAbstractFile_exports, {
38
38
  });
39
39
  module.exports = __toCommonJS(TAbstractFile_exports);
40
40
  var import_obsidian = require("obsidian");
41
- var import_String = require("../String.cjs");
42
41
  var import_Path = require("../Path.cjs");
43
- var __import_meta_url = globalThis["import.meta.url"] ?? (() => require("node:url").pathToFileURL(__filename))();
42
+ var import_String = require("../String.cjs");
43
+ var __import_meta_url = globalThis["import.meta.url"] ?? (() => {
44
+ const normalizedPath = __filename.replace(/\\/g, "/");
45
+ const windowsDriveLetterMatch = /^([a-zA-Z]):/.exec(normalizedPath);
46
+ let path = normalizedPath;
47
+ if (windowsDriveLetterMatch) {
48
+ path = `/${windowsDriveLetterMatch[1].toUpperCase()}:${normalizedPath.slice(2)}`;
49
+ }
50
+ const encodedPath = encodeURIComponent(path).replace(/%2F/g, "/").replace(/%3A/g, ":");
51
+ return new URL(`file://${encodedPath}`);
52
+ })();
44
53
  var __process = globalThis["process"] ?? {
45
54
  "cwd": () => "/",
46
55
  "env": {},
@@ -103,4 +112,4 @@ function getPath(pathOrFile) {
103
112
  isNote,
104
113
  trimMarkdownExtension
105
114
  });
106
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1RBYnN0cmFjdEZpbGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbXCJpbXBvcnQubWV0YS51cmxcIl0gPz8gKCgpPT5yZXF1aXJlKFwibm9kZTp1cmxcIikucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKSkoKTtcbnZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzW1wicHJvY2Vzc1wiXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBUQWJzdHJhY3RGaWxlXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igd29ya2luZyB3aXRoIGFic3RyYWN0IGZpbGVzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB7XG4gIEFwcCxcbiAgVEFic3RyYWN0RmlsZSxcbiAgVEZpbGUsXG4gIFRGb2xkZXIsXG59IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgdHJpbUVuZCB9IGZyb20gXCIuLi9TdHJpbmcudHNcIjtcbmltcG9ydCB7IGV4dG5hbWUgfSBmcm9tIFwiLi4vUGF0aC50c1wiO1xuXG4vKipcbiAqIFRoZSBmaWxlIGV4dGVuc2lvbiBmb3IgTWFya2Rvd24gZmlsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTiA9IFwibWRcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBmaWxlIGV4dGVuc2lvbiBmb3IgY2FudmFzIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3QgQ0FOVkFTX0ZJTEVfRVhURU5TSU9OID0gXCJjYW52YXNcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcGF0aCBvciBhbiBpbnN0YW5jZSBvZiBUQWJzdHJhY3RGaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYXRoT3JBYnN0cmFjdEZpbGUgPSBzdHJpbmcgfCBUQWJzdHJhY3RGaWxlO1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgVEFic3RyYWN0RmlsZSBvYmplY3QgZm9yIHRoZSBnaXZlbiBwYXRoIG9yIGFic3RyYWN0IGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUgdG8gcmV0cmlldmUgdGhlIFRBYnN0cmFjdEZpbGUgZm9yLlxuICogQHJldHVybnMgVGhlIFRBYnN0cmFjdEZpbGUgb2JqZWN0LlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgYWJzdHJhY3QgZmlsZSBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBYnN0cmFjdEZpbGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSk6IFRBYnN0cmFjdEZpbGUge1xuICBjb25zdCBmaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGlmICghZmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQWJzdHJhY3QgZmlsZSBub3QgZm91bmQ6ICR7cGF0aE9yRmlsZSBhcyBzdHJpbmd9YCk7XG4gIH1cblxuICByZXR1cm4gZmlsZTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gaW5zdGFuY2Ugb2YgVEFic3RyYWN0RmlsZSBvciBudWxsIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXRoIG9yIGFic3RyYWN0IGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZXRyaWV2ZS5cbiAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBvZiBUQWJzdHJhY3RGaWxlIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlKTogVEFic3RyYWN0RmlsZSB8IG51bGwge1xuICByZXR1cm4gcGF0aE9yRmlsZSBpbnN0YW5jZW9mIFRBYnN0cmFjdEZpbGUgPyBwYXRoT3JGaWxlIDogYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChwYXRoT3JGaWxlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgaXMgYSBub3RlLlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBub3RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3RlKGZpbGU6IFRBYnN0cmFjdEZpbGUgfCBudWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc01hcmtkb3duRmlsZShmaWxlKSB8fCBpc0NhbnZhc0ZpbGUoZmlsZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgTWFya2Rvd24gZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhIE1hcmtkb3duIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01hcmtkb3duRmlsZShwYXRoT3JGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGUgfCBudWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBjaGVja0V4dGVuc2lvbihwYXRoT3JGaWxlLCBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgY2FudmFzIGZpbGUuXG4gKlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBjYW52YXMgZmlsZSBvciBub3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc0ZpbGUocGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlIHwgbnVsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2hlY2tFeHRlbnNpb24ocGF0aE9yRmlsZSwgQ0FOVkFTX0ZJTEVfRVhURU5TSU9OKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIHBhdGggb3IgZmlsZSBoYXMgdGhlIHNwZWNpZmllZCBleHRlbnNpb24uXG4gKlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIGNoZWNrLlxuICogQHBhcmFtIGV4dGVuc2lvbiAtIFRoZSBleHRlbnNpb24gdG8gY29tcGFyZSBhZ2FpbnN0LlxuICogQHJldHVybnMgUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhdGggb3IgZmlsZSBoYXMgdGhlIHNwZWNpZmllZCBleHRlbnNpb24sIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tFeHRlbnNpb24ocGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlIHwgbnVsbCwgZXh0ZW5zaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKHBhdGhPckZpbGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGV4dG5hbWUoZ2V0UGF0aChwYXRoT3JGaWxlKSkudG9Mb3dlckNhc2UoKS5zbGljZSgxKSA9PT0gZXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCk7XG59XG5cbi8qKlxuICogVHJpbXMgdGhlIG1hcmtkb3duIGV4dGVuc2lvbiBmcm9tIHRoZSBmaWxlIHBhdGggaWYgdGhlIGZpbGUgaXMgYSBtYXJrZG93biBmaWxlLlxuICogSWYgdGhlIGZpbGUgaXMgbm90IGEgbWFya2Rvd24gZmlsZSwgdGhlIG9yaWdpbmFsIGZpbGUgcGF0aCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIHRyaW0gdGhlIG1hcmtkb3duIGV4dGVuc2lvbiBmcm9tLlxuICogQHJldHVybnMgVGhlIGZpbGUgcGF0aCB3aXRoIHRoZSBtYXJrZG93biBleHRlbnNpb24gdHJpbW1lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1NYXJrZG93bkV4dGVuc2lvbihmaWxlOiBUQWJzdHJhY3RGaWxlKTogc3RyaW5nIHtcbiAgaWYgKCFpc01hcmtkb3duRmlsZShmaWxlKSkge1xuICAgIHJldHVybiBmaWxlLnBhdGg7XG4gIH1cblxuICByZXR1cm4gdHJpbUVuZChmaWxlLnBhdGgsIFwiLlwiICsgTUFSS0RPV05fRklMRV9FWFRFTlNJT04pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBURmlsZS5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhbiBpbnN0YW5jZSBvZiBURmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRmlsZShmaWxlOiBUQWJzdHJhY3RGaWxlIHwgbnVsbCk6IGZpbGUgaXMgVEZpbGUge1xuICByZXR1cm4gZmlsZSBpbnN0YW5jZW9mIFRGaWxlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBmaWxlIGlzIGEgZm9sZGVyLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRm9sZGVyKGZpbGU6IFRBYnN0cmFjdEZpbGUgfCBudWxsKTogZmlsZSBpcyBURm9sZGVyIHtcbiAgcmV0dXJuIGZpbGUgaW5zdGFuY2VvZiBURm9sZGVyO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHBhdGggb2YgdGhlIGdpdmVuIGBwYXRoT3JGaWxlYC5cbiAqXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUuXG4gKiBAcmV0dXJucyBUaGUgcGF0aCBvZiB0aGUgYHBhdGhPckZpbGVgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0aChwYXRoT3JGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGUpOiBzdHJpbmcge1xuICByZXR1cm4gcGF0aE9yRmlsZSBpbnN0YW5jZW9mIFRBYnN0cmFjdEZpbGUgPyBwYXRoT3JGaWxlLnBhdGggOiBwYXRoT3JGaWxlO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBLHNCQUtPO0FBQ1Asb0JBQXdCO0FBQ3hCLGtCQUF3QjtBQWxCeEIsSUFBSSxvQkFBb0IsV0FBVyxpQkFBaUIsTUFBTSxNQUFJLFFBQVEsVUFBVSxFQUFFLGNBQWMsVUFBVSxHQUFHO0FBQzdHLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7QUFrQk8sTUFBTSwwQkFBMEI7QUFLaEMsTUFBTSx3QkFBd0I7QUFlOUIsU0FBUyxnQkFBZ0IsS0FBVSxZQUErQztBQUN2RixRQUFNLE9BQU8sc0JBQXNCLEtBQUssVUFBVTtBQUNsRCxNQUFJLENBQUMsTUFBTTtBQUNULFVBQU0sSUFBSSxNQUFNLDRCQUE0QixVQUFvQixFQUFFO0FBQUEsRUFDcEU7QUFFQSxTQUFPO0FBQ1Q7QUFTTyxTQUFTLHNCQUFzQixLQUFVLFlBQXNEO0FBQ3BHLFNBQU8sc0JBQXNCLGdDQUFnQixhQUFhLElBQUksTUFBTSxzQkFBc0IsVUFBVTtBQUN0RztBQU9PLFNBQVMsT0FBTyxNQUFxQztBQUMxRCxTQUFPLGVBQWUsSUFBSSxLQUFLLGFBQWEsSUFBSTtBQUNsRDtBQVFPLFNBQVMsZUFBZSxZQUFnRDtBQUM3RSxTQUFPLGVBQWUsWUFBWSx1QkFBdUI7QUFDM0Q7QUFRTyxTQUFTLGFBQWEsWUFBZ0Q7QUFDM0UsU0FBTyxlQUFlLFlBQVkscUJBQXFCO0FBQ3pEO0FBU08sU0FBUyxlQUFlLFlBQXVDLFdBQTRCO0FBQ2hHLE1BQUksZUFBZSxNQUFNO0FBQ3ZCLFdBQU87QUFBQSxFQUNUO0FBQ0EsYUFBTyxxQkFBUSxRQUFRLFVBQVUsQ0FBQyxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsTUFBTSxVQUFVLFlBQVk7QUFDdkY7QUFTTyxTQUFTLHNCQUFzQixNQUE2QjtBQUNqRSxNQUFJLENBQUMsZUFBZSxJQUFJLEdBQUc7QUFDekIsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUVBLGFBQU8sdUJBQVEsS0FBSyxNQUFNLE1BQU0sdUJBQXVCO0FBQ3pEO0FBUU8sU0FBUyxPQUFPLE1BQTJDO0FBQ2hFLFNBQU8sZ0JBQWdCO0FBQ3pCO0FBUU8sU0FBUyxTQUFTLE1BQTZDO0FBQ3BFLFNBQU8sZ0JBQWdCO0FBQ3pCO0FBUU8sU0FBUyxRQUFRLFlBQXdDO0FBQzlELFNBQU8sc0JBQXNCLGdDQUFnQixXQUFXLE9BQU87QUFDakU7IiwKICAibmFtZXMiOiBbXQp9Cg==
115
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1RBYnN0cmFjdEZpbGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbXCJpbXBvcnQubWV0YS51cmxcIl0gPz8gKCgpPT57Y29uc3Qgbm9ybWFsaXplZFBhdGg9X19maWxlbmFtZS5yZXBsYWNlKC9cXFxcL2csXCIvXCIpO2NvbnN0IHdpbmRvd3NEcml2ZUxldHRlck1hdGNoPS9eKFthLXpBLVpdKTovLmV4ZWMobm9ybWFsaXplZFBhdGgpO2xldCBwYXRoPW5vcm1hbGl6ZWRQYXRoO2lmKHdpbmRvd3NEcml2ZUxldHRlck1hdGNoKXtwYXRoPWAvJHt3aW5kb3dzRHJpdmVMZXR0ZXJNYXRjaFsxXS50b1VwcGVyQ2FzZSgpfToke25vcm1hbGl6ZWRQYXRoLnNsaWNlKDIpfWB9Y29uc3QgZW5jb2RlZFBhdGg9ZW5jb2RlVVJJQ29tcG9uZW50KHBhdGgpLnJlcGxhY2UoLyUyRi9nLFwiL1wiKS5yZXBsYWNlKC8lM0EvZyxcIjpcIik7cmV0dXJuIG5ldyBVUkwoYGZpbGU6Ly8ke2VuY29kZWRQYXRofWApfSkoKTtcbnZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzW1wicHJvY2Vzc1wiXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBUQWJzdHJhY3RGaWxlXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igd29ya2luZyB3aXRoIGFic3RyYWN0IGZpbGVzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB7XG4gIEFwcCxcbiAgVEFic3RyYWN0RmlsZSxcbiAgVEZpbGUsXG4gIFRGb2xkZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBleHRuYW1lIH0gZnJvbSAnLi4vUGF0aC50cyc7XG5pbXBvcnQgeyB0cmltRW5kIH0gZnJvbSAnLi4vU3RyaW5nLnRzJztcblxuLyoqXG4gKiBUaGUgZmlsZSBleHRlbnNpb24gZm9yIE1hcmtkb3duIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3QgTUFSS0RPV05fRklMRV9FWFRFTlNJT04gPSAnbWQnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGZpbGUgZXh0ZW5zaW9uIGZvciBjYW52YXMgZmlsZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBDQU5WQVNfRklMRV9FWFRFTlNJT04gPSAnY2FudmFzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcGF0aCBvciBhbiBpbnN0YW5jZSBvZiBUQWJzdHJhY3RGaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYXRoT3JBYnN0cmFjdEZpbGUgPSBzdHJpbmcgfCBUQWJzdHJhY3RGaWxlO1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgVEFic3RyYWN0RmlsZSBvYmplY3QgZm9yIHRoZSBnaXZlbiBwYXRoIG9yIGFic3RyYWN0IGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGFic3RyYWN0IGZpbGUgdG8gcmV0cmlldmUgdGhlIFRBYnN0cmFjdEZpbGUgZm9yLlxuICogQHJldHVybnMgVGhlIFRBYnN0cmFjdEZpbGUgb2JqZWN0LlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgYWJzdHJhY3QgZmlsZSBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBYnN0cmFjdEZpbGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSk6IFRBYnN0cmFjdEZpbGUge1xuICBjb25zdCBmaWxlID0gZ2V0QWJzdHJhY3RGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGlmICghZmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQWJzdHJhY3QgZmlsZSBub3QgZm91bmQ6ICR7cGF0aE9yRmlsZSBhcyBzdHJpbmd9YCk7XG4gIH1cblxuICByZXR1cm4gZmlsZTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gaW5zdGFuY2Ugb2YgVEFic3RyYWN0RmlsZSBvciBudWxsIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXRoIG9yIGFic3RyYWN0IGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZXRyaWV2ZS5cbiAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBvZiBUQWJzdHJhY3RGaWxlIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlKTogVEFic3RyYWN0RmlsZSB8IG51bGwge1xuICByZXR1cm4gcGF0aE9yRmlsZSBpbnN0YW5jZW9mIFRBYnN0cmFjdEZpbGUgPyBwYXRoT3JGaWxlIDogYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChwYXRoT3JGaWxlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgaXMgYSBub3RlLlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBub3RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3RlKGZpbGU6IFRBYnN0cmFjdEZpbGUgfCBudWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc01hcmtkb3duRmlsZShmaWxlKSB8fCBpc0NhbnZhc0ZpbGUoZmlsZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgTWFya2Rvd24gZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBmaWxlIHRvIGNoZWNrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBpcyBhIE1hcmtkb3duIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01hcmtkb3duRmlsZShwYXRoT3JGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGUgfCBudWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBjaGVja0V4dGVuc2lvbihwYXRoT3JGaWxlLCBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTik7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBmaWxlIGlzIGEgY2FudmFzIGZpbGUuXG4gKlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYSBjYW52YXMgZmlsZSBvciBub3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NhbnZhc0ZpbGUocGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlIHwgbnVsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2hlY2tFeHRlbnNpb24ocGF0aE9yRmlsZSwgQ0FOVkFTX0ZJTEVfRVhURU5TSU9OKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIHBhdGggb3IgZmlsZSBoYXMgdGhlIHNwZWNpZmllZCBleHRlbnNpb24uXG4gKlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIGNoZWNrLlxuICogQHBhcmFtIGV4dGVuc2lvbiAtIFRoZSBleHRlbnNpb24gdG8gY29tcGFyZSBhZ2FpbnN0LlxuICogQHJldHVybnMgUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhdGggb3IgZmlsZSBoYXMgdGhlIHNwZWNpZmllZCBleHRlbnNpb24sIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tFeHRlbnNpb24ocGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlIHwgbnVsbCwgZXh0ZW5zaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKHBhdGhPckZpbGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGV4dG5hbWUoZ2V0UGF0aChwYXRoT3JGaWxlKSkudG9Mb3dlckNhc2UoKS5zbGljZSgxKSA9PT0gZXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCk7XG59XG5cbi8qKlxuICogVHJpbXMgdGhlIG1hcmtkb3duIGV4dGVuc2lvbiBmcm9tIHRoZSBmaWxlIHBhdGggaWYgdGhlIGZpbGUgaXMgYSBtYXJrZG93biBmaWxlLlxuICogSWYgdGhlIGZpbGUgaXMgbm90IGEgbWFya2Rvd24gZmlsZSwgdGhlIG9yaWdpbmFsIGZpbGUgcGF0aCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIHRyaW0gdGhlIG1hcmtkb3duIGV4dGVuc2lvbiBmcm9tLlxuICogQHJldHVybnMgVGhlIGZpbGUgcGF0aCB3aXRoIHRoZSBtYXJrZG93biBleHRlbnNpb24gdHJpbW1lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1NYXJrZG93bkV4dGVuc2lvbihmaWxlOiBUQWJzdHJhY3RGaWxlKTogc3RyaW5nIHtcbiAgaWYgKCFpc01hcmtkb3duRmlsZShmaWxlKSkge1xuICAgIHJldHVybiBmaWxlLnBhdGg7XG4gIH1cblxuICByZXR1cm4gdHJpbUVuZChmaWxlLnBhdGgsICcuJyArIE1BUktET1dOX0ZJTEVfRVhURU5TSU9OKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgaXMgYW4gaW5zdGFuY2Ugb2YgVEZpbGUuXG4gKlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZpbGUgaXMgYW4gaW5zdGFuY2Ugb2YgVEZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0ZpbGUoZmlsZTogVEFic3RyYWN0RmlsZSB8IG51bGwpOiBmaWxlIGlzIFRGaWxlIHtcbiAgcmV0dXJuIGZpbGUgaW5zdGFuY2VvZiBURmlsZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgaXMgYSBmb2xkZXIuXG4gKlxuICogQHBhcmFtIGZpbGUgLSBUaGUgZmlsZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgZmlsZSBpcyBhIGZvbGRlciwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0ZvbGRlcihmaWxlOiBUQWJzdHJhY3RGaWxlIHwgbnVsbCk6IGZpbGUgaXMgVEZvbGRlciB7XG4gIHJldHVybiBmaWxlIGluc3RhbmNlb2YgVEZvbGRlcjtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXRoIG9mIHRoZSBnaXZlbiBgcGF0aE9yRmlsZWAuXG4gKlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBhYnN0cmFjdCBmaWxlLlxuICogQHJldHVybnMgVGhlIHBhdGggb2YgdGhlIGBwYXRoT3JGaWxlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhdGgocGF0aE9yRmlsZTogUGF0aE9yQWJzdHJhY3RGaWxlKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGhPckZpbGUgaW5zdGFuY2VvZiBUQWJzdHJhY3RGaWxlID8gcGF0aE9yRmlsZS5wYXRoIDogcGF0aE9yRmlsZTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQSxzQkFLTztBQUVQLGtCQUF3QjtBQUN4QixvQkFBd0I7QUFuQnhCLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sTUFBSTtBQUFDLFFBQU0saUJBQWUsV0FBVyxRQUFRLE9BQU0sR0FBRztBQUFFLFFBQU0sMEJBQXdCLGVBQWUsS0FBSyxjQUFjO0FBQUUsTUFBSSxPQUFLO0FBQWUsTUFBRyx5QkFBd0I7QUFBQyxXQUFLLElBQUksd0JBQXdCLENBQUMsRUFBRSxZQUFZLENBQUMsSUFBSSxlQUFlLE1BQU0sQ0FBQyxDQUFDO0FBQUEsRUFBRTtBQUFDLFFBQU0sY0FBWSxtQkFBbUIsSUFBSSxFQUFFLFFBQVEsUUFBTyxHQUFHLEVBQUUsUUFBUSxRQUFPLEdBQUc7QUFBRSxTQUFPLElBQUksSUFBSSxVQUFVLFdBQVcsRUFBRTtBQUFDLEdBQUc7QUFDcGIsSUFBSSxZQUFZLFdBQVcsU0FBUyxLQUFLO0FBQUEsRUFDdkMsT0FBTyxNQUFJO0FBQUEsRUFDWCxPQUFPLENBQUM7QUFBQSxFQUNSLFlBQVk7QUFDZDtBQW1CTyxNQUFNLDBCQUEwQjtBQUtoQyxNQUFNLHdCQUF3QjtBQWU5QixTQUFTLGdCQUFnQixLQUFVLFlBQStDO0FBQ3ZGLFFBQU0sT0FBTyxzQkFBc0IsS0FBSyxVQUFVO0FBQ2xELE1BQUksQ0FBQyxNQUFNO0FBQ1QsVUFBTSxJQUFJLE1BQU0sNEJBQTRCLFVBQW9CLEVBQUU7QUFBQSxFQUNwRTtBQUVBLFNBQU87QUFDVDtBQVNPLFNBQVMsc0JBQXNCLEtBQVUsWUFBc0Q7QUFDcEcsU0FBTyxzQkFBc0IsZ0NBQWdCLGFBQWEsSUFBSSxNQUFNLHNCQUFzQixVQUFVO0FBQ3RHO0FBT08sU0FBUyxPQUFPLE1BQXFDO0FBQzFELFNBQU8sZUFBZSxJQUFJLEtBQUssYUFBYSxJQUFJO0FBQ2xEO0FBUU8sU0FBUyxlQUFlLFlBQWdEO0FBQzdFLFNBQU8sZUFBZSxZQUFZLHVCQUF1QjtBQUMzRDtBQVFPLFNBQVMsYUFBYSxZQUFnRDtBQUMzRSxTQUFPLGVBQWUsWUFBWSxxQkFBcUI7QUFDekQ7QUFTTyxTQUFTLGVBQWUsWUFBdUMsV0FBNEI7QUFDaEcsTUFBSSxlQUFlLE1BQU07QUFDdkIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxhQUFPLHFCQUFRLFFBQVEsVUFBVSxDQUFDLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxNQUFNLFVBQVUsWUFBWTtBQUN2RjtBQVNPLFNBQVMsc0JBQXNCLE1BQTZCO0FBQ2pFLE1BQUksQ0FBQyxlQUFlLElBQUksR0FBRztBQUN6QixXQUFPLEtBQUs7QUFBQSxFQUNkO0FBRUEsYUFBTyx1QkFBUSxLQUFLLE1BQU0sTUFBTSx1QkFBdUI7QUFDekQ7QUFRTyxTQUFTLE9BQU8sTUFBMkM7QUFDaEUsU0FBTyxnQkFBZ0I7QUFDekI7QUFRTyxTQUFTLFNBQVMsTUFBNkM7QUFDcEUsU0FBTyxnQkFBZ0I7QUFDekI7QUFRTyxTQUFTLFFBQVEsWUFBd0M7QUFDOUQsU0FBTyxzQkFBc0IsZ0NBQWdCLFdBQVcsT0FBTztBQUNqRTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -2,7 +2,7 @@
2
2
  * @packageDocumentation TAbstractFile
3
3
  * This module provides utility functions for working with abstract files in Obsidian.
4
4
  */
5
- import { App, TAbstractFile, TFile, TFolder } from "obsidian";
5
+ import { App, TAbstractFile, TFile, TFolder } from 'obsidian';
6
6
  /**
7
7
  * The file extension for Markdown files.
8
8
  */
@@ -28,7 +28,16 @@ __export(TFile_exports, {
28
28
  });
29
29
  module.exports = __toCommonJS(TFile_exports);
30
30
  var import_obsidian = require("obsidian");
31
- var __import_meta_url = globalThis["import.meta.url"] ?? (() => require("node:url").pathToFileURL(__filename))();
31
+ var __import_meta_url = globalThis["import.meta.url"] ?? (() => {
32
+ const normalizedPath = __filename.replace(/\\/g, "/");
33
+ const windowsDriveLetterMatch = /^([a-zA-Z]):/.exec(normalizedPath);
34
+ let path = normalizedPath;
35
+ if (windowsDriveLetterMatch) {
36
+ path = `/${windowsDriveLetterMatch[1].toUpperCase()}:${normalizedPath.slice(2)}`;
37
+ }
38
+ const encodedPath = encodeURIComponent(path).replace(/%2F/g, "/").replace(/%3A/g, ":");
39
+ return new URL(`file://${encodedPath}`);
40
+ })();
32
41
  var __process = globalThis["process"] ?? {
33
42
  "cwd": () => "/",
34
43
  "env": {},
@@ -49,4 +58,4 @@ function getFileOrNull(app, pathOrFile) {
49
58
  getFile,
50
59
  getFileOrNull
51
60
  });
52
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1RGaWxlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzW1wiaW1wb3J0Lm1ldGEudXJsXCJdID8/ICgoKT0+cmVxdWlyZShcIm5vZGU6dXJsXCIpLnBhdGhUb0ZpbGVVUkwoX19maWxlbmFtZSkpKCk7XG52YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1tcInByb2Nlc3NcIl0gPz8ge1xuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gVEZpbGVcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggVEZpbGUgaW5zdGFuY2VzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB7XG4gIEFwcCxcbiAgVEZpbGVcbn0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHBhdGggb3IgYSBmaWxlLlxuICovXG5leHBvcnQgdHlwZSBQYXRoT3JGaWxlID0gc3RyaW5nIHwgVEZpbGU7XG5cbi8qKlxuICogUmV0cmlldmVzIGEgVEZpbGUgb2JqZWN0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwYXRoIG9yIGZpbGUuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBBcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gcmV0cmlldmUgdGhlIFRGaWxlIG9iamVjdCBmb3IuXG4gKiBAcmV0dXJucyBUaGUgVEZpbGUgb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3ZpZGVkIHBhdGggb3IgZmlsZS5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGZpbGUgaXMgbm90IGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSk6IFRGaWxlIHtcbiAgY29uc3QgZmlsZSA9IGdldEZpbGVPck51bGwoYXBwLCBwYXRoT3JGaWxlKTtcbiAgaWYgKCFmaWxlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtwYXRoT3JGaWxlIGFzIHN0cmluZ31gKTtcbiAgfVxuXG4gIHJldHVybiBmaWxlO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIFRGaWxlIG9iamVjdCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICogSWYgdGhlIHByb3ZpZGVkIGFyZ3VtZW50IGlzIGFscmVhZHkgYSBURmlsZSBvYmplY3QsIGl0IGlzIHJldHVybmVkIGFzIGlzLlxuICogT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgYXBwJ3MgdmF1bHQgdG8gcmV0cmlldmUgdGhlIFRGaWxlIG9iamVjdCBieSBpdHMgcGF0aC5cbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBURmlsZSBvYmplY3QuXG4gKiBAcmV0dXJucyBUaGUgVEZpbGUgb2JqZWN0IGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVPck51bGwoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBURmlsZSB8IG51bGwge1xuICByZXR1cm4gcGF0aE9yRmlsZSBpbnN0YW5jZW9mIFRGaWxlID8gcGF0aE9yRmlsZSA6IGFwcC52YXVsdC5nZXRGaWxlQnlQYXRoKHBhdGhPckZpbGUpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQSxzQkFHTztBQWRQLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sTUFBSSxRQUFRLFVBQVUsRUFBRSxjQUFjLFVBQVUsR0FBRztBQUM3RyxJQUFJLFlBQVksV0FBVyxTQUFTLEtBQUs7QUFBQSxFQUN2QyxPQUFPLE1BQUk7QUFBQSxFQUNYLE9BQU8sQ0FBQztBQUFBLEVBQ1IsWUFBWTtBQUNkO0FBd0JPLFNBQVMsUUFBUSxLQUFVLFlBQStCO0FBQy9ELFFBQU0sT0FBTyxjQUFjLEtBQUssVUFBVTtBQUMxQyxNQUFJLENBQUMsTUFBTTtBQUNULFVBQU0sSUFBSSxNQUFNLG1CQUFtQixVQUFvQixFQUFFO0FBQUEsRUFDM0Q7QUFFQSxTQUFPO0FBQ1Q7QUFVTyxTQUFTLGNBQWMsS0FBVSxZQUFzQztBQUM1RSxTQUFPLHNCQUFzQix3QkFBUSxhQUFhLElBQUksTUFBTSxjQUFjLFVBQVU7QUFDdEY7IiwKICAibmFtZXMiOiBbXQp9Cg==
61
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1RGaWxlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzW1wiaW1wb3J0Lm1ldGEudXJsXCJdID8/ICgoKT0+e2NvbnN0IG5vcm1hbGl6ZWRQYXRoPV9fZmlsZW5hbWUucmVwbGFjZSgvXFxcXC9nLFwiL1wiKTtjb25zdCB3aW5kb3dzRHJpdmVMZXR0ZXJNYXRjaD0vXihbYS16QS1aXSk6Ly5leGVjKG5vcm1hbGl6ZWRQYXRoKTtsZXQgcGF0aD1ub3JtYWxpemVkUGF0aDtpZih3aW5kb3dzRHJpdmVMZXR0ZXJNYXRjaCl7cGF0aD1gLyR7d2luZG93c0RyaXZlTGV0dGVyTWF0Y2hbMV0udG9VcHBlckNhc2UoKX06JHtub3JtYWxpemVkUGF0aC5zbGljZSgyKX1gfWNvbnN0IGVuY29kZWRQYXRoPWVuY29kZVVSSUNvbXBvbmVudChwYXRoKS5yZXBsYWNlKC8lMkYvZyxcIi9cIikucmVwbGFjZSgvJTNBL2csXCI6XCIpO3JldHVybiBuZXcgVVJMKGBmaWxlOi8vJHtlbmNvZGVkUGF0aH1gKX0pKCk7XG52YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1tcInByb2Nlc3NcIl0gPz8ge1xuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gVEZpbGVcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggVEZpbGUgaW5zdGFuY2VzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB7XG4gIEFwcCxcbiAgVEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwYXRoIG9yIGEgZmlsZS5cbiAqL1xuZXhwb3J0IHR5cGUgUGF0aE9yRmlsZSA9IHN0cmluZyB8IFRGaWxlO1xuXG4vKipcbiAqIFJldHJpZXZlcyBhIFRGaWxlIG9iamVjdCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcGF0aCBvciBmaWxlLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gQXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZpbGUgLSBUaGUgcGF0aCBvciBmaWxlIHRvIHJldHJpZXZlIHRoZSBURmlsZSBvYmplY3QgZm9yLlxuICogQHJldHVybnMgVGhlIFRGaWxlIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm92aWRlZCBwYXRoIG9yIGZpbGUuXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBmaWxlIGlzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGUoYXBwOiBBcHAsIHBhdGhPckZpbGU6IFBhdGhPckZpbGUpOiBURmlsZSB7XG4gIGNvbnN0IGZpbGUgPSBnZXRGaWxlT3JOdWxsKGFwcCwgcGF0aE9yRmlsZSk7XG4gIGlmICghZmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7cGF0aE9yRmlsZSBhcyBzdHJpbmd9YCk7XG4gIH1cblxuICByZXR1cm4gZmlsZTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYSBURmlsZSBvYmplY3QgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgZmlsZS5cbiAqIElmIHRoZSBwcm92aWRlZCBhcmd1bWVudCBpcyBhbHJlYWR5IGEgVEZpbGUgb2JqZWN0LCBpdCBpcyByZXR1cm5lZCBhcyBpcy5cbiAqIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlIGFwcCdzIHZhdWx0IHRvIHJldHJpZXZlIHRoZSBURmlsZSBvYmplY3QgYnkgaXRzIHBhdGguXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgVEZpbGUgb2JqZWN0LlxuICogQHJldHVybnMgVGhlIFRGaWxlIG9iamVjdCBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlT3JOdWxsKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlKTogVEZpbGUgfCBudWxsIHtcbiAgcmV0dXJuIHBhdGhPckZpbGUgaW5zdGFuY2VvZiBURmlsZSA/IHBhdGhPckZpbGUgOiBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChwYXRoT3JGaWxlKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0Esc0JBR087QUFkUCxJQUFJLG9CQUFvQixXQUFXLGlCQUFpQixNQUFNLE1BQUk7QUFBQyxRQUFNLGlCQUFlLFdBQVcsUUFBUSxPQUFNLEdBQUc7QUFBRSxRQUFNLDBCQUF3QixlQUFlLEtBQUssY0FBYztBQUFFLE1BQUksT0FBSztBQUFlLE1BQUcseUJBQXdCO0FBQUMsV0FBSyxJQUFJLHdCQUF3QixDQUFDLEVBQUUsWUFBWSxDQUFDLElBQUksZUFBZSxNQUFNLENBQUMsQ0FBQztBQUFBLEVBQUU7QUFBQyxRQUFNLGNBQVksbUJBQW1CLElBQUksRUFBRSxRQUFRLFFBQU8sR0FBRyxFQUFFLFFBQVEsUUFBTyxHQUFHO0FBQUUsU0FBTyxJQUFJLElBQUksVUFBVSxXQUFXLEVBQUU7QUFBQyxHQUFHO0FBQ3BiLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7QUF3Qk8sU0FBUyxRQUFRLEtBQVUsWUFBK0I7QUFDL0QsUUFBTSxPQUFPLGNBQWMsS0FBSyxVQUFVO0FBQzFDLE1BQUksQ0FBQyxNQUFNO0FBQ1QsVUFBTSxJQUFJLE1BQU0sbUJBQW1CLFVBQW9CLEVBQUU7QUFBQSxFQUMzRDtBQUVBLFNBQU87QUFDVDtBQVVPLFNBQVMsY0FBYyxLQUFVLFlBQXNDO0FBQzVFLFNBQU8sc0JBQXNCLHdCQUFRLGFBQWEsSUFBSSxNQUFNLGNBQWMsVUFBVTtBQUN0RjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -2,7 +2,7 @@
2
2
  * @packageDocumentation TFile
3
3
  * This module provides utility functions for working with TFile instances in Obsidian.
4
4
  */
5
- import { App, TFile } from "obsidian";
5
+ import { App, TFile } from 'obsidian';
6
6
  /**
7
7
  * Represents a path or a file.
8
8
  */
@@ -30,7 +30,16 @@ __export(TFolder_exports, {
30
30
  module.exports = __toCommonJS(TFolder_exports);
31
31
  var import_obsidian = require("obsidian");
32
32
  var import_TAbstractFile = require("./TAbstractFile.cjs");
33
- var __import_meta_url = globalThis["import.meta.url"] ?? (() => require("node:url").pathToFileURL(__filename))();
33
+ var __import_meta_url = globalThis["import.meta.url"] ?? (() => {
34
+ const normalizedPath = __filename.replace(/\\/g, "/");
35
+ const windowsDriveLetterMatch = /^([a-zA-Z]):/.exec(normalizedPath);
36
+ let path = normalizedPath;
37
+ if (windowsDriveLetterMatch) {
38
+ path = `/${windowsDriveLetterMatch[1].toUpperCase()}:${normalizedPath.slice(2)}`;
39
+ }
40
+ const encodedPath = encodeURIComponent(path).replace(/%2F/g, "/").replace(/%3A/g, ":");
41
+ return new URL(`file://${encodedPath}`);
42
+ })();
34
43
  var __process = globalThis["process"] ?? {
35
44
  "cwd": () => "/",
36
45
  "env": {},
@@ -70,4 +79,4 @@ function getMarkdownFiles(app, pathOrFolder, isRecursive) {
70
79
  getFolderOrNull,
71
80
  getMarkdownFiles
72
81
  });
73
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1RGb2xkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbXCJpbXBvcnQubWV0YS51cmxcIl0gPz8gKCgpPT5yZXF1aXJlKFwibm9kZTp1cmxcIikucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKSkoKTtcbnZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzW1wicHJvY2Vzc1wiXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBURm9sZGVyXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igd29ya2luZyB3aXRoIFRGb2xkZXIgaW5zdGFuY2VzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB7XG4gIHR5cGUgQXBwLFxuICBURmlsZSxcbiAgVEZvbGRlcixcbiAgVmF1bHRcbn0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBpc01hcmtkb3duRmlsZSB9IGZyb20gXCIuL1RBYnN0cmFjdEZpbGUudHNcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcGF0aCBvciBhbiBpbnN0YW5jZSBvZiBURm9sZGVyLlxuICovXG5leHBvcnQgdHlwZSBQYXRoT3JGb2xkZXIgPSBzdHJpbmcgfCBURm9sZGVyXG5cbi8qKlxuICogUmV0cmlldmVzIGEgVEZvbGRlciBvYmplY3QgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFwcCBhbmQgcGF0aE9yRm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciBpZGVudGlmaWVyLlxuICogQHJldHVybnMgVGhlIHJldHJpZXZlZCBURm9sZGVyIG9iamVjdC5cbiAqIEB0aHJvd3MgSWYgdGhlIGZvbGRlciBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2xkZXIoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyKTogVEZvbGRlciB7XG4gIGNvbnN0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIHBhdGhPckZvbGRlcik7XG4gIGlmICghZm9sZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGb2xkZXIgbm90IGZvdW5kOiAke3BhdGhPckZvbGRlciBhcyBzdHJpbmd9YCk7XG4gIH1cblxuICByZXR1cm4gZm9sZGVyO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIFRGb2xkZXIgb2JqZWN0IG9yIG51bGwgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIHJldHJpZXZlIHRoZSBURm9sZGVyIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgVEZvbGRlciBvYmplY3QgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZGVyT3JOdWxsKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IFBhdGhPckZvbGRlciB8IG51bGwpOiBURm9sZGVyIHwgbnVsbCB7XG4gIGlmIChwYXRoT3JGb2xkZXIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gcGF0aE9yRm9sZGVyIGluc3RhbmNlb2YgVEZvbGRlciA/IHBhdGhPckZvbGRlciA6IGFwcC52YXVsdC5nZXRGb2xkZXJCeVBhdGgocGF0aE9yRm9sZGVyKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgVEZpbGUgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIG1hcmtkb3duIGZpbGVzIHdpdGhpbiBhIHNwZWNpZmllZCBmb2xkZXIgb3IgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gcmV0cmlldmUgdGhlIG1hcmtkb3duIGZpbGVzIGZyb20uXG4gKiBAcGFyYW0gaXNSZWN1cnNpdmUgLSBPcHRpb25hbC4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmVjdXJzaXZlbHkgc2VhcmNoIGZvciBtYXJrZG93biBmaWxlcyB3aXRoaW4gc3ViZm9sZGVycy4gRGVmYXVsdCBpcyBmYWxzZS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIFRGaWxlIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSBtYXJrZG93biBmaWxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duRmlsZXMoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyLCBpc1JlY3Vyc2l2ZT86IGJvb2xlYW4pOiBURmlsZVtdIHtcbiAgY29uc3QgZm9sZGVyID0gZ2V0Rm9sZGVyKGFwcCwgcGF0aE9yRm9sZGVyKTtcblxuICBsZXQgbWFya2Rvd25GaWxlczogVEZpbGVbXSA9IFtdO1xuXG4gIGlmICghaXNSZWN1cnNpdmUpIHtcbiAgICBtYXJrZG93bkZpbGVzID0gZm9sZGVyLmNoaWxkcmVuLmZpbHRlcigoZmlsZSkgPT4gaXNNYXJrZG93bkZpbGUoZmlsZSkpIGFzIFRGaWxlW107XG4gIH0gZWxzZSB7XG4gICAgVmF1bHQucmVjdXJzZUNoaWxkcmVuKGZvbGRlciwgKGFic3RyYWN0RmlsZSkgPT4ge1xuICAgICAgaWYgKGlzTWFya2Rvd25GaWxlKGFic3RyYWN0RmlsZSkpIHtcbiAgICAgICAgbWFya2Rvd25GaWxlcy5wdXNoKGFic3RyYWN0RmlsZSBhcyBURmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBtYXJrZG93bkZpbGVzID0gbWFya2Rvd25GaWxlcy5zb3J0KChhLCBiKSA9PiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpKTtcbiAgcmV0dXJuIG1hcmtkb3duRmlsZXM7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0Esc0JBS087QUFDUCwyQkFBK0I7QUFqQi9CLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sTUFBSSxRQUFRLFVBQVUsRUFBRSxjQUFjLFVBQVUsR0FBRztBQUM3RyxJQUFJLFlBQVksV0FBVyxTQUFTLEtBQUs7QUFBQSxFQUN2QyxPQUFPLE1BQUk7QUFBQSxFQUNYLE9BQU8sQ0FBQztBQUFBLEVBQ1IsWUFBWTtBQUNkO0FBMkJPLFNBQVMsVUFBVSxLQUFVLGNBQXFDO0FBQ3ZFLFFBQU0sU0FBUyxnQkFBZ0IsS0FBSyxZQUFZO0FBQ2hELE1BQUksQ0FBQyxRQUFRO0FBQ1gsVUFBTSxJQUFJLE1BQU0scUJBQXFCLFlBQXNCLEVBQUU7QUFBQSxFQUMvRDtBQUVBLFNBQU87QUFDVDtBQVNPLFNBQVMsZ0JBQWdCLEtBQVUsY0FBbUQ7QUFDM0YsTUFBSSxpQkFBaUIsTUFBTTtBQUN6QixXQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU8sd0JBQXdCLDBCQUFVLGVBQWUsSUFBSSxNQUFNLGdCQUFnQixZQUFZO0FBQ2hHO0FBVU8sU0FBUyxpQkFBaUIsS0FBVSxjQUE0QixhQUFnQztBQUNyRyxRQUFNLFNBQVMsVUFBVSxLQUFLLFlBQVk7QUFFMUMsTUFBSSxnQkFBeUIsQ0FBQztBQUU5QixNQUFJLENBQUMsYUFBYTtBQUNoQixvQkFBZ0IsT0FBTyxTQUFTLE9BQU8sQ0FBQyxhQUFTLHFDQUFlLElBQUksQ0FBQztBQUFBLEVBQ3ZFLE9BQU87QUFDTCwwQkFBTSxnQkFBZ0IsUUFBUSxDQUFDLGlCQUFpQjtBQUM5QyxjQUFJLHFDQUFlLFlBQVksR0FBRztBQUNoQyxzQkFBYyxLQUFLLFlBQXFCO0FBQUEsTUFDMUM7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBRUEsa0JBQWdCLGNBQWMsS0FBSyxDQUFDLEdBQUcsTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFFLElBQUksQ0FBQztBQUN6RSxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
82
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1RGb2xkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbXCJpbXBvcnQubWV0YS51cmxcIl0gPz8gKCgpPT57Y29uc3Qgbm9ybWFsaXplZFBhdGg9X19maWxlbmFtZS5yZXBsYWNlKC9cXFxcL2csXCIvXCIpO2NvbnN0IHdpbmRvd3NEcml2ZUxldHRlck1hdGNoPS9eKFthLXpBLVpdKTovLmV4ZWMobm9ybWFsaXplZFBhdGgpO2xldCBwYXRoPW5vcm1hbGl6ZWRQYXRoO2lmKHdpbmRvd3NEcml2ZUxldHRlck1hdGNoKXtwYXRoPWAvJHt3aW5kb3dzRHJpdmVMZXR0ZXJNYXRjaFsxXS50b1VwcGVyQ2FzZSgpfToke25vcm1hbGl6ZWRQYXRoLnNsaWNlKDIpfWB9Y29uc3QgZW5jb2RlZFBhdGg9ZW5jb2RlVVJJQ29tcG9uZW50KHBhdGgpLnJlcGxhY2UoLyUyRi9nLFwiL1wiKS5yZXBsYWNlKC8lM0EvZyxcIjpcIik7cmV0dXJuIG5ldyBVUkwoYGZpbGU6Ly8ke2VuY29kZWRQYXRofWApfSkoKTtcbnZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzW1wicHJvY2Vzc1wiXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBURm9sZGVyXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igd29ya2luZyB3aXRoIFRGb2xkZXIgaW5zdGFuY2VzIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHtcbiAgVEZpbGUsXG4gIFRGb2xkZXIsXG4gIFZhdWx0XG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgaXNNYXJrZG93bkZpbGUgfSBmcm9tICcuL1RBYnN0cmFjdEZpbGUudHMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBwYXRoIG9yIGFuIGluc3RhbmNlIG9mIFRGb2xkZXIuXG4gKi9cbmV4cG9ydCB0eXBlIFBhdGhPckZvbGRlciA9IHN0cmluZyB8IFRGb2xkZXI7XG5cbi8qKlxuICogUmV0cmlldmVzIGEgVEZvbGRlciBvYmplY3QgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFwcCBhbmQgcGF0aE9yRm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGhPckZvbGRlciAtIFRoZSBwYXRoIG9yIGZvbGRlciBpZGVudGlmaWVyLlxuICogQHJldHVybnMgVGhlIHJldHJpZXZlZCBURm9sZGVyIG9iamVjdC5cbiAqIEB0aHJvd3MgSWYgdGhlIGZvbGRlciBpcyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2xkZXIoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyKTogVEZvbGRlciB7XG4gIGNvbnN0IGZvbGRlciA9IGdldEZvbGRlck9yTnVsbChhcHAsIHBhdGhPckZvbGRlcik7XG4gIGlmICghZm9sZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGb2xkZXIgbm90IGZvdW5kOiAke3BhdGhPckZvbGRlciBhcyBzdHJpbmd9YCk7XG4gIH1cblxuICByZXR1cm4gZm9sZGVyO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIFRGb2xkZXIgb2JqZWN0IG9yIG51bGwgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHBhdGggb3IgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yRm9sZGVyIC0gVGhlIHBhdGggb3IgZm9sZGVyIHRvIHJldHJpZXZlIHRoZSBURm9sZGVyIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgVEZvbGRlciBvYmplY3QgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZGVyT3JOdWxsKGFwcDogQXBwLCBwYXRoT3JGb2xkZXI6IFBhdGhPckZvbGRlciB8IG51bGwpOiBURm9sZGVyIHwgbnVsbCB7XG4gIGlmIChwYXRoT3JGb2xkZXIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gcGF0aE9yRm9sZGVyIGluc3RhbmNlb2YgVEZvbGRlciA/IHBhdGhPckZvbGRlciA6IGFwcC52YXVsdC5nZXRGb2xkZXJCeVBhdGgocGF0aE9yRm9sZGVyKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgVEZpbGUgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIG1hcmtkb3duIGZpbGVzIHdpdGhpbiBhIHNwZWNpZmllZCBmb2xkZXIgb3IgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIEFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgcGF0aCBvciBmb2xkZXIgdG8gcmV0cmlldmUgdGhlIG1hcmtkb3duIGZpbGVzIGZyb20uXG4gKiBAcGFyYW0gaXNSZWN1cnNpdmUgLSBPcHRpb25hbC4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmVjdXJzaXZlbHkgc2VhcmNoIGZvciBtYXJrZG93biBmaWxlcyB3aXRoaW4gc3ViZm9sZGVycy4gRGVmYXVsdCBpcyBmYWxzZS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIFRGaWxlIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSBtYXJrZG93biBmaWxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcmtkb3duRmlsZXMoYXBwOiBBcHAsIHBhdGhPckZvbGRlcjogUGF0aE9yRm9sZGVyLCBpc1JlY3Vyc2l2ZT86IGJvb2xlYW4pOiBURmlsZVtdIHtcbiAgY29uc3QgZm9sZGVyID0gZ2V0Rm9sZGVyKGFwcCwgcGF0aE9yRm9sZGVyKTtcblxuICBsZXQgbWFya2Rvd25GaWxlczogVEZpbGVbXSA9IFtdO1xuXG4gIGlmICghaXNSZWN1cnNpdmUpIHtcbiAgICBtYXJrZG93bkZpbGVzID0gZm9sZGVyLmNoaWxkcmVuLmZpbHRlcigoZmlsZSkgPT4gaXNNYXJrZG93bkZpbGUoZmlsZSkpIGFzIFRGaWxlW107XG4gIH0gZWxzZSB7XG4gICAgVmF1bHQucmVjdXJzZUNoaWxkcmVuKGZvbGRlciwgKGFic3RyYWN0RmlsZSkgPT4ge1xuICAgICAgaWYgKGlzTWFya2Rvd25GaWxlKGFic3RyYWN0RmlsZSkpIHtcbiAgICAgICAgbWFya2Rvd25GaWxlcy5wdXNoKGFic3RyYWN0RmlsZSBhcyBURmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBtYXJrZG93bkZpbGVzID0gbWFya2Rvd25GaWxlcy5zb3J0KChhLCBiKSA9PiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpKTtcbiAgcmV0dXJuIG1hcmtkb3duRmlsZXM7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBWUEsc0JBSU87QUFFUCwyQkFBK0I7QUFsQi9CLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sTUFBSTtBQUFDLFFBQU0saUJBQWUsV0FBVyxRQUFRLE9BQU0sR0FBRztBQUFFLFFBQU0sMEJBQXdCLGVBQWUsS0FBSyxjQUFjO0FBQUUsTUFBSSxPQUFLO0FBQWUsTUFBRyx5QkFBd0I7QUFBQyxXQUFLLElBQUksd0JBQXdCLENBQUMsRUFBRSxZQUFZLENBQUMsSUFBSSxlQUFlLE1BQU0sQ0FBQyxDQUFDO0FBQUEsRUFBRTtBQUFDLFFBQU0sY0FBWSxtQkFBbUIsSUFBSSxFQUFFLFFBQVEsUUFBTyxHQUFHLEVBQUUsUUFBUSxRQUFPLEdBQUc7QUFBRSxTQUFPLElBQUksSUFBSSxVQUFVLFdBQVcsRUFBRTtBQUFDLEdBQUc7QUFDcGIsSUFBSSxZQUFZLFdBQVcsU0FBUyxLQUFLO0FBQUEsRUFDdkMsT0FBTyxNQUFJO0FBQUEsRUFDWCxPQUFPLENBQUM7QUFBQSxFQUNSLFlBQVk7QUFDZDtBQTRCTyxTQUFTLFVBQVUsS0FBVSxjQUFxQztBQUN2RSxRQUFNLFNBQVMsZ0JBQWdCLEtBQUssWUFBWTtBQUNoRCxNQUFJLENBQUMsUUFBUTtBQUNYLFVBQU0sSUFBSSxNQUFNLHFCQUFxQixZQUFzQixFQUFFO0FBQUEsRUFDL0Q7QUFFQSxTQUFPO0FBQ1Q7QUFTTyxTQUFTLGdCQUFnQixLQUFVLGNBQW1EO0FBQzNGLE1BQUksaUJBQWlCLE1BQU07QUFDekIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxTQUFPLHdCQUF3QiwwQkFBVSxlQUFlLElBQUksTUFBTSxnQkFBZ0IsWUFBWTtBQUNoRztBQVVPLFNBQVMsaUJBQWlCLEtBQVUsY0FBNEIsYUFBZ0M7QUFDckcsUUFBTSxTQUFTLFVBQVUsS0FBSyxZQUFZO0FBRTFDLE1BQUksZ0JBQXlCLENBQUM7QUFFOUIsTUFBSSxDQUFDLGFBQWE7QUFDaEIsb0JBQWdCLE9BQU8sU0FBUyxPQUFPLENBQUMsYUFBUyxxQ0FBZSxJQUFJLENBQUM7QUFBQSxFQUN2RSxPQUFPO0FBQ0wsMEJBQU0sZ0JBQWdCLFFBQVEsQ0FBQyxpQkFBaUI7QUFDOUMsY0FBSSxxQ0FBZSxZQUFZLEdBQUc7QUFDaEMsc0JBQWMsS0FBSyxZQUFxQjtBQUFBLE1BQzFDO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUVBLGtCQUFnQixjQUFjLEtBQUssQ0FBQyxHQUFHLE1BQU0sRUFBRSxLQUFLLGNBQWMsRUFBRSxJQUFJLENBQUM7QUFDekUsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -2,7 +2,8 @@
2
2
  * @packageDocumentation TFolder
3
3
  * This module provides utility functions for working with TFolder instances in Obsidian.
4
4
  */
5
- import { type App, TFile, TFolder } from "obsidian";
5
+ import type { App } from 'obsidian';
6
+ import { TFile, TFolder } from 'obsidian';
6
7
  /**
7
8
  * Represents a path or an instance of TFolder.
8
9
  */
@@ -35,17 +35,25 @@ __export(Vault_exports, {
35
35
  });
36
36
  module.exports = __toCommonJS(Vault_exports);
37
37
  var import_obsidian = require("obsidian");
38
- var import_Object = require("../Object.cjs");
39
38
  var import_Async = require("../Async.cjs");
40
- var import_MetadataCache = require("./MetadataCache.cjs");
41
39
  var import_Error = require("../Error.cjs");
42
- var import_JSON = require("../JSON.cjs");
43
- var import_TFile = require("./TFile.cjs");
40
+ var import_Object = require("../Object.cjs");
41
+ var import_Path = require("../Path.cjs");
42
+ var import_ValueProvider = require("../ValueProvider.cjs");
43
+ var import_MetadataCache = require("./MetadataCache.cjs");
44
44
  var import_TAbstractFile = require("./TAbstractFile.cjs");
45
+ var import_TFile = require("./TFile.cjs");
45
46
  var import_TFolder = require("./TFolder.cjs");
46
- var import_ValueProvider = require("../ValueProvider.cjs");
47
- var import_Path = require("../Path.cjs");
48
- var __import_meta_url = globalThis["import.meta.url"] ?? (() => require("node:url").pathToFileURL(__filename))();
47
+ var __import_meta_url = globalThis["import.meta.url"] ?? (() => {
48
+ const normalizedPath = __filename.replace(/\\/g, "/");
49
+ const windowsDriveLetterMatch = /^([a-zA-Z]):/.exec(normalizedPath);
50
+ let path = normalizedPath;
51
+ if (windowsDriveLetterMatch) {
52
+ path = `/${windowsDriveLetterMatch[1].toUpperCase()}:${normalizedPath.slice(2)}`;
53
+ }
54
+ const encodedPath = encodeURIComponent(path).replace(/%2F/g, "/").replace(/%3A/g, ":");
55
+ return new URL(`file://${encodedPath}`);
56
+ })();
49
57
  var __process = globalThis["process"] ?? {
50
58
  "cwd": () => "/",
51
59
  "env": {},
@@ -84,7 +92,7 @@ async function applyFileChanges(app, pathOrFile, changesProvider, retryOptions =
84
92
  for (const change of changes) {
85
93
  const actualContent = content.slice(change.startIndex, change.endIndex);
86
94
  if (actualContent !== change.oldContent) {
87
- console.warn(`Content mismatch at ${change.startIndex}-${change.endIndex} in ${(0, import_TAbstractFile.getPath)(pathOrFile)}:
95
+ console.warn(`Content mismatch at ${change.startIndex.toString()}-${change.endIndex.toString()} in ${(0, import_TAbstractFile.getPath)(pathOrFile)}:
88
96
  Expected: ${change.oldContent}
89
97
  Actual: ${actualContent}`);
90
98
  return null;
@@ -98,12 +106,12 @@ Actual: ${actualContent}`);
98
106
  return !(0, import_Object.deepEqual)(change, changes[index - 1]);
99
107
  });
100
108
  for (let i = 1; i < changes.length; i++) {
101
- const change = changes[i];
102
- const previousChange = changes[i - 1];
109
+ const change = changes[i] ?? (0, import_Error.throwExpression)(new Error("Change not found"));
110
+ const previousChange = changes[i - 1] ?? (0, import_Error.throwExpression)(new Error("Previous change not found"));
103
111
  if (previousChange.endIndex > change.startIndex) {
104
112
  console.warn(`Overlapping changes:
105
- ${(0, import_JSON.toJson)(previousChange)}
106
- ${(0, import_JSON.toJson)(change)}`);
113
+ ${(0, import_Object.toJson)(previousChange)}
114
+ ${(0, import_Object.toJson)(change)}`);
107
115
  return null;
108
116
  }
109
117
  }
@@ -214,7 +222,7 @@ async function createTempFile(app, path) {
214
222
  throw e;
215
223
  }
216
224
  }
217
- file = app.vault.getFileByPath(path);
225
+ file = app.vault.getFileByPath(path) ?? (0, import_Error.throwExpression)(new Error("File not found"));
218
226
  return async () => {
219
227
  if (!file.deleted) {
220
228
  await app.vault.delete(file, true);
@@ -232,7 +240,7 @@ async function createTempFolder(app, path) {
232
240
  await createTempFolder(app, dirPath);
233
241
  const folderCleanup = await createTempFolder(app, (0, import_Path.dirname)(path));
234
242
  await createFolderSafe(app, path);
235
- folder = app.vault.getFolderByPath(path);
243
+ folder = app.vault.getFolderByPath(path) ?? (0, import_Error.throwExpression)(new Error("Folder not found"));
236
244
  return async () => {
237
245
  if (!folder.deleted) {
238
246
  await app.vault.delete(folder, true);
@@ -252,4 +260,4 @@ async function createTempFolder(app, path) {
252
260
  removeFolderSafe,
253
261
  safeList
254
262
  });
255
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1ZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzW1wiaW1wb3J0Lm1ldGEudXJsXCJdID8/ICgoKT0+cmVxdWlyZShcIm5vZGU6dXJsXCIpLnBhdGhUb0ZpbGVVUkwoX19maWxlbmFtZSkpKCk7XG52YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1tcInByb2Nlc3NcIl0gPz8ge1xuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gVmF1bHRcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggdGhlIE9ic2lkaWFuIFZhdWx0LlxuICovXG5cbmltcG9ydCB7XG4gIEFwcCxcbiAgTm90aWNlLFxuICBURmlsZSxcbiAgVEZvbGRlcixcbiAgdHlwZSBMaXN0ZWRGaWxlc1xufSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gXCIuLi9PYmplY3QudHNcIjtcbmltcG9ydCB7XG4gIHJldHJ5V2l0aFRpbWVvdXQsXG4gIHR5cGUgUmV0cnlPcHRpb25zXG59IGZyb20gXCIuLi9Bc3luYy50c1wiO1xuaW1wb3J0IHsgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUgfSBmcm9tIFwiLi9NZXRhZGF0YUNhY2hlLnRzXCI7XG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSBcIi4uL0Vycm9yLnRzXCI7XG5pbXBvcnQgeyB0b0pzb24gfSBmcm9tIFwiLi4vSlNPTi50c1wiO1xuaW1wb3J0IHtcbiAgZ2V0RmlsZSxcbiAgdHlwZSBQYXRoT3JGaWxlXG59IGZyb20gXCIuL1RGaWxlLnRzXCI7XG5pbXBvcnQgeyBnZXRQYXRoIH0gZnJvbSBcIi4vVEFic3RyYWN0RmlsZS50c1wiO1xuaW1wb3J0IHtcbiAgZ2V0Rm9sZGVyT3JOdWxsLFxuICB0eXBlIFBhdGhPckZvbGRlclxufSBmcm9tIFwiLi9URm9sZGVyLnRzXCI7XG5pbXBvcnQge1xuICByZXNvbHZlVmFsdWUsXG4gIHR5cGUgVmFsdWVQcm92aWRlclxufSBmcm9tIFwiLi4vVmFsdWVQcm92aWRlci50c1wiO1xuaW1wb3J0IHsgZGlybmFtZSB9IGZyb20gXCIuLi9QYXRoLnRzXCI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGZpbGUgY2hhbmdlIGluIHRoZSBWYXVsdC5cbiAqL1xuZXhwb3J0IHR5cGUgRmlsZUNoYW5nZSA9IHtcbiAgc3RhcnRJbmRleDogbnVtYmVyO1xuICBlbmRJbmRleDogbnVtYmVyO1xuICBvbGRDb250ZW50OiBzdHJpbmc7XG4gIG5ld0NvbnRlbnQ6IHN0cmluZztcbn07XG5cbi8qKlxuICogUmV0cmlldmVzIGFuIGFycmF5IG9mIE1hcmtkb3duIGZpbGVzIGZyb20gdGhlIGFwcCdzIHZhdWx0IGFuZCBzb3J0cyB0aGVtIGFscGhhYmV0aWNhbGx5IGJ5IHRoZWlyIGZpbGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIE1hcmtkb3duIGZpbGVzIHNvcnRlZCBieSBmaWxlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXJrZG93bkZpbGVzU29ydGVkKGFwcDogQXBwKTogVEZpbGVbXSB7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0TWFya2Rvd25GaWxlcygpLnNvcnQoKGEsIGIpID0+IGEucGF0aC5sb2NhbGVDb21wYXJlKGIucGF0aCkpO1xufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIGZpbGUgd2l0aCByZXRyeSBsb2dpYywgdXBkYXRpbmcgaXRzIGNvbnRlbnQgYmFzZWQgb24gYSBwcm92aWRlZCB2YWx1ZSBvciBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLCB0eXBpY2FsbHkgdXNlZCBmb3IgYWNjZXNzaW5nIHRoZSB2YXVsdC5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBiZSBwcm9jZXNzZWQuIEl0IGNhbiBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggb3IgYSBmaWxlIG9iamVjdC5cbiAqIEBwYXJhbSBuZXdDb250ZW50UHJvdmlkZXIgLSBBIHZhbHVlIHByb3ZpZGVyIHRoYXQgcmV0dXJucyB0aGUgbmV3IGNvbnRlbnQgYmFzZWQgb24gdGhlIG9sZCBjb250ZW50IG9mIHRoZSBmaWxlLlxuICogSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgb2xkIGNvbnRlbnQgYXMgYW4gYXJndW1lbnQgYW5kIHJldHVybnMgdGhlIG5ldyBjb250ZW50LlxuICogSWYgZnVuY3Rpb24gaXMgcHJvdmlkZWQsIGl0IHNob3VsZCByZXR1cm4gYG51bGxgIGlmIHRoZSBwcm9jZXNzIHNob3VsZCBiZSByZXRyaWVkLlxuICogQHBhcmFtIHJldHJ5T3B0aW9ucyAtIE9wdGlvbmFsLiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHJldHJ5aW5nIHRoZSBwcm9jZXNzLiBJZiBub3QgcHJvdmlkZWQsIGRlZmF1bHQgb3B0aW9ucyB3aWxsIGJlIHVzZWQuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcHJvY2VzcyBpcyBjb21wbGV0ZS5cbiAqXG4gKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHByb2Nlc3MgZmFpbHMgYWZ0ZXIgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgcmV0cmllcyBvciB0aW1lb3V0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1dpdGhSZXRyeShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgbmV3Q29udGVudFByb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPHN0cmluZyB8IG51bGwsIFtzdHJpbmddPiwgcmV0cnlPcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGhPckZpbGUpO1xuICBjb25zdCBERUZBVUxUX1JFVFJZX09QVElPTlM6IFBhcnRpYWw8UmV0cnlPcHRpb25zPiA9IHsgdGltZW91dEluTWlsbGlzZWNvbmRzOiA2MDAwMCB9O1xuICBjb25zdCBvdmVycmlkZGVuT3B0aW9uczogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0geyAuLi5ERUZBVUxUX1JFVFJZX09QVElPTlMsIC4uLnJldHJ5T3B0aW9ucyB9O1xuICBhd2FpdCByZXRyeVdpdGhUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBvbGRDb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIucmVhZChmaWxlLnBhdGgpO1xuICAgIGNvbnN0IG5ld0NvbnRlbnQgPSBhd2FpdCByZXNvbHZlVmFsdWUobmV3Q29udGVudFByb3ZpZGVyLCBvbGRDb250ZW50KTtcbiAgICBpZiAobmV3Q29udGVudCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgc3VjY2VzcyA9IHRydWU7XG4gICAgYXdhaXQgYXBwLnZhdWx0LnByb2Nlc3MoZmlsZSwgKGNvbnRlbnQpID0+IHtcbiAgICAgIGlmIChjb250ZW50ICE9PSBvbGRDb250ZW50KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgQ29udGVudCBvZiAke2ZpbGUucGF0aH0gaGFzIGNoYW5nZWQgc2luY2UgaXQgd2FzIHJlYWQuIFJldHJ5aW5nLi4uYCk7XG4gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdDb250ZW50O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH0sIG92ZXJyaWRkZW5PcHRpb25zKTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgc2VyaWVzIG9mIGZpbGUgY2hhbmdlcyB0byB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgcGF0aCB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2Ugd2hlcmUgdGhlIGZpbGUgY2hhbmdlcyB3aWxsIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gY2hhbmdlc1Byb3ZpZGVyIC0gQSBwcm92aWRlciB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2YgZmlsZSBjaGFuZ2VzIHRvIGFwcGx5LlxuICogQHBhcmFtIHJldHJ5T3B0aW9ucyAtIE9wdGlvbmFsIHNldHRpbmdzIHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGUgb3BlcmF0aW9uIHNob3VsZCByZXRyeSBvbiBmYWlsdXJlLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGUgY2hhbmdlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseUZpbGVDaGFuZ2VzKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBjaGFuZ2VzUHJvdmlkZXI6IFZhbHVlUHJvdmlkZXI8RmlsZUNoYW5nZVtdPiwgcmV0cnlPcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBERUZBVUxUX1JFVFJZX09QVElPTlM6IFBhcnRpYWw8UmV0cnlPcHRpb25zPiA9IHsgdGltZW91dEluTWlsbGlzZWNvbmRzOiA2MDAwMCB9O1xuICBjb25zdCBvdmVycmlkZGVuT3B0aW9uczogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0geyAuLi5ERUZBVUxUX1JFVFJZX09QVElPTlMsIC4uLnJldHJ5T3B0aW9ucyB9O1xuICBhd2FpdCBwcm9jZXNzV2l0aFJldHJ5KGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGNvbnRlbnQpID0+IHtcbiAgICBsZXQgY2hhbmdlcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjaGFuZ2VzUHJvdmlkZXIpO1xuXG4gICAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgICAgY29uc3QgYWN0dWFsQ29udGVudCA9IGNvbnRlbnQuc2xpY2UoY2hhbmdlLnN0YXJ0SW5kZXgsIGNoYW5nZS5lbmRJbmRleCk7XG4gICAgICBpZiAoYWN0dWFsQ29udGVudCAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBDb250ZW50IG1pc21hdGNoIGF0ICR7Y2hhbmdlLnN0YXJ0SW5kZXh9LSR7Y2hhbmdlLmVuZEluZGV4fSBpbiAke2dldFBhdGgocGF0aE9yRmlsZSl9OlxcbkV4cGVjdGVkOiAke2NoYW5nZS5vbGRDb250ZW50fVxcbkFjdHVhbDogJHthY3R1YWxDb250ZW50fWApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjaGFuZ2VzLnNvcnQoKGEsIGIpID0+IGEuc3RhcnRJbmRleCAtIGIuc3RhcnRJbmRleCk7XG5cbiAgICAvLyBCVUc6IGh0dHBzOi8vZm9ydW0ub2JzaWRpYW4ubWQvdC9idWctZHVwbGljYXRlZC1saW5rcy1pbi1tZXRhZGF0YWNhY2hlLWluc2lkZS1mb290bm90ZXMvODU1NTFcbiAgICBjaGFuZ2VzID0gY2hhbmdlcy5maWx0ZXIoKGNoYW5nZSwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAhZGVlcEVxdWFsKGNoYW5nZSwgY2hhbmdlc1tpbmRleCAtIDFdKTtcbiAgICB9KTtcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgY2hhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY2hhbmdlID0gY2hhbmdlc1tpXSE7XG4gICAgICBjb25zdCBwcmV2aW91c0NoYW5nZSA9IGNoYW5nZXNbaSAtIDFdITtcbiAgICAgIGlmIChwcmV2aW91c0NoYW5nZS5lbmRJbmRleCA+IGNoYW5nZS5zdGFydEluZGV4KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgT3ZlcmxhcHBpbmcgY2hhbmdlczpcXG4ke3RvSnNvbihwcmV2aW91c0NoYW5nZSl9XFxuJHt0b0pzb24oY2hhbmdlKX1gKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IG5ld0NvbnRlbnQgPSBcIlwiO1xuICAgIGxldCBsYXN0SW5kZXggPSAwO1xuXG4gICAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgICAgbmV3Q29udGVudCArPSBjb250ZW50LnNsaWNlKGxhc3RJbmRleCwgY2hhbmdlLnN0YXJ0SW5kZXgpO1xuICAgICAgbmV3Q29udGVudCArPSBjaGFuZ2UubmV3Q29udGVudDtcbiAgICAgIGxhc3RJbmRleCA9IGNoYW5nZS5lbmRJbmRleDtcbiAgICB9XG5cbiAgICBuZXdDb250ZW50ICs9IGNvbnRlbnQuc2xpY2UobGFzdEluZGV4KTtcbiAgICByZXR1cm4gbmV3Q29udGVudDtcbiAgfSwgb3ZlcnJpZGRlbk9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYSBmb2xkZXIgYW5kIGl0cyBjb250ZW50cyBzYWZlbHkgZnJvbSB0aGUgdmF1bHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBmb2xkZXJQYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZvbGRlciB0byBiZSByZW1vdmVkLlxuICogQHBhcmFtIHJlbW92ZWROb3RlUGF0aCAtIE9wdGlvbmFsLiBUaGUgcGF0aCBvZiB0aGUgbm90ZSB0aGF0IHRyaWdnZXJlZCB0aGUgcmVtb3ZhbC5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHJlbW92YWwgd2FzIHN1Y2Nlc3NmdWwuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW1vdmVGb2xkZXJTYWZlKGFwcDogQXBwLCBmb2xkZXJQYXRoOiBzdHJpbmcsIHJlbW92ZWROb3RlUGF0aD86IHN0cmluZywgc2hvdWxkUmVwb3J0VXNlZEF0dGFjaG1lbnRzPzogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBmb2xkZXIgPSBhcHAudmF1bHQuZ2V0Rm9sZGVyQnlQYXRoKGZvbGRlclBhdGgpO1xuXG4gIGlmICghZm9sZGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbGV0IGNhblJlbW92ZSA9IHRydWU7XG5cbiAgZm9yIChjb25zdCBjaGlsZCBvZiBmb2xkZXIuY2hpbGRyZW4pIHtcbiAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgY29uc3QgYmFja2xpbmtzID0gYXdhaXQgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUoYXBwLCBjaGlsZCk7XG4gICAgICBpZiAocmVtb3ZlZE5vdGVQYXRoKSB7XG4gICAgICAgIGJhY2tsaW5rcy5yZW1vdmVLZXkocmVtb3ZlZE5vdGVQYXRoKTtcbiAgICAgIH1cbiAgICAgIGlmIChiYWNrbGlua3MuY291bnQoKSAhPT0gMCkge1xuICAgICAgICBpZiAoc2hvdWxkUmVwb3J0VXNlZEF0dGFjaG1lbnRzKSB7XG4gICAgICAgICAgbmV3IE5vdGljZShgQXR0YWNobWVudCAke2NoaWxkLnBhdGh9IGlzIHN0aWxsIHVzZWQgYnkgb3RoZXIgbm90ZXMuIEl0IHdpbGwgbm90IGJlIGRlbGV0ZWQuYCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FuUmVtb3ZlID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGFwcC52YXVsdC5kZWxldGUoY2hpbGQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhjaGlsZC5wYXRoKSkge1xuICAgICAgICAgICAgcHJpbnRFcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBkZWxldGUgJHtjaGlsZC5wYXRofWAsIHsgY2F1c2U6IGUgfSkpO1xuICAgICAgICAgICAgY2FuUmVtb3ZlID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjaGlsZCBpbnN0YW5jZW9mIFRGb2xkZXIpIHtcbiAgICAgIGNhblJlbW92ZSAmJj0gYXdhaXQgcmVtb3ZlRm9sZGVyU2FmZShhcHAsIGNoaWxkLnBhdGgsIHJlbW92ZWROb3RlUGF0aCwgc2hvdWxkUmVwb3J0VXNlZEF0dGFjaG1lbnRzKTtcbiAgICB9XG4gIH1cblxuICBpZiAoY2FuUmVtb3ZlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGFwcC52YXVsdC5kZWxldGUoZm9sZGVyLCB0cnVlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIuZXhpc3RzKGZvbGRlci5wYXRoKSkge1xuICAgICAgICBwcmludEVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIGRlbGV0ZSAke2ZvbGRlci5wYXRofWAsIHsgY2F1c2U6IGUgfSkpO1xuICAgICAgICBjYW5SZW1vdmUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2FuUmVtb3ZlO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmb2xkZXIgc2FmZWx5IGluIHRoZSBzcGVjaWZpZWQgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvbGRlciB3YXMgY3JlYXRlZC5cbiAqIEB0aHJvd3MgSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGNyZWF0aW5nIHRoZSBmb2xkZXIgYW5kIGl0IHN0aWxsIGRvZXNuJ3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVGb2xkZXJTYWZlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgaWYgKGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhwYXRoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIubWtkaXIocGF0aCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4vKipcbiAqIFNhZmVseSBsaXN0cyB0aGUgZmlsZXMgYW5kIGZvbGRlcnMgYXQgdGhlIHNwZWNpZmllZCBwYXRoIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBsaXN0IGZpbGVzIGFuZCBmb2xkZXJzIGZyb20uXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGBMaXN0ZWRGaWxlc2Agb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGxpc3RlZCBmaWxlcyBhbmQgZm9sZGVycy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNhZmVMaXN0KGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPExpc3RlZEZpbGVzPiB7XG4gIGNvbnN0IEVNUFRZID0geyBmaWxlczogW10sIGZvbGRlcnM6IFtdIH07XG4gIGlmICghKGF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpKSB7XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIubGlzdChwYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZXMgZW1wdHkgZm9sZGVyIGhpZXJhcmNoeSBzdGFydGluZyBmcm9tIHRoZSBnaXZlbiBmb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgZm9sZGVyIHRvIHN0YXJ0IHJlbW92aW5nIGVtcHR5IGhpZXJhcmNoeSBmcm9tLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZW1wdHkgaGllcmFyY2h5IGlzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW1vdmVFbXB0eUZvbGRlckhpZXJhcmNoeShhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIgfCBudWxsKTogUHJvbWlzZTx2b2lkPiB7XG4gIGxldCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBwYXRoT3JGb2xkZXIpO1xuXG4gIHdoaWxlIChmb2xkZXIpIHtcbiAgICBpZiAoZm9sZGVyLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGFyZW50ID0gZm9sZGVyLnBhcmVudDtcbiAgICBhd2FpdCByZW1vdmVGb2xkZXJTYWZlKGFwcCwgZm9sZGVyLnBhdGgpO1xuICAgIGZvbGRlciA9IHBhcmVudDtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZmlsZSBpbiB0aGUgdmF1bHQgd2l0aCBwYXJlbnQgZm9sZGVycyBpZiBuZWVkZWQuXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGNhbGxlZCB0byBkZWxldGUgdGhlIHRlbXBvcmFyeSBmaWxlIGFuZCBhbGwgaXRzIGNyZWF0ZWQgcGFyZW50cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRlbXBGaWxlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPCgpID0+IFByb21pc2U8dm9pZD4+IHtcbiAgbGV0IGZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChwYXRoKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgIH07XG4gIH1cblxuICBjb25zdCBmb2xkZXJDbGVhbnVwID0gYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIGRpcm5hbWUocGF0aCkpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZShwYXRoLCBcIlwiKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmICghYXdhaXQgYXBwLnZhdWx0LmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBmaWxlID0gYXBwLnZhdWx0LmdldEZpbGVCeVBhdGgocGF0aCkhO1xuXG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFmaWxlLmRlbGV0ZWQpIHtcbiAgICAgIGF3YWl0IGFwcC52YXVsdC5kZWxldGUoZmlsZSwgdHJ1ZSk7XG4gICAgfVxuICAgIGF3YWl0IGZvbGRlckNsZWFudXAoKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdGVtcG9yYXJ5IGZvbGRlciBpbiB0aGUgdmF1bHQgd2l0aCBwYXJlbnQgZm9sZGVycyBpZiBuZWVkZWQuXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgdG8gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgZm9sZGVyIGFuZCBhbGwgaXRzIGNyZWF0ZWQgcGFyZW50cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRlbXBGb2xkZXIoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZm9sZGVyID0gYXBwLnZhdWx0LmdldEZvbGRlckJ5UGF0aChwYXRoKTtcbiAgaWYgKGZvbGRlcikge1xuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGRpclBhdGggPSBkaXJuYW1lKHBhdGgpO1xuICBhd2FpdCBjcmVhdGVUZW1wRm9sZGVyKGFwcCwgZGlyUGF0aCk7XG5cbiAgY29uc3QgZm9sZGVyQ2xlYW51cCA9IGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBkaXJuYW1lKHBhdGgpKTtcblxuICBhd2FpdCBjcmVhdGVGb2xkZXJTYWZlKGFwcCwgcGF0aCk7XG5cbiAgZm9sZGVyID0gYXBwLnZhdWx0LmdldEZvbGRlckJ5UGF0aChwYXRoKSE7XG5cbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZvbGRlci5kZWxldGVkKSB7XG4gICAgICBhd2FpdCBhcHAudmF1bHQuZGVsZXRlKGZvbGRlciwgdHJ1ZSk7XG4gICAg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
263
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuL1ZhdWx0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19pbXBvcnRfbWV0YV91cmwgPSBnbG9iYWxUaGlzW1wiaW1wb3J0Lm1ldGEudXJsXCJdID8/ICgoKT0+e2NvbnN0IG5vcm1hbGl6ZWRQYXRoPV9fZmlsZW5hbWUucmVwbGFjZSgvXFxcXC9nLFwiL1wiKTtjb25zdCB3aW5kb3dzRHJpdmVMZXR0ZXJNYXRjaD0vXihbYS16QS1aXSk6Ly5leGVjKG5vcm1hbGl6ZWRQYXRoKTtsZXQgcGF0aD1ub3JtYWxpemVkUGF0aDtpZih3aW5kb3dzRHJpdmVMZXR0ZXJNYXRjaCl7cGF0aD1gLyR7d2luZG93c0RyaXZlTGV0dGVyTWF0Y2hbMV0udG9VcHBlckNhc2UoKX06JHtub3JtYWxpemVkUGF0aC5zbGljZSgyKX1gfWNvbnN0IGVuY29kZWRQYXRoPWVuY29kZVVSSUNvbXBvbmVudChwYXRoKS5yZXBsYWNlKC8lMkYvZyxcIi9cIikucmVwbGFjZSgvJTNBL2csXCI6XCIpO3JldHVybiBuZXcgVVJMKGBmaWxlOi8vJHtlbmNvZGVkUGF0aH1gKX0pKCk7XG52YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1tcInByb2Nlc3NcIl0gPz8ge1xuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gVmF1bHRcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggdGhlIE9ic2lkaWFuIFZhdWx0LlxuICovXG5cbmltcG9ydCB0eXBlIHsgTGlzdGVkRmlsZXMgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQge1xuICBBcHAsXG4gIE5vdGljZSxcbiAgVEZpbGUsXG4gIFRGb2xkZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFJldHJ5T3B0aW9ucyB9IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IHJldHJ5V2l0aFRpbWVvdXQgfSBmcm9tICcuLi9Bc3luYy50cyc7XG5pbXBvcnQge1xuICBwcmludEVycm9yLFxuICB0aHJvd0V4cHJlc3Npb25cbn0gZnJvbSAnLi4vRXJyb3IudHMnO1xuaW1wb3J0IHtcbiAgZGVlcEVxdWFsLFxuICB0b0pzb25cbn0gZnJvbSAnLi4vT2JqZWN0LnRzJztcbmltcG9ydCB7IGRpcm5hbWUgfSBmcm9tICcuLi9QYXRoLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL1ZhbHVlUHJvdmlkZXIudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi4vVmFsdWVQcm92aWRlci50cyc7XG5pbXBvcnQgeyBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZSB9IGZyb20gJy4vTWV0YWRhdGFDYWNoZS50cyc7XG5pbXBvcnQgeyBnZXRQYXRoIH0gZnJvbSAnLi9UQWJzdHJhY3RGaWxlLnRzJztcbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vVEZpbGUudHMnO1xuaW1wb3J0IHsgZ2V0RmlsZSB9IGZyb20gJy4vVEZpbGUudHMnO1xuaW1wb3J0IHR5cGUgeyBQYXRoT3JGb2xkZXIgfSBmcm9tICcuL1RGb2xkZXIudHMnO1xuaW1wb3J0IHsgZ2V0Rm9sZGVyT3JOdWxsIH0gZnJvbSAnLi9URm9sZGVyLnRzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZmlsZSBjaGFuZ2UgaW4gdGhlIFZhdWx0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVDaGFuZ2Uge1xuICAvKipcbiAgICogVGhlIHN0YXJ0IGluZGV4IG9mIHRoZSBjaGFuZ2UgaW4gdGhlIGZpbGUgY29udGVudC5cbiAgICovXG4gIHN0YXJ0SW5kZXg6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGVuZCBpbmRleCBvZiB0aGUgY2hhbmdlIGluIHRoZSBmaWxlIGNvbnRlbnQuXG4gICAqL1xuICBlbmRJbmRleDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgb2xkIGNvbnRlbnQgdGhhdCB3aWxsIGJlIHJlcGxhY2VkLlxuICAgKi9cbiAgb2xkQ29udGVudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmV3IGNvbnRlbnQgdG8gcmVwbGFjZSB0aGUgb2xkIGNvbnRlbnQuXG4gICAqL1xuICBuZXdDb250ZW50OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGFuIGFycmF5IG9mIE1hcmtkb3duIGZpbGVzIGZyb20gdGhlIGFwcCdzIHZhdWx0IGFuZCBzb3J0cyB0aGVtIGFscGhhYmV0aWNhbGx5IGJ5IHRoZWlyIGZpbGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIE1hcmtkb3duIGZpbGVzIHNvcnRlZCBieSBmaWxlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXJrZG93bkZpbGVzU29ydGVkKGFwcDogQXBwKTogVEZpbGVbXSB7XG4gIHJldHVybiBhcHAudmF1bHQuZ2V0TWFya2Rvd25GaWxlcygpLnNvcnQoKGEsIGIpID0+IGEucGF0aC5sb2NhbGVDb21wYXJlKGIucGF0aCkpO1xufVxuXG4vKipcbiAqIFByb2Nlc3NlcyBhIGZpbGUgd2l0aCByZXRyeSBsb2dpYywgdXBkYXRpbmcgaXRzIGNvbnRlbnQgYmFzZWQgb24gYSBwcm92aWRlZCB2YWx1ZSBvciBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLCB0eXBpY2FsbHkgdXNlZCBmb3IgYWNjZXNzaW5nIHRoZSB2YXVsdC5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlIC0gVGhlIHBhdGggb3IgZmlsZSB0byBiZSBwcm9jZXNzZWQuIEl0IGNhbiBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhdGggb3IgYSBmaWxlIG9iamVjdC5cbiAqIEBwYXJhbSBuZXdDb250ZW50UHJvdmlkZXIgLSBBIHZhbHVlIHByb3ZpZGVyIHRoYXQgcmV0dXJucyB0aGUgbmV3IGNvbnRlbnQgYmFzZWQgb24gdGhlIG9sZCBjb250ZW50IG9mIHRoZSBmaWxlLlxuICogSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgb2xkIGNvbnRlbnQgYXMgYW4gYXJndW1lbnQgYW5kIHJldHVybnMgdGhlIG5ldyBjb250ZW50LlxuICogSWYgZnVuY3Rpb24gaXMgcHJvdmlkZWQsIGl0IHNob3VsZCByZXR1cm4gYG51bGxgIGlmIHRoZSBwcm9jZXNzIHNob3VsZCBiZSByZXRyaWVkLlxuICogQHBhcmFtIHJldHJ5T3B0aW9ucyAtIE9wdGlvbmFsLiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHJldHJ5aW5nIHRoZSBwcm9jZXNzLiBJZiBub3QgcHJvdmlkZWQsIGRlZmF1bHQgb3B0aW9ucyB3aWxsIGJlIHVzZWQuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcHJvY2VzcyBpcyBjb21wbGV0ZS5cbiAqXG4gKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHByb2Nlc3MgZmFpbHMgYWZ0ZXIgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgcmV0cmllcyBvciB0aW1lb3V0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1dpdGhSZXRyeShhcHA6IEFwcCwgcGF0aE9yRmlsZTogUGF0aE9yRmlsZSwgbmV3Q29udGVudFByb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPHN0cmluZyB8IG51bGwsIFtzdHJpbmddPiwgcmV0cnlPcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBmaWxlID0gZ2V0RmlsZShhcHAsIHBhdGhPckZpbGUpO1xuICBjb25zdCBERUZBVUxUX1JFVFJZX09QVElPTlM6IFBhcnRpYWw8UmV0cnlPcHRpb25zPiA9IHsgdGltZW91dEluTWlsbGlzZWNvbmRzOiA2MDAwMCB9O1xuICBjb25zdCBvdmVycmlkZGVuT3B0aW9uczogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0geyAuLi5ERUZBVUxUX1JFVFJZX09QVElPTlMsIC4uLnJldHJ5T3B0aW9ucyB9O1xuICBhd2FpdCByZXRyeVdpdGhUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBvbGRDb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIucmVhZChmaWxlLnBhdGgpO1xuICAgIGNvbnN0IG5ld0NvbnRlbnQgPSBhd2FpdCByZXNvbHZlVmFsdWUobmV3Q29udGVudFByb3ZpZGVyLCBvbGRDb250ZW50KTtcbiAgICBpZiAobmV3Q29udGVudCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgc3VjY2VzcyA9IHRydWU7XG4gICAgYXdhaXQgYXBwLnZhdWx0LnByb2Nlc3MoZmlsZSwgKGNvbnRlbnQpID0+IHtcbiAgICAgIGlmIChjb250ZW50ICE9PSBvbGRDb250ZW50KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgQ29udGVudCBvZiAke2ZpbGUucGF0aH0gaGFzIGNoYW5nZWQgc2luY2UgaXQgd2FzIHJlYWQuIFJldHJ5aW5nLi4uYCk7XG4gICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdDb250ZW50O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH0sIG92ZXJyaWRkZW5PcHRpb25zKTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgc2VyaWVzIG9mIGZpbGUgY2hhbmdlcyB0byB0aGUgc3BlY2lmaWVkIGZpbGUgb3IgcGF0aCB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2Ugd2hlcmUgdGhlIGZpbGUgY2hhbmdlcyB3aWxsIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gcGF0aE9yRmlsZSAtIFRoZSBwYXRoIG9yIGZpbGUgdG8gd2hpY2ggdGhlIGNoYW5nZXMgc2hvdWxkIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0gY2hhbmdlc1Byb3ZpZGVyIC0gQSBwcm92aWRlciB0aGF0IHJldHVybnMgYW4gYXJyYXkgb2YgZmlsZSBjaGFuZ2VzIHRvIGFwcGx5LlxuICogQHBhcmFtIHJldHJ5T3B0aW9ucyAtIE9wdGlvbmFsIHNldHRpbmdzIHRoYXQgZGV0ZXJtaW5lIGhvdyB0aGUgb3BlcmF0aW9uIHNob3VsZCByZXRyeSBvbiBmYWlsdXJlLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGUgY2hhbmdlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseUZpbGVDaGFuZ2VzKGFwcDogQXBwLCBwYXRoT3JGaWxlOiBQYXRoT3JGaWxlLCBjaGFuZ2VzUHJvdmlkZXI6IFZhbHVlUHJvdmlkZXI8RmlsZUNoYW5nZVtdPiwgcmV0cnlPcHRpb25zOiBQYXJ0aWFsPFJldHJ5T3B0aW9ucz4gPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBERUZBVUxUX1JFVFJZX09QVElPTlM6IFBhcnRpYWw8UmV0cnlPcHRpb25zPiA9IHsgdGltZW91dEluTWlsbGlzZWNvbmRzOiA2MDAwMCB9O1xuICBjb25zdCBvdmVycmlkZGVuT3B0aW9uczogUGFydGlhbDxSZXRyeU9wdGlvbnM+ID0geyAuLi5ERUZBVUxUX1JFVFJZX09QVElPTlMsIC4uLnJldHJ5T3B0aW9ucyB9O1xuICBhd2FpdCBwcm9jZXNzV2l0aFJldHJ5KGFwcCwgcGF0aE9yRmlsZSwgYXN5bmMgKGNvbnRlbnQpID0+IHtcbiAgICBsZXQgY2hhbmdlcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjaGFuZ2VzUHJvdmlkZXIpO1xuXG4gICAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgICAgY29uc3QgYWN0dWFsQ29udGVudCA9IGNvbnRlbnQuc2xpY2UoY2hhbmdlLnN0YXJ0SW5kZXgsIGNoYW5nZS5lbmRJbmRleCk7XG4gICAgICBpZiAoYWN0dWFsQ29udGVudCAhPT0gY2hhbmdlLm9sZENvbnRlbnQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBDb250ZW50IG1pc21hdGNoIGF0ICR7Y2hhbmdlLnN0YXJ0SW5kZXgudG9TdHJpbmcoKX0tJHtjaGFuZ2UuZW5kSW5kZXgudG9TdHJpbmcoKX0gaW4gJHtnZXRQYXRoKHBhdGhPckZpbGUpfTpcXG5FeHBlY3RlZDogJHtjaGFuZ2Uub2xkQ29udGVudH1cXG5BY3R1YWw6ICR7YWN0dWFsQ29udGVudH1gKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlcy5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0SW5kZXggLSBiLnN0YXJ0SW5kZXgpO1xuXG4gICAgLy8gQlVHOiBodHRwczovL2ZvcnVtLm9ic2lkaWFuLm1kL3QvYnVnLWR1cGxpY2F0ZWQtbGlua3MtaW4tbWV0YWRhdGFjYWNoZS1pbnNpZGUtZm9vdG5vdGVzLzg1NTUxXG4gICAgY2hhbmdlcyA9IGNoYW5nZXMuZmlsdGVyKChjaGFuZ2UsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gIWRlZXBFcXVhbChjaGFuZ2UsIGNoYW5nZXNbaW5kZXggLSAxXSk7XG4gICAgfSk7XG5cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IGNoYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoYW5nZSA9IGNoYW5nZXNbaV0gPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcignQ2hhbmdlIG5vdCBmb3VuZCcpKTtcbiAgICAgIGNvbnN0IHByZXZpb3VzQ2hhbmdlID0gY2hhbmdlc1tpIC0gMV0gPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcignUHJldmlvdXMgY2hhbmdlIG5vdCBmb3VuZCcpKTtcbiAgICAgIGlmIChwcmV2aW91c0NoYW5nZS5lbmRJbmRleCA+IGNoYW5nZS5zdGFydEluZGV4KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgT3ZlcmxhcHBpbmcgY2hhbmdlczpcXG4ke3RvSnNvbihwcmV2aW91c0NoYW5nZSl9XFxuJHt0b0pzb24oY2hhbmdlKX1gKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IG5ld0NvbnRlbnQgPSAnJztcbiAgICBsZXQgbGFzdEluZGV4ID0gMDtcblxuICAgIGZvciAoY29uc3QgY2hhbmdlIG9mIGNoYW5nZXMpIHtcbiAgICAgIG5ld0NvbnRlbnQgKz0gY29udGVudC5zbGljZShsYXN0SW5kZXgsIGNoYW5nZS5zdGFydEluZGV4KTtcbiAgICAgIG5ld0NvbnRlbnQgKz0gY2hhbmdlLm5ld0NvbnRlbnQ7XG4gICAgICBsYXN0SW5kZXggPSBjaGFuZ2UuZW5kSW5kZXg7XG4gICAgfVxuXG4gICAgbmV3Q29udGVudCArPSBjb250ZW50LnNsaWNlKGxhc3RJbmRleCk7XG4gICAgcmV0dXJuIG5ld0NvbnRlbnQ7XG4gIH0sIG92ZXJyaWRkZW5PcHRpb25zKTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGEgZm9sZGVyIGFuZCBpdHMgY29udGVudHMgc2FmZWx5IGZyb20gdGhlIHZhdWx0LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gKiBAcGFyYW0gZm9sZGVyUGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gYmUgcmVtb3ZlZC5cbiAqIEBwYXJhbSByZW1vdmVkTm90ZVBhdGggLSBPcHRpb25hbC4gVGhlIHBhdGggb2YgdGhlIG5vdGUgdGhhdCB0cmlnZ2VyZWQgdGhlIHJlbW92YWwuXG4gKiBAcGFyYW0gc2hvdWxkUmVwb3J0VXNlZEF0dGFjaG1lbnRzIC0gT3B0aW9uYWwuIElmIGB0cnVlYCwgYSBub3RpY2Ugd2lsbCBiZSBzaG93biBmb3IgZWFjaCBhdHRhY2htZW50IHRoYXQgaXMgc3RpbGwgdXNlZCBieSBvdGhlciBub3Rlcy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHJlbW92YWwgd2FzIHN1Y2Nlc3NmdWwuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW1vdmVGb2xkZXJTYWZlKGFwcDogQXBwLCBmb2xkZXJQYXRoOiBzdHJpbmcsIHJlbW92ZWROb3RlUGF0aD86IHN0cmluZywgc2hvdWxkUmVwb3J0VXNlZEF0dGFjaG1lbnRzPzogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBmb2xkZXIgPSBhcHAudmF1bHQuZ2V0Rm9sZGVyQnlQYXRoKGZvbGRlclBhdGgpO1xuXG4gIGlmICghZm9sZGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbGV0IGNhblJlbW92ZSA9IHRydWU7XG5cbiAgZm9yIChjb25zdCBjaGlsZCBvZiBmb2xkZXIuY2hpbGRyZW4pIHtcbiAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgY29uc3QgYmFja2xpbmtzID0gYXdhaXQgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUoYXBwLCBjaGlsZCk7XG4gICAgICBpZiAocmVtb3ZlZE5vdGVQYXRoKSB7XG4gICAgICAgIGJhY2tsaW5rcy5yZW1vdmVLZXkocmVtb3ZlZE5vdGVQYXRoKTtcbiAgICAgIH1cbiAgICAgIGlmIChiYWNrbGlua3MuY291bnQoKSAhPT0gMCkge1xuICAgICAgICBpZiAoc2hvdWxkUmVwb3J0VXNlZEF0dGFjaG1lbnRzKSB7XG4gICAgICAgICAgbmV3IE5vdGljZShgQXR0YWNobWVudCAke2NoaWxkLnBhdGh9IGlzIHN0aWxsIHVzZWQgYnkgb3RoZXIgbm90ZXMuIEl0IHdpbGwgbm90IGJlIGRlbGV0ZWQuYCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FuUmVtb3ZlID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGFwcC52YXVsdC5kZWxldGUoY2hpbGQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhjaGlsZC5wYXRoKSkge1xuICAgICAgICAgICAgcHJpbnRFcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBkZWxldGUgJHtjaGlsZC5wYXRofWAsIHsgY2F1c2U6IGUgfSkpO1xuICAgICAgICAgICAgY2FuUmVtb3ZlID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjaGlsZCBpbnN0YW5jZW9mIFRGb2xkZXIpIHtcbiAgICAgIGNhblJlbW92ZSAmJj0gYXdhaXQgcmVtb3ZlRm9sZGVyU2FmZShhcHAsIGNoaWxkLnBhdGgsIHJlbW92ZWROb3RlUGF0aCwgc2hvdWxkUmVwb3J0VXNlZEF0dGFjaG1lbnRzKTtcbiAgICB9XG4gIH1cblxuICBpZiAoY2FuUmVtb3ZlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGFwcC52YXVsdC5kZWxldGUoZm9sZGVyLCB0cnVlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIuZXhpc3RzKGZvbGRlci5wYXRoKSkge1xuICAgICAgICBwcmludEVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIGRlbGV0ZSAke2ZvbGRlci5wYXRofWAsIHsgY2F1c2U6IGUgfSkpO1xuICAgICAgICBjYW5SZW1vdmUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2FuUmVtb3ZlO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmb2xkZXIgc2FmZWx5IGluIHRoZSBzcGVjaWZpZWQgcGF0aC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZvbGRlciB3YXMgY3JlYXRlZC5cbiAqIEB0aHJvd3MgSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGNyZWF0aW5nIHRoZSBmb2xkZXIgYW5kIGl0IHN0aWxsIGRvZXNuJ3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVGb2xkZXJTYWZlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgaWYgKGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhwYXRoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIubWtkaXIocGF0aCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhwYXRoKSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG4vKipcbiAqIFNhZmVseSBsaXN0cyB0aGUgZmlsZXMgYW5kIGZvbGRlcnMgYXQgdGhlIHNwZWNpZmllZCBwYXRoIGluIHRoZSB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBsaXN0IGZpbGVzIGFuZCBmb2xkZXJzIGZyb20uXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGBMaXN0ZWRGaWxlc2Agb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGxpc3RlZCBmaWxlcyBhbmQgZm9sZGVycy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNhZmVMaXN0KGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPExpc3RlZEZpbGVzPiB7XG4gIGNvbnN0IEVNUFRZID0geyBmaWxlczogW10sIGZvbGRlcnM6IFtdIH07XG4gIGlmICghKGF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpKSB7XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIubGlzdChwYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZXMgZW1wdHkgZm9sZGVyIGhpZXJhcmNoeSBzdGFydGluZyBmcm9tIHRoZSBnaXZlbiBmb2xkZXIuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGb2xkZXIgLSBUaGUgZm9sZGVyIHRvIHN0YXJ0IHJlbW92aW5nIGVtcHR5IGhpZXJhcmNoeSBmcm9tLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZW1wdHkgaGllcmFyY2h5IGlzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW1vdmVFbXB0eUZvbGRlckhpZXJhcmNoeShhcHA6IEFwcCwgcGF0aE9yRm9sZGVyOiBQYXRoT3JGb2xkZXIgfCBudWxsKTogUHJvbWlzZTx2b2lkPiB7XG4gIGxldCBmb2xkZXIgPSBnZXRGb2xkZXJPck51bGwoYXBwLCBwYXRoT3JGb2xkZXIpO1xuXG4gIHdoaWxlIChmb2xkZXIpIHtcbiAgICBpZiAoZm9sZGVyLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGFyZW50ID0gZm9sZGVyLnBhcmVudDtcbiAgICBhd2FpdCByZW1vdmVGb2xkZXJTYWZlKGFwcCwgZm9sZGVyLnBhdGgpO1xuICAgIGZvbGRlciA9IHBhcmVudDtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZmlsZSBpbiB0aGUgdmF1bHQgd2l0aCBwYXJlbnQgZm9sZGVycyBpZiBuZWVkZWQuXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBjcmVhdGUuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGNhbGxlZCB0byBkZWxldGUgdGhlIHRlbXBvcmFyeSBmaWxlIGFuZCBhbGwgaXRzIGNyZWF0ZWQgcGFyZW50cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRlbXBGaWxlKGFwcDogQXBwLCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPCgpID0+IFByb21pc2U8dm9pZD4+IHtcbiAgbGV0IGZpbGUgPSBhcHAudmF1bHQuZ2V0RmlsZUJ5UGF0aChwYXRoKTtcbiAgaWYgKGZpbGUpIHtcbiAgICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gRG8gbm90aGluZ1xuICAgIH07XG4gIH1cblxuICBjb25zdCBmb2xkZXJDbGVhbnVwID0gYXdhaXQgY3JlYXRlVGVtcEZvbGRlcihhcHAsIGRpcm5hbWUocGF0aCkpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZShwYXRoLCAnJyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIWF3YWl0IGFwcC52YXVsdC5leGlzdHMocGF0aCkpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgZmlsZSA9IGFwcC52YXVsdC5nZXRGaWxlQnlQYXRoKHBhdGgpID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoJ0ZpbGUgbm90IGZvdW5kJykpO1xuXG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFmaWxlLmRlbGV0ZWQpIHtcbiAgICAgIGF3YWl0IGFwcC52YXVsdC5kZWxldGUoZmlsZSwgdHJ1ZSk7XG4gICAgfVxuICAgIGF3YWl0IGZvbGRlckNsZWFudXAoKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdGVtcG9yYXJ5IGZvbGRlciBpbiB0aGUgdmF1bHQgd2l0aCBwYXJlbnQgZm9sZGVycyBpZiBuZWVkZWQuXG4gKiBAcGFyYW0gYXBwIC0gVGhlIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgZm9sZGVyIHRvIGNyZWF0ZS5cbiAqIEByZXR1cm5zIC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgdG8gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgZm9sZGVyIGFuZCBhbGwgaXRzIGNyZWF0ZWQgcGFyZW50cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRlbXBGb2xkZXIoYXBwOiBBcHAsIHBhdGg6IHN0cmluZyk6IFByb21pc2U8KCkgPT4gUHJvbWlzZTx2b2lkPj4ge1xuICBsZXQgZm9sZGVyID0gYXBwLnZhdWx0LmdldEZvbGRlckJ5UGF0aChwYXRoKTtcbiAgaWYgKGZvbGRlcikge1xuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBEbyBub3RoaW5nXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGRpclBhdGggPSBkaXJuYW1lKHBhdGgpO1xuICBhd2FpdCBjcmVhdGVUZW1wRm9sZGVyKGFwcCwgZGlyUGF0aCk7XG5cbiAgY29uc3QgZm9sZGVyQ2xlYW51cCA9IGF3YWl0IGNyZWF0ZVRlbXBGb2xkZXIoYXBwLCBkaXJuYW1lKHBhdGgpKTtcblxuICBhd2FpdCBjcmVhdGVGb2xkZXJTYWZlKGFwcCwgcGF0aCk7XG5cbiAgZm9sZGVyID0gYXBwLnZhdWx0LmdldEZvbGRlckJ5UGF0aChwYXRoKSA/PyB0aHJvd0V4cHJlc3Npb24obmV3IEVycm9yKCdGb2xkZXIgbm90IGZvdW5kJykpO1xuXG4gIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFmb2xkZXIuZGVsZXRlZCkge1xuICAgICAgYXdhaXQgYXBwLnZhdWx0LmRlbGV0ZShmb2xkZXIsIHRydWUpO1xuICAgIH1cbiAgICBhd2FpdCBmb2xkZXJDbGVhbnVwKCk7XG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBWUEsc0JBS087QUFHUCxtQkFBaUM7QUFDakMsbUJBR087QUFDUCxvQkFHTztBQUNQLGtCQUF3QjtBQUV4QiwyQkFBNkI7QUFDN0IsMkJBQXdDO0FBQ3hDLDJCQUF3QjtBQUV4QixtQkFBd0I7QUFFeEIscUJBQWdDO0FBckNoQyxJQUFJLG9CQUFvQixXQUFXLGlCQUFpQixNQUFNLE1BQUk7QUFBQyxRQUFNLGlCQUFlLFdBQVcsUUFBUSxPQUFNLEdBQUc7QUFBRSxRQUFNLDBCQUF3QixlQUFlLEtBQUssY0FBYztBQUFFLE1BQUksT0FBSztBQUFlLE1BQUcseUJBQXdCO0FBQUMsV0FBSyxJQUFJLHdCQUF3QixDQUFDLEVBQUUsWUFBWSxDQUFDLElBQUksZUFBZSxNQUFNLENBQUMsQ0FBQztBQUFBLEVBQUU7QUFBQyxRQUFNLGNBQVksbUJBQW1CLElBQUksRUFBRSxRQUFRLFFBQU8sR0FBRyxFQUFFLFFBQVEsUUFBTyxHQUFHO0FBQUUsU0FBTyxJQUFJLElBQUksVUFBVSxXQUFXLEVBQUU7QUFBQyxHQUFHO0FBQ3BiLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZ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