obsidian-dev-utils 55.4.0 → 56.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 (542) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/lib/cjs/abort-controller.cjs +8 -4
  3. package/dist/lib/cjs/array.cjs +7 -3
  4. package/dist/lib/cjs/async-events.cjs +9 -5
  5. package/dist/lib/cjs/async.cjs +8 -4
  6. package/dist/lib/cjs/blob.cjs +8 -4
  7. package/dist/lib/cjs/codemirror/index.cjs +7 -3
  8. package/dist/lib/cjs/codemirror/state-field-spec.cjs +7 -3
  9. package/dist/lib/cjs/css-class.cjs +7 -3
  10. package/dist/lib/cjs/debug-controller.cjs +7 -3
  11. package/dist/lib/cjs/debug.cjs +7 -3
  12. package/dist/lib/cjs/enum.cjs +7 -3
  13. package/dist/lib/cjs/error.cjs +7 -3
  14. package/dist/lib/cjs/function.cjs +7 -3
  15. package/dist/lib/cjs/html-element.cjs +20 -16
  16. package/dist/lib/cjs/index.cjs +7 -3
  17. package/dist/lib/cjs/library.cjs +8 -4
  18. package/dist/lib/cjs/object-utils.cjs +7 -3
  19. package/dist/lib/cjs/obsidian/@types/i18next.d.cts +3 -3
  20. package/dist/lib/cjs/obsidian/app.cjs +7 -3
  21. package/dist/lib/cjs/obsidian/async-with-notice.cjs +10 -6
  22. package/dist/lib/cjs/obsidian/attachment-path.cjs +7 -3
  23. package/dist/lib/cjs/obsidian/backlink.cjs +7 -3
  24. package/dist/lib/cjs/obsidian/callout.cjs +7 -3
  25. package/dist/lib/cjs/obsidian/code-block-markdown-information.cjs +7 -3
  26. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +355 -0
  27. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +178 -0
  28. package/dist/lib/cjs/obsidian/{commands/index.cjs → command-handlers/app-active-file-provider.cjs} +31 -34
  29. package/dist/lib/cjs/obsidian/command-handlers/app-active-file-provider.d.cts +25 -0
  30. package/dist/lib/cjs/obsidian/command-handlers/app-menu-event-registrar.cjs +173 -0
  31. package/dist/lib/cjs/obsidian/command-handlers/app-menu-event-registrar.d.cts +41 -0
  32. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +164 -0
  33. package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.d.cts +26 -0
  34. package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +174 -0
  35. package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +143 -0
  36. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +269 -0
  37. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +114 -0
  38. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +261 -0
  39. package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.d.cts +112 -0
  40. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +261 -0
  41. package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.d.cts +112 -0
  42. package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.cjs +177 -0
  43. package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.d.cts +38 -0
  44. package/dist/lib/cjs/obsidian/command-handlers/index.cjs +170 -0
  45. package/dist/lib/cjs/obsidian/command-handlers/index.d.cts +9 -0
  46. package/dist/lib/cjs/obsidian/components/all-windows-event-handler.cjs +8 -4
  47. package/dist/lib/cjs/obsidian/components/async-component.cjs +164 -0
  48. package/dist/lib/cjs/obsidian/components/async-component.d.cts +28 -0
  49. package/dist/lib/cjs/obsidian/components/async-events-component.cjs +7 -3
  50. package/dist/lib/cjs/obsidian/components/index.cjs +10 -3
  51. package/dist/lib/cjs/obsidian/components/index.d.cts +1 -0
  52. package/dist/lib/cjs/obsidian/components/setting-components/checkbox-component.cjs +7 -3
  53. package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.cjs +7 -3
  54. package/dist/lib/cjs/obsidian/components/setting-components/date-component.cjs +7 -3
  55. package/dist/lib/cjs/obsidian/components/setting-components/date-time-component.cjs +7 -3
  56. package/dist/lib/cjs/obsidian/components/setting-components/email-component.cjs +7 -3
  57. package/dist/lib/cjs/obsidian/components/setting-components/file-component.cjs +7 -3
  58. package/dist/lib/cjs/obsidian/components/setting-components/index.cjs +7 -3
  59. package/dist/lib/cjs/obsidian/components/setting-components/month-component.cjs +7 -3
  60. package/dist/lib/cjs/obsidian/components/setting-components/multiple-dropdown-component.cjs +7 -3
  61. package/dist/lib/cjs/obsidian/components/setting-components/multiple-email-component.cjs +7 -3
  62. package/dist/lib/cjs/obsidian/components/setting-components/multiple-file-component.cjs +7 -3
  63. package/dist/lib/cjs/obsidian/components/setting-components/multiple-text-component.cjs +7 -3
  64. package/dist/lib/cjs/obsidian/components/setting-components/number-component.cjs +7 -3
  65. package/dist/lib/cjs/obsidian/components/setting-components/password-component.cjs +7 -3
  66. package/dist/lib/cjs/obsidian/components/setting-components/setting-component-wrapper.cjs +7 -3
  67. package/dist/lib/cjs/obsidian/components/setting-components/telephone-component.cjs +7 -3
  68. package/dist/lib/cjs/obsidian/components/setting-components/text-based-component.cjs +7 -3
  69. package/dist/lib/cjs/obsidian/components/setting-components/time-component.cjs +7 -3
  70. package/dist/lib/cjs/obsidian/components/setting-components/tri-state-checkbox-component.cjs +7 -3
  71. package/dist/lib/cjs/obsidian/components/setting-components/typed-dropdown-component.cjs +7 -3
  72. package/dist/lib/cjs/obsidian/components/setting-components/typed-multiple-dropdown-component.cjs +7 -3
  73. package/dist/lib/cjs/obsidian/components/setting-components/typed-range-text-component.cjs +7 -3
  74. package/dist/lib/cjs/obsidian/components/setting-components/typed-text-component.cjs +7 -3
  75. package/dist/lib/cjs/obsidian/components/setting-components/url-component.cjs +7 -3
  76. package/dist/lib/cjs/obsidian/components/setting-components/validator-component.cjs +9 -5
  77. package/dist/lib/cjs/obsidian/components/setting-components/value-component-with-change-tracking.cjs +7 -3
  78. package/dist/lib/cjs/obsidian/components/setting-components/week-component.cjs +7 -3
  79. package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.cjs +7 -3
  80. package/dist/lib/cjs/obsidian/constructors/index.cjs +7 -3
  81. package/dist/lib/cjs/obsidian/dataview-link.cjs +7 -3
  82. package/dist/lib/cjs/obsidian/dataview.cjs +8 -4
  83. package/dist/lib/cjs/obsidian/editor.cjs +7 -3
  84. package/dist/lib/cjs/obsidian/file-change.cjs +7 -3
  85. package/dist/lib/cjs/obsidian/file-manager.cjs +7 -3
  86. package/dist/lib/cjs/obsidian/file-system.cjs +7 -3
  87. package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +7 -3
  88. package/dist/lib/cjs/obsidian/frontmatter.cjs +7 -3
  89. package/dist/lib/cjs/obsidian/i18n/{custom-type-options-base.cjs → custom-type-options.cjs} +9 -5
  90. package/dist/lib/cjs/obsidian/i18n/custom-type-options.d.cts +37 -0
  91. package/dist/lib/cjs/obsidian/{plugin/plugin-settings-wrapper.cjs → i18n/default-translations.cjs} +10 -5
  92. package/dist/lib/cjs/obsidian/i18n/default-translations.d.cts +14 -0
  93. package/dist/lib/cjs/obsidian/i18n/i18n.cjs +7 -3
  94. package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +2 -13
  95. package/dist/lib/cjs/obsidian/i18n/index.cjs +13 -9
  96. package/dist/lib/cjs/obsidian/i18n/index.d.cts +2 -2
  97. package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +7 -3
  98. package/dist/lib/cjs/obsidian/i18n/locales/index.cjs +7 -3
  99. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.cjs +7 -3
  100. package/dist/lib/cjs/obsidian/i18n/locales/translations-map.d.cts +1 -2
  101. package/dist/lib/cjs/obsidian/index.cjs +10 -6
  102. package/dist/lib/cjs/obsidian/index.d.cts +1 -1
  103. package/dist/lib/cjs/obsidian/is-in-obsidian.cjs +7 -3
  104. package/dist/lib/cjs/obsidian/link.cjs +7 -3
  105. package/dist/lib/cjs/obsidian/logger.cjs +7 -3
  106. package/dist/lib/cjs/obsidian/loop.cjs +7 -3
  107. package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +7 -3
  108. package/dist/lib/cjs/obsidian/markdown-view.cjs +7 -3
  109. package/dist/lib/cjs/obsidian/markdown.cjs +7 -3
  110. package/dist/lib/cjs/obsidian/metadata-cache.cjs +7 -3
  111. package/dist/lib/cjs/obsidian/modals/alert.cjs +10 -6
  112. package/dist/lib/cjs/obsidian/modals/confirm.cjs +10 -6
  113. package/dist/lib/cjs/obsidian/modals/index.cjs +10 -6
  114. package/dist/lib/cjs/obsidian/modals/index.d.cts +1 -1
  115. package/dist/lib/cjs/obsidian/modals/{modal-base.cjs → modal.cjs} +10 -6
  116. package/dist/lib/cjs/obsidian/modals/prompt.cjs +10 -6
  117. package/dist/lib/cjs/obsidian/modals/select-item.cjs +9 -5
  118. package/dist/lib/cjs/obsidian/monkey-around.cjs +7 -3
  119. package/dist/lib/cjs/obsidian/obsidian-settings.cjs +7 -3
  120. package/dist/lib/cjs/obsidian/pdf.cjs +10 -6
  121. package/dist/lib/cjs/obsidian/{commands/non-editor-command-base.cjs → plugin/components/abort-signal-component.cjs} +31 -21
  122. package/dist/lib/cjs/obsidian/plugin/components/abort-signal-component.d.cts +27 -0
  123. package/dist/lib/cjs/obsidian/plugin/components/async-error-handler-component.cjs +165 -0
  124. package/dist/lib/cjs/obsidian/plugin/components/async-error-handler-component.d.cts +29 -0
  125. package/dist/lib/cjs/obsidian/plugin/components/console-debug-component.cjs +160 -0
  126. package/dist/lib/cjs/obsidian/plugin/components/console-debug-component.d.cts +29 -0
  127. package/dist/lib/cjs/obsidian/{i18n/default-translations-base.cjs → plugin/components/i18n-component.cjs} +41 -6
  128. package/dist/lib/cjs/obsidian/plugin/components/i18n-component.d.cts +23 -0
  129. package/dist/lib/cjs/obsidian/plugin/components/index.cjs +170 -0
  130. package/dist/lib/cjs/obsidian/plugin/components/index.d.cts +9 -0
  131. package/dist/lib/cjs/obsidian/plugin/components/lifecycle-events-component.cjs +207 -0
  132. package/dist/lib/cjs/obsidian/plugin/components/lifecycle-events-component.d.cts +59 -0
  133. package/dist/lib/cjs/obsidian/plugin/components/plugin-context-component.cjs +162 -0
  134. package/dist/lib/cjs/obsidian/plugin/components/plugin-context-component.d.cts +25 -0
  135. package/dist/lib/cjs/obsidian/plugin/components/plugin-notice-component.cjs +161 -0
  136. package/dist/lib/cjs/obsidian/plugin/components/plugin-notice-component.d.cts +25 -0
  137. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.cjs +566 -0
  138. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.d.cts +296 -0
  139. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-tab-component.cjs +166 -0
  140. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-tab-component.d.cts +28 -0
  141. package/dist/lib/cjs/obsidian/plugin/index.cjs +13 -18
  142. package/dist/lib/cjs/obsidian/plugin/index.d.cts +2 -5
  143. package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +7 -3
  144. package/dist/lib/cjs/obsidian/plugin/path-settings.cjs +7 -3
  145. package/dist/lib/cjs/obsidian/plugin/plugin-context.cjs +18 -7
  146. package/dist/lib/cjs/obsidian/plugin/plugin-context.d.cts +3 -2
  147. package/dist/lib/cjs/obsidian/plugin/plugin-id.cjs +7 -3
  148. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +408 -0
  149. package/dist/lib/cjs/obsidian/plugin/{plugin-settings-tab-base.d.cts → plugin-settings-tab.d.cts} +28 -11
  150. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +137 -3
  151. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +106 -5
  152. package/dist/lib/cjs/obsidian/queue.cjs +7 -3
  153. package/dist/lib/cjs/obsidian/react/app-context.cjs +7 -3
  154. package/dist/lib/cjs/obsidian/react/index.cjs +7 -3
  155. package/dist/lib/cjs/obsidian/reference.cjs +7 -3
  156. package/dist/lib/cjs/obsidian/rename-delete-handler.cjs +7 -3
  157. package/dist/lib/cjs/obsidian/resource-url.cjs +7 -3
  158. package/dist/lib/cjs/obsidian/setting-ex.cjs +7 -3
  159. package/dist/lib/cjs/obsidian/setting-group-ex.cjs +7 -3
  160. package/dist/lib/cjs/obsidian/validation.cjs +7 -3
  161. package/dist/lib/cjs/obsidian/vault-delete.cjs +7 -3
  162. package/dist/lib/cjs/obsidian/vault.cjs +7 -3
  163. package/dist/lib/cjs/obsidian/workspace.cjs +7 -3
  164. package/dist/lib/cjs/path.cjs +7 -3
  165. package/dist/lib/cjs/reg-exp.cjs +7 -3
  166. package/dist/lib/cjs/script-utils/build.cjs +7 -3
  167. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +7 -3
  168. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +7 -3
  169. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +7 -3
  170. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +8 -4
  171. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +7 -3
  172. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +7 -3
  173. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/index.cjs +7 -3
  174. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +7 -3
  175. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +10 -6
  176. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.cjs +7 -3
  177. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +7 -3
  178. package/dist/lib/cjs/script-utils/bundlers/esbuild.cjs +7 -3
  179. package/dist/lib/cjs/script-utils/bundlers/index.cjs +7 -3
  180. package/dist/lib/cjs/script-utils/cli-utils.cjs +7 -3
  181. package/dist/lib/cjs/script-utils/code-generator.cjs +7 -3
  182. package/dist/lib/cjs/script-utils/commitlint-config.cjs +7 -3
  183. package/dist/lib/cjs/script-utils/exec.cjs +7 -3
  184. package/dist/lib/cjs/script-utils/formatters/dprint.cjs +8 -4
  185. package/dist/lib/cjs/script-utils/formatters/index.cjs +7 -3
  186. package/dist/lib/cjs/script-utils/fs.cjs +7 -3
  187. package/dist/lib/cjs/script-utils/index.cjs +7 -3
  188. package/dist/lib/cjs/script-utils/json.cjs +7 -3
  189. package/dist/lib/cjs/script-utils/linters/cspell.cjs +7 -3
  190. package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +9 -13
  191. package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +7 -3
  192. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +7 -3
  193. package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.cjs +7 -3
  194. package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +7 -3
  195. package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.cjs +7 -3
  196. package/dist/lib/cjs/script-utils/linters/eslint.cjs +8 -4
  197. package/dist/lib/cjs/script-utils/linters/index.cjs +7 -3
  198. package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.cjs +7 -3
  199. package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +11 -5
  200. package/dist/lib/cjs/script-utils/nano-staged-config.cjs +7 -3
  201. package/dist/lib/cjs/script-utils/npm-publish.cjs +7 -3
  202. package/dist/lib/cjs/script-utils/npm-run.cjs +7 -3
  203. package/dist/lib/cjs/script-utils/npm.cjs +7 -3
  204. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +7 -3
  205. package/dist/lib/cjs/script-utils/root.cjs +7 -3
  206. package/dist/lib/cjs/script-utils/test-runners/index.cjs +7 -3
  207. package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +7 -3
  208. package/dist/lib/cjs/script-utils/version.cjs +7 -3
  209. package/dist/lib/cjs/strict-proxy.cjs +7 -3
  210. package/dist/lib/cjs/string.cjs +7 -3
  211. package/dist/lib/cjs/transformers/date-transformer.cjs +7 -3
  212. package/dist/lib/cjs/transformers/duration-transformer.cjs +7 -3
  213. package/dist/lib/cjs/transformers/group-transformer.cjs +7 -3
  214. package/dist/lib/cjs/transformers/index.cjs +7 -3
  215. package/dist/lib/cjs/transformers/map-transformer.cjs +7 -3
  216. package/dist/lib/cjs/transformers/set-transformer.cjs +7 -3
  217. package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +7 -3
  218. package/dist/lib/cjs/transformers/transformer.cjs +7 -3
  219. package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +7 -3
  220. package/dist/lib/cjs/transformers/typed-transformer.cjs +7 -3
  221. package/dist/lib/cjs/two-way-map.cjs +7 -3
  222. package/dist/lib/cjs/type-guards.cjs +7 -3
  223. package/dist/lib/cjs/type.cjs +7 -3
  224. package/dist/lib/cjs/url.cjs +7 -3
  225. package/dist/lib/cjs/value-provider.cjs +7 -3
  226. package/dist/lib/esm/abort-controller.mjs +4 -2
  227. package/dist/lib/esm/array.mjs +3 -1
  228. package/dist/lib/esm/async-events.mjs +5 -3
  229. package/dist/lib/esm/async.mjs +4 -2
  230. package/dist/lib/esm/blob.mjs +4 -2
  231. package/dist/lib/esm/codemirror/index.mjs +3 -1
  232. package/dist/lib/esm/codemirror/state-field-spec.mjs +2 -0
  233. package/dist/lib/esm/css-class.mjs +3 -1
  234. package/dist/lib/esm/debug-controller.mjs +2 -0
  235. package/dist/lib/esm/debug.mjs +3 -1
  236. package/dist/lib/esm/enum.mjs +3 -1
  237. package/dist/lib/esm/error.mjs +3 -1
  238. package/dist/lib/esm/function.mjs +3 -1
  239. package/dist/lib/esm/html-element.mjs +16 -14
  240. package/dist/lib/esm/index.mjs +3 -1
  241. package/dist/lib/esm/library.mjs +4 -2
  242. package/dist/lib/esm/object-utils.mjs +3 -1
  243. package/dist/lib/esm/obsidian/@types/i18next.d.mts +3 -3
  244. package/dist/lib/esm/obsidian/app.mjs +3 -1
  245. package/dist/lib/esm/obsidian/async-with-notice.mjs +6 -4
  246. package/dist/lib/esm/obsidian/attachment-path.mjs +3 -1
  247. package/dist/lib/esm/obsidian/backlink.mjs +3 -1
  248. package/dist/lib/esm/obsidian/callout.mjs +3 -1
  249. package/dist/lib/esm/obsidian/code-block-markdown-information.mjs +2 -0
  250. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +178 -0
  251. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +247 -0
  252. package/dist/lib/esm/obsidian/command-handlers/app-active-file-provider.d.mts +25 -0
  253. package/dist/lib/esm/obsidian/command-handlers/app-active-file-provider.mjs +46 -0
  254. package/dist/lib/esm/obsidian/command-handlers/app-menu-event-registrar.d.mts +41 -0
  255. package/dist/lib/esm/obsidian/command-handlers/app-menu-event-registrar.mjs +65 -0
  256. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.d.mts +26 -0
  257. package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +56 -0
  258. package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +143 -0
  259. package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +66 -0
  260. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +114 -0
  261. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +161 -0
  262. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.d.mts +112 -0
  263. package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +157 -0
  264. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.d.mts +112 -0
  265. package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +157 -0
  266. package/dist/lib/esm/obsidian/command-handlers/global-command-handler.d.mts +38 -0
  267. package/dist/lib/esm/obsidian/command-handlers/global-command-handler.mjs +69 -0
  268. package/dist/lib/esm/obsidian/command-handlers/index.d.mts +9 -0
  269. package/dist/lib/esm/obsidian/command-handlers/index.mjs +44 -0
  270. package/dist/lib/esm/obsidian/components/all-windows-event-handler.mjs +4 -2
  271. package/dist/lib/esm/obsidian/components/async-component.d.mts +28 -0
  272. package/dist/lib/esm/obsidian/components/async-component.mjs +56 -0
  273. package/dist/lib/esm/obsidian/components/async-events-component.mjs +3 -1
  274. package/dist/lib/esm/obsidian/components/index.d.mts +1 -0
  275. package/dist/lib/esm/obsidian/components/index.mjs +5 -1
  276. package/dist/lib/esm/obsidian/components/setting-components/checkbox-component.mjs +3 -1
  277. package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.mjs +3 -1
  278. package/dist/lib/esm/obsidian/components/setting-components/date-component.mjs +3 -1
  279. package/dist/lib/esm/obsidian/components/setting-components/date-time-component.mjs +3 -1
  280. package/dist/lib/esm/obsidian/components/setting-components/email-component.mjs +3 -1
  281. package/dist/lib/esm/obsidian/components/setting-components/file-component.mjs +3 -1
  282. package/dist/lib/esm/obsidian/components/setting-components/index.mjs +3 -1
  283. package/dist/lib/esm/obsidian/components/setting-components/month-component.mjs +3 -1
  284. package/dist/lib/esm/obsidian/components/setting-components/multiple-dropdown-component.mjs +3 -1
  285. package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.mjs +3 -1
  286. package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.mjs +3 -1
  287. package/dist/lib/esm/obsidian/components/setting-components/multiple-text-component.mjs +3 -1
  288. package/dist/lib/esm/obsidian/components/setting-components/number-component.mjs +3 -1
  289. package/dist/lib/esm/obsidian/components/setting-components/password-component.mjs +3 -1
  290. package/dist/lib/esm/obsidian/components/setting-components/setting-component-wrapper.mjs +3 -1
  291. package/dist/lib/esm/obsidian/components/setting-components/telephone-component.mjs +3 -1
  292. package/dist/lib/esm/obsidian/components/setting-components/text-based-component.mjs +3 -1
  293. package/dist/lib/esm/obsidian/components/setting-components/time-component.mjs +3 -1
  294. package/dist/lib/esm/obsidian/components/setting-components/tri-state-checkbox-component.mjs +3 -1
  295. package/dist/lib/esm/obsidian/components/setting-components/typed-dropdown-component.mjs +3 -1
  296. package/dist/lib/esm/obsidian/components/setting-components/typed-multiple-dropdown-component.mjs +3 -1
  297. package/dist/lib/esm/obsidian/components/setting-components/typed-range-text-component.mjs +3 -1
  298. package/dist/lib/esm/obsidian/components/setting-components/typed-text-component.mjs +3 -1
  299. package/dist/lib/esm/obsidian/components/setting-components/url-component.mjs +3 -1
  300. package/dist/lib/esm/obsidian/components/setting-components/validator-component.mjs +5 -3
  301. package/dist/lib/esm/obsidian/components/setting-components/value-component-with-change-tracking.mjs +2 -0
  302. package/dist/lib/esm/obsidian/components/setting-components/week-component.mjs +3 -1
  303. package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.mjs +3 -1
  304. package/dist/lib/esm/obsidian/constructors/index.mjs +3 -1
  305. package/dist/lib/esm/obsidian/dataview-link.mjs +3 -1
  306. package/dist/lib/esm/obsidian/dataview.mjs +4 -2
  307. package/dist/lib/esm/obsidian/editor.mjs +3 -1
  308. package/dist/lib/esm/obsidian/file-change.mjs +3 -1
  309. package/dist/lib/esm/obsidian/file-manager.mjs +3 -1
  310. package/dist/lib/esm/obsidian/file-system.mjs +3 -1
  311. package/dist/lib/esm/obsidian/frontmatter-link-cache-with-offsets.mjs +3 -1
  312. package/dist/lib/esm/obsidian/frontmatter.mjs +3 -1
  313. package/dist/lib/esm/obsidian/i18n/custom-type-options.d.mts +37 -0
  314. package/dist/lib/esm/obsidian/i18n/custom-type-options.mjs +25 -0
  315. package/dist/lib/esm/obsidian/i18n/default-translations.d.mts +14 -0
  316. package/dist/lib/esm/obsidian/i18n/default-translations.mjs +25 -0
  317. package/dist/lib/esm/obsidian/i18n/i18n.d.mts +2 -13
  318. package/dist/lib/esm/obsidian/i18n/i18n.mjs +3 -1
  319. package/dist/lib/esm/obsidian/i18n/index.d.mts +2 -2
  320. package/dist/lib/esm/obsidian/i18n/index.mjs +7 -5
  321. package/dist/lib/esm/obsidian/i18n/locales/en.mjs +3 -1
  322. package/dist/lib/esm/obsidian/i18n/locales/index.mjs +3 -1
  323. package/dist/lib/esm/obsidian/i18n/locales/translations-map.d.mts +1 -2
  324. package/dist/lib/esm/obsidian/i18n/locales/translations-map.mjs +3 -1
  325. package/dist/lib/esm/obsidian/index.d.mts +1 -1
  326. package/dist/lib/esm/obsidian/index.mjs +5 -3
  327. package/dist/lib/esm/obsidian/is-in-obsidian.mjs +3 -1
  328. package/dist/lib/esm/obsidian/link.mjs +3 -1
  329. package/dist/lib/esm/obsidian/logger.mjs +3 -1
  330. package/dist/lib/esm/obsidian/loop.mjs +3 -1
  331. package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +3 -1
  332. package/dist/lib/esm/obsidian/markdown-view.mjs +3 -1
  333. package/dist/lib/esm/obsidian/markdown.mjs +3 -1
  334. package/dist/lib/esm/obsidian/metadata-cache.mjs +3 -1
  335. package/dist/lib/esm/obsidian/modals/alert.mjs +4 -2
  336. package/dist/lib/esm/obsidian/modals/confirm.mjs +4 -2
  337. package/dist/lib/esm/obsidian/modals/index.d.mts +1 -1
  338. package/dist/lib/esm/obsidian/modals/index.mjs +5 -3
  339. package/dist/lib/esm/obsidian/modals/modal.mjs +54 -0
  340. package/dist/lib/esm/obsidian/modals/prompt.mjs +4 -2
  341. package/dist/lib/esm/obsidian/modals/select-item.mjs +4 -2
  342. package/dist/lib/esm/obsidian/monkey-around.mjs +3 -1
  343. package/dist/lib/esm/obsidian/obsidian-settings.mjs +3 -1
  344. package/dist/lib/esm/obsidian/pdf.mjs +6 -4
  345. package/dist/lib/esm/obsidian/plugin/components/abort-signal-component.d.mts +27 -0
  346. package/dist/lib/esm/obsidian/plugin/components/abort-signal-component.mjs +54 -0
  347. package/dist/lib/esm/obsidian/plugin/components/async-error-handler-component.d.mts +29 -0
  348. package/dist/lib/esm/obsidian/plugin/components/async-error-handler-component.mjs +57 -0
  349. package/dist/lib/esm/obsidian/plugin/components/console-debug-component.d.mts +29 -0
  350. package/dist/lib/esm/obsidian/plugin/components/console-debug-component.mjs +52 -0
  351. package/dist/lib/esm/obsidian/plugin/components/i18n-component.d.mts +23 -0
  352. package/dist/lib/esm/obsidian/plugin/components/i18n-component.mjs +48 -0
  353. package/dist/lib/esm/obsidian/plugin/components/index.d.mts +9 -0
  354. package/dist/lib/esm/obsidian/plugin/components/index.mjs +44 -0
  355. package/dist/lib/esm/obsidian/plugin/components/lifecycle-events-component.d.mts +59 -0
  356. package/dist/lib/esm/obsidian/plugin/components/lifecycle-events-component.mjs +102 -0
  357. package/dist/lib/esm/obsidian/plugin/components/plugin-context-component.d.mts +25 -0
  358. package/dist/lib/esm/obsidian/plugin/components/plugin-context-component.mjs +57 -0
  359. package/dist/lib/esm/obsidian/plugin/components/plugin-notice-component.d.mts +25 -0
  360. package/dist/lib/esm/obsidian/plugin/components/plugin-notice-component.mjs +56 -0
  361. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.d.mts +296 -0
  362. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.mjs +463 -0
  363. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-tab-component.d.mts +28 -0
  364. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-tab-component.mjs +58 -0
  365. package/dist/lib/esm/obsidian/plugin/index.d.mts +2 -5
  366. package/dist/lib/esm/obsidian/plugin/index.mjs +7 -11
  367. package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +3 -1
  368. package/dist/lib/esm/obsidian/plugin/path-settings.mjs +3 -1
  369. package/dist/lib/esm/obsidian/plugin/plugin-context.d.mts +3 -2
  370. package/dist/lib/esm/obsidian/plugin/plugin-context.mjs +14 -5
  371. package/dist/lib/esm/obsidian/plugin/plugin-id.mjs +3 -1
  372. package/dist/lib/esm/obsidian/plugin/{plugin-settings-tab-base.d.mts → plugin-settings-tab.d.mts} +28 -11
  373. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +309 -0
  374. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +106 -5
  375. package/dist/lib/esm/obsidian/plugin/plugin.mjs +140 -2
  376. package/dist/lib/esm/obsidian/queue.mjs +3 -1
  377. package/dist/lib/esm/obsidian/react/app-context.mjs +3 -1
  378. package/dist/lib/esm/obsidian/react/index.mjs +3 -1
  379. package/dist/lib/esm/obsidian/reference.mjs +3 -1
  380. package/dist/lib/esm/obsidian/rename-delete-handler.mjs +3 -1
  381. package/dist/lib/esm/obsidian/resource-url.mjs +3 -1
  382. package/dist/lib/esm/obsidian/setting-ex.mjs +3 -1
  383. package/dist/lib/esm/obsidian/setting-group-ex.mjs +3 -1
  384. package/dist/lib/esm/obsidian/validation.mjs +3 -1
  385. package/dist/lib/esm/obsidian/vault-delete.mjs +3 -1
  386. package/dist/lib/esm/obsidian/vault.mjs +3 -1
  387. package/dist/lib/esm/obsidian/workspace.mjs +3 -1
  388. package/dist/lib/esm/path.mjs +3 -1
  389. package/dist/lib/esm/reg-exp.mjs +3 -1
  390. package/dist/lib/esm/script-utils/build.mjs +3 -1
  391. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +3 -1
  392. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +3 -1
  393. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.mjs +3 -1
  394. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +3 -1
  395. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +3 -1
  396. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +3 -1
  397. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/index.mjs +3 -1
  398. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +3 -1
  399. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +5 -3
  400. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/rename-css-plugin.mjs +3 -1
  401. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.mjs +3 -1
  402. package/dist/lib/esm/script-utils/bundlers/esbuild.mjs +3 -1
  403. package/dist/lib/esm/script-utils/bundlers/index.mjs +3 -1
  404. package/dist/lib/esm/script-utils/cli-utils.mjs +3 -1
  405. package/dist/lib/esm/script-utils/code-generator.mjs +3 -1
  406. package/dist/lib/esm/script-utils/commitlint-config.mjs +3 -1
  407. package/dist/lib/esm/script-utils/exec.mjs +3 -1
  408. package/dist/lib/esm/script-utils/formatters/dprint.mjs +3 -1
  409. package/dist/lib/esm/script-utils/formatters/index.mjs +3 -1
  410. package/dist/lib/esm/script-utils/fs.mjs +3 -1
  411. package/dist/lib/esm/script-utils/index.mjs +3 -1
  412. package/dist/lib/esm/script-utils/json.mjs +3 -1
  413. package/dist/lib/esm/script-utils/linters/cspell.mjs +3 -1
  414. package/dist/lib/esm/script-utils/linters/eslint-config.mjs +5 -11
  415. package/dist/lib/esm/script-utils/linters/eslint-rules/index.mjs +3 -1
  416. package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +3 -1
  417. package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.mjs +3 -1
  418. package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +3 -1
  419. package/dist/lib/esm/script-utils/linters/eslint-rules/rule-tester-helper.mjs +3 -1
  420. package/dist/lib/esm/script-utils/linters/eslint.mjs +3 -1
  421. package/dist/lib/esm/script-utils/linters/index.mjs +3 -1
  422. package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.mjs +3 -1
  423. package/dist/lib/esm/script-utils/linters/markdownlint.mjs +6 -2
  424. package/dist/lib/esm/script-utils/nano-staged-config.mjs +3 -1
  425. package/dist/lib/esm/script-utils/npm-publish.mjs +3 -1
  426. package/dist/lib/esm/script-utils/npm-run.mjs +3 -1
  427. package/dist/lib/esm/script-utils/npm.mjs +3 -1
  428. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +3 -1
  429. package/dist/lib/esm/script-utils/root.mjs +3 -1
  430. package/dist/lib/esm/script-utils/test-runners/index.mjs +3 -1
  431. package/dist/lib/esm/script-utils/test-runners/vitest.mjs +3 -1
  432. package/dist/lib/esm/script-utils/version.mjs +3 -1
  433. package/dist/lib/esm/strict-proxy.mjs +3 -1
  434. package/dist/lib/esm/string.mjs +3 -1
  435. package/dist/lib/esm/transformers/date-transformer.mjs +3 -1
  436. package/dist/lib/esm/transformers/duration-transformer.mjs +3 -1
  437. package/dist/lib/esm/transformers/group-transformer.mjs +3 -1
  438. package/dist/lib/esm/transformers/index.mjs +3 -1
  439. package/dist/lib/esm/transformers/map-transformer.mjs +3 -1
  440. package/dist/lib/esm/transformers/set-transformer.mjs +3 -1
  441. package/dist/lib/esm/transformers/skip-private-property-transformer.mjs +3 -1
  442. package/dist/lib/esm/transformers/transformer.mjs +3 -1
  443. package/dist/lib/esm/transformers/two-way-map-transformer.mjs +3 -1
  444. package/dist/lib/esm/transformers/typed-transformer.mjs +3 -1
  445. package/dist/lib/esm/two-way-map.mjs +3 -1
  446. package/dist/lib/esm/type-guards.mjs +3 -1
  447. package/dist/lib/esm/type.mjs +3 -1
  448. package/dist/lib/esm/url.mjs +3 -1
  449. package/dist/lib/esm/value-provider.mjs +3 -1
  450. package/obsidian/Components/async-component/package.json +6 -0
  451. package/obsidian/Modals/modal/package.json +6 -0
  452. package/obsidian/Plugin/components/abort-signal-component/package.json +6 -0
  453. package/obsidian/Plugin/components/async-error-handler-component/package.json +6 -0
  454. package/obsidian/Plugin/components/console-debug-component/package.json +6 -0
  455. package/obsidian/Plugin/components/i18n-component/package.json +6 -0
  456. package/obsidian/Plugin/components/index/package.json +6 -0
  457. package/obsidian/Plugin/components/lifecycle-events-component/package.json +6 -0
  458. package/obsidian/Plugin/components/package.json +6 -0
  459. package/obsidian/Plugin/components/plugin-context-component/package.json +6 -0
  460. package/obsidian/Plugin/components/plugin-notice-component/package.json +6 -0
  461. package/obsidian/Plugin/components/plugin-settings-component/package.json +6 -0
  462. package/obsidian/Plugin/components/plugin-settings-tab-component/package.json +6 -0
  463. package/obsidian/Plugin/{plugin-settings-wrapper → plugin-settings-tab}/package.json +3 -3
  464. package/obsidian/command-handlers/abstract-file-command-handler/package.json +6 -0
  465. package/obsidian/command-handlers/app-active-file-provider/package.json +6 -0
  466. package/obsidian/command-handlers/app-menu-event-registrar/package.json +6 -0
  467. package/obsidian/command-handlers/command-handler/package.json +6 -0
  468. package/obsidian/command-handlers/command-handler-component/package.json +6 -0
  469. package/obsidian/command-handlers/editor-command-handler/package.json +6 -0
  470. package/obsidian/command-handlers/file-command-handler/package.json +6 -0
  471. package/obsidian/command-handlers/folder-command-handler/package.json +6 -0
  472. package/obsidian/command-handlers/global-command-handler/package.json +6 -0
  473. package/obsidian/command-handlers/index/package.json +6 -0
  474. package/obsidian/command-handlers/package.json +6 -0
  475. package/obsidian/i18n/{custom-type-options-base → custom-type-options}/package.json +3 -3
  476. package/obsidian/i18n/{default-translations-base → default-translations}/package.json +3 -3
  477. package/package.json +33 -12
  478. package/dist/lib/cjs/obsidian/commands/abstract-file-command-base.cjs +0 -439
  479. package/dist/lib/cjs/obsidian/commands/abstract-file-command-base.d.cts +0 -264
  480. package/dist/lib/cjs/obsidian/commands/command-base.cjs +0 -253
  481. package/dist/lib/cjs/obsidian/commands/command-base.d.cts +0 -125
  482. package/dist/lib/cjs/obsidian/commands/editor-command-base.cjs +0 -280
  483. package/dist/lib/cjs/obsidian/commands/editor-command-base.d.cts +0 -139
  484. package/dist/lib/cjs/obsidian/commands/file-command-base.cjs +0 -341
  485. package/dist/lib/cjs/obsidian/commands/file-command-base.d.cts +0 -191
  486. package/dist/lib/cjs/obsidian/commands/folder-command-base.cjs +0 -333
  487. package/dist/lib/cjs/obsidian/commands/folder-command-base.d.cts +0 -184
  488. package/dist/lib/cjs/obsidian/commands/index.d.cts +0 -6
  489. package/dist/lib/cjs/obsidian/commands/non-editor-command-base.d.cts +0 -34
  490. package/dist/lib/cjs/obsidian/i18n/custom-type-options-base.d.cts +0 -37
  491. package/dist/lib/cjs/obsidian/i18n/default-translations-base.d.cts +0 -25
  492. package/dist/lib/cjs/obsidian/plugin/plugin-base.cjs +0 -407
  493. package/dist/lib/cjs/obsidian/plugin/plugin-base.d.cts +0 -176
  494. package/dist/lib/cjs/obsidian/plugin/plugin-settings-manager-base.cjs +0 -484
  495. package/dist/lib/cjs/obsidian/plugin/plugin-settings-manager-base.d.cts +0 -186
  496. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab-base.cjs +0 -399
  497. package/dist/lib/cjs/obsidian/plugin/plugin-settings-wrapper.d.cts +0 -25
  498. package/dist/lib/cjs/obsidian/plugin/plugin-types-base.cjs +0 -120
  499. package/dist/lib/cjs/obsidian/plugin/plugin-types-base.d.cts +0 -87
  500. package/dist/lib/esm/obsidian/commands/abstract-file-command-base.d.mts +0 -264
  501. package/dist/lib/esm/obsidian/commands/abstract-file-command-base.mjs +0 -329
  502. package/dist/lib/esm/obsidian/commands/command-base.d.mts +0 -125
  503. package/dist/lib/esm/obsidian/commands/command-base.mjs +0 -146
  504. package/dist/lib/esm/obsidian/commands/editor-command-base.d.mts +0 -139
  505. package/dist/lib/esm/obsidian/commands/editor-command-base.mjs +0 -176
  506. package/dist/lib/esm/obsidian/commands/file-command-base.d.mts +0 -191
  507. package/dist/lib/esm/obsidian/commands/file-command-base.mjs +0 -240
  508. package/dist/lib/esm/obsidian/commands/folder-command-base.d.mts +0 -184
  509. package/dist/lib/esm/obsidian/commands/folder-command-base.mjs +0 -232
  510. package/dist/lib/esm/obsidian/commands/index.d.mts +0 -6
  511. package/dist/lib/esm/obsidian/commands/index.mjs +0 -36
  512. package/dist/lib/esm/obsidian/commands/non-editor-command-base.d.mts +0 -34
  513. package/dist/lib/esm/obsidian/commands/non-editor-command-base.mjs +0 -46
  514. package/dist/lib/esm/obsidian/i18n/custom-type-options-base.d.mts +0 -37
  515. package/dist/lib/esm/obsidian/i18n/custom-type-options-base.mjs +0 -23
  516. package/dist/lib/esm/obsidian/i18n/default-translations-base.d.mts +0 -25
  517. package/dist/lib/esm/obsidian/i18n/default-translations-base.mjs +0 -23
  518. package/dist/lib/esm/obsidian/modals/modal-base.mjs +0 -52
  519. package/dist/lib/esm/obsidian/plugin/plugin-base.d.mts +0 -176
  520. package/dist/lib/esm/obsidian/plugin/plugin-base.mjs +0 -317
  521. package/dist/lib/esm/obsidian/plugin/plugin-settings-manager-base.d.mts +0 -186
  522. package/dist/lib/esm/obsidian/plugin/plugin-settings-manager-base.mjs +0 -385
  523. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab-base.mjs +0 -302
  524. package/dist/lib/esm/obsidian/plugin/plugin-settings-wrapper.d.mts +0 -25
  525. package/dist/lib/esm/obsidian/plugin/plugin-settings-wrapper.mjs +0 -22
  526. package/dist/lib/esm/obsidian/plugin/plugin-types-base.d.mts +0 -87
  527. package/dist/lib/esm/obsidian/plugin/plugin-types-base.mjs +0 -22
  528. package/obsidian/Commands/abstract-file-command-base/package.json +0 -6
  529. package/obsidian/Commands/command-base/package.json +0 -6
  530. package/obsidian/Commands/editor-command-base/package.json +0 -6
  531. package/obsidian/Commands/file-command-base/package.json +0 -6
  532. package/obsidian/Commands/folder-command-base/package.json +0 -6
  533. package/obsidian/Commands/index/package.json +0 -6
  534. package/obsidian/Commands/non-editor-command-base/package.json +0 -6
  535. package/obsidian/Commands/package.json +0 -6
  536. package/obsidian/Modals/modal-base/package.json +0 -6
  537. package/obsidian/Plugin/plugin-base/package.json +0 -6
  538. package/obsidian/Plugin/plugin-settings-manager-base/package.json +0 -6
  539. package/obsidian/Plugin/plugin-settings-tab-base/package.json +0 -6
  540. package/obsidian/Plugin/plugin-types-base/package.json +0 -6
  541. /package/dist/lib/cjs/obsidian/modals/{modal-base.d.cts → modal.d.cts} +0 -0
  542. /package/dist/lib/esm/obsidian/modals/{modal-base.d.mts → modal.d.mts} +0 -0
@@ -4,6 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
8
  const globalThisRecord = globalThis;
8
9
  globalThisRecord['__name'] ??= name;
9
10
  const originalRequire = require;
@@ -83,10 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
83
84
  return originalRequire?.(id);
84
85
  }
85
86
 
86
- // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
87
- if (globalThis?.app?.isMobile) {
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
88
+ if (globalThis.app.isMobile) {
88
89
  if (id === 'process' || id === 'node:process') {
90
+ // eslint-disable-next-line no-console -- Valid usage.
89
91
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
90
93
  return globalThis.process;
91
94
  }
92
95
  } else {
@@ -96,6 +99,7 @@ if you want to view the source, please visit the github repository of this plugi
96
99
  }
97
100
  }
98
101
 
102
+ // eslint-disable-next-line no-console -- Valid usage.
99
103
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
100
104
  return {};
101
105
  }
@@ -155,4 +159,4 @@ function buildProjectFlags(projects) {
155
159
  testCoverage,
156
160
  testWatch
157
161
  });
158
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy90ZXN0LXJ1bm5lcnMvdml0ZXN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBydW5uaW5nIHRlc3RzIHVzaW5nIHRoZSBWaXRlc3QgZnJhbWV3b3JrLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBFeGVjdXRlcyB2aXRlc3QgYXMgYSBDTEkgc3VicHJvY2VzczsgY29ycmVjdG5lc3MgaXMgdmVyaWZpZWQgYnkgcnVubmluZyB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB7IGV4ZWNGcm9tUm9vdCB9IGZyb20gJy4uL3Jvb3QudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHJ1bm5pbmcgdGVzdHMgd2l0aCBjb3ZlcmFnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0Q292ZXJhZ2VQYXJhbXMgZXh0ZW5kcyBUZXN0UGFyYW1zIHtcbiAgLyoqXG4gICAqIE1pbmltdW0gY292ZXJhZ2UgcGVyY2VudGFnZSByZXF1aXJlZC4gSWYgdGhlIGFjdHVhbCBjb3ZlcmFnZSBmYWxscyBiZWxvd1xuICAgKiB0aGlzIHRocmVzaG9sZCwgdGhlIHByb2Nlc3MgZXhpdHMgd2l0aCBhIG5vbi16ZXJvIGNvZGUuXG4gICAqL1xuICBtaW5Db3ZlcmFnZUluUGVyY2VudHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgcnVubmluZyB0ZXN0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwcm9qZWN0cyB0byBydW4uXG4gICAqL1xuICBwcm9qZWN0cz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIHRlc3Qgc3VpdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgdGVzdC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGVzdHMgaGF2ZSBjb21wbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0KHBhcmFtczogVGVzdFBhcmFtcyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbJ3ZpdGVzdCcsICdydW4nLCAuLi5idWlsZFByb2plY3RGbGFncyhwYXJhbXMucHJvamVjdHMpXSk7XG59XG5cbi8qKlxuICogUnVucyB0aGUgdGVzdCBzdWl0ZSB3aXRoIGNvdmVyYWdlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBPcHRpb25hbCBjb3ZlcmFnZSBjb25maWd1cmF0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0ZXN0cyBoYXZlIGNvbXBsZXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RDb3ZlcmFnZShwYXJhbXM6IFRlc3RDb3ZlcmFnZVBhcmFtcyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHRocmVzaG9sZCA9IFN0cmluZyhwYXJhbXMubWluQ292ZXJhZ2VJblBlcmNlbnRzID8/IDApO1xuICBhd2FpdCBleGVjRnJvbVJvb3QoW1xuICAgICd2aXRlc3QnLFxuICAgICdydW4nLFxuICAgIC4uLmJ1aWxkUHJvamVjdEZsYWdzKHBhcmFtcy5wcm9qZWN0cyksXG4gICAgJy0tY292ZXJhZ2UnLFxuICAgIGAtLWNvdmVyYWdlLnRocmVzaG9sZHMubGluZXM9JHt0aHJlc2hvbGR9YCxcbiAgICBgLS1jb3ZlcmFnZS50aHJlc2hvbGRzLmZ1bmN0aW9ucz0ke3RocmVzaG9sZH1gLFxuICAgIGAtLWNvdmVyYWdlLnRocmVzaG9sZHMuYnJhbmNoZXM9JHt0aHJlc2hvbGR9YCxcbiAgICBgLS1jb3ZlcmFnZS50aHJlc2hvbGRzLnN0YXRlbWVudHM9JHt0aHJlc2hvbGR9YFxuICBdKTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSB0ZXN0IHN1aXRlIGluIHdhdGNoIG1vZGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgdGVzdC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGVzdHMgaGF2ZSBjb21wbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0V2F0Y2gocGFyYW1zOiBUZXN0UGFyYW1zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsndml0ZXN0JywgLi4uYnVpbGRQcm9qZWN0RmxhZ3MocGFyYW1zLnByb2plY3RzKV0pO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBgLS1wcm9qZWN0YCBmbGFncyBmb3IgdGhlIGdpdmVuIHByb2plY3QgcHJlZml4ZXMuXG4gKiBFYWNoIHByZWZpeCBleHBhbmRzIHRvIGJvdGggYC0tcHJvamVjdD1wcmVmaXhgIChleGFjdCBtYXRjaClcbiAqIGFuZCBgLS1wcm9qZWN0PXByZWZpeDoqYCAoc3ViLXByb2plY3RzKS5cbiAqXG4gKiBAcGFyYW0gcHJvamVjdHMgLSBUaGUgcHJvamVjdCBuYW1lIHByZWZpeGVzLlxuICogQHJldHVybnMgVGhlIGAtLXByb2plY3RgIGZsYWdzIGFycmF5LlxuICovXG5mdW5jdGlvbiBidWlsZFByb2plY3RGbGFncyhwcm9qZWN0cz86IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICByZXR1cm4gKHByb2plY3RzID8/IFtdKS5mbGF0TWFwKChwcm9qZWN0KSA9PiBbYC0tcHJvamVjdD0ke3Byb2plY3R9YCwgYC0tcHJvamVjdD0ke3Byb2plY3R9OipgXSk7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxrQkFBNkI7QUE2QjdCLGVBQXNCLEtBQUssU0FBcUIsQ0FBQyxHQUFrQjtBQUNqRSxZQUFNLDBCQUFhLENBQUMsVUFBVSxPQUFPLEdBQUcsa0JBQWtCLE9BQU8sUUFBUSxDQUFDLENBQUM7QUFDN0U7QUFRQSxlQUFzQixhQUFhLFNBQTZCLENBQUMsR0FBa0I7QUFDakYsUUFBTSxZQUFZLE9BQU8sT0FBTyx5QkFBeUIsQ0FBQztBQUMxRCxZQUFNLDBCQUFhO0FBQUEsSUFDakI7QUFBQSxJQUNBO0FBQUEsSUFDQSxHQUFHLGtCQUFrQixPQUFPLFFBQVE7QUFBQSxJQUNwQztBQUFBLElBQ0EsK0JBQStCLFNBQVM7QUFBQSxJQUN4QyxtQ0FBbUMsU0FBUztBQUFBLElBQzVDLGtDQUFrQyxTQUFTO0FBQUEsSUFDM0Msb0NBQW9DLFNBQVM7QUFBQSxFQUMvQyxDQUFDO0FBQ0g7QUFRQSxlQUFzQixVQUFVLFNBQXFCLENBQUMsR0FBa0I7QUFDdEUsWUFBTSwwQkFBYSxDQUFDLFVBQVUsR0FBRyxrQkFBa0IsT0FBTyxRQUFRLENBQUMsQ0FBQztBQUN0RTtBQVVBLFNBQVMsa0JBQWtCLFVBQStCO0FBQ3hELFVBQVEsWUFBWSxDQUFDLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxhQUFhLE9BQU8sSUFBSSxhQUFhLE9BQU8sSUFBSSxDQUFDO0FBQ2pHOyIsCiAgIm5hbWVzIjogW10KfQo=
162
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy90ZXN0LXJ1bm5lcnMvdml0ZXN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBydW5uaW5nIHRlc3RzIHVzaW5nIHRoZSBWaXRlc3QgZnJhbWV3b3JrLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBFeGVjdXRlcyB2aXRlc3QgYXMgYSBDTEkgc3VicHJvY2VzczsgY29ycmVjdG5lc3MgaXMgdmVyaWZpZWQgYnkgcnVubmluZyB0ZXN0cywgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB7IGV4ZWNGcm9tUm9vdCB9IGZyb20gJy4uL3Jvb3QudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHJ1bm5pbmcgdGVzdHMgd2l0aCBjb3ZlcmFnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0Q292ZXJhZ2VQYXJhbXMgZXh0ZW5kcyBUZXN0UGFyYW1zIHtcbiAgLyoqXG4gICAqIE1pbmltdW0gY292ZXJhZ2UgcGVyY2VudGFnZSByZXF1aXJlZC4gSWYgdGhlIGFjdHVhbCBjb3ZlcmFnZSBmYWxscyBiZWxvd1xuICAgKiB0aGlzIHRocmVzaG9sZCwgdGhlIHByb2Nlc3MgZXhpdHMgd2l0aCBhIG5vbi16ZXJvIGNvZGUuXG4gICAqL1xuICBtaW5Db3ZlcmFnZUluUGVyY2VudHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgcnVubmluZyB0ZXN0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwcm9qZWN0cyB0byBydW4uXG4gICAqL1xuICBwcm9qZWN0cz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIHRlc3Qgc3VpdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgdGVzdC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGVzdHMgaGF2ZSBjb21wbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0KHBhcmFtczogVGVzdFBhcmFtcyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbJ3ZpdGVzdCcsICdydW4nLCAuLi5idWlsZFByb2plY3RGbGFncyhwYXJhbXMucHJvamVjdHMpXSk7XG59XG5cbi8qKlxuICogUnVucyB0aGUgdGVzdCBzdWl0ZSB3aXRoIGNvdmVyYWdlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBPcHRpb25hbCBjb3ZlcmFnZSBjb25maWd1cmF0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0ZXN0cyBoYXZlIGNvbXBsZXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RDb3ZlcmFnZShwYXJhbXM6IFRlc3RDb3ZlcmFnZVBhcmFtcyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHRocmVzaG9sZCA9IFN0cmluZyhwYXJhbXMubWluQ292ZXJhZ2VJblBlcmNlbnRzID8/IDApO1xuICBhd2FpdCBleGVjRnJvbVJvb3QoW1xuICAgICd2aXRlc3QnLFxuICAgICdydW4nLFxuICAgIC4uLmJ1aWxkUHJvamVjdEZsYWdzKHBhcmFtcy5wcm9qZWN0cyksXG4gICAgJy0tY292ZXJhZ2UnLFxuICAgIGAtLWNvdmVyYWdlLnRocmVzaG9sZHMubGluZXM9JHt0aHJlc2hvbGR9YCxcbiAgICBgLS1jb3ZlcmFnZS50aHJlc2hvbGRzLmZ1bmN0aW9ucz0ke3RocmVzaG9sZH1gLFxuICAgIGAtLWNvdmVyYWdlLnRocmVzaG9sZHMuYnJhbmNoZXM9JHt0aHJlc2hvbGR9YCxcbiAgICBgLS1jb3ZlcmFnZS50aHJlc2hvbGRzLnN0YXRlbWVudHM9JHt0aHJlc2hvbGR9YFxuICBdKTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSB0ZXN0IHN1aXRlIGluIHdhdGNoIG1vZGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgdGVzdC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGVzdHMgaGF2ZSBjb21wbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0V2F0Y2gocGFyYW1zOiBUZXN0UGFyYW1zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsndml0ZXN0JywgLi4uYnVpbGRQcm9qZWN0RmxhZ3MocGFyYW1zLnByb2plY3RzKV0pO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBgLS1wcm9qZWN0YCBmbGFncyBmb3IgdGhlIGdpdmVuIHByb2plY3QgcHJlZml4ZXMuXG4gKiBFYWNoIHByZWZpeCBleHBhbmRzIHRvIGJvdGggYC0tcHJvamVjdD1wcmVmaXhgIChleGFjdCBtYXRjaClcbiAqIGFuZCBgLS1wcm9qZWN0PXByZWZpeDoqYCAoc3ViLXByb2plY3RzKS5cbiAqXG4gKiBAcGFyYW0gcHJvamVjdHMgLSBUaGUgcHJvamVjdCBuYW1lIHByZWZpeGVzLlxuICogQHJldHVybnMgVGhlIGAtLXByb2plY3RgIGZsYWdzIGFycmF5LlxuICovXG5mdW5jdGlvbiBidWlsZFByb2plY3RGbGFncyhwcm9qZWN0cz86IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICByZXR1cm4gKHByb2plY3RzID8/IFtdKS5mbGF0TWFwKChwcm9qZWN0KSA9PiBbYC0tcHJvamVjdD0ke3Byb2plY3R9YCwgYC0tcHJvamVjdD0ke3Byb2plY3R9OipgXSk7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEsa0JBQTZCO0FBNkI3QixlQUFzQixLQUFLLFNBQXFCLENBQUMsR0FBa0I7QUFDakUsWUFBTSwwQkFBYSxDQUFDLFVBQVUsT0FBTyxHQUFHLGtCQUFrQixPQUFPLFFBQVEsQ0FBQyxDQUFDO0FBQzdFO0FBUUEsZUFBc0IsYUFBYSxTQUE2QixDQUFDLEdBQWtCO0FBQ2pGLFFBQU0sWUFBWSxPQUFPLE9BQU8seUJBQXlCLENBQUM7QUFDMUQsWUFBTSwwQkFBYTtBQUFBLElBQ2pCO0FBQUEsSUFDQTtBQUFBLElBQ0EsR0FBRyxrQkFBa0IsT0FBTyxRQUFRO0FBQUEsSUFDcEM7QUFBQSxJQUNBLCtCQUErQixTQUFTO0FBQUEsSUFDeEMsbUNBQW1DLFNBQVM7QUFBQSxJQUM1QyxrQ0FBa0MsU0FBUztBQUFBLElBQzNDLG9DQUFvQyxTQUFTO0FBQUEsRUFDL0MsQ0FBQztBQUNIO0FBUUEsZUFBc0IsVUFBVSxTQUFxQixDQUFDLEdBQWtCO0FBQ3RFLFlBQU0sMEJBQWEsQ0FBQyxVQUFVLEdBQUcsa0JBQWtCLE9BQU8sUUFBUSxDQUFDLENBQUM7QUFDdEU7QUFVQSxTQUFTLGtCQUFrQixVQUErQjtBQUN4RCxVQUFRLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsYUFBYSxPQUFPLElBQUksYUFBYSxPQUFPLElBQUksQ0FBQztBQUNqRzsiLAogICJuYW1lcyI6IFtdCn0K
@@ -4,6 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
8
  const globalThisRecord = globalThis;
8
9
  globalThisRecord['__name'] ??= name;
9
10
  const originalRequire = require;
@@ -83,10 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
83
84
  return originalRequire?.(id);
84
85
  }
85
86
 
86
- // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
87
- if (globalThis?.app?.isMobile) {
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
88
+ if (globalThis.app.isMobile) {
88
89
  if (id === 'process' || id === 'node:process') {
90
+ // eslint-disable-next-line no-console -- Valid usage.
89
91
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
90
93
  return globalThis.process;
91
94
  }
92
95
  } else {
@@ -96,6 +99,7 @@ if you want to view the source, please visit the github repository of this plugi
96
99
  }
97
100
  }
98
101
 
102
+ // eslint-disable-next-line no-console -- Valid usage.
99
103
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
100
104
  return {};
101
105
  }
@@ -467,4 +471,4 @@ async function updateVersionInFilesForPlugin(newVersion) {
467
471
  updateVersionInFiles,
468
472
  validate
469
473
  });
470
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy92ZXJzaW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyB2ZXJzaW9uIHVwZGF0ZXMgaW4gYSBwcm9qZWN0LlxuICogSXQgaW5jbHVkZXMgdGFza3Mgc3VjaCBhcyB2YWxpZGF0aW5nIHZlcnNpb24gdXBkYXRlIHR5cGVzLCBjaGVja2luZyB0aGUgc3RhdGVcbiAqIG9mIEdpdCBhbmQgR2l0SHViIENMSSwgdXBkYXRpbmcgdmVyc2lvbiBudW1iZXJzIGluIGZpbGVzLCBhbmQgcGVyZm9ybWluZ1xuICogR2l0IG9wZXJhdGlvbnMgc3VjaCBhcyB0YWdnaW5nIGFuZCBwdXNoaW5nLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUmVsZWFzZVR5cGUgfSBmcm9tICdzZW12ZXInO1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBjcCxcbiAgcmVhZEZpbGUsXG4gIHJtLFxuICB3cml0ZUZpbGVcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBjcmVhdGVJbnRlcmZhY2UgfSBmcm9tICdub2RlOnJlYWRsaW5lL3Byb21pc2VzJztcbmltcG9ydCB7XG4gIGluYyxcbiAgcHJlcmVsZWFzZVxufSBmcm9tICdzZW12ZXInO1xuXG5pbXBvcnQgdHlwZSB7IFBhY2thZ2VMb2NrSnNvbiB9IGZyb20gJy4vbnBtLnRzJztcblxuaW1wb3J0IHsgZ2V0TGliRGVidWdnZXIgfSBmcm9tICcuLi9kZWJ1Zy50cyc7XG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4uL29ic2lkaWFuL3BsdWdpbi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnLi4vcGF0aC50cyc7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnLi4vc3RyaW5nLnRzJztcbmltcG9ydCB7XG4gIGFzc2VydE5vbk51bGxhYmxlLFxuICBlbnN1cmVOb25OdWxsYWJsZVxufSBmcm9tICcuLi90eXBlLWd1YXJkcy50cyc7XG5pbXBvcnQgeyByZWFkZGlyUG9zaXggfSBmcm9tICcuL2ZzLnRzJztcbmltcG9ydCB7IGVkaXRKc29uIH0gZnJvbSAnLi9qc29uLnRzJztcbmltcG9ydCB7XG4gIG5wbVJ1bixcbiAgbnBtUnVuT3B0aW9uYWxcbn0gZnJvbSAnLi9ucG0tcnVuLnRzJztcbmltcG9ydCB7XG4gIGVkaXROcG1TaHJpbmtXcmFwSnNvbixcbiAgZWRpdFBhY2thZ2VKc29uLFxuICBlZGl0UGFja2FnZUxvY2tKc29uLFxuICByZWFkUGFja2FnZUpzb25cbn0gZnJvbSAnLi9ucG0udHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocyB9IGZyb20gJy4vb2JzaWRpYW4tZGV2LXV0aWxzLXJlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuL3Jvb3QudHMnO1xuXG5pbnRlcmZhY2UgTnBtUGFja1Jlc3VsdCB7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgcHJlLXJlbGVhc2UgaWRlbnRpZmllciB1c2VkIGZvciBwcmUtcmVsZWFzZSB2ZXJzaW9ucy5cbiAqL1xuY29uc3QgREVGQVVMVF9QUkVJRCA9ICdiZXRhJztcblxuLyoqXG4gKiBFbnVtIHJlcHJlc2VudGluZyBkaWZmZXJlbnQgdHlwZXMgb2YgdmVyc2lvbiB1cGRhdGVzLlxuICpcbiAqIEFsaWducyB3aXRoIG5wbSdzIGBucG0gdmVyc2lvbmAgaW5jcmVtZW50IHR5cGVzIHBsdXMgYE1hbnVhbGAgZm9yIGV4cGxpY2l0IHZlcnNpb25zLlxuICovXG5leHBvcnQgZW51bSBWZXJzaW9uVXBkYXRlVHlwZSB7XG4gIEludmFsaWQgPSAnaW52YWxpZCcsXG4gIE1ham9yID0gJ21ham9yJyxcbiAgTWFudWFsID0gJ21hbnVhbCcsXG4gIE1pbm9yID0gJ21pbm9yJyxcbiAgUGF0Y2ggPSAncGF0Y2gnLFxuICBQcmVNYWpvciA9ICdwcmVtYWpvcicsXG4gIFByZU1pbm9yID0gJ3ByZW1pbm9yJyxcbiAgUHJlUGF0Y2ggPSAncHJlcGF0Y2gnLFxuICBQcmVSZWxlYXNlID0gJ3ByZXJlbGVhc2UnXG59XG5cbi8qKlxuICogVHlwZSByZXByZXNlbnRpbmcgdGhlIG1hbmlmZXN0IGZpbGUgZm9ybWF0IGZvciBPYnNpZGlhbiBwbHVnaW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIEEgbWluaW11bSBPYnNpZGlhbiB2ZXJzaW9uIHJlcXVpcmVkIGZvciB0aGUgcGx1Z2luLlxuICAgKi9cbiAgbWluQXBwVmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHZlcnNpb24gb2YgdGhlIHBsdWdpbi5cbiAgICovXG4gIHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyB0aGUgc3RydWN0dXJlIG9mIE9ic2lkaWFuIHJlbGVhc2VzIEpTT04uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5SZWxlYXNlc0pzb24ge1xuICAvKipcbiAgICogQSBuYW1lIG9mIHRoZSBPYnNpZGlhbiByZWxlYXNlLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBHaXQgdGFnIGZvciB0aGUgbmV3IHZlcnNpb24uXG4gKlxuICogQHBhcmFtIG5ld1ZlcnNpb24gLSBUaGUgbmV3IHZlcnNpb24gbnVtYmVyIHRvIHVzZSBmb3IgdGhlIHRhZy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGFnIGhhcyBiZWVuIGNyZWF0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRHaXRUYWcobmV3VmVyc2lvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChgZ2l0IHRhZyAtYSAke25ld1ZlcnNpb259IC1tICR7bmV3VmVyc2lvbn0gLS1mb3JjZWAsIHsgaXNRdWlldDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBBZGRzIHVwZGF0ZWQgZmlsZXMgdG8gdGhlIEdpdCBzdGFnaW5nIGFyZWEgYW5kIGNvbW1pdHMgdGhlbSB3aXRoIHRoZSBuZXcgdmVyc2lvbiBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSBuZXdWZXJzaW9uIC0gVGhlIG5ldyB2ZXJzaW9uIG51bWJlciB1c2VkIGFzIHRoZSBjb21taXQgbWVzc2FnZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZmlsZXMgaGF2ZSBiZWVuIGFkZGVkIGFuZCBjb21taXR0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRVcGRhdGVkRmlsZXNUb0dpdChuZXdWZXJzaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsnZ2l0JywgJ2FkZCcsICctLWFsbCddLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbJ2dpdCcsICdjb21taXQnLCAnLW0nLCBgY2hvcmU6IHJlbGVhc2UgJHtuZXdWZXJzaW9ufWAsICctLWFsbG93LWVtcHR5J10sIHsgaXNRdWlldDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIEdpdEh1YiBDTEkgaXMgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uXG4gKlxuICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBHaXRIdWIgQ0xJIGlzIG5vdCBpbnN0YWxsZWQuXG4gKlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgR2l0SHViIENMSSBpcyBub3QgaW5zdGFsbGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tHaXRIdWJDbGlJbnN0YWxsZWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY0Zyb21Sb290KCdnaCAtLXZlcnNpb24nLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcignR2l0SHViIENMSSBpcyBub3QgaW5zdGFsbGVkLiBQbGVhc2UgaW5zdGFsbCBpdCBmcm9tIGh0dHBzOi8vY2xpLmdpdGh1Yi5jb20vJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgR2l0IGlzIGluc3RhbGxlZCBvbiB0aGUgc3lzdGVtLlxuICpcbiAqIFRocm93cyBhbiBlcnJvciBpZiBHaXQgaXMgbm90IGluc3RhbGxlZC5cbiAqXG4gKiBAdGhyb3dzIEVycm9yIGlmIEdpdCBpcyBub3QgaW5zdGFsbGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tHaXRJbnN0YWxsZWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY0Zyb21Sb290KCdnaXQgLS12ZXJzaW9uJywgeyBpc1F1aWV0OiB0cnVlIH0pO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0dpdCBpcyBub3QgaW5zdGFsbGVkLiBQbGVhc2UgaW5zdGFsbCBpdCBmcm9tIGh0dHBzOi8vZ2l0LXNjbS5jb20vJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIEdpdCByZXBvc2l0b3J5IGlzIGNsZWFuLCBtZWFuaW5nIHRoZXJlIGFyZSBubyB1bmNvbW1pdHRlZCBjaGFuZ2VzLlxuICpcbiAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgR2l0IHJlcG9zaXRvcnkgaXMgbm90IGNsZWFuLlxuICpcbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEdpdCByZXBvc2l0b3J5IGlzIG5vdCBjbGVhbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrR2l0UmVwb0NsZWFuKCk6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGNvbnN0IHN0ZG91dCA9IGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiAtLXVudHJhY2tlZC1maWxlcz1hbGwnLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gICAgaWYgKHN0ZG91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0dpdCByZXBvc2l0b3J5IGlzIG5vdCBjbGVhbi4gUGxlYXNlIGNvbW1pdCBvciBzdGFzaCB5b3VyIGNoYW5nZXMgYmVmb3JlIHJlbGVhc2luZyBhIG5ldyB2ZXJzaW9uLicpO1xuICB9XG59XG5cbi8qKlxuICogQ29waWVzIHRoZSB1cGRhdGVkIG1hbmlmZXN0IGZpbGUgdG8gdGhlIGRpc3RyaWJ1dGlvbiBidWlsZCBmb2xkZXIuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb3B5IG9wZXJhdGlvbiBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvcHlVcGRhdGVkTWFuaWZlc3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGNwKFxuICAgIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiksXG4gICAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbikpLFxuICAgIHsgZm9yY2U6IHRydWUgfVxuICApO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIG5ldyB2ZXJzaW9uIHN0cmluZyBiYXNlZCBvbiB0aGUgY3VycmVudCB2ZXJzaW9uIGFuZCB0aGUgc3BlY2lmaWVkIHVwZGF0ZSB0eXBlLlxuICpcbiAqIFVzZXMgdGhlIGBzZW12ZXJgIHBhY2thZ2UgdG8gY29tcHV0ZSB0aGUgbmV4dCB2ZXJzaW9uLCBzdXBwb3J0aW5nIGFsbCBucG0gaW5jcmVtZW50IHR5cGVzOlxuICogYG1ham9yYCwgYG1pbm9yYCwgYHBhdGNoYCwgYHByZW1ham9yYCwgYHByZW1pbm9yYCwgYHByZXBhdGNoYCwgYW5kIGBwcmVyZWxlYXNlYC5cbiAqIFByZS1yZWxlYXNlIHZlcnNpb25zIHVzZSB0aGUgYGJldGFgIGlkZW50aWZpZXIgYnkgZGVmYXVsdCAoZS5nLiwgYDEuMi40LWJldGEuMGApLlxuICpcbiAqIEBwYXJhbSB2ZXJzaW9uVXBkYXRlVHlwZSAtIFRoZSB0eXBlIG9mIHZlcnNpb24gdXBkYXRlIG9yIGFuIGV4cGxpY2l0IHZlcnNpb24gc3RyaW5nLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHZlcnNpb24gc3RyaW5nLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgY3VycmVudCB2ZXJzaW9uIGlzIGludmFsaWQgb3IgdGhlIGluY3JlbWVudCBmYWlscy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE5ld1ZlcnNpb24odmVyc2lvblVwZGF0ZVR5cGU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHZlcnNpb25UeXBlID0gZ2V0VmVyc2lvblVwZGF0ZVR5cGUodmVyc2lvblVwZGF0ZVR5cGUpO1xuICBpZiAodmVyc2lvblR5cGUgPT09IFZlcnNpb25VcGRhdGVUeXBlLk1hbnVhbCkge1xuICAgIHJldHVybiB2ZXJzaW9uVXBkYXRlVHlwZTtcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKc29uKCk7XG4gIGNvbnN0IGN1cnJlbnRWZXJzaW9uID0gcGFja2FnZUpzb24udmVyc2lvbiA/PyAnJztcblxuICBjb25zdCByZWxlYXNlVHlwZSA9IHZlcnNpb25UeXBlIGFzIFJlbGVhc2VUeXBlO1xuICBjb25zdCBpc1ByZVJlbGVhc2VUeXBlID0gcmVsZWFzZVR5cGUuc3RhcnRzV2l0aCgncHJlJyk7XG4gIGNvbnN0IG5ld1ZlcnNpb24gPSBpc1ByZVJlbGVhc2VUeXBlXG4gICAgPyBpbmMoY3VycmVudFZlcnNpb24sIHJlbGVhc2VUeXBlLCBERUZBVUxUX1BSRUlEKVxuICAgIDogaW5jKGN1cnJlbnRWZXJzaW9uLCByZWxlYXNlVHlwZSk7XG4gIGFzc2VydE5vbk51bGxhYmxlKG5ld1ZlcnNpb24sIGBGYWlsZWQgdG8gaW5jcmVtZW50IHZlcnNpb24gZnJvbSAnJHtjdXJyZW50VmVyc2lvbn0nIHdpdGggdHlwZSAnJHt2ZXJzaW9uVHlwZX0nYCk7XG5cbiAgcmV0dXJuIG5ld1ZlcnNpb247XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSByZWxlYXNlIG5vdGVzIGZvciBhIHNwZWNpZmljIHZlcnNpb24gZnJvbSB0aGUgY2hhbmdlbG9nLlxuICpcbiAqIEBwYXJhbSBuZXdWZXJzaW9uIC0gVGhlIG5ldyB2ZXJzaW9uIG51bWJlciBmb3Igd2hpY2ggdG8gZ2V0IHRoZSByZWxlYXNlIG5vdGVzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgcmVsZWFzZSBub3RlcyBmb3IgdGhlIHNwZWNpZmllZCB2ZXJzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UmVsZWFzZU5vdGVzKG5ld1ZlcnNpb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGNoYW5nZWxvZ1BhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5DaGFuZ2Vsb2dNZCk7XG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShjaGFuZ2Vsb2dQYXRoLCAndXRmLTgnKTtcbiAgY29uc3QgbmV3VmVyc2lvbkVzY2FwZWQgPSByZXBsYWNlQWxsKG5ld1ZlcnNpb24sICcuJywgJ1xcXFwuJyk7XG4gIGNvbnN0IG1hdGNoID0gbmV3IFJlZ0V4cChgXFxuIyMgJHtuZXdWZXJzaW9uRXNjYXBlZH1cXG5cXG4oKC58XFxuKSs/KVxcblxcbiMjYCkuZXhlYyhjb250ZW50KTtcbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIHY4IHRyYWNrcyBvcHRpb25hbCBjaGFpbmluZyBhbmQgdGVybmFyeSBhcyBzZXBhcmF0ZSBicmFuY2hlczsgYm90aCBwYXRocyBhcmUgdGVzdGVkLiAqL1xuICBsZXQgcmVsZWFzZU5vdGVzID0gbWF0Y2g/LlsxXSA/IGAke21hdGNoWzFdfVxcblxcbmAgOiAnJztcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICBjb25zdCB0YWdzID0gKGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2l0IHRhZyAtLXNvcnQ9LWNyZWF0b3JkYXRlJywgeyBpc1F1aWV0OiB0cnVlIH0pKS5zcGxpdCgvXFxyP1xcbi8pO1xuICBjb25zdCBwcmV2aW91c1ZlcnNpb24gPSB0YWdzWzFdO1xuICBsZXQgY2hhbmdlc1VybDogc3RyaW5nO1xuXG4gIGNvbnN0IHJlcG9VcmwgPSBhd2FpdCBleGVjRnJvbVJvb3QoJ2doIHJlcG8gdmlldyAtLWpzb24gdXJsIC1xIC51cmwnLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG5cbiAgaWYgKHByZXZpb3VzVmVyc2lvbikge1xuICAgIGNoYW5nZXNVcmwgPSBgJHtyZXBvVXJsfS9jb21wYXJlLyR7cHJldmlvdXNWZXJzaW9ufS4uLiR7bmV3VmVyc2lvbn1gO1xuICB9IGVsc2Uge1xuICAgIGNoYW5nZXNVcmwgPSBgJHtyZXBvVXJsfS9jb21taXRzLyR7bmV3VmVyc2lvbn1gO1xuICB9XG5cbiAgcmVsZWFzZU5vdGVzICs9IGAqKkZ1bGwgQ2hhbmdlbG9nKio6ICR7Y2hhbmdlc1VybH1gO1xuICByZXR1cm4gcmVsZWFzZU5vdGVzO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgdGhlIHR5cGUgb2YgdmVyc2lvbiB1cGRhdGUgYmFzZWQgb24gdGhlIGlucHV0IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvblVwZGF0ZVR5cGUgLSBUaGUgaW5wdXQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmVyc2lvbiB1cGRhdGUgdHlwZS5cbiAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIGBWZXJzaW9uVXBkYXRlVHlwZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzaW9uVXBkYXRlVHlwZSh2ZXJzaW9uVXBkYXRlVHlwZTogc3RyaW5nKTogVmVyc2lvblVwZGF0ZVR5cGUge1xuICBjb25zdCB2ZXJzaW9uVXBkYXRlVHlwZUVudW0gPSB2ZXJzaW9uVXBkYXRlVHlwZSBhcyBWZXJzaW9uVXBkYXRlVHlwZTtcbiAgc3dpdGNoICh2ZXJzaW9uVXBkYXRlVHlwZUVudW0pIHtcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLk1ham9yOlxuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuTWlub3I6XG4gICAgY2FzZSBWZXJzaW9uVXBkYXRlVHlwZS5QYXRjaDpcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLlByZU1ham9yOlxuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuUHJlTWlub3I6XG4gICAgY2FzZSBWZXJzaW9uVXBkYXRlVHlwZS5QcmVQYXRjaDpcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLlByZVJlbGVhc2U6XG4gICAgICByZXR1cm4gdmVyc2lvblVwZGF0ZVR5cGVFbnVtO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGlmICgvXlxcZCtcXC5cXGQrXFwuXFxkKyg/Oi1bXFx3XFxkLi1dKyk/JC8udGVzdCh2ZXJzaW9uVXBkYXRlVHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIFZlcnNpb25VcGRhdGVUeXBlLk1hbnVhbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFZlcnNpb25VcGRhdGVUeXBlLkludmFsaWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQdXNoZXMgY29tbWl0cyBhbmQgdGFncyB0byB0aGUgcmVtb3RlIEdpdCByZXBvc2l0b3J5LlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcHVzaCBvcGVyYXRpb24gaXMgY29tcGxldGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnaXRQdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBleGVjRnJvbVJvb3QoJ2dpdCBwdXNoIC0tZm9sbG93LXRhZ3MgLS1mb3JjZScsIHsgaXNRdWlldDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBQdWJsaXNoZXMgYSBHaXRIdWIgcmVsZWFzZSBmb3IgdGhlIG5ldyB2ZXJzaW9uLlxuICpcbiAqIEhhbmRsZXMgdGhlIGNyZWF0aW9uIG9mIGEgcmVsZWFzZSBhbmQgdXBsb2FkaW5nIGZpbGVzIGZvciBlaXRoZXIgYW4gT2JzaWRpYW4gcGx1Z2luIG9yIGFub3RoZXIgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBudW1iZXIgZm9yIHRoZSByZWxlYXNlLlxuICogQHBhcmFtIGlzT2JzaWRpYW5QbHVnaW4gLSBBIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgcHJvamVjdCBpcyBhbiBPYnNpZGlhbiBwbHVnaW4uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHJlbGVhc2UgaGFzIGJlZW4gcHVibGlzaGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVibGlzaEdpdEh1YlJlbGVhc2UobmV3VmVyc2lvbjogc3RyaW5nLCBpc09ic2lkaWFuUGx1Z2luOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGxldCBmaWxlUGF0aHM6IHN0cmluZ1tdO1xuXG4gIGlmIChpc09ic2lkaWFuUGx1Z2luKSB7XG4gICAgY29uc3QgYnVpbGRGb2xkZXIgPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQpO1xuICAgIGNvbnN0IGZpbGVOYW1lcyA9IGF3YWl0IHJlYWRkaXJQb3NpeChidWlsZEZvbGRlcik7XG4gICAgZmlsZVBhdGhzID0gZmlsZU5hbWVzLm1hcCgoZmlsZU5hbWUpID0+IGpvaW4oYnVpbGRGb2xkZXIsIGZpbGVOYW1lKSk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IHJlc3VsdE91dHB1dCA9IGF3YWl0IGV4ZWNGcm9tUm9vdChbJ25wbScsICdwYWNrJywgJy0tcGFjay1kZXN0aW5hdGlvbicsIE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuRGlzdCwgJy0tanNvbiddLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gICAgY29uc3QgaW5kZXggPSByZXN1bHRPdXRwdXQuaW5kZXhPZignW1xcbiAgeycpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGZpbmQgdGhlIHN0YXJ0IG9mIHRoZSBKU09OIGFycmF5IGluIHRoZSByZXN1bHQgb3V0cHV0Jyk7XG4gICAgfVxuICAgIHJlc3VsdE91dHB1dCA9IHJlc3VsdE91dHB1dC5zbGljZShpbmRleCk7XG4gICAgY29uc3QgcmVzdWx0ID0gSlNPTi5wYXJzZShyZXN1bHRPdXRwdXQpIGFzIFtOcG1QYWNrUmVzdWx0XTtcbiAgICBmaWxlUGF0aHMgPSBbXG4gICAgICBqb2luKE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuRGlzdCwgcmVzdWx0WzBdLmZpbGVuYW1lKSxcbiAgICAgIGpvaW4oT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EaXN0LCBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLlN0eWxlc0NzcylcbiAgICBdO1xuICB9XG5cbiAgZmlsZVBhdGhzID0gZmlsZVBhdGhzLmZpbHRlcigoZmlsZVBhdGgpID0+IGV4aXN0c1N5bmMocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoZmlsZVBhdGgpKSk7XG5cbiAgYXdhaXQgZXhlY0Zyb21Sb290KFtcbiAgICAnZ2gnLFxuICAgICdyZWxlYXNlJyxcbiAgICAnY3JlYXRlJyxcbiAgICBuZXdWZXJzaW9uLFxuICAgIC4uLmZpbGVQYXRocyxcbiAgICAnLS10aXRsZScsXG4gICAgYHYke25ld1ZlcnNpb259YCxcbiAgICAuLi4oaXNQcmVSZWxlYXNlKG5ld1ZlcnNpb24pID8gWyctLXByZXJlbGVhc2UnXSA6IFtdKSxcbiAgICAnLS1ub3Rlcy1maWxlJyxcbiAgICAnLSdcbiAgXSwge1xuICAgIGlzUXVpZXQ6IHRydWUsXG4gICAgc3RkaW46IGF3YWl0IGdldFJlbGVhc2VOb3RlcyhuZXdWZXJzaW9uKVxuICB9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIHRoZSBjaGFuZ2Vsb2cgZmlsZSB3aXRoIG5ldyB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBjb21taXQgbWVzc2FnZXMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgY3VycmVudCBjaGFuZ2Vsb2csIGFwcGVuZHMgbmV3IGVudHJpZXMgZm9yIHRoZSBsYXRlc3QgdmVyc2lvbixcbiAqIGFuZCBwcm9tcHRzIHRoZSB1c2VyIHRvIHJldmlldyB0aGUgY2hhbmdlcy5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBudW1iZXIgdG8gYmUgYWRkZWQgdG8gdGhlIGNoYW5nZWxvZy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY2hhbmdlbG9nIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUNoYW5nZWxvZyhuZXdWZXJzaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgSEVBREVSX0xJTkVTX0NPVU5UID0gMjtcbiAgY29uc3QgY2hhbmdlbG9nUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkNoYW5nZWxvZ01kKTtcbiAgbGV0IHByZXZpb3VzQ2hhbmdlbG9nTGluZXM6IHN0cmluZ1tdO1xuICBpZiAoZXhpc3RzU3luYyhjaGFuZ2Vsb2dQYXRoKSkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShjaGFuZ2Vsb2dQYXRoLCAndXRmLTgnKTtcbiAgICBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJykuc2xpY2UoSEVBREVSX0xJTkVTX0NPVU5UKTtcbiAgICBpZiAocHJldmlvdXNDaGFuZ2Vsb2dMaW5lcy5hdCgtMSkgPT09ICcnKSB7XG4gICAgICBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzLnBvcCgpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzID0gW107XG4gIH1cblxuICBjb25zdCBsYXN0VGFnID0gcmVwbGFjZUFsbChwcmV2aW91c0NoYW5nZWxvZ0xpbmVzWzBdID8/ICcnLCAnIyMgJywgJycpO1xuICBjb25zdCBjb21taXRSYW5nZSA9IGxhc3RUYWcgPyBgJHtsYXN0VGFnfS4uSEVBRGAgOiAnSEVBRCc7XG4gIGNvbnN0IGNvbW1pdE1lc3NhZ2VzU3RyID0gYXdhaXQgZXhlY0Zyb21Sb290KGBnaXQgbG9nICR7Y29tbWl0UmFuZ2V9IC0tZm9ybWF0PSVCIC0tZmlyc3QtcGFyZW50IC16YCwgeyBpc1F1aWV0OiB0cnVlIH0pO1xuICBjb25zdCBjb21taXRNZXNzYWdlcyA9IGNvbW1pdE1lc3NhZ2VzU3RyLnNwbGl0KCdcXDAnKS5maWx0ZXIoQm9vbGVhbikubWFwKHRvU2luZ2xlTGluZSk7XG5cbiAgbGV0IG5ld0NoYW5nZUxvZyA9IGAjIENIQU5HRUxPR1xcblxcbiMjICR7bmV3VmVyc2lvbn1cXG5cXG5gO1xuXG4gIGZvciAoY29uc3QgbWVzc2FnZSBvZiBjb21taXRNZXNzYWdlcykge1xuICAgIG5ld0NoYW5nZUxvZyArPSBgLSAke21lc3NhZ2V9XFxuYDtcbiAgfVxuXG4gIGlmIChwcmV2aW91c0NoYW5nZWxvZ0xpbmVzLmxlbmd0aCA+IDApIHtcbiAgICBuZXdDaGFuZ2VMb2cgKz0gJ1xcbic7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIHByZXZpb3VzQ2hhbmdlbG9nTGluZXMpIHtcbiAgICAgIG5ld0NoYW5nZUxvZyArPSBgJHtsaW5lfVxcbmA7XG4gICAgfVxuICB9XG5cbiAgYXdhaXQgd3JpdGVGaWxlKGNoYW5nZWxvZ1BhdGgsIG5ld0NoYW5nZUxvZywgJ3V0Zi04Jyk7XG5cbiAgY29uc3QgY29kZVZlcnNpb24gPSBhd2FpdCBleGVjRnJvbVJvb3QoJ2NvZGUgLS12ZXJzaW9uJywge1xuICAgIGlzUXVpZXQ6IHRydWUsXG4gICAgc2hvdWxkSWdub3JlRXhpdENvZGU6IHRydWVcbiAgfSk7XG4gIGNvbnN0IHZlcnNpb25EZWJ1Z2dlciA9IGdldExpYkRlYnVnZ2VyKCdWZXJzaW9uJyk7XG4gIGlmIChjb2RlVmVyc2lvbikge1xuICAgIHZlcnNpb25EZWJ1Z2dlcihgUGxlYXNlIHVwZGF0ZSB0aGUgJHtPYnNpZGlhblBsdWdpblJlcG9QYXRocy5DaGFuZ2Vsb2dNZH0gZmlsZS4gQ2xvc2UgVmlzdWFsIFN0dWRpbyBDb2RlIHdoZW4geW91IGFyZSBkb25lLi4uYCk7XG4gICAgYXdhaXQgZXhlY0Zyb21Sb290KFsnY29kZScsICctdycsIGNoYW5nZWxvZ1BhdGhdLCB7XG4gICAgICBpc1F1aWV0OiB0cnVlLFxuICAgICAgc2hvdWxkSWdub3JlRXhpdENvZGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB2ZXJzaW9uRGVidWdnZXIoJ0NvdWxkIG5vdCBmaW5kIFZpc3VhbCBTdHVkaW8gQ29kZSBpbiB5b3VyIFBBVEguIFVzaW5nIGNvbnNvbGUgbW9kZSBpbnN0ZWFkLicpO1xuICAgIGF3YWl0IGNyZWF0ZUludGVyZmFjZShwcm9jZXNzLnN0ZGluLCBwcm9jZXNzLnN0ZG91dCkucXVlc3Rpb24oXG4gICAgICBgUGxlYXNlIHVwZGF0ZSB0aGUgJHtPYnNpZGlhblBsdWdpblJlcG9QYXRocy5DaGFuZ2Vsb2dNZH0gZmlsZS4gUHJlc3MgRW50ZXIgd2hlbiB5b3UgYXJlIGRvbmUuLi5gXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHZlcnNpb24gb2YgdGhlIHByb2plY3QgYmFzZWQgb24gdGhlIHNwZWNpZmllZCB1cGRhdGUgdHlwZS5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgc2VyaWVzIG9mIHRhc2tzIHRvIGhhbmRsZSB2ZXJzaW9uIHVwZGF0ZXM6XG4gKiAxLiBWYWxpZGF0ZXMgdGhlIHZlcnNpb24gdXBkYXRlIHR5cGUuXG4gKiAyLiBDaGVja3MgaWYgR2l0IGFuZCBHaXRIdWIgQ0xJIGFyZSBpbnN0YWxsZWQuXG4gKiAzLiBWZXJpZmllcyB0aGF0IHRoZSBHaXQgcmVwb3NpdG9yeSBpcyBjbGVhbi5cbiAqIDQuIFJ1bnMgc3BlbGxjaGVjayBhbmQgbGludGluZy5cbiAqIDUuIEJ1aWxkcyB0aGUgcHJvamVjdC5cbiAqIDYuIFVwZGF0ZXMgdmVyc2lvbiBpbiBmaWxlcyBhbmQgY2hhbmdlbG9nLlxuICogNy4gQWRkcyB1cGRhdGVkIGZpbGVzIHRvIEdpdCwgdGFncyB0aGUgY29tbWl0LCBhbmQgcHVzaGVzIHRvIHRoZSByZXBvc2l0b3J5LlxuICogOC4gSWYgYW4gT2JzaWRpYW4gcGx1Z2luLCBjb3BpZXMgdGhlIHVwZGF0ZWQgbWFuaWZlc3QgYW5kIHB1Ymxpc2hlcyBhIEdpdEh1YiByZWxlYXNlLlxuICpcbiAqIEBwYXJhbSB2ZXJzaW9uVXBkYXRlVHlwZSAtIFRoZSB0eXBlIG9mIHZlcnNpb24gdXBkYXRlIHRvIHBlcmZvcm0gKG1ham9yLCBtaW5vciwgcGF0Y2gsIHByZW1ham9yLCBwcmVtaW5vciwgcHJlcGF0Y2gsIHByZXJlbGVhc2UsIG9yIHgueS56Wy1zdWZmaXhdKS5cbiAqIEBwYXJhbSBwcmVwYXJlR2l0SHViUmVsZWFzZSAtIEEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcHJlcGFyZSB0aGUgR2l0SHViIHJlbGVhc2UuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHZlcnNpb24gdXBkYXRlIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlVmVyc2lvbih2ZXJzaW9uVXBkYXRlVHlwZT86IHN0cmluZywgcHJlcGFyZUdpdEh1YlJlbGVhc2U/OiAobmV3VmVyc2lvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghdmVyc2lvblVwZGF0ZVR5cGUpIHtcbiAgICBjb25zdCBucG1PbGRWZXJzaW9uID0gcHJvY2Vzcy5lbnZbJ25wbV9vbGRfdmVyc2lvbiddO1xuICAgIGNvbnN0IG5wbU5ld1ZlcnNpb24gPSBwcm9jZXNzLmVudlsnbnBtX25ld192ZXJzaW9uJ107XG5cbiAgICBpZiAobnBtT2xkVmVyc2lvbiAmJiBucG1OZXdWZXJzaW9uKSB7XG4gICAgICBhd2FpdCB1cGRhdGVWZXJzaW9uSW5GaWxlcyhucG1PbGRWZXJzaW9uKTtcbiAgICAgIGF3YWl0IHVwZGF0ZVZlcnNpb24obnBtTmV3VmVyc2lvbiwgcHJlcGFyZUdpdEh1YlJlbGVhc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignTm8gdmVyc2lvbiB1cGRhdGUgdHlwZSBwcm92aWRlZCcpO1xuICB9XG5cbiAgY29uc3QgaXNPYnNpZGlhblBsdWdpbiA9IGV4aXN0c1N5bmMocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uKSkgJiYgKGF3YWl0IHJlYWRQYWNrYWdlSnNvbigpKS5uYW1lICE9PSAnb2JzaWRpYW4tZGV2LXV0aWxzJztcblxuICB2YWxpZGF0ZSh2ZXJzaW9uVXBkYXRlVHlwZSk7XG4gIGF3YWl0IGNoZWNrR2l0SW5zdGFsbGVkKCk7XG4gIGF3YWl0IGNoZWNrR2l0UmVwb0NsZWFuKCk7XG4gIGF3YWl0IGNoZWNrR2l0SHViQ2xpSW5zdGFsbGVkKCk7XG4gIGF3YWl0IG5wbVJ1bignZm9ybWF0OmNoZWNrJyk7XG4gIGF3YWl0IG5wbVJ1bignc3BlbGxjaGVjaycpO1xuICBhd2FpdCBucG1SdW4oJ2xpbnQ6bWQnKTtcbiAgYXdhaXQgbnBtUnVuKCdidWlsZCcpO1xuICBhd2FpdCBucG1SdW4oJ2xpbnQnKTtcbiAgYXdhaXQgbnBtUnVuT3B0aW9uYWwoJ3Rlc3QnKTtcbiAgYXdhaXQgbnBtUnVuT3B0aW9uYWwoJ3Rlc3Q6aW50ZWdyYXRpb24nKTtcbiAgYXdhaXQgbnBtUnVuT3B0aW9uYWwoJ3Rlc3Q6Y292ZXJhZ2UnKTtcblxuICBjb25zdCBuZXdWZXJzaW9uID0gYXdhaXQgZ2V0TmV3VmVyc2lvbih2ZXJzaW9uVXBkYXRlVHlwZSk7XG4gIGF3YWl0IHVwZGF0ZVZlcnNpb25JbkZpbGVzKG5ld1ZlcnNpb24pO1xuICBpZiAoaXNPYnNpZGlhblBsdWdpbikge1xuICAgIGF3YWl0IHVwZGF0ZVZlcnNpb25JbkZpbGVzRm9yUGx1Z2luKG5ld1ZlcnNpb24pO1xuICB9XG5cbiAgYXdhaXQgdXBkYXRlQ2hhbmdlbG9nKG5ld1ZlcnNpb24pO1xuICBhd2FpdCBhZGRVcGRhdGVkRmlsZXNUb0dpdChuZXdWZXJzaW9uKTtcbiAgYXdhaXQgYWRkR2l0VGFnKG5ld1ZlcnNpb24pO1xuICBhd2FpdCBnaXRQdXNoKCk7XG4gIGF3YWl0IHByZXBhcmVHaXRIdWJSZWxlYXNlPy4obmV3VmVyc2lvbik7XG4gIGF3YWl0IHB1Ymxpc2hHaXRIdWJSZWxlYXNlKG5ld1ZlcnNpb24sIGlzT2JzaWRpYW5QbHVnaW4pO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHZlcnNpb24gaW4gdmFyaW91cyBmaWxlcywgaW5jbHVkaW5nIGBwYWNrYWdlLmpzb25gLCBgcGFja2FnZS1sb2NrLmpzb25gLFxuICogYW5kIE9ic2lkaWFuIHBsdWdpbiBtYW5pZmVzdHMgaWYgYXBwbGljYWJsZS5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBzdHJpbmcgdG8gdXBkYXRlIGluIHRoZSBmaWxlcy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlVmVyc2lvbkluRmlsZXMobmV3VmVyc2lvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGVkaXRQYWNrYWdlSnNvbigocGFja2FnZUpzb24pID0+IHtcbiAgICBwYWNrYWdlSnNvbi52ZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgfSk7XG5cbiAgYXdhaXQgZWRpdFBhY2thZ2VMb2NrSnNvbih1cGRhdGUsIHsgc2hvdWxkU2tpcElmTWlzc2luZzogdHJ1ZSB9KTtcbiAgYXdhaXQgZWRpdE5wbVNocmlua1dyYXBKc29uKHVwZGF0ZSwgeyBzaG91bGRTa2lwSWZNaXNzaW5nOiB0cnVlIH0pO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZShwYWNrYWdlTG9ja0pzb246IFBhY2thZ2VMb2NrSnNvbik6IHZvaWQge1xuICAgIHBhY2thZ2VMb2NrSnNvbi52ZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgICBjb25zdCBkZWZhdWx0UGFja2FnZSA9IHBhY2thZ2VMb2NrSnNvbi5wYWNrYWdlcz8uWycnXTtcbiAgICBpZiAoZGVmYXVsdFBhY2thZ2UpIHtcbiAgICAgIGRlZmF1bHRQYWNrYWdlLnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgdmVyc2lvbiB1cGRhdGUgdHlwZSB0byBlbnN1cmUgaXQgaXMgZWl0aGVyIGEgcmVjb2duaXplZCB0eXBlXG4gKiBvciBhIHZhbGlkIG1hbnVhbCB2ZXJzaW9uIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvblVwZGF0ZVR5cGUgLSBUaGUgdmVyc2lvbiB1cGRhdGUgdHlwZSB0byB2YWxpZGF0ZS5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIHZlcnNpb24gdXBkYXRlIHR5cGUgaXMgaW52YWxpZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlKHZlcnNpb25VcGRhdGVUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGdldFZlcnNpb25VcGRhdGVUeXBlKHZlcnNpb25VcGRhdGVUeXBlKSA9PT0gVmVyc2lvblVwZGF0ZVR5cGUuSW52YWxpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdJbnZhbGlkIHZlcnNpb24gdXBkYXRlIHR5cGUuIFBsZWFzZSB1c2UgXFwnbWFqb3JcXCcsIFxcJ21pbm9yXFwnLCBcXCdwYXRjaFxcJywgXFwncHJlbWFqb3JcXCcsIFxcJ3ByZW1pbm9yXFwnLCBcXCdwcmVwYXRjaFxcJywgXFwncHJlcmVsZWFzZVxcJywgb3IgXFwneC55LnpbLXN1ZmZpeF1cXCcgZm9ybWF0LidcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogRmV0Y2hlcyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgT2JzaWRpYW4gZnJvbSB0aGUgR2l0SHViIHJlbGVhc2VzIEFQSS5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBPYnNpZGlhbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0T2JzaWRpYW5WZXJzaW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gV2UgcnVuIHRoaXMgb3V0c2lkZSBvZiBPYnNpZGlhbiwgc28gd2UgZG9uJ3QgaGF2ZSBgcmVxdWVzdFVybCgpYC5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9vYnNpZGlhbm1kL29ic2lkaWFuLXJlbGVhc2VzL3JlbGVhc2VzL2xhdGVzdCcpO1xuICBjb25zdCBvYnNpZGlhblJlbGVhc2VzSnNvbiA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBQYXJ0aWFsPE9ic2lkaWFuUmVsZWFzZXNKc29uPjtcbiAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKG9ic2lkaWFuUmVsZWFzZXNKc29uLm5hbWUsICdDb3VsZCBub3QgZmluZCB0aGUgbmFtZSBvZiB0aGUgbGF0ZXN0IE9ic2lkaWFuIHJlbGVhc2UnKTtcbn1cblxuZnVuY3Rpb24gaXNQcmVSZWxlYXNlKHZlcnNpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gcHJlcmVsZWFzZSh2ZXJzaW9uKSAhPT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gdG9TaW5nbGVMaW5lKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBzdHIuc3BsaXQoL1xccj9cXG4vKS5maWx0ZXIoQm9vbGVhbik7XG4gIHJldHVybiBsaW5lcy5qb2luKCcgJyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVZlcnNpb25JbkZpbGVzRm9yUGx1Z2luKG5ld1ZlcnNpb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBtYW5pZmVzdEJldGFKc29uUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0QmV0YUpzb24pO1xuICBpZiAoaXNQcmVSZWxlYXNlKG5ld1ZlcnNpb24pKSB7XG4gICAgYXdhaXQgY3AoXG4gICAgICByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEpzb24pLFxuICAgICAgbWFuaWZlc3RCZXRhSnNvblBhdGgsXG4gICAgICB7IGZvcmNlOiB0cnVlIH1cbiAgICApO1xuICAgIGF3YWl0IGVkaXRKc29uPE1hbmlmZXN0PihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEJldGFKc29uLCAobWFuaWZlc3QpID0+IHtcbiAgICAgIG1hbmlmZXN0LnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGxhdGVzdE9ic2lkaWFuVmVyc2lvbiA9IGF3YWl0IGdldExhdGVzdE9ic2lkaWFuVmVyc2lvbigpO1xuXG4gICAgYXdhaXQgZWRpdEpzb248TWFuaWZlc3Q+KE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiwgKG1hbmlmZXN0KSA9PiB7XG4gICAgICBtYW5pZmVzdC5taW5BcHBWZXJzaW9uID0gbGF0ZXN0T2JzaWRpYW5WZXJzaW9uO1xuICAgICAgbWFuaWZlc3QudmVyc2lvbiA9IG5ld1ZlcnNpb247XG4gICAgfSk7XG5cbiAgICBhd2FpdCBlZGl0SnNvbjxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5WZXJzaW9uc0pzb24sICh2ZXJzaW9ucykgPT4ge1xuICAgICAgdmVyc2lvbnNbbmV3VmVyc2lvbl0gPSBsYXRlc3RPYnNpZGlhblZlcnNpb247XG4gICAgfSk7XG5cbiAgICBpZiAoZXhpc3RzU3luYyhtYW5pZmVzdEJldGFKc29uUGF0aCkpIHtcbiAgICAgIGF3YWl0IHJtKG1hbmlmZXN0QmV0YUpzb25QYXRoKTtcbiAgICB9XG4gIH1cblxuICBhd2FpdCBjb3B5VXBkYXRlZE1hbmlmZXN0KCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBLHFCQUEyQjtBQUMzQixzQkFLTztBQUNQLElBQUFBLG1CQUFnQztBQUNoQyxvQkFHTztBQUlQLG1CQUErQjtBQUMvQix3Q0FBd0M7QUFDeEMsa0JBQXFCO0FBQ3JCLG9CQUEyQjtBQUMzQix5QkFHTztBQUNQLGdCQUE2QjtBQUM3QixrQkFBeUI7QUFDekIscUJBR087QUFDUCxpQkFLTztBQUNQLDJDQUEwQztBQUMxQyxrQkFHTztBQVNQLE1BQU0sZ0JBQWdCO0FBT2YsSUFBSyxvQkFBTCxrQkFBS0MsdUJBQUw7QUFDTCxFQUFBQSxtQkFBQSxhQUFVO0FBQ1YsRUFBQUEsbUJBQUEsV0FBUTtBQUNSLEVBQUFBLG1CQUFBLFlBQVM7QUFDVCxFQUFBQSxtQkFBQSxXQUFRO0FBQ1IsRUFBQUEsbUJBQUEsV0FBUTtBQUNSLEVBQUFBLG1CQUFBLGNBQVc7QUFDWCxFQUFBQSxtQkFBQSxjQUFXO0FBQ1gsRUFBQUEsbUJBQUEsY0FBVztBQUNYLEVBQUFBLG1CQUFBLGdCQUFhO0FBVEgsU0FBQUE7QUFBQSxHQUFBO0FBMkNaLGVBQXNCLFVBQVUsWUFBbUM7QUFDakUsWUFBTSwwQkFBYSxjQUFjLFVBQVUsT0FBTyxVQUFVLFlBQVksRUFBRSxTQUFTLEtBQUssQ0FBQztBQUMzRjtBQVFBLGVBQXNCLHFCQUFxQixZQUFtQztBQUM1RSxZQUFNLDBCQUFhLENBQUMsT0FBTyxPQUFPLE9BQU8sR0FBRyxFQUFFLFNBQVMsS0FBSyxDQUFDO0FBQzdELFlBQU0sMEJBQWEsQ0FBQyxPQUFPLFVBQVUsTUFBTSxrQkFBa0IsVUFBVSxJQUFJLGVBQWUsR0FBRyxFQUFFLFNBQVMsS0FBSyxDQUFDO0FBQ2hIO0FBU0EsZUFBc0IsMEJBQXlDO0FBQzdELE1BQUk7QUFDRixjQUFNLDBCQUFhLGdCQUFnQixFQUFFLFNBQVMsS0FBSyxDQUFDO0FBQUEsRUFDdEQsUUFBUTtBQUNOLFVBQU0sSUFBSSxNQUFNLDZFQUE2RTtBQUFBLEVBQy9GO0FBQ0Y7QUFTQSxlQUFzQixvQkFBbUM7QUFDdkQsTUFBSTtBQUNGLGNBQU0sMEJBQWEsaUJBQWlCLEVBQUUsU0FBUyxLQUFLLENBQUM7QUFBQSxFQUN2RCxRQUFRO0FBQ04sVUFBTSxJQUFJLE1BQU0sbUVBQW1FO0FBQUEsRUFDckY7QUFDRjtBQVNBLGVBQXNCLG9CQUFtQztBQUN2RCxNQUFJO0FBQ0YsVUFBTSxTQUFTLFVBQU0sMEJBQWEsZ0RBQWdELEVBQUUsU0FBUyxLQUFLLENBQUM7QUFDbkcsUUFBSSxRQUFRO0FBQ1YsWUFBTSxJQUFJLE1BQU07QUFBQSxJQUNsQjtBQUFBLEVBQ0YsUUFBUTtBQUNOLFVBQU0sSUFBSSxNQUFNLGtHQUFrRztBQUFBLEVBQ3BIO0FBQ0Y7QUFPQSxlQUFzQixzQkFBcUM7QUFDekQsWUFBTTtBQUFBLFFBQ0oscUNBQXdCLDBEQUF3QixZQUFZO0FBQUEsUUFDNUQseUNBQXdCLGtCQUFLLDBEQUF3QixXQUFXLDBEQUF3QixZQUFZLENBQUM7QUFBQSxJQUNyRyxFQUFFLE9BQU8sS0FBSztBQUFBLEVBQ2hCO0FBQ0Y7QUFhQSxlQUFzQixjQUFjLG1CQUE0QztBQUM5RSxRQUFNLGNBQWMscUJBQXFCLGlCQUFpQjtBQUMxRCxNQUFJLGdCQUFnQix1QkFBMEI7QUFDNUMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLGNBQWMsVUFBTSw0QkFBZ0I7QUFDMUMsUUFBTSxpQkFBaUIsWUFBWSxXQUFXO0FBRTlDLFFBQU0sY0FBYztBQUNwQixRQUFNLG1CQUFtQixZQUFZLFdBQVcsS0FBSztBQUNyRCxRQUFNLGFBQWEsdUJBQ2YsbUJBQUksZ0JBQWdCLGFBQWEsYUFBYSxRQUM5QyxtQkFBSSxnQkFBZ0IsV0FBVztBQUNuQyw0Q0FBa0IsWUFBWSxxQ0FBcUMsY0FBYyxnQkFBZ0IsV0FBVyxHQUFHO0FBRS9HLFNBQU87QUFDVDtBQVFBLGVBQXNCLGdCQUFnQixZQUFxQztBQUN6RSxRQUFNLG9CQUFnQixxQ0FBd0IsMERBQXdCLFdBQVc7QUFDakYsUUFBTSxVQUFVLFVBQU0sMEJBQVMsZUFBZSxPQUFPO0FBQ3JELFFBQU0sd0JBQW9CLDBCQUFXLFlBQVksS0FBSyxLQUFLO0FBQzNELFFBQU0sUUFBUSxJQUFJLE9BQU87QUFBQSxLQUFRLGlCQUFpQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsR0FBc0IsRUFBRSxLQUFLLE9BQU87QUFFdEYsTUFBSSxlQUFlLFFBQVEsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFBQTtBQUFBLElBQVM7QUFHcEQsUUFBTSxRQUFRLFVBQU0sMEJBQWEsK0JBQStCLEVBQUUsU0FBUyxLQUFLLENBQUMsR0FBRyxNQUFNLE9BQU87QUFDakcsUUFBTSxrQkFBa0IsS0FBSyxDQUFDO0FBQzlCLE1BQUk7QUFFSixRQUFNLFVBQVUsVUFBTSwwQkFBYSxtQ0FBbUMsRUFBRSxTQUFTLEtBQUssQ0FBQztBQUV2RixNQUFJLGlCQUFpQjtBQUNuQixpQkFBYSxHQUFHLE9BQU8sWUFBWSxlQUFlLE1BQU0sVUFBVTtBQUFBLEVBQ3BFLE9BQU87QUFDTCxpQkFBYSxHQUFHLE9BQU8sWUFBWSxVQUFVO0FBQUEsRUFDL0M7QUFFQSxrQkFBZ0IsdUJBQXVCLFVBQVU7QUFDakQsU0FBTztBQUNUO0FBUU8sU0FBUyxxQkFBcUIsbUJBQThDO0FBQ2pGLFFBQU0sd0JBQXdCO0FBQzlCLFVBQVEsdUJBQXVCO0FBQUEsSUFDN0IsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsS0FBSztBQUNILGFBQU87QUFBQSxJQUVUO0FBQ0UsVUFBSSxpQ0FBaUMsS0FBSyxpQkFBaUIsR0FBRztBQUM1RCxlQUFPO0FBQUEsTUFDVDtBQUVBLGFBQU87QUFBQSxFQUNYO0FBQ0Y7QUFPQSxlQUFzQixVQUF5QjtBQUM3QyxZQUFNLDBCQUFhLGtDQUFrQyxFQUFFLFNBQVMsS0FBSyxDQUFDO0FBQ3hFO0FBV0EsZUFBc0IscUJBQXFCLFlBQW9CLGtCQUEwQztBQUN2RyxNQUFJO0FBRUosTUFBSSxrQkFBa0I7QUFDcEIsVUFBTSxrQkFBYyxxQ0FBd0IsMERBQXdCLFNBQVM7QUFDN0UsVUFBTSxZQUFZLFVBQU0sd0JBQWEsV0FBVztBQUNoRCxnQkFBWSxVQUFVLElBQUksQ0FBQyxpQkFBYSxrQkFBSyxhQUFhLFFBQVEsQ0FBQztBQUFBLEVBQ3JFLE9BQU87QUFDTCxRQUFJLGVBQWUsVUFBTSwwQkFBYSxDQUFDLE9BQU8sUUFBUSxzQkFBc0IsK0RBQTBCLE1BQU0sUUFBUSxHQUFHLEVBQUUsU0FBUyxLQUFLLENBQUM7QUFDeEksVUFBTSxRQUFRLGFBQWEsUUFBUSxRQUFRO0FBQzNDLFFBQUksVUFBVSxJQUFJO0FBQ2hCLFlBQU0sSUFBSSxNQUFNLGlFQUFpRTtBQUFBLElBQ25GO0FBQ0EsbUJBQWUsYUFBYSxNQUFNLEtBQUs7QUFDdkMsVUFBTSxTQUFTLEtBQUssTUFBTSxZQUFZO0FBQ3RDLGdCQUFZO0FBQUEsVUFDVixrQkFBSywrREFBMEIsTUFBTSxPQUFPLENBQUMsRUFBRSxRQUFRO0FBQUEsVUFDdkQsa0JBQUssK0RBQTBCLE1BQU0sK0RBQTBCLFNBQVM7QUFBQSxJQUMxRTtBQUFBLEVBQ0Y7QUFFQSxjQUFZLFVBQVUsT0FBTyxDQUFDLGlCQUFhLCtCQUFXLHFDQUF3QixRQUFRLENBQUMsQ0FBQztBQUV4RixZQUFNLDBCQUFhO0FBQUEsSUFDakI7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLEdBQUc7QUFBQSxJQUNIO0FBQUEsSUFDQSxJQUFJLFVBQVU7QUFBQSxJQUNkLEdBQUksYUFBYSxVQUFVLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQztBQUFBLElBQ25EO0FBQUEsSUFDQTtBQUFBLEVBQ0YsR0FBRztBQUFBLElBQ0QsU0FBUztBQUFBLElBQ1QsT0FBTyxNQUFNLGdCQUFnQixVQUFVO0FBQUEsRUFDekMsQ0FBQztBQUNIO0FBV0EsZUFBc0IsZ0JBQWdCLFlBQW1DO0FBQ3ZFLFFBQU0scUJBQXFCO0FBQzNCLFFBQU0sb0JBQWdCLHFDQUF3QiwwREFBd0IsV0FBVztBQUNqRixNQUFJO0FBQ0osVUFBSSwyQkFBVyxhQUFhLEdBQUc7QUFDN0IsVUFBTSxVQUFVLFVBQU0sMEJBQVMsZUFBZSxPQUFPO0FBQ3JELDZCQUF5QixRQUFRLE1BQU0sSUFBSSxFQUFFLE1BQU0sa0JBQWtCO0FBQ3JFLFFBQUksdUJBQXVCLEdBQUcsRUFBRSxNQUFNLElBQUk7QUFDeEMsNkJBQXVCLElBQUk7QUFBQSxJQUM3QjtBQUFBLEVBQ0YsT0FBTztBQUNMLDZCQUF5QixDQUFDO0FBQUEsRUFDNUI7QUFFQSxRQUFNLGNBQVUsMEJBQVcsdUJBQXVCLENBQUMsS0FBSyxJQUFJLE9BQU8sRUFBRTtBQUNyRSxRQUFNLGNBQWMsVUFBVSxHQUFHLE9BQU8sV0FBVztBQUNuRCxRQUFNLG9CQUFvQixVQUFNLDBCQUFhLFdBQVcsV0FBVyxrQ0FBa0MsRUFBRSxTQUFTLEtBQUssQ0FBQztBQUN0SCxRQUFNLGlCQUFpQixrQkFBa0IsTUFBTSxJQUFJLEVBQUUsT0FBTyxPQUFPLEVBQUUsSUFBSSxZQUFZO0FBRXJGLE1BQUksZUFBZTtBQUFBO0FBQUEsS0FBcUIsVUFBVTtBQUFBO0FBQUE7QUFFbEQsYUFBVyxXQUFXLGdCQUFnQjtBQUNwQyxvQkFBZ0IsS0FBSyxPQUFPO0FBQUE7QUFBQSxFQUM5QjtBQUVBLE1BQUksdUJBQXVCLFNBQVMsR0FBRztBQUNyQyxvQkFBZ0I7QUFDaEIsZUFBVyxRQUFRLHdCQUF3QjtBQUN6QyxzQkFBZ0IsR0FBRyxJQUFJO0FBQUE7QUFBQSxJQUN6QjtBQUFBLEVBQ0Y7QUFFQSxZQUFNLDJCQUFVLGVBQWUsY0FBYyxPQUFPO0FBRXBELFFBQU0sY0FBYyxVQUFNLDBCQUFhLGtCQUFrQjtBQUFBLElBQ3ZELFNBQVM7QUFBQSxJQUNULHNCQUFzQjtBQUFBLEVBQ3hCLENBQUM7QUFDRCxRQUFNLHNCQUFrQiw2QkFBZSxTQUFTO0FBQ2hELE1BQUksYUFBYTtBQUNmLG9CQUFnQixxQkFBcUIsMERBQXdCLFdBQVcsc0RBQXNEO0FBQzlILGNBQU0sMEJBQWEsQ0FBQyxRQUFRLE1BQU0sYUFBYSxHQUFHO0FBQUEsTUFDaEQsU0FBUztBQUFBLE1BQ1Qsc0JBQXNCO0FBQUEsSUFDeEIsQ0FBQztBQUFBLEVBQ0gsT0FBTztBQUNMLG9CQUFnQiw2RUFBNkU7QUFDN0YsY0FBTSxrQ0FBZ0IsUUFBUSxPQUFPLFFBQVEsTUFBTSxFQUFFO0FBQUEsTUFDbkQscUJBQXFCLDBEQUF3QixXQUFXO0FBQUEsSUFDMUQ7QUFBQSxFQUNGO0FBQ0Y7QUFtQkEsZUFBc0IsY0FBYyxtQkFBNEIsc0JBQTZFO0FBQzNJLE1BQUksQ0FBQyxtQkFBbUI7QUFDdEIsVUFBTSxnQkFBZ0IsUUFBUSxJQUFJLGlCQUFpQjtBQUNuRCxVQUFNLGdCQUFnQixRQUFRLElBQUksaUJBQWlCO0FBRW5ELFFBQUksaUJBQWlCLGVBQWU7QUFDbEMsWUFBTSxxQkFBcUIsYUFBYTtBQUN4QyxZQUFNLGNBQWMsZUFBZSxvQkFBb0I7QUFDdkQ7QUFBQSxJQUNGO0FBRUEsVUFBTSxJQUFJLE1BQU0saUNBQWlDO0FBQUEsRUFDbkQ7QUFFQSxRQUFNLHVCQUFtQiwrQkFBVyxxQ0FBd0IsMERBQXdCLFlBQVksQ0FBQyxNQUFNLFVBQU0sNEJBQWdCLEdBQUcsU0FBUztBQUV6SSxXQUFTLGlCQUFpQjtBQUMxQixRQUFNLGtCQUFrQjtBQUN4QixRQUFNLGtCQUFrQjtBQUN4QixRQUFNLHdCQUF3QjtBQUM5QixZQUFNLHVCQUFPLGNBQWM7QUFDM0IsWUFBTSx1QkFBTyxZQUFZO0FBQ3pCLFlBQU0sdUJBQU8sU0FBUztBQUN0QixZQUFNLHVCQUFPLE9BQU87QUFDcEIsWUFBTSx1QkFBTyxNQUFNO0FBQ25CLFlBQU0sK0JBQWUsTUFBTTtBQUMzQixZQUFNLCtCQUFlLGtCQUFrQjtBQUN2QyxZQUFNLCtCQUFlLGVBQWU7QUFFcEMsUUFBTSxhQUFhLE1BQU0sY0FBYyxpQkFBaUI7QUFDeEQsUUFBTSxxQkFBcUIsVUFBVTtBQUNyQyxNQUFJLGtCQUFrQjtBQUNwQixVQUFNLDhCQUE4QixVQUFVO0FBQUEsRUFDaEQ7QUFFQSxRQUFNLGdCQUFnQixVQUFVO0FBQ2hDLFFBQU0scUJBQXFCLFVBQVU7QUFDckMsUUFBTSxVQUFVLFVBQVU7QUFDMUIsUUFBTSxRQUFRO0FBQ2QsUUFBTSx1QkFBdUIsVUFBVTtBQUN2QyxRQUFNLHFCQUFxQixZQUFZLGdCQUFnQjtBQUN6RDtBQVNBLGVBQXNCLHFCQUFxQixZQUFtQztBQUM1RSxZQUFNLDRCQUFnQixDQUFDLGdCQUFnQjtBQUNyQyxnQkFBWSxVQUFVO0FBQUEsRUFDeEIsQ0FBQztBQUVELFlBQU0sZ0NBQW9CLFFBQVEsRUFBRSxxQkFBcUIsS0FBSyxDQUFDO0FBQy9ELFlBQU0sa0NBQXNCLFFBQVEsRUFBRSxxQkFBcUIsS0FBSyxDQUFDO0FBRWpFLFdBQVMsT0FBTyxpQkFBd0M7QUFDdEQsb0JBQWdCLFVBQVU7QUFDMUIsVUFBTSxpQkFBaUIsZ0JBQWdCLFdBQVcsRUFBRTtBQUNwRCxRQUFJLGdCQUFnQjtBQUNsQixxQkFBZSxVQUFVO0FBQUEsSUFDM0I7QUFBQSxFQUNGO0FBQ0Y7QUFTTyxTQUFTLFNBQVMsbUJBQWlDO0FBQ3hELE1BQUkscUJBQXFCLGlCQUFpQixNQUFNLHlCQUEyQjtBQUN6RSxVQUFNLElBQUk7QUFBQSxNQUNSO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjtBQU9BLGVBQWUsMkJBQTRDO0FBRXpELFFBQU0sV0FBVyxNQUFNLE1BQU0sMkVBQTJFO0FBQ3hHLFFBQU0sdUJBQXVCLE1BQU0sU0FBUyxLQUFLO0FBQ2pELGFBQU8sc0NBQWtCLHFCQUFxQixNQUFNLHdEQUF3RDtBQUM5RztBQUVBLFNBQVMsYUFBYSxTQUEwQjtBQUM5QyxhQUFPLDBCQUFXLE9BQU8sTUFBTTtBQUNqQztBQUVBLFNBQVMsYUFBYSxLQUFxQjtBQUN6QyxRQUFNLFFBQVEsSUFBSSxNQUFNLE9BQU8sRUFBRSxPQUFPLE9BQU87QUFDL0MsU0FBTyxNQUFNLEtBQUssR0FBRztBQUN2QjtBQUVBLGVBQWUsOEJBQThCLFlBQW1DO0FBQzlFLFFBQU0sMkJBQXVCLHFDQUF3QiwwREFBd0IsZ0JBQWdCO0FBQzdGLE1BQUksYUFBYSxVQUFVLEdBQUc7QUFDNUIsY0FBTTtBQUFBLFVBQ0oscUNBQXdCLDBEQUF3QixZQUFZO0FBQUEsTUFDNUQ7QUFBQSxNQUNBLEVBQUUsT0FBTyxLQUFLO0FBQUEsSUFDaEI7QUFDQSxjQUFNLHNCQUFtQiwwREFBd0Isa0JBQWtCLENBQUMsYUFBYTtBQUMvRSxlQUFTLFVBQVU7QUFBQSxJQUNyQixDQUFDO0FBQUEsRUFDSCxPQUFPO0FBQ0wsVUFBTSx3QkFBd0IsTUFBTSx5QkFBeUI7QUFFN0QsY0FBTSxzQkFBbUIsMERBQXdCLGNBQWMsQ0FBQyxhQUFhO0FBQzNFLGVBQVMsZ0JBQWdCO0FBQ3pCLGVBQVMsVUFBVTtBQUFBLElBQ3JCLENBQUM7QUFFRCxjQUFNLHNCQUFpQywwREFBd0IsY0FBYyxDQUFDLGFBQWE7QUFDekYsZUFBUyxVQUFVLElBQUk7QUFBQSxJQUN6QixDQUFDO0FBRUQsWUFBSSwyQkFBVyxvQkFBb0IsR0FBRztBQUNwQyxnQkFBTSxvQkFBRyxvQkFBb0I7QUFBQSxJQUMvQjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLG9CQUFvQjtBQUM1QjsiLAogICJuYW1lcyI6IFsiaW1wb3J0X3Byb21pc2VzIiwgIlZlcnNpb25VcGRhdGVUeXBlIl0KfQo=
474
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy92ZXJzaW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyB2ZXJzaW9uIHVwZGF0ZXMgaW4gYSBwcm9qZWN0LlxuICogSXQgaW5jbHVkZXMgdGFza3Mgc3VjaCBhcyB2YWxpZGF0aW5nIHZlcnNpb24gdXBkYXRlIHR5cGVzLCBjaGVja2luZyB0aGUgc3RhdGVcbiAqIG9mIEdpdCBhbmQgR2l0SHViIENMSSwgdXBkYXRpbmcgdmVyc2lvbiBudW1iZXJzIGluIGZpbGVzLCBhbmQgcGVyZm9ybWluZ1xuICogR2l0IG9wZXJhdGlvbnMgc3VjaCBhcyB0YWdnaW5nIGFuZCBwdXNoaW5nLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUmVsZWFzZVR5cGUgfSBmcm9tICdzZW12ZXInO1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBjcCxcbiAgcmVhZEZpbGUsXG4gIHJtLFxuICB3cml0ZUZpbGVcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBjcmVhdGVJbnRlcmZhY2UgfSBmcm9tICdub2RlOnJlYWRsaW5lL3Byb21pc2VzJztcbmltcG9ydCB7XG4gIGluYyxcbiAgcHJlcmVsZWFzZVxufSBmcm9tICdzZW12ZXInO1xuXG5pbXBvcnQgdHlwZSB7IFBhY2thZ2VMb2NrSnNvbiB9IGZyb20gJy4vbnBtLnRzJztcblxuaW1wb3J0IHsgZ2V0TGliRGVidWdnZXIgfSBmcm9tICcuLi9kZWJ1Zy50cyc7XG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4uL29ic2lkaWFuL3BsdWdpbi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnLi4vcGF0aC50cyc7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnLi4vc3RyaW5nLnRzJztcbmltcG9ydCB7XG4gIGFzc2VydE5vbk51bGxhYmxlLFxuICBlbnN1cmVOb25OdWxsYWJsZVxufSBmcm9tICcuLi90eXBlLWd1YXJkcy50cyc7XG5pbXBvcnQgeyByZWFkZGlyUG9zaXggfSBmcm9tICcuL2ZzLnRzJztcbmltcG9ydCB7IGVkaXRKc29uIH0gZnJvbSAnLi9qc29uLnRzJztcbmltcG9ydCB7XG4gIG5wbVJ1bixcbiAgbnBtUnVuT3B0aW9uYWxcbn0gZnJvbSAnLi9ucG0tcnVuLnRzJztcbmltcG9ydCB7XG4gIGVkaXROcG1TaHJpbmtXcmFwSnNvbixcbiAgZWRpdFBhY2thZ2VKc29uLFxuICBlZGl0UGFja2FnZUxvY2tKc29uLFxuICByZWFkUGFja2FnZUpzb25cbn0gZnJvbSAnLi9ucG0udHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocyB9IGZyb20gJy4vb2JzaWRpYW4tZGV2LXV0aWxzLXJlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuL3Jvb3QudHMnO1xuXG5pbnRlcmZhY2UgTnBtUGFja1Jlc3VsdCB7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgcHJlLXJlbGVhc2UgaWRlbnRpZmllciB1c2VkIGZvciBwcmUtcmVsZWFzZSB2ZXJzaW9ucy5cbiAqL1xuY29uc3QgREVGQVVMVF9QUkVJRCA9ICdiZXRhJztcblxuLyoqXG4gKiBFbnVtIHJlcHJlc2VudGluZyBkaWZmZXJlbnQgdHlwZXMgb2YgdmVyc2lvbiB1cGRhdGVzLlxuICpcbiAqIEFsaWducyB3aXRoIG5wbSdzIGBucG0gdmVyc2lvbmAgaW5jcmVtZW50IHR5cGVzIHBsdXMgYE1hbnVhbGAgZm9yIGV4cGxpY2l0IHZlcnNpb25zLlxuICovXG5leHBvcnQgZW51bSBWZXJzaW9uVXBkYXRlVHlwZSB7XG4gIEludmFsaWQgPSAnaW52YWxpZCcsXG4gIE1ham9yID0gJ21ham9yJyxcbiAgTWFudWFsID0gJ21hbnVhbCcsXG4gIE1pbm9yID0gJ21pbm9yJyxcbiAgUGF0Y2ggPSAncGF0Y2gnLFxuICBQcmVNYWpvciA9ICdwcmVtYWpvcicsXG4gIFByZU1pbm9yID0gJ3ByZW1pbm9yJyxcbiAgUHJlUGF0Y2ggPSAncHJlcGF0Y2gnLFxuICBQcmVSZWxlYXNlID0gJ3ByZXJlbGVhc2UnXG59XG5cbi8qKlxuICogVHlwZSByZXByZXNlbnRpbmcgdGhlIG1hbmlmZXN0IGZpbGUgZm9ybWF0IGZvciBPYnNpZGlhbiBwbHVnaW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIEEgbWluaW11bSBPYnNpZGlhbiB2ZXJzaW9uIHJlcXVpcmVkIGZvciB0aGUgcGx1Z2luLlxuICAgKi9cbiAgbWluQXBwVmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHZlcnNpb24gb2YgdGhlIHBsdWdpbi5cbiAgICovXG4gIHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyB0aGUgc3RydWN0dXJlIG9mIE9ic2lkaWFuIHJlbGVhc2VzIEpTT04uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5SZWxlYXNlc0pzb24ge1xuICAvKipcbiAgICogQSBuYW1lIG9mIHRoZSBPYnNpZGlhbiByZWxlYXNlLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBHaXQgdGFnIGZvciB0aGUgbmV3IHZlcnNpb24uXG4gKlxuICogQHBhcmFtIG5ld1ZlcnNpb24gLSBUaGUgbmV3IHZlcnNpb24gbnVtYmVyIHRvIHVzZSBmb3IgdGhlIHRhZy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGFnIGhhcyBiZWVuIGNyZWF0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRHaXRUYWcobmV3VmVyc2lvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChgZ2l0IHRhZyAtYSAke25ld1ZlcnNpb259IC1tICR7bmV3VmVyc2lvbn0gLS1mb3JjZWAsIHsgaXNRdWlldDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBBZGRzIHVwZGF0ZWQgZmlsZXMgdG8gdGhlIEdpdCBzdGFnaW5nIGFyZWEgYW5kIGNvbW1pdHMgdGhlbSB3aXRoIHRoZSBuZXcgdmVyc2lvbiBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSBuZXdWZXJzaW9uIC0gVGhlIG5ldyB2ZXJzaW9uIG51bWJlciB1c2VkIGFzIHRoZSBjb21taXQgbWVzc2FnZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZmlsZXMgaGF2ZSBiZWVuIGFkZGVkIGFuZCBjb21taXR0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRVcGRhdGVkRmlsZXNUb0dpdChuZXdWZXJzaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsnZ2l0JywgJ2FkZCcsICctLWFsbCddLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbJ2dpdCcsICdjb21taXQnLCAnLW0nLCBgY2hvcmU6IHJlbGVhc2UgJHtuZXdWZXJzaW9ufWAsICctLWFsbG93LWVtcHR5J10sIHsgaXNRdWlldDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIEdpdEh1YiBDTEkgaXMgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uXG4gKlxuICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBHaXRIdWIgQ0xJIGlzIG5vdCBpbnN0YWxsZWQuXG4gKlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgR2l0SHViIENMSSBpcyBub3QgaW5zdGFsbGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tHaXRIdWJDbGlJbnN0YWxsZWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY0Zyb21Sb290KCdnaCAtLXZlcnNpb24nLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcignR2l0SHViIENMSSBpcyBub3QgaW5zdGFsbGVkLiBQbGVhc2UgaW5zdGFsbCBpdCBmcm9tIGh0dHBzOi8vY2xpLmdpdGh1Yi5jb20vJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgR2l0IGlzIGluc3RhbGxlZCBvbiB0aGUgc3lzdGVtLlxuICpcbiAqIFRocm93cyBhbiBlcnJvciBpZiBHaXQgaXMgbm90IGluc3RhbGxlZC5cbiAqXG4gKiBAdGhyb3dzIEVycm9yIGlmIEdpdCBpcyBub3QgaW5zdGFsbGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tHaXRJbnN0YWxsZWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY0Zyb21Sb290KCdnaXQgLS12ZXJzaW9uJywgeyBpc1F1aWV0OiB0cnVlIH0pO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0dpdCBpcyBub3QgaW5zdGFsbGVkLiBQbGVhc2UgaW5zdGFsbCBpdCBmcm9tIGh0dHBzOi8vZ2l0LXNjbS5jb20vJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIEdpdCByZXBvc2l0b3J5IGlzIGNsZWFuLCBtZWFuaW5nIHRoZXJlIGFyZSBubyB1bmNvbW1pdHRlZCBjaGFuZ2VzLlxuICpcbiAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgR2l0IHJlcG9zaXRvcnkgaXMgbm90IGNsZWFuLlxuICpcbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIEdpdCByZXBvc2l0b3J5IGlzIG5vdCBjbGVhbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrR2l0UmVwb0NsZWFuKCk6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGNvbnN0IHN0ZG91dCA9IGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiAtLXVudHJhY2tlZC1maWxlcz1hbGwnLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gICAgaWYgKHN0ZG91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0dpdCByZXBvc2l0b3J5IGlzIG5vdCBjbGVhbi4gUGxlYXNlIGNvbW1pdCBvciBzdGFzaCB5b3VyIGNoYW5nZXMgYmVmb3JlIHJlbGVhc2luZyBhIG5ldyB2ZXJzaW9uLicpO1xuICB9XG59XG5cbi8qKlxuICogQ29waWVzIHRoZSB1cGRhdGVkIG1hbmlmZXN0IGZpbGUgdG8gdGhlIGRpc3RyaWJ1dGlvbiBidWlsZCBmb2xkZXIuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb3B5IG9wZXJhdGlvbiBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvcHlVcGRhdGVkTWFuaWZlc3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGNwKFxuICAgIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiksXG4gICAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbikpLFxuICAgIHsgZm9yY2U6IHRydWUgfVxuICApO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIG5ldyB2ZXJzaW9uIHN0cmluZyBiYXNlZCBvbiB0aGUgY3VycmVudCB2ZXJzaW9uIGFuZCB0aGUgc3BlY2lmaWVkIHVwZGF0ZSB0eXBlLlxuICpcbiAqIFVzZXMgdGhlIGBzZW12ZXJgIHBhY2thZ2UgdG8gY29tcHV0ZSB0aGUgbmV4dCB2ZXJzaW9uLCBzdXBwb3J0aW5nIGFsbCBucG0gaW5jcmVtZW50IHR5cGVzOlxuICogYG1ham9yYCwgYG1pbm9yYCwgYHBhdGNoYCwgYHByZW1ham9yYCwgYHByZW1pbm9yYCwgYHByZXBhdGNoYCwgYW5kIGBwcmVyZWxlYXNlYC5cbiAqIFByZS1yZWxlYXNlIHZlcnNpb25zIHVzZSB0aGUgYGJldGFgIGlkZW50aWZpZXIgYnkgZGVmYXVsdCAoZS5nLiwgYDEuMi40LWJldGEuMGApLlxuICpcbiAqIEBwYXJhbSB2ZXJzaW9uVXBkYXRlVHlwZSAtIFRoZSB0eXBlIG9mIHZlcnNpb24gdXBkYXRlIG9yIGFuIGV4cGxpY2l0IHZlcnNpb24gc3RyaW5nLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHZlcnNpb24gc3RyaW5nLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgY3VycmVudCB2ZXJzaW9uIGlzIGludmFsaWQgb3IgdGhlIGluY3JlbWVudCBmYWlscy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE5ld1ZlcnNpb24odmVyc2lvblVwZGF0ZVR5cGU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHZlcnNpb25UeXBlID0gZ2V0VmVyc2lvblVwZGF0ZVR5cGUodmVyc2lvblVwZGF0ZVR5cGUpO1xuICBpZiAodmVyc2lvblR5cGUgPT09IFZlcnNpb25VcGRhdGVUeXBlLk1hbnVhbCkge1xuICAgIHJldHVybiB2ZXJzaW9uVXBkYXRlVHlwZTtcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKc29uKCk7XG4gIGNvbnN0IGN1cnJlbnRWZXJzaW9uID0gcGFja2FnZUpzb24udmVyc2lvbiA/PyAnJztcblxuICBjb25zdCByZWxlYXNlVHlwZSA9IHZlcnNpb25UeXBlIGFzIFJlbGVhc2VUeXBlO1xuICBjb25zdCBpc1ByZVJlbGVhc2VUeXBlID0gcmVsZWFzZVR5cGUuc3RhcnRzV2l0aCgncHJlJyk7XG4gIGNvbnN0IG5ld1ZlcnNpb24gPSBpc1ByZVJlbGVhc2VUeXBlXG4gICAgPyBpbmMoY3VycmVudFZlcnNpb24sIHJlbGVhc2VUeXBlLCBERUZBVUxUX1BSRUlEKVxuICAgIDogaW5jKGN1cnJlbnRWZXJzaW9uLCByZWxlYXNlVHlwZSk7XG4gIGFzc2VydE5vbk51bGxhYmxlKG5ld1ZlcnNpb24sIGBGYWlsZWQgdG8gaW5jcmVtZW50IHZlcnNpb24gZnJvbSAnJHtjdXJyZW50VmVyc2lvbn0nIHdpdGggdHlwZSAnJHt2ZXJzaW9uVHlwZX0nYCk7XG5cbiAgcmV0dXJuIG5ld1ZlcnNpb247XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSByZWxlYXNlIG5vdGVzIGZvciBhIHNwZWNpZmljIHZlcnNpb24gZnJvbSB0aGUgY2hhbmdlbG9nLlxuICpcbiAqIEBwYXJhbSBuZXdWZXJzaW9uIC0gVGhlIG5ldyB2ZXJzaW9uIG51bWJlciBmb3Igd2hpY2ggdG8gZ2V0IHRoZSByZWxlYXNlIG5vdGVzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgcmVsZWFzZSBub3RlcyBmb3IgdGhlIHNwZWNpZmllZCB2ZXJzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UmVsZWFzZU5vdGVzKG5ld1ZlcnNpb246IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGNoYW5nZWxvZ1BhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5DaGFuZ2Vsb2dNZCk7XG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShjaGFuZ2Vsb2dQYXRoLCAndXRmLTgnKTtcbiAgY29uc3QgbmV3VmVyc2lvbkVzY2FwZWQgPSByZXBsYWNlQWxsKG5ld1ZlcnNpb24sICcuJywgJ1xcXFwuJyk7XG4gIGNvbnN0IG1hdGNoID0gbmV3IFJlZ0V4cChgXFxuIyMgJHtuZXdWZXJzaW9uRXNjYXBlZH1cXG5cXG4oKC58XFxuKSs/KVxcblxcbiMjYCkuZXhlYyhjb250ZW50KTtcbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIHY4IHRyYWNrcyBvcHRpb25hbCBjaGFpbmluZyBhbmQgdGVybmFyeSBhcyBzZXBhcmF0ZSBicmFuY2hlczsgYm90aCBwYXRocyBhcmUgdGVzdGVkLiAqL1xuICBsZXQgcmVsZWFzZU5vdGVzID0gbWF0Y2g/LlsxXSA/IGAke21hdGNoWzFdfVxcblxcbmAgOiAnJztcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICBjb25zdCB0YWdzID0gKGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2l0IHRhZyAtLXNvcnQ9LWNyZWF0b3JkYXRlJywgeyBpc1F1aWV0OiB0cnVlIH0pKS5zcGxpdCgvXFxyP1xcbi8pO1xuICBjb25zdCBwcmV2aW91c1ZlcnNpb24gPSB0YWdzWzFdO1xuICBsZXQgY2hhbmdlc1VybDogc3RyaW5nO1xuXG4gIGNvbnN0IHJlcG9VcmwgPSBhd2FpdCBleGVjRnJvbVJvb3QoJ2doIHJlcG8gdmlldyAtLWpzb24gdXJsIC1xIC51cmwnLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG5cbiAgaWYgKHByZXZpb3VzVmVyc2lvbikge1xuICAgIGNoYW5nZXNVcmwgPSBgJHtyZXBvVXJsfS9jb21wYXJlLyR7cHJldmlvdXNWZXJzaW9ufS4uLiR7bmV3VmVyc2lvbn1gO1xuICB9IGVsc2Uge1xuICAgIGNoYW5nZXNVcmwgPSBgJHtyZXBvVXJsfS9jb21taXRzLyR7bmV3VmVyc2lvbn1gO1xuICB9XG5cbiAgcmVsZWFzZU5vdGVzICs9IGAqKkZ1bGwgQ2hhbmdlbG9nKio6ICR7Y2hhbmdlc1VybH1gO1xuICByZXR1cm4gcmVsZWFzZU5vdGVzO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgdGhlIHR5cGUgb2YgdmVyc2lvbiB1cGRhdGUgYmFzZWQgb24gdGhlIGlucHV0IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvblVwZGF0ZVR5cGUgLSBUaGUgaW5wdXQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmVyc2lvbiB1cGRhdGUgdHlwZS5cbiAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIGBWZXJzaW9uVXBkYXRlVHlwZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzaW9uVXBkYXRlVHlwZSh2ZXJzaW9uVXBkYXRlVHlwZTogc3RyaW5nKTogVmVyc2lvblVwZGF0ZVR5cGUge1xuICBjb25zdCB2ZXJzaW9uVXBkYXRlVHlwZUVudW0gPSB2ZXJzaW9uVXBkYXRlVHlwZSBhcyBWZXJzaW9uVXBkYXRlVHlwZTtcbiAgc3dpdGNoICh2ZXJzaW9uVXBkYXRlVHlwZUVudW0pIHtcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLk1ham9yOlxuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuTWlub3I6XG4gICAgY2FzZSBWZXJzaW9uVXBkYXRlVHlwZS5QYXRjaDpcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLlByZU1ham9yOlxuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuUHJlTWlub3I6XG4gICAgY2FzZSBWZXJzaW9uVXBkYXRlVHlwZS5QcmVQYXRjaDpcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLlByZVJlbGVhc2U6XG4gICAgICByZXR1cm4gdmVyc2lvblVwZGF0ZVR5cGVFbnVtO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGlmICgvXlxcZCtcXC5cXGQrXFwuXFxkKyg/Oi1bXFx3XFxkLi1dKyk/JC8udGVzdCh2ZXJzaW9uVXBkYXRlVHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIFZlcnNpb25VcGRhdGVUeXBlLk1hbnVhbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFZlcnNpb25VcGRhdGVUeXBlLkludmFsaWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQdXNoZXMgY29tbWl0cyBhbmQgdGFncyB0byB0aGUgcmVtb3RlIEdpdCByZXBvc2l0b3J5LlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcHVzaCBvcGVyYXRpb24gaXMgY29tcGxldGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnaXRQdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBleGVjRnJvbVJvb3QoJ2dpdCBwdXNoIC0tZm9sbG93LXRhZ3MgLS1mb3JjZScsIHsgaXNRdWlldDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBQdWJsaXNoZXMgYSBHaXRIdWIgcmVsZWFzZSBmb3IgdGhlIG5ldyB2ZXJzaW9uLlxuICpcbiAqIEhhbmRsZXMgdGhlIGNyZWF0aW9uIG9mIGEgcmVsZWFzZSBhbmQgdXBsb2FkaW5nIGZpbGVzIGZvciBlaXRoZXIgYW4gT2JzaWRpYW4gcGx1Z2luIG9yIGFub3RoZXIgcHJvamVjdC5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBudW1iZXIgZm9yIHRoZSByZWxlYXNlLlxuICogQHBhcmFtIGlzT2JzaWRpYW5QbHVnaW4gLSBBIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgcHJvamVjdCBpcyBhbiBPYnNpZGlhbiBwbHVnaW4uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHJlbGVhc2UgaGFzIGJlZW4gcHVibGlzaGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHVibGlzaEdpdEh1YlJlbGVhc2UobmV3VmVyc2lvbjogc3RyaW5nLCBpc09ic2lkaWFuUGx1Z2luOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGxldCBmaWxlUGF0aHM6IHN0cmluZ1tdO1xuXG4gIGlmIChpc09ic2lkaWFuUGx1Z2luKSB7XG4gICAgY29uc3QgYnVpbGRGb2xkZXIgPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQpO1xuICAgIGNvbnN0IGZpbGVOYW1lcyA9IGF3YWl0IHJlYWRkaXJQb3NpeChidWlsZEZvbGRlcik7XG4gICAgZmlsZVBhdGhzID0gZmlsZU5hbWVzLm1hcCgoZmlsZU5hbWUpID0+IGpvaW4oYnVpbGRGb2xkZXIsIGZpbGVOYW1lKSk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IHJlc3VsdE91dHB1dCA9IGF3YWl0IGV4ZWNGcm9tUm9vdChbJ25wbScsICdwYWNrJywgJy0tcGFjay1kZXN0aW5hdGlvbicsIE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuRGlzdCwgJy0tanNvbiddLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gICAgY29uc3QgaW5kZXggPSByZXN1bHRPdXRwdXQuaW5kZXhPZignW1xcbiAgeycpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGZpbmQgdGhlIHN0YXJ0IG9mIHRoZSBKU09OIGFycmF5IGluIHRoZSByZXN1bHQgb3V0cHV0Jyk7XG4gICAgfVxuICAgIHJlc3VsdE91dHB1dCA9IHJlc3VsdE91dHB1dC5zbGljZShpbmRleCk7XG4gICAgY29uc3QgcmVzdWx0ID0gSlNPTi5wYXJzZShyZXN1bHRPdXRwdXQpIGFzIFtOcG1QYWNrUmVzdWx0XTtcbiAgICBmaWxlUGF0aHMgPSBbXG4gICAgICBqb2luKE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuRGlzdCwgcmVzdWx0WzBdLmZpbGVuYW1lKSxcbiAgICAgIGpvaW4oT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EaXN0LCBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLlN0eWxlc0NzcylcbiAgICBdO1xuICB9XG5cbiAgZmlsZVBhdGhzID0gZmlsZVBhdGhzLmZpbHRlcigoZmlsZVBhdGgpID0+IGV4aXN0c1N5bmMocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoZmlsZVBhdGgpKSk7XG5cbiAgYXdhaXQgZXhlY0Zyb21Sb290KFtcbiAgICAnZ2gnLFxuICAgICdyZWxlYXNlJyxcbiAgICAnY3JlYXRlJyxcbiAgICBuZXdWZXJzaW9uLFxuICAgIC4uLmZpbGVQYXRocyxcbiAgICAnLS10aXRsZScsXG4gICAgYHYke25ld1ZlcnNpb259YCxcbiAgICAuLi4oaXNQcmVSZWxlYXNlKG5ld1ZlcnNpb24pID8gWyctLXByZXJlbGVhc2UnXSA6IFtdKSxcbiAgICAnLS1ub3Rlcy1maWxlJyxcbiAgICAnLSdcbiAgXSwge1xuICAgIGlzUXVpZXQ6IHRydWUsXG4gICAgc3RkaW46IGF3YWl0IGdldFJlbGVhc2VOb3RlcyhuZXdWZXJzaW9uKVxuICB9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIHRoZSBjaGFuZ2Vsb2cgZmlsZSB3aXRoIG5ldyB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBjb21taXQgbWVzc2FnZXMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgY3VycmVudCBjaGFuZ2Vsb2csIGFwcGVuZHMgbmV3IGVudHJpZXMgZm9yIHRoZSBsYXRlc3QgdmVyc2lvbixcbiAqIGFuZCBwcm9tcHRzIHRoZSB1c2VyIHRvIHJldmlldyB0aGUgY2hhbmdlcy5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBudW1iZXIgdG8gYmUgYWRkZWQgdG8gdGhlIGNoYW5nZWxvZy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY2hhbmdlbG9nIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUNoYW5nZWxvZyhuZXdWZXJzaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgSEVBREVSX0xJTkVTX0NPVU5UID0gMjtcbiAgY29uc3QgY2hhbmdlbG9nUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkNoYW5nZWxvZ01kKTtcbiAgbGV0IHByZXZpb3VzQ2hhbmdlbG9nTGluZXM6IHN0cmluZ1tdO1xuICBpZiAoZXhpc3RzU3luYyhjaGFuZ2Vsb2dQYXRoKSkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShjaGFuZ2Vsb2dQYXRoLCAndXRmLTgnKTtcbiAgICBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJykuc2xpY2UoSEVBREVSX0xJTkVTX0NPVU5UKTtcbiAgICBpZiAocHJldmlvdXNDaGFuZ2Vsb2dMaW5lcy5hdCgtMSkgPT09ICcnKSB7XG4gICAgICBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzLnBvcCgpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBwcmV2aW91c0NoYW5nZWxvZ0xpbmVzID0gW107XG4gIH1cblxuICBjb25zdCBsYXN0VGFnID0gcmVwbGFjZUFsbChwcmV2aW91c0NoYW5nZWxvZ0xpbmVzWzBdID8/ICcnLCAnIyMgJywgJycpO1xuICBjb25zdCBjb21taXRSYW5nZSA9IGxhc3RUYWcgPyBgJHtsYXN0VGFnfS4uSEVBRGAgOiAnSEVBRCc7XG4gIGNvbnN0IGNvbW1pdE1lc3NhZ2VzU3RyID0gYXdhaXQgZXhlY0Zyb21Sb290KGBnaXQgbG9nICR7Y29tbWl0UmFuZ2V9IC0tZm9ybWF0PSVCIC0tZmlyc3QtcGFyZW50IC16YCwgeyBpc1F1aWV0OiB0cnVlIH0pO1xuICBjb25zdCBjb21taXRNZXNzYWdlcyA9IGNvbW1pdE1lc3NhZ2VzU3RyLnNwbGl0KCdcXDAnKS5maWx0ZXIoQm9vbGVhbikubWFwKHRvU2luZ2xlTGluZSk7XG5cbiAgbGV0IG5ld0NoYW5nZUxvZyA9IGAjIENIQU5HRUxPR1xcblxcbiMjICR7bmV3VmVyc2lvbn1cXG5cXG5gO1xuXG4gIGZvciAoY29uc3QgbWVzc2FnZSBvZiBjb21taXRNZXNzYWdlcykge1xuICAgIG5ld0NoYW5nZUxvZyArPSBgLSAke21lc3NhZ2V9XFxuYDtcbiAgfVxuXG4gIGlmIChwcmV2aW91c0NoYW5nZWxvZ0xpbmVzLmxlbmd0aCA+IDApIHtcbiAgICBuZXdDaGFuZ2VMb2cgKz0gJ1xcbic7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIHByZXZpb3VzQ2hhbmdlbG9nTGluZXMpIHtcbiAgICAgIG5ld0NoYW5nZUxvZyArPSBgJHtsaW5lfVxcbmA7XG4gICAgfVxuICB9XG5cbiAgYXdhaXQgd3JpdGVGaWxlKGNoYW5nZWxvZ1BhdGgsIG5ld0NoYW5nZUxvZywgJ3V0Zi04Jyk7XG5cbiAgY29uc3QgY29kZVZlcnNpb24gPSBhd2FpdCBleGVjRnJvbVJvb3QoJ2NvZGUgLS12ZXJzaW9uJywge1xuICAgIGlzUXVpZXQ6IHRydWUsXG4gICAgc2hvdWxkSWdub3JlRXhpdENvZGU6IHRydWVcbiAgfSk7XG4gIGNvbnN0IHZlcnNpb25EZWJ1Z2dlciA9IGdldExpYkRlYnVnZ2VyKCdWZXJzaW9uJyk7XG4gIGlmIChjb2RlVmVyc2lvbikge1xuICAgIHZlcnNpb25EZWJ1Z2dlcihgUGxlYXNlIHVwZGF0ZSB0aGUgJHtPYnNpZGlhblBsdWdpblJlcG9QYXRocy5DaGFuZ2Vsb2dNZH0gZmlsZS4gQ2xvc2UgVmlzdWFsIFN0dWRpbyBDb2RlIHdoZW4geW91IGFyZSBkb25lLi4uYCk7XG4gICAgYXdhaXQgZXhlY0Zyb21Sb290KFsnY29kZScsICctdycsIGNoYW5nZWxvZ1BhdGhdLCB7XG4gICAgICBpc1F1aWV0OiB0cnVlLFxuICAgICAgc2hvdWxkSWdub3JlRXhpdENvZGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB2ZXJzaW9uRGVidWdnZXIoJ0NvdWxkIG5vdCBmaW5kIFZpc3VhbCBTdHVkaW8gQ29kZSBpbiB5b3VyIFBBVEguIFVzaW5nIGNvbnNvbGUgbW9kZSBpbnN0ZWFkLicpO1xuICAgIGF3YWl0IGNyZWF0ZUludGVyZmFjZShwcm9jZXNzLnN0ZGluLCBwcm9jZXNzLnN0ZG91dCkucXVlc3Rpb24oXG4gICAgICBgUGxlYXNlIHVwZGF0ZSB0aGUgJHtPYnNpZGlhblBsdWdpblJlcG9QYXRocy5DaGFuZ2Vsb2dNZH0gZmlsZS4gUHJlc3MgRW50ZXIgd2hlbiB5b3UgYXJlIGRvbmUuLi5gXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHZlcnNpb24gb2YgdGhlIHByb2plY3QgYmFzZWQgb24gdGhlIHNwZWNpZmllZCB1cGRhdGUgdHlwZS5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgc2VyaWVzIG9mIHRhc2tzIHRvIGhhbmRsZSB2ZXJzaW9uIHVwZGF0ZXM6XG4gKiAxLiBWYWxpZGF0ZXMgdGhlIHZlcnNpb24gdXBkYXRlIHR5cGUuXG4gKiAyLiBDaGVja3MgaWYgR2l0IGFuZCBHaXRIdWIgQ0xJIGFyZSBpbnN0YWxsZWQuXG4gKiAzLiBWZXJpZmllcyB0aGF0IHRoZSBHaXQgcmVwb3NpdG9yeSBpcyBjbGVhbi5cbiAqIDQuIFJ1bnMgc3BlbGxjaGVjayBhbmQgbGludGluZy5cbiAqIDUuIEJ1aWxkcyB0aGUgcHJvamVjdC5cbiAqIDYuIFVwZGF0ZXMgdmVyc2lvbiBpbiBmaWxlcyBhbmQgY2hhbmdlbG9nLlxuICogNy4gQWRkcyB1cGRhdGVkIGZpbGVzIHRvIEdpdCwgdGFncyB0aGUgY29tbWl0LCBhbmQgcHVzaGVzIHRvIHRoZSByZXBvc2l0b3J5LlxuICogOC4gSWYgYW4gT2JzaWRpYW4gcGx1Z2luLCBjb3BpZXMgdGhlIHVwZGF0ZWQgbWFuaWZlc3QgYW5kIHB1Ymxpc2hlcyBhIEdpdEh1YiByZWxlYXNlLlxuICpcbiAqIEBwYXJhbSB2ZXJzaW9uVXBkYXRlVHlwZSAtIFRoZSB0eXBlIG9mIHZlcnNpb24gdXBkYXRlIHRvIHBlcmZvcm0gKG1ham9yLCBtaW5vciwgcGF0Y2gsIHByZW1ham9yLCBwcmVtaW5vciwgcHJlcGF0Y2gsIHByZXJlbGVhc2UsIG9yIHgueS56Wy1zdWZmaXhdKS5cbiAqIEBwYXJhbSBwcmVwYXJlR2l0SHViUmVsZWFzZSAtIEEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcHJlcGFyZSB0aGUgR2l0SHViIHJlbGVhc2UuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHZlcnNpb24gdXBkYXRlIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlVmVyc2lvbih2ZXJzaW9uVXBkYXRlVHlwZT86IHN0cmluZywgcHJlcGFyZUdpdEh1YlJlbGVhc2U/OiAobmV3VmVyc2lvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghdmVyc2lvblVwZGF0ZVR5cGUpIHtcbiAgICBjb25zdCBucG1PbGRWZXJzaW9uID0gcHJvY2Vzcy5lbnZbJ25wbV9vbGRfdmVyc2lvbiddO1xuICAgIGNvbnN0IG5wbU5ld1ZlcnNpb24gPSBwcm9jZXNzLmVudlsnbnBtX25ld192ZXJzaW9uJ107XG5cbiAgICBpZiAobnBtT2xkVmVyc2lvbiAmJiBucG1OZXdWZXJzaW9uKSB7XG4gICAgICBhd2FpdCB1cGRhdGVWZXJzaW9uSW5GaWxlcyhucG1PbGRWZXJzaW9uKTtcbiAgICAgIGF3YWl0IHVwZGF0ZVZlcnNpb24obnBtTmV3VmVyc2lvbiwgcHJlcGFyZUdpdEh1YlJlbGVhc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignTm8gdmVyc2lvbiB1cGRhdGUgdHlwZSBwcm92aWRlZCcpO1xuICB9XG5cbiAgY29uc3QgaXNPYnNpZGlhblBsdWdpbiA9IGV4aXN0c1N5bmMocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uKSkgJiYgKGF3YWl0IHJlYWRQYWNrYWdlSnNvbigpKS5uYW1lICE9PSAnb2JzaWRpYW4tZGV2LXV0aWxzJztcblxuICB2YWxpZGF0ZSh2ZXJzaW9uVXBkYXRlVHlwZSk7XG4gIGF3YWl0IGNoZWNrR2l0SW5zdGFsbGVkKCk7XG4gIGF3YWl0IGNoZWNrR2l0UmVwb0NsZWFuKCk7XG4gIGF3YWl0IGNoZWNrR2l0SHViQ2xpSW5zdGFsbGVkKCk7XG4gIGF3YWl0IG5wbVJ1bignZm9ybWF0OmNoZWNrJyk7XG4gIGF3YWl0IG5wbVJ1bignc3BlbGxjaGVjaycpO1xuICBhd2FpdCBucG1SdW4oJ2xpbnQ6bWQnKTtcbiAgYXdhaXQgbnBtUnVuKCdidWlsZCcpO1xuICBhd2FpdCBucG1SdW4oJ2xpbnQnKTtcbiAgYXdhaXQgbnBtUnVuT3B0aW9uYWwoJ3Rlc3QnKTtcbiAgYXdhaXQgbnBtUnVuT3B0aW9uYWwoJ3Rlc3Q6aW50ZWdyYXRpb24nKTtcbiAgYXdhaXQgbnBtUnVuT3B0aW9uYWwoJ3Rlc3Q6Y292ZXJhZ2UnKTtcblxuICBjb25zdCBuZXdWZXJzaW9uID0gYXdhaXQgZ2V0TmV3VmVyc2lvbih2ZXJzaW9uVXBkYXRlVHlwZSk7XG4gIGF3YWl0IHVwZGF0ZVZlcnNpb25JbkZpbGVzKG5ld1ZlcnNpb24pO1xuICBpZiAoaXNPYnNpZGlhblBsdWdpbikge1xuICAgIGF3YWl0IHVwZGF0ZVZlcnNpb25JbkZpbGVzRm9yUGx1Z2luKG5ld1ZlcnNpb24pO1xuICB9XG5cbiAgYXdhaXQgdXBkYXRlQ2hhbmdlbG9nKG5ld1ZlcnNpb24pO1xuICBhd2FpdCBhZGRVcGRhdGVkRmlsZXNUb0dpdChuZXdWZXJzaW9uKTtcbiAgYXdhaXQgYWRkR2l0VGFnKG5ld1ZlcnNpb24pO1xuICBhd2FpdCBnaXRQdXNoKCk7XG4gIGF3YWl0IHByZXBhcmVHaXRIdWJSZWxlYXNlPy4obmV3VmVyc2lvbik7XG4gIGF3YWl0IHB1Ymxpc2hHaXRIdWJSZWxlYXNlKG5ld1ZlcnNpb24sIGlzT2JzaWRpYW5QbHVnaW4pO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHZlcnNpb24gaW4gdmFyaW91cyBmaWxlcywgaW5jbHVkaW5nIGBwYWNrYWdlLmpzb25gLCBgcGFja2FnZS1sb2NrLmpzb25gLFxuICogYW5kIE9ic2lkaWFuIHBsdWdpbiBtYW5pZmVzdHMgaWYgYXBwbGljYWJsZS5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBzdHJpbmcgdG8gdXBkYXRlIGluIHRoZSBmaWxlcy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlVmVyc2lvbkluRmlsZXMobmV3VmVyc2lvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGVkaXRQYWNrYWdlSnNvbigocGFja2FnZUpzb24pID0+IHtcbiAgICBwYWNrYWdlSnNvbi52ZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgfSk7XG5cbiAgYXdhaXQgZWRpdFBhY2thZ2VMb2NrSnNvbih1cGRhdGUsIHsgc2hvdWxkU2tpcElmTWlzc2luZzogdHJ1ZSB9KTtcbiAgYXdhaXQgZWRpdE5wbVNocmlua1dyYXBKc29uKHVwZGF0ZSwgeyBzaG91bGRTa2lwSWZNaXNzaW5nOiB0cnVlIH0pO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZShwYWNrYWdlTG9ja0pzb246IFBhY2thZ2VMb2NrSnNvbik6IHZvaWQge1xuICAgIHBhY2thZ2VMb2NrSnNvbi52ZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgICBjb25zdCBkZWZhdWx0UGFja2FnZSA9IHBhY2thZ2VMb2NrSnNvbi5wYWNrYWdlcz8uWycnXTtcbiAgICBpZiAoZGVmYXVsdFBhY2thZ2UpIHtcbiAgICAgIGRlZmF1bHRQYWNrYWdlLnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgdmVyc2lvbiB1cGRhdGUgdHlwZSB0byBlbnN1cmUgaXQgaXMgZWl0aGVyIGEgcmVjb2duaXplZCB0eXBlXG4gKiBvciBhIHZhbGlkIG1hbnVhbCB2ZXJzaW9uIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvblVwZGF0ZVR5cGUgLSBUaGUgdmVyc2lvbiB1cGRhdGUgdHlwZSB0byB2YWxpZGF0ZS5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIHZlcnNpb24gdXBkYXRlIHR5cGUgaXMgaW52YWxpZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlKHZlcnNpb25VcGRhdGVUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGdldFZlcnNpb25VcGRhdGVUeXBlKHZlcnNpb25VcGRhdGVUeXBlKSA9PT0gVmVyc2lvblVwZGF0ZVR5cGUuSW52YWxpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdJbnZhbGlkIHZlcnNpb24gdXBkYXRlIHR5cGUuIFBsZWFzZSB1c2UgXFwnbWFqb3JcXCcsIFxcJ21pbm9yXFwnLCBcXCdwYXRjaFxcJywgXFwncHJlbWFqb3JcXCcsIFxcJ3ByZW1pbm9yXFwnLCBcXCdwcmVwYXRjaFxcJywgXFwncHJlcmVsZWFzZVxcJywgb3IgXFwneC55LnpbLXN1ZmZpeF1cXCcgZm9ybWF0LidcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogRmV0Y2hlcyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgT2JzaWRpYW4gZnJvbSB0aGUgR2l0SHViIHJlbGVhc2VzIEFQSS5cbiAqXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBPYnNpZGlhbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0T2JzaWRpYW5WZXJzaW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gV2UgcnVuIHRoaXMgb3V0c2lkZSBvZiBPYnNpZGlhbiwgc28gd2UgZG9uJ3QgaGF2ZSBgcmVxdWVzdFVybCgpYC5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9vYnNpZGlhbm1kL29ic2lkaWFuLXJlbGVhc2VzL3JlbGVhc2VzL2xhdGVzdCcpO1xuICBjb25zdCBvYnNpZGlhblJlbGVhc2VzSnNvbiA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBQYXJ0aWFsPE9ic2lkaWFuUmVsZWFzZXNKc29uPjtcbiAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKG9ic2lkaWFuUmVsZWFzZXNKc29uLm5hbWUsICdDb3VsZCBub3QgZmluZCB0aGUgbmFtZSBvZiB0aGUgbGF0ZXN0IE9ic2lkaWFuIHJlbGVhc2UnKTtcbn1cblxuZnVuY3Rpb24gaXNQcmVSZWxlYXNlKHZlcnNpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gcHJlcmVsZWFzZSh2ZXJzaW9uKSAhPT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gdG9TaW5nbGVMaW5lKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBzdHIuc3BsaXQoL1xccj9cXG4vKS5maWx0ZXIoQm9vbGVhbik7XG4gIHJldHVybiBsaW5lcy5qb2luKCcgJyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVZlcnNpb25JbkZpbGVzRm9yUGx1Z2luKG5ld1ZlcnNpb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBtYW5pZmVzdEJldGFKc29uUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0QmV0YUpzb24pO1xuICBpZiAoaXNQcmVSZWxlYXNlKG5ld1ZlcnNpb24pKSB7XG4gICAgYXdhaXQgY3AoXG4gICAgICByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEpzb24pLFxuICAgICAgbWFuaWZlc3RCZXRhSnNvblBhdGgsXG4gICAgICB7IGZvcmNlOiB0cnVlIH1cbiAgICApO1xuICAgIGF3YWl0IGVkaXRKc29uPE1hbmlmZXN0PihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEJldGFKc29uLCAobWFuaWZlc3QpID0+IHtcbiAgICAgIG1hbmlmZXN0LnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGxhdGVzdE9ic2lkaWFuVmVyc2lvbiA9IGF3YWl0IGdldExhdGVzdE9ic2lkaWFuVmVyc2lvbigpO1xuXG4gICAgYXdhaXQgZWRpdEpzb248TWFuaWZlc3Q+KE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiwgKG1hbmlmZXN0KSA9PiB7XG4gICAgICBtYW5pZmVzdC5taW5BcHBWZXJzaW9uID0gbGF0ZXN0T2JzaWRpYW5WZXJzaW9uO1xuICAgICAgbWFuaWZlc3QudmVyc2lvbiA9IG5ld1ZlcnNpb247XG4gICAgfSk7XG5cbiAgICBhd2FpdCBlZGl0SnNvbjxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5WZXJzaW9uc0pzb24sICh2ZXJzaW9ucykgPT4ge1xuICAgICAgdmVyc2lvbnNbbmV3VmVyc2lvbl0gPSBsYXRlc3RPYnNpZGlhblZlcnNpb247XG4gICAgfSk7XG5cbiAgICBpZiAoZXhpc3RzU3luYyhtYW5pZmVzdEJldGFKc29uUGF0aCkpIHtcbiAgICAgIGF3YWl0IHJtKG1hbmlmZXN0QmV0YUpzb25QYXRoKTtcbiAgICB9XG4gIH1cblxuICBhd2FpdCBjb3B5VXBkYXRlZE1hbmlmZXN0KCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQSxxQkFBMkI7QUFDM0Isc0JBS087QUFDUCxJQUFBQSxtQkFBZ0M7QUFDaEMsb0JBR087QUFJUCxtQkFBK0I7QUFDL0Isd0NBQXdDO0FBQ3hDLGtCQUFxQjtBQUNyQixvQkFBMkI7QUFDM0IseUJBR087QUFDUCxnQkFBNkI7QUFDN0Isa0JBQXlCO0FBQ3pCLHFCQUdPO0FBQ1AsaUJBS087QUFD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QUFvQixRQUFRLEVBQUUscUJBQXFCLEtBQUssQ0FBQztBQUMvRCxZQUFNLGtDQUFzQixRQUFRLEVBQUUscUJBQXFCLEtBQUssQ0FBQztBQUVqRSxXQUFTLE9BQU8saUJBQXdDO0FBQ3RELG9CQUFnQixVQUFVO0FBQzFCLFVBQU0saUJBQWlCLGdCQUFnQixXQUFXLEVBQUU7QUFDcEQsUUFBSSxnQkFBZ0I7QUFDbEIscUJBQWUsVUFBVTtBQUFBLElBQzNCO0FBQUEsRUFDRjtBQUNGO0FBU08sU0FBUyxTQUFTLG1CQUFpQztBQUN4RCxNQUFJLHFCQUFxQixpQkFBaUIsTUFBTSx5QkFBMkI7QUFDekUsVUFBTSxJQUFJO0FBQUEsTUFDUjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7QUFPQSxlQUFlLDJCQUE0QztBQUV6RCxRQUFNLFdBQVcsTUFBTSxNQUFNLDJFQUEyRTtBQUN4RyxRQUFNLHVCQUF1QixNQUFNLFNBQVMsS0FBSztBQUNqRCxhQUFPLHNDQUFrQixxQkFBcUIsTUFBTSx3REFBd0Q7QUFDOUc7QUFFQSxTQUFTLGFBQWEsU0FBMEI7QUFDOUMsYUFBTywwQkFBVyxPQUFPLE1BQU07QUFDakM7QUFFQSxTQUFTLGFBQWEsS0FBcUI7QUFDekMsUUFBTSxRQUFRLElBQUksTUFBTSxPQUFPLEVBQUUsT0FBTyxPQUFPO0FBQy9DLFNBQU8sTUFBTSxLQUFLLEdBQUc7QUFDdkI7QUFFQSxlQUFlLDhCQUE4QixZQUFtQztBQUM5RSxRQUFNLDJCQUF1QixxQ0FBd0IsMERBQXdCLGdCQUFnQjtBQUM3RixNQUFJLGFBQWEsVUFBVSxHQUFHO0FBQzVCLGNBQU07QUFBQSxVQUNKLHFDQUF3QiwwREFBd0IsWUFBWTtBQUFBLE1BQzVEO0FBQUEsTUFDQSxFQUFFLE9BQU8sS0FBSztBQUFBLElBQ2hCO0FBQ0EsY0FBTSxzQkFBbUIsMERBQXdCLGtCQUFrQixDQUFDLGFBQWE7QUFDL0UsZUFBUyxVQUFVO0FBQUEsSUFDckIsQ0FBQztBQUFBLEVBQ0gsT0FBTztBQUNMLFVBQU0sd0JBQXdCLE1BQU0seUJBQXlCO0FBRTdELGNBQU0sc0JBQW1CLDBEQUF3QixjQUFjLENBQUMsYUFBYTtBQUMzRSxlQUFTLGdCQUFnQjtBQUN6QixlQUFTLFVBQVU7QUFBQSxJQUNyQixDQUFDO0FBRUQsY0FBTSxzQkFBaUMsMERBQXdCLGNBQWMsQ0FBQyxhQUFhO0FBQ3pGLGVBQVMsVUFBVSxJQUFJO0FBQUEsSUFDekIsQ0FBQztBQUVELFlBQUksMkJBQVcsb0JBQW9CLEdBQUc7QUFDcEMsZ0JBQU0sb0JBQUcsb0JBQW9CO0FBQUEsSUFDL0I7QUFBQSxFQUNGO0FBRUEsUUFBTSxvQkFBb0I7QUFDNUI7IiwKICAibmFtZXMiOiBbImltcG9ydF9wcm9taXNlcyIsICJWZXJzaW9uVXBkYXRlVHlwZSJdCn0K
@@ -4,6 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
8
  const globalThisRecord = globalThis;
8
9
  globalThisRecord['__name'] ??= name;
9
10
  const originalRequire = require;
@@ -83,10 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
83
84
  return originalRequire?.(id);
84
85
  }
85
86
 
86
- // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
87
- if (globalThis?.app?.isMobile) {
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
88
+ if (globalThis.app.isMobile) {
88
89
  if (id === 'process' || id === 'node:process') {
90
+ // eslint-disable-next-line no-console -- Valid usage.
89
91
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
90
93
  return globalThis.process;
91
94
  }
92
95
  } else {
@@ -96,6 +99,7 @@ if you want to view the source, please visit the github repository of this plugi
96
99
  }
97
100
  }
98
101
 
102
+ // eslint-disable-next-line no-console -- Valid usage.
99
103
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
100
104
  return {};
101
105
  }
@@ -175,4 +179,4 @@ function wrapProxy(value) {
175
179
  0 && (module.exports = {
176
180
  strictProxy
177
181
  });
178
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3N0cmljdC1wcm94eS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFN0cmljdGx5LXR5cGVkIG1vY2sgb2JqZWN0IGZhY3RvcnkgdmlhIGBQcm94eWAuIFRocm93cyBhIGRlc2NyaXB0aXZlIGVycm9yXG4gKiB3aGVuIGFueSB1bm1vY2tlZCBwcm9wZXJ0eSBpcyBhY2Nlc3NlZCwgcHJldmVudGluZyBzaWxlbnQgYHVuZGVmaW5lZGAgcmV0dXJucy5cbiAqXG4gKiBUaGUgcHJveHkgaW1wbGVtZW50YXRpb24gbWlycm9ycyB0aGUgZGVzaWduIG9mXG4gKiBgb2JzaWRpYW4tdGVzdC1tb2Nrcy9zcmMvaW50ZXJuYWwvc3RyaWN0LXByb3h5LnRzYC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBhcnRpYWxEZWVwIH0gZnJvbSAndHlwZS1mZXN0JztcblxuY29uc3QgU1RSSUNUX1BST1hZX01BUktFUiA9IFN5bWJvbCgnc3RyaWN0UHJveHknKTtcblxuY29uc3QgUEFTU1RIUk9VR0hfUFJPUFMgPSBuZXcgU2V0PHN0cmluZyB8IHN5bWJvbD4oW1xuICBTeW1ib2wuaXRlcmF0b3IsXG4gIFN5bWJvbC50b1ByaW1pdGl2ZSxcbiAgU3ltYm9sLnRvU3RyaW5nVGFnLFxuICAndGhlbicsXG4gICd0b0pTT04nXG5dKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RyaWN0bHktdHlwZWQgbW9jayBvYmplY3QgZnJvbSBhIHBhcnRpYWwgaW1wbGVtZW50YXRpb24uXG4gKiBVc2VzIGEgYFByb3h5YCB0aGF0IHRocm93cyBhIGRlc2NyaXB0aXZlIGVycm9yIHdoZW4gYW55IHVubW9ja2VkXG4gKiBwcm9wZXJ0eSBpcyBhY2Nlc3NlZCwgcHJldmVudGluZyBzaWxlbnQgYHVuZGVmaW5lZGAgcmV0dXJucy5cbiAqXG4gKiAtIElkZW1wb3RlbnQ6IGRvdWJsZS13cmFwcGluZyBpcyBhIG5vLW9wLlxuICogLSBQYXNzdGhyb3VnaCBmb3Igd2VsbC1rbm93biBwcm9wcyAoYHRoZW5gLCBgdG9KU09OYCwgYFN5bWJvbC5pdGVyYXRvcmAsIGV0Yy4pLlxuICogLSBSZWN1cnNpdmUgcHJveHlpbmcgb2YgbmVzdGVkIHBsYWluIG9iamVjdHMuXG4gKlxuICogQHBhcmFtIHBhcnRpYWwgLSBBIHBhcnRpYWwgb2JqZWN0IGNvbnRhaW5pbmcgb25seSB0aGUgbW9ja2VkIG1lbWJlcnMuXG4gKiBAcmV0dXJucyBBIHByb3h5IHR5cGVkIGFzIGBUYCB0aGF0IHRocm93cyBvbiB1bm1vY2tlZCBwcm9wZXJ0eSBhY2Nlc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpY3RQcm94eTxUPihwYXJ0aWFsOiBQYXJ0aWFsRGVlcDxUPik6IFQge1xuICByZXR1cm4gd3JhcFByb3h5PFQ+KHBhcnRpYWwpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGFuIG9iamVjdC1saWtlIHZhbHVlIChub3QgbnVsbCkuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgb2JqZWN0LWxpa2UuXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIG9iamVjdCB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGEgcGxhaW4gb2JqZWN0IChub3QgYSBjbGFzcyBpbnN0YW5jZSwgYXJyYXksIG51bGwsIGV0Yy4pLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgcGxhaW4gb2JqZWN0LlxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpID09PSBPYmplY3QucHJvdG90eXBlO1xufVxuXG4vKipcbiAqIFdyYXBzIGEgdmFsdWUgaW4gYSBzdHJpY3QgcHJveHkuIElkZW1wb3RlbnQgXHUyMDE0IGRvdWJsZS13cmFwcGluZyBpcyBhIG5vLW9wLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB3cmFwLlxuICogQHJldHVybnMgVGhlIHByb3hpZWQgdmFsdWUgdHlwZWQgYXMgYFRgLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVycyAtLSBUIHByb3ZpZGVzIHJldHVybiB0eXBlIGluZmVyZW5jZSBhdCBjYWxsIHNpdGVzLlxuZnVuY3Rpb24gd3JhcFByb3h5PFQ+KHZhbHVlOiB1bmtub3duKTogVCB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZSBhcyBUO1xuICB9XG5cbiAgaWYgKFNUUklDVF9QUk9YWV9NQVJLRVIgaW4gdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgYXMgVDtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmFsdWUsIFNUUklDVF9QUk9YWV9NQVJLRVIsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgY29uc3QgcHJveGllZENoaWxkcmVuID0gbmV3IE1hcDxzdHJpbmcgfCBzeW1ib2w+KCk7XG5cbiAgcmV0dXJuIG5ldyBQcm94eSh2YWx1ZSwge1xuICAgIGdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTogdW5rbm93biB7XG4gICAgICBpZiAocHJvcCBpbiB0YXJnZXQpIHtcbiAgICAgICAgaWYgKHByb3hpZWRDaGlsZHJlbi5oYXMocHJvcCkpIHtcbiAgICAgICAgICByZXR1cm4gcHJveGllZENoaWxkcmVuLmdldChwcm9wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbDogdW5rbm93biA9IFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICBpZiAoaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gd3JhcFByb3h5PHVua25vd24+KHZhbCk7XG4gICAgICAgICAgcHJveGllZENoaWxkcmVuLnNldChwcm9wLCByZXN1bHQpO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3ltYm9sJyB8fCBQQVNTVEhST1VHSF9QUk9QUy5oYXMocHJvcCkpIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVubW9ja2VkIHByb3BlcnR5IFwiJHtwcm9wfVwiIHdhcyBhY2Nlc3NlZCBvbiBtb2NrIG9iamVjdGApO1xuICAgIH1cbiAgfSkgYXMgVDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBWUEsTUFBTSxzQkFBc0IsdUJBQU8sYUFBYTtBQUVoRCxNQUFNLG9CQUFvQixvQkFBSSxJQUFxQjtBQUFBLEVBQ2pELE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQO0FBQUEsRUFDQTtBQUNGLENBQUM7QUFjTSxTQUFTLFlBQWUsU0FBNEI7QUFDekQsU0FBTyxVQUFhLE9BQU87QUFDN0I7QUFRQSxTQUFTLGFBQWEsT0FBaUM7QUFDckQsU0FBTyxVQUFVLFFBQVEsT0FBTyxVQUFVO0FBQzVDO0FBUUEsU0FBUyxjQUFjLE9BQWtEO0FBQ3ZFLFNBQU8sYUFBYSxLQUFLLEtBQUssT0FBTyxlQUFlLEtBQUssTUFBTSxPQUFPO0FBQ3hFO0FBU0EsU0FBUyxVQUFhLE9BQW1CO0FBQ3ZDLE1BQUksQ0FBQyxhQUFhLEtBQUssR0FBRztBQUN4QixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksdUJBQXVCLE9BQU87QUFDaEMsV0FBTztBQUFBLEVBQ1Q7QUFDQSxTQUFPLGVBQWUsT0FBTyxxQkFBcUIsRUFBRSxPQUFPLEtBQUssQ0FBQztBQUVqRSxRQUFNLGtCQUFrQixvQkFBSSxJQUFxQjtBQUVqRCxTQUFPLElBQUksTUFBTSxPQUFPO0FBQUEsSUFDdEIsSUFBSSxRQUFRLE1BQU0sVUFBbUI7QUFDbkMsVUFBSSxRQUFRLFFBQVE7QUFDbEIsWUFBSSxnQkFBZ0IsSUFBSSxJQUFJLEdBQUc7QUFDN0IsaUJBQU8sZ0JBQWdCLElBQUksSUFBSTtBQUFBLFFBQ2pDO0FBRUEsY0FBTSxNQUFlLFFBQVEsSUFBSSxRQUFRLE1BQU0sUUFBUTtBQUN2RCxZQUFJLGNBQWMsR0FBRyxHQUFHO0FBQ3RCLGdCQUFNLFNBQVMsVUFBbUIsR0FBRztBQUNyQywwQkFBZ0IsSUFBSSxNQUFNLE1BQU07QUFDaEMsaUJBQU87QUFBQSxRQUNUO0FBQ0EsZUFBTztBQUFBLE1BQ1Q7QUFFQSxVQUFJLE9BQU8sU0FBUyxZQUFZLGtCQUFrQixJQUFJLElBQUksR0FBRztBQUMzRCxlQUFPLFFBQVEsSUFBSSxRQUFRLE1BQU0sUUFBUTtBQUFBLE1BQzNDO0FBRUEsWUFBTSxJQUFJLE1BQU0sc0JBQXNCLElBQUksK0JBQStCO0FBQUEsSUFDM0U7QUFBQSxFQUNGLENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFtdCn0K
182
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3N0cmljdC1wcm94eS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFN0cmljdGx5LXR5cGVkIG1vY2sgb2JqZWN0IGZhY3RvcnkgdmlhIGBQcm94eWAuIFRocm93cyBhIGRlc2NyaXB0aXZlIGVycm9yXG4gKiB3aGVuIGFueSB1bm1vY2tlZCBwcm9wZXJ0eSBpcyBhY2Nlc3NlZCwgcHJldmVudGluZyBzaWxlbnQgYHVuZGVmaW5lZGAgcmV0dXJucy5cbiAqXG4gKiBUaGUgcHJveHkgaW1wbGVtZW50YXRpb24gbWlycm9ycyB0aGUgZGVzaWduIG9mXG4gKiBgb2JzaWRpYW4tdGVzdC1tb2Nrcy9zcmMvaW50ZXJuYWwvc3RyaWN0LXByb3h5LnRzYC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBhcnRpYWxEZWVwIH0gZnJvbSAndHlwZS1mZXN0JztcblxuY29uc3QgU1RSSUNUX1BST1hZX01BUktFUiA9IFN5bWJvbCgnc3RyaWN0UHJveHknKTtcblxuY29uc3QgUEFTU1RIUk9VR0hfUFJPUFMgPSBuZXcgU2V0PHN0cmluZyB8IHN5bWJvbD4oW1xuICBTeW1ib2wuaXRlcmF0b3IsXG4gIFN5bWJvbC50b1ByaW1pdGl2ZSxcbiAgU3ltYm9sLnRvU3RyaW5nVGFnLFxuICAndGhlbicsXG4gICd0b0pTT04nXG5dKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RyaWN0bHktdHlwZWQgbW9jayBvYmplY3QgZnJvbSBhIHBhcnRpYWwgaW1wbGVtZW50YXRpb24uXG4gKiBVc2VzIGEgYFByb3h5YCB0aGF0IHRocm93cyBhIGRlc2NyaXB0aXZlIGVycm9yIHdoZW4gYW55IHVubW9ja2VkXG4gKiBwcm9wZXJ0eSBpcyBhY2Nlc3NlZCwgcHJldmVudGluZyBzaWxlbnQgYHVuZGVmaW5lZGAgcmV0dXJucy5cbiAqXG4gKiAtIElkZW1wb3RlbnQ6IGRvdWJsZS13cmFwcGluZyBpcyBhIG5vLW9wLlxuICogLSBQYXNzdGhyb3VnaCBmb3Igd2VsbC1rbm93biBwcm9wcyAoYHRoZW5gLCBgdG9KU09OYCwgYFN5bWJvbC5pdGVyYXRvcmAsIGV0Yy4pLlxuICogLSBSZWN1cnNpdmUgcHJveHlpbmcgb2YgbmVzdGVkIHBsYWluIG9iamVjdHMuXG4gKlxuICogQHBhcmFtIHBhcnRpYWwgLSBBIHBhcnRpYWwgb2JqZWN0IGNvbnRhaW5pbmcgb25seSB0aGUgbW9ja2VkIG1lbWJlcnMuXG4gKiBAcmV0dXJucyBBIHByb3h5IHR5cGVkIGFzIGBUYCB0aGF0IHRocm93cyBvbiB1bm1vY2tlZCBwcm9wZXJ0eSBhY2Nlc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpY3RQcm94eTxUPihwYXJ0aWFsOiBQYXJ0aWFsRGVlcDxUPik6IFQge1xuICByZXR1cm4gd3JhcFByb3h5PFQ+KHBhcnRpYWwpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGFuIG9iamVjdC1saWtlIHZhbHVlIChub3QgbnVsbCkuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgb2JqZWN0LWxpa2UuXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIG9iamVjdCB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGEgcGxhaW4gb2JqZWN0IChub3QgYSBjbGFzcyBpbnN0YW5jZSwgYXJyYXksIG51bGwsIGV0Yy4pLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgcGxhaW4gb2JqZWN0LlxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpID09PSBPYmplY3QucHJvdG90eXBlO1xufVxuXG4vKipcbiAqIFdyYXBzIGEgdmFsdWUgaW4gYSBzdHJpY3QgcHJveHkuIElkZW1wb3RlbnQgXHUyMDE0IGRvdWJsZS13cmFwcGluZyBpcyBhIG5vLW9wLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB3cmFwLlxuICogQHJldHVybnMgVGhlIHByb3hpZWQgdmFsdWUgdHlwZWQgYXMgYFRgLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVycyAtLSBUIHByb3ZpZGVzIHJldHVybiB0eXBlIGluZmVyZW5jZSBhdCBjYWxsIHNpdGVzLlxuZnVuY3Rpb24gd3JhcFByb3h5PFQ+KHZhbHVlOiB1bmtub3duKTogVCB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZSBhcyBUO1xuICB9XG5cbiAgaWYgKFNUUklDVF9QUk9YWV9NQVJLRVIgaW4gdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgYXMgVDtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmFsdWUsIFNUUklDVF9QUk9YWV9NQVJLRVIsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgY29uc3QgcHJveGllZENoaWxkcmVuID0gbmV3IE1hcDxzdHJpbmcgfCBzeW1ib2w+KCk7XG5cbiAgcmV0dXJuIG5ldyBQcm94eSh2YWx1ZSwge1xuICAgIGdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTogdW5rbm93biB7XG4gICAgICBpZiAocHJvcCBpbiB0YXJnZXQpIHtcbiAgICAgICAgaWYgKHByb3hpZWRDaGlsZHJlbi5oYXMocHJvcCkpIHtcbiAgICAgICAgICByZXR1cm4gcHJveGllZENoaWxkcmVuLmdldChwcm9wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbDogdW5rbm93biA9IFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgICBpZiAoaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gd3JhcFByb3h5PHVua25vd24+KHZhbCk7XG4gICAgICAgICAgcHJveGllZENoaWxkcmVuLnNldChwcm9wLCByZXN1bHQpO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3ltYm9sJyB8fCBQQVNTVEhST1VHSF9QUk9QUy5oYXMocHJvcCkpIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVubW9ja2VkIHByb3BlcnR5IFwiJHtwcm9wfVwiIHdhcyBhY2Nlc3NlZCBvbiBtb2NrIG9iamVjdGApO1xuICAgIH1cbiAgfSkgYXMgVDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlBLE1BQU0sc0JBQXNCLHVCQUFPLGFBQWE7QUFFaEQsTUFBTSxvQkFBb0Isb0JBQUksSUFBcUI7QUFBQSxFQUNqRCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUDtBQUFBLEVBQ0E7QUFDRixDQUFDO0FBY00sU0FBUyxZQUFlLFNBQTRCO0FBQ3pELFNBQU8sVUFBYSxPQUFPO0FBQzdCO0FBUUEsU0FBUyxhQUFhLE9BQWlDO0FBQ3JELFNBQU8sVUFBVSxRQUFRLE9BQU8sVUFBVTtBQUM1QztBQVFBLFNBQVMsY0FBYyxPQUFrRDtBQUN2RSxTQUFPLGFBQWEsS0FBSyxLQUFLLE9BQU8sZUFBZSxLQUFLLE1BQU0sT0FBTztBQUN4RTtBQVNBLFNBQVMsVUFBYSxPQUFtQjtBQUN2QyxNQUFJLENBQUMsYUFBYSxLQUFLLEdBQUc7QUFDeEIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLHVCQUF1QixPQUFPO0FBQ2hDLFdBQU87QUFBQSxFQUNUO0FBQ0EsU0FBTyxlQUFlLE9BQU8scUJBQXFCLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFFakUsUUFBTSxrQkFBa0Isb0JBQUksSUFBcUI7QUFFakQsU0FBTyxJQUFJLE1BQU0sT0FBTztBQUFBLElBQ3RCLElBQUksUUFBUSxNQUFNLFVBQW1CO0FBQ25DLFVBQUksUUFBUSxRQUFRO0FBQ2xCLFlBQUksZ0JBQWdCLElBQUksSUFBSSxHQUFHO0FBQzdCLGlCQUFPLGdCQUFnQixJQUFJLElBQUk7QUFBQSxRQUNqQztBQUVBLGNBQU0sTUFBZSxRQUFRLElBQUksUUFBUSxNQUFNLFFBQVE7QUFDdkQsWUFBSSxjQUFjLEdBQUcsR0FBRztBQUN0QixnQkFBTSxTQUFTLFVBQW1CLEdBQUc7QUFDckMsMEJBQWdCLElBQUksTUFBTSxNQUFNO0FBQ2hDLGlCQUFPO0FBQUEsUUFDVDtBQUNBLGVBQU87QUFBQSxNQUNUO0FBRUEsVUFBSSxPQUFPLFNBQVMsWUFBWSxrQkFBa0IsSUFBSSxJQUFJLEdBQUc7QUFDM0QsZUFBTyxRQUFRLElBQUksUUFBUSxNQUFNLFFBQVE7QUFBQSxNQUMzQztBQUVBLFlBQU0sSUFBSSxNQUFNLHNCQUFzQixJQUFJLCtCQUErQjtBQUFBLElBQzNFO0FBQUEsRUFDRixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -4,6 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
8
  const globalThisRecord = globalThis;
8
9
  globalThisRecord['__name'] ??= name;
9
10
  const originalRequire = require;
@@ -83,10 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
83
84
  return originalRequire?.(id);
84
85
  }
85
86
 
86
- // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
87
- if (globalThis?.app?.isMobile) {
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
88
+ if (globalThis.app.isMobile) {
88
89
  if (id === 'process' || id === 'node:process') {
90
+ // eslint-disable-next-line no-console -- Valid usage.
89
91
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
90
93
  return globalThis.process;
91
94
  }
92
95
  } else {
@@ -96,6 +99,7 @@ if you want to view the source, please visit the github repository of this plugi
96
99
  }
97
100
  }
98
101
 
102
+ // eslint-disable-next-line no-console -- Valid usage.
99
103
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
100
104
  return {};
101
105
  }
@@ -321,4 +325,4 @@ function unindent(text, prefix, shouldThrowIfNotIndented = false) {
321
325
  unescape,
322
326
  unindent
323
327
  });
324
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3N0cmluZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBzdHJpbmcgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE1heWJlUmV0dXJuIH0gZnJvbSAnLi90eXBlLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4vdmFsdWUtcHJvdmlkZXIudHMnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbE5ldmVyIH0gZnJvbSAnLi9hYm9ydC1jb250cm9sbGVyLnRzJztcbmltcG9ydCB7IGVzY2FwZVJlZ0V4cCB9IGZyb20gJy4vcmVnLWV4cC50cyc7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIGVuc3VyZU5vbk51bGxhYmxlXG59IGZyb20gJy4vdHlwZS1ndWFyZHMudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi92YWx1ZS1wcm92aWRlci50cyc7XG5cbi8qKlxuICogQSBzeW5jaHJvbm91cy9hc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICovXG5leHBvcnQgdHlwZSBBc3luY1JlcGxhY2VyPENhcHR1cmVkR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+ID0gVmFsdWVQcm92aWRlcjxTdHJpbmdSZXBsYWNlbWVudCwgUmVwbGFjZUFyZ3M8Q2FwdHVyZWRHcm91cEFyZ3M+PjtcblxuLyoqXG4gKiBDb21tb24gYXJndW1lbnRzIGZvciB0aGUgYHJlcGxhY2VBbGxgL2ByZXBsYWNlQWxsQXN5bmNgIGZ1bmN0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsYWNlQXJnczxDYXB0dXJlZEdyb3VwQXJncyBleHRlbmRzIHN0cmluZ1tdPiB7XG4gIC8qKlxuICAgKiBDYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gICAqL1xuICBjYXB0dXJlZEdyb3VwQXJnczogQ2FwdHVyZWRHcm91cEFyZ3M7XG5cbiAgLyoqXG4gICAqIEdyb3VwcyBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBncm91cHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljZXMgb2YgdGhlIGdyb3VwcyB0aGF0IHdlcmUgbm90IGZvdW5kIGluIHRoZSBtYXRjaC5cbiAgICovXG4gIG1pc3NpbmdHcm91cEluZGljZXM6IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBBbiBvZmZzZXQgb2YgdGhlIG1hdGNoLlxuICAgKi9cbiAgb2Zmc2V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgc291cmNlIG9mIHRoZSBtYXRjaC5cbiAgICovXG4gIHNvdXJjZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN1YnN0cmluZyBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBzdWJzdHJpbmc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHJlcGxhY2VtZW50IHN0cmluZ3MsIG9yIGEgc3RyaW5nIHRvIHJlcGxhY2Ugd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgUmVwbGFjZXI8Q2FwdHVyZWRHcm91cEFyZ3MgZXh0ZW5kcyBzdHJpbmdbXT4gPSAoKGFyZ3M6IFJlcGxhY2VBcmdzPENhcHR1cmVkR3JvdXBBcmdzPikgPT4gU3RyaW5nUmVwbGFjZW1lbnQpIHwgU3RyaW5nUmVwbGFjZW1lbnQ7XG5cbnR5cGUgU3RyaW5nUmVwbGFjZW1lbnQgPSBNYXliZVJldHVybjxzdHJpbmc+O1xuXG4vKipcbiAqIE1hcHBpbmcgb2Ygc3BlY2lhbCBjaGFyYWN0ZXJzIHRvIHRoZWlyIGVzY2FwZWQgY291bnRlcnBhcnRzLlxuICovXG5jb25zdCBFU0NBUEVfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnXFxuJzogJ1xcXFxuJyxcbiAgJ1xccic6ICdcXFxccicsXG4gICdcXHQnOiAnXFxcXHQnLFxuICAnXFxiJzogJ1xcXFxiJyxcbiAgJ1xcZic6ICdcXFxcZicsXG4gICdcXCcnOiAnXFxcXFxcJycsXG4gICdcIic6ICdcXFxcXCInLFxuICAnXFxcXCc6ICdcXFxcXFxcXCdcbn0gYXMgY29uc3Q7XG5cbmNvbnN0IENSID0gJ1xccic7XG5jb25zdCBMRiA9ICdcXG4nO1xuY29uc3QgTk9UX0ZPVU5EX0lOREVYID0gLTE7XG5cbi8qKlxuICogTWFwcGluZyBvZiBlc2NhcGVkIHNwZWNpYWwgY2hhcmFjdGVycyB0byB0aGVpciB1bmVzY2FwZWQgY291bnRlcnBhcnRzLlxuICovXG5jb25zdCBVTkVTQ0FQRV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbmZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKEVTQ0FQRV9NQVApKSB7XG4gIFVORVNDQVBFX01BUFt2YWx1ZV0gPSBrZXk7XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IGEgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeCwgYWRkaW5nIGl0IGlmIG5lY2Vzc2FyeS5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEBwYXJhbSBzdWZmaXggLSBUaGUgc3VmZml4IHRvIGVuc3VyZS5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgdGhhdCBlbmRzIHdpdGggdGhlIHN1ZmZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUVuZHNXaXRoKHN0cjogc3RyaW5nLCBzdWZmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHIuZW5kc1dpdGgoc3VmZml4KSA/IHN0ciA6IHN0ciArIHN1ZmZpeDtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgaGFzIGBMRmAgbGluZSBlbmRpbmdzLlxuICpcbiAqIEl0IHJlcGxhY2VzIGBDUkxGYCBsaW5lIGVuZGluZ3Mgd2l0aCBgTEZgLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB3aXRoIGBMRmAgbGluZSBlbmRpbmdzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlTGZFbmRpbmdzKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKC9cXHJcXG4/L2csICdcXG4nKTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXgsIGFkZGluZyBpdCBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY2hlY2suXG4gKiBAcGFyYW0gcHJlZml4IC0gVGhlIHByZWZpeCB0byBlbnN1cmUuXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHRoYXQgc3RhcnRzIHdpdGggdGhlIHByZWZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZVN0YXJ0c1dpdGgoc3RyOiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5zdGFydHNXaXRoKHByZWZpeCkgPyBzdHIgOiBwcmVmaXggKyBzdHI7XG59XG5cbi8qKlxuICogRXNjYXBlcyBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICogQHJldHVybnMgVGhlIGVzY2FwZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2Uoc3RyLCBFU0NBUEVfTUFQKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBtYXBzIExGLW5vcm1hbGl6ZWQgb2Zmc2V0cyB0byBvcmlnaW5hbCBvZmZzZXRzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGdldCB0aGUgTEYtbm9ybWFsaXplZCBpbmRpY2VzIGZyb20uXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgbWFwcyBMRi1ub3JtYWxpemVkIG9mZnNldHMgdG8gb3JpZ2luYWwgb2Zmc2V0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExmTm9ybWFsaXplZE9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXBwZXIoc3RyOiBzdHJpbmcpOiAobGZPZmZzZXQ6IG51bWJlcikgPT4gbnVtYmVyIHtcbiAgY29uc3QgbGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0cltpXSA9PT0gQ1IgJiYgc3RyW2kgKyAxXSA9PT0gTEYpIHtcbiAgICAgIGxmT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcC5wdXNoKGkgKyAxKTtcbiAgICAgIGkrKztcbiAgICB9IGVsc2Uge1xuICAgICAgbGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwLnB1c2goaSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChsZk9mZnNldDogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICBpZiAobGZPZmZzZXQgPCAwKSB7XG4gICAgICByZXR1cm4gbGZPZmZzZXQ7XG4gICAgfVxuICAgIGlmIChsZk9mZnNldCA+PSBsZk9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXAubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbGZPZmZzZXQgLSBsZk9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXAubGVuZ3RoICsgc3RyLmxlbmd0aDtcbiAgICB9XG5cbiAgICBhc3NlcnQobGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwW2xmT2Zmc2V0XSAhPT0gdW5kZWZpbmVkLCAnQ291bGQgbm90IG1hcCBvZmZzZXQnKTtcbiAgICByZXR1cm4gbGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwW2xmT2Zmc2V0XTtcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBzdHJpbmcgaGFzIGEgc2luZ2xlIG9jY3VycmVuY2Ugb2YgYSBzZWFyY2ggdmFsdWUuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY2hlY2suXG4gKiBAcGFyYW0gc2VhcmNoVmFsdWUgLSBUaGUgc2VhcmNoIHZhbHVlIHRvIGNoZWNrIGZvci5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgc3RyaW5nIGhhcyBhIHNpbmdsZSBvY2N1cnJlbmNlIG9mIHRoZSBzZWFyY2ggdmFsdWUsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzU2luZ2xlT2NjdXJyZW5jZShzdHI6IHN0cmluZywgc2VhcmNoVmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBmaXJzdEluZGV4ID0gc3RyLmluZGV4T2Yoc2VhcmNoVmFsdWUpO1xuICBjb25zdCBsYXN0SW5kZXggPSBzdHIubGFzdEluZGV4T2Yoc2VhcmNoVmFsdWUpO1xuICByZXR1cm4gZmlyc3RJbmRleCAhPT0gTk9UX0ZPVU5EX0lOREVYICYmIGZpcnN0SW5kZXggPT09IGxhc3RJbmRleDtcbn1cblxuLyoqXG4gKiBJbmRlbnRzIGEgc3RyaW5nIGJ5IGFkZGluZyBhIHByZWZpeCB0byBlYWNoIGxpbmUuXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgc3RyaW5nIHRvIGluZGVudC5cbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgcHJlZml4IHRvIGFkZCB0byBlYWNoIGxpbmUuXG4gKiBAcmV0dXJucyBUaGUgaW5kZW50ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5kZW50KHRleHQ6IHN0cmluZywgcHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiBgJHtwcmVmaXh9JHtsaW5lfWApLmpvaW4oJ1xcbicpO1xufVxuXG4vKipcbiAqIEluc2VydHMgYSBzdWJzdHJpbmcgYXQgYSBzcGVjaWZpZWQgcG9zaXRpb24gaW4gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gaW5zZXJ0IHRoZSBzdWJzdHJpbmcgaW50by5cbiAqIEBwYXJhbSBzdWJzdHJpbmcgLSBUaGUgc3Vic3RyaW5nIHRvIGluc2VydC5cbiAqIEBwYXJhbSBzdGFydEluZGV4IC0gVGhlIGluZGV4IHRvIGluc2VydCB0aGUgc3Vic3RyaW5nIGF0LlxuICogQHBhcmFtIGVuZEluZGV4IC0gVGhlIGluZGV4IHRvIGVuZCB0aGUgc3Vic3RyaW5nIGF0LlxuICogQHJldHVybnMgVGhlIG1vZGlmaWVkIHN0cmluZyB3aXRoIHRoZSBzdWJzdHJpbmcgaW5zZXJ0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRBdChzdHI6IHN0cmluZywgc3Vic3RyaW5nOiBzdHJpbmcsIHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg/OiBudW1iZXIpOiBzdHJpbmcge1xuICBlbmRJbmRleCA/Pz0gc3RhcnRJbmRleDtcbiAgcmV0dXJuIHN0ci5zbGljZSgwLCBzdGFydEluZGV4KSArIHN1YnN0cmluZyArIHN0ci5zbGljZShlbmRJbmRleCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBzdHJpbmcgaW50byBhIHZhbGlkIEphdmFTY3JpcHQgdmFyaWFibGUgbmFtZSBieSByZXBsYWNpbmcgaW52YWxpZCBjaGFyYWN0ZXJzIHdpdGggdW5kZXJzY29yZXMuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSB2YWxpZCB2YXJpYWJsZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVZhbGlkVmFyaWFibGVOYW1lKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoc3RyLCAvW15hLXpBLVowLTlfXS9nLCAnXycpO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBzdHJpbmcgYnkgY29udmVydGluZyBpdCB0byB0aGUgTkZDIGZvcm0gYW5kIHJlcGxhY2luZyBub24tYnJlYWtpbmcgc3BhY2VzIHdpdGggcmVndWxhciBzcGFjZXMuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoc3RyLCAvXFx1MDBBMHxcXHUyMDJGL2csICcgJykubm9ybWFsaXplKCdORkMnKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyBvY2N1cnJlbmNlcyBvZiBzdHJpbmdzIGluIGEgZ2l2ZW4gc3RyaW5nIGJhc2VkIG9uIGEgcmVwbGFjZW1lbnRzIG1hcC5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBwZXJmb3JtIHJlcGxhY2VtZW50cyBvbi5cbiAqIEBwYXJhbSByZXBsYWNlbWVudHNNYXAgLSBBbiBvYmplY3QgbWFwcGluZyBzdHJpbmdzIHRvIHRoZWlyIHJlcGxhY2VtZW50IHZhbHVlcy5cbiAqIEByZXR1cm5zIFRoZSBtb2RpZmllZCBzdHJpbmcgd2l0aCByZXBsYWNlbWVudHMgYXBwbGllZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2Uoc3RyOiBzdHJpbmcsIHJlcGxhY2VtZW50c01hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyB7XG4gIGNvbnN0IHJlZ0V4cCA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMocmVwbGFjZW1lbnRzTWFwKS5tYXAoKHNvdXJjZSkgPT4gZXNjYXBlUmVnRXhwKHNvdXJjZSkpLmpvaW4oJ3wnKSwgJ2cnKTtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoc3RyLCByZWdFeHAsICh7IHN1YnN0cmluZzogc291cmNlIH0pID0+IGVuc3VyZU5vbk51bGxhYmxlKHJlcGxhY2VtZW50c01hcFtzb3VyY2VdKSk7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgYWxsIG9jY3VycmVuY2VzIG9mIGEgc2VhcmNoIHN0cmluZyBvciBwYXR0ZXJuIHdpdGggdGhlIHJlc3VsdHMgb2YgYW4gcmVwbGFjZXIgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBSZXBsYWNlR3JvdXBBcmdzIC0gVGhlIHR5cGUgb2YgYWRkaXRpb25hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSByZXBsYWNlciBmdW5jdGlvbi5cbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIGluIHdoaWNoIHRvIHBlcmZvcm0gcmVwbGFjZW1lbnRzLlxuICogQHBhcmFtIHNlYXJjaFZhbHVlIC0gVGhlIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb24gdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSByZXBsYWNlciAtIEEgcmVwbGFjZXIgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB3aXRoIGFsbCByZXBsYWNlbWVudHMgbWFkZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VBbGw8Q2FwdHVyZWRHcm91cEFyZ3MgZXh0ZW5kcyBzdHJpbmdbXT4oXG4gIHN0cjogc3RyaW5nLFxuICBzZWFyY2hWYWx1ZTogUmVnRXhwIHwgc3RyaW5nLFxuICByZXBsYWNlcjogUmVwbGFjZXI8Q2FwdHVyZWRHcm91cEFyZ3M+XG4pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBpZiAoc2VhcmNoVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHAgJiYgIXNlYXJjaFZhbHVlLmdsb2JhbCkge1xuICAgIHNlYXJjaFZhbHVlID0gbmV3IFJlZ0V4cChzZWFyY2hWYWx1ZS5zb3VyY2UsIGAke3NlYXJjaFZhbHVlLmZsYWdzfWdgKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKHNlYXJjaFZhbHVlLCByZXBsYWNlcik7XG4gIH1cblxuICByZXR1cm4gc3RyLnJlcGxhY2VBbGwoc2VhcmNoVmFsdWUsIChzdWJzdHJpbmc6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgY29uc3QgU09VUkNFX0lOREVYX09GRlNFVF9GT1JfR1JPVVBfQVJHID0gMjtcbiAgICBjb25zdCBoYXNHcm91cHNBcmcgPSB0eXBlb2YgYXJncy5hdCgtMSkgPT09ICdvYmplY3QnO1xuICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gaGFzR3JvdXBzQXJnID8gYXJncy5sZW5ndGggLSBTT1VSQ0VfSU5ERVhfT0ZGU0VUX0ZPUl9HUk9VUF9BUkcgOiBhcmdzLmxlbmd0aCAtIDE7XG5cbiAgICBjb25zdCByZXBsYWNlQXJnczogUmVwbGFjZUFyZ3M8Q2FwdHVyZWRHcm91cEFyZ3M+ID0ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4IC0tIENhbid0IGF2b2lkLlxuICAgICAgY2FwdHVyZWRHcm91cEFyZ3M6IFtdIGFzIHVua25vd25bXSBhcyBDYXB0dXJlZEdyb3VwQXJncyxcbiAgICAgIGdyb3VwczogaGFzR3JvdXBzQXJnID8gYXJncy5hdCgtMSkgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiA6IHVuZGVmaW5lZCxcbiAgICAgIG1pc3NpbmdHcm91cEluZGljZXM6IFtdLFxuICAgICAgb2Zmc2V0OiBhcmdzLmF0KHNvdXJjZUluZGV4IC0gMSkgYXMgbnVtYmVyLFxuICAgICAgc291cmNlOiBhcmdzLmF0KHNvdXJjZUluZGV4KSBhcyBzdHJpbmcsXG4gICAgICBzdWJzdHJpbmdcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2VJbmRleCAtIDE7IGkrKykge1xuICAgICAgY29uc3QgaXRlbSA9IGFyZ3NbaV07XG4gICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJlcGxhY2VBcmdzLmNhcHR1cmVkR3JvdXBBcmdzLnB1c2goaXRlbSk7XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSB2OCB0cmFja3MgdGhlIGltcGxpY2l0IGVsc2UgYnJhbmNoIHRoYXQgbmV2ZXIgaGFwcGVucy4gKi9cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICAgIHJlcGxhY2VBcmdzLm1pc3NpbmdHcm91cEluZGljZXMucHVzaChpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKHJlcGxhY2VyKHJlcGxhY2VBcmdzKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpID8/IHJlcGxhY2VBcmdzLnN1YnN0cmluZztcbiAgfSk7XG59XG5cbi8qKlxuICogQXN5bmNocm9ub3VzbHkgcmVwbGFjZXMgYWxsIG9jY3VycmVuY2VzIG9mIGEgc2VhcmNoIHN0cmluZyBvciBwYXR0ZXJuIHdpdGggdGhlIHJlc3VsdHMgb2YgYW4gYXN5bmNocm9ub3VzIHJlcGxhY2VyIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gUmVwbGFjZUdyb3VwQXJncyAtIFRoZSB0eXBlIG9mIGFkZGl0aW9uYWwgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgcmVwbGFjZXIgZnVuY3Rpb24uXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyBpbiB3aGljaCB0byBwZXJmb3JtIHJlcGxhY2VtZW50cy5cbiAqIEBwYXJhbSBzZWFyY2hWYWx1ZSAtIFRoZSBzdHJpbmcgb3IgcmVndWxhciBleHByZXNzaW9uIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0gcmVwbGFjZXIgLSBBIHN5bmNocm9ub3VzL2FzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyByZXBsYWNlbWVudCBzdHJpbmdzLCBvciBhIHN0cmluZyB0byByZXBsYWNlIHdpdGguXG4gKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBzdHJpbmcgd2l0aCBhbGwgcmVwbGFjZW1lbnRzIG1hZGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXBsYWNlQWxsQXN5bmM8UmVwbGFjZUdyb3VwQXJncyBleHRlbmRzIHN0cmluZ1tdPihcbiAgc3RyOiBzdHJpbmcsXG4gIHNlYXJjaFZhbHVlOiBSZWdFeHAgfCBzdHJpbmcsXG4gIHJlcGxhY2VyOiBBc3luY1JlcGxhY2VyPFJlcGxhY2VHcm91cEFyZ3M+LFxuICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBhYm9ydFNpZ25hbCA/Pz0gYWJvcnRTaWduYWxOZXZlcigpO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiByZXBsYWNlQWxsKHN0ciwgc2VhcmNoVmFsdWUsIHJlcGxhY2VyKTtcbiAgfVxuXG4gIGNvbnN0IHJlcGxhY2VtZW50QXN5bmNGbnM6ICgoKSA9PiBQcm9taXNlPFN0cmluZ1JlcGxhY2VtZW50PilbXSA9IFtdO1xuXG4gIHJlcGxhY2VBbGw8UmVwbGFjZUdyb3VwQXJncz4oc3RyLCBzZWFyY2hWYWx1ZSwgKGFyZ3MpID0+IHtcbiAgICByZXBsYWNlbWVudEFzeW5jRm5zLnB1c2goKCkgPT4gcmVzb2x2ZVZhbHVlKHJlcGxhY2VyLCB7IGFib3J0U2lnbmFsLCAuLi5hcmdzIH0pKTtcbiAgICByZXR1cm4gJyc7XG4gIH0pO1xuXG4gIGNvbnN0IHJlcGxhY2VtZW50czogU3RyaW5nUmVwbGFjZW1lbnRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYXN5bmNGbiBvZiByZXBsYWNlbWVudEFzeW5jRm5zKSB7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICByZXBsYWNlbWVudHMucHVzaChhd2FpdCBhc3luY0ZuKCkpO1xuICB9XG5cbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoc3RyLCBzZWFyY2hWYWx1ZSwgKGFyZ3MpOiBzdHJpbmcgPT4gcmVwbGFjZW1lbnRzLnNoaWZ0KCkgPz8gYXJncy5zdWJzdHJpbmcpO1xufVxuXG4vKipcbiAqIFRyaW1zIHRoZSBzcGVjaWZpZWQgc3VmZml4IGZyb20gdGhlIGVuZCBvZiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byB0cmltLlxuICogQHBhcmFtIHN1ZmZpeCAtIFRoZSBzdWZmaXggdG8gcmVtb3ZlIGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIHNob3VsZFZhbGlkYXRlIC0gSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHN0cmluZyBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgc3VmZml4LlxuICogQHJldHVybnMgVGhlIHRyaW1tZWQgc3RyaW5nLlxuICogQHRocm93cyBJZiBgdmFsaWRhdGVgIGlzIGB0cnVlYCBhbmQgdGhlIHN0cmluZyBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgc3VmZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbUVuZChzdHI6IHN0cmluZywgc3VmZml4OiBzdHJpbmcsIHNob3VsZFZhbGlkYXRlPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChzdHIuZW5kc1dpdGgoc3VmZml4KSkge1xuICAgIHJldHVybiBzdHIuc2xpY2UoMCwgLXN1ZmZpeC5sZW5ndGgpO1xuICB9XG5cbiAgaWYgKHNob3VsZFZhbGlkYXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgJHtzdHJ9IGRvZXMgbm90IGVuZCB3aXRoIHN1ZmZpeCAke3N1ZmZpeH1gKTtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogVHJpbXMgdGhlIHNwZWNpZmllZCBwcmVmaXggZnJvbSB0aGUgc3RhcnQgb2YgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgcHJlZml4IHRvIHJlbW92ZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIHZhbGlkYXRlIC0gSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHN0cmluZyBkb2VzIG5vdCBzdGFydCB3aXRoIHRoZSBwcmVmaXguXG4gKiBAcmV0dXJucyBUaGUgdHJpbW1lZCBzdHJpbmcuXG4gKiBAdGhyb3dzIElmIGB2YWxpZGF0ZWAgaXMgYHRydWVgIGFuZCB0aGUgc3RyaW5nIGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIHByZWZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1TdGFydChzdHI6IHN0cmluZywgcHJlZml4OiBzdHJpbmcsIHZhbGlkYXRlPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChzdHIuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgcmV0dXJuIHN0ci5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgfVxuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3RyaW5nICR7c3RyfSBkb2VzIG5vdCBzdGFydCB3aXRoIHByZWZpeCAke3ByZWZpeH1gKTtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogVW5lc2NhcGVzIGEgc3RyaW5nIGJ5IHJlcGxhY2luZyBlc2NhcGUgc2VxdWVuY2VzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICogQHJldHVybnMgVGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlKHN0ciwgVU5FU0NBUEVfTUFQKTtcbn1cblxuLyoqXG4gKiBVbmluZGVudHMgYSBzdHJpbmcgYnkgcmVtb3ZpbmcgYSBwcmVmaXggZnJvbSBlYWNoIGxpbmUuXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgc3RyaW5nIHRvIHVuaW5kZW50LlxuICogQHBhcmFtIHByZWZpeCAtIFRoZSBwcmVmaXggdG8gcmVtb3ZlIGZyb20gZWFjaCBsaW5lLlxuICogQHBhcmFtIHNob3VsZFRocm93SWZOb3RJbmRlbnRlZCAtIElmIGB0cnVlYCwgdGhyb3dzIGFuIGVycm9yIGlmIGEgbGluZSBpcyBub3QgaW5kZW50ZWQgd2l0aCB0aGUgcHJlZml4LlxuICogQHJldHVybnMgVGhlIHVuaW5kZW50ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pbmRlbnQodGV4dDogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgc2hvdWxkVGhyb3dJZk5vdEluZGVudGVkID0gZmFsc2UpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiB7XG4gICAgaWYgKGxpbmUuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICByZXR1cm4gbGluZS5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgICB9XG4gICAgaWYgKHNob3VsZFRocm93SWZOb3RJbmRlbnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBMaW5lIFwiJHtsaW5lfVwiIGlzIG5vdCBpbmRlbnRlZCB3aXRoIFwiJHtwcmVmaXh9XCJgKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmU7XG4gIH0pLmpvaW4oJ1xcbicpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVNBLDhCQUFpQztBQUNqQyxxQkFBNkI7QUFDN0IseUJBR087QUFDUCw0QkFBNkI7QUFvRDdCLE1BQU0sYUFBcUM7QUFBQSxFQUN6QyxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixLQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixLQUFNO0FBQUEsRUFDTixLQUFLO0FBQUEsRUFDTCxNQUFNO0FBQ1I7QUFFQSxNQUFNLEtBQUs7QUFDWCxNQUFNLEtBQUs7QUFDWCxNQUFNLGtCQUFrQjtBQUt4QixNQUFNLGVBQXVDLENBQUM7QUFDOUMsV0FBVyxDQUFDLEtBQUssS0FBSyxLQUFLLE9BQU8sUUFBUSxVQUFVLEdBQUc7QUFDckQsZUFBYSxLQUFLLElBQUk7QUFDeEI7QUFTTyxTQUFTLGVBQWUsS0FBYSxRQUF3QjtBQUNsRSxTQUFPLElBQUksU0FBUyxNQUFNLElBQUksTUFBTSxNQUFNO0FBQzVDO0FBVU8sU0FBUyxnQkFBZ0IsS0FBcUI7QUFDbkQsU0FBTyxJQUFJLFdBQVcsVUFBVSxJQUFJO0FBQ3RDO0FBU08sU0FBUyxpQkFBaUIsS0FBYSxRQUF3QjtBQUNwRSxTQUFPLElBQUksV0FBVyxNQUFNLElBQUksTUFBTSxTQUFTO0FBQ2pEO0FBUU8sU0FBUyxPQUFPLEtBQXFCO0FBQzFDLFNBQU8sUUFBUSxLQUFLLFVBQVU7QUFDaEM7QUFRTyxTQUFTLDRDQUE0QyxLQUEyQztBQUNyRyxRQUFNLDhCQUF3QyxDQUFDO0FBRS9DLFdBQVMsSUFBSSxHQUFHLElBQUksSUFBSSxRQUFRLEtBQUs7QUFDbkMsUUFBSSxJQUFJLENBQUMsTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSTtBQUN0QyxrQ0FBNEIsS0FBSyxJQUFJLENBQUM7QUFDdEM7QUFBQSxJQUNGLE9BQU87QUFDTCxrQ0FBNEIsS0FBSyxDQUFDO0FBQUEsSUFDcEM7QUFBQSxFQUNGO0FBRUEsU0FBTyxDQUFDLGFBQTZCO0FBQ25DLFFBQUksV0FBVyxHQUFHO0FBQ2hCLGFBQU87QUFBQSxJQUNUO0FBQ0EsUUFBSSxZQUFZLDRCQUE0QixRQUFRO0FBQ2xELGFBQU8sV0FBVyw0QkFBNEIsU0FBUyxJQUFJO0FBQUEsSUFDN0Q7QUFFQSxtQ0FBTyw0QkFBNEIsUUFBUSxNQUFNLFFBQVcsc0JBQXNCO0FBQ2xGLFdBQU8sNEJBQTRCLFFBQVE7QUFBQSxFQUM3QztBQUNGO0FBU08sU0FBUyxvQkFBb0IsS0FBYSxhQUE4QjtBQUM3RSxRQUFNLGFBQWEsSUFBSSxRQUFRLFdBQVc7QUFDMUMsUUFBTSxZQUFZLElBQUksWUFBWSxXQUFXO0FBQzdDLFNBQU8sZUFBZSxtQkFBbUIsZUFBZTtBQUMxRDtBQVNPLFNBQVMsT0FBTyxNQUFjLFFBQXdCO0FBQzNELFNBQU8sS0FBSyxNQUFNLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sR0FBRyxJQUFJLEVBQUUsRUFBRSxLQUFLLElBQUk7QUFDckU7QUFXTyxTQUFTLFNBQVMsS0FBYSxXQUFtQixZQUFvQixVQUEyQjtBQUN0RyxlQUFhO0FBQ2IsU0FBTyxJQUFJLE1BQU0sR0FBRyxVQUFVLElBQUksWUFBWSxJQUFJLE1BQU0sUUFBUTtBQUNsRTtBQVFPLFNBQVMsc0JBQXNCLEtBQXFCO0FBQ3pELFNBQU8sV0FBVyxLQUFLLGtCQUFrQixHQUFHO0FBQzlDO0FBUU8sU0FBUyxVQUFVLEtBQXFCO0FBQzdDLFNBQU8sV0FBVyxLQUFLLGtCQUFrQixHQUFHLEVBQUUsVUFBVSxLQUFLO0FBQy9EO0FBU08sU0FBUyxRQUFRLEtBQWEsaUJBQWlEO0FBQ3BGLFFBQU0sU0FBUyxJQUFJLE9BQU8sT0FBTyxLQUFLLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBVyw2QkFBYSxNQUFNLENBQUMsRUFBRSxLQUFLLEdBQUcsR0FBRyxHQUFHO0FBQzNHLFNBQU8sV0FBVyxLQUFLLFFBQVEsQ0FBQyxFQUFFLFdBQVcsT0FBTyxVQUFNLHNDQUFrQixnQkFBZ0IsTUFBTSxDQUFDLENBQUM7QUFDdEc7QUFXTyxTQUFTLFdBQ2QsS0FDQSxhQUNBLFVBQ1E7QUFDUixNQUFJLE9BQU8sYUFBYSxhQUFhO0FBQ25DLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSx1QkFBdUIsVUFBVSxDQUFDLFlBQVksUUFBUTtBQUN4RCxrQkFBYyxJQUFJLE9BQU8sWUFBWSxRQUFRLEdBQUcsWUFBWSxLQUFLLEdBQUc7QUFBQSxFQUN0RTtBQUVBLE1BQUksT0FBTyxhQUFhLFVBQVU7QUFDaEMsV0FBTyxJQUFJLFdBQVcsYUFBYSxRQUFRO0FBQUEsRUFDN0M7QUFFQSxTQUFPLElBQUksV0FBVyxhQUFhLENBQUMsY0FBc0IsU0FBb0I7QUFDNUUsVUFBTSxvQ0FBb0M7QUFDMUMsVUFBTSxlQUFlLE9BQU8sS0FBSyxHQUFHLEVBQUUsTUFBTTtBQUM1QyxVQUFNLGNBQWMsZUFBZSxLQUFLLFNBQVMsb0NBQW9DLEtBQUssU0FBUztBQUVuRyxVQUFNLGNBQThDO0FBQUE7QUFBQSxNQUVsRCxtQkFBbUIsQ0FBQztBQUFBLE1BQ3BCLFFBQVEsZUFBZSxLQUFLLEdBQUcsRUFBRSxJQUEwQztBQUFBLE1BQzNFLHFCQUFxQixDQUFDO0FBQUEsTUFDdEIsUUFBUSxLQUFLLEdBQUcsY0FBYyxDQUFDO0FBQUEsTUFDL0IsUUFBUSxLQUFLLEdBQUcsV0FBVztBQUFBLE1BQzNCO0FBQUEsSUFDRjtBQUVBLGFBQVMsSUFBSSxHQUFHLElBQUksY0FBYyxHQUFHLEtBQUs7QUFDeEMsWUFBTSxPQUFPLEtBQUssQ0FBQztBQUNuQixVQUFJLE9BQU8sU0FBUyxVQUFVO0FBQzVCLG9CQUFZLGtCQUFrQixLQUFLLElBQUk7QUFBQSxNQUV6QyxXQUFXLE9BQU8sU0FBUyxhQUFhO0FBRXRDLG9CQUFZLG9CQUFvQixLQUFLLENBQUM7QUFBQSxNQUN4QztBQUFBLElBQ0Y7QUFFQSxXQUFRLFNBQVMsV0FBVyxLQUE0QixZQUFZO0FBQUEsRUFDdEUsQ0FBQztBQUNIO0FBWUEsZUFBc0IsZ0JBQ3BCLEtBQ0EsYUFDQSxVQUNBLGFBQ2lCO0FBQ2pCLHNCQUFnQiwwQ0FBaUI7QUFDakMsY0FBWSxlQUFlO0FBQzNCLE1BQUksT0FBTyxhQUFhLFVBQVU7QUFDaEMsV0FBTyxXQUFXLEtBQUssYUFBYSxRQUFRO0FBQUEsRUFDOUM7QUFFQSxRQUFNLHNCQUE0RCxDQUFDO0FBRW5FLGFBQTZCLEtBQUssYUFBYSxDQUFDLFNBQVM7QUFDdkQsd0JBQW9CLEtBQUssVUFBTSxvQ0FBYSxVQUFVLEVBQUUsYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQy9FLFdBQU87QUFBQSxFQUNULENBQUM7QUFFRCxRQUFNLGVBQW9DLENBQUM7QUFFM0MsYUFBVyxXQUFXLHFCQUFxQjtBQUN6QyxnQkFBWSxlQUFlO0FBQzNCLGlCQUFhLEtBQUssTUFBTSxRQUFRLENBQUM7QUFBQSxFQUNuQztBQUVBLGNBQVksZUFBZTtBQUMzQixTQUFPLFdBQVcsS0FBSyxhQUFhLENBQUMsU0FBaUIsYUFBYSxNQUFNLEtBQUssS0FBSyxTQUFTO0FBQzlGO0FBV08sU0FBUyxRQUFRLEtBQWEsUUFBZ0IsZ0JBQWtDO0FBQ3JGLE1BQUksSUFBSSxTQUFTLE1BQU0sR0FBRztBQUN4QixXQUFPLElBQUksTUFBTSxHQUFHLENBQUMsT0FBTyxNQUFNO0FBQUEsRUFDcEM7QUFFQSxNQUFJLGdCQUFnQjtBQUNsQixVQUFNLElBQUksTUFBTSxVQUFVLEdBQUcsNkJBQTZCLE1BQU0sRUFBRTtBQUFBLEVBQ3BFO0FBRUEsU0FBTztBQUNUO0FBV08sU0FBUyxVQUFVLEtBQWEsUUFBZ0IsVUFBNEI7QUFDakYsTUFBSSxJQUFJLFdBQVcsTUFBTSxHQUFHO0FBQzFCLFdBQU8sSUFBSSxNQUFNLE9BQU8sTUFBTTtBQUFBLEVBQ2hDO0FBRUEsTUFBSSxVQUFVO0FBQ1osVUFBTSxJQUFJLE1BQU0sVUFBVSxHQUFHLCtCQUErQixNQUFNLEVBQUU7QUFBQSxFQUN0RTtBQUVBLFNBQU87QUFDVDtBQVFPLFNBQVMsU0FBUyxLQUFxQjtBQUM1QyxTQUFPLFFBQVEsS0FBSyxZQUFZO0FBQ2xDO0FBVU8sU0FBUyxTQUFTLE1BQWMsUUFBZ0IsMkJBQTJCLE9BQWU7QUFDL0YsU0FBTyxLQUFLLE1BQU0sSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTO0FBQ3BDLFFBQUksS0FBSyxXQUFXLE1BQU0sR0FBRztBQUMzQixhQUFPLEtBQUssTUFBTSxPQUFPLE1BQU07QUFBQSxJQUNqQztBQUNBLFFBQUksMEJBQTBCO0FBQzVCLFlBQU0sSUFBSSxNQUFNLFNBQVMsSUFBSSwyQkFBMkIsTUFBTSxHQUFHO0FBQUEsSUFDbkU7QUFDQSxXQUFPO0FBQUEsRUFDVCxDQUFDLEVBQUUsS0FBSyxJQUFJO0FBQ2Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
328
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3N0cmluZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBzdHJpbmcgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE1heWJlUmV0dXJuIH0gZnJvbSAnLi90eXBlLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4vdmFsdWUtcHJvdmlkZXIudHMnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbE5ldmVyIH0gZnJvbSAnLi9hYm9ydC1jb250cm9sbGVyLnRzJztcbmltcG9ydCB7IGVzY2FwZVJlZ0V4cCB9IGZyb20gJy4vcmVnLWV4cC50cyc7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIGVuc3VyZU5vbk51bGxhYmxlXG59IGZyb20gJy4vdHlwZS1ndWFyZHMudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi92YWx1ZS1wcm92aWRlci50cyc7XG5cbi8qKlxuICogQSBzeW5jaHJvbm91cy9hc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICovXG5leHBvcnQgdHlwZSBBc3luY1JlcGxhY2VyPENhcHR1cmVkR3JvdXBBcmdzIGV4dGVuZHMgc3RyaW5nW10+ID0gVmFsdWVQcm92aWRlcjxTdHJpbmdSZXBsYWNlbWVudCwgUmVwbGFjZUFyZ3M8Q2FwdHVyZWRHcm91cEFyZ3M+PjtcblxuLyoqXG4gKiBDb21tb24gYXJndW1lbnRzIGZvciB0aGUgYHJlcGxhY2VBbGxgL2ByZXBsYWNlQWxsQXN5bmNgIGZ1bmN0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsYWNlQXJnczxDYXB0dXJlZEdyb3VwQXJncyBleHRlbmRzIHN0cmluZ1tdPiB7XG4gIC8qKlxuICAgKiBDYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gICAqL1xuICBjYXB0dXJlZEdyb3VwQXJnczogQ2FwdHVyZWRHcm91cEFyZ3M7XG5cbiAgLyoqXG4gICAqIEdyb3VwcyBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBncm91cHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljZXMgb2YgdGhlIGdyb3VwcyB0aGF0IHdlcmUgbm90IGZvdW5kIGluIHRoZSBtYXRjaC5cbiAgICovXG4gIG1pc3NpbmdHcm91cEluZGljZXM6IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBBbiBvZmZzZXQgb2YgdGhlIG1hdGNoLlxuICAgKi9cbiAgb2Zmc2V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgc291cmNlIG9mIHRoZSBtYXRjaC5cbiAgICovXG4gIHNvdXJjZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN1YnN0cmluZyBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBzdWJzdHJpbmc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVzIHJlcGxhY2VtZW50IHN0cmluZ3MsIG9yIGEgc3RyaW5nIHRvIHJlcGxhY2Ugd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgUmVwbGFjZXI8Q2FwdHVyZWRHcm91cEFyZ3MgZXh0ZW5kcyBzdHJpbmdbXT4gPSAoKGFyZ3M6IFJlcGxhY2VBcmdzPENhcHR1cmVkR3JvdXBBcmdzPikgPT4gU3RyaW5nUmVwbGFjZW1lbnQpIHwgU3RyaW5nUmVwbGFjZW1lbnQ7XG5cbnR5cGUgU3RyaW5nUmVwbGFjZW1lbnQgPSBNYXliZVJldHVybjxzdHJpbmc+O1xuXG4vKipcbiAqIE1hcHBpbmcgb2Ygc3BlY2lhbCBjaGFyYWN0ZXJzIHRvIHRoZWlyIGVzY2FwZWQgY291bnRlcnBhcnRzLlxuICovXG5jb25zdCBFU0NBUEVfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnXFxuJzogJ1xcXFxuJyxcbiAgJ1xccic6ICdcXFxccicsXG4gICdcXHQnOiAnXFxcXHQnLFxuICAnXFxiJzogJ1xcXFxiJyxcbiAgJ1xcZic6ICdcXFxcZicsXG4gICdcXCcnOiAnXFxcXFxcJycsXG4gICdcIic6ICdcXFxcXCInLFxuICAnXFxcXCc6ICdcXFxcXFxcXCdcbn0gYXMgY29uc3Q7XG5cbmNvbnN0IENSID0gJ1xccic7XG5jb25zdCBMRiA9ICdcXG4nO1xuY29uc3QgTk9UX0ZPVU5EX0lOREVYID0gLTE7XG5cbi8qKlxuICogTWFwcGluZyBvZiBlc2NhcGVkIHNwZWNpYWwgY2hhcmFjdGVycyB0byB0aGVpciB1bmVzY2FwZWQgY291bnRlcnBhcnRzLlxuICovXG5jb25zdCBVTkVTQ0FQRV9NQVA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbmZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKEVTQ0FQRV9NQVApKSB7XG4gIFVORVNDQVBFX01BUFt2YWx1ZV0gPSBrZXk7XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IGEgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeCwgYWRkaW5nIGl0IGlmIG5lY2Vzc2FyeS5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEBwYXJhbSBzdWZmaXggLSBUaGUgc3VmZml4IHRvIGVuc3VyZS5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgdGhhdCBlbmRzIHdpdGggdGhlIHN1ZmZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUVuZHNXaXRoKHN0cjogc3RyaW5nLCBzdWZmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHIuZW5kc1dpdGgoc3VmZml4KSA/IHN0ciA6IHN0ciArIHN1ZmZpeDtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgaGFzIGBMRmAgbGluZSBlbmRpbmdzLlxuICpcbiAqIEl0IHJlcGxhY2VzIGBDUkxGYCBsaW5lIGVuZGluZ3Mgd2l0aCBgTEZgLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB3aXRoIGBMRmAgbGluZSBlbmRpbmdzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlTGZFbmRpbmdzKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKC9cXHJcXG4/L2csICdcXG4nKTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXgsIGFkZGluZyBpdCBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY2hlY2suXG4gKiBAcGFyYW0gcHJlZml4IC0gVGhlIHByZWZpeCB0byBlbnN1cmUuXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHRoYXQgc3RhcnRzIHdpdGggdGhlIHByZWZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZVN0YXJ0c1dpdGgoc3RyOiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5zdGFydHNXaXRoKHByZWZpeCkgPyBzdHIgOiBwcmVmaXggKyBzdHI7XG59XG5cbi8qKlxuICogRXNjYXBlcyBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICogQHJldHVybnMgVGhlIGVzY2FwZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2Uoc3RyLCBFU0NBUEVfTUFQKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBtYXBzIExGLW5vcm1hbGl6ZWQgb2Zmc2V0cyB0byBvcmlnaW5hbCBvZmZzZXRzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGdldCB0aGUgTEYtbm9ybWFsaXplZCBpbmRpY2VzIGZyb20uXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgbWFwcyBMRi1ub3JtYWxpemVkIG9mZnNldHMgdG8gb3JpZ2luYWwgb2Zmc2V0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExmTm9ybWFsaXplZE9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXBwZXIoc3RyOiBzdHJpbmcpOiAobGZPZmZzZXQ6IG51bWJlcikgPT4gbnVtYmVyIHtcbiAgY29uc3QgbGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0cltpXSA9PT0gQ1IgJiYgc3RyW2kgKyAxXSA9PT0gTEYpIHtcbiAgICAgIGxmT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcC5wdXNoKGkgKyAxKTtcbiAgICAgIGkrKztcbiAgICB9IGVsc2Uge1xuICAgICAgbGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwLnB1c2goaSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChsZk9mZnNldDogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICBpZiAobGZPZmZzZXQgPCAwKSB7XG4gICAgICByZXR1cm4gbGZPZmZzZXQ7XG4gICAgfVxuICAgIGlmIChsZk9mZnNldCA+PSBsZk9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXAubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbGZPZmZzZXQgLSBsZk9mZnNldFRvT3JpZ2luYWxPZmZzZXRNYXAubGVuZ3RoICsgc3RyLmxlbmd0aDtcbiAgICB9XG5cbiAgICBhc3NlcnQobGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwW2xmT2Zmc2V0XSAhPT0gdW5kZWZpbmVkLCAnQ291bGQgbm90IG1hcCBvZmZzZXQnKTtcbiAgICByZXR1cm4gbGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwW2xmT2Zmc2V0XTtcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBzdHJpbmcgaGFzIGEgc2luZ2xlIG9jY3VycmVuY2Ugb2YgYSBzZWFyY2ggdmFsdWUuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY2hlY2suXG4gKiBAcGFyYW0gc2VhcmNoVmFsdWUgLSBUaGUgc2VhcmNoIHZhbHVlIHRvIGNoZWNrIGZvci5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgc3RyaW5nIGhhcyBhIHNpbmdsZSBvY2N1cnJlbmNlIG9mIHRoZSBzZWFyY2ggdmFsdWUsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzU2luZ2xlT2NjdXJyZW5jZShzdHI6IHN0cmluZywgc2VhcmNoVmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBmaXJzdEluZGV4ID0gc3RyLmluZGV4T2Yoc2VhcmNoVmFsdWUpO1xuICBjb25zdCBsYXN0SW5kZXggPSBzdHIubGFzdEluZGV4T2Yoc2VhcmNoVmFsdWUpO1xuICByZXR1cm4gZmlyc3RJbmRleCAhPT0gTk9UX0ZPVU5EX0lOREVYICYmIGZpcnN0SW5kZXggPT09IGxhc3RJbmRleDtcbn1cblxuLyoqXG4gKiBJbmRlbnRzIGEgc3RyaW5nIGJ5IGFkZGluZyBhIHByZWZpeCB0byBlYWNoIGxpbmUuXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgc3RyaW5nIHRvIGluZGVudC5cbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgcHJlZml4IHRvIGFkZCB0byBlYWNoIGxpbmUuXG4gKiBAcmV0dXJucyBUaGUgaW5kZW50ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5kZW50KHRleHQ6IHN0cmluZywgcHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiBgJHtwcmVmaXh9JHtsaW5lfWApLmpvaW4oJ1xcbicpO1xufVxuXG4vKipcbiAqIEluc2VydHMgYSBzdWJzdHJpbmcgYXQgYSBzcGVjaWZpZWQgcG9zaXRpb24gaW4gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gaW5zZXJ0IHRoZSBzdWJzdHJpbmcgaW50by5cbiAqIEBwYXJhbSBzdWJzdHJpbmcgLSBUaGUgc3Vic3RyaW5nIHRvIGluc2VydC5cbiAqIEBwYXJhbSBzdGFydEluZGV4IC0gVGhlIGluZGV4IHRvIGluc2VydCB0aGUgc3Vic3RyaW5nIGF0LlxuICogQHBhcmFtIGVuZEluZGV4IC0gVGhlIGluZGV4IHRvIGVuZCB0aGUgc3Vic3RyaW5nIGF0LlxuICogQHJldHVybnMgVGhlIG1vZGlmaWVkIHN0cmluZyB3aXRoIHRoZSBzdWJzdHJpbmcgaW5zZXJ0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRBdChzdHI6IHN0cmluZywgc3Vic3RyaW5nOiBzdHJpbmcsIHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg/OiBudW1iZXIpOiBzdHJpbmcge1xuICBlbmRJbmRleCA/Pz0gc3RhcnRJbmRleDtcbiAgcmV0dXJuIHN0ci5zbGljZSgwLCBzdGFydEluZGV4KSArIHN1YnN0cmluZyArIHN0ci5zbGljZShlbmRJbmRleCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBzdHJpbmcgaW50byBhIHZhbGlkIEphdmFTY3JpcHQgdmFyaWFibGUgbmFtZSBieSByZXBsYWNpbmcgaW52YWxpZCBjaGFyYWN0ZXJzIHdpdGggdW5kZXJzY29yZXMuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSB2YWxpZCB2YXJpYWJsZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVZhbGlkVmFyaWFibGVOYW1lKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoc3RyLCAvW15hLXpBLVowLTlfXS9nLCAnXycpO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBzdHJpbmcgYnkgY29udmVydGluZyBpdCB0byB0aGUgTkZDIGZvcm0gYW5kIHJlcGxhY2luZyBub24tYnJlYWtpbmcgc3BhY2VzIHdpdGggcmVndWxhciBzcGFjZXMuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoc3RyLCAvXFx1MDBBMHxcXHUyMDJGL2csICcgJykubm9ybWFsaXplKCdORkMnKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyBvY2N1cnJlbmNlcyBvZiBzdHJpbmdzIGluIGEgZ2l2ZW4gc3RyaW5nIGJhc2VkIG9uIGEgcmVwbGFjZW1lbnRzIG1hcC5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBwZXJmb3JtIHJlcGxhY2VtZW50cyBvbi5cbiAqIEBwYXJhbSByZXBsYWNlbWVudHNNYXAgLSBBbiBvYmplY3QgbWFwcGluZyBzdHJpbmdzIHRvIHRoZWlyIHJlcGxhY2VtZW50IHZhbHVlcy5cbiAqIEByZXR1cm5zIFRoZSBtb2RpZmllZCBzdHJpbmcgd2l0aCByZXBsYWNlbWVudHMgYXBwbGllZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2Uoc3RyOiBzdHJpbmcsIHJlcGxhY2VtZW50c01hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyB7XG4gIGNvbnN0IHJlZ0V4cCA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMocmVwbGFjZW1lbnRzTWFwKS5tYXAoKHNvdXJjZSkgPT4gZXNjYXBlUmVnRXhwKHNvdXJjZSkpLmpvaW4oJ3wnKSwgJ2cnKTtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoc3RyLCByZWdFeHAsICh7IHN1YnN0cmluZzogc291cmNlIH0pID0+IGVuc3VyZU5vbk51bGxhYmxlKHJlcGxhY2VtZW50c01hcFtzb3VyY2VdKSk7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgYWxsIG9jY3VycmVuY2VzIG9mIGEgc2VhcmNoIHN0cmluZyBvciBwYXR0ZXJuIHdpdGggdGhlIHJlc3VsdHMgb2YgYW4gcmVwbGFjZXIgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBSZXBsYWNlR3JvdXBBcmdzIC0gVGhlIHR5cGUgb2YgYWRkaXRpb25hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSByZXBsYWNlciBmdW5jdGlvbi5cbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIGluIHdoaWNoIHRvIHBlcmZvcm0gcmVwbGFjZW1lbnRzLlxuICogQHBhcmFtIHNlYXJjaFZhbHVlIC0gVGhlIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb24gdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSByZXBsYWNlciAtIEEgcmVwbGFjZXIgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB3aXRoIGFsbCByZXBsYWNlbWVudHMgbWFkZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VBbGw8Q2FwdHVyZWRHcm91cEFyZ3MgZXh0ZW5kcyBzdHJpbmdbXT4oXG4gIHN0cjogc3RyaW5nLFxuICBzZWFyY2hWYWx1ZTogUmVnRXhwIHwgc3RyaW5nLFxuICByZXBsYWNlcjogUmVwbGFjZXI8Q2FwdHVyZWRHcm91cEFyZ3M+XG4pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBpZiAoc2VhcmNoVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHAgJiYgIXNlYXJjaFZhbHVlLmdsb2JhbCkge1xuICAgIHNlYXJjaFZhbHVlID0gbmV3IFJlZ0V4cChzZWFyY2hWYWx1ZS5zb3VyY2UsIGAke3NlYXJjaFZhbHVlLmZsYWdzfWdgKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmVwbGFjZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKHNlYXJjaFZhbHVlLCByZXBsYWNlcik7XG4gIH1cblxuICByZXR1cm4gc3RyLnJlcGxhY2VBbGwoc2VhcmNoVmFsdWUsIChzdWJzdHJpbmc6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgY29uc3QgU09VUkNFX0lOREVYX09GRlNFVF9GT1JfR1JPVVBfQVJHID0gMjtcbiAgICBjb25zdCBoYXNHcm91cHNBcmcgPSB0eXBlb2YgYXJncy5hdCgtMSkgPT09ICdvYmplY3QnO1xuICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gaGFzR3JvdXBzQXJnID8gYXJncy5sZW5ndGggLSBTT1VSQ0VfSU5ERVhfT0ZGU0VUX0ZPUl9HUk9VUF9BUkcgOiBhcmdzLmxlbmd0aCAtIDE7XG5cbiAgICBjb25zdCByZXBsYWNlQXJnczogUmVwbGFjZUFyZ3M8Q2FwdHVyZWRHcm91cEFyZ3M+ID0ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4IC0tIENhbid0IGF2b2lkLlxuICAgICAgY2FwdHVyZWRHcm91cEFyZ3M6IFtdIGFzIHVua25vd25bXSBhcyBDYXB0dXJlZEdyb3VwQXJncyxcbiAgICAgIGdyb3VwczogaGFzR3JvdXBzQXJnID8gYXJncy5hdCgtMSkgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiA6IHVuZGVmaW5lZCxcbiAgICAgIG1pc3NpbmdHcm91cEluZGljZXM6IFtdLFxuICAgICAgb2Zmc2V0OiBhcmdzLmF0KHNvdXJjZUluZGV4IC0gMSkgYXMgbnVtYmVyLFxuICAgICAgc291cmNlOiBhcmdzLmF0KHNvdXJjZUluZGV4KSBhcyBzdHJpbmcsXG4gICAgICBzdWJzdHJpbmdcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2VJbmRleCAtIDE7IGkrKykge1xuICAgICAgY29uc3QgaXRlbSA9IGFyZ3NbaV07XG4gICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJlcGxhY2VBcmdzLmNhcHR1cmVkR3JvdXBBcmdzLnB1c2goaXRlbSk7XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSB2OCB0cmFja3MgdGhlIGltcGxpY2l0IGVsc2UgYnJhbmNoIHRoYXQgbmV2ZXIgaGFwcGVucy4gKi9cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICAgIHJlcGxhY2VBcmdzLm1pc3NpbmdHcm91cEluZGljZXMucHVzaChpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gKHJlcGxhY2VyKHJlcGxhY2VBcmdzKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpID8/IHJlcGxhY2VBcmdzLnN1YnN0cmluZztcbiAgfSk7XG59XG5cbi8qKlxuICogQXN5bmNocm9ub3VzbHkgcmVwbGFjZXMgYWxsIG9jY3VycmVuY2VzIG9mIGEgc2VhcmNoIHN0cmluZyBvciBwYXR0ZXJuIHdpdGggdGhlIHJlc3VsdHMgb2YgYW4gYXN5bmNocm9ub3VzIHJlcGxhY2VyIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gUmVwbGFjZUdyb3VwQXJncyAtIFRoZSB0eXBlIG9mIGFkZGl0aW9uYWwgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgcmVwbGFjZXIgZnVuY3Rpb24uXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyBpbiB3aGljaCB0byBwZXJmb3JtIHJlcGxhY2VtZW50cy5cbiAqIEBwYXJhbSBzZWFyY2hWYWx1ZSAtIFRoZSBzdHJpbmcgb3IgcmVndWxhciBleHByZXNzaW9uIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0gcmVwbGFjZXIgLSBBIHN5bmNocm9ub3VzL2FzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyByZXBsYWNlbWVudCBzdHJpbmdzLCBvciBhIHN0cmluZyB0byByZXBsYWNlIHdpdGguXG4gKiBAcGFyYW0gYWJvcnRTaWduYWwgLSBUaGUgYWJvcnQgc2lnbmFsIHRvIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBzdHJpbmcgd2l0aCBhbGwgcmVwbGFjZW1lbnRzIG1hZGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXBsYWNlQWxsQXN5bmM8UmVwbGFjZUdyb3VwQXJncyBleHRlbmRzIHN0cmluZ1tdPihcbiAgc3RyOiBzdHJpbmcsXG4gIHNlYXJjaFZhbHVlOiBSZWdFeHAgfCBzdHJpbmcsXG4gIHJlcGxhY2VyOiBBc3luY1JlcGxhY2VyPFJlcGxhY2VHcm91cEFyZ3M+LFxuICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBhYm9ydFNpZ25hbCA/Pz0gYWJvcnRTaWduYWxOZXZlcigpO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiByZXBsYWNlQWxsKHN0ciwgc2VhcmNoVmFsdWUsIHJlcGxhY2VyKTtcbiAgfVxuXG4gIGNvbnN0IHJlcGxhY2VtZW50QXN5bmNGbnM6ICgoKSA9PiBQcm9taXNlPFN0cmluZ1JlcGxhY2VtZW50PilbXSA9IFtdO1xuXG4gIHJlcGxhY2VBbGw8UmVwbGFjZUdyb3VwQXJncz4oc3RyLCBzZWFyY2hWYWx1ZSwgKGFyZ3MpID0+IHtcbiAgICByZXBsYWNlbWVudEFzeW5jRm5zLnB1c2goKCkgPT4gcmVzb2x2ZVZhbHVlKHJlcGxhY2VyLCB7IGFib3J0U2lnbmFsLCAuLi5hcmdzIH0pKTtcbiAgICByZXR1cm4gJyc7XG4gIH0pO1xuXG4gIGNvbnN0IHJlcGxhY2VtZW50czogU3RyaW5nUmVwbGFjZW1lbnRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYXN5bmNGbiBvZiByZXBsYWNlbWVudEFzeW5jRm5zKSB7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICByZXBsYWNlbWVudHMucHVzaChhd2FpdCBhc3luY0ZuKCkpO1xuICB9XG5cbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoc3RyLCBzZWFyY2hWYWx1ZSwgKGFyZ3MpOiBzdHJpbmcgPT4gcmVwbGFjZW1lbnRzLnNoaWZ0KCkgPz8gYXJncy5zdWJzdHJpbmcpO1xufVxuXG4vKipcbiAqIFRyaW1zIHRoZSBzcGVjaWZpZWQgc3VmZml4IGZyb20gdGhlIGVuZCBvZiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byB0cmltLlxuICogQHBhcmFtIHN1ZmZpeCAtIFRoZSBzdWZmaXggdG8gcmVtb3ZlIGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIHNob3VsZFZhbGlkYXRlIC0gSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHN0cmluZyBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgc3VmZml4LlxuICogQHJldHVybnMgVGhlIHRyaW1tZWQgc3RyaW5nLlxuICogQHRocm93cyBJZiBgdmFsaWRhdGVgIGlzIGB0cnVlYCBhbmQgdGhlIHN0cmluZyBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgc3VmZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpbUVuZChzdHI6IHN0cmluZywgc3VmZml4OiBzdHJpbmcsIHNob3VsZFZhbGlkYXRlPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChzdHIuZW5kc1dpdGgoc3VmZml4KSkge1xuICAgIHJldHVybiBzdHIuc2xpY2UoMCwgLXN1ZmZpeC5sZW5ndGgpO1xuICB9XG5cbiAgaWYgKHNob3VsZFZhbGlkYXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgJHtzdHJ9IGRvZXMgbm90IGVuZCB3aXRoIHN1ZmZpeCAke3N1ZmZpeH1gKTtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogVHJpbXMgdGhlIHNwZWNpZmllZCBwcmVmaXggZnJvbSB0aGUgc3RhcnQgb2YgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEBwYXJhbSBwcmVmaXggLSBUaGUgcHJlZml4IHRvIHJlbW92ZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIHZhbGlkYXRlIC0gSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHN0cmluZyBkb2VzIG5vdCBzdGFydCB3aXRoIHRoZSBwcmVmaXguXG4gKiBAcmV0dXJucyBUaGUgdHJpbW1lZCBzdHJpbmcuXG4gKiBAdGhyb3dzIElmIGB2YWxpZGF0ZWAgaXMgYHRydWVgIGFuZCB0aGUgc3RyaW5nIGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIHByZWZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1TdGFydChzdHI6IHN0cmluZywgcHJlZml4OiBzdHJpbmcsIHZhbGlkYXRlPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIGlmIChzdHIuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgcmV0dXJuIHN0ci5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgfVxuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3RyaW5nICR7c3RyfSBkb2VzIG5vdCBzdGFydCB3aXRoIHByZWZpeCAke3ByZWZpeH1gKTtcbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogVW5lc2NhcGVzIGEgc3RyaW5nIGJ5IHJlcGxhY2luZyBlc2NhcGUgc2VxdWVuY2VzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzLlxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICogQHJldHVybnMgVGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlKHN0ciwgVU5FU0NBUEVfTUFQKTtcbn1cblxuLyoqXG4gKiBVbmluZGVudHMgYSBzdHJpbmcgYnkgcmVtb3ZpbmcgYSBwcmVmaXggZnJvbSBlYWNoIGxpbmUuXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgc3RyaW5nIHRvIHVuaW5kZW50LlxuICogQHBhcmFtIHByZWZpeCAtIFRoZSBwcmVmaXggdG8gcmVtb3ZlIGZyb20gZWFjaCBsaW5lLlxuICogQHBhcmFtIHNob3VsZFRocm93SWZOb3RJbmRlbnRlZCAtIElmIGB0cnVlYCwgdGhyb3dzIGFuIGVycm9yIGlmIGEgbGluZSBpcyBub3QgaW5kZW50ZWQgd2l0aCB0aGUgcHJlZml4LlxuICogQHJldHVybnMgVGhlIHVuaW5kZW50ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pbmRlbnQodGV4dDogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgc2hvdWxkVGhyb3dJZk5vdEluZGVudGVkID0gZmFsc2UpOiBzdHJpbmcge1xuICByZXR1cm4gdGV4dC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiB7XG4gICAgaWYgKGxpbmUuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICByZXR1cm4gbGluZS5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgICB9XG4gICAgaWYgKHNob3VsZFRocm93SWZOb3RJbmRlbnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBMaW5lIFwiJHtsaW5lfVwiIGlzIG5vdCBpbmRlbnRlZCB3aXRoIFwiJHtwcmVmaXh9XCJgKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmU7XG4gIH0pLmpvaW4oJ1xcbicpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -4,6 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
8
  const globalThisRecord = globalThis;
8
9
  globalThisRecord['__name'] ??= name;
9
10
  const originalRequire = require;
@@ -83,10 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
83
84
  return originalRequire?.(id);
84
85
  }
85
86
 
86
- // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
87
- if (globalThis?.app?.isMobile) {
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
88
+ if (globalThis.app.isMobile) {
88
89
  if (id === 'process' || id === 'node:process') {
90
+ // eslint-disable-next-line no-console -- Valid usage.
89
91
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
90
93
  return globalThis.process;
91
94
  }
92
95
  } else {
@@ -96,6 +99,7 @@ if you want to view the source, please visit the github repository of this plugi
96
99
  }
97
100
  }
98
101
 
102
+ // eslint-disable-next-line no-console -- Valid usage.
99
103
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
100
104
  return {};
101
105
  }
@@ -166,4 +170,4 @@ class DateTransformer extends import_typed_transformer.TypedTransformer {
166
170
  0 && (module.exports = {
167
171
  DateTransformer
168
172
  });
169
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVycy9kYXRlLXRyYW5zZm9ybWVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQSB0cmFuc2Zvcm1lciB0aGF0IGNhbiB0cmFuc2Zvcm0gRGF0ZSB0byBhbiBJU08gc3RyaW5nIGFuZCBiYWNrLlxuICovXG5cbmltcG9ydCB7IFR5cGVkVHJhbnNmb3JtZXIgfSBmcm9tICcuL3R5cGVkLXRyYW5zZm9ybWVyLnRzJztcblxuLyoqXG4gKiBBIHRyYW5zZm9ybWVyIHRoYXQgY2FuIHRyYW5zZm9ybSBEYXRlIHRvIGFuIElTTyBzdHJpbmcgYW5kIGJhY2suXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRlVHJhbnNmb3JtZXIgZXh0ZW5kcyBUeXBlZFRyYW5zZm9ybWVyPERhdGUsIHN0cmluZz4ge1xuICAvKipcbiAgICogQW4gaWQgb2YgdGhlIHRyYW5zZm9ybWVyLlxuICAgKlxuICAgKiBAcmV0dXJucyBgZGF0ZWAuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdkYXRlJztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZSBpcyBhIERhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHZhbHVlIGlzIGEgRGF0ZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBjYW5UcmFuc2Zvcm0odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBEYXRlIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIHRoZSB2YWx1ZSBmcm9tIGEgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gdHJhbnNmb3JtZWRWYWx1ZSAtIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZS5cbiAgICogQHJldHVybnMgVGhlIHJlc3RvcmVkIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHJlc3RvcmVWYWx1ZSh0cmFuc2Zvcm1lZFZhbHVlOiBzdHJpbmcpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUodHJhbnNmb3JtZWRWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyB0aGUgdmFsdWUgdG8gYSBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB0cmFuc2Zvcm0uXG4gICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSB0cmFuc2Zvcm1WYWx1ZSh2YWx1ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsK0JBQWlDO0FBSzFCLE1BQU0sd0JBQXdCLDBDQUErQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1sRSxJQUFvQixLQUFhO0FBQy9CLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsYUFBYSxPQUErQjtBQUMxRCxXQUFPLGlCQUFpQjtBQUFBLEVBQzFCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsYUFBYSxrQkFBZ0M7QUFDM0QsV0FBTyxJQUFJLEtBQUssZ0JBQWdCO0FBQUEsRUFDbEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixlQUFlLE9BQXFCO0FBQ2xELFdBQU8sTUFBTSxZQUFZO0FBQUEsRUFDM0I7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
173
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVycy9kYXRlLXRyYW5zZm9ybWVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQSB0cmFuc2Zvcm1lciB0aGF0IGNhbiB0cmFuc2Zvcm0gRGF0ZSB0byBhbiBJU08gc3RyaW5nIGFuZCBiYWNrLlxuICovXG5cbmltcG9ydCB7IFR5cGVkVHJhbnNmb3JtZXIgfSBmcm9tICcuL3R5cGVkLXRyYW5zZm9ybWVyLnRzJztcblxuLyoqXG4gKiBBIHRyYW5zZm9ybWVyIHRoYXQgY2FuIHRyYW5zZm9ybSBEYXRlIHRvIGFuIElTTyBzdHJpbmcgYW5kIGJhY2suXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRlVHJhbnNmb3JtZXIgZXh0ZW5kcyBUeXBlZFRyYW5zZm9ybWVyPERhdGUsIHN0cmluZz4ge1xuICAvKipcbiAgICogQW4gaWQgb2YgdGhlIHRyYW5zZm9ybWVyLlxuICAgKlxuICAgKiBAcmV0dXJucyBgZGF0ZWAuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdkYXRlJztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZSBpcyBhIERhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHZhbHVlIGlzIGEgRGF0ZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBjYW5UcmFuc2Zvcm0odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBEYXRlIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIHRoZSB2YWx1ZSBmcm9tIGEgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gdHJhbnNmb3JtZWRWYWx1ZSAtIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZS5cbiAgICogQHJldHVybnMgVGhlIHJlc3RvcmVkIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHJlc3RvcmVWYWx1ZSh0cmFuc2Zvcm1lZFZhbHVlOiBzdHJpbmcpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUodHJhbnNmb3JtZWRWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyB0aGUgdmFsdWUgdG8gYSBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB0cmFuc2Zvcm0uXG4gICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSB0cmFuc2Zvcm1WYWx1ZSh2YWx1ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLCtCQUFpQztBQUsxQixNQUFNLHdCQUF3QiwwQ0FBK0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNbEUsSUFBb0IsS0FBYTtBQUMvQixXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLGFBQWEsT0FBK0I7QUFDMUQsV0FBTyxpQkFBaUI7QUFBQSxFQUMxQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLGFBQWEsa0JBQWdDO0FBQzNELFdBQU8sSUFBSSxLQUFLLGdCQUFnQjtBQUFBLEVBQ2xDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsZUFBZSxPQUFxQjtBQUNsRCxXQUFPLE1BQU0sWUFBWTtBQUFBLEVBQzNCO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -4,6 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
4
4
  */
5
5
 
6
6
  (function initCjs() {
7
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
7
8
  const globalThisRecord = globalThis;
8
9
  globalThisRecord['__name'] ??= name;
9
10
  const originalRequire = require;
@@ -83,10 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
83
84
  return originalRequire?.(id);
84
85
  }
85
86
 
86
- // eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
87
- if (globalThis?.app?.isMobile) {
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/prefer-active-doc -- Need access to app. Actively use globalThis.
88
+ if (globalThis.app.isMobile) {
88
89
  if (id === 'process' || id === 'node:process') {
90
+ // eslint-disable-next-line no-console -- Valid usage.
89
91
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
+ // eslint-disable-next-line obsidianmd/prefer-active-doc -- Actively use globalThis.
90
93
  return globalThis.process;
91
94
  }
92
95
  } else {
@@ -96,6 +99,7 @@ if you want to view the source, please visit the github repository of this plugi
96
99
  }
97
100
  }
98
101
 
102
+ // eslint-disable-next-line no-console -- Valid usage.
99
103
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
100
104
  return {};
101
105
  }
@@ -168,4 +172,4 @@ class DurationTransformer extends import_typed_transformer.TypedTransformer {
168
172
  0 && (module.exports = {
169
173
  DurationTransformer
170
174
  });
171
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVycy9kdXJhdGlvbi10cmFuc2Zvcm1lci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEEgdHJhbnNmb3JtZXIgdGhhdCBjYW4gdHJhbnNmb3JtIER1cmF0aW9uIHRvIGFuIElTTyBzdHJpbmcgYW5kIGJhY2suXG4gKi9cblxuaW1wb3J0IHsgbW9tZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBUeXBlZFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90eXBlZC10cmFuc2Zvcm1lci50cyc7XG5cbi8qKlxuICogQSB0cmFuc2Zvcm1lciB0aGF0IGNvbnZlcnRzIGEgRHVyYXRpb24gdG8gYW4gSVNPIHN0cmluZyBhbmQgYmFjay5cbiAqL1xuZXhwb3J0IGNsYXNzIER1cmF0aW9uVHJhbnNmb3JtZXIgZXh0ZW5kcyBUeXBlZFRyYW5zZm9ybWVyPG1vbWVudC5EdXJhdGlvbiwgc3RyaW5nPiB7XG4gIC8qKlxuICAgKiBBbiBpZCBvZiB0aGUgdHJhbnNmb3JtZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBpZCBvZiB0aGUgdHJhbnNmb3JtZXIuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdkdXJhdGlvbic7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSB2YWx1ZSBpcyBhIER1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWUgaXMgYSBEdXJhdGlvbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgY2FuVHJhbnNmb3JtKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgbW9tZW50LkR1cmF0aW9uIHtcbiAgICBjb25zdCBtYXliZUR1cmF0aW9uID0gKHZhbHVlID8/IHt9KSBhcyBQYXJ0aWFsPG1vbWVudC5EdXJhdGlvbj47XG4gICAgcmV0dXJuICEhbWF5YmVEdXJhdGlvbi5hc0hvdXJzICYmICEhbWF5YmVEdXJhdGlvbi5hc01pbnV0ZXMgJiYgISFtYXliZUR1cmF0aW9uLmFzU2Vjb25kcyAmJiAhIW1heWJlRHVyYXRpb24uYXNNaWxsaXNlY29uZHM7XG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZXMgdGhlIHZhbHVlIGZyb20gYSBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB0cmFuc2Zvcm1lZFZhbHVlIC0gVGhlIHN0cmluZyB0byByZXN0b3JlIHRoZSB2YWx1ZSBmcm9tLlxuICAgKiBAcmV0dXJucyBUaGUgcmVzdG9yZWQgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVzdG9yZVZhbHVlKHRyYW5zZm9ybWVkVmFsdWU6IHN0cmluZyk6IG1vbWVudC5EdXJhdGlvbiB7XG4gICAgcmV0dXJuIG1vbWVudC5kdXJhdGlvbih0cmFuc2Zvcm1lZFZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIHRoZSB2YWx1ZSB0byBhIHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHRyYW5zZm9ybS5cbiAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHRyYW5zZm9ybVZhbHVlKHZhbHVlOiBtb21lbnQuRHVyYXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZS50b0lTT1N0cmluZygpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLHNCQUF1QjtBQUV2QiwrQkFBaUM7QUFLMUIsTUFBTSw0QkFBNEIsMENBQTBDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTWpGLElBQW9CLEtBQWE7QUFDL0IsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixhQUFhLE9BQTBDO0FBQ3JFLFVBQU0sZ0JBQWlCLFNBQVMsQ0FBQztBQUNqQyxXQUFPLENBQUMsQ0FBQyxjQUFjLFdBQVcsQ0FBQyxDQUFDLGNBQWMsYUFBYSxDQUFDLENBQUMsY0FBYyxhQUFhLENBQUMsQ0FBQyxjQUFjO0FBQUEsRUFDOUc7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixhQUFhLGtCQUEyQztBQUN0RSxXQUFPLHVCQUFPLFNBQVMsZ0JBQWdCO0FBQUEsRUFDekM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixlQUFlLE9BQWdDO0FBQzdELFdBQU8sTUFBTSxZQUFZO0FBQUEsRUFDM0I7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
175
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVycy9kdXJhdGlvbi10cmFuc2Zvcm1lci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEEgdHJhbnNmb3JtZXIgdGhhdCBjYW4gdHJhbnNmb3JtIER1cmF0aW9uIHRvIGFuIElTTyBzdHJpbmcgYW5kIGJhY2suXG4gKi9cblxuaW1wb3J0IHsgbW9tZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBUeXBlZFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90eXBlZC10cmFuc2Zvcm1lci50cyc7XG5cbi8qKlxuICogQSB0cmFuc2Zvcm1lciB0aGF0IGNvbnZlcnRzIGEgRHVyYXRpb24gdG8gYW4gSVNPIHN0cmluZyBhbmQgYmFjay5cbiAqL1xuZXhwb3J0IGNsYXNzIER1cmF0aW9uVHJhbnNmb3JtZXIgZXh0ZW5kcyBUeXBlZFRyYW5zZm9ybWVyPG1vbWVudC5EdXJhdGlvbiwgc3RyaW5nPiB7XG4gIC8qKlxuICAgKiBBbiBpZCBvZiB0aGUgdHJhbnNmb3JtZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBpZCBvZiB0aGUgdHJhbnNmb3JtZXIuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdkdXJhdGlvbic7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSB2YWx1ZSBpcyBhIER1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWUgaXMgYSBEdXJhdGlvbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgY2FuVHJhbnNmb3JtKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgbW9tZW50LkR1cmF0aW9uIHtcbiAgICBjb25zdCBtYXliZUR1cmF0aW9uID0gKHZhbHVlID8/IHt9KSBhcyBQYXJ0aWFsPG1vbWVudC5EdXJhdGlvbj47XG4gICAgcmV0dXJuICEhbWF5YmVEdXJhdGlvbi5hc0hvdXJzICYmICEhbWF5YmVEdXJhdGlvbi5hc01pbnV0ZXMgJiYgISFtYXliZUR1cmF0aW9uLmFzU2Vjb25kcyAmJiAhIW1heWJlRHVyYXRpb24uYXNNaWxsaXNlY29uZHM7XG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZXMgdGhlIHZhbHVlIGZyb20gYSBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB0cmFuc2Zvcm1lZFZhbHVlIC0gVGhlIHN0cmluZyB0byByZXN0b3JlIHRoZSB2YWx1ZSBmcm9tLlxuICAgKiBAcmV0dXJucyBUaGUgcmVzdG9yZWQgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVzdG9yZVZhbHVlKHRyYW5zZm9ybWVkVmFsdWU6IHN0cmluZyk6IG1vbWVudC5EdXJhdGlvbiB7XG4gICAgcmV0dXJuIG1vbWVudC5kdXJhdGlvbih0cmFuc2Zvcm1lZFZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIHRoZSB2YWx1ZSB0byBhIHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHRyYW5zZm9ybS5cbiAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHRyYW5zZm9ybVZhbHVlKHZhbHVlOiBtb21lbnQuRHVyYXRpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZS50b0lTT1N0cmluZygpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxzQkFBdUI7QUFFdkIsK0JBQWlDO0FBSzFCLE1BQU0sNEJBQTRCLDBDQUEwQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1qRixJQUFvQixLQUFhO0FBQy9CLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsYUFBYSxPQUEwQztBQUNyRSxVQUFNLGdCQUFpQixTQUFTLENBQUM7QUFDakMsV0FBTyxDQUFDLENBQUMsY0FBYyxXQUFXLENBQUMsQ0FBQyxjQUFjLGFBQWEsQ0FBQyxDQUFDLGNBQWMsYUFBYSxDQUFDLENBQUMsY0FBYztBQUFBLEVBQzlHO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsYUFBYSxrQkFBMkM7QUFDdEUsV0FBTyx1QkFBTyxTQUFTLGdCQUFnQjtBQUFBLEVBQ3pDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsZUFBZSxPQUFnQztBQUM3RCxXQUFPLE1BQU0sWUFBWTtBQUFBLEVBQzNCO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==