obsidian-dev-utils 65.0.1 → 66.0.1

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 (400) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/dev/main.js +4892 -4807
  3. package/dist/lib/cjs/async-events.cjs +15 -18
  4. package/dist/lib/cjs/async-events.d.cts +19 -19
  5. package/dist/lib/cjs/async.cjs +1 -1
  6. package/dist/lib/cjs/async.d.cts +9 -8
  7. package/dist/lib/cjs/function.cjs +1 -1
  8. package/dist/lib/cjs/function.d.cts +43 -3
  9. package/dist/lib/cjs/library.cjs +1 -1
  10. package/dist/lib/cjs/obsidian/async-with-notice.cjs +1 -1
  11. package/dist/lib/cjs/obsidian/async-with-notice.d.cts +2 -2
  12. package/dist/lib/cjs/obsidian/{plugin/components → components}/abort-signal-component.cjs +4 -4
  13. package/dist/lib/cjs/obsidian/{plugin/components → components}/abort-signal-component.d.cts +2 -2
  14. package/dist/lib/cjs/obsidian/components/all-windows-event-component.cjs +201 -0
  15. package/dist/lib/{esm/obsidian/components/all-windows-event-handler.d.mts → cjs/obsidian/components/all-windows-event-component.d.cts} +6 -7
  16. package/dist/lib/cjs/obsidian/components/async-component.cjs +3 -2
  17. package/dist/lib/cjs/obsidian/components/async-component.d.cts +2 -1
  18. package/dist/lib/cjs/obsidian/{plugin/components → components}/async-error-handler-component.cjs +5 -5
  19. package/dist/lib/cjs/obsidian/{plugin/components → components}/async-error-handler-component.d.cts +2 -2
  20. package/dist/lib/cjs/obsidian/components/async-events-component.cjs +3 -2
  21. package/dist/lib/cjs/obsidian/components/async-events-component.d.cts +2 -1
  22. package/dist/lib/cjs/obsidian/{plugin/components → components}/console-debug-component.cjs +4 -4
  23. package/dist/lib/cjs/obsidian/{plugin/components → components}/console-debug-component.d.cts +2 -2
  24. package/dist/lib/cjs/obsidian/components/disposable-component.cjs +160 -0
  25. package/dist/lib/cjs/obsidian/components/disposable-component.d.cts +34 -0
  26. package/dist/lib/cjs/obsidian/{plugin/components → components}/i18n-component.cjs +4 -4
  27. package/dist/lib/cjs/obsidian/{plugin/components → components}/i18n-component.d.cts +2 -2
  28. package/dist/lib/cjs/obsidian/components/index.cjs +40 -7
  29. package/dist/lib/cjs/obsidian/components/index.d.cts +13 -2
  30. package/dist/lib/cjs/obsidian/components/layout-ready-component.cjs +185 -0
  31. package/dist/lib/cjs/obsidian/components/layout-ready-component.d.cts +47 -0
  32. package/dist/lib/cjs/obsidian/components/menu-event-registrar-component.cjs +172 -0
  33. package/dist/lib/cjs/obsidian/components/menu-event-registrar-component.d.cts +41 -0
  34. package/dist/lib/cjs/obsidian/components/monkey-around-component.cjs +197 -0
  35. package/dist/lib/cjs/obsidian/components/monkey-around-component.d.cts +113 -0
  36. package/dist/lib/cjs/obsidian/{plugin/components → components}/plugin-context-component.cjs +6 -6
  37. package/dist/lib/cjs/obsidian/{plugin/components → components}/plugin-context-component.d.cts +2 -2
  38. package/dist/lib/cjs/obsidian/{plugin/components → components}/plugin-notice-component.cjs +3 -2
  39. package/dist/lib/cjs/obsidian/{plugin/components → components}/plugin-notice-component.d.cts +2 -2
  40. package/dist/lib/cjs/obsidian/components/plugin-settings-component.cjs +534 -0
  41. package/dist/lib/cjs/obsidian/{plugin/components → components}/plugin-settings-component.d.cts +6 -21
  42. package/dist/lib/cjs/obsidian/{plugin/components → components}/plugin-settings-tab-component.cjs +3 -2
  43. package/dist/lib/cjs/obsidian/{plugin/components → components}/plugin-settings-tab-component.d.cts +5 -5
  44. package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.cjs +20 -16
  45. package/dist/lib/cjs/obsidian/dataview.cjs +1 -1
  46. package/dist/lib/cjs/obsidian/dataview.d.cts +1 -1
  47. package/dist/lib/cjs/obsidian/index.cjs +7 -4
  48. package/dist/lib/cjs/obsidian/index.d.cts +2 -1
  49. package/dist/lib/cjs/obsidian/loop.cjs +1 -1
  50. package/dist/lib/cjs/obsidian/loop.d.cts +2 -2
  51. package/dist/lib/cjs/obsidian/markdown.cjs +13 -7
  52. package/dist/lib/cjs/obsidian/menu-event-registrar.cjs +1 -50
  53. package/dist/lib/cjs/obsidian/menu-event-registrar.d.cts +1 -35
  54. package/dist/lib/cjs/obsidian/modals/prompt.cjs +1 -1
  55. package/dist/lib/cjs/obsidian/modals/prompt.d.cts +1 -1
  56. package/dist/lib/cjs/obsidian/modals/select-item.cjs +1 -1
  57. package/dist/lib/cjs/obsidian/modals/select-item.d.cts +1 -1
  58. package/dist/lib/cjs/obsidian/path-settings.cjs +239 -0
  59. package/dist/lib/cjs/obsidian/plugin/index.cjs +1 -7
  60. package/dist/lib/cjs/obsidian/plugin/index.d.cts +0 -2
  61. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +4 -4
  62. package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.d.cts +5 -5
  63. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +39 -34
  64. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +13 -11
  65. package/dist/lib/cjs/obsidian/queue.cjs +1 -1
  66. package/dist/lib/cjs/obsidian/queue.d.cts +2 -2
  67. package/dist/lib/cjs/obsidian/rename-delete-handler.cjs +19 -12
  68. package/dist/lib/cjs/obsidian/setting-components/checkbox-component.cjs +209 -0
  69. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/checkbox-component.d.cts +1 -1
  70. package/dist/lib/cjs/obsidian/setting-components/code-highlighter-component.cjs +356 -0
  71. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/code-highlighter-component.d.cts +1 -1
  72. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/date-component.cjs +3 -3
  73. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/date-time-component.cjs +3 -3
  74. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/email-component.cjs +2 -2
  75. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/file-component.cjs +2 -2
  76. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/index.cjs +1 -1
  77. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/month-component.cjs +3 -3
  78. package/dist/lib/cjs/obsidian/setting-components/multiple-dropdown-component.cjs +241 -0
  79. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/multiple-dropdown-component.d.cts +1 -1
  80. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/multiple-email-component.cjs +2 -2
  81. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/multiple-file-component.cjs +3 -3
  82. package/dist/lib/cjs/obsidian/setting-components/multiple-text-component.cjs +254 -0
  83. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/multiple-text-component.d.cts +1 -1
  84. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/number-component.cjs +2 -2
  85. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/password-component.cjs +2 -2
  86. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/setting-component-wrapper.cjs +4 -4
  87. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/telephone-component.cjs +2 -2
  88. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/text-based-component.cjs +1 -1
  89. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/time-component.cjs +2 -2
  90. package/dist/lib/cjs/obsidian/setting-components/tri-state-checkbox-component.cjs +210 -0
  91. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/tri-state-checkbox-component.d.cts +1 -1
  92. package/dist/lib/cjs/obsidian/setting-components/typed-dropdown-component.cjs +247 -0
  93. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/typed-dropdown-component.d.cts +1 -1
  94. package/dist/lib/cjs/obsidian/setting-components/typed-multiple-dropdown-component.cjs +249 -0
  95. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/typed-multiple-dropdown-component.d.cts +1 -1
  96. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/typed-range-text-component.cjs +1 -1
  97. package/dist/lib/cjs/obsidian/setting-components/typed-text-component.cjs +224 -0
  98. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/typed-text-component.d.cts +2 -2
  99. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/url-component.cjs +2 -2
  100. package/dist/lib/cjs/obsidian/setting-components/validator-component.cjs +226 -0
  101. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/validator-component.d.cts +1 -1
  102. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/value-component-with-change-tracking.cjs +1 -1
  103. package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/week-component.cjs +3 -3
  104. package/dist/lib/cjs/obsidian/setting-ex.cjs +21 -21
  105. package/dist/lib/cjs/obsidian/setting-ex.d.cts +20 -20
  106. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +1 -1
  107. package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +2 -2
  108. package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +2 -1
  109. package/dist/lib/cjs/script-utils/linters/eslint-config.d.cts +2 -2
  110. package/dist/lib/cjs/type.cjs +1 -1
  111. package/dist/lib/esm/async-events.d.mts +19 -19
  112. package/dist/lib/esm/async-events.mjs +15 -18
  113. package/dist/lib/esm/async.d.mts +9 -8
  114. package/dist/lib/esm/async.mjs +1 -1
  115. package/dist/lib/esm/function.d.mts +43 -3
  116. package/dist/lib/esm/function.mjs +1 -1
  117. package/dist/lib/esm/library.mjs +1 -1
  118. package/dist/lib/esm/obsidian/async-with-notice.d.mts +2 -2
  119. package/dist/lib/esm/obsidian/async-with-notice.mjs +1 -1
  120. package/dist/lib/esm/obsidian/{plugin/components → components}/abort-signal-component.d.mts +2 -2
  121. package/dist/lib/esm/obsidian/components/abort-signal-component.mjs +59 -0
  122. package/dist/lib/{cjs/obsidian/components/all-windows-event-handler.d.cts → esm/obsidian/components/all-windows-event-component.d.mts} +6 -7
  123. package/dist/lib/esm/obsidian/components/all-windows-event-component.mjs +93 -0
  124. package/dist/lib/esm/obsidian/components/async-component.d.mts +2 -1
  125. package/dist/lib/esm/obsidian/components/async-component.mjs +3 -2
  126. package/dist/lib/esm/obsidian/{plugin/components → components}/async-error-handler-component.d.mts +2 -2
  127. package/dist/lib/esm/obsidian/components/async-error-handler-component.mjs +62 -0
  128. package/dist/lib/esm/obsidian/components/async-events-component.d.mts +2 -1
  129. package/dist/lib/esm/obsidian/components/async-events-component.mjs +3 -2
  130. package/dist/lib/esm/obsidian/{plugin/components → components}/console-debug-component.d.mts +2 -2
  131. package/dist/lib/esm/obsidian/components/console-debug-component.mjs +56 -0
  132. package/dist/lib/esm/obsidian/components/disposable-component.d.mts +34 -0
  133. package/dist/lib/esm/obsidian/components/disposable-component.mjs +50 -0
  134. package/dist/lib/esm/obsidian/{plugin/components → components}/i18n-component.d.mts +2 -2
  135. package/dist/lib/esm/obsidian/components/i18n-component.mjs +53 -0
  136. package/dist/lib/esm/obsidian/components/index.d.mts +13 -2
  137. package/dist/lib/esm/obsidian/components/index.mjs +27 -5
  138. package/dist/lib/esm/obsidian/components/layout-ready-component.d.mts +47 -0
  139. package/dist/lib/esm/obsidian/components/layout-ready-component.mjs +76 -0
  140. package/dist/lib/esm/obsidian/components/menu-event-registrar-component.d.mts +41 -0
  141. package/dist/lib/esm/obsidian/components/menu-event-registrar-component.mjs +64 -0
  142. package/dist/lib/esm/obsidian/components/monkey-around-component.d.mts +113 -0
  143. package/dist/lib/esm/obsidian/components/monkey-around-component.mjs +87 -0
  144. package/dist/lib/esm/obsidian/{plugin/components → components}/plugin-context-component.d.mts +2 -2
  145. package/dist/lib/esm/obsidian/components/plugin-context-component.mjs +61 -0
  146. package/dist/lib/esm/obsidian/{plugin/components → components}/plugin-notice-component.d.mts +2 -2
  147. package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +58 -0
  148. package/dist/lib/esm/obsidian/{plugin/components → components}/plugin-settings-component.d.mts +6 -21
  149. package/dist/lib/esm/obsidian/components/plugin-settings-component.mjs +433 -0
  150. package/dist/lib/esm/obsidian/{plugin/components → components}/plugin-settings-tab-component.d.mts +5 -5
  151. package/dist/lib/esm/obsidian/components/plugin-settings-tab-component.mjs +50 -0
  152. package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.mjs +20 -16
  153. package/dist/lib/esm/obsidian/dataview.d.mts +1 -1
  154. package/dist/lib/esm/obsidian/dataview.mjs +1 -1
  155. package/dist/lib/esm/obsidian/index.d.mts +2 -1
  156. package/dist/lib/esm/obsidian/index.mjs +5 -3
  157. package/dist/lib/esm/obsidian/loop.d.mts +2 -2
  158. package/dist/lib/esm/obsidian/loop.mjs +1 -1
  159. package/dist/lib/esm/obsidian/markdown.mjs +13 -7
  160. package/dist/lib/esm/obsidian/menu-event-registrar.d.mts +1 -35
  161. package/dist/lib/esm/obsidian/menu-event-registrar.mjs +1 -42
  162. package/dist/lib/esm/obsidian/modals/prompt.d.mts +1 -1
  163. package/dist/lib/esm/obsidian/modals/prompt.mjs +1 -1
  164. package/dist/lib/esm/obsidian/modals/select-item.d.mts +1 -1
  165. package/dist/lib/esm/obsidian/modals/select-item.mjs +1 -1
  166. package/dist/lib/esm/obsidian/path-settings.mjs +135 -0
  167. package/dist/lib/esm/obsidian/plugin/index.d.mts +0 -2
  168. package/dist/lib/esm/obsidian/plugin/index.mjs +1 -5
  169. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.d.mts +5 -5
  170. package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +4 -4
  171. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +13 -11
  172. package/dist/lib/esm/obsidian/plugin/plugin.mjs +39 -34
  173. package/dist/lib/esm/obsidian/queue.d.mts +2 -2
  174. package/dist/lib/esm/obsidian/queue.mjs +1 -1
  175. package/dist/lib/esm/obsidian/rename-delete-handler.mjs +22 -12
  176. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/checkbox-component.d.mts +1 -1
  177. package/dist/lib/esm/obsidian/setting-components/checkbox-component.mjs +101 -0
  178. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/code-highlighter-component.d.mts +1 -1
  179. package/dist/lib/esm/obsidian/setting-components/code-highlighter-component.mjs +254 -0
  180. package/dist/lib/esm/obsidian/setting-components/date-component.mjs +62 -0
  181. package/dist/lib/esm/obsidian/setting-components/date-time-component.mjs +62 -0
  182. package/dist/lib/esm/obsidian/setting-components/email-component.mjs +72 -0
  183. package/dist/lib/esm/obsidian/setting-components/file-component.mjs +66 -0
  184. package/dist/lib/esm/obsidian/setting-components/index.mjs +78 -0
  185. package/dist/lib/esm/obsidian/setting-components/month-component.mjs +70 -0
  186. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/multiple-dropdown-component.d.mts +1 -1
  187. package/dist/lib/esm/obsidian/setting-components/multiple-dropdown-component.mjs +136 -0
  188. package/dist/lib/esm/obsidian/setting-components/multiple-email-component.mjs +59 -0
  189. package/dist/lib/esm/obsidian/setting-components/multiple-file-component.mjs +68 -0
  190. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/multiple-text-component.d.mts +1 -1
  191. package/dist/lib/esm/obsidian/setting-components/multiple-text-component.mjs +149 -0
  192. package/dist/lib/esm/obsidian/setting-components/number-component.mjs +82 -0
  193. package/dist/lib/esm/obsidian/setting-components/password-component.mjs +58 -0
  194. package/dist/lib/esm/obsidian/setting-components/setting-component-wrapper.mjs +45 -0
  195. package/dist/lib/esm/obsidian/setting-components/telephone-component.mjs +72 -0
  196. package/dist/lib/esm/obsidian/setting-components/text-based-component.mjs +58 -0
  197. package/dist/lib/esm/obsidian/setting-components/time-component.mjs +67 -0
  198. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/tri-state-checkbox-component.d.mts +1 -1
  199. package/dist/lib/esm/obsidian/setting-components/tri-state-checkbox-component.mjs +102 -0
  200. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/typed-dropdown-component.d.mts +1 -1
  201. package/dist/lib/esm/obsidian/setting-components/typed-dropdown-component.mjs +142 -0
  202. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/typed-multiple-dropdown-component.d.mts +1 -1
  203. package/dist/lib/esm/obsidian/setting-components/typed-multiple-dropdown-component.mjs +141 -0
  204. package/dist/lib/esm/obsidian/setting-components/typed-range-text-component.mjs +60 -0
  205. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/typed-text-component.d.mts +2 -2
  206. package/dist/lib/esm/obsidian/setting-components/typed-text-component.mjs +119 -0
  207. package/dist/lib/esm/obsidian/setting-components/url-component.mjs +72 -0
  208. package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/validator-component.d.mts +1 -1
  209. package/dist/lib/esm/obsidian/setting-components/validator-component.mjs +127 -0
  210. package/dist/lib/esm/obsidian/setting-components/week-component.mjs +70 -0
  211. package/dist/lib/esm/obsidian/setting-ex.d.mts +20 -20
  212. package/dist/lib/esm/obsidian/setting-ex.mjs +21 -21
  213. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +2 -2
  214. package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +1 -1
  215. package/dist/lib/esm/script-utils/linters/eslint-config.d.mts +2 -2
  216. package/dist/lib/esm/script-utils/linters/eslint-config.mjs +2 -1
  217. package/dist/lib/esm/type.mjs +1 -1
  218. package/obsidian/Components/abort-signal-component/package.json +6 -0
  219. package/obsidian/Components/{all-windows-event-handler → all-windows-event-component}/package.json +3 -3
  220. package/obsidian/Components/async-error-handler-component/package.json +6 -0
  221. package/obsidian/Components/console-debug-component/package.json +6 -0
  222. package/obsidian/Components/disposable-component/package.json +6 -0
  223. package/obsidian/Components/i18n-component/package.json +6 -0
  224. package/obsidian/Components/layout-ready-component/package.json +6 -0
  225. package/obsidian/Components/menu-event-registrar-component/package.json +6 -0
  226. package/obsidian/Components/monkey-around-component/package.json +6 -0
  227. package/obsidian/Components/plugin-context-component/package.json +6 -0
  228. package/obsidian/Components/plugin-notice-component/package.json +6 -0
  229. package/obsidian/Components/plugin-settings-component/package.json +6 -0
  230. package/obsidian/Components/plugin-settings-tab-component/package.json +6 -0
  231. package/obsidian/path-settings/package.json +6 -0
  232. package/obsidian/setting-components/checkbox-component/package.json +6 -0
  233. package/obsidian/setting-components/code-highlighter-component/package.json +6 -0
  234. package/obsidian/setting-components/date-component/package.json +6 -0
  235. package/obsidian/setting-components/date-time-component/package.json +6 -0
  236. package/obsidian/setting-components/email-component/package.json +6 -0
  237. package/obsidian/setting-components/file-component/package.json +6 -0
  238. package/obsidian/setting-components/index/package.json +6 -0
  239. package/obsidian/setting-components/month-component/package.json +6 -0
  240. package/obsidian/setting-components/multiple-dropdown-component/package.json +6 -0
  241. package/obsidian/setting-components/multiple-email-component/package.json +6 -0
  242. package/obsidian/setting-components/multiple-file-component/package.json +6 -0
  243. package/obsidian/setting-components/multiple-text-component/package.json +6 -0
  244. package/obsidian/setting-components/number-component/package.json +6 -0
  245. package/obsidian/setting-components/package.json +6 -0
  246. package/obsidian/setting-components/password-component/package.json +6 -0
  247. package/obsidian/setting-components/setting-component-wrapper/package.json +6 -0
  248. package/obsidian/setting-components/telephone-component/package.json +6 -0
  249. package/obsidian/setting-components/text-based-component/package.json +6 -0
  250. package/obsidian/setting-components/time-component/package.json +6 -0
  251. package/obsidian/setting-components/tri-state-checkbox-component/package.json +6 -0
  252. package/obsidian/setting-components/typed-dropdown-component/package.json +6 -0
  253. package/obsidian/setting-components/typed-multiple-dropdown-component/package.json +6 -0
  254. package/obsidian/setting-components/typed-range-text-component/package.json +6 -0
  255. package/obsidian/setting-components/typed-text-component/package.json +6 -0
  256. package/obsidian/setting-components/url-component/package.json +6 -0
  257. package/obsidian/setting-components/validator-component/package.json +6 -0
  258. package/obsidian/setting-components/value-component-with-change-tracking/package.json +6 -0
  259. package/obsidian/setting-components/week-component/package.json +6 -0
  260. package/package.json +23 -43
  261. package/dist/lib/cjs/obsidian/components/all-windows-event-handler.cjs +0 -196
  262. package/dist/lib/cjs/obsidian/components/setting-components/checkbox-component.cjs +0 -209
  263. package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.cjs +0 -356
  264. package/dist/lib/cjs/obsidian/components/setting-components/multiple-dropdown-component.cjs +0 -241
  265. package/dist/lib/cjs/obsidian/components/setting-components/multiple-text-component.cjs +0 -254
  266. package/dist/lib/cjs/obsidian/components/setting-components/tri-state-checkbox-component.cjs +0 -210
  267. package/dist/lib/cjs/obsidian/components/setting-components/typed-dropdown-component.cjs +0 -247
  268. package/dist/lib/cjs/obsidian/components/setting-components/typed-multiple-dropdown-component.cjs +0 -249
  269. package/dist/lib/cjs/obsidian/components/setting-components/typed-text-component.cjs +0 -224
  270. package/dist/lib/cjs/obsidian/components/setting-components/validator-component.cjs +0 -226
  271. package/dist/lib/cjs/obsidian/monkey-around.cjs +0 -177
  272. package/dist/lib/cjs/obsidian/monkey-around.d.cts +0 -62
  273. package/dist/lib/cjs/obsidian/plugin/components/index.cjs +0 -170
  274. package/dist/lib/cjs/obsidian/plugin/components/index.d.cts +0 -9
  275. package/dist/lib/cjs/obsidian/plugin/components/layout-ready-component.cjs +0 -124
  276. package/dist/lib/cjs/obsidian/plugin/components/layout-ready-component.d.cts +0 -18
  277. package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.cjs +0 -563
  278. package/dist/lib/cjs/obsidian/plugin/path-settings.cjs +0 -239
  279. package/dist/lib/esm/obsidian/components/all-windows-event-handler.mjs +0 -88
  280. package/dist/lib/esm/obsidian/components/setting-components/checkbox-component.mjs +0 -101
  281. package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.mjs +0 -254
  282. package/dist/lib/esm/obsidian/components/setting-components/date-component.mjs +0 -62
  283. package/dist/lib/esm/obsidian/components/setting-components/date-time-component.mjs +0 -62
  284. package/dist/lib/esm/obsidian/components/setting-components/email-component.mjs +0 -72
  285. package/dist/lib/esm/obsidian/components/setting-components/file-component.mjs +0 -66
  286. package/dist/lib/esm/obsidian/components/setting-components/index.mjs +0 -78
  287. package/dist/lib/esm/obsidian/components/setting-components/month-component.mjs +0 -70
  288. package/dist/lib/esm/obsidian/components/setting-components/multiple-dropdown-component.mjs +0 -136
  289. package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.mjs +0 -59
  290. package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.mjs +0 -68
  291. package/dist/lib/esm/obsidian/components/setting-components/multiple-text-component.mjs +0 -149
  292. package/dist/lib/esm/obsidian/components/setting-components/number-component.mjs +0 -82
  293. package/dist/lib/esm/obsidian/components/setting-components/password-component.mjs +0 -58
  294. package/dist/lib/esm/obsidian/components/setting-components/setting-component-wrapper.mjs +0 -45
  295. package/dist/lib/esm/obsidian/components/setting-components/telephone-component.mjs +0 -72
  296. package/dist/lib/esm/obsidian/components/setting-components/text-based-component.mjs +0 -58
  297. package/dist/lib/esm/obsidian/components/setting-components/time-component.mjs +0 -67
  298. package/dist/lib/esm/obsidian/components/setting-components/tri-state-checkbox-component.mjs +0 -102
  299. package/dist/lib/esm/obsidian/components/setting-components/typed-dropdown-component.mjs +0 -142
  300. package/dist/lib/esm/obsidian/components/setting-components/typed-multiple-dropdown-component.mjs +0 -141
  301. package/dist/lib/esm/obsidian/components/setting-components/typed-range-text-component.mjs +0 -60
  302. package/dist/lib/esm/obsidian/components/setting-components/typed-text-component.mjs +0 -119
  303. package/dist/lib/esm/obsidian/components/setting-components/url-component.mjs +0 -72
  304. package/dist/lib/esm/obsidian/components/setting-components/validator-component.mjs +0 -127
  305. package/dist/lib/esm/obsidian/components/setting-components/week-component.mjs +0 -70
  306. package/dist/lib/esm/obsidian/monkey-around.d.mts +0 -62
  307. package/dist/lib/esm/obsidian/monkey-around.mjs +0 -66
  308. package/dist/lib/esm/obsidian/plugin/components/abort-signal-component.mjs +0 -59
  309. package/dist/lib/esm/obsidian/plugin/components/async-error-handler-component.mjs +0 -62
  310. package/dist/lib/esm/obsidian/plugin/components/console-debug-component.mjs +0 -56
  311. package/dist/lib/esm/obsidian/plugin/components/i18n-component.mjs +0 -53
  312. package/dist/lib/esm/obsidian/plugin/components/index.d.mts +0 -9
  313. package/dist/lib/esm/obsidian/plugin/components/index.mjs +0 -44
  314. package/dist/lib/esm/obsidian/plugin/components/layout-ready-component.d.mts +0 -18
  315. package/dist/lib/esm/obsidian/plugin/components/layout-ready-component.mjs +0 -24
  316. package/dist/lib/esm/obsidian/plugin/components/plugin-context-component.mjs +0 -61
  317. package/dist/lib/esm/obsidian/plugin/components/plugin-notice-component.mjs +0 -60
  318. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.mjs +0 -461
  319. package/dist/lib/esm/obsidian/plugin/components/plugin-settings-tab-component.mjs +0 -49
  320. package/dist/lib/esm/obsidian/plugin/path-settings.mjs +0 -135
  321. package/obsidian/Components/setting-components/checkbox-component/package.json +0 -6
  322. package/obsidian/Components/setting-components/code-highlighter-component/package.json +0 -6
  323. package/obsidian/Components/setting-components/date-component/package.json +0 -6
  324. package/obsidian/Components/setting-components/date-time-component/package.json +0 -6
  325. package/obsidian/Components/setting-components/email-component/package.json +0 -6
  326. package/obsidian/Components/setting-components/file-component/package.json +0 -6
  327. package/obsidian/Components/setting-components/index/package.json +0 -6
  328. package/obsidian/Components/setting-components/month-component/package.json +0 -6
  329. package/obsidian/Components/setting-components/multiple-dropdown-component/package.json +0 -6
  330. package/obsidian/Components/setting-components/multiple-email-component/package.json +0 -6
  331. package/obsidian/Components/setting-components/multiple-file-component/package.json +0 -6
  332. package/obsidian/Components/setting-components/multiple-text-component/package.json +0 -6
  333. package/obsidian/Components/setting-components/number-component/package.json +0 -6
  334. package/obsidian/Components/setting-components/package.json +0 -6
  335. package/obsidian/Components/setting-components/password-component/package.json +0 -6
  336. package/obsidian/Components/setting-components/setting-component-wrapper/package.json +0 -6
  337. package/obsidian/Components/setting-components/telephone-component/package.json +0 -6
  338. package/obsidian/Components/setting-components/text-based-component/package.json +0 -6
  339. package/obsidian/Components/setting-components/time-component/package.json +0 -6
  340. package/obsidian/Components/setting-components/tri-state-checkbox-component/package.json +0 -6
  341. package/obsidian/Components/setting-components/typed-dropdown-component/package.json +0 -6
  342. package/obsidian/Components/setting-components/typed-multiple-dropdown-component/package.json +0 -6
  343. package/obsidian/Components/setting-components/typed-range-text-component/package.json +0 -6
  344. package/obsidian/Components/setting-components/typed-text-component/package.json +0 -6
  345. package/obsidian/Components/setting-components/url-component/package.json +0 -6
  346. package/obsidian/Components/setting-components/validator-component/package.json +0 -6
  347. package/obsidian/Components/setting-components/value-component-with-change-tracking/package.json +0 -6
  348. package/obsidian/Components/setting-components/week-component/package.json +0 -6
  349. package/obsidian/Plugin/components/abort-signal-component/package.json +0 -6
  350. package/obsidian/Plugin/components/async-error-handler-component/package.json +0 -6
  351. package/obsidian/Plugin/components/console-debug-component/package.json +0 -6
  352. package/obsidian/Plugin/components/i18n-component/package.json +0 -6
  353. package/obsidian/Plugin/components/index/package.json +0 -6
  354. package/obsidian/Plugin/components/layout-ready-component/package.json +0 -6
  355. package/obsidian/Plugin/components/package.json +0 -6
  356. package/obsidian/Plugin/components/plugin-context-component/package.json +0 -6
  357. package/obsidian/Plugin/components/plugin-notice-component/package.json +0 -6
  358. package/obsidian/Plugin/components/plugin-settings-component/package.json +0 -6
  359. package/obsidian/Plugin/components/plugin-settings-tab-component/package.json +0 -6
  360. package/obsidian/Plugin/path-settings/package.json +0 -6
  361. package/obsidian/monkey-around/package.json +0 -6
  362. /package/dist/lib/cjs/obsidian/{plugin/path-settings.d.cts → path-settings.d.cts} +0 -0
  363. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/date-component.d.cts +0 -0
  364. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/date-time-component.d.cts +0 -0
  365. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/email-component.d.cts +0 -0
  366. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/file-component.d.cts +0 -0
  367. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/index.d.cts +0 -0
  368. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/month-component.d.cts +0 -0
  369. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/multiple-email-component.d.cts +0 -0
  370. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/multiple-file-component.d.cts +0 -0
  371. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/number-component.d.cts +0 -0
  372. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/password-component.d.cts +0 -0
  373. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/setting-component-wrapper.d.cts +0 -0
  374. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/telephone-component.d.cts +0 -0
  375. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/text-based-component.d.cts +0 -0
  376. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/time-component.d.cts +0 -0
  377. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/typed-range-text-component.d.cts +0 -0
  378. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/url-component.d.cts +0 -0
  379. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/value-component-with-change-tracking.d.cts +0 -0
  380. /package/dist/lib/cjs/obsidian/{components/setting-components → setting-components}/week-component.d.cts +0 -0
  381. /package/dist/lib/esm/obsidian/{plugin/path-settings.d.mts → path-settings.d.mts} +0 -0
  382. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/date-component.d.mts +0 -0
  383. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/date-time-component.d.mts +0 -0
  384. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/email-component.d.mts +0 -0
  385. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/file-component.d.mts +0 -0
  386. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/index.d.mts +0 -0
  387. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/month-component.d.mts +0 -0
  388. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/multiple-email-component.d.mts +0 -0
  389. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/multiple-file-component.d.mts +0 -0
  390. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/number-component.d.mts +0 -0
  391. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/password-component.d.mts +0 -0
  392. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/setting-component-wrapper.d.mts +0 -0
  393. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/telephone-component.d.mts +0 -0
  394. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/text-based-component.d.mts +0 -0
  395. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/time-component.d.mts +0 -0
  396. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/typed-range-text-component.d.mts +0 -0
  397. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/url-component.d.mts +0 -0
  398. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/value-component-with-change-tracking.d.mts +0 -0
  399. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/value-component-with-change-tracking.mjs +0 -0
  400. /package/dist/lib/esm/obsidian/{components/setting-components → setting-components}/week-component.d.mts +0 -0
@@ -0,0 +1,135 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function initEsm() {
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
+ if (globalThis.process) {
9
+ return;
10
+ }
11
+
12
+ const browserProcess = {
13
+ browser: true,
14
+ cwd() {
15
+ return '/';
16
+ },
17
+ env: {},
18
+ platform: 'android'
19
+ };
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
+ globalThis.process = browserProcess;
22
+ })();
23
+
24
+ import {
25
+ ALWAYS_MATCH_REG_EXP,
26
+ escapeRegExp,
27
+ NEVER_MATCH_REG_EXP
28
+ } from "../reg-exp.mjs";
29
+ import { trimEnd } from "../string.mjs";
30
+ import { assert } from "../type-guards.mjs";
31
+ class PathSetting {
32
+ constructor(type) {
33
+ this.type = type;
34
+ this.defaultRegExp = getDefaultRegExp(type);
35
+ this.regExp = this.defaultRegExp;
36
+ }
37
+ type;
38
+ get array() {
39
+ return this._array;
40
+ }
41
+ set array(value) {
42
+ this._array = value.filter(Boolean);
43
+ this.regExp = makeRegExp(this._array, this.defaultRegExp);
44
+ }
45
+ _array = [];
46
+ defaultRegExp;
47
+ regExp;
48
+ isPathIgnored(path) {
49
+ switch (this.type) {
50
+ /* v8 ignore stop */
51
+ case "Exclude" /* Exclude */:
52
+ return this.regExp.test(path);
53
+ case "Include" /* Include */:
54
+ return !this.regExp.test(path);
55
+ default:
56
+ assert(false, `Invalid path setting type: ${this.type}`);
57
+ }
58
+ }
59
+ }
60
+ class PathSettings {
61
+ /**
62
+ * Gets the exclude paths.
63
+ *
64
+ * @returns The exclude paths.
65
+ */
66
+ get excludePaths() {
67
+ return this._excludePaths.array;
68
+ }
69
+ /**
70
+ * Sets the exclude paths.
71
+ *
72
+ * @param value - The exclude paths.
73
+ */
74
+ set excludePaths(value) {
75
+ this._excludePaths.array = value;
76
+ }
77
+ /**
78
+ * Gets the include paths.
79
+ *
80
+ * @returns The include paths.
81
+ */
82
+ get includePaths() {
83
+ return this._includePaths.array;
84
+ }
85
+ /**
86
+ * Sets the include paths.
87
+ *
88
+ * @param value - The include paths.
89
+ */
90
+ set includePaths(value) {
91
+ this._includePaths.array = value;
92
+ }
93
+ _excludePaths = new PathSetting("Exclude" /* Exclude */);
94
+ _includePaths = new PathSetting("Include" /* Include */);
95
+ /**
96
+ * Checks if a path is ignored by the include/exclude path settings.
97
+ *
98
+ * @param path - The path to check.
99
+ * @returns `true` if the path is ignored, `false` otherwise.
100
+ */
101
+ isPathIgnored(path) {
102
+ return this._includePaths.isPathIgnored(path) || this._excludePaths.isPathIgnored(path);
103
+ }
104
+ }
105
+ function getDefaultRegExp(type) {
106
+ switch (type) {
107
+ /* v8 ignore stop */
108
+ case "Exclude" /* Exclude */:
109
+ return NEVER_MATCH_REG_EXP;
110
+ case "Include" /* Include */:
111
+ return ALWAYS_MATCH_REG_EXP;
112
+ default:
113
+ assert(false, `Invalid path setting type: ${type}`);
114
+ }
115
+ }
116
+ function makeRegExp(paths, defaultRegExp) {
117
+ if (paths.length === 0) {
118
+ return defaultRegExp;
119
+ }
120
+ const regExpStrCombined = paths.map((path) => {
121
+ if (path === "/") {
122
+ return defaultRegExp.source;
123
+ }
124
+ if (path.startsWith("/") && path.endsWith("/")) {
125
+ return path.slice(1, -1);
126
+ }
127
+ path = trimEnd(path, "/");
128
+ return `^${escapeRegExp(path)}(/|$)`;
129
+ }).map((regExpStr) => `(${regExpStr})`).join("|");
130
+ return new RegExp(regExpStrCombined);
131
+ }
132
+ export {
133
+ PathSettings
134
+ };
135
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BhdGgtc2V0dGluZ3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBjbGFzc2VzIGZvciBtYW5hZ2luZyBpbmNsdWRlL2V4Y2x1ZGUgcGF0aCBzZXR0aW5ncy5cbiAqL1xuXG5pbXBvcnQge1xuICBBTFdBWVNfTUFUQ0hfUkVHX0VYUCxcbiAgZXNjYXBlUmVnRXhwLFxuICBORVZFUl9NQVRDSF9SRUdfRVhQXG59IGZyb20gJy4uL3JlZy1leHAudHMnO1xuaW1wb3J0IHsgdHJpbUVuZCB9IGZyb20gJy4uL3N0cmluZy50cyc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICcuLi90eXBlLWd1YXJkcy50cyc7XG5cbmVudW0gUGF0aFNldHRpbmdUeXBlIHtcbiAgRXhjbHVkZSA9ICdFeGNsdWRlJyxcbiAgSW5jbHVkZSA9ICdJbmNsdWRlJ1xufVxuXG5jbGFzcyBQYXRoU2V0dGluZyB7XG4gIHB1YmxpYyBnZXQgYXJyYXkoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9hcnJheTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgYXJyYXkodmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fYXJyYXkgPSB2YWx1ZS5maWx0ZXIoQm9vbGVhbik7XG4gICAgdGhpcy5yZWdFeHAgPSBtYWtlUmVnRXhwKHRoaXMuX2FycmF5LCB0aGlzLmRlZmF1bHRSZWdFeHApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXJyYXk6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFJlZ0V4cDogUmVnRXhwO1xuICBwcml2YXRlIHJlZ0V4cDogUmVnRXhwO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFBhdGhTZXR0aW5nVHlwZSkge1xuICAgIHRoaXMuZGVmYXVsdFJlZ0V4cCA9IGdldERlZmF1bHRSZWdFeHAodHlwZSk7XG4gICAgdGhpcy5yZWdFeHAgPSB0aGlzLmRlZmF1bHRSZWdFeHA7XG4gIH1cblxuICBwdWJsaWMgaXNQYXRoSWdub3JlZChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWxsIGJyYW5jaGVzIGNvdmVyZWQgYnV0IHY4IHJlcG9ydHMgc3dpdGNoIGFzIHBhcnRpYWwuICovXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICBjYXNlIFBhdGhTZXR0aW5nVHlwZS5FeGNsdWRlOlxuICAgICAgICByZXR1cm4gdGhpcy5yZWdFeHAudGVzdChwYXRoKTtcbiAgICAgIGNhc2UgUGF0aFNldHRpbmdUeXBlLkluY2x1ZGU6XG4gICAgICAgIHJldHVybiAhdGhpcy5yZWdFeHAudGVzdChwYXRoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBFeGhhdXN0aXZlIHN3aXRjaCBndWFyZC4gKi9cbiAgICAgICAgYXNzZXJ0KGZhbHNlLCBgSW52YWxpZCBwYXRoIHNldHRpbmcgdHlwZTogJHt0aGlzLnR5cGUgYXMgc3RyaW5nfWApO1xuICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEEgY2xhc3MgZm9yIG1hbmFnaW5nIGluY2x1ZGUvZXhjbHVkZSBwYXRoIHNldHRpbmdzLlxuICovXG5leHBvcnQgY2xhc3MgUGF0aFNldHRpbmdzIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIGV4Y2x1ZGUgcGF0aHMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBleGNsdWRlIHBhdGhzLlxuICAgKi9cbiAgcHVibGljIGdldCBleGNsdWRlUGF0aHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9leGNsdWRlUGF0aHMuYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZXhjbHVkZSBwYXRocy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGV4Y2x1ZGUgcGF0aHMuXG4gICAqL1xuICBwdWJsaWMgc2V0IGV4Y2x1ZGVQYXRocyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9leGNsdWRlUGF0aHMuYXJyYXkgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpbmNsdWRlIHBhdGhzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgaW5jbHVkZSBwYXRocy5cbiAgICovXG4gIHB1YmxpYyBnZXQgaW5jbHVkZVBhdGhzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5faW5jbHVkZVBhdGhzLmFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGluY2x1ZGUgcGF0aHMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBpbmNsdWRlIHBhdGhzLlxuICAgKi9cbiAgcHVibGljIHNldCBpbmNsdWRlUGF0aHModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5faW5jbHVkZVBhdGhzLmFycmF5ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9leGNsdWRlUGF0aHMgPSBuZXcgUGF0aFNldHRpbmcoUGF0aFNldHRpbmdUeXBlLkV4Y2x1ZGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbmNsdWRlUGF0aHMgPSBuZXcgUGF0aFNldHRpbmcoUGF0aFNldHRpbmdUeXBlLkluY2x1ZGUpO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBwYXRoIGlzIGlnbm9yZWQgYnkgdGhlIGluY2x1ZGUvZXhjbHVkZSBwYXRoIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhdGggaXMgaWdub3JlZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgaXNQYXRoSWdub3JlZChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5jbHVkZVBhdGhzLmlzUGF0aElnbm9yZWQocGF0aCkgfHwgdGhpcy5fZXhjbHVkZVBhdGhzLmlzUGF0aElnbm9yZWQocGF0aCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdFJlZ0V4cCh0eXBlOiBQYXRoU2V0dGluZ1R5cGUpOiBSZWdFeHAge1xuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWxsIGJyYW5jaGVzIGNvdmVyZWQgYnV0IHY4IHJlcG9ydHMgc3dpdGNoIGFzIHBhcnRpYWwuICovXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgY2FzZSBQYXRoU2V0dGluZ1R5cGUuRXhjbHVkZTpcbiAgICAgIHJldHVybiBORVZFUl9NQVRDSF9SRUdfRVhQO1xuICAgIGNhc2UgUGF0aFNldHRpbmdUeXBlLkluY2x1ZGU6XG4gICAgICByZXR1cm4gQUxXQVlTX01BVENIX1JFR19FWFA7XG4gICAgZGVmYXVsdDpcbiAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBFeGhhdXN0aXZlIHN3aXRjaCBndWFyZC4gKi9cbiAgICAgIGFzc2VydChmYWxzZSwgYEludmFsaWQgcGF0aCBzZXR0aW5nIHR5cGU6ICR7dHlwZSBhcyBzdHJpbmd9YCk7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VSZWdFeHAocGF0aHM6IHN0cmluZ1tdLCBkZWZhdWx0UmVnRXhwOiBSZWdFeHApOiBSZWdFeHAge1xuICBpZiAocGF0aHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRSZWdFeHA7XG4gIH1cblxuICBjb25zdCByZWdFeHBTdHJDb21iaW5lZCA9IHBhdGhzLm1hcCgocGF0aCkgPT4ge1xuICAgIGlmIChwYXRoID09PSAnLycpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0UmVnRXhwLnNvdXJjZTtcbiAgICB9XG5cbiAgICBpZiAocGF0aC5zdGFydHNXaXRoKCcvJykgJiYgcGF0aC5lbmRzV2l0aCgnLycpKSB7XG4gICAgICByZXR1cm4gcGF0aC5zbGljZSgxLCAtMSk7XG4gICAgfVxuXG4gICAgcGF0aCA9IHRyaW1FbmQocGF0aCwgJy8nKTtcbiAgICByZXR1cm4gYF4ke2VzY2FwZVJlZ0V4cChwYXRoKX0oL3wkKWA7XG4gIH0pXG4gICAgLm1hcCgocmVnRXhwU3RyKSA9PiBgKCR7cmVnRXhwU3RyfSlgKVxuICAgIC5qb2luKCd8Jyk7XG4gIHJldHVybiBuZXcgUmVnRXhwKHJlZ0V4cFN0ckNvbWJpbmVkKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxlQUFlO0FBQ3hCLFNBQVMsY0FBYztBQU92QixNQUFNLFlBQVk7QUFBQSxFQWNULFlBQTZCLE1BQXVCO0FBQXZCO0FBQ2xDLFNBQUssZ0JBQWdCLGlCQUFpQixJQUFJO0FBQzFDLFNBQUssU0FBUyxLQUFLO0FBQUEsRUFDckI7QUFBQSxFQUhvQztBQUFBLEVBYnBDLElBQVcsUUFBa0I7QUFDM0IsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLEVBRUEsSUFBVyxNQUFNLE9BQWlCO0FBQ2hDLFNBQUssU0FBUyxNQUFNLE9BQU8sT0FBTztBQUNsQyxTQUFLLFNBQVMsV0FBVyxLQUFLLFFBQVEsS0FBSyxhQUFhO0FBQUEsRUFDMUQ7QUFBQSxFQUVRLFNBQW1CLENBQUM7QUFBQSxFQUNYO0FBQUEsRUFDVDtBQUFBLEVBT0QsY0FBYyxNQUF1QjtBQUUxQyxZQUFRLEtBQUssTUFBTTtBQUFBO0FBQUEsTUFFakIsS0FBSztBQUNILGVBQU8sS0FBSyxPQUFPLEtBQUssSUFBSTtBQUFBLE1BQzlCLEtBQUs7QUFDSCxlQUFPLENBQUMsS0FBSyxPQUFPLEtBQUssSUFBSTtBQUFBLE1BQy9CO0FBRUUsZUFBTyxPQUFPLDhCQUE4QixLQUFLLElBQWMsRUFBRTtBQUFBLElBRXJFO0FBQUEsRUFDRjtBQUNGO0FBS08sTUFBTSxhQUFhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXhCLElBQVcsZUFBeUI7QUFDbEMsV0FBTyxLQUFLLGNBQWM7QUFBQSxFQUM1QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsYUFBYSxPQUFpQjtBQUN2QyxTQUFLLGNBQWMsUUFBUTtBQUFBLEVBQzdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBVyxlQUF5QjtBQUNsQyxXQUFPLEtBQUssY0FBYztBQUFBLEVBQzVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBVyxhQUFhLE9BQWlCO0FBQ3ZDLFNBQUssY0FBYyxRQUFRO0FBQUEsRUFDN0I7QUFBQSxFQUVpQixnQkFBZ0IsSUFBSSxZQUFZLHVCQUF1QjtBQUFBLEVBQ3ZELGdCQUFnQixJQUFJLFlBQVksdUJBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRakUsY0FBYyxNQUF1QjtBQUMxQyxXQUFPLEtBQUssY0FBYyxjQUFjLElBQUksS0FBSyxLQUFLLGNBQWMsY0FBYyxJQUFJO0FBQUEsRUFDeEY7QUFDRjtBQUVBLFNBQVMsaUJBQWlCLE1BQStCO0FBRXZELFVBQVEsTUFBTTtBQUFBO0FBQUEsSUFFWixLQUFLO0FBQ0gsYUFBTztBQUFBLElBQ1QsS0FBSztBQUNILGFBQU87QUFBQSxJQUNUO0FBRUUsYUFBTyxPQUFPLDhCQUE4QixJQUFjLEVBQUU7QUFBQSxFQUVoRTtBQUNGO0FBRUEsU0FBUyxXQUFXLE9BQWlCLGVBQStCO0FBQ2xFLE1BQUksTUFBTSxXQUFXLEdBQUc7QUFDdEIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLG9CQUFvQixNQUFNLElBQUksQ0FBQyxTQUFTO0FBQzVDLFFBQUksU0FBUyxLQUFLO0FBQ2hCLGFBQU8sY0FBYztBQUFBLElBQ3ZCO0FBRUEsUUFBSSxLQUFLLFdBQVcsR0FBRyxLQUFLLEtBQUssU0FBUyxHQUFHLEdBQUc7QUFDOUMsYUFBTyxLQUFLLE1BQU0sR0FBRyxFQUFFO0FBQUEsSUFDekI7QUFFQSxXQUFPLFFBQVEsTUFBTSxHQUFHO0FBQ3hCLFdBQU8sSUFBSSxhQUFhLElBQUksQ0FBQztBQUFBLEVBQy9CLENBQUMsRUFDRSxJQUFJLENBQUMsY0FBYyxJQUFJLFNBQVMsR0FBRyxFQUNuQyxLQUFLLEdBQUc7QUFDWCxTQUFPLElBQUksT0FBTyxpQkFBaUI7QUFDckM7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -1,6 +1,4 @@
1
- export * as 'components' from './components/index.mjs';
2
1
  export * as 'obsidian-plugin-repo-paths' from './obsidian-plugin-repo-paths.mjs';
3
- export * as 'path-settings' from './path-settings.mjs';
4
2
  export * as 'plugin-context' from './plugin-context.mjs';
5
3
  export * as 'plugin-id' from './plugin-id.mjs';
6
4
  export * as 'plugin-settings-tab' from './plugin-settings-tab.mjs';
@@ -21,20 +21,16 @@ if you want to view the source, please visit the github repository of this plugi
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
24
- import * as components from "./components/index.mjs";
25
24
  import * as obsidian_plugin_repo_paths from "./obsidian-plugin-repo-paths.mjs";
26
- import * as path_settings from "./path-settings.mjs";
27
25
  import * as plugin_context from "./plugin-context.mjs";
28
26
  import * as plugin_id from "./plugin-id.mjs";
29
27
  import * as plugin_settings_tab from "./plugin-settings-tab.mjs";
30
28
  import * as plugin from "./plugin.mjs";
31
29
  export {
32
- components,
33
30
  obsidian_plugin_repo_paths as "obsidian-plugin-repo-paths",
34
- path_settings as "path-settings",
35
31
  plugin,
36
32
  plugin_context as "plugin-context",
37
33
  plugin_id as "plugin-id",
38
34
  plugin_settings_tab as "plugin-settings-tab"
39
35
  };
40
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdjb21wb25lbnRzJyBmcm9tICcuL2NvbXBvbmVudHMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzJyBmcm9tICcuL29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzLnRzJztcbmV4cG9ydCAqIGFzICdwYXRoLXNldHRpbmdzJyBmcm9tICcuL3BhdGgtc2V0dGluZ3MudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1jb250ZXh0JyBmcm9tICcuL3BsdWdpbi1jb250ZXh0LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4taWQnIGZyb20gJy4vcGx1Z2luLWlkLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tc2V0dGluZ3MtdGFiJyBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncy10YWIudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbicgZnJvbSAnLi9wbHVnaW4udHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxZQUFZLGdCQUFrQjtBQUM5QixZQUFZQSxnQ0FBa0M7QUFDOUMsWUFBWUMsbUJBQXFCO0FBQ2pDLFlBQVlDLG9CQUFzQjtBQUNsQyxZQUFZQyxlQUFpQjtBQUM3QixZQUFZQyx5QkFBMkI7QUFDdkMsWUFBWSxZQUFjOyIsCiAgIm5hbWVzIjogWyJvYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocyIsICJwYXRoLXNldHRpbmdzIiwgInBsdWdpbi1jb250ZXh0IiwgInBsdWdpbi1pZCIsICJwbHVnaW4tc2V0dGluZ3MtdGFiIl0KfQo=
36
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdvYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocycgZnJvbSAnLi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLWNvbnRleHQnIGZyb20gJy4vcGx1Z2luLWNvbnRleHQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1pZCcgZnJvbSAnLi9wbHVnaW4taWQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1zZXR0aW5ncy10YWInIGZyb20gJy4vcGx1Z2luLXNldHRpbmdzLXRhYi50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luJyBmcm9tICcuL3BsdWdpbi50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFlBQVlBLGdDQUFrQztBQUM5QyxZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWUMsZUFBaUI7QUFDN0IsWUFBWUMseUJBQTJCO0FBQ3ZDLFlBQVksWUFBYzsiLAogICJuYW1lcyI6IFsib2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMiLCAicGx1Z2luLWNvbnRleHQiLCAicGx1Z2luLWlkIiwgInBsdWdpbi1zZXR0aW5ncy10YWIiXQp9Cg==
@@ -8,9 +8,9 @@ import type { Plugin } from 'obsidian';
8
8
  import type { ConditionalKeys, Promisable, ReadonlyDeep } from 'type-fest';
9
9
  import { PluginSettingTab } from 'obsidian';
10
10
  import type { StringKeys } from '../../type.mjs';
11
- import type { ValueComponentWithChangeTracking } from '../components/setting-components/value-component-with-change-tracking.mjs';
11
+ import type { PluginSettingsComponentBase, ReadonlyPluginSettingsState } from '../components/plugin-settings-component.mjs';
12
+ import type { ValueComponentWithChangeTracking } from '../setting-components/value-component-with-change-tracking.mjs';
12
13
  import type { ValidationMessageHolder } from '../validation.mjs';
13
- import type { PluginSettingsComponentBase, ReadonlyPluginSettingsState } from './components/plugin-settings-component.mjs';
14
14
  /**
15
15
  * A context passed to the {@link PluginSettingsComponentBase.saveToFile} method.
16
16
  */
@@ -24,7 +24,7 @@ export interface BindOptions<T> {
24
24
  /**
25
25
  * A callback function that is called when the value of the component changes.
26
26
  */
27
- readonly onChanged?: (newValue: ReadonlyDeep<T>, oldValue: ReadonlyDeep<T>) => Promisable<void>;
27
+ onChanged?(newValue: ReadonlyDeep<T>, oldValue: ReadonlyDeep<T>): Promisable<void>;
28
28
  /**
29
29
  * Whether to reset the setting when the component value is empty. Default is `true`.
30
30
  * Applicable only to text-based components.
@@ -54,14 +54,14 @@ export interface BindOptionsExtended<PluginSettings extends object, UIValue, Pro
54
54
  * @param uiValue - The value of the UI component.
55
55
  * @returns The value to set on the plugin settings.
56
56
  */
57
- readonly componentToPluginSettingsValueConverter: (uiValue: UIValue) => PluginSettings[PropertyName] | ValidationMessageHolder;
57
+ componentToPluginSettingsValueConverter(uiValue: UIValue): PluginSettings[PropertyName] | ValidationMessageHolder;
58
58
  /**
59
59
  * Converts the plugin settings value to the value used by the UI component.
60
60
  *
61
61
  * @param pluginSettingsValue - The value of the property in the plugin settings.
62
62
  * @returns The value to set on the UI component.
63
63
  */
64
- readonly pluginSettingsToComponentValueConverter: (pluginSettingsValue: ReadonlyDeep<PluginSettings[PropertyName]>) => UIValue;
64
+ pluginSettingsToComponentValueConverter(pluginSettingsValue: ReadonlyDeep<PluginSettings[PropertyName]>): UIValue;
65
65
  }
66
66
  /**
67
67
  * Params for creating a {@link PluginSettingsTabBase}.
@@ -38,9 +38,9 @@ import {
38
38
  import { deepEqual } from "../../object-utils.mjs";
39
39
  import { assertNonNullable } from "../../type-guards.mjs";
40
40
  import { AsyncEventsComponent } from "../components/async-events-component.mjs";
41
- import { ensureWrapped } from "../components/setting-components/setting-component-wrapper.mjs";
42
- import { getTextBasedComponentValue } from "../components/setting-components/text-based-component.mjs";
43
- import { getValidatorComponent } from "../components/setting-components/validator-component.mjs";
41
+ import { ensureWrapped } from "../setting-components/setting-component-wrapper.mjs";
42
+ import { getTextBasedComponentValue } from "../setting-components/text-based-component.mjs";
43
+ import { getValidatorComponent } from "../setting-components/validator-component.mjs";
44
44
  import { isValidationMessageHolder } from "../validation.mjs";
45
45
  import { addPluginCssClasses } from "./plugin-context.mjs";
46
46
  const SAVE_TO_FILE_CONTEXT = "PluginSettingsTab";
@@ -310,4 +310,4 @@ export {
310
310
  PluginSettingsTabBase,
311
311
  SAVE_TO_FILE_CONTEXT
312
312
  };
313
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4tc2V0dGluZ3MtdGFiLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgRGVib3VuY2VyLFxuICBQbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUge1xuICBDb25kaXRpb25hbEtleXMsXG4gIFByb21pc2FibGUsXG4gIFJlYWRvbmx5RGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBkZWJvdW5jZSxcbiAgUGx1Z2luU2V0dGluZ1RhYixcbiAgc2V0VG9vbHRpcFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgQXN5bmNFdmVudFJlZiB9IGZyb20gJy4uLy4uL2FzeW5jLWV2ZW50cy50cyc7XG5pbXBvcnQgdHlwZSB7IFN0cmluZ0tleXMgfSBmcm9tICcuLi8uLi90eXBlLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmcgfSBmcm9tICcuLi9jb21wb25lbnRzL3NldHRpbmctY29tcG9uZW50cy92YWx1ZS1jb21wb25lbnQtd2l0aC1jaGFuZ2UtdHJhY2tpbmcudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlciB9IGZyb20gJy4uL3ZhbGlkYXRpb24udHMnO1xuaW1wb3J0IHR5cGUge1xuICBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2UsXG4gIFJlYWRvbmx5UGx1Z2luU2V0dGluZ3MsXG4gIFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NTdGF0ZVxufSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7XG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgaW52b2tlQXN5bmNTYWZlbHlcbn0gZnJvbSAnLi4vLi4vYXN5bmMudHMnO1xuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi8uLi9jc3MtY2xhc3MudHMnO1xuaW1wb3J0IHtcbiAgbm9vcCxcbiAgbm9vcEFzeW5jXG59IGZyb20gJy4uLy4uL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJy4uLy4uL29iamVjdC11dGlscy50cyc7XG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IEFzeW5jRXZlbnRzQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hc3luYy1ldmVudHMtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IGVuc3VyZVdyYXBwZWQgfSBmcm9tICcuLi9jb21wb25lbnRzL3NldHRpbmctY29tcG9uZW50cy9zZXR0aW5nLWNvbXBvbmVudC13cmFwcGVyLnRzJztcbmltcG9ydCB7IGdldFRleHRCYXNlZENvbXBvbmVudFZhbHVlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9zZXR0aW5nLWNvbXBvbmVudHMvdGV4dC1iYXNlZC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgZ2V0VmFsaWRhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9zZXR0aW5nLWNvbXBvbmVudHMvdmFsaWRhdG9yLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBpc1ZhbGlkYXRpb25NZXNzYWdlSG9sZGVyIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi9wbHVnaW4tY29udGV4dC50cyc7XG5cbi8qKlxuICogQSBjb250ZXh0IHBhc3NlZCB0byB0aGUge0BsaW5rIFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZS5zYXZlVG9GaWxlfSBtZXRob2QuXG4gKi9cbmV4cG9ydCBjb25zdCBTQVZFX1RPX0ZJTEVfQ09OVEVYVCA9ICdQbHVnaW5TZXR0aW5nc1RhYic7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYFBsdWdpblNldHRpbmdzVGFiQmFzZS5iaW5kYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgc2V0dGluZ3MgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluZE9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqL1xuICByZWFkb25seSBvbkNoYW5nZWQ/OiAobmV3VmFsdWU6IFJlYWRvbmx5RGVlcDxUPiwgb2xkVmFsdWU6IFJlYWRvbmx5RGVlcDxUPikgPT4gUHJvbWlzYWJsZTx2b2lkPjtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXNldCB0aGUgc2V0dGluZyB3aGVuIHRoZSBjb21wb25lbnQgdmFsdWUgaXMgZW1wdHkuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKiBBcHBsaWNhYmxlIG9ubHkgdG8gdGV4dC1iYXNlZCBjb21wb25lbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmVzZXRTZXR0aW5nV2hlbkNvbXBvbmVudElzRW1wdHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIHBsYWNlaG9sZGVyIGZvciBkZWZhdWx0IHZhbHVlcy4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqIEFwcGxpY2FibGUgb25seSB0byB0ZXh0LWJhc2VkIGNvbXBvbmVudHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93UGxhY2Vob2xkZXJGb3JEZWZhdWx0VmFsdWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBzaG93IHRoZSB2YWxpZGF0aW9uIG1lc3NhZ2Ugd2hlbiB0aGUgY29tcG9uZW50IHZhbHVlIGlzIGludmFsaWQuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2hvd1ZhbGlkYXRpb25NZXNzYWdlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFeHRlbmRlZCBvcHRpb25zIGZvciBgUGx1Z2luU2V0dGluZ3NUYWJCYXNlLmJpbmRgLlxuICpcbiAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgcGx1Z2luIHNldHRpbmdzIHR5cGUuXG4gKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgVUkgY29tcG9uZW50J3MgdmFsdWUuXG4gKiBAdHlwZVBhcmFtIFByb3BlcnR5TmFtZSAtIFRoZSBzZXR0aW5ncyBwcm9wZXJ0eSBuYW1lIGJlaW5nIGJvdW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbmRPcHRpb25zRXh0ZW5kZWQ8XG4gIFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0LFxuICBVSVZhbHVlLFxuICBQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPlxuPiBleHRlbmRzIEJpbmRPcHRpb25zPFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+IHtcbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBVSSBjb21wb25lbnQncyB2YWx1ZSBiYWNrIHRvIHRoZSBwbHVnaW4gc2V0dGluZ3MgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSB1aVZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSB0byBzZXQgb24gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcjogKHVpVmFsdWU6IFVJVmFsdWUpID0+IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0gfCBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlcjtcblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHBsdWdpbiBzZXR0aW5ncyB2YWx1ZSB0byB0aGUgdmFsdWUgdXNlZCBieSB0aGUgVUkgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcGx1Z2luU2V0dGluZ3NWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgVUkgY29tcG9uZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luU2V0dGluZ3NUb0NvbXBvbmVudFZhbHVlQ29udmVydGVyOiAocGx1Z2luU2V0dGluZ3NWYWx1ZTogUmVhZG9ubHlEZWVwPFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+KSA9PiBVSVZhbHVlO1xufVxuXG4vKipcbiAqIFBhcmFtcyBmb3IgY3JlYXRpbmcgYSB7QGxpbmsgUGx1Z2luU2V0dGluZ3NUYWJCYXNlfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIHBsdWdpbiBzZXR0aW5ncyB0eXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblNldHRpbmdzVGFiQmFzZUNvbnN0cnVjdG9yUGFyYW1zPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiB7XG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIGluc3RhbmNlIChuZWVkZWQgYnkgT2JzaWRpYW4ncyBQbHVnaW5TZXR0aW5nVGFiKS5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbjogUGx1Z2luO1xuXG4gIC8qKlxuICAgKiBUaGUgc2V0dGluZ3MgY29tcG9uZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luU2V0dGluZ3NDb21wb25lbnQ6IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxQbHVnaW5TZXR0aW5ncz47XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgcGx1Z2luIHNldHRpbmdzIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBQcm92aWRlcyBhIG1ldGhvZCBmb3IgYmluZGluZyB2YWx1ZSBjb21wb25lbnRzIHRvIHBsdWdpbiBzZXR0aW5ncyBhbmQgaGFuZGxpbmcgY2hhbmdlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIHBsdWdpbiBzZXR0aW5ncyB0eXBlLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGx1Z2luU2V0dGluZ3NUYWJCYXNlPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYiBpcyBvcGVuLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiIGlzIG9wZW4uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNPcGVuO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5ncyBtYW5hZ2VyLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpblNldHRpbmdzQ29tcG9uZW50OiBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2U8UGx1Z2luU2V0dGluZ3M+O1xuXG4gIC8qKlxuICAgKiBBIGRlYm91bmNlIHRpbWVvdXQgZm9yIHNhdmluZyBzZXR0aW5ncy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGRlYm91bmNlIHRpbWVvdXQgZm9yIHNhdmluZyBzZXR0aW5ncy5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgc2F2ZVNldHRpbmdzRGVib3VuY2VUaW1lb3V0SW5NaWxsaXNlY29uZHMoKTogbnVtYmVyIHtcbiAgICBjb25zdCBERUZBVUxUID0gMl8wMDA7XG4gICAgcmV0dXJuIERFRkFVTFQ7XG4gIH1cblxuICBwcml2YXRlIF9pc09wZW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBhc3luY0V2ZW50c0NvbXBvbmVudDogQXN5bmNFdmVudHNDb21wb25lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2F2ZVNldHRpbmdzRGVib3VuY2VkOiBEZWJvdW5jZXI8W10sIHZvaWQ+O1xuXG4gIHByaXZhdGUgZ2V0IHBsdWdpblNldHRpbmdzKCk6IFJlYWRvbmx5UGx1Z2luU2V0dGluZ3M8UGx1Z2luU2V0dGluZ3M+IHtcbiAgICByZXR1cm4gdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5zZXR0aW5nc1N0YXRlLmlucHV0VmFsdWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbXMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBQbHVnaW5TZXR0aW5nc1RhYkJhc2VDb25zdHJ1Y3RvclBhcmFtczxQbHVnaW5TZXR0aW5ncz4pIHtcbiAgICBzdXBlcihwYXJhbXMucGx1Z2luLmFwcCwgcGFyYW1zLnBsdWdpbik7XG4gICAgdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudCA9IHBhcmFtcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudDtcbiAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRoaXMuY29udGFpbmVyRWwsIENzc0NsYXNzLlBsdWdpblNldHRpbmdzVGFiKTtcbiAgICB0aGlzLnNhdmVTZXR0aW5nc0RlYm91bmNlZCA9IGRlYm91bmNlKFxuICAgICAgY29udmVydEFzeW5jVG9TeW5jKCgpID0+IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQuc2F2ZVRvRmlsZShTQVZFX1RPX0ZJTEVfQ09OVEVYVCkpLFxuICAgICAgdGhpcy5zYXZlU2V0dGluZ3NEZWJvdW5jZVRpbWVvdXRJbk1pbGxpc2Vjb25kc1xuICAgICk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudCA9IG5ldyBBc3luY0V2ZW50c0NvbXBvbmVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gYmluZC5cbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGJpbmRpbmcgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFVJVmFsdWUsXG4gICAgVFZhbHVlQ29tcG9uZW50XG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+LFxuICAgIHByb3BlcnR5TmFtZTogQ29uZGl0aW9uYWxLZXlzPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlPixcbiAgICBvcHRpb25zPzogQmluZE9wdGlvbnM8VUlWYWx1ZT5cbiAgKTogVFZhbHVlQ29tcG9uZW50O1xuICAvKipcbiAgICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBVSVZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gVFZhbHVlQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBQcm9wZXJ0eU5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gYmluZC5cbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgYmluZGluZyB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGJpbmQ8XG4gICAgVUlWYWx1ZSxcbiAgICBUVmFsdWVDb21wb25lbnQsXG4gICAgUHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz5cbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4sXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUsXG4gICAgb3B0aW9uczogQmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHlOYW1lPlxuICApOiBUVmFsdWVDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBiaW5kaW5nIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBVSVZhbHVlLFxuICAgIFRWYWx1ZUNvbXBvbmVudCxcbiAgICBQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPlxuICA+KFxuICAgIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQgJiBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxVSVZhbHVlPixcbiAgICBwcm9wZXJ0eU5hbWU6IFByb3BlcnR5TmFtZSxcbiAgICBvcHRpb25zPzogQmluZE9wdGlvbnM8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT4gLy8gZXNsaW50LWRpc2FibGUtbGluZSBvYnNpZGlhbi1kZXYtdXRpbHMvcGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaCAtLSBCaW5kT3B0aW9ucyBpcyBhIGdlbmVyaWMgdXRpbGl0eSBzaGFyZWQgYWNyb3NzIGJpbmRpbmcgbWV0aG9kcy5cbiAgKTogVFZhbHVlQ29tcG9uZW50IHtcbiAgICB0eXBlIFByb3BlcnR5VHlwZSA9IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV07XG4gICAgY29uc3QgREVGQVVMVF9PUFRJT05TOiBSZXF1aXJlZDxCaW5kT3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eU5hbWU+PiA9IHtcbiAgICAgIGNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcjogKHZhbHVlOiBVSVZhbHVlKTogUHJvcGVydHlUeXBlID0+IHZhbHVlIGFzIFByb3BlcnR5VHlwZSxcbiAgICAgIG9uQ2hhbmdlZDogbm9vcCxcbiAgICAgIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcjogKHZhbHVlOiBSZWFkb25seURlZXA8UHJvcGVydHlUeXBlPik6IFVJVmFsdWUgPT4gdmFsdWUgYXMgVUlWYWx1ZSxcbiAgICAgIHNob3VsZFJlc2V0U2V0dGluZ1doZW5Db21wb25lbnRJc0VtcHR5OiB0cnVlLFxuICAgICAgc2hvdWxkU2hvd1BsYWNlaG9sZGVyRm9yRGVmYXVsdFZhbHVlczogdHJ1ZSxcbiAgICAgIHNob3VsZFNob3dWYWxpZGF0aW9uTWVzc2FnZTogdHJ1ZVxuICAgIH07XG5cbiAgICBjb25zdCBvcHRpb25zRXh0OiBSZXF1aXJlZDxCaW5kT3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eU5hbWU+PiA9IHsgLi4uREVGQVVMVF9PUFRJT05TLCAuLi5vcHRpb25zIH07XG5cbiAgICBjb25zdCB2YWxpZGF0b3JFbCA9IGdldFZhbGlkYXRvckNvbXBvbmVudCh2YWx1ZUNvbXBvbmVudCk/LnZhbGlkYXRvckVsO1xuXG4gICAgY29uc3QgdGV4dEJhc2VkQ29tcG9uZW50ID0gZ2V0VGV4dEJhc2VkQ29tcG9uZW50VmFsdWUodmFsdWVDb21wb25lbnQpO1xuXG4gICAgY29uc3QgcmVhZG9ubHlWYWx1ZSA9IHRoaXMuZ2V0UGx1Z2luU2V0dGluZ3NQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpO1xuICAgIGNvbnN0IGRlZmF1bHRzID0gdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5kZWZhdWx0U2V0dGluZ3MgYXMgUGx1Z2luU2V0dGluZ3M7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gZGVmYXVsdHNbcHJvcGVydHlOYW1lXTtcbiAgICBjb25zdCBkZWZhdWx0Q29tcG9uZW50VmFsdWUgPSBvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihkZWZhdWx0VmFsdWUgYXMgUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT4pO1xuICAgIHRleHRCYXNlZENvbXBvbmVudD8uc2V0UGxhY2Vob2xkZXJWYWx1ZShkZWZhdWx0Q29tcG9uZW50VmFsdWUpO1xuXG4gICAgbGV0IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7XG4gICAgbGV0IHRvb2x0aXBFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgdG9vbHRpcENvbnRlbnRFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBpZiAodmFsaWRhdG9yRWwpIHtcbiAgICAgIGNvbnN0IHdyYXBwZXIgPSBlbnN1cmVXcmFwcGVkKHZhbGlkYXRvckVsKTtcbiAgICAgIHRvb2x0aXBFbCA9IHdyYXBwZXIuY3JlYXRlRGl2KCk7XG4gICAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRvb2x0aXBFbCwgW0Nzc0NsYXNzLlRvb2x0aXAsIENzc0NsYXNzLlRvb2x0aXBWYWxpZGF0b3JdKTtcbiAgICAgIHRvb2x0aXBDb250ZW50RWwgPSB0b29sdGlwRWwuY3JlYXRlU3BhbigpO1xuICAgICAgY29uc3QgdG9vbHRpcEFycm93RWwgPSB0b29sdGlwRWwuY3JlYXRlRGl2KCk7XG4gICAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRvb2x0aXBBcnJvd0VsLCBDc3NDbGFzcy5Ub29sdGlwQXJyb3cpO1xuICAgICAgdG9vbHRpcEVsLmhpZGUoKTtcbiAgICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQodG9vbHRpcEVsKTtcbiAgICB9XG5cbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLm9uKCd2YWxpZGF0aW9uTWVzc2FnZUNoYW5nZWQnLCAoYW5vdGhlclByb3BlcnR5TmFtZSwgYW5vdGhlclZhbGlkYXRpb25NZXNzYWdlKSA9PiB7XG4gICAgICBpZiAocHJvcGVydHlOYW1lICE9PSBhbm90aGVyUHJvcGVydHlOYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBhbm90aGVyVmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbERlYm91bmNlZCgpO1xuICAgIH0pKTtcblxuICAgIGxldCBzaG91bGRFbXB0eU9uQmx1ciA9IGZhbHNlO1xuICAgIGxldCBzaG91bGRSZXZlcnRUb0RlZmF1bHRWYWx1ZU9uQmx1ciA9IGZhbHNlO1xuXG4gICAgaWYgKHRleHRCYXNlZENvbXBvbmVudCAmJiBvcHRpb25zRXh0LnNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXMgJiYgZGVlcEVxdWFsKHJlYWRvbmx5VmFsdWUsIGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgIHRleHRCYXNlZENvbXBvbmVudC5lbXB0eSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZUNvbXBvbmVudC5zZXRWYWx1ZShvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihyZWFkb25seVZhbHVlKSk7XG4gICAgfVxuXG4gICAgbGV0IHNob3VsZFNraXBPbkNoYW5nZSA9IGZhbHNlO1xuICAgIGNvbnN0IFVQREFURV9WQUxJREFUT1JfRUxfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAxMDA7XG4gICAgY29uc3QgdXBkYXRlVmFsaWRhdG9yRWxEZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgdXBkYXRlVmFsaWRhdG9yRWwoKTtcbiAgICAgIH0pO1xuICAgIH0sIFVQREFURV9WQUxJREFUT1JfRUxfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMpO1xuXG4gICAgdmFsdWVDb21wb25lbnQub25DaGFuZ2UoYXN5bmMgKHVpVmFsdWUpID0+IHtcbiAgICAgIGlmIChzaG91bGRTa2lwT25DaGFuZ2UpIHtcbiAgICAgICAgc2hvdWxkU2tpcE9uQ2hhbmdlID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2hvdWxkRW1wdHlPbkJsdXIgPSBmYWxzZTtcblxuICAgICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLmdldFBsdWdpblNldHRpbmdzUHJvcGVydHkocHJvcGVydHlOYW1lKTtcbiAgICAgIGxldCBuZXdWYWx1ZTogUHJvcGVydHlUeXBlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgbGV0IHNob3VsZFNldFByb3BlcnR5ID0gdHJ1ZTtcbiAgICAgIHNob3VsZFJldmVydFRvRGVmYXVsdFZhbHVlT25CbHVyID0gISF0ZXh0QmFzZWRDb21wb25lbnQ/LmlzRW1wdHkoKSAmJiBvcHRpb25zRXh0LnNob3VsZFJlc2V0U2V0dGluZ1doZW5Db21wb25lbnRJc0VtcHR5O1xuICAgICAgaWYgKHNob3VsZFJldmVydFRvRGVmYXVsdFZhbHVlT25CbHVyKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY29udmVydGVkVmFsdWUgPSBvcHRpb25zRXh0LmNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcih1aVZhbHVlKTtcbiAgICAgICAgaWYgKGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIoY29udmVydGVkVmFsdWUpKSB7XG4gICAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBjb252ZXJ0ZWRWYWx1ZS52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICAgICAgICBzaG91bGRTZXRQcm9wZXJ0eSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1ZhbHVlID0gY29udmVydGVkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNob3VsZFNldFByb3BlcnR5KSB7XG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gYXdhaXQgdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5zZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIG5ld1ZhbHVlIGFzIFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0pO1xuICAgICAgICBpZiAodGV4dEJhc2VkQ29tcG9uZW50ICYmIG9wdGlvbnNFeHQuc2hvdWxkU2hvd1BsYWNlaG9sZGVyRm9yRGVmYXVsdFZhbHVlcyAmJiAhdGV4dEJhc2VkQ29tcG9uZW50LmlzRW1wdHkoKSAmJiBkZWVwRXF1YWwobmV3VmFsdWUsIGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgICAgICBzaG91bGRFbXB0eU9uQmx1ciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdXBkYXRlVmFsaWRhdG9yRWxEZWJvdW5jZWQoKTtcbiAgICAgIGlmIChzaG91bGRTZXRQcm9wZXJ0eSkge1xuICAgICAgICBhd2FpdCBvcHRpb25zRXh0Lm9uQ2hhbmdlZChuZXdWYWx1ZSBhcyBSZWFkb25seURlZXA8UHJvcGVydHlUeXBlPiwgb2xkVmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5zYXZlU2V0dGluZ3NEZWJvdW5jZWQoKTtcbiAgICB9KTtcblxuICAgIHZhbGlkYXRvckVsPy5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcbiAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgfSk7XG4gICAgdmFsaWRhdG9yRWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbERlYm91bmNlZCgpO1xuICAgIH0pO1xuICAgIHZhbGlkYXRvckVsPy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB1cGRhdGVWYWxpZGF0b3JFbERlYm91bmNlZCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB2YWxpZGF0aW9uTWVzc2FnZXMgPSB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50LnNldHRpbmdzU3RhdGUudmFsaWRhdGlvbk1lc3NhZ2VzIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSB2YWxpZGF0aW9uTWVzc2FnZXNbcHJvcGVydHlOYW1lXSA/PyAnJztcbiAgICB1cGRhdGVWYWxpZGF0b3JFbERlYm91bmNlZCgpO1xuXG4gICAgcmV0dXJuIHZhbHVlQ29tcG9uZW50O1xuXG4gICAgZnVuY3Rpb24gdXBkYXRlVmFsaWRhdG9yRWwoKTogdm9pZCB7XG4gICAgICBpZiAoIXZhbGlkYXRvckVsPy5pc0FjdGl2ZUVsZW1lbnQoKSkge1xuICAgICAgICBpZiAoc2hvdWxkRW1wdHlPbkJsdXIpIHtcbiAgICAgICAgICBzaG91bGRFbXB0eU9uQmx1ciA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKCF0ZXh0QmFzZWRDb21wb25lbnQ/LmlzRW1wdHkoKSkge1xuICAgICAgICAgICAgc2hvdWxkU2tpcE9uQ2hhbmdlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRleHRCYXNlZENvbXBvbmVudD8uZW1wdHkoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkUmV2ZXJ0VG9EZWZhdWx0VmFsdWVPbkJsdXIpIHtcbiAgICAgICAgICBzaG91bGRSZXZlcnRUb0RlZmF1bHRWYWx1ZU9uQmx1ciA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHRleHRCYXNlZENvbXBvbmVudD8uaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICBzaG91bGRTa2lwT25DaGFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgdmFsdWVDb21wb25lbnQuc2V0VmFsdWUoZGVmYXVsdENvbXBvbmVudFZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWxpZGF0b3JFbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGFzc2VydE5vbk51bGxhYmxlKHRvb2x0aXBDb250ZW50RWwpO1xuXG4gICAgICBpZiAodmFsaWRhdGlvbk1lc3NhZ2UgPT09ICcnKSB7XG4gICAgICAgIHZhbGlkYXRvckVsLnNldEN1c3RvbVZhbGlkaXR5KCcnKTtcbiAgICAgICAgdmFsaWRhdG9yRWwuY2hlY2tWYWxpZGl0eSgpO1xuICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZSA9IHZhbGlkYXRvckVsLnZhbGlkYXRpb25NZXNzYWdlO1xuICAgICAgfVxuXG4gICAgICB2YWxpZGF0b3JFbC5zZXRDdXN0b21WYWxpZGl0eSh2YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgICBpZiAob3B0aW9uc0V4dC5zaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgdG9vbHRpcENvbnRlbnRFbC50ZXh0Q29udGVudCA9IHZhbGlkYXRpb25NZXNzYWdlO1xuICAgICAgICB0b29sdGlwRWw/LnRvZ2dsZSghIXZhbGlkYXRpb25NZXNzYWdlKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsaWRhdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgc2V0VG9vbHRpcCh2YWxpZGF0b3JFbCwgdmFsaWRhdGlvbk1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJFbC5lbXB0eSgpO1xuICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5sb2FkKCk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5yZWdpc3RlckFzeW5jRXZlbnQodGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5vbignbG9hZFNldHRpbmdzJywgdGhpcy5vbkxvYWRTZXR0aW5ncy5iaW5kKHRoaXMpKSk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5yZWdpc3RlckFzeW5jRXZlbnQodGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5vbignc2F2ZVNldHRpbmdzJywgdGhpcy5vblNhdmVTZXR0aW5ncy5iaW5kKHRoaXMpKSk7XG4gIH1cblxuICAvKipcbiAgICogSGlkZXMgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgaGlkZSgpOiB2b2lkIHtcbiAgICBzdXBlci5oaWRlKCk7XG4gICAgdGhpcy5zYXZlU2V0dGluZ3NEZWJvdW5jZWQuY2FuY2VsKCk7XG4gICAgdGhpcy5faXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC51bmxvYWQoKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LmxvYWQoKTtcbiAgICBpbnZva2VBc3luY1NhZmVseSgoKSA9PiB0aGlzLmhpZGVBc3luYygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3luYyBhY3Rpb25zIHRvIHBlcmZvcm0gd2hlbiB0aGUgc2V0dGluZ3MgdGFiIGlzIGJlaW5nIGhpZGRlbi5cbiAgICpcbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzZXR0aW5ncyB0YWIgaXMgaGlkZGVuLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhpZGVBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50LnNhdmVUb0ZpbGUoU0FWRV9UT19GSUxFX0NPTlRFWFQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKi9cbiAgcHVibGljIHNob3coKTogdm9pZCB7XG4gICAgdGhpcy5hcHAuc2V0dGluZy5vcGVuVGFiKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXJlIGxvYWRlZC5cbiAgICpcbiAgICogQHBhcmFtIF9sb2FkZWRTdGF0ZSAtIFRoZSBsb2FkZWQgc2V0dGluZ3Mgc3RhdGUuXG4gICAqIEBwYXJhbSBfaXNJbml0aWFsTG9hZCAtIFdoZXRoZXIgdGhlIHNldHRpbmdzIGFyZSBiZWluZyBsb2FkZWQgZm9yIHRoZSBmaXJzdCB0aW1lLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNldHRpbmdzIGFyZSBsb2FkZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgb25Mb2FkU2V0dGluZ3MoX2xvYWRlZFN0YXRlOiBSZWFkb25seVBsdWdpblNldHRpbmdzU3RhdGU8UGx1Z2luU2V0dGluZ3M+LCBfaXNJbml0aWFsTG9hZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZGlzcGxheSgpO1xuICAgIGF3YWl0IG5vb3BBc3luYygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldmFsaWRhdGVzIHRoZSBzZXR0aW5ncy5cbiAgICpcbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzZXR0aW5ncyBhcmUgcmV2YWxpZGF0ZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgcmV2YWxpZGF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2YWxpZGF0aW9uTWVzc2FnZXMgPSBhd2FpdCB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50LnJldmFsaWRhdGUoKTtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVZhbGlkYXRpb25zKHZhbGlkYXRpb25NZXNzYWdlcyk7XG4gIH1cblxuICBwcml2YXRlIGdldFBsdWdpblNldHRpbmdzUHJvcGVydHk8UHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4+KFxuICAgIHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lXG4gICk6IFJlYWRvbmx5RGVlcDxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPiB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLnBsdWdpblNldHRpbmdzIGFzIFBsdWdpblNldHRpbmdzO1xuICAgIHJldHVybiBzZXR0aW5nc1twcm9wZXJ0eU5hbWVdIGFzIFJlYWRvbmx5RGVlcDxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPjtcbiAgfVxuXG4gIHByaXZhdGUgb24oXG4gICAgbmFtZTogJ3ZhbGlkYXRpb25NZXNzYWdlQ2hhbmdlZCcsXG4gICAgY2FsbGJhY2s6IChcbiAgICAgIHByb3BlcnR5TmFtZTogc3RyaW5nLFxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZ1xuICAgICkgPT4gUHJvbWlzYWJsZTx2b2lkPixcbiAgICB0aGlzQXJnPzogdW5rbm93blxuICApOiBBc3luY0V2ZW50UmVmO1xuICBwcml2YXRlIG9uPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjYWxsYmFjazogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2FibGU8dm9pZD4sXG4gICAgdGhpc0FyZz86IHVua25vd25cbiAgKTogQXN5bmNFdmVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuYXN5bmNFdmVudHNDb21wb25lbnQuYXN5bmNFdmVudHMub24obmFtZSwgY2FsbGJhY2ssIHRoaXNBcmcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvblNhdmVTZXR0aW5ncyhcbiAgICBuZXdTdGF0ZTogUmVhZG9ubHlQbHVnaW5TZXR0aW5nc1N0YXRlPFBsdWdpblNldHRpbmdzPixcbiAgICBfb2xkU3RhdGU6IFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NTdGF0ZTxQbHVnaW5TZXR0aW5ncz4sXG4gICAgY29udGV4dDogdW5rbm93blxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY29udGV4dCA9PT0gU0FWRV9UT19GSUxFX0NPTlRFWFQpIHtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlVmFsaWRhdGlvbnMobmV3U3RhdGUudmFsaWRhdGlvbk1lc3NhZ2VzIGFzIFJlY29yZDxTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPiwgc3RyaW5nPik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kaXNwbGF5KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVZhbGlkYXRpb25zKHZhbGlkYXRpb25NZXNzYWdlczogUmVjb3JkPFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+LCBzdHJpbmc+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBbcHJvcGVydHlOYW1lLCB2YWxpZGF0aW9uTWVzc2FnZV0gb2YgT2JqZWN0LmVudHJpZXModmFsaWRhdGlvbk1lc3NhZ2VzKSkge1xuICAgICAgYXdhaXQgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5hc3luY0V2ZW50cy50cmlnZ2VyQXN5bmMoJ3ZhbGlkYXRpb25NZXNzYWdlQ2hhbmdlZCcsIHByb3BlcnR5TmFtZSwgdmFsaWRhdGlvbk1lc3NhZ2UpO1xuICAgIH1cbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBWVA7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGdCQUFnQjtBQUN6QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsaUJBQWlCO0FBQzFCLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsNEJBQTRCO0FBQ3JDLFNBQVMscUJBQXFCO0FBQzlCLFNBQVMsa0NBQWtDO0FBQzNDLFNBQVMsNkJBQTZCO0FBQ3RDLFNBQVMsaUNBQWlD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
313
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4tc2V0dGluZ3MtdGFiLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgRGVib3VuY2VyLFxuICBQbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUge1xuICBDb25kaXRpb25hbEtleXMsXG4gIFByb21pc2FibGUsXG4gIFJlYWRvbmx5RGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBkZWJvdW5jZSxcbiAgUGx1Z2luU2V0dGluZ1RhYixcbiAgc2V0VG9vbHRpcFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgQXN5bmNFdmVudFJlZiB9IGZyb20gJy4uLy4uL2FzeW5jLWV2ZW50cy50cyc7XG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNQcm9taXNhYmxlVm9pZEZ1bmN0aW9uIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb24udHMnO1xuaW1wb3J0IHR5cGUgeyBTdHJpbmdLZXlzIH0gZnJvbSAnLi4vLi4vdHlwZS50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZSxcbiAgUmVhZG9ubHlQbHVnaW5TZXR0aW5ncyxcbiAgUmVhZG9ubHlQbHVnaW5TZXR0aW5nc1N0YXRlXG59IGZyb20gJy4uL2NvbXBvbmVudHMvcGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nIH0gZnJvbSAnLi4vc2V0dGluZy1jb21wb25lbnRzL3ZhbHVlLWNvbXBvbmVudC13aXRoLWNoYW5nZS10cmFja2luZy50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25NZXNzYWdlSG9sZGVyIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi50cyc7XG5cbmltcG9ydCB7XG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgaW52b2tlQXN5bmNTYWZlbHlcbn0gZnJvbSAnLi4vLi4vYXN5bmMudHMnO1xuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi8uLi9jc3MtY2xhc3MudHMnO1xuaW1wb3J0IHtcbiAgbm9vcCxcbiAgbm9vcEFzeW5jXG59IGZyb20gJy4uLy4uL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJy4uLy4uL29iamVjdC11dGlscy50cyc7XG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IEFzeW5jRXZlbnRzQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hc3luYy1ldmVudHMtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IGVuc3VyZVdyYXBwZWQgfSBmcm9tICcuLi9zZXR0aW5nLWNvbXBvbmVudHMvc2V0dGluZy1jb21wb25lbnQtd3JhcHBlci50cyc7XG5pbXBvcnQgeyBnZXRUZXh0QmFzZWRDb21wb25lbnRWYWx1ZSB9IGZyb20gJy4uL3NldHRpbmctY29tcG9uZW50cy90ZXh0LWJhc2VkLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBnZXRWYWxpZGF0b3JDb21wb25lbnQgfSBmcm9tICcuLi9zZXR0aW5nLWNvbXBvbmVudHMvdmFsaWRhdG9yLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBpc1ZhbGlkYXRpb25NZXNzYWdlSG9sZGVyIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi9wbHVnaW4tY29udGV4dC50cyc7XG5cbi8qKlxuICogQSBjb250ZXh0IHBhc3NlZCB0byB0aGUge0BsaW5rIFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZS5zYXZlVG9GaWxlfSBtZXRob2QuXG4gKi9cbmV4cG9ydCBjb25zdCBTQVZFX1RPX0ZJTEVfQ09OVEVYVCA9ICdQbHVnaW5TZXR0aW5nc1RhYic7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYFBsdWdpblNldHRpbmdzVGFiQmFzZS5iaW5kYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgc2V0dGluZ3MgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluZE9wdGlvbnM8VD4ge1xuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZWQ/KG5ld1ZhbHVlOiBSZWFkb25seURlZXA8VD4sIG9sZFZhbHVlOiBSZWFkb25seURlZXA8VD4pOiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlc2V0IHRoZSBzZXR0aW5nIHdoZW4gdGhlIGNvbXBvbmVudCB2YWx1ZSBpcyBlbXB0eS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqIEFwcGxpY2FibGUgb25seSB0byB0ZXh0LWJhc2VkIGNvbXBvbmVudHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXNldFNldHRpbmdXaGVuQ29tcG9uZW50SXNFbXB0eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgcGxhY2Vob2xkZXIgZm9yIGRlZmF1bHQgdmFsdWVzLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICogQXBwbGljYWJsZSBvbmx5IHRvIHRleHQtYmFzZWQgY29tcG9uZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIHZhbGlkYXRpb24gbWVzc2FnZSB3aGVuIHRoZSBjb21wb25lbnQgdmFsdWUgaXMgaW52YWxpZC4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEV4dGVuZGVkIG9wdGlvbnMgZm9yIGBQbHVnaW5TZXR0aW5nc1RhYkJhc2UuYmluZGAuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSBwbHVnaW4gc2V0dGluZ3MgdHlwZS5cbiAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSBVSSBjb21wb25lbnQncyB2YWx1ZS5cbiAqIEB0eXBlUGFyYW0gUHJvcGVydHlOYW1lIC0gVGhlIHNldHRpbmdzIHByb3BlcnR5IG5hbWUgYmVpbmcgYm91bmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluZE9wdGlvbnNFeHRlbmRlZDxcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QsXG4gIFVJVmFsdWUsXG4gIFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+XG4+IGV4dGVuZHMgQmluZE9wdGlvbnM8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT4ge1xuICAvKipcbiAgICogQ29udmVydHMgdGhlIFVJIGNvbXBvbmVudCdzIHZhbHVlIGJhY2sgdG8gdGhlIHBsdWdpbiBzZXR0aW5ncyB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHVpVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgY29tcG9uZW50VG9QbHVnaW5TZXR0aW5nc1ZhbHVlQ29udmVydGVyKHVpVmFsdWU6IFVJVmFsdWUpOiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdIHwgVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXI7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdmFsdWUgdG8gdGhlIHZhbHVlIHVzZWQgYnkgdGhlIFVJIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpblNldHRpbmdzVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSB0byBzZXQgb24gdGhlIFVJIGNvbXBvbmVudC5cbiAgICovXG4gIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihwbHVnaW5TZXR0aW5nc1ZhbHVlOiBSZWFkb25seURlZXA8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT4pOiBVSVZhbHVlO1xufVxuXG4vKipcbiAqIFBhcmFtcyBmb3IgY3JlYXRpbmcgYSB7QGxpbmsgUGx1Z2luU2V0dGluZ3NUYWJCYXNlfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIHBsdWdpbiBzZXR0aW5ncyB0eXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblNldHRpbmdzVGFiQmFzZUNvbnN0cnVjdG9yUGFyYW1zPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiB7XG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIGluc3RhbmNlIChuZWVkZWQgYnkgT2JzaWRpYW4ncyBQbHVnaW5TZXR0aW5nVGFiKS5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbjogUGx1Z2luO1xuXG4gIC8qKlxuICAgKiBUaGUgc2V0dGluZ3MgY29tcG9uZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luU2V0dGluZ3NDb21wb25lbnQ6IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxQbHVnaW5TZXR0aW5ncz47XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgcGx1Z2luIHNldHRpbmdzIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBQcm92aWRlcyBhIG1ldGhvZCBmb3IgYmluZGluZyB2YWx1ZSBjb21wb25lbnRzIHRvIHBsdWdpbiBzZXR0aW5ncyBhbmQgaGFuZGxpbmcgY2hhbmdlcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIHBsdWdpbiBzZXR0aW5ncyB0eXBlLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGx1Z2luU2V0dGluZ3NUYWJCYXNlPFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYiBpcyBvcGVuLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiIGlzIG9wZW4uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNPcGVuO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5ncyBtYW5hZ2VyLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpblNldHRpbmdzQ29tcG9uZW50OiBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2U8UGx1Z2luU2V0dGluZ3M+O1xuXG4gIC8qKlxuICAgKiBBIGRlYm91bmNlIHRpbWVvdXQgZm9yIHNhdmluZyBzZXR0aW5ncy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGRlYm91bmNlIHRpbWVvdXQgZm9yIHNhdmluZyBzZXR0aW5ncy5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgc2F2ZVNldHRpbmdzRGVib3VuY2VUaW1lb3V0SW5NaWxsaXNlY29uZHMoKTogbnVtYmVyIHtcbiAgICBjb25zdCBERUZBVUxUID0gMl8wMDA7XG4gICAgcmV0dXJuIERFRkFVTFQ7XG4gIH1cblxuICBwcml2YXRlIF9pc09wZW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBhc3luY0V2ZW50c0NvbXBvbmVudDogQXN5bmNFdmVudHNDb21wb25lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2F2ZVNldHRpbmdzRGVib3VuY2VkOiBEZWJvdW5jZXI8W10sIHZvaWQ+O1xuXG4gIHByaXZhdGUgZ2V0IHBsdWdpblNldHRpbmdzKCk6IFJlYWRvbmx5UGx1Z2luU2V0dGluZ3M8UGx1Z2luU2V0dGluZ3M+IHtcbiAgICByZXR1cm4gdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5zZXR0aW5nc1N0YXRlLmlucHV0VmFsdWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbXMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBQbHVnaW5TZXR0aW5nc1RhYkJhc2VDb25zdHJ1Y3RvclBhcmFtczxQbHVnaW5TZXR0aW5ncz4pIHtcbiAgICBzdXBlcihwYXJhbXMucGx1Z2luLmFwcCwgcGFyYW1zLnBsdWdpbik7XG4gICAgdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudCA9IHBhcmFtcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudDtcbiAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRoaXMuY29udGFpbmVyRWwsIENzc0NsYXNzLlBsdWdpblNldHRpbmdzVGFiKTtcbiAgICB0aGlzLnNhdmVTZXR0aW5nc0RlYm91bmNlZCA9IGRlYm91bmNlKFxuICAgICAgY29udmVydEFzeW5jVG9TeW5jKCgpID0+IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQuc2F2ZVRvRmlsZShTQVZFX1RPX0ZJTEVfQ09OVEVYVCkpLFxuICAgICAgdGhpcy5zYXZlU2V0dGluZ3NEZWJvdW5jZVRpbWVvdXRJbk1pbGxpc2Vjb25kc1xuICAgICk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudCA9IG5ldyBBc3luY0V2ZW50c0NvbXBvbmVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gYmluZC5cbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGJpbmRpbmcgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFVJVmFsdWUsXG4gICAgVFZhbHVlQ29tcG9uZW50XG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+LFxuICAgIHByb3BlcnR5TmFtZTogQ29uZGl0aW9uYWxLZXlzPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlPixcbiAgICBvcHRpb25zPzogQmluZE9wdGlvbnM8VUlWYWx1ZT5cbiAgKTogVFZhbHVlQ29tcG9uZW50O1xuICAvKipcbiAgICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBVSVZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gVFZhbHVlQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBQcm9wZXJ0eU5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gYmluZC5cbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgYmluZGluZyB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGJpbmQ8XG4gICAgVUlWYWx1ZSxcbiAgICBUVmFsdWVDb21wb25lbnQsXG4gICAgUHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz5cbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4sXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWUsXG4gICAgb3B0aW9uczogQmluZE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHlOYW1lPlxuICApOiBUVmFsdWVDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBiaW5kaW5nIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBVSVZhbHVlLFxuICAgIFRWYWx1ZUNvbXBvbmVudCxcbiAgICBQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPlxuICA+KFxuICAgIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQgJiBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxVSVZhbHVlPixcbiAgICBwcm9wZXJ0eU5hbWU6IFByb3BlcnR5TmFtZSxcbiAgICBvcHRpb25zPzogQmluZE9wdGlvbnM8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT4gLy8gZXNsaW50LWRpc2FibGUtbGluZSBvYnNpZGlhbi1kZXYtdXRpbHMvcGFyYW1zLW9wdGlvbnMtbmFtZS1tYXRjaCAtLSBCaW5kT3B0aW9ucyBpcyBhIGdlbmVyaWMgdXRpbGl0eSBzaGFyZWQgYWNyb3NzIGJpbmRpbmcgbWV0aG9kcy5cbiAgKTogVFZhbHVlQ29tcG9uZW50IHtcbiAgICB0eXBlIFByb3BlcnR5VHlwZSA9IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV07XG4gICAgY29uc3QgREVGQVVMVF9PUFRJT05TOiBSZXF1aXJlZDxCaW5kT3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eU5hbWU+PiA9IHtcbiAgICAgIGNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcjogKHZhbHVlOiBVSVZhbHVlKTogUHJvcGVydHlUeXBlID0+IHZhbHVlIGFzIFByb3BlcnR5VHlwZSxcbiAgICAgIG9uQ2hhbmdlZDogbm9vcCxcbiAgICAgIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcjogKHZhbHVlOiBSZWFkb25seURlZXA8UHJvcGVydHlUeXBlPik6IFVJVmFsdWUgPT4gdmFsdWUgYXMgVUlWYWx1ZSxcbiAgICAgIHNob3VsZFJlc2V0U2V0dGluZ1doZW5Db21wb25lbnRJc0VtcHR5OiB0cnVlLFxuICAgICAgc2hvdWxkU2hvd1BsYWNlaG9sZGVyRm9yRGVmYXVsdFZhbHVlczogdHJ1ZSxcbiAgICAgIHNob3VsZFNob3dWYWxpZGF0aW9uTWVzc2FnZTogdHJ1ZVxuICAgIH07XG5cbiAgICBjb25zdCBvcHRpb25zRXh0OiBSZXF1aXJlZDxCaW5kT3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eU5hbWU+PiA9IHsgLi4uREVGQVVMVF9PUFRJT05TLCAuLi5vcHRpb25zIH07XG5cbiAgICBjb25zdCB2YWxpZGF0b3JFbCA9IGdldFZhbGlkYXRvckNvbXBvbmVudCh2YWx1ZUNvbXBvbmVudCk/LnZhbGlkYXRvckVsO1xuXG4gICAgY29uc3QgdGV4dEJhc2VkQ29tcG9uZW50ID0gZ2V0VGV4dEJhc2VkQ29tcG9uZW50VmFsdWUodmFsdWVDb21wb25lbnQpO1xuXG4gICAgY29uc3QgcmVhZG9ubHlWYWx1ZSA9IHRoaXMuZ2V0UGx1Z2luU2V0dGluZ3NQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpO1xuICAgIGNvbnN0IGRlZmF1bHRzID0gdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5kZWZhdWx0U2V0dGluZ3MgYXMgUGx1Z2luU2V0dGluZ3M7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gZGVmYXVsdHNbcHJvcGVydHlOYW1lXTtcbiAgICBjb25zdCBkZWZhdWx0Q29tcG9uZW50VmFsdWUgPSBvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihkZWZhdWx0VmFsdWUgYXMgUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT4pO1xuICAgIHRleHRCYXNlZENvbXBvbmVudD8uc2V0UGxhY2Vob2xkZXJWYWx1ZShkZWZhdWx0Q29tcG9uZW50VmFsdWUpO1xuXG4gICAgbGV0IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7XG4gICAgbGV0IHRvb2x0aXBFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgdG9vbHRpcENvbnRlbnRFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBpZiAodmFsaWRhdG9yRWwpIHtcbiAgICAgIGNvbnN0IHdyYXBwZXIgPSBlbnN1cmVXcmFwcGVkKHZhbGlkYXRvckVsKTtcbiAgICAgIHRvb2x0aXBFbCA9IHdyYXBwZXIuY3JlYXRlRGl2KCk7XG4gICAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRvb2x0aXBFbCwgW0Nzc0NsYXNzLlRvb2x0aXAsIENzc0NsYXNzLlRvb2x0aXBWYWxpZGF0b3JdKTtcbiAgICAgIHRvb2x0aXBDb250ZW50RWwgPSB0b29sdGlwRWwuY3JlYXRlU3BhbigpO1xuICAgICAgY29uc3QgdG9vbHRpcEFycm93RWwgPSB0b29sdGlwRWwuY3JlYXRlRGl2KCk7XG4gICAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRvb2x0aXBBcnJvd0VsLCBDc3NDbGFzcy5Ub29sdGlwQXJyb3cpO1xuICAgICAgdG9vbHRpcEVsLmhpZGUoKTtcbiAgICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQodG9vbHRpcEVsKTtcbiAgICB9XG5cbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLm9uKCd2YWxpZGF0aW9uTWVzc2FnZUNoYW5nZWQnLCAoYW5vdGhlclByb3BlcnR5TmFtZSwgYW5vdGhlclZhbGlkYXRpb25NZXNzYWdlKSA9PiB7XG4gICAgICBpZiAocHJvcGVydHlOYW1lICE9PSBhbm90aGVyUHJvcGVydHlOYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBhbm90aGVyVmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbERlYm91bmNlZCgpO1xuICAgIH0pKTtcblxuICAgIGxldCBzaG91bGRFbXB0eU9uQmx1ciA9IGZhbHNlO1xuICAgIGxldCBzaG91bGRSZXZlcnRUb0RlZmF1bHRWYWx1ZU9uQmx1ciA9IGZhbHNlO1xuXG4gICAgaWYgKHRleHRCYXNlZENvbXBvbmVudCAmJiBvcHRpb25zRXh0LnNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXMgJiYgZGVlcEVxdWFsKHJlYWRvbmx5VmFsdWUsIGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgIHRleHRCYXNlZENvbXBvbmVudC5lbXB0eSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZUNvbXBvbmVudC5zZXRWYWx1ZShvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihyZWFkb25seVZhbHVlKSk7XG4gICAgfVxuXG4gICAgbGV0IHNob3VsZFNraXBPbkNoYW5nZSA9IGZhbHNlO1xuICAgIGNvbnN0IFVQREFURV9WQUxJREFUT1JfRUxfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAxMDA7XG4gICAgY29uc3QgdXBkYXRlVmFsaWRhdG9yRWxEZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgdXBkYXRlVmFsaWRhdG9yRWwoKTtcbiAgICAgIH0pO1xuICAgIH0sIFVQREFURV9WQUxJREFUT1JfRUxfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMpO1xuXG4gICAgdmFsdWVDb21wb25lbnQub25DaGFuZ2UoYXN5bmMgKHVpVmFsdWUpID0+IHtcbiAgICAgIGlmIChzaG91bGRTa2lwT25DaGFuZ2UpIHtcbiAgICAgICAgc2hvdWxkU2tpcE9uQ2hhbmdlID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2hvdWxkRW1wdHlPbkJsdXIgPSBmYWxzZTtcblxuICAgICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLmdldFBsdWdpblNldHRpbmdzUHJvcGVydHkocHJvcGVydHlOYW1lKTtcbiAgICAgIGxldCBuZXdWYWx1ZTogUHJvcGVydHlUeXBlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgbGV0IHNob3VsZFNldFByb3BlcnR5ID0gdHJ1ZTtcbiAgICAgIHNob3VsZFJldmVydFRvRGVmYXVsdFZhbHVlT25CbHVyID0gISF0ZXh0QmFzZWRDb21wb25lbnQ/LmlzRW1wdHkoKSAmJiBvcHRpb25zRXh0LnNob3VsZFJlc2V0U2V0dGluZ1doZW5Db21wb25lbnRJc0VtcHR5O1xuICAgICAgaWYgKHNob3VsZFJldmVydFRvRGVmYXVsdFZhbHVlT25CbHVyKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY29udmVydGVkVmFsdWUgPSBvcHRpb25zRXh0LmNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcih1aVZhbHVlKTtcbiAgICAgICAgaWYgKGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIoY29udmVydGVkVmFsdWUpKSB7XG4gICAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBjb252ZXJ0ZWRWYWx1ZS52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICAgICAgICBzaG91bGRTZXRQcm9wZXJ0eSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1ZhbHVlID0gY29udmVydGVkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNob3VsZFNldFByb3BlcnR5KSB7XG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gYXdhaXQgdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5zZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIG5ld1ZhbHVlIGFzIFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0pO1xuICAgICAgICBpZiAodGV4dEJhc2VkQ29tcG9uZW50ICYmIG9wdGlvbnNFeHQuc2hvdWxkU2hvd1BsYWNlaG9sZGVyRm9yRGVmYXVsdFZhbHVlcyAmJiAhdGV4dEJhc2VkQ29tcG9uZW50LmlzRW1wdHkoKSAmJiBkZWVwRXF1YWwobmV3VmFsdWUsIGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgICAgICBzaG91bGRFbXB0eU9uQmx1ciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdXBkYXRlVmFsaWRhdG9yRWxEZWJvdW5jZWQoKTtcbiAgICAgIGlmIChzaG91bGRTZXRQcm9wZXJ0eSkge1xuICAgICAgICBhd2FpdCBvcHRpb25zRXh0Lm9uQ2hhbmdlZChuZXdWYWx1ZSBhcyBSZWFkb25seURlZXA8UHJvcGVydHlUeXBlPiwgb2xkVmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5zYXZlU2V0dGluZ3NEZWJvdW5jZWQoKTtcbiAgICB9KTtcblxuICAgIHZhbGlkYXRvckVsPy5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcbiAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgfSk7XG4gICAgdmFsaWRhdG9yRWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbERlYm91bmNlZCgpO1xuICAgIH0pO1xuICAgIHZhbGlkYXRvckVsPy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB1cGRhdGVWYWxpZGF0b3JFbERlYm91bmNlZCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB2YWxpZGF0aW9uTWVzc2FnZXMgPSB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50LnNldHRpbmdzU3RhdGUudmFsaWRhdGlvbk1lc3NhZ2VzIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSB2YWxpZGF0aW9uTWVzc2FnZXNbcHJvcGVydHlOYW1lXSA/PyAnJztcbiAgICB1cGRhdGVWYWxpZGF0b3JFbERlYm91bmNlZCgpO1xuXG4gICAgcmV0dXJuIHZhbHVlQ29tcG9uZW50O1xuXG4gICAgZnVuY3Rpb24gdXBkYXRlVmFsaWRhdG9yRWwoKTogdm9pZCB7XG4gICAgICBpZiAoIXZhbGlkYXRvckVsPy5pc0FjdGl2ZUVsZW1lbnQoKSkge1xuICAgICAgICBpZiAoc2hvdWxkRW1wdHlPbkJsdXIpIHtcbiAgICAgICAgICBzaG91bGRFbXB0eU9uQmx1ciA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKCF0ZXh0QmFzZWRDb21wb25lbnQ/LmlzRW1wdHkoKSkge1xuICAgICAgICAgICAgc2hvdWxkU2tpcE9uQ2hhbmdlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRleHRCYXNlZENvbXBvbmVudD8uZW1wdHkoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkUmV2ZXJ0VG9EZWZhdWx0VmFsdWVPbkJsdXIpIHtcbiAgICAgICAgICBzaG91bGRSZXZlcnRUb0RlZmF1bHRWYWx1ZU9uQmx1ciA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHRleHRCYXNlZENvbXBvbmVudD8uaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICBzaG91bGRTa2lwT25DaGFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgdmFsdWVDb21wb25lbnQuc2V0VmFsdWUoZGVmYXVsdENvbXBvbmVudFZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWxpZGF0b3JFbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGFzc2VydE5vbk51bGxhYmxlKHRvb2x0aXBDb250ZW50RWwpO1xuXG4gICAgICBpZiAodmFsaWRhdGlvbk1lc3NhZ2UgPT09ICcnKSB7XG4gICAgICAgIHZhbGlkYXRvckVsLnNldEN1c3RvbVZhbGlkaXR5KCcnKTtcbiAgICAgICAgdmFsaWRhdG9yRWwuY2hlY2tWYWxpZGl0eSgpO1xuICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZSA9IHZhbGlkYXRvckVsLnZhbGlkYXRpb25NZXNzYWdlO1xuICAgICAgfVxuXG4gICAgICB2YWxpZGF0b3JFbC5zZXRDdXN0b21WYWxpZGl0eSh2YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgICBpZiAob3B0aW9uc0V4dC5zaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgdG9vbHRpcENvbnRlbnRFbC50ZXh0Q29udGVudCA9IHZhbGlkYXRpb25NZXNzYWdlO1xuICAgICAgICB0b29sdGlwRWw/LnRvZ2dsZSghIXZhbGlkYXRpb25NZXNzYWdlKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsaWRhdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgc2V0VG9vbHRpcCh2YWxpZGF0b3JFbCwgdmFsaWRhdGlvbk1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJFbC5lbXB0eSgpO1xuICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5sb2FkKCk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5yZWdpc3RlckFzeW5jRXZlbnQodGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5vbignbG9hZFNldHRpbmdzJywgdGhpcy5vbkxvYWRTZXR0aW5ncy5iaW5kKHRoaXMpKSk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5yZWdpc3RlckFzeW5jRXZlbnQodGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5vbignc2F2ZVNldHRpbmdzJywgdGhpcy5vblNhdmVTZXR0aW5ncy5iaW5kKHRoaXMpKSk7XG4gIH1cblxuICAvKipcbiAgICogSGlkZXMgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgaGlkZSgpOiB2b2lkIHtcbiAgICBzdXBlci5oaWRlKCk7XG4gICAgdGhpcy5zYXZlU2V0dGluZ3NEZWJvdW5jZWQuY2FuY2VsKCk7XG4gICAgdGhpcy5faXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC51bmxvYWQoKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LmxvYWQoKTtcbiAgICBpbnZva2VBc3luY1NhZmVseSgoKSA9PiB0aGlzLmhpZGVBc3luYygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3luYyBhY3Rpb25zIHRvIHBlcmZvcm0gd2hlbiB0aGUgc2V0dGluZ3MgdGFiIGlzIGJlaW5nIGhpZGRlbi5cbiAgICpcbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzZXR0aW5ncyB0YWIgaXMgaGlkZGVuLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhpZGVBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50LnNhdmVUb0ZpbGUoU0FWRV9UT19GSUxFX0NPTlRFWFQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKi9cbiAgcHVibGljIHNob3coKTogdm9pZCB7XG4gICAgdGhpcy5hcHAuc2V0dGluZy5vcGVuVGFiKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXJlIGxvYWRlZC5cbiAgICpcbiAgICogQHBhcmFtIF9sb2FkZWRTdGF0ZSAtIFRoZSBsb2FkZWQgc2V0dGluZ3Mgc3RhdGUuXG4gICAqIEBwYXJhbSBfaXNJbml0aWFsTG9hZCAtIFdoZXRoZXIgdGhlIHNldHRpbmdzIGFyZSBiZWluZyBsb2FkZWQgZm9yIHRoZSBmaXJzdCB0aW1lLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNldHRpbmdzIGFyZSBsb2FkZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgb25Mb2FkU2V0dGluZ3MoX2xvYWRlZFN0YXRlOiBSZWFkb25seVBsdWdpblNldHRpbmdzU3RhdGU8UGx1Z2luU2V0dGluZ3M+LCBfaXNJbml0aWFsTG9hZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZGlzcGxheSgpO1xuICAgIGF3YWl0IG5vb3BBc3luYygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldmFsaWRhdGVzIHRoZSBzZXR0aW5ncy5cbiAgICpcbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzZXR0aW5ncyBhcmUgcmV2YWxpZGF0ZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgcmV2YWxpZGF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2YWxpZGF0aW9uTWVzc2FnZXMgPSBhd2FpdCB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50LnJldmFsaWRhdGUoKTtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVZhbGlkYXRpb25zKHZhbGlkYXRpb25NZXNzYWdlcyk7XG4gIH1cblxuICBwcml2YXRlIGdldFBsdWdpblNldHRpbmdzUHJvcGVydHk8UHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4+KFxuICAgIHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lXG4gICk6IFJlYWRvbmx5RGVlcDxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPiB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLnBsdWdpblNldHRpbmdzIGFzIFBsdWdpblNldHRpbmdzO1xuICAgIHJldHVybiBzZXR0aW5nc1twcm9wZXJ0eU5hbWVdIGFzIFJlYWRvbmx5RGVlcDxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPjtcbiAgfVxuXG4gIHByaXZhdGUgb24oXG4gICAgbmFtZTogJ3ZhbGlkYXRpb25NZXNzYWdlQ2hhbmdlZCcsXG4gICAgY2FsbGJhY2s6IChcbiAgICAgIHByb3BlcnR5TmFtZTogc3RyaW5nLFxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZ1xuICAgICkgPT4gUHJvbWlzYWJsZTx2b2lkPixcbiAgICB0aGlzQXJnPzogdW5rbm93blxuICApOiBBc3luY0V2ZW50UmVmO1xuICBwcml2YXRlIG9uPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjYWxsYmFjazogR2VuZXJpY1Byb21pc2FibGVWb2lkRnVuY3Rpb248QXJncz4sXG4gICAgdGhpc0FyZz86IHVua25vd25cbiAgKTogQXN5bmNFdmVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuYXN5bmNFdmVudHNDb21wb25lbnQuYXN5bmNFdmVudHMub24obmFtZSwgY2FsbGJhY2ssIHRoaXNBcmcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvblNhdmVTZXR0aW5ncyhcbiAgICBuZXdTdGF0ZTogUmVhZG9ubHlQbHVnaW5TZXR0aW5nc1N0YXRlPFBsdWdpblNldHRpbmdzPixcbiAgICBfb2xkU3RhdGU6IFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NTdGF0ZTxQbHVnaW5TZXR0aW5ncz4sXG4gICAgY29udGV4dDogdW5rbm93blxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY29udGV4dCA9PT0gU0FWRV9UT19GSUxFX0NPTlRFWFQpIHtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlVmFsaWRhdGlvbnMobmV3U3RhdGUudmFsaWRhdGlvbk1lc3NhZ2VzIGFzIFJlY29yZDxTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPiwgc3RyaW5nPik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kaXNwbGF5KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVZhbGlkYXRpb25zKHZhbGlkYXRpb25NZXNzYWdlczogUmVjb3JkPFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+LCBzdHJpbmc+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBbcHJvcGVydHlOYW1lLCB2YWxpZGF0aW9uTWVzc2FnZV0gb2YgT2JqZWN0LmVudHJpZXModmFsaWRhdGlvbk1lc3NhZ2VzKSkge1xuICAgICAgYXdhaXQgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5hc3luY0V2ZW50cy50cmlnZ2VyQXN5bmMoJ3ZhbGlkYXRpb25NZXNzYWdlQ2hhbmdlZCcsIHByb3BlcnR5TmFtZSwgdmFsaWRhdGlvbk1lc3NhZ2UpO1xuICAgIH1cbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBYVA7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGdCQUFnQjtBQUN6QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsaUJBQWlCO0FBQzFCLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsNEJBQTRCO0FBQ3JDLFNBQVMscUJBQXFCO0FBQzlCLFNBQVMsa0NBQWtDO0FBQzNDLFNBQVMsNkJBQTZCO0FBQ3RDLFNBQVMsaUNBQWlDO0FBQzFDLFNB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
@@ -10,10 +10,9 @@
10
10
  */
11
11
  import type { App, PluginManifest } from 'obsidian';
12
12
  import { Component, Plugin as ObsidianPlugin } from 'obsidian';
13
- import type { PluginSettingsComponentBase } from './components/plugin-settings-component.mjs';
14
- import { AbortSignalComponent } from './components/abort-signal-component.mjs';
15
- import { ConsoleDebugComponent } from './components/console-debug-component.mjs';
16
- import { PluginNoticeComponent } from './components/plugin-notice-component.mjs';
13
+ import { AbortSignalComponent } from '../components/abort-signal-component.mjs';
14
+ import { ConsoleDebugComponent } from '../components/console-debug-component.mjs';
15
+ import { PluginNoticeComponent } from '../components/plugin-notice-component.mjs';
17
16
  /**
18
17
  * Base class for creating Obsidian plugins with a component-based architecture.
19
18
  *
@@ -23,20 +22,22 @@ import { PluginNoticeComponent } from './components/plugin-notice-component.mjs'
23
22
  export declare abstract class PluginBase extends ObsidianPlugin {
24
23
  /**
25
24
  * The abort signal component. Aborted when the plugin is unloaded.
25
+ *
26
+ * @returns the abort signal component.
26
27
  */
27
- protected readonly abortSignalComponent: AbortSignalComponent;
28
+ protected get abortSignalComponent(): AbortSignalComponent;
28
29
  /**
29
30
  * The console debug component. Provides namespaced debug logging.
31
+ *
32
+ * @returns The console debug component.
30
33
  */
31
- protected readonly consoleDebugComponent: ConsoleDebugComponent;
34
+ protected get consoleDebugComponent(): ConsoleDebugComponent;
32
35
  /**
33
36
  * The notice component. Displays notices to the user.
37
+ *
38
+ * @returns The notice component.
34
39
  */
35
- protected readonly noticeComponent: PluginNoticeComponent;
36
- /**
37
- * The settings component. Manages plugin settings lifecycle.
38
- */
39
- protected readonly settingsComponent: PluginSettingsComponentBase<object>;
40
+ protected get noticeComponent(): PluginNoticeComponent;
40
41
  private readonly singletonComponents;
41
42
  /**
42
43
  * Creates a new PluginBase.
@@ -67,6 +68,7 @@ export declare abstract class PluginBase extends ObsidianPlugin {
67
68
  * Override in subclass if needed. Make sure to call `await super.onExternalSettingsChange()` first.
68
69
  */
69
70
  onExternalSettingsChange(): Promise<void>;
71
+ private getRegisteredComponent;
70
72
  }
71
73
  /**
72
74
  * Reloads the specified plugin by disabling and then re-enabling it.
@@ -26,34 +26,41 @@ import {
26
26
  Notice,
27
27
  Plugin as ObsidianPlugin
28
28
  } from "obsidian";
29
- import { invokeAsyncSafelyAfterDelay } from "../../async.mjs";
30
29
  import { printError } from "../../error.mjs";
31
- import { bypassStrictProxy } from "../../strict-proxy.mjs";
30
+ import { ensureNonNullable } from "../../type-guards.mjs";
31
+ import { AbortSignalComponent } from "../components/abort-signal-component.mjs";
32
32
  import { loadChildrenFirstAsync } from "../components/async-component.mjs";
33
- import { AbortSignalComponent } from "./components/abort-signal-component.mjs";
34
- import { AsyncErrorHandlerComponent } from "./components/async-error-handler-component.mjs";
35
- import { ConsoleDebugComponent } from "./components/console-debug-component.mjs";
36
- import { I18nComponent } from "./components/i18n-component.mjs";
37
- import { PluginContextComponent } from "./components/plugin-context-component.mjs";
38
- import { PluginNoticeComponent } from "./components/plugin-notice-component.mjs";
39
- import { EmptyPluginSettingsComponent } from "./components/plugin-settings-component.mjs";
33
+ import { AsyncErrorHandlerComponent } from "../components/async-error-handler-component.mjs";
34
+ import { ConsoleDebugComponent } from "../components/console-debug-component.mjs";
35
+ import { I18nComponent } from "../components/i18n-component.mjs";
36
+ import { PluginContextComponent } from "../components/plugin-context-component.mjs";
37
+ import { PluginNoticeComponent } from "../components/plugin-notice-component.mjs";
38
+ import { PluginSettingsComponentBase } from "../components/plugin-settings-component.mjs";
40
39
  class PluginBase extends ObsidianPlugin {
41
40
  /**
42
41
  * The abort signal component. Aborted when the plugin is unloaded.
42
+ *
43
+ * @returns the abort signal component.
43
44
  */
44
- abortSignalComponent;
45
+ get abortSignalComponent() {
46
+ return ensureNonNullable(this.getRegisteredComponent(AbortSignalComponent));
47
+ }
45
48
  /**
46
49
  * The console debug component. Provides namespaced debug logging.
50
+ *
51
+ * @returns The console debug component.
47
52
  */
48
- consoleDebugComponent;
53
+ get consoleDebugComponent() {
54
+ return ensureNonNullable(this.getRegisteredComponent(ConsoleDebugComponent));
55
+ }
49
56
  /**
50
57
  * The notice component. Displays notices to the user.
58
+ *
59
+ * @returns The notice component.
51
60
  */
52
- noticeComponent;
53
- /**
54
- * The settings component. Manages plugin settings lifecycle.
55
- */
56
- settingsComponent;
61
+ get noticeComponent() {
62
+ return ensureNonNullable(this.getRegisteredComponent(PluginNoticeComponent));
63
+ }
57
64
  singletonComponents = /* @__PURE__ */ new Map();
58
65
  /**
59
66
  * Creates a new PluginBase.
@@ -65,11 +72,10 @@ class PluginBase extends ObsidianPlugin {
65
72
  super(app, manifest);
66
73
  this.addChild(new PluginContextComponent({ app, pluginId: manifest.id }));
67
74
  this.addChild(new I18nComponent());
68
- this.noticeComponent = this.addChild(new PluginNoticeComponent(manifest.name));
75
+ this.addChild(new PluginNoticeComponent(manifest.name));
69
76
  this.addChild(new AsyncErrorHandlerComponent(this.noticeComponent));
70
- this.abortSignalComponent = this.addChild(new AbortSignalComponent(manifest.id));
71
- this.consoleDebugComponent = this.addChild(new ConsoleDebugComponent(manifest.id));
72
- this.settingsComponent = this.addChild(new EmptyPluginSettingsComponent());
77
+ this.addChild(new AbortSignalComponent(manifest.id));
78
+ this.addChild(new ConsoleDebugComponent(manifest.id));
73
79
  }
74
80
  /**
75
81
  * Adds a component to the plugin.
@@ -102,18 +108,6 @@ class PluginBase extends ObsidianPlugin {
102
108
  // eslint-disable-next-line @typescript-eslint/no-misused-promises, obsidian-dev-utils/require-super-call -- Obsidian's load() handles async returns at runtime. Intentionally replaces Component.load() with children-first async loading.
103
109
  async load() {
104
110
  await loadChildrenFirstAsync(this);
105
- this.app.workspace.onLayoutReady(() => {
106
- invokeAsyncSafelyAfterDelay(
107
- async () => {
108
- for (const child of this._children) {
109
- await bypassStrictProxy(child).onLayoutReady?.();
110
- }
111
- },
112
- 0,
113
- void 0,
114
- this.abortSignalComponent.abortSignal
115
- );
116
- });
117
111
  }
118
112
  /**
119
113
  * Called when the external settings change.
@@ -122,7 +116,18 @@ class PluginBase extends ObsidianPlugin {
122
116
  */
123
117
  async onExternalSettingsChange() {
124
118
  await super.onExternalSettingsChange?.();
125
- await this.settingsComponent.onExternalSettingsChange();
119
+ await this.getRegisteredComponent(PluginSettingsComponentBase)?.onExternalSettingsChange();
120
+ }
121
+ getRegisteredComponent(componentClassWithKey) {
122
+ const key = componentClassWithKey.COMPONENT_KEY;
123
+ const registeredComponent = this.singletonComponents.get(key);
124
+ if (!registeredComponent) {
125
+ return null;
126
+ }
127
+ if (!(registeredComponent instanceof componentClassWithKey)) {
128
+ throw new Error(`Incompatible ${String(key)} is registered`);
129
+ }
130
+ return registeredComponent;
126
131
  }
127
132
  }
128
133
  async function reloadPlugin(plugin) {
@@ -141,4 +146,4 @@ export {
141
146
  reloadPlugin,
142
147
  showErrorAndDisablePlugin
143
148
  };
144
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBCYXNlIGNsYXNzIGZvciBPYnNpZGlhbiBwbHVnaW5zIHVzaW5nIGEgY29tcG9uZW50LWJhc2VkIGFyY2hpdGVjdHVyZS5cbiAqXG4gKiBQbHVnaW5CYXNlIHJlZ2lzdGVycyB1bml2ZXJzYWwgY29tcG9uZW50cyAoY29udGV4dCwgaTE4biwgZXJyb3IgaGFuZGxpbmcsIGFib3J0IHNpZ25hbCwgbGlmZWN5Y2xlIGV2ZW50cywgZGVidWcpLlxuICogU3ViY2xhc3NlcyBhZGQgdGhlaXIgb3duIGNvbXBvbmVudHMgdmlhIHtAbGluayBQbHVnaW5CYXNlLmFkZENoaWxkfSBpbiB0aGVpciBjb25zdHJ1Y3Rvci5cbiAqIEFueSB1bml2ZXJzYWwgY29tcG9uZW50IGNhbiBiZSByZXBsYWNlZCBieSBjYWxsaW5nIHtAbGluayBQbHVnaW5CYXNlLmFkZENoaWxkfSB3aXRoIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBzYW1lIGNsYXNzXG4gKiAoc2luZ2xldG9uIHJlcGxhY2VtZW50IGlzIGF1dG9tYXRpYyBmb3IgY29tcG9uZW50cyB3aG9zZSBjbGFzcyBkZWZpbmVzIGEgc3RhdGljIGBDT01QT05FTlRfS0VZYCkuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIFBsdWdpbk1hbmlmZXN0XG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBOb3RpY2UsXG4gIFBsdWdpbiBhcyBPYnNpZGlhblBsdWdpblxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgTGF5b3V0UmVhZHlDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGF5b3V0LXJlYWR5LWNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZSB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tc2V0dGluZ3MtY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHlBZnRlckRlbGF5IH0gZnJvbSAnLi4vLi4vYXN5bmMudHMnO1xuaW1wb3J0IHsgcHJpbnRFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yLnRzJztcbmltcG9ydCB7IGJ5cGFzc1N0cmljdFByb3h5IH0gZnJvbSAnLi4vLi4vc3RyaWN0LXByb3h5LnRzJztcbmltcG9ydCB7IGxvYWRDaGlsZHJlbkZpcnN0QXN5bmMgfSBmcm9tICcuLi9jb21wb25lbnRzL2FzeW5jLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBBYm9ydFNpZ25hbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hYm9ydC1zaWduYWwtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IEFzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FzeW5jLWVycm9yLWhhbmRsZXItY29tcG9uZW50LnRzJztcbmltcG9ydCB7IENvbnNvbGVEZWJ1Z0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb25zb2xlLWRlYnVnLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBJMThuQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2kxOG4tY29tcG9uZW50LnRzJztcbmltcG9ydCB7IFBsdWdpbkNvbnRleHRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLWNvbnRleHQtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IFBsdWdpbk5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBFbXB0eVBsdWdpblNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuXG5pbnRlcmZhY2UgQ29tcG9uZW50Q2xhc3NXaXRoS2V5IHtcbiAgQ09NUE9ORU5UX0tFWTogc3ltYm9sO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIE9ic2lkaWFuIHBsdWdpbnMgd2l0aCBhIGNvbXBvbmVudC1iYXNlZCBhcmNoaXRlY3R1cmUuXG4gKlxuICogUmVnaXN0ZXJzIHVuaXZlcnNhbCBjb21wb25lbnRzIGF1dG9tYXRpY2FsbHkuIFN1YmNsYXNzZXMgYWRkIG9yIHJlcGxhY2UgY29tcG9uZW50c1xuICogdmlhIHtAbGluayBQbHVnaW5CYXNlLmFkZENoaWxkfSBpbiB0aGVpciBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpbkJhc2UgZXh0ZW5kcyBPYnNpZGlhblBsdWdpbiB7XG4gIC8qKlxuICAgKiBUaGUgYWJvcnQgc2lnbmFsIGNvbXBvbmVudC4gQWJvcnRlZCB3aGVuIHRoZSBwbHVnaW4gaXMgdW5sb2FkZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWJvcnRTaWduYWxDb21wb25lbnQ6IEFib3J0U2lnbmFsQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgY29uc29sZSBkZWJ1ZyBjb21wb25lbnQuIFByb3ZpZGVzIG5hbWVzcGFjZWQgZGVidWcgbG9nZ2luZy5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBjb25zb2xlRGVidWdDb21wb25lbnQ6IENvbnNvbGVEZWJ1Z0NvbXBvbmVudDtcblxuICAvKipcbiAgICogVGhlIG5vdGljZSBjb21wb25lbnQuIERpc3BsYXlzIG5vdGljZXMgdG8gdGhlIHVzZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5ncyBjb21wb25lbnQuIE1hbmFnZXMgcGx1Z2luIHNldHRpbmdzIGxpZmVjeWNsZS5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBzZXR0aW5nc0NvbXBvbmVudDogUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlPG9iamVjdD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzaW5nbGV0b25Db21wb25lbnRzID0gbmV3IE1hcDxzeW1ib2wsIENvbXBvbmVudD4oKTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBQbHVnaW5CYXNlLlxuICAgKlxuICAgKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIG1hbmlmZXN0IC0gVGhlIHBsdWdpbiBtYW5pZmVzdC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgbWFuaWZlc3Q6IFBsdWdpbk1hbmlmZXN0KSB7XG4gICAgc3VwZXIoYXBwLCBtYW5pZmVzdCk7XG5cbiAgICB0aGlzLmFkZENoaWxkKG5ldyBQbHVnaW5Db250ZXh0Q29tcG9uZW50KHsgYXBwLCBwbHVnaW5JZDogbWFuaWZlc3QuaWQgfSkpO1xuICAgIHRoaXMuYWRkQ2hpbGQobmV3IEkxOG5Db21wb25lbnQoKSk7XG4gICAgdGhpcy5ub3RpY2VDb21wb25lbnQgPSB0aGlzLmFkZENoaWxkKG5ldyBQbHVnaW5Ob3RpY2VDb21wb25lbnQobWFuaWZlc3QubmFtZSkpO1xuICAgIHRoaXMuYWRkQ2hpbGQobmV3IEFzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50KHRoaXMubm90aWNlQ29tcG9uZW50KSk7XG4gICAgdGhpcy5hYm9ydFNpZ25hbENvbXBvbmVudCA9IHRoaXMuYWRkQ2hpbGQobmV3IEFib3J0U2lnbmFsQ29tcG9uZW50KG1hbmlmZXN0LmlkKSk7XG4gICAgdGhpcy5jb25zb2xlRGVidWdDb21wb25lbnQgPSB0aGlzLmFkZENoaWxkKG5ldyBDb25zb2xlRGVidWdDb21wb25lbnQobWFuaWZlc3QuaWQpKTtcbiAgICB0aGlzLnNldHRpbmdzQ29tcG9uZW50ID0gdGhpcy5hZGRDaGlsZChuZXcgRW1wdHlQbHVnaW5TZXR0aW5nc0NvbXBvbmVudCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY29tcG9uZW50IHRvIHRoZSBwbHVnaW4uXG4gICAqXG4gICAqIElmIHRoZSBjb21wb25lbnQncyBjbGFzcyBkZWZpbmVzIGEgc3RhdGljIGBDT01QT05FTlRfS0VZYCBzeW1ib2wsIGl0IGlzIHRyZWF0ZWQgYXMgYSBzaW5nbGV0b24gXHUyMDE0XG4gICAqIGFkZGluZyBhbm90aGVyIGNvbXBvbmVudCB3aXRoIHRoZSBzYW1lIGtleSByZXBsYWNlcyB0aGUgcHJldmlvdXMgb25lLlxuICAgKiBDb21wb25lbnRzIHdpdGhvdXQgYSBgQ09NUE9ORU5UX0tFWWAgYXJlIG11bHRpLWluc3RhbmNlIGFuZCBzaW1wbHkgYWRkZWQuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVCAtIFRoZSBjb21wb25lbnQgdHlwZS5cbiAgICogQHBhcmFtIGNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdG8gYWRkLlxuICAgKiBAcmV0dXJucyBUaGUgYWRkZWQgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFkZENoaWxkPFQgZXh0ZW5kcyBDb21wb25lbnQ+KGNvbXBvbmVudDogVCk6IFQge1xuICAgIGlmICh0aGlzLl9sb2FkZWQpIHtcbiAgICAgIHJldHVybiBzdXBlci5hZGRDaGlsZChjb21wb25lbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IHNpbmdsZXRvbktleSA9IChjb21wb25lbnQuY29uc3RydWN0b3IgYXMgUGFydGlhbDxDb21wb25lbnRDbGFzc1dpdGhLZXk+KS5DT01QT05FTlRfS0VZO1xuXG4gICAgaWYgKHNpbmdsZXRvbktleSkge1xuICAgICAgY29uc3Qgb2xkQ29tcG9uZW50ID0gdGhpcy5zaW5nbGV0b25Db21wb25lbnRzLmdldChzaW5nbGV0b25LZXkpO1xuICAgICAgaWYgKG9sZENvbXBvbmVudCkge1xuICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKG9sZENvbXBvbmVudCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNpbmdsZXRvbkNvbXBvbmVudHMuc2V0KHNpbmdsZXRvbktleSwgY29tcG9uZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIuYWRkQ2hpbGQoY29tcG9uZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyB0aGUgcGx1Z2luIGFuZCBpdHMgY29tcG9uZW50cy5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbWlzdXNlZC1wcm9taXNlcywgb2JzaWRpYW4tZGV2LXV0aWxzL3JlcXVpcmUtc3VwZXItY2FsbCAtLSBPYnNpZGlhbidzIGxvYWQoKSBoYW5kbGVzIGFzeW5jIHJldHVybnMgYXQgcnVudGltZS4gSW50ZW50aW9uYWxseSByZXBsYWNlcyBDb21wb25lbnQubG9hZCgpIHdpdGggY2hpbGRyZW4tZmlyc3QgYXN5bmMgbG9hZGluZy5cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbG9hZENoaWxkcmVuRmlyc3RBc3luYyh0aGlzKTtcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2Uub25MYXlvdXRSZWFkeSgoKSA9PiB7XG4gICAgICBpbnZva2VBc3luY1NhZmVseUFmdGVyRGVsYXkoXG4gICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuX2NoaWxkcmVuKSB7XG4gICAgICAgICAgICBhd2FpdCAoYnlwYXNzU3RyaWN0UHJveHkoY2hpbGQpIGFzIFBhcnRpYWw8TGF5b3V0UmVhZHlDb21wb25lbnQ+KS5vbkxheW91dFJlYWR5Py4oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIDAsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgdGhpcy5hYm9ydFNpZ25hbENvbXBvbmVudC5hYm9ydFNpZ25hbFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiB0aGUgZXh0ZXJuYWwgc2V0dGluZ3MgY2hhbmdlLlxuICAgKlxuICAgKiBPdmVycmlkZSBpbiBzdWJjbGFzcyBpZiBuZWVkZWQuIE1ha2Ugc3VyZSB0byBjYWxsIGBhd2FpdCBzdXBlci5vbkV4dGVybmFsU2V0dGluZ3NDaGFuZ2UoKWAgZmlyc3QuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgb25FeHRlcm5hbFNldHRpbmdzQ2hhbmdlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLm9uRXh0ZXJuYWxTZXR0aW5nc0NoYW5nZT8uKCk7XG4gICAgYXdhaXQgdGhpcy5zZXR0aW5nc0NvbXBvbmVudC5vbkV4dGVybmFsU2V0dGluZ3NDaGFuZ2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbG9hZHMgdGhlIHNwZWNpZmllZCBwbHVnaW4gYnkgZGlzYWJsaW5nIGFuZCB0aGVuIHJlLWVuYWJsaW5nIGl0LlxuICpcbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRvIHJlbG9hZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcGx1Z2luIGlzIHJlbG9hZGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVsb2FkUGx1Z2luKHBsdWdpbjogT2JzaWRpYW5QbHVnaW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcGx1Z2lucyA9IHBsdWdpbi5hcHAucGx1Z2lucztcbiAgY29uc3QgcGx1Z2luSWQgPSBwbHVnaW4ubWFuaWZlc3QuaWQ7XG4gIGF3YWl0IHBsdWdpbnMuZGlzYWJsZVBsdWdpbihwbHVnaW5JZCk7XG4gIGF3YWl0IHBsdWdpbnMuZW5hYmxlUGx1Z2luKHBsdWdpbklkKTtcbn1cblxuLyoqXG4gKiBEaXNwbGF5cyBhbiBlcnJvciBtZXNzYWdlIGFzIGEgbm90aWNlLCBsb2dzIGl0IHRvIHRoZSBjb25zb2xlLCBhbmQgZGlzYWJsZXMgdGhlIHNwZWNpZmllZCBwbHVnaW4uXG4gKlxuICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4gdG8gZGlzYWJsZS5cbiAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIGVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheSBhbmQgbG9nLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBwbHVnaW4gaXMgZGlzYWJsZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaG93RXJyb3JBbmREaXNhYmxlUGx1Z2luKHBsdWdpbjogT2JzaWRpYW5QbHVnaW4sIG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBuZXcgTm90aWNlKG1lc3NhZ2UpO1xuICBwcmludEVycm9yKG5ldyBFcnJvcihtZXNzYWdlKSk7XG4gIGF3YWl0IHBsdWdpbi5hcHAucGx1Z2lucy5kaXNhYmxlUGx1Z2luKHBsdWdpbi5tYW5pZmVzdC5pZCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQSxVQUFVO0FBQUEsT0FDTDtBQUtQLFNBQVMsbUNBQW1DO0FBQzVDLFNBQVMsa0JBQWtCO0FBQzNCLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsOEJBQThCO0FBQ3ZDLFNBQVMsNEJBQTRCO0FBQ3JDLFNBQVMsa0NBQWtDO0FBQzNDLFNBQVMsNkJBQTZCO0FBQ3RDLFNBQVMscUJBQXFCO0FBQzlCLFNBQVMsOEJBQThCO0FBQ3ZDLFNBQVMsNkJBQTZCO0FBQ3RDLFNBQVMsb0NBQW9DO0FBWXRDLE1BQWUsbUJBQW1CLGVBQWU7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUluQztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBLEVBRUYsc0JBQXNCLG9CQUFJLElBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRM0QsWUFBWSxLQUFVLFVBQTBCO0FBQ3JELFVBQU0sS0FBSyxRQUFRO0FBRW5CLFNBQUssU0FBUyxJQUFJLHVCQUF1QixFQUFFLEtBQUssVUFBVSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQ3hFLFNBQUssU0FBUyxJQUFJLGNBQWMsQ0FBQztBQUNqQyxTQUFLLGtCQUFrQixLQUFLLFNBQVMsSUFBSSxzQkFBc0IsU0FBUyxJQUFJLENBQUM7QUFDN0UsU0FBSyxTQUFTLElBQUksMkJBQTJCLEtBQUssZUFBZSxDQUFDO0FBQ2xFLFNBQUssdUJBQXVCLEtBQUssU0FBUyxJQUFJLHFCQUFxQixTQUFTLEVBQUUsQ0FBQztBQUMvRSxTQUFLLHdCQUF3QixLQUFLLFNBQVMsSUFBSSxzQkFBc0IsU0FBUyxFQUFFLENBQUM7QUFDakYsU0FBSyxvQkFBb0IsS0FBSyxTQUFTLElBQUksNkJBQTZCLENBQUM7QUFBQSxFQUMzRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWFnQixTQUE4QixXQUFpQjtBQUM3RCxRQUFJLEtBQUssU0FBUztBQUNoQixhQUFPLE1BQU0sU0FBUyxTQUFTO0FBQUEsSUFDakM7QUFFQSxVQUFNLGVBQWdCLFVBQVUsWUFBK0M7QUFFL0UsUUFBSSxjQUFjO0FBQ2hCLFlBQU0sZUFBZSxLQUFLLG9CQUFvQixJQUFJLFlBQVk7QUFDOUQsVUFBSSxjQUFjO0FBQ2hCLGFBQUssWUFBWSxZQUFZO0FBQUEsTUFDL0I7QUFDQSxXQUFLLG9CQUFvQixJQUFJLGNBQWMsU0FBUztBQUFBLElBQ3REO0FBRUEsV0FBTyxNQUFNLFNBQVMsU0FBUztBQUFBLEVBQ2pDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1BLE1BQXNCLE9BQXNCO0FBQzFDLFVBQU0sdUJBQXVCLElBQUk7QUFDakMsU0FBSyxJQUFJLFVBQVUsY0FBYyxNQUFNO0FBQ3JDO0FBQUEsUUFDRSxZQUFZO0FBQ1YscUJBQVcsU0FBUyxLQUFLLFdBQVc7QUFDbEMsa0JBQU8sa0JBQWtCLEtBQUssRUFBb0MsZ0JBQWdCO0FBQUEsVUFDcEY7QUFBQSxRQUNGO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBLEtBQUsscUJBQXFCO0FBQUEsTUFDNUI7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsTUFBc0IsMkJBQTBDO0FBQzlELFVBQU0sTUFBTSwyQkFBMkI7QUFDdkMsVUFBTSxLQUFLLGtCQUFrQix5QkFBeUI7QUFBQSxFQUN4RDtBQUNGO0FBUUEsZUFBc0IsYUFBYSxRQUF1QztBQUN4RSxRQUFNLFVBQVUsT0FBTyxJQUFJO0FBQzNCLFFBQU0sV0FBVyxPQUFPLFNBQVM7QUFDakMsUUFBTSxRQUFRLGNBQWMsUUFBUTtBQUNwQyxRQUFNLFFBQVEsYUFBYSxRQUFRO0FBQ3JDO0FBU0EsZUFBc0IsMEJBQTBCLFFBQXdCLFNBQWdDO0FBQ3RHLE1BQUksT0FBTyxPQUFPO0FBQ2xCLGFBQVcsSUFBSSxNQUFNLE9BQU8sQ0FBQztBQUM3QixRQUFNLE9BQU8sSUFBSSxRQUFRLGNBQWMsT0FBTyxTQUFTLEVBQUU7QUFDM0Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
149
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBCYXNlIGNsYXNzIGZvciBPYnNpZGlhbiBwbHVnaW5zIHVzaW5nIGEgY29tcG9uZW50LWJhc2VkIGFyY2hpdGVjdHVyZS5cbiAqXG4gKiBQbHVnaW5CYXNlIHJlZ2lzdGVycyB1bml2ZXJzYWwgY29tcG9uZW50cyAoY29udGV4dCwgaTE4biwgZXJyb3IgaGFuZGxpbmcsIGFib3J0IHNpZ25hbCwgbGlmZWN5Y2xlIGV2ZW50cywgZGVidWcpLlxuICogU3ViY2xhc3NlcyBhZGQgdGhlaXIgb3duIGNvbXBvbmVudHMgdmlhIHtAbGluayBQbHVnaW5CYXNlLmFkZENoaWxkfSBpbiB0aGVpciBjb25zdHJ1Y3Rvci5cbiAqIEFueSB1bml2ZXJzYWwgY29tcG9uZW50IGNhbiBiZSByZXBsYWNlZCBieSBjYWxsaW5nIHtAbGluayBQbHVnaW5CYXNlLmFkZENoaWxkfSB3aXRoIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBzYW1lIGNsYXNzXG4gKiAoc2luZ2xldG9uIHJlcGxhY2VtZW50IGlzIGF1dG9tYXRpYyBmb3IgY29tcG9uZW50cyB3aG9zZSBjbGFzcyBkZWZpbmVzIGEgc3RhdGljIGBDT01QT05FTlRfS0VZYCkuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIENvbnN0cnVjdG9yLFxuICBQbHVnaW5NYW5pZmVzdFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgTm90aWNlLFxuICBQbHVnaW4gYXMgT2JzaWRpYW5QbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IudHMnO1xuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICcuLi8uLi90eXBlLWd1YXJkcy50cyc7XG5pbXBvcnQgeyBBYm9ydFNpZ25hbENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYWJvcnQtc2lnbmFsLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBsb2FkQ2hpbGRyZW5GaXJzdEFzeW5jIH0gZnJvbSAnLi4vY29tcG9uZW50cy9hc3luYy1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgQXN5bmNFcnJvckhhbmRsZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2FzeW5jLWVycm9yLWhhbmRsZXItY29tcG9uZW50LnRzJztcbmltcG9ydCB7IENvbnNvbGVEZWJ1Z0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29uc29sZS1kZWJ1Zy1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgSTE4bkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvaTE4bi1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgUGx1Z2luQ29udGV4dENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvcGx1Z2luLWNvbnRleHQtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IFBsdWdpbk5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9wbHVnaW4tc2V0dGluZ3MtY29tcG9uZW50LnRzJztcblxuaW50ZXJmYWNlIENvbXBvbmVudENsYXNzV2l0aEtleSB7XG4gIENPTVBPTkVOVF9LRVk6IHN5bWJvbDtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBjcmVhdGluZyBPYnNpZGlhbiBwbHVnaW5zIHdpdGggYSBjb21wb25lbnQtYmFzZWQgYXJjaGl0ZWN0dXJlLlxuICpcbiAqIFJlZ2lzdGVycyB1bml2ZXJzYWwgY29tcG9uZW50cyBhdXRvbWF0aWNhbGx5LiBTdWJjbGFzc2VzIGFkZCBvciByZXBsYWNlIGNvbXBvbmVudHNcbiAqIHZpYSB7QGxpbmsgUGx1Z2luQmFzZS5hZGRDaGlsZH0gaW4gdGhlaXIgY29uc3RydWN0b3IuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQbHVnaW5CYXNlIGV4dGVuZHMgT2JzaWRpYW5QbHVnaW4ge1xuICAvKipcbiAgICogVGhlIGFib3J0IHNpZ25hbCBjb21wb25lbnQuIEFib3J0ZWQgd2hlbiB0aGUgcGx1Z2luIGlzIHVubG9hZGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyB0aGUgYWJvcnQgc2lnbmFsIGNvbXBvbmVudC5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgYWJvcnRTaWduYWxDb21wb25lbnQoKTogQWJvcnRTaWduYWxDb21wb25lbnQge1xuICAgIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZSh0aGlzLmdldFJlZ2lzdGVyZWRDb21wb25lbnQoQWJvcnRTaWduYWxDb21wb25lbnQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29uc29sZSBkZWJ1ZyBjb21wb25lbnQuIFByb3ZpZGVzIG5hbWVzcGFjZWQgZGVidWcgbG9nZ2luZy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGNvbnNvbGUgZGVidWcgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBjb25zb2xlRGVidWdDb21wb25lbnQoKTogQ29uc29sZURlYnVnQ29tcG9uZW50IHtcbiAgICByZXR1cm4gZW5zdXJlTm9uTnVsbGFibGUodGhpcy5nZXRSZWdpc3RlcmVkQ29tcG9uZW50KENvbnNvbGVEZWJ1Z0NvbXBvbmVudCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBub3RpY2UgY29tcG9uZW50LiBEaXNwbGF5cyBub3RpY2VzIHRvIHRoZSB1c2VyLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgbm90aWNlIGNvbXBvbmVudC5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgbm90aWNlQ29tcG9uZW50KCk6IFBsdWdpbk5vdGljZUNvbXBvbmVudCB7XG4gICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHRoaXMuZ2V0UmVnaXN0ZXJlZENvbXBvbmVudChQbHVnaW5Ob3RpY2VDb21wb25lbnQpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2luZ2xldG9uQ29tcG9uZW50cyA9IG5ldyBNYXA8c3ltYm9sLCBDb21wb25lbnQ+KCk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgUGx1Z2luQmFzZS5cbiAgICpcbiAgICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSBtYW5pZmVzdCAtIFRoZSBwbHVnaW4gbWFuaWZlc3QuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoYXBwOiBBcHAsIG1hbmlmZXN0OiBQbHVnaW5NYW5pZmVzdCkge1xuICAgIHN1cGVyKGFwcCwgbWFuaWZlc3QpO1xuXG4gICAgdGhpcy5hZGRDaGlsZChuZXcgUGx1Z2luQ29udGV4dENvbXBvbmVudCh7IGFwcCwgcGx1Z2luSWQ6IG1hbmlmZXN0LmlkIH0pKTtcbiAgICB0aGlzLmFkZENoaWxkKG5ldyBJMThuQ29tcG9uZW50KCkpO1xuICAgIHRoaXMuYWRkQ2hpbGQobmV3IFBsdWdpbk5vdGljZUNvbXBvbmVudChtYW5pZmVzdC5uYW1lKSk7XG4gICAgdGhpcy5hZGRDaGlsZChuZXcgQXN5bmNFcnJvckhhbmRsZXJDb21wb25lbnQodGhpcy5ub3RpY2VDb21wb25lbnQpKTtcbiAgICB0aGlzLmFkZENoaWxkKG5ldyBBYm9ydFNpZ25hbENvbXBvbmVudChtYW5pZmVzdC5pZCkpO1xuICAgIHRoaXMuYWRkQ2hpbGQobmV3IENvbnNvbGVEZWJ1Z0NvbXBvbmVudChtYW5pZmVzdC5pZCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjb21wb25lbnQgdG8gdGhlIHBsdWdpbi5cbiAgICpcbiAgICogSWYgdGhlIGNvbXBvbmVudCdzIGNsYXNzIGRlZmluZXMgYSBzdGF0aWMgYENPTVBPTkVOVF9LRVlgIHN5bWJvbCwgaXQgaXMgdHJlYXRlZCBhcyBhIHNpbmdsZXRvbiBcdTIwMTRcbiAgICogYWRkaW5nIGFub3RoZXIgY29tcG9uZW50IHdpdGggdGhlIHNhbWUga2V5IHJlcGxhY2VzIHRoZSBwcmV2aW91cyBvbmUuXG4gICAqIENvbXBvbmVudHMgd2l0aG91dCBhIGBDT01QT05FTlRfS0VZYCBhcmUgbXVsdGktaW5zdGFuY2UgYW5kIHNpbXBseSBhZGRlZC5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUIC0gVGhlIGNvbXBvbmVudCB0eXBlLlxuICAgKiBAcGFyYW0gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0byBhZGQuXG4gICAqIEByZXR1cm5zIFRoZSBhZGRlZCBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYWRkQ2hpbGQ8VCBleHRlbmRzIENvbXBvbmVudD4oY29tcG9uZW50OiBUKTogVCB7XG4gICAgaWYgKHRoaXMuX2xvYWRlZCkge1xuICAgICAgcmV0dXJuIHN1cGVyLmFkZENoaWxkKGNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2luZ2xldG9uS2V5ID0gKGNvbXBvbmVudC5jb25zdHJ1Y3RvciBhcyBQYXJ0aWFsPENvbXBvbmVudENsYXNzV2l0aEtleT4pLkNPTVBPTkVOVF9LRVk7XG5cbiAgICBpZiAoc2luZ2xldG9uS2V5KSB7XG4gICAgICBjb25zdCBvbGRDb21wb25lbnQgPSB0aGlzLnNpbmdsZXRvbkNvbXBvbmVudHMuZ2V0KHNpbmdsZXRvbktleSk7XG4gICAgICBpZiAob2xkQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQob2xkQ29tcG9uZW50KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2luZ2xldG9uQ29tcG9uZW50cy5zZXQoc2luZ2xldG9uS2V5LCBjb21wb25lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5hZGRDaGlsZChjb21wb25lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBwbHVnaW4gYW5kIGl0cyBjb21wb25lbnRzLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1taXN1c2VkLXByb21pc2VzLCBvYnNpZGlhbi1kZXYtdXRpbHMvcmVxdWlyZS1zdXBlci1jYWxsIC0tIE9ic2lkaWFuJ3MgbG9hZCgpIGhhbmRsZXMgYXN5bmMgcmV0dXJucyBhdCBydW50aW1lLiBJbnRlbnRpb25hbGx5IHJlcGxhY2VzIENvbXBvbmVudC5sb2FkKCkgd2l0aCBjaGlsZHJlbi1maXJzdCBhc3luYyBsb2FkaW5nLlxuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBsb2FkQ2hpbGRyZW5GaXJzdEFzeW5jKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBleHRlcm5hbCBzZXR0aW5ncyBjaGFuZ2UuXG4gICAqXG4gICAqIE92ZXJyaWRlIGluIHN1YmNsYXNzIGlmIG5lZWRlZC4gTWFrZSBzdXJlIHRvIGNhbGwgYGF3YWl0IHN1cGVyLm9uRXh0ZXJuYWxTZXR0aW5nc0NoYW5nZSgpYCBmaXJzdC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBvbkV4dGVybmFsU2V0dGluZ3NDaGFuZ2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIub25FeHRlcm5hbFNldHRpbmdzQ2hhbmdlPy4oKTtcbiAgICBhd2FpdCB0aGlzLmdldFJlZ2lzdGVyZWRDb21wb25lbnQoUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlKT8ub25FeHRlcm5hbFNldHRpbmdzQ2hhbmdlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFJlZ2lzdGVyZWRDb21wb25lbnQ8VENvbXBvbmVudD4oY29tcG9uZW50Q2xhc3NXaXRoS2V5OiBDb21wb25lbnRDbGFzc1dpdGhLZXkgJiBDb25zdHJ1Y3RvcjxUQ29tcG9uZW50Pik6IG51bGwgfCBUQ29tcG9uZW50IHtcbiAgICBjb25zdCBrZXkgPSBjb21wb25lbnRDbGFzc1dpdGhLZXkuQ09NUE9ORU5UX0tFWTtcbiAgICBjb25zdCByZWdpc3RlcmVkQ29tcG9uZW50ID0gdGhpcy5zaW5nbGV0b25Db21wb25lbnRzLmdldChrZXkpO1xuICAgIGlmICghcmVnaXN0ZXJlZENvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCEocmVnaXN0ZXJlZENvbXBvbmVudCBpbnN0YW5jZW9mIGNvbXBvbmVudENsYXNzV2l0aEtleSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW5jb21wYXRpYmxlICR7U3RyaW5nKGtleSl9IGlzIHJlZ2lzdGVyZWRgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVnaXN0ZXJlZENvbXBvbmVudDtcbiAgfVxufVxuXG4vKipcbiAqIFJlbG9hZHMgdGhlIHNwZWNpZmllZCBwbHVnaW4gYnkgZGlzYWJsaW5nIGFuZCB0aGVuIHJlLWVuYWJsaW5nIGl0LlxuICpcbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRvIHJlbG9hZC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcGx1Z2luIGlzIHJlbG9hZGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVsb2FkUGx1Z2luKHBsdWdpbjogT2JzaWRpYW5QbHVnaW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcGx1Z2lucyA9IHBsdWdpbi5hcHAucGx1Z2lucztcbiAgY29uc3QgcGx1Z2luSWQgPSBwbHVnaW4ubWFuaWZlc3QuaWQ7XG4gIGF3YWl0IHBsdWdpbnMuZGlzYWJsZVBsdWdpbihwbHVnaW5JZCk7XG4gIGF3YWl0IHBsdWdpbnMuZW5hYmxlUGx1Z2luKHBsdWdpbklkKTtcbn1cblxuLyoqXG4gKiBEaXNwbGF5cyBhbiBlcnJvciBtZXNzYWdlIGFzIGEgbm90aWNlLCBsb2dzIGl0IHRvIHRoZSBjb25zb2xlLCBhbmQgZGlzYWJsZXMgdGhlIHNwZWNpZmllZCBwbHVnaW4uXG4gKlxuICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4gdG8gZGlzYWJsZS5cbiAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIGVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheSBhbmQgbG9nLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBwbHVnaW4gaXMgZGlzYWJsZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaG93RXJyb3JBbmREaXNhYmxlUGx1Z2luKHBsdWdpbjogT2JzaWRpYW5QbHVnaW4sIG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBuZXcgTm90aWNlKG1lc3NhZ2UpO1xuICBwcmludEVycm9yKG5ldyBFcnJvcihtZXNzYWdlKSk7XG4gIGF3YWl0IHBsdWdpbi5hcHAucGx1Z2lucy5kaXNhYmxlUGx1Z2luKHBsdWdpbi5tYW5pZmVzdC5pZCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQSxVQUFVO0FBQUEsT0FDTDtBQUVQLFNBQVMsa0JBQWtCO0FBQzNCLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsNEJBQTRCO0FBQ3JDLFNBQVMsOEJBQThCO0FBQ3ZDLFNBQVMsa0NBQWtDO0FBQzNDLFNBQVMsNkJBQTZCO0FBQ3RDLFNBQVMscUJBQXFCO0FBQzlCLFNBQVMsOEJBQThCO0FBQ3ZDLFNBQVMsNkJBQTZCO0FBQ3RDLFNBQVMsbUNBQW1DO0FBWXJDLE1BQWUsbUJBQW1CLGVBQWU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNdEQsSUFBYyx1QkFBNkM7QUFDekQsV0FBTyxrQkFBa0IsS0FBSyx1QkFBdUIsb0JBQW9CLENBQUM7QUFBQSxFQUM1RTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQWMsd0JBQStDO0FBQzNELFdBQU8sa0JBQWtCLEtBQUssdUJBQXVCLHFCQUFx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
@@ -20,7 +20,7 @@ export interface AddToQueueAndWaitParams {
20
20
  /**
21
21
  * The function to add.
22
22
  */
23
- readonly operationFn: (abortSignal: AbortSignal) => Promisable<void>;
23
+ operationFn(this: void, abortSignal: AbortSignal): Promisable<void>;
24
24
  /**
25
25
  * Optional name of the operation.
26
26
  */
@@ -53,7 +53,7 @@ export interface AddToQueueParams {
53
53
  /**
54
54
  * The function to add.
55
55
  */
56
- readonly operationFn: (abortSignal: AbortSignal) => Promisable<void>;
56
+ operationFn(this: void, abortSignal: AbortSignal): Promisable<void>;
57
57
  /**
58
58
  * Optional name of the operation.
59
59
  */