@mnaoumov/obsidian-lib 1.0.0 → 1.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 (386) hide show
  1. package/README.md +9 -1
  2. package/dist/lib/cjs/__merged.cjs +40 -64
  3. package/dist/lib/cjs/active-file-provider.cjs +40 -64
  4. package/dist/lib/cjs/app.cjs +40 -64
  5. package/dist/lib/cjs/async-with-notice.cjs +40 -64
  6. package/dist/lib/cjs/attachment-path.cjs +40 -64
  7. package/dist/lib/cjs/attachment-unit-folder.cjs +40 -64
  8. package/dist/lib/cjs/backlink-index.cjs +41 -65
  9. package/dist/lib/cjs/backlink.cjs +40 -64
  10. package/dist/lib/cjs/bases-view-registrar.cjs +40 -64
  11. package/dist/lib/cjs/callout.cjs +40 -64
  12. package/dist/lib/cjs/canvas.cjs +40 -64
  13. package/dist/lib/cjs/case-insensitive-file-index.cjs +40 -64
  14. package/dist/lib/cjs/code-block-markdown-information.cjs +40 -64
  15. package/dist/lib/cjs/code-block-reg-exp.cjs +40 -64
  16. package/dist/lib/cjs/codemirror/index.cjs +40 -64
  17. package/dist/lib/cjs/codemirror/state-field-spec.cjs +40 -64
  18. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +40 -64
  19. package/dist/lib/cjs/command-handlers/command-handler-component.cjs +40 -64
  20. package/dist/lib/cjs/command-handlers/command-handler.cjs +40 -64
  21. package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +40 -64
  22. package/dist/lib/cjs/command-handlers/file-command-handler.cjs +40 -64
  23. package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +40 -64
  24. package/dist/lib/cjs/command-handlers/global-command-handler.cjs +40 -64
  25. package/dist/lib/cjs/command-handlers/index.cjs +40 -64
  26. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +40 -64
  27. package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +40 -64
  28. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +40 -64
  29. package/dist/lib/cjs/command-registrar.cjs +40 -64
  30. package/dist/lib/cjs/community-plugins.cjs +40 -64
  31. package/dist/lib/cjs/components/abort-signal-component.cjs +40 -64
  32. package/dist/lib/cjs/components/all-windows-event-component.cjs +40 -64
  33. package/dist/lib/cjs/components/async-error-handler-component.cjs +40 -64
  34. package/dist/lib/cjs/components/async-events-component.cjs +40 -64
  35. package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +40 -64
  36. package/dist/lib/cjs/components/component-ex.cjs +41 -65
  37. package/dist/lib/cjs/components/console-debug-component.cjs +40 -64
  38. package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +40 -64
  39. package/dist/lib/cjs/components/disposable-component.cjs +40 -64
  40. package/dist/lib/cjs/components/embed-extensions-component.cjs +40 -64
  41. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +40 -64
  42. package/dist/lib/cjs/components/index.cjs +40 -64
  43. package/dist/lib/cjs/components/layout-ready-component.cjs +40 -64
  44. package/dist/lib/cjs/components/menu-event-registrar-component.cjs +40 -64
  45. package/dist/lib/cjs/components/monkey-around-component.cjs +40 -64
  46. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +40 -64
  47. package/dist/lib/cjs/components/plugin-context-component.cjs +40 -64
  48. package/dist/lib/cjs/components/plugin-gate-component.cjs +41 -65
  49. package/dist/lib/cjs/components/plugin-notice-component.cjs +40 -64
  50. package/dist/lib/cjs/components/plugin-settings-component.cjs +41 -65
  51. package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +40 -64
  52. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +40 -64
  53. package/dist/lib/cjs/components/pointer-position-component.cjs +40 -64
  54. package/dist/lib/cjs/components/registry-component.cjs +40 -64
  55. package/dist/lib/cjs/components/release-notes-component.cjs +40 -64
  56. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +40 -64
  57. package/dist/lib/cjs/components/rmdir-guard-component.cjs +40 -64
  58. package/dist/lib/cjs/components/settings-migration-component.cjs +40 -64
  59. package/dist/lib/cjs/components/syntax-highlighting-component.cjs +40 -64
  60. package/dist/lib/cjs/components/templates-language-component.cjs +40 -64
  61. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +40 -64
  62. package/dist/lib/cjs/constructors/index.cjs +40 -64
  63. package/dist/lib/cjs/css-class.cjs +40 -64
  64. package/dist/lib/cjs/data-handler.cjs +40 -64
  65. package/dist/lib/cjs/dataview-link.cjs +40 -64
  66. package/dist/lib/cjs/dataview.cjs +40 -64
  67. package/dist/lib/cjs/debug.cjs +40 -64
  68. package/dist/lib/cjs/demo-vault-helper-settings.cjs +40 -64
  69. package/dist/lib/cjs/demo-vault-helper.cjs +40 -64
  70. package/dist/lib/cjs/demo-vault-naming.cjs +40 -64
  71. package/dist/lib/cjs/desktop-demo-vault-opener.cjs +40 -64
  72. package/dist/lib/cjs/desktop-trusted-input.cjs +40 -64
  73. package/dist/lib/cjs/editor-extension-registrar.cjs +40 -64
  74. package/dist/lib/cjs/editor-suggest-registrar.cjs +40 -64
  75. package/dist/lib/cjs/editor.cjs +40 -64
  76. package/dist/lib/cjs/events.cjs +40 -64
  77. package/dist/lib/cjs/extensions-registrar.cjs +40 -64
  78. package/dist/lib/cjs/file-change.cjs +40 -64
  79. package/dist/lib/cjs/file-explorer.cjs +40 -64
  80. package/dist/lib/cjs/file-manager.cjs +40 -64
  81. package/dist/lib/cjs/file-system.cjs +40 -64
  82. package/dist/lib/cjs/folder-note.cjs +40 -64
  83. package/dist/lib/cjs/frontmatter-formatting.cjs +41 -65
  84. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +40 -64
  85. package/dist/lib/cjs/frontmatter.cjs +40 -64
  86. package/dist/lib/cjs/generated-during-build.cjs +41 -65
  87. package/dist/lib/cjs/generated-during-build.d.cts +8 -2
  88. package/dist/lib/cjs/hover-link-source-registrar.cjs +40 -64
  89. package/dist/lib/cjs/html-element.cjs +40 -64
  90. package/dist/lib/cjs/i18n/custom-type-options.cjs +40 -64
  91. package/dist/lib/cjs/i18n/default-translations.cjs +40 -64
  92. package/dist/lib/cjs/i18n/i18n.cjs +40 -64
  93. package/dist/lib/cjs/i18n/index.cjs +40 -64
  94. package/dist/lib/cjs/i18n/locales/en.cjs +40 -64
  95. package/dist/lib/cjs/i18n/locales/index.cjs +40 -64
  96. package/dist/lib/cjs/i18n/locales/translations-map.cjs +40 -64
  97. package/dist/lib/cjs/index.cjs +40 -64
  98. package/dist/lib/cjs/is-in-obsidian.cjs +40 -64
  99. package/dist/lib/cjs/library-styles.cjs +40 -64
  100. package/dist/lib/cjs/library.cjs +40 -64
  101. package/dist/lib/cjs/link-name.cjs +40 -64
  102. package/dist/lib/cjs/link-update-progress.cjs +40 -64
  103. package/dist/lib/cjs/link.cjs +40 -64
  104. package/dist/lib/cjs/logger.cjs +40 -64
  105. package/dist/lib/cjs/loop.cjs +40 -64
  106. package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +40 -64
  107. package/dist/lib/cjs/markdown-code-block-processor.cjs +40 -64
  108. package/dist/lib/cjs/markdown-post-processor-registrar.cjs +40 -64
  109. package/dist/lib/cjs/markdown-view.cjs +40 -64
  110. package/dist/lib/cjs/markdown.cjs +40 -64
  111. package/dist/lib/cjs/menu-event-registrar.cjs +40 -64
  112. package/dist/lib/cjs/metadata-cache.cjs +40 -64
  113. package/dist/lib/cjs/mobile-trusted-input.cjs +40 -64
  114. package/dist/lib/cjs/modals/alert.cjs +40 -64
  115. package/dist/lib/cjs/modals/confirm.cjs +40 -64
  116. package/dist/lib/cjs/modals/index.cjs +40 -64
  117. package/dist/lib/cjs/modals/minimizable-modal.cjs +40 -64
  118. package/dist/lib/cjs/modals/modal-command-builder.cjs +40 -64
  119. package/dist/lib/cjs/modals/modal.cjs +40 -64
  120. package/dist/lib/cjs/modals/prompt.cjs +40 -64
  121. package/dist/lib/cjs/modals/select-item.cjs +40 -64
  122. package/dist/lib/cjs/modals/select-option.cjs +40 -64
  123. package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +40 -64
  124. package/dist/lib/cjs/note-priority.cjs +41 -65
  125. package/dist/lib/cjs/notebook-navigator.cjs +40 -64
  126. package/dist/lib/cjs/obsidian-dev-utils-state.cjs +40 -64
  127. package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +40 -64
  128. package/dist/lib/cjs/obsidian-settings.cjs +40 -64
  129. package/dist/lib/cjs/parse-link.cjs +40 -64
  130. package/dist/lib/cjs/path-settings.cjs +40 -64
  131. package/dist/lib/cjs/pdf.cjs +40 -64
  132. package/dist/lib/cjs/plugin/index.cjs +40 -64
  133. package/dist/lib/cjs/plugin/plugin-api.cjs +40 -64
  134. package/dist/lib/cjs/plugin/plugin-context.cjs +40 -64
  135. package/dist/lib/cjs/plugin/plugin-event-source.cjs +40 -64
  136. package/dist/lib/cjs/plugin/plugin-install-state.cjs +40 -64
  137. package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +40 -64
  138. package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +41 -65
  139. package/dist/lib/cjs/plugin/plugin.cjs +41 -65
  140. package/dist/lib/cjs/plugin/settings-migration-api.cjs +40 -64
  141. package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +40 -64
  142. package/dist/lib/cjs/popovers/field-popover.cjs +40 -64
  143. package/dist/lib/cjs/popovers/index.cjs +40 -64
  144. package/dist/lib/cjs/popovers/popover-anchor.cjs +40 -64
  145. package/dist/lib/cjs/popovers/popover.cjs +40 -64
  146. package/dist/lib/cjs/property-entry.cjs +40 -64
  147. package/dist/lib/cjs/queue.cjs +40 -64
  148. package/dist/lib/cjs/react/app-context.cjs +40 -64
  149. package/dist/lib/cjs/react/index.cjs +40 -64
  150. package/dist/lib/cjs/reference.cjs +40 -64
  151. package/dist/lib/cjs/resource-lock.cjs +40 -64
  152. package/dist/lib/cjs/resource-url.cjs +40 -64
  153. package/dist/lib/cjs/ribbon-icon-registrar.cjs +40 -64
  154. package/dist/lib/cjs/setting-components/checkbox-component.cjs +40 -64
  155. package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +40 -64
  156. package/dist/lib/cjs/setting-components/date-component.cjs +40 -64
  157. package/dist/lib/cjs/setting-components/date-time-component.cjs +40 -64
  158. package/dist/lib/cjs/setting-components/email-component.cjs +40 -64
  159. package/dist/lib/cjs/setting-components/file-component.cjs +40 -64
  160. package/dist/lib/cjs/setting-components/index.cjs +40 -64
  161. package/dist/lib/cjs/setting-components/month-component.cjs +40 -64
  162. package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +41 -65
  163. package/dist/lib/cjs/setting-components/multiple-email-component.cjs +40 -64
  164. package/dist/lib/cjs/setting-components/multiple-file-component.cjs +40 -64
  165. package/dist/lib/cjs/setting-components/multiple-text-component.cjs +40 -64
  166. package/dist/lib/cjs/setting-components/number-component.cjs +40 -64
  167. package/dist/lib/cjs/setting-components/password-component.cjs +40 -64
  168. package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +40 -64
  169. package/dist/lib/cjs/setting-components/telephone-component.cjs +40 -64
  170. package/dist/lib/cjs/setting-components/text-based-component.cjs +40 -64
  171. package/dist/lib/cjs/setting-components/time-component.cjs +40 -64
  172. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +40 -64
  173. package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +40 -64
  174. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +40 -64
  175. package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +40 -64
  176. package/dist/lib/cjs/setting-components/typed-text-component.cjs +41 -65
  177. package/dist/lib/cjs/setting-components/url-component.cjs +40 -64
  178. package/dist/lib/cjs/setting-components/validator-component.cjs +41 -65
  179. package/dist/lib/cjs/setting-components/value-component-with-change-tracking.cjs +40 -64
  180. package/dist/lib/cjs/setting-components/week-component.cjs +40 -64
  181. package/dist/lib/cjs/setting-ex.cjs +40 -64
  182. package/dist/lib/cjs/setting-group-ex.cjs +40 -64
  183. package/dist/lib/cjs/status-bar-item-registrar.cjs +40 -64
  184. package/dist/lib/cjs/templater.cjs +40 -64
  185. package/dist/lib/cjs/transformers/duration-transformer.cjs +40 -64
  186. package/dist/lib/cjs/transformers/index.cjs +40 -64
  187. package/dist/lib/cjs/trusted-input.cjs +40 -64
  188. package/dist/lib/cjs/validation.cjs +40 -64
  189. package/dist/lib/cjs/vault-delete.cjs +40 -64
  190. package/dist/lib/cjs/vault-transaction.cjs +40 -64
  191. package/dist/lib/cjs/vault.cjs +41 -65
  192. package/dist/lib/cjs/view-registrar.cjs +40 -64
  193. package/dist/lib/cjs/workspace.cjs +40 -64
  194. package/dist/lib/esm/__merged.mjs +6 -14
  195. package/dist/lib/esm/active-file-provider.mjs +6 -14
  196. package/dist/lib/esm/app.mjs +6 -14
  197. package/dist/lib/esm/async-with-notice.mjs +6 -14
  198. package/dist/lib/esm/attachment-path.mjs +6 -14
  199. package/dist/lib/esm/attachment-unit-folder.mjs +6 -14
  200. package/dist/lib/esm/backlink-index.mjs +6 -14
  201. package/dist/lib/esm/backlink.mjs +6 -14
  202. package/dist/lib/esm/bases-view-registrar.mjs +6 -14
  203. package/dist/lib/esm/callout.mjs +6 -14
  204. package/dist/lib/esm/canvas.mjs +6 -14
  205. package/dist/lib/esm/case-insensitive-file-index.mjs +6 -14
  206. package/dist/lib/esm/code-block-markdown-information.mjs +5 -13
  207. package/dist/lib/esm/code-block-reg-exp.mjs +6 -14
  208. package/dist/lib/esm/codemirror/index.mjs +6 -14
  209. package/dist/lib/esm/codemirror/state-field-spec.mjs +5 -13
  210. package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +6 -14
  211. package/dist/lib/esm/command-handlers/command-handler-component.mjs +6 -14
  212. package/dist/lib/esm/command-handlers/command-handler.mjs +6 -14
  213. package/dist/lib/esm/command-handlers/editor-command-handler.mjs +6 -14
  214. package/dist/lib/esm/command-handlers/file-command-handler.mjs +6 -14
  215. package/dist/lib/esm/command-handlers/folder-command-handler.mjs +6 -14
  216. package/dist/lib/esm/command-handlers/global-command-handler.mjs +6 -14
  217. package/dist/lib/esm/command-handlers/index.mjs +6 -14
  218. package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.mjs +6 -14
  219. package/dist/lib/esm/command-handlers/open-settings-command-handler.mjs +6 -14
  220. package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.mjs +6 -14
  221. package/dist/lib/esm/command-registrar.mjs +6 -14
  222. package/dist/lib/esm/community-plugins.mjs +6 -14
  223. package/dist/lib/esm/components/abort-signal-component.mjs +6 -14
  224. package/dist/lib/esm/components/all-windows-event-component.mjs +6 -14
  225. package/dist/lib/esm/components/async-error-handler-component.mjs +6 -14
  226. package/dist/lib/esm/components/async-events-component.mjs +6 -14
  227. package/dist/lib/esm/components/case-insensitive-file-index-component.mjs +6 -14
  228. package/dist/lib/esm/components/component-ex.mjs +6 -14
  229. package/dist/lib/esm/components/console-debug-component.mjs +6 -14
  230. package/dist/lib/esm/components/core-plugin-toggle-component.mjs +6 -14
  231. package/dist/lib/esm/components/disposable-component.mjs +6 -14
  232. package/dist/lib/esm/components/embed-extensions-component.mjs +6 -14
  233. package/dist/lib/esm/components/generate-markdown-link-default-params-component.mjs +6 -14
  234. package/dist/lib/esm/components/index.mjs +6 -14
  235. package/dist/lib/esm/components/layout-ready-component.mjs +6 -14
  236. package/dist/lib/esm/components/menu-event-registrar-component.mjs +6 -14
  237. package/dist/lib/esm/components/monkey-around-component.mjs +6 -14
  238. package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.mjs +6 -14
  239. package/dist/lib/esm/components/plugin-context-component.mjs +6 -14
  240. package/dist/lib/esm/components/plugin-gate-component.mjs +6 -14
  241. package/dist/lib/esm/components/plugin-notice-component.mjs +6 -14
  242. package/dist/lib/esm/components/plugin-settings-component.mjs +6 -14
  243. package/dist/lib/esm/components/plugin-settings-tab-component.mjs +6 -14
  244. package/dist/lib/esm/components/plugin-suggestion-component.mjs +6 -14
  245. package/dist/lib/esm/components/pointer-position-component.mjs +6 -14
  246. package/dist/lib/esm/components/registry-component.mjs +6 -14
  247. package/dist/lib/esm/components/release-notes-component.mjs +6 -14
  248. package/dist/lib/esm/components/rename-delete-handler-component.mjs +6 -14
  249. package/dist/lib/esm/components/rmdir-guard-component.mjs +6 -14
  250. package/dist/lib/esm/components/settings-migration-component.mjs +6 -14
  251. package/dist/lib/esm/components/syntax-highlighting-component.mjs +6 -14
  252. package/dist/lib/esm/components/templates-language-component.mjs +6 -14
  253. package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.mjs +6 -14
  254. package/dist/lib/esm/constructors/index.mjs +6 -14
  255. package/dist/lib/esm/css-class.mjs +6 -14
  256. package/dist/lib/esm/data-handler.mjs +6 -14
  257. package/dist/lib/esm/dataview-link.mjs +6 -14
  258. package/dist/lib/esm/dataview.mjs +6 -14
  259. package/dist/lib/esm/debug.mjs +6 -14
  260. package/dist/lib/esm/demo-vault-helper-settings.mjs +5 -13
  261. package/dist/lib/esm/demo-vault-helper.mjs +6 -14
  262. package/dist/lib/esm/demo-vault-naming.mjs +6 -14
  263. package/dist/lib/esm/desktop-demo-vault-opener.mjs +6 -14
  264. package/dist/lib/esm/desktop-trusted-input.mjs +6 -14
  265. package/dist/lib/esm/editor-extension-registrar.mjs +6 -14
  266. package/dist/lib/esm/editor-suggest-registrar.mjs +6 -14
  267. package/dist/lib/esm/editor.mjs +6 -14
  268. package/dist/lib/esm/events.mjs +6 -14
  269. package/dist/lib/esm/extensions-registrar.mjs +6 -14
  270. package/dist/lib/esm/file-change.mjs +6 -14
  271. package/dist/lib/esm/file-explorer.mjs +6 -14
  272. package/dist/lib/esm/file-manager.mjs +6 -14
  273. package/dist/lib/esm/file-system.mjs +6 -14
  274. package/dist/lib/esm/folder-note.mjs +6 -14
  275. package/dist/lib/esm/frontmatter-formatting.mjs +6 -14
  276. package/dist/lib/esm/frontmatter-link-cache-with-offsets.mjs +6 -14
  277. package/dist/lib/esm/frontmatter.mjs +6 -14
  278. package/dist/lib/esm/generated-during-build.d.mts +8 -2
  279. package/dist/lib/esm/generated-during-build.mjs +7 -15
  280. package/dist/lib/esm/hover-link-source-registrar.mjs +6 -14
  281. package/dist/lib/esm/html-element.mjs +6 -14
  282. package/dist/lib/esm/i18n/custom-type-options.mjs +6 -14
  283. package/dist/lib/esm/i18n/default-translations.mjs +6 -14
  284. package/dist/lib/esm/i18n/i18n.mjs +6 -14
  285. package/dist/lib/esm/i18n/index.mjs +6 -14
  286. package/dist/lib/esm/i18n/locales/en.mjs +6 -14
  287. package/dist/lib/esm/i18n/locales/index.mjs +6 -14
  288. package/dist/lib/esm/i18n/locales/translations-map.mjs +6 -14
  289. package/dist/lib/esm/index.mjs +6 -14
  290. package/dist/lib/esm/is-in-obsidian.mjs +6 -14
  291. package/dist/lib/esm/library-styles.mjs +6 -14
  292. package/dist/lib/esm/library.mjs +6 -14
  293. package/dist/lib/esm/link-name.mjs +6 -14
  294. package/dist/lib/esm/link-update-progress.mjs +5 -13
  295. package/dist/lib/esm/link.mjs +6 -14
  296. package/dist/lib/esm/logger.mjs +6 -14
  297. package/dist/lib/esm/loop.mjs +6 -14
  298. package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +6 -14
  299. package/dist/lib/esm/markdown-code-block-processor.mjs +6 -14
  300. package/dist/lib/esm/markdown-post-processor-registrar.mjs +6 -14
  301. package/dist/lib/esm/markdown-view.mjs +6 -14
  302. package/dist/lib/esm/markdown.mjs +6 -14
  303. package/dist/lib/esm/menu-event-registrar.mjs +5 -13
  304. package/dist/lib/esm/metadata-cache.mjs +6 -14
  305. package/dist/lib/esm/mobile-trusted-input.mjs +6 -14
  306. package/dist/lib/esm/modals/alert.mjs +6 -14
  307. package/dist/lib/esm/modals/confirm.mjs +6 -14
  308. package/dist/lib/esm/modals/index.mjs +6 -14
  309. package/dist/lib/esm/modals/minimizable-modal.mjs +6 -14
  310. package/dist/lib/esm/modals/modal-command-builder.mjs +6 -14
  311. package/dist/lib/esm/modals/modal.mjs +6 -14
  312. package/dist/lib/esm/modals/prompt.mjs +6 -14
  313. package/dist/lib/esm/modals/select-item.mjs +6 -14
  314. package/dist/lib/esm/modals/select-option.mjs +6 -14
  315. package/dist/lib/esm/modals/suggest-modal-command-builder.mjs +6 -14
  316. package/dist/lib/esm/note-priority.mjs +6 -14
  317. package/dist/lib/esm/notebook-navigator.mjs +6 -14
  318. package/dist/lib/esm/obsidian-dev-utils-state.mjs +6 -14
  319. package/dist/lib/esm/obsidian-protocol-handler-registrar.mjs +6 -14
  320. package/dist/lib/esm/obsidian-settings.mjs +6 -14
  321. package/dist/lib/esm/parse-link.mjs +6 -14
  322. package/dist/lib/esm/path-settings.mjs +6 -14
  323. package/dist/lib/esm/pdf.mjs +6 -14
  324. package/dist/lib/esm/plugin/index.mjs +6 -14
  325. package/dist/lib/esm/plugin/plugin-api.mjs +6 -14
  326. package/dist/lib/esm/plugin/plugin-context.mjs +6 -14
  327. package/dist/lib/esm/plugin/plugin-event-source.mjs +6 -14
  328. package/dist/lib/esm/plugin/plugin-install-state.mjs +6 -14
  329. package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +6 -14
  330. package/dist/lib/esm/plugin/plugin-settings-tab.mjs +6 -14
  331. package/dist/lib/esm/plugin/plugin.mjs +6 -14
  332. package/dist/lib/esm/plugin/settings-migration-api.mjs +5 -13
  333. package/dist/lib/esm/plugin-cli-handler-registrar.mjs +6 -14
  334. package/dist/lib/esm/popovers/field-popover.mjs +6 -14
  335. package/dist/lib/esm/popovers/index.mjs +6 -14
  336. package/dist/lib/esm/popovers/popover-anchor.mjs +6 -14
  337. package/dist/lib/esm/popovers/popover.mjs +6 -14
  338. package/dist/lib/esm/property-entry.mjs +6 -14
  339. package/dist/lib/esm/queue.mjs +6 -14
  340. package/dist/lib/esm/react/app-context.mjs +6 -14
  341. package/dist/lib/esm/react/index.mjs +6 -14
  342. package/dist/lib/esm/reference.mjs +6 -14
  343. package/dist/lib/esm/resource-lock.mjs +6 -14
  344. package/dist/lib/esm/resource-url.mjs +6 -14
  345. package/dist/lib/esm/ribbon-icon-registrar.mjs +6 -14
  346. package/dist/lib/esm/setting-components/checkbox-component.mjs +6 -14
  347. package/dist/lib/esm/setting-components/code-highlighter-component.mjs +6 -14
  348. package/dist/lib/esm/setting-components/date-component.mjs +6 -14
  349. package/dist/lib/esm/setting-components/date-time-component.mjs +6 -14
  350. package/dist/lib/esm/setting-components/email-component.mjs +6 -14
  351. package/dist/lib/esm/setting-components/file-component.mjs +6 -14
  352. package/dist/lib/esm/setting-components/index.mjs +6 -14
  353. package/dist/lib/esm/setting-components/month-component.mjs +6 -14
  354. package/dist/lib/esm/setting-components/multiple-dropdown-component.mjs +6 -14
  355. package/dist/lib/esm/setting-components/multiple-email-component.mjs +6 -14
  356. package/dist/lib/esm/setting-components/multiple-file-component.mjs +6 -14
  357. package/dist/lib/esm/setting-components/multiple-text-component.mjs +6 -14
  358. package/dist/lib/esm/setting-components/number-component.mjs +6 -14
  359. package/dist/lib/esm/setting-components/password-component.mjs +6 -14
  360. package/dist/lib/esm/setting-components/setting-component-wrapper.mjs +6 -14
  361. package/dist/lib/esm/setting-components/telephone-component.mjs +6 -14
  362. package/dist/lib/esm/setting-components/text-based-component.mjs +6 -14
  363. package/dist/lib/esm/setting-components/time-component.mjs +6 -14
  364. package/dist/lib/esm/setting-components/tri-state-checkbox-component.mjs +6 -14
  365. package/dist/lib/esm/setting-components/typed-dropdown-component.mjs +6 -14
  366. package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.mjs +6 -14
  367. package/dist/lib/esm/setting-components/typed-range-text-component.mjs +6 -14
  368. package/dist/lib/esm/setting-components/typed-text-component.mjs +6 -14
  369. package/dist/lib/esm/setting-components/url-component.mjs +6 -14
  370. package/dist/lib/esm/setting-components/validator-component.mjs +6 -14
  371. package/dist/lib/esm/setting-components/value-component-with-change-tracking.mjs +5 -13
  372. package/dist/lib/esm/setting-components/week-component.mjs +6 -14
  373. package/dist/lib/esm/setting-ex.mjs +6 -14
  374. package/dist/lib/esm/setting-group-ex.mjs +6 -14
  375. package/dist/lib/esm/status-bar-item-registrar.mjs +6 -14
  376. package/dist/lib/esm/templater.mjs +6 -14
  377. package/dist/lib/esm/transformers/duration-transformer.mjs +6 -14
  378. package/dist/lib/esm/transformers/index.mjs +6 -14
  379. package/dist/lib/esm/trusted-input.mjs +6 -14
  380. package/dist/lib/esm/validation.mjs +6 -14
  381. package/dist/lib/esm/vault-delete.mjs +6 -14
  382. package/dist/lib/esm/vault-transaction.mjs +6 -14
  383. package/dist/lib/esm/vault.mjs +6 -14
  384. package/dist/lib/esm/view-registrar.mjs +6 -14
  385. package/dist/lib/esm/workspace.mjs +6 -14
  386. package/package.json +69 -24
@@ -5,40 +5,32 @@ if you want to view the source, please visit the github repository of this plugi
5
5
 
6
6
  (function () {
7
7
  function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
+ symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
10
  }
11
11
 
12
12
  function ensureBrowserProcess() {
13
13
  const browserProcess = {
14
14
  browser: true,
15
15
  cwd() {
16
- return '/';
16
+ return "/";
17
17
  },
18
18
  env: {},
19
- platform: 'android'
19
+ platform: "android"
20
20
  };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
21
  const existingProcess = globalThis.process;
24
-
25
22
  if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
23
  globalThis.process = browserProcess;
28
24
  return;
29
25
  }
30
-
31
26
  if (existingProcess.versions?.node) {
32
27
  return;
33
28
  }
34
-
35
29
  const existingProcessRecord = existingProcess;
36
-
37
30
  for (const [key, value] of Object.entries(browserProcess)) {
38
31
  existingProcessRecord[key] ??= value;
39
32
  }
40
-
41
- existingProcessRecord['browser'] = true;
33
+ existingProcessRecord["browser"] = true;
42
34
  }
43
35
 
44
36
  (function initEsm() {
@@ -433,4 +425,4 @@ export {
433
425
  toParseLinkReference,
434
426
  unescapeAlias
435
427
  };
436
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3BhcnNlLWxpbmsudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMgZm9yIHBhcnNpbmcgbWFya2Rvd24gYW5kIHdpa2kgbGlua3MgaW50byBzdHJ1Y3R1cmVkIGRhdGEsIGFuZCBmb3JcbiAqIGVzY2FwaW5nLCB1bmVzY2FwaW5nLCBhbmQgZW5jb2RpbmcgbGluayBjb21wb25lbnRzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgdHlwZSB7IExpbmsgfSBmcm9tICdtZGFzdCc7XG5pbXBvcnQgdHlwZSB7XG4gIEZyb250bWF0dGVyTGlua0NhY2hlLFxuICBMb2MsXG4gIFJlZmVyZW5jZSxcbiAgUmVmZXJlbmNlQ2FjaGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBOb2RlIH0gZnJvbSAndW5pc3QnO1xuXG5pbXBvcnQgeyBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvb2JqZWN0LXV0aWxzJztcbmltcG9ydCB7IGdldE1hbmRhdG9yeU5hbWVkR3JvdXAgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcmVnLWV4cCc7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0cmluZyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQge1xuICBlbmNvZGVVcmwsXG4gIGlzRmlsZVVybCxcbiAgaXNVcmxcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3VybCc7XG5pbXBvcnQgeyBpc0Zyb250bWF0dGVyTGlua0NhY2hlIH0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdC9pbXBsZW1lbnRhdGlvbnMnO1xuaW1wb3J0IHsgcmVtYXJrIH0gZnJvbSAncmVtYXJrJztcbmltcG9ydCByZW1hcmtQYXJzZSBmcm9tICdyZW1hcmstcGFyc2UnO1xuaW1wb3J0IHsgd2lraUxpbmtQbHVnaW4gfSBmcm9tICdyZW1hcmstd2lraS1saW5rJztcbmltcG9ydCB7IHZpc2l0IH0gZnJvbSAndW5pc3QtdXRpbC12aXNpdCc7XG5cbi8qKlxuICogUmVndWxhciBleHByZXNzaW9uIGZvciBzcGVjaWFsIG1hcmtkb3duIGxpbmsgc3ltYm9scy5cbiAqL1xuY29uc3QgU1BFQ0lBTF9NQVJLRE9XTl9MSU5LX1NZTUJPTFNfUkVHRVggPSAvW1xcXFxbXFxdPD5fKn49YCRdL2c7XG5cbmNvbnN0IFdJS0lMSU5LX0RJVklERVIgPSAnfCc7XG5cbi8qKlxuICogTWF0Y2hlcyBhIGNhbmRpZGF0ZSBHRk0gZXh0ZW5kZWQgYHd3dy5gIGF1dG9saW5rIGxpdGVyYWw6IGB3d3cuYCBhdCB0aGUgc3RhcnQgb2YgdGhlIHRleHQgb3IgYWZ0ZXJcbiAqIHdoaXRlc3BhY2UsIGAqYCwgYF9gLCBgfmAsIGAoYCBvciBgPGAsIHJ1bm5pbmcgdXAgdG8gdGhlIG5leHQgd2hpdGVzcGFjZSwgYDxgIG9yIGA+YC4gR0ZNIGl0c2VsZlxuICoga2VlcHMgYSBjbG9zaW5nIGA+YCBpbiB0aGUgbGl0ZXJhbCAoT2JzaWRpYW4gcmVuZGVycyBgPHd3dy5leGFtcGxlLmNvbT5gIHdpdGggYW4gaHJlZiBlbmRpbmcgaW5cbiAqIGAlM0VgKTsgc3RvcHBpbmcgYmVmb3JlIGl0IGlzIGRlbGliZXJhdGUsIHNvIHRoZSBicmFja2V0cyBjYW4gYmUgcmVwb3J0ZWQgYXJvdW5kIHRoZSBsaXRlcmFsIGluc3RlYWQuXG4gKlxuICogVGhlIHByZWNlZGluZyBjaGFyYWN0ZXIgaXMgY29uc3VtZWQgYW5kIHRoZSBsaXRlcmFsIGNhcHR1cmVkIGFzIGBMaXRlcmFsYCwgYmVjYXVzZSBhIGxvb2tiZWhpbmQgaXMgYVxuICogc3ludGF4IGVycm9yIG9uIGlPUyBiZWZvcmUgMTYuNCwgYmVsb3cgdGhlIGlPUyAxNSBPYnNpZGlhbiBtb2JpbGUgc3RpbGwgc3VwcG9ydHMuIENvbnN1bWluZyBpdCBsb3NlcyBub1xuICogY2FuZGlkYXRlOiBhIG1hdGNoIGVuZHMgYmVmb3JlIHdoaXRlc3BhY2UsIGA8YCwgYD5gIG9yIHRoZSBlbmQsIHNvIHRoZSBjaGFyYWN0ZXIgYSBmb2xsb3dpbmcgY2FuZGlkYXRlXG4gKiBuZWVkcyBpcyBuZXZlciBwYXJ0IG9mIHRoZSBwcmV2aW91cyBtYXRjaC5cbiAqL1xuY29uc3QgV1dXX0FVVE9MSU5LX0xJVEVSQUxfQ0FORElEQVRFX1JFR19FWFAgPSAvKD86XnxbXFxzKCo8X35dKSg/PExpdGVyYWw+d3d3XFwuW15cXHM8Pl0qKS9nO1xuXG4vKipcbiAqIE1hdGNoZXMgdGhlIGRvbWFpbiBvZiBhIEdGTSBleHRlbmRlZCBgd3d3LmAgYXV0b2xpbmsgbGl0ZXJhbDogc2VnbWVudHMgb2YgbGV0dGVycywgZGlnaXRzLFxuICogdW5kZXJzY29yZXMgYW5kIGh5cGhlbnMgc2VwYXJhdGVkIGJ5IHBlcmlvZHMuXG4gKi9cbmNvbnN0IFdXV19BVVRPTElOS19MSVRFUkFMX0RPTUFJTl9SRUdfRVhQID0gL153d3coPzpcXC5bXFxwe0x9XFxwe059Xy1dKykrL3U7XG5cbi8qKlxuICogVGhlIGNoYXJhY3RlcnMgR0ZNIGRyb3BzIGZyb20gdGhlIGVuZCBvZiBhbiBleHRlbmRlZCBhdXRvbGluay5cbiAqL1xuY29uc3QgV1dXX0FVVE9MSU5LX0xJVEVSQUxfVFJBSUxJTkdfUFVOQ1RVQVRJT04gPSBuZXcgU2V0KFsnXycsICcsJywgJzonLCAnIScsICc/JywgJy4nLCAnKicsICd+J10pO1xuXG4vKipcbiAqIE1hdGNoZXMgYW4gZW50aXR5IHJlZmVyZW5jZSBhdCB0aGUgZW5kIG9mIGFuIGV4dGVuZGVkIGF1dG9saW5rLCB3aGljaCBHRk0gZHJvcHMuXG4gKi9cbmNvbnN0IFRSQUlMSU5HX0VOVElUWV9SRUZFUkVOQ0VfUkVHX0VYUCA9IC8mW1xcZEEtWmEtel0rOyQvO1xuXG4vKipcbiAqIFRoZSBzY2hlbWUgT2JzaWRpYW4gb3BlbnMgYSBHRk0gZXh0ZW5kZWQgYHd3dy5gIGF1dG9saW5rIGxpdGVyYWwgd2l0aC5cbiAqL1xuY29uc3QgV1dXX0FVVE9MSU5LX0xJVEVSQUxfU0NIRU1FID0gJ2h0dHA6Ly8nO1xuXG4vKipcbiAqIFRoZSByZXN1bHQgb2YgcGFyc2luZyB0aGUgbGlua3MgZnJvbSBhIG5vdGUncyBmcm9udG1hdHRlciB2aWEge0BsaW5rIHBhcnNlRnJvbnRtYXR0ZXJMaW5rc30uIEludGVybmFsXG4gKiBzaW5nbGUtbGluayBmcm9udG1hdHRlciB2YWx1ZXMgYXJlIG9taXR0ZWQsIGFzIE9ic2lkaWFuIG5hdGl2ZWx5IGNhY2hlcyB0aGVtLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlRnJvbnRtYXR0ZXJMaW5rc1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBUaGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gc2luZ2xlLWxpbmsgKHNpbmdsZS12YWx1ZSkgZnJvbnRtYXR0ZXIgdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzOiBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gbXVsdGktbGluayAobXVsdGktdmFsdWUpIGZyb250bWF0dGVyIHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IG11bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3M6IFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlV2l0aE9mZnNldHNbXTtcblxuICAvKipcbiAgICogVGhlIGludGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIG11bHRpLWxpbmsgKG11bHRpLXZhbHVlKSBmcm9udG1hdHRlciB2YWx1ZXMuXG4gICAqL1xuICByZWFkb25seSBtdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rczogUGFyc2VMaW5rRnJvbnRtYXR0ZXJSZWZlcmVuY2VXaXRoT2Zmc2V0c1tdO1xufVxuXG4vKipcbiAqIEEge0BsaW5rIEZyb250bWF0dGVyTGlua0NhY2hlfSBmb3IgYSBsaW5rIHBhcnNlZCBmcm9tIGEgc2luZ2xlLWxpbmsgZnJvbnRtYXR0ZXIgdmFsdWUgdmlhXG4gKiB7QGxpbmsgcGFyc2VMaW5rc30uIEl0IGNhcnJpZXMgdGhlIGZ1bGwge0BsaW5rIFBhcnNlTGlua1Jlc3VsdH0gc28gY29uc3VtZXJzIGNhbiBpbnNwZWN0IHRoZSBwYXJzZVxuICogZGV0YWlscyB3aXRob3V0IHJlLXBhcnNpbmcgdGhlIGxpbmsuIFVzZSB0aGlzIHdoZW4gdGhlIHdob2xlIGZyb250bWF0dGVyIHZhbHVlIGlzIGEgc2luZ2xlIGxpbmsuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VMaW5rRnJvbnRtYXR0ZXJSZWZlcmVuY2UgZXh0ZW5kcyBGcm9udG1hdHRlckxpbmtDYWNoZSB7XG4gIC8qKlxuICAgKiBUaGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIGxpbmsuXG4gICAqL1xuICByZWFkb25seSBwYXJzZUxpbmtSZXN1bHQ6IFBhcnNlTGlua1Jlc3VsdDtcbn1cblxuLyoqXG4gKiBBIHtAbGluayBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZX0gZm9yIGEgbGluayBwYXJzZWQgZnJvbSBhIG11bHRpLWxpbmsgZnJvbnRtYXR0ZXIgdmFsdWUgdmlhXG4gKiB7QGxpbmsgcGFyc2VMaW5rc30sIGFkZGl0aW9uYWxseSBjYXJyeWluZyB0aGUgb2Zmc2V0cyBvZiB0aGUgbGluayB3aXRoaW4gdGhlIGZyb250bWF0dGVyIHZhbHVlLiBVc2VcbiAqIHRoaXMgd2hlbiB0aGUgZnJvbnRtYXR0ZXIgdmFsdWUgaG9sZHMgbXVsdGlwbGUgbGlua3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VMaW5rRnJvbnRtYXR0ZXJSZWZlcmVuY2VXaXRoT2Zmc2V0cyBleHRlbmRzIFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlIHtcbiAgLyoqXG4gICAqIEFuIGVuZCBvZmZzZXQgb2YgdGhlIGxpbmsgaW4gdGhlIGZyb250bWF0dGVyIHZhbHVlLlxuICAgKi9cbiAgZW5kT2Zmc2V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgc3RhcnQgb2Zmc2V0IG9mIHRoZSBsaW5rIGluIHRoZSBmcm9udG1hdHRlciB2YWx1ZS5cbiAgICovXG4gIHN0YXJ0T2Zmc2V0OiBudW1iZXI7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHBhcnNlTGlua30uIFRoZSBzYW1lIGFzIHtAbGluayBQYXJzZUxpbmtzT3B0aW9uc30uXG4gKi9cbmV4cG9ydCB0eXBlIFBhcnNlTGlua09wdGlvbnMgPSBQYXJzZUxpbmtzT3B0aW9ucztcblxuLyoqXG4gKiBBIHtAbGluayBSZWZlcmVuY2VDYWNoZX0gZm9yIGEgbGluayBwYXJzZWQgZnJvbSBjb250ZW50IHZpYSB7QGxpbmsgcGFyc2VMaW5rc30uIEl0IGNhcnJpZXMgdGhlIGZ1bGxcbiAqIHtAbGluayBQYXJzZUxpbmtSZXN1bHR9IHNvIGNvbnN1bWVycyBjYW4gaW5zcGVjdCB0aGUgcGFyc2UgZGV0YWlscyB3aXRob3V0IHJlLXBhcnNpbmcgdGhlIGxpbmsuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VMaW5rUmVmZXJlbmNlIGV4dGVuZHMgUmVmZXJlbmNlQ2FjaGUge1xuICAvKipcbiAgICogVGhlIHJlc3VsdCBvZiBwYXJzaW5nIHRoZSBsaW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyc2VMaW5rUmVzdWx0OiBQYXJzZUxpbmtSZXN1bHQ7XG59XG5cbi8qKlxuICogQSByZXN1bHQgb2YgcGFyc2luZyBhIGxpbmsuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VMaW5rUmVzdWx0IHtcbiAgLyoqXG4gICAqIEFuIGFsaWFzIG9mIHRoZSBsaW5rLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBcbiAgICogW1xcKmFsaWFzXFwqXShsaW5rLm1kKSAtPiBcXCphbGlhc1xcKlxuICAgKiBgYGBcbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBlbmNvZGVkIFVSTCBvZiB0aGUgbGluay5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgXG4gICAqIFthbGlhc10oPGxpbmsgd2l0aCBzcGFjZS5tZD4pIC0+IGxpbmslMjB3aXRoJTIwc3BhY2UubWRcbiAgICogYGBgXG4gICAqL1xuICByZWFkb25seSBlbmNvZGVkVXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBlbmQgb2Zmc2V0IG9mIHRoZSBsaW5rIGluIHRoZSBvcmlnaW5hbCB0ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kT2Zmc2V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGluayBoYXMgYW5nbGUgYnJhY2tldHMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYFxuICAgKiBbYWxpYXNdKDxsaW5rLm1kPikgLT4gdHJ1ZVxuICAgKiBbYWxpYXNdKGxpbmsubWQpIC0+IGZhbHNlXG4gICAqIGBgYFxuICAgKi9cbiAgcmVhZG9ubHkgaGFzQW5nbGVCcmFja2V0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGluayBpcyBhbiBlbWJlZCBsaW5rLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBcbiAgICogIVtbYWxpYXNdXSAtPiB0cnVlXG4gICAqIFtbYWxpYXNdXSAtPiBmYWxzZVxuICAgKiBgYGBcbiAgICovXG4gIHJlYWRvbmx5IGlzRW1iZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGluayBpcyBleHRlcm5hbC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgXG4gICAqIFthbGlhc10oaHR0cHM6Ly9leGFtcGxlLmNvbSkgLT4gdHJ1ZVxuICAgKiBbYWxpYXNdKGZpbGUubWQpIC0+IGZhbHNlXG4gICAqIGBgYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNFeHRlcm5hbDogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBsaW5rIGlzIGEgYGZpbGU6Ly9gIFVSTC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgXG4gICAqIFthbGlhc10oZmlsZTovLy9DOi94LnR4dCkgLT4gdHJ1ZVxuICAgKiBbYWxpYXNdKGh0dHBzOi8vZXhhbXBsZS5jb20pIC0+IGZhbHNlXG4gICAqIGBgYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNGaWxlVXJsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGxpbmsgaXMgYSB3aWtpbGluay5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgXG4gICAqIFtbYWxpYXNdXSAtPiB0cnVlXG4gICAqIFthbGlhc10obGluay5tZCkgLT4gZmFsc2VcbiAgICogYGBgXG4gICAqL1xuICByZWFkb25seSBpc1dpa2lsaW5rOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIHJhdyBsaW5rIHRleHQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYFxuICAgKiBbYWxpYXNdKGxpbmsubWQpIC0+IFthbGlhc10obGluay5tZClcbiAgICogYGBgXG4gICAqL1xuICByZWFkb25seSByYXc6IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdGFydCBvZmZzZXQgb2YgdGhlIGxpbmsgaW4gdGhlIG9yaWdpbmFsIHRleHQuXG4gICAqL1xuICByZWFkb25seSBzdGFydE9mZnNldDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHRpdGxlIG9mIHRoZSBsaW5rLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBcbiAgICogW2FsaWFzXShsaW5rLm1kIFwidGl0bGVcIikgLT4gdGl0bGVcbiAgICogYGBgXG4gICAqL1xuICByZWFkb25seSB0aXRsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQW4gdW5lc2NhcGVkIGFsaWFzIG9mIHRoZSBsaW5rLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBcbiAgICogW1xcKmFsaWFzXFwqXShsaW5rLm1kKSAtPiAqYWxpYXMqXG4gICAqIGBgYFxuICAgKi9cbiAgcmVhZG9ubHkgdW5lc2NhcGVkQWxpYXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIFVSTCBvZiB0aGUgbGluay5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgXG4gICAqIFthbGlhc10obGluayUyMHdpdGglMjBzcGFjZS5tZCkgLT4gbGluayB3aXRoIHNwYWNlLm1kXG4gICAqIGBgYFxuICAgKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHBhcnNlTGlua3N9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlTGlua3NPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVjb2duaXplIEdGTSBleHRlbmRlZCBgd3d3LmAgYXV0b2xpbmsgbGl0ZXJhbHMgKGB3d3cuZXhhbXBsZS5jb21gLCBhbHNvIGluc2lkZVxuICAgKiBgPC4uLj5gKSBhcyBleHRlcm5hbCBsaW5rcywgYXMgT2JzaWRpYW4gZG9lcyBpbiBhIG5vdGUncyBib2R5LiBPYnNpZGlhbiBkb2VzIG5vdCBsaW5rIHRoZW0gaW5cbiAgICogZnJvbnRtYXR0ZXIgdmFsdWVzLCBzbyB7QGxpbmsgcGFyc2VGcm9udG1hdHRlckxpbmtzfSB0dXJucyB0aGlzIG9mZi5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmVjb2duaXplV3d3QXV0b2xpbmtMaXRlcmFscz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1zIGZvciB7QGxpbmsgdG9QYXJzZUxpbmtSZWZlcmVuY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvUGFyc2VMaW5rUmVmZXJlbmNlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IHRoZSBwYXJzZWQgbGluaydzIG9mZnNldHMgaW5kZXggaW50by4gVXNlZCB0byBjb21wdXRlIHRoZSBsaW5lIGFuZCBjb2x1bW4uXG4gICAqL1xuICByZWFkb25seSBjb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJzZWQgbGluayB0byB3cmFwLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyc2VMaW5rUmVzdWx0OiBQYXJzZUxpbmtSZXN1bHQ7XG59XG5cbi8qKlxuICogUGFyYW1zIGZvciB7QGxpbmsgRnJvbnRtYXR0ZXJMaW5rc1BhcnNlci5jYXRlZ29yaXplfS5cbiAqL1xuaW50ZXJmYWNlIENhdGVnb3JpemVGcm9udG1hdHRlckxpbmtQYXJhbXMge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgd2hvbGUgZnJvbnRtYXR0ZXIgdmFsdWUgaXMgYSBzaW5nbGUgbGluay5cbiAgICovXG4gIHJlYWRvbmx5IGlzU2luZ2xlTGluazogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGtleSBwYXRoIG9mIHRoZSBmcm9udG1hdHRlciB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyc2VkIGxpbmsuXG4gICAqL1xuICByZWFkb25seSBwYXJzZUxpbmtSZXN1bHQ6IFBhcnNlTGlua1Jlc3VsdDtcblxuICAvKipcbiAgICogVGhlIGZyb250bWF0dGVyIHZhbHVlIHRoZSBsaW5rIHdhcyBwYXJzZWQgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1zIGZvciB7QGxpbmsgZGVjb2RlVXJsU2FmZWx5fS5cbiAqL1xuaW50ZXJmYWNlIERlY29kZVVybFNhZmVseVBhcmFtcyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBsaW5rIHVzZXMgYW5nbGUgYnJhY2tldHMuXG4gICAqL1xuICByZWFkb25seSBoYXNBbmdsZUJyYWNrZXRzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBsaW5rIGlzIGV4dGVybmFsLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNFeHRlcm5hbDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBVUkwgdG8gZGVjb2RlLlxuICAgKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1zIGZvciB7QGxpbmsgZXh0cmFjdEFsaWFzfS5cbiAqL1xuaW50ZXJmYWNlIEV4dHJhY3RBbGlhc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBBIHN0cmluZyB0byBleHRyYWN0IHRoZSBhbGlhcyBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgJHN0cmluZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBlbmQgb2Zmc2V0IG9mIHRoZSBhbGlhcyBpbiB0aGUgc3RyaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNFbmRPZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQSBzdGFydCBvZmZzZXQgb2YgdGhlIGFsaWFzIGluIHRoZSBzdHJpbmcuXG4gICAqL1xuICByZWFkb25seSBhbGlhc1N0YXJ0T2Zmc2V0OiBudW1iZXI7XG59XG5cbi8qKlxuICogUGFyYW1zIGZvciB7QGxpbmsgZXh0cmFjdFRleHRMaW5rc30uXG4gKi9cbmludGVyZmFjZSBFeHRyYWN0VGV4dExpbmtzUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEgc3RyaW5nIHRvIGV4dHJhY3QgdGhlIHRleHQgbGlua3MgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5ICRzdHJpbmc6IHN0cmluZztcblxuICAvKipcbiAgICogQW4gZW5kIG9mZnNldCBvZiB0aGUgdGV4dCBwYXJ0IGluIHRoZSBzdHJpbmcuXG4gICAqL1xuICByZWFkb25seSBlbmRPZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZWNvZ25pemUgR0ZNIGV4dGVuZGVkIGB3d3cuYCBhdXRvbGluayBsaXRlcmFscy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFJlY29nbml6ZVd3d0F1dG9saW5rTGl0ZXJhbHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgc3RhcnQgb2Zmc2V0IG9mIHRoZSB0ZXh0IHBhcnQgaW4gdGhlIHN0cmluZy5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0T2Zmc2V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwYXJzZWQgbGlua3MgdG8gYXBwZW5kIHRoZSBleHRyYWN0ZWQgdGV4dCBsaW5rcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IHRleHRMaW5rczogUGFyc2VMaW5rUmVzdWx0W107XG59XG5cbi8qKlxuICogUGFyYW1zIGZvciB7QGxpbmsgaGFzQW5nbGVCcmFja2V0c0luTGlua30uXG4gKi9cbmludGVyZmFjZSBIYXNBbmdsZUJyYWNrZXRzSW5MaW5rUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEgcmF3IGxpbmsgdGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IHJhdzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHJhdyBVUkwgb2YgdGhlIGxpbmsuXG4gICAqL1xuICByZWFkb25seSByYXdVcmw6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFdpa2lMaW5rTm9kZSBleHRlbmRzIE5vZGUge1xuICBkYXRhOiBXaWtpTGlua05vZGVEYXRhO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgV2lraUxpbmtOb2RlRGF0YSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgYWxpYXM6IHN0cmluZztcbn1cblxuY2xhc3MgRnJvbnRtYXR0ZXJMaW5rc1BhcnNlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzOiBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZVtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgbXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rczogUGFyc2VMaW5rRnJvbnRtYXR0ZXJSZWZlcmVuY2VXaXRoT2Zmc2V0c1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgbXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3M6IFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlV2l0aE9mZnNldHNbXSA9IFtdO1xuXG4gIHB1YmxpYyBwYXJzZShmcm9udG1hdHRlcjogdW5rbm93bik6IFBhcnNlRnJvbnRtYXR0ZXJMaW5rc1Jlc3VsdCB7XG4gICAgdGhpcy5wYXJzZVZhbHVlKGZyb250bWF0dGVyLCAnJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZyb250bWF0dGVyRXh0ZXJuYWxMaW5rczogdGhpcy5mcm9udG1hdHRlckV4dGVybmFsTGlua3MsXG4gICAgICBtdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzOiB0aGlzLm11bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3MsXG4gICAgICBtdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rczogdGhpcy5tdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rc1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNhdGVnb3JpemUocGFyYW1zOiBDYXRlZ29yaXplRnJvbnRtYXR0ZXJMaW5rUGFyYW1zKTogdm9pZCB7XG4gICAgY29uc3QgeyBpc1NpbmdsZUxpbmssIGtleSwgcGFyc2VMaW5rUmVzdWx0LCB2YWx1ZSB9ID0gcGFyYW1zO1xuICAgIGlmICghcGFyc2VMaW5rUmVzdWx0LmlzRXh0ZXJuYWwgJiYgaXNTaW5nbGVMaW5rKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVmZXJlbmNlOiBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZSA9IHtcbiAgICAgIGRpc3BsYXlUZXh0OiBwYXJzZUxpbmtSZXN1bHQuYWxpYXMgPz8gcGFyc2VMaW5rUmVzdWx0LnVybCxcbiAgICAgIGtleSxcbiAgICAgIGxpbms6IHBhcnNlTGlua1Jlc3VsdC51cmwsXG4gICAgICBvcmlnaW5hbDogdmFsdWUsXG4gICAgICBwYXJzZUxpbmtSZXN1bHRcbiAgICB9O1xuXG4gICAgaWYgKGlzU2luZ2xlTGluaykge1xuICAgICAgdGhpcy5mcm9udG1hdHRlckV4dGVybmFsTGlua3MucHVzaChyZWZlcmVuY2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlZmVyZW5jZVdpdGhPZmZzZXRzOiBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZVdpdGhPZmZzZXRzID0ge1xuICAgICAgLi4ucmVmZXJlbmNlLFxuICAgICAgZW5kT2Zmc2V0OiBwYXJzZUxpbmtSZXN1bHQuZW5kT2Zmc2V0LFxuICAgICAgc3RhcnRPZmZzZXQ6IHBhcnNlTGlua1Jlc3VsdC5zdGFydE9mZnNldFxuICAgIH07XG5cbiAgICBpZiAocGFyc2VMaW5rUmVzdWx0LmlzRXh0ZXJuYWwpIHtcbiAgICAgIHRoaXMubXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcy5wdXNoKHJlZmVyZW5jZVdpdGhPZmZzZXRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcy5wdXNoKHJlZmVyZW5jZVdpdGhPZmZzZXRzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlVmFsdWUodmFsdWU6IHVua25vd24sIGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIE9ic2lkaWFuIGxpbmtzIGEgc2NoZW1lLWxlc3MgYHd3dy5gIGxpdGVyYWwgaW4gdGhlIGJvZHkgb25seSwgbmV2ZXIgaW4gYSBmcm9udG1hdHRlciB2YWx1ZS5cbiAgICAgIGNvbnN0IHBhcnNlTGlua1Jlc3VsdHMgPSBwYXJzZUxpbmtzKHZhbHVlLCB7IHNob3VsZFJlY29nbml6ZVd3d0F1dG9saW5rTGl0ZXJhbHM6IGZhbHNlIH0pO1xuICAgICAgY29uc3QgaXNTaW5nbGVMaW5rID0gcGFyc2VMaW5rUmVzdWx0c1swXT8ucmF3ID09PSB2YWx1ZTtcbiAgICAgIGZvciAoY29uc3QgcGFyc2VMaW5rUmVzdWx0IG9mIHBhcnNlTGlua1Jlc3VsdHMpIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yaXplKHsgaXNTaW5nbGVMaW5rLCBrZXksIHBhcnNlTGlua1Jlc3VsdCwgdmFsdWUgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtjaGlsZEtleSwgY2hpbGRWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUgYXMgR2VuZXJpY09iamVjdCkpIHtcbiAgICAgIHRoaXMucGFyc2VWYWx1ZShjaGlsZFZhbHVlLCBrZXkgPyBgJHtrZXl9LiR7Y2hpbGRLZXl9YCA6IGNoaWxkS2V5KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBFc2NhcGVzIHRoZSBhbGlhcyBvZiBhIG1hcmtkb3duIGxpbmsuXG4gKlxuICogQHBhcmFtIGFsaWFzIC0gQW4gYWxpYXMgb2YgYSBtYXJrZG93biBsaW5rLlxuICogQHJldHVybnMgQW4gZXNjYXBlZCBhbGlhcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGVzY2FwZUFsaWFzKCcqKmFsaWFzKionKSAvLyAnXFxcXCpcXFxcKmFsaWFzXFxcXCpcXFxcKidcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlQWxpYXMoYWxpYXM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlQWxsKHtcbiAgICAkc3RyaW5nOiBhbGlhcyxcbiAgICByZXBsYWNlcjogU3RyaW5nLnJhd2BcXCQmYCxcbiAgICBzZWFyY2hWYWx1ZTogU1BFQ0lBTF9NQVJLRE9XTl9MSU5LX1NZTUJPTFNfUkVHRVhcbiAgfSk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgcmVmZXJlbmNlIGlzIGEge0BsaW5rIFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlfS5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcmVmZXJlbmNlIGlzIGEge0BsaW5rIFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlfSwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1BhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlKHJlZmVyZW5jZTogUmVmZXJlbmNlKTogcmVmZXJlbmNlIGlzIFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlIHtcbiAgcmV0dXJuIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUocmVmZXJlbmNlKSAmJiAncGFyc2VMaW5rUmVzdWx0JyBpbiByZWZlcmVuY2U7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgcmVmZXJlbmNlIGlzIGEge0BsaW5rIFBhcnNlTGlua1JlZmVyZW5jZX0uXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHJlZmVyZW5jZSBpcyBhIHtAbGluayBQYXJzZUxpbmtSZWZlcmVuY2V9LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGFyc2VMaW5rUmVmZXJlbmNlKHJlZmVyZW5jZTogUmVmZXJlbmNlKTogcmVmZXJlbmNlIGlzIFBhcnNlTGlua1JlZmVyZW5jZSB7XG4gIHJldHVybiAncGFyc2VMaW5rUmVzdWx0JyBpbiByZWZlcmVuY2U7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBsaW5rcyBmcm9tIGEgbm90ZSdzIGZyb250bWF0dGVyLiBFYWNoIHN0cmluZyB2YWx1ZSBpcyBwYXJzZWQgdmlhIHtAbGluayBwYXJzZUxpbmtzfTogYSB2YWx1ZVxuICogdGhhdCBpcyBhIHNpbmdsZSBsaW5rIHlpZWxkcyBhbiBlbnRyeSB3aXRob3V0IG9mZnNldHMsIGFuZCBhIHZhbHVlIHRoYXQgaG9sZHMgbXVsdGlwbGUgbGlua3MgeWllbGRzXG4gKiBvZmZzZXQtY2FycnlpbmcgZW50cmllcy4gSW50ZXJuYWwgc2luZ2xlLWxpbmsgdmFsdWVzIGFyZSBvbWl0dGVkLCBhcyBPYnNpZGlhbiBuYXRpdmVseSBjYWNoZXMgdGhlbS5cbiAqXG4gKiBAcGFyYW0gZnJvbnRtYXR0ZXIgLSBUaGUgZnJvbnRtYXR0ZXIgdG8gcGFyc2UgKGEgdmFsdWUsIG9iamVjdCwgb3IgYXJyYXkpLlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBmcm9udG1hdHRlciBsaW5rcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRnJvbnRtYXR0ZXJMaW5rcyhmcm9udG1hdHRlcjogdW5rbm93bik6IFBhcnNlRnJvbnRtYXR0ZXJMaW5rc1Jlc3VsdCB7XG4gIHJldHVybiBuZXcgRnJvbnRtYXR0ZXJMaW5rc1BhcnNlcigpLnBhcnNlKGZyb250bWF0dGVyKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSBsaW5rIGludG8gaXRzIGNvbXBvbmVudHMuXG4gKlxuICogQHBhcmFtICRzdHJpbmcgLSBUaGUgbGluayB0byBwYXJzZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcnNlIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGxpbmsuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpbmsoJHN0cmluZzogc3RyaW5nLCBvcHRpb25zPzogUGFyc2VMaW5rT3B0aW9ucyk6IG51bGwgfCBQYXJzZUxpbmtSZXN1bHQge1xuICBjb25zdCBsaW5rcyA9IHBhcnNlTGlua3MoJHN0cmluZywgb3B0aW9ucyk7XG4gIHJldHVybiBsaW5rc1swXT8ucmF3ID09PSAkc3RyaW5nID8gbGlua3NbMF0gOiBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlcyBhbGwgbGlua3MgaW4gYSBzdHJpbmcuXG4gKlxuICogQmVzaWRlcyBtYXJrZG93biBsaW5rcywgd2lraWxpbmtzIGFuZCBhdXRvbGlua3MsIHRoZSBwbGFpbiB0ZXh0IGJldHdlZW4gdGhlbSBpcyBzY2FubmVkIGZvciBiYXJlXG4gKiBVUkxzIHdpdGggYSBzY2hlbWUgKGBodHRwczovL2V4YW1wbGUuY29tYCkgYW5kLCB1bmxlc3MgdHVybmVkIG9mZiB0aHJvdWdoXG4gKiB7QGxpbmsgUGFyc2VMaW5rc09wdGlvbnMuc2hvdWxkUmVjb2duaXplV3d3QXV0b2xpbmtMaXRlcmFsc30sIGZvciBHRk0gZXh0ZW5kZWQgYHd3dy5gIGF1dG9saW5rXG4gKiBsaXRlcmFscyAoYHd3dy5leGFtcGxlLmNvbWApLiBTdWNoIGEgbGl0ZXJhbCBpcyByZXBvcnRlZCBhcyBhbiBleHRlcm5hbCBsaW5rIHdob3NlIGB1cmxgIGNhcnJpZXMgdGhlXG4gKiBgaHR0cDovL2Agc2NoZW1lIE9ic2lkaWFuIG9wZW5zIGl0IHdpdGgsIHNvIGEgbGluayByZWJ1aWx0IGZyb20gaXQgc3RheXMgZXh0ZXJuYWw6IGEgc2NoZW1lLWxlc3NcbiAqIGBbYWxpYXNdKHd3dy5leGFtcGxlLmNvbSlgIGlzIGFuIGludGVybmFsIGxpbmsgaW4gT2JzaWRpYW4uIEEgbGl0ZXJhbCB3cmFwcGVkIGluIGA8Li4uPmAgcmVwb3J0cyB0aGVcbiAqIGJyYWNrZXRzIGFzIHBhcnQgb2YgYHJhd2AsIHNvIHJlcGxhY2luZyBgcmF3YCBsZWF2ZXMgbm8gc3RyYXkgYnJhY2tldCBiZWhpbmQuXG4gKlxuICogQHBhcmFtICRzdHJpbmcgLSBUaGUgc3RyaW5nIHRvIHBhcnNlIHRoZSBsaW5rcyBpbi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcnNlIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGxpbmtzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VMaW5rcygkc3RyaW5nOiBzdHJpbmcsIG9wdGlvbnM/OiBQYXJzZUxpbmtzT3B0aW9ucyk6IFBhcnNlTGlua1Jlc3VsdFtdIHtcbiAgY29uc3Qgc2hvdWxkUmVjb2duaXplV3d3QXV0b2xpbmtMaXRlcmFscyA9IG9wdGlvbnM/LnNob3VsZFJlY29nbml6ZVd3d0F1dG9saW5rTGl0ZXJhbHMgPz8gdHJ1ZTtcbiAgY29uc3QgZW1iZWRTeW1ib2xPZmZzZXRzID0gbmV3IFNldDxudW1iZXI+KCk7XG5cbiAgY29uc3QgRU1CRURfTElOS19QUkVGSVggPSAnIVsnO1xuICBjb25zdCBOT19FTUJFRF9MSU5LX1BSRUZJWCA9ICdAWyc7XG4gIGNvbnN0IERVTU1ZX0NIQVJBQ1RFUiA9ICdAJztcblxuICBjb25zdCBFTUJFRF9JTlNJREVfTElOS19SRUdfRVhQID0gL1xcWyg/PExpbmtBbGlhcz4hXFxbLio/XFxdXFwoLis/XFwpKVxcXVxcKCg/PExpbms+Lis/KVxcKS9nO1xuICBjb25zdCBub0luc2lkZUVtYmVkc0xpbmtzU3RyaW5nID0gcmVwbGFjZUFsbCh7XG4gICAgJHN0cmluZyxcbiAgICByZXBsYWNlcjogKHsgY2FwdHVyZWRHcm91cEFyZ3VtZW50czogW2xpbmtBbGlhcyA9ICcnLCBsaW5rID0gJyddIH0pID0+IHtcbiAgICAgIGNvbnN0IGR1bW15QWxpYXMgPSBEVU1NWV9DSEFSQUNURVIucmVwZWF0KGxpbmtBbGlhcy5sZW5ndGgpO1xuICAgICAgcmV0dXJuIGBbJHtkdW1teUFsaWFzfV0oJHtsaW5rfSlgO1xuICAgIH0sXG4gICAgc2VhcmNoVmFsdWU6IEVNQkVEX0lOU0lERV9MSU5LX1JFR19FWFBcbiAgfSk7XG5cbiAgY29uc3Qgbm9FbWJlZFN0cmluZyA9IHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmc6IG5vSW5zaWRlRW1iZWRzTGlua3NTdHJpbmcsXG4gICAgcmVwbGFjZXI6ICgkYXJndW1lbnRzKSA9PiB7XG4gICAgICBlbWJlZFN5bWJvbE9mZnNldHMuYWRkKCRhcmd1bWVudHMub2Zmc2V0KTtcbiAgICAgIHJldHVybiBOT19FTUJFRF9MSU5LX1BSRUZJWDtcbiAgICB9LFxuICAgIHNlYXJjaFZhbHVlOiBFTUJFRF9MSU5LX1BSRUZJWFxuICB9KTtcblxuICBjb25zdCBwcm9jZXNzb3IgPSByZW1hcmsoKS51c2UocmVtYXJrUGFyc2UpLnVzZSh3aWtpTGlua1BsdWdpbiwgeyBhbGlhc0RpdmlkZXI6IFdJS0lMSU5LX0RJVklERVIgfSk7XG4gIGNvbnN0IHJvb3QgPSBwcm9jZXNzb3IucGFyc2Uobm9FbWJlZFN0cmluZyk7XG5cbiAgY29uc3QgbGlua3M6IFBhcnNlTGlua1Jlc3VsdFtdID0gW107XG4gIGNvbnN0IHRleHRMaW5rczogUGFyc2VMaW5rUmVzdWx0W10gPSBbXTtcblxuICB2aXNpdChyb290LCAobm9kZTogTm9kZSkgPT4ge1xuICAgIGxldCBsaW5rOiBQYXJzZUxpbmtSZXN1bHQ7XG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2xpbmsnOiB7XG4gICAgICAgIGxpbmsgPSBwYXJzZUxpbmtOb2RlKG5vZGUgYXMgTGluaywgJHN0cmluZyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnd2lraUxpbmsnOiB7XG4gICAgICAgIGxpbmsgPSBwYXJzZVdpa2lsaW5rTm9kZShub2RlIGFzIFdpa2lMaW5rTm9kZSwgJHN0cmluZyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVtYmVkU3ltYm9sT2Zmc2V0cy5oYXMobGluay5zdGFydE9mZnNldCAtIDEpKSB7XG4gICAgICBsaW5rID0ge1xuICAgICAgICAuLi5saW5rLFxuICAgICAgICBpc0VtYmVkOiB0cnVlLFxuICAgICAgICByYXc6IGAhJHtsaW5rLnJhd31gLFxuICAgICAgICBzdGFydE9mZnNldDogbGluay5zdGFydE9mZnNldCAtIDFcbiAgICAgIH07XG4gICAgfVxuICAgIGxpbmtzLnB1c2gobGluayk7XG4gIH0pO1xuXG4gIGxpbmtzLnNvcnQoKGEsIGIpID0+IGEuc3RhcnRPZmZzZXQgLSBiLnN0YXJ0T2Zmc2V0KTtcblxuICBsZXQgdGV4dFN0YXJ0T2Zmc2V0ID0gMDtcblxuICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICBleHRyYWN0VGV4dExpbmtzKHtcbiAgICAgICRzdHJpbmcsXG4gICAgICBlbmRPZmZzZXQ6IGxpbmsuc3RhcnRPZmZzZXQgLSAxLFxuICAgICAgc2hvdWxkUmVjb2duaXplV3d3QXV0b2xpbmtMaXRlcmFscyxcbiAgICAgIHN0YXJ0T2Zmc2V0OiB0ZXh0U3RhcnRPZmZzZXQsXG4gICAgICB0ZXh0TGlua3NcbiAgICB9KTtcbiAgICB0ZXh0U3RhcnRPZmZzZXQgPSBsaW5rLmVuZE9mZnNldCArIDE7XG4gIH1cblxuICBleHRyYWN0VGV4dExpbmtzKHtcbiAgICAkc3RyaW5nLFxuICAgIGVuZE9mZnNldDogJHN0cmluZy5sZW5ndGggLSAxLFxuICAgIHNob3VsZFJlY29nbml6ZVd3d0F1dG9saW5rTGl0ZXJhbHMsXG4gICAgc3RhcnRPZmZzZXQ6IHRleHRTdGFydE9mZnNldCxcbiAgICB0ZXh0TGlua3NcbiAgfSk7XG5cbiAgbGlua3MucHVzaCguLi50ZXh0TGlua3MpO1xuICBsaW5rcy5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0T2Zmc2V0IC0gYi5zdGFydE9mZnNldCk7XG5cbiAgcmV0dXJuIGxpbmtzO1xufVxuXG4vKipcbiAqIFdyYXBzIGEge0BsaW5rIFBhcnNlTGlua1Jlc3VsdH0gaW50byBhIHtAbGluayBQYXJzZUxpbmtSZWZlcmVuY2V9IHNvIGl0IGNhbiBmbG93IHRocm91Z2ggdGhlXG4gKiByZWZlcmVuY2UtYmFzZWQgZmlsZS1jaGFuZ2UgcGlwZWxpbmUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB3cmFwcGluZyB0aGUgcGFyc2VkIGxpbmsuXG4gKiBAcmV0dXJucyBUaGUge0BsaW5rIFBhcnNlTGlua1JlZmVyZW5jZX0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1BhcnNlTGlua1JlZmVyZW5jZShwYXJhbXM6IFRvUGFyc2VMaW5rUmVmZXJlbmNlUGFyYW1zKTogUGFyc2VMaW5rUmVmZXJlbmNlIHtcbiAgY29uc3QgeyBjb250ZW50LCBwYXJzZUxpbmtSZXN1bHQgfSA9IHBhcmFtcztcbiAgcmV0dXJuIHtcbiAgICAuLi4ocGFyc2VMaW5rUmVzdWx0LmFsaWFzICE9PSB1bmRlZmluZWQgJiYgeyBkaXNwbGF5VGV4dDogcGFyc2VMaW5rUmVzdWx0LmFsaWFzIH0pLFxuICAgIGxpbms6IHBhcnNlTGlua1Jlc3VsdC51cmwsXG4gICAgb3JpZ2luYWw6IHBhcnNlTGlua1Jlc3VsdC5yYXcsXG4gICAgcGFyc2VMaW5rUmVzdWx0LFxuICAgIHBvc2l0aW9uOiB7XG4gICAgICBlbmQ6IG9mZnNldFRvTG9jKGNvbnRlbnQsIHBhcnNlTGlua1Jlc3VsdC5lbmRPZmZzZXQpLFxuICAgICAgc3RhcnQ6IG9mZnNldFRvTG9jKGNvbnRlbnQsIHBhcnNlTGlua1Jlc3VsdC5zdGFydE9mZnNldClcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogVW5lc2NhcGVzIHRoZSBhbGlhcyBvZiBhIG1hcmtkb3duIGxpbmsuXG4gKlxuICogQHBhcmFtIGVzY2FwZWRBbGlhcyAtIEFuIGVzY2FwZWQgYWxpYXMuXG4gKiBAcmV0dXJucyBBbiB1bmVzY2FwZWQgYWxpYXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiB1bmVzY2FwZUFsaWFzKCdcXFxcKlxcXFwqYWxpYXNcXFxcKlxcXFwqJykgLy8gJyoqYWxpYXMqKidcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5lc2NhcGVBbGlhcyhlc2NhcGVkQWxpYXM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlQWxsKHtcbiAgICAkc3RyaW5nOiBlc2NhcGVkQWxpYXMsXG4gICAgcmVwbGFjZXI6ICh7IGNhcHR1cmVkR3JvdXBBcmd1bWVudHM6IFtiYWNrc2xhc2hlcyA9ICcnLCBzcGVjaWFsQ2hhciA9ICcnXSB9KSA9PiB7XG4gICAgICBjb25zdCBFU0NBUEVEX0JBQ0tTTEFTSF9MRU5HVEggPSAyO1xuICAgICAgY29uc3QgYmFja3NsYXNoQ291bnQgPSBiYWNrc2xhc2hlcy5sZW5ndGg7XG4gICAgICBjb25zdCBrZWVwQ291bnQgPSBNYXRoLmZsb29yKGJhY2tzbGFzaENvdW50IC8gRVNDQVBFRF9CQUNLU0xBU0hfTEVOR1RIKTtcbiAgICAgIHJldHVybiAnXFxcXCcucmVwZWF0KGtlZXBDb3VudCkgKyBzcGVjaWFsQ2hhcjtcbiAgICB9LFxuICAgIHNlYXJjaFZhbHVlOiAvKD88QmFja3NsYXNoZXM+XFxcXCspKD88U3BlY2lhbENoYXJhY3Rlcj5bIVwiIyQlJicoKSorLC0uLzo7PD0+P0BbXFxcXFxcXV5fYHt8fX5dKS9nXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjb3VudE9jY3VycmVuY2VzKCRzdHJpbmc6IHN0cmluZywgY2hhcmFjdGVyOiBzdHJpbmcpOiBudW1iZXIge1xuICByZXR1cm4gJHN0cmluZy5zcGxpdChjaGFyYWN0ZXIpLmxlbmd0aCAtIDE7XG59XG5cbmZ1bmN0aW9uIGRlY29kZVVybFNhZmVseShwYXJhbXM6IERlY29kZVVybFNhZmVseVBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgaGFzQW5nbGVCcmFja2V0cywgaXNFeHRlcm5hbCwgdXJsIH0gPSBwYXJhbXM7XG4gIC8vIGBmaWxlOi8vYCBVUkxzIGFyZSBleHRlcm5hbCwgYnV0IHRoZWlyIHBlcmNlbnQtZW5jb2RpbmcgaXMgcHVyZWx5IGNvc21ldGljLCBzbyBkZWNvZGUgdGhlbSBsaWtlXG4gIC8vIGludGVybmFsIGxpbmtzLiBFdmVyeSBvdGhlciBleHRlcm5hbCBVUkwgaXMgbGVmdCB1bnRvdWNoZWQgKGl0cyBlbmNvZGluZyBtYXkgYmUgc2lnbmlmaWNhbnQpLlxuICBpZiAoKGlzRXh0ZXJuYWwgfHwgaGFzQW5nbGVCcmFja2V0cykgJiYgIWlzRmlsZVVybCh1cmwpKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh1cmwpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBkZWNvZGUgVVJMICR7dXJsfWAsIGVycm9yKTtcbiAgICByZXR1cm4gdXJsO1xuICB9XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RBbGlhcyhwYXJhbXM6IEV4dHJhY3RBbGlhc1BhcmFtcyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHsgJHN0cmluZywgYWxpYXNFbmRPZmZzZXQsIGFsaWFzU3RhcnRPZmZzZXQgfSA9IHBhcmFtcztcbiAgcmV0dXJuIGFsaWFzU3RhcnRPZmZzZXQgPCBhbGlhc0VuZE9mZnNldFxuICAgID8gJHN0cmluZy5zbGljZShhbGlhc1N0YXJ0T2Zmc2V0LCBhbGlhc0VuZE9mZnNldClcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRleHRMaW5rcyhwYXJhbXM6IEV4dHJhY3RUZXh0TGlua3NQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3QgeyAkc3RyaW5nLCBlbmRPZmZzZXQsIHNob3VsZFJlY29nbml6ZVd3d0F1dG9saW5rTGl0ZXJhbHMsIHN0YXJ0T2Zmc2V0LCB0ZXh0TGlua3MgfSA9IHBhcmFtcztcbiAgaWYgKHN0YXJ0T2Zmc2V0ID4gZW5kT2Zmc2V0KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgdGV4dFBhcnQgPSAkc3RyaW5nLnNsaWNlKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgKyAxKTtcbiAgY29uc3Qgc2NoZW1lTGlua3M6IFBhcnNlTGlua1Jlc3VsdFtdID0gW107XG4gIHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmc6IHRleHRQYXJ0LFxuICAgIHJlcGxhY2VyOiAoeyBjYXB0dXJlZEdyb3VwQXJndW1lbnRzOiBbcmF3VXJsID0gJyddLCBvZmZzZXQgfSkgPT4ge1xuICAgICAgaWYgKCFpc1VybChyYXdVcmwpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gRGVjb2RlIGJhcmUgYGZpbGU6Ly9gIFVSTHMgbGlrZSB0aGUgYnJhY2tldGVkIHBhdGggKGBwYXJzZUxpbmtOb2RlYCkgZG9lcy5cbiAgICAgIC8vIE9mZnNldHMgYW5kIGByYXdgIHN0YXkgYmFzZWQgb24gdGhlIG9yaWdpbmFsIChwb3NzaWJseSBwZXJjZW50LWVuY29kZWQpIHRleHQuXG4gICAgICBjb25zdCB1cmwgPSBkZWNvZGVVcmxTYWZlbHkoe1xuICAgICAgICBoYXNBbmdsZUJyYWNrZXRzOiBmYWxzZSxcbiAgICAgICAgaXNFeHRlcm5hbDogdHJ1ZSxcbiAgICAgICAgdXJsOiByYXdVcmxcbiAgICAgIH0pO1xuICAgICAgc2NoZW1lTGlua3MucHVzaCh7XG4gICAgICAgIGVuY29kZWRVcmw6IGVuY29kZVVybCh1cmwpLFxuICAgICAgICBlbmRPZmZzZXQ6IHN0YXJ0T2Zmc2V0ICsgb2Zmc2V0ICsgcmF3VXJsLmxlbmd0aCxcbiAgICAgICAgaGFzQW5nbGVCcmFja2V0czogZmFsc2UsXG4gICAgICAgIGlzRW1iZWQ6IGZhbHNlLFxuICAgICAgICBpc0V4dGVybmFsOiB0cnVlLFxuICAgICAgICBpc0ZpbGVVcmw6IGlzRmlsZVVybCh1cmwpLFxuICAgICAgICBpc1dpa2lsaW5rOiBmYWxzZSxcbiAgICAgICAgcmF3OiByYXdVcmwsXG4gICAgICAgIHN0YXJ0T2Zmc2V0OiBzdGFydE9mZnNldCArIG9mZnNldCxcbiAgICAgICAgdXJsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHNlYXJjaFZhbHVlOiAvKD88VXJsPlxcUyspL2dcbiAgfSk7XG4gIHRleHRMaW5rcy5wdXNoKC4uLnNjaGVtZUxpbmtzKTtcblxuICBpZiAoIXNob3VsZFJlY29nbml6ZVd3d0F1dG9saW5rTGl0ZXJhbHMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKGNvbnN0IG1hdGNoIG9mIHRleHRQYXJ0Lm1hdGNoQWxsKFdXV19BVVRPTElOS19MSVRFUkFMX0NBTkRJREFURV9SRUdfRVhQKSkge1xuICAgIGNvbnN0IGNhbmRpZGF0ZSA9IGdldE1hbmRhdG9yeU5hbWVkR3JvdXAobWF0Y2gsICdMaXRlcmFsJyk7XG4gICAgY29uc3QgbGl0ZXJhbCA9IHRyaW1Xd3dBdXRvbGlua0xpdGVyYWwoY2FuZGlkYXRlKTtcbiAgICBpZiAoIWlzVmFsaWRXd3dBdXRvbGlua0xpdGVyYWwobGl0ZXJhbCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGxpdGVyYWxTdGFydE9mZnNldCA9IHN0YXJ0T2Zmc2V0ICsgbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGggLSBjYW5kaWRhdGUubGVuZ3RoO1xuICAgIGNvbnN0IGxpdGVyYWxFbmRPZmZzZXQgPSBsaXRlcmFsU3RhcnRPZmZzZXQgKyBsaXRlcmFsLmxlbmd0aDtcbiAgICBpZiAoc2NoZW1lTGlua3Muc29tZSgobGluaykgPT4gbGluay5zdGFydE9mZnNldCA8IGxpdGVyYWxFbmRPZmZzZXQgJiYgbGl0ZXJhbFN0YXJ0T2Zmc2V0IDwgbGluay5lbmRPZmZzZXQpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNBbmdsZUJyYWNrZXRzID0gJHN0cmluZ1tsaXRlcmFsU3RhcnRPZmZzZXQgLSAxXSA9PT0gJzwnICYmICRzdHJpbmdbbGl0ZXJhbEVuZE9mZnNldF0gPT09ICc+JztcbiAgICBjb25zdCBsaW5rU3RhcnRPZmZzZXQgPSBoYXNBbmdsZUJyYWNrZXRzID8gbGl0ZXJhbFN0YXJ0T2Zmc2V0IC0gMSA6IGxpdGVyYWxTdGFydE9mZnNldDtcbiAgICBjb25zdCBsaW5rRW5kT2Zmc2V0ID0gaGFzQW5nbGVCcmFja2V0cyA/IGxpdGVyYWxFbmRPZmZzZXQgKyAxIDogbGl0ZXJhbEVuZE9mZnNldDtcbiAgICBjb25zdCB1cmwgPSBXV1dfQVVUT0xJTktfTElURVJBTF9TQ0hFTUUgKyBsaXRlcmFsO1xuICAgIHRleHRMaW5rcy5wdXNoKHtcbiAgICAgIGVuY29kZWRVcmw6IGVuY29kZVVybCh1cmwpLFxuICAgICAgZW5kT2Zmc2V0OiBsaW5rRW5kT2Zmc2V0LFxuICAgICAgaGFzQW5nbGVCcmFja2V0cyxcbiAgICAgIGlzRW1iZWQ6IGZhbHNlLFxuICAgICAgaXNFeHRlcm5hbDogdHJ1ZSxcbiAgICAgIGlzRmlsZVVybDogZmFsc2UsXG4gICAgICBpc1dpa2lsaW5rOiBmYWxzZSxcbiAgICAgIHJhdzogJHN0cmluZy5zbGljZShsaW5rU3RhcnRPZmZzZXQsIGxpbmtFbmRPZmZzZXQpLFxuICAgICAgc3RhcnRPZmZzZXQ6IGxpbmtTdGFydE9mZnNldCxcbiAgICAgIHVybFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFJhd0xpbmsobm9kZTogTm9kZSwgJHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcG9zID0gZW5zdXJlTm9uTnVsbGFibGUobm9kZS5wb3NpdGlvbik7XG4gIHJldHVybiAkc3RyaW5nLnNsaWNlKHBvcy5zdGFydC5vZmZzZXQsIHBvcy5lbmQub2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gaGFzQW5nbGVCcmFja2V0c0luTGluayhwYXJhbXM6IEhhc0FuZ2xlQnJhY2tldHNJbkxpbmtQYXJhbXMpOiBib29sZWFuIHtcbiAgY29uc3QgeyByYXcsIHJhd1VybCB9ID0gcGFyYW1zO1xuICBjb25zdCBPUEVOX0FOR0xFX0JSQUNLRVQgPSAnPCc7XG4gIHJldHVybiByYXcuc3RhcnRzV2l0aChPUEVOX0FOR0xFX0JSQUNLRVQpIHx8IHJhd1VybC5zdGFydHNXaXRoKE9QRU5fQU5HTEVfQlJBQ0tFVCk7XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRXd3dBdXRvbGlua0xpdGVyYWwobGl0ZXJhbDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGRvbWFpbiA9IFdXV19BVVRPTElOS19MSVRFUkFMX0RPTUFJTl9SRUdfRVhQLmV4ZWMobGl0ZXJhbCk/LlswXTtcbiAgaWYgKGRvbWFpbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gR0ZNOiBubyB1bmRlcnNjb3JlIGluIHRoZSBsYXN0IHR3byBzZWdtZW50cyBvZiB0aGUgZG9tYWluLlxuICBjb25zdCBMQVNUX1NFR01FTlRTX0NPVU5UID0gMjtcbiAgcmV0dXJuIGRvbWFpbi5zcGxpdCgnLicpLnNsaWNlKC1MQVNUX1NFR01FTlRTX0NPVU5UKS5ldmVyeSgoc2VnbWVudCkgPT4gIXNlZ21lbnQuaW5jbHVkZXMoJ18nKSk7XG59XG5cbmZ1bmN0aW9uIG9mZnNldFRvTG9jKGNvbnRlbnQ6IHN0cmluZywgb2Zmc2V0OiBudW1iZXIpOiBMb2Mge1xuICBjb25zdCBwcmVjZWRpbmdDb250ZW50ID0gY29udGVudC5zbGljZSgwLCBvZmZzZXQpO1xuICBjb25zdCBsaW5lID0gKHByZWNlZGluZ0NvbnRlbnQubWF0Y2goL1xcbi9nKSA/PyBbXSkubGVuZ3RoO1xuICBjb25zdCBsYXN0TmV3bGluZU9mZnNldCA9IHByZWNlZGluZ0NvbnRlbnQubGFzdEluZGV4T2YoJ1xcbicpO1xuICByZXR1cm4ge1xuICAgIGNvbDogb2Zmc2V0IC0gKGxhc3ROZXdsaW5lT2Zmc2V0ICsgMSksXG4gICAgbGluZSxcbiAgICBvZmZzZXRcbiAgfTtcbn1cblxuZnVuY3Rpb24gcGFyc2VMaW5rTm9kZShub2RlOiBMaW5rLCAkc3RyaW5nOiBzdHJpbmcpOiBQYXJzZUxpbmtSZXN1bHQge1xuICBjb25zdCBMSU5LX0FMSUFTX1NVRkZJWCA9ICddKCc7XG4gIGNvbnN0IExJTktfU1VGRklYID0gJyknO1xuICBjb25zdCByYXcgPSBnZXRSYXdMaW5rKG5vZGUsICRzdHJpbmcpO1xuICBjb25zdCBwb3NpdGlvbiA9IGVuc3VyZU5vbk51bGxhYmxlKG5vZGUucG9zaXRpb24pO1xuICBjb25zdCBub2RlRW5kT2Zmc2V0ID0gZW5zdXJlTm9uTnVsbGFibGUocG9zaXRpb24uZW5kLm9mZnNldCk7XG4gIGNvbnN0IG5vZGVTdGFydE9mZnNldCA9IGVuc3VyZU5vbk51bGxhYmxlKHBvc2l0aW9uLnN0YXJ0Lm9mZnNldCk7XG4gIC8vIEFuIGVtcHR5IGxhYmVsIChgW10oLi4uKWApIGhhcyBubyBjaGlsZHJlbiwgc28gaXQgc3RhcnRzIGFuZCBlbmRzIGp1c3QgYWZ0ZXIgdGhlIG5vZGUncyBvd24gYFtgLiBBbiBlbWJlZCdzIGAhYCBpcyBvdXRzaWRlIHRoZSBub2RlLCBzaW5jZSBgcGFyc2VMaW5rc2AgbWFza3MgaXQgYmVmb3JlIHBhcnNpbmcuXG4gIGNvbnN0IGVtcHR5QWxpYXNPZmZzZXQgPSBub2RlU3RhcnRPZmZzZXQgKyAxO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9iZXR0ZXItZG9tLXRyYXZlcnNpbmcgLS0gYG5vZGVgIGlzIGFuIG1kYXN0IG5vZGUsIG5vdCBhIERPTSBub2RlLiBJdCBoYXMgbm8gYGZpcnN0RWxlbWVudENoaWxkYDsgdGhlIHJ1bGUgbWF0Y2hlcyB0aGUgYC5jaGlsZHJlblswXWAgc2hhcGUgd2l0aG91dCBjaGVja2luZyB3aGF0IGl0IGlzIG9uLlxuICBjb25zdCBhbGlhc05vZGVTdGFydE9mZnNldCA9IG5vZGUuY2hpbGRyZW5bMF0/LnBvc2l0aW9uPy5zdGFydC5vZmZzZXQgPz8gZW1wdHlBbGlhc09mZnNldDtcbiAgY29uc3QgYWxpYXNOb2RlRW5kT2Zmc2V0ID0gbm9kZS5jaGlsZHJlbi5hdCgtMSk/LnBvc2l0aW9uPy5lbmQub2Zmc2V0ID8/IGVtcHR5QWxpYXNPZmZzZXQ7XG4gIGNvbnN0IHJhd1VybCA9ICRzdHJpbmcuc2xpY2UoYWxpYXNOb2RlRW5kT2Zmc2V0ICsgTElOS19BTElBU19TVUZGSVgubGVuZ3RoLCBub2RlRW5kT2Zmc2V0IC0gTElOS19TVUZGSVgubGVuZ3RoKTtcbiAgY29uc3QgaGFzQW5nbGVCcmFja2V0cyA9IGhhc0FuZ2xlQnJhY2tldHNJbkxpbmsoe1xuICAgIHJhdyxcbiAgICByYXdVcmxcbiAgfSk7XG4gIGNvbnN0IGlzRXh0ZXJuYWwgPSBpc1VybChub2RlLnVybCk7XG4gIGNvbnN0IHVybCA9IGRlY29kZVVybFNhZmVseSh7XG4gICAgaGFzQW5nbGVCcmFja2V0cyxcbiAgICBpc0V4dGVybmFsLFxuICAgIHVybDogbm9kZS51cmxcbiAgfSk7XG4gIGNvbnN0IGFsaWFzID0gZXh0cmFjdEFsaWFzKHtcbiAgICAkc3RyaW5nLFxuICAgIGFsaWFzRW5kT2Zmc2V0OiBhbGlhc05vZGVFbmRPZmZzZXQsXG4gICAgYWxpYXNTdGFydE9mZnNldDogYWxpYXNOb2RlU3RhcnRPZmZzZXRcbiAgfSk7XG4gIHJldHVybiBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8UGFyc2VMaW5rUmVzdWx0Pih7XG4gICAgYWxpYXMsXG4gICAgZW5jb2RlZFVybDogaXNFeHRlcm5hbCA/IGVuY29kZVVybCh1cmwpIDogdW5kZWZpbmVkLFxuICAgIGVuZE9mZnNldDogbm9kZUVuZE9mZnNldCxcbiAgICBoYXNBbmdsZUJyYWNrZXRzLFxuICAgIGlzRW1iZWQ6IGZhbHNlLFxuICAgIGlzRXh0ZXJuYWwsXG4gICAgaXNGaWxlVXJsOiBpc0ZpbGVVcmwodXJsKSxcbiAgICBpc1dpa2lsaW5rOiBmYWxzZSxcbiAgICByYXcsXG4gICAgc3RhcnRPZmZzZXQ6IG5vZGVTdGFydE9mZnNldCxcbiAgICB0aXRsZTogbm9kZS50aXRsZSA/PyB1bmRlZmluZWQsXG4gICAgdW5lc2NhcGVkQWxpYXM6IGFsaWFzID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB1bmVzY2FwZUFsaWFzKGFsaWFzKSxcbiAgICB1cmxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlV2lraWxpbmtOb2RlKG5vZGU6IFdpa2lMaW5rTm9kZSwgJHN0cmluZzogc3RyaW5nKTogUGFyc2VMaW5rUmVzdWx0IHtcbiAgY29uc3QgcG9zaXRpb24gPSBlbnN1cmVOb25OdWxsYWJsZShub2RlLnBvc2l0aW9uKTtcbiAgcmV0dXJuIG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxQYXJzZUxpbmtSZXN1bHQ+KHtcbiAgICBhbGlhczogJHN0cmluZy5pbmNsdWRlcyhXSUtJTElOS19ESVZJREVSKSA/IG5vZGUuZGF0YS5hbGlhcyA6IHVuZGVmaW5lZCxcbiAgICBlbmRPZmZzZXQ6IGVuc3VyZU5vbk51bGxhYmxlKHBvc2l0aW9uLmVuZC5vZmZzZXQpLFxuICAgIGlzRW1iZWQ6IGZhbHNlLFxuICAgIGlzRXh0ZXJuYWw6IGZhbHNlLFxuICAgIGlzRmlsZVVybDogZmFsc2UsXG4gICAgaXNXaWtpbGluazogdHJ1ZSxcbiAgICByYXc6IGdldFJhd0xpbmsobm9kZSwgJHN0cmluZyksXG4gICAgc3RhcnRPZmZzZXQ6IGVuc3VyZU5vbk51bGxhYmxlKHBvc2l0aW9uLnN0YXJ0Lm9mZnNldCksXG4gICAgdXJsOiBub2RlLnZhbHVlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiB0cmltV3d3QXV0b2xpbmtMaXRlcmFsKGxpdGVyYWw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHRyaW1tZWQgPSB0cmltV3d3QXV0b2xpbmtMaXRlcmFsRW5kKGxpdGVyYWwpO1xuICByZXR1cm4gdHJpbW1lZCA9PT0gbGl0ZXJhbCA/IGxpdGVyYWwgOiB0cmltV3d3QXV0b2xpbmtMaXRlcmFsKHRyaW1tZWQpO1xufVxuXG5mdW5jdGlvbiB0cmltV3d3QXV0b2xpbmtMaXRlcmFsRW5kKGxpdGVyYWw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGxhc3RDaGFyYWN0ZXIgPSBsaXRlcmFsLnNsaWNlKC0xKTtcbiAgaWYgKFdXV19BVVRPTElOS19MSVRFUkFMX1RSQUlMSU5HX1BVTkNUVUFUSU9OLmhhcyhsYXN0Q2hhcmFjdGVyKSkge1xuICAgIHJldHVybiBsaXRlcmFsLnNsaWNlKDAsIC0xKTtcbiAgfVxuXG4gIC8vIEdGTTogYSBjbG9zaW5nIHBhcmVudGhlc2lzIHdpdGggbm8gb3BlbmluZyBvbmUgdG8gbWF0Y2ggaXMgbm90IHBhcnQgb2YgdGhlIGxpdGVyYWwuXG4gIHJldHVybiBsYXN0Q2hhcmFjdGVyID09PSAnKScgJiYgY291bnRPY2N1cnJlbmNlcyhsaXRlcmFsLCAnKScpID4gY291bnRPY2N1cnJlbmNlcyhsaXRlcmFsLCAnKCcpXG4gICAgPyBsaXRlcmFsLnNsaWNlKDAsIC0xKVxuICAgIDogbGl0ZXJhbC5yZXBsYWNlKFRSQUlMSU5HX0VOVElUWV9SRUZFUkVOQ0VfUkVHX0VYUCwgJycpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSxTQUFTLG1DQUFtQztBQUM1QyxTQUFTLDhCQUE4QjtBQUN2QyxTQUFTLGtCQUFrQjtBQUMzQixTQUFTLHlCQUF5QjtBQUNsQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLDhCQUE4QjtBQUN2QyxTQUFTLGNBQWM7QUFDdkIsT0FBTyxpQkFBaUI7QUFDeEIsU0FBUyxzQkFBc0I7QUFDL0IsU0FBUyxhQUFhO0FBS3RCLE1BQU0sc0NBQXNDO0FBRTVDLE1BQU0sbUJBQW1CO0FBYXpCLE1BQU0seUNBQXlDO0FBTS9DLE1BQU0sc0NBQXNDO0FBSzVDLE1BQU0sNENBQTRDLG9CQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEdBQUcsQ0FBQztBQUtsRyxNQUFNLG9DQUFvQztBQUsxQyxNQUFNLDhCQUE4QjtBQTBWcEMsTUFBTSx1QkFBdUI7QUFBQSxFQUNWLDJCQUE0RCxDQUFDO0FBQUEsRUFDN0QscUNBQWlGLENBQUM7QUFBQSxFQUNsRiw2QkFBeUUsQ0FBQztBQUFBLEVBRXBGLE1BQU0sYUFBbUQ7QUFDOUQsU0FBSyxXQUFXLGFBQWEsRUFBRTtBQUMvQixXQUFPO0FBQUEsTUFDTCwwQkFBMEIsS0FBSztBQUFBLE1BQy9CLG9DQUFvQyxLQUFLO0FBQUEsTUFDekMsNEJBQTRCLEtBQUs7QUFBQSxJQUNuQztBQUFBLEVBQ0Y7QUFBQSxFQUVRLFdBQVcsUUFBK0M7QUFDaEUsVUFBTSxFQUFFLGNBQWMsS0FBSyxpQkFBaUIsTUFBTSxJQUFJO0FBQ3RELFFBQUksQ0FBQyxnQkFBZ0IsY0FBYyxjQUFj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
428
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3BhcnNlLWxpbmsudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMgZm9yIHBhcnNpbmcgbWFya2Rvd24gYW5kIHdpa2kgbGlua3MgaW50byBzdHJ1Y3R1cmVkIGRhdGEsIGFuZCBmb3JcbiAqIGVzY2FwaW5nLCB1bmVzY2FwaW5nLCBhbmQgZW5jb2RpbmcgbGluayBjb21wb25lbnRzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgdHlwZSB7IExpbmsgfSBmcm9tICdtZGFzdCc7XG5pbXBvcnQgdHlwZSB7XG4gIEZyb250bWF0dGVyTGlua0NhY2hlLFxuICBMb2MsXG4gIFJlZmVyZW5jZSxcbiAgUmVmZXJlbmNlQ2FjaGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBOb2RlIH0gZnJvbSAndW5pc3QnO1xuXG5pbXBvcnQgeyBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvb2JqZWN0LXV0aWxzJztcbmltcG9ydCB7IGdldE1hbmRhdG9yeU5hbWVkR3JvdXAgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcmVnLWV4cCc7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0cmluZyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQge1xuICBlbmNvZGVVcmwsXG4gIGlzRmlsZVVybCxcbiAgaXNVcmxcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3VybCc7XG5pbXBvcnQgeyBpc0Zyb250bWF0dGVyTGlua0NhY2hlIH0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdC9pbXBsZW1lbnRhdGlvbnMnO1xuaW1wb3J0IHsgcmVtYXJrIH0gZnJvbSAncmVtYXJrJztcbmltcG9ydCByZW1hcmtQYXJzZSBmcm9tICdyZW1hcmstcGFyc2UnO1xuaW1wb3J0IHsgd2lraUxpbmtQbHVnaW4gfSBmcm9tICdyZW1hcmstd2lraS1saW5rJztcbmltcG9ydCB7IHZpc2l0IH0gZnJvbSAndW5pc3QtdXRpbC12aXNpdCc7XG5cbi8qKlxuICogUmVndWxhciBleHByZXNzaW9uIGZvciBzcGVjaWFsIG1hcmtkb3duIGxpbmsgc3ltYm9scy5cbiAqL1xuY29uc3QgU1BFQ0lBTF9NQVJLRE9XTl9MSU5LX1NZTUJPTFNfUkVHRVggPSAvW1xcXFxbXFxdPD5fKn49YCRdL2c7XG5cbmNvbnN0IFdJS0lMSU5LX0RJVklERVIgPSAnfCc7XG5cbi8qKlxuICogTWF0Y2hlcyBhIGNhbmRpZGF0ZSBHRk0gZXh0ZW5kZWQgYHd3dy5gIGF1dG9saW5rIGxpdGVyYWw6IGB3d3cuYCBhdCB0aGUgc3RhcnQgb2YgdGhlIHRleHQgb3IgYWZ0ZXJcbiAqIHdoaXRlc3BhY2UsIGAqYCwgYF9gLCBgfmAsIGAoYCBvciBgPGAsIHJ1bm5pbmcgdXAgdG8gdGhlIG5leHQgd2hpdGVzcGFjZSwgYDxgIG9yIGA+YC4gR0ZNIGl0c2VsZlxuICoga2VlcHMgYSBjbG9zaW5nIGA+YCBpbiB0aGUgbGl0ZXJhbCAoT2JzaWRpYW4gcmVuZGVycyBgPHd3dy5leGFtcGxlLmNvbT5gIHdpdGggYW4gaHJlZiBlbmRpbmcgaW5cbiAqIGAlM0VgKTsgc3RvcHBpbmcgYmVmb3JlIGl0IGlzIGRlbGliZXJhdGUsIHNvIHRoZSBicmFja2V0cyBjYW4gYmUgcmVwb3J0ZWQgYXJvdW5kIHRoZSBsaXRlcmFsIGluc3RlYWQuXG4gKlxuICogVGhlIHByZWNlZGluZyBjaGFyYWN0ZXIgaXMgY29uc3VtZWQgYW5kIHRoZSBsaXRlcmFsIGNhcHR1cmVkIGFzIGBMaXRlcmFsYCwgYmVjYXVzZSBhIGxvb2tiZWhpbmQgaXMgYVxuICogc3ludGF4IGVycm9yIG9uIGlPUyBiZWZvcmUgMTYuNCwgYmVsb3cgdGhlIGlPUyAxNSBPYnNpZGlhbiBtb2JpbGUgc3RpbGwgc3VwcG9ydHMuIENvbnN1bWluZyBpdCBsb3NlcyBub1xuICogY2FuZGlkYXRlOiBhIG1hdGNoIGVuZHMgYmVmb3JlIHdoaXRlc3BhY2UsIGA8YCwgYD5gIG9yIHRoZSBlbmQsIHNvIHRoZSBjaGFyYWN0ZXIgYSBmb2xsb3dpbmcgY2FuZGlkYXRlXG4gKiBuZWVkcyBpcyBuZXZlciBwYXJ0IG9mIHRoZSBwcmV2aW91cyBtYXRjaC5cbiAqL1xuY29uc3QgV1dXX0FVVE9MSU5LX0xJVEVSQUxfQ0FORElEQVRFX1JFR19FWFAgPSAvKD86XnxbXFxzKCo8X35dKSg/PExpdGVyYWw+d3d3XFwuW15cXHM8Pl0qKS9nO1xuXG4vKipcbiAqIE1hdGNoZXMgdGhlIGRvbWFpbiBvZiBhIEdGTSBleHRlbmRlZCBgd3d3LmAgYXV0b2xpbmsgbGl0ZXJhbDogc2VnbWVudHMgb2YgbGV0dGVycywgZGlnaXRzLFxuICogdW5kZXJzY29yZXMgYW5kIGh5cGhlbnMgc2VwYXJhdGVkIGJ5IHBlcmlvZHMuXG4gKi9cbmNvbnN0IFdXV19BVVRPTElOS19MSVRFUkFMX0RPTUFJTl9SRUdfRVhQID0gL153d3coPzpcXC5bXFxwe0x9XFxwe059Xy1dKykrL3U7XG5cbi8qKlxuICogVGhlIGNoYXJhY3RlcnMgR0ZNIGRyb3BzIGZyb20gdGhlIGVuZCBvZiBhbiBleHRlbmRlZCBhdXRvbGluay5cbiAqL1xuY29uc3QgV1dXX0FVVE9MSU5LX0xJVEVSQUxfVFJBSUxJTkdfUFVOQ1RVQVRJT04gPSBuZXcgU2V0KFsnXycsICcsJywgJzonLCAnIScsICc/JywgJy4nLCAnKicsICd+J10pO1xuXG4vKipcbiAqIE1hdGNoZXMgYW4gZW50aXR5IHJlZmVyZW5jZSBhdCB0aGUgZW5kIG9mIGFuIGV4dGVuZGVkIGF1dG9saW5rLCB3aGljaCBHRk0gZHJvcHMuXG4gKi9cbmNvbnN0IFRSQUlMSU5HX0VOVElUWV9SRUZFUkVOQ0VfUkVHX0VYUCA9IC8mW1xcZEEtWmEtel0rOyQvO1xuXG4vKipcbiAqIFRoZSBzY2hlbWUgT2JzaWRpYW4gb3BlbnMgYSBHRk0gZXh0ZW5kZWQgYHd3dy5gIGF1dG9saW5rIGxpdGVyYWwgd2l0aC5cbiAqL1xuY29uc3QgV1dXX0FVVE9MSU5LX0xJVEVSQUxfU0NIRU1FID0gJ2h0dHA6Ly8nO1xuXG4vKipcbiAqIFRoZSByZXN1bHQgb2YgcGFyc2luZyB0aGUgbGlua3MgZnJvbSBhIG5vdGUncyBmcm9udG1hdHRlciB2aWEge0BsaW5rIHBhcnNlRnJvbnRtYXR0ZXJMaW5rc30uIEludGVybmFsXG4gKiBzaW5nbGUtbGluayBmcm9udG1hdHRlciB2YWx1ZXMgYXJlIG9taXR0ZWQsIGFzIE9ic2lkaWFuIG5hdGl2ZWx5IGNhY2hlcyB0aGVtLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlRnJvbnRtYXR0ZXJMaW5rc1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBUaGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gc2luZ2xlLWxpbmsgKHNpbmdsZS12YWx1ZSkgZnJvbnRtYXR0ZXIgdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzOiBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgZXh0ZXJuYWwgbGlua3MgcGFyc2VkIGZyb20gbXVsdGktbGluayAobXVsdGktdmFsdWUpIGZyb250bWF0dGVyIHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IG11bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3M6IFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlV2l0aE9mZnNldHNbXTtcblxuICAvKipcbiAgICogVGhlIGludGVybmFsIGxpbmtzIHBhcnNlZCBmcm9tIG11bHRpLWxpbmsgKG11bHRpLXZhbHVlKSBmcm9udG1hdHRlciB2YWx1ZXMuXG4gICAqL1xuICByZWFkb25seSBtdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rczogUGFyc2VMaW5rRnJvbnRtYXR0ZXJSZWZlcmVuY2VXaXRoT2Zmc2V0c1tdO1xufVxuXG4vKipcbiAqIEEge0BsaW5rIEZyb250bWF0dGVyTGlua0NhY2hlfSBmb3IgYSBsaW5rIHBhcnNlZCBmcm9tIGEgc2luZ2xlLWxpbmsgZnJvbnRtYXR0ZXIgdmFsdWUgdmlhXG4gKiB7QGxpbmsgcGFyc2VMaW5rc30uIEl0IGNhcnJpZXMgdGhlIGZ1bGwge0BsaW5rIFBhcnNlTGlua1Jlc3VsdH0gc28gY29uc3VtZXJzIGNhbiBpbnNwZWN0IHRoZSBwYXJzZVxuICogZGV0YWlscyB3aXRob3V0IHJlLXBhcnNpbmcgdGhlIGxpbmsuIFVzZSB0aGlzIHdoZW4gdGhlIHdob2xlIGZyb250bWF0dGVyIHZhbHVlIGlzIGEgc2luZ2xlIGxpbmsuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VMaW5rRnJvbnRtYXR0ZXJSZWZlcmVuY2UgZXh0ZW5kcyBGcm9udG1hdHRlckxpbmtDYWNoZSB7XG4gIC8qKlxuICAgKiBUaGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIGxpbmsuXG4gICAqL1xuICByZWFkb25seSBwYXJzZUxpbmtSZXN1bHQ6IFBhcnNlTGlua1Jlc3VsdDtcbn1cblxuLyoqXG4gKiBBIHtAbGluayBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZX0gZm9yIGEgbGluayBwYXJzZWQgZnJvbSBhIG11bHRpLWxpbmsgZnJvbnRtYXR0ZXIgdmFsdWUgdmlhXG4gKiB7QGxpbmsgcGFyc2VMaW5rc30sIGFkZGl0aW9uYWxseSBjYXJyeWluZyB0aGUgb2Zmc2V0cyBvZiB0aGUgbGluayB3aXRoaW4gdGhlIGZyb250bWF0dGVyIHZhbHVlLiBVc2VcbiAqIHRoaXMgd2hlbiB0aGUgZnJvbnRtYXR0ZXIgdmFsdWUgaG9sZHMgbXVsdGlwbGUgbGlua3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VMaW5rRnJvbnRtYXR0ZXJSZWZlcmVuY2VXaXRoT2Zmc2V0cyBleHRlbmRzIFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlIHtcbiAgLyoqXG4gICAqIEFuIGVuZCBvZmZzZXQgb2YgdGhlIGxpbmsgaW4gdGhlIGZyb250bWF0dGVyIHZhbHVlLlxuICAgKi9cbiAgZW5kT2Zmc2V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgc3RhcnQgb2Zmc2V0IG9mIHRoZSBsaW5rIGluIHRoZSBmcm9udG1hdHRlciB2YWx1ZS5cbiAgICovXG4gIHN0YXJ0T2Zmc2V0OiBudW1iZXI7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHBhcnNlTGlua30uIFRoZSBzYW1lIGFzIHtAbGluayBQYXJzZUxpbmtzT3B0aW9uc30uXG4gKi9cbmV4cG9ydCB0eXBlIFBhcnNlTGlua09wdGlvbnMgPSBQYXJzZUxpbmtzT3B0aW9ucztcblxuLyoqXG4gKiBBIHtAbGluayBSZWZlcmVuY2VDYWNoZX0gZm9yIGEgbGluayBwYXJzZWQgZnJvbSBjb250ZW50IHZpYSB7QGxpbmsgcGFyc2VMaW5rc30uIEl0IGNhcnJpZXMgdGhlIGZ1bGxcbiAqIHtAbGluayBQYXJzZUxpbmtSZXN1bHR9IHNvIGNvbnN1bWVycyBjYW4gaW5zcGVjdCB0aGUgcGFyc2UgZGV0YWlscyB3aXRob3V0IHJlLXBhcnNpbmcgdGhlIGxpbmsuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VMaW5rUmVmZXJlbmNlIGV4dGVuZHMgUmVmZXJlbmNlQ2FjaGUge1xuICAvKipcbiAgICogVGhlIHJlc3VsdCBvZiBwYXJzaW5nIHRoZSBsaW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyc2VMaW5rUmVzdWx0OiBQYXJzZUxpbmtSZXN1bHQ7XG59XG5cbi8qKlxuICogQSByZXN1bHQgb2YgcGFyc2luZyBhIGxpbmsuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VMaW5rUmVzdWx0IHtcbiAgLyoqXG4gICAqIEFuIGFsaWFzIG9mIHRoZSBsaW5rLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBcbiAgICogW1xcKmFsaWFzXFwqXShsaW5rLm1kKSAtPiBcXCphbGlhc1xcKlxuICAgKiBgYGBcbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBlbmNvZGVkIFVSTCBvZiB0aGUgbGluay5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgXG4gICAqIFthbGlhc10oPGxpbmsgd2l0aCBzcGFjZS5tZD4pIC0+IGxpbmslMjB3aXRoJTIwc3BhY2UubWRcbiAgICogYGBgXG4gICAqL1xuICByZWFkb25seSBlbmNvZGVkVXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBlbmQgb2Zmc2V0IG9mIHRoZSBsaW5rIGluIHRoZSBvcmlnaW5hbCB0ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kT2Zmc2V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGluayBoYXMgYW5nbGUgYnJhY2tldHMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYFxuICAgKiBbYWxpYXNdKDxsaW5rLm1kPikgLT4gdHJ1ZVxuICAgKiBbYWxpYXNdKGxpbmsubWQpIC0+IGZhbHNlXG4gICAqIGBgYFxuICAgKi9cbiAgcmVhZG9ubHkgaGFzQW5nbGVCcmFja2V0cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGluayBpcyBhbiBlbWJlZCBsaW5rLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBcbiAgICogIVtbYWxpYXNdXSAtPiB0cnVlXG4gICAqIFtbYWxpYXNdXSAtPiBmYWxzZVxuICAgKiBgYGBcbiAgICovXG4gIHJlYWRvbmx5IGlzRW1iZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGluayBpcyBleHRlcm5hbC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgXG4gICAqIFthbGlhc10oaHR0cHM6Ly9leGFtcGxlLmNvbSkgLT4gdHJ1ZVxuICAgKiBbYWxpYXNdKGZpbGUubWQpIC0+IGZhbHNlXG4gICAqIGBgYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNFeHRlcm5hbDogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIHRoZSBsaW5rIGlzIGEgYGZpbGU6Ly9gIFVSTC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgXG4gICAqIFthbGlhc10oZmlsZTovLy9DOi94LnR4dCkgLT4gdHJ1ZVxuICAgKiBbYWxpYXNdKGh0dHBzOi8vZXhhbXBsZS5jb20pIC0+IGZhbHNlXG4gICAqIGBgYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNGaWxlVXJsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGxpbmsgaXMgYSB3aWtpbGluay5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgXG4gICAqIFtbYWxpYXNdXSAtPiB0cnVlXG4gICAqIFthbGlhc10obGluay5tZCkgLT4gZmFsc2VcbiAgICogYGBgXG4gICAqL1xuICByZWFkb25seSBpc1dpa2lsaW5rOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIHJhdyBsaW5rIHRleHQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYFxuICAgKiBbYWxpYXNdKGxpbmsubWQpIC0+IFthbGlhc10obGluay5tZClcbiAgICogYGBgXG4gICAqL1xuICByZWFkb25seSByYXc6IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdGFydCBvZmZzZXQgb2YgdGhlIGxpbmsgaW4gdGhlIG9yaWdpbmFsIHRleHQuXG4gICAqL1xuICByZWFkb25seSBzdGFydE9mZnNldDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHRpdGxlIG9mIHRoZSBsaW5rLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBcbiAgICogW2FsaWFzXShsaW5rLm1kIFwidGl0bGVcIikgLT4gdGl0bGVcbiAgICogYGBgXG4gICAqL1xuICByZWFkb25seSB0aXRsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQW4gdW5lc2NhcGVkIGFsaWFzIG9mIHRoZSBsaW5rLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBcbiAgICogW1xcKmFsaWFzXFwqXShsaW5rLm1kKSAtPiAqYWxpYXMqXG4gICAqIGBgYFxuICAgKi9cbiAgcmVhZG9ubHkgdW5lc2NhcGVkQWxpYXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIFVSTCBvZiB0aGUgbGluay5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgXG4gICAqIFthbGlhc10obGluayUyMHdpdGglMjBzcGFjZS5tZCkgLT4gbGluayB3aXRoIHNwYWNlLm1kXG4gICAqIGBgYFxuICAgKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHBhcnNlTGlua3N9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlTGlua3NPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVjb2duaXplIEdGTSBleHRlbmRlZCBgd3d3LmAgYXV0b2xpbmsgbGl0ZXJhbHMgKGB3d3cuZXhhbXBsZS5jb21gLCBhbHNvIGluc2lkZVxuICAgKiBgPC4uLj5gKSBhcyBleHRlcm5hbCBsaW5rcywgYXMgT2JzaWRpYW4gZG9lcyBpbiBhIG5vdGUncyBib2R5LiBPYnNpZGlhbiBkb2VzIG5vdCBsaW5rIHRoZW0gaW5cbiAgICogZnJvbnRtYXR0ZXIgdmFsdWVzLCBzbyB7QGxpbmsgcGFyc2VGcm9udG1hdHRlckxpbmtzfSB0dXJucyB0aGlzIG9mZi5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmVjb2duaXplV3d3QXV0b2xpbmtMaXRlcmFscz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1zIGZvciB7QGxpbmsgdG9QYXJzZUxpbmtSZWZlcmVuY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvUGFyc2VMaW5rUmVmZXJlbmNlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IHRoZSBwYXJzZWQgbGluaydzIG9mZnNldHMgaW5kZXggaW50by4gVXNlZCB0byBjb21wdXRlIHRoZSBsaW5lIGFuZCBjb2x1bW4uXG4gICAqL1xuICByZWFkb25seSBjb250ZW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJzZWQgbGluayB0byB3cmFwLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyc2VMaW5rUmVzdWx0OiBQYXJzZUxpbmtSZXN1bHQ7XG59XG5cbi8qKlxuICogUGFyYW1zIGZvciB7QGxpbmsgRnJvbnRtYXR0ZXJMaW5rc1BhcnNlci5jYXRlZ29yaXplfS5cbiAqL1xuaW50ZXJmYWNlIENhdGVnb3JpemVGcm9udG1hdHRlckxpbmtQYXJhbXMge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgd2hvbGUgZnJvbnRtYXR0ZXIgdmFsdWUgaXMgYSBzaW5nbGUgbGluay5cbiAgICovXG4gIHJlYWRvbmx5IGlzU2luZ2xlTGluazogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGtleSBwYXRoIG9mIHRoZSBmcm9udG1hdHRlciB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyc2VkIGxpbmsuXG4gICAqL1xuICByZWFkb25seSBwYXJzZUxpbmtSZXN1bHQ6IFBhcnNlTGlua1Jlc3VsdDtcblxuICAvKipcbiAgICogVGhlIGZyb250bWF0dGVyIHZhbHVlIHRoZSBsaW5rIHdhcyBwYXJzZWQgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1zIGZvciB7QGxpbmsgZGVjb2RlVXJsU2FmZWx5fS5cbiAqL1xuaW50ZXJmYWNlIERlY29kZVVybFNhZmVseVBhcmFtcyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBsaW5rIHVzZXMgYW5nbGUgYnJhY2tldHMuXG4gICAqL1xuICByZWFkb25seSBoYXNBbmdsZUJyYWNrZXRzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBsaW5rIGlzIGV4dGVybmFsLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNFeHRlcm5hbDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBVUkwgdG8gZGVjb2RlLlxuICAgKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1zIGZvciB7QGxpbmsgZXh0cmFjdEFsaWFzfS5cbiAqL1xuaW50ZXJmYWNlIEV4dHJhY3RBbGlhc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBBIHN0cmluZyB0byBleHRyYWN0IHRoZSBhbGlhcyBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgJHN0cmluZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBlbmQgb2Zmc2V0IG9mIHRoZSBhbGlhcyBpbiB0aGUgc3RyaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNFbmRPZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQSBzdGFydCBvZmZzZXQgb2YgdGhlIGFsaWFzIGluIHRoZSBzdHJpbmcuXG4gICAqL1xuICByZWFkb25seSBhbGlhc1N0YXJ0T2Zmc2V0OiBudW1iZXI7XG59XG5cbi8qKlxuICogUGFyYW1zIGZvciB7QGxpbmsgZXh0cmFjdFRleHRMaW5rc30uXG4gKi9cbmludGVyZmFjZSBFeHRyYWN0VGV4dExpbmtzUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEgc3RyaW5nIHRvIGV4dHJhY3QgdGhlIHRleHQgbGlua3MgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5ICRzdHJpbmc6IHN0cmluZztcblxuICAvKipcbiAgICogQW4gZW5kIG9mZnNldCBvZiB0aGUgdGV4dCBwYXJ0IGluIHRoZSBzdHJpbmcuXG4gICAqL1xuICByZWFkb25seSBlbmRPZmZzZXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZWNvZ25pemUgR0ZNIGV4dGVuZGVkIGB3d3cuYCBhdXRvbGluayBsaXRlcmFscy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFJlY29nbml6ZVd3d0F1dG9saW5rTGl0ZXJhbHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgc3RhcnQgb2Zmc2V0IG9mIHRoZSB0ZXh0IHBhcnQgaW4gdGhlIHN0cmluZy5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0T2Zmc2V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBwYXJzZWQgbGlua3MgdG8gYXBwZW5kIHRoZSBleHRyYWN0ZWQgdGV4dCBsaW5rcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IHRleHRMaW5rczogUGFyc2VMaW5rUmVzdWx0W107XG59XG5cbi8qKlxuICogUGFyYW1zIGZvciB7QGxpbmsgaGFzQW5nbGVCcmFja2V0c0luTGlua30uXG4gKi9cbmludGVyZmFjZSBIYXNBbmdsZUJyYWNrZXRzSW5MaW5rUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEgcmF3IGxpbmsgdGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IHJhdzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHJhdyBVUkwgb2YgdGhlIGxpbmsuXG4gICAqL1xuICByZWFkb25seSByYXdVcmw6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFdpa2lMaW5rTm9kZSBleHRlbmRzIE5vZGUge1xuICBkYXRhOiBXaWtpTGlua05vZGVEYXRhO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgV2lraUxpbmtOb2RlRGF0YSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgYWxpYXM6IHN0cmluZztcbn1cblxuY2xhc3MgRnJvbnRtYXR0ZXJMaW5rc1BhcnNlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzOiBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZVtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgbXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rczogUGFyc2VMaW5rRnJvbnRtYXR0ZXJSZWZlcmVuY2VXaXRoT2Zmc2V0c1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgbXVsdGlWYWx1ZUZyb250bWF0dGVyTGlua3M6IFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlV2l0aE9mZnNldHNbXSA9IFtdO1xuXG4gIHB1YmxpYyBwYXJzZShmcm9udG1hdHRlcjogdW5rbm93bik6IFBhcnNlRnJvbnRtYXR0ZXJMaW5rc1Jlc3VsdCB7XG4gICAgdGhpcy5wYXJzZVZhbHVlKGZyb250bWF0dGVyLCAnJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZyb250bWF0dGVyRXh0ZXJuYWxMaW5rczogdGhpcy5mcm9udG1hdHRlckV4dGVybmFsTGlua3MsXG4gICAgICBtdWx0aVZhbHVlRnJvbnRtYXR0ZXJFeHRlcm5hbExpbmtzOiB0aGlzLm11bHRpVmFsdWVGcm9udG1hdHRlckV4dGVybmFsTGlua3MsXG4gICAgICBtdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rczogdGhpcy5tdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rc1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNhdGVnb3JpemUocGFyYW1zOiBDYXRlZ29yaXplRnJvbnRtYXR0ZXJMaW5rUGFyYW1zKTogdm9pZCB7XG4gICAgY29uc3QgeyBpc1NpbmdsZUxpbmssIGtleSwgcGFyc2VMaW5rUmVzdWx0LCB2YWx1ZSB9ID0gcGFyYW1zO1xuICAgIGlmICghcGFyc2VMaW5rUmVzdWx0LmlzRXh0ZXJuYWwgJiYgaXNTaW5nbGVMaW5rKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVmZXJlbmNlOiBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZSA9IHtcbiAgICAgIGRpc3BsYXlUZXh0OiBwYXJzZUxpbmtSZXN1bHQuYWxpYXMgPz8gcGFyc2VMaW5rUmVzdWx0LnVybCxcbiAgICAgIGtleSxcbiAgICAgIGxpbms6IHBhcnNlTGlua1Jlc3VsdC51cmwsXG4gICAgICBvcmlnaW5hbDogdmFsdWUsXG4gICAgICBwYXJzZUxpbmtSZXN1bHRcbiAgICB9O1xuXG4gICAgaWYgKGlzU2luZ2xlTGluaykge1xuICAgICAgdGhpcy5mcm9udG1hdHRlckV4dGVybmFsTGlua3MucHVzaChyZWZlcmVuY2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlZmVyZW5jZVdpdGhPZmZzZXRzOiBQYXJzZUxpbmtGcm9udG1hdHRlclJlZmVyZW5jZVdpdGhPZmZzZXRzID0ge1xuICAgICAgLi4ucmVmZXJlbmNlLFxuICAgICAgZW5kT2Zmc2V0OiBwYXJzZUxpbmtSZXN1bHQuZW5kT2Zmc2V0LFxuICAgICAgc3RhcnRPZmZzZXQ6IHBhcnNlTGlua1Jlc3VsdC5zdGFydE9mZnNldFxuICAgIH07XG5cbiAgICBpZiAocGFyc2VMaW5rUmVzdWx0LmlzRXh0ZXJuYWwpIHtcbiAgICAgIHRoaXMubXVsdGlWYWx1ZUZyb250bWF0dGVyRXh0ZXJuYWxMaW5rcy5wdXNoKHJlZmVyZW5jZVdpdGhPZmZzZXRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tdWx0aVZhbHVlRnJvbnRtYXR0ZXJMaW5rcy5wdXNoKHJlZmVyZW5jZVdpdGhPZmZzZXRzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlVmFsdWUodmFsdWU6IHVua25vd24sIGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIE9ic2lkaWFuIGxpbmtzIGEgc2NoZW1lLWxlc3MgYHd3dy5gIGxpdGVyYWwgaW4gdGhlIGJvZHkgb25seSwgbmV2ZXIgaW4gYSBmcm9udG1hdHRlciB2YWx1ZS5cbiAgICAgIGNvbnN0IHBhcnNlTGlua1Jlc3VsdHMgPSBwYXJzZUxpbmtzKHZhbHVlLCB7IHNob3VsZFJlY29nbml6ZVd3d0F1dG9saW5rTGl0ZXJhbHM6IGZhbHNlIH0pO1xuICAgICAgY29uc3QgaXNTaW5nbGVMaW5rID0gcGFyc2VMaW5rUmVzdWx0c1swXT8ucmF3ID09PSB2YWx1ZTtcbiAgICAgIGZvciAoY29uc3QgcGFyc2VMaW5rUmVzdWx0IG9mIHBhcnNlTGlua1Jlc3VsdHMpIHtcbiAgICAgICAgdGhpcy5jYXRlZ29yaXplKHsgaXNTaW5nbGVMaW5rLCBrZXksIHBhcnNlTGlua1Jlc3VsdCwgdmFsdWUgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtjaGlsZEtleSwgY2hpbGRWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUgYXMgR2VuZXJpY09iamVjdCkpIHtcbiAgICAgIHRoaXMucGFyc2VWYWx1ZShjaGlsZFZhbHVlLCBrZXkgPyBgJHtrZXl9LiR7Y2hpbGRLZXl9YCA6IGNoaWxkS2V5KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBFc2NhcGVzIHRoZSBhbGlhcyBvZiBhIG1hcmtkb3duIGxpbmsuXG4gKlxuICogQHBhcmFtIGFsaWFzIC0gQW4gYWxpYXMgb2YgYSBtYXJrZG93biBsaW5rLlxuICogQHJldHVybnMgQW4gZXNjYXBlZCBhbGlhcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGVzY2FwZUFsaWFzKCcqKmFsaWFzKionKSAvLyAnXFxcXCpcXFxcKmFsaWFzXFxcXCpcXFxcKidcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlQWxpYXMoYWxpYXM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlQWxsKHtcbiAgICAkc3RyaW5nOiBhbGlhcyxcbiAgICByZXBsYWNlcjogU3RyaW5nLnJhd2BcXCQmYCxcbiAgICBzZWFyY2hWYWx1ZTogU1BFQ0lBTF9NQVJLRE9XTl9MSU5LX1NZTUJPTFNfUkVHRVhcbiAgfSk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgcmVmZXJlbmNlIGlzIGEge0BsaW5rIFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlfS5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlIC0gVGhlIHJlZmVyZW5jZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcmVmZXJlbmNlIGlzIGEge0BsaW5rIFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlfSwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1BhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlKHJlZmVyZW5jZTogUmVmZXJlbmNlKTogcmVmZXJlbmNlIGlzIFBhcnNlTGlua0Zyb250bWF0dGVyUmVmZXJlbmNlIHtcbiAgcmV0dXJuIGlzRnJvbnRtYXR0ZXJMaW5rQ2FjaGUocmVmZXJlbmNlKSAmJiAncGFyc2VMaW5rUmVzdWx0JyBpbiByZWZlcmVuY2U7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgcmVmZXJlbmNlIGlzIGEge0BsaW5rIFBhcnNlTGlua1JlZmVyZW5jZX0uXG4gKlxuICogQHBhcmFtIHJlZmVyZW5jZSAtIFRoZSByZWZlcmVuY2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHJlZmVyZW5jZSBpcyBhIHtAbGluayBQYXJzZUxpbmtSZWZlcmVuY2V9LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGFyc2VMaW5rUmVmZXJlbmNlKHJlZmVyZW5jZTogUmVmZXJlbmNlKTogcmVmZXJlbmNlIGlzIFBhcnNlTGlua1JlZmVyZW5jZSB7XG4gIHJldHVybiAncGFyc2VMaW5rUmVzdWx0JyBpbiByZWZlcmVuY2U7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBsaW5rcyBmcm9tIGEgbm90ZSdzIGZyb250bWF0dGVyLiBFYWNoIHN0cmluZyB2YWx1ZSBpcyBwYXJzZWQgdmlhIHtAbGluayBwYXJzZUxpbmtzfTogYSB2YWx1ZVxuICogdGhhdCBpcyBhIHNpbmdsZSBsaW5rIHlpZWxkcyBhbiBlbnRyeSB3aXRob3V0IG9mZnNldHMsIGFuZCBhIHZhbHVlIHRoYXQgaG9sZHMgbXVsdGlwbGUgbGlua3MgeWllbGRzXG4gKiBvZmZzZXQtY2FycnlpbmcgZW50cmllcy4gSW50ZXJuYWwgc2luZ2xlLWxpbmsgdmFsdWVzIGFyZSBvbWl0dGVkLCBhcyBPYnNpZGlhbiBuYXRpdmVseSBjYWNoZXMgdGhlbS5cbiAqXG4gKiBAcGFyYW0gZnJvbnRtYXR0ZXIgLSBUaGUgZnJvbnRtYXR0ZXIgdG8gcGFyc2UgKGEgdmFsdWUsIG9iamVjdCwgb3IgYXJyYXkpLlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBmcm9udG1hdHRlciBsaW5rcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRnJvbnRtYXR0ZXJMaW5rcyhmcm9udG1hdHRlcjogdW5rbm93bik6IFBhcnNlRnJvbnRtYXR0ZXJMaW5rc1Jlc3VsdCB7XG4gIHJldHVybiBuZXcgRnJvbnRtYXR0ZXJMaW5rc1BhcnNlcigpLnBhcnNlKGZyb250bWF0dGVyKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSBsaW5rIGludG8gaXRzIGNvbXBvbmVudHMuXG4gKlxuICogQHBhcmFtICRzdHJpbmcgLSBUaGUgbGluayB0byBwYXJzZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcnNlIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGxpbmsuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpbmsoJHN0cmluZzogc3RyaW5nLCBvcHRpb25zPzogUGFyc2VMaW5rT3B0aW9ucyk6IG51bGwgfCBQYXJzZUxpbmtSZXN1bHQge1xuICBjb25zdCBsaW5rcyA9IHBhcnNlTGlua3MoJHN0cmluZywgb3B0aW9ucyk7XG4gIHJldHVybiBsaW5rc1swXT8ucmF3ID09PSAkc3RyaW5nID8gbGlua3NbMF0gOiBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlcyBhbGwgbGlua3MgaW4gYSBzdHJpbmcuXG4gKlxuICogQmVzaWRlcyBtYXJrZG93biBsaW5rcywgd2lraWxpbmtzIGFuZCBhdXRvbGlua3MsIHRoZSBwbGFpbiB0ZXh0IGJldHdlZW4gdGhlbSBpcyBzY2FubmVkIGZvciBiYXJlXG4gKiBVUkxzIHdpdGggYSBzY2hlbWUgKGBodHRwczovL2V4YW1wbGUuY29tYCkgYW5kLCB1bmxlc3MgdHVybmVkIG9mZiB0aHJvdWdoXG4gKiB7QGxpbmsgUGFyc2VMaW5rc09wdGlvbnMuc2hvdWxkUmVjb2duaXplV3d3QXV0b2xpbmtMaXRlcmFsc30sIGZvciBHRk0gZXh0ZW5kZWQgYHd3dy5gIGF1dG9saW5rXG4gKiBsaXRlcmFscyAoYHd3dy5leGFtcGxlLmNvbWApLiBTdWNoIGEgbGl0ZXJhbCBpcyByZXBvcnRlZCBhcyBhbiBleHRlcm5hbCBsaW5rIHdob3NlIGB1cmxgIGNhcnJpZXMgdGhlXG4gKiBgaHR0cDovL2Agc2NoZW1lIE9ic2lkaWFuIG9wZW5zIGl0IHdpdGgsIHNvIGEgbGluayByZWJ1aWx0IGZyb20gaXQgc3RheXMgZXh0ZXJuYWw6IGEgc2NoZW1lLWxlc3NcbiAqIGBbYWxpYXNdKHd3dy5leGFtcGxlLmNvbSlgIGlzIGFuIGludGVybmFsIGxpbmsgaW4gT2JzaWRpYW4uIEEgbGl0ZXJhbCB3cmFwcGVkIGluIGA8Li4uPmAgcmVwb3J0cyB0aGVcbiAqIGJyYWNrZXRzIGFzIHBhcnQgb2YgYHJhd2AsIHNvIHJlcGxhY2luZyBgcmF3YCBsZWF2ZXMgbm8gc3RyYXkgYnJhY2tldCBiZWhpbmQuXG4gKlxuICogQHBhcmFtICRzdHJpbmcgLSBUaGUgc3RyaW5nIHRvIHBhcnNlIHRoZSBsaW5rcyBpbi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcnNlIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGxpbmtzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VMaW5rcygkc3RyaW5nOiBzdHJpbmcsIG9wdGlvbnM/OiBQYXJzZUxpbmtzT3B0aW9ucyk6IFBhcnNlTGlua1Jlc3VsdFtdIHtcbiAgY29uc3Qgc2hvdWxkUmVjb2duaXplV3d3QXV0b2xpbmtMaXRlcmFscyA9IG9wdGlvbnM/LnNob3VsZFJlY29nbml6ZVd3d0F1dG9saW5rTGl0ZXJhbHMgPz8gdHJ1ZTtcbiAgY29uc3QgZW1iZWRTeW1ib2xPZmZzZXRzID0gbmV3IFNldDxudW1iZXI+KCk7XG5cbiAgY29uc3QgRU1CRURfTElOS19QUkVGSVggPSAnIVsnO1xuICBjb25zdCBOT19FTUJFRF9MSU5LX1BSRUZJWCA9ICdAWyc7XG4gIGNvbnN0IERVTU1ZX0NIQVJBQ1RFUiA9ICdAJztcblxuICBjb25zdCBFTUJFRF9JTlNJREVfTElOS19SRUdfRVhQID0gL1xcWyg/PExpbmtBbGlhcz4hXFxbLio/XFxdXFwoLis/XFwpKVxcXVxcKCg/PExpbms+Lis/KVxcKS9nO1xuICBjb25zdCBub0luc2lkZUVtYmVkc0xpbmtzU3RyaW5nID0gcmVwbGFjZUFsbCh7XG4gICAgJHN0cmluZyxcbiAgICByZXBsYWNlcjogKHsgY2FwdHVyZWRHcm91cEFyZ3VtZW50czogW2xpbmtBbGlhcyA9ICcnLCBsaW5rID0gJyddIH0pID0+IHtcbiAgICAgIGNvbnN0IGR1bW15QWxpYXMgPSBEVU1NWV9DSEFSQUNURVIucmVwZWF0KGxpbmtBbGlhcy5sZW5ndGgpO1xuICAgICAgcmV0dXJuIGBbJHtkdW1teUFsaWFzfV0oJHtsaW5rfSlgO1xuICAgIH0sXG4gICAgc2VhcmNoVmFsdWU6IEVNQkVEX0lOU0lERV9MSU5LX1JFR19FWFBcbiAgfSk7XG5cbiAgY29uc3Qgbm9FbWJlZFN0cmluZyA9IHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmc6IG5vSW5zaWRlRW1iZWRzTGlua3NTdHJpbmcsXG4gICAgcmVwbGFjZXI6ICgkYXJndW1lbnRzKSA9PiB7XG4gICAgICBlbWJlZFN5bWJvbE9mZnNldHMuYWRkKCRhcmd1bWVudHMub2Zmc2V0KTtcbiAgICAgIHJldHVybiBOT19FTUJFRF9MSU5LX1BSRUZJWDtcbiAgICB9LFxuICAgIHNlYXJjaFZhbHVlOiBFTUJFRF9MSU5LX1BSRUZJWFxuICB9KTtcblxuICBjb25zdCBwcm9jZXNzb3IgPSByZW1hcmsoKS51c2UocmVtYXJrUGFyc2UpLnVzZSh3aWtpTGlua1BsdWdpbiwgeyBhbGlhc0RpdmlkZXI6IFdJS0lMSU5LX0RJVklERVIgfSk7XG4gIGNvbnN0IHJvb3QgPSBwcm9jZXNzb3IucGFyc2Uobm9FbWJlZFN0cmluZyk7XG5cbiAgY29uc3QgbGlua3M6IFBhcnNlTGlua1Jlc3VsdFtdID0gW107XG4gIGNvbnN0IHRleHRMaW5rczogUGFyc2VMaW5rUmVzdWx0W10gPSBbXTtcblxuICB2aXNpdChyb290LCAobm9kZTogTm9kZSkgPT4ge1xuICAgIGxldCBsaW5rOiBQYXJzZUxpbmtSZXN1bHQ7XG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2xpbmsnOiB7XG4gICAgICAgIGxpbmsgPSBwYXJzZUxpbmtOb2RlKG5vZGUgYXMgTGluaywgJHN0cmluZyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnd2lraUxpbmsnOiB7XG4gICAgICAgIGxpbmsgPSBwYXJzZVdpa2lsaW5rTm9kZShub2RlIGFzIFdpa2lMaW5rTm9kZSwgJHN0cmluZyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVtYmVkU3ltYm9sT2Zmc2V0cy5oYXMobGluay5zdGFydE9mZnNldCAtIDEpKSB7XG4gICAgICBsaW5rID0ge1xuICAgICAgICAuLi5saW5rLFxuICAgICAgICBpc0VtYmVkOiB0cnVlLFxuICAgICAgICByYXc6IGAhJHtsaW5rLnJhd31gLFxuICAgICAgICBzdGFydE9mZnNldDogbGluay5zdGFydE9mZnNldCAtIDFcbiAgICAgIH07XG4gICAgfVxuICAgIGxpbmtzLnB1c2gobGluayk7XG4gIH0pO1xuXG4gIGxpbmtzLnNvcnQoKGEsIGIpID0+IGEuc3RhcnRPZmZzZXQgLSBiLnN0YXJ0T2Zmc2V0KTtcblxuICBsZXQgdGV4dFN0YXJ0T2Zmc2V0ID0gMDtcblxuICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICBleHRyYWN0VGV4dExpbmtzKHtcbiAgICAgICRzdHJpbmcsXG4gICAgICBlbmRPZmZzZXQ6IGxpbmsuc3RhcnRPZmZzZXQgLSAxLFxuICAgICAgc2hvdWxkUmVjb2duaXplV3d3QXV0b2xpbmtMaXRlcmFscyxcbiAgICAgIHN0YXJ0T2Zmc2V0OiB0ZXh0U3RhcnRPZmZzZXQsXG4gICAgICB0ZXh0TGlua3NcbiAgICB9KTtcbiAgICB0ZXh0U3RhcnRPZmZzZXQgPSBsaW5rLmVuZE9mZnNldCArIDE7XG4gIH1cblxuICBleHRyYWN0VGV4dExpbmtzKHtcbiAgICAkc3RyaW5nLFxuICAgIGVuZE9mZnNldDogJHN0cmluZy5sZW5ndGggLSAxLFxuICAgIHNob3VsZFJlY29nbml6ZVd3d0F1dG9saW5rTGl0ZXJhbHMsXG4gICAgc3RhcnRPZmZzZXQ6IHRleHRTdGFydE9mZnNldCxcbiAgICB0ZXh0TGlua3NcbiAgfSk7XG5cbiAgbGlua3MucHVzaCguLi50ZXh0TGlua3MpO1xuICBsaW5rcy5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0T2Zmc2V0IC0gYi5zdGFydE9mZnNldCk7XG5cbiAgcmV0dXJuIGxpbmtzO1xufVxuXG4vKipcbiAqIFdyYXBzIGEge0BsaW5rIFBhcnNlTGlua1Jlc3VsdH0gaW50byBhIHtAbGluayBQYXJzZUxpbmtSZWZlcmVuY2V9IHNvIGl0IGNhbiBmbG93IHRocm91Z2ggdGhlXG4gKiByZWZlcmVuY2UtYmFzZWQgZmlsZS1jaGFuZ2UgcGlwZWxpbmUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB3cmFwcGluZyB0aGUgcGFyc2VkIGxpbmsuXG4gKiBAcmV0dXJucyBUaGUge0BsaW5rIFBhcnNlTGlua1JlZmVyZW5jZX0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1BhcnNlTGlua1JlZmVyZW5jZShwYXJhbXM6IFRvUGFyc2VMaW5rUmVmZXJlbmNlUGFyYW1zKTogUGFyc2VMaW5rUmVmZXJlbmNlIHtcbiAgY29uc3QgeyBjb250ZW50LCBwYXJzZUxpbmtSZXN1bHQgfSA9IHBhcmFtcztcbiAgcmV0dXJuIHtcbiAgICAuLi4ocGFyc2VMaW5rUmVzdWx0LmFsaWFzICE9PSB1bmRlZmluZWQgJiYgeyBkaXNwbGF5VGV4dDogcGFyc2VMaW5rUmVzdWx0LmFsaWFzIH0pLFxuICAgIGxpbms6IHBhcnNlTGlua1Jlc3VsdC51cmwsXG4gICAgb3JpZ2luYWw6IHBhcnNlTGlua1Jlc3VsdC5yYXcsXG4gICAgcGFyc2VMaW5rUmVzdWx0LFxuICAgIHBvc2l0aW9uOiB7XG4gICAgICBlbmQ6IG9mZnNldFRvTG9jKGNvbnRlbnQsIHBhcnNlTGlua1Jlc3VsdC5lbmRPZmZzZXQpLFxuICAgICAgc3RhcnQ6IG9mZnNldFRvTG9jKGNvbnRlbnQsIHBhcnNlTGlua1Jlc3VsdC5zdGFydE9mZnNldClcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogVW5lc2NhcGVzIHRoZSBhbGlhcyBvZiBhIG1hcmtkb3duIGxpbmsuXG4gKlxuICogQHBhcmFtIGVzY2FwZWRBbGlhcyAtIEFuIGVzY2FwZWQgYWxpYXMuXG4gKiBAcmV0dXJucyBBbiB1bmVzY2FwZWQgYWxpYXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiB1bmVzY2FwZUFsaWFzKCdcXFxcKlxcXFwqYWxpYXNcXFxcKlxcXFwqJykgLy8gJyoqYWxpYXMqKidcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5lc2NhcGVBbGlhcyhlc2NhcGVkQWxpYXM6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlQWxsKHtcbiAgICAkc3RyaW5nOiBlc2NhcGVkQWxpYXMsXG4gICAgcmVwbGFjZXI6ICh7IGNhcHR1cmVkR3JvdXBBcmd1bWVudHM6IFtiYWNrc2xhc2hlcyA9ICcnLCBzcGVjaWFsQ2hhciA9ICcnXSB9KSA9PiB7XG4gICAgICBjb25zdCBFU0NBUEVEX0JBQ0tTTEFTSF9MRU5HVEggPSAyO1xuICAgICAgY29uc3QgYmFja3NsYXNoQ291bnQgPSBiYWNrc2xhc2hlcy5sZW5ndGg7XG4gICAgICBjb25zdCBrZWVwQ291bnQgPSBNYXRoLmZsb29yKGJhY2tzbGFzaENvdW50IC8gRVNDQVBFRF9CQUNLU0xBU0hfTEVOR1RIKTtcbiAgICAgIHJldHVybiAnXFxcXCcucmVwZWF0KGtlZXBDb3VudCkgKyBzcGVjaWFsQ2hhcjtcbiAgICB9LFxuICAgIHNlYXJjaFZhbHVlOiAvKD88QmFja3NsYXNoZXM+XFxcXCspKD88U3BlY2lhbENoYXJhY3Rlcj5bIVwiIyQlJicoKSorLC0uLzo7PD0+P0BbXFxcXFxcXV5fYHt8fX5dKS9nXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjb3VudE9jY3VycmVuY2VzKCRzdHJpbmc6IHN0cmluZywgY2hhcmFjdGVyOiBzdHJpbmcpOiBudW1iZXIge1xuICByZXR1cm4gJHN0cmluZy5zcGxpdChjaGFyYWN0ZXIpLmxlbmd0aCAtIDE7XG59XG5cbmZ1bmN0aW9uIGRlY29kZVVybFNhZmVseShwYXJhbXM6IERlY29kZVVybFNhZmVseVBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgaGFzQW5nbGVCcmFja2V0cywgaXNFeHRlcm5hbCwgdXJsIH0gPSBwYXJhbXM7XG4gIC8vIGBmaWxlOi8vYCBVUkxzIGFyZSBleHRlcm5hbCwgYnV0IHRoZWlyIHBlcmNlbnQtZW5jb2RpbmcgaXMgcHVyZWx5IGNvc21ldGljLCBzbyBkZWNvZGUgdGhlbSBsaWtlXG4gIC8vIGludGVybmFsIGxpbmtzLiBFdmVyeSBvdGhlciBleHRlcm5hbCBVUkwgaXMgbGVmdCB1bnRvdWNoZWQgKGl0cyBlbmNvZGluZyBtYXkgYmUgc2lnbmlmaWNhbnQpLlxuICBpZiAoKGlzRXh0ZXJuYWwgfHwgaGFzQW5nbGVCcmFja2V0cykgJiYgIWlzRmlsZVVybCh1cmwpKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh1cmwpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBkZWNvZGUgVVJMICR7dXJsfWAsIGVycm9yKTtcbiAgICByZXR1cm4gdXJsO1xuICB9XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RBbGlhcyhwYXJhbXM6IEV4dHJhY3RBbGlhc1BhcmFtcyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHsgJHN0cmluZywgYWxpYXNFbmRPZmZzZXQsIGFsaWFzU3RhcnRPZmZzZXQgfSA9IHBhcmFtcztcbiAgcmV0dXJuIGFsaWFzU3RhcnRPZmZzZXQgPCBhbGlhc0VuZE9mZnNldFxuICAgID8gJHN0cmluZy5zbGljZShhbGlhc1N0YXJ0T2Zmc2V0LCBhbGlhc0VuZE9mZnNldClcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRleHRMaW5rcyhwYXJhbXM6IEV4dHJhY3RUZXh0TGlua3NQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3QgeyAkc3RyaW5nLCBlbmRPZmZzZXQsIHNob3VsZFJlY29nbml6ZVd3d0F1dG9saW5rTGl0ZXJhbHMsIHN0YXJ0T2Zmc2V0LCB0ZXh0TGlua3MgfSA9IHBhcmFtcztcbiAgaWYgKHN0YXJ0T2Zmc2V0ID4gZW5kT2Zmc2V0KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgdGV4dFBhcnQgPSAkc3RyaW5nLnNsaWNlKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgKyAxKTtcbiAgY29uc3Qgc2NoZW1lTGlua3M6IFBhcnNlTGlua1Jlc3VsdFtdID0gW107XG4gIHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmc6IHRleHRQYXJ0LFxuICAgIHJlcGxhY2VyOiAoeyBjYXB0dXJlZEdyb3VwQXJndW1lbnRzOiBbcmF3VXJsID0gJyddLCBvZmZzZXQgfSkgPT4ge1xuICAgICAgaWYgKCFpc1VybChyYXdVcmwpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gRGVjb2RlIGJhcmUgYGZpbGU6Ly9gIFVSTHMgbGlrZSB0aGUgYnJhY2tldGVkIHBhdGggKGBwYXJzZUxpbmtOb2RlYCkgZG9lcy5cbiAgICAgIC8vIE9mZnNldHMgYW5kIGByYXdgIHN0YXkgYmFzZWQgb24gdGhlIG9yaWdpbmFsIChwb3NzaWJseSBwZXJjZW50LWVuY29kZWQpIHRleHQuXG4gICAgICBjb25zdCB1cmwgPSBkZWNvZGVVcmxTYWZlbHkoe1xuICAgICAgICBoYXNBbmdsZUJyYWNrZXRzOiBmYWxzZSxcbiAgICAgICAgaXNFeHRlcm5hbDogdHJ1ZSxcbiAgICAgICAgdXJsOiByYXdVcmxcbiAgICAgIH0pO1xuICAgICAgc2NoZW1lTGlua3MucHVzaCh7XG4gICAgICAgIGVuY29kZWRVcmw6IGVuY29kZVVybCh1cmwpLFxuICAgICAgICBlbmRPZmZzZXQ6IHN0YXJ0T2Zmc2V0ICsgb2Zmc2V0ICsgcmF3VXJsLmxlbmd0aCxcbiAgICAgICAgaGFzQW5nbGVCcmFja2V0czogZmFsc2UsXG4gICAgICAgIGlzRW1iZWQ6IGZhbHNlLFxuICAgICAgICBpc0V4dGVybmFsOiB0cnVlLFxuICAgICAgICBpc0ZpbGVVcmw6IGlzRmlsZVVybCh1cmwpLFxuICAgICAgICBpc1dpa2lsaW5rOiBmYWxzZSxcbiAgICAgICAgcmF3OiByYXdVcmwsXG4gICAgICAgIHN0YXJ0T2Zmc2V0OiBzdGFydE9mZnNldCArIG9mZnNldCxcbiAgICAgICAgdXJsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHNlYXJjaFZhbHVlOiAvKD88VXJsPlxcUyspL2dcbiAgfSk7XG4gIHRleHRMaW5rcy5wdXNoKC4uLnNjaGVtZUxpbmtzKTtcblxuICBpZiAoIXNob3VsZFJlY29nbml6ZVd3d0F1dG9saW5rTGl0ZXJhbHMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKGNvbnN0IG1hdGNoIG9mIHRleHRQYXJ0Lm1hdGNoQWxsKFdXV19BVVRPTElOS19MSVRFUkFMX0NBTkRJREFURV9SRUdfRVhQKSkge1xuICAgIGNvbnN0IGNhbmRpZGF0ZSA9IGdldE1hbmRhdG9yeU5hbWVkR3JvdXAobWF0Y2gsICdMaXRlcmFsJyk7XG4gICAgY29uc3QgbGl0ZXJhbCA9IHRyaW1Xd3dBdXRvbGlua0xpdGVyYWwoY2FuZGlkYXRlKTtcbiAgICBpZiAoIWlzVmFsaWRXd3dBdXRvbGlua0xpdGVyYWwobGl0ZXJhbCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGxpdGVyYWxTdGFydE9mZnNldCA9IHN0YXJ0T2Zmc2V0ICsgbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGggLSBjYW5kaWRhdGUubGVuZ3RoO1xuICAgIGNvbnN0IGxpdGVyYWxFbmRPZmZzZXQgPSBsaXRlcmFsU3RhcnRPZmZzZXQgKyBsaXRlcmFsLmxlbmd0aDtcbiAgICBpZiAoc2NoZW1lTGlua3Muc29tZSgobGluaykgPT4gbGluay5zdGFydE9mZnNldCA8IGxpdGVyYWxFbmRPZmZzZXQgJiYgbGl0ZXJhbFN0YXJ0T2Zmc2V0IDwgbGluay5lbmRPZmZzZXQpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNBbmdsZUJyYWNrZXRzID0gJHN0cmluZ1tsaXRlcmFsU3RhcnRPZmZzZXQgLSAxXSA9PT0gJzwnICYmICRzdHJpbmdbbGl0ZXJhbEVuZE9mZnNldF0gPT09ICc+JztcbiAgICBjb25zdCBsaW5rU3RhcnRPZmZzZXQgPSBoYXNBbmdsZUJyYWNrZXRzID8gbGl0ZXJhbFN0YXJ0T2Zmc2V0IC0gMSA6IGxpdGVyYWxTdGFydE9mZnNldDtcbiAgICBjb25zdCBsaW5rRW5kT2Zmc2V0ID0gaGFzQW5nbGVCcmFja2V0cyA/IGxpdGVyYWxFbmRPZmZzZXQgKyAxIDogbGl0ZXJhbEVuZE9mZnNldDtcbiAgICBjb25zdCB1cmwgPSBXV1dfQVVUT0xJTktfTElURVJBTF9TQ0hFTUUgKyBsaXRlcmFsO1xuICAgIHRleHRMaW5rcy5wdXNoKHtcbiAgICAgIGVuY29kZWRVcmw6IGVuY29kZVVybCh1cmwpLFxuICAgICAgZW5kT2Zmc2V0OiBsaW5rRW5kT2Zmc2V0LFxuICAgICAgaGFzQW5nbGVCcmFja2V0cyxcbiAgICAgIGlzRW1iZWQ6IGZhbHNlLFxuICAgICAgaXNFeHRlcm5hbDogdHJ1ZSxcbiAgICAgIGlzRmlsZVVybDogZmFsc2UsXG4gICAgICBpc1dpa2lsaW5rOiBmYWxzZSxcbiAgICAgIHJhdzogJHN0cmluZy5zbGljZShsaW5rU3RhcnRPZmZzZXQsIGxpbmtFbmRPZmZzZXQpLFxuICAgICAgc3RhcnRPZmZzZXQ6IGxpbmtTdGFydE9mZnNldCxcbiAgICAgIHVybFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFJhd0xpbmsobm9kZTogTm9kZSwgJHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcG9zID0gZW5zdXJlTm9uTnVsbGFibGUobm9kZS5wb3NpdGlvbik7XG4gIHJldHVybiAkc3RyaW5nLnNsaWNlKHBvcy5zdGFydC5vZmZzZXQsIHBvcy5lbmQub2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gaGFzQW5nbGVCcmFja2V0c0luTGluayhwYXJhbXM6IEhhc0FuZ2xlQnJhY2tldHNJbkxpbmtQYXJhbXMpOiBib29sZWFuIHtcbiAgY29uc3QgeyByYXcsIHJhd1VybCB9ID0gcGFyYW1zO1xuICBjb25zdCBPUEVOX0FOR0xFX0JSQUNLRVQgPSAnPCc7XG4gIHJldHVybiByYXcuc3RhcnRzV2l0aChPUEVOX0FOR0xFX0JSQUNLRVQpIHx8IHJhd1VybC5zdGFydHNXaXRoKE9QRU5fQU5HTEVfQlJBQ0tFVCk7XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRXd3dBdXRvbGlua0xpdGVyYWwobGl0ZXJhbDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGRvbWFpbiA9IFdXV19BVVRPTElOS19MSVRFUkFMX0RPTUFJTl9SRUdfRVhQLmV4ZWMobGl0ZXJhbCk/LlswXTtcbiAgaWYgKGRvbWFpbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gR0ZNOiBubyB1bmRlcnNjb3JlIGluIHRoZSBsYXN0IHR3byBzZWdtZW50cyBvZiB0aGUgZG9tYWluLlxuICBjb25zdCBMQVNUX1NFR01FTlRTX0NPVU5UID0gMjtcbiAgcmV0dXJuIGRvbWFpbi5zcGxpdCgnLicpLnNsaWNlKC1MQVNUX1NFR01FTlRTX0NPVU5UKS5ldmVyeSgoc2VnbWVudCkgPT4gIXNlZ21lbnQuaW5jbHVkZXMoJ18nKSk7XG59XG5cbmZ1bmN0aW9uIG9mZnNldFRvTG9jKGNvbnRlbnQ6IHN0cmluZywgb2Zmc2V0OiBudW1iZXIpOiBMb2Mge1xuICBjb25zdCBwcmVjZWRpbmdDb250ZW50ID0gY29udGVudC5zbGljZSgwLCBvZmZzZXQpO1xuICBjb25zdCBsaW5lID0gKHByZWNlZGluZ0NvbnRlbnQubWF0Y2goL1xcbi9nKSA/PyBbXSkubGVuZ3RoO1xuICBjb25zdCBsYXN0TmV3bGluZU9mZnNldCA9IHByZWNlZGluZ0NvbnRlbnQubGFzdEluZGV4T2YoJ1xcbicpO1xuICByZXR1cm4ge1xuICAgIGNvbDogb2Zmc2V0IC0gKGxhc3ROZXdsaW5lT2Zmc2V0ICsgMSksXG4gICAgbGluZSxcbiAgICBvZmZzZXRcbiAgfTtcbn1cblxuZnVuY3Rpb24gcGFyc2VMaW5rTm9kZShub2RlOiBMaW5rLCAkc3RyaW5nOiBzdHJpbmcpOiBQYXJzZUxpbmtSZXN1bHQge1xuICBjb25zdCBMSU5LX0FMSUFTX1NVRkZJWCA9ICddKCc7XG4gIGNvbnN0IExJTktfU1VGRklYID0gJyknO1xuICBjb25zdCByYXcgPSBnZXRSYXdMaW5rKG5vZGUsICRzdHJpbmcpO1xuICBjb25zdCBwb3NpdGlvbiA9IGVuc3VyZU5vbk51bGxhYmxlKG5vZGUucG9zaXRpb24pO1xuICBjb25zdCBub2RlRW5kT2Zmc2V0ID0gZW5zdXJlTm9uTnVsbGFibGUocG9zaXRpb24uZW5kLm9mZnNldCk7XG4gIGNvbnN0IG5vZGVTdGFydE9mZnNldCA9IGVuc3VyZU5vbk51bGxhYmxlKHBvc2l0aW9uLnN0YXJ0Lm9mZnNldCk7XG4gIC8vIEFuIGVtcHR5IGxhYmVsIChgW10oLi4uKWApIGhhcyBubyBjaGlsZHJlbiwgc28gaXQgc3RhcnRzIGFuZCBlbmRzIGp1c3QgYWZ0ZXIgdGhlIG5vZGUncyBvd24gYFtgLiBBbiBlbWJlZCdzIGAhYCBpcyBvdXRzaWRlIHRoZSBub2RlLCBzaW5jZSBgcGFyc2VMaW5rc2AgbWFza3MgaXQgYmVmb3JlIHBhcnNpbmcuXG4gIGNvbnN0IGVtcHR5QWxpYXNPZmZzZXQgPSBub2RlU3RhcnRPZmZzZXQgKyAxO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9iZXR0ZXItZG9tLXRyYXZlcnNpbmcgLS0gYG5vZGVgIGlzIGFuIG1kYXN0IG5vZGUsIG5vdCBhIERPTSBub2RlLiBJdCBoYXMgbm8gYGZpcnN0RWxlbWVudENoaWxkYDsgdGhlIHJ1bGUgbWF0Y2hlcyB0aGUgYC5jaGlsZHJlblswXWAgc2hhcGUgd2l0aG91dCBjaGVja2luZyB3aGF0IGl0IGlzIG9uLlxuICBjb25zdCBhbGlhc05vZGVTdGFydE9mZnNldCA9IG5vZGUuY2hpbGRyZW5bMF0/LnBvc2l0aW9uPy5zdGFydC5vZmZzZXQgPz8gZW1wdHlBbGlhc09mZnNldDtcbiAgY29uc3QgYWxpYXNOb2RlRW5kT2Zmc2V0ID0gbm9kZS5jaGlsZHJlbi5hdCgtMSk/LnBvc2l0aW9uPy5lbmQub2Zmc2V0ID8/IGVtcHR5QWxpYXNPZmZzZXQ7XG4gIGNvbnN0IHJhd1VybCA9ICRzdHJpbmcuc2xpY2UoYWxpYXNOb2RlRW5kT2Zmc2V0ICsgTElOS19BTElBU19TVUZGSVgubGVuZ3RoLCBub2RlRW5kT2Zmc2V0IC0gTElOS19TVUZGSVgubGVuZ3RoKTtcbiAgY29uc3QgaGFzQW5nbGVCcmFja2V0cyA9IGhhc0FuZ2xlQnJhY2tldHNJbkxpbmsoe1xuICAgIHJhdyxcbiAgICByYXdVcmxcbiAgfSk7XG4gIGNvbnN0IGlzRXh0ZXJuYWwgPSBpc1VybChub2RlLnVybCk7XG4gIGNvbnN0IHVybCA9IGRlY29kZVVybFNhZmVseSh7XG4gICAgaGFzQW5nbGVCcmFja2V0cyxcbiAgICBpc0V4dGVybmFsLFxuICAgIHVybDogbm9kZS51cmxcbiAgfSk7XG4gIGNvbnN0IGFsaWFzID0gZXh0cmFjdEFsaWFzKHtcbiAgICAkc3RyaW5nLFxuICAgIGFsaWFzRW5kT2Zmc2V0OiBhbGlhc05vZGVFbmRPZmZzZXQsXG4gICAgYWxpYXNTdGFydE9mZnNldDogYWxpYXNOb2RlU3RhcnRPZmZzZXRcbiAgfSk7XG4gIHJldHVybiBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8UGFyc2VMaW5rUmVzdWx0Pih7XG4gICAgYWxpYXMsXG4gICAgZW5jb2RlZFVybDogaXNFeHRlcm5hbCA/IGVuY29kZVVybCh1cmwpIDogdW5kZWZpbmVkLFxuICAgIGVuZE9mZnNldDogbm9kZUVuZE9mZnNldCxcbiAgICBoYXNBbmdsZUJyYWNrZXRzLFxuICAgIGlzRW1iZWQ6IGZhbHNlLFxuICAgIGlzRXh0ZXJuYWwsXG4gICAgaXNGaWxlVXJsOiBpc0ZpbGVVcmwodXJsKSxcbiAgICBpc1dpa2lsaW5rOiBmYWxzZSxcbiAgICByYXcsXG4gICAgc3RhcnRPZmZzZXQ6IG5vZGVTdGFydE9mZnNldCxcbiAgICB0aXRsZTogbm9kZS50aXRsZSA/PyB1bmRlZmluZWQsXG4gICAgdW5lc2NhcGVkQWxpYXM6IGFsaWFzID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB1bmVzY2FwZUFsaWFzKGFsaWFzKSxcbiAgICB1cmxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlV2lraWxpbmtOb2RlKG5vZGU6IFdpa2lMaW5rTm9kZSwgJHN0cmluZzogc3RyaW5nKTogUGFyc2VMaW5rUmVzdWx0IHtcbiAgY29uc3QgcG9zaXRpb24gPSBlbnN1cmVOb25OdWxsYWJsZShub2RlLnBvc2l0aW9uKTtcbiAgcmV0dXJuIG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxQYXJzZUxpbmtSZXN1bHQ+KHtcbiAgICBhbGlhczogJHN0cmluZy5pbmNsdWRlcyhXSUtJTElOS19ESVZJREVSKSA/IG5vZGUuZGF0YS5hbGlhcyA6IHVuZGVmaW5lZCxcbiAgICBlbmRPZmZzZXQ6IGVuc3VyZU5vbk51bGxhYmxlKHBvc2l0aW9uLmVuZC5vZmZzZXQpLFxuICAgIGlzRW1iZWQ6IGZhbHNlLFxuICAgIGlzRXh0ZXJuYWw6IGZhbHNlLFxuICAgIGlzRmlsZVVybDogZmFsc2UsXG4gICAgaXNXaWtpbGluazogdHJ1ZSxcbiAgICByYXc6IGdldFJhd0xpbmsobm9kZSwgJHN0cmluZyksXG4gICAgc3RhcnRPZmZzZXQ6IGVuc3VyZU5vbk51bGxhYmxlKHBvc2l0aW9uLnN0YXJ0Lm9mZnNldCksXG4gICAgdXJsOiBub2RlLnZhbHVlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiB0cmltV3d3QXV0b2xpbmtMaXRlcmFsKGxpdGVyYWw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHRyaW1tZWQgPSB0cmltV3d3QXV0b2xpbmtMaXRlcmFsRW5kKGxpdGVyYWwpO1xuICByZXR1cm4gdHJpbW1lZCA9PT0gbGl0ZXJhbCA/IGxpdGVyYWwgOiB0cmltV3d3QXV0b2xpbmtMaXRlcmFsKHRyaW1tZWQpO1xufVxuXG5mdW5jdGlvbiB0cmltV3d3QXV0b2xpbmtMaXRlcmFsRW5kKGxpdGVyYWw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGxhc3RDaGFyYWN0ZXIgPSBsaXRlcmFsLnNsaWNlKC0xKTtcbiAgaWYgKFdXV19BVVRPTElOS19MSVRFUkFMX1RSQUlMSU5HX1BVTkNUVUFUSU9OLmhhcyhsYXN0Q2hhcmFjdGVyKSkge1xuICAgIHJldHVybiBsaXRlcmFsLnNsaWNlKDAsIC0xKTtcbiAgfVxuXG4gIC8vIEdGTTogYSBjbG9zaW5nIHBhcmVudGhlc2lzIHdpdGggbm8gb3BlbmluZyBvbmUgdG8gbWF0Y2ggaXMgbm90IHBhcnQgb2YgdGhlIGxpdGVyYWwuXG4gIHJldHVybiBsYXN0Q2hhcmFjdGVyID09PSAnKScgJiYgY291bnRPY2N1cnJlbmNlcyhsaXRlcmFsLCAnKScpID4gY291bnRPY2N1cnJlbmNlcyhsaXRlcmFsLCAnKCcpXG4gICAgPyBsaXRlcmFsLnNsaWNlKDAsIC0xKVxuICAgIDogbGl0ZXJhbC5yZXBsYWNlKFRSQUlMSU5HX0VOVElUWV9SRUZFUkVOQ0VfUkVHX0VYUCwgJycpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsU0FBUyxtQ0FBbUM7QUFDNUMsU0FBUyw4QkFBOEI7QUFDdkMsU0FBUyxrQkFBa0I7QUFDM0IsU0FBUyx5QkFBeUI7QUFDbEM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyw4QkFBOEI7QUFDdkMsU0FBUyxjQUFjO0FBQ3ZCLE9BQU8saUJBQWlCO0FBQ3hCLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsYUFBYTtBQUt0QixNQUFNLHNDQUFzQztBQUU1QyxNQUFNLG1CQUFtQjtBQWF6QixNQUFNLHlDQUF5QztBQU0vQyxNQUFNLHNDQUFzQztBQUs1QyxNQUFNLDRDQUE0QyxvQkFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSyxHQUFHLENBQUM7QUFLbEcsTUFBTSxvQ0FBb0M7QUFLMUMsTUFBTSw4QkFBOEI7QUEwVnBDLE1BQU0sdUJBQXVCO0FBQUEsRUFDViwyQkFBNEQsQ0FBQztBQUFBLEVBQzdELHFDQUFpRixDQUFDO0FBQUEsRUFDbEYsNkJBQXlFLENBQUM7QUFBQSxFQUVwRixNQUFNLGFBQW1EO0FBQzlELFNBQUssV0FBVyxhQUFhLEVBQUU7QUFDL0IsV0FBTztBQUFBLE1BQ0wsMEJBQTBCLEtBQUs7QUFBQSxNQUMvQixvQ0FBb0MsS0FBSztBQUFBLE1BQ3pDLDRCQUE0QixLQUFLO0FBQUEsSUFDbkM7QUFBQSxFQUNGO0FBQUEsRUFFUSxXQUFXLFFBQStDO0FBQ2hFLFVBQU0sRUFBRSxjQUFjLEtBQUssaUJBQWlCLE1BQU0sSUFBSTtBQUN0RCxRQUFJLENBQUMsZ0JBQWdCLGNBQWMsY0FBYztBQUMvQztB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
@@ -5,40 +5,32 @@ if you want to view the source, please visit the github repository of this plugi
5
5
 
6
6
  (function () {
7
7
  function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
+ symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
10
  }
11
11
 
12
12
  function ensureBrowserProcess() {
13
13
  const browserProcess = {
14
14
  browser: true,
15
15
  cwd() {
16
- return '/';
16
+ return "/";
17
17
  },
18
18
  env: {},
19
- platform: 'android'
19
+ platform: "android"
20
20
  };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
21
  const existingProcess = globalThis.process;
24
-
25
22
  if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
23
  globalThis.process = browserProcess;
28
24
  return;
29
25
  }
30
-
31
26
  if (existingProcess.versions?.node) {
32
27
  return;
33
28
  }
34
-
35
29
  const existingProcessRecord = existingProcess;
36
-
37
30
  for (const [key, value] of Object.entries(browserProcess)) {
38
31
  existingProcessRecord[key] ??= value;
39
32
  }
40
-
41
- existingProcessRecord['browser'] = true;
33
+ existingProcessRecord["browser"] = true;
42
34
  }
43
35
 
44
36
  (function initEsm() {
@@ -181,4 +173,4 @@ export {
181
173
  PathSettings,
182
174
  pathsValidator
183
175
  };
184
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3BhdGgtc2V0dGluZ3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBjbGFzc2VzIGFuZCB2YWxpZGF0b3JzIGZvciBtYW5hZ2luZyBpbmNsdWRlL2V4Y2x1ZGUgcGF0aCBzZXR0aW5ncy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE1heWJlUmV0dXJuIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUnO1xuXG5pbXBvcnQge1xuICBBTFdBWVNfTUFUQ0hfUkVHX0VYUCxcbiAgZXNjYXBlUmVnRXhwLFxuICBpc1ZhbGlkUmVnRXhwLFxuICBORVZFUl9NQVRDSF9SRUdfRVhQXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9yZWctZXhwJztcbmltcG9ydCB7IHRyaW1FbmQgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvc3RyaW5nJztcbmltcG9ydCB7IGFzc2VydE5ldmVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcblxuaW1wb3J0IHsgdCB9IGZyb20gJy4vaTE4bi9pMThuLnRzJztcblxuZW51bSBQYXRoU2V0dGluZ1R5cGUge1xuICBFeGNsdWRlID0gJ0V4Y2x1ZGUnLFxuICBJbmNsdWRlID0gJ0luY2x1ZGUnXG59XG5cbmNsYXNzIFBhdGhTZXR0aW5nIHtcbiAgcHVibGljIGdldCBhcnJheSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2FycmF5O1xuICB9XG5cbiAgcHVibGljIHNldCBhcnJheSh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9hcnJheSA9IHZhbHVlLmZpbHRlcihCb29sZWFuKTtcbiAgICB0aGlzLnJlZ0V4cCA9IG1ha2VSZWdFeHAodGhpcy5fYXJyYXksIHRoaXMuZGVmYXVsdFJlZ0V4cCkgPz8gdGhpcy5kZWZhdWx0UmVnRXhwO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXJyYXk6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFJlZ0V4cDogUmVnRXhwO1xuICBwcml2YXRlIHJlZ0V4cDogUmVnRXhwO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFBhdGhTZXR0aW5nVHlwZSkge1xuICAgIHRoaXMuZGVmYXVsdFJlZ0V4cCA9IGdldERlZmF1bHRSZWdFeHAodHlwZSk7XG4gICAgdGhpcy5yZWdFeHAgPSB0aGlzLmRlZmF1bHRSZWdFeHA7XG4gIH1cblxuICBwdWJsaWMgaXNQYXRoSWdub3JlZChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWxsIGJyYW5jaGVzIGNvdmVyZWQgYnV0IHY4IHJlcG9ydHMgc3dpdGNoIGFzIHBhcnRpYWwuICovXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICBjYXNlIFBhdGhTZXR0aW5nVHlwZS5FeGNsdWRlOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZ0V4cC50ZXN0KHBhdGgpO1xuICAgICAgfVxuICAgICAgY2FzZSBQYXRoU2V0dGluZ1R5cGUuSW5jbHVkZToge1xuICAgICAgICByZXR1cm4gIXRoaXMucmVnRXhwLnRlc3QocGF0aCk7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBFeGhhdXN0aXZlIHN3aXRjaCBndWFyZC4gKi9cbiAgICAgICAgYXNzZXJ0TmV2ZXIodGhpcy50eXBlKTtcbiAgICAgIH1cbiAgICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBIGNsYXNzIGZvciBtYW5hZ2luZyBpbmNsdWRlL2V4Y2x1ZGUgcGF0aCBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBhdGhTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBleGNsdWRlIHBhdGhzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZXhjbHVkZSBwYXRocy5cbiAgICovXG4gIHB1YmxpYyBnZXQgZXhjbHVkZVBhdGhzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fZXhjbHVkZVBhdGhzLmFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGV4Y2x1ZGUgcGF0aHMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBleGNsdWRlIHBhdGhzLlxuICAgKi9cbiAgcHVibGljIHNldCBleGNsdWRlUGF0aHModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fZXhjbHVkZVBhdGhzLmFycmF5ID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaW5jbHVkZSBwYXRocy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGluY2x1ZGUgcGF0aHMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGluY2x1ZGVQYXRocygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2luY2x1ZGVQYXRocy5hcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbmNsdWRlIHBhdGhzLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgaW5jbHVkZSBwYXRocy5cbiAgICovXG4gIHB1YmxpYyBzZXQgaW5jbHVkZVBhdGhzKHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2luY2x1ZGVQYXRocy5hcnJheSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZXhjbHVkZVBhdGhzID0gbmV3IFBhdGhTZXR0aW5nKFBhdGhTZXR0aW5nVHlwZS5FeGNsdWRlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5jbHVkZVBhdGhzID0gbmV3IFBhdGhTZXR0aW5nKFBhdGhTZXR0aW5nVHlwZS5JbmNsdWRlKTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgcGF0aCBpcyBpZ25vcmVkIGJ5IHRoZSBpbmNsdWRlL2V4Y2x1ZGUgcGF0aCBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBjaGVjay5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwYXRoIGlzIGlnbm9yZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIGlzUGF0aElnbm9yZWQocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2luY2x1ZGVQYXRocy5pc1BhdGhJZ25vcmVkKHBhdGgpIHx8IHRoaXMuX2V4Y2x1ZGVQYXRocy5pc1BhdGhJZ25vcmVkKHBhdGgpO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGluY2x1ZGUvZXhjbHVkZSBwYXRoIGVudHJpZXMsIHJlcG9ydGluZyB0aGUgZmlyc3QgZW50cnkgdGhhdCBpcyBub3QgYSBwYXJzZWFibGUgcmVndWxhciBleHByZXNzaW9uLlxuICpcbiAqIEFuIGVudHJ5IHRoYXQgc3RhcnRzIGFuZCBlbmRzIHdpdGggYC9gIGlzIGEgcmVndWxhciBleHByZXNzaW9uIGxpdGVyYWw7IGV2ZXJ5IG90aGVyIGVudHJ5IGlzIGEgcGxhaW4gcGF0aCBhbmQgaXNcbiAqIGFsd2F5cyB2YWxpZC4gQW4gaW52YWxpZCBlbnRyeSBkb2VzIG5vdCB0aHJvdyB3aGVuIGFzc2lnbmVkIHRvIHtAbGluayBQYXRoU2V0dGluZ3N9IFx1MjAxNCB0aGUgd2hvbGUgbGlzdCBmYWxscyBiYWNrIHRvXG4gKiBpdHMgZGVmYXVsdCBwYXR0ZXJuIGluc3RlYWQgXHUyMDE0IHNvIHRoaXMgdmFsaWRhdG9yIGlzIHdoYXQgc3VyZmFjZXMgdGhlIHByb2JsZW0gdG8gdGhlIHVzZXIuXG4gKlxuICogQHBhcmFtIHBhdGhzIC0gVGhlIHBhdGggZW50cmllcyB0byB2YWxpZGF0ZS5cbiAqIEByZXR1cm5zIEEgbWVzc2FnZSBuYW1pbmcgdGhlIGZpcnN0IGludmFsaWQgZW50cnksIG9yIG5vdGhpbmcgd2hlbiBldmVyeSBlbnRyeSBpcyB2YWxpZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhdGhzVmFsaWRhdG9yKHBhdGhzOiBzdHJpbmdbXSk6IE1heWJlUmV0dXJuPHN0cmluZz4ge1xuICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpIHtcbiAgICBpZiAocGF0aC5zdGFydHNXaXRoKCcvJykgJiYgcGF0aC5lbmRzV2l0aCgnLycpICYmICFpc1ZhbGlkUmVnRXhwKHBhdGguc2xpY2UoMSwgLTEpKSkge1xuICAgICAgcmV0dXJuIHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5wYXRoU2V0dGluZ3MuaW52YWxpZFJlZ3VsYXJFeHByZXNzaW9uLCB7IHJlZ0V4cDogcGF0aCB9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdFJlZ0V4cCh0eXBlOiBQYXRoU2V0dGluZ1R5cGUpOiBSZWdFeHAge1xuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWxsIGJyYW5jaGVzIGNvdmVyZWQgYnV0IHY4IHJlcG9ydHMgc3dpdGNoIGFzIHBhcnRpYWwuICovXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgY2FzZSBQYXRoU2V0dGluZ1R5cGUuRXhjbHVkZToge1xuICAgICAgcmV0dXJuIE5FVkVSX01BVENIX1JFR19FWFA7XG4gICAgfVxuICAgIGNhc2UgUGF0aFNldHRpbmdUeXBlLkluY2x1ZGU6IHtcbiAgICAgIHJldHVybiBBTFdBWVNfTUFUQ0hfUkVHX0VYUDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEV4aGF1c3RpdmUgc3dpdGNoIGd1YXJkLiAqL1xuICAgICAgYXNzZXJ0TmV2ZXIodHlwZSk7XG4gICAgfVxuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgfVxufVxuXG5mdW5jdGlvbiBtYWtlUmVnRXhwKHBhdGhzOiBzdHJpbmdbXSwgZGVmYXVsdFJlZ0V4cDogUmVnRXhwKTogbnVsbCB8IFJlZ0V4cCB7XG4gIGlmIChwYXRocy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZGVmYXVsdFJlZ0V4cDtcbiAgfVxuXG4gIGNvbnN0IHJlZ0V4cFN0cmluZ0NvbWJpbmVkID0gcGF0aHMubWFwKChwYXRoKSA9PiB7XG4gICAgaWYgKHBhdGggPT09ICcvJykge1xuICAgICAgcmV0dXJuIGRlZmF1bHRSZWdFeHAuc291cmNlO1xuICAgIH1cblxuICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoJy8nKSAmJiBwYXRoLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgIHJldHVybiBwYXRoLnNsaWNlKDEsIC0xKTtcbiAgICB9XG5cbiAgICBwYXRoID0gdHJpbUVuZCh7XG4gICAgICAkc3RyaW5nOiBwYXRoLFxuICAgICAgc3VmZml4OiAnLydcbiAgICB9KTtcbiAgICByZXR1cm4gYF4ke2VzY2FwZVJlZ0V4cChwYXRoKX0oL3wkKWA7XG4gIH0pXG4gICAgLm1hcCgocmVnRXhwU3RyaW5nKSA9PiBgKCR7cmVnRXhwU3RyaW5nfSlgKVxuICAgIC5qb2luKCd8Jyk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChyZWdFeHBTdHJpbmdDb21iaW5lZCk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEEgcGFydGlhbGx5IHR5cGVkIHJlZ2V4IGxpdGVyYWwgKGAvXkluYm94XFwvYCkgaXMgbm90IHBhcnNlYWJsZS5cbiAgICAvLyBSZXBvcnQgaXQgaW5zdGVhZCBvZiB0aHJvd2luZyBmcm9tIGEgc2V0dGluZ3Mgc2V0dGVyLCB3aGljaCB3b3VsZCBicmVhayBib3RoIHRoZSBzZXR0aW5ncyBVSSBhbmQgdGhlIHNhdmUgcGF0aC5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7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
176
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3BhdGgtc2V0dGluZ3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBjbGFzc2VzIGFuZCB2YWxpZGF0b3JzIGZvciBtYW5hZ2luZyBpbmNsdWRlL2V4Y2x1ZGUgcGF0aCBzZXR0aW5ncy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE1heWJlUmV0dXJuIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUnO1xuXG5pbXBvcnQge1xuICBBTFdBWVNfTUFUQ0hfUkVHX0VYUCxcbiAgZXNjYXBlUmVnRXhwLFxuICBpc1ZhbGlkUmVnRXhwLFxuICBORVZFUl9NQVRDSF9SRUdfRVhQXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9yZWctZXhwJztcbmltcG9ydCB7IHRyaW1FbmQgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvc3RyaW5nJztcbmltcG9ydCB7IGFzc2VydE5ldmVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcblxuaW1wb3J0IHsgdCB9IGZyb20gJy4vaTE4bi9pMThuLnRzJztcblxuZW51bSBQYXRoU2V0dGluZ1R5cGUge1xuICBFeGNsdWRlID0gJ0V4Y2x1ZGUnLFxuICBJbmNsdWRlID0gJ0luY2x1ZGUnXG59XG5cbmNsYXNzIFBhdGhTZXR0aW5nIHtcbiAgcHVibGljIGdldCBhcnJheSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2FycmF5O1xuICB9XG5cbiAgcHVibGljIHNldCBhcnJheSh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9hcnJheSA9IHZhbHVlLmZpbHRlcihCb29sZWFuKTtcbiAgICB0aGlzLnJlZ0V4cCA9IG1ha2VSZWdFeHAodGhpcy5fYXJyYXksIHRoaXMuZGVmYXVsdFJlZ0V4cCkgPz8gdGhpcy5kZWZhdWx0UmVnRXhwO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXJyYXk6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFJlZ0V4cDogUmVnRXhwO1xuICBwcml2YXRlIHJlZ0V4cDogUmVnRXhwO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFBhdGhTZXR0aW5nVHlwZSkge1xuICAgIHRoaXMuZGVmYXVsdFJlZ0V4cCA9IGdldERlZmF1bHRSZWdFeHAodHlwZSk7XG4gICAgdGhpcy5yZWdFeHAgPSB0aGlzLmRlZmF1bHRSZWdFeHA7XG4gIH1cblxuICBwdWJsaWMgaXNQYXRoSWdub3JlZChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWxsIGJyYW5jaGVzIGNvdmVyZWQgYnV0IHY4IHJlcG9ydHMgc3dpdGNoIGFzIHBhcnRpYWwuICovXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICBjYXNlIFBhdGhTZXR0aW5nVHlwZS5FeGNsdWRlOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZ0V4cC50ZXN0KHBhdGgpO1xuICAgICAgfVxuICAgICAgY2FzZSBQYXRoU2V0dGluZ1R5cGUuSW5jbHVkZToge1xuICAgICAgICByZXR1cm4gIXRoaXMucmVnRXhwLnRlc3QocGF0aCk7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBFeGhhdXN0aXZlIHN3aXRjaCBndWFyZC4gKi9cbiAgICAgICAgYXNzZXJ0TmV2ZXIodGhpcy50eXBlKTtcbiAgICAgIH1cbiAgICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBIGNsYXNzIGZvciBtYW5hZ2luZyBpbmNsdWRlL2V4Y2x1ZGUgcGF0aCBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBhdGhTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBleGNsdWRlIHBhdGhzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZXhjbHVkZSBwYXRocy5cbiAgICovXG4gIHB1YmxpYyBnZXQgZXhjbHVkZVBhdGhzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fZXhjbHVkZVBhdGhzLmFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGV4Y2x1ZGUgcGF0aHMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBleGNsdWRlIHBhdGhzLlxuICAgKi9cbiAgcHVibGljIHNldCBleGNsdWRlUGF0aHModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fZXhjbHVkZVBhdGhzLmFycmF5ID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaW5jbHVkZSBwYXRocy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGluY2x1ZGUgcGF0aHMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGluY2x1ZGVQYXRocygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2luY2x1ZGVQYXRocy5hcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbmNsdWRlIHBhdGhzLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgaW5jbHVkZSBwYXRocy5cbiAgICovXG4gIHB1YmxpYyBzZXQgaW5jbHVkZVBhdGhzKHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2luY2x1ZGVQYXRocy5hcnJheSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZXhjbHVkZVBhdGhzID0gbmV3IFBhdGhTZXR0aW5nKFBhdGhTZXR0aW5nVHlwZS5FeGNsdWRlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5jbHVkZVBhdGhzID0gbmV3IFBhdGhTZXR0aW5nKFBhdGhTZXR0aW5nVHlwZS5JbmNsdWRlKTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgcGF0aCBpcyBpZ25vcmVkIGJ5IHRoZSBpbmNsdWRlL2V4Y2x1ZGUgcGF0aCBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBjaGVjay5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwYXRoIGlzIGlnbm9yZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIGlzUGF0aElnbm9yZWQocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2luY2x1ZGVQYXRocy5pc1BhdGhJZ25vcmVkKHBhdGgpIHx8IHRoaXMuX2V4Y2x1ZGVQYXRocy5pc1BhdGhJZ25vcmVkKHBhdGgpO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGluY2x1ZGUvZXhjbHVkZSBwYXRoIGVudHJpZXMsIHJlcG9ydGluZyB0aGUgZmlyc3QgZW50cnkgdGhhdCBpcyBub3QgYSBwYXJzZWFibGUgcmVndWxhciBleHByZXNzaW9uLlxuICpcbiAqIEFuIGVudHJ5IHRoYXQgc3RhcnRzIGFuZCBlbmRzIHdpdGggYC9gIGlzIGEgcmVndWxhciBleHByZXNzaW9uIGxpdGVyYWw7IGV2ZXJ5IG90aGVyIGVudHJ5IGlzIGEgcGxhaW4gcGF0aCBhbmQgaXNcbiAqIGFsd2F5cyB2YWxpZC4gQW4gaW52YWxpZCBlbnRyeSBkb2VzIG5vdCB0aHJvdyB3aGVuIGFzc2lnbmVkIHRvIHtAbGluayBQYXRoU2V0dGluZ3N9IFx1MjAxNCB0aGUgd2hvbGUgbGlzdCBmYWxscyBiYWNrIHRvXG4gKiBpdHMgZGVmYXVsdCBwYXR0ZXJuIGluc3RlYWQgXHUyMDE0IHNvIHRoaXMgdmFsaWRhdG9yIGlzIHdoYXQgc3VyZmFjZXMgdGhlIHByb2JsZW0gdG8gdGhlIHVzZXIuXG4gKlxuICogQHBhcmFtIHBhdGhzIC0gVGhlIHBhdGggZW50cmllcyB0byB2YWxpZGF0ZS5cbiAqIEByZXR1cm5zIEEgbWVzc2FnZSBuYW1pbmcgdGhlIGZpcnN0IGludmFsaWQgZW50cnksIG9yIG5vdGhpbmcgd2hlbiBldmVyeSBlbnRyeSBpcyB2YWxpZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhdGhzVmFsaWRhdG9yKHBhdGhzOiBzdHJpbmdbXSk6IE1heWJlUmV0dXJuPHN0cmluZz4ge1xuICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpIHtcbiAgICBpZiAocGF0aC5zdGFydHNXaXRoKCcvJykgJiYgcGF0aC5lbmRzV2l0aCgnLycpICYmICFpc1ZhbGlkUmVnRXhwKHBhdGguc2xpY2UoMSwgLTEpKSkge1xuICAgICAgcmV0dXJuIHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5wYXRoU2V0dGluZ3MuaW52YWxpZFJlZ3VsYXJFeHByZXNzaW9uLCB7IHJlZ0V4cDogcGF0aCB9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVmYXVsdFJlZ0V4cCh0eXBlOiBQYXRoU2V0dGluZ1R5cGUpOiBSZWdFeHAge1xuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWxsIGJyYW5jaGVzIGNvdmVyZWQgYnV0IHY4IHJlcG9ydHMgc3dpdGNoIGFzIHBhcnRpYWwuICovXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgY2FzZSBQYXRoU2V0dGluZ1R5cGUuRXhjbHVkZToge1xuICAgICAgcmV0dXJuIE5FVkVSX01BVENIX1JFR19FWFA7XG4gICAgfVxuICAgIGNhc2UgUGF0aFNldHRpbmdUeXBlLkluY2x1ZGU6IHtcbiAgICAgIHJldHVybiBBTFdBWVNfTUFUQ0hfUkVHX0VYUDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEV4aGF1c3RpdmUgc3dpdGNoIGd1YXJkLiAqL1xuICAgICAgYXNzZXJ0TmV2ZXIodHlwZSk7XG4gICAgfVxuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgfVxufVxuXG5mdW5jdGlvbiBtYWtlUmVnRXhwKHBhdGhzOiBzdHJpbmdbXSwgZGVmYXVsdFJlZ0V4cDogUmVnRXhwKTogbnVsbCB8IFJlZ0V4cCB7XG4gIGlmIChwYXRocy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZGVmYXVsdFJlZ0V4cDtcbiAgfVxuXG4gIGNvbnN0IHJlZ0V4cFN0cmluZ0NvbWJpbmVkID0gcGF0aHMubWFwKChwYXRoKSA9PiB7XG4gICAgaWYgKHBhdGggPT09ICcvJykge1xuICAgICAgcmV0dXJuIGRlZmF1bHRSZWdFeHAuc291cmNlO1xuICAgIH1cblxuICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoJy8nKSAmJiBwYXRoLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgIHJldHVybiBwYXRoLnNsaWNlKDEsIC0xKTtcbiAgICB9XG5cbiAgICBwYXRoID0gdHJpbUVuZCh7XG4gICAgICAkc3RyaW5nOiBwYXRoLFxuICAgICAgc3VmZml4OiAnLydcbiAgICB9KTtcbiAgICByZXR1cm4gYF4ke2VzY2FwZVJlZ0V4cChwYXRoKX0oL3wkKWA7XG4gIH0pXG4gICAgLm1hcCgocmVnRXhwU3RyaW5nKSA9PiBgKCR7cmVnRXhwU3RyaW5nfSlgKVxuICAgIC5qb2luKCd8Jyk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChyZWdFeHBTdHJpbmdDb21iaW5lZCk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEEgcGFydGlhbGx5IHR5cGVkIHJlZ2V4IGxpdGVyYWwgKGAvXkluYm94XFwvYCkgaXMgbm90IHBhcnNlYWJsZS5cbiAgICAvLyBSZXBvcnQgaXQgaW5zdGVhZCBvZiB0aHJvd2luZyBmcm9tIGEgc2V0dGluZ3Mgc2V0dGVyLCB3aGljaCB3b3VsZCBicmVhayBib3RoIHRoZSBzZXR0aW5ncyBVSSBhbmQgdGhlIHNhdmUgcGF0aC5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxlQUFlO0FBQ3hCLFNBQVMsbUJBQW1CO0FBRTVCLFNBQVMsU0FBUztBQU9sQixNQUFNLFlBQVk7QUFBQSxFQWNULFlBQTZCLE1BQXVCO0FBQXZCO0FBQ2xDLFNBQUssZ0JBQWdCLGlCQUFpQixJQUFJO0FBQzFDLFNBQUssU0FBUyxLQUFLO0FBQUEsRUFDckI7QUFBQSxFQUhvQztBQUFBLEVBYnBDLElBQVcsUUFBa0I7QUFDM0IsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLEVBRUEsSUFBVyxNQUFNLE9BQWlCO0FBQ2hDLFNBQUssU0FBUyxNQUFNLE9BQU8sT0FBTztBQUNsQyxTQUFLLFNBQVMsV0FBVyxLQUFLLFFBQVEsS0FBSyxhQUFhLEtBQUssS0FBSztBQUFBLEVBQ3BFO0FBQUEsRUFFUSxTQUFtQixDQUFDO0FBQUEsRUFDWDtBQUFBLEVBQ1Q7QUFBQSxFQU9ELGNBQWMsTUFBdUI7QUFFMUMsWUFBUSxLQUFLLE1BQU07QUFBQTtBQUFBLE1BRWpCLEtBQUsseUJBQXlCO0FBQzVCLGVBQU8sS0FBSyxPQUFPLEtBQUssSUFBSTtBQUFBLE1BQzlCO0FBQUEsTUFDQSxLQUFLLHlCQUF5QjtBQUM1QixlQUFPLENBQUMsS0FBSyxPQUFPLEtBQUssSUFBSTtBQUFBLE1BQy9CO0FBQUEsTUFDQSxTQUFTO0FBRVAsb0JBQVksS0FBSyxJQUFJO0FBQUEsTUFDdkI7QUFBQSxJQUVGO0FBQUEsRUFDRjtBQUNGO0FBS08sTUFBTSxhQUFhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTXhCLElBQVcsZUFBeUI7QUFDbEMsV0FBTyxLQUFLLGNBQWM7QUFBQSxFQUM1QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsYUFBYSxPQUFpQjtBQUN2QyxTQUFLLGNBQWMsUUFBUTtBQUFBLEVBQzdCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBVyxlQUF5QjtBQUNsQyxXQUFPLEtBQUssY0FBYztBQUFBLEVBQzVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBVyxhQUFhLE9BQWlCO0FBQ3ZDLFNBQUssY0FBYyxRQUFRO0FBQUEsRUFDN0I7QUFBQSxFQUVpQixnQkFBZ0IsSUFBSSxZQUFZLHVCQUF1QjtBQUFBLEVBQ3ZELGdCQUFnQixJQUFJLFlBQVksdUJBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRakUsY0FBYyxNQUF1QjtBQUMxQyxXQUFPLEtBQUssY0FBYyxjQUFjLElBQUksS0FBSyxLQUFLLGNBQWMsY0FBYyxJQUFJO0FBQUEsRUFDeEY7QUFDRjtBQVlPLFNBQVMsZUFBZSxPQUFzQztBQUNuRSxhQUFXLFFBQVEsT0FBTztBQUN4QixRQUFJLEtBQUssV0FBVyxHQUFHLEtBQUssS0FBSyxTQUFTLEdBQUcsS0FBSyxDQUFDLGNBQWMsS0FBSyxNQUFNLEdBQUcsRUFBRSxDQUFDLEdBQUc7QUFDbkYsYUFBTyxFQUFFLENBQUMsTUFBTSxFQUFFLGlCQUFpQixhQUFhLDBCQUEwQixFQUFFLFFBQVEsS0FBSyxDQUFDO0FBQUEsSUFDNUY7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxTQUFTLGlCQUFpQixNQUErQjtBQUV2RCxVQUFRLE1BQU07QUFBQTtBQUFBLElBRVosS0FBSyx5QkFBeUI7QUFDNUIsYUFBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLEtBQUsseUJBQXlCO0FBQzVCLGFBQU87QUFBQSxJQUNUO0FBQUEsSUFDQSxTQUFTO0FBRVAsa0JBQVksSUFBSTtBQUFBLElBQ2xCO0FBQUEsRUFFRjtBQUNGO0FBRUEsU0FBUyxXQUFXLE9BQWlCLGVBQXNDO0FBQ3pFLE1BQUksTUFBTSxXQUFXLEdBQUc7QUFDdEIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLHVCQUF1QixNQUFNLElBQUksQ0FBQyxTQUFTO0FBQy9DLFFBQUksU0FBUyxLQUFLO0FBQ2hCLGFBQU8sY0FBYztBQUFBLElBQ3ZCO0FBRUEsUUFBSSxLQUFLLFdBQVcsR0FBRyxLQUFLLEtBQUssU0FBUyxHQUFHLEdBQUc7QUFDOUMsYUFBTyxLQUFLLE1BQU0sR0FBRyxFQUFFO0FBQUEsSUFDekI7QUFFQSxXQUFPLFFBQVE7QUFBQSxNQUNiLFNBQVM7QUFBQSxNQUNULFFBQVE7QUFBQSxJQUNWLENBQUM7QUFDRCxXQUFPLElBQUksYUFBYSxJQUFJLENBQUM7QUFBQSxFQUMvQixDQUFDLEVBQ0UsSUFBSSxDQUFDLGlCQUFpQixJQUFJLFlBQVksR0FBRyxFQUN6QyxLQUFLLEdBQUc7QUFFWCxNQUFJO0FBQ0YsV0FBTyxJQUFJLE9BQU8sb0JBQW9CO0FBQUEsRUFDeEMsUUFBUTtBQUdOLFdBQU87QUFBQSxFQUNUO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -5,40 +5,32 @@ if you want to view the source, please visit the github repository of this plugi
5
5
 
6
6
  (function () {
7
7
  function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
+ symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
10
  }
11
11
 
12
12
  function ensureBrowserProcess() {
13
13
  const browserProcess = {
14
14
  browser: true,
15
15
  cwd() {
16
- return '/';
16
+ return "/";
17
17
  },
18
18
  env: {},
19
- platform: 'android'
19
+ platform: "android"
20
20
  };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
21
  const existingProcess = globalThis.process;
24
-
25
22
  if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
23
  globalThis.process = browserProcess;
28
24
  return;
29
25
  }
30
-
31
26
  if (existingProcess.versions?.node) {
32
27
  return;
33
28
  }
34
-
35
29
  const existingProcessRecord = existingProcess;
36
-
37
30
  for (const [key, value] of Object.entries(browserProcess)) {
38
31
  existingProcessRecord[key] ??= value;
39
32
  }
40
-
41
- existingProcessRecord['browser'] = true;
33
+ existingProcessRecord["browser"] = true;
42
34
  }
43
35
 
44
36
  (function initEsm() {
@@ -81,4 +73,4 @@ async function printToPdf(element, options) {
81
73
  export {
82
74
  printToPdf
83
75
  };
84
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3BkZi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBwcmludGluZyB0byBQREYuXG4gKi9cblxuaW1wb3J0IHsgZW5zdXJlTG9hZGVkIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2h0bWwtZWxlbWVudCc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW50ZXJmYWNlIFByaW50VG9QZGZPcHRpb25zIHtcbiAgcmVhZG9ubHkgZmlsZXBhdGg6IHN0cmluZztcbiAgcmVhZG9ubHkgaW5jbHVkZU5hbWU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGxhbmRzY2FwZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbWFyZ2luc1R5cGU6IG51bWJlcjtcbiAgcmVhZG9ubHkgb3BlbjogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcGFnZVNpemU6IHN0cmluZztcbiAgcmVhZG9ubHkgc2NhbGU6IG51bWJlcjtcbiAgcmVhZG9ubHkgc2NhbGVGYWN0b3I6IG51bWJlcjtcbn1cblxuY29uc3QgRUxFQ1RST05fUFJJTlRfVE9fUERGX0NIQU5ORUwgPSAncHJpbnQtdG8tcGRmJztcblxuLyoqXG4gKiBQcmludCB0aGUgZ2l2ZW4gZWxlbWVudCB0byBhIFBERiBmaWxlLlxuICpcbiAqIFdvcmtzIG9ubHkgb24gZGVza3RvcC5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCAtIFRoZSBlbGVtZW50IHRvIHByaW50LlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyB0byB1c2UgZm9yIHRoZSBwcmludC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByaW50VG9QZGYoZWxlbWVudDogSFRNTEVsZW1lbnQsIG9wdGlvbnM6IFBhcnRpYWw8UHJpbnRUb1BkZk9wdGlvbnM+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChQbGF0Zm9ybS5pc01vYmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignUHJpbnRpbmcgdG8gUERGIGlzIG5vdCBzdXBwb3J0ZWQgb24gbW9iaWxlIGRldmljZXMuJyk7XG4gIH1cblxuICBjb25zdCBwcmludERpdiA9IGFjdGl2ZURvY3VtZW50LmJvZHkuY3JlYXRlRGl2KCdwcmludCcpO1xuICBwcmludERpdi5hcHBlbmQoZWxlbWVudCk7XG4gIGF3YWl0IGVuc3VyZUxvYWRlZChwcmludERpdik7XG5cbiAgY29uc3QgREVGQVVMVF9TQ0FMRV9GQUNUT1IgPSAxMDA7XG4gIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogUHJpbnRUb1BkZk9wdGlvbnMgPSB7XG4gICAgZmlsZXBhdGg6ICdVbnRpdGxlZC5wZGYnLFxuICAgIGluY2x1ZGVOYW1lOiBmYWxzZSxcbiAgICBsYW5kc2NhcGU6IGZhbHNlLFxuICAgIG1hcmdpbnNUeXBlOiAwLFxuICAgIG9wZW46IHRydWUsXG4gICAgcGFnZVNpemU6ICdBNCcsXG4gICAgc2NhbGU6IDEsXG4gICAgc2NhbGVGYWN0b3I6IERFRkFVTFRfU0NBTEVfRkFDVE9SXG4gIH07XG5cbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7IC4uLkRFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGFjdGl2ZVdpbmRvdy5lbGVjdHJvbi5pcGNSZW5kZXJlci5vbmNlKEVMRUNUUk9OX1BSSU5UX1RPX1BERl9DSEFOTkVMLCByZXNvbHZlKTtcbiAgICAgIGFjdGl2ZVdpbmRvdy5lbGVjdHJvbi5pcGNSZW5kZXJlci5zZW5kKEVMRUNUUk9OX1BSSU5UX1RPX1BERl9DSEFOTkVMLCBmdWxsT3B0aW9ucyk7XG4gICAgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgcHJpbnREaXYucmVtb3ZlKCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNQSxTQUFTLG9CQUFvQjtBQUM3QixTQUFTLGdCQUFnQjtBQWF6QixNQUFNLGdDQUFnQztBQVV0QyxlQUFzQixXQUFXLFNBQXNCLFNBQW9EO0FBQ3pHLE1BQUksU0FBUyxVQUFVO0FBQ3JCLFVBQU0sSUFBSSxNQUFNLHFEQUFxRDtBQUFBLEVBQ3ZFO0FBRUEsUUFBTSxXQUFXLGVBQWUsS0FBSyxVQUFVLE9BQU87QUFDdEQsV0FBUyxPQUFPLE9BQU87QUFDdkIsUUFBTSxhQUFhLFFBQVE7QUFFM0IsUUFBTSx1QkFBdUI7QUFDN0IsUUFBTSxrQkFBcUM7QUFBQSxJQUN6QyxVQUFVO0FBQUEsSUFDVixhQUFhO0FBQUEsSUFDYixXQUFXO0FBQUEsSUFDWCxhQUFhO0FBQUEsSUFDYixNQUFNO0FBQUEsSUFDTixVQUFVO0FBQUEsSUFDVixPQUFPO0FBQUEsSUFDUCxhQUFhO0FBQUEsRUFDZjtBQUVBLFFBQU0sY0FBYyxFQUFFLEdBQUcsaUJBQWlCLEdBQUcsUUFBUTtBQUVyRCxNQUFJO0FBQ0YsVUFBTSxJQUFJLFFBQVEsQ0FBQyxZQUFZO0FBQzdCLG1CQUFhLFNBQVMsWUFBWSxLQUFLLCtCQUErQixPQUFPO0FBQzdFLG1CQUFhLFNBQVMsWUFBWSxLQUFLLCtCQUErQixXQUFXO0FBQUEsSUFDbkYsQ0FBQztBQUFBLEVBQ0gsVUFBRTtBQUNBLGFBQVMsT0FBTztBQUFBLEVBQ2xCO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
76
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3BkZi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBwcmludGluZyB0byBQREYuXG4gKi9cblxuaW1wb3J0IHsgZW5zdXJlTG9hZGVkIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2h0bWwtZWxlbWVudCc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW50ZXJmYWNlIFByaW50VG9QZGZPcHRpb25zIHtcbiAgcmVhZG9ubHkgZmlsZXBhdGg6IHN0cmluZztcbiAgcmVhZG9ubHkgaW5jbHVkZU5hbWU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGxhbmRzY2FwZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbWFyZ2luc1R5cGU6IG51bWJlcjtcbiAgcmVhZG9ubHkgb3BlbjogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcGFnZVNpemU6IHN0cmluZztcbiAgcmVhZG9ubHkgc2NhbGU6IG51bWJlcjtcbiAgcmVhZG9ubHkgc2NhbGVGYWN0b3I6IG51bWJlcjtcbn1cblxuY29uc3QgRUxFQ1RST05fUFJJTlRfVE9fUERGX0NIQU5ORUwgPSAncHJpbnQtdG8tcGRmJztcblxuLyoqXG4gKiBQcmludCB0aGUgZ2l2ZW4gZWxlbWVudCB0byBhIFBERiBmaWxlLlxuICpcbiAqIFdvcmtzIG9ubHkgb24gZGVza3RvcC5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCAtIFRoZSBlbGVtZW50IHRvIHByaW50LlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyB0byB1c2UgZm9yIHRoZSBwcmludC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByaW50VG9QZGYoZWxlbWVudDogSFRNTEVsZW1lbnQsIG9wdGlvbnM6IFBhcnRpYWw8UHJpbnRUb1BkZk9wdGlvbnM+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChQbGF0Zm9ybS5pc01vYmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignUHJpbnRpbmcgdG8gUERGIGlzIG5vdCBzdXBwb3J0ZWQgb24gbW9iaWxlIGRldmljZXMuJyk7XG4gIH1cblxuICBjb25zdCBwcmludERpdiA9IGFjdGl2ZURvY3VtZW50LmJvZHkuY3JlYXRlRGl2KCdwcmludCcpO1xuICBwcmludERpdi5hcHBlbmQoZWxlbWVudCk7XG4gIGF3YWl0IGVuc3VyZUxvYWRlZChwcmludERpdik7XG5cbiAgY29uc3QgREVGQVVMVF9TQ0FMRV9GQUNUT1IgPSAxMDA7XG4gIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogUHJpbnRUb1BkZk9wdGlvbnMgPSB7XG4gICAgZmlsZXBhdGg6ICdVbnRpdGxlZC5wZGYnLFxuICAgIGluY2x1ZGVOYW1lOiBmYWxzZSxcbiAgICBsYW5kc2NhcGU6IGZhbHNlLFxuICAgIG1hcmdpbnNUeXBlOiAwLFxuICAgIG9wZW46IHRydWUsXG4gICAgcGFnZVNpemU6ICdBNCcsXG4gICAgc2NhbGU6IDEsXG4gICAgc2NhbGVGYWN0b3I6IERFRkFVTFRfU0NBTEVfRkFDVE9SXG4gIH07XG5cbiAgY29uc3QgZnVsbE9wdGlvbnMgPSB7IC4uLkRFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGFjdGl2ZVdpbmRvdy5lbGVjdHJvbi5pcGNSZW5kZXJlci5vbmNlKEVMRUNUUk9OX1BSSU5UX1RPX1BERl9DSEFOTkVMLCByZXNvbHZlKTtcbiAgICAgIGFjdGl2ZVdpbmRvdy5lbGVjdHJvbi5pcGNSZW5kZXJlci5zZW5kKEVMRUNUUk9OX1BSSU5UX1RPX1BERl9DSEFOTkVMLCBmdWxsT3B0aW9ucyk7XG4gICAgfSk7XG4gIH0gZmluYWxseSB7XG4gICAgcHJpbnREaXYucmVtb3ZlKCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUEsU0FBUyxvQkFBb0I7QUFDN0IsU0FBUyxnQkFBZ0I7QUFhekIsTUFBTSxnQ0FBZ0M7QUFVdEMsZUFBc0IsV0FBVyxTQUFzQixTQUFvRDtBQUN6RyxNQUFJLFNBQVMsVUFBVTtBQUNyQixVQUFNLElBQUksTUFBTSxxREFBcUQ7QUFBQSxFQUN2RTtBQUVBLFFBQU0sV0FBVyxlQUFlLEtBQUssVUFBVSxPQUFPO0FBQ3RELFdBQVMsT0FBTyxPQUFPO0FBQ3ZCLFFBQU0sYUFBYSxRQUFRO0FBRTNCLFFBQU0sdUJBQXVCO0FBQzdCLFFBQU0sa0JBQXFDO0FBQUEsSUFDekMsVUFBVTtBQUFBLElBQ1YsYUFBYTtBQUFBLElBQ2IsV0FBVztBQUFBLElBQ1gsYUFBYTtBQUFBLElBQ2IsTUFBTTtBQUFBLElBQ04sVUFBVTtBQUFBLElBQ1YsT0FBTztBQUFBLElBQ1AsYUFBYTtBQUFBLEVBQ2Y7QUFFQSxRQUFNLGNBQWMsRUFBRSxHQUFHLGlCQUFpQixHQUFHLFFBQVE7QUFFckQsTUFBSTtBQUNGLFVBQU0sSUFBSSxRQUFRLENBQUMsWUFBWTtBQUM3QixtQkFBYSxTQUFTLFlBQVksS0FBSywrQkFBK0IsT0FBTztBQUM3RSxtQkFBYSxTQUFTLFlBQVksS0FBSywrQkFBK0IsV0FBVztBQUFBLElBQ25GLENBQUM7QUFBQSxFQUNILFVBQUU7QUFDQSxhQUFTLE9BQU87QUFBQSxFQUNsQjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -5,40 +5,32 @@ if you want to view the source, please visit the github repository of this plugi
5
5
 
6
6
  (function () {
7
7
  function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
+ symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
10
  }
11
11
 
12
12
  function ensureBrowserProcess() {
13
13
  const browserProcess = {
14
14
  browser: true,
15
15
  cwd() {
16
- return '/';
16
+ return "/";
17
17
  },
18
18
  env: {},
19
- platform: 'android'
19
+ platform: "android"
20
20
  };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
21
  const existingProcess = globalThis.process;
24
-
25
22
  if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
23
  globalThis.process = browserProcess;
28
24
  return;
29
25
  }
30
-
31
26
  if (existingProcess.versions?.node) {
32
27
  return;
33
28
  }
34
-
35
29
  const existingProcessRecord = existingProcess;
36
-
37
30
  for (const [key, value] of Object.entries(browserProcess)) {
38
31
  existingProcessRecord[key] ??= value;
39
32
  }
40
-
41
- existingProcessRecord['browser'] = true;
33
+ existingProcessRecord["browser"] = true;
42
34
  }
43
35
 
44
36
  (function initEsm() {
@@ -65,4 +57,4 @@ export {
65
57
  plugin_settings_tab as "plugin-settings-tab",
66
58
  settings_migration_api as "settings-migration-api"
67
59
  };
68
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbi9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdwbHVnaW4tYXBpJyBmcm9tICcuL3BsdWdpbi1hcGkudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1jb250ZXh0JyBmcm9tICcuL3BsdWdpbi1jb250ZXh0LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tZXZlbnQtc291cmNlJyBmcm9tICcuL3BsdWdpbi1ldmVudC1zb3VyY2UudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1pbnN0YWxsLXN0YXRlJyBmcm9tICcuL3BsdWdpbi1pbnN0YWxsLXN0YXRlLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tbGlmZWN5Y2xlLWV2ZW50cycgZnJvbSAnLi9wbHVnaW4tbGlmZWN5Y2xlLWV2ZW50cy50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLXNldHRpbmdzLXRhYicgZnJvbSAnLi9wbHVnaW4tc2V0dGluZ3MtdGFiLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4nIGZyb20gJy4vcGx1Z2luLnRzJztcbmV4cG9ydCAqIGFzICdzZXR0aW5ncy1taWdyYXRpb24tYXBpJyBmcm9tICcuL3NldHRpbmdzLW1pZ3JhdGlvbi1hcGkudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFlBQVlBLGdCQUFrQjtBQUM5QixZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWUMseUJBQTJCO0FBQ3ZDLFlBQVlDLDBCQUE0QjtBQUN4QyxZQUFZQyw2QkFBK0I7QUFDM0MsWUFBWUMseUJBQTJCO0FBQ3ZDLFlBQVksWUFBYztBQUMxQixZQUFZQyw0QkFBOEI7IiwKICAibmFtZXMiOiBbInBsdWdpbi1hcGkiLCAicGx1Z2luLWNvbnRleHQiLCAicGx1Z2luLWV2ZW50LXNvdXJjZSIsICJwbHVnaW4taW5zdGFsbC1zdGF0ZSIsICJwbHVnaW4tbGlmZWN5Y2xlLWV2ZW50cyIsICJwbHVnaW4tc2V0dGluZ3MtdGFiIiwgInNldHRpbmdzLW1pZ3JhdGlvbi1hcGkiXQp9Cg==
60
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbi9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdwbHVnaW4tYXBpJyBmcm9tICcuL3BsdWdpbi1hcGkudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1jb250ZXh0JyBmcm9tICcuL3BsdWdpbi1jb250ZXh0LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tZXZlbnQtc291cmNlJyBmcm9tICcuL3BsdWdpbi1ldmVudC1zb3VyY2UudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1pbnN0YWxsLXN0YXRlJyBmcm9tICcuL3BsdWdpbi1pbnN0YWxsLXN0YXRlLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tbGlmZWN5Y2xlLWV2ZW50cycgZnJvbSAnLi9wbHVnaW4tbGlmZWN5Y2xlLWV2ZW50cy50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLXNldHRpbmdzLXRhYicgZnJvbSAnLi9wbHVnaW4tc2V0dGluZ3MtdGFiLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4nIGZyb20gJy4vcGx1Z2luLnRzJztcbmV4cG9ydCAqIGFzICdzZXR0aW5ncy1taWdyYXRpb24tYXBpJyBmcm9tICcuL3NldHRpbmdzLW1pZ3JhdGlvbi1hcGkudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxZQUFZQSxnQkFBa0I7QUFDOUIsWUFBWUMsb0JBQXNCO0FBQ2xDLFlBQVlDLHlCQUEyQjtBQUN2QyxZQUFZQywwQkFBNEI7QUFDeEMsWUFBWUMsNkJBQStCO0FBQzNDLFlBQVlDLHlCQUEyQjtBQUN2QyxZQUFZLFlBQWM7QUFDMUIsWUFBWUMsNEJBQThCOyIsCiAgIm5hbWVzIjogWyJwbHVnaW4tYXBpIiwgInBsdWdpbi1jb250ZXh0IiwgInBsdWdpbi1ldmVudC1zb3VyY2UiLCAicGx1Z2luLWluc3RhbGwtc3RhdGUiLCAicGx1Z2luLWxpZmVjeWNsZS1ldmVudHMiLCAicGx1Z2luLXNldHRpbmdzLXRhYiIsICJzZXR0aW5ncy1taWdyYXRpb24tYXBpIl0KfQo=