@mnaoumov/obsidian-lib 0.0.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1044) hide show
  1. package/@types/dataview/api/data-array/package.json +4 -0
  2. package/@types/dataview/api/extensions/package.json +4 -0
  3. package/@types/dataview/api/inline-api/package.json +4 -0
  4. package/@types/dataview/api/plugin-api/package.json +4 -0
  5. package/@types/dataview/api/result/package.json +4 -0
  6. package/@types/dataview/data-import/common/package.json +4 -0
  7. package/@types/dataview/data-import/csv/package.json +4 -0
  8. package/@types/dataview/data-import/inline-field/package.json +4 -0
  9. package/@types/dataview/data-import/markdown-file/package.json +4 -0
  10. package/@types/dataview/data-import/persister/package.json +4 -0
  11. package/@types/dataview/data-import/web-worker/import-entry/package.json +4 -0
  12. package/@types/dataview/data-import/web-worker/import-impl/package.json +4 -0
  13. package/@types/dataview/data-import/web-worker/import-manager/package.json +4 -0
  14. package/@types/dataview/data-index/index/package.json +4 -0
  15. package/@types/dataview/data-index/package.json +4 -0
  16. package/@types/dataview/data-index/resolver/package.json +4 -0
  17. package/@types/dataview/data-index/source/package.json +4 -0
  18. package/@types/dataview/data-model/markdown/package.json +4 -0
  19. package/@types/dataview/data-model/serialized/markdown/package.json +4 -0
  20. package/@types/dataview/data-model/transferable/package.json +4 -0
  21. package/@types/dataview/data-model/value/package.json +4 -0
  22. package/@types/dataview/expression/binaryop/package.json +4 -0
  23. package/@types/dataview/expression/context/package.json +4 -0
  24. package/@types/dataview/expression/field/package.json +4 -0
  25. package/@types/dataview/expression/functions/package.json +4 -0
  26. package/@types/dataview/expression/parse/package.json +4 -0
  27. package/@types/dataview/index/package.json +4 -0
  28. package/@types/dataview/main/package.json +4 -0
  29. package/@types/dataview/package.json +4 -0
  30. package/@types/dataview/query/engine/package.json +4 -0
  31. package/@types/dataview/query/parse/package.json +4 -0
  32. package/@types/dataview/query/query/package.json +4 -0
  33. package/@types/dataview/settings/package.json +4 -0
  34. package/@types/dataview/typings/obsidian-ex/package.json +4 -0
  35. package/@types/dataview/typings/workers/package.json +4 -0
  36. package/@types/dataview/ui/export/markdown/package.json +4 -0
  37. package/@types/dataview/ui/lp-render/package.json +4 -0
  38. package/@types/dataview/ui/markdown/package.json +4 -0
  39. package/@types/dataview/ui/refreshable-view/package.json +4 -0
  40. package/@types/dataview/ui/render/package.json +4 -0
  41. package/@types/dataview/ui/views/calendar-view/package.json +4 -0
  42. package/@types/dataview/ui/views/inline-field-live-preview/package.json +4 -0
  43. package/@types/dataview/ui/views/inline-view/package.json +4 -0
  44. package/@types/dataview/ui/views/js-view/package.json +4 -0
  45. package/@types/dataview/ui/views/list-view/package.json +4 -0
  46. package/@types/dataview/ui/views/table-view/package.json +4 -0
  47. package/@types/dataview/ui/views/task-view/package.json +4 -0
  48. package/@types/dataview/util/hash/package.json +4 -0
  49. package/@types/dataview/util/locale/package.json +4 -0
  50. package/@types/dataview/util/media/package.json +4 -0
  51. package/@types/dataview/util/normalize/package.json +4 -0
  52. package/@types/i18next/package.json +4 -0
  53. package/@types/obsidian-integration-testing/package.json +4 -0
  54. package/@types/original-fs/package.json +4 -0
  55. package/LICENSE +21 -0
  56. package/README.md +7 -1
  57. package/codemirror/index/package.json +6 -0
  58. package/codemirror/package.json +6 -0
  59. package/codemirror/state-field-spec/package.json +6 -0
  60. package/command-handlers/abstract-file-command-handler/package.json +6 -0
  61. package/command-handlers/command-handler/package.json +6 -0
  62. package/command-handlers/command-handler-component/package.json +6 -0
  63. package/command-handlers/editor-command-handler/package.json +6 -0
  64. package/command-handlers/file-command-handler/package.json +6 -0
  65. package/command-handlers/folder-command-handler/package.json +6 -0
  66. package/command-handlers/global-command-handler/package.json +6 -0
  67. package/command-handlers/index/package.json +6 -0
  68. package/command-handlers/open-demo-vault-command-handler/package.json +6 -0
  69. package/command-handlers/open-settings-command-handler/package.json +6 -0
  70. package/command-handlers/package.json +6 -0
  71. package/command-handlers/unlock-active-note-command-handler/package.json +6 -0
  72. package/components/abort-signal-component/package.json +6 -0
  73. package/components/all-windows-event-component/package.json +6 -0
  74. package/components/async-error-handler-component/package.json +6 -0
  75. package/components/async-events-component/package.json +6 -0
  76. package/components/case-insensitive-file-index-component/package.json +6 -0
  77. package/components/component-ex/package.json +6 -0
  78. package/components/console-debug-component/package.json +6 -0
  79. package/components/core-plugin-toggle-component/package.json +6 -0
  80. package/components/disposable-component/package.json +6 -0
  81. package/components/embed-extensions-component/package.json +6 -0
  82. package/components/generate-markdown-link-default-params-component/package.json +6 -0
  83. package/components/index/package.json +6 -0
  84. package/components/layout-ready-component/package.json +6 -0
  85. package/components/menu-event-registrar-component/package.json +6 -0
  86. package/components/monkey-around-component/package.json +6 -0
  87. package/components/notebook-navigator-menu-event-registrar-component/package.json +6 -0
  88. package/components/package.json +6 -0
  89. package/components/plugin-context-component/package.json +6 -0
  90. package/components/plugin-gate-component/package.json +6 -0
  91. package/components/plugin-notice-component/package.json +6 -0
  92. package/components/plugin-settings-component/package.json +6 -0
  93. package/components/plugin-settings-tab-component/package.json +6 -0
  94. package/components/plugin-suggestion-component/package.json +6 -0
  95. package/components/pointer-position-component/package.json +6 -0
  96. package/components/registry-component/package.json +6 -0
  97. package/components/release-notes-component/package.json +6 -0
  98. package/components/rename-delete-handler-component/package.json +6 -0
  99. package/components/rmdir-guard-component/package.json +6 -0
  100. package/components/settings-migration-component/package.json +6 -0
  101. package/components/syntax-highlighting-component/package.json +6 -0
  102. package/components/templates-language-component/package.json +6 -0
  103. package/constructors/get-dom-events-handlers-constructor/package.json +6 -0
  104. package/constructors/index/package.json +6 -0
  105. package/constructors/package.json +6 -0
  106. package/dist/lib/cjs/@types/dataview/api/data-array.d.cts +137 -0
  107. package/dist/lib/cjs/@types/dataview/api/extensions.d.cts +16 -0
  108. package/dist/lib/cjs/@types/dataview/api/inline-api.d.cts +187 -0
  109. package/dist/lib/cjs/@types/dataview/api/plugin-api.d.cts +210 -0
  110. package/dist/lib/cjs/@types/dataview/api/result.d.cts +39 -0
  111. package/dist/lib/cjs/@types/dataview/data-import/common.d.cts +4 -0
  112. package/dist/lib/cjs/@types/dataview/data-import/csv.d.cts +4 -0
  113. package/dist/lib/cjs/@types/dataview/data-import/inline-field.d.cts +43 -0
  114. package/dist/lib/cjs/@types/dataview/data-import/markdown-file.d.cts +53 -0
  115. package/dist/lib/cjs/@types/dataview/data-import/persister.d.cts +33 -0
  116. package/dist/lib/cjs/@types/dataview/data-import/web-worker/import-entry.d.cts +2 -0
  117. package/dist/lib/cjs/@types/dataview/data-import/web-worker/import-impl.d.cts +7 -0
  118. package/dist/lib/cjs/@types/dataview/data-import/web-worker/import-manager.d.cts +38 -0
  119. package/dist/lib/cjs/@types/dataview/data-index/index.d.cts +187 -0
  120. package/dist/lib/cjs/@types/dataview/data-index/resolver.d.cts +24 -0
  121. package/dist/lib/cjs/@types/dataview/data-index/source.d.cts +72 -0
  122. package/dist/lib/cjs/@types/dataview/data-model/markdown.d.cts +116 -0
  123. package/dist/lib/cjs/@types/dataview/data-model/serialized/markdown.d.cts +107 -0
  124. package/dist/lib/cjs/@types/dataview/data-model/transferable.d.cts +8 -0
  125. package/dist/lib/cjs/@types/dataview/data-model/value.d.cts +176 -0
  126. package/dist/lib/cjs/@types/dataview/expression/binaryop.d.cts +44 -0
  127. package/dist/lib/cjs/@types/dataview/expression/context.d.cts +50 -0
  128. package/dist/lib/cjs/@types/dataview/expression/field.d.cts +83 -0
  129. package/dist/lib/cjs/@types/dataview/expression/functions.d.cts +150 -0
  130. package/dist/lib/cjs/@types/dataview/expression/parse.d.cts +164 -0
  131. package/dist/lib/cjs/@types/dataview/index.d.cts +56 -0
  132. package/dist/lib/cjs/@types/dataview/main.d.cts +53 -0
  133. package/dist/lib/cjs/@types/dataview/query/engine.d.cts +104 -0
  134. package/dist/lib/cjs/@types/dataview/query/parse.d.cts +45 -0
  135. package/dist/lib/cjs/@types/dataview/query/query.d.cts +96 -0
  136. package/dist/lib/cjs/@types/dataview/settings.d.cts +61 -0
  137. package/dist/lib/cjs/@types/dataview/typings/obsidian-ex.d.cts +29 -0
  138. package/dist/lib/cjs/@types/dataview/typings/workers.d.cts +5 -0
  139. package/dist/lib/cjs/@types/dataview/ui/export/markdown.d.cts +16 -0
  140. package/dist/lib/cjs/@types/dataview/ui/lp-render.d.cts +38 -0
  141. package/dist/lib/cjs/@types/dataview/ui/markdown.d.cts +87 -0
  142. package/dist/lib/cjs/@types/dataview/ui/refreshable-view.d.cts +19 -0
  143. package/dist/lib/cjs/@types/dataview/ui/render.d.cts +34 -0
  144. package/dist/lib/cjs/@types/dataview/ui/views/calendar-view.d.cts +18 -0
  145. package/dist/lib/cjs/@types/dataview/ui/views/inline-field-live-preview.d.cts +43 -0
  146. package/dist/lib/cjs/@types/dataview/ui/views/inline-view.d.cts +29 -0
  147. package/dist/lib/cjs/@types/dataview/ui/views/js-view.d.cts +24 -0
  148. package/dist/lib/cjs/@types/dataview/ui/views/list-view.d.cts +26 -0
  149. package/dist/lib/cjs/@types/dataview/ui/views/table-view.d.cts +29 -0
  150. package/dist/lib/cjs/@types/dataview/ui/views/task-view.d.cts +52 -0
  151. package/dist/lib/cjs/@types/dataview/util/hash.d.cts +2 -0
  152. package/dist/lib/cjs/@types/dataview/util/locale.d.cts +3 -0
  153. package/dist/lib/cjs/@types/dataview/util/media.d.cts +7 -0
  154. package/dist/lib/cjs/@types/dataview/util/normalize.d.cts +45 -0
  155. package/dist/lib/cjs/@types/i18next.d.cts +14 -0
  156. package/dist/lib/cjs/@types/obsidian-integration-testing.d.cts +29 -0
  157. package/dist/lib/cjs/@types/original-fs.d.cts +15 -0
  158. package/dist/lib/cjs/__merged.cjs +1680 -0
  159. package/dist/lib/cjs/__merged.d.cts +205 -0
  160. package/dist/lib/cjs/active-file-provider.cjs +185 -0
  161. package/dist/lib/cjs/active-file-provider.d.cts +36 -0
  162. package/dist/lib/cjs/app.cjs +177 -0
  163. package/dist/lib/cjs/app.d.cts +17 -0
  164. package/dist/lib/cjs/async-with-notice.cjs +259 -0
  165. package/dist/lib/cjs/async-with-notice.d.cts +113 -0
  166. package/dist/lib/cjs/attachment-path.cjs +403 -0
  167. package/dist/lib/cjs/attachment-path.d.cts +341 -0
  168. package/dist/lib/cjs/attachment-unit-folder.cjs +192 -0
  169. package/dist/lib/cjs/attachment-unit-folder.d.cts +103 -0
  170. package/dist/lib/cjs/backlink-index.cjs +273 -0
  171. package/dist/lib/cjs/backlink-index.d.cts +51 -0
  172. package/dist/lib/cjs/backlink.cjs +241 -0
  173. package/dist/lib/cjs/backlink.d.cts +66 -0
  174. package/dist/lib/cjs/bases-view-registrar.cjs +186 -0
  175. package/dist/lib/cjs/bases-view-registrar.d.cts +52 -0
  176. package/dist/lib/cjs/callout.cjs +244 -0
  177. package/dist/lib/cjs/callout.d.cts +76 -0
  178. package/dist/lib/cjs/canvas.cjs +239 -0
  179. package/dist/lib/cjs/canvas.d.cts +28 -0
  180. package/dist/lib/cjs/case-insensitive-file-index.cjs +268 -0
  181. package/dist/lib/cjs/case-insensitive-file-index.d.cts +92 -0
  182. package/dist/lib/cjs/code-block-markdown-information.cjs +155 -0
  183. package/dist/lib/cjs/code-block-markdown-information.d.cts +48 -0
  184. package/dist/lib/cjs/code-block-reg-exp.cjs +169 -0
  185. package/dist/lib/cjs/code-block-reg-exp.d.cts +39 -0
  186. package/dist/lib/cjs/codemirror/index.cjs +177 -0
  187. package/dist/lib/cjs/codemirror/index.d.cts +2 -0
  188. package/dist/lib/cjs/codemirror/state-field-spec.cjs +155 -0
  189. package/dist/lib/cjs/codemirror/state-field-spec.d.cts +72 -0
  190. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +440 -0
  191. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.d.cts +274 -0
  192. package/dist/lib/cjs/command-handlers/command-handler-component.cjs +302 -0
  193. package/dist/lib/cjs/command-handlers/command-handler-component.d.cts +146 -0
  194. package/dist/lib/cjs/command-handlers/command-handler.cjs +224 -0
  195. package/dist/lib/cjs/command-handlers/command-handler.d.cts +107 -0
  196. package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +372 -0
  197. package/dist/lib/cjs/command-handlers/editor-command-handler.d.cts +208 -0
  198. package/dist/lib/cjs/command-handlers/file-command-handler.cjs +309 -0
  199. package/dist/lib/cjs/command-handlers/file-command-handler.d.cts +143 -0
  200. package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +317 -0
  201. package/dist/lib/cjs/command-handlers/folder-command-handler.d.cts +149 -0
  202. package/dist/lib/cjs/command-handlers/global-command-handler.cjs +209 -0
  203. package/dist/lib/cjs/command-handlers/global-command-handler.d.cts +40 -0
  204. package/dist/lib/cjs/command-handlers/index.cjs +204 -0
  205. package/dist/lib/cjs/command-handlers/index.d.cts +11 -0
  206. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +233 -0
  207. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.d.cts +73 -0
  208. package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +198 -0
  209. package/dist/lib/cjs/command-handlers/open-settings-command-handler.d.cts +44 -0
  210. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +211 -0
  211. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.d.cts +54 -0
  212. package/dist/lib/cjs/command-registrar.cjs +193 -0
  213. package/dist/lib/cjs/command-registrar.d.cts +48 -0
  214. package/dist/lib/cjs/community-plugins.cjs +346 -0
  215. package/dist/lib/cjs/community-plugins.d.cts +270 -0
  216. package/dist/lib/cjs/components/abort-signal-component.cjs +196 -0
  217. package/dist/lib/cjs/components/abort-signal-component.d.cts +30 -0
  218. package/dist/lib/cjs/components/all-windows-event-component.cjs +238 -0
  219. package/dist/lib/cjs/components/all-windows-event-component.d.cts +84 -0
  220. package/dist/lib/cjs/components/async-error-handler-component.cjs +200 -0
  221. package/dist/lib/cjs/components/async-error-handler-component.d.cts +30 -0
  222. package/dist/lib/cjs/components/async-events-component.cjs +172 -0
  223. package/dist/lib/cjs/components/async-events-component.d.cts +15 -0
  224. package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +210 -0
  225. package/dist/lib/cjs/components/case-insensitive-file-index-component.d.cts +36 -0
  226. package/dist/lib/cjs/components/component-ex.cjs +528 -0
  227. package/dist/lib/cjs/components/component-ex.d.cts +229 -0
  228. package/dist/lib/cjs/components/console-debug-component.cjs +194 -0
  229. package/dist/lib/cjs/components/console-debug-component.d.cts +30 -0
  230. package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +226 -0
  231. package/dist/lib/cjs/components/core-plugin-toggle-component.d.cts +102 -0
  232. package/dist/lib/cjs/components/disposable-component.cjs +178 -0
  233. package/dist/lib/cjs/components/disposable-component.d.cts +24 -0
  234. package/dist/lib/cjs/components/embed-extensions-component.cjs +198 -0
  235. package/dist/lib/cjs/components/embed-extensions-component.d.cts +38 -0
  236. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +194 -0
  237. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.d.cts +42 -0
  238. package/dist/lib/cjs/components/index.cjs +261 -0
  239. package/dist/lib/cjs/components/index.d.cts +30 -0
  240. package/dist/lib/cjs/components/layout-ready-component.cjs +235 -0
  241. package/dist/lib/cjs/components/layout-ready-component.d.cts +48 -0
  242. package/dist/lib/cjs/components/menu-event-registrar-component.cjs +220 -0
  243. package/dist/lib/cjs/components/menu-event-registrar-component.d.cts +52 -0
  244. package/dist/lib/cjs/components/monkey-around-component.cjs +269 -0
  245. package/dist/lib/cjs/components/monkey-around-component.d.cts +241 -0
  246. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +345 -0
  247. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.d.cts +150 -0
  248. package/dist/lib/cjs/components/plugin-context-component.cjs +204 -0
  249. package/dist/lib/cjs/components/plugin-context-component.d.cts +36 -0
  250. package/dist/lib/cjs/components/plugin-gate-component.cjs +572 -0
  251. package/dist/lib/cjs/components/plugin-gate-component.d.cts +332 -0
  252. package/dist/lib/cjs/components/plugin-notice-component.cjs +653 -0
  253. package/dist/lib/cjs/components/plugin-notice-component.d.cts +362 -0
  254. package/dist/lib/cjs/components/plugin-settings-component.cjs +668 -0
  255. package/dist/lib/cjs/components/plugin-settings-component.d.cts +362 -0
  256. package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +194 -0
  257. package/dist/lib/cjs/components/plugin-settings-tab-component.d.cts +39 -0
  258. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +302 -0
  259. package/dist/lib/cjs/components/plugin-suggestion-component.d.cts +162 -0
  260. package/dist/lib/cjs/components/pointer-position-component.cjs +190 -0
  261. package/dist/lib/cjs/components/pointer-position-component.d.cts +29 -0
  262. package/dist/lib/cjs/components/registry-component.cjs +211 -0
  263. package/dist/lib/cjs/components/registry-component.d.cts +37 -0
  264. package/dist/lib/cjs/components/release-notes-component.cjs +249 -0
  265. package/dist/lib/cjs/components/release-notes-component.d.cts +129 -0
  266. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +1299 -0
  267. package/dist/lib/cjs/components/rename-delete-handler-component.d.cts +165 -0
  268. package/dist/lib/cjs/components/rmdir-guard-component.cjs +214 -0
  269. package/dist/lib/cjs/components/rmdir-guard-component.d.cts +76 -0
  270. package/dist/lib/cjs/components/settings-migration-component.cjs +246 -0
  271. package/dist/lib/cjs/components/settings-migration-component.d.cts +120 -0
  272. package/dist/lib/cjs/components/syntax-highlighting-component.cjs +272 -0
  273. package/dist/lib/cjs/components/syntax-highlighting-component.d.cts +149 -0
  274. package/dist/lib/cjs/components/templates-language-component.cjs +300 -0
  275. package/dist/lib/cjs/components/templates-language-component.d.cts +124 -0
  276. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +270 -0
  277. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.d.cts +22 -0
  278. package/dist/lib/cjs/constructors/index.cjs +177 -0
  279. package/dist/lib/cjs/constructors/index.d.cts +2 -0
  280. package/dist/lib/cjs/css-class.cjs +232 -0
  281. package/dist/lib/cjs/css-class.d.cts +278 -0
  282. package/dist/lib/cjs/data-handler.cjs +194 -0
  283. package/dist/lib/cjs/data-handler.d.cts +49 -0
  284. package/dist/lib/cjs/dataview-link.cjs +184 -0
  285. package/dist/lib/cjs/dataview-link.d.cts +42 -0
  286. package/dist/lib/cjs/dataview.cjs +403 -0
  287. package/dist/lib/cjs/dataview.d.cts +249 -0
  288. package/dist/lib/cjs/debug.cjs +172 -0
  289. package/dist/lib/cjs/debug.d.cts +19 -0
  290. package/dist/lib/cjs/demo-vault-helper-settings.cjs +155 -0
  291. package/dist/lib/cjs/demo-vault-helper-settings.d.cts +29 -0
  292. package/dist/lib/cjs/demo-vault-helper.cjs +256 -0
  293. package/dist/lib/cjs/demo-vault-helper.d.cts +61 -0
  294. package/dist/lib/cjs/demo-vault-naming.cjs +181 -0
  295. package/dist/lib/cjs/demo-vault-naming.d.cts +54 -0
  296. package/dist/lib/cjs/desktop-demo-vault-opener.cjs +372 -0
  297. package/dist/lib/cjs/desktop-demo-vault-opener.d.cts +76 -0
  298. package/dist/lib/cjs/desktop-trusted-input.cjs +325 -0
  299. package/dist/lib/cjs/desktop-trusted-input.d.cts +288 -0
  300. package/dist/lib/cjs/editor-extension-registrar.cjs +186 -0
  301. package/dist/lib/cjs/editor-extension-registrar.d.cts +37 -0
  302. package/dist/lib/cjs/editor-suggest-registrar.cjs +186 -0
  303. package/dist/lib/cjs/editor-suggest-registrar.d.cts +36 -0
  304. package/dist/lib/cjs/editor.cjs +224 -0
  305. package/dist/lib/cjs/editor.d.cts +45 -0
  306. package/dist/lib/cjs/events.cjs +196 -0
  307. package/dist/lib/cjs/events.d.cts +98 -0
  308. package/dist/lib/cjs/extensions-registrar.cjs +186 -0
  309. package/dist/lib/cjs/extensions-registrar.d.cts +51 -0
  310. package/dist/lib/cjs/file-change.cjs +582 -0
  311. package/dist/lib/cjs/file-change.d.cts +156 -0
  312. package/dist/lib/cjs/file-explorer.cjs +181 -0
  313. package/dist/lib/cjs/file-explorer.d.cts +34 -0
  314. package/dist/lib/cjs/file-manager.cjs +275 -0
  315. package/dist/lib/cjs/file-manager.d.cts +123 -0
  316. package/dist/lib/cjs/file-system.cjs +595 -0
  317. package/dist/lib/cjs/file-system.d.cts +554 -0
  318. package/dist/lib/cjs/folder-note.cjs +285 -0
  319. package/dist/lib/cjs/folder-note.d.cts +166 -0
  320. package/dist/lib/cjs/frontmatter-formatting.cjs +472 -0
  321. package/dist/lib/cjs/frontmatter-formatting.d.cts +44 -0
  322. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +183 -0
  323. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.d.cts +34 -0
  324. package/dist/lib/cjs/frontmatter.cjs +295 -0
  325. package/dist/lib/cjs/frontmatter.d.cts +145 -0
  326. package/dist/lib/cjs/generated-during-build.cjs +170 -0
  327. package/dist/lib/cjs/generated-during-build.d.cts +19 -0
  328. package/dist/lib/cjs/hover-link-source-registrar.cjs +186 -0
  329. package/dist/lib/cjs/hover-link-source-registrar.d.cts +52 -0
  330. package/dist/lib/cjs/html-element.cjs +207 -0
  331. package/dist/lib/cjs/html-element.d.cts +98 -0
  332. package/dist/lib/cjs/i18n/custom-type-options.cjs +156 -0
  333. package/dist/lib/cjs/i18n/custom-type-options.d.cts +38 -0
  334. package/dist/lib/cjs/i18n/default-translations.cjs +156 -0
  335. package/dist/lib/cjs/i18n/default-translations.d.cts +15 -0
  336. package/dist/lib/cjs/i18n/i18n.cjs +216 -0
  337. package/dist/lib/cjs/i18n/i18n.d.cts +38 -0
  338. package/dist/lib/cjs/i18n/index.cjs +186 -0
  339. package/dist/lib/cjs/i18n/index.d.cts +5 -0
  340. package/dist/lib/cjs/i18n/locales/en.cjs +248 -0
  341. package/dist/lib/cjs/i18n/locales/en.d.cts +91 -0
  342. package/dist/lib/cjs/i18n/locales/index.cjs +180 -0
  343. package/dist/lib/cjs/i18n/locales/index.d.cts +3 -0
  344. package/dist/lib/cjs/i18n/locales/translations-map.cjs +174 -0
  345. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +100 -0
  346. package/dist/lib/cjs/index.cjs +459 -0
  347. package/dist/lib/cjs/index.d.cts +96 -0
  348. package/dist/lib/cjs/is-in-obsidian.cjs +178 -0
  349. package/dist/lib/cjs/is-in-obsidian.d.cts +12 -0
  350. package/dist/lib/cjs/library-styles.cjs +197 -0
  351. package/dist/lib/cjs/library-styles.d.cts +56 -0
  352. package/dist/lib/cjs/library.cjs +205 -0
  353. package/dist/lib/cjs/library.d.cts +57 -0
  354. package/dist/lib/cjs/link-name.cjs +169 -0
  355. package/dist/lib/cjs/link-name.d.cts +23 -0
  356. package/dist/lib/cjs/link-update-progress.cjs +155 -0
  357. package/dist/lib/cjs/link-update-progress.d.cts +32 -0
  358. package/dist/lib/cjs/link.cjs +1077 -0
  359. package/dist/lib/cjs/link.d.cts +1369 -0
  360. package/dist/lib/cjs/logger.cjs +236 -0
  361. package/dist/lib/cjs/logger.d.cts +37 -0
  362. package/dist/lib/cjs/loop.cjs +267 -0
  363. package/dist/lib/cjs/loop.d.cts +104 -0
  364. package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +190 -0
  365. package/dist/lib/cjs/markdown-code-block-processor-registrar.d.cts +62 -0
  366. package/dist/lib/cjs/markdown-code-block-processor.cjs +468 -0
  367. package/dist/lib/cjs/markdown-code-block-processor.d.cts +137 -0
  368. package/dist/lib/cjs/markdown-post-processor-registrar.cjs +187 -0
  369. package/dist/lib/cjs/markdown-post-processor-registrar.d.cts +59 -0
  370. package/dist/lib/cjs/markdown-view.cjs +175 -0
  371. package/dist/lib/cjs/markdown-view.d.cts +14 -0
  372. package/dist/lib/cjs/markdown.cjs +494 -0
  373. package/dist/lib/cjs/markdown.d.cts +226 -0
  374. package/dist/lib/cjs/menu-event-registrar.cjs +155 -0
  375. package/dist/lib/cjs/menu-event-registrar.d.cts +84 -0
  376. package/dist/lib/cjs/metadata-cache.cjs +568 -0
  377. package/dist/lib/cjs/metadata-cache.d.cts +359 -0
  378. package/dist/lib/cjs/mobile-trusted-input.cjs +209 -0
  379. package/dist/lib/cjs/mobile-trusted-input.d.cts +98 -0
  380. package/dist/lib/cjs/modals/alert.cjs +202 -0
  381. package/dist/lib/cjs/modals/alert.d.cts +35 -0
  382. package/dist/lib/cjs/modals/confirm.cjs +212 -0
  383. package/dist/lib/cjs/modals/confirm.d.cts +39 -0
  384. package/dist/lib/cjs/modals/index.cjs +201 -0
  385. package/dist/lib/cjs/modals/index.d.cts +10 -0
  386. package/dist/lib/cjs/modals/minimizable-modal.cjs +465 -0
  387. package/dist/lib/cjs/modals/minimizable-modal.d.cts +129 -0
  388. package/dist/lib/cjs/modals/modal-command-builder.cjs +482 -0
  389. package/dist/lib/cjs/modals/modal-command-builder.d.cts +285 -0
  390. package/dist/lib/cjs/modals/modal.cjs +200 -0
  391. package/dist/lib/cjs/modals/modal.d.cts +64 -0
  392. package/dist/lib/cjs/modals/prompt.cjs +280 -0
  393. package/dist/lib/cjs/modals/prompt.d.cts +83 -0
  394. package/dist/lib/cjs/modals/select-item.cjs +225 -0
  395. package/dist/lib/cjs/modals/select-item.d.cts +55 -0
  396. package/dist/lib/cjs/modals/select-option.cjs +213 -0
  397. package/dist/lib/cjs/modals/select-option.d.cts +65 -0
  398. package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +168 -0
  399. package/dist/lib/cjs/modals/suggest-modal-command-builder.d.cts +35 -0
  400. package/dist/lib/cjs/note-priority.cjs +258 -0
  401. package/dist/lib/cjs/note-priority.d.cts +154 -0
  402. package/dist/lib/cjs/notebook-navigator.cjs +187 -0
  403. package/dist/lib/cjs/notebook-navigator.d.cts +132 -0
  404. package/dist/lib/cjs/obsidian-dev-utils-state.cjs +199 -0
  405. package/dist/lib/cjs/obsidian-dev-utils-state.d.cts +42 -0
  406. package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +189 -0
  407. package/dist/lib/cjs/obsidian-protocol-handler-registrar.d.cts +55 -0
  408. package/dist/lib/cjs/obsidian-settings.cjs +206 -0
  409. package/dist/lib/cjs/obsidian-settings.d.cts +62 -0
  410. package/dist/lib/cjs/parse-link.cjs +562 -0
  411. package/dist/lib/cjs/parse-link.d.cts +288 -0
  412. package/dist/lib/cjs/path-settings.cjs +293 -0
  413. package/dist/lib/cjs/path-settings.d.cts +56 -0
  414. package/dist/lib/cjs/pdf.cjs +197 -0
  415. package/dist/lib/cjs/pdf.d.cts +26 -0
  416. package/dist/lib/cjs/plugin/index.cjs +198 -0
  417. package/dist/lib/cjs/plugin/index.d.cts +9 -0
  418. package/dist/lib/cjs/plugin/plugin-api.cjs +543 -0
  419. package/dist/lib/cjs/plugin/plugin-api.d.cts +413 -0
  420. package/dist/lib/cjs/plugin/plugin-context.cjs +215 -0
  421. package/dist/lib/cjs/plugin/plugin-context.d.cts +27 -0
  422. package/dist/lib/cjs/plugin/plugin-event-source.cjs +250 -0
  423. package/dist/lib/cjs/plugin/plugin-event-source.d.cts +97 -0
  424. package/dist/lib/cjs/plugin/plugin-install-state.cjs +219 -0
  425. package/dist/lib/cjs/plugin/plugin-install-state.d.cts +113 -0
  426. package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +175 -0
  427. package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +127 -0
  428. package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +635 -0
  429. package/dist/lib/cjs/plugin/plugin-settings-tab.d.cts +368 -0
  430. package/dist/lib/cjs/plugin/plugin.cjs +730 -0
  431. package/dist/lib/cjs/plugin/plugin.d.cts +363 -0
  432. package/dist/lib/cjs/plugin/settings-migration-api.cjs +155 -0
  433. package/dist/lib/cjs/plugin/settings-migration-api.d.cts +91 -0
  434. package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +187 -0
  435. package/dist/lib/cjs/plugin-cli-handler-registrar.d.cts +64 -0
  436. package/dist/lib/cjs/popovers/field-popover.cjs +206 -0
  437. package/dist/lib/cjs/popovers/field-popover.d.cts +75 -0
  438. package/dist/lib/cjs/popovers/index.cjs +183 -0
  439. package/dist/lib/cjs/popovers/index.d.cts +4 -0
  440. package/dist/lib/cjs/popovers/popover-anchor.cjs +206 -0
  441. package/dist/lib/cjs/popovers/popover-anchor.d.cts +67 -0
  442. package/dist/lib/cjs/popovers/popover.cjs +253 -0
  443. package/dist/lib/cjs/popovers/popover.d.cts +78 -0
  444. package/dist/lib/cjs/property-entry.cjs +196 -0
  445. package/dist/lib/cjs/property-entry.d.cts +43 -0
  446. package/dist/lib/cjs/queue.cjs +236 -0
  447. package/dist/lib/cjs/queue.d.cts +93 -0
  448. package/dist/lib/cjs/react/app-context.cjs +175 -0
  449. package/dist/lib/cjs/react/app-context.d.cts +24 -0
  450. package/dist/lib/cjs/react/index.cjs +177 -0
  451. package/dist/lib/cjs/react/index.d.cts +2 -0
  452. package/dist/lib/cjs/reference.cjs +210 -0
  453. package/dist/lib/cjs/reference.d.cts +116 -0
  454. package/dist/lib/cjs/resource-lock.cjs +1120 -0
  455. package/dist/lib/cjs/resource-lock.d.cts +318 -0
  456. package/dist/lib/cjs/resource-url.cjs +180 -0
  457. package/dist/lib/cjs/resource-url.d.cts +31 -0
  458. package/dist/lib/cjs/ribbon-icon-registrar.cjs +187 -0
  459. package/dist/lib/cjs/ribbon-icon-registrar.d.cts +60 -0
  460. package/dist/lib/cjs/setting-components/checkbox-component.cjs +240 -0
  461. package/dist/lib/cjs/setting-components/checkbox-component.d.cts +69 -0
  462. package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +402 -0
  463. package/dist/lib/cjs/setting-components/code-highlighter-component.d.cts +132 -0
  464. package/dist/lib/cjs/setting-components/date-component.cjs +204 -0
  465. package/dist/lib/cjs/setting-components/date-component.d.cts +38 -0
  466. package/dist/lib/cjs/setting-components/date-time-component.cjs +204 -0
  467. package/dist/lib/cjs/setting-components/date-time-component.d.cts +38 -0
  468. package/dist/lib/cjs/setting-components/email-component.cjs +215 -0
  469. package/dist/lib/cjs/setting-components/email-component.d.cts +49 -0
  470. package/dist/lib/cjs/setting-components/file-component.cjs +207 -0
  471. package/dist/lib/cjs/setting-components/file-component.d.cts +43 -0
  472. package/dist/lib/cjs/setting-components/index.cjs +252 -0
  473. package/dist/lib/cjs/setting-components/index.d.cts +27 -0
  474. package/dist/lib/cjs/setting-components/month-component.cjs +212 -0
  475. package/dist/lib/cjs/setting-components/month-component.d.cts +51 -0
  476. package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +277 -0
  477. package/dist/lib/cjs/setting-components/multiple-dropdown-component.d.cts +92 -0
  478. package/dist/lib/cjs/setting-components/multiple-email-component.cjs +201 -0
  479. package/dist/lib/cjs/setting-components/multiple-email-component.d.cts +38 -0
  480. package/dist/lib/cjs/setting-components/multiple-file-component.cjs +209 -0
  481. package/dist/lib/cjs/setting-components/multiple-file-component.d.cts +43 -0
  482. package/dist/lib/cjs/setting-components/multiple-text-component.cjs +296 -0
  483. package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +109 -0
  484. package/dist/lib/cjs/setting-components/number-component.cjs +225 -0
  485. package/dist/lib/cjs/setting-components/number-component.d.cts +56 -0
  486. package/dist/lib/cjs/setting-components/password-component.cjs +201 -0
  487. package/dist/lib/cjs/setting-components/password-component.d.cts +38 -0
  488. package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +184 -0
  489. package/dist/lib/cjs/setting-components/setting-component-wrapper.d.cts +13 -0
  490. package/dist/lib/cjs/setting-components/telephone-component.cjs +215 -0
  491. package/dist/lib/cjs/setting-components/telephone-component.d.cts +51 -0
  492. package/dist/lib/cjs/setting-components/text-based-component.cjs +194 -0
  493. package/dist/lib/cjs/setting-components/text-based-component.d.cts +38 -0
  494. package/dist/lib/cjs/setting-components/time-component.cjs +209 -0
  495. package/dist/lib/cjs/setting-components/time-component.d.cts +38 -0
  496. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +241 -0
  497. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.d.cts +69 -0
  498. package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +286 -0
  499. package/dist/lib/cjs/setting-components/typed-dropdown-component.d.cts +97 -0
  500. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +288 -0
  501. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.d.cts +99 -0
  502. package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +199 -0
  503. package/dist/lib/cjs/setting-components/typed-range-text-component.d.cts +35 -0
  504. package/dist/lib/cjs/setting-components/typed-text-component.cjs +256 -0
  505. package/dist/lib/cjs/setting-components/typed-text-component.d.cts +100 -0
  506. package/dist/lib/cjs/setting-components/url-component.cjs +215 -0
  507. package/dist/lib/cjs/setting-components/url-component.d.cts +49 -0
  508. package/dist/lib/cjs/setting-components/validator-component.cjs +254 -0
  509. package/dist/lib/cjs/setting-components/validator-component.d.cts +23 -0
  510. package/dist/lib/cjs/setting-components/value-component-with-change-tracking.cjs +155 -0
  511. package/dist/lib/cjs/setting-components/value-component-with-change-tracking.d.cts +20 -0
  512. package/dist/lib/cjs/setting-components/week-component.cjs +212 -0
  513. package/dist/lib/cjs/setting-components/week-component.d.cts +51 -0
  514. package/dist/lib/cjs/setting-ex.cjs +396 -0
  515. package/dist/lib/cjs/setting-ex.d.cts +198 -0
  516. package/dist/lib/cjs/setting-group-ex.cjs +189 -0
  517. package/dist/lib/cjs/setting-group-ex.d.cts +26 -0
  518. package/dist/lib/cjs/status-bar-item-registrar.cjs +186 -0
  519. package/dist/lib/cjs/status-bar-item-registrar.d.cts +36 -0
  520. package/dist/lib/cjs/templater.cjs +303 -0
  521. package/dist/lib/cjs/templater.d.cts +284 -0
  522. package/dist/lib/cjs/transformers/duration-transformer.cjs +206 -0
  523. package/dist/lib/cjs/transformers/duration-transformer.d.cts +39 -0
  524. package/dist/lib/cjs/transformers/index.cjs +177 -0
  525. package/dist/lib/cjs/transformers/index.d.cts +2 -0
  526. package/dist/lib/cjs/trusted-input.cjs +220 -0
  527. package/dist/lib/cjs/trusted-input.d.cts +131 -0
  528. package/dist/lib/cjs/validation.cjs +213 -0
  529. package/dist/lib/cjs/validation.d.cts +87 -0
  530. package/dist/lib/cjs/vault-delete.cjs +246 -0
  531. package/dist/lib/cjs/vault-delete.d.cts +82 -0
  532. package/dist/lib/cjs/vault-transaction.cjs +436 -0
  533. package/dist/lib/cjs/vault-transaction.d.cts +163 -0
  534. package/dist/lib/cjs/vault.cjs +725 -0
  535. package/dist/lib/cjs/vault.d.cts +506 -0
  536. package/dist/lib/cjs/view-registrar.cjs +186 -0
  537. package/dist/lib/cjs/view-registrar.d.cts +52 -0
  538. package/dist/lib/cjs/workspace.cjs +210 -0
  539. package/dist/lib/cjs/workspace.d.cts +81 -0
  540. package/dist/lib/esm/@types/dataview/api/data-array.d.mts +137 -0
  541. package/dist/lib/esm/@types/dataview/api/extensions.d.mts +16 -0
  542. package/dist/lib/esm/@types/dataview/api/inline-api.d.mts +187 -0
  543. package/dist/lib/esm/@types/dataview/api/plugin-api.d.mts +210 -0
  544. package/dist/lib/esm/@types/dataview/api/result.d.mts +39 -0
  545. package/dist/lib/esm/@types/dataview/data-import/common.d.mts +4 -0
  546. package/dist/lib/esm/@types/dataview/data-import/csv.d.mts +4 -0
  547. package/dist/lib/esm/@types/dataview/data-import/inline-field.d.mts +43 -0
  548. package/dist/lib/esm/@types/dataview/data-import/markdown-file.d.mts +53 -0
  549. package/dist/lib/esm/@types/dataview/data-import/persister.d.mts +33 -0
  550. package/dist/lib/esm/@types/dataview/data-import/web-worker/import-entry.d.mts +2 -0
  551. package/dist/lib/esm/@types/dataview/data-import/web-worker/import-impl.d.mts +7 -0
  552. package/dist/lib/esm/@types/dataview/data-import/web-worker/import-manager.d.mts +38 -0
  553. package/dist/lib/esm/@types/dataview/data-index/index.d.mts +187 -0
  554. package/dist/lib/esm/@types/dataview/data-index/resolver.d.mts +24 -0
  555. package/dist/lib/esm/@types/dataview/data-index/source.d.mts +72 -0
  556. package/dist/lib/esm/@types/dataview/data-model/markdown.d.mts +116 -0
  557. package/dist/lib/esm/@types/dataview/data-model/serialized/markdown.d.mts +107 -0
  558. package/dist/lib/esm/@types/dataview/data-model/transferable.d.mts +8 -0
  559. package/dist/lib/esm/@types/dataview/data-model/value.d.mts +176 -0
  560. package/dist/lib/esm/@types/dataview/expression/binaryop.d.mts +44 -0
  561. package/dist/lib/esm/@types/dataview/expression/context.d.mts +50 -0
  562. package/dist/lib/esm/@types/dataview/expression/field.d.mts +83 -0
  563. package/dist/lib/esm/@types/dataview/expression/functions.d.mts +150 -0
  564. package/dist/lib/esm/@types/dataview/expression/parse.d.mts +164 -0
  565. package/dist/lib/esm/@types/dataview/index.d.mts +56 -0
  566. package/dist/lib/esm/@types/dataview/main.d.mts +53 -0
  567. package/dist/lib/esm/@types/dataview/query/engine.d.mts +104 -0
  568. package/dist/lib/esm/@types/dataview/query/parse.d.mts +45 -0
  569. package/dist/lib/esm/@types/dataview/query/query.d.mts +96 -0
  570. package/dist/lib/esm/@types/dataview/settings.d.mts +61 -0
  571. package/dist/lib/esm/@types/dataview/typings/obsidian-ex.d.mts +29 -0
  572. package/dist/lib/esm/@types/dataview/typings/workers.d.mts +5 -0
  573. package/dist/lib/esm/@types/dataview/ui/export/markdown.d.mts +16 -0
  574. package/dist/lib/esm/@types/dataview/ui/lp-render.d.mts +38 -0
  575. package/dist/lib/esm/@types/dataview/ui/markdown.d.mts +87 -0
  576. package/dist/lib/esm/@types/dataview/ui/refreshable-view.d.mts +19 -0
  577. package/dist/lib/esm/@types/dataview/ui/render.d.mts +34 -0
  578. package/dist/lib/esm/@types/dataview/ui/views/calendar-view.d.mts +18 -0
  579. package/dist/lib/esm/@types/dataview/ui/views/inline-field-live-preview.d.mts +43 -0
  580. package/dist/lib/esm/@types/dataview/ui/views/inline-view.d.mts +29 -0
  581. package/dist/lib/esm/@types/dataview/ui/views/js-view.d.mts +24 -0
  582. package/dist/lib/esm/@types/dataview/ui/views/list-view.d.mts +26 -0
  583. package/dist/lib/esm/@types/dataview/ui/views/table-view.d.mts +29 -0
  584. package/dist/lib/esm/@types/dataview/ui/views/task-view.d.mts +52 -0
  585. package/dist/lib/esm/@types/dataview/util/hash.d.mts +2 -0
  586. package/dist/lib/esm/@types/dataview/util/locale.d.mts +3 -0
  587. package/dist/lib/esm/@types/dataview/util/media.d.mts +7 -0
  588. package/dist/lib/esm/@types/dataview/util/normalize.d.mts +45 -0
  589. package/dist/lib/esm/@types/i18next.d.mts +14 -0
  590. package/dist/lib/esm/@types/obsidian-integration-testing.d.mts +29 -0
  591. package/dist/lib/esm/@types/original-fs.d.mts +15 -0
  592. package/dist/lib/esm/__merged.d.mts +205 -0
  593. package/dist/lib/esm/__merged.mjs +1532 -0
  594. package/dist/lib/esm/active-file-provider.d.mts +36 -0
  595. package/dist/lib/esm/active-file-provider.mjs +72 -0
  596. package/dist/lib/esm/app.d.mts +17 -0
  597. package/dist/lib/esm/app.mjs +64 -0
  598. package/dist/lib/esm/async-with-notice.d.mts +113 -0
  599. package/dist/lib/esm/async-with-notice.mjs +149 -0
  600. package/dist/lib/esm/attachment-path.d.mts +341 -0
  601. package/dist/lib/esm/attachment-path.mjs +302 -0
  602. package/dist/lib/esm/attachment-unit-folder.d.mts +103 -0
  603. package/dist/lib/esm/attachment-unit-folder.mjs +78 -0
  604. package/dist/lib/esm/backlink-index.d.mts +51 -0
  605. package/dist/lib/esm/backlink-index.mjs +160 -0
  606. package/dist/lib/esm/backlink.d.mts +66 -0
  607. package/dist/lib/esm/backlink.mjs +131 -0
  608. package/dist/lib/esm/bases-view-registrar.d.mts +52 -0
  609. package/dist/lib/esm/bases-view-registrar.mjs +73 -0
  610. package/dist/lib/esm/callout.d.mts +76 -0
  611. package/dist/lib/esm/callout.mjs +132 -0
  612. package/dist/lib/esm/canvas.d.mts +28 -0
  613. package/dist/lib/esm/canvas.mjs +129 -0
  614. package/dist/lib/esm/case-insensitive-file-index.d.mts +92 -0
  615. package/dist/lib/esm/case-insensitive-file-index.mjs +152 -0
  616. package/dist/lib/esm/code-block-markdown-information.d.mts +48 -0
  617. package/dist/lib/esm/code-block-markdown-information.mjs +50 -0
  618. package/dist/lib/esm/code-block-reg-exp.d.mts +39 -0
  619. package/dist/lib/esm/code-block-reg-exp.mjs +56 -0
  620. package/dist/lib/esm/codemirror/index.d.mts +2 -0
  621. package/dist/lib/esm/codemirror/index.mjs +54 -0
  622. package/dist/lib/esm/codemirror/state-field-spec.d.mts +72 -0
  623. package/dist/lib/esm/codemirror/state-field-spec.mjs +50 -0
  624. package/dist/lib/esm/command-handlers/abstract-file-command-handler.d.mts +274 -0
  625. package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +330 -0
  626. package/dist/lib/esm/command-handlers/command-handler-component.d.mts +146 -0
  627. package/dist/lib/esm/command-handlers/command-handler-component.mjs +193 -0
  628. package/dist/lib/esm/command-handlers/command-handler.d.mts +107 -0
  629. package/dist/lib/esm/command-handlers/command-handler.mjs +111 -0
  630. package/dist/lib/esm/command-handlers/editor-command-handler.d.mts +208 -0
  631. package/dist/lib/esm/command-handlers/editor-command-handler.mjs +262 -0
  632. package/dist/lib/esm/command-handlers/file-command-handler.d.mts +143 -0
  633. package/dist/lib/esm/command-handlers/file-command-handler.mjs +200 -0
  634. package/dist/lib/esm/command-handlers/folder-command-handler.d.mts +149 -0
  635. package/dist/lib/esm/command-handlers/folder-command-handler.mjs +208 -0
  636. package/dist/lib/esm/command-handlers/global-command-handler.d.mts +40 -0
  637. package/dist/lib/esm/command-handlers/global-command-handler.mjs +96 -0
  638. package/dist/lib/esm/command-handlers/index.d.mts +11 -0
  639. package/dist/lib/esm/command-handlers/index.mjs +72 -0
  640. package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.d.mts +73 -0
  641. package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.mjs +110 -0
  642. package/dist/lib/esm/command-handlers/open-settings-command-handler.d.mts +44 -0
  643. package/dist/lib/esm/command-handlers/open-settings-command-handler.mjs +85 -0
  644. package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.d.mts +54 -0
  645. package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.mjs +98 -0
  646. package/dist/lib/esm/command-registrar.d.mts +48 -0
  647. package/dist/lib/esm/command-registrar.mjs +80 -0
  648. package/dist/lib/esm/community-plugins.d.mts +270 -0
  649. package/dist/lib/esm/community-plugins.mjs +222 -0
  650. package/dist/lib/esm/components/abort-signal-component.d.mts +30 -0
  651. package/dist/lib/esm/components/abort-signal-component.mjs +83 -0
  652. package/dist/lib/esm/components/all-windows-event-component.d.mts +84 -0
  653. package/dist/lib/esm/components/all-windows-event-component.mjs +125 -0
  654. package/dist/lib/esm/components/async-error-handler-component.d.mts +30 -0
  655. package/dist/lib/esm/components/async-error-handler-component.mjs +87 -0
  656. package/dist/lib/esm/components/async-events-component.d.mts +15 -0
  657. package/dist/lib/esm/components/async-events-component.mjs +59 -0
  658. package/dist/lib/esm/components/case-insensitive-file-index-component.d.mts +36 -0
  659. package/dist/lib/esm/components/case-insensitive-file-index-component.mjs +101 -0
  660. package/dist/lib/esm/components/component-ex.d.mts +229 -0
  661. package/dist/lib/esm/components/component-ex.mjs +421 -0
  662. package/dist/lib/esm/components/console-debug-component.d.mts +30 -0
  663. package/dist/lib/esm/components/console-debug-component.mjs +81 -0
  664. package/dist/lib/esm/components/core-plugin-toggle-component.d.mts +102 -0
  665. package/dist/lib/esm/components/core-plugin-toggle-component.mjs +113 -0
  666. package/dist/lib/esm/components/disposable-component.d.mts +24 -0
  667. package/dist/lib/esm/components/disposable-component.mjs +65 -0
  668. package/dist/lib/esm/components/embed-extensions-component.d.mts +38 -0
  669. package/dist/lib/esm/components/embed-extensions-component.mjs +85 -0
  670. package/dist/lib/esm/components/generate-markdown-link-default-params-component.d.mts +42 -0
  671. package/dist/lib/esm/components/generate-markdown-link-default-params-component.mjs +81 -0
  672. package/dist/lib/esm/components/index.d.mts +30 -0
  673. package/dist/lib/esm/components/index.mjs +110 -0
  674. package/dist/lib/esm/components/layout-ready-component.d.mts +48 -0
  675. package/dist/lib/esm/components/layout-ready-component.mjs +121 -0
  676. package/dist/lib/esm/components/menu-event-registrar-component.d.mts +52 -0
  677. package/dist/lib/esm/components/menu-event-registrar-component.mjs +107 -0
  678. package/dist/lib/esm/components/monkey-around-component.d.mts +241 -0
  679. package/dist/lib/esm/components/monkey-around-component.mjs +154 -0
  680. package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.d.mts +150 -0
  681. package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.mjs +235 -0
  682. package/dist/lib/esm/components/plugin-context-component.d.mts +36 -0
  683. package/dist/lib/esm/components/plugin-context-component.mjs +94 -0
  684. package/dist/lib/esm/components/plugin-gate-component.d.mts +332 -0
  685. package/dist/lib/esm/components/plugin-gate-component.mjs +472 -0
  686. package/dist/lib/esm/components/plugin-notice-component.d.mts +362 -0
  687. package/dist/lib/esm/components/plugin-notice-component.mjs +543 -0
  688. package/dist/lib/esm/components/plugin-settings-component.d.mts +362 -0
  689. package/dist/lib/esm/components/plugin-settings-component.mjs +562 -0
  690. package/dist/lib/esm/components/plugin-settings-tab-component.d.mts +39 -0
  691. package/dist/lib/esm/components/plugin-settings-tab-component.mjs +81 -0
  692. package/dist/lib/esm/components/plugin-suggestion-component.d.mts +162 -0
  693. package/dist/lib/esm/components/plugin-suggestion-component.mjs +192 -0
  694. package/dist/lib/esm/components/pointer-position-component.d.mts +29 -0
  695. package/dist/lib/esm/components/pointer-position-component.mjs +77 -0
  696. package/dist/lib/esm/components/registry-component.d.mts +37 -0
  697. package/dist/lib/esm/components/registry-component.mjs +98 -0
  698. package/dist/lib/esm/components/release-notes-component.d.mts +129 -0
  699. package/dist/lib/esm/components/release-notes-component.mjs +136 -0
  700. package/dist/lib/esm/components/rename-delete-handler-component.d.mts +165 -0
  701. package/dist/lib/esm/components/rename-delete-handler-component.mjs +1238 -0
  702. package/dist/lib/esm/components/rmdir-guard-component.d.mts +76 -0
  703. package/dist/lib/esm/components/rmdir-guard-component.mjs +100 -0
  704. package/dist/lib/esm/components/settings-migration-component.d.mts +120 -0
  705. package/dist/lib/esm/components/settings-migration-component.mjs +133 -0
  706. package/dist/lib/esm/components/syntax-highlighting-component.d.mts +149 -0
  707. package/dist/lib/esm/components/syntax-highlighting-component.mjs +159 -0
  708. package/dist/lib/esm/components/templates-language-component.d.mts +124 -0
  709. package/dist/lib/esm/components/templates-language-component.mjs +187 -0
  710. package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.d.mts +22 -0
  711. package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.mjs +157 -0
  712. package/dist/lib/esm/constructors/index.d.mts +2 -0
  713. package/dist/lib/esm/constructors/index.mjs +54 -0
  714. package/dist/lib/esm/css-class.d.mts +278 -0
  715. package/dist/lib/esm/css-class.mjs +119 -0
  716. package/dist/lib/esm/data-handler.d.mts +49 -0
  717. package/dist/lib/esm/data-handler.mjs +81 -0
  718. package/dist/lib/esm/dataview-link.d.mts +42 -0
  719. package/dist/lib/esm/dataview-link.mjs +74 -0
  720. package/dist/lib/esm/dataview.d.mts +249 -0
  721. package/dist/lib/esm/dataview.mjs +288 -0
  722. package/dist/lib/esm/debug.d.mts +19 -0
  723. package/dist/lib/esm/debug.mjs +59 -0
  724. package/dist/lib/esm/demo-vault-helper-settings.d.mts +29 -0
  725. package/dist/lib/esm/demo-vault-helper-settings.mjs +50 -0
  726. package/dist/lib/esm/demo-vault-helper.d.mts +61 -0
  727. package/dist/lib/esm/demo-vault-helper.mjs +150 -0
  728. package/dist/lib/esm/demo-vault-naming.d.mts +54 -0
  729. package/dist/lib/esm/demo-vault-naming.mjs +67 -0
  730. package/dist/lib/esm/desktop-demo-vault-opener.d.mts +76 -0
  731. package/dist/lib/esm/desktop-demo-vault-opener.mjs +274 -0
  732. package/dist/lib/esm/desktop-trusted-input.d.mts +288 -0
  733. package/dist/lib/esm/desktop-trusted-input.mjs +206 -0
  734. package/dist/lib/esm/editor-extension-registrar.d.mts +37 -0
  735. package/dist/lib/esm/editor-extension-registrar.mjs +73 -0
  736. package/dist/lib/esm/editor-suggest-registrar.d.mts +36 -0
  737. package/dist/lib/esm/editor-suggest-registrar.mjs +76 -0
  738. package/dist/lib/esm/editor.d.mts +45 -0
  739. package/dist/lib/esm/editor.mjs +115 -0
  740. package/dist/lib/esm/events.d.mts +98 -0
  741. package/dist/lib/esm/events.mjs +81 -0
  742. package/dist/lib/esm/extensions-registrar.d.mts +51 -0
  743. package/dist/lib/esm/extensions-registrar.mjs +73 -0
  744. package/dist/lib/esm/file-change.d.mts +156 -0
  745. package/dist/lib/esm/file-change.mjs +481 -0
  746. package/dist/lib/esm/file-explorer.d.mts +34 -0
  747. package/dist/lib/esm/file-explorer.mjs +68 -0
  748. package/dist/lib/esm/file-manager.d.mts +123 -0
  749. package/dist/lib/esm/file-manager.mjs +169 -0
  750. package/dist/lib/esm/file-system.d.mts +554 -0
  751. package/dist/lib/esm/file-system.mjs +466 -0
  752. package/dist/lib/esm/folder-note.d.mts +166 -0
  753. package/dist/lib/esm/folder-note.mjs +169 -0
  754. package/dist/lib/esm/frontmatter-formatting.d.mts +44 -0
  755. package/dist/lib/esm/frontmatter-formatting.mjs +376 -0
  756. package/dist/lib/esm/frontmatter-link-cache-with-offsets.d.mts +34 -0
  757. package/dist/lib/esm/frontmatter-link-cache-with-offsets.mjs +69 -0
  758. package/dist/lib/esm/frontmatter.d.mts +145 -0
  759. package/dist/lib/esm/frontmatter.mjs +182 -0
  760. package/dist/lib/esm/generated-during-build.d.mts +19 -0
  761. package/dist/lib/esm/generated-during-build.mjs +56 -0
  762. package/dist/lib/esm/hover-link-source-registrar.d.mts +52 -0
  763. package/dist/lib/esm/hover-link-source-registrar.mjs +73 -0
  764. package/dist/lib/esm/html-element.d.mts +98 -0
  765. package/dist/lib/esm/html-element.mjs +94 -0
  766. package/dist/lib/esm/i18n/custom-type-options.d.mts +38 -0
  767. package/dist/lib/esm/i18n/custom-type-options.mjs +51 -0
  768. package/dist/lib/esm/i18n/default-translations.d.mts +15 -0
  769. package/dist/lib/esm/i18n/default-translations.mjs +51 -0
  770. package/dist/lib/esm/i18n/i18n.d.mts +38 -0
  771. package/dist/lib/esm/i18n/i18n.mjs +97 -0
  772. package/dist/lib/esm/i18n/index.d.mts +5 -0
  773. package/dist/lib/esm/i18n/index.mjs +60 -0
  774. package/dist/lib/esm/i18n/locales/en.d.mts +91 -0
  775. package/dist/lib/esm/i18n/locales/en.mjs +135 -0
  776. package/dist/lib/esm/i18n/locales/index.d.mts +3 -0
  777. package/dist/lib/esm/i18n/locales/index.mjs +56 -0
  778. package/dist/lib/esm/i18n/locales/translations-map.d.mts +100 -0
  779. package/dist/lib/esm/i18n/locales/translations-map.mjs +60 -0
  780. package/dist/lib/esm/index.d.mts +96 -0
  781. package/dist/lib/esm/index.mjs +242 -0
  782. package/dist/lib/esm/is-in-obsidian.d.mts +12 -0
  783. package/dist/lib/esm/is-in-obsidian.mjs +67 -0
  784. package/dist/lib/esm/library-styles.d.mts +56 -0
  785. package/dist/lib/esm/library-styles.mjs +80 -0
  786. package/dist/lib/esm/library.d.mts +57 -0
  787. package/dist/lib/esm/library.mjs +91 -0
  788. package/dist/lib/esm/link-name.d.mts +23 -0
  789. package/dist/lib/esm/link-name.mjs +56 -0
  790. package/dist/lib/esm/link-update-progress.d.mts +32 -0
  791. package/dist/lib/esm/link-update-progress.mjs +50 -0
  792. package/dist/lib/esm/link.d.mts +1369 -0
  793. package/dist/lib/esm/link.mjs +996 -0
  794. package/dist/lib/esm/logger.d.mts +37 -0
  795. package/dist/lib/esm/logger.mjs +123 -0
  796. package/dist/lib/esm/loop.d.mts +104 -0
  797. package/dist/lib/esm/loop.mjs +159 -0
  798. package/dist/lib/esm/markdown-code-block-processor-registrar.d.mts +62 -0
  799. package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +77 -0
  800. package/dist/lib/esm/markdown-code-block-processor.d.mts +137 -0
  801. package/dist/lib/esm/markdown-code-block-processor.mjs +364 -0
  802. package/dist/lib/esm/markdown-post-processor-registrar.d.mts +59 -0
  803. package/dist/lib/esm/markdown-post-processor-registrar.mjs +74 -0
  804. package/dist/lib/esm/markdown-view.d.mts +14 -0
  805. package/dist/lib/esm/markdown-view.mjs +62 -0
  806. package/dist/lib/esm/markdown.d.mts +226 -0
  807. package/dist/lib/esm/markdown.mjs +399 -0
  808. package/dist/lib/esm/menu-event-registrar.d.mts +84 -0
  809. package/dist/lib/esm/menu-event-registrar.mjs +50 -0
  810. package/dist/lib/esm/metadata-cache.d.mts +359 -0
  811. package/dist/lib/esm/metadata-cache.mjs +462 -0
  812. package/dist/lib/esm/mobile-trusted-input.d.mts +98 -0
  813. package/dist/lib/esm/mobile-trusted-input.mjs +90 -0
  814. package/dist/lib/esm/modals/alert.d.mts +35 -0
  815. package/dist/lib/esm/modals/alert.mjs +92 -0
  816. package/dist/lib/esm/modals/confirm.d.mts +39 -0
  817. package/dist/lib/esm/modals/confirm.mjs +102 -0
  818. package/dist/lib/esm/modals/index.d.mts +10 -0
  819. package/dist/lib/esm/modals/index.mjs +70 -0
  820. package/dist/lib/esm/modals/minimizable-modal.d.mts +129 -0
  821. package/dist/lib/esm/modals/minimizable-modal.mjs +356 -0
  822. package/dist/lib/esm/modals/modal-command-builder.d.mts +285 -0
  823. package/dist/lib/esm/modals/modal-command-builder.mjs +371 -0
  824. package/dist/lib/esm/modals/modal.d.mts +64 -0
  825. package/dist/lib/esm/modals/modal.mjs +86 -0
  826. package/dist/lib/esm/modals/prompt.d.mts +83 -0
  827. package/dist/lib/esm/modals/prompt.mjs +176 -0
  828. package/dist/lib/esm/modals/select-item.d.mts +55 -0
  829. package/dist/lib/esm/modals/select-item.mjs +112 -0
  830. package/dist/lib/esm/modals/select-option.d.mts +65 -0
  831. package/dist/lib/esm/modals/select-option.mjs +103 -0
  832. package/dist/lib/esm/modals/suggest-modal-command-builder.d.mts +35 -0
  833. package/dist/lib/esm/modals/suggest-modal-command-builder.mjs +55 -0
  834. package/dist/lib/esm/note-priority.d.mts +154 -0
  835. package/dist/lib/esm/note-priority.mjs +143 -0
  836. package/dist/lib/esm/notebook-navigator.d.mts +132 -0
  837. package/dist/lib/esm/notebook-navigator.mjs +72 -0
  838. package/dist/lib/esm/obsidian-dev-utils-state.d.mts +42 -0
  839. package/dist/lib/esm/obsidian-dev-utils-state.mjs +84 -0
  840. package/dist/lib/esm/obsidian-protocol-handler-registrar.d.mts +55 -0
  841. package/dist/lib/esm/obsidian-protocol-handler-registrar.mjs +76 -0
  842. package/dist/lib/esm/obsidian-settings.d.mts +62 -0
  843. package/dist/lib/esm/obsidian-settings.mjs +89 -0
  844. package/dist/lib/esm/parse-link.d.mts +288 -0
  845. package/dist/lib/esm/parse-link.mjs +436 -0
  846. package/dist/lib/esm/path-settings.d.mts +56 -0
  847. package/dist/lib/esm/path-settings.mjs +184 -0
  848. package/dist/lib/esm/pdf.d.mts +26 -0
  849. package/dist/lib/esm/pdf.mjs +84 -0
  850. package/dist/lib/esm/plugin/index.d.mts +9 -0
  851. package/dist/lib/esm/plugin/index.mjs +68 -0
  852. package/dist/lib/esm/plugin/plugin-api.d.mts +413 -0
  853. package/dist/lib/esm/plugin/plugin-api.mjs +430 -0
  854. package/dist/lib/esm/plugin/plugin-context.d.mts +27 -0
  855. package/dist/lib/esm/plugin/plugin-context.mjs +109 -0
  856. package/dist/lib/esm/plugin/plugin-event-source.d.mts +97 -0
  857. package/dist/lib/esm/plugin/plugin-event-source.mjs +137 -0
  858. package/dist/lib/esm/plugin/plugin-install-state.d.mts +113 -0
  859. package/dist/lib/esm/plugin/plugin-install-state.mjs +109 -0
  860. package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +127 -0
  861. package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +60 -0
  862. package/dist/lib/esm/plugin/plugin-settings-tab.d.mts +368 -0
  863. package/dist/lib/esm/plugin/plugin-settings-tab.mjs +535 -0
  864. package/dist/lib/esm/plugin/plugin.d.mts +363 -0
  865. package/dist/lib/esm/plugin/plugin.mjs +619 -0
  866. package/dist/lib/esm/plugin/settings-migration-api.d.mts +91 -0
  867. package/dist/lib/esm/plugin/settings-migration-api.mjs +50 -0
  868. package/dist/lib/esm/plugin-cli-handler-registrar.d.mts +64 -0
  869. package/dist/lib/esm/plugin-cli-handler-registrar.mjs +74 -0
  870. package/dist/lib/esm/popovers/field-popover.d.mts +75 -0
  871. package/dist/lib/esm/popovers/field-popover.mjs +96 -0
  872. package/dist/lib/esm/popovers/index.d.mts +4 -0
  873. package/dist/lib/esm/popovers/index.mjs +58 -0
  874. package/dist/lib/esm/popovers/popover-anchor.d.mts +67 -0
  875. package/dist/lib/esm/popovers/popover-anchor.mjs +90 -0
  876. package/dist/lib/esm/popovers/popover.d.mts +78 -0
  877. package/dist/lib/esm/popovers/popover.mjs +140 -0
  878. package/dist/lib/esm/property-entry.d.mts +43 -0
  879. package/dist/lib/esm/property-entry.mjs +81 -0
  880. package/dist/lib/esm/queue.d.mts +93 -0
  881. package/dist/lib/esm/queue.mjs +130 -0
  882. package/dist/lib/esm/react/app-context.d.mts +24 -0
  883. package/dist/lib/esm/react/app-context.mjs +64 -0
  884. package/dist/lib/esm/react/index.d.mts +2 -0
  885. package/dist/lib/esm/react/index.mjs +54 -0
  886. package/dist/lib/esm/reference.d.mts +116 -0
  887. package/dist/lib/esm/reference.mjs +95 -0
  888. package/dist/lib/esm/resource-lock.d.mts +318 -0
  889. package/dist/lib/esm/resource-lock.mjs +1014 -0
  890. package/dist/lib/esm/resource-url.d.mts +31 -0
  891. package/dist/lib/esm/resource-url.mjs +67 -0
  892. package/dist/lib/esm/ribbon-icon-registrar.d.mts +60 -0
  893. package/dist/lib/esm/ribbon-icon-registrar.mjs +74 -0
  894. package/dist/lib/esm/setting-components/checkbox-component.d.mts +69 -0
  895. package/dist/lib/esm/setting-components/checkbox-component.mjs +127 -0
  896. package/dist/lib/esm/setting-components/code-highlighter-component.d.mts +132 -0
  897. package/dist/lib/esm/setting-components/code-highlighter-component.mjs +295 -0
  898. package/dist/lib/esm/setting-components/date-component.d.mts +38 -0
  899. package/dist/lib/esm/setting-components/date-component.mjs +91 -0
  900. package/dist/lib/esm/setting-components/date-time-component.d.mts +38 -0
  901. package/dist/lib/esm/setting-components/date-time-component.mjs +91 -0
  902. package/dist/lib/esm/setting-components/email-component.d.mts +49 -0
  903. package/dist/lib/esm/setting-components/email-component.mjs +102 -0
  904. package/dist/lib/esm/setting-components/file-component.d.mts +43 -0
  905. package/dist/lib/esm/setting-components/file-component.mjs +94 -0
  906. package/dist/lib/esm/setting-components/index.d.mts +27 -0
  907. package/dist/lib/esm/setting-components/index.mjs +104 -0
  908. package/dist/lib/esm/setting-components/month-component.d.mts +51 -0
  909. package/dist/lib/esm/setting-components/month-component.mjs +99 -0
  910. package/dist/lib/esm/setting-components/multiple-dropdown-component.d.mts +92 -0
  911. package/dist/lib/esm/setting-components/multiple-dropdown-component.mjs +167 -0
  912. package/dist/lib/esm/setting-components/multiple-email-component.d.mts +38 -0
  913. package/dist/lib/esm/setting-components/multiple-email-component.mjs +88 -0
  914. package/dist/lib/esm/setting-components/multiple-file-component.d.mts +43 -0
  915. package/dist/lib/esm/setting-components/multiple-file-component.mjs +96 -0
  916. package/dist/lib/esm/setting-components/multiple-text-component.d.mts +109 -0
  917. package/dist/lib/esm/setting-components/multiple-text-component.mjs +186 -0
  918. package/dist/lib/esm/setting-components/number-component.d.mts +56 -0
  919. package/dist/lib/esm/setting-components/number-component.mjs +112 -0
  920. package/dist/lib/esm/setting-components/password-component.d.mts +38 -0
  921. package/dist/lib/esm/setting-components/password-component.mjs +88 -0
  922. package/dist/lib/esm/setting-components/setting-component-wrapper.d.mts +13 -0
  923. package/dist/lib/esm/setting-components/setting-component-wrapper.mjs +71 -0
  924. package/dist/lib/esm/setting-components/telephone-component.d.mts +51 -0
  925. package/dist/lib/esm/setting-components/telephone-component.mjs +102 -0
  926. package/dist/lib/esm/setting-components/text-based-component.d.mts +38 -0
  927. package/dist/lib/esm/setting-components/text-based-component.mjs +81 -0
  928. package/dist/lib/esm/setting-components/time-component.d.mts +38 -0
  929. package/dist/lib/esm/setting-components/time-component.mjs +96 -0
  930. package/dist/lib/esm/setting-components/tri-state-checkbox-component.d.mts +69 -0
  931. package/dist/lib/esm/setting-components/tri-state-checkbox-component.mjs +128 -0
  932. package/dist/lib/esm/setting-components/typed-dropdown-component.d.mts +97 -0
  933. package/dist/lib/esm/setting-components/typed-dropdown-component.mjs +176 -0
  934. package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.d.mts +99 -0
  935. package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.mjs +175 -0
  936. package/dist/lib/esm/setting-components/typed-range-text-component.d.mts +35 -0
  937. package/dist/lib/esm/setting-components/typed-range-text-component.mjs +86 -0
  938. package/dist/lib/esm/setting-components/typed-text-component.d.mts +100 -0
  939. package/dist/lib/esm/setting-components/typed-text-component.mjs +146 -0
  940. package/dist/lib/esm/setting-components/url-component.d.mts +49 -0
  941. package/dist/lib/esm/setting-components/url-component.mjs +102 -0
  942. package/dist/lib/esm/setting-components/validator-component.d.mts +23 -0
  943. package/dist/lib/esm/setting-components/validator-component.mjs +150 -0
  944. package/dist/lib/esm/setting-components/value-component-with-change-tracking.d.mts +20 -0
  945. package/dist/lib/esm/setting-components/value-component-with-change-tracking.mjs +50 -0
  946. package/dist/lib/esm/setting-components/week-component.d.mts +51 -0
  947. package/dist/lib/esm/setting-components/week-component.mjs +99 -0
  948. package/dist/lib/esm/setting-ex.d.mts +198 -0
  949. package/dist/lib/esm/setting-ex.mjs +282 -0
  950. package/dist/lib/esm/setting-group-ex.d.mts +26 -0
  951. package/dist/lib/esm/setting-group-ex.mjs +76 -0
  952. package/dist/lib/esm/status-bar-item-registrar.d.mts +36 -0
  953. package/dist/lib/esm/status-bar-item-registrar.mjs +73 -0
  954. package/dist/lib/esm/templater.d.mts +284 -0
  955. package/dist/lib/esm/templater.mjs +181 -0
  956. package/dist/lib/esm/transformers/duration-transformer.d.mts +39 -0
  957. package/dist/lib/esm/transformers/duration-transformer.mjs +93 -0
  958. package/dist/lib/esm/transformers/index.d.mts +2 -0
  959. package/dist/lib/esm/transformers/index.mjs +54 -0
  960. package/dist/lib/esm/trusted-input.d.mts +131 -0
  961. package/dist/lib/esm/trusted-input.mjs +91 -0
  962. package/dist/lib/esm/validation.d.mts +87 -0
  963. package/dist/lib/esm/validation.mjs +95 -0
  964. package/dist/lib/esm/vault-delete.d.mts +82 -0
  965. package/dist/lib/esm/vault-delete.mjs +140 -0
  966. package/dist/lib/esm/vault-transaction.d.mts +163 -0
  967. package/dist/lib/esm/vault-transaction.mjs +333 -0
  968. package/dist/lib/esm/vault.d.mts +506 -0
  969. package/dist/lib/esm/vault.mjs +612 -0
  970. package/dist/lib/esm/view-registrar.d.mts +52 -0
  971. package/dist/lib/esm/view-registrar.mjs +73 -0
  972. package/dist/lib/esm/workspace.d.mts +81 -0
  973. package/dist/lib/esm/workspace.mjs +92 -0
  974. package/dist/styles.css +497 -0
  975. package/i18n/custom-type-options/package.json +6 -0
  976. package/i18n/default-translations/package.json +6 -0
  977. package/i18n/i18n/package.json +6 -0
  978. package/i18n/index/package.json +6 -0
  979. package/i18n/locales/en/package.json +6 -0
  980. package/i18n/locales/index/package.json +6 -0
  981. package/i18n/locales/package.json +6 -0
  982. package/i18n/locales/translations-map/package.json +6 -0
  983. package/i18n/package.json +6 -0
  984. package/modals/alert/package.json +6 -0
  985. package/modals/confirm/package.json +6 -0
  986. package/modals/index/package.json +6 -0
  987. package/modals/minimizable-modal/package.json +6 -0
  988. package/modals/modal/package.json +6 -0
  989. package/modals/modal-command-builder/package.json +6 -0
  990. package/modals/package.json +6 -0
  991. package/modals/prompt/package.json +6 -0
  992. package/modals/select-item/package.json +6 -0
  993. package/modals/select-option/package.json +6 -0
  994. package/modals/suggest-modal-command-builder/package.json +6 -0
  995. package/package.json +488 -13
  996. package/plugin/index/package.json +6 -0
  997. package/plugin/package.json +6 -0
  998. package/plugin/plugin/package.json +6 -0
  999. package/plugin/plugin-api/package.json +6 -0
  1000. package/plugin/plugin-context/package.json +6 -0
  1001. package/plugin/plugin-event-source/package.json +6 -0
  1002. package/plugin/plugin-install-state/package.json +6 -0
  1003. package/plugin/plugin-lifecycle-events/package.json +6 -0
  1004. package/plugin/plugin-settings-tab/package.json +6 -0
  1005. package/plugin/settings-migration-api/package.json +6 -0
  1006. package/popovers/field-popover/package.json +6 -0
  1007. package/popovers/index/package.json +6 -0
  1008. package/popovers/package.json +6 -0
  1009. package/popovers/popover/package.json +6 -0
  1010. package/popovers/popover-anchor/package.json +6 -0
  1011. package/react/app-context/package.json +6 -0
  1012. package/react/index/package.json +6 -0
  1013. package/react/package.json +6 -0
  1014. package/setting-components/checkbox-component/package.json +6 -0
  1015. package/setting-components/code-highlighter-component/package.json +6 -0
  1016. package/setting-components/date-component/package.json +6 -0
  1017. package/setting-components/date-time-component/package.json +6 -0
  1018. package/setting-components/email-component/package.json +6 -0
  1019. package/setting-components/file-component/package.json +6 -0
  1020. package/setting-components/index/package.json +6 -0
  1021. package/setting-components/month-component/package.json +6 -0
  1022. package/setting-components/multiple-dropdown-component/package.json +6 -0
  1023. package/setting-components/multiple-email-component/package.json +6 -0
  1024. package/setting-components/multiple-file-component/package.json +6 -0
  1025. package/setting-components/multiple-text-component/package.json +6 -0
  1026. package/setting-components/number-component/package.json +6 -0
  1027. package/setting-components/package.json +6 -0
  1028. package/setting-components/password-component/package.json +6 -0
  1029. package/setting-components/setting-component-wrapper/package.json +6 -0
  1030. package/setting-components/telephone-component/package.json +6 -0
  1031. package/setting-components/text-based-component/package.json +6 -0
  1032. package/setting-components/time-component/package.json +6 -0
  1033. package/setting-components/tri-state-checkbox-component/package.json +6 -0
  1034. package/setting-components/typed-dropdown-component/package.json +6 -0
  1035. package/setting-components/typed-multiple-dropdown-component/package.json +6 -0
  1036. package/setting-components/typed-range-text-component/package.json +6 -0
  1037. package/setting-components/typed-text-component/package.json +6 -0
  1038. package/setting-components/url-component/package.json +6 -0
  1039. package/setting-components/validator-component/package.json +6 -0
  1040. package/setting-components/value-component-with-change-tracking/package.json +6 -0
  1041. package/setting-components/week-component/package.json +6 -0
  1042. package/transformers/duration-transformer/package.json +6 -0
  1043. package/transformers/index/package.json +6 -0
  1044. package/transformers/package.json +6 -0
@@ -0,0 +1,472 @@
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 () {
7
+ function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
+ symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
+ }
11
+
12
+ function ensureBrowserProcess() {
13
+ const browserProcess = {
14
+ browser: true,
15
+ cwd() {
16
+ return '/';
17
+ },
18
+ env: {},
19
+ platform: 'android'
20
+ };
21
+
22
+ // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
+ const existingProcess = globalThis.process;
24
+
25
+ if (!existingProcess) {
26
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
+ globalThis.process = browserProcess;
28
+ return;
29
+ }
30
+
31
+ if (existingProcess.versions?.node) {
32
+ return;
33
+ }
34
+
35
+ const existingProcessRecord = existingProcess;
36
+
37
+ for (const [key, value] of Object.entries(browserProcess)) {
38
+ existingProcessRecord[key] ??= value;
39
+ }
40
+
41
+ existingProcessRecord['browser'] = true;
42
+ }
43
+
44
+ (function initEsm() {
45
+ ensureDisposeSymbols();
46
+ ensureBrowserProcess();
47
+ })();
48
+ })();
49
+
50
+ import { convertAsyncToSync } from "@mnaoumov/typescript-lib/async";
51
+ import { satisfies as satisfiesVersion } from "compare-versions";
52
+ import {
53
+ ButtonComponent,
54
+ PluginSettingTab
55
+ } from "obsidian";
56
+ import { disableCommunityPlugin } from "../community-plugins.mjs";
57
+ import { CssClass } from "../css-class.mjs";
58
+ import {
59
+ asCodeBlock,
60
+ createFragmentWithCodeBlocks
61
+ } from "../html-element.mjs";
62
+ import { t } from "../i18n/i18n.mjs";
63
+ import { watchPluginApi } from "../plugin/plugin-api.mjs";
64
+ import {
65
+ getInstalledPluginState,
66
+ getInstalledPluginVersion,
67
+ installAndEnablePlugin,
68
+ InstalledPluginState
69
+ } from "../plugin/plugin-install-state.mjs";
70
+ import {
71
+ PLUGIN_LOADED_EVENT_NAME,
72
+ PLUGIN_UNLOADED_EVENT_NAME
73
+ } from "../plugin/plugin-lifecycle-events.mjs";
74
+ import { registerAsyncEvent } from "./async-events-component.mjs";
75
+ import { ComponentEx } from "./component-ex.mjs";
76
+ import { CallbackLayoutReadyComponent } from "./layout-ready-component.mjs";
77
+ const LOSS_ANNOUNCEMENT_GRACE_PERIOD_IN_MILLISECONDS = 5e3;
78
+ var PluginConflictSeverity = /* @__PURE__ */ ((PluginConflictSeverity2) => {
79
+ PluginConflictSeverity2["Block"] = "block";
80
+ PluginConflictSeverity2["Warn"] = "warn";
81
+ return PluginConflictSeverity2;
82
+ })(PluginConflictSeverity || {});
83
+ class BlockedPluginSettingTab extends PluginSettingTab {
84
+ renderBanner;
85
+ /**
86
+ * Creates an instance of {@link BlockedPluginSettingTab}.
87
+ *
88
+ * @param params - The constructor parameters.
89
+ */
90
+ constructor(params) {
91
+ super(params.plugin.app, params.plugin);
92
+ this.renderBanner = params.renderBanner;
93
+ }
94
+ /**
95
+ * Renders the tab.
96
+ */
97
+ display() {
98
+ this.containerEl.empty();
99
+ this.renderBanner(this.containerEl);
100
+ }
101
+ }
102
+ class PluginGateComponent extends ComponentEx {
103
+ announcedWarningPluginIds = /* @__PURE__ */ new Set();
104
+ apiRefs = /* @__PURE__ */ new Map();
105
+ blockedSettingTab = null;
106
+ conflicts;
107
+ dependencies;
108
+ hasAnnouncedBlocked = false;
109
+ isFeatureSurfaceLoaded = false;
110
+ isLayoutReady = false;
111
+ loadFeatureSurface;
112
+ lossAnnouncementTimerId = null;
113
+ plugin;
114
+ pluginNoticeComponent;
115
+ unloadFeatureSurface;
116
+ get app() {
117
+ return this.plugin.app;
118
+ }
119
+ /**
120
+ * Creates an instance of {@link PluginGateComponent}.
121
+ *
122
+ * @param params - The constructor parameters.
123
+ */
124
+ constructor(params) {
125
+ super();
126
+ this.conflicts = params.conflicts;
127
+ this.dependencies = params.dependencies;
128
+ this.loadFeatureSurface = params.loadFeatureSurface;
129
+ this.plugin = params.plugin;
130
+ this.pluginNoticeComponent = params.pluginNoticeComponent;
131
+ this.unloadFeatureSurface = params.unloadFeatureSurface;
132
+ }
133
+ /**
134
+ * Says whether any warning conflict is in force right now.
135
+ *
136
+ * The predicate a declarative settings tab needs, and the counterpart to
137
+ * `PluginSuggestionComponent.getSuggestedPluginState`. Such a tab decides whether a row exists
138
+ * BEFORE it renders anything into it, so {@link renderConflictWarningBanner} writing nothing cannot
139
+ * answer the question for it — a row that renders empty is still a row, with the divider and padding
140
+ * every other setting has.
141
+ *
142
+ * @returns Whether at least one declared warning conflict holds.
143
+ */
144
+ hasActiveWarningConflicts() {
145
+ return this.getActiveConflicts("warn" /* Warn */).length > 0;
146
+ }
147
+ /**
148
+ * Starts watching every declared dependency and conflict.
149
+ */
150
+ onload() {
151
+ for (const dependency of this.dependencies) {
152
+ const apiRef = watchPluginApi({
153
+ apiVersionRange: dependency.apiVersionRange,
154
+ app: this.app,
155
+ component: this,
156
+ pluginId: dependency.pluginId
157
+ });
158
+ registerAsyncEvent(
159
+ this,
160
+ apiRef.on("change", async () => {
161
+ await this.refresh();
162
+ })
163
+ );
164
+ this.apiRefs.set(dependency.pluginId, apiRef);
165
+ }
166
+ const lifecycleEventNames = [PLUGIN_LOADED_EVENT_NAME, PLUGIN_UNLOADED_EVENT_NAME];
167
+ for (const eventName of lifecycleEventNames) {
168
+ this.registerEvent(this.app.workspace.on(
169
+ eventName,
170
+ convertAsyncToSync(async (payload) => {
171
+ if (payload.pluginId === this.plugin.manifest.id) {
172
+ return;
173
+ }
174
+ await this.refresh();
175
+ })
176
+ ));
177
+ }
178
+ this.addChild(
179
+ new CallbackLayoutReadyComponent(this.app, () => {
180
+ this.isLayoutReady = true;
181
+ this.presentUnsatisfied(this.getUnsatisfiedDependencies(), this.getActiveConflicts("block" /* Block */));
182
+ this.announceWarnings();
183
+ })
184
+ );
185
+ this.register(() => {
186
+ this.cancelLossAnnouncement();
187
+ this.hideBlockedSettingTab();
188
+ });
189
+ }
190
+ /**
191
+ * Evaluates the gate once the watches are in place, loading the feature surface if it is already open.
192
+ *
193
+ * @returns A {@link Promise} that resolves once the first evaluation is complete.
194
+ */
195
+ async onloadAsync() {
196
+ await this.refresh();
197
+ }
198
+ /**
199
+ * Renders a banner for every conflict the host is running alongside, so a plugin can put the overlap in
200
+ * its own settings tab.
201
+ *
202
+ * Consumer-invoked, exactly like `PluginSuggestionComponent.renderBanner`: the library registers the
203
+ * settings tab a BLOCKED plugin needs, because that plugin never got to register one of its own, but it
204
+ * has no hook into the tab a running plugin builds. Renders nothing when no warning conflict holds.
205
+ *
206
+ * @param containerEl - The element to render into.
207
+ */
208
+ renderConflictWarningBanner(containerEl) {
209
+ for (const conflict of this.getActiveConflicts("warn" /* Warn */)) {
210
+ this.renderConflictEntry(containerEl, conflict, this.createConflictWarningMessage(conflict));
211
+ }
212
+ }
213
+ /**
214
+ * Says what went away while the plugin was running, now that the grace period is over.
215
+ *
216
+ * Re-reads the gate rather than trusting what closed it, so a dependency that went away during the
217
+ * window is announced with the rest. One that came back in time never gets here: the gate reopening
218
+ * cancels the timer.
219
+ */
220
+ announceLoss() {
221
+ this.lossAnnouncementTimerId = null;
222
+ for (const dependency of this.getUnsatisfiedDependencies()) {
223
+ this.pluginNoticeComponent.showNotice(this.createDependencyLostMessage(dependency));
224
+ }
225
+ for (const conflict of this.getActiveConflicts("block" /* Block */)) {
226
+ this.pluginNoticeComponent.showNotice(this.createConflictAppearedMessage(conflict));
227
+ }
228
+ }
229
+ announceWarnings() {
230
+ if (!this.isLayoutReady || !this.isFeatureSurfaceLoaded) {
231
+ return;
232
+ }
233
+ for (const conflict of this.getActiveConflicts("warn" /* Warn */)) {
234
+ if (this.announcedWarningPluginIds.has(conflict.pluginId)) {
235
+ continue;
236
+ }
237
+ this.announcedWarningPluginIds.add(conflict.pluginId);
238
+ this.pluginNoticeComponent.showNotice(this.createConflictWarningMessage(conflict));
239
+ }
240
+ }
241
+ cancelLossAnnouncement() {
242
+ if (this.lossAnnouncementTimerId === null) {
243
+ return;
244
+ }
245
+ window.clearTimeout(this.lossAnnouncementTimerId);
246
+ this.lossAnnouncementTimerId = null;
247
+ }
248
+ createBlockedMessage(dependency) {
249
+ return createFragmentWithCodeBlocks(t(($) => $.obsidianDevUtils.pluginDependency.blockedNotice, {
250
+ dependencyPluginName: asCodeBlock(dependency.pluginName),
251
+ pluginName: asCodeBlock(this.plugin.manifest.name)
252
+ }));
253
+ }
254
+ createConflictAppearedMessage(conflict) {
255
+ return createFragmentWithCodeBlocks(t(($) => $.obsidianDevUtils.pluginConflict.conflictAppearedNotice, {
256
+ conflictingPluginName: asCodeBlock(conflict.pluginName),
257
+ pluginName: asCodeBlock(this.plugin.manifest.name)
258
+ }));
259
+ }
260
+ createConflictBlockedMessage(conflict) {
261
+ return createFragmentWithCodeBlocks(t(($) => $.obsidianDevUtils.pluginConflict.blockedNotice, {
262
+ conflictingPluginName: asCodeBlock(conflict.pluginName),
263
+ pluginName: asCodeBlock(this.plugin.manifest.name)
264
+ }));
265
+ }
266
+ createConflictWarningMessage(conflict) {
267
+ return createFragmentWithCodeBlocks(t(($) => $.obsidianDevUtils.pluginConflict.warningNotice, {
268
+ conflictingPluginName: asCodeBlock(conflict.pluginName),
269
+ pluginName: asCodeBlock(this.plugin.manifest.name)
270
+ }));
271
+ }
272
+ createDependencyLostMessage(dependency) {
273
+ return createFragmentWithCodeBlocks(t(($) => $.obsidianDevUtils.pluginDependency.dependencyLostNotice, {
274
+ dependencyPluginName: asCodeBlock(dependency.pluginName),
275
+ pluginName: asCodeBlock(this.plugin.manifest.name)
276
+ }));
277
+ }
278
+ /**
279
+ * Finds the declared conflicts of one severity that are currently in force.
280
+ *
281
+ * @param severity - The severity to select.
282
+ * @returns The conflicts holding right now, in the order they were declared.
283
+ */
284
+ getActiveConflicts(severity) {
285
+ return this.conflicts.filter((conflict) => conflict.severity === severity && this.isConflictActive(conflict));
286
+ }
287
+ getUnsatisfiedDependencies() {
288
+ return this.dependencies.filter((dependency) => !this.apiRefs.get(dependency.pluginId)?.value);
289
+ }
290
+ hideBlockedSettingTab() {
291
+ if (!this.blockedSettingTab) {
292
+ return;
293
+ }
294
+ this.app.setting.removeSettingTab(this.blockedSettingTab);
295
+ this.blockedSettingTab = null;
296
+ }
297
+ /**
298
+ * Decides whether one declared conflict is in force right now.
299
+ *
300
+ * Only an ENABLED plugin counts. One that is installed but switched off registers nothing, so it cannot
301
+ * collide, and acting on it would be an alarm the user can only answer by uninstalling something they
302
+ * have already turned off.
303
+ *
304
+ * @param conflict - The declared conflict.
305
+ * @returns Whether the conflicting plugin is enabled at a conflicting version.
306
+ */
307
+ isConflictActive(conflict) {
308
+ const installedVersion = getInstalledPluginVersion({
309
+ app: this.app,
310
+ pluginId: conflict.pluginId
311
+ });
312
+ if (installedVersion === null) {
313
+ return false;
314
+ }
315
+ try {
316
+ return satisfiesVersion(installedVersion, conflict.conflictingVersionRange);
317
+ } catch {
318
+ return true;
319
+ }
320
+ }
321
+ /**
322
+ * Says what is in the way, and puts the same explanation where the user will look for the plugin's
323
+ * settings.
324
+ *
325
+ * @param unsatisfiedDependencies - The dependencies that are not currently satisfied.
326
+ * @param blockingConflicts - The conflicts currently refusing the plugin the right to run.
327
+ */
328
+ presentUnsatisfied(unsatisfiedDependencies, blockingConflicts) {
329
+ if (!this.isLayoutReady || unsatisfiedDependencies.length === 0 && blockingConflicts.length === 0) {
330
+ return;
331
+ }
332
+ this.showBlockedSettingTab(unsatisfiedDependencies, blockingConflicts);
333
+ if (this.hasAnnouncedBlocked) {
334
+ return;
335
+ }
336
+ this.hasAnnouncedBlocked = true;
337
+ for (const dependency of unsatisfiedDependencies) {
338
+ this.pluginNoticeComponent.showNotice(this.createBlockedMessage(dependency));
339
+ }
340
+ for (const conflict of blockingConflicts) {
341
+ this.pluginNoticeComponent.showNotice(this.createConflictBlockedMessage(conflict));
342
+ }
343
+ }
344
+ /**
345
+ * Re-evaluates the gate and moves the feature surface to match.
346
+ *
347
+ * @returns A {@link Promise} that resolves once the surface matches the gate.
348
+ */
349
+ async refresh() {
350
+ const unsatisfiedDependencies = this.getUnsatisfiedDependencies();
351
+ const blockingConflicts = this.getActiveConflicts("block" /* Block */);
352
+ if (unsatisfiedDependencies.length === 0 && blockingConflicts.length === 0) {
353
+ this.cancelLossAnnouncement();
354
+ this.hideBlockedSettingTab();
355
+ this.hasAnnouncedBlocked = false;
356
+ if (!this.isFeatureSurfaceLoaded) {
357
+ this.isFeatureSurfaceLoaded = true;
358
+ await this.loadFeatureSurface();
359
+ }
360
+ this.announceWarnings();
361
+ return;
362
+ }
363
+ if (this.isFeatureSurfaceLoaded) {
364
+ this.isFeatureSurfaceLoaded = false;
365
+ this.unloadFeatureSurface();
366
+ this.lossAnnouncementTimerId = window.setTimeout(() => {
367
+ this.announceLoss();
368
+ }, LOSS_ANNOUNCEMENT_GRACE_PERIOD_IN_MILLISECONDS);
369
+ this.hasAnnouncedBlocked = true;
370
+ this.showBlockedSettingTab(unsatisfiedDependencies, blockingConflicts);
371
+ return;
372
+ }
373
+ this.presentUnsatisfied(unsatisfiedDependencies, blockingConflicts);
374
+ }
375
+ /**
376
+ * Renders the blocked explanation into a settings-tab container: what is missing or in the way, why it
377
+ * matters, and the button that fixes it.
378
+ *
379
+ * @param containerEl - The element to render into.
380
+ * @param unsatisfiedDependencies - The dependencies that are not currently satisfied.
381
+ * @param blockingConflicts - The conflicts currently refusing the plugin the right to run.
382
+ */
383
+ renderBlockedBanner(containerEl, unsatisfiedDependencies, blockingConflicts) {
384
+ if (unsatisfiedDependencies.length > 0) {
385
+ containerEl.createEl("h2", { text: t(($) => $.obsidianDevUtils.pluginDependency.settingsHeading) });
386
+ }
387
+ for (const dependency of unsatisfiedDependencies) {
388
+ const bannerEl = containerEl.createDiv({
389
+ cls: [CssClass.LibraryName, CssClass.PluginDependencyBanner]
390
+ });
391
+ bannerEl.append(this.createBlockedMessage(dependency));
392
+ bannerEl.createDiv({ text: dependency.reason });
393
+ const state = getInstalledPluginState({
394
+ app: this.app,
395
+ pluginId: dependency.pluginId
396
+ });
397
+ new ButtonComponent(bannerEl).setButtonText(t(
398
+ ($) => state === InstalledPluginState.InstalledButDisabled ? $.obsidianDevUtils.pluginSuggestion.enable : $.obsidianDevUtils.pluginSuggestion.install
399
+ )).setCta().onClick(convertAsyncToSync(async () => {
400
+ await installAndEnablePlugin({
401
+ app: this.app,
402
+ pluginId: dependency.pluginId,
403
+ pluginName: dependency.pluginName,
404
+ pluginNoticeComponent: this.pluginNoticeComponent
405
+ });
406
+ }));
407
+ if (state !== InstalledPluginState.Enabled) {
408
+ continue;
409
+ }
410
+ this.renderOpenSettingsButton(bannerEl, dependency.pluginId, dependency.pluginName);
411
+ }
412
+ if (blockingConflicts.length === 0) {
413
+ return;
414
+ }
415
+ containerEl.createEl("h2", { text: t(($) => $.obsidianDevUtils.pluginConflict.settingsHeading) });
416
+ for (const conflict of blockingConflicts) {
417
+ this.renderConflictEntry(containerEl, conflict, this.createConflictBlockedMessage(conflict));
418
+ }
419
+ }
420
+ /**
421
+ * Renders one conflict: what it is, why it matters, and the two ways out of it.
422
+ *
423
+ * The repair is offered on the OTHER plugin — disabling it is the one thing this plugin can do in a
424
+ * click, since it cannot update someone else's plugin — and it is the persisted `disablePluginAndSave`
425
+ * rather than the transient disable, because the user asked for it by clicking.
426
+ *
427
+ * @param containerEl - The element to render into.
428
+ * @param conflict - The conflict to render.
429
+ * @param messageFragment - The sentence explaining the conflict.
430
+ */
431
+ renderConflictEntry(containerEl, conflict, messageFragment) {
432
+ const bannerEl = containerEl.createDiv({
433
+ cls: [CssClass.LibraryName, CssClass.PluginConflictBanner]
434
+ });
435
+ bannerEl.append(messageFragment);
436
+ bannerEl.createDiv({ text: conflict.reason });
437
+ new ButtonComponent(bannerEl).setButtonText(t(($) => $.obsidianDevUtils.pluginConflict.disable, { conflictingPluginName: conflict.pluginName })).setCta().onClick(convertAsyncToSync(async () => {
438
+ await disableCommunityPlugin({
439
+ app: this.app,
440
+ pluginId: conflict.pluginId
441
+ });
442
+ await this.refresh();
443
+ }));
444
+ this.renderOpenSettingsButton(bannerEl, conflict.pluginId, conflict.pluginName);
445
+ }
446
+ renderOpenSettingsButton(bannerEl, pluginId, pluginName) {
447
+ new ButtonComponent(bannerEl).setButtonText(t(($) => $.obsidianDevUtils.pluginDependency.openDependencySettings, {
448
+ dependencyPluginName: pluginName
449
+ })).onClick(() => {
450
+ this.app.setting.open();
451
+ this.app.setting.openTabById(pluginId);
452
+ });
453
+ }
454
+ showBlockedSettingTab(unsatisfiedDependencies, blockingConflicts) {
455
+ if (this.blockedSettingTab) {
456
+ return;
457
+ }
458
+ const blockedSettingTab = new BlockedPluginSettingTab({
459
+ plugin: this.plugin,
460
+ renderBanner: (containerEl) => {
461
+ this.renderBlockedBanner(containerEl, unsatisfiedDependencies, blockingConflicts);
462
+ }
463
+ });
464
+ this.app.setting.addSettingTab(blockedSettingTab);
465
+ this.blockedSettingTab = blockedSettingTab;
466
+ }
467
+ }
468
+ export {
469
+ PluginConflictSeverity,
470
+ PluginGateComponent
471
+ };
472
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGx1Z2luLWdhdGUtY29tcG9uZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIGdhdGUgb24gYSBwbHVnaW4ncyBmZWF0dXJlIHN1cmZhY2U6IHdoYXQgbXVzdCBiZSBQUkVTRU5UIGZvciBpdCB0byBydW4sIGFuZCB3aGF0IG11c3QgTk9UIGJlLlxuICpcbiAqIEJvdGggaGFsdmVzIGFuc3dlciB0aGUgc2FtZSBxdWVzdGlvbiBcdTIwMTQgbWF5IHRoaXMgcGx1Z2luJ3MgYG9ubG9hZEltcGxgIHJ1biByaWdodCBub3c/IFx1MjAxNCBzbyB0aGV5IGFyZSBvbmVcbiAqIGNvbXBvbmVudCByYXRoZXIgdGhhbiB0d28uIEEgc2Vjb25kLCBpbmRlcGVuZGVudCBnYXRlIHdvdWxkIGRvdWJsZS1sb2FkIHRoZSBzdXJmYWNlIGFuZCBzdGFjayBhIHNlY29uZFxuICogXCJibG9ja2VkXCIgc2V0dGluZ3MgdGFiIG9udG8gdGhlIHNhbWUgcGx1Z2luLCBhbmQgbmVpdGhlciBjb3VsZCBzZWUgdGhlIG90aGVyJ3MgcmVhc29uIGZvciByZWZ1c2luZy5cbiAqXG4gKiAjIyBEZXBlbmRlbmNpZXM6IGEgcGx1Z2luIGRlY2xhcmluZyB3aGF0IGl0IGNhbm5vdCB3b3JrIHdpdGhvdXRcbiAqXG4gKiBUaGlzIGlzIHRoZSBzdHJpY3Qgc2libGluZyBvZiBgUGx1Z2luU3VnZ2VzdGlvbkNvbXBvbmVudGAsIGFuZCB0aGUgZGlmZmVyZW5jZSBpcyB0aGUgd2hvbGUgcG9pbnQuIEFcbiAqIFNVR0dFU1RJT04gaXMgYW4gb2ZmZXIgXHUyMDE0IHRoZSBob3N0IGtlZXBzIHdvcmtpbmcgd2l0aG91dCBpdCBhbmQgc2ltcGx5IGNhbm5vdCBkbyBvbmUgdGhpbmcuIEEgREVQRU5ERU5DWVxuICogaXMgYSByZXF1aXJlbWVudDogYG9ubG9hZEltcGxgIG5ldmVyIHJ1bnMsIG5vIGNvbW1hbmQgaXMgcmVnaXN0ZXJlZCwgbm8gaGFuZGxlciBpcyBpbnN0YWxsZWQsIG5vdGhpbmcgaXNcbiAqIHBhdGNoZWQuIFJlYWNoIGZvciBhIHN1Z2dlc3Rpb24gd2hlbiB0aGUgb3RoZXIgcGx1Z2luIGFkZHMgc29tZXRoaW5nOyByZWFjaCBmb3IgYSBkZXBlbmRlbmN5IHdoZW4gdGhlXG4gKiBob3N0J3MgYWR2ZXJ0aXNlZCBiZWhhdmlvciBpcyBub3QgdGhlcmUgd2l0aG91dCBpdC5cbiAqXG4gKiBPYnNpZGlhbiBoYXMgbm8gZGVwZW5kZW5jeSBmaWVsZCBpbiBhIG1hbmlmZXN0LCB3aGljaCBpcyBleGFjdGx5IHRoZSBwcm9ibGVtIHRoaXMgY2xvc2VzLiBXaXRob3V0IG9uZSxcbiAqIGEgdXNlciBtZWV0aW5nIGFuIHVuZmFtaWxpYXIgcGx1Z2luIGluIHRoZWlyIGxpc3QgbW9udGhzIGxhdGVyIGhhcyBub3RoaW5nIHRlbGxpbmcgdGhlbSBpdCBpc1xuICogbG9hZC1iZWFyaW5nIFx1MjAxNCB0aGV5IHJlbW92ZSBpdCwgYW5kIHRoZSBicmVha2FnZSBzdXJmYWNlcyB3ZWVrcyBhZnRlciB0aGF0IGFzIGRhbWFnZSB0aGV5IGNhbm5vdCBjb25uZWN0XG4gKiB0byBhbnl0aGluZyB0aGV5IGRpZC4gU28gdGhlIHJlbGF0aW9uc2hpcCBpcyBtYWRlIHZpc2libGUgZnJvbSBib3RoIGVuZHMgYW5kIGVuZm9yY2VkIHdoaWxlIGl0IGhvbGRzOlxuICogdGhlIGRlcGVuZGVudCBleHBsYWlucyBpdHNlbGYgd2hlcmUgdGhlIHVzZXIgaXMgbG9va2luZywgcmVwYWlycyBpdHNlbGYgaW4gb25lIGNsaWNrLCBhbmQgcmVhY3RzIHRoZVxuICogSU5TVEFOVCB0aGUgZGVwZW5kZW5jeSBnb2VzIGF3YXkgcmF0aGVyIHRoYW4gZGVncmFkaW5nIHF1aWV0bHkuXG4gKlxuICogVGhyZWUgY2hvaWNlcyBhcmUgZGVsaWJlcmF0ZSBhbmQgd29ydGggc3RhdGluZywgYmVjYXVzZSBlYWNoIGhhcyBhbiBvYnZpb3VzLWxvb2tpbmcgYWx0ZXJuYXRpdmU6XG4gKlxuICogLSAqKkJsb2NrZWQgbWVhbnMgZW5hYmxlZC1idXQtaW5lcnQsIG5ldmVyIHNlbGYtZGlzYWJsZWQuKiogQ2FsbGluZyBgZGlzYWJsZVBsdWdpbkFuZFNhdmVgIG9uIGl0c2VsZlxuICogICB3b3VsZCBiZSB0aGUgbGl0ZXJhbCByZWFkaW5nIG9mIFwicmVmdXNlcyB0byBsb2FkXCIsIGFuZCBpdCByZXdyaXRlcyBhIGNvbmZpZyB0aGF0IGJlbG9uZ3MgdG8gdGhlIHVzZXIgXHUyMDE0XG4gKiAgIHdobyB3b3VsZCB0aGVuIGhhdmUgdG8gcmVtZW1iZXIgdG8gcmUtZW5hYmxlIGl0IGFmdGVyIGZpeGluZyB0aGUgZGVwZW5kZW5jeS4gU3RheWluZyBlbmFibGVkIGFuZCBpbmVydFxuICogICBzYXlzIHRoZSBzYW1lIHRoaW5nIHRvIHRoZSB1c2VyLCBjaGFuZ2VzIG5vdGhpbmcgdGhleSBvd24sIGFuZCBjYW4gdW5kbyBpdHNlbGYuXG4gKiAtICoqQmxvY2tlZCBpcyBub3QgYW4gZXJyb3IuKiogVGhyb3dpbmcgZnJvbSBgb25sb2FkYCBtYXJrcyB0aGUgcGx1Z2luIGZhaWxlZCBpbiBPYnNpZGlhbiBhbmQgaGFuZHMgdGhlXG4gKiAgIHVzZXIgYSBzdGFjayB0cmFjZSBpbnN0ZWFkIG9mIGEgc2VudGVuY2UgYW5kIGEgYnV0dG9uLlxuICogLSAqKkEgZGVwZW5kZW5jeSBtdXN0IHB1Ymxpc2ggYW4gQVBJLioqIFRoYXQgaXMgd2hhdCBtYWtlcyBwcmVzZW5jZSwgYWJzZW5jZSwgdmVyc2lvbiBhbmQgZGVwYXJ0dXJlIGFsbFxuICogICBvYnNlcnZhYmxlIHRocm91Z2ggb25lIG1lY2hhbmlzbSBcdTIwMTQgYHdhdGNoUGx1Z2luQXBpYCdzIHJlZmVyZW5jZSBpcyBsaXZlLCBpcyByZXZva2VkIHdoZW4gdGhlIHByb3ZpZGVyXG4gKiAgIHVubG9hZHMsIGFuZCBhbHJlYWR5IGNsYXNzaWZpZXMgbm90LWluc3RhbGxlZCBhZ2FpbnN0IG5vdC1lbmFibGVkIGFnYWluc3QgdG9vLW9sZC4gQSBwcm92aWRlciB3aXRoXG4gKiAgIG5vdGhpbmcgdG8gZXhwb3NlIGNhbiBwdWJsaXNoIGFuIGVtcHR5IEFQSSBwdXJlbHkgc28gaXQgY2FuIGJlIGRlcGVuZGVkIHVwb247IHRoZSBhbHRlcm5hdGl2ZSB3b3VsZCBiZVxuICogICBhIHNlY29uZCwgd2Vha2VyIGRldGVjdGlvbiBwYXRoIHRvIG1haW50YWluIGJlc2lkZSBpdC5cbiAqXG4gKiAjIyBDb25mbGljdHM6IGEgcGx1Z2luIGRlY2xhcmluZyB3aGF0IGl0IHJlZnVzZXMgdG8gcnVuIGJlc2lkZVxuICpcbiAqIFRoZSBpbnZlcnNlIHJlbGF0aW9uc2hpcCwgYW5kIGl0IG5lZWRzIGl0cyBvd24gZGV0ZWN0aW9uIHBhdGggYmVjYXVzZSB0aGUgZGVwZW5kZW5jeSBvbmUgZG9lcyBub3QgZml0LlxuICogQSBjb25mbGljdGluZyBwbHVnaW4gaXMgdHlwaWNhbGx5IGFuIE9MRCB2ZXJzaW9uIG9mIHNvbWUgb3RoZXIgcGx1Z2luIHRoYXQgc3RpbGwgb3ducyBiZWhhdmlvciB0aGlzIG9uZVxuICogaGFzIHRha2VuIG92ZXIgXHUyMDE0IGl0IHB1Ymxpc2hlcyBubyBBUEkgYXQgYWxsLCBzbyB0aGVyZSBpcyBubyBgYXBpVmVyc2lvblJhbmdlYCB0byBjb21wYXJlIGFnYWluc3QuXG4gKlxuICogVGhlIGFyZ3VtZW50IGZvciByZWZ1c2luZyByYXRoZXIgdGhhbiBjb21wZXRpbmcgY29tZXMgZnJvbSB0aGUgY2FzZSB0aGlzIGdlbmVyYWxpemVzOiB0d28gcmVuYW1lL2RlbGV0ZVxuICogaGFuZGxlcnMgYWN0aW5nIG9uIG9uZSByZW5hbWUgY29ycnVwdCBsaW5rcyBhbmQgbW92ZSBhdHRhY2htZW50cyB0d2ljZSwgYW5kIHRoZXJlIGlzIG5vIHJlbGlhYmxlIHdheSB0b1xuICogd2luIHRoYXQgcmFjZSBcdTIwMTQgYSBoYW5kbGVyIGlzIGVsZWN0ZWQgYnkgcmVnaXN0cnkgb3JkZXIsIGJ1dCB0aGUgcGF0Y2hlcyB0aGF0IGRvIHRoZSB3b3JrIHNpdCBvdXRzaWRlXG4gKiB0aGF0IGVsZWN0aW9uLCBzbyB3aGljaGV2ZXIgcGx1Z2luIGxvYWRlZCBmaXJzdCBrZWVwcyBhIGhhbmQgb24gdGhlIHdoZWVsLiBFdmVyeSBzY2hlbWUgZm9yIHNlaXppbmdcbiAqIGNvbnRyb2wgZnJvbSBpbnNpZGUgaXMgbG9hZC1vcmRlciBkZXBlbmRlbnQuIFJlZnVzaW5nIGlzIGRldGVybWluaXN0aWMgd2hlcmUgY29tcGV0aW5nIGlzIG5vdCwgYW5kIGFcbiAqIHZhdWx0IHRoYXQgYnJpZWZseSBoYXMgbm8gaGFuZGxlciBpcyBhIGZhciBiZXR0ZXIgb3V0Y29tZSB0aGFuIG9uZSB3aXRoIHR3by5cbiAqXG4gKiBUd28gZGV0YWlscyBvZiB0aGF0IGRldGVjdGlvbiBjYXJyeSBvdmVyIHZlcmJhdGltLCBiZWNhdXNlIGJvdGggYXJlIGxvYWQtYmVhcmluZzpcbiAqXG4gKiAtICoqVmVyc2lvbnMgYXJlIHJlYWQsIG5ldmVyIHRoZSByZWdpc3RyeS4qKiBBIHBsdWdpbiB0aGF0IGhhcyBub3QgbG9hZGVkIHlldCBoYXMgcmVnaXN0ZXJlZCBub3RoaW5nLCBzb1xuICogICBhc2tpbmcgdGhlIHJlZ2lzdHJ5IGdpdmVzIGEgZGlmZmVyZW50IGFuc3dlciBkZXBlbmRpbmcgb24gd2hlbiBpdCBpcyBhc2tlZC4gYGFwcC5wbHVnaW5zLm1hbmlmZXN0c2AgaXNcbiAqICAgcG9wdWxhdGVkIGZvciBldmVyeSBpbnN0YWxsZWQgcGx1Z2luIGF0IHN0YXJ0dXAsIHdoYXRldmVyIHRoZSBsb2FkIG9yZGVyIHR1cm5zIG91dCB0byBiZS5cbiAqIC0gKipBbiB1bnBhcnNlYWJsZSB2ZXJzaW9uIGNvdW50cyBhcyBjb25mbGljdGluZy4qKiBGYWlsaW5nIGNsb3NlZCBpcyB0aGUgc2FmZSBkaXJlY3Rpb246IGEgZmFsc2UgYWxhcm1cbiAqICAgY29zdHMgYSBub3RpY2UsIGEgZmFsc2UgYWxsLWNsZWFyIGNvc3RzIGEgdmF1bHQuXG4gKlxuICogTm90IGV2ZXJ5IG92ZXJsYXAgaXMgdGhhdCBzZXZlcmUsIHdoaWNoIGlzIHdoeSBhIGNvbmZsaWN0IGRlY2xhcmVzIGEge0BsaW5rIFBsdWdpbkNvbmZsaWN0U2V2ZXJpdHl9LlxuICogVHdvIHBsdWdpbnMgc2hpcHBpbmcgdGhlIHNhbWUgY29tbWFuZCBkdXBsaWNhdGUgYSBwYWxldHRlIGVudHJ5IGFuZCBkbyB0aGUgd29yayB0d2ljZSBcdTIwMTQgYW5ub3lpbmcsIG5vdFxuICogY29ycnVwdGluZyBcdTIwMTQgYW5kIHJlZnVzaW5nIHRvIGxvYWQgb3ZlciB0aGF0IHdvdWxkIGJlIGEgd29yc2Ugb3V0Y29tZSB0aGFuIHRoZSBvdmVybGFwLiBUaG9zZSBkZWNsYXJlXG4gKiB7QGxpbmsgUGx1Z2luQ29uZmxpY3RTZXZlcml0eS5XYXJufSBhbmQgYm90aCBrZWVwIHJ1bm5pbmcuXG4gKlxuICogIyMgV2hhdCB0aGlzIGNhbiBhbmQgY2Fubm90IHNlZVxuICpcbiAqIE9ic2lkaWFuIHJhaXNlcyBubyBldmVudCB3aGVuIEFOT1RIRVIgcGx1Z2luIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQgKHNlZSBgcGx1Z2luLWxpZmVjeWNsZS1ldmVudHMudHNgKSxcbiAqIHNvIGxpdmUgY29uZmxpY3QgZGV0ZWN0aW9uIGhhcyBhIHJlYWwgY2VpbGluZyBhbmQgaXQgaXMgc3RhdGVkIGhlcmUgcmF0aGVyIHRoYW4gaW1wbGllZCBhd2F5LiBBXG4gKiBjb25mbGljdGluZyBwbHVnaW4gYnVpbHQgb24gdGhpcyBsaWJyYXJ5IGFubm91bmNlcyBpdHNlbGYgdGhyb3VnaCB0aGUgbGlmZWN5Y2xlIGJyb2FkY2FzdCwgYW5kIGlzXG4gKiB0aGVyZWZvcmUgY2F1Z2h0IHRoZSBtb21lbnQgaXQgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4gT25lIHRoYXQgaXMgbm90IFx1MjAxNCBhbiBvbGQgcmVsZWFzZSBwcmVkYXRpbmcgdGhlXG4gKiBicm9hZGNhc3QsIG9yIGEgcGx1Z2luIGJ5IGFub3RoZXIgYXV0aG9yIGVudGlyZWx5IFx1MjAxNCBpcyBjYXVnaHQgYXQgdGhlIG5leHQgbG9hZCwgd2hpY2ggaXMgd2hlbiBpdHNcbiAqIG1hbmlmZXN0IGlzIHJlYWQuXG4gKlxuICogIyMgV2h5IGEgbG9zcyBpcyBhbm5vdW5jZWQgbGF0ZVxuICpcbiAqIE9ic2lkaWFuIHVwZGF0ZXMgYW4gZW5hYmxlZCBwbHVnaW4gYnkgcmVsb2FkaW5nIGl0OiB0aGUgb2xkIGNvcHkgdW5sb2FkcywgdGhlIG5ldyBvbmUgbG9hZHMuIEZvciB0aGVcbiAqIG1vbWVudCBpbiBiZXR3ZWVuIHRoZSBwcm92aWRlcidzIEFQSSBpcyByZXZva2VkLCBzbyBldmVyeSBkZXBlbmRlbnQgc2VlcyBpdHMgZGVwZW5kZW5jeSBnbyBhd2F5IGFuZFxuICogY29tZSBiYWNrLiBUaGUgZmVhdHVyZSBzdXJmYWNlIHN0aWxsIGNvbWVzIGRvd24gYXQgb25jZSBcdTIwMTQgdGhlIGRlcGVuZGVuY3kgcmVhbGx5IGlzIGdvbmUgZm9yIHRoYXRcbiAqIG1vbWVudCBcdTIwMTQgYnV0IHRoZSBub3RpY2Ugd2FpdHMge0BsaW5rIExPU1NfQU5OT1VOQ0VNRU5UX0dSQUNFX1BFUklPRF9JTl9NSUxMSVNFQ09ORFN9LCBhbmQgYSBsb3NzIHRoYXRcbiAqIGhlYWxlZCBpbiB0aGUgbWVhbnRpbWUgaXMgbmV2ZXIgYW5ub3VuY2VkLiBXaXRob3V0IHRoYXQsIHVwZGF0aW5nIG9uZSBwbHVnaW4gcHV0IGEgXCJubyBsb25nZXJcbiAqIGF2YWlsYWJsZVwiIG5vdGljZSBvbiBzY3JlZW4gaW4gZXZlcnkgcGx1Z2luIGRlcGVuZGluZyBvbiBpdCwgZGVzY3JpYmluZyBhIHN0YXRlIHRoYXQgbm8gbG9uZ2VyIGhlbGQgYnlcbiAqIHRoZSB0aW1lIHRoZSB1c2VyIHJlYWQgaXQuIEEgbG9zcyB0aGUgdXNlciBjYXVzZWQgb24gcHVycG9zZSBcdTIwMTQgZGlzYWJsaW5nIG9yIHVuaW5zdGFsbGluZyB0aGVcbiAqIGRlcGVuZGVuY3kgXHUyMDE0IG91dGxhc3RzIHRoZSB3aW5kb3cgYW5kIGlzIGFubm91bmNlZCBhcyBiZWZvcmUsIG9ubHkgYSBmZXcgc2Vjb25kcyBsYXRlci5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgUGx1Z2luXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgY29udmVydEFzeW5jVG9TeW5jIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IHNhdGlzZmllcyBhcyBzYXRpc2ZpZXNWZXJzaW9uIH0gZnJvbSAnY29tcGFyZS12ZXJzaW9ucyc7XG5pbXBvcnQge1xuICBCdXR0b25Db21wb25lbnQsXG4gIFBsdWdpblNldHRpbmdUYWJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbkFwaVJlZiB9IGZyb20gJy4uL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcbmltcG9ydCB0eXBlIHtcbiAgUGx1Z2luTGlmZWN5Y2xlRXZlbnROYW1lLFxuICBQbHVnaW5MaWZlY3ljbGVFdmVudFBheWxvYWRcbn0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1saWZlY3ljbGUtZXZlbnRzLnRzJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luTm90aWNlQ29tcG9uZW50IH0gZnJvbSAnLi9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7IGRpc2FibGVDb21tdW5pdHlQbHVnaW4gfSBmcm9tICcuLi9jb21tdW5pdHktcGx1Z2lucy50cyc7XG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQge1xuICBhc0NvZGVCbG9jayxcbiAgY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2Nrc1xufSBmcm9tICcuLi9odG1sLWVsZW1lbnQudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyB3YXRjaFBsdWdpbkFwaSB9IGZyb20gJy4uL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcbmltcG9ydCB7XG4gIGdldEluc3RhbGxlZFBsdWdpblN0YXRlLFxuICBnZXRJbnN0YWxsZWRQbHVnaW5WZXJzaW9uLFxuICBpbnN0YWxsQW5kRW5hYmxlUGx1Z2luLFxuICBJbnN0YWxsZWRQbHVnaW5TdGF0ZVxufSBmcm9tICcuLi9wbHVnaW4vcGx1Z2luLWluc3RhbGwtc3RhdGUudHMnO1xuaW1wb3J0IHtcbiAgUExVR0lOX0xPQURFRF9FVkVOVF9OQU1FLFxuICBQTFVHSU5fVU5MT0FERURfRVZFTlRfTkFNRVxufSBmcm9tICcuLi9wbHVnaW4vcGx1Z2luLWxpZmVjeWNsZS1ldmVudHMudHMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJBc3luY0V2ZW50IH0gZnJvbSAnLi9hc3luYy1ldmVudHMtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IENvbXBvbmVudEV4IH0gZnJvbSAnLi9jb21wb25lbnQtZXgudHMnO1xuaW1wb3J0IHsgQ2FsbGJhY2tMYXlvdXRSZWFkeUNvbXBvbmVudCB9IGZyb20gJy4vbGF5b3V0LXJlYWR5LWNvbXBvbmVudC50cyc7XG5cbi8qKlxuICogSG93IGxvbmcgYSBnYXRlIHRoYXQgY2xvc2VkIHdoaWxlIHRoZSBwbHVnaW4gd2FzIHJ1bm5pbmcgd2FpdHMgYmVmb3JlIHNheWluZyBzby5cbiAqXG4gKiBMb25nIGVub3VnaCB0byBjb3ZlciBPYnNpZGlhbiByZWxvYWRpbmcgYSBwbHVnaW4gdG8gYXBwbHkgaXRzIHVwZGF0ZSwgc2hvcnQgZW5vdWdoIHRoYXQgYSB1c2VyIHdob1xuICogZGlzYWJsZWQgdGhlIGRlcGVuZGVuY3kgYnkgaGFuZCBzdGlsbCBjb25uZWN0cyB0aGUgbm90aWNlIHRvIHdoYXQgdGhleSBqdXN0IGRpZC5cbiAqL1xuY29uc3QgTE9TU19BTk5PVU5DRU1FTlRfR1JBQ0VfUEVSSU9EX0lOX01JTExJU0VDT05EUyA9IDUwMDA7XG5cbi8qKlxuICogSG93IGJhZGx5IHR3byBwbHVnaW5zIHJ1bm5pbmcgc2lkZSBieSBzaWRlIGdvZXMgd3JvbmcsIGFuZCB0aGVyZWZvcmUgd2hhdCB0aGlzIG9uZSBkb2VzIGFib3V0IGl0LlxuICovXG5leHBvcnQgZW51bSBQbHVnaW5Db25mbGljdFNldmVyaXR5IHtcbiAgLyoqXG4gICAqIFRoZSBob3N0IHJlZnVzZXMgdG8gcnVuIGF0IGFsbCB3aGlsZSB0aGUgY29uZmxpY3QgaG9sZHM6IGBvbmxvYWRJbXBsYCBuZXZlciBydW5zLCBub3RoaW5nIGlzXG4gICAqIHJlZ2lzdGVyZWQsIGFuZCB0aGUgcGx1Z2luIGV4cGxhaW5zIGl0c2VsZiB0aGUgd2F5IGEgbWlzc2luZyBkZXBlbmRlbmN5IGRvZXMuXG4gICAqXG4gICAqIEZvciBhbiBvdmVybGFwIHdoZXJlIGJvdGggcGx1Z2lucyBhY3Rpbmcgb24gdGhlIHNhbWUgb3BlcmF0aW9uIGRhbWFnZXMgdGhlIHZhdWx0LlxuICAgKi9cbiAgQmxvY2sgPSAnYmxvY2snLFxuXG4gIC8qKlxuICAgKiBUaGUgaG9zdCBydW5zIGFueXdheSBhbmQgc2F5cyB0aGUgb3ZlcmxhcCBpcyB0aGVyZS5cbiAgICpcbiAgICogRm9yIGFuIG92ZXJsYXAgdGhhdCBpcyBhbm5veWluZyByYXRoZXIgdGhhbiBkZXN0cnVjdGl2ZSBcdTIwMTQgZHVwbGljYXRlIGNvbW1hbmRzLCB3b3JrIGRvbmUgdHdpY2UgXHUyMDE0IHdoZXJlXG4gICAqIHJlZnVzaW5nIHRvIGxvYWQgd291bGQgY29zdCB0aGUgdXNlciBtb3JlIHRoYW4gdGhlIG92ZXJsYXAgZG9lcy5cbiAgICovXG4gIFdhcm4gPSAnd2Fybidcbn1cblxuLyoqXG4gKiBBIHBsdWdpbiBhbm90aGVyIHBsdWdpbiByZWZ1c2VzIHRvIHJ1biBiZXNpZGUsIG9yIHdhcm5zIGFib3V0IHJ1bm5pbmcgYmVzaWRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkNvbmZsaWN0IHtcbiAgLyoqXG4gICAqIFRoZSBzZW12ZXIgcmFuZ2Ugb2YgdGhlIE9USEVSIHBsdWdpbidzIHZlcnNpb25zIHRoYXQgY29uZmxpY3QsIGUuZy4gYCc8MTIuMC4wJ2AgZm9yIFwiZXZlcnkgdmVyc2lvblxuICAgKiBiZWZvcmUgdGhlIG9uZSB0aGF0IGdhdmUgdGhpcyBiZWhhdmlvciB1cFwiLlxuICAgKlxuICAgKiBBIHJhbmdlIHJhdGhlciB0aGFuIGEgbWluaW11bSwgc28gYW4gb3ZlcmxhcCBjb25maW5lZCB0byBvbmUgbWFqb3IgKGAnPj0zIDw0J2ApIGlzIGV4cHJlc3NpYmxlLCBhbmQgc29cbiAgICogaXMgYSBwbHVnaW4gdGhhdCBjb25mbGljdHMgYXQgZXZlcnkgdmVyc2lvbiBcdTIwMTQgc3BlbGwgdGhhdCBgJz49MC4wLjAnYCwgc2luY2UgYGNvbXBhcmUtdmVyc2lvbnNgIHJlamVjdHNcbiAgICogYSBiYXJlIGAqYC4gRXZhbHVhdGVkIGFnYWluc3QgYG1hbmlmZXN0LnZlcnNpb25gOyBhIHZlcnNpb24gdGhhdCBjYW5ub3QgYmUgcGFyc2VkIGNvdW50cyBhc1xuICAgKiBjb25mbGljdGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGNvbmZsaWN0aW5nVmVyc2lvblJhbmdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBgbWFuaWZlc3QuaWRgIG9mIHRoZSBjb25mbGljdGluZyBwbHVnaW4sIGFzIGxpc3RlZCBpbiBPYnNpZGlhbidzIGNvbW11bml0eSBwbHVnaW4gcmVnaXN0cnkuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlzcGxheSBuYW1lIG9mIHRoZSBjb25mbGljdGluZyBwbHVnaW4sIHNob3duIHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGxvY2FsaXplZCBzZW50ZW5jZSBzYXlpbmcgd2hhdCBnb2VzIHdyb25nIHdoZW4gYm90aCBydW4sIHNob3duIGluIHRoZSBiYW5uZXIuXG4gICAqXG4gICAqIFRoZSBkZWNsYXJpbmcgcGx1Z2luIG93bnMgdGhpcyBzdHJpbmcgYmVjYXVzZSBvbmx5IGl0IGtub3dzIHdoYXQgdGhlIHR3byBvZiB0aGVtIGNvbGxpZGUgb3ZlciwgYW5kIGFcbiAgICogdXNlciBiZWluZyBhc2tlZCB0byBkaXNhYmxlIHNvbWV0aGluZyBkZXNlcnZlcyB0byBiZSB0b2xkIHdoeS5cbiAgICovXG4gIHJlYWRvbmx5IHJlYXNvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGF0IHRoaXMgcGx1Z2luIGRvZXMgYWJvdXQgdGhlIGNvbmZsaWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgc2V2ZXJpdHk6IFBsdWdpbkNvbmZsaWN0U2V2ZXJpdHk7XG59XG5cbi8qKlxuICogQSBwbHVnaW4gYW5vdGhlciBwbHVnaW4gY2Fubm90IHdvcmsgd2l0aG91dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5EZXBlbmRlbmN5IHtcbiAgLyoqXG4gICAqIFRoZSBzZW12ZXIgcmFuZ2Ugb2YgQVBJIGNvbnRyYWN0IHZlcnNpb25zIHRoZSBkZXBlbmRlbnQgY29tcGlsZWQgYWdhaW5zdCwgZS5nLiBgJ14yJ2AuXG4gICAqXG4gICAqIEEgZGVwZW5kZW5jeSB3aG9zZSBwdWJsaXNoZWQgQVBJIGZhbGxzIG91dHNpZGUgdGhlIHJhbmdlIGNvdW50cyBhcyBVTlNBVElTRklFRCwgd2hpY2ggaXMgd2hhdCB0dXJucyBhXG4gICAqIHNpbGVudCBiZWhhdmlvcmFsIG1pc21hdGNoIGJldHdlZW4gdHdvIGluZGVwZW5kZW50bHkgcmVsZWFzZWQgcGx1Z2lucyBpbnRvIGEgdmlzaWJsZSBcInVwZGF0ZSB0aGlzXG4gICAqIG9uZVwiIG1lc3NhZ2UuIFNwZWxsIFwiYW55IHZlcnNpb25cIiBhcyBgJz49MC4wLjAnYCBcdTIwMTQgYGNvbXBhcmUtdmVyc2lvbnNgIHJlamVjdHMgYSBiYXJlIGAqYC5cbiAgICovXG4gIHJlYWRvbmx5IGFwaVZlcnNpb25SYW5nZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYG1hbmlmZXN0LmlkYCBvZiB0aGUgcmVxdWlyZWQgcGx1Z2luLCBhcyBsaXN0ZWQgaW4gT2JzaWRpYW4ncyBjb21tdW5pdHkgcGx1Z2luIHJlZ2lzdHJ5LlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRpc3BsYXkgbmFtZSBvZiB0aGUgcmVxdWlyZWQgcGx1Z2luLCBzaG93biB0byB0aGUgdXNlci5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQSBsb2NhbGl6ZWQgc2VudGVuY2Ugc2F5aW5nIHdoYXQgdGhlIGRlcGVuZGVudCBkb2VzIHdpdGggdGhpcyBwbHVnaW4sIHNob3duIGluIHRoZSBzZXR0aW5ncyBiYW5uZXIuXG4gICAqXG4gICAqIFRoZSBkZXBlbmRlbnQgb3ducyB0aGlzIHN0cmluZyBiZWNhdXNlIG9ubHkgaXQga25vd3Mgd2hhdCBpdCB1c2VzIHRoZSBvdGhlciBwbHVnaW4gZm9yLCBhbmQgYSB1c2VyXG4gICAqIGJlaW5nIGFza2VkIHRvIGluc3RhbGwgc29tZXRoaW5nIGRlc2VydmVzIHRvIGJlIHRvbGQgd2h5LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVhc29uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBQbHVnaW5HYXRlQ29tcG9uZW50fSBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5HYXRlQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGNvbmZsaWN0cyB0byBlbmZvcmNlLiBBbiBlbXB0eSBsaXN0IG1lYW5zIHRoZSBwbHVnaW4gcmVmdXNlcyB0byBydW4gYmVzaWRlIG5vdGhpbmcuXG4gICAqL1xuICByZWFkb25seSBjb25mbGljdHM6IHJlYWRvbmx5IFBsdWdpbkNvbmZsaWN0W107XG5cbiAgLyoqXG4gICAqIFRoZSBkZXBlbmRlbmNpZXMgdG8gZW5mb3JjZS4gQW4gZW1wdHkgbGlzdCBtZWFucyB0aGUgcGx1Z2luIGRlcGVuZHMgb24gbm90aGluZywgYW5kIGl0cyBmZWF0dXJlXG4gICAqIHN1cmZhY2UgbG9hZHMgaW1tZWRpYXRlbHkuXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM6IHJlYWRvbmx5IFBsdWdpbkRlcGVuZGVuY3lbXTtcblxuICAvKipcbiAgICogTG9hZHMgdGhlIGhvc3QgcGx1Z2luJ3MgZmVhdHVyZSBzdXJmYWNlLiBDYWxsZWQgb25jZSBldmVyeSBkZXBlbmRlbmN5IGlzIHNhdGlzZmllZCBhbmQgbm8gYmxvY2tpbmdcbiAgICogY29uZmxpY3QgaG9sZHMsIGFuZCBhZ2FpbiBhZnRlciBhIGdhdGUgdGhhdCBoYWQgY2xvc2VkIG9wZW5zIGJhY2sgdXAuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgc3VyZmFjZSBpcyBsb2FkZWQuXG4gICAqL1xuICByZWFkb25seSBsb2FkRmVhdHVyZVN1cmZhY2U6ICgpID0+IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIFRoZSBob3N0IHBsdWdpbiBcdTIwMTQgdGhlIG9uZSBkZWNsYXJpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZmxpY3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luOiBQbHVnaW47XG5cbiAgLyoqXG4gICAqIFRoZSBob3N0IHBsdWdpbidzIG5vdGljZSBjb21wb25lbnQsIHVzZWQgdG8gc2F5IHdoYXQgaXMgbWlzc2luZywgd2hhdCBpcyBpbiB0aGUgd2F5LCBhbmQgd2hhdCBjaGFuZ2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFVubG9hZHMgdGhlIGhvc3QgcGx1Z2luJ3MgZmVhdHVyZSBzdXJmYWNlLiBDYWxsZWQgd2hlbiBhIGdhdGUgdGhhdCBoYWQgYmVlbiBvcGVuIGNsb3Nlcy5cbiAgICovXG4gIHJlYWRvbmx5IHVubG9hZEZlYXR1cmVTdXJmYWNlOiAoKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSB7QGxpbmsgQmxvY2tlZFBsdWdpblNldHRpbmdUYWJ9IGNvbnN0cnVjdG9yLlxuICovXG5pbnRlcmZhY2UgQmxvY2tlZFBsdWdpblNldHRpbmdUYWJDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYmxvY2tlZCBwbHVnaW4uXG4gICAqL1xuICByZWFkb25seSBwbHVnaW46IFBsdWdpbjtcblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgYmxvY2tlZCBleHBsYW5hdGlvbiBpbnRvIHRoZSB0YWIncyBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSBjb250YWluZXJFbCAtIFRoZSB0YWIncyBjb250YWluZXIgZWxlbWVudC5cbiAgICovXG4gIHJlYWRvbmx5IHJlbmRlckJhbm5lcjogKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgc2V0dGluZ3MgdGFiIGEgYmxvY2tlZCBwbHVnaW4gc2hvd3MgaW4gcGxhY2Ugb2YgdGhlIG9uZSBpdCBuZXZlciBnb3QgdG8gcmVnaXN0ZXIuXG4gKlxuICogQSBibG9ja2VkIHBsdWdpbidzIGBvbmxvYWRJbXBsYCBuZXZlciByYW4sIHNvIGl0cyByZWFsIHNldHRpbmdzIHRhYiBkb2VzIG5vdCBleGlzdCBcdTIwMTQgYW5kIGEgdXNlciB3aG8gZ29lc1xuICogbG9va2luZyBmb3IgdGhlIHBsdWdpbidzIHNldHRpbmdzIGlzIHByZWNpc2VseSB0aGUgdXNlciBhc2tpbmcgXCJ3aHkgaXNuJ3QgdGhpcyBkb2luZyBhbnl0aGluZz9cIi4gQW5cbiAqIGVtcHR5IHNwYWNlIGlzIHRoZSB3b3JzdCBwb3NzaWJsZSBhbnN3ZXIgdG8gdGhhdCBxdWVzdGlvbi5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG9ic2lkaWFubWQvc2V0dGluZ3MtdGFiL3ByZWZlci1zZXR0aW5nLWRlZmluaXRpb25zIC0tIFRoaXMgdGFiIGhhcyBubyBzZXR0aW5ncyB0byBkZWNsYXJlLiBJdCBzdGFuZHMgaW4gZm9yIGEgc2V0dGluZ3MgdGFiIHRoYXQgZG9lcyBub3QgZXhpc3QgeWV0LCBjYXJyeWluZyBhbiBleHBsYW5hdGlvbiBhbmQgYSByZXBhaXIgYnV0dG9uLCBhbmQgdGhlIHBsdWdpbidzIHJlYWwgc2V0dGluZ3MgYXBwZWFyIHRoZSBtb21lbnQgdGhlIGdhdGUgb3BlbnMuXG5jbGFzcyBCbG9ja2VkUGx1Z2luU2V0dGluZ1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlckJhbm5lcjogKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB7QGxpbmsgQmxvY2tlZFBsdWdpblNldHRpbmdUYWJ9LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBCbG9ja2VkUGx1Z2luU2V0dGluZ1RhYkNvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIocGFyYW1zLnBsdWdpbi5hcHAsIHBhcmFtcy5wbHVnaW4pO1xuICAgIHRoaXMucmVuZGVyQmFubmVyID0gcGFyYW1zLnJlbmRlckJhbm5lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSB0YWIuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZGlzcGxheSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgdGhpcy5yZW5kZXJCYW5uZXIodGhpcy5jb250YWluZXJFbCk7XG4gIH1cbn1cblxuLyoqXG4gKiBFbmZvcmNlcyBhIHBsdWdpbidzIG1hbmRhdG9yeSBkZXBlbmRlbmNpZXMgYW5kIGRlY2xhcmVkIGNvbmZsaWN0cywgZ2F0aW5nIGl0cyBmZWF0dXJlIHN1cmZhY2Ugb24gYm90aC5cbiAqL1xuZXhwb3J0IGNsYXNzIFBsdWdpbkdhdGVDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRFeCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYW5ub3VuY2VkV2FybmluZ1BsdWdpbklkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGFwaVJlZnMgPSBuZXcgTWFwPHN0cmluZywgUGx1Z2luQXBpUmVmPG9iamVjdD4+KCk7XG4gIHByaXZhdGUgYmxvY2tlZFNldHRpbmdUYWI6IG51bGwgfCBQbHVnaW5TZXR0aW5nVGFiID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25mbGljdHM6IHJlYWRvbmx5IFBsdWdpbkNvbmZsaWN0W107XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVwZW5kZW5jaWVzOiByZWFkb25seSBQbHVnaW5EZXBlbmRlbmN5W107XG4gIHByaXZhdGUgaGFzQW5ub3VuY2VkQmxvY2tlZCA9IGZhbHNlO1xuICBwcml2YXRlIGlzRmVhdHVyZVN1cmZhY2VMb2FkZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc0xheW91dFJlYWR5ID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9hZEZlYXR1cmVTdXJmYWNlOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBwcml2YXRlIGxvc3NBbm5vdW5jZW1lbnRUaW1lcklkOiBudWxsIHwgbnVtYmVyID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBwbHVnaW46IFBsdWdpbjtcbiAgcHJpdmF0ZSByZWFkb25seSBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IFBsdWdpbk5vdGljZUNvbXBvbmVudDtcbiAgcHJpdmF0ZSByZWFkb25seSB1bmxvYWRGZWF0dXJlU3VyZmFjZTogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIGdldCBhcHAoKTogQXBwIHtcbiAgICByZXR1cm4gdGhpcy5wbHVnaW4uYXBwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2Yge0BsaW5rIFBsdWdpbkdhdGVDb21wb25lbnR9LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBQbHVnaW5HYXRlQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY29uZmxpY3RzID0gcGFyYW1zLmNvbmZsaWN0cztcbiAgICB0aGlzLmRlcGVuZGVuY2llcyA9IHBhcmFtcy5kZXBlbmRlbmNpZXM7XG4gICAgdGhpcy5sb2FkRmVhdHVyZVN1cmZhY2UgPSBwYXJhbXMubG9hZEZlYXR1cmVTdXJmYWNlO1xuICAgIHRoaXMucGx1Z2luID0gcGFyYW1zLnBsdWdpbjtcbiAgICB0aGlzLnBsdWdpbk5vdGljZUNvbXBvbmVudCA9IHBhcmFtcy5wbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG4gICAgdGhpcy51bmxvYWRGZWF0dXJlU3VyZmFjZSA9IHBhcmFtcy51bmxvYWRGZWF0dXJlU3VyZmFjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXlzIHdoZXRoZXIgYW55IHdhcm5pbmcgY29uZmxpY3QgaXMgaW4gZm9yY2UgcmlnaHQgbm93LlxuICAgKlxuICAgKiBUaGUgcHJlZGljYXRlIGEgZGVjbGFyYXRpdmUgc2V0dGluZ3MgdGFiIG5lZWRzLCBhbmQgdGhlIGNvdW50ZXJwYXJ0IHRvXG4gICAqIGBQbHVnaW5TdWdnZXN0aW9uQ29tcG9uZW50LmdldFN1Z2dlc3RlZFBsdWdpblN0YXRlYC4gU3VjaCBhIHRhYiBkZWNpZGVzIHdoZXRoZXIgYSByb3cgZXhpc3RzXG4gICAqIEJFRk9SRSBpdCByZW5kZXJzIGFueXRoaW5nIGludG8gaXQsIHNvIHtAbGluayByZW5kZXJDb25mbGljdFdhcm5pbmdCYW5uZXJ9IHdyaXRpbmcgbm90aGluZyBjYW5ub3RcbiAgICogYW5zd2VyIHRoZSBxdWVzdGlvbiBmb3IgaXQgXHUyMDE0IGEgcm93IHRoYXQgcmVuZGVycyBlbXB0eSBpcyBzdGlsbCBhIHJvdywgd2l0aCB0aGUgZGl2aWRlciBhbmQgcGFkZGluZ1xuICAgKiBldmVyeSBvdGhlciBzZXR0aW5nIGhhcy5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciBhdCBsZWFzdCBvbmUgZGVjbGFyZWQgd2FybmluZyBjb25mbGljdCBob2xkcy5cbiAgICovXG4gIHB1YmxpYyBoYXNBY3RpdmVXYXJuaW5nQ29uZmxpY3RzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZUNvbmZsaWN0cyhQbHVnaW5Db25mbGljdFNldmVyaXR5Lldhcm4pLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIHdhdGNoaW5nIGV2ZXJ5IGRlY2xhcmVkIGRlcGVuZGVuY3kgYW5kIGNvbmZsaWN0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9ubG9hZCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3kgb2YgdGhpcy5kZXBlbmRlbmNpZXMpIHtcbiAgICAgIGNvbnN0IGFwaVJlZiA9IHdhdGNoUGx1Z2luQXBpPG9iamVjdD4oe1xuICAgICAgICBhcGlWZXJzaW9uUmFuZ2U6IGRlcGVuZGVuY3kuYXBpVmVyc2lvblJhbmdlLFxuICAgICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIHBsdWdpbklkOiBkZXBlbmRlbmN5LnBsdWdpbklkXG4gICAgICB9KTtcbiAgICAgIHJlZ2lzdGVyQXN5bmNFdmVudChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYXBpUmVmLm9uKCdjaGFuZ2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoKCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5hcGlSZWZzLnNldChkZXBlbmRlbmN5LnBsdWdpbklkLCBhcGlSZWYpO1xuICAgIH1cblxuICAgIC8vIEEgY29uZmxpY3QgaGFzIG5vIEFQSSB0byB3YXRjaCBcdTIwMTQgaXQgaXMgcmVhZCBvdXQgb2YgdGhlIG1hbmlmZXN0cyBcdTIwMTQgc28gdGhlIHRyaWdnZXIgdG8gcmUtcmVhZCBpcyB0aGVcbiAgICAvLyBsaWJyYXJ5J3Mgb3duIGxpZmVjeWNsZSBicm9hZGNhc3QuIEl0IGNvdmVycyBldmVyeSBjb25mbGljdGluZyBwbHVnaW4gYnVpbHQgb24gdGhpcyBsaWJyYXJ5OyBvbmVcbiAgICAvLyB0aGF0IGlzIG5vdCBpcyBjYXVnaHQgYXQgdGhlIG5leHQgbG9hZCwgYXMgdGhlIGZpbGUgaGVhZGVyIHNheXMuXG4gICAgY29uc3QgbGlmZWN5Y2xlRXZlbnROYW1lczogUGx1Z2luTGlmZWN5Y2xlRXZlbnROYW1lW10gPSBbUExVR0lOX0xPQURFRF9FVkVOVF9OQU1FLCBQTFVHSU5fVU5MT0FERURfRVZFTlRfTkFNRV07XG4gICAgZm9yIChjb25zdCBldmVudE5hbWUgb2YgbGlmZWN5Y2xlRXZlbnROYW1lcykge1xuICAgICAgdGhpcy5yZWdpc3RlckV2ZW50KHRoaXMuYXBwLndvcmtzcGFjZS5vbihcbiAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICBjb252ZXJ0QXN5bmNUb1N5bmMoYXN5bmMgKHBheWxvYWQ6IFBsdWdpbkxpZmVjeWNsZUV2ZW50UGF5bG9hZCkgPT4ge1xuICAgICAgICAgIGlmIChwYXlsb2FkLnBsdWdpbklkID09PSB0aGlzLnBsdWdpbi5tYW5pZmVzdC5pZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaCgpO1xuICAgICAgICB9KVxuICAgICAgKSk7XG4gICAgfVxuXG4gICAgLy8gTm90aGluZyBpcyBTQUlEIGFib3V0IGEgbWlzc2luZyBkZXBlbmRlbmN5IHVudGlsIHRoZSBsYXlvdXQgaXMgcmVhZHkuIFBsdWdpbnMgbG9hZCBpbiBhbiB1bnNwZWNpZmllZFxuICAgIC8vIG9yZGVyLCBzbyBhIGRlcGVuZGVuY3kgdGhhdCBzaW1wbHkgaGFzIG5vdCBsb2FkZWQgeWV0IGlzIGluZGlzdGluZ3Vpc2hhYmxlIGF0IHRoaXMgcG9pbnQgZnJvbSBvbmVcbiAgICAvLyB0aGF0IGlzIG5vdCBpbnN0YWxsZWQgXHUyMDE0IGFubm91bmNpbmcgaGVyZSB3b3VsZCBwdXQgYSBcIm1pc3NpbmcgcGx1Z2luXCIgbm90aWNlIG9uIHNjcmVlbiBhdCBldmVyeVxuICAgIC8vIHN0YXJ0dXAgYW5kIHRha2UgaXQgYXdheSBhIG1vbWVudCBsYXRlci4gVGhlIGdhdGUgaXRzZWxmIGRvZXMgbm90IHdhaXQ6IHRoZSBzdXJmYWNlIGxvYWRzIHRoZVxuICAgIC8vIGluc3RhbnQgdGhlIGRlcGVuZGVuY3kgaXMgdGhlcmUsIHdoZW5ldmVyIHRoYXQgaXMuXG4gICAgdGhpcy5hZGRDaGlsZChcbiAgICAgIG5ldyBDYWxsYmFja0xheW91dFJlYWR5Q29tcG9uZW50KHRoaXMuYXBwLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMYXlvdXRSZWFkeSA9IHRydWU7XG4gICAgICAgIHRoaXMucHJlc2VudFVuc2F0aXNmaWVkKHRoaXMuZ2V0VW5zYXRpc2ZpZWREZXBlbmRlbmNpZXMoKSwgdGhpcy5nZXRBY3RpdmVDb25mbGljdHMoUGx1Z2luQ29uZmxpY3RTZXZlcml0eS5CbG9jaykpO1xuICAgICAgICB0aGlzLmFubm91bmNlV2FybmluZ3MoKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMucmVnaXN0ZXIoKCkgPT4ge1xuICAgICAgdGhpcy5jYW5jZWxMb3NzQW5ub3VuY2VtZW50KCk7XG4gICAgICB0aGlzLmhpZGVCbG9ja2VkU2V0dGluZ1RhYigpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlcyB0aGUgZ2F0ZSBvbmNlIHRoZSB3YXRjaGVzIGFyZSBpbiBwbGFjZSwgbG9hZGluZyB0aGUgZmVhdHVyZSBzdXJmYWNlIGlmIGl0IGlzIGFscmVhZHkgb3Blbi5cbiAgICpcbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBmaXJzdCBldmFsdWF0aW9uIGlzIGNvbXBsZXRlLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIG9ubG9hZEFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucmVmcmVzaCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBiYW5uZXIgZm9yIGV2ZXJ5IGNvbmZsaWN0IHRoZSBob3N0IGlzIHJ1bm5pbmcgYWxvbmdzaWRlLCBzbyBhIHBsdWdpbiBjYW4gcHV0IHRoZSBvdmVybGFwIGluXG4gICAqIGl0cyBvd24gc2V0dGluZ3MgdGFiLlxuICAgKlxuICAgKiBDb25zdW1lci1pbnZva2VkLCBleGFjdGx5IGxpa2UgYFBsdWdpblN1Z2dlc3Rpb25Db21wb25lbnQucmVuZGVyQmFubmVyYDogdGhlIGxpYnJhcnkgcmVnaXN0ZXJzIHRoZVxuICAgKiBzZXR0aW5ncyB0YWIgYSBCTE9DS0VEIHBsdWdpbiBuZWVkcywgYmVjYXVzZSB0aGF0IHBsdWdpbiBuZXZlciBnb3QgdG8gcmVnaXN0ZXIgb25lIG9mIGl0cyBvd24sIGJ1dCBpdFxuICAgKiBoYXMgbm8gaG9vayBpbnRvIHRoZSB0YWIgYSBydW5uaW5nIHBsdWdpbiBidWlsZHMuIFJlbmRlcnMgbm90aGluZyB3aGVuIG5vIHdhcm5pbmcgY29uZmxpY3QgaG9sZHMuXG4gICAqXG4gICAqIEBwYXJhbSBjb250YWluZXJFbCAtIFRoZSBlbGVtZW50IHRvIHJlbmRlciBpbnRvLlxuICAgKi9cbiAgcHVibGljIHJlbmRlckNvbmZsaWN0V2FybmluZ0Jhbm5lcihjb250YWluZXJFbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGNvbmZsaWN0IG9mIHRoaXMuZ2V0QWN0aXZlQ29uZmxpY3RzKFBsdWdpbkNvbmZsaWN0U2V2ZXJpdHkuV2FybikpIHtcbiAgICAgIHRoaXMucmVuZGVyQ29uZmxpY3RFbnRyeShjb250YWluZXJFbCwgY29uZmxpY3QsIHRoaXMuY3JlYXRlQ29uZmxpY3RXYXJuaW5nTWVzc2FnZShjb25mbGljdCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXlzIHdoYXQgd2VudCBhd2F5IHdoaWxlIHRoZSBwbHVnaW4gd2FzIHJ1bm5pbmcsIG5vdyB0aGF0IHRoZSBncmFjZSBwZXJpb2QgaXMgb3Zlci5cbiAgICpcbiAgICogUmUtcmVhZHMgdGhlIGdhdGUgcmF0aGVyIHRoYW4gdHJ1c3Rpbmcgd2hhdCBjbG9zZWQgaXQsIHNvIGEgZGVwZW5kZW5jeSB0aGF0IHdlbnQgYXdheSBkdXJpbmcgdGhlXG4gICAqIHdpbmRvdyBpcyBhbm5vdW5jZWQgd2l0aCB0aGUgcmVzdC4gT25lIHRoYXQgY2FtZSBiYWNrIGluIHRpbWUgbmV2ZXIgZ2V0cyBoZXJlOiB0aGUgZ2F0ZSByZW9wZW5pbmdcbiAgICogY2FuY2VscyB0aGUgdGltZXIuXG4gICAqL1xuICBwcml2YXRlIGFubm91bmNlTG9zcygpOiB2b2lkIHtcbiAgICB0aGlzLmxvc3NBbm5vdW5jZW1lbnRUaW1lcklkID0gbnVsbDtcblxuICAgIGZvciAoY29uc3QgZGVwZW5kZW5jeSBvZiB0aGlzLmdldFVuc2F0aXNmaWVkRGVwZW5kZW5jaWVzKCkpIHtcbiAgICAgIHRoaXMucGx1Z2luTm90aWNlQ29tcG9uZW50LnNob3dOb3RpY2UodGhpcy5jcmVhdGVEZXBlbmRlbmN5TG9zdE1lc3NhZ2UoZGVwZW5kZW5jeSkpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY29uZmxpY3Qgb2YgdGhpcy5nZXRBY3RpdmVDb25mbGljdHMoUGx1Z2luQ29uZmxpY3RTZXZlcml0eS5CbG9jaykpIHtcbiAgICAgIHRoaXMucGx1Z2luTm90aWNlQ29tcG9uZW50LnNob3dOb3RpY2UodGhpcy5jcmVhdGVDb25mbGljdEFwcGVhcmVkTWVzc2FnZShjb25mbGljdCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYW5ub3VuY2VXYXJuaW5ncygpOiB2b2lkIHtcbiAgICAvLyBBIHdhcm5pbmcgZGVzY3JpYmVzIHR3byBwbHVnaW5zIHRoYXQgYXJlIGJvdGggUlVOTklORywgc28gaXQgaXMgcG9pbnRsZXNzIHdoaWxlIHRoaXMgb25lIGlzIGJsb2NrZWRcbiAgICAvLyBcdTIwMTQgYW5kIGl0IHdhaXRzIGZvciBsYXlvdXQtcmVhZHkgZm9yIHRoZSBzYW1lIHJlYXNvbiB0aGUgYmxvY2tlZCBub3RpY2UgZG9lcy5cbiAgICBpZiAoIXRoaXMuaXNMYXlvdXRSZWFkeSB8fCAhdGhpcy5pc0ZlYXR1cmVTdXJmYWNlTG9hZGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjb25mbGljdCBvZiB0aGlzLmdldEFjdGl2ZUNvbmZsaWN0cyhQbHVnaW5Db25mbGljdFNldmVyaXR5Lldhcm4pKSB7XG4gICAgICBpZiAodGhpcy5hbm5vdW5jZWRXYXJuaW5nUGx1Z2luSWRzLmhhcyhjb25mbGljdC5wbHVnaW5JZCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYW5ub3VuY2VkV2FybmluZ1BsdWdpbklkcy5hZGQoY29uZmxpY3QucGx1Z2luSWQpO1xuICAgICAgdGhpcy5wbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZSh0aGlzLmNyZWF0ZUNvbmZsaWN0V2FybmluZ01lc3NhZ2UoY29uZmxpY3QpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNhbmNlbExvc3NBbm5vdW5jZW1lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9zc0Fubm91bmNlbWVudFRpbWVySWQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMubG9zc0Fubm91bmNlbWVudFRpbWVySWQpO1xuICAgIHRoaXMubG9zc0Fubm91bmNlbWVudFRpbWVySWQgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVCbG9ja2VkTWVzc2FnZShkZXBlbmRlbmN5OiBQbHVnaW5EZXBlbmRlbmN5KTogRG9jdW1lbnRGcmFnbWVudCB7XG4gICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3ModCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnBsdWdpbkRlcGVuZGVuY3kuYmxvY2tlZE5vdGljZSwge1xuICAgICAgZGVwZW5kZW5jeVBsdWdpbk5hbWU6IGFzQ29kZUJsb2NrKGRlcGVuZGVuY3kucGx1Z2luTmFtZSksXG4gICAgICBwbHVnaW5OYW1lOiBhc0NvZGVCbG9jayh0aGlzLnBsdWdpbi5tYW5pZmVzdC5uYW1lKVxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ29uZmxpY3RBcHBlYXJlZE1lc3NhZ2UoY29uZmxpY3Q6IFBsdWdpbkNvbmZsaWN0KTogRG9jdW1lbnRGcmFnbWVudCB7XG4gICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3ModCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnBsdWdpbkNvbmZsaWN0LmNvbmZsaWN0QXBwZWFyZWROb3RpY2UsIHtcbiAgICAgIGNvbmZsaWN0aW5nUGx1Z2luTmFtZTogYXNDb2RlQmxvY2soY29uZmxpY3QucGx1Z2luTmFtZSksXG4gICAgICBwbHVnaW5OYW1lOiBhc0NvZGVCbG9jayh0aGlzLnBsdWdpbi5tYW5pZmVzdC5uYW1lKVxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ29uZmxpY3RCbG9ja2VkTWVzc2FnZShjb25mbGljdDogUGx1Z2luQ29uZmxpY3QpOiBEb2N1bWVudEZyYWdtZW50IHtcbiAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2Nrcyh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMucGx1Z2luQ29uZmxpY3QuYmxvY2tlZE5vdGljZSwge1xuICAgICAgY29uZmxpY3RpbmdQbHVnaW5OYW1lOiBhc0NvZGVCbG9jayhjb25mbGljdC5wbHVnaW5OYW1lKSxcbiAgICAgIHBsdWdpbk5hbWU6IGFzQ29kZUJsb2NrKHRoaXMucGx1Z2luLm1hbmlmZXN0Lm5hbWUpXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb25mbGljdFdhcm5pbmdNZXNzYWdlKGNvbmZsaWN0OiBQbHVnaW5Db25mbGljdCk6IERvY3VtZW50RnJhZ21lbnQge1xuICAgIHJldHVybiBjcmVhdGVGcmFnbWVudFdpdGhDb2RlQmxvY2tzKHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5wbHVnaW5Db25mbGljdC53YXJuaW5nTm90aWNlLCB7XG4gICAgICBjb25mbGljdGluZ1BsdWdpbk5hbWU6IGFzQ29kZUJsb2NrKGNvbmZsaWN0LnBsdWdpbk5hbWUpLFxuICAgICAgcGx1Z2luTmFtZTogYXNDb2RlQmxvY2sodGhpcy5wbHVnaW4ubWFuaWZlc3QubmFtZSlcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURlcGVuZGVuY3lMb3N0TWVzc2FnZShkZXBlbmRlbmN5OiBQbHVnaW5EZXBlbmRlbmN5KTogRG9jdW1lbnRGcmFnbWVudCB7XG4gICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3ModCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnBsdWdpbkRlcGVuZGVuY3kuZGVwZW5kZW5jeUxvc3ROb3RpY2UsIHtcbiAgICAgIGRlcGVuZGVuY3lQbHVnaW5OYW1lOiBhc0NvZGVCbG9jayhkZXBlbmRlbmN5LnBsdWdpbk5hbWUpLFxuICAgICAgcGx1Z2luTmFtZTogYXNDb2RlQmxvY2sodGhpcy5wbHVnaW4ubWFuaWZlc3QubmFtZSlcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIGRlY2xhcmVkIGNvbmZsaWN0cyBvZiBvbmUgc2V2ZXJpdHkgdGhhdCBhcmUgY3VycmVudGx5IGluIGZvcmNlLlxuICAgKlxuICAgKiBAcGFyYW0gc2V2ZXJpdHkgLSBUaGUgc2V2ZXJpdHkgdG8gc2VsZWN0LlxuICAgKiBAcmV0dXJucyBUaGUgY29uZmxpY3RzIGhvbGRpbmcgcmlnaHQgbm93LCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGRlY2xhcmVkLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBY3RpdmVDb25mbGljdHMoc2V2ZXJpdHk6IFBsdWdpbkNvbmZsaWN0U2V2ZXJpdHkpOiBQbHVnaW5Db25mbGljdFtdIHtcbiAgICByZXR1cm4gdGhpcy5jb25mbGljdHMuZmlsdGVyKChjb25mbGljdCkgPT4gY29uZmxpY3Quc2V2ZXJpdHkgPT09IHNldmVyaXR5ICYmIHRoaXMuaXNDb25mbGljdEFjdGl2ZShjb25mbGljdCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVbnNhdGlzZmllZERlcGVuZGVuY2llcygpOiBQbHVnaW5EZXBlbmRlbmN5W10ge1xuICAgIHJldHVybiB0aGlzLmRlcGVuZGVuY2llcy5maWx0ZXIoKGRlcGVuZGVuY3kpID0+ICF0aGlzLmFwaVJlZnMuZ2V0KGRlcGVuZGVuY3kucGx1Z2luSWQpPy52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGhpZGVCbG9ja2VkU2V0dGluZ1RhYigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYmxvY2tlZFNldHRpbmdUYWIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmFwcC5zZXR0aW5nLnJlbW92ZVNldHRpbmdUYWIodGhpcy5ibG9ja2VkU2V0dGluZ1RhYik7XG4gICAgdGhpcy5ibG9ja2VkU2V0dGluZ1RhYiA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogRGVjaWRlcyB3aGV0aGVyIG9uZSBkZWNsYXJlZCBjb25mbGljdCBpcyBpbiBmb3JjZSByaWdodCBub3cuXG4gICAqXG4gICAqIE9ubHkgYW4gRU5BQkxFRCBwbHVnaW4gY291bnRzLiBPbmUgdGhhdCBpcyBpbnN0YWxsZWQgYnV0IHN3aXRjaGVkIG9mZiByZWdpc3RlcnMgbm90aGluZywgc28gaXQgY2Fubm90XG4gICAqIGNvbGxpZGUsIGFuZCBhY3Rpbmcgb24gaXQgd291bGQgYmUgYW4gYWxhcm0gdGhlIHVzZXIgY2FuIG9ubHkgYW5zd2VyIGJ5IHVuaW5zdGFsbGluZyBzb21ldGhpbmcgdGhleVxuICAgKiBoYXZlIGFscmVhZHkgdHVybmVkIG9mZi5cbiAgICpcbiAgICogQHBhcmFtIGNvbmZsaWN0IC0gVGhlIGRlY2xhcmVkIGNvbmZsaWN0LlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb25mbGljdGluZyBwbHVnaW4gaXMgZW5hYmxlZCBhdCBhIGNvbmZsaWN0aW5nIHZlcnNpb24uXG4gICAqL1xuICBwcml2YXRlIGlzQ29uZmxpY3RBY3RpdmUoY29uZmxpY3Q6IFBsdWdpbkNvbmZsaWN0KTogYm9vbGVhbiB7XG4gICAgY29uc3QgaW5zdGFsbGVkVmVyc2lvbiA9IGdldEluc3RhbGxlZFBsdWdpblZlcnNpb24oe1xuICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgIHBsdWdpbklkOiBjb25mbGljdC5wbHVnaW5JZFxuICAgIH0pO1xuXG4gICAgaWYgKGluc3RhbGxlZFZlcnNpb24gPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHNhdGlzZmllc1ZlcnNpb24oaW5zdGFsbGVkVmVyc2lvbiwgY29uZmxpY3QuY29uZmxpY3RpbmdWZXJzaW9uUmFuZ2UpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNheXMgd2hhdCBpcyBpbiB0aGUgd2F5LCBhbmQgcHV0cyB0aGUgc2FtZSBleHBsYW5hdGlvbiB3aGVyZSB0aGUgdXNlciB3aWxsIGxvb2sgZm9yIHRoZSBwbHVnaW4nc1xuICAgKiBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIHVuc2F0aXNmaWVkRGVwZW5kZW5jaWVzIC0gVGhlIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBub3QgY3VycmVudGx5IHNhdGlzZmllZC5cbiAgICogQHBhcmFtIGJsb2NraW5nQ29uZmxpY3RzIC0gVGhlIGNvbmZsaWN0cyBjdXJyZW50bHkgcmVmdXNpbmcgdGhlIHBsdWdpbiB0aGUgcmlnaHQgdG8gcnVuLlxuICAgKi9cbiAgcHJpdmF0ZSBwcmVzZW50VW5zYXRpc2ZpZWQoXG4gICAgdW5zYXRpc2ZpZWREZXBlbmRlbmNpZXM6IHJlYWRvbmx5IFBsdWdpbkRlcGVuZGVuY3lbXSxcbiAgICBibG9ja2luZ0NvbmZsaWN0czogcmVhZG9ubHkgUGx1Z2luQ29uZmxpY3RbXVxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNMYXlvdXRSZWFkeSB8fCAodW5zYXRpc2ZpZWREZXBlbmRlbmNpZXMubGVuZ3RoID09PSAwICYmIGJsb2NraW5nQ29uZmxpY3RzLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dCbG9ja2VkU2V0dGluZ1RhYih1bnNhdGlzZmllZERlcGVuZGVuY2llcywgYmxvY2tpbmdDb25mbGljdHMpO1xuXG4gICAgaWYgKHRoaXMuaGFzQW5ub3VuY2VkQmxvY2tlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaGFzQW5ub3VuY2VkQmxvY2tlZCA9IHRydWU7XG4gICAgZm9yIChjb25zdCBkZXBlbmRlbmN5IG9mIHVuc2F0aXNmaWVkRGVwZW5kZW5jaWVzKSB7XG4gICAgICB0aGlzLnBsdWdpbk5vdGljZUNvbXBvbmVudC5zaG93Tm90aWNlKHRoaXMuY3JlYXRlQmxvY2tlZE1lc3NhZ2UoZGVwZW5kZW5jeSkpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY29uZmxpY3Qgb2YgYmxvY2tpbmdDb25mbGljdHMpIHtcbiAgICAgIHRoaXMucGx1Z2luTm90aWNlQ29tcG9uZW50LnNob3dOb3RpY2UodGhpcy5jcmVhdGVDb25mbGljdEJsb2NrZWRNZXNzYWdlKGNvbmZsaWN0KSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlLWV2YWx1YXRlcyB0aGUgZ2F0ZSBhbmQgbW92ZXMgdGhlIGZlYXR1cmUgc3VyZmFjZSB0byBtYXRjaC5cbiAgICpcbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBzdXJmYWNlIG1hdGNoZXMgdGhlIGdhdGUuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlZnJlc2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdW5zYXRpc2ZpZWREZXBlbmRlbmNpZXMgPSB0aGlzLmdldFVuc2F0aXNmaWVkRGVwZW5kZW5jaWVzKCk7XG4gICAgY29uc3QgYmxvY2tpbmdDb25mbGljdHMgPSB0aGlzLmdldEFjdGl2ZUNvbmZsaWN0cyhQbHVnaW5Db25mbGljdFNldmVyaXR5LkJsb2NrKTtcblxuICAgIGlmICh1bnNhdGlzZmllZERlcGVuZGVuY2llcy5sZW5ndGggPT09IDAgJiYgYmxvY2tpbmdDb25mbGljdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNhbmNlbExvc3NBbm5vdW5jZW1lbnQoKTtcbiAgICAgIHRoaXMuaGlkZUJsb2NrZWRTZXR0aW5nVGFiKCk7XG4gICAgICB0aGlzLmhhc0Fubm91bmNlZEJsb2NrZWQgPSBmYWxzZTtcblxuICAgICAgaWYgKCF0aGlzLmlzRmVhdHVyZVN1cmZhY2VMb2FkZWQpIHtcbiAgICAgICAgdGhpcy5pc0ZlYXR1cmVTdXJmYWNlTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkRmVhdHVyZVN1cmZhY2UoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hbm5vdW5jZVdhcm5pbmdzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNGZWF0dXJlU3VyZmFjZUxvYWRlZCkge1xuICAgICAgdGhpcy5pc0ZlYXR1cmVTdXJmYWNlTG9hZGVkID0gZmFsc2U7XG4gICAgICB0aGlzLnVubG9hZEZlYXR1cmVTdXJmYWNlKCk7XG5cbiAgICAgIC8vIEEgZ2F0ZSB0aGF0IGNsb3NlcyB3aGlsZSB0aGUgcGx1Z2luIGlzIFJVTk5JTkcgaXMgdGhlIGNhc2Ugd29ydGggYmVpbmcgbG91ZCBhYm91dDogdGhlIHVzZXIganVzdFxuICAgICAgLy8gZGlkIHNvbWV0aGluZywgYW5kIHRoZSBjb25zZXF1ZW5jZSBpcyBpbW1lZGlhdGUgYW5kIGludmlzaWJsZSB3aXRob3V0IHRoaXMuIEFubm91bmNlZCByZWdhcmRsZXNzXG4gICAgICAvLyBvZiBsYXlvdXQgcmVhZGluZXNzLCBiZWNhdXNlIGEgcnVubmluZyBwbHVnaW4gbWVhbnMgdGhlIGxheW91dCBpcyBsb25nIHNpbmNlIHJlYWR5IFx1MjAxNCBidXQgb25seVxuICAgICAgLy8gb25jZSB0aGUgZ3JhY2UgcGVyaW9kIGhhcyBzaG93biB0aGUgbG9zcyBpcyBub3QgYW4gdXBkYXRlIHJlbG9hZGluZyB0aGUgcHJvdmlkZXIgKHNlZSB0aGUgZmlsZVxuICAgICAgLy8gaGVhZGVyKS5cbiAgICAgIHRoaXMubG9zc0Fubm91bmNlbWVudFRpbWVySWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuYW5ub3VuY2VMb3NzKCk7XG4gICAgICB9LCBMT1NTX0FOTk9VTkNFTUVOVF9HUkFDRV9QRVJJT0RfSU5fTUlMTElTRUNPTkRTKTtcblxuICAgICAgdGhpcy5oYXNBbm5vdW5jZWRCbG9ja2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2hvd0Jsb2NrZWRTZXR0aW5nVGFiKHVuc2F0aXNmaWVkRGVwZW5kZW5jaWVzLCBibG9ja2luZ0NvbmZsaWN0cyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcmVzZW50VW5zYXRpc2ZpZWQodW5zYXRpc2ZpZWREZXBlbmRlbmNpZXMsIGJsb2NraW5nQ29uZmxpY3RzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBibG9ja2VkIGV4cGxhbmF0aW9uIGludG8gYSBzZXR0aW5ncy10YWIgY29udGFpbmVyOiB3aGF0IGlzIG1pc3Npbmcgb3IgaW4gdGhlIHdheSwgd2h5IGl0XG4gICAqIG1hdHRlcnMsIGFuZCB0aGUgYnV0dG9uIHRoYXQgZml4ZXMgaXQuXG4gICAqXG4gICAqIEBwYXJhbSBjb250YWluZXJFbCAtIFRoZSBlbGVtZW50IHRvIHJlbmRlciBpbnRvLlxuICAgKiBAcGFyYW0gdW5zYXRpc2ZpZWREZXBlbmRlbmNpZXMgLSBUaGUgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIG5vdCBjdXJyZW50bHkgc2F0aXNmaWVkLlxuICAgKiBAcGFyYW0gYmxvY2tpbmdDb25mbGljdHMgLSBUaGUgY29uZmxpY3RzIGN1cnJlbnRseSByZWZ1c2luZyB0aGUgcGx1Z2luIHRoZSByaWdodCB0byBydW4uXG4gICAqL1xuICBwcml2YXRlIHJlbmRlckJsb2NrZWRCYW5uZXIoXG4gICAgY29udGFpbmVyRWw6IEhUTUxFbGVtZW50LFxuICAgIHVuc2F0aXNmaWVkRGVwZW5kZW5jaWVzOiByZWFkb25seSBQbHVnaW5EZXBlbmRlbmN5W10sXG4gICAgYmxvY2tpbmdDb25mbGljdHM6IHJlYWRvbmx5IFBsdWdpbkNvbmZsaWN0W11cbiAgKTogdm9pZCB7XG4gICAgaWYgKHVuc2F0aXNmaWVkRGVwZW5kZW5jaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLnBsdWdpbkRlcGVuZGVuY3kuc2V0dGluZ3NIZWFkaW5nKSB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3kgb2YgdW5zYXRpc2ZpZWREZXBlbmRlbmNpZXMpIHtcbiAgICAgIGNvbnN0IGJhbm5lckVsID0gY29udGFpbmVyRWwuY3JlYXRlRGl2KHtcbiAgICAgICAgY2xzOiBbQ3NzQ2xhc3MuTGlicmFyeU5hbWUsIENzc0NsYXNzLlBsdWdpbkRlcGVuZGVuY3lCYW5uZXJdXG4gICAgICB9KTtcbiAgICAgIGJhbm5lckVsLmFwcGVuZCh0aGlzLmNyZWF0ZUJsb2NrZWRNZXNzYWdlKGRlcGVuZGVuY3kpKTtcbiAgICAgIGJhbm5lckVsLmNyZWF0ZURpdih7IHRleHQ6IGRlcGVuZGVuY3kucmVhc29uIH0pO1xuXG4gICAgICBjb25zdCBzdGF0ZSA9IGdldEluc3RhbGxlZFBsdWdpblN0YXRlKHtcbiAgICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgICAgcGx1Z2luSWQ6IGRlcGVuZGVuY3kucGx1Z2luSWRcbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQnV0dG9uQ29tcG9uZW50KGJhbm5lckVsKVxuICAgICAgICAuc2V0QnV0dG9uVGV4dCh0KCgkKSA9PlxuICAgICAgICAgIHN0YXRlID09PSBJbnN0YWxsZWRQbHVnaW5TdGF0ZS5JbnN0YWxsZWRCdXREaXNhYmxlZFxuICAgICAgICAgICAgPyAkLm9ic2lkaWFuRGV2VXRpbHMucGx1Z2luU3VnZ2VzdGlvbi5lbmFibGVcbiAgICAgICAgICAgIDogJC5vYnNpZGlhbkRldlV0aWxzLnBsdWdpblN1Z2dlc3Rpb24uaW5zdGFsbFxuICAgICAgICApKVxuICAgICAgICAuc2V0Q3RhKClcbiAgICAgICAgLm9uQ2xpY2soY29udmVydEFzeW5jVG9TeW5jKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBhd2FpdCBpbnN0YWxsQW5kRW5hYmxlUGx1Z2luKHtcbiAgICAgICAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICAgICAgICBwbHVnaW5JZDogZGVwZW5kZW5jeS5wbHVnaW5JZCxcbiAgICAgICAgICAgIHBsdWdpbk5hbWU6IGRlcGVuZGVuY3kucGx1Z2luTmFtZSxcbiAgICAgICAgICAgIHBsdWdpbk5vdGljZUNvbXBvbmVudDogdGhpcy5wbHVnaW5Ob3RpY2VDb21wb25lbnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSkpO1xuXG4gICAgICAvLyBUaGUgbGluayBPVVQgdG8gdGhlIGRlcGVuZGVuY3kncyBvd24gc2V0dGluZ3MsIHNob3duIG9ubHkgb25jZSBpdCBpcyBpbnN0YWxsZWQgYW5kIGVuYWJsZWQgXHUyMDE0IHRoZVxuICAgICAgLy8gb3RoZXIgaGFsZiBvZiB0aGUgcmVsYXRpb25zaGlwIGJlaW5nIHZpc2libGUgZnJvbSBib3RoIGVuZHMuIEl0IGlzIHdoYXQgc3RvcHMgXCJjb25maWd1cmUgb25lXG4gICAgICAvLyBvcGVyYXRpb24gYWNyb3NzIHR3byBwbHVnaW5zXCIgZnJvbSBtZWFuaW5nIFwiZ28gYW5kIGZpbmQgdGhlIG90aGVyIHBsdWdpbiB5b3Vyc2VsZlwiLlxuICAgICAgaWYgKHN0YXRlICE9PSBJbnN0YWxsZWRQbHVnaW5TdGF0ZS5FbmFibGVkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlbmRlck9wZW5TZXR0aW5nc0J1dHRvbihiYW5uZXJFbCwgZGVwZW5kZW5jeS5wbHVnaW5JZCwgZGVwZW5kZW5jeS5wbHVnaW5OYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoYmxvY2tpbmdDb25mbGljdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gyJywgeyB0ZXh0OiB0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMucGx1Z2luQ29uZmxpY3Quc2V0dGluZ3NIZWFkaW5nKSB9KTtcblxuICAgIGZvciAoY29uc3QgY29uZmxpY3Qgb2YgYmxvY2tpbmdDb25mbGljdHMpIHtcbiAgICAgIHRoaXMucmVuZGVyQ29uZmxpY3RFbnRyeShjb250YWluZXJFbCwgY29uZmxpY3QsIHRoaXMuY3JlYXRlQ29uZmxpY3RCbG9ja2VkTWVzc2FnZShjb25mbGljdCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIG9uZSBjb25mbGljdDogd2hhdCBpdCBpcywgd2h5IGl0IG1hdHRlcnMsIGFuZCB0aGUgdHdvIHdheXMgb3V0IG9mIGl0LlxuICAgKlxuICAgKiBUaGUgcmVwYWlyIGlzIG9mZmVyZWQgb24gdGhlIE9USEVSIHBsdWdpbiBcdTIwMTQgZGlzYWJsaW5nIGl0IGlzIHRoZSBvbmUgdGhpbmcgdGhpcyBwbHVnaW4gY2FuIGRvIGluIGFcbiAgICogY2xpY2ssIHNpbmNlIGl0IGNhbm5vdCB1cGRhdGUgc29tZW9uZSBlbHNlJ3MgcGx1Z2luIFx1MjAxNCBhbmQgaXQgaXMgdGhlIHBlcnNpc3RlZCBgZGlzYWJsZVBsdWdpbkFuZFNhdmVgXG4gICAqIHJhdGhlciB0aGFuIHRoZSB0cmFuc2llbnQgZGlzYWJsZSwgYmVjYXVzZSB0aGUgdXNlciBhc2tlZCBmb3IgaXQgYnkgY2xpY2tpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBjb250YWluZXJFbCAtIFRoZSBlbGVtZW50IHRvIHJlbmRlciBpbnRvLlxuICAgKiBAcGFyYW0gY29uZmxpY3QgLSBUaGUgY29uZmxpY3QgdG8gcmVuZGVyLlxuICAgKiBAcGFyYW0gbWVzc2FnZUZyYWdtZW50IC0gVGhlIHNlbnRlbmNlIGV4cGxhaW5pbmcgdGhlIGNvbmZsaWN0LlxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJDb25mbGljdEVudHJ5KGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCwgY29uZmxpY3Q6IFBsdWdpbkNvbmZsaWN0LCBtZXNzYWdlRnJhZ21lbnQ6IERvY3VtZW50RnJhZ21lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBiYW5uZXJFbCA9IGNvbnRhaW5lckVsLmNyZWF0ZURpdih7XG4gICAgICBjbHM6IFtDc3NDbGFzcy5MaWJyYXJ5TmFtZSwgQ3NzQ2xhc3MuUGx1Z2luQ29uZmxpY3RCYW5uZXJdXG4gICAgfSk7XG4gICAgYmFubmVyRWwuYXBwZW5kKG1lc3NhZ2VGcmFnbWVudCk7XG4gICAgYmFubmVyRWwuY3JlYXRlRGl2KHsgdGV4dDogY29uZmxpY3QucmVhc29uIH0pO1xuXG4gICAgbmV3IEJ1dHRvbkNvbXBvbmVudChiYW5uZXJFbClcbiAgICAgIC5zZXRCdXR0b25UZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5wbHVnaW5Db25mbGljdC5kaXNhYmxlLCB7IGNvbmZsaWN0aW5nUGx1Z2luTmFtZTogY29uZmxpY3QucGx1Z2luTmFtZSB9KSlcbiAgICAgIC5zZXRDdGEoKVxuICAgICAgLm9uQ2xpY2soY29udmVydEFzeW5jVG9TeW5jKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgZGlzYWJsZUNvbW11bml0eVBsdWdpbih7XG4gICAgICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgICAgICBwbHVnaW5JZDogY29uZmxpY3QucGx1Z2luSWRcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaCgpO1xuICAgICAgfSkpO1xuXG4gICAgdGhpcy5yZW5kZXJPcGVuU2V0dGluZ3NCdXR0b24oYmFubmVyRWwsIGNvbmZsaWN0LnBsdWdpbklkLCBjb25mbGljdC5wbHVnaW5OYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyT3BlblNldHRpbmdzQnV0dG9uKGJhbm5lckVsOiBIVE1MRWxlbWVudCwgcGx1Z2luSWQ6IHN0cmluZywgcGx1Z2luTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgbmV3IEJ1dHRvbkNvbXBvbmVudChiYW5uZXJFbClcbiAgICAgIC5zZXRCdXR0b25UZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5wbHVnaW5EZXBlbmRlbmN5Lm9wZW5EZXBlbmRlbmN5U2V0dGluZ3MsIHtcbiAgICAgICAgZGVwZW5kZW5jeVBsdWdpbk5hbWU6IHBsdWdpbk5hbWVcbiAgICAgIH0pKVxuICAgICAgLm9uQ2xpY2soKCkgPT4ge1xuICAgICAgICB0aGlzLmFwcC5zZXR0aW5nLm9wZW4oKTtcbiAgICAgICAgdGhpcy5hcHAuc2V0dGluZy5vcGVuVGFiQnlJZChwbHVnaW5JZCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd0Jsb2NrZWRTZXR0aW5nVGFiKFxuICAgIHVuc2F0aXNmaWVkRGVwZW5kZW5jaWVzOiByZWFkb25seSBQbHVnaW5EZXBlbmRlbmN5W10sXG4gICAgYmxvY2tpbmdDb25mbGljdHM6IHJlYWRvbmx5IFBsdWdpbkNvbmZsaWN0W11cbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYmxvY2tlZFNldHRpbmdUYWIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBBZGRlZCB0aHJvdWdoIGBhcHAuc2V0dGluZ2AgcmF0aGVyIHRoYW4gYHBsdWdpbi5hZGRTZXR0aW5nVGFiYCwgYmVjYXVzZSB0aGlzIHRhYiBoYXMgdG8gY29tZSBiYWNrXG4gICAgLy8gT0ZGIGFnYWluIHRoZSBtb21lbnQgdGhlIGdhdGUgb3BlbnMgXHUyMDE0IG90aGVyd2lzZSB0aGUgcGx1Z2luJ3Mgb3duIHNldHRpbmdzIHRhYiwgcmVnaXN0ZXJlZCBieVxuICAgIC8vIGBvbmxvYWRJbXBsYCwgd291bGQgYXBwZWFyIGJlc2lkZSBhIHN0YWxlIFwicmVxdWlyZWQgcGx1Z2luIG1pc3NpbmdcIiBvbmUuIGBwbHVnaW4uYWRkU2V0dGluZ1RhYmBcbiAgICAvLyBvbmx5IGV2ZXIgcmVtb3ZlcyBhdCBwbHVnaW4gdW5sb2FkLlxuICAgIGNvbnN0IGJsb2NrZWRTZXR0aW5nVGFiID0gbmV3IEJsb2NrZWRQbHVnaW5TZXR0aW5nVGFiKHtcbiAgICAgIHBsdWdpbjogdGhpcy5wbHVnaW4sXG4gICAgICByZW5kZXJCYW5uZXI6IChjb250YWluZXJFbCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlckJsb2NrZWRCYW5uZXIoY29udGFpbmVyRWwsIHVuc2F0aXNmaWVkRGVwZW5kZW5jaWVzLCBibG9ja2luZ0NvbmZsaWN0cyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5hcHAuc2V0dGluZy5hZGRTZXR0aW5nVGFiKGJsb2NrZWRTZXR0aW5nVGFiKTtcbiAgICB0aGlzLmJsb2NrZWRTZXR0aW5nVGFiID0gYmxvY2tlZFNldHRpbmdUYWI7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEwRkEsU0FBUywwQkFBMEI7QUFDbkMsU0FBUyxhQUFhLHdCQUF3QjtBQUM5QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQVNQLFNBQVMsOEJBQThCO0FBQ3ZDLFNBQVMsZ0JBQWdCO0FBQ3pCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxTQUFTO0FBQ2xCLFNBQVMsc0JBQXNCO0FBQy9CO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEs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LEVBQUUsQ0FBQztBQUVoRyxlQUFXLFlBQVksbUJBQW1CO0FBQ3hDLFdBQUssb0JBQW9CLGFBQWEsVUFBVSxLQUFLLDZCQUE2QixRQUFRLENBQUM7QUFBQSxJQUM3RjtBQUFBLEVBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFhUSxvQkFBb0IsYUFBMEIsVUFBMEIsaUJBQXlDO0FBQ3ZILFVBQU0sV0FBVyxZQUFZLFVBQVU7QUFBQSxNQUNyQyxLQUFLLENBQUMsU0FBUyxhQUFhLFNBQVMsb0JBQW9CO0FBQUEsSUFDM0QsQ0FBQztBQUNELGFBQVMsT0FBTyxlQUFlO0FBQy9CLGFBQVMsVUFBVSxFQUFFLE1BQU0sU0FBUyxPQUFPLENBQUM7QUFFNUMsUUFBSSxnQkFBZ0IsUUFBUSxFQUN6QixjQUFjLEVBQUUsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLGVBQWUsU0FBUyxFQUFFLHVCQUF1QixTQUFTLFdBQVcsQ0FBQyxDQUFDLEVBQ2pILE9BQU8sRUFDUCxRQUFRLG1CQUFtQixZQUFZO0FBQ3RDLFlBQU0sdUJBQXVCO0FBQUEsUUFDM0IsS0FBSyxLQUFLO0FBQUEsUUFDVixVQUFVLFNBQVM7QUFBQSxNQUNyQixDQUFDO0FBQ0QsWUFBTSxLQUFLLFFBQVE7QUFBQSxJQUNyQixDQUFDLENBQUM7QUFFSixTQUFLLHlCQUF5QixVQUFVLFNBQVMsVUFBVSxTQUFTLFVBQVU7QUFBQSxFQUNoRjtBQUFBLEVBRVEseUJBQXlCLFVBQXVCLFVBQWtCLFlBQTBCO0FBQ2xHLFFBQUksZ0JBQWdCLFFBQVEsRUFDekIsY0FBYyxFQUFFLENBQUMsTUFBTSxFQUFFLGlCQUFpQixpQkFBaUIsd0JBQXdCO0FBQUEsTUFDbEYsc0JBQXNCO0FBQUEsSUFDeEIsQ0FBQyxDQUFDLEVBQ0QsUUFBUSxNQUFNO0FBQ2IsV0FBSyxJQUFJLFFBQVEsS0FBSztBQUN0QixXQUFLLElBQUksUUFBUSxZQUFZLFFBQVE7QUFBQSxJQUN2QyxDQUFDO0FBQUEsRUFDTDtBQUFBLEVBRVEsc0JBQ04seUJBQ0EsbUJBQ007QUFDTixRQUFJLEtBQUssbUJBQW1CO0FBQzFCO0FBQUEsSUFDRjtBQU1BLFVBQU0sb0JBQW9CLElBQUksd0JBQXdCO0FBQUEsTUFDcEQsUUFBUSxLQUFLO0FBQUEsTUFDYixjQUFjLENBQUMsZ0JBQXNCO0FBQ25DLGFBQUssb0JBQW9CLGFBQWEseUJBQXlCLGlCQUFpQjtBQUFBLE1BQ2xGO0FBQUEsSUFDRixDQUFDO0FBQ0QsU0FBSyxJQUFJLFFBQVEsY0FBYyxpQkFBaUI7QUFDaEQsU0FBSyxvQkFBb0I7QUFBQSxFQUMzQjtBQUNGOyIsCiAgIm5hbWVzIjogWyJQbHVnaW5Db25mbGljdFNldmVyaXR5Il0KfQo=