obsidian-dev-utils 85.1.0 → 86.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/@types/obsidian-integration-testing/package.json +4 -0
  2. package/CHANGELOG.md +20 -0
  3. package/README.md +14 -8
  4. package/dist/lib/cjs/@types/obsidian-integration-testing.d.cts +18 -0
  5. package/dist/lib/cjs/__merged.cjs +1291 -0
  6. package/dist/lib/cjs/__merged.d.cts +165 -0
  7. package/dist/lib/cjs/abort-controller.cjs +3 -4
  8. package/dist/lib/cjs/async.cjs +13 -7
  9. package/dist/lib/cjs/async.d.cts +6 -0
  10. package/dist/lib/cjs/disposable.cjs +224 -3
  11. package/dist/lib/cjs/disposable.d.cts +222 -2
  12. package/dist/lib/cjs/error.cjs +41 -3
  13. package/dist/lib/cjs/error.d.cts +50 -1
  14. package/dist/lib/cjs/generated-during-build.cjs +2 -2
  15. package/dist/lib/cjs/index.cjs +4 -1
  16. package/dist/lib/cjs/index.d.cts +1 -0
  17. package/dist/lib/cjs/obsidian/attachment-path.cjs +3 -3
  18. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +27 -11
  19. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.d.cts +14 -9
  20. package/dist/lib/cjs/obsidian/command-handlers/index.cjs +4 -1
  21. package/dist/lib/cjs/obsidian/command-handlers/index.d.cts +1 -0
  22. package/dist/lib/cjs/obsidian/command-handlers/open-demo-vault-command-handler.cjs +195 -0
  23. package/dist/lib/cjs/obsidian/command-handlers/open-demo-vault-command-handler.d.cts +65 -0
  24. package/dist/lib/cjs/obsidian/community-plugins.cjs +156 -0
  25. package/dist/lib/cjs/obsidian/community-plugins.d.cts +22 -0
  26. package/dist/lib/cjs/obsidian/components/disposable-component.cjs +8 -8
  27. package/dist/lib/cjs/obsidian/components/disposable-component.d.cts +9 -3
  28. package/dist/lib/cjs/obsidian/components/monkey-around-component.cjs +17 -2
  29. package/dist/lib/cjs/obsidian/components/monkey-around-component.d.cts +17 -0
  30. package/dist/lib/cjs/obsidian/components/plugin-notice-component.cjs +161 -22
  31. package/dist/lib/cjs/obsidian/components/plugin-notice-component.d.cts +81 -8
  32. package/dist/lib/cjs/obsidian/css-class.cjs +4 -1
  33. package/dist/lib/cjs/obsidian/css-class.d.cts +13 -0
  34. package/dist/lib/cjs/obsidian/desktop-demo-vault-opener.cjs +239 -0
  35. package/dist/lib/cjs/obsidian/desktop-demo-vault-opener.d.cts +45 -0
  36. package/dist/lib/cjs/obsidian/desktop-trusted-input.cjs +215 -0
  37. package/dist/lib/cjs/obsidian/desktop-trusted-input.d.cts +135 -0
  38. package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +3 -1
  39. package/dist/lib/cjs/obsidian/i18n/locales/en.d.cts +2 -0
  40. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.d.cts +2 -0
  41. package/dist/lib/cjs/obsidian/index.cjs +10 -1
  42. package/dist/lib/cjs/obsidian/index.d.cts +3 -0
  43. package/dist/lib/cjs/obsidian/link.cjs +2 -2
  44. package/dist/lib/cjs/obsidian/modals/index.cjs +4 -1
  45. package/dist/lib/cjs/obsidian/modals/index.d.cts +1 -0
  46. package/dist/lib/cjs/obsidian/modals/minimizable-modal.cjs +15 -2
  47. package/dist/lib/cjs/obsidian/modals/minimizable-modal.d.cts +18 -3
  48. package/dist/lib/cjs/obsidian/modals/select-option.cjs +182 -0
  49. package/dist/lib/cjs/obsidian/modals/select-option.d.cts +65 -0
  50. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +4 -1
  51. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.d.cts +6 -0
  52. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +50 -3
  53. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +17 -0
  54. package/dist/lib/cjs/obsidian/workspace.cjs +8 -1
  55. package/dist/lib/cjs/obsidian/workspace.d.cts +10 -0
  56. package/dist/lib/cjs/path.cjs +4 -4
  57. package/dist/lib/cjs/path.d.cts +1 -1
  58. package/dist/lib/cjs/script-utils/demo-vault.cjs +177 -0
  59. package/dist/lib/cjs/script-utils/demo-vault.d.cts +23 -0
  60. package/dist/lib/cjs/script-utils/exec.cjs +75 -34
  61. package/dist/lib/cjs/script-utils/exec.d.cts +34 -0
  62. package/dist/lib/cjs/script-utils/index.cjs +9 -3
  63. package/dist/lib/cjs/script-utils/index.d.cts +2 -0
  64. package/dist/lib/cjs/script-utils/linters/eslint-no-restricted-syntax.cjs +1 -5
  65. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +5 -1
  66. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.d.cts +8 -0
  67. package/dist/lib/cjs/script-utils/version.cjs +8 -1
  68. package/dist/lib/cjs/script-utils/version.d.cts +8 -0
  69. package/dist/lib/cjs/script-utils/warnings-as-errors.cjs +157 -0
  70. package/dist/lib/cjs/script-utils/warnings-as-errors.d.cts +27 -0
  71. package/dist/lib/cjs/setup.cjs +75 -4
  72. package/dist/lib/cjs/setup.d.cts +29 -7
  73. package/dist/lib/cjs/string.cjs +7 -4
  74. package/dist/lib/cjs/string.d.cts +11 -1
  75. package/dist/lib/esm/@types/obsidian-integration-testing.d.mts +18 -0
  76. package/dist/lib/esm/__merged.d.mts +165 -0
  77. package/dist/lib/esm/__merged.mjs +1134 -0
  78. package/dist/lib/esm/abort-controller.mjs +7 -5
  79. package/dist/lib/esm/async.d.mts +6 -0
  80. package/dist/lib/esm/async.mjs +13 -7
  81. package/dist/lib/esm/disposable.d.mts +222 -2
  82. package/dist/lib/esm/disposable.mjs +215 -2
  83. package/dist/lib/esm/error.d.mts +50 -1
  84. package/dist/lib/esm/error.mjs +41 -4
  85. package/dist/lib/esm/generated-during-build.mjs +2 -2
  86. package/dist/lib/esm/index.d.mts +1 -0
  87. package/dist/lib/esm/index.mjs +3 -1
  88. package/dist/lib/esm/obsidian/attachment-path.mjs +4 -4
  89. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.d.mts +14 -9
  90. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +31 -11
  91. package/dist/lib/esm/obsidian/command-handlers/index.d.mts +1 -0
  92. package/dist/lib/esm/obsidian/command-handlers/index.mjs +3 -1
  93. package/dist/lib/esm/obsidian/command-handlers/open-demo-vault-command-handler.d.mts +65 -0
  94. package/dist/lib/esm/obsidian/command-handlers/open-demo-vault-command-handler.mjs +77 -0
  95. package/dist/lib/esm/obsidian/community-plugins.d.mts +22 -0
  96. package/dist/lib/esm/obsidian/community-plugins.mjs +48 -0
  97. package/dist/lib/esm/obsidian/components/disposable-component.d.mts +9 -3
  98. package/dist/lib/esm/obsidian/components/disposable-component.mjs +8 -8
  99. package/dist/lib/esm/obsidian/components/monkey-around-component.d.mts +17 -0
  100. package/dist/lib/esm/obsidian/components/monkey-around-component.mjs +17 -2
  101. package/dist/lib/esm/obsidian/components/plugin-notice-component.d.mts +81 -8
  102. package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +163 -23
  103. package/dist/lib/esm/obsidian/css-class.d.mts +13 -0
  104. package/dist/lib/esm/obsidian/css-class.mjs +4 -1
  105. package/dist/lib/esm/obsidian/desktop-demo-vault-opener.d.mts +45 -0
  106. package/dist/lib/esm/obsidian/desktop-demo-vault-opener.mjs +121 -0
  107. package/dist/lib/esm/obsidian/desktop-trusted-input.d.mts +135 -0
  108. package/dist/lib/esm/obsidian/desktop-trusted-input.mjs +103 -0
  109. package/dist/lib/esm/obsidian/i18n/locales/en.d.mts +2 -0
  110. package/dist/lib/esm/obsidian/i18n/locales/en.mjs +3 -1
  111. package/dist/lib/esm/obsidian/i18n/locales/translations-map.d.mts +2 -0
  112. package/dist/lib/esm/obsidian/index.d.mts +3 -0
  113. package/dist/lib/esm/obsidian/index.mjs +7 -1
  114. package/dist/lib/esm/obsidian/link.mjs +3 -3
  115. package/dist/lib/esm/obsidian/modals/index.d.mts +1 -0
  116. package/dist/lib/esm/obsidian/modals/index.mjs +3 -1
  117. package/dist/lib/esm/obsidian/modals/minimizable-modal.d.mts +18 -3
  118. package/dist/lib/esm/obsidian/modals/minimizable-modal.mjs +17 -3
  119. package/dist/lib/esm/obsidian/modals/select-option.d.mts +65 -0
  120. package/dist/lib/esm/obsidian/modals/select-option.mjs +77 -0
  121. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.d.mts +6 -0
  122. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +4 -1
  123. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +17 -0
  124. package/dist/lib/esm/obsidian/plugin/plugin.mjs +50 -3
  125. package/dist/lib/esm/obsidian/workspace.d.mts +10 -0
  126. package/dist/lib/esm/obsidian/workspace.mjs +7 -1
  127. package/dist/lib/esm/path.d.mts +1 -1
  128. package/dist/lib/esm/path.mjs +3 -3
  129. package/dist/lib/esm/script-utils/demo-vault.d.mts +23 -0
  130. package/dist/lib/esm/script-utils/demo-vault.mjs +63 -0
  131. package/dist/lib/esm/script-utils/exec.d.mts +34 -0
  132. package/dist/lib/esm/script-utils/exec.mjs +73 -34
  133. package/dist/lib/esm/script-utils/index.d.mts +2 -0
  134. package/dist/lib/esm/script-utils/index.mjs +6 -2
  135. package/dist/lib/esm/script-utils/linters/eslint-no-restricted-syntax.mjs +1 -5
  136. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.d.mts +8 -0
  137. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +5 -1
  138. package/dist/lib/esm/script-utils/version.d.mts +8 -0
  139. package/dist/lib/esm/script-utils/version.mjs +8 -1
  140. package/dist/lib/esm/script-utils/warnings-as-errors.d.mts +27 -0
  141. package/dist/lib/esm/script-utils/warnings-as-errors.mjs +38 -0
  142. package/dist/lib/esm/setup.d.mts +29 -7
  143. package/dist/lib/esm/setup.mjs +78 -4
  144. package/dist/lib/esm/string.d.mts +11 -1
  145. package/dist/lib/esm/string.mjs +5 -3
  146. package/dist/styles.css +33 -3
  147. package/obsidian/command-handlers/open-demo-vault-command-handler/package.json +6 -0
  148. package/obsidian/community-plugins/package.json +6 -0
  149. package/obsidian/desktop-demo-vault-opener/package.json +6 -0
  150. package/obsidian/desktop-trusted-input/package.json +6 -0
  151. package/obsidian/modals/select-option/package.json +6 -0
  152. package/package.json +22 -9
  153. package/script-utils/demo-vault/package.json +6 -0
  154. package/script-utils/warnings-as-errors/package.json +6 -0
  155. package/dist/dev/main.js +0 -32702
  156. package/dist/dev/manifest.json +0 -9
  157. /package/obsidian/@types/{Dataview → dataview}/api/data-array/package.json +0 -0
  158. /package/obsidian/@types/{Dataview → dataview}/api/extensions/package.json +0 -0
  159. /package/obsidian/@types/{Dataview → dataview}/api/inline-api/package.json +0 -0
  160. /package/obsidian/@types/{Dataview → dataview}/api/plugin-api/package.json +0 -0
  161. /package/obsidian/@types/{Dataview → dataview}/api/result/package.json +0 -0
  162. /package/obsidian/@types/{Dataview → dataview}/data-import/common/package.json +0 -0
  163. /package/obsidian/@types/{Dataview → dataview}/data-import/csv/package.json +0 -0
  164. /package/obsidian/@types/{Dataview → dataview}/data-import/inline-field/package.json +0 -0
  165. /package/obsidian/@types/{Dataview → dataview}/data-import/markdown-file/package.json +0 -0
  166. /package/obsidian/@types/{Dataview → dataview}/data-import/persister/package.json +0 -0
  167. /package/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-entry/package.json +0 -0
  168. /package/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-impl/package.json +0 -0
  169. /package/obsidian/@types/{Dataview → dataview}/data-import/web-worker/import-manager/package.json +0 -0
  170. /package/obsidian/@types/{Dataview → dataview}/data-index/index/package.json +0 -0
  171. /package/obsidian/@types/{Dataview → dataview}/data-index/package.json +0 -0
  172. /package/obsidian/@types/{Dataview → dataview}/data-index/resolver/package.json +0 -0
  173. /package/obsidian/@types/{Dataview → dataview}/data-index/source/package.json +0 -0
  174. /package/obsidian/@types/{Dataview → dataview}/data-model/markdown/package.json +0 -0
  175. /package/obsidian/@types/{Dataview → dataview}/data-model/serialized/markdown/package.json +0 -0
  176. /package/obsidian/@types/{Dataview → dataview}/data-model/transferable/package.json +0 -0
  177. /package/obsidian/@types/{Dataview → dataview}/data-model/value/package.json +0 -0
  178. /package/obsidian/@types/{Dataview → dataview}/expression/binaryop/package.json +0 -0
  179. /package/obsidian/@types/{Dataview → dataview}/expression/context/package.json +0 -0
  180. /package/obsidian/@types/{Dataview → dataview}/expression/field/package.json +0 -0
  181. /package/obsidian/@types/{Dataview → dataview}/expression/functions/package.json +0 -0
  182. /package/obsidian/@types/{Dataview → dataview}/expression/parse/package.json +0 -0
  183. /package/obsidian/@types/{Dataview → dataview}/index/package.json +0 -0
  184. /package/obsidian/@types/{Dataview → dataview}/main/package.json +0 -0
  185. /package/obsidian/@types/{Dataview → dataview}/package.json +0 -0
  186. /package/obsidian/@types/{Dataview → dataview}/query/engine/package.json +0 -0
  187. /package/obsidian/@types/{Dataview → dataview}/query/parse/package.json +0 -0
  188. /package/obsidian/@types/{Dataview → dataview}/query/query/package.json +0 -0
  189. /package/obsidian/@types/{Dataview → dataview}/settings/package.json +0 -0
  190. /package/obsidian/@types/{Dataview → dataview}/typings/obsidian-ex/package.json +0 -0
  191. /package/obsidian/@types/{Dataview → dataview}/typings/workers/package.json +0 -0
  192. /package/obsidian/@types/{Dataview → dataview}/ui/export/markdown/package.json +0 -0
  193. /package/obsidian/@types/{Dataview → dataview}/ui/lp-render/package.json +0 -0
  194. /package/obsidian/@types/{Dataview → dataview}/ui/markdown/package.json +0 -0
  195. /package/obsidian/@types/{Dataview → dataview}/ui/refreshable-view/package.json +0 -0
  196. /package/obsidian/@types/{Dataview → dataview}/ui/render/package.json +0 -0
  197. /package/obsidian/@types/{Dataview → dataview}/ui/views/calendar-view/package.json +0 -0
  198. /package/obsidian/@types/{Dataview → dataview}/ui/views/inline-field-live-preview/package.json +0 -0
  199. /package/obsidian/@types/{Dataview → dataview}/ui/views/inline-view/package.json +0 -0
  200. /package/obsidian/@types/{Dataview → dataview}/ui/views/js-view/package.json +0 -0
  201. /package/obsidian/@types/{Dataview → dataview}/ui/views/list-view/package.json +0 -0
  202. /package/obsidian/@types/{Dataview → dataview}/ui/views/table-view/package.json +0 -0
  203. /package/obsidian/@types/{Dataview → dataview}/ui/views/task-view/package.json +0 -0
  204. /package/obsidian/@types/{Dataview → dataview}/util/hash/package.json +0 -0
  205. /package/obsidian/@types/{Dataview → dataview}/util/locale/package.json +0 -0
  206. /package/obsidian/@types/{Dataview → dataview}/util/media/package.json +0 -0
  207. /package/obsidian/@types/{Dataview → dataview}/util/normalize/package.json +0 -0
  208. /package/obsidian/{App → app}/package.json +0 -0
  209. /package/obsidian/{Backlink → backlink}/package.json +0 -0
  210. /package/obsidian/{Callout → callout}/package.json +0 -0
  211. /package/obsidian/{Components → components}/abort-signal-component/package.json +0 -0
  212. /package/obsidian/{Components → components}/all-windows-event-component/package.json +0 -0
  213. /package/obsidian/{Components → components}/async-error-handler-component/package.json +0 -0
  214. /package/obsidian/{Components → components}/async-events-component/package.json +0 -0
  215. /package/obsidian/{Components → components}/case-insensitive-file-index-component/package.json +0 -0
  216. /package/obsidian/{Components → components}/component-ex/package.json +0 -0
  217. /package/obsidian/{Components → components}/console-debug-component/package.json +0 -0
  218. /package/obsidian/{Components → components}/disposable-component/package.json +0 -0
  219. /package/obsidian/{Components → components}/embed-extensions-component/package.json +0 -0
  220. /package/obsidian/{Components → components}/generate-markdown-link-default-params-component/package.json +0 -0
  221. /package/obsidian/{Components → components}/index/package.json +0 -0
  222. /package/obsidian/{Components → components}/layout-ready-component/package.json +0 -0
  223. /package/obsidian/{Components → components}/menu-event-registrar-component/package.json +0 -0
  224. /package/obsidian/{Components → components}/monkey-around-component/package.json +0 -0
  225. /package/obsidian/{Components → components}/package.json +0 -0
  226. /package/obsidian/{Components → components}/plugin-context-component/package.json +0 -0
  227. /package/obsidian/{Components → components}/plugin-notice-component/package.json +0 -0
  228. /package/obsidian/{Components → components}/plugin-settings-component/package.json +0 -0
  229. /package/obsidian/{Components → components}/plugin-settings-tab-component/package.json +0 -0
  230. /package/obsidian/{Components → components}/registry-component/package.json +0 -0
  231. /package/obsidian/{Components → components}/rename-delete-handler-component/package.json +0 -0
  232. /package/obsidian/{Dataview → dataview}/package.json +0 -0
  233. /package/obsidian/{Editor → editor}/package.json +0 -0
  234. /package/obsidian/{Frontmatter → frontmatter}/package.json +0 -0
  235. /package/obsidian/{Link → link}/package.json +0 -0
  236. /package/obsidian/{Logger → logger}/package.json +0 -0
  237. /package/obsidian/{Loop → loop}/package.json +0 -0
  238. /package/obsidian/{Markdown → markdown}/package.json +0 -0
  239. /package/obsidian/{Modals/Alert → modals/alert}/package.json +0 -0
  240. /package/obsidian/{Modals/Confirm → modals/confirm}/package.json +0 -0
  241. /package/obsidian/{Modals → modals}/index/package.json +0 -0
  242. /package/obsidian/{Modals → modals}/minimizable-modal/package.json +0 -0
  243. /package/obsidian/{Modals → modals}/modal/package.json +0 -0
  244. /package/obsidian/{Modals → modals}/package.json +0 -0
  245. /package/obsidian/{Modals/Prompt → modals/prompt}/package.json +0 -0
  246. /package/obsidian/{Modals → modals}/select-item/package.json +0 -0
  247. /package/obsidian/{Modals → modals}/suggest-modal-command-builder/package.json +0 -0
  248. /package/obsidian/{Pdf → pdf}/package.json +0 -0
  249. /package/obsidian/{Plugin → plugin}/index/package.json +0 -0
  250. /package/obsidian/{Plugin → plugin}/obsidian-plugin-repo-paths/package.json +0 -0
  251. /package/obsidian/{Plugin → plugin}/package.json +0 -0
  252. /package/obsidian/{Plugin/Plugin → plugin/plugin}/package.json +0 -0
  253. /package/obsidian/{Plugin → plugin}/plugin-context/package.json +0 -0
  254. /package/obsidian/{Plugin → plugin}/plugin-event-source/package.json +0 -0
  255. /package/obsidian/{Plugin → plugin}/plugin-settings-tab/package.json +0 -0
  256. /package/obsidian/{Queue → queue}/package.json +0 -0
  257. /package/obsidian/{React → react}/app-context/package.json +0 -0
  258. /package/obsidian/{React → react}/index/package.json +0 -0
  259. /package/obsidian/{React → react}/package.json +0 -0
  260. /package/obsidian/{Reference → reference}/package.json +0 -0
  261. /package/obsidian/{Validation → validation}/package.json +0 -0
  262. /package/obsidian/{Vault → vault}/package.json +0 -0
  263. /package/obsidian/{Workspace → workspace}/package.json +0 -0
  264. /package/{Transformers → transformers}/date-transformer/package.json +0 -0
  265. /package/{Transformers → transformers}/duration-transformer/package.json +0 -0
  266. /package/{Transformers → transformers}/group-transformer/package.json +0 -0
  267. /package/{Transformers → transformers}/index/package.json +0 -0
  268. /package/{Transformers → transformers}/map-transformer/package.json +0 -0
  269. /package/{Transformers → transformers}/package.json +0 -0
  270. /package/{Transformers → transformers}/set-transformer/package.json +0 -0
  271. /package/{Transformers → transformers}/skip-private-property-transformer/package.json +0 -0
  272. /package/{Transformers/Transformer → transformers/transformer}/package.json +0 -0
  273. /package/{Transformers → transformers}/two-way-map-transformer/package.json +0 -0
  274. /package/{Transformers → transformers}/typed-transformer/package.json +0 -0
@@ -136,6 +136,7 @@ var import_css_class = require('../css-class.cjs');
136
136
  var import_plugin_context = require('../plugin/plugin-context.cjs');
137
137
  const MINIMIZE_ICON_ID = "minus";
138
138
  const RESTORE_ICON_ID = "maximize-2";
139
+ const CANCEL_ICON_ID = "x";
139
140
  const NAVIGATION_KEYS = /* @__PURE__ */ new Set([
140
141
  "ArrowDown",
141
142
  "ArrowLeft",
@@ -227,13 +228,16 @@ class MinimizableModal {
227
228
  minimizedBarEl = null;
228
229
  peekLockComponent = null;
229
230
  peekLockEntry = null;
231
+ shouldShowCancelButton;
230
232
  /**
231
233
  * Wraps the given modal, adding a minimize button and wiring up cleanup on close.
232
234
  *
233
235
  * @param modal - The modal instance to make minimizable.
236
+ * @param options - Options controlling the minimized bar. See {@link MinimizableModalConstructorOptions}.
234
237
  */
235
- constructor(modal) {
238
+ constructor(modal, options = {}) {
236
239
  this.modal = modal;
240
+ this.shouldShowCancelButton = options.shouldShowCancelButton ?? true;
237
241
  (0, import_plugin_context.addPluginCssClasses)(modal.containerEl, [import_css_class.CssClass.MinimizableModal]);
238
242
  this.minimizeButtonEl = this.createMinimizeButton();
239
243
  this.closePatchComponent.load();
@@ -286,6 +290,15 @@ class MinimizableModal {
286
290
  });
287
291
  const restoreButtonEl = barEl.createEl("button", { cls: import_css_class.CssClass.RestoreButton });
288
292
  (0, import_obsidian.setIcon)(restoreButtonEl, RESTORE_ICON_ID);
293
+ if (this.shouldShowCancelButton) {
294
+ const cancelButtonEl = barEl.createEl("button", { cls: import_css_class.CssClass.CancelButton });
295
+ (0, import_obsidian.setIcon)(cancelButtonEl, CANCEL_ICON_ID);
296
+ (0, import_obsidian.setTooltip)(cancelButtonEl, "Cancel");
297
+ cancelButtonEl.addEventListener("click", (evt) => {
298
+ evt.stopPropagation();
299
+ this.modal.close();
300
+ });
301
+ }
289
302
  barEl.addEventListener("click", () => {
290
303
  this.restore();
291
304
  });
@@ -402,4 +415,4 @@ function suppressWhilePeekLocked(evt) {
402
415
  0 && (module.exports = {
403
416
  MinimizableModal
404
417
  });
405
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21vZGFscy9taW5pbWl6YWJsZS1tb2RhbC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEEgd3JhcHBlciB0aGF0IG1ha2VzIGFueSBPYnNpZGlhbiB7QGxpbmsgTW9kYWx9IG1pbmltaXphYmxlIHRvIGEgZmxvYXRpbmcgYmFyIFx1MjAxNCB3aXRob3V0IGJyZWFraW5nIHRoZVxuICogbW9kYWwncyBibG9ja2luZyBjb250cmFjdC5cbiAqXG4gKiBPYnNpZGlhbidzIHtAbGluayBNb2RhbH0gaXMgYmxvY2tpbmc6IHdoaWxlIGl0IGlzIG9wZW4gdGhlIHJlc3Qgb2YgdGhlIGFwcCBpcyBtZWFudCB0byBiZSBpbmVydCB1bnRpbFxuICogdGhlIG1vZGFsIGlzIGRpc21pc3NlZC4ge0BsaW5rIE1pbmltaXphYmxlTW9kYWx9IHdyYXBzIGFueSBtb2RhbCBpbnN0YW5jZSAocGxhaW4gYE1vZGFsYCxcbiAqIGBGdXp6eVN1Z2dlc3RNb2RhbGAsIHRoZSBsaWJyYXJ5J3MgYE1vZGFsQmFzZWAsIHlvdXIgb3duIHN1YmNsYXNzLCBcdTIwMjYgXHUyMDE0IGluY2x1ZGluZyBtb2RhbHMgeW91IGRvIG5vdFxuICogb3duKSBhbmQgYWRkcyBhIG1pbmltaXplIGJ1dHRvbi4gTWluaW1pemluZyBoaWRlcyB0aGUgbW9kYWwgYW5kIGl0cyBibG9ja2luZyBiYWNrZHJvcCBhbmQgc2hvd3MgYVxuICogc21hbGwgZmxvYXRpbmcgYmFyIHdpdGggYSByZXN0b3JlIGJ1dHRvbiwgc28gdGhlIHVzZXIgY2FuIHBlZWsgYXQgdGhlIG5vdGVzL2ZvbGRlcnMgdGhlIG9wZXJhdGlvblxuICogaW52b2x2ZXMgXHUyMDE0IGJ1dCB0aGUgbW9kYWwgaXMgTk9UIGRpc21pc3NlZCwgc28gaXRzIGJsb2NraW5nIGNvbnRyYWN0IG11c3QgYmUgcHJlc2VydmVkLlxuICpcbiAqIFRvIGtlZXAgdGhhdCBjb250cmFjdCB3aGlsZSBtaW5pbWl6ZWQsIHRoZSB3cmFwcGVyIHB1dHMgdGhlIGFwcCBpbnRvIGEgKipwZWVrLW9ubHkgbG9jayoqOiB0aGUgdXNlclxuICogbWF5IG1vdXNlLWNsaWNrIGFuZCBzY3JvbGwgdG8gaW5zcGVjdCBjb250ZW50LCBidXQgY2Fubm90IHN0YXJ0IGFueXRoaW5nIG5ldy4gV2hpbGUgYW55IG1vZGFsIGlzXG4gKiBtaW5pbWl6ZWQgdGhlIHdyYXBwZXI6XG4gKiAtIGJsb2NrcyB0aGUga2V5Ym9hcmQgKHR5cGluZywgaG90a2V5cywgdGhlIGNvbW1hbmQtcGFsZXR0ZSBzaG9ydGN1dCksXG4gKiAtIGJsb2NrcyB0aGUgcmlnaHQtY2xpY2sgY29udGV4dCBtZW51LCBhbmRcbiAqIC0gYmxvY2tzIG9wZW5pbmcgYW55IG90aGVyIG1vZGFsIChhIHJlLWZpcmVkIGNvbW1hbmQsIHRoZSBjb21tYW5kIHBhbGV0dGUsIHNldHRpbmdzLCBcdTIwMjYpLlxuICpcbiAqIEEgYmxvY2tlZCBhdHRlbXB0IGZsYXNoZXMgdGhlIGZsb2F0aW5nIGJhciBhbmQgYmVlcHMgc28gdGhlIHVzZXIgc2VlcyAoYW5kIGhlYXJzKSB3aHkgbm90aGluZ1xuICogaGFwcGVuZWQuIFJlc3RvcmluZyAob3IgdGhlIG1vZGFsIGNsb3NpbmcpIGxpZnRzIHRoZSBsb2NrLiBUaGlzIHByZXZlbnRzLCBmb3IgZXhhbXBsZSwgbWluaW1pemluZyBhXG4gKiBcIm1lcmdlIGZvbGRlclwiIHBpY2tlciBhbmQgdGhlbiBmaXJpbmcgdGhlIHNhbWUgY29tbWFuZCBhZ2FpbiB0byBzdGFjayBzZXZlcmFsIGNvbmN1cnJlbnQgbWVyZ2VzLlxuICpcbiAqIFRoZSB3cmFwcGVyIHJldXNlcyB0aGUgbW9kYWwncyBvd24gdGl0bGUgKGB0aXRsZUVsYCkgYXMgdGhlIG1pbmltaXplZCBiYXIgbGFiZWwsIHNvIHNldCB0aGUgdGl0bGVcbiAqIHRoZSB1c3VhbCB3YXkgKGBtb2RhbC5zZXRUaXRsZSguLi4pYCkuIFJlbmRlciBhcmJpdHJhcnkgY29udGVudCBpbnRvIHtAbGluayBNb2RhbC5jb250ZW50RWx9LFxuICogaW5jbHVkaW5nIGNsaWNrYWJsZSBub3RlIGxpbmtzIHByb2R1Y2VkIGJ5IGByZW5kZXJJbnRlcm5hbExpbmtgIGZyb21cbiAqIGBvYnNpZGlhbi1kZXYtdXRpbHMvb2JzaWRpYW4vbWFya2Rvd25gOlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBtb2RhbCA9IG5ldyBNeU1vZGFsKGFwcCk7XG4gKiBtb2RhbC5zZXRUaXRsZSgnTWVyZ2luZyBub3RlcycpO1xuICogbW9kYWwuY29udGVudEVsLmFwcGVuZENoaWxkKGF3YWl0IHJlbmRlckludGVybmFsTGluayh7IGFwcCwgcGF0aE9yQWJzdHJhY3RGaWxlOiBmaWxlIH0pKTtcbiAqXG4gKiBjb25zdCBtaW5pbWl6YWJsZSA9IG5ldyBNaW5pbWl6YWJsZU1vZGFsKG1vZGFsKTtcbiAqIG1pbmltaXphYmxlLm1vZGFsLm9wZW4oKTtcbiAqIG1pbmltaXphYmxlLm1pbmltaXplKCk7IC8vIGEgZmxvYXRpbmcgYmFyIG9mZmVycyBcInJlc3RvcmVcIjsgdGhlIGFwcCBpcyBwZWVrLW9ubHkgdW50aWwgcmVzdG9yZWRcbiAqIGBgYFxuICpcbiAqIFRoZSB3cmFwcGVkIG1vZGFsIGNhbiBzdGlsbCBiZSBjbG9zZWQgbm9ybWFsbHk7IHRoZSBmbG9hdGluZyBiYXIgaXMgY2xlYW5lZCB1cCBhdXRvbWF0aWNhbGx5IHdoZW5cbiAqIHRoZSBtb2RhbCBjbG9zZXMgKGV2ZW4gaWYgaXQgaXMgY2xvc2VkIHdoaWxlIG1pbmltaXplZCkuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7XG4gIE1vZGFsLFxuICBzZXRJY29uXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgQmVlcGVyIH0gZnJvbSAnLi4vLi4vYmVlcGVyLnRzJztcbmltcG9ydCB7IEFsbFdpbmRvd3NFdmVudENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYWxsLXdpbmRvd3MtZXZlbnQtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IE1vbmtleUFyb3VuZENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvbW9ua2V5LWFyb3VuZC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi9jc3MtY2xhc3MudHMnO1xuaW1wb3J0IHsgYWRkUGx1Z2luQ3NzQ2xhc3NlcyB9IGZyb20gJy4uL3BsdWdpbi9wbHVnaW4tY29udGV4dC50cyc7XG5cbmNvbnN0IE1JTklNSVpFX0lDT05fSUQgPSAnbWludXMnO1xuY29uc3QgUkVTVE9SRV9JQ09OX0lEID0gJ21heGltaXplLTInO1xuXG4vLyBOYXZpZ2F0aW9uIGtleXMgcGFzcyB0aHJvdWdoIHdoaWxlIG1pbmltaXplZCBzbyB0aGUgdXNlciBjYW4gbW92ZSB0aGUgY3Vyc29yIGFuZCBzY3JvbGwgdG8gcmVhZC5cbi8vIE5vbmUgb2YgdGhlbSBtdXRhdGUgdGhlIGRvY3VtZW50IFx1MjAxNCB0ZXh0IGNoYW5nZXMgYXJlIGNhdWdodCBzZXBhcmF0ZWx5IGJ5IHRoZSBgYmVmb3JlaW5wdXRgIGd1YXJkLlxuLy8gU2hpZnQrbmF2aWdhdGlvbiBpcyBibG9ja2VkLCB0aG91Z2gsIHNpbmNlIGl0IGV4dGVuZHMgdGhlIHNlbGVjdGlvbiB0aGF0IGluc3BlY3Rpb24gZG9lcyBub3QgbmVlZC5cbmNvbnN0IE5BVklHQVRJT05fS0VZUyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dMZWZ0JyxcbiAgJ0Fycm93UmlnaHQnLFxuICAnQXJyb3dVcCcsXG4gICdFbmQnLFxuICAnSG9tZScsXG4gICdQYWdlRG93bicsXG4gICdQYWdlVXAnXG5dKTtcblxuLy8gQSBiYXJlIG1vZGlmaWVyIHByZXNzIGRvZXMgbm90aGluZyBvbiBpdHMgb3duLCBzbyBpdCBwYXNzZXMgdGhyb3VnaCB0aGUgbG9jay5cbi8vIFRoaXMgYXZvaWRzIGEgc3B1cmlvdXMgZmxhc2gvYmVlcCB3aGlsZSBjb21wb3NpbmcgYSBzaG9ydGN1dDsgdGhlIHNob3J0Y3V0J3MgY29tbWFuZCBrZXkgaXMgYmxvY2tlZC5cbmNvbnN0IE1PRElGSUVSX0tFWVMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICAnQWx0JyxcbiAgJ0NvbnRyb2wnLFxuICAnTWV0YScsXG4gICdTaGlmdCdcbl0pO1xuXG4vKipcbiAqIEEgcmVnaXN0ZXJlZCBlbnRyeSBmb3IgYSBjdXJyZW50bHktbWluaW1pemVkIG1vZGFsLiBUaGUgc2hhcmVkIHBlZWstb25seSBsb2NrIHVzZXMgaXQgdG8ga25vdyBhXG4gKiBtb2RhbCBpcyBtaW5pbWl6ZWQsIHRvIGxlYXZlIHRoYXQgbW9kYWwncyBvd24gcmUtb3BlbnMgYWxvbmUsIGFuZCB0byBmbGFzaCBpdHMgYmFyIG9uIGEgYmxvY2tlZFxuICogYXR0ZW1wdC5cbiAqL1xuaW50ZXJmYWNlIFBlZWtMb2NrRW50cnkge1xuICAvKipcbiAgICogVGhlIGZsb2F0aW5nIGJhciBlbGVtZW50LiBVc2VkIHRvIGRldGVjdCBhIHN0YWxlIGVudHJ5IChpdHMgYmFyIGhhcyBsZWZ0IHRoZSBET00pIHNvIGl0IGNhbiBiZVxuICAgKiBwcnVuZWQgYW5kIG5ldmVyIGtlZXAgdGhlIGFwcCBsb2NrZWQuXG4gICAqL1xuICByZWFkb25seSBiYXJFbDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIEZsYXNoZXMgdGhlIGZsb2F0aW5nIGJhciB0byBzaWduYWwgYSBibG9ja2VkIGF0dGVtcHQuXG4gICAqL1xuICBmbGFzaCgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGUgd3JhcHBlZCBtb2RhbCBpbnN0YW5jZSwgc28gaXRzIG93biBgb3BlbigpYCBpcyBuZXZlciBibG9ja2VkIGJ5IHRoZSBsb2NrLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5uZXJNb2RhbDogTW9kYWw7XG59XG5cbmNvbnN0IHBlZWtMb2NrRW50cmllcyA9IG5ldyBTZXQ8UGVla0xvY2tFbnRyeT4oKTtcbmNvbnN0IGJlZXBlciA9IG5ldyBCZWVwZXIoKTtcblxuLyoqXG4gKiBJbnN0YWxscyB0aGUgcGVlay1vbmx5IGxvY2sncyBgb3BlbmAgcGF0Y2hlcyB3aGlsZSBhdCBsZWFzdCBvbmUgbW9kYWwgaXMgbWluaW1pemVkLiBCZWluZyBhXG4gKiB7QGxpbmsgTW9ua2V5QXJvdW5kQ29tcG9uZW50fSwgYm90aCBwYXRjaGVzIGFyZSB0b3JuIGRvd24gYXV0b21hdGljYWxseSBvbiBgdW5sb2FkYCwgc28gdGhleSBleGlzdFxuICogb25seSB3aGlsZSB0aGUgbG9jayBpcyBhY3RpdmUuIEEgbWluaW1pemVkIG1vZGFsJ3Mgb3duIHJlLW9wZW4gaXMgYWx3YXlzIGFsbG93ZWQgKHNlZVxuICoge0BsaW5rIHNob3VsZEJsb2NrT3Blbn0pOyBldmVyeSBvdGhlciBtb2RhbCBvcGVuIGlzIGJsb2NrZWQgYW5kIHNpZ25hbHMgYSBmbGFzaCArIGJlZXAuXG4gKi9cbmNsYXNzIFBlZWtMb2NrQ29tcG9uZW50IGV4dGVuZHMgTW9ua2V5QXJvdW5kQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBuZXcgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwIHdob3NlIHNldHRpbmdzIG1vZGFsIGlzIGd1YXJkZWQgYW5kIHdob3NlIHdpbmRvd3Mgc3VwcHJlc3MgaW5wdXQgd2hpbGUgbG9ja2VkLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXBwOiBBcHApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyB0aGUgYG9wZW5gIHBhdGNoZXMgYW5kIHRoZSBpbnB1dCBzdXBwcmVzc29ycy5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBvbmxvYWQoKTogdm9pZCB7XG4gICAgc3VwZXIub25sb2FkKCk7XG5cbiAgICAvLyBCbG9jayBvcGVuaW5nIGFueSBPVEhFUiBtb2RhbCB3aGlsZSBhIG1vZGFsIGlzIG1pbmltaXplZCAodGhlIGNvbW1hbmQgcGFsZXR0ZSwgYSByZS1maXJlZFxuICAgIC8vIENvbW1hbmQsIGFub3RoZXIgcGx1Z2luIG1vZGFsLCBcdTIwMjYpLlxuICAgIHRoaXMucmVnaXN0ZXJNZXRob2RQYXRjaDxNb2RhbCwgJ29wZW4nPih7XG4gICAgICBtZXRob2ROYW1lOiAnb3BlbicsXG4gICAgICBvYmo6IE1vZGFsLnByb3RvdHlwZSxcbiAgICAgIHBhdGNoSGFuZGxlcjogKHsgZmFsbGJhY2ssIG9yaWdpbmFsVGhpcyB9KTogdm9pZCA9PiB7XG4gICAgICAgIGJsb2NrT3JGYWxsYmFjayhvcmlnaW5hbFRoaXMsIGZhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIE9ic2lkaWFuJ3MgU2V0dGluZ3MgaXMgYSAqcG9wb3V0KiBtb2RhbDogb24gZGVza3RvcCBpdHMgb3duIGBvcGVuKClgIGZpcnN0IGNyZWF0ZXMgYSBzZXBhcmF0ZSBPU1xuICAgIC8vIFdpbmRvdyAodmlhIGBzaG91bGRVc2VQb3BvdXQoKWAvYGdldFBvcG91dE9wdGlvbnMoKWApIGFuZCBvbmx5IFRIRU4gZGVsZWdhdGVzIHRvXG4gICAgLy8gYE1vZGFsLnByb3RvdHlwZS5vcGVuYCB0byByZW5kZXIgdGhlIGFjdGl2ZSB0YWIgaW50byBpdC4gR3VhcmRpbmcgb25seSBgTW9kYWwucHJvdG90eXBlLm9wZW5gXG4gICAgLy8gVGhlcmVmb3JlIGJsb2NrcyB0aGUgcmVuZGVyIGJ1dCBsZWF2ZXMgYW4gZW1wdHkgc2V0dGluZ3Mgd2luZG93IGJlaGluZCBcdTIwMTQgdGhlIHJlcG9ydGVkIGJhZCBVWC5cbiAgICAvLyBHdWFyZGluZyB0aGUgc2V0dGluZ3MgbW9kYWwncyBvd24gYG9wZW4oKWAgYmxvY2tzIGl0ICpiZWZvcmUqIHRoZSB3aW5kb3cgaXMgY3JlYXRlZC5cbiAgICB0aGlzLnJlZ2lzdGVyTWV0aG9kUGF0Y2g8QXBwWydzZXR0aW5nJ10sICdvcGVuJz4oe1xuICAgICAgbWV0aG9kTmFtZTogJ29wZW4nLFxuICAgICAgb2JqOiB0aGlzLmFwcC5zZXR0aW5nLFxuICAgICAgcGF0Y2hIYW5kbGVyOiAoeyBmYWxsYmFjaywgb3JpZ2luYWxUaGlzIH0pOiB2b2lkID0+IHtcbiAgICAgICAgYmxvY2tPckZhbGxiYWNrKG9yaWdpbmFsVGhpcywgZmFsbGJhY2spO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gU3VwcHJlc3MgdGhlIGtleWJvYXJkLCBlZGl0b3IgbXV0YXRpb24sIGFuZCB0aGUgY29udGV4dCBtZW51IGFjcm9zcyBBTEwgd2luZG93cyBcdTIwMTQgdGhlIG1haW4gd2luZG93XG4gICAgLy8gQW5kIGV2ZXJ5IGV4aXN0aW5nL2Z1dHVyZSBwb3BvdXQgXHUyMDE0IHNvIHRoZSBsb2NrIGhvbGRzIHdoZXJldmVyIHRoZSB1c2VyJ3MgZm9jdXMgaXMsIG5vdCBvbmx5IGluXG4gICAgLy8gVGhlIHdpbmRvdyB0aGF0IG93bnMgdGhlIG1pbmltaXplZCBtb2RhbC4gQ2FwdHVyZS1waGFzZSBsaXN0ZW5lcnMgcnVuIGJlZm9yZSBPYnNpZGlhbidzIG93blxuICAgIC8vIERvY3VtZW50L2VsZW1lbnQgaGFuZGxlcnMgKGluY2x1ZGluZyBDb2RlTWlycm9yJ3MpLCBzbyBgc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClgIGluIHRoZVxuICAgIC8vIFN1cHByZXNzb3JzIGtlZXBzIGEgYmxvY2tlZCBldmVudCBmcm9tIGV2ZXIgcmVhY2hpbmcgdGhlbS4gYGtleWRvd25gIGxldHMgbmF2aWdhdGlvbiBrZXlzIHRocm91Z2hcbiAgICAvLyAoc2VlIGBpc1BlZWtBbGxvd2VkS2V5YCkgYnV0IGJsb2NrcyBjb21tYW5kIGhvdGtleXM7IGBiZWZvcmVpbnB1dGAgYmxvY2tzIGFsbCBlZGl0b3IgbXV0YXRpb247XG4gICAgLy8gYGNvbnRleHRtZW51YCBibG9ja3MgdGhlIHJpZ2h0LWNsaWNrIG1lbnUuXG4gICAgY29uc3QgYWxsV2luZG93c0V2ZW50Q29tcG9uZW50ID0gdGhpcy5hZGRDaGlsZChuZXcgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50KHRoaXMuYXBwKSk7XG4gICAgYWxsV2luZG93c0V2ZW50Q29tcG9uZW50LnJlZ2lzdGVyQWxsV2luZG93c0RvbUV2ZW50KHtcbiAgICAgIGNhbGxiYWNrOiBzdXBwcmVzc0tleWRvd25XaGlsZVBlZWtMb2NrZWQsXG4gICAgICBvcHRpb25zOiB7IGNhcHR1cmU6IHRydWUgfSxcbiAgICAgIHR5cGU6ICdrZXlkb3duJ1xuICAgIH0pO1xuICAgIGFsbFdpbmRvd3NFdmVudENvbXBvbmVudC5yZWdpc3RlckFsbFdpbmRvd3NEb21FdmVudCh7XG4gICAgICBjYWxsYmFjazogc3VwcHJlc3NXaGlsZVBlZWtMb2NrZWQsXG4gICAgICBvcHRpb25zOiB7IGNhcHR1cmU6IHRydWUgfSxcbiAgICAgIHR5cGU6ICdiZWZvcmVpbnB1dCdcbiAgICB9KTtcbiAgICBhbGxXaW5kb3dzRXZlbnRDb21wb25lbnQucmVnaXN0ZXJBbGxXaW5kb3dzRG9tRXZlbnQoe1xuICAgICAgY2FsbGJhY2s6IHN1cHByZXNzV2hpbGVQZWVrTG9ja2VkLFxuICAgICAgb3B0aW9uczogeyBjYXB0dXJlOiB0cnVlIH0sXG4gICAgICB0eXBlOiAnY29udGV4dG1lbnUnXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBXcmFwcyBhIHtAbGluayBNb2RhbH0gaW5zdGFuY2UgdG8gbWFrZSBpdCBtaW5pbWl6YWJsZSB0byBhIHNtYWxsIGZsb2F0aW5nIGJhciBhbmQgcmVzdG9yYWJsZS4gV2hpbGVcbiAqIG1pbmltaXplZCB0aGUgYXBwIGlzIHB1dCBpbnRvIGEgcGVlay1vbmx5IGxvY2sgKGtleWJvYXJkLCBjb250ZXh0IG1lbnUsIGFuZCBvcGVuaW5nIG90aGVyIG1vZGFscyBhcmVcbiAqIGJsb2NrZWQpIHNvIHRoZSBtb2RhbCdzIGJsb2NraW5nIGNvbnRyYWN0IGlzIHByZXNlcnZlZC5cbiAqXG4gKiBAdHlwZVBhcmFtIFRNb2RhbCAtIFRoZSB0eXBlIG9mIHRoZSB3cmFwcGVkIG1vZGFsLlxuICovXG5leHBvcnQgY2xhc3MgTWluaW1pemFibGVNb2RhbDxUTW9kYWwgZXh0ZW5kcyBNb2RhbD4ge1xuICAvKipcbiAgICogVGhlIHdyYXBwZWQgbW9kYWwuIE9wZW4sIGNsb3NlLCBhbmQgcG9wdWxhdGUgaXQgYXMgdXN1YWwgKGUuZy4gYG1pbmltaXphYmxlLm1vZGFsLm9wZW4oKWApLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG1vZGFsOiBUTW9kYWw7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG1vZGFsIGlzIGN1cnJlbnRseSBtaW5pbWl6ZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbW9kYWwgaXMgY3VycmVudGx5IG1pbmltaXplZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzTWluaW1pemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzTWluaW1pemVkVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUGF0Y2hlcyB0aGUgd3JhcHBlZCBtb2RhbCdzIGBvbkNsb3NlYCB0byBydW4gY2xlYW51cC4gUGVyc2lzdHMgZm9yIHRoZSB3cmFwcGVyJ3Mgd2hvbGUgbGlmZSAoYVxuICAgKiBtb2RhbCBjYW4gYmUgcmVvcGVuZWQsIHNvIHRoZSBwYXRjaCBtdXN0IHN1cnZpdmUgZWFjaCBjbG9zZSksIGhlbmNlIGEgZGVkaWNhdGVkIGNvbXBvbmVudCB0aGF0IGlzXG4gICAqIG5ldmVyIHVubG9hZGVkIFx1MjAxNCBkaXN0aW5jdCBmcm9tIGBwZWVrTG9ja0NvbXBvbmVudGAsIHdob3NlIHBhdGNoZXMgbGl2ZSBvbmx5IHdoaWxlIG1pbmltaXplZC5cbiAgICogRXhwb3NlZCB0byBzdWJjbGFzc2VzIHNvIHRoZXkgY2FuIHJlZ2lzdGVyIGFkZGl0aW9uYWwgbGlmZXRpbWUtc2NvcGVkIHBhdGNoZXMgb24gdGhlIHdyYXBwZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2xvc2VQYXRjaENvbXBvbmVudCA9IG5ldyBNb25rZXlBcm91bmRDb21wb25lbnQoKTtcblxuICBwcml2YXRlIGlzTWluaW1pemVkVmFsdWUgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBtaW5pbWl6ZUJ1dHRvbkVsOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBtaW5pbWl6ZWRCYXJFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwZWVrTG9ja0NvbXBvbmVudDogbnVsbCB8IFBlZWtMb2NrQ29tcG9uZW50ID0gbnVsbDtcbiAgcHJpdmF0ZSBwZWVrTG9ja0VudHJ5OiBudWxsIHwgUGVla0xvY2tFbnRyeSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFdyYXBzIHRoZSBnaXZlbiBtb2RhbCwgYWRkaW5nIGEgbWluaW1pemUgYnV0dG9uIGFuZCB3aXJpbmcgdXAgY2xlYW51cCBvbiBjbG9zZS5cbiAgICpcbiAgICogQHBhcmFtIG1vZGFsIC0gVGhlIG1vZGFsIGluc3RhbmNlIHRvIG1ha2UgbWluaW1pemFibGUuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IobW9kYWw6IFRNb2RhbCkge1xuICAgIHRoaXMubW9kYWwgPSBtb2RhbDtcbiAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKG1vZGFsLmNvbnRhaW5lckVsLCBbQ3NzQ2xhc3MuTWluaW1pemFibGVNb2RhbF0pO1xuICAgIHRoaXMubWluaW1pemVCdXR0b25FbCA9IHRoaXMuY3JlYXRlTWluaW1pemVCdXR0b24oKTtcbiAgICB0aGlzLmNsb3NlUGF0Y2hDb21wb25lbnQubG9hZCgpO1xuICAgIHRoaXMucGF0Y2hPbkNsb3NlKG1vZGFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNaW5pbWl6ZXMgdGhlIG1vZGFsOiBoaWRlcyB0aGUgbW9kYWwgYW5kIGl0cyBiYWNrZHJvcCwgc2hvd3MgYSBmbG9hdGluZyBiYXIgd2l0aCBhIHJlc3RvcmUgYnV0dG9uLFxuICAgKiBhbmQgcHV0cyB0aGUgYXBwIGludG8gdGhlIHBlZWstb25seSBsb2NrLiBBIG5vLW9wIGlmIHRoZSBtb2RhbCBpcyBhbHJlYWR5IG1pbmltaXplZC5cbiAgICovXG4gIHB1YmxpYyBtaW5pbWl6ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc01pbmltaXplZFZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc01pbmltaXplZFZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLm1pbmltaXplQnV0dG9uRWwuaGlkZSgpO1xuICAgIHRoaXMubW9kYWwuY29udGFpbmVyRWwuaGlkZSgpO1xuICAgIC8vIFRoZSBtb2RhbCBzdGF5cyBvcGVuIHdoaWxlIG1pbmltaXplZCwgc28gaXRzIGtleW1hcCBzY29wZSBpcyBwb3BwZWQgdG8gcmVsZWFzZSB0aGUgZm9jdXMgdHJhcC5cbiAgICAvLyBSZXN0b3JpbmcgcmUtcHVzaGVzIGl0LiBBbiBhY3RpdmUgdHJhcCB3b3VsZCBzdGVhbCBmb2N1cyBiYWNrIHRvIHRoZSBoaWRkZW4gbW9kYWwsIGJsb2NraW5nIHRoZVxuICAgIC8vIE1vdXNlLWRyaXZlbiBpbnNwZWN0aW9uIChjbGlja2luZyBub3Rlcywgc2Nyb2xsaW5nKSB0aGF0IG1pbmltaXplIGV4aXN0cyB0byBhbGxvdy5cbiAgICAvLyBLZXlib2FyZCBpbnB1dCByZW1haW5zIGJsb2NrZWQgYnkgdGhlIHBlZWstb25seSBsb2NrLCBzbyByZWxlYXNpbmcgdGhlIHRyYXAga2VlcHMgdGhlIGFwcCBpbmVydC5cbiAgICB0aGlzLm1vZGFsLmFwcC5rZXltYXAucG9wU2NvcGUodGhpcy5tb2RhbC5zY29wZSk7XG4gICAgdGhpcy5taW5pbWl6ZWRCYXJFbCA9IHRoaXMuY3JlYXRlTWluaW1pemVkQmFyKCk7XG4gICAgdGhpcy5lbmFibGVQZWVrTG9jayh0aGlzLm1pbmltaXplZEJhckVsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlcyB0aGUgbW9kYWwgZnJvbSB0aGUgbWluaW1pemVkIHN0YXRlLCByZW1vdmluZyB0aGUgZmxvYXRpbmcgYmFyIGFuZCBsaWZ0aW5nIHRoZSBwZWVrLW9ubHlcbiAgICogbG9jay4gQSBuby1vcCBpZiB0aGUgbW9kYWwgaXMgbm90IG1pbmltaXplZC5cbiAgICovXG4gIHB1YmxpYyByZXN0b3JlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc01pbmltaXplZFZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc01pbmltaXplZFZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5kaXNhYmxlUGVla0xvY2soKTtcbiAgICB0aGlzLnJlbW92ZU1pbmltaXplZEJhcigpO1xuICAgIC8vIFJlLXB1c2ggdGhlIHNjb3BlIHBvcHBlZCBpbiBtaW5pbWl6ZSgpIHNvIHRoZSByZXN0b3JlZCBtb2RhbCBibG9ja3MgdGhlIGFwcCBhZ2FpbiAoZm9jdXMgdHJhcFxuICAgIC8vICsgRXNjYXBlIGNhcHR1cmUpLlxuICAgIHRoaXMubW9kYWwuYXBwLmtleW1hcC5wdXNoU2NvcGUodGhpcy5tb2RhbC5zY29wZSk7XG4gICAgdGhpcy5tb2RhbC5jb250YWluZXJFbC5zaG93KCk7XG4gICAgdGhpcy5taW5pbWl6ZUJ1dHRvbkVsLnNob3coKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTWluaW1pemVCdXR0b24oKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGJ1dHRvbkVsID0gdGhpcy5tb2RhbC5tb2RhbEVsLmNyZWF0ZUVsKCdidXR0b24nLCB7IGNsczogQ3NzQ2xhc3MuTWluaW1pemVCdXR0b24gfSk7XG4gICAgc2V0SWNvbihidXR0b25FbCwgTUlOSU1JWkVfSUNPTl9JRCk7XG4gICAgYnV0dG9uRWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICB0aGlzLm1pbmltaXplKCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGJ1dHRvbkVsO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVNaW5pbWl6ZWRCYXIoKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGJhckVsID0gdGhpcy5tb2RhbC5jb250YWluZXJFbC5vd25lckRvY3VtZW50LmJvZHkuY3JlYXRlRGl2KCk7XG4gICAgYWRkUGx1Z2luQ3NzQ2xhc3NlcyhiYXJFbCwgW0Nzc0NsYXNzLk1pbmltaXplZE1vZGFsQmFyXSk7XG4gICAgYmFyRWwuY3JlYXRlU3Bhbih7XG4gICAgICBjbHM6IENzc0NsYXNzLk1pbmltaXplZE1vZGFsQmFyVGl0bGUsXG4gICAgICB0ZXh0OiB0aGlzLm1vZGFsLnRpdGxlRWwudGV4dENvbnRlbnRcbiAgICB9KTtcbiAgICBjb25zdCByZXN0b3JlQnV0dG9uRWwgPSBiYXJFbC5jcmVhdGVFbCgnYnV0dG9uJywgeyBjbHM6IENzc0NsYXNzLlJlc3RvcmVCdXR0b24gfSk7XG4gICAgc2V0SWNvbihyZXN0b3JlQnV0dG9uRWwsIFJFU1RPUkVfSUNPTl9JRCk7XG4gICAgLy8gVGhlIHdob2xlIGJhciByZXN0b3JlcyBvbiBjbGljaywgbm90IGp1c3QgdGhlIHJlc3RvcmUgYnV0dG9uIFx1MjAxNCBhIGxhcmdlciwgZWFzaWVyIGNsaWNrIHRhcmdldC5cbiAgICAvLyBgcmVzdG9yZSgpYCBndWFyZHMgYWdhaW5zdCBhIGRvdWJsZSBpbnZvY2F0aW9uLCBzbyB0aGUgcmVzdG9yZSBidXR0b24ncyBvd24gY2xpY2sgYnViYmxpbmcgdXBcbiAgICAvLyBIZXJlIGlzIGEgbm8tb3AuIFRoZSByZXN0b3JlIGJ1dHRvbiBzdGF5cyBwdXJlbHkgYXMgYSB2aXN1YWwgYWZmb3JkYW5jZSBmb3IgdGhlIGNsaWNrIHRhcmdldC5cbiAgICBiYXJFbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHRoaXMucmVzdG9yZSgpO1xuICAgIH0pO1xuICAgIC8vIERyb3AgdGhlIG9uZS1zaG90IGF0dGVudGlvbiBmbGFzaCBvbmNlIGl0IGZpbmlzaGVzIHNvIHRoZSBiYXIgcmV0dXJucyB0byBpdHMgZ2VudGxlIGlkbGUgcHVsc2UuXG4gICAgLy8gVGhlIGlkbGUgcHVsc2UgaXMgYW4gaW5maW5pdGUgYW5pbWF0aW9uLCB3aGljaCBuZXZlciBmaXJlcyBgYW5pbWF0aW9uZW5kYC5cbiAgICBiYXJFbC5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCAoKSA9PiB7XG4gICAgICBiYXJFbC5yZW1vdmVDbGFzcyhDc3NDbGFzcy5NaW5pbWl6ZWRNb2RhbEJhckF0dGVudGlvbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIGJhckVsO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNhYmxlUGVla0xvY2soKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnBlZWtMb2NrRW50cnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwZWVrTG9ja0VudHJpZXMuZGVsZXRlKHRoaXMucGVla0xvY2tFbnRyeSk7XG4gICAgdGhpcy5wZWVrTG9ja0VudHJ5ID0gbnVsbDtcbiAgICAvLyBUZWFyIHRoZSBgb3BlbmAgcGF0Y2hlcyBkb3duIHdpdGggdGhlIGNvbXBvbmVudCwgc28gdGhleSBleGlzdCBvbmx5IHdoaWxlIHRoaXMgbW9kYWwgaXMgbWluaW1pemVkLlxuICAgIHRoaXMucGVla0xvY2tDb21wb25lbnQ/LnVubG9hZCgpO1xuICAgIHRoaXMucGVla0xvY2tDb21wb25lbnQgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGVQZWVrTG9jayhiYXJFbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnBlZWtMb2NrRW50cnkgPSB7XG4gICAgICBiYXJFbCxcbiAgICAgIGZsYXNoOiAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuZmxhc2hCYXIoYmFyRWwpO1xuICAgICAgfSxcbiAgICAgIGlubmVyTW9kYWw6IHRoaXMubW9kYWxcbiAgICB9O1xuICAgIHBlZWtMb2NrRW50cmllcy5hZGQodGhpcy5wZWVrTG9ja0VudHJ5KTtcbiAgICAvLyBJbnN0YWxsIHRoZSBgb3BlbmAgcGF0Y2hlcyBhbmQgaW5wdXQgc3VwcHJlc3NvcnMgZm9yIGFzIGxvbmcgYXMgdGhpcyBtb2RhbCBpcyBtaW5pbWl6ZWQuIFRoZVxuICAgIC8vIEJsb2NrIExPR0lDIGl0c2VsZiBrZXlzIG9mZiB0aGUgc2hhcmVkIGBwZWVrTG9ja0VudHJpZXNgIChzZWUgYHNob3VsZEJsb2NrT3BlbmApLCBzbyB3aXRoIHNldmVyYWxcbiAgICAvLyBNb2RhbHMgbWluaW1pemVkIGV2ZXJ5IG9uZSdzIHBhdGNoIHJlYWNoZXMgdGhlIHNhbWUgdmVyZGljdDsgdGhlIGxvY2sgbGlmdHMgb25seSBvbmNlIHRoZSBsYXN0XG4gICAgLy8gTW9kYWwgcmVzdG9yZXMvY2xvc2VzLlxuICAgIHRoaXMucGVla0xvY2tDb21wb25lbnQgPSBuZXcgUGVla0xvY2tDb21wb25lbnQodGhpcy5tb2RhbC5hcHApO1xuICAgIHRoaXMucGVla0xvY2tDb21wb25lbnQubG9hZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBmbGFzaEJhcihiYXJFbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBiYXJFbC5yZW1vdmVDbGFzcyhDc3NDbGFzcy5NaW5pbWl6ZWRNb2RhbEJhckF0dGVudGlvbik7XG4gICAgLy8gRm9yY2UgYSByZWZsb3cgc28gcmUtYWRkaW5nIHRoZSBjbGFzcyByZXN0YXJ0cyB0aGUgb25lLXNob3QgZmxhc2ggb24gcmFwaWQgcmVwZWF0ZWQgYmxvY2tzLlxuICAgIGJhckVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGJhckVsLmFkZENsYXNzKENzc0NsYXNzLk1pbmltaXplZE1vZGFsQmFyQXR0ZW50aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlUGVla0xvY2soKTtcbiAgICB0aGlzLnJlbW92ZU1pbmltaXplZEJhcigpO1xuICAgIHRoaXMuaXNNaW5pbWl6ZWRWYWx1ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaE9uQ2xvc2UobW9kYWw6IE1vZGFsKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZVBhdGNoQ29tcG9uZW50LnJlZ2lzdGVyTWV0aG9kUGF0Y2g8TW9kYWwsICdvbkNsb3NlJz4oe1xuICAgICAgbWV0aG9kTmFtZTogJ29uQ2xvc2UnLFxuICAgICAgb2JqOiBtb2RhbCxcbiAgICAgIHBhdGNoSGFuZGxlcjogKHsgZmFsbGJhY2sgfSk6IHZvaWQgPT4ge1xuICAgICAgICBmYWxsYmFjaygpO1xuICAgICAgICB0aGlzLmhhbmRsZUNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU1pbmltaXplZEJhcigpOiB2b2lkIHtcbiAgICB0aGlzLm1pbmltaXplZEJhckVsPy5yZW1vdmUoKTtcbiAgICB0aGlzLm1pbmltaXplZEJhckVsID0gbnVsbDtcbiAgfVxufVxuXG5mdW5jdGlvbiBibG9ja0V2ZW50KGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gIGV2dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgc2lnbmFsQmxvY2tlZEF0dGVtcHQoKTtcbn1cblxuZnVuY3Rpb24gYmxvY2tPckZhbGxiYWNrKG1vZGFsOiBNb2RhbCwgZmFsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgaWYgKHNob3VsZEJsb2NrT3Blbihtb2RhbCkpIHtcbiAgICBzaWduYWxCbG9ja2VkQXR0ZW1wdCgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZhbGxiYWNrKCk7XG59XG5cbmZ1bmN0aW9uIGZsYXNoTWluaW1pemVkQmFycygpOiB2b2lkIHtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBwZWVrTG9ja0VudHJpZXMpIHtcbiAgICBlbnRyeS5mbGFzaCgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzTWluaW1pemVkSW5uZXJNb2RhbChtb2RhbDogTW9kYWwpOiBib29sZWFuIHtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBwZWVrTG9ja0VudHJpZXMpIHtcbiAgICBpZiAoZW50cnkuaW5uZXJNb2RhbCA9PT0gbW9kYWwpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaXNQZWVrQWxsb3dlZEtleShldnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgLy8gTmF2aWdhdGlvbiBtb3ZlcyB0aGUgY3Vyc29yL3Njcm9sbHMgKGFsbG93ZWQpLCBidXQgU2hpZnQrbmF2aWdhdGlvbiBleHRlbmRzIHRoZSBzZWxlY3Rpb24gKG5vdFxuICAvLyBOZWVkZWQgZm9yIGluc3BlY3Rpb24pLCBzbyBpdCBpcyBibG9ja2VkLiBCYXJlIG1vZGlmaWVyIHByZXNzZXMgcGFzcyB0aHJvdWdoIG9uIHRoZWlyIG93bi5cbiAgaWYgKE5BVklHQVRJT05fS0VZUy5oYXMoZXZ0LmtleSkpIHtcbiAgICByZXR1cm4gIWV2dC5zaGlmdEtleTtcbiAgfVxuXG4gIHJldHVybiBNT0RJRklFUl9LRVlTLmhhcyhldnQua2V5KTtcbn1cblxuZnVuY3Rpb24gaXNQZWVrTG9ja2VkKCk6IGJvb2xlYW4ge1xuICAvLyBEcm9wIGVudHJpZXMgd2hvc2UgYmFyIGhhcyBsZWZ0IHRoZSBET00gd2l0aG91dCBhIHJlc3RvcmUoKSBvciBjbG9zZSgpLlxuICAvLyBBIHRlc3QgdGVhcmRvd24gdGhhdCBlbXB0aWVzIHRoZSBib2R5IGlzIHRoZSB0eXBpY2FsIGNhdXNlOyB0aGlzIGtlZXBzIGEgc3RhbGUgZW50cnkgZnJvbSBsb2NraW5nLlxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHBlZWtMb2NrRW50cmllcykge1xuICAgIGlmICghZW50cnkuYmFyRWwuaXNDb25uZWN0ZWQpIHtcbiAgICAgIHBlZWtMb2NrRW50cmllcy5kZWxldGUoZW50cnkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwZWVrTG9ja0VudHJpZXMuc2l6ZSA+IDA7XG59XG5cbmZ1bmN0aW9uIHNob3VsZEJsb2NrT3Blbihtb2RhbDogTW9kYWwpOiBib29sZWFuIHtcbiAgLy8gQSBtb2RhbCdzIG93biByZS1vcGVuIGlzIG5ldmVyIGJsb2NrZWQgXHUyMDE0IG90aGVyd2lzZSBhIG1pbmltaXplZCBtb2RhbCBjb3VsZCBub3QgcmVzdG9yZS9yZS1vcGVuXG4gIC8vIEl0c2VsZi4gRXZlcnkgT1RIRVIgbW9kYWwgb3BlbiBpcyBibG9ja2VkIHdoaWxlIGFueSBtb2RhbCBpcyBtaW5pbWl6ZWQgKHRoZSBwZWVrLW9ubHkgbG9jaykuXG4gIHJldHVybiBpc1BlZWtMb2NrZWQoKSAmJiAhaXNNaW5pbWl6ZWRJbm5lck1vZGFsKG1vZGFsKTtcbn1cblxuZnVuY3Rpb24gc2lnbmFsQmxvY2tlZEF0dGVtcHQoKTogdm9pZCB7XG4gIGZsYXNoTWluaW1pemVkQmFycygpO1xuICBiZWVwZXIuYmVlcCgpO1xufVxuXG5mdW5jdGlvbiBzdXBwcmVzc0tleWRvd25XaGlsZVBlZWtMb2NrZWQoZXZ0OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gIGlmICghaXNQZWVrTG9ja2VkKCkgfHwgaXNQZWVrQWxsb3dlZEtleShldnQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgYmxvY2tFdmVudChldnQpO1xufVxuXG5mdW5jdGlvbiBzdXBwcmVzc1doaWxlUGVla0xvY2tlZChldnQ6IEV2ZW50KTogdm9pZCB7XG4gIGlmICghaXNQZWVrTG9ja2VkKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBibG9ja0V2ZW50KGV2dCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2Q0Esc0JBR087QUFFUCxvQkFBdUI7QUFDdkIseUNBQXlDO0FBQ3pDLHFDQUFzQztBQUN0Qyx1QkFBeUI7QUFDekIsNEJBQW9DO0FBRXBDLE1BQU0sbUJBQW1CO0FBQ3pCLE1BQU0sa0JBQWtCO0FBS3hCLE1BQU0sa0JBQWtCLG9CQUFJLElBQVk7QUFBQSxFQUN0QztBQUFBLEVB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
418
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21vZGFscy9taW5pbWl6YWJsZS1tb2RhbC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEEgd3JhcHBlciB0aGF0IG1ha2VzIGFueSBPYnNpZGlhbiB7QGxpbmsgTW9kYWx9IG1pbmltaXphYmxlIHRvIGEgZmxvYXRpbmcgYmFyIFx1MjAxNCB3aXRob3V0IGJyZWFraW5nIHRoZVxuICogbW9kYWwncyBibG9ja2luZyBjb250cmFjdC5cbiAqXG4gKiBPYnNpZGlhbidzIHtAbGluayBNb2RhbH0gaXMgYmxvY2tpbmc6IHdoaWxlIGl0IGlzIG9wZW4gdGhlIHJlc3Qgb2YgdGhlIGFwcCBpcyBtZWFudCB0byBiZSBpbmVydCB1bnRpbFxuICogdGhlIG1vZGFsIGlzIGRpc21pc3NlZC4ge0BsaW5rIE1pbmltaXphYmxlTW9kYWx9IHdyYXBzIGFueSBtb2RhbCBpbnN0YW5jZSAocGxhaW4gYE1vZGFsYCxcbiAqIGBGdXp6eVN1Z2dlc3RNb2RhbGAsIHRoZSBsaWJyYXJ5J3MgYE1vZGFsQmFzZWAsIHlvdXIgb3duIHN1YmNsYXNzLCBcdTIwMjYgXHUyMDE0IGluY2x1ZGluZyBtb2RhbHMgeW91IGRvIG5vdFxuICogb3duKSBhbmQgYWRkcyBhIG1pbmltaXplIGJ1dHRvbi4gTWluaW1pemluZyBoaWRlcyB0aGUgbW9kYWwgYW5kIGl0cyBibG9ja2luZyBiYWNrZHJvcCBhbmQgc2hvd3MgYVxuICogc21hbGwgZmxvYXRpbmcgYmFyIHdpdGggYSByZXN0b3JlIGJ1dHRvbiAoYW5kLCBieSBkZWZhdWx0LCBhIENhbmNlbCBidXR0b24gdGhhdCBjbG9zZXMgdGhlIHdyYXBwZWRcbiAqIG1vZGFsIFx1MjAxNCBwYXNzIGB7IHNob3VsZFNob3dDYW5jZWxCdXR0b246IGZhbHNlIH1gIHRvIGhpZGUgaXQpLCBzbyB0aGUgdXNlciBjYW4gcGVlayBhdCB0aGVcbiAqIG5vdGVzL2ZvbGRlcnMgdGhlIG9wZXJhdGlvbiBpbnZvbHZlcyBcdTIwMTQgYnV0IHRoZSBtb2RhbCBpcyBOT1QgZGlzbWlzc2VkLCBzbyBpdHMgYmxvY2tpbmcgY29udHJhY3QgbXVzdCBiZSBwcmVzZXJ2ZWQuXG4gKlxuICogVG8ga2VlcCB0aGF0IGNvbnRyYWN0IHdoaWxlIG1pbmltaXplZCwgdGhlIHdyYXBwZXIgcHV0cyB0aGUgYXBwIGludG8gYSAqKnBlZWstb25seSBsb2NrKio6IHRoZSB1c2VyXG4gKiBtYXkgbW91c2UtY2xpY2sgYW5kIHNjcm9sbCB0byBpbnNwZWN0IGNvbnRlbnQsIGJ1dCBjYW5ub3Qgc3RhcnQgYW55dGhpbmcgbmV3LiBXaGlsZSBhbnkgbW9kYWwgaXNcbiAqIG1pbmltaXplZCB0aGUgd3JhcHBlcjpcbiAqIC0gYmxvY2tzIHRoZSBrZXlib2FyZCAodHlwaW5nLCBob3RrZXlzLCB0aGUgY29tbWFuZC1wYWxldHRlIHNob3J0Y3V0KSxcbiAqIC0gYmxvY2tzIHRoZSByaWdodC1jbGljayBjb250ZXh0IG1lbnUsIGFuZFxuICogLSBibG9ja3Mgb3BlbmluZyBhbnkgb3RoZXIgbW9kYWwgKGEgcmUtZmlyZWQgY29tbWFuZCwgdGhlIGNvbW1hbmQgcGFsZXR0ZSwgc2V0dGluZ3MsIFx1MjAyNikuXG4gKlxuICogQSBibG9ja2VkIGF0dGVtcHQgZmxhc2hlcyB0aGUgZmxvYXRpbmcgYmFyIGFuZCBiZWVwcyBzbyB0aGUgdXNlciBzZWVzIChhbmQgaGVhcnMpIHdoeSBub3RoaW5nXG4gKiBoYXBwZW5lZC4gUmVzdG9yaW5nIChvciB0aGUgbW9kYWwgY2xvc2luZykgbGlmdHMgdGhlIGxvY2suIFRoaXMgcHJldmVudHMsIGZvciBleGFtcGxlLCBtaW5pbWl6aW5nIGFcbiAqIFwibWVyZ2UgZm9sZGVyXCIgcGlja2VyIGFuZCB0aGVuIGZpcmluZyB0aGUgc2FtZSBjb21tYW5kIGFnYWluIHRvIHN0YWNrIHNldmVyYWwgY29uY3VycmVudCBtZXJnZXMuXG4gKlxuICogVGhlIHdyYXBwZXIgcmV1c2VzIHRoZSBtb2RhbCdzIG93biB0aXRsZSAoYHRpdGxlRWxgKSBhcyB0aGUgbWluaW1pemVkIGJhciBsYWJlbCwgc28gc2V0IHRoZSB0aXRsZVxuICogdGhlIHVzdWFsIHdheSAoYG1vZGFsLnNldFRpdGxlKC4uLilgKS4gUmVuZGVyIGFyYml0cmFyeSBjb250ZW50IGludG8ge0BsaW5rIE1vZGFsLmNvbnRlbnRFbH0sXG4gKiBpbmNsdWRpbmcgY2xpY2thYmxlIG5vdGUgbGlua3MgcHJvZHVjZWQgYnkgYHJlbmRlckludGVybmFsTGlua2AgZnJvbVxuICogYG9ic2lkaWFuLWRldi11dGlscy9vYnNpZGlhbi9tYXJrZG93bmA6XG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IG1vZGFsID0gbmV3IE15TW9kYWwoYXBwKTtcbiAqIG1vZGFsLnNldFRpdGxlKCdNZXJnaW5nIG5vdGVzJyk7XG4gKiBtb2RhbC5jb250ZW50RWwuYXBwZW5kQ2hpbGQoYXdhaXQgcmVuZGVySW50ZXJuYWxMaW5rKHsgYXBwLCBwYXRoT3JBYnN0cmFjdEZpbGU6IGZpbGUgfSkpO1xuICpcbiAqIGNvbnN0IG1pbmltaXphYmxlID0gbmV3IE1pbmltaXphYmxlTW9kYWwobW9kYWwpO1xuICogbWluaW1pemFibGUubW9kYWwub3BlbigpO1xuICogbWluaW1pemFibGUubWluaW1pemUoKTsgLy8gYSBmbG9hdGluZyBiYXIgb2ZmZXJzIFwicmVzdG9yZVwiOyB0aGUgYXBwIGlzIHBlZWstb25seSB1bnRpbCByZXN0b3JlZFxuICogYGBgXG4gKlxuICogVGhlIHdyYXBwZWQgbW9kYWwgY2FuIHN0aWxsIGJlIGNsb3NlZCBub3JtYWxseTsgdGhlIGZsb2F0aW5nIGJhciBpcyBjbGVhbmVkIHVwIGF1dG9tYXRpY2FsbHkgd2hlblxuICogdGhlIG1vZGFsIGNsb3NlcyAoZXZlbiBpZiBpdCBpcyBjbG9zZWQgd2hpbGUgbWluaW1pemVkKS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgTW9kYWwsXG4gIHNldEljb24sXG4gIHNldFRvb2x0aXBcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBCZWVwZXIgfSBmcm9tICcuLi8uLi9iZWVwZXIudHMnO1xuaW1wb3J0IHsgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgTW9ua2V5QXJvdW5kQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9tb25rZXktYXJvdW5kLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcblxuY29uc3QgTUlOSU1JWkVfSUNPTl9JRCA9ICdtaW51cyc7XG5jb25zdCBSRVNUT1JFX0lDT05fSUQgPSAnbWF4aW1pemUtMic7XG5jb25zdCBDQU5DRUxfSUNPTl9JRCA9ICd4JztcblxuLy8gTmF2aWdhdGlvbiBrZXlzIHBhc3MgdGhyb3VnaCB3aGlsZSBtaW5pbWl6ZWQgc28gdGhlIHVzZXIgY2FuIG1vdmUgdGhlIGN1cnNvciBhbmQgc2Nyb2xsIHRvIHJlYWQuXG4vLyBOb25lIG9mIHRoZW0gbXV0YXRlIHRoZSBkb2N1bWVudCBcdTIwMTQgdGV4dCBjaGFuZ2VzIGFyZSBjYXVnaHQgc2VwYXJhdGVseSBieSB0aGUgYGJlZm9yZWlucHV0YCBndWFyZC5cbi8vIFNoaWZ0K25hdmlnYXRpb24gaXMgYmxvY2tlZCwgdGhvdWdoLCBzaW5jZSBpdCBleHRlbmRzIHRoZSBzZWxlY3Rpb24gdGhhdCBpbnNwZWN0aW9uIGRvZXMgbm90IG5lZWQuXG5jb25zdCBOQVZJR0FUSU9OX0tFWVMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICAnQXJyb3dEb3duJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0Fycm93VXAnLFxuICAnRW5kJyxcbiAgJ0hvbWUnLFxuICAnUGFnZURvd24nLFxuICAnUGFnZVVwJ1xuXSk7XG5cbi8vIEEgYmFyZSBtb2RpZmllciBwcmVzcyBkb2VzIG5vdGhpbmcgb24gaXRzIG93biwgc28gaXQgcGFzc2VzIHRocm91Z2ggdGhlIGxvY2suXG4vLyBUaGlzIGF2b2lkcyBhIHNwdXJpb3VzIGZsYXNoL2JlZXAgd2hpbGUgY29tcG9zaW5nIGEgc2hvcnRjdXQ7IHRoZSBzaG9ydGN1dCdzIGNvbW1hbmQga2V5IGlzIGJsb2NrZWQuXG5jb25zdCBNT0RJRklFUl9LRVlTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgJ0FsdCcsXG4gICdDb250cm9sJyxcbiAgJ01ldGEnLFxuICAnU2hpZnQnXG5dKTtcblxuLyoqXG4gKiBBIHJlZ2lzdGVyZWQgZW50cnkgZm9yIGEgY3VycmVudGx5LW1pbmltaXplZCBtb2RhbC4gVGhlIHNoYXJlZCBwZWVrLW9ubHkgbG9jayB1c2VzIGl0IHRvIGtub3cgYVxuICogbW9kYWwgaXMgbWluaW1pemVkLCB0byBsZWF2ZSB0aGF0IG1vZGFsJ3Mgb3duIHJlLW9wZW5zIGFsb25lLCBhbmQgdG8gZmxhc2ggaXRzIGJhciBvbiBhIGJsb2NrZWRcbiAqIGF0dGVtcHQuXG4gKi9cbmludGVyZmFjZSBQZWVrTG9ja0VudHJ5IHtcbiAgLyoqXG4gICAqIFRoZSBmbG9hdGluZyBiYXIgZWxlbWVudC4gVXNlZCB0byBkZXRlY3QgYSBzdGFsZSBlbnRyeSAoaXRzIGJhciBoYXMgbGVmdCB0aGUgRE9NKSBzbyBpdCBjYW4gYmVcbiAgICogcHJ1bmVkIGFuZCBuZXZlciBrZWVwIHRoZSBhcHAgbG9ja2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgYmFyRWw6IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBGbGFzaGVzIHRoZSBmbG9hdGluZyBiYXIgdG8gc2lnbmFsIGEgYmxvY2tlZCBhdHRlbXB0LlxuICAgKi9cbiAgZmxhc2goKTogdm9pZDtcblxuICAvKipcbiAgICogVGhlIHdyYXBwZWQgbW9kYWwgaW5zdGFuY2UsIHNvIGl0cyBvd24gYG9wZW4oKWAgaXMgbmV2ZXIgYmxvY2tlZCBieSB0aGUgbG9jay5cbiAgICovXG4gIHJlYWRvbmx5IGlubmVyTW9kYWw6IE1vZGFsO1xufVxuXG5jb25zdCBwZWVrTG9ja0VudHJpZXMgPSBuZXcgU2V0PFBlZWtMb2NrRW50cnk+KCk7XG5jb25zdCBiZWVwZXIgPSBuZXcgQmVlcGVyKCk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uc3RydWN0aW5nIGEge0BsaW5rIE1pbmltaXphYmxlTW9kYWx9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pbmltaXphYmxlTW9kYWxDb25zdHJ1Y3Rvck9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgbWluaW1pemVkIGJhciBzaG93cyBhIENhbmNlbCBidXR0b24gdGhhdCBjbG9zZXMgdGhlIHdyYXBwZWQgbW9kYWwuIENsb3NpbmcgbGV0cyB0aGVcbiAgICogd3JhcHBlZCBtb2RhbCdzIG93biBgb25DbG9zZWAgZGVmaW5lIHdoYXQgXCJjYW5jZWxcIiBtZWFucyAoZS5nLiByZWxlYXNpbmcgYSBoZWxkIGxvY2spLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dDYW5jZWxCdXR0b24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEluc3RhbGxzIHRoZSBwZWVrLW9ubHkgbG9jaydzIGBvcGVuYCBwYXRjaGVzIHdoaWxlIGF0IGxlYXN0IG9uZSBtb2RhbCBpcyBtaW5pbWl6ZWQuIEJlaW5nIGFcbiAqIHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnR9LCBib3RoIHBhdGNoZXMgYXJlIHRvcm4gZG93biBhdXRvbWF0aWNhbGx5IG9uIGB1bmxvYWRgLCBzbyB0aGV5IGV4aXN0XG4gKiBvbmx5IHdoaWxlIHRoZSBsb2NrIGlzIGFjdGl2ZS4gQSBtaW5pbWl6ZWQgbW9kYWwncyBvd24gcmUtb3BlbiBpcyBhbHdheXMgYWxsb3dlZCAoc2VlXG4gKiB7QGxpbmsgc2hvdWxkQmxvY2tPcGVufSk7IGV2ZXJ5IG90aGVyIG1vZGFsIG9wZW4gaXMgYmxvY2tlZCBhbmQgc2lnbmFscyBhIGZsYXNoICsgYmVlcC5cbiAqL1xuY2xhc3MgUGVla0xvY2tDb21wb25lbnQgZXh0ZW5kcyBNb25rZXlBcm91bmRDb21wb25lbnQge1xuICAvKipcbiAgICogQ29uc3RydWN0cyBhIG5ldyBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIGFwcCAtIFRoZSBhcHAgd2hvc2Ugc2V0dGluZ3MgbW9kYWwgaXMgZ3VhcmRlZCBhbmQgd2hvc2Ugd2luZG93cyBzdXBwcmVzcyBpbnB1dCB3aGlsZSBsb2NrZWQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhcHA6IEFwcCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHRoZSBgb3BlbmAgcGF0Y2hlcyBhbmQgdGhlIGlucHV0IHN1cHByZXNzb3JzLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9ubG9hZCgpOiB2b2lkIHtcbiAgICBzdXBlci5vbmxvYWQoKTtcblxuICAgIC8vIEJsb2NrIG9wZW5pbmcgYW55IE9USEVSIG1vZGFsIHdoaWxlIGEgbW9kYWwgaXMgbWluaW1pemVkICh0aGUgY29tbWFuZCBwYWxldHRlLCBhIHJlLWZpcmVkXG4gICAgLy8gQ29tbWFuZCwgYW5vdGhlciBwbHVnaW4gbW9kYWwsIFx1MjAyNikuXG4gICAgdGhpcy5yZWdpc3Rlck1ldGhvZFBhdGNoPE1vZGFsLCAnb3Blbic+KHtcbiAgICAgIG1ldGhvZE5hbWU6ICdvcGVuJyxcbiAgICAgIG9iajogTW9kYWwucHJvdG90eXBlLFxuICAgICAgcGF0Y2hIYW5kbGVyOiAoeyBmYWxsYmFjaywgb3JpZ2luYWxUaGlzIH0pOiB2b2lkID0+IHtcbiAgICAgICAgYmxvY2tPckZhbGxiYWNrKG9yaWdpbmFsVGhpcywgZmFsbGJhY2spO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gT2JzaWRpYW4ncyBTZXR0aW5ncyBpcyBhICpwb3BvdXQqIG1vZGFsOiBvbiBkZXNrdG9wIGl0cyBvd24gYG9wZW4oKWAgZmlyc3QgY3JlYXRlcyBhIHNlcGFyYXRlIE9TXG4gICAgLy8gV2luZG93ICh2aWEgYHNob3VsZFVzZVBvcG91dCgpYC9gZ2V0UG9wb3V0T3B0aW9ucygpYCkgYW5kIG9ubHkgVEhFTiBkZWxlZ2F0ZXMgdG9cbiAgICAvLyBgTW9kYWwucHJvdG90eXBlLm9wZW5gIHRvIHJlbmRlciB0aGUgYWN0aXZlIHRhYiBpbnRvIGl0LiBHdWFyZGluZyBvbmx5IGBNb2RhbC5wcm90b3R5cGUub3BlbmBcbiAgICAvLyBUaGVyZWZvcmUgYmxvY2tzIHRoZSByZW5kZXIgYnV0IGxlYXZlcyBhbiBlbXB0eSBzZXR0aW5ncyB3aW5kb3cgYmVoaW5kIFx1MjAxNCB0aGUgcmVwb3J0ZWQgYmFkIFVYLlxuICAgIC8vIEd1YXJkaW5nIHRoZSBzZXR0aW5ncyBtb2RhbCdzIG93biBgb3BlbigpYCBibG9ja3MgaXQgKmJlZm9yZSogdGhlIHdpbmRvdyBpcyBjcmVhdGVkLlxuICAgIHRoaXMucmVnaXN0ZXJNZXRob2RQYXRjaDxBcHBbJ3NldHRpbmcnXSwgJ29wZW4nPih7XG4gICAgICBtZXRob2ROYW1lOiAnb3BlbicsXG4gICAgICBvYmo6IHRoaXMuYXBwLnNldHRpbmcsXG4gICAgICBwYXRjaEhhbmRsZXI6ICh7IGZhbGxiYWNrLCBvcmlnaW5hbFRoaXMgfSk6IHZvaWQgPT4ge1xuICAgICAgICBibG9ja09yRmFsbGJhY2sob3JpZ2luYWxUaGlzLCBmYWxsYmFjayk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBTdXBwcmVzcyB0aGUga2V5Ym9hcmQsIGVkaXRvciBtdXRhdGlvbiwgYW5kIHRoZSBjb250ZXh0IG1lbnUgYWNyb3NzIEFMTCB3aW5kb3dzIFx1MjAxNCB0aGUgbWFpbiB3aW5kb3dcbiAgICAvLyBBbmQgZXZlcnkgZXhpc3RpbmcvZnV0dXJlIHBvcG91dCBcdTIwMTQgc28gdGhlIGxvY2sgaG9sZHMgd2hlcmV2ZXIgdGhlIHVzZXIncyBmb2N1cyBpcywgbm90IG9ubHkgaW5cbiAgICAvLyBUaGUgd2luZG93IHRoYXQgb3ducyB0aGUgbWluaW1pemVkIG1vZGFsLiBDYXB0dXJlLXBoYXNlIGxpc3RlbmVycyBydW4gYmVmb3JlIE9ic2lkaWFuJ3Mgb3duXG4gICAgLy8gRG9jdW1lbnQvZWxlbWVudCBoYW5kbGVycyAoaW5jbHVkaW5nIENvZGVNaXJyb3IncyksIHNvIGBzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKWAgaW4gdGhlXG4gICAgLy8gU3VwcHJlc3NvcnMga2VlcHMgYSBibG9ja2VkIGV2ZW50IGZyb20gZXZlciByZWFjaGluZyB0aGVtLiBga2V5ZG93bmAgbGV0cyBuYXZpZ2F0aW9uIGtleXMgdGhyb3VnaFxuICAgIC8vIChzZWUgYGlzUGVla0FsbG93ZWRLZXlgKSBidXQgYmxvY2tzIGNvbW1hbmQgaG90a2V5czsgYGJlZm9yZWlucHV0YCBibG9ja3MgYWxsIGVkaXRvciBtdXRhdGlvbjtcbiAgICAvLyBgY29udGV4dG1lbnVgIGJsb2NrcyB0aGUgcmlnaHQtY2xpY2sgbWVudS5cbiAgICBjb25zdCBhbGxXaW5kb3dzRXZlbnRDb21wb25lbnQgPSB0aGlzLmFkZENoaWxkKG5ldyBBbGxXaW5kb3dzRXZlbnRDb21wb25lbnQodGhpcy5hcHApKTtcbiAgICBhbGxXaW5kb3dzRXZlbnRDb21wb25lbnQucmVnaXN0ZXJBbGxXaW5kb3dzRG9tRXZlbnQoe1xuICAgICAgY2FsbGJhY2s6IHN1cHByZXNzS2V5ZG93bldoaWxlUGVla0xvY2tlZCxcbiAgICAgIG9wdGlvbnM6IHsgY2FwdHVyZTogdHJ1ZSB9LFxuICAgICAgdHlwZTogJ2tleWRvd24nXG4gICAgfSk7XG4gICAgYWxsV2luZG93c0V2ZW50Q29tcG9uZW50LnJlZ2lzdGVyQWxsV2luZG93c0RvbUV2ZW50KHtcbiAgICAgIGNhbGxiYWNrOiBzdXBwcmVzc1doaWxlUGVla0xvY2tlZCxcbiAgICAgIG9wdGlvbnM6IHsgY2FwdHVyZTogdHJ1ZSB9LFxuICAgICAgdHlwZTogJ2JlZm9yZWlucHV0J1xuICAgIH0pO1xuICAgIGFsbFdpbmRvd3NFdmVudENvbXBvbmVudC5yZWdpc3RlckFsbFdpbmRvd3NEb21FdmVudCh7XG4gICAgICBjYWxsYmFjazogc3VwcHJlc3NXaGlsZVBlZWtMb2NrZWQsXG4gICAgICBvcHRpb25zOiB7IGNhcHR1cmU6IHRydWUgfSxcbiAgICAgIHR5cGU6ICdjb250ZXh0bWVudSdcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFdyYXBzIGEge0BsaW5rIE1vZGFsfSBpbnN0YW5jZSB0byBtYWtlIGl0IG1pbmltaXphYmxlIHRvIGEgc21hbGwgZmxvYXRpbmcgYmFyIGFuZCByZXN0b3JhYmxlLiBXaGlsZVxuICogbWluaW1pemVkIHRoZSBhcHAgaXMgcHV0IGludG8gYSBwZWVrLW9ubHkgbG9jayAoa2V5Ym9hcmQsIGNvbnRleHQgbWVudSwgYW5kIG9wZW5pbmcgb3RoZXIgbW9kYWxzIGFyZVxuICogYmxvY2tlZCkgc28gdGhlIG1vZGFsJ3MgYmxvY2tpbmcgY29udHJhY3QgaXMgcHJlc2VydmVkLlxuICpcbiAqIEB0eXBlUGFyYW0gVE1vZGFsIC0gVGhlIHR5cGUgb2YgdGhlIHdyYXBwZWQgbW9kYWwuXG4gKi9cbmV4cG9ydCBjbGFzcyBNaW5pbWl6YWJsZU1vZGFsPFRNb2RhbCBleHRlbmRzIE1vZGFsPiB7XG4gIC8qKlxuICAgKiBUaGUgd3JhcHBlZCBtb2RhbC4gT3BlbiwgY2xvc2UsIGFuZCBwb3B1bGF0ZSBpdCBhcyB1c3VhbCAoZS5nLiBgbWluaW1pemFibGUubW9kYWwub3BlbigpYCkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbW9kYWw6IFRNb2RhbDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbW9kYWwgaXMgY3VycmVudGx5IG1pbmltaXplZC5cbiAgICpcbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBtb2RhbCBpcyBjdXJyZW50bHkgbWluaW1pemVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgaXNNaW5pbWl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNNaW5pbWl6ZWRWYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRjaGVzIHRoZSB3cmFwcGVkIG1vZGFsJ3MgYG9uQ2xvc2VgIHRvIHJ1biBjbGVhbnVwLiBQZXJzaXN0cyBmb3IgdGhlIHdyYXBwZXIncyB3aG9sZSBsaWZlIChhXG4gICAqIG1vZGFsIGNhbiBiZSByZW9wZW5lZCwgc28gdGhlIHBhdGNoIG11c3Qgc3Vydml2ZSBlYWNoIGNsb3NlKSwgaGVuY2UgYSBkZWRpY2F0ZWQgY29tcG9uZW50IHRoYXQgaXNcbiAgICogbmV2ZXIgdW5sb2FkZWQgXHUyMDE0IGRpc3RpbmN0IGZyb20gYHBlZWtMb2NrQ29tcG9uZW50YCwgd2hvc2UgcGF0Y2hlcyBsaXZlIG9ubHkgd2hpbGUgbWluaW1pemVkLlxuICAgKiBFeHBvc2VkIHRvIHN1YmNsYXNzZXMgc28gdGhleSBjYW4gcmVnaXN0ZXIgYWRkaXRpb25hbCBsaWZldGltZS1zY29wZWQgcGF0Y2hlcyBvbiB0aGUgd3JhcHBlci5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjbG9zZVBhdGNoQ29tcG9uZW50ID0gbmV3IE1vbmtleUFyb3VuZENvbXBvbmVudCgpO1xuXG4gIHByaXZhdGUgaXNNaW5pbWl6ZWRWYWx1ZSA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IG1pbmltaXplQnV0dG9uRWw6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIG1pbmltaXplZEJhckVsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHBlZWtMb2NrQ29tcG9uZW50OiBudWxsIHwgUGVla0xvY2tDb21wb25lbnQgPSBudWxsO1xuICBwcml2YXRlIHBlZWtMb2NrRW50cnk6IG51bGwgfCBQZWVrTG9ja0VudHJ5ID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBzaG91bGRTaG93Q2FuY2VsQnV0dG9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXcmFwcyB0aGUgZ2l2ZW4gbW9kYWwsIGFkZGluZyBhIG1pbmltaXplIGJ1dHRvbiBhbmQgd2lyaW5nIHVwIGNsZWFudXAgb24gY2xvc2UuXG4gICAqXG4gICAqIEBwYXJhbSBtb2RhbCAtIFRoZSBtb2RhbCBpbnN0YW5jZSB0byBtYWtlIG1pbmltaXphYmxlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgY29udHJvbGxpbmcgdGhlIG1pbmltaXplZCBiYXIuIFNlZSB7QGxpbmsgTWluaW1pemFibGVNb2RhbENvbnN0cnVjdG9yT3B0aW9uc30uXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IobW9kYWw6IFRNb2RhbCwgb3B0aW9uczogTWluaW1pemFibGVNb2RhbENvbnN0cnVjdG9yT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy5tb2RhbCA9IG1vZGFsO1xuICAgIHRoaXMuc2hvdWxkU2hvd0NhbmNlbEJ1dHRvbiA9IG9wdGlvbnMuc2hvdWxkU2hvd0NhbmNlbEJ1dHRvbiA/PyB0cnVlO1xuICAgIGFkZFBsdWdpbkNzc0NsYXNzZXMobW9kYWwuY29udGFpbmVyRWwsIFtDc3NDbGFzcy5NaW5pbWl6YWJsZU1vZGFsXSk7XG4gICAgdGhpcy5taW5pbWl6ZUJ1dHRvbkVsID0gdGhpcy5jcmVhdGVNaW5pbWl6ZUJ1dHRvbigpO1xuICAgIHRoaXMuY2xvc2VQYXRjaENvbXBvbmVudC5sb2FkKCk7XG4gICAgdGhpcy5wYXRjaE9uQ2xvc2UobW9kYWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1pbmltaXplcyB0aGUgbW9kYWw6IGhpZGVzIHRoZSBtb2RhbCBhbmQgaXRzIGJhY2tkcm9wLCBzaG93cyBhIGZsb2F0aW5nIGJhciB3aXRoIGEgcmVzdG9yZSBidXR0b24sXG4gICAqIGFuZCBwdXRzIHRoZSBhcHAgaW50byB0aGUgcGVlay1vbmx5IGxvY2suIEEgbm8tb3AgaWYgdGhlIG1vZGFsIGlzIGFscmVhZHkgbWluaW1pemVkLlxuICAgKi9cbiAgcHVibGljIG1pbmltaXplKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzTWluaW1pemVkVmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzTWluaW1pemVkVmFsdWUgPSB0cnVlO1xuICAgIHRoaXMubWluaW1pemVCdXR0b25FbC5oaWRlKCk7XG4gICAgdGhpcy5tb2RhbC5jb250YWluZXJFbC5oaWRlKCk7XG4gICAgLy8gVGhlIG1vZGFsIHN0YXlzIG9wZW4gd2hpbGUgbWluaW1pemVkLCBzbyBpdHMga2V5bWFwIHNjb3BlIGlzIHBvcHBlZCB0byByZWxlYXNlIHRoZSBmb2N1cyB0cmFwLlxuICAgIC8vIFJlc3RvcmluZyByZS1wdXNoZXMgaXQuIEFuIGFjdGl2ZSB0cmFwIHdvdWxkIHN0ZWFsIGZvY3VzIGJhY2sgdG8gdGhlIGhpZGRlbiBtb2RhbCwgYmxvY2tpbmcgdGhlXG4gICAgLy8gTW91c2UtZHJpdmVuIGluc3BlY3Rpb24gKGNsaWNraW5nIG5vdGVzLCBzY3JvbGxpbmcpIHRoYXQgbWluaW1pemUgZXhpc3RzIHRvIGFsbG93LlxuICAgIC8vIEtleWJvYXJkIGlucHV0IHJlbWFpbnMgYmxvY2tlZCBieSB0aGUgcGVlay1vbmx5IGxvY2ssIHNvIHJlbGVhc2luZyB0aGUgdHJhcCBrZWVwcyB0aGUgYXBwIGluZXJ0LlxuICAgIHRoaXMubW9kYWwuYXBwLmtleW1hcC5wb3BTY29wZSh0aGlzLm1vZGFsLnNjb3BlKTtcbiAgICB0aGlzLm1pbmltaXplZEJhckVsID0gdGhpcy5jcmVhdGVNaW5pbWl6ZWRCYXIoKTtcbiAgICB0aGlzLmVuYWJsZVBlZWtMb2NrKHRoaXMubWluaW1pemVkQmFyRWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIHRoZSBtb2RhbCBmcm9tIHRoZSBtaW5pbWl6ZWQgc3RhdGUsIHJlbW92aW5nIHRoZSBmbG9hdGluZyBiYXIgYW5kIGxpZnRpbmcgdGhlIHBlZWstb25seVxuICAgKiBsb2NrLiBBIG5vLW9wIGlmIHRoZSBtb2RhbCBpcyBub3QgbWluaW1pemVkLlxuICAgKi9cbiAgcHVibGljIHJlc3RvcmUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzTWluaW1pemVkVmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzTWluaW1pemVkVmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLmRpc2FibGVQZWVrTG9jaygpO1xuICAgIHRoaXMucmVtb3ZlTWluaW1pemVkQmFyKCk7XG4gICAgLy8gUmUtcHVzaCB0aGUgc2NvcGUgcG9wcGVkIGluIG1pbmltaXplKCkgc28gdGhlIHJlc3RvcmVkIG1vZGFsIGJsb2NrcyB0aGUgYXBwIGFnYWluIChmb2N1cyB0cmFwXG4gICAgLy8gKyBFc2NhcGUgY2FwdHVyZSkuXG4gICAgdGhpcy5tb2RhbC5hcHAua2V5bWFwLnB1c2hTY29wZSh0aGlzLm1vZGFsLnNjb3BlKTtcbiAgICB0aGlzLm1vZGFsLmNvbnRhaW5lckVsLnNob3coKTtcbiAgICB0aGlzLm1pbmltaXplQnV0dG9uRWwuc2hvdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVNaW5pbWl6ZUJ1dHRvbigpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgYnV0dG9uRWwgPSB0aGlzLm1vZGFsLm1vZGFsRWwuY3JlYXRlRWwoJ2J1dHRvbicsIHsgY2xzOiBDc3NDbGFzcy5NaW5pbWl6ZUJ1dHRvbiB9KTtcbiAgICBzZXRJY29uKGJ1dHRvbkVsLCBNSU5JTUlaRV9JQ09OX0lEKTtcbiAgICBidXR0b25FbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHRoaXMubWluaW1pemUoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYnV0dG9uRWw7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1pbmltaXplZEJhcigpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgYmFyRWwgPSB0aGlzLm1vZGFsLmNvbnRhaW5lckVsLm93bmVyRG9jdW1lbnQuYm9keS5jcmVhdGVEaXYoKTtcbiAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKGJhckVsLCBbQ3NzQ2xhc3MuTWluaW1pemVkTW9kYWxCYXJdKTtcbiAgICBiYXJFbC5jcmVhdGVTcGFuKHtcbiAgICAgIGNsczogQ3NzQ2xhc3MuTWluaW1pemVkTW9kYWxCYXJUaXRsZSxcbiAgICAgIHRleHQ6IHRoaXMubW9kYWwudGl0bGVFbC50ZXh0Q29udGVudFxuICAgIH0pO1xuICAgIGNvbnN0IHJlc3RvcmVCdXR0b25FbCA9IGJhckVsLmNyZWF0ZUVsKCdidXR0b24nLCB7IGNsczogQ3NzQ2xhc3MuUmVzdG9yZUJ1dHRvbiB9KTtcbiAgICBzZXRJY29uKHJlc3RvcmVCdXR0b25FbCwgUkVTVE9SRV9JQ09OX0lEKTtcbiAgICBpZiAodGhpcy5zaG91bGRTaG93Q2FuY2VsQnV0dG9uKSB7XG4gICAgICBjb25zdCBjYW5jZWxCdXR0b25FbCA9IGJhckVsLmNyZWF0ZUVsKCdidXR0b24nLCB7IGNsczogQ3NzQ2xhc3MuQ2FuY2VsQnV0dG9uIH0pO1xuICAgICAgc2V0SWNvbihjYW5jZWxCdXR0b25FbCwgQ0FOQ0VMX0lDT05fSUQpO1xuICAgICAgc2V0VG9vbHRpcChjYW5jZWxCdXR0b25FbCwgJ0NhbmNlbCcpO1xuICAgICAgY2FuY2VsQnV0dG9uRWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZ0KSA9PiB7XG4gICAgICAgIC8vIFRoZSB3aG9sZSBiYXIgcmVzdG9yZXMgb24gY2xpY2s7IHN0b3AgcHJvcGFnYXRpb24gc28gQ2FuY2VsIGNsb3NlcyB0aGUgbW9kYWwgaW5zdGVhZCBvZlxuICAgICAgICAvLyBSZXN0b3JpbmcgaXQuIENsb3NpbmcgcnVucyB0aGUgd3JhcHBlZCBtb2RhbCdzIG9uQ2xvc2UgKHBlZWsgbG9jayBsaWZ0ZWQsIGJhciByZW1vdmVkKSwgc29cbiAgICAgICAgLy8gVGhlIGNvbnN1bWVyJ3Mgb25DbG9zZSBkZWNpZGVzIHdoYXQgXCJjYW5jZWxcIiBtZWFucyAoZS5nLiByZWxlYXNpbmcgYSBoZWxkIGxvY2spLlxuICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBUaGUgd2hvbGUgYmFyIHJlc3RvcmVzIG9uIGNsaWNrLCBub3QganVzdCB0aGUgcmVzdG9yZSBidXR0b24gXHUyMDE0IGEgbGFyZ2VyLCBlYXNpZXIgY2xpY2sgdGFyZ2V0LlxuICAgIC8vIGByZXN0b3JlKClgIGd1YXJkcyBhZ2FpbnN0IGEgZG91YmxlIGludm9jYXRpb24sIHNvIHRoZSByZXN0b3JlIGJ1dHRvbidzIG93biBjbGljayBidWJibGluZyB1cFxuICAgIC8vIEhlcmUgaXMgYSBuby1vcC4gVGhlIHJlc3RvcmUgYnV0dG9uIHN0YXlzIHB1cmVseSBhcyBhIHZpc3VhbCBhZmZvcmRhbmNlIGZvciB0aGUgY2xpY2sgdGFyZ2V0LlxuICAgIGJhckVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGhpcy5yZXN0b3JlKCk7XG4gICAgfSk7XG4gICAgLy8gRHJvcCB0aGUgb25lLXNob3QgYXR0ZW50aW9uIGZsYXNoIG9uY2UgaXQgZmluaXNoZXMgc28gdGhlIGJhciByZXR1cm5zIHRvIGl0cyBnZW50bGUgaWRsZSBwdWxzZS5cbiAgICAvLyBUaGUgaWRsZSBwdWxzZSBpcyBhbiBpbmZpbml0ZSBhbmltYXRpb24sIHdoaWNoIG5ldmVyIGZpcmVzIGBhbmltYXRpb25lbmRgLlxuICAgIGJhckVsLmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsICgpID0+IHtcbiAgICAgIGJhckVsLnJlbW92ZUNsYXNzKENzc0NsYXNzLk1pbmltaXplZE1vZGFsQmFyQXR0ZW50aW9uKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYmFyRWw7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGVQZWVrTG9jaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGVla0xvY2tFbnRyeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHBlZWtMb2NrRW50cmllcy5kZWxldGUodGhpcy5wZWVrTG9ja0VudHJ5KTtcbiAgICB0aGlzLnBlZWtMb2NrRW50cnkgPSBudWxsO1xuICAgIC8vIFRlYXIgdGhlIGBvcGVuYCBwYXRjaGVzIGRvd24gd2l0aCB0aGUgY29tcG9uZW50LCBzbyB0aGV5IGV4aXN0IG9ubHkgd2hpbGUgdGhpcyBtb2RhbCBpcyBtaW5pbWl6ZWQuXG4gICAgdGhpcy5wZWVrTG9ja0NvbXBvbmVudD8udW5sb2FkKCk7XG4gICAgdGhpcy5wZWVrTG9ja0NvbXBvbmVudCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGVuYWJsZVBlZWtMb2NrKGJhckVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMucGVla0xvY2tFbnRyeSA9IHtcbiAgICAgIGJhckVsLFxuICAgICAgZmxhc2g6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5mbGFzaEJhcihiYXJFbCk7XG4gICAgICB9LFxuICAgICAgaW5uZXJNb2RhbDogdGhpcy5tb2RhbFxuICAgIH07XG4gICAgcGVla0xvY2tFbnRyaWVzLmFkZCh0aGlzLnBlZWtMb2NrRW50cnkpO1xuICAgIC8vIEluc3RhbGwgdGhlIGBvcGVuYCBwYXRjaGVzIGFuZCBpbnB1dCBzdXBwcmVzc29ycyBmb3IgYXMgbG9uZyBhcyB0aGlzIG1vZGFsIGlzIG1pbmltaXplZC4gVGhlXG4gICAgLy8gQmxvY2sgTE9HSUMgaXRzZWxmIGtleXMgb2ZmIHRoZSBzaGFyZWQgYHBlZWtMb2NrRW50cmllc2AgKHNlZSBgc2hvdWxkQmxvY2tPcGVuYCksIHNvIHdpdGggc2V2ZXJhbFxuICAgIC8vIE1vZGFscyBtaW5pbWl6ZWQgZXZlcnkgb25lJ3MgcGF0Y2ggcmVhY2hlcyB0aGUgc2FtZSB2ZXJkaWN0OyB0aGUgbG9jayBsaWZ0cyBvbmx5IG9uY2UgdGhlIGxhc3RcbiAgICAvLyBNb2RhbCByZXN0b3Jlcy9jbG9zZXMuXG4gICAgdGhpcy5wZWVrTG9ja0NvbXBvbmVudCA9IG5ldyBQZWVrTG9ja0NvbXBvbmVudCh0aGlzLm1vZGFsLmFwcCk7XG4gICAgdGhpcy5wZWVrTG9ja0NvbXBvbmVudC5sb2FkKCk7XG4gIH1cblxuICBwcml2YXRlIGZsYXNoQmFyKGJhckVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGJhckVsLnJlbW92ZUNsYXNzKENzc0NsYXNzLk1pbmltaXplZE1vZGFsQmFyQXR0ZW50aW9uKTtcbiAgICAvLyBGb3JjZSBhIHJlZmxvdyBzbyByZS1hZGRpbmcgdGhlIGNsYXNzIHJlc3RhcnRzIHRoZSBvbmUtc2hvdCBmbGFzaCBvbiByYXBpZCByZXBlYXRlZCBibG9ja3MuXG4gICAgYmFyRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgYmFyRWwuYWRkQ2xhc3MoQ3NzQ2xhc3MuTWluaW1pemVkTW9kYWxCYXJBdHRlbnRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVQZWVrTG9jaygpO1xuICAgIHRoaXMucmVtb3ZlTWluaW1pemVkQmFyKCk7XG4gICAgdGhpcy5pc01pbmltaXplZFZhbHVlID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHBhdGNoT25DbG9zZShtb2RhbDogTW9kYWwpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlUGF0Y2hDb21wb25lbnQucmVnaXN0ZXJNZXRob2RQYXRjaDxNb2RhbCwgJ29uQ2xvc2UnPih7XG4gICAgICBtZXRob2ROYW1lOiAnb25DbG9zZScsXG4gICAgICBvYmo6IG1vZGFsLFxuICAgICAgcGF0Y2hIYW5kbGVyOiAoeyBmYWxsYmFjayB9KTogdm9pZCA9PiB7XG4gICAgICAgIGZhbGxiYWNrKCk7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTWluaW1pemVkQmFyKCk6IHZvaWQge1xuICAgIHRoaXMubWluaW1pemVkQmFyRWw/LnJlbW92ZSgpO1xuICAgIHRoaXMubWluaW1pemVkQmFyRWwgPSBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJsb2NrRXZlbnQoZXZ0OiBFdmVudCk6IHZvaWQge1xuICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICBzaWduYWxCbG9ja2VkQXR0ZW1wdCgpO1xufVxuXG5mdW5jdGlvbiBibG9ja09yRmFsbGJhY2sobW9kYWw6IE1vZGFsLCBmYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICBpZiAoc2hvdWxkQmxvY2tPcGVuKG1vZGFsKSkge1xuICAgIHNpZ25hbEJsb2NrZWRBdHRlbXB0KCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZmFsbGJhY2soKTtcbn1cblxuZnVuY3Rpb24gZmxhc2hNaW5pbWl6ZWRCYXJzKCk6IHZvaWQge1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHBlZWtMb2NrRW50cmllcykge1xuICAgIGVudHJ5LmZsYXNoKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNNaW5pbWl6ZWRJbm5lck1vZGFsKG1vZGFsOiBNb2RhbCk6IGJvb2xlYW4ge1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHBlZWtMb2NrRW50cmllcykge1xuICAgIGlmIChlbnRyeS5pbm5lck1vZGFsID09PSBtb2RhbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc1BlZWtBbGxvd2VkS2V5KGV2dDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAvLyBOYXZpZ2F0aW9uIG1vdmVzIHRoZSBjdXJzb3Ivc2Nyb2xscyAoYWxsb3dlZCksIGJ1dCBTaGlmdCtuYXZpZ2F0aW9uIGV4dGVuZHMgdGhlIHNlbGVjdGlvbiAobm90XG4gIC8vIE5lZWRlZCBmb3IgaW5zcGVjdGlvbiksIHNvIGl0IGlzIGJsb2NrZWQuIEJhcmUgbW9kaWZpZXIgcHJlc3NlcyBwYXNzIHRocm91Z2ggb24gdGhlaXIgb3duLlxuICBpZiAoTkFWSUdBVElPTl9LRVlTLmhhcyhldnQua2V5KSkge1xuICAgIHJldHVybiAhZXZ0LnNoaWZ0S2V5O1xuICB9XG5cbiAgcmV0dXJuIE1PRElGSUVSX0tFWVMuaGFzKGV2dC5rZXkpO1xufVxuXG5mdW5jdGlvbiBpc1BlZWtMb2NrZWQoKTogYm9vbGVhbiB7XG4gIC8vIERyb3AgZW50cmllcyB3aG9zZSBiYXIgaGFzIGxlZnQgdGhlIERPTSB3aXRob3V0IGEgcmVzdG9yZSgpIG9yIGNsb3NlKCkuXG4gIC8vIEEgdGVzdCB0ZWFyZG93biB0aGF0IGVtcHRpZXMgdGhlIGJvZHkgaXMgdGhlIHR5cGljYWwgY2F1c2U7IHRoaXMga2VlcHMgYSBzdGFsZSBlbnRyeSBmcm9tIGxvY2tpbmcuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgcGVla0xvY2tFbnRyaWVzKSB7XG4gICAgaWYgKCFlbnRyeS5iYXJFbC5pc0Nvbm5lY3RlZCkge1xuICAgICAgcGVla0xvY2tFbnRyaWVzLmRlbGV0ZShlbnRyeSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBlZWtMb2NrRW50cmllcy5zaXplID4gMDtcbn1cblxuZnVuY3Rpb24gc2hvdWxkQmxvY2tPcGVuKG1vZGFsOiBNb2RhbCk6IGJvb2xlYW4ge1xuICAvLyBBIG1vZGFsJ3Mgb3duIHJlLW9wZW4gaXMgbmV2ZXIgYmxvY2tlZCBcdTIwMTQgb3RoZXJ3aXNlIGEgbWluaW1pemVkIG1vZGFsIGNvdWxkIG5vdCByZXN0b3JlL3JlLW9wZW5cbiAgLy8gSXRzZWxmLiBFdmVyeSBPVEhFUiBtb2RhbCBvcGVuIGlzIGJsb2NrZWQgd2hpbGUgYW55IG1vZGFsIGlzIG1pbmltaXplZCAodGhlIHBlZWstb25seSBsb2NrKS5cbiAgcmV0dXJuIGlzUGVla0xvY2tlZCgpICYmICFpc01pbmltaXplZElubmVyTW9kYWwobW9kYWwpO1xufVxuXG5mdW5jdGlvbiBzaWduYWxCbG9ja2VkQXR0ZW1wdCgpOiB2b2lkIHtcbiAgZmxhc2hNaW5pbWl6ZWRCYXJzKCk7XG4gIGJlZXBlci5iZWVwKCk7XG59XG5cbmZ1bmN0aW9uIHN1cHByZXNzS2V5ZG93bldoaWxlUGVla0xvY2tlZChldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgaWYgKCFpc1BlZWtMb2NrZWQoKSB8fCBpc1BlZWtBbGxvd2VkS2V5KGV2dCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBibG9ja0V2ZW50KGV2dCk7XG59XG5cbmZ1bmN0aW9uIHN1cHByZXNzV2hpbGVQZWVrTG9ja2VkKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgaWYgKCFpc1BlZWtMb2NrZWQoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGJsb2NrRXZlbnQoZXZ0KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThDQSxzQkFJTztBQUVQLG9CQUF1QjtBQUN2Qix5Q0FBeUM7QUFDekMscUNBQXNDO0FBQ3RDLHVCQUF5QjtBQUN6Qiw0QkFBb0M7QUFFcEMsTUFBTSxtQkFBbUI7QUFDekIsTUFBTSxrQkFBa0I7QUFDeEIsTUFBTSxpQkFBaUI7QUFLdkIsTUFBTSxrQkFBa0Isb0JBQUksSUFBWTtBQUFBLEVBQ3RDO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLENBQUM7QUFJRCxNQUFNLGdCQUFnQixvQkFBSSxJQUFZO0FBQUEsRUFDcEM7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRixDQUFDO0FBeUJELE1BQU0sa0JBQWtCLG9CQUFJLElBQW1CO0FBQy9DLE1BQU0sU0FBUyxJQUFJLHFCQUFPO0FBcUIxQixNQUFNLDBCQUEwQixxREFBc0I7QUFBQTtBQUFBO0FBQUE7QUFB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
@@ -9,8 +9,9 @@
9
9
  * the modal is dismissed. {@link MinimizableModal} wraps any modal instance (plain `Modal`,
10
10
  * `FuzzySuggestModal`, the library's `ModalBase`, your own subclass, … — including modals you do not
11
11
  * own) and adds a minimize button. Minimizing hides the modal and its blocking backdrop and shows a
12
- * small floating bar with a restore button, so the user can peek at the notes/folders the operation
13
- * involvesbut the modal is NOT dismissed, so its blocking contract must be preserved.
12
+ * small floating bar with a restore button (and, by default, a Cancel button that closes the wrapped
13
+ * modalpass `{ shouldShowCancelButton: false }` to hide it), so the user can peek at the
14
+ * notes/folders the operation involves — but the modal is NOT dismissed, so its blocking contract must be preserved.
14
15
  *
15
16
  * To keep that contract while minimized, the wrapper puts the app into a **peek-only lock**: the user
16
17
  * may mouse-click and scroll to inspect content, but cannot start anything new. While any modal is
@@ -43,6 +44,18 @@
43
44
  */
44
45
  import { Modal } from 'obsidian';
45
46
  import { MonkeyAroundComponent } from '../components/monkey-around-component.cjs';
47
+ /**
48
+ * Options for constructing a {@link MinimizableModal}.
49
+ */
50
+ export interface MinimizableModalConstructorOptions {
51
+ /**
52
+ * Whether the minimized bar shows a Cancel button that closes the wrapped modal. Closing lets the
53
+ * wrapped modal's own `onClose` define what "cancel" means (e.g. releasing a held lock).
54
+ *
55
+ * @default `true`
56
+ */
57
+ readonly shouldShowCancelButton?: boolean;
58
+ }
46
59
  /**
47
60
  * Wraps a {@link Modal} instance to make it minimizable to a small floating bar and restorable. While
48
61
  * minimized the app is put into a peek-only lock (keyboard, context menu, and opening other modals are
@@ -73,12 +86,14 @@ export declare class MinimizableModal<TModal extends Modal> {
73
86
  private minimizedBarEl;
74
87
  private peekLockComponent;
75
88
  private peekLockEntry;
89
+ private readonly shouldShowCancelButton;
76
90
  /**
77
91
  * Wraps the given modal, adding a minimize button and wiring up cleanup on close.
78
92
  *
79
93
  * @param modal - The modal instance to make minimizable.
94
+ * @param options - Options controlling the minimized bar. See {@link MinimizableModalConstructorOptions}.
80
95
  */
81
- constructor(modal: TModal);
96
+ constructor(modal: TModal, options?: MinimizableModalConstructorOptions);
82
97
  /**
83
98
  * Minimizes the modal: hides the modal and its backdrop, shows a floating bar with a restore button,
84
99
  * and puts the app into the peek-only lock. A no-op if the modal is already minimized.
@@ -0,0 +1,182 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function initCjs() {
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
+ const globalThisRecord = globalThis;
9
+ globalThisRecord['__name'] ??= name;
10
+ const originalRequire = require;
11
+ if (originalRequire && !originalRequire.__isPatched) {
12
+ // eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
13
+ require = Object.assign(
14
+ (id) => requirePatched(id),
15
+ originalRequire,
16
+ {
17
+ __isPatched: true
18
+ }
19
+ );
20
+ }
21
+
22
+ const newFuncs = {
23
+ __extractDefault() {
24
+ return extractDefault;
25
+ },
26
+ process() {
27
+ const browserProcess = {
28
+ browser: true,
29
+ cwd() {
30
+ return '/';
31
+ },
32
+ env: {},
33
+ platform: 'android'
34
+ };
35
+ return browserProcess;
36
+ }
37
+ };
38
+
39
+ for (const key of Object.keys(newFuncs)) {
40
+ globalThisRecord[key] ??= newFuncs[key]?.();
41
+ }
42
+
43
+ function name(obj) {
44
+ return obj;
45
+ }
46
+
47
+ function extractDefault(module) {
48
+ return module && module.__esModule && 'default' in module ? module.default : module;
49
+ }
50
+
51
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
52
+ 'obsidian',
53
+ '@codemirror/autocomplete',
54
+ '@codemirror/collab',
55
+ '@codemirror/commands',
56
+ '@codemirror/language',
57
+ '@codemirror/lint',
58
+ '@codemirror/search',
59
+ '@codemirror/state',
60
+ '@codemirror/text',
61
+ '@codemirror/view',
62
+ '@lezer/common',
63
+ '@lezer/lr',
64
+ '@lezer/highlight'];
65
+
66
+
67
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
68
+ '@codemirror/closebrackets',
69
+ '@codemirror/comment',
70
+ '@codemirror/fold',
71
+ '@codemirror/gutter',
72
+ '@codemirror/highlight',
73
+ '@codemirror/history',
74
+ '@codemirror/matchbrackets',
75
+ '@codemirror/panel',
76
+ '@codemirror/rangeset',
77
+ '@codemirror/rectangular-selection',
78
+ '@codemirror/stream-parser',
79
+ '@codemirror/tooltip'];
80
+
81
+
82
+ function requirePatched(id) {
83
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
84
+ return originalRequire?.(id);
85
+ }
86
+
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
+ if (globalThis.app.isMobile) {
89
+ if (id === 'process' || id === 'node:process') {
90
+ // eslint-disable-next-line no-console -- Valid usage.
91
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
+ return globalThis.process;
94
+ }
95
+ } else {
96
+ const module = originalRequire?.(id);
97
+ if (module) {
98
+ return extractDefault(module);
99
+ }
100
+ }
101
+
102
+ // eslint-disable-next-line no-console -- Valid usage.
103
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
104
+ return {};
105
+ }
106
+ })();
107
+
108
+ "use strict";
109
+ var __defProp = Object.defineProperty;
110
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
111
+ var __getOwnPropNames = Object.getOwnPropertyNames;
112
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
113
+ var __export = (target, all) => {
114
+ for (var name in all)
115
+ __defProp(target, name, { get: all[name], enumerable: true });
116
+ };
117
+ var __copyProps = (to, from, except, desc) => {
118
+ if (from && typeof from === "object" || typeof from === "function") {
119
+ for (let key of __getOwnPropNames(from))
120
+ if (!__hasOwnProp.call(to, key) && key !== except)
121
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
122
+ }
123
+ return to;
124
+ };
125
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
126
+ var select_option_exports = {};
127
+ __export(select_option_exports, {
128
+ selectOption: () => selectOption
129
+ });
130
+ module.exports = __toCommonJS(select_option_exports);
131
+ var import_obsidian = require('obsidian');
132
+ var import_css_class = require('../css-class.cjs');
133
+ var import_modal = require('./modal.cjs');
134
+ class SelectOptionModal extends import_modal.ModalBase {
135
+ isSelected = false;
136
+ message;
137
+ options;
138
+ title;
139
+ constructor(params) {
140
+ super(params);
141
+ this.addCssClasses(import_css_class.CssClass.SelectOptionModal);
142
+ this.message = params.message ?? "";
143
+ this.options = params.options;
144
+ this.title = params.title ?? "";
145
+ }
146
+ onClose() {
147
+ if (!this.isSelected) {
148
+ this.promiseResolve(null);
149
+ }
150
+ }
151
+ onOpen() {
152
+ this.titleEl.setText(this.title);
153
+ if (this.message) {
154
+ this.contentEl.createEl("p", { text: this.message });
155
+ }
156
+ for (const option of this.options) {
157
+ const button = new import_obsidian.ButtonComponent(this.contentEl);
158
+ button.setButtonText(option.text);
159
+ if (option.isCta) {
160
+ button.setCta();
161
+ }
162
+ button.onClick(() => {
163
+ this.isSelected = true;
164
+ this.promiseResolve(option.value);
165
+ this.close();
166
+ });
167
+ }
168
+ }
169
+ }
170
+ async function selectOption(params) {
171
+ return await (0, import_modal.showModal)(
172
+ (promiseResolve) => new SelectOptionModal({
173
+ ...params,
174
+ promiseResolve
175
+ })
176
+ );
177
+ }
178
+ // Annotate the CommonJS export names for ESM import in node:
179
+ 0 && (module.exports = {
180
+ selectOption
181
+ });
182
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21vZGFscy9zZWxlY3Qtb3B0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVXRpbGl0eSBmb3IgZGlzcGxheWluZyBhIG1vZGFsIHRoYXQgb2ZmZXJzIGEgZml4ZWQgc2V0IG9mIGxhYmVsbGVkIG9wdGlvbnMgYXMgYnV0dG9ucy5cbiAqXG4gKiBVbmxpa2Uge0BsaW5rIHNlbGVjdEl0ZW19IChhIGZ1enp5LXNlYXJjaCBwaWNrZXIgb3ZlciBhbiBhcmJpdHJhcnkgbGlzdCksIHRoaXMgbW9kYWwgcmVuZGVycyBvbmVcbiAqIGJ1dHRvbiBwZXIgb3B0aW9uIFx1MjAxNCB1c2VmdWwgZm9yIGEgc21hbGwsIGZpeGVkIHNldCBvZiBtdXR1YWxseS1leGNsdXNpdmUgY2hvaWNlcyB3aGVyZSBlYWNoIGNob2ljZVxuICogaGFzIGl0cyBvd24gbGFiZWwgYW5kIHJlc29sdmVkIHZhbHVlLiBJdCByZXNvbHZlcyB3aXRoIHRoZSBjaG9zZW4gdmFsdWUsIG9yIGBudWxsYCBpZiB0aGUgbW9kYWwgaXNcbiAqIGRpc21pc3NlZCB3aXRob3V0IGEgY2hvaWNlLlxuICovXG5cbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUge1xuICBNb2RhbEJhc2VDb25zdHJ1Y3RvclBhcmFtcyxcbiAgTW9kYWxQYXJhbXNCYXNlXG59IGZyb20gJy4vbW9kYWwudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQge1xuICBNb2RhbEJhc2UsXG4gIHNob3dNb2RhbFxufSBmcm9tICcuL21vZGFsLnRzJztcblxuLyoqXG4gKiBBIHNpbmdsZSBzZWxlY3RhYmxlIG9wdGlvbiByZW5kZXJlZCBhcyBhIGJ1dHRvbiBpbiB0aGUge0BsaW5rIHNlbGVjdE9wdGlvbn0gbW9kYWwuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHJlc29sdmVkIHdoZW4gdGhpcyBvcHRpb24gaXMgY2hvc2VuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdE9wdGlvbkl0ZW08VD4ge1xuICAvKipcbiAgICogV2hldGhlciB0byByZW5kZXIgdGhpcyBvcHRpb24gYXMgdGhlIGNhbGwtdG8tYWN0aW9uIChwcmltYXJ5KSBidXR0b24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IGlzQ3RhPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGJ1dHRvbiBsYWJlbC5cbiAgICovXG4gIHJlYWRvbmx5IHRleHQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhbHVlIHRoZSBtb2RhbCByZXNvbHZlcyB3aXRoIHdoZW4gdGhpcyBvcHRpb24gaXMgY2hvc2VuLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU6IFQ7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHNlbGVjdE9wdGlvbn0uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHJlc29sdmVkIHdoZW4gYW4gb3B0aW9uIGlzIGNob3Nlbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RPcHRpb25QYXJhbXM8VD4gZXh0ZW5kcyBNb2RhbFBhcmFtc0Jhc2Uge1xuICAvKipcbiAgICogQSBtZXNzYWdlIGRpc3BsYXllZCBhYm92ZSB0aGUgb3B0aW9uIGJ1dHRvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnJ2BcbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VsZWN0YWJsZSBvcHRpb25zLCBlYWNoIHJlbmRlcmVkIGFzIGEgYnV0dG9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3B0aW9uczogU2VsZWN0T3B0aW9uSXRlbTxUPltdO1xuXG4gIC8qKlxuICAgKiBBIHRpdGxlIG9mIHRoZSBtb2RhbC5cbiAgICpcbiAgICogQGRlZmF1bHQgYCcnYFxuICAgKi9cbiAgcmVhZG9ubHkgdGl0bGU/OiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xufVxuXG50eXBlIFNlbGVjdE9wdGlvbk1vZGFsQ29uc3RydWN0b3JQYXJhbXM8VD4gPSBNb2RhbEJhc2VDb25zdHJ1Y3RvclBhcmFtczxudWxsIHwgVD4gJiBTZWxlY3RPcHRpb25QYXJhbXM8VD47XG5cbmNsYXNzIFNlbGVjdE9wdGlvbk1vZGFsPFQ+IGV4dGVuZHMgTW9kYWxCYXNlPG51bGwgfCBUPiB7XG4gIHByaXZhdGUgaXNTZWxlY3RlZCA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2U6IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogU2VsZWN0T3B0aW9uSXRlbTxUPltdO1xuICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlOiBEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IFNlbGVjdE9wdGlvbk1vZGFsQ29uc3RydWN0b3JQYXJhbXM8VD4pIHtcbiAgICBzdXBlcihwYXJhbXMpO1xuICAgIHRoaXMuYWRkQ3NzQ2xhc3NlcyhDc3NDbGFzcy5TZWxlY3RPcHRpb25Nb2RhbCk7XG4gICAgdGhpcy5tZXNzYWdlID0gcGFyYW1zLm1lc3NhZ2UgPz8gJyc7XG4gICAgdGhpcy5vcHRpb25zID0gcGFyYW1zLm9wdGlvbnM7XG4gICAgdGhpcy50aXRsZSA9IHBhcmFtcy50aXRsZSA/PyAnJztcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbkNsb3NlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1NlbGVjdGVkKSB7XG4gICAgICB0aGlzLnByb21pc2VSZXNvbHZlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbk9wZW4oKTogdm9pZCB7XG4gICAgdGhpcy50aXRsZUVsLnNldFRleHQodGhpcy50aXRsZSk7XG4gICAgaWYgKHRoaXMubWVzc2FnZSkge1xuICAgICAgdGhpcy5jb250ZW50RWwuY3JlYXRlRWwoJ3AnLCB7IHRleHQ6IHRoaXMubWVzc2FnZSB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IG5ldyBCdXR0b25Db21wb25lbnQodGhpcy5jb250ZW50RWwpO1xuICAgICAgYnV0dG9uLnNldEJ1dHRvblRleHQob3B0aW9uLnRleHQpO1xuICAgICAgaWYgKG9wdGlvbi5pc0N0YSkge1xuICAgICAgICBidXR0b24uc2V0Q3RhKCk7XG4gICAgICB9XG4gICAgICBidXR0b24ub25DbGljaygoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMucHJvbWlzZVJlc29sdmUob3B0aW9uLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRGlzcGxheXMgYSBtb2RhbCBpbiBPYnNpZGlhbiBvZmZlcmluZyBhIGZpeGVkIHNldCBvZiBsYWJlbGxlZCBvcHRpb25zIGFzIGJ1dHRvbnMuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHJlc29sdmVkIHdoZW4gYW4gb3B0aW9uIGlzIGNob3Nlbi5cbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIG1vZGFsLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBjaG9zZW4gb3B0aW9uJ3MgdmFsdWUsIG9yIGBudWxsYCBpZiB0aGUgbW9kYWxcbiAqIHdhcyBkaXNtaXNzZWQgd2l0aG91dCBhIGNob2ljZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbGVjdE9wdGlvbjxUPihwYXJhbXM6IFNlbGVjdE9wdGlvblBhcmFtczxUPik6IFByb21pc2U8bnVsbCB8IFQ+IHtcbiAgcmV0dXJuIGF3YWl0IHNob3dNb2RhbDxudWxsIHwgVD4oKHByb21pc2VSZXNvbHZlKSA9PlxuICAgIG5ldyBTZWxlY3RPcHRpb25Nb2RhbDxUPih7XG4gICAgICAuLi5wYXJhbXMsXG4gICAgICBwcm9taXNlUmVzb2x2ZVxuICAgIH0pXG4gICk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQSxzQkFBZ0M7QUFPaEMsdUJBQXlCO0FBQ3pCLG1CQUdPO0FBc0RQLE1BQU0sMEJBQTZCLHVCQUFvQjtBQUFBLEVBQzdDLGFBQWE7QUFBQSxFQUNKO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUVWLFlBQVksUUFBK0M7QUFDaEUsVUFBTSxNQUFNO0FBQ1osU0FBSyxjQUFjLDBCQUFTLGlCQUFpQjtBQUM3QyxTQUFLLFVBQVUsT0FBTyxXQUFXO0FBQ2pDLFNBQUssVUFBVSxPQUFPO0FBQ3RCLFNBQUssUUFBUSxPQUFPLFNBQVM7QUFBQSxFQUMvQjtBQUFBLEVBRWdCLFVBQWdCO0FBQzlCLFFBQUksQ0FBQyxLQUFLLFlBQVk7QUFDcEIsV0FBSyxlQUFlLElBQUk7QUFBQSxJQUMxQjtBQUFBLEVBQ0Y7QUFBQSxFQUVnQixTQUFlO0FBQzdCLFNBQUssUUFBUSxRQUFRLEtBQUssS0FBSztBQUMvQixRQUFJLEtBQUssU0FBUztBQUNoQixXQUFLLFVBQVUsU0FBUyxLQUFLLEVBQUUsTUFBTSxLQUFLLFFBQVEsQ0FBQztBQUFBLElBQ3JEO0FBRUEsZUFBVyxVQUFVLEtBQUssU0FBUztBQUNqQyxZQUFNLFNBQVMsSUFBSSxnQ0FBZ0IsS0FBSyxTQUFTO0FBQ2pELGFBQU8sY0FBYyxPQUFPLElBQUk7QUFDaEMsVUFBSSxPQUFPLE9BQU87QUFDaEIsZUFBTyxPQUFPO0FBQUEsTUFDaEI7QUFDQSxhQUFPLFFBQVEsTUFBTTtBQUNuQixhQUFLLGFBQWE7QUFDbEIsYUFBSyxlQUFlLE9BQU8sS0FBSztBQUNoQyxhQUFLLE1BQU07QUFBQSxNQUNiLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUNGO0FBVUEsZUFBc0IsYUFBZ0IsUUFBa0Q7QUFDdEYsU0FBTyxVQUFNO0FBQUEsSUFBb0IsQ0FBQyxtQkFDaEMsSUFBSSxrQkFBcUI7QUFBQSxNQUN2QixHQUFHO0FBQUEsTUFDSDtBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0g7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,65 @@
1
+ /// <reference path="../../library.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Utility for displaying a modal that offers a fixed set of labelled options as buttons.
6
+ *
7
+ * Unlike {@link selectItem} (a fuzzy-search picker over an arbitrary list), this modal renders one
8
+ * button per option — useful for a small, fixed set of mutually-exclusive choices where each choice
9
+ * has its own label and resolved value. It resolves with the chosen value, or `null` if the modal is
10
+ * dismissed without a choice.
11
+ */
12
+ import type { ModalParamsBase } from './modal.cjs';
13
+ /**
14
+ * A single selectable option rendered as a button in the {@link selectOption} modal.
15
+ *
16
+ * @typeParam T - The type of the value resolved when this option is chosen.
17
+ */
18
+ export interface SelectOptionItem<T> {
19
+ /**
20
+ * Whether to render this option as the call-to-action (primary) button.
21
+ *
22
+ * @default `false`
23
+ */
24
+ readonly isCta?: boolean;
25
+ /**
26
+ * The button label.
27
+ */
28
+ readonly text: string;
29
+ /**
30
+ * The value the modal resolves with when this option is chosen.
31
+ */
32
+ readonly value: T;
33
+ }
34
+ /**
35
+ * Parameters for {@link selectOption}.
36
+ *
37
+ * @typeParam T - The type of the value resolved when an option is chosen.
38
+ */
39
+ export interface SelectOptionParams<T> extends ModalParamsBase {
40
+ /**
41
+ * A message displayed above the option buttons.
42
+ *
43
+ * @default `''`
44
+ */
45
+ readonly message?: DocumentFragment | string;
46
+ /**
47
+ * The selectable options, each rendered as a button.
48
+ */
49
+ readonly options: SelectOptionItem<T>[];
50
+ /**
51
+ * A title of the modal.
52
+ *
53
+ * @default `''`
54
+ */
55
+ readonly title?: DocumentFragment | string;
56
+ }
57
+ /**
58
+ * Displays a modal in Obsidian offering a fixed set of labelled options as buttons.
59
+ *
60
+ * @typeParam T - The type of the value resolved when an option is chosen.
61
+ * @param params - The parameters for the modal.
62
+ * @returns A {@link Promise} that resolves with the chosen option's value, or `null` if the modal
63
+ * was dismissed without a choice.
64
+ */
65
+ export declare function selectOption<T>(params: SelectOptionParams<T>): Promise<null | T>;
@@ -139,9 +139,11 @@ var ObsidianPluginRepoPaths = /* @__PURE__ */ ((ObsidianPluginRepoPaths2) => {
139
139
  ObsidianPluginRepoPaths2["ChangelogMd"] = "CHANGELOG.md";
140
140
  ObsidianPluginRepoPaths2["CommitlintConfigTs"] = "commitlint.config.ts";
141
141
  ObsidianPluginRepoPaths2["CurrentFolder"] = ".";
142
+ ObsidianPluginRepoPaths2["DemoVault"] = "demo-vault";
142
143
  ObsidianPluginRepoPaths2["Dist"] = "dist";
143
144
  ObsidianPluginRepoPaths2["DistBuild"] = "dist/build";
144
145
  ObsidianPluginRepoPaths2["DistDev"] = "dist/dev";
146
+ ObsidianPluginRepoPaths2["DotObsidian"] = ".obsidian";
145
147
  ObsidianPluginRepoPaths2["EslintConfigCjs"] = "eslint.config.cjs";
146
148
  ObsidianPluginRepoPaths2["EslintConfigCts"] = "eslint.config.cts";
147
149
  ObsidianPluginRepoPaths2["EslintConfigJs"] = "eslint.config.js";
@@ -169,6 +171,7 @@ var ObsidianPluginRepoPaths = /* @__PURE__ */ ((ObsidianPluginRepoPaths2) => {
169
171
  ObsidianPluginRepoPaths2["NpmShrinkwrapJson"] = "npm-shrinkwrap.json";
170
172
  ObsidianPluginRepoPaths2["PackageJson"] = "package.json";
171
173
  ObsidianPluginRepoPaths2["PackageLockJson"] = "package-lock.json";
174
+ ObsidianPluginRepoPaths2["Plugins"] = "plugins";
172
175
  ObsidianPluginRepoPaths2["Scripts"] = "scripts";
173
176
  ObsidianPluginRepoPaths2["ScriptUtils"] = "src/script-utils";
174
177
  ObsidianPluginRepoPaths2["Src"] = "src";
@@ -183,4 +186,4 @@ var ObsidianPluginRepoPaths = /* @__PURE__ */ ((ObsidianPluginRepoPaths2) => {
183
186
  0 && (module.exports = {
184
187
  ObsidianPluginRepoPaths
185
188
  });
186
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIGFuIGVudW1lcmF0aW9uIGZvciBjb21tb24gZmlsZSBhbmQgZm9sZGVyIHBhdGhzIHVzZWQgaW4gT2JzaWRpYW4gcGx1Z2luIGRldmVsb3BtZW50LlxuICovXG5cbi8qKlxuICogRW51bWVyYXRpb24gb2YgY29tbW9ubHkgdXNlZCBmaWxlIGFuZCBmb2xkZXIgcGF0aHMgaW4gT2JzaWRpYW4gcGx1Z2luIGRldmVsb3BtZW50LlxuICovXG5leHBvcnQgZW51bSBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB7XG4gIC8qKiBDb21tb25KUyBmaWxlLiAqL1xuICBBbnlDanMgPSAnKi5janMnLFxuXG4gIC8qKiBKYXZhU2NyaXB0IGZpbGUuICovXG4gIEFueUpzID0gJyouanMnLFxuXG4gIC8qKiBFU00gSmF2YVNjcmlwdCBmaWxlLiAqL1xuICBBbnlNanMgPSAnKi5tanMnLFxuXG4gIC8qKiBBbnkgcGF0aCByZWN1cnNpdmVseS4gKi9cbiAgQW55UGF0aCA9ICcqKicsXG5cbiAgLyoqIEFueSB0ZXN0IFR5cGVTY3JpcHQgZmlsZS4gKi9cbiAgQW55VGVzdFRzID0gJyoudGVzdC50cycsXG5cbiAgLyoqIFR5cGVTY3JpcHQgZmlsZS4gKi9cbiAgQW55VHMgPSAnKi50cycsXG5cbiAgLyoqIFJlYWN0SlMgVHlwZVNjcmlwdCBmaWxlLiAqL1xuICBBbnlUc3ggPSAnKi50c3gnLFxuXG4gIC8qKiBDaGFuZ2Vsb2cgZmlsZS4gKi9cbiAgQ2hhbmdlbG9nTWQgPSAnQ0hBTkdFTE9HLm1kJyxcblxuICAvKiogQ29tbWl0bGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIENvbW1pdGxpbnRDb25maWdUcyA9ICdjb21taXRsaW50LmNvbmZpZy50cycsXG5cbiAgLyoqIEN1cnJlbnQgZm9sZGVyLiAqL1xuICBDdXJyZW50Rm9sZGVyID0gJy4nLFxuXG4gIC8qKiBEaXN0cmlidXRpb24gZm9sZGVyLiAqL1xuICBEaXN0ID0gJ2Rpc3QnLFxuXG4gIC8qKiBCdWlsZCBmb2xkZXIgd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLiAqL1xuICBEaXN0QnVpbGQgPSAnZGlzdC9idWlsZCcsXG5cbiAgLyoqIERldmVsb3BtZW50IGZvbGRlciB3aXRoaW4gdGhlIHtAbGluayBEaXN0fSBmb2xkZXIuICovXG4gIERpc3REZXYgPSAnZGlzdC9kZXYnLFxuXG4gIC8qKiBDb21tb25KUyBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBFc2xpbnRDb25maWdDanMgPSAnZXNsaW50LmNvbmZpZy5janMnLFxuXG4gIC8qKiBDb21tb25KUyBUeXBlU2NyaXB0IEVTTGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIEVzbGludENvbmZpZ0N0cyA9ICdlc2xpbnQuY29uZmlnLmN0cycsXG5cbiAgLyoqIEphdmFTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgRXNsaW50Q29uZmlnSnMgPSAnZXNsaW50LmNvbmZpZy5qcycsXG5cbiAgLyoqIEVTTSBKYXZhU2NyaXB0IEVTTGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIEVzbGludENvbmZpZ01qcyA9ICdlc2xpbnQuY29uZmlnLm1qcycsXG5cbiAgLyoqIEVTTSBUeXBlU2NyaXB0IEVTTGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIEVzbGludENvbmZpZ010cyA9ICdlc2xpbnQuY29uZmlnLm10cycsXG5cbiAgLyoqIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgRXNsaW50Q29uZmlnVHMgPSAnZXNsaW50LmNvbmZpZy50cycsXG5cbiAgLyoqIEhvdCByZWxvYWQgZmlsZS4gKi9cbiAgSG90UmVsb2FkID0gJy5ob3RyZWxvYWQnLFxuXG4gIC8qKiBNYWluIENTUyBmaWxlLiAqL1xuICBNYWluQ3NzID0gJ21haW4uY3NzJyxcblxuICAvKiogTWFpbiBKYXZhU2NyaXB0IGZpbGUuICovXG4gIE1haW5KcyA9ICdtYWluLmpzJyxcblxuICAvKiogTWFpbiBUeXBlU2NyaXB0IGZpbGUuICovXG4gIE1haW5UcyA9ICdtYWluLnRzJyxcblxuICAvKiogTWFuaWZlc3QgZmlsZSBmb3IgYmV0YSByZWxlYXNlcy4gKi9cbiAgTWFuaWZlc3RCZXRhSnNvbiA9ICdtYW5pZmVzdC1iZXRhLmpzb24nLFxuXG4gIC8qKiBNYW5pZmVzdCBmaWxlLiAqL1xuICBNYW5pZmVzdEpzb24gPSAnbWFuaWZlc3QuanNvbicsXG5cbiAgLyoqIENvbW1vbkpTIE1hcmtkb3dubGludCBDTEkyIGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q2xpMkNvbmZpZ0NqcyA9ICcubWFya2Rvd25saW50LWNsaTIuY2pzJyxcblxuICAvKiogSlNPTkMgTWFya2Rvd25saW50IENMSTIgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBNYXJrZG93bmxpbnRDbGkyQ29uZmlnSnNvbmMgPSAnLm1hcmtkb3dubGludC1jbGkyLmpzb25jJyxcblxuICAvKiogRVNNIE1hcmtkb3dubGludCBDTEkyIGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q2xpMkNvbmZpZ01qcyA9ICcubWFya2Rvd25saW50LWNsaTIubWpzJyxcblxuICAvKiogWUFNTCBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdZYW1sID0gJy5tYXJrZG93bmxpbnQtY2xpMi55YW1sJyxcblxuICAvKiogQ29tbW9uSlMgTWFya2Rvd25saW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q29uZmlnQ2pzID0gJy5tYXJrZG93bmxpbnQuY2pzJyxcblxuICAvKiogSlNPTiBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBNYXJrZG93bmxpbnRDb25maWdKc29uID0gJy5tYXJrZG93bmxpbnQuanNvbicsXG5cbiAgLyoqIEpTT05DIE1hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludENvbmZpZ0pzb25jID0gJy5tYXJrZG93bmxpbnQuanNvbmMnLFxuXG4gIC8qKiBFU00gTWFya2Rvd25saW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q29uZmlnTWpzID0gJy5tYXJrZG93bmxpbnQubWpzJyxcblxuICAvKiogWUFNTCBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBNYXJrZG93bmxpbnRDb25maWdZYW1sID0gJy5tYXJrZG93bmxpbnQueWFtbCcsXG5cbiAgLyoqIFlBTUwgTWFya2Rvd25saW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q29uZmlnWW1sID0gJy5tYXJrZG93bmxpbnQueW1sJyxcblxuICAvKiogTW9ja3MgZm9sZGVyLiAqL1xuICBNb2NrcyA9ICdzcmMvdGVzdC1oZWxwZXJzJyxcblxuICAvKiogTm9kZSBtb2R1bGVzIGZvbGRlci4gKi9cbiAgTm9kZU1vZHVsZXMgPSAnbm9kZV9tb2R1bGVzJyxcblxuICAvKiogTlBNIHNocmlua3dyYXAgZmlsZS4gKi9cbiAgTnBtU2hyaW5rd3JhcEpzb24gPSAnbnBtLXNocmlua3dyYXAuanNvbicsXG5cbiAgLyoqIFBhY2thZ2UgSlNPTiBmaWxlLiAqL1xuICBQYWNrYWdlSnNvbiA9ICdwYWNrYWdlLmpzb24nLFxuXG4gIC8qKiBQYWNrYWdlLWxvY2sgSlNPTiBmaWxlLiAqL1xuICBQYWNrYWdlTG9ja0pzb24gPSAncGFja2FnZS1sb2NrLmpzb24nLFxuXG4gIC8qKiBTY3JpcHRzIGZvbGRlci4gKi9cbiAgU2NyaXB0cyA9ICdzY3JpcHRzJyxcblxuICAvKiogU2NyaXB0IHV0aWxpdGllcyBmb2xkZXIgKGRldi1vbmx5IHRvb2xpbmcgdGhhdCBydW5zIGluIHRoZSBjb25zdW1lcidzIE5vZGUgZW52aXJvbm1lbnQsIG5vdCB0aGUgT2JzaWRpYW4gcnVudGltZSkuICovXG4gIFNjcmlwdFV0aWxzID0gJ3NyYy9zY3JpcHQtdXRpbHMnLFxuXG4gIC8qKiBTb3VyY2UgZm9sZGVyLiAqL1xuICBTcmMgPSAnc3JjJyxcblxuICAvKiogU3R5bGVzIENTUyBmaWxlLiAqL1xuICBTdHlsZXNDc3MgPSAnc3R5bGVzLmNzcycsXG5cbiAgLyoqIFRlc3RzIGZvbGRlci4gKi9cbiAgVGVzdHMgPSAnX190ZXN0c19fJyxcblxuICAvKiogVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIFRzQ29uZmlnSnNvbiA9ICd0c2NvbmZpZy5qc29uJyxcblxuICAvKiogVmVyc2lvbnMgSlNPTiBmaWxlLiAqL1xuICBWZXJzaW9uc0pzb24gPSAndmVyc2lvbnMuanNvbicsXG5cbiAgLyoqIFZpdGVzdCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIFZpdGVzdENvbmZpZ1RzID0gJ3ZpdGVzdC5jb25maWcudHMnXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTTyxJQUFLLDBCQUFMLGtCQUFLQSw2QkFBTDtBQUVMLEVBQUFBLHlCQUFBLFlBQVM7QUFHVCxFQUFBQSx5QkFBQSxXQUFRO0FBR1IsRUFBQUEseUJBQUEsWUFBUztBQUdULEVBQUFBLHlCQUFBLGFBQVU7QUFHVixFQUFBQSx5QkFBQSxlQUFZO0FBR1osRUFBQUEseUJBQUEsV0FBUTtBQUdSLEVBQUFBLHlCQUFBLFlBQVM7QUFHVCxFQUFBQSx5QkFBQSxpQkFBYztBQUdkLEVBQUFBLHlCQUFBLHdCQUFxQjtBQUdyQixFQUFBQSx5QkFBQSxtQkFBZ0I7QUFHaEIsRUFBQUEseUJBQUEsVUFBTztBQUdQLEVBQUFBLHlCQUFBLGVBQVk7QUFHWixFQUFBQSx5QkFBQSxhQUFVO0FBR1YsRUFBQUEseUJBQUEscUJBQWtCO0FBR2xCLEVBQUFBLHlCQUFBLHFCQUFrQjtBQUdsQixFQUFBQSx5QkFBQSxvQkFBaUI7QUFHakIsRUFBQUEseUJBQUEscUJBQWtCO0FBR2xCLEVBQUFBLHlCQUFBLHFCQUFrQjtBQUdsQixFQUFBQSx5QkFBQSxvQkFBaUI7QUFHakIsRUFBQUEseUJBQUEsZUFBWTtBQUdaLEVBQUFBLHlCQUFBLGFBQVU7QUFHVixFQUFBQSx5QkFBQSxZQUFTO0FBR1QsRUFBQUEseUJBQUEsWUFBUztBQUdULEVBQUFBLHlCQUFBLHNCQUFtQjtBQUduQixFQUFBQSx5QkFBQSxrQkFBZTtBQUdmLEVBQUFBLHlCQUFBLCtCQUE0QjtBQUc1QixFQUFBQSx5QkFBQSxpQ0FBOEI7QUFHOUIsRUFBQUEseUJBQUEsK0JBQTRCO0FBRzVCLEVBQUFBLHlCQUFBLGdDQUE2QjtBQUc3QixFQUFBQSx5QkFBQSwyQkFBd0I7QUFHeEIsRUFBQUEseUJBQUEsNEJBQXlCO0FBR3pCLEVBQUFBLHlCQUFBLDZCQUEwQjtBQUcxQixFQUFBQSx5QkFBQSwyQkFBd0I7QUFHeEIsRUFBQUEseUJBQUEsNEJBQXlCO0FBR3pCLEVBQUFBLHlCQUFBLDJCQUF3QjtBQUd4QixFQUFBQSx5QkFBQSxXQUFRO0FBR1IsRUFBQUEseUJBQUEsaUJBQWM7QUFHZCxFQUFBQSx5QkFBQSx1QkFBb0I7QUFHcEIsRUFBQUEseUJBQUEsaUJBQWM7QUFHZCxFQUFBQSx5QkFBQSxxQkFBa0I7QUFHbEIsRUFBQUEseUJBQUEsYUFBVTtBQUdWLEVBQUFBLHlCQUFBLGlCQUFjO0FBR2QsRUFBQUEseUJBQUEsU0FBTTtBQUdOLEVBQUFBLHlCQUFBLGVBQVk7QUFHWixFQUFBQSx5QkFBQSxXQUFRO0FBR1IsRUFBQUEseUJBQUEsa0JBQWU7QUFHZixFQUFBQSx5QkFBQSxrQkFBZTtBQUdmLEVBQUFBLHlCQUFBLG9CQUFpQjtBQS9JUCxTQUFBQTtBQUFBLEdBQUE7IiwKICAibmFtZXMiOiBbIk9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIl0KfQo=
189
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIGFuIGVudW1lcmF0aW9uIGZvciBjb21tb24gZmlsZSBhbmQgZm9sZGVyIHBhdGhzIHVzZWQgaW4gT2JzaWRpYW4gcGx1Z2luIGRldmVsb3BtZW50LlxuICovXG5cbi8qKlxuICogRW51bWVyYXRpb24gb2YgY29tbW9ubHkgdXNlZCBmaWxlIGFuZCBmb2xkZXIgcGF0aHMgaW4gT2JzaWRpYW4gcGx1Z2luIGRldmVsb3BtZW50LlxuICovXG5leHBvcnQgZW51bSBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB7XG4gIC8qKiBDb21tb25KUyBmaWxlLiAqL1xuICBBbnlDanMgPSAnKi5janMnLFxuXG4gIC8qKiBKYXZhU2NyaXB0IGZpbGUuICovXG4gIEFueUpzID0gJyouanMnLFxuXG4gIC8qKiBFU00gSmF2YVNjcmlwdCBmaWxlLiAqL1xuICBBbnlNanMgPSAnKi5tanMnLFxuXG4gIC8qKiBBbnkgcGF0aCByZWN1cnNpdmVseS4gKi9cbiAgQW55UGF0aCA9ICcqKicsXG5cbiAgLyoqIEFueSB0ZXN0IFR5cGVTY3JpcHQgZmlsZS4gKi9cbiAgQW55VGVzdFRzID0gJyoudGVzdC50cycsXG5cbiAgLyoqIFR5cGVTY3JpcHQgZmlsZS4gKi9cbiAgQW55VHMgPSAnKi50cycsXG5cbiAgLyoqIFJlYWN0SlMgVHlwZVNjcmlwdCBmaWxlLiAqL1xuICBBbnlUc3ggPSAnKi50c3gnLFxuXG4gIC8qKiBDaGFuZ2Vsb2cgZmlsZS4gKi9cbiAgQ2hhbmdlbG9nTWQgPSAnQ0hBTkdFTE9HLm1kJyxcblxuICAvKiogQ29tbWl0bGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIENvbW1pdGxpbnRDb25maWdUcyA9ICdjb21taXRsaW50LmNvbmZpZy50cycsXG5cbiAgLyoqIEN1cnJlbnQgZm9sZGVyLiAqL1xuICBDdXJyZW50Rm9sZGVyID0gJy4nLFxuXG4gIC8qKiBEZW1vIHZhdWx0IGZvbGRlciBzaGlwcGVkIGluIGEgcGx1Z2luIHJlcG8gcm9vdC4gKi9cbiAgRGVtb1ZhdWx0ID0gJ2RlbW8tdmF1bHQnLFxuXG4gIC8qKiBEaXN0cmlidXRpb24gZm9sZGVyLiAqL1xuICBEaXN0ID0gJ2Rpc3QnLFxuXG4gIC8qKiBCdWlsZCBmb2xkZXIgd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLiAqL1xuICBEaXN0QnVpbGQgPSAnZGlzdC9idWlsZCcsXG5cbiAgLyoqIERldmVsb3BtZW50IGZvbGRlciB3aXRoaW4gdGhlIHtAbGluayBEaXN0fSBmb2xkZXIuICovXG4gIERpc3REZXYgPSAnZGlzdC9kZXYnLFxuXG4gIC8qKiBPYnNpZGlhbiBjb25maWd1cmF0aW9uIGZvbGRlciB3aXRoaW4gYSB2YXVsdC4gKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFubWQvaGFyZGNvZGVkLWNvbmZpZy1wYXRoIC0tIFRoaXMgaXMgdGhlIGRlZmF1bHQgY29uZmlnIGZvbGRlciBuYW1lIGJha2VkIGludG8gYSBzaGlwcGVkIGRlbW8tdmF1bHQgc2tlbGV0b24sIG5vdCBhIGxvb2t1cCBhZ2FpbnN0IGEgbGl2ZSB2YXVsdC5cbiAgRG90T2JzaWRpYW4gPSAnLm9ic2lkaWFuJyxcblxuICAvKiogQ29tbW9uSlMgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgRXNsaW50Q29uZmlnQ2pzID0gJ2VzbGludC5jb25maWcuY2pzJyxcblxuICAvKiogQ29tbW9uSlMgVHlwZVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBFc2xpbnRDb25maWdDdHMgPSAnZXNsaW50LmNvbmZpZy5jdHMnLFxuXG4gIC8qKiBKYXZhU2NyaXB0IEVTTGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIEVzbGludENvbmZpZ0pzID0gJ2VzbGludC5jb25maWcuanMnLFxuXG4gIC8qKiBFU00gSmF2YVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBFc2xpbnRDb25maWdNanMgPSAnZXNsaW50LmNvbmZpZy5tanMnLFxuXG4gIC8qKiBFU00gVHlwZVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBFc2xpbnRDb25maWdNdHMgPSAnZXNsaW50LmNvbmZpZy5tdHMnLFxuXG4gIC8qKiBUeXBlU2NyaXB0IEVTTGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIEVzbGludENvbmZpZ1RzID0gJ2VzbGludC5jb25maWcudHMnLFxuXG4gIC8qKiBIb3QgcmVsb2FkIGZpbGUuICovXG4gIEhvdFJlbG9hZCA9ICcuaG90cmVsb2FkJyxcblxuICAvKiogTWFpbiBDU1MgZmlsZS4gKi9cbiAgTWFpbkNzcyA9ICdtYWluLmNzcycsXG5cbiAgLyoqIE1haW4gSmF2YVNjcmlwdCBmaWxlLiAqL1xuICBNYWluSnMgPSAnbWFpbi5qcycsXG5cbiAgLyoqIE1haW4gVHlwZVNjcmlwdCBmaWxlLiAqL1xuICBNYWluVHMgPSAnbWFpbi50cycsXG5cbiAgLyoqIE1hbmlmZXN0IGZpbGUgZm9yIGJldGEgcmVsZWFzZXMuICovXG4gIE1hbmlmZXN0QmV0YUpzb24gPSAnbWFuaWZlc3QtYmV0YS5qc29uJyxcblxuICAvKiogTWFuaWZlc3QgZmlsZS4gKi9cbiAgTWFuaWZlc3RKc29uID0gJ21hbmlmZXN0Lmpzb24nLFxuXG4gIC8qKiBDb21tb25KUyBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdDanMgPSAnLm1hcmtkb3dubGludC1jbGkyLmNqcycsXG5cbiAgLyoqIEpTT05DIE1hcmtkb3dubGludCBDTEkyIGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q2xpMkNvbmZpZ0pzb25jID0gJy5tYXJrZG93bmxpbnQtY2xpMi5qc29uYycsXG5cbiAgLyoqIEVTTSBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdNanMgPSAnLm1hcmtkb3dubGludC1jbGkyLm1qcycsXG5cbiAgLyoqIFlBTUwgTWFya2Rvd25saW50IENMSTIgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBNYXJrZG93bmxpbnRDbGkyQ29uZmlnWWFtbCA9ICcubWFya2Rvd25saW50LWNsaTIueWFtbCcsXG5cbiAgLyoqIENvbW1vbkpTIE1hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludENvbmZpZ0NqcyA9ICcubWFya2Rvd25saW50LmNqcycsXG5cbiAgLyoqIEpTT04gTWFya2Rvd25saW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q29uZmlnSnNvbiA9ICcubWFya2Rvd25saW50Lmpzb24nLFxuXG4gIC8qKiBKU09OQyBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBNYXJrZG93bmxpbnRDb25maWdKc29uYyA9ICcubWFya2Rvd25saW50Lmpzb25jJyxcblxuICAvKiogRVNNIE1hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludENvbmZpZ01qcyA9ICcubWFya2Rvd25saW50Lm1qcycsXG5cbiAgLyoqIFlBTUwgTWFya2Rvd25saW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50Q29uZmlnWWFtbCA9ICcubWFya2Rvd25saW50LnlhbWwnLFxuXG4gIC8qKiBZQU1MIE1hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludENvbmZpZ1ltbCA9ICcubWFya2Rvd25saW50LnltbCcsXG5cbiAgLyoqIE1vY2tzIGZvbGRlci4gKi9cbiAgTW9ja3MgPSAnc3JjL3Rlc3QtaGVscGVycycsXG5cbiAgLyoqIE5vZGUgbW9kdWxlcyBmb2xkZXIuICovXG4gIE5vZGVNb2R1bGVzID0gJ25vZGVfbW9kdWxlcycsXG5cbiAgLyoqIE5QTSBzaHJpbmt3cmFwIGZpbGUuICovXG4gIE5wbVNocmlua3dyYXBKc29uID0gJ25wbS1zaHJpbmt3cmFwLmpzb24nLFxuXG4gIC8qKiBQYWNrYWdlIEpTT04gZmlsZS4gKi9cbiAgUGFja2FnZUpzb24gPSAncGFja2FnZS5qc29uJyxcblxuICAvKiogUGFja2FnZS1sb2NrIEpTT04gZmlsZS4gKi9cbiAgUGFja2FnZUxvY2tKc29uID0gJ3BhY2thZ2UtbG9jay5qc29uJyxcblxuICAvKiogUGx1Z2lucyBmb2xkZXIgd2l0aGluIGFuIE9ic2lkaWFuIGNvbmZpZ3VyYXRpb24gZm9sZGVyLiAqL1xuICBQbHVnaW5zID0gJ3BsdWdpbnMnLFxuXG4gIC8qKiBTY3JpcHRzIGZvbGRlci4gKi9cbiAgU2NyaXB0cyA9ICdzY3JpcHRzJyxcblxuICAvKiogU2NyaXB0IHV0aWxpdGllcyBmb2xkZXIgKGRldi1vbmx5IHRvb2xpbmcgdGhhdCBydW5zIGluIHRoZSBjb25zdW1lcidzIE5vZGUgZW52aXJvbm1lbnQsIG5vdCB0aGUgT2JzaWRpYW4gcnVudGltZSkuICovXG4gIFNjcmlwdFV0aWxzID0gJ3NyYy9zY3JpcHQtdXRpbHMnLFxuXG4gIC8qKiBTb3VyY2UgZm9sZGVyLiAqL1xuICBTcmMgPSAnc3JjJyxcblxuICAvKiogU3R5bGVzIENTUyBmaWxlLiAqL1xuICBTdHlsZXNDc3MgPSAnc3R5bGVzLmNzcycsXG5cbiAgLyoqIFRlc3RzIGZvbGRlci4gKi9cbiAgVGVzdHMgPSAnX190ZXN0c19fJyxcblxuICAvKiogVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIFRzQ29uZmlnSnNvbiA9ICd0c2NvbmZpZy5qc29uJyxcblxuICAvKiogVmVyc2lvbnMgSlNPTiBmaWxlLiAqL1xuICBWZXJzaW9uc0pzb24gPSAndmVyc2lvbnMuanNvbicsXG5cbiAgLyoqIFZpdGVzdCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIFZpdGVzdENvbmZpZ1RzID0gJ3ZpdGVzdC5jb25maWcudHMnXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTTyxJQUFLLDBCQUFMLGtCQUFLQSw2QkFBTDtBQUVMLEVBQUFBLHlCQUFBLFlBQVM7QUFHVCxFQUFBQSx5QkFBQSxXQUFRO0FBR1IsRUFBQUEseUJBQUEsWUFBUztBQUdULEVBQUFBLHlCQUFBLGFBQVU7QUFHVixFQUFBQSx5QkFBQSxlQUFZO0FBR1osRUFBQUEseUJBQUEsV0FBUTtBQUdSLEVBQUFBLHlCQUFBLFlBQVM7QUFHVCxFQUFBQSx5QkFBQSxpQkFBYztBQUdkLEVBQUFBLHlCQUFBLHdCQUFxQjtBQUdyQixFQUFBQSx5QkFBQSxtQkFBZ0I7QUFHaEIsRUFBQUEseUJBQUEsZUFBWTtBQUdaLEVBQUFBLHlCQUFBLFVBQU87QUFHUCxFQUFBQSx5QkFBQSxlQUFZO0FBR1osRUFBQUEseUJBQUEsYUFBVTtBQUlWLEVBQUFBLHlCQUFBLGlCQUFjO0FBR2QsRUFBQUEseUJBQUEscUJBQWtCO0FBR2xCLEVBQUFBLHlCQUFBLHFCQUFrQjtBQUdsQixFQUFBQSx5QkFBQSxvQkFBaUI7QUFHakIsRUFBQUEseUJBQUEscUJBQWtCO0FBR2xCLEVBQUFBLHlCQUFBLHFCQUFrQjtBQUdsQixFQUFBQSx5QkFBQSxvQkFBaUI7QUFHakIsRUFBQUEseUJBQUEsZUFBWTtBQUdaLEVBQUFBLHlCQUFBLGFBQVU7QUFHVixFQUFBQSx5QkFBQSxZQUFTO0FBR1QsRUFBQUEseUJBQUEsWUFBUztBQUdULEVBQUFBLHlCQUFBLHNCQUFtQjtBQUduQixFQUFBQSx5QkFBQSxrQkFBZTtBQUdmLEVBQUFBLHlCQUFBLCtCQUE0QjtBQUc1QixFQUFBQSx5QkFBQSxpQ0FBOEI7QUFHOUIsRUFBQUEseUJBQUEsK0JBQTRCO0FBRzVCLEVBQUFBLHlCQUFBLGdDQUE2QjtBQUc3QixFQUFBQSx5QkFBQSwyQkFBd0I7QUFHeEIsRUFBQUEseUJBQUEsNEJBQXlCO0FBR3pCLEVBQUFBLHlCQUFBLDZCQUEwQjtBQUcxQixFQUFBQSx5QkFBQSwyQkFBd0I7QUFHeEIsRUFBQUEseUJBQUEsNEJBQXlCO0FBR3pCLEVBQUFBLHlCQUFBLDJCQUF3QjtBQUd4QixFQUFBQSx5QkFBQSxXQUFRO0FBR1IsRUFBQUEseUJBQUEsaUJBQWM7QUFHZCxFQUFBQSx5QkFBQSx1QkFBb0I7QUFHcEIsRUFBQUEseUJBQUEsaUJBQWM7QUFHZCxFQUFBQSx5QkFBQSxxQkFBa0I7QUFHbEIsRUFBQUEseUJBQUEsYUFBVTtBQUdWLEVBQUFBLHlCQUFBLGFBQVU7QUFHVixFQUFBQSx5QkFBQSxpQkFBYztBQUdkLEVBQUFBLHlCQUFBLFNBQU07QUFHTixFQUFBQSx5QkFBQSxlQUFZO0FBR1osRUFBQUEseUJBQUEsV0FBUTtBQUdSLEVBQUFBLHlCQUFBLGtCQUFlO0FBR2YsRUFBQUEseUJBQUEsa0JBQWU7QUFHZixFQUFBQSx5QkFBQSxvQkFBaUI7QUF6SlAsU0FBQUE7QUFBQSxHQUFBOyIsCiAgIm5hbWVzIjogWyJPYnNpZGlhblBsdWdpblJlcG9QYXRocyJdCn0K
@@ -28,12 +28,16 @@ export declare enum ObsidianPluginRepoPaths {
28
28
  CommitlintConfigTs = "commitlint.config.ts",
29
29
  /** Current folder. */
30
30
  CurrentFolder = ".",
31
+ /** Demo vault folder shipped in a plugin repo root. */
32
+ DemoVault = "demo-vault",
31
33
  /** Distribution folder. */
32
34
  Dist = "dist",
33
35
  /** Build folder within the {@link Dist} folder. */
34
36
  DistBuild = "dist/build",
35
37
  /** Development folder within the {@link Dist} folder. */
36
38
  DistDev = "dist/dev",
39
+ /** Obsidian configuration folder within a vault. */
40
+ DotObsidian = ".obsidian",
37
41
  /** CommonJS ESLint configuration file. */
38
42
  EslintConfigCjs = "eslint.config.cjs",
39
43
  /** CommonJS TypeScript ESLint configuration file. */
@@ -88,6 +92,8 @@ export declare enum ObsidianPluginRepoPaths {
88
92
  PackageJson = "package.json",
89
93
  /** Package-lock JSON file. */
90
94
  PackageLockJson = "package-lock.json",
95
+ /** Plugins folder within an Obsidian configuration folder. */
96
+ Plugins = "plugins",
91
97
  /** Scripts folder. */
92
98
  Scripts = "scripts",
93
99
  /** Script utilities folder (dev-only tooling that runs in the consumer's Node environment, not the Obsidian runtime). */