jekyll-theme-hydejack 8.3.2 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +1208 -0
  3. data/LICENSE.md +9 -3
  4. data/NOTICE.md +290 -0
  5. data/README.md +135 -93
  6. data/_config.yml +73 -0
  7. data/_includes/base-classes +9 -0
  8. data/_includes/body/analytics.html +1 -1
  9. data/_includes/body/comments.html +1 -1
  10. data/_includes/body/footer.html +3 -3
  11. data/_includes/body/index.html +17 -16
  12. data/_includes/body/main.html +3 -13
  13. data/_includes/body/menu.html +3 -2
  14. data/_includes/body/nav.html +4 -4
  15. data/_includes/body/scripts.html +5 -20
  16. data/_includes/body/sidebar-bg.html +13 -0
  17. data/_includes/body/sidebar-sticky.html +25 -0
  18. data/_includes/body/sidebar.html +7 -40
  19. data/_includes/components/about.html +1 -1
  20. data/_includes/components/author.html +3 -3
  21. data/_includes/components/hy-img.html +15 -26
  22. data/_includes/components/link.html +1 -1
  23. data/_includes/components/message.html +1 -1
  24. data/_includes/components/post-list-item.html +3 -5
  25. data/_includes/components/post.html +14 -11
  26. data/_includes/components/related-posts.html +14 -4
  27. data/_includes/components/tag-list.html +5 -1
  28. data/_includes/head/css/inline +1 -0
  29. data/_includes/head/index.html +14 -8
  30. data/_includes/head/links-static.html +27 -0
  31. data/_includes/head/links.html +1 -34
  32. data/_includes/head/meta-static.html +18 -0
  33. data/_includes/head/meta.html +9 -21
  34. data/_includes/head/page-style.html +1 -3
  35. data/_includes/head/scripts.html +13 -14
  36. data/_includes/head/styles-inline.html +19 -0
  37. data/_includes/head/styles-layout.html +4 -0
  38. data/_includes/head/styles-no-inline.html +8 -0
  39. data/_includes/head/styles.html +5 -46
  40. data/_includes/header.txt +1 -1
  41. data/_includes/if-non-null +7 -0
  42. data/_includes/my-body.html +1 -1
  43. data/_includes/my-scripts.html +1 -1
  44. data/_includes/scripts/load-js.min.js +1 -1
  45. data/_includes/scripts/nomodule.js +21 -0
  46. data/_includes/scripts/nomodule.min.js +1 -0
  47. data/_includes/smart-url +1 -0
  48. data/_includes/smart-url.txt +1 -1
  49. data/_includes/styles/common.scss +18 -0
  50. data/_includes/styles/inline.scss +16 -38
  51. data/_includes/styles/page-style.scss +5 -52
  52. data/_includes/styles/style.scss +22 -43
  53. data/_includes/styles/variables.scss +62 -0
  54. data/_includes/templates/animation.html +1 -1
  55. data/_includes/templates/back.html +3 -3
  56. data/_includes/templates/error.html +1 -1
  57. data/_includes/templates/forward.html +6 -0
  58. data/_includes/templates/index.html +10 -10
  59. data/_includes/templates/loading.html +1 -1
  60. data/_includes/templates/permalink.html +2 -2
  61. data/_layouts/about.html +1 -1
  62. data/_layouts/base.html +7 -2
  63. data/_layouts/blog.html +9 -7
  64. data/_layouts/compress.html +1 -1
  65. data/_layouts/default.html +4 -4
  66. data/_layouts/list.html +11 -17
  67. data/_layouts/page.html +1 -0
  68. data/_layouts/post.html +5 -3
  69. data/_sass/_mixins.scss +7 -21
  70. data/_sass/_spinner.scss +1 -1
  71. data/_sass/_syntax.scss +142 -130
  72. data/_sass/_variables.scss +2 -43
  73. data/_sass/html.scss +42 -0
  74. data/_sass/hydejack/__inline__/_avatar.scss +10 -10
  75. data/_sass/hydejack/__inline__/_base.scss +7 -21
  76. data/_sass/hydejack/__inline__/_content.scss +9 -2
  77. data/_sass/hydejack/__inline__/_images.scss +1 -3
  78. data/_sass/hydejack/__inline__/_links.scss +28 -13
  79. data/_sass/hydejack/__inline__/_menu.scss +42 -13
  80. data/_sass/hydejack/__inline__/_sidebar.scss +40 -14
  81. data/_sass/hydejack/__inline__/_social.scss +3 -0
  82. data/_sass/hydejack/__inline__/_toc.scss +55 -0
  83. data/_sass/hydejack/__inline__/_utilities.scss +3 -0
  84. data/_sass/hydejack/__link__/_avatar.scss +0 -4
  85. data/_sass/hydejack/__link__/_base.scss +1 -2
  86. data/_sass/hydejack/__link__/_break-layout.scss +17 -8
  87. data/_sass/hydejack/__link__/_content.scss +1 -0
  88. data/_sass/hydejack/__link__/_footer.scss +6 -8
  89. data/_sass/hydejack/__link__/_images.scss +8 -39
  90. data/_sass/hydejack/__link__/_katex.scss +1 -26
  91. data/_sass/hydejack/__link__/_links.scss +29 -20
  92. data/_sass/hydejack/__link__/_mark-external.scss +2 -7
  93. data/_sass/hydejack/__link__/_menu.scss +63 -8
  94. data/_sass/hydejack/__link__/_sidebar.scss +12 -9
  95. data/_sass/hydejack/__link__/_toc.scss +53 -0
  96. data/_sass/hydejack/__link__/_utilities.scss +3 -0
  97. data/_sass/hydejack/_avatar.pre.scss +10 -12
  98. data/_sass/hydejack/_base.pre.scss +7 -23
  99. data/_sass/hydejack/_break-layout.pre.scss +19 -10
  100. data/_sass/hydejack/_content.pre.scss +10 -2
  101. data/_sass/hydejack/_footer.pre.scss +6 -8
  102. data/_sass/hydejack/_images.pre.scss +9 -41
  103. data/_sass/hydejack/_katex.pre.scss +3 -28
  104. data/_sass/hydejack/_links.pre.scss +49 -19
  105. data/_sass/hydejack/_mark-external.pre.scss +2 -7
  106. data/_sass/hydejack/_menu.pre.scss +91 -22
  107. data/_sass/hydejack/_sidebar.pre.scss +48 -22
  108. data/_sass/hydejack/_social.pre.scss +3 -0
  109. data/_sass/hydejack/_toc.pre.scss +65 -0
  110. data/_sass/hydejack/_utilities.pre.scss +3 -0
  111. data/_sass/my-inline.scss +2 -16
  112. data/_sass/my-style.scss +0 -9
  113. data/_sass/pooleparty/__inline__/_base.scss +14 -9
  114. data/_sass/pooleparty/__inline__/_message.scss +31 -0
  115. data/_sass/pooleparty/__inline__/_posts.scss +19 -2
  116. data/_sass/pooleparty/__inline__/_table.scss +0 -28
  117. data/_sass/pooleparty/__inline__/_type.scss +81 -15
  118. data/_sass/pooleparty/__link__/_base.scss +11 -5
  119. data/_sass/pooleparty/__link__/_code.scss +40 -7
  120. data/_sass/pooleparty/__link__/_footnotes.scss +4 -5
  121. data/_sass/pooleparty/__link__/_pagination.scss +3 -2
  122. data/_sass/pooleparty/__link__/_posts.scss +11 -6
  123. data/_sass/pooleparty/__link__/_read-more.scss +1 -1
  124. data/_sass/pooleparty/__link__/_table.scss +27 -17
  125. data/_sass/pooleparty/__link__/_type.scss +56 -19
  126. data/_sass/pooleparty/_base.pre.scss +29 -18
  127. data/_sass/pooleparty/_code.pre.scss +40 -7
  128. data/_sass/pooleparty/_footnotes.pre.scss +4 -5
  129. data/_sass/pooleparty/_message.pre.scss +33 -2
  130. data/_sass/pooleparty/_pagination.pre.scss +5 -4
  131. data/_sass/pooleparty/_posts.pre.scss +34 -12
  132. data/_sass/pooleparty/_read-more.pre.scss +1 -1
  133. data/_sass/pooleparty/_table.pre.scss +13 -21
  134. data/_sass/pooleparty/_type.pre.scss +100 -35
  135. data/assets/bower.json +1 -2
  136. data/assets/bower_components/MathJax/.bower.json +28 -0
  137. data/assets/bower_components/MathJax/LICENSE +202 -0
  138. data/assets/bower_components/MathJax/bower.json +11 -0
  139. data/assets/bower_components/MathJax/composer.json +14 -0
  140. data/assets/bower_components/MathJax/es5/a11y/assistive-mml.js +1 -0
  141. data/assets/bower_components/MathJax/es5/a11y/complexity.js +1 -0
  142. data/assets/bower_components/MathJax/es5/a11y/explorer.js +1 -0
  143. data/assets/bower_components/MathJax/es5/a11y/semantic-enrich.js +1 -0
  144. data/assets/bower_components/MathJax/es5/adaptors/liteDOM.js +1 -0
  145. data/assets/bower_components/MathJax/es5/core.js +1 -0
  146. data/assets/bower_components/MathJax/es5/input/asciimath.js +1 -0
  147. data/assets/bower_components/MathJax/es5/input/mml.js +1 -0
  148. data/assets/bower_components/MathJax/es5/input/mml/entities.js +1 -0
  149. data/assets/bower_components/MathJax/es5/input/tex-base.js +1 -0
  150. data/assets/bower_components/MathJax/es5/input/tex-full.js +1 -0
  151. data/assets/bower_components/MathJax/es5/input/tex.js +1 -0
  152. data/assets/bower_components/MathJax/es5/input/tex/extensions/action.js +1 -0
  153. data/assets/bower_components/MathJax/es5/input/tex/extensions/all-packages.js +1 -0
  154. data/assets/bower_components/MathJax/es5/input/tex/extensions/ams.js +1 -0
  155. data/assets/bower_components/MathJax/es5/input/tex/extensions/amscd.js +1 -0
  156. data/assets/bower_components/MathJax/es5/input/tex/extensions/autoload.js +1 -0
  157. data/assets/bower_components/MathJax/es5/input/tex/extensions/bbox.js +1 -0
  158. data/assets/bower_components/MathJax/es5/input/tex/extensions/boldsymbol.js +1 -0
  159. data/assets/bower_components/MathJax/es5/input/tex/extensions/braket.js +1 -0
  160. data/assets/bower_components/MathJax/es5/input/tex/extensions/bussproofs.js +1 -0
  161. data/assets/bower_components/MathJax/es5/input/tex/extensions/cancel.js +1 -0
  162. data/assets/bower_components/MathJax/es5/input/tex/extensions/color.js +1 -0
  163. data/assets/bower_components/MathJax/es5/input/tex/extensions/colorV2.js +1 -0
  164. data/assets/bower_components/MathJax/es5/input/tex/extensions/configMacros.js +1 -0
  165. data/assets/bower_components/MathJax/es5/input/tex/extensions/enclose.js +1 -0
  166. data/assets/bower_components/MathJax/es5/input/tex/extensions/extpfeil.js +1 -0
  167. data/assets/bower_components/MathJax/es5/input/tex/extensions/html.js +1 -0
  168. data/assets/bower_components/MathJax/es5/input/tex/extensions/mhchem.js +1 -0
  169. data/assets/bower_components/MathJax/es5/input/tex/extensions/newcommand.js +1 -0
  170. data/assets/bower_components/MathJax/es5/input/tex/extensions/noerrors.js +1 -0
  171. data/assets/bower_components/MathJax/es5/input/tex/extensions/noundefined.js +1 -0
  172. data/assets/bower_components/MathJax/es5/input/tex/extensions/physics.js +1 -0
  173. data/assets/bower_components/MathJax/es5/input/tex/extensions/require.js +1 -0
  174. data/assets/bower_components/MathJax/es5/input/tex/extensions/tagFormat.js +1 -0
  175. data/assets/bower_components/MathJax/es5/input/tex/extensions/unicode.js +1 -0
  176. data/assets/bower_components/MathJax/es5/input/tex/extensions/verb.js +1 -0
  177. data/assets/bower_components/MathJax/es5/latest.js +1 -0
  178. data/assets/bower_components/MathJax/es5/loader.js +1 -0
  179. data/assets/bower_components/MathJax/es5/mml-chtml.js +1 -0
  180. data/assets/bower_components/MathJax/es5/mml-svg.js +1 -0
  181. data/assets/bower_components/MathJax/es5/node-main.js +1 -0
  182. data/assets/bower_components/MathJax/es5/output/chtml.js +1 -0
  183. data/assets/bower_components/MathJax/es5/output/chtml/fonts/tex.js +1 -0
  184. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff +0 -0
  185. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff +0 -0
  186. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff +0 -0
  187. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff +0 -0
  188. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff +0 -0
  189. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff +0 -0
  190. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff +0 -0
  191. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
  192. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff +0 -0
  193. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
  194. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff +0 -0
  195. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff +0 -0
  196. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff +0 -0
  197. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff +0 -0
  198. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff +0 -0
  199. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff +0 -0
  200. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
  201. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
  202. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff +0 -0
  203. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff +0 -0
  204. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff +0 -0
  205. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff +0 -0
  206. data/assets/bower_components/MathJax/es5/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
  207. data/assets/bower_components/MathJax/es5/output/svg.js +1 -0
  208. data/assets/bower_components/MathJax/es5/output/svg/fonts/tex.js +1 -0
  209. data/assets/bower_components/MathJax/es5/sre/mathmaps/en.js +104 -0
  210. data/assets/bower_components/MathJax/es5/sre/mathmaps/es.js +104 -0
  211. data/assets/bower_components/MathJax/es5/sre/mathmaps/fr.js +104 -0
  212. data/assets/bower_components/MathJax/es5/sre/mathmaps/mathmaps_ie.js +410 -0
  213. data/assets/bower_components/MathJax/es5/sre/mathmaps/nemeth.js +104 -0
  214. data/assets/bower_components/MathJax/es5/sre/sre_browser.js +1709 -0
  215. data/assets/bower_components/MathJax/es5/startup.js +1 -0
  216. data/assets/bower_components/MathJax/es5/tex-chtml-full.js +1 -0
  217. data/assets/bower_components/MathJax/es5/tex-chtml.js +1 -0
  218. data/assets/bower_components/MathJax/es5/tex-mml-chtml.js +1 -0
  219. data/assets/bower_components/MathJax/es5/tex-mml-svg.js +1 -0
  220. data/assets/bower_components/MathJax/es5/tex-svg-full.js +1 -0
  221. data/assets/bower_components/MathJax/es5/tex-svg.js +1 -0
  222. data/assets/bower_components/MathJax/es5/ui/menu.js +1 -0
  223. data/assets/bower_components/MathJax/package.json +59 -0
  224. data/assets/bower_components/katex/.bower.json +7 -8
  225. data/assets/bower_components/katex/bower.json +1 -1
  226. data/assets/bower_components/katex/dist/contrib/auto-render.js +4 -0
  227. data/assets/bower_components/katex/dist/contrib/auto-render.min.js +1 -1
  228. data/assets/bower_components/katex/dist/contrib/auto-render.mjs +215 -0
  229. data/assets/bower_components/katex/dist/contrib/copy-tex.js +9 -4
  230. data/assets/bower_components/katex/dist/contrib/copy-tex.min.css +1 -1
  231. data/assets/bower_components/katex/dist/contrib/copy-tex.min.js +1 -1
  232. data/assets/bower_components/katex/dist/contrib/copy-tex.mjs +85 -0
  233. data/assets/bower_components/katex/dist/contrib/mathtex-script-type.min.js +1 -1
  234. data/assets/bower_components/katex/dist/contrib/mathtex-script-type.mjs +24 -0
  235. data/assets/bower_components/katex/dist/contrib/mhchem.js +3241 -0
  236. data/assets/bower_components/katex/dist/contrib/mhchem.min.js +1 -0
  237. data/assets/bower_components/katex/dist/contrib/mhchem.mjs +3109 -0
  238. data/assets/bower_components/katex/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
  239. data/assets/bower_components/katex/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
  240. data/assets/bower_components/katex/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  241. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  242. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  243. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  244. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  245. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  246. data/assets/bower_components/katex/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  247. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  248. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  249. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  250. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  251. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  252. data/assets/bower_components/katex/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  253. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
  254. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Bold.woff +0 -0
  255. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
  256. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  257. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  258. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  259. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
  260. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Italic.woff +0 -0
  261. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
  262. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
  263. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Regular.woff +0 -0
  264. data/assets/bower_components/katex/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
  265. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  266. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  267. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  268. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
  269. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-Italic.woff +0 -0
  270. data/assets/bower_components/katex/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
  271. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  272. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  273. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  274. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  275. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  276. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  277. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  278. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  279. data/assets/bower_components/katex/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  280. data/assets/bower_components/katex/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
  281. data/assets/bower_components/katex/dist/fonts/KaTeX_Script-Regular.woff +0 -0
  282. data/assets/bower_components/katex/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
  283. data/assets/bower_components/katex/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
  284. data/assets/bower_components/katex/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
  285. data/assets/bower_components/katex/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  286. data/assets/bower_components/katex/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
  287. data/assets/bower_components/katex/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
  288. data/assets/bower_components/katex/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  289. data/assets/bower_components/katex/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
  290. data/assets/bower_components/katex/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
  291. data/assets/bower_components/katex/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  292. data/assets/bower_components/katex/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
  293. data/assets/bower_components/katex/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
  294. data/assets/bower_components/katex/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  295. data/assets/bower_components/katex/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  296. data/assets/bower_components/katex/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  297. data/assets/bower_components/katex/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  298. data/assets/bower_components/katex/dist/katex.css +18 -4
  299. data/assets/bower_components/katex/dist/katex.js +1011 -663
  300. data/assets/bower_components/katex/dist/katex.min.css +1 -1
  301. data/assets/bower_components/katex/dist/katex.min.js +1 -1
  302. data/assets/bower_components/katex/dist/katex.mjs +904 -645
  303. data/assets/bower_components/katex/yarn.lock +3091 -2622
  304. data/assets/css/{hydejack-8.3.2.css → hydejack-9.0.0.css} +0 -0
  305. data/assets/icomoon/fonts/icomoon.eot +0 -0
  306. data/assets/icomoon/fonts/icomoon.svg +10 -2
  307. data/assets/icomoon/fonts/icomoon.ttf +0 -0
  308. data/assets/icomoon/fonts/icomoon.woff +0 -0
  309. data/assets/icomoon/selection.json +1 -2555
  310. data/assets/icomoon/style.css +37 -12
  311. data/assets/js/.gitkeep +0 -0
  312. data/assets/js/LEGACY-drawer-hydejack-9.0.0.js +14 -0
  313. data/assets/js/LEGACY-fetch-hydejack-9.0.0.js +14 -0
  314. data/assets/js/LEGACY-hydejack-9.0.0.js +28 -0
  315. data/assets/js/LEGACY-navbar-hydejack-9.0.0.js +14 -0
  316. data/assets/js/LEGACY-push-state-hydejack-9.0.0.js +14 -0
  317. data/assets/js/LEGACY-resize-observer-hydejack-9.0.0.js +14 -0
  318. data/assets/js/LEGACY-shadydom-hydejack-9.0.0.js +14 -0
  319. data/assets/js/LEGACY-vendors~drawer-hydejack-9.0.0.js +47 -0
  320. data/assets/js/LEGACY-vendors~drawer~push-state-hydejack-9.0.0.js +215 -0
  321. data/assets/js/LEGACY-vendors~fetch-hydejack-9.0.0.js +14 -0
  322. data/assets/js/LEGACY-vendors~intersection-observer-hydejack-9.0.0.js +14 -0
  323. data/assets/js/LEGACY-vendors~push-state-hydejack-9.0.0.js +33 -0
  324. data/assets/js/LEGACY-vendors~shadydom-hydejack-9.0.0.js +155 -0
  325. data/assets/js/LEGACY-vendors~webanimations-hydejack-9.0.0.js +14 -0
  326. data/assets/js/LEGACY-vendors~webcomponents-hydejack-9.0.0.js +34 -0
  327. data/assets/js/LEGACY-webcomponents-hydejack-9.0.0.js +14 -0
  328. data/assets/js/drawer-hydejack-9.0.0.js +14 -0
  329. data/assets/js/fetch-hydejack-9.0.0.js +14 -0
  330. data/assets/js/hydejack-9.0.0.js +28 -0
  331. data/assets/js/navbar-hydejack-9.0.0.js +14 -0
  332. data/assets/js/push-state-hydejack-9.0.0.js +14 -0
  333. data/assets/js/resize-observer-hydejack-9.0.0.js +14 -0
  334. data/assets/js/shadydom-hydejack-9.0.0.js +14 -0
  335. data/assets/js/vendors~drawer-hydejack-9.0.0.js +47 -0
  336. data/assets/js/vendors~drawer~push-state-hydejack-9.0.0.js +163 -0
  337. data/assets/js/vendors~intersection-observer-hydejack-9.0.0.js +14 -0
  338. data/assets/js/vendors~push-state-hydejack-9.0.0.js +33 -0
  339. data/assets/js/vendors~shadydom-hydejack-9.0.0.js +146 -0
  340. data/assets/js/vendors~webanimations-hydejack-9.0.0.js +14 -0
  341. data/assets/js/webcomponents-hydejack-9.0.0.js +14 -0
  342. data/assets/version.json +3 -2
  343. data/licenses/PRO.md +4 -0
  344. data/licenses/README.md +1 -1
  345. data/licenses/{W3C.md → W3C-20150513.md} +0 -0
  346. metadata +170 -55
  347. data/assets/Resume.pdf +0 -0
  348. data/assets/bower_components/fontfaceobserver/.bower.json +0 -33
  349. data/assets/bower_components/fontfaceobserver/.gitignore +0 -2
  350. data/assets/bower_components/fontfaceobserver/.travis.yml +0 -16
  351. data/assets/bower_components/fontfaceobserver/Gruntfile.js +0 -101
  352. data/assets/bower_components/fontfaceobserver/LICENSE +0 -23
  353. data/assets/bower_components/fontfaceobserver/bower.json +0 -22
  354. data/assets/bower_components/fontfaceobserver/exports.js +0 -8
  355. data/assets/bower_components/fontfaceobserver/externs-commonjs.js +0 -10
  356. data/assets/bower_components/fontfaceobserver/externs.js +0 -15
  357. data/assets/bower_components/fontfaceobserver/fontfaceobserver.js +0 -12
  358. data/assets/bower_components/fontfaceobserver/fontfaceobserver.standalone.js +0 -8
  359. data/assets/bower_components/fontfaceobserver/package.json +0 -57
  360. data/assets/bower_components/fontfaceobserver/src/descriptors.js +0 -10
  361. data/assets/bower_components/fontfaceobserver/src/observer.js +0 -349
  362. data/assets/bower_components/fontfaceobserver/src/ruler.js +0 -130
  363. data/assets/bower_components/fontfaceobserver/vendor/google/base.js +0 -1489
  364. data/assets/bower_components/katex/dist/README.md +0 -90
  365. data/assets/bower_components/katex/lint_blacklist.txt +0 -5
  366. data/assets/img/blog/COLOURlovers.com-Hydejack.png +0 -0
  367. data/assets/img/blog/blog-layout.jpg +0 -0
  368. data/assets/img/blog/caleb-george-old.jpg +0 -0
  369. data/assets/img/blog/caleb-george.jpg +0 -0
  370. data/assets/img/blog/cover-page.jpg +0 -0
  371. data/assets/img/blog/dark-mode-ii.jpg +0 -0
  372. data/assets/img/blog/dark-mode.jpg +0 -0
  373. data/assets/img/blog/example-content-ii.jpg +0 -0
  374. data/assets/img/blog/example-content-iii.jpg +0 -0
  375. data/assets/img/blog/hydejack-8.png +0 -0
  376. data/assets/img/blog/hydejack-8@0,25x.png +0 -0
  377. data/assets/img/blog/hydejack-8@0,5x.png +0 -0
  378. data/assets/img/blog/lazy-images.jpg +0 -0
  379. data/assets/img/blog/resume.png +0 -0
  380. data/assets/img/blog/steve-harvey.jpg +0 -0
  381. data/assets/img/blog/w3m.png +0 -0
  382. data/assets/img/blog/wade-lambert.jpg +0 -0
  383. data/assets/img/docs/google-fonts.png +0 -0
  384. data/assets/img/projects/hy-drawer.svg +0 -12
  385. data/assets/img/projects/hy-img.svg +0 -17
  386. data/assets/img/projects/hy-push-state.svg +0 -13
  387. data/assets/js/hydejack-8.3.1.js +0 -47
  388. data/assets/js/hydejack-8.3.2.js +0 -47
  389. data/assets/video/blog-layout.mp4 +0 -0
  390. data/assets/video/cover-page.mp4 +0 -0
  391. data/assets/video/dark-mode.mp4 +0 -0
  392. data/assets/video/lazy-images.mp4 +0 -0
@@ -1 +1 @@
1
- @font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-mathml{border:0;clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer,.katex .sizing{display:inline-block}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{border-right:.05em solid;display:inline-block;margin:0 -.025em;min-width:1px}.katex .mtable .vs-dashed{border-right:.05em dashed}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;fill:currentColor;fill-opacity:1;fill-rule:nonzero;height:inherit;position:absolute;stroke:currentColor;stroke-dasharray:none;stroke-dashoffset:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-width:1;width:100%}.katex svg path{stroke:none}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox{border:.04em solid #000;box-sizing:border-box}.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}
1
+ @font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype");font-weight:400;font-style:normal}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-version:after{content:"0.10.2"}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer,.katex .sizing{display:inline-block}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid;min-width:1px}.katex .mtable .vs-dashed{border-right:.05em dashed}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left}
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.katex=t():e.katex=t()}("undefined"!=typeof self?self:this,function(){return function(r){var n={};function i(e){if(n[e])return n[e].exports;var t=n[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}return i.m=r,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)i.d(r,n,function(e){return t[e]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=2)}([function(e,t,r){},,function(e,t,r){"use strict";r.r(t);r(0);var p=function(){function r(e,t,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=r}return r.prototype.getSource=function(){return this.lexer.input.slice(this.start,this.end)},r.range=function(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new r(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc},r}(),a=function(){function r(e,t){this.text=void 0,this.loc=void 0,this.text=e,this.loc=t}return r.prototype.range=function(e,t){return new r(t,p.range(this,e))},r}(),n=function e(t,r){this.position=void 0;var n,i="KaTeX parse error: "+t,a=r&&r.loc;if(a&&a.start<=a.end){var o=a.lexer.input;n=a.start;var s=a.end;n===o.length?i+=" at end of input: ":i+=" at position "+(n+1)+": ";var l=o.slice(n,s).replace(/[^]/g,"$&\u0332");i+=(15":">","<":"<",'"':""","'":"'"},s=/[&><"']/g;var l=function e(t){return"ordgroup"===t.type?1===t.body.length?e(t.body[0]):t:"color"===t.type?1===t.body.length?e(t.body[0]):t:"font"===t.type?e(t.body):t},T=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},Y={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(s,function(e){return o[e]})},hyphenate:function(e){return e.replace(i,"-$1").toLowerCase()},getBaseElem:l,isCharacterBox:function(e){var t=l(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type}},h=function(){function e(e){this.displayMode=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.allowedProtocols=void 0,e=e||{},this.displayMode=Y.deflt(e.displayMode,!1),this.throwOnError=Y.deflt(e.throwOnError,!0),this.errorColor=Y.deflt(e.errorColor,"#cc0000"),this.macros=e.macros||{},this.colorIsTextColor=Y.deflt(e.colorIsTextColor,!1),this.strict=Y.deflt(e.strict,"warn"),this.maxSize=Math.max(0,Y.deflt(e.maxSize,1/0)),this.maxExpand=Math.max(0,Y.deflt(e.maxExpand,1e3)),this.allowedProtocols=Y.deflt(e.allowedProtocols,["http","https","mailto","_relative"])}var t=e.prototype;return t.reportNonstrict=function(e,t,r){var n=this.strict;if("function"==typeof n&&(n=n(e,t,r)),n&&"ignore"!==n){if(!0===n||"error"===n)throw new X("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",r);"warn"===n?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+n+"': "+t+" ["+e+"]")}},t.useStrictBehavior=function(e,t,r){var n=this.strict;if("function"==typeof n)try{n=n(e,t,r)}catch(e){n="error"}return!(!n||"ignore"===n)&&(!0===n||"error"===n||("warn"===n?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+n+"': "+t+" ["+e+"]"),!1))},e}(),m=function(){function e(e,t,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=r}var t=e.prototype;return t.sup=function(){return c[u[this.id]]},t.sub=function(){return c[d[this.id]]},t.fracNum=function(){return c[f[this.id]]},t.fracDen=function(){return c[g[this.id]]},t.cramp=function(){return c[v[this.id]]},t.text=function(){return c[y[this.id]]},t.isTight=function(){return 2<=this.size},e}(),c=[new m(0,0,!1),new m(1,0,!0),new m(2,1,!1),new m(3,1,!0),new m(4,2,!1),new m(5,2,!0),new m(6,3,!1),new m(7,3,!0)],u=[4,5,4,5,6,7,6,7],d=[5,5,5,5,7,7,7,7],f=[2,3,4,5,6,7,6,7],g=[3,3,5,5,7,7,7,7],v=[1,1,3,3,5,5,7,7],y=[0,1,2,3,2,3,2,3],q={DISPLAY:c[0],TEXT:c[2],SCRIPT:c[4],SCRIPTSCRIPT:c[6]},b=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var x=[];function w(e){for(var t=0;t=x[t]&&e<=x[t+1])return!0;return!1}b.forEach(function(e){return e.blocks.forEach(function(e){return x.push.apply(x,e)})});var k={path:{sqrtMain:"M95,702c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,\n-10,-9.5,-14c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54c44.2,-33.3,65.8,\n-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10s173,378,173,378c0.7,0,\n35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429c69,-144,104.5,-217.7,106.5,\n-221c5.3,-9.3,12,-14,20,-14H400000v40H845.2724s-225.272,467,-225.272,467\ns-235,486,-235,486c-2.7,4.7,-9,7,-19,7c-6,0,-10,-1,-12,-3s-194,-422,-194,-422\ns-65,47,-65,47z M834 80H400000v40H845z",sqrtSize1:"M263,681c0.7,0,18,39.7,52,119c34,79.3,68.167,\n158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120c340,-704.7,510.7,-1060.3,512,-1067\nc4.7,-7.3,11,-11,19,-11H40000v40H1012.3s-271.3,567,-271.3,567c-38.7,80.7,-84,\n175,-136,283c-52,108,-89.167,185.3,-111.5,232c-22.3,46.7,-33.8,70.3,-34.5,71\nc-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1s-109,-253,-109,-253c-72.7,-168,-109.3,\n-252,-110,-252c-10.7,8,-22,16.7,-34,26c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26\ns76,-59,76,-59s76,-60,76,-60z M1001 80H40000v40H1012z",sqrtSize2:"M1001,80H400000v40H1013.1s-83.4,268,-264.1,840c-180.7,\n572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,\n-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744c-10,12,-21,25,-33,39s-32,39,-32,39\nc-6,-5.3,-15,-14,-27,-26s25,-30,25,-30c26.7,-32.7,52,-63,76,-91s52,-60,52,-60\ns208,722,208,722c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,\n-658.5c53.7,-170.3,84.5,-266.8,92.5,-289.5c4,-6.7,10,-10,18,-10z\nM1001 80H400000v40H1013z",sqrtSize3:"M424,2478c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,\n-342,-109.8,-513.3,-110.5,-514c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,\n25c-5.7,9.3,-9.8,16,-12.5,20s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,\n-13s76,-122,76,-122s77,-121,77,-121s209,968,209,968c0,-2,84.7,-361.7,254,-1079\nc169.3,-717.3,254.7,-1077.7,256,-1081c4,-6.7,10,-10,18,-10H400000v40H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M1001 80H400000v40H1014z",sqrtSize4:"M473,2793c339.3,-1799.3,509.3,-2700,510,-2702\nc3.3,-7.3,9.3,-11,18,-11H400000v40H1017.7s-90.5,478,-276.2,1466c-185.7,988,\n-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,\n-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200c0,-1.3,-5.3,8.7,-16,30c-10.7,\n21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26s76,-153,76,-153s77,-151,\n77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,606z\nM1001 80H400000v40H1017z",doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 241v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"}},A=function(){function e(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var t=e.prototype;return t.hasClass=function(e){return Y.contains(this.classes,e)},t.toNode=function(){for(var e=document.createDocumentFragment(),t=0;t"},C=function(){function e(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,z.call(this,e,r,n),this.children=t||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return Y.contains(this.classes,e)},t.toNode=function(){return M.call(this,"span")},t.toMarkup=function(){return B.call(this,"span")},e}(),N=function(){function e(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,z.call(this,t,n),this.children=r||[],this.setAttribute("href",e)}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return Y.contains(this.classes,e)},t.toNode=function(){return M.call(this,"a")},t.toMarkup=function(){return B.call(this,"a")},e}(),E={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"},O=function(){function e(e,t,r,n,i,a,o,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=e,this.height=t||0,this.depth=r||0,this.italic=n||0,this.skew=i||0,this.width=a||0,this.classes=o||[],this.style=s||{},this.maxFontSize=0;var l=function(e){for(var t=0;t=i[0]&&e<=i[1])return r.name}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=E[this.text])}var t=e.prototype;return t.hasClass=function(e){return Y.contains(this.classes,e)},t.toNode=function(){var e=document.createTextNode(this.text),t=null;for(var r in 0"):i},e}(),I=function(){function e(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var r=0;r":""},e}(),L=function(){function e(e){this.attributes=void 0,this.attributes=e||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e},t.toMarkup=function(){var e="",">"),j($,K,se,":",":"),j($,K,se,"\u2248","\\approx",!0),j($,K,se,"\u2245","\\cong",!0),j($,K,se,"\u2265","\\ge"),j($,K,se,"\u2265","\\geq",!0),j($,K,se,"\u2190","\\gets"),j($,K,se,">","\\gt"),j($,K,se,"\u2208","\\in",!0),j($,K,se,"\u0338","\\@not"),j($,K,se,"\u2282","\\subset",!0),j($,K,se,"\u2283","\\supset",!0),j($,K,se,"\u2286","\\subseteq",!0),j($,K,se,"\u2287","\\supseteq",!0),j($,J,se,"\u2288","\\nsubseteq",!0),j($,J,se,"\u2289","\\nsupseteq",!0),j($,K,se,"\u22a8","\\models"),j($,K,se,"\u2190","\\leftarrow",!0),j($,K,se,"\u2264","\\le"),j($,K,se,"\u2264","\\leq",!0),j($,K,se,"<","\\lt"),j($,K,se,"\u2192","\\rightarrow",!0),j($,K,se,"\u2192","\\to"),j($,J,se,"\u2271","\\ngeq",!0),j($,J,se,"\u2270","\\nleq",!0),j($,K,le,"\xa0","\\ "),j($,K,le,"\xa0","~"),j($,K,le,"\xa0","\\space"),j($,K,le,"\xa0","\\nobreakspace"),j(Z,K,le,"\xa0","\\ "),j(Z,K,le,"\xa0","~"),j(Z,K,le,"\xa0","\\space"),j(Z,K,le,"\xa0","\\nobreakspace"),j($,K,le,null,"\\nobreak"),j($,K,le,null,"\\allowbreak"),j($,K,oe,",",","),j($,K,oe,";",";"),j($,J,ee,"\u22bc","\\barwedge",!0),j($,J,ee,"\u22bb","\\veebar",!0),j($,K,ee,"\u2299","\\odot",!0),j($,K,ee,"\u2295","\\oplus",!0),j($,K,ee,"\u2297","\\otimes",!0),j($,K,he,"\u2202","\\partial",!0),j($,K,ee,"\u2298","\\oslash",!0),j($,J,ee,"\u229a","\\circledcirc",!0),j($,J,ee,"\u22a1","\\boxdot",!0),j($,K,ee,"\u25b3","\\bigtriangleup"),j($,K,ee,"\u25bd","\\bigtriangledown"),j($,K,ee,"\u2020","\\dagger"),j($,K,ee,"\u22c4","\\diamond"),j($,K,ee,"\u22c6","\\star"),j($,K,ee,"\u25c3","\\triangleleft"),j($,K,ee,"\u25b9","\\triangleright"),j($,K,ae,"{","\\{"),j(Z,K,he,"{","\\{"),j(Z,K,he,"{","\\textbraceleft"),j($,K,te,"}","\\}"),j(Z,K,he,"}","\\}"),j(Z,K,he,"}","\\textbraceright"),j($,K,ae,"{","\\lbrace"),j($,K,te,"}","\\rbrace"),j($,K,ae,"[","\\lbrack"),j(Z,K,he,"[","\\lbrack"),j($,K,te,"]","\\rbrack"),j(Z,K,he,"]","\\rbrack"),j($,K,ae,"(","\\lparen"),j($,K,te,")","\\rparen"),j(Z,K,he,"<","\\textless"),j(Z,K,he,">","\\textgreater"),j($,K,ae,"\u230a","\\lfloor",!0),j($,K,te,"\u230b","\\rfloor",!0),j($,K,ae,"\u2308","\\lceil",!0),j($,K,te,"\u2309","\\rceil",!0),j($,K,he,"\\","\\backslash"),j($,K,he,"\u2223","|"),j($,K,he,"\u2223","\\vert"),j(Z,K,he,"|","\\textbar"),j($,K,he,"\u2225","\\|"),j($,K,he,"\u2225","\\Vert"),j(Z,K,he,"\u2225","\\textbardbl"),j(Z,K,he,"~","\\textasciitilde"),j($,K,se,"\u2191","\\uparrow",!0),j($,K,se,"\u21d1","\\Uparrow",!0),j($,K,se,"\u2193","\\downarrow",!0),j($,K,se,"\u21d3","\\Downarrow",!0),j($,K,se,"\u2195","\\updownarrow",!0),j($,K,se,"\u21d5","\\Updownarrow",!0),j($,K,ie,"\u2210","\\coprod"),j($,K,ie,"\u22c1","\\bigvee"),j($,K,ie,"\u22c0","\\bigwedge"),j($,K,ie,"\u2a04","\\biguplus"),j($,K,ie,"\u22c2","\\bigcap"),j($,K,ie,"\u22c3","\\bigcup"),j($,K,ie,"\u222b","\\int"),j($,K,ie,"\u222b","\\intop"),j($,K,ie,"\u222c","\\iint"),j($,K,ie,"\u222d","\\iiint"),j($,K,ie,"\u220f","\\prod"),j($,K,ie,"\u2211","\\sum"),j($,K,ie,"\u2a02","\\bigotimes"),j($,K,ie,"\u2a01","\\bigoplus"),j($,K,ie,"\u2a00","\\bigodot"),j($,K,ie,"\u222e","\\oint"),j($,K,ie,"\u222f","\\oiint"),j($,K,ie,"\u2230","\\oiiint"),j($,K,ie,"\u2a06","\\bigsqcup"),j($,K,ie,"\u222b","\\smallint"),j(Z,K,re,"\u2026","\\textellipsis"),j($,K,re,"\u2026","\\mathellipsis"),j(Z,K,re,"\u2026","\\ldots",!0),j($,K,re,"\u2026","\\ldots",!0),j($,K,re,"\u22ef","\\@cdots",!0),j($,K,re,"\u22f1","\\ddots",!0),j($,K,he,"\u22ee","\\varvdots"),j($,K,Q,"\u02ca","\\acute"),j($,K,Q,"\u02cb","\\grave"),j($,K,Q,"\xa8","\\ddot"),j($,K,Q,"~","\\tilde"),j($,K,Q,"\u02c9","\\bar"),j($,K,Q,"\u02d8","\\breve"),j($,K,Q,"\u02c7","\\check"),j($,K,Q,"^","\\hat"),j($,K,Q,"\u20d7","\\vec"),j($,K,Q,"\u02d9","\\dot"),j($,K,Q,"\u02da","\\mathring"),j($,K,ne,"\u0131","\\imath",!0),j($,K,ne,"\u0237","\\jmath",!0),j(Z,K,he,"\u0131","\\i",!0),j(Z,K,he,"\u0237","\\j",!0),j(Z,K,he,"\xdf","\\ss",!0),j(Z,K,he,"\xe6","\\ae",!0),j(Z,K,he,"\xe6","\\ae",!0),j(Z,K,he,"\u0153","\\oe",!0),j(Z,K,he,"\xf8","\\o",!0),j(Z,K,he,"\xc6","\\AE",!0),j(Z,K,he,"\u0152","\\OE",!0),j(Z,K,he,"\xd8","\\O",!0),j(Z,K,Q,"\u02ca","\\'"),j(Z,K,Q,"\u02cb","\\`"),j(Z,K,Q,"\u02c6","\\^"),j(Z,K,Q,"\u02dc","\\~"),j(Z,K,Q,"\u02c9","\\="),j(Z,K,Q,"\u02d8","\\u"),j(Z,K,Q,"\u02d9","\\."),j(Z,K,Q,"\u02da","\\r"),j(Z,K,Q,"\u02c7","\\v"),j(Z,K,Q,"\xa8",'\\"'),j(Z,K,Q,"\u02dd","\\H"),j(Z,K,Q,"\u25ef","\\textcircled");var me={"--":!0,"---":!0,"``":!0,"''":!0};j(Z,K,he,"\u2013","--"),j(Z,K,he,"\u2013","\\textendash"),j(Z,K,he,"\u2014","---"),j(Z,K,he,"\u2014","\\textemdash"),j(Z,K,he,"\u2018","`"),j(Z,K,he,"\u2018","\\textquoteleft"),j(Z,K,he,"\u2019","'"),j(Z,K,he,"\u2019","\\textquoteright"),j(Z,K,he,"\u201c","``"),j(Z,K,he,"\u201c","\\textquotedblleft"),j(Z,K,he,"\u201d","''"),j(Z,K,he,"\u201d","\\textquotedblright"),j($,K,he,"\xb0","\\degree",!0),j(Z,K,he,"\xb0","\\degree"),j(Z,K,he,"\xb0","\\textdegree",!0),j($,K,ne,"\xa3","\\pounds"),j($,K,ne,"\xa3","\\mathsterling",!0),j(Z,K,ne,"\xa3","\\pounds"),j(Z,K,ne,"\xa3","\\textsterling",!0),j($,J,he,"\u2720","\\maltese"),j(Z,J,he,"\u2720","\\maltese"),j(Z,K,le,"\xa0","\\ "),j(Z,K,le,"\xa0"," "),j(Z,K,le,"\xa0","~");for(var ce='0123456789/@."',ue=0;uet&&(t=a.height),a.depth>r&&(r=a.depth),a.maxFontSize>n&&(n=a.maxFontSize)}e.height=t,e.depth=r,e.maxFontSize=n},Ge=function(e,t,r,n){var i=new C(e,t,r,n);return Ue(i),i},Xe=function(e,t,r,n){return new C(e,t,r,n)},Ye=function(e){var t=new A(e);return Ue(t),t},_e=function(e,t,r){var n="";switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}return n+"-"+("textbf"===t&&"textit"===r?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")},We={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},je={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},$e={fontMap:We,makeSymbol:Fe,mathsym:function(e,t,r,n){return void 0===n&&(n=[]),r&&r.font&&"boldsymbol"===r.font&&Pe(e,"Main-Bold",t).metrics?Fe(e,"Main-Bold",t,r,n.concat(["mathbf"])):"\\"===e||"main"===W[t][e].font?Fe(e,"Main-Regular",t,r,n):Fe(e,"AMS-Regular",t,r,n.concat(["amsrm"]))},makeSpan:Ge,makeSvgSpan:Xe,makeLineSpan:function(e,t,r){var n=Ge([e],[],t);return n.height=r||t.fontMetrics().defaultRuleThickness,n.style.borderBottomWidth=n.height+"em",n.maxFontSize=1,n},makeAnchor:function(e,t,r,n){var i=new N(e,t,r,n);return Ue(i),i},makeFragment:Ye,wrapFragment:function(e,t){return e instanceof A?Ge([],[e],t):e},makeVList:function(e,t){for(var r=function(e){if("individualShift"===e.positionType){for(var t=e.children,r=[t[0]],n=-t[0].shift-t[0].elem.depth,i=n,a=1;a"},t.toText=function(){return this.children.map(function(e){return e.toText()}).join("")},e}(),zt=function(){function e(e,t){void 0===t&&(t=!0),this.text=void 0,this.needsEscape=void 0,this.text=e,this.needsEscape=t}var t=e.prototype;return t.toNode=function(){return document.createTextNode(this.toText())},t.toMarkup=function(){return this.toText()},t.toText=function(){return this.needsEscape?Y.escape(this.text):this.text},e}(),Mt={MathNode:St,TextNode:zt,SpaceNode:function(){function e(e){this.width=void 0,this.character=void 0,this.width=e,this.character=.05555<=e&&e<=.05556?" ":.1666<=e&&e<=.1667?" ":.2222<=e&&e<=.2223?" ":.2777<=e&&e<=.2778?"  ":-.05556<=e&&e<=-.05555?"​":-.1667<=e&&e<=-.1666?"​":-.2223<=e&&e<=-.2222?"​":-.2778<=e&&e<=-.2777?"​":null}var t=e.prototype;return t.toNode=function(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",this.width+"em"),e},t.toMarkup=function(){return this.character?""+this.character+"":''},t.toText=function(){return this.character?this.character:" "},e}(),newDocumentFragment:kt},Tt=function(e,t,r){return!W[t][e]||!W[t][e].replace||55349===e.charCodeAt(0)||me.hasOwnProperty(e)&&r&&(r.fontFamily&&"tt"===r.fontFamily.substr(4,2)||r.font&&"tt"===r.font.substr(4,2))||(e=W[t][e].replace),new Mt.TextNode(e)},At=function(e){return 1===e.length?e[0]:new Mt.MathNode("mrow",e)},Bt=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";var r=t.font;if(!r||"mathnormal"===r)return null;var n=e.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"bold-italic";var i=e.text;return Y.contains(["\\imath","\\jmath"],i)?null:(W[n][i]&&W[n][i].replace&&(i=W[n][i].replace),F(i,$e.fontMap[r].fontName,n)?$e.fontMap[r].variant:null)},Ct=function(e,t){for(var r,n=[],i=0;i but got "+String(e)+".")}(bt(a,t)),a.base=n):r=(n=Ze(e,"accent")).base;var o=bt(r,t.havingCrampedStyle()),s=0;if(n.isShifty&&Y.isCharacterBox(r)){var l=Y.getBaseElem(r);s=function(e){if(e instanceof O)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}(bt(l,t.havingCrampedStyle())).skew}var h,m=Math.min(o.height,t.fontMetrics().xHeight);if(n.isStretchy)h=Dt(n,t),h=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"elem",elem:h,wrapperClasses:["svg-align"],wrapperStyle:0","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],er=[0,1.2,1.8,2.4,3],tr=[{type:"small",style:q.SCRIPTSCRIPT},{type:"small",style:q.SCRIPT},{type:"small",style:q.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],rr=[{type:"small",style:q.SCRIPTSCRIPT},{type:"small",style:q.SCRIPT},{type:"small",style:q.TEXT},{type:"stack"}],nr=[{type:"small",style:q.SCRIPTSCRIPT},{type:"small",style:q.SCRIPT},{type:"small",style:q.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],ir=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},ar=function(e,t,r,n){for(var i=Math.min(2,3-n.style.size);i"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),o=Y.contains(Qt,e)?tr:Y.contains(Kt,e)?nr:rr;var s,l,h,m,c,u,p,d,f=ar(e,t,o,n);return"small"===f.type?(s=e,l=f.style,h=r,m=n,c=i,u=a,p=$e.makeSymbol(s,"Main-Regular",c,m),d=Yt(p,l,m,u),h&&_t(d,m,l),d):"large"===f.type?Wt(e,f.size,r,n,i,a):$t(e,t,r,n,i,a)},sr=function(e,t){var r,n,i=t.havingBaseSizing(),a=ar("\\surd",e*i.sizeMultiplier,nr,i),o=i.sizeMultiplier,s=0,l=0,h=0;return n="small"===a.type?(e<1?o=1:e<1.4&&(o=.7),l=1/o,(r=Zt("sqrtMain",s=1.08/o,h=1080,t)).style.minWidth="0.853em",.833/o):"large"===a.type?(h=1080*er[a.size],l=er[a.size]/o,s=(er[a.size]+.08)/o,(r=Zt("sqrtSize"+a.size,s,h,t)).style.minWidth="1.02em",1/o):(s=e+.08,l=e,h=Math.floor(1e3*e)+80,(r=Zt("sqrtTall",s,h,t)).style.minWidth="0.742em",1.056),r.height=l,r.style.height=s+"em",{span:r,advanceWidth:n,ruleWidth:t.fontMetrics().sqrtRuleThickness*o}},lr=function(e,t,r,n,i){if("<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),Y.contains(Kt,e)||Y.contains(Qt,e))return Wt(e,t,!1,r,n,i);if(Y.contains(Jt,e))return $t(e,er[t],!1,r,n,i);throw new X("Illegal delimiter: '"+e+"'")},hr=or,mr=function(e,t,r,n,i,a){var o=n.fontMetrics().axisHeight*n.sizeMultiplier,s=5/n.fontMetrics().ptPerEm,l=Math.max(t-o,r+o),h=Math.max(l/500*901,2*l-s);return or(e,h,!0,n,i,a)},cr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},ur=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function pr(e,t){var r=Qe(e);if(r&&Y.contains(ur,r.text))return r;throw new X("Invalid delimiter: '"+(r?r.text:JSON.stringify(e))+"' after '"+t.funcName+"'",e)}function dr(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}lt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(e,t){var r=pr(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:cr[e.funcName].size,mclass:cr[e.funcName].mclass,delim:r.text}},htmlBuilder:function(e,t){return"."===e.delim?$e.makeSpan([e.mclass]):lr(e.delim,e.size,t,e.mode,[e.mclass])},mathmlBuilder:function(e){var t=[];"."!==e.delim&&t.push(Tt(e.delim,e.mode));var r=new Mt.MathNode("mo",t);return"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r}}),lt({type:"leftright-right",names:["\\right"],props:{numArgs:1},handler:function(e,t){return{type:"leftright-right",mode:e.parser.mode,delim:pr(t[0],e).text}}}),lt({type:"leftright",names:["\\left"],props:{numArgs:1},handler:function(e,t){var r=pr(t[0],e),n=e.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var a=Ze(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:i,left:r.text,right:a.delim}},htmlBuilder:function(e,t){dr(e);for(var r,n,i=dt(e.body,t,!0,[null,"mclose"]),a=0,o=0,s=!1,l=0;lr.height+r.depth+a&&(a=(a+c-r.height-r.depth)/2);var u=l.height-r.height-a-h;r.style.paddingLeft=m+"em";var p=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+u)},{type:"elem",elem:l},{type:"kern",size:h}]},t);if(e.index){var d=t.havingStyle(q.SCRIPTSCRIPT),f=bt(e.index,d,t),g=.6*(p.height-p.depth),v=$e.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:f}]},t),y=$e.makeSpan(["root"],[v]);return $e.makeSpan(["mord","sqrt"],[y,p],t)}return $e.makeSpan(["mord","sqrt"],[p],t)},mathmlBuilder:function(e,t){var r=e.body,n=e.index;return n?new Mt.MathNode("mroot",[qt(r,t),qt(n,t)]):new Mt.MathNode("msqrt",[qt(r,t)])}});var _r={display:q.DISPLAY,text:q.TEXT,script:q.SCRIPT,scriptscript:q.SCRIPTSCRIPT};lt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,i=e.parser;i.consumeSpaces();var a=i.parseExpression(!0,r),o=n.slice(1,n.length-5);return{type:"styling",mode:i.mode,style:o,body:a}},htmlBuilder:function(e,t){var r=_r[e.style],n=t.havingStyle(r).withFont("");return Gr(e.body,n,t)},mathmlBuilder:function(e,t){var r={display:q.DISPLAY,text:q.TEXT,script:q.SCRIPT,scriptscript:q.SCRIPTSCRIPT}[e.style],n=t.havingStyle(r),i=Ct(e.body,n),a=new Mt.MathNode("mstyle",i),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return a.setAttribute("scriptlevel",o[0]),a.setAttribute("displaystyle",o[1]),a}});ht({type:"supsub",htmlBuilder:function(e,t){var r,n,i,a=(n=t,(i=(r=e).base)?"op"!==i.type?"accent"===i.type?Y.isCharacterBox(i.base)?Pt:null:"horizBrace"!==i.type?null:!r.sub===i.isOver?Hr:null:i.limits&&(n.style.size===q.DISPLAY.size||i.alwaysHandleSupSub)?Pr:null:null);if(a)return a(e,t);var o,s,l,h=e.base,m=e.sup,c=e.sub,u=bt(h,t),p=t.fontMetrics(),d=0,f=0,g=h&&Y.isCharacterBox(h);if(m){var v=t.havingStyle(t.style.sup());o=bt(m,v,t),g||(d=u.height-v.fontMetrics().supDrop*v.sizeMultiplier/t.sizeMultiplier)}if(c){var y=t.havingStyle(t.style.sub());s=bt(c,y,t),g||(f=u.depth+y.fontMetrics().subDrop*y.sizeMultiplier/t.sizeMultiplier)}l=t.style===q.DISPLAY?p.sup1:t.style.cramped?p.sup3:p.sup2;var b,x=t.sizeMultiplier,w=.5/p.ptPerEm/x+"em",k=null;if(s){var S=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(u instanceof O||S)&&(k=-u.italic+"em")}if(o&&s){d=Math.max(d,l,o.depth+.25*p.xHeight),f=Math.max(f,p.sub2);var z=4*p.defaultRuleThickness;if(d-o.depth-(s.height-f)":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};un("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in gn?t=gn[r]:"\\not"===r.substr(0,4)?t="\\dotsb":r in W.math&&Y.contains(["bin","rel"],W.math[r].group)&&(t="\\dotsb"),t});var vn={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};un("\\dotso",function(e){return e.future().text in vn?"\\ldots\\,":"\\ldots"}),un("\\dotsc",function(e){var t=e.future().text;return t in vn&&","!==t?"\\ldots\\,":"\\ldots"}),un("\\cdots",function(e){return e.future().text in vn?"\\@cdots\\,":"\\@cdots"}),un("\\dotsb","\\cdots"),un("\\dotsm","\\cdots"),un("\\dotsi","\\!\\cdots"),un("\\dotsx","\\ldots\\,"),un("\\DOTSI","\\relax"),un("\\DOTSB","\\relax"),un("\\DOTSX","\\relax"),un("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),un("\\,","\\tmspace+{3mu}{.1667em}"),un("\\thinspace","\\,"),un("\\>","\\mskip{4mu}"),un("\\:","\\tmspace+{4mu}{.2222em}"),un("\\medspace","\\:"),un("\\;","\\tmspace+{5mu}{.2777em}"),un("\\thickspace","\\;"),un("\\!","\\tmspace-{3mu}{.1667em}"),un("\\negthinspace","\\!"),un("\\negmedspace","\\tmspace-{4mu}{.2222em}"),un("\\negthickspace","\\tmspace-{5mu}{.277em}"),un("\\enspace","\\kern.5em "),un("\\enskip","\\hskip.5em\\relax"),un("\\quad","\\hskip1em\\relax"),un("\\qquad","\\hskip2em\\relax"),un("\\tag","\\@ifstar\\tag@literal\\tag@paren"),un("\\tag@paren","\\tag@literal{({#1})}"),un("\\tag@literal",function(e){if(e.macros.get("\\df@tag"))throw new X("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),un("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),un("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),un("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),un("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),un("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\mathrlap{\\mkern0.4mu\\raisebox{0.4mu}{$#1$}}{\\mkern0.8mu#1}}}{\\mathbf{#1}}"),un("\\\\","\\newline"),un("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var yn=H["Main-Regular"]["T".charCodeAt(0)][1]-.7*H["Main-Regular"]["A".charCodeAt(0)][1]+"em";un("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+yn+"}{\\scriptsize A}\\kern-.15em\\TeX}{LaTeX}}"),un("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+yn+"}{\\scriptsize A}\\kern-.15em\\TeX}{KaTeX}}"),un("\\hspace","\\@ifstar\\@hspacer\\@hspace"),un("\\@hspace","\\hskip #1\\relax"),un("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),un("\\ordinarycolon",":"),un("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),un("\\dblcolon","\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}"),un("\\coloneqq","\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}"),un("\\Coloneqq","\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}"),un("\\coloneq","\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}"),un("\\Coloneq","\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}"),un("\\eqqcolon","\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),un("\\Eqqcolon","\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}"),un("\\eqcolon","\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),un("\\Eqcolon","\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}"),un("\\colonapprox","\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}"),un("\\Colonapprox","\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}"),un("\\colonsim","\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}"),un("\\Colonsim","\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}"),un("\u2254","\\coloneqq"),un("\u2255","\\eqqcolon"),un("\u2a74","\\Coloneqq"),un("\\ratio","\\vcentcolon"),un("\\coloncolon","\\dblcolon"),un("\\colonequals","\\coloneqq"),un("\\coloncolonequals","\\Coloneqq"),un("\\equalscolon","\\eqqcolon"),un("\\equalscoloncolon","\\Eqqcolon"),un("\\colonminus","\\coloneq"),un("\\coloncolonminus","\\Coloneq"),un("\\minuscolon","\\eqcolon"),un("\\minuscoloncolon","\\Eqcolon"),un("\\coloncolonapprox","\\Colonapprox"),un("\\coloncolonsim","\\Colonsim"),un("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),un("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),un("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),un("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),un("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),un("\\limsup","\\DOTSB\\mathop{\\operatorname{lim\\,sup}}\\limits"),un("\\liminf","\\DOTSB\\mathop{\\operatorname{lim\\,inf}}\\limits"),un("\u27e6","\\mathopen{[\\mkern-3.2mu[}"),un("\u27e7","\\mathclose{]\\mkern-3.2mu]}"),un("\\darr","\\downarrow"),un("\\dArr","\\Downarrow"),un("\\Darr","\\Downarrow"),un("\\lang","\\langle"),un("\\rang","\\rangle"),un("\\uarr","\\uparrow"),un("\\uArr","\\Uparrow"),un("\\Uarr","\\Uparrow"),un("\\N","\\mathbb{N}"),un("\\R","\\mathbb{R}"),un("\\Z","\\mathbb{Z}"),un("\\alef","\\aleph"),un("\\alefsym","\\aleph"),un("\\Alpha","\\mathrm{A}"),un("\\Beta","\\mathrm{B}"),un("\\bull","\\bullet"),un("\\Chi","\\mathrm{X}"),un("\\clubs","\\clubsuit"),un("\\cnums","\\mathbb{C}"),un("\\Complex","\\mathbb{C}"),un("\\Dagger","\\ddagger"),un("\\diamonds","\\diamondsuit"),un("\\empty","\\emptyset"),un("\\Epsilon","\\mathrm{E}"),un("\\Eta","\\mathrm{H}"),un("\\exist","\\exists"),un("\\harr","\\leftrightarrow"),un("\\hArr","\\Leftrightarrow"),un("\\Harr","\\Leftrightarrow"),un("\\hearts","\\heartsuit"),un("\\image","\\Im"),un("\\infin","\\infty"),un("\\Iota","\\mathrm{I}"),un("\\isin","\\in"),un("\\Kappa","\\mathrm{K}"),un("\\larr","\\leftarrow"),un("\\lArr","\\Leftarrow"),un("\\Larr","\\Leftarrow"),un("\\lrarr","\\leftrightarrow"),un("\\lrArr","\\Leftrightarrow"),un("\\Lrarr","\\Leftrightarrow"),un("\\Mu","\\mathrm{M}"),un("\\natnums","\\mathbb{N}"),un("\\Nu","\\mathrm{N}"),un("\\Omicron","\\mathrm{O}"),un("\\plusmn","\\pm"),un("\\rarr","\\rightarrow"),un("\\rArr","\\Rightarrow"),un("\\Rarr","\\Rightarrow"),un("\\real","\\Re"),un("\\reals","\\mathbb{R}"),un("\\Reals","\\mathbb{R}"),un("\\Rho","\\mathrm{R}"),un("\\sdot","\\cdot"),un("\\sect","\\S"),un("\\spades","\\spadesuit"),un("\\sub","\\subset"),un("\\sube","\\subseteq"),un("\\supe","\\supseteq"),un("\\Tau","\\mathrm{T}"),un("\\thetasym","\\vartheta"),un("\\weierp","\\wp"),un("\\Zeta","\\mathrm{Z}");var bn={"\\relax":!0,"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},xn=function(){function e(e,t,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new hn(cn,t.macros),this.mode=r,this.stack=[]}var t=e.prototype;return t.feed=function(e){this.lexer=new ln(e)},t.switchMode=function(e){this.mode=e},t.beginGroup=function(){this.macros.beginGroup()},t.endGroup=function(){this.macros.endGroup()},t.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},t.popToken=function(){return this.future(),this.stack.pop()},t.pushToken=function(e){this.stack.push(e)},t.pushTokens=function(e){var t;(t=this.stack).push.apply(t,e)},t.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},t.consumeArgs=function(e){for(var t=[],r=0;rthis.settings.maxExpand)throw new X("Too many expansions: infinite loop or need to increase maxExpand setting");var n=r.tokens;if(r.numArgs)for(var i=this.consumeArgs(r.numArgs),a=(n=n.slice()).length-1;0<=a;--a){var o=n[a];if("#"===o.text){if(0===a)throw new X("Incomplete placeholder at end of macro body",o);if("#"===(o=n[--a]).text)n.splice(a+1,1);else{if(!/^[1-9]$/.test(o.text))throw new X("Not a valid argument number",o);var s;(s=n).splice.apply(s,[a,2].concat(i[+o.text-1]))}}}return this.pushTokens(n),n},t.expandAfterFuture=function(){return this.expandOnce(),this.future()},t.expandNextToken=function(){for(;;){var e=this.expandOnce();if(e instanceof a){if("\\relax"!==e.text)return this.stack.pop();this.stack.pop()}}throw new Error},t.expandMacro=function(e){if(this.macros.get(e)){var t=[],r=this.stack.length;for(this.pushToken(new a(e));this.stack.length>r;){this.expandOnce()instanceof a&&t.push(this.stack.pop())}return t}},t.expandMacroAsText=function(e){var t=this.expandMacro(e);return t?t.map(function(e){return e.text}).join(""):t},t._getExpansion=function(e){var t=this.macros.get(e);if(null==t)return t;var r="function"==typeof t?t(this):t;if("string"!=typeof r)return r;var n=0;if(-1!==r.indexOf("#"))for(var i=r.replace(/##/g,"");-1!==i.indexOf("#"+(n+1));)++n;for(var a=new ln(r),o=[],s=a.lex();"EOF"!==s.text;)o.push(s),s=a.lex();return o.reverse(),{tokens:o,numArgs:n}},t.isDefined=function(e){return this.macros.has(e)||tn.hasOwnProperty(e)||W.math.hasOwnProperty(e)||W.text.hasOwnProperty(e)||bn.hasOwnProperty(e)},e}(),wn={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"}},kn={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\u010f":"d\u030c","\u1e0b":"d\u0307","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u013a":"l\u0301","\u013e":"l\u030c","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\u010e":"D\u030c","\u1e0a":"D\u0307","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0139":"L\u0301","\u013d":"L\u030c","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u0164":"T\u030c","\u1e6a":"T\u0307","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"},Sn=function(){function a(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new xn(e,t,this.mode),this.settings=t,this.leftrightDepth=0}var e=a.prototype;return e.expect=function(e,t){if(void 0===t&&(t=!0),this.nextToken.text!==e)throw new X("Expected '"+e+"', got '"+this.nextToken.text+"'",this.nextToken);t&&this.consume()},e.consume=function(){this.nextToken=this.gullet.expandNextToken()},e.switchMode=function(e){this.mode=e,this.gullet.switchMode(e)},e.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor"),this.consume();var e=this.parseExpression(!1);return this.expect("EOF",!1),this.gullet.endGroup(),e},e.parseExpression=function(e,t){for(var r=[];;){"math"===this.mode&&this.consumeSpaces();var n=this.nextToken;if(-1!==a.endOfExpression.indexOf(n.text))break;if(t&&n.text===t)break;if(e&&tn[n.text]&&tn[n.text].infix)break;var i=this.parseAtom(t);if(!i)break;r.push(i)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)},e.handleInfixNodes=function(e){for(var t,r=-1,n=0;n
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.katex=e():t.katex=e()}("undefined"!=typeof self?self:this,function(){return function(t){var e={};function r(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=e,r.d=function(t,e,a){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)r.d(a,n,function(e){return t[e]}.bind(null,n));return a},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=1)}([function(t,e,r){},function(t,e,r){"use strict";r.r(e);r(0);var a=function(){function t(t,e,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=t,this.start=e,this.end=r}return t.range=function(e,r){return r?e&&e.loc&&r.loc&&e.loc.lexer===r.loc.lexer?new t(e.loc.lexer,e.loc.start,r.loc.end):null:e&&e.loc},t}(),n=function(){function t(t,e){this.text=void 0,this.loc=void 0,this.text=t,this.loc=e}return t.prototype.range=function(e,r){return new t(r,a.range(this,e))},t}(),o=function t(e,r){this.position=void 0;var a,n="KaTeX parse error: "+e,o=r&&r.loc;if(o&&o.start<=o.end){var i=o.lexer.input;a=o.start;var s=o.end;a===i.length?n+=" at end of input: ":n+=" at position "+(a+1)+": ";var h=i.slice(a,s).replace(/[^]/g,"$&\u0332");n+=(a>15?"\u2026"+i.slice(a-15,a):i.slice(0,a))+h+(s+15":">","<":"<",'"':""","'":"'"},l=/[&><"']/g;var m=function t(e){return"ordgroup"===e.type?1===e.body.length?t(e.body[0]):e:"color"===e.type?1===e.body.length?t(e.body[0]):e:"font"===e.type?t(e.body):e},c={contains:function(t,e){return-1!==t.indexOf(e)},deflt:function(t,e){return void 0===t?e:t},escape:function(t){return String(t).replace(l,function(t){return h[t]})},hyphenate:function(t){return t.replace(s,"-$1").toLowerCase()},getBaseElem:m,isCharacterBox:function(t){var e=m(t);return"mathord"===e.type||"textord"===e.type||"atom"===e.type}},u=function(){function t(t){this.displayMode=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.allowedProtocols=void 0,t=t||{},this.displayMode=c.deflt(t.displayMode,!1),this.leqno=c.deflt(t.leqno,!1),this.fleqn=c.deflt(t.fleqn,!1),this.throwOnError=c.deflt(t.throwOnError,!0),this.errorColor=c.deflt(t.errorColor,"#cc0000"),this.macros=t.macros||{},this.colorIsTextColor=c.deflt(t.colorIsTextColor,!1),this.strict=c.deflt(t.strict,"warn"),this.maxSize=Math.max(0,c.deflt(t.maxSize,1/0)),this.maxExpand=Math.max(0,c.deflt(t.maxExpand,1e3)),this.allowedProtocols=c.deflt(t.allowedProtocols,["http","https","mailto","_relative"])}var e=t.prototype;return e.reportNonstrict=function(t,e,r){var a=this.strict;if("function"==typeof a&&(a=a(t,e,r)),a&&"ignore"!==a){if(!0===a||"error"===a)throw new i("LaTeX-incompatible input and strict mode is set to 'error': "+e+" ["+t+"]",r);"warn"===a?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+e+" ["+t+"]")}},e.useStrictBehavior=function(t,e,r){var a=this.strict;if("function"==typeof a)try{a=a(t,e,r)}catch(t){a="error"}return!(!a||"ignore"===a)&&(!0===a||"error"===a||("warn"===a?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+e+" ["+t+"]"),!1)))},t}(),d=function(){function t(t,e,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=e,this.cramped=r}var e=t.prototype;return e.sup=function(){return p[f[this.id]]},e.sub=function(){return p[g[this.id]]},e.fracNum=function(){return p[x[this.id]]},e.fracDen=function(){return p[v[this.id]]},e.cramp=function(){return p[b[this.id]]},e.text=function(){return p[y[this.id]]},e.isTight=function(){return this.size>=2},t}(),p=[new d(0,0,!1),new d(1,0,!0),new d(2,1,!1),new d(3,1,!0),new d(4,2,!1),new d(5,2,!0),new d(6,3,!1),new d(7,3,!0)],f=[4,5,4,5,6,7,6,7],g=[5,5,5,5,7,7,7,7],x=[2,3,4,5,6,7,6,7],v=[3,3,5,5,7,7,7,7],b=[1,1,3,3,5,5,7,7],y=[0,1,2,3,2,3,2,3],w={DISPLAY:p[0],TEXT:p[2],SCRIPT:p[4],SCRIPTSCRIPT:p[6]},k=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var S=[];function z(t){for(var e=0;e=S[e]&&t<=S[e+1])return!0;return!1}k.forEach(function(t){return t.blocks.forEach(function(t){return S.push.apply(S,t)})});var M={path:{sqrtMain:"M95,702c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,\n-10,-9.5,-14c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54c44.2,-33.3,65.8,\n-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10s173,378,173,378c0.7,0,\n35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429c69,-144,104.5,-217.7,106.5,\n-221c5.3,-9.3,12,-14,20,-14H400000v40H845.2724s-225.272,467,-225.272,467\ns-235,486,-235,486c-2.7,4.7,-9,7,-19,7c-6,0,-10,-1,-12,-3s-194,-422,-194,-422\ns-65,47,-65,47z M834 80H400000v40H845z",sqrtSize1:"M263,681c0.7,0,18,39.7,52,119c34,79.3,68.167,\n158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120c340,-704.7,510.7,-1060.3,512,-1067\nc4.7,-7.3,11,-11,19,-11H40000v40H1012.3s-271.3,567,-271.3,567c-38.7,80.7,-84,\n175,-136,283c-52,108,-89.167,185.3,-111.5,232c-22.3,46.7,-33.8,70.3,-34.5,71\nc-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1s-109,-253,-109,-253c-72.7,-168,-109.3,\n-252,-110,-252c-10.7,8,-22,16.7,-34,26c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26\ns76,-59,76,-59s76,-60,76,-60z M1001 80H40000v40H1012z",sqrtSize2:"M1001,80H400000v40H1013.1s-83.4,268,-264.1,840c-180.7,\n572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,\n-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744c-10,12,-21,25,-33,39s-32,39,-32,39\nc-6,-5.3,-15,-14,-27,-26s25,-30,25,-30c26.7,-32.7,52,-63,76,-91s52,-60,52,-60\ns208,722,208,722c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,\n-658.5c53.7,-170.3,84.5,-266.8,92.5,-289.5c4,-6.7,10,-10,18,-10z\nM1001 80H400000v40H1013z",sqrtSize3:"M424,2478c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,\n-342,-109.8,-513.3,-110.5,-514c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,\n25c-5.7,9.3,-9.8,16,-12.5,20s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,\n-13s76,-122,76,-122s77,-121,77,-121s209,968,209,968c0,-2,84.7,-361.7,254,-1079\nc169.3,-717.3,254.7,-1077.7,256,-1081c4,-6.7,10,-10,18,-10H400000v40H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M1001 80H400000v40H1014z",sqrtSize4:"M473,2793c339.3,-1799.3,509.3,-2700,510,-2702\nc3.3,-7.3,9.3,-11,18,-11H400000v40H1017.7s-90.5,478,-276.2,1466c-185.7,988,\n-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,\n-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200c0,-1.3,-5.3,8.7,-16,30c-10.7,\n21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26s76,-153,76,-153s77,-151,\n77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,606z\nM1001 80H400000v40H1017z",doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"}},T=function(){function t(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){for(var t=document.createDocumentFragment(),e=0;e"},N=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,t,r,a),this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return q.call(this,"span")},e.toMarkup=function(){return C.call(this,"span")},t}(),I=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,e,a),this.children=r||[],this.setAttribute("href",t)}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return q.call(this,"a")},e.toMarkup=function(){return C.call(this,"a")},t}(),O={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"},E=function(){function t(t,e,r,a,n,o,i,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=t,this.height=e||0,this.depth=r||0,this.italic=a||0,this.skew=n||0,this.width=o||0,this.classes=i||[],this.style=s||{},this.maxFontSize=0;var h=function(t){for(var e=0;e=n[0]&&t<=n[1])return r.name}return null}(this.text.charCodeAt(0));h&&this.classes.push(h+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=O[this.text])}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){var t=document.createTextNode(this.text),e=null;for(var r in this.italic>0&&((e=document.createElement("span")).style.marginRight=this.italic+"em"),this.classes.length>0&&((e=e||document.createElement("span")).className=A(this.classes)),this.style)this.style.hasOwnProperty(r)&&((e=e||document.createElement("span")).style[r]=this.style[r]);return e?(e.appendChild(t),e):t},e.toMarkup=function(){var t=!1,e="0&&(r+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(a)&&(r+=c.hyphenate(a)+":"+this.style[a]+";");r&&(t=!0,e+=' style="'+c.escape(r)+'"');var n=c.escape(this.text);return t?(e+=">",e+=n,e+=""):n},t}(),R=function(){function t(t,e){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=e||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r":""},t}(),H=function(){function t(t){this.attributes=void 0,this.attributes=t||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","line");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);return t},e.toMarkup=function(){var t="",">"),W("math",j,Q,":",":"),W("math",j,Q,"\u2248","\\approx",!0),W("math",j,Q,"\u2245","\\cong",!0),W("math",j,Q,"\u2265","\\ge"),W("math",j,Q,"\u2265","\\geq",!0),W("math",j,Q,"\u2190","\\gets"),W("math",j,Q,">","\\gt"),W("math",j,Q,"\u2208","\\in",!0),W("math",j,Q,"\ue020","\\@not"),W("math",j,Q,"\u2282","\\subset",!0),W("math",j,Q,"\u2283","\\supset",!0),W("math",j,Q,"\u2286","\\subseteq",!0),W("math",j,Q,"\u2287","\\supseteq",!0),W("math",$,Q,"\u2288","\\nsubseteq",!0),W("math",$,Q,"\u2289","\\nsupseteq",!0),W("math",j,Q,"\u22a8","\\models"),W("math",j,Q,"\u2190","\\leftarrow",!0),W("math",j,Q,"\u2264","\\le"),W("math",j,Q,"\u2264","\\leq",!0),W("math",j,Q,"<","\\lt"),W("math",j,Q,"\u2192","\\rightarrow",!0),W("math",j,Q,"\u2192","\\to"),W("math",$,Q,"\u2271","\\ngeq",!0),W("math",$,Q,"\u2270","\\nleq",!0),W("math",j,"spacing","\xa0","\\ "),W("math",j,"spacing","\xa0","~"),W("math",j,"spacing","\xa0","\\space"),W("math",j,"spacing","\xa0","\\nobreakspace"),W("text",j,"spacing","\xa0","\\ "),W("text",j,"spacing","\xa0","~"),W("text",j,"spacing","\xa0","\\space"),W("text",j,"spacing","\xa0","\\nobreakspace"),W("math",j,"spacing",null,"\\nobreak"),W("math",j,"spacing",null,"\\allowbreak"),W("math",j,"punct",",",","),W("math",j,"punct",";",";"),W("math",$,Z,"\u22bc","\\barwedge",!0),W("math",$,Z,"\u22bb","\\veebar",!0),W("math",j,Z,"\u2299","\\odot",!0),W("math",j,Z,"\u2295","\\oplus",!0),W("math",j,Z,"\u2297","\\otimes",!0),W("math",j,"textord","\u2202","\\partial",!0),W("math",j,Z,"\u2298","\\oslash",!0),W("math",$,Z,"\u229a","\\circledcirc",!0),W("math",$,Z,"\u22a1","\\boxdot",!0),W("math",j,Z,"\u25b3","\\bigtriangleup"),W("math",j,Z,"\u25bd","\\bigtriangledown"),W("math",j,Z,"\u2020","\\dagger"),W("math",j,Z,"\u22c4","\\diamond"),W("math",j,Z,"\u22c6","\\star"),W("math",j,Z,"\u25c3","\\triangleleft"),W("math",j,Z,"\u25b9","\\triangleright"),W("math",j,"open","{","\\{"),W("text",j,"textord","{","\\{"),W("text",j,"textord","{","\\textbraceleft"),W("math",j,"close","}","\\}"),W("text",j,"textord","}","\\}"),W("text",j,"textord","}","\\textbraceright"),W("math",j,"open","{","\\lbrace"),W("math",j,"close","}","\\rbrace"),W("math",j,"open","[","\\lbrack"),W("text",j,"textord","[","\\lbrack"),W("math",j,"close","]","\\rbrack"),W("text",j,"textord","]","\\rbrack"),W("math",j,"open","(","\\lparen"),W("math",j,"close",")","\\rparen"),W("text",j,"textord","<","\\textless"),W("text",j,"textord",">","\\textgreater"),W("math",j,"open","\u230a","\\lfloor",!0),W("math",j,"close","\u230b","\\rfloor",!0),W("math",j,"open","\u2308","\\lceil",!0),W("math",j,"close","\u2309","\\rceil",!0),W("math",j,"textord","\\","\\backslash"),W("math",j,"textord","\u2223","|"),W("math",j,"textord","\u2223","\\vert"),W("text",j,"textord","|","\\textbar"),W("math",j,"textord","\u2225","\\|"),W("math",j,"textord","\u2225","\\Vert"),W("text",j,"textord","\u2225","\\textbardbl"),W("text",j,"textord","~","\\textasciitilde"),W("text",j,"textord","\\","\\textbackslash"),W("text",j,"textord","^","\\textasciicircum"),W("math",j,Q,"\u2191","\\uparrow",!0),W("math",j,Q,"\u21d1","\\Uparrow",!0),W("math",j,Q,"\u2193","\\downarrow",!0),W("math",j,Q,"\u21d3","\\Downarrow",!0),W("math",j,Q,"\u2195","\\updownarrow",!0),W("math",j,Q,"\u21d5","\\Updownarrow",!0),W("math",j,J,"\u2210","\\coprod"),W("math",j,J,"\u22c1","\\bigvee"),W("math",j,J,"\u22c0","\\bigwedge"),W("math",j,J,"\u2a04","\\biguplus"),W("math",j,J,"\u22c2","\\bigcap"),W("math",j,J,"\u22c3","\\bigcup"),W("math",j,J,"\u222b","\\int"),W("math",j,J,"\u222b","\\intop"),W("math",j,J,"\u222c","\\iint"),W("math",j,J,"\u222d","\\iiint"),W("math",j,J,"\u220f","\\prod"),W("math",j,J,"\u2211","\\sum"),W("math",j,J,"\u2a02","\\bigotimes"),W("math",j,J,"\u2a01","\\bigoplus"),W("math",j,J,"\u2a00","\\bigodot"),W("math",j,J,"\u222e","\\oint"),W("math",j,J,"\u222f","\\oiint"),W("math",j,J,"\u2230","\\oiiint"),W("math",j,J,"\u2a06","\\bigsqcup"),W("math",j,J,"\u222b","\\smallint"),W("text",j,"inner","\u2026","\\textellipsis"),W("math",j,"inner","\u2026","\\mathellipsis"),W("text",j,"inner","\u2026","\\ldots",!0),W("math",j,"inner","\u2026","\\ldots",!0),W("math",j,"inner","\u22ef","\\@cdots",!0),W("math",j,"inner","\u22f1","\\ddots",!0),W("math",j,"textord","\u22ee","\\varvdots"),W("math",j,"accent-token","\u02ca","\\acute"),W("math",j,"accent-token","\u02cb","\\grave"),W("math",j,"accent-token","\xa8","\\ddot"),W("math",j,"accent-token","~","\\tilde"),W("math",j,"accent-token","\u02c9","\\bar"),W("math",j,"accent-token","\u02d8","\\breve"),W("math",j,"accent-token","\u02c7","\\check"),W("math",j,"accent-token","^","\\hat"),W("math",j,"accent-token","\u20d7","\\vec"),W("math",j,"accent-token","\u02d9","\\dot"),W("math",j,"accent-token","\u02da","\\mathring"),W("math",j,K,"\u0131","\\imath",!0),W("math",j,K,"\u0237","\\jmath",!0),W("text",j,"textord","\u0131","\\i",!0),W("text",j,"textord","\u0237","\\j",!0),W("text",j,"textord","\xdf","\\ss",!0),W("text",j,"textord","\xe6","\\ae",!0),W("text",j,"textord","\xe6","\\ae",!0),W("text",j,"textord","\u0153","\\oe",!0),W("text",j,"textord","\xf8","\\o",!0),W("text",j,"textord","\xc6","\\AE",!0),W("text",j,"textord","\u0152","\\OE",!0),W("text",j,"textord","\xd8","\\O",!0),W("text",j,"accent-token","\u02ca","\\'"),W("text",j,"accent-token","\u02cb","\\`"),W("text",j,"accent-token","\u02c6","\\^"),W("text",j,"accent-token","\u02dc","\\~"),W("text",j,"accent-token","\u02c9","\\="),W("text",j,"accent-token","\u02d8","\\u"),W("text",j,"accent-token","\u02d9","\\."),W("text",j,"accent-token","\u02da","\\r"),W("text",j,"accent-token","\u02c7","\\v"),W("text",j,"accent-token","\xa8",'\\"'),W("text",j,"accent-token","\u02dd","\\H"),W("text",j,"accent-token","\u25ef","\\textcircled");var tt={"--":!0,"---":!0,"``":!0,"''":!0};W("text",j,"textord","\u2013","--"),W("text",j,"textord","\u2013","\\textendash"),W("text",j,"textord","\u2014","---"),W("text",j,"textord","\u2014","\\textemdash"),W("text",j,"textord","\u2018","`"),W("text",j,"textord","\u2018","\\textquoteleft"),W("text",j,"textord","\u2019","'"),W("text",j,"textord","\u2019","\\textquoteright"),W("text",j,"textord","\u201c","``"),W("text",j,"textord","\u201c","\\textquotedblleft"),W("text",j,"textord","\u201d","''"),W("text",j,"textord","\u201d","\\textquotedblright"),W("math",j,"textord","\xb0","\\degree",!0),W("text",j,"textord","\xb0","\\degree"),W("text",j,"textord","\xb0","\\textdegree",!0),W("math",j,K,"\xa3","\\pounds"),W("math",j,K,"\xa3","\\mathsterling",!0),W("text",j,K,"\xa3","\\pounds"),W("text",j,K,"\xa3","\\textsterling",!0),W("math",$,"textord","\u2720","\\maltese"),W("text",$,"textord","\u2720","\\maltese"),W("text",j,"spacing","\xa0","\\ "),W("text",j,"spacing","\xa0"," "),W("text",j,"spacing","\xa0","~");for(var et=0;et<'0123456789/@."'.length;et++){var rt='0123456789/@."'.charAt(et);W("math",j,"textord",rt,rt)}for(var at=0;at<'0123456789!@*()-=+[]<>|";:?/.,'.length;at++){var nt='0123456789!@*()-=+[]<>|";:?/.,'.charAt(at);W("text",j,"textord",nt,nt)}for(var ot="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",it=0;it=5?0:t>=3?1:2]){var r=U[e]={cssEmPerMu:D.quad[e]/18};for(var a in D)D.hasOwnProperty(a)&&(r[a]=D[a][e])}return U[e]}(this.size)),this._fontMetrics},e.getColor=function(){return this.phantom?"transparent":this.color},t}();yt.BASESIZE=6;var wt=yt,kt={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},St={ex:!0,em:!0,mu:!0},zt=function(t,e){var r;if(t.unit in kt)r=kt[t.unit]/e.fontMetrics().ptPerEm/e.sizeMultiplier;else if("mu"===t.unit)r=e.fontMetrics().cssEmPerMu;else{var a;if(a=e.style.isTight()?e.havingStyle(e.style.text()):e,"ex"===t.unit)r=a.fontMetrics().xHeight;else{if("em"!==t.unit)throw new i("Invalid unit: '"+t.unit+"'");r=a.fontMetrics().quad}a!==e&&(r*=a.sizeMultiplier/e.sizeMultiplier)}return Math.min(t.number*r,e.maxSize)},Mt=["\\imath","\u0131","\\jmath","\u0237","\\pounds","\\mathsterling","\\textsterling","\xa3"],Tt=function(t,e,r){return _[r][t]&&_[r][t].replace&&(t=_[r][t].replace),{value:t,metrics:V(t,e,r)}},At=function(t,e,r,a,n){var o,i=Tt(t,e,r),s=i.metrics;if(t=i.value,s){var h=s.italic;("text"===r||a&&"mathit"===a.font)&&(h=0),o=new E(t,s.height,s.depth,h,s.skew,s.width,n)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+t+"' in style '"+e+"'"),o=new E(t,0,0,0,0,0,n);if(a){o.maxFontSize=a.sizeMultiplier,a.style.isTight()&&o.classes.push("mtight");var l=a.getColor();l&&(o.style.color=l)}return o},Bt=function(t,e){if(A(t.classes)!==A(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;for(var r in t.style)if(t.style.hasOwnProperty(r)&&t.style[r]!==e.style[r])return!1;for(var a in e.style)if(e.style.hasOwnProperty(a)&&t.style[a]!==e.style[a])return!1;return!0},qt=function(t){for(var e=0,r=0,a=0,n=0;ne&&(e=o.height),o.depth>r&&(r=o.depth),o.maxFontSize>a&&(a=o.maxFontSize)}t.height=e,t.depth=r,t.maxFontSize=a},Ct=function(t,e,r,a){var n=new N(t,e,r,a);return qt(n),n},Nt=function(t,e,r,a){return new N(t,e,r,a)},It=function(t){var e=new T(t);return qt(e),e},Ot=function(t,e,r){var a="";switch(t){case"amsrm":a="AMS";break;case"textrm":a="Main";break;case"textsf":a="SansSerif";break;case"texttt":a="Typewriter";break;default:a=t}return a+"-"+("textbf"===e&&"textit"===r?"BoldItalic":"textbf"===e?"Bold":"textit"===e?"Italic":"Regular")},Et={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Rt={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Lt={fontMap:Et,makeSymbol:At,mathsym:function(t,e,r,a){return void 0===a&&(a=[]),r&&r.font&&"boldsymbol"===r.font&&Tt(t,"Main-Bold",e).metrics?At(t,"Main-Bold",e,r,a.concat(["mathbf"])):"\\"===t||"main"===_[e][t].font?At(t,"Main-Regular",e,r,a):At(t,"AMS-Regular",e,r,a.concat(["amsrm"]))},makeSpan:Ct,makeSvgSpan:Nt,makeLineSpan:function(t,e,r){var a=Ct([t],[],e);return a.height=r||e.fontMetrics().defaultRuleThickness,a.style.borderBottomWidth=a.height+"em",a.maxFontSize=1,a},makeAnchor:function(t,e,r,a){var n=new I(t,e,r,a);return qt(n),n},makeFragment:It,wrapFragment:function(t,e){return t instanceof T?Ct([],[t],e):t},makeVList:function(t,e){for(var r=function(t){if("individualShift"===t.positionType){for(var e=t.children,r=[e[0]],a=-e[0].shift-e[0].elem.depth,n=a,o=1;o0&&(o.push(le(i,e)),i=[]),o.push(n[s]));i.length>0&&o.push(le(i,e)),r&&((a=le(ae(r,e,!0))).classes=["tag"],o.push(a));var l=Jt(["katex-html"],o);if(l.setAttribute("aria-hidden","true"),a){var m=a.children[0];m.style.height=l.height+l.depth+"em",m.style.verticalAlign=-l.depth+"em"}return l}function ce(t){return new T(t)}var ue=function(){function t(t,e){this.type=void 0,this.attributes=void 0,this.children=void 0,this.type=t,this.attributes={},this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.getAttribute=function(t){return this.attributes[t]},e.toNode=function(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r"},e.toText=function(){return this.children.map(function(t){return t.toText()}).join("")},t}(),de=function(){function t(t){this.text=void 0,this.text=t}var e=t.prototype;return e.toNode=function(){return document.createTextNode(this.text)},e.toMarkup=function(){return c.escape(this.toText())},e.toText=function(){return this.text},t}(),pe={MathNode:ue,TextNode:de,SpaceNode:function(){function t(t){this.width=void 0,this.character=void 0,this.width=t,this.character=t>=.05555&&t<=.05556?"\u200a":t>=.1666&&t<=.1667?"\u2009":t>=.2222&&t<=.2223?"\u2005":t>=.2777&&t<=.2778?"\u2005\u200a":t>=-.05556&&t<=-.05555?"\u200a\u2063":t>=-.1667&&t<=-.1666?"\u2009\u2063":t>=-.2223&&t<=-.2222?"\u205f\u2063":t>=-.2778&&t<=-.2777?"\u2005\u2063":null}var e=t.prototype;return e.toNode=function(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",this.width+"em"),t},e.toMarkup=function(){return this.character?""+this.character+"":''},e.toText=function(){return this.character?this.character:" "},t}(),newDocumentFragment:ce},fe=function(t,e,r){return!_[e][t]||!_[e][t].replace||55349===t.charCodeAt(0)||tt.hasOwnProperty(t)&&r&&(r.fontFamily&&"tt"===r.fontFamily.substr(4,2)||r.font&&"tt"===r.font.substr(4,2))||(t=_[e][t].replace),new pe.TextNode(t)},ge=function(t){return 1===t.length?t[0]:new pe.MathNode("mrow",t)},xe=function(t,e){if("texttt"===e.fontFamily)return"monospace";if("textsf"===e.fontFamily)return"textit"===e.fontShape&&"textbf"===e.fontWeight?"sans-serif-bold-italic":"textit"===e.fontShape?"sans-serif-italic":"textbf"===e.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===e.fontShape&&"textbf"===e.fontWeight)return"bold-italic";if("textit"===e.fontShape)return"italic";if("textbf"===e.fontWeight)return"bold";var r=e.font;if(!r||"mathnormal"===r)return null;var a=t.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"bold-italic";var n=t.text;return c.contains(["\\imath","\\jmath"],n)?null:(_[a][n]&&_[a][n].replace&&(n=_[a][n].replace),V(n,Lt.fontMap[r].fontName,a)?Lt.fontMap[r].variant:null)},ve=function(t,e){for(var r,a=[],n=0;n0&&(c.text=c.text.slice(0,1)+"\u0338"+c.text.slice(1),a.pop())}}}a.push(o),r=o}return a},be=function(t,e){return ge(ve(t,e))},ye=function(t,e){if(!t)return new pe.MathNode("mrow");if(jt[t.type])return jt[t.type](t,e);throw new i("Got group of unknown type: '"+t.type+"'")};var we=function(t){return new wt({style:t.displayMode?w.DISPLAY:w.TEXT,maxSize:t.maxSize})},ke=function(t,e){if(e.displayMode){var r=["katex-display"];e.leqno&&r.push("leqno"),e.fleqn&&r.push("fleqn"),t=Lt.makeSpan(r,[t])}return t},Se=function(t,e,r){var a=we(r),n=function(t,e,r){var a,n=ve(t,r);a=1===n.length&&n[0]instanceof ue&&c.contains(["mrow","mtable"],n[0].type)?n[0]:new pe.MathNode("mrow",n);var o=new pe.MathNode("annotation",[new pe.TextNode(e)]);o.setAttribute("encoding","application/x-tex");var i=new pe.MathNode("semantics",[a,o]),s=new pe.MathNode("math",[i]);return Lt.makeSpan(["katex-mathml"],[s])}(t,e,a),o=me(t,a),i=Lt.makeSpan(["katex"],[n,o]);return ke(i,r)},ze={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb"},Me={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Te=function(t){return"ordgroup"===t.type?t.body.length:1},Ae=function(t,e,r,a){var n,o=t.height+t.depth+2*r;if(/fbox|color/.test(e)){if(n=Lt.makeSpan(["stretchy",e],[],a),"fbox"===e){var i=a.color&&a.getColor();i&&(n.style.borderColor=i)}}else{var s=[];/^[bx]cancel$/.test(e)&&s.push(new H({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(e)&&s.push(new H({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new R(s,{width:"100%",height:o+"em"});n=Lt.makeSvgSpan([],[h],a)}return n.height=o,n.style.height=o+"em",n},Be=function(t){var e=new pe.MathNode("mo",[new pe.TextNode(ze[t.substr(1)])]);return e.setAttribute("stretchy","true"),e},qe=function(t,e){var r=function(){var r=4e5,a=t.label.substr(1);if(c.contains(["widehat","widecheck","widetilde","utilde"],a)){var n,o,i,s=Te(t.base);if(s>5)"widehat"===a||"widecheck"===a?(n=420,r=2364,i=.42,o=a+"4"):(n=312,r=2340,i=.34,o="tilde4");else{var h=[1,1,2,2,3,3][s];"widehat"===a||"widecheck"===a?(r=[0,1062,2364,2364,2364][h],n=[0,239,300,360,420][h],i=[0,.24,.3,.3,.36,.42][h],o=a+h):(r=[0,600,1033,2339,2340][h],n=[0,260,286,306,312][h],i=[0,.26,.286,.3,.306,.34][h],o="tilde"+h)}var l=new L(o),m=new R([l],{width:"100%",height:i+"em",viewBox:"0 0 "+r+" "+n,preserveAspectRatio:"none"});return{span:Lt.makeSvgSpan([],[m],e),minWidth:0,height:i}}var u,d,p=[],f=Me[a],g=f[0],x=f[1],v=f[2],b=v/1e3,y=g.length;if(1===y)u=["hide-tail"],d=[f[3]];else if(2===y)u=["halfarrow-left","halfarrow-right"],d=["xMinYMin","xMaxYMin"];else{if(3!==y)throw new Error("Correct katexImagesData or update code here to support\n "+y+" children.");u=["brace-left","brace-center","brace-right"],d=["xMinYMin","xMidYMin","xMaxYMin"]}for(var w=0;w0&&(a.style.minWidth=n+"em"),a},Ce=function(t,e){var r,a,n,o=Pt(t,"supsub");o?(r=(a=Ht(o.base,"accent")).base,o.base=r,n=function(t){if(t instanceof N)return t;throw new Error("Expected span but got "+String(t)+".")}(he(o,e)),o.base=a):r=(a=Ht(t,"accent")).base;var i=he(r,e.havingCrampedStyle()),s=0;if(a.isShifty&&c.isCharacterBox(r)){var h=c.getBaseElem(r);s=function(t){if(t instanceof E)return t;throw new Error("Expected symbolNode but got "+String(t)+".")}(he(h,e.havingCrampedStyle())).skew}var l,m=Math.min(i.height,e.fontMetrics().xHeight);if(a.isStretchy)l=qe(a,e),l=Lt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:l,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+2*s+"em)",marginLeft:2*s+"em"}:void 0}]},e);else{var u,d;"\\vec"===a.label?(u=Lt.staticSvg("vec",e),d=Lt.svgData.vec[1]):((u=Lt.makeSymbol(a.label,"Main-Regular",a.mode,e)).italic=0,d=u.width),l=Lt.makeSpan(["accent-body"],[u]);var p="\\textcircled"===a.label;p&&(l.classes.push("accent-full"),m=i.height);var f=s;p||(f-=d/2),l.style.left=f+"em","\\textcircled"===a.label&&(l.style.top=".2em"),l=Lt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-m},{type:"elem",elem:l}]},e)}var g=Lt.makeSpan(["mord","accent"],[l],e);return n?(n.children[0]=g,n.height=Math.max(g.height,n.height),n.classes[0]="mord",n):g},Ne=function(t,e){var r=t.isStretchy?Be(t.label):new pe.MathNode("mo",[fe(t.label,t.mode)]),a=new pe.MathNode("mover",[ye(t.base,e),r]);return a.setAttribute("accent","true"),a},Ie=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(function(t){return"\\"+t}).join("|"));$t({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(t,e){var r=e[0],a=!Ie.test(t.funcName),n=!a||"\\widehat"===t.funcName||"\\widetilde"===t.funcName||"\\widecheck"===t.funcName;return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:a,isShifty:n,base:r}},htmlBuilder:Ce,mathmlBuilder:Ne}),$t({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!1},handler:function(t,e){var r=e[0];return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Ce,mathmlBuilder:Ne}),$t({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"accentUnder",mode:r.mode,label:a,base:n}},htmlBuilder:function(t,e){var r=he(t.base,e),a=qe(t,e),n="\\utilde"===t.label?.12:0,o=Lt.makeVList({positionType:"bottom",positionData:a.height+n,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:r}]},e);return Lt.makeSpan(["mord","accentunder"],[o],e)},mathmlBuilder:function(t,e){var r=Be(t.label),a=new pe.MathNode("munder",[ye(t.base,e),r]);return a.setAttribute("accentunder","true"),a}});var Oe=function(t){var e=new pe.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};$t({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium"],props:{numArgs:1,numOptionalArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName;return{type:"xArrow",mode:a.mode,label:n,body:e[0],below:r[0]}},htmlBuilder:function(t,e){var r,a=e.style,n=e.havingStyle(a.sup()),o=Lt.wrapFragment(he(t.body,n,e),e);o.classes.push("x-arrow-pad"),t.below&&(n=e.havingStyle(a.sub()),(r=Lt.wrapFragment(he(t.below,n,e),e)).classes.push("x-arrow-pad"));var i,s=qe(t,e),h=-e.fontMetrics().axisHeight+.5*s.height,l=-e.fontMetrics().axisHeight-.5*s.height-.111;if((o.depth>.25||"\\xleftequilibrium"===t.label)&&(l-=o.depth),r){var m=-e.fontMetrics().axisHeight+r.height+.5*s.height+.111;i=Lt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:l},{type:"elem",elem:s,shift:h},{type:"elem",elem:r,shift:m}]},e)}else i=Lt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:l},{type:"elem",elem:s,shift:h}]},e);return i.children[0].children[0].children[1].classes.push("svg-align"),Lt.makeSpan(["mrel","x-arrow"],[i],e)},mathmlBuilder:function(t,e){var r,a=Be(t.label);if(t.body){var n=Oe(ye(t.body,e));if(t.below){var o=Oe(ye(t.below,e));r=new pe.MathNode("munderover",[a,o,n])}else r=new pe.MathNode("mover",[a,n])}else if(t.below){var i=Oe(ye(t.below,e));r=new pe.MathNode("munder",[a,i])}else r=Oe(),r=new pe.MathNode("mover",[a,r]);return r}}),$t({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){for(var r=t.parser,a=Ht(e[0],"ordgroup").body,n="",o=0;o","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],_e=[0,1.2,1.8,2.4,3],We=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],je=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"stack"}],$e=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],Ze=function(t){if("small"===t.type)return"Main-Regular";if("large"===t.type)return"Size"+t.size+"-Regular";if("stack"===t.type)return"Size4-Regular";throw new Error("Add support for delim type '"+t.type+"' here.")},Ke=function(t,e,r,a){for(var n=Math.min(2,3-a.style.size);ne)return r[n]}return r[r.length-1]},Je=function(t,e,r,a,n,o){var i;"<"===t||"\\lt"===t||"\u27e8"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"\u27e9"!==t||(t="\\rangle"),i=c.contains(Ye,t)?We:c.contains(Ge,t)?$e:je;var s=Ke(t,e,i,a);return"small"===s.type?function(t,e,r,a,n,o){var i=Lt.makeSymbol(t,"Main-Regular",n,a),s=He(i,e,a,o);return r&&Pe(s,a,e),s}(t,s.style,r,a,n,o):"large"===s.type?De(t,s.size,r,a,n,o):Ve(t,e,r,a,n,o)},Qe=function(t,e){var r,a,n=e.havingBaseSizing(),o=Ke("\\surd",t*n.sizeMultiplier,$e,n),i=n.sizeMultiplier,s=0,h=0,l=0;return"small"===o.type?(t<1?i=1:t<1.4&&(i=.7),h=1/i,(r=Ue("sqrtMain",s=1.08/i,l=1080,e)).style.minWidth="0.853em",a=.833/i):"large"===o.type?(l=1080*_e[o.size],h=_e[o.size]/i,s=(_e[o.size]+.08)/i,(r=Ue("sqrtSize"+o.size,s,l,e)).style.minWidth="1.02em",a=1/i):(s=t+.08,h=t,l=Math.floor(1e3*t)+80,(r=Ue("sqrtTall",s,l,e)).style.minWidth="0.742em",a=1.056),r.height=h,r.style.height=s+"em",{span:r,advanceWidth:a,ruleWidth:e.fontMetrics().sqrtRuleThickness*i}},tr=function(t,e,r,a,n){if("<"===t||"\\lt"===t||"\u27e8"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"\u27e9"!==t||(t="\\rangle"),c.contains(Ge,t)||c.contains(Ye,t))return De(t,e,!1,r,a,n);if(c.contains(Xe,t))return Ve(t,_e[e],!1,r,a,n);throw new i("Illegal delimiter: '"+t+"'")},er=Je,rr=function(t,e,r,a,n,o){var i=a.fontMetrics().axisHeight*a.sizeMultiplier,s=5/a.fontMetrics().ptPerEm,h=Math.max(e-i,r+i),l=Math.max(h/500*901,2*h-s);return Je(t,l,!0,a,n,o)},ar={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},nr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function or(t,e){var r=Ft(t);if(r&&c.contains(nr,r.text))return r;throw new i("Invalid delimiter: '"+(r?r.text:JSON.stringify(t))+"' after '"+e.funcName+"'",t)}function ir(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}$t({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(t,e){var r=or(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:ar[t.funcName].size,mclass:ar[t.funcName].mclass,delim:r.text}},htmlBuilder:function(t,e){return"."===t.delim?Lt.makeSpan([t.mclass]):tr(t.delim,t.size,e,t.mode,[t.mclass])},mathmlBuilder:function(t){var e=[];"."!==t.delim&&e.push(fe(t.delim,t.mode));var r=new pe.MathNode("mo",e);return"mopen"===t.mclass||"mclose"===t.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r}}),$t({type:"leftright-right",names:["\\right"],props:{numArgs:1},handler:function(t,e){return{type:"leftright-right",mode:t.parser.mode,delim:or(e[0],t).text}}}),$t({type:"leftright",names:["\\left"],props:{numArgs:1},handler:function(t,e){var r=or(e[0],t),a=t.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var o=Ht(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:r.text,right:o.delim}},htmlBuilder:function(t,e){ir(t);for(var r,a,n=ae(t.body,e,!0,["mopen","mclose"]),o=0,i=0,s=!1,h=0;h-1?"mpadded":"menclose",[ye(t.body,e)]);switch(t.label){case"\\cancel":r.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":r.setAttribute("notation","downdiagonalstrike");break;case"\\sout":r.setAttribute("notation","horizontalstrike");break;case"\\fbox":r.setAttribute("notation","box");break;case"\\fcolorbox":case"\\colorbox":if(r.setAttribute("width","+6pt"),r.setAttribute("height","+6pt"),r.setAttribute("lspace","3pt"),r.setAttribute("voffset","3pt"),"\\fcolorbox"===t.label){var a=e.fontMetrics().defaultRuleThickness;r.setAttribute("style","border: "+a+"em solid "+String(t.borderColor))}break;case"\\xcancel":r.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return t.backgroundColor&&r.setAttribute("mathbackground",t.backgroundColor),r};$t({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","text"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,o=Ht(e[0],"color-token").color,i=e[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:o,body:i}},htmlBuilder:sr,mathmlBuilder:hr}),$t({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,greediness:3,argTypes:["color","color","text"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,o=Ht(e[0],"color-token").color,i=Ht(e[1],"color-token").color,s=e[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:i,borderColor:o,body:s}},htmlBuilder:sr,mathmlBuilder:hr}),$t({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["text"],allowedInText:!0},handler:function(t,e){return{type:"enclose",mode:t.parser.mode,label:"\\fbox",body:e[0]}}}),$t({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout"],props:{numArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName,o=e[0];return{type:"enclose",mode:a.mode,label:n,body:o}},htmlBuilder:sr,mathmlBuilder:hr});var lr={};function mr(t){for(var e=t.type,r=t.names,a=t.props,n=t.handler,o=t.htmlBuilder,i=t.mathmlBuilder,s={type:e,numArgs:a.numArgs||0,greediness:1,allowedInText:!1,numOptionalArgs:0,handler:n},h=0;h0&&(v+=.25),l.push({pos:v,isDashed:t[e]})}for(b(o[0]),r=0;r0&&(k<(T+=x)&&(k=T),T=0),t.addJot&&(k+=p),S.height=w,S.depth=k,v+=w,S.pos=v,v+=k+T,h[r]=S,b(o[r+1])}var A,B,q=v/2+e.fontMetrics().axisHeight,C=t.cols||[],N=[];for(a=0,B=0;a=s)){var L=void 0;(a>0||t.hskipBeforeAndAfter)&&0!==(L=c.deflt(I.pregap,u))&&((A=Lt.makeSpan(["arraycolsep"],[])).style.width=L+"em",N.push(A));var H=[];for(r=0;r0){for(var V=Lt.makeLineSpan("hline",e,.05),U=Lt.makeLineSpan("hdashline",e,.05),G=[{type:"elem",elem:h,shift:0}];l.length>0;){var X=l.pop(),Y=X.pos-q;X.isDashed?G.push({type:"elem",elem:U,shift:Y}):G.push({type:"elem",elem:V,shift:Y})}h=Lt.makeVList({positionType:"individualShift",children:G},e)}return Lt.makeSpan(["mord"],[h],e)},fr={c:"center ",l:"left ",r:"right "},gr=function(t,e){var r=new pe.MathNode("mtable",t.body.map(function(t){return new pe.MathNode("mtr",t.map(function(t){return new pe.MathNode("mtd",[ye(t,e)])}))})),a=.16+t.arraystretch-1+(t.addJot?.09:0);r.setAttribute("rowspacing",a+"em");var n="",o="";if(t.cols){var i=t.cols,s="",h=!1,l=0,m=i.length;"separator"===i[0].type&&(n+="top ",l=1),"separator"===i[i.length-1].type&&(n+="bottom ",m-=1);for(var c=l;c0?"left ":"",n+=g[g.length-1].length>0?"right ":"";for(var x=1;x0&&c&&(p=1),a[u]={type:"align",align:d,pregap:p,postgap:0}}return n.colSeparationType=c?"align":"alignat",n};mr({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(t,e){var r={cols:(Ft(e[0])?[e[0]]:Ht(e[0],"ordgroup").body).map(function(t){var e=function(t){var e=Ft(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}(t).text;if(-1!=="lcr".indexOf(e))return{type:"align",align:e};if("|"===e)return{type:"separator",separator:"|"};if(":"===e)return{type:"separator",separator:":"};throw new i("Unknown column alignment: "+e,t)}),hskipBeforeAndAfter:!0};return ur(t.parser,r,dr(t.envName))},htmlBuilder:pr,mathmlBuilder:gr}),mr({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName],r=ur(t.parser,{hskipBeforeAndAfter:!1},dr(t.envName));return e?{type:"leftright",mode:t.mode,body:[r],left:e[0],right:e[1]}:r},htmlBuilder:pr,mathmlBuilder:gr}),mr({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function(t){var e=ur(t.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},dr(t.envName));return{type:"leftright",mode:t.mode,body:[e],left:"\\{",right:"."}},htmlBuilder:pr,mathmlBuilder:gr}),mr({type:"array",names:["aligned"],props:{numArgs:0},handler:xr,htmlBuilder:pr,mathmlBuilder:gr}),mr({type:"array",names:["gathered"],props:{numArgs:0},handler:function(t){return ur(t.parser,{cols:[{type:"align",align:"c"}],addJot:!0},"display")},htmlBuilder:pr,mathmlBuilder:gr}),mr({type:"array",names:["alignedat"],props:{numArgs:1},handler:xr,htmlBuilder:pr,mathmlBuilder:gr}),$t({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler:function(t,e){throw new i(t.funcName+" valid only within array environment")}});var vr=lr;$t({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];if("ordgroup"!==n.type)throw new i("Invalid environment name",n);for(var o="",s=0;s=w.SCRIPT.id?r.text():w.DISPLAY:"text"===t&&r.size===w.DISPLAY.size?r=w.TEXT:"script"===t?r=w.SCRIPT:"scriptscript"===t&&(r=w.SCRIPTSCRIPT),r},Ar=function(t,e){var r,a=Tr(t.size,e.style),n=a.fracNum(),o=a.fracDen();r=e.havingStyle(n);var i=he(t.numer,r,e);if(t.continued){var s=8.5/e.fontMetrics().ptPerEm,h=3.5/e.fontMetrics().ptPerEm;i.height=i.height0?3*c:7*c,p=e.fontMetrics().denom1):(m>0?(u=e.fontMetrics().num2,d=c):(u=e.fontMetrics().num3,d=3*c),p=e.fontMetrics().denom2),l){var y=e.fontMetrics().axisHeight;u-i.depth-(y+.5*m)0&&(e="."===(e=t)?null:e),e};$t({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,greediness:6,argTypes:["math","math","size","text","math","math"]},handler:function(t,e){var r=t.parser,a=e[4],n=e[5],o=Pt(e[0],"atom");o&&(o=Dt(e[0],"open"));var i=o?Cr(o.text):null,s=Pt(e[1],"atom");s&&(s=Dt(e[1],"close"));var h,l=s?Cr(s.text):null,m=Ht(e[2],"size"),c=null;h=!!m.isBlank||(c=m.value).number>0;var u="auto",d=Pt(e[3],"ordgroup");if(d){if(d.body.length>0){var p=Ht(d.body[0],"textord");u=qr[Number(p.text)]}}else d=Ht(e[3],"textord"),u=qr[Number(d.text)];return{type:"genfrac",mode:r.mode,numer:a,denom:n,continued:!1,hasBarLine:h,barSize:c,leftDelim:i,rightDelim:l,size:u}},htmlBuilder:Ar,mathmlBuilder:Br}),$t({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(t,e){var r=t.parser,a=(t.funcName,t.token);return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Ht(e[0],"size").value,token:a}}}),$t({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(t,e){var r=t.parser,a=(t.funcName,e[0]),n=function(t){if(!t)throw new Error("Expected non-null, but got "+String(t));return t}(Ht(e[1],"infix").size),o=e[2],i=n.number>0;return{type:"genfrac",mode:r.mode,numer:a,denom:o,continued:!1,hasBarLine:i,barSize:n,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:Ar,mathmlBuilder:Br});var Nr=function(t,e){var r,a,n=e.style,o=Pt(t,"supsub");o?(r=o.sup?he(o.sup,e.havingStyle(n.sup()),e):he(o.sub,e.havingStyle(n.sub()),e),a=Ht(o.base,"horizBrace")):a=Ht(t,"horizBrace");var i,s=he(a.base,e.havingBaseStyle(w.DISPLAY)),h=qe(a,e);if(a.isOver?(i=Lt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:h}]},e)).children[0].children[0].children[1].classes.push("svg-align"):(i=Lt.makeVList({positionType:"bottom",positionData:s.depth+.1+h.height,children:[{type:"elem",elem:h},{type:"kern",size:.1},{type:"elem",elem:s}]},e)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Lt.makeSpan(["mord",a.isOver?"mover":"munder"],[i],e);i=a.isOver?Lt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},e):Lt.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},e)}return Lt.makeSpan(["mord",a.isOver?"mover":"munder"],[i],e)};$t({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName;return{type:"horizBrace",mode:r.mode,label:a,isOver:/^\\over/.test(a),base:e[0]}},htmlBuilder:Nr,mathmlBuilder:function(t,e){var r=Be(t.label);return new pe.MathNode(t.isOver?"mover":"munder",[ye(t.base,e),r])}}),$t({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[1],n=Ht(e[0],"url").url;return{type:"href",mode:r.mode,href:n,body:Kt(a)}},htmlBuilder:function(t,e){var r=ae(t.body,e,!1);return Lt.makeAnchor(t.href,[],r,e)},mathmlBuilder:function(t,e){var r=be(t.body,e);return r instanceof ue||(r=new ue("mrow",[r])),r.setAttribute("href",t.href),r}}),$t({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(t,e){for(var r=t.parser,a=Ht(e[0],"url").url,n=[],o=0;o0){var d=s.italic,p=Lt.staticSvg(u+"Size"+(l?"2":"1"),e);s=Lt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:0},{type:"elem",elem:p,shift:l?.08:0}]},e),n.name="\\"+u,s.classes.unshift("mop"),s.italic=d}}else if(n.body){var f=ae(n.body,e,!0);1===f.length&&f[0]instanceof E?(s=f[0]).classes[0]="mop":s=Lt.makeSpan(["mop"],Lt.tryCombineChars(f),e)}else{for(var g=[],x=1;x0){for(var r=t.body.map(function(t){var e=t.text;return"string"==typeof e?{type:"textord",mode:t.mode,text:e}:t}),a=ae(r,e.withFont("mathrm"),!0),n=0;n=0?s.setAttribute("height","+"+n+"em"):(s.setAttribute("height",n+"em"),s.setAttribute("depth","+"+-n+"em")),s.setAttribute("voffset",n+"em"),s}}),$t({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(t,e,r){var a=t.parser,n=!1,o=!1,i=r[0]&&Ht(r[0],"ordgroup");if(i)for(var s="",h=0;hr.height+r.depth+o&&(o=(o+c-r.height-r.depth)/2);var u=h.height-r.height-o-l;r.style.paddingLeft=m+"em";var d=Lt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+u)},{type:"elem",elem:h},{type:"kern",size:l}]},e);if(t.index){var p=e.havingStyle(w.SCRIPTSCRIPT),f=he(t.index,p,e),g=.6*(d.height-d.depth),x=Lt.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:f}]},e),v=Lt.makeSpan(["root"],[x]);return Lt.makeSpan(["mord","sqrt"],[v,d],e)}return Lt.makeSpan(["mord","sqrt"],[d],e)},mathmlBuilder:function(t,e){var r=t.body,a=t.index;return a?new pe.MathNode("mroot",[ye(r,e),ye(a,e)]):new pe.MathNode("msqrt",[ye(r,e)])}});var Vr={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT};$t({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.breakOnTokenText,a=t.funcName,n=t.parser,o=n.parseExpression(!0,r),i=a.slice(1,a.length-5);return{type:"styling",mode:n.mode,style:i,body:o}},htmlBuilder:function(t,e){var r=Vr[t.style],a=e.havingStyle(r).withFont("");return Pr(t.body,a,e)},mathmlBuilder:function(t,e){var r={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT}[t.style],a=e.havingStyle(r),n=ve(t.body,a),o=new pe.MathNode("mstyle",n),i={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[t.style];return o.setAttribute("scriptlevel",i[0]),o.setAttribute("displaystyle",i[1]),o}});Zt({type:"supsub",htmlBuilder:function(t,e){var r=function(t,e){var r=t.base;return r?"op"===r.type?r.limits&&(e.style.size===w.DISPLAY.size||r.alwaysHandleSupSub)?Er:null:"accent"===r.type?c.isCharacterBox(r.base)?Ce:null:"horizBrace"===r.type&&!t.sub===r.isOver?Nr:null:null}(t,e);if(r)return r(t,e);var a,n,o,i=t.base,s=t.sup,h=t.sub,l=he(i,e),m=e.fontMetrics(),u=0,d=0,p=i&&c.isCharacterBox(i);if(s){var f=e.havingStyle(e.style.sup());a=he(s,f,e),p||(u=l.height-f.fontMetrics().supDrop*f.sizeMultiplier/e.sizeMultiplier)}if(h){var g=e.havingStyle(e.style.sub());n=he(h,g,e),p||(d=l.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}o=e.style===w.DISPLAY?m.sup1:e.style.cramped?m.sup3:m.sup2;var x,v=e.sizeMultiplier,b=.5/m.ptPerEm/v+"em",y=null;if(n){var k=t.base&&"op"===t.base.type&&t.base.name&&("\\oiint"===t.base.name||"\\oiiint"===t.base.name);(l instanceof E||k)&&(y=-l.italic+"em")}if(a&&n){u=Math.max(u,o,a.depth+.25*m.xHeight),d=Math.max(d,m.sub2);var S=4*m.defaultRuleThickness;if(u-a.depth-(n.height-d)0&&(u+=z,d-=z)}var M=[{type:"elem",elem:n,shift:d,marginRight:b,marginLeft:y},{type:"elem",elem:a,shift:-u,marginRight:b}];x=Lt.makeVList({positionType:"individualShift",children:M},e)}else if(n){d=Math.max(d,m.sub1,n.height-.8*m.xHeight);var T=[{type:"elem",elem:n,marginLeft:y,marginRight:b}];x=Lt.makeVList({positionType:"shift",positionData:d,children:T},e)}else{if(!a)throw new Error("supsub must have either sup or sub.");u=Math.max(u,o,a.depth+.25*m.xHeight),x=Lt.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:a,marginRight:b}]},e)}var A=ie(l,"right")||"mord";return Lt.makeSpan([A],[l,Lt.makeSpan(["msupsub"],[x])],e)},mathmlBuilder:function(t,e){var r,a=!1,n=Pt(t.base,"horizBrace");n&&!!t.sup===n.isOver&&(a=!0,r=n.isOver),t.base&&"op"===t.base.type&&(t.base.parentIsSupSub=!0);var o,i=[ye(t.base,e)];if(t.sub&&i.push(ye(t.sub,e)),t.sup&&i.push(ye(t.sup,e)),a)o=r?"mover":"munder";else if(t.sub)if(t.sup){var s=t.base;o=s&&"op"===s.type&&s.limits&&e.style===w.DISPLAY?"munderover":"msubsup"}else{var h=t.base;o=h&&"op"===h.type&&h.limits&&(e.style===w.DISPLAY||h.alwaysHandleSupSub)?"munder":"msub"}else{var l=t.base;o=l&&"op"===l.type&&l.limits&&(e.style===w.DISPLAY||l.alwaysHandleSupSub)?"mover":"msup"}return new pe.MathNode(o,i)}}),Zt({type:"atom",htmlBuilder:function(t,e){return Lt.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder:function(t,e){var r=new pe.MathNode("mo",[fe(t.text,t.mode)]);if("bin"===t.family){var a=xe(t,e);"bold-italic"===a&&r.setAttribute("mathvariant",a)}else"punct"===t.family?r.setAttribute("separator","true"):"open"!==t.family&&"close"!==t.family||r.setAttribute("stretchy","false");return r}});var Ur={mi:"italic",mn:"normal",mtext:"normal"};Zt({type:"mathord",htmlBuilder:function(t,e){return Lt.makeOrd(t,e,"mathord")},mathmlBuilder:function(t,e){var r=new pe.MathNode("mi",[fe(t.text,t.mode,e)]),a=xe(t,e)||"italic";return a!==Ur[r.type]&&r.setAttribute("mathvariant",a),r}}),Zt({type:"textord",htmlBuilder:function(t,e){return Lt.makeOrd(t,e,"textord")},mathmlBuilder:function(t,e){var r,a=fe(t.text,t.mode,e),n=xe(t,e)||"normal";return r="text"===t.mode?new pe.MathNode("mtext",[a]):/[0-9]/.test(t.text)?new pe.MathNode("mn",[a]):"\\prime"===t.text?new pe.MathNode("mo",[a]):new pe.MathNode("mi",[a]),n!==Ur[r.type]&&r.setAttribute("mathvariant",n),r}});var Gr={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Xr={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Zt({type:"spacing",htmlBuilder:function(t,e){if(Xr.hasOwnProperty(t.text)){var r=Xr[t.text].className||"";if("text"===t.mode){var a=Lt.makeOrd(t,e,"textord");return a.classes.push(r),a}return Lt.makeSpan(["mspace",r],[Lt.mathsym(t.text,t.mode,e)],e)}if(Gr.hasOwnProperty(t.text))return Lt.makeSpan(["mspace",Gr[t.text]],[],e);throw new i('Unknown type of space "'+t.text+'"')},mathmlBuilder:function(t,e){if(!Xr.hasOwnProperty(t.text)){if(Gr.hasOwnProperty(t.text))return new pe.MathNode("mspace");throw new i('Unknown type of space "'+t.text+'"')}return new pe.MathNode("mtext",[new pe.TextNode("\xa0")])}});var Yr=function(){var t=new pe.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};Zt({type:"tag",mathmlBuilder:function(t,e){var r=new pe.MathNode("mtable",[new pe.MathNode("mtr",[Yr(),new pe.MathNode("mtd",[be(t.body,e)]),Yr(),new pe.MathNode("mtd",[be(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});var _r={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},Wr={"\\textbf":"textbf","\\textmd":"textmd"},jr={"\\textit":"textit","\\textup":"textup"},$r=function(t,e){var r=t.font;return r?_r[r]?e.withTextFontFamily(_r[r]):Wr[r]?e.withTextFontWeight(Wr[r]):e.withTextFontShape(jr[r]):e};$t({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],greediness:2,allowedInText:!0,consumeMode:"text"},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"text",mode:r.mode,body:Kt(n),font:a}},htmlBuilder:function(t,e){var r=$r(t,e),a=ae(t.body,r,!0);return Lt.makeSpan(["mord","text"],Lt.tryCombineChars(a),r)},mathmlBuilder:function(t,e){var r=$r(t,e);return be(t.body,r)}}),$t({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){return{type:"underline",mode:t.parser.mode,body:e[0]}},htmlBuilder:function(t,e){var r=he(t.body,e),a=Lt.makeLineSpan("underline-line",e),n=Lt.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:a.height},{type:"elem",elem:a},{type:"kern",size:3*a.height},{type:"elem",elem:r}]},e);return Lt.makeSpan(["mord","underline"],[n],e)},mathmlBuilder:function(t,e){var r=new pe.MathNode("mo",[new pe.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new pe.MathNode("munder",[ye(t.body,e),r]);return a.setAttribute("accentunder","true"),a}}),$t({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(t,e,r){throw new i("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(t,e){for(var r=Zr(t),a=[],n=e.havingStyle(e.style.text()),o=0;o0&&(this.undefStack[this.undefStack.length-1][t]=e)}else{var n=this.undefStack[this.undefStack.length-1];n&&!n.hasOwnProperty(t)&&(n[t]=this.current[t])}this.current[t]=e},t}(),aa={},na=aa;function oa(t,e){aa[t]=e}oa("\\@firstoftwo",function(t){return{tokens:t.consumeArgs(2)[0],numArgs:0}}),oa("\\@secondoftwo",function(t){return{tokens:t.consumeArgs(2)[1],numArgs:0}}),oa("\\@ifnextchar",function(t){var e=t.consumeArgs(3),r=t.future();return 1===e[0].length&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}}),oa("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),oa("\\TextOrMath",function(t){var e=t.consumeArgs(2);return"text"===t.mode?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var ia={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};oa("\\char",function(t){var e,r=t.popToken(),a="";if("'"===r.text)e=8,r=t.popToken();else if('"'===r.text)e=16,r=t.popToken();else if("`"===r.text)if("\\"===(r=t.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new i("\\char` missing argument");a=r.text.charCodeAt(0)}else e=10;if(e){if(null==(a=ia[r.text])||a>=e)throw new i("Invalid base-"+e+" digit "+r.text);for(var n;null!=(n=ia[t.future().text])&&n":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};oa("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in la?e=la[r]:"\\not"===r.substr(0,4)?e="\\dotsb":r in _.math&&c.contains(["bin","rel"],_.math[r].group)&&(e="\\dotsb"),e});var ma={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};oa("\\dotso",function(t){return t.future().text in ma?"\\ldots\\,":"\\ldots"}),oa("\\dotsc",function(t){var e=t.future().text;return e in ma&&","!==e?"\\ldots\\,":"\\ldots"}),oa("\\cdots",function(t){return t.future().text in ma?"\\@cdots\\,":"\\@cdots"}),oa("\\dotsb","\\cdots"),oa("\\dotsm","\\cdots"),oa("\\dotsi","\\!\\cdots"),oa("\\dotsx","\\ldots\\,"),oa("\\DOTSI","\\relax"),oa("\\DOTSB","\\relax"),oa("\\DOTSX","\\relax"),oa("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),oa("\\,","\\tmspace+{3mu}{.1667em}"),oa("\\thinspace","\\,"),oa("\\>","\\mskip{4mu}"),oa("\\:","\\tmspace+{4mu}{.2222em}"),oa("\\medspace","\\:"),oa("\\;","\\tmspace+{5mu}{.2777em}"),oa("\\thickspace","\\;"),oa("\\!","\\tmspace-{3mu}{.1667em}"),oa("\\negthinspace","\\!"),oa("\\negmedspace","\\tmspace-{4mu}{.2222em}"),oa("\\negthickspace","\\tmspace-{5mu}{.277em}"),oa("\\enspace","\\kern.5em "),oa("\\enskip","\\hskip.5em\\relax"),oa("\\quad","\\hskip1em\\relax"),oa("\\qquad","\\hskip2em\\relax"),oa("\\tag","\\@ifstar\\tag@literal\\tag@paren"),oa("\\tag@paren","\\tag@literal{({#1})}"),oa("\\tag@literal",function(t){if(t.macros.get("\\df@tag"))throw new i("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),oa("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),oa("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),oa("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),oa("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),oa("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\mathrlap{\\mkern0.4mu\\raisebox{0.4mu}{$#1$}}{\\mkern0.8mu#1}}}{\\mathbf{#1}}"),oa("\\\\","\\newline"),oa("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var ca=P["Main-Regular"]["T".charCodeAt(0)][1]-.7*P["Main-Regular"]["A".charCodeAt(0)][1]+"em";oa("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+ca+"}{\\scriptsize A}\\kern-.15em\\TeX}{LaTeX}}"),oa("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+ca+"}{\\scriptsize A}\\kern-.15em\\TeX}{KaTeX}}"),oa("\\hspace","\\@ifstar\\@hspacer\\@hspace"),oa("\\@hspace","\\hskip #1\\relax"),oa("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),oa("\\ordinarycolon",":"),oa("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),oa("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),oa("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),oa("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),oa("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),oa("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),oa("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),oa("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),oa("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),oa("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),oa("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),oa("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),oa("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),oa("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),oa("\u2237","\\dblcolon"),oa("\u2239","\\eqcolon"),oa("\u2254","\\coloneqq"),oa("\u2255","\\eqqcolon"),oa("\u2a74","\\Coloneqq"),oa("\\ratio","\\vcentcolon"),oa("\\coloncolon","\\dblcolon"),oa("\\colonequals","\\coloneqq"),oa("\\coloncolonequals","\\Coloneqq"),oa("\\equalscolon","\\eqqcolon"),oa("\\equalscoloncolon","\\Eqqcolon"),oa("\\colonminus","\\coloneq"),oa("\\coloncolonminus","\\Coloneq"),oa("\\minuscolon","\\eqcolon"),oa("\\minuscoloncolon","\\Eqcolon"),oa("\\coloncolonapprox","\\Colonapprox"),oa("\\coloncolonsim","\\Colonsim"),oa("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),oa("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),oa("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),oa("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),oa("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),oa("\\limsup","\\DOTSB\\mathop{\\operatorname{lim\\,sup}}\\limits"),oa("\\liminf","\\DOTSB\\mathop{\\operatorname{lim\\,inf}}\\limits"),oa("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),oa("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),oa("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),oa("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),oa("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),oa("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),oa("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),oa("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),oa("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),oa("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),oa("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),oa("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),oa("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),oa("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),oa("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),oa("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),oa("\u27e6","\\llbracket"),oa("\u27e7","\\rrbracket"),oa("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),oa("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),oa("\u2983","\\lBrace"),oa("\u2984","\\rBrace"),oa("\\darr","\\downarrow"),oa("\\dArr","\\Downarrow"),oa("\\Darr","\\Downarrow"),oa("\\lang","\\langle"),oa("\\rang","\\rangle"),oa("\\uarr","\\uparrow"),oa("\\uArr","\\Uparrow"),oa("\\Uarr","\\Uparrow"),oa("\\N","\\mathbb{N}"),oa("\\R","\\mathbb{R}"),oa("\\Z","\\mathbb{Z}"),oa("\\alef","\\aleph"),oa("\\alefsym","\\aleph"),oa("\\Alpha","\\mathrm{A}"),oa("\\Beta","\\mathrm{B}"),oa("\\bull","\\bullet"),oa("\\Chi","\\mathrm{X}"),oa("\\clubs","\\clubsuit"),oa("\\cnums","\\mathbb{C}"),oa("\\Complex","\\mathbb{C}"),oa("\\Dagger","\\ddagger"),oa("\\diamonds","\\diamondsuit"),oa("\\empty","\\emptyset"),oa("\\Epsilon","\\mathrm{E}"),oa("\\Eta","\\mathrm{H}"),oa("\\exist","\\exists"),oa("\\harr","\\leftrightarrow"),oa("\\hArr","\\Leftrightarrow"),oa("\\Harr","\\Leftrightarrow"),oa("\\hearts","\\heartsuit"),oa("\\image","\\Im"),oa("\\infin","\\infty"),oa("\\Iota","\\mathrm{I}"),oa("\\isin","\\in"),oa("\\Kappa","\\mathrm{K}"),oa("\\larr","\\leftarrow"),oa("\\lArr","\\Leftarrow"),oa("\\Larr","\\Leftarrow"),oa("\\lrarr","\\leftrightarrow"),oa("\\lrArr","\\Leftrightarrow"),oa("\\Lrarr","\\Leftrightarrow"),oa("\\Mu","\\mathrm{M}"),oa("\\natnums","\\mathbb{N}"),oa("\\Nu","\\mathrm{N}"),oa("\\Omicron","\\mathrm{O}"),oa("\\plusmn","\\pm"),oa("\\rarr","\\rightarrow"),oa("\\rArr","\\Rightarrow"),oa("\\Rarr","\\Rightarrow"),oa("\\real","\\Re"),oa("\\reals","\\mathbb{R}"),oa("\\Reals","\\mathbb{R}"),oa("\\Rho","\\mathrm{P}"),oa("\\sdot","\\cdot"),oa("\\sect","\\S"),oa("\\spades","\\spadesuit"),oa("\\sub","\\subset"),oa("\\sube","\\subseteq"),oa("\\supe","\\supseteq"),oa("\\Tau","\\mathrm{T}"),oa("\\thetasym","\\vartheta"),oa("\\weierp","\\wp"),oa("\\Zeta","\\mathrm{Z}"),oa("\\argmin","\\DOTSB\\mathop{\\operatorname{arg\\,min}}\\limits"),oa("\\argmax","\\DOTSB\\mathop{\\operatorname{arg\\,max}}\\limits"),oa("\\blue","\\textcolor{##6495ed}{#1}"),oa("\\orange","\\textcolor{##ffa500}{#1}"),oa("\\pink","\\textcolor{##ff00af}{#1}"),oa("\\red","\\textcolor{##df0030}{#1}"),oa("\\green","\\textcolor{##28ae7b}{#1}"),oa("\\gray","\\textcolor{gray}{##1}"),oa("\\purple","\\textcolor{##9d38bd}{#1}"),oa("\\blueA","\\textcolor{##ccfaff}{#1}"),oa("\\blueB","\\textcolor{##80f6ff}{#1}"),oa("\\blueC","\\textcolor{##63d9ea}{#1}"),oa("\\blueD","\\textcolor{##11accd}{#1}"),oa("\\blueE","\\textcolor{##0c7f99}{#1}"),oa("\\tealA","\\textcolor{##94fff5}{#1}"),oa("\\tealB","\\textcolor{##26edd5}{#1}"),oa("\\tealC","\\textcolor{##01d1c1}{#1}"),oa("\\tealD","\\textcolor{##01a995}{#1}"),oa("\\tealE","\\textcolor{##208170}{#1}"),oa("\\greenA","\\textcolor{##b6ffb0}{#1}"),oa("\\greenB","\\textcolor{##8af281}{#1}"),oa("\\greenC","\\textcolor{##74cf70}{#1}"),oa("\\greenD","\\textcolor{##1fab54}{#1}"),oa("\\greenE","\\textcolor{##0d923f}{#1}"),oa("\\goldA","\\textcolor{##ffd0a9}{#1}"),oa("\\goldB","\\textcolor{##ffbb71}{#1}"),oa("\\goldC","\\textcolor{##ff9c39}{#1}"),oa("\\goldD","\\textcolor{##e07d10}{#1}"),oa("\\goldE","\\textcolor{##a75a05}{#1}"),oa("\\redA","\\textcolor{##fca9a9}{#1}"),oa("\\redB","\\textcolor{##ff8482}{#1}"),oa("\\redC","\\textcolor{##f9685d}{#1}"),oa("\\redD","\\textcolor{##e84d39}{#1}"),oa("\\redE","\\textcolor{##bc2612}{#1}"),oa("\\maroonA","\\textcolor{##ffbde0}{#1}"),oa("\\maroonB","\\textcolor{##ff92c6}{#1}"),oa("\\maroonC","\\textcolor{##ed5fa6}{#1}"),oa("\\maroonD","\\textcolor{##ca337c}{#1}"),oa("\\maroonE","\\textcolor{##9e034e}{#1}"),oa("\\purpleA","\\textcolor{##ddd7ff}{#1}"),oa("\\purpleB","\\textcolor{##c6b9fc}{#1}"),oa("\\purpleC","\\textcolor{##aa87ff}{#1}"),oa("\\purpleD","\\textcolor{##7854ab}{#1}"),oa("\\purpleE","\\textcolor{##543b78}{#1}"),oa("\\mintA","\\textcolor{##f5f9e8}{#1}"),oa("\\mintB","\\textcolor{##edf2df}{#1}"),oa("\\mintC","\\textcolor{##e0e5cc}{#1}"),oa("\\grayA","\\textcolor{##f6f7f7}{#1}"),oa("\\grayB","\\textcolor{##f0f1f2}{#1}"),oa("\\grayC","\\textcolor{##e3e5e6}{#1}"),oa("\\grayD","\\textcolor{##d6d8da}{#1}"),oa("\\grayE","\\textcolor{##babec2}{#1}"),oa("\\grayF","\\textcolor{##888d93}{#1}"),oa("\\grayG","\\textcolor{##626569}{#1}"),oa("\\grayH","\\textcolor{##3b3e40}{#1}"),oa("\\grayI","\\textcolor{##21242c}{#1}"),oa("\\kaBlue","\\textcolor{##314453}{#1}"),oa("\\kaGreen","\\textcolor{##71B307}{#1}");var ua={"\\relax":!0,"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},da=function(){function t(t,e,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=e,this.expansionCount=0,this.feed(t),this.macros=new ra(na,e.macros),this.mode=r,this.stack=[]}var e=t.prototype;return e.feed=function(t){this.lexer=new ea(t,this.settings)},e.switchMode=function(t){this.mode=t},e.beginGroup=function(){this.macros.beginGroup()},e.endGroup=function(){this.macros.endGroup()},e.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},e.popToken=function(){return this.future(),this.stack.pop()},e.pushToken=function(t){this.stack.push(t)},e.pushTokens=function(t){var e;(e=this.stack).push.apply(e,t)},e.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},e.consumeArgs=function(t){for(var e=[],r=0;rthis.settings.maxExpand)throw new i("Too many expansions: infinite loop or need to increase maxExpand setting");var a=r.tokens;if(r.numArgs)for(var n=this.consumeArgs(r.numArgs),o=(a=a.slice()).length-1;o>=0;--o){var s=a[o];if("#"===s.text){if(0===o)throw new i("Incomplete placeholder at end of macro body",s);if("#"===(s=a[--o]).text)a.splice(o+1,1);else{if(!/^[1-9]$/.test(s.text))throw new i("Not a valid argument number",s);var h;(h=a).splice.apply(h,[o,2].concat(n[+s.text-1]))}}}return this.pushTokens(a),a},e.expandAfterFuture=function(){return this.expandOnce(),this.future()},e.expandNextToken=function(){for(;;){var t=this.expandOnce();if(t instanceof n){if("\\relax"!==t.text)return this.stack.pop();this.stack.pop()}}throw new Error},e.expandMacro=function(t){if(this.macros.get(t)){var e=[],r=this.stack.length;for(this.pushToken(new n(t));this.stack.length>r;){this.expandOnce()instanceof n&&e.push(this.stack.pop())}return e}},e.expandMacroAsText=function(t){var e=this.expandMacro(t);return e?e.map(function(t){return t.text}).join(""):e},e._getExpansion=function(t){var e=this.macros.get(t);if(null==e)return e;var r="function"==typeof e?e(this):e;if("string"==typeof r){var a=0;if(-1!==r.indexOf("#"))for(var n=r.replace(/##/g,"");-1!==n.indexOf("#"+(a+1));)++a;for(var o=new ea(r,this.settings),i=[],s=o.lex();"EOF"!==s.text;)i.push(s),s=o.lex();return i.reverse(),{tokens:i,numArgs:a}}return r},e.isDefined=function(t){return this.macros.has(t)||Kr.hasOwnProperty(t)||_.math.hasOwnProperty(t)||_.text.hasOwnProperty(t)||ua.hasOwnProperty(t)},t}(),pa={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"}},fa={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\u010f":"d\u030c","\u1e0b":"d\u0307","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u013a":"l\u0301","\u013e":"l\u030c","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\u010e":"D\u030c","\u1e0a":"D\u0307","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0139":"L\u0301","\u013d":"L\u030c","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u0164":"T\u030c","\u1e6a":"T\u0307","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"},ga=function(){function t(t,e){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new da(t,e,this.mode),this.settings=e,this.leftrightDepth=0}var e=t.prototype;return e.expect=function(t,e){if(void 0===e&&(e=!0),this.nextToken.text!==t)throw new i("Expected '"+t+"', got '"+this.nextToken.text+"'",this.nextToken);e&&this.consume()},e.consume=function(){this.nextToken=this.gullet.expandNextToken()},e.switchMode=function(t){this.mode=t,this.gullet.switchMode(t)},e.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor"),this.consume();var t=this.parseExpression(!1);return this.expect("EOF",!1),this.gullet.endGroup(),t},e.parseExpression=function(e,r){for(var a=[];;){"math"===this.mode&&this.consumeSpaces();var n=this.nextToken;if(-1!==t.endOfExpression.indexOf(n.text))break;if(r&&n.text===r)break;if(e&&Kr[n.text]&&Kr[n.text].infix)break;var o=this.parseAtom(r);if(!o)break;a.push(o)}return"text"===this.mode&&this.formLigatures(a),this.handleInfixNodes(a)},e.handleInfixNodes=function(t){for(var e,r=-1,a=0;a0&&!l&&this.consumeSpaces(),0!==s||l||"math"!==this.mode||this.consumeSpaces();var m=this.nextToken,c=this.parseGroupOfType("argument to '"+t+"'",h,l,a);if(!c){if(l){o.push(null);continue}throw new i("Expected group after '"+t+"'",m)}(l?o:n).push(c)}return{args:n,optArgs:o}},e.parseGroupOfType=function(t,e,r,a){switch(e){case"color":return this.parseColorGroup(r);case"size":return this.parseSizeGroup(r);case"url":return this.parseUrlGroup(r);case"math":case"text":return this.parseGroup(t,r,a,void 0,e);case"raw":if(r&&"{"===this.nextToken.text)return null;var n=this.parseStringGroup("raw",r,!0);if(n)return{type:"raw",mode:"text",string:n.text};throw new i("Expected raw group",this.nextToken);case"original":case null:case void 0:return this.parseGroup(t,r,a);default:throw new i("Unknown group type as "+t,this.nextToken)}},e.consumeSpaces=function(){for(;" "===this.nextToken.text;)this.consume()},e.parseStringGroup=function(t,e,r){var a=e?"[":"{",n=e?"]":"}",o=this.nextToken;if(o.text!==a){if(e)return null;if(r&&"EOF"!==o.text&&/[^{}[\]]/.test(o.text))return this.gullet.lexer.setCatcode("%",14),this.consume(),o}var s=this.mode;this.mode="text",this.expect(a);for(var h="",l=this.nextToken,m=0,c=l;r&&m>0||this.nextToken.text!==n;){switch(this.nextToken.text){case"EOF":throw new i("Unexpected end of input in "+t,l.range(c,h));case a:m++;break;case n:m--}h+=(c=this.nextToken).text,this.consume()}return this.mode=s,this.gullet.lexer.setCatcode("%",14),this.expect(n),l.range(c,h)},e.parseRegexGroup=function(t,e){var r=this.mode;this.mode="text";for(var a=this.nextToken,n=a,o="";"EOF"!==this.nextToken.text&&t.test(o+this.nextToken.text);)o+=(n=this.nextToken).text,this.consume();if(""===o)throw new i("Invalid "+e+": '"+a.text+"'",a);return this.mode=r,a.range(n,o)},e.parseColorGroup=function(t){var e=this.parseStringGroup("color",t);if(!e)return null;var r=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(e.text);if(!r)throw new i("Invalid color: '"+e.text+"'",e);var a=r[0];return/^[0-9a-f]{6}$/i.test(a)&&(a="#"+a),{type:"color-token",mode:this.mode,color:a}},e.parseSizeGroup=function(t){var e,r=!1;if(!(e=t||"{"===this.nextToken.text?this.parseStringGroup("size",t):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;t||0!==e.text.length||(e.text="0pt",r=!0);var a=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e.text);if(!a)throw new i("Invalid size: '"+e.text+"'",e);var n,o={number:+(a[1]+a[2]),unit:a[3]};if("string"!=typeof(n=o)&&(n=n.unit),!(n in kt||n in St||"ex"===n))throw new i("Invalid unit: '"+o.unit+"'",e);return{type:"size",mode:this.mode,value:o,isBlank:r}},e.parseUrlGroup=function(t){var e=this.parseStringGroup("url",t,!0);if(!e)return null;var r=e.text.replace(/\\([#$%&~_^{}])/g,"$1"),a=/^\s*([^\\\/#]*?)(?::|�*58|�*3a)/i.exec(r);a=null!=a?a[1]:"_relative";var n=this.settings.allowedProtocols;if(!c.contains(n,"*")&&!c.contains(n,a))throw new i("Forbidden protocol '"+a+"'",e);return{type:"url",mode:this.mode,url:r}},e.parseGroup=function(e,r,n,o,s){var h,l,m=this.mode,c=this.nextToken,u=c.text;if(s&&this.switchMode(s),r?"["===u:"{"===u||"\\begingroup"===u){h=t.endOfGroup[u],this.gullet.beginGroup(),this.consume();var d=this.parseExpression(!1,h),p=this.nextToken;this.gullet.endGroup(),l={type:"ordgroup",mode:this.mode,loc:a.range(c,p),body:d,semisimple:"\\begingroup"===u||void 0}}else if(r)l=null;else if(null==(l=this.parseFunction(o,e,n)||this.parseSymbol())&&"\\"===u[0]&&!ua.hasOwnProperty(u)){if(this.settings.throwOnError)throw new i("Undefined control sequence: "+u,c);l=this.handleUnsupportedCmd()}return s&&this.switchMode(m),h&&this.expect(h),l},e.formLigatures=function(t){for(var e=t.length-1,r=0;r=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+e[0]+'" used in math mode',t);var h,l=_[this.mode][e].group,m=a.range(t);if(G.hasOwnProperty(l)){var c=l;h={type:"atom",mode:this.mode,family:c,loc:m,text:e}}else h={type:l,mode:this.mode,loc:m,text:e};o=h}else{if(!(e.charCodeAt(0)>=128))return null;this.settings.strict&&(z(e.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+e[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+e[0]+'" ('+e.charCodeAt(0)+")",t)),o={type:"textord",mode:this.mode,loc:a.range(t),text:e}}if(this.consume(),s)for(var u=0;u
@@ -15,10 +15,6 @@ class SourceLocation {
15
15
  this.start = start;
16
16
  this.end = end;
17
17
  }
18
-
19
- getSource() {
20
- return this.lexer.input.slice(this.start, this.end);
21
- }
22
18
  /**
23
19
  * Merges two `SourceLocation`s from location providers, given they are
24
20
  * provided in order of appearance.
@@ -264,6 +260,8 @@ var utils = {
264
260
  class Settings {
265
261
  constructor(options) {
266
262
  this.displayMode = void 0;
263
+ this.leqno = void 0;
264
+ this.fleqn = void 0;
267
265
  this.throwOnError = void 0;
268
266
  this.errorColor = void 0;
269
267
  this.macros = void 0;
@@ -275,6 +273,8 @@ class Settings {
275
273
  // allow null options
276
274
  options = options || {};
277
275
  this.displayMode = utils.deflt(options.displayMode, false);
276
+ this.leqno = utils.deflt(options.leqno, false);
277
+ this.fleqn = utils.deflt(options.fleqn, false);
278
278
  this.throwOnError = utils.deflt(options.throwOnError, true);
279
279
  this.errorColor = utils.deflt(options.errorColor, "#cc0000");
280
280
  this.macros = options.macros || {};
@@ -839,7 +839,7 @@ s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47
839
839
  121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6
840
840
  s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11
841
841
  c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z
842
- M100 241v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,
842
+ M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,
843
843
  // rightarrowabovebar is mostly from glyph U+2192, KaTeX Main
844
844
  rightarrowabovebar: `M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32
845
845
  -27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0
@@ -1920,7 +1920,6 @@ var metricMap = {
1920
1920
  "730": [0, 0.69444, 0, 0, 0.86944],
1921
1921
  "732": [0, 0.69444, 0, 0, 0.575],
1922
1922
  "733": [0, 0.69444, 0, 0, 0.575],
1923
- "824": [0.19444, 0.69444, 0, 0, 0],
1924
1923
  "915": [0, 0.68611, 0, 0, 0.69166],
1925
1924
  "916": [0, 0.68611, 0, 0, 0.95833],
1926
1925
  "920": [0, 0.68611, 0, 0, 0.89444],
@@ -2048,7 +2047,8 @@ var metricMap = {
2048
2047
  "10217": [0.25, 0.75, 0, 0, 0.44722],
2049
2048
  "10815": [0, 0.68611, 0, 0, 0.9],
2050
2049
  "10927": [0.19667, 0.69667, 0, 0, 0.89444],
2051
- "10928": [0.19667, 0.69667, 0, 0, 0.89444]
2050
+ "10928": [0.19667, 0.69667, 0, 0, 0.89444],
2051
+ "57376": [0.19444, 0.69444, 0, 0, 0]
2052
2052
  },
2053
2053
  "Main-BoldItalic": {
2054
2054
  "33": [0, 0.69444, 0.11417, 0, 0.38611],
@@ -2431,7 +2431,6 @@ var metricMap = {
2431
2431
  "730": [0, 0.69444, 0, 0, 0.75],
2432
2432
  "732": [0, 0.66786, 0, 0, 0.5],
2433
2433
  "733": [0, 0.69444, 0, 0, 0.5],
2434
- "824": [0.19444, 0.69444, 0, 0, 0],
2435
2434
  "915": [0, 0.68333, 0, 0, 0.625],
2436
2435
  "916": [0, 0.68333, 0, 0, 0.83334],
2437
2436
  "920": [0, 0.68333, 0, 0, 0.77778],
@@ -2516,7 +2515,6 @@ var metricMap = {
2516
2515
  "8776": [-0.01688, 0.48312, 0, 0, 0.77778],
2517
2516
  "8781": [-0.03625, 0.46375, 0, 0, 0.77778],
2518
2517
  "8784": [-0.133, 0.67, 0, 0, 0.778],
2519
- "8800": [0.215, 0.716, 0, 0, 0.778],
2520
2518
  "8801": [-0.03625, 0.46375, 0, 0, 0.77778],
2521
2519
  "8804": [0.13597, 0.63597, 0, 0, 0.77778],
2522
2520
  "8805": [0.13597, 0.63597, 0, 0, 0.77778],
@@ -2583,10 +2581,10 @@ var metricMap = {
2583
2581
  "10236": [0.011, 0.511, 0, 0, 1.638],
2584
2582
  "10815": [0, 0.68333, 0, 0, 0.75],
2585
2583
  "10927": [0.13597, 0.63597, 0, 0, 0.77778],
2586
- "10928": [0.13597, 0.63597, 0, 0, 0.77778]
2584
+ "10928": [0.13597, 0.63597, 0, 0, 0.77778],
2585
+ "57376": [0.19444, 0.69444, 0, 0, 0]
2587
2586
  },
2588
2587
  "Math-BoldItalic": {
2589
- "47": [0.19444, 0.69444, 0, 0, 0],
2590
2588
  "65": [0, 0.68611, 0, 0, 0.86944],
2591
2589
  "66": [0, 0.68611, 0.04835, 0, 0.8664],
2592
2590
  "67": [0, 0.68611, 0.06979, 0, 0.81694],
@@ -2682,7 +2680,6 @@ var metricMap = {
2682
2680
  "1013": [0, 0.44444, 0, 0, 0.48333]
2683
2681
  },
2684
2682
  "Math-Italic": {
2685
- "47": [0.19444, 0.69444, 0, 0, 0],
2686
2683
  "65": [0, 0.68333, 0, 0.13889, 0.75],
2687
2684
  "66": [0, 0.68333, 0.05017, 0.08334, 0.75851],
2688
2685
  "67": [0, 0.68333, 0.07153, 0.08334, 0.71472],
@@ -3749,13 +3746,13 @@ function getCharacterMetrics(character, font, mode) {
3749
3746
  }
3750
3747
 
3751
3748
  let ch = character.charCodeAt(0);
3749
+ let metrics = metricMap[font][ch];
3752
3750
 
3753
- if (character[0] in extraCharacterMap) {
3751
+ if (!metrics && character[0] in extraCharacterMap) {
3754
3752
  ch = extraCharacterMap[character[0]].charCodeAt(0);
3753
+ metrics = metricMap[font][ch];
3755
3754
  }
3756
3755
 
3757
- let metrics = metricMap[font][ch];
3758
-
3759
3756
  if (!metrics && mode === 'text') {
3760
3757
  // We don't typically have font metrics for Asian scripts.
3761
3758
  // But since we support them in text mode, we need to return
@@ -3820,7 +3817,7 @@ function getGlobalMetrics(size) {
3820
3817
  normal font), or "ams" (the ams fonts).
3821
3818
  * - group (required): the ParseNode group type the symbol should have (i.e.
3822
3819
  "textord", "mathord", etc).
3823
- See https://github.com/Khan/KaTeX/wiki/Examining-TeX#group-types
3820
+ See https://github.com/KaTeX/KaTeX/wiki/Examining-TeX#group-types
3824
3821
  * - replace: the character that this symbol or function should be
3825
3822
  * replaced with (i.e. "\phi" has a replace value of "\u03d5", the phi
3826
3823
  * character in the main font).
@@ -3987,12 +3984,13 @@ defineSymbol(math, main, rel, "\u21c1", "\\rightharpoondown", true);
3987
3984
  defineSymbol(math, main, rel, "\u2196", "\\nwarrow", true);
3988
3985
  defineSymbol(math, main, rel, "\u21cc", "\\rightleftharpoons", true); // AMS Negated Binary Relations
3989
3986
 
3990
- defineSymbol(math, ams, rel, "\u226e", "\\nless", true);
3991
- defineSymbol(math, ams, rel, "\ue010", "\\nleqslant");
3992
- defineSymbol(math, ams, rel, "\ue011", "\\nleqq");
3987
+ defineSymbol(math, ams, rel, "\u226e", "\\nless", true); // Symbol names preceeded by "@" each have a corresponding macro.
3988
+
3989
+ defineSymbol(math, ams, rel, "\ue010", "\\@nleqslant");
3990
+ defineSymbol(math, ams, rel, "\ue011", "\\@nleqq");
3993
3991
  defineSymbol(math, ams, rel, "\u2a87", "\\lneq", true);
3994
3992
  defineSymbol(math, ams, rel, "\u2268", "\\lneqq", true);
3995
- defineSymbol(math, ams, rel, "\ue00c", "\\lvertneqq");
3993
+ defineSymbol(math, ams, rel, "\ue00c", "\\@lvertneqq");
3996
3994
  defineSymbol(math, ams, rel, "\u22e6", "\\lnsim", true);
3997
3995
  defineSymbol(math, ams, rel, "\u2a89", "\\lnapprox", true);
3998
3996
  defineSymbol(math, ams, rel, "\u2280", "\\nprec", true); // unicode-math maps \u22e0 to \npreccurlyeq. We'll use the AMS synonym.
@@ -4001,22 +3999,22 @@ defineSymbol(math, ams, rel, "\u22e0", "\\npreceq", true);
4001
3999
  defineSymbol(math, ams, rel, "\u22e8", "\\precnsim", true);
4002
4000
  defineSymbol(math, ams, rel, "\u2ab9", "\\precnapprox", true);
4003
4001
  defineSymbol(math, ams, rel, "\u2241", "\\nsim", true);
4004
- defineSymbol(math, ams, rel, "\ue006", "\\nshortmid");
4002
+ defineSymbol(math, ams, rel, "\ue006", "\\@nshortmid");
4005
4003
  defineSymbol(math, ams, rel, "\u2224", "\\nmid", true);
4006
4004
  defineSymbol(math, ams, rel, "\u22ac", "\\nvdash", true);
4007
4005
  defineSymbol(math, ams, rel, "\u22ad", "\\nvDash", true);
4008
4006
  defineSymbol(math, ams, rel, "\u22ea", "\\ntriangleleft");
4009
4007
  defineSymbol(math, ams, rel, "\u22ec", "\\ntrianglelefteq", true);
4010
4008
  defineSymbol(math, ams, rel, "\u228a", "\\subsetneq", true);
4011
- defineSymbol(math, ams, rel, "\ue01a", "\\varsubsetneq");
4009
+ defineSymbol(math, ams, rel, "\ue01a", "\\@varsubsetneq");
4012
4010
  defineSymbol(math, ams, rel, "\u2acb", "\\subsetneqq", true);
4013
- defineSymbol(math, ams, rel, "\ue017", "\\varsubsetneqq");
4011
+ defineSymbol(math, ams, rel, "\ue017", "\\@varsubsetneqq");
4014
4012
  defineSymbol(math, ams, rel, "\u226f", "\\ngtr", true);
4015
- defineSymbol(math, ams, rel, "\ue00f", "\\ngeqslant");
4016
- defineSymbol(math, ams, rel, "\ue00e", "\\ngeqq");
4013
+ defineSymbol(math, ams, rel, "\ue00f", "\\@ngeqslant");
4014
+ defineSymbol(math, ams, rel, "\ue00e", "\\@ngeqq");
4017
4015
  defineSymbol(math, ams, rel, "\u2a88", "\\gneq", true);
4018
4016
  defineSymbol(math, ams, rel, "\u2269", "\\gneqq", true);
4019
- defineSymbol(math, ams, rel, "\ue00d", "\\gvertneqq");
4017
+ defineSymbol(math, ams, rel, "\ue00d", "\\@gvertneqq");
4020
4018
  defineSymbol(math, ams, rel, "\u22e7", "\\gnsim", true);
4021
4019
  defineSymbol(math, ams, rel, "\u2a8a", "\\gnapprox", true);
4022
4020
  defineSymbol(math, ams, rel, "\u2281", "\\nsucc", true); // unicode-math maps \u22e1 to \nsucccurlyeq. We'll use the AMS synonym.
@@ -4026,20 +4024,20 @@ defineSymbol(math, ams, rel, "\u22e9", "\\succnsim", true);
4026
4024
  defineSymbol(math, ams, rel, "\u2aba", "\\succnapprox", true); // unicode-math maps \u2246 to \simneqq. We'll use the AMS synonym.
4027
4025
 
4028
4026
  defineSymbol(math, ams, rel, "\u2246", "\\ncong", true);
4029
- defineSymbol(math, ams, rel, "\ue007", "\\nshortparallel");
4027
+ defineSymbol(math, ams, rel, "\ue007", "\\@nshortparallel");
4030
4028
  defineSymbol(math, ams, rel, "\u2226", "\\nparallel", true);
4031
4029
  defineSymbol(math, ams, rel, "\u22af", "\\nVDash", true);
4032
4030
  defineSymbol(math, ams, rel, "\u22eb", "\\ntriangleright");
4033
4031
  defineSymbol(math, ams, rel, "\u22ed", "\\ntrianglerighteq", true);
4034
- defineSymbol(math, ams, rel, "\ue018", "\\nsupseteqq");
4032
+ defineSymbol(math, ams, rel, "\ue018", "\\@nsupseteqq");
4035
4033
  defineSymbol(math, ams, rel, "\u228b", "\\supsetneq", true);
4036
- defineSymbol(math, ams, rel, "\ue01b", "\\varsupsetneq");
4034
+ defineSymbol(math, ams, rel, "\ue01b", "\\@varsupsetneq");
4037
4035
  defineSymbol(math, ams, rel, "\u2acc", "\\supsetneqq", true);
4038
- defineSymbol(math, ams, rel, "\ue019", "\\varsupsetneqq");
4036
+ defineSymbol(math, ams, rel, "\ue019", "\\@varsupsetneqq");
4039
4037
  defineSymbol(math, ams, rel, "\u22ae", "\\nVdash", true);
4040
4038
  defineSymbol(math, ams, rel, "\u2ab5", "\\precneqq", true);
4041
4039
  defineSymbol(math, ams, rel, "\u2ab6", "\\succneqq", true);
4042
- defineSymbol(math, ams, rel, "\ue016", "\\nsubseteqq");
4040
+ defineSymbol(math, ams, rel, "\ue016", "\\@nsubseteqq");
4043
4041
  defineSymbol(math, ams, bin, "\u22b4", "\\unlhd");
4044
4042
  defineSymbol(math, ams, bin, "\u22b5", "\\unrhd"); // AMS Negated Arrows
4045
4043
 
@@ -4062,7 +4060,6 @@ defineSymbol(math, ams, textord, "\u2204", "\\nexists");
4062
4060
  defineSymbol(math, ams, textord, "\u2127", "\\mho");
4063
4061
  defineSymbol(math, ams, textord, "\u2132", "\\Finv", true);
4064
4062
  defineSymbol(math, ams, textord, "\u2141", "\\Game", true);
4065
- defineSymbol(math, ams, textord, "\u006b", "\\Bbbk");
4066
4063
  defineSymbol(math, ams, textord, "\u2035", "\\backprime");
4067
4064
  defineSymbol(math, ams, textord, "\u25b2", "\\blacktriangle");
4068
4065
  defineSymbol(math, ams, textord, "\u25bc", "\\blacktriangledown");
@@ -4345,7 +4342,7 @@ defineSymbol(math, main, rel, "\u2265", "\\geq", true);
4345
4342
  defineSymbol(math, main, rel, "\u2190", "\\gets");
4346
4343
  defineSymbol(math, main, rel, ">", "\\gt");
4347
4344
  defineSymbol(math, main, rel, "\u2208", "\\in", true);
4348
- defineSymbol(math, main, rel, "\u0338", "\\@not");
4345
+ defineSymbol(math, main, rel, "\ue020", "\\@not");
4349
4346
  defineSymbol(math, main, rel, "\u2282", "\\subset", true);
4350
4347
  defineSymbol(math, main, rel, "\u2283", "\\supset", true);
4351
4348
  defineSymbol(math, main, rel, "\u2286", "\\subseteq", true);
@@ -4421,6 +4418,8 @@ defineSymbol(math, main, textord, "\u2225", "\\|");
4421
4418
  defineSymbol(math, main, textord, "\u2225", "\\Vert");
4422
4419
  defineSymbol(text$1, main, textord, "\u2225", "\\textbardbl");
4423
4420
  defineSymbol(text$1, main, textord, "~", "\\textasciitilde");
4421
+ defineSymbol(text$1, main, textord, "\\", "\\textbackslash");
4422
+ defineSymbol(text$1, main, textord, "^", "\\textasciicircum");
4424
4423
  defineSymbol(math, main, rel, "\u2191", "\\uparrow", true);
4425
4424
  defineSymbol(math, main, rel, "\u21d1", "\\Uparrow", true);
4426
4425
  defineSymbol(math, main, rel, "\u2193", "\\downarrow", true);
@@ -4561,13 +4560,32 @@ for (let i = 0; i < letters.length; i++) {
4561
4560
  const ch = letters.charAt(i);
4562
4561
  defineSymbol(math, main, mathord, ch, ch);
4563
4562
  defineSymbol(text$1, main, textord, ch, ch);
4564
- } // The next loop loads wide (surrogate pair) characters.
4563
+ } // Blackboard bold and script letters in Unicode range
4564
+
4565
+
4566
+ defineSymbol(math, ams, textord, "C", "\u2102"); // blackboard bold
4567
+
4568
+ defineSymbol(text$1, ams, textord, "C", "\u2102");
4569
+ defineSymbol(math, ams, textord, "H", "\u210D");
4570
+ defineSymbol(text$1, ams, textord, "H", "\u210D");
4571
+ defineSymbol(math, ams, textord, "N", "\u2115");
4572
+ defineSymbol(text$1, ams, textord, "N", "\u2115");
4573
+ defineSymbol(math, ams, textord, "P", "\u2119");
4574
+ defineSymbol(text$1, ams, textord, "P", "\u2119");
4575
+ defineSymbol(math, ams, textord, "Q", "\u211A");
4576
+ defineSymbol(text$1, ams, textord, "Q", "\u211A");
4577
+ defineSymbol(math, ams, textord, "R", "\u211D");
4578
+ defineSymbol(text$1, ams, textord, "R", "\u211D");
4579
+ defineSymbol(math, ams, textord, "Z", "\u2124");
4580
+ defineSymbol(text$1, ams, textord, "Z", "\u2124");
4581
+ defineSymbol(math, main, mathord, "h", "\u210E"); // italic h, Planck constant
4582
+
4583
+ defineSymbol(text$1, main, mathord, "h", "\u210E"); // The next loop loads wide (surrogate pair) characters.
4565
4584
  // We support some letters in the Unicode range U+1D400 to U+1D7FF,
4566
4585
  // Mathematical Alphanumeric Symbols.
4567
4586
  // Some editors do not deal well with wide characters. So don't write the
4568
4587
  // string into this file. Instead, create the string from the surrogate pair.
4569
4588
 
4570
-
4571
4589
  let wideChar = "";
4572
4590
 
4573
4591
  for (let i = 0; i < letters.length; i++) {
@@ -4775,7 +4793,8 @@ const sizeMultipliers = [// fontMetrics.js:getGlobalMetrics also uses size index
4775
4793
 
4776
4794
  const sizeAtStyle = function sizeAtStyle(size, style) {
4777
4795
  return style.size < 2 ? size : sizeStyleMap[size - 1][style.size - 1];
4778
- };
4796
+ }; // In these types, "" (empty string) means "no change".
4797
+
4779
4798
 
4780
4799
  /**
4781
4800
  * This is the main options class. It contains the current style, size, color,
@@ -5043,20 +5062,13 @@ class Options {
5043
5062
  return this._fontMetrics;
5044
5063
  }
5045
5064
  /**
5046
- * A map of color names to CSS colors.
5047
- * TODO(emily): Remove this when we have real macros
5065
+ * Gets the CSS color of the current options object
5048
5066
  */
5049
5067
 
5050
5068
 
5051
- /**
5052
- * Gets the CSS color of the current options object, accounting for the
5053
- * `colorMap`.
5054
- */
5055
5069
  getColor() {
5056
5070
  if (this.phantom) {
5057
5071
  return "transparent";
5058
- } else if (this.color != null && Options.colorMap.hasOwnProperty(this.color)) {
5059
- return Options.colorMap[this.color];
5060
5072
  } else {
5061
5073
  return this.color;
5062
5074
  }
@@ -5065,64 +5077,6 @@ class Options {
5065
5077
  }
5066
5078
 
5067
5079
  Options.BASESIZE = 6;
5068
- Options.colorMap = {
5069
- "katex-blue": "#6495ed",
5070
- "katex-orange": "#ffa500",
5071
- "katex-pink": "#ff00af",
5072
- "katex-red": "#df0030",
5073
- "katex-green": "#28ae7b",
5074
- "katex-gray": "gray",
5075
- "katex-purple": "#9d38bd",
5076
- "katex-blueA": "#ccfaff",
5077
- "katex-blueB": "#80f6ff",
5078
- "katex-blueC": "#63d9ea",
5079
- "katex-blueD": "#11accd",
5080
- "katex-blueE": "#0c7f99",
5081
- "katex-tealA": "#94fff5",
5082
- "katex-tealB": "#26edd5",
5083
- "katex-tealC": "#01d1c1",
5084
- "katex-tealD": "#01a995",
5085
- "katex-tealE": "#208170",
5086
- "katex-greenA": "#b6ffb0",
5087
- "katex-greenB": "#8af281",
5088
- "katex-greenC": "#74cf70",
5089
- "katex-greenD": "#1fab54",
5090
- "katex-greenE": "#0d923f",
5091
- "katex-goldA": "#ffd0a9",
5092
- "katex-goldB": "#ffbb71",
5093
- "katex-goldC": "#ff9c39",
5094
- "katex-goldD": "#e07d10",
5095
- "katex-goldE": "#a75a05",
5096
- "katex-redA": "#fca9a9",
5097
- "katex-redB": "#ff8482",
5098
- "katex-redC": "#f9685d",
5099
- "katex-redD": "#e84d39",
5100
- "katex-redE": "#bc2612",
5101
- "katex-maroonA": "#ffbde0",
5102
- "katex-maroonB": "#ff92c6",
5103
- "katex-maroonC": "#ed5fa6",
5104
- "katex-maroonD": "#ca337c",
5105
- "katex-maroonE": "#9e034e",
5106
- "katex-purpleA": "#ddd7ff",
5107
- "katex-purpleB": "#c6b9fc",
5108
- "katex-purpleC": "#aa87ff",
5109
- "katex-purpleD": "#7854ab",
5110
- "katex-purpleE": "#543b78",
5111
- "katex-mintA": "#f5f9e8",
5112
- "katex-mintB": "#edf2df",
5113
- "katex-mintC": "#e0e5cc",
5114
- "katex-grayA": "#f6f7f7",
5115
- "katex-grayB": "#f0f1f2",
5116
- "katex-grayC": "#e3e5e6",
5117
- "katex-grayD": "#d6d8da",
5118
- "katex-grayE": "#babec2",
5119
- "katex-grayF": "#888d93",
5120
- "katex-grayG": "#626569",
5121
- "katex-grayH": "#3b3e40",
5122
- "katex-grayI": "#21242c",
5123
- "katex-kaBlue": "#314453",
5124
- "katex-kaGreen": "#71B307"
5125
- };
5126
5080
 
5127
5081
  /**
5128
5082
  * This file does conversion between units. In particular, it provides
@@ -5309,7 +5263,11 @@ const makeSymbol = function makeSymbol(value, fontName, mode, options, classes)
5309
5263
  */
5310
5264
 
5311
5265
 
5312
- const mathsym = function mathsym(value, mode, options, classes = []) {
5266
+ const mathsym = function mathsym(value, mode, options, classes) {
5267
+ if (classes === void 0) {
5268
+ classes = [];
5269
+ }
5270
+
5313
5271
  // Decide what font to render the symbol in by its entry in the symbols
5314
5272
  // table.
5315
5273
  // Have a special case for when the value = \ because the \ is used as a
@@ -6138,15 +6096,14 @@ const _htmlGroupBuilders = {};
6138
6096
  */
6139
6097
 
6140
6098
  const _mathmlGroupBuilders = {};
6141
- function defineFunction({
6142
- type,
6143
- nodeType,
6144
- names,
6145
- props,
6146
- handler,
6147
- htmlBuilder,
6148
- mathmlBuilder
6149
- }) {
6099
+ function defineFunction(_ref) {
6100
+ let type = _ref.type,
6101
+ nodeType = _ref.nodeType,
6102
+ names = _ref.names,
6103
+ props = _ref.props,
6104
+ handler = _ref.handler,
6105
+ htmlBuilder = _ref.htmlBuilder,
6106
+ mathmlBuilder = _ref.mathmlBuilder;
6150
6107
  // Set default values of functions
6151
6108
  const data = {
6152
6109
  type,
@@ -6185,11 +6142,10 @@ function defineFunction({
6185
6142
  * stand-alone handler provided to `defineFunction`).
6186
6143
  */
6187
6144
 
6188
- function defineFunctionBuilders({
6189
- type,
6190
- htmlBuilder,
6191
- mathmlBuilder
6192
- }) {
6145
+ function defineFunctionBuilders(_ref2) {
6146
+ let type = _ref2.type,
6147
+ htmlBuilder = _ref2.htmlBuilder,
6148
+ mathmlBuilder = _ref2.mathmlBuilder;
6193
6149
  defineFunction({
6194
6150
  type,
6195
6151
  names: [],
@@ -6222,25 +6178,8 @@ const makeSpan$1 = buildCommon.makeSpan; // Binary atoms (first class `mbin`) ch
6222
6178
  // depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6,
6223
6179
  // and the text before Rule 19.
6224
6180
 
6225
- const isBinLeftCanceller = function isBinLeftCanceller(node, isRealGroup) {
6226
- // TODO: This code assumes that a node's math class is the first element
6227
- // of its `classes` array. A later cleanup should ensure this, for
6228
- // instance by changing the signature of `makeSpan`.
6229
- if (node) {
6230
- return utils.contains(["mbin", "mopen", "mrel", "mop", "mpunct"], getTypeOfDomTree(node, "right"));
6231
- } else {
6232
- return isRealGroup;
6233
- }
6234
- };
6235
-
6236
- const isBinRightCanceller = function isBinRightCanceller(node, isRealGroup) {
6237
- if (node) {
6238
- return utils.contains(["mrel", "mclose", "mpunct"], getTypeOfDomTree(node, "left"));
6239
- } else {
6240
- return isRealGroup;
6241
- }
6242
- };
6243
-
6181
+ const binLeftCanceller = ["leftmost", "mbin", "mopen", "mrel", "mop", "mpunct"];
6182
+ const binRightCanceller = ["rightmost", "mrel", "mclose", "mpunct"];
6244
6183
  const styleMap = {
6245
6184
  "display": Style$1.DISPLAY,
6246
6185
  "text": Style$1.TEXT,
@@ -6266,111 +6205,162 @@ const DomEnum = {
6266
6205
  * a partial group (e.g. one created by \color). `surrounding` is an array
6267
6206
  * consisting type of nodes that will be added to the left and right.
6268
6207
  */
6269
- const buildExpression = function buildExpression(expression, options, isRealGroup, surrounding = [null, null]) {
6208
+ const buildExpression = function buildExpression(expression, options, isRealGroup, surrounding) {
6209
+ if (surrounding === void 0) {
6210
+ surrounding = [null, null];
6211
+ }
6212
+
6270
6213
  // Parse expressions into `groups`.
6271
- const rawGroups = [];
6214
+ const groups = [];
6272
6215
 
6273
6216
  for (let i = 0; i < expression.length; i++) {
6274
6217
  const output = buildGroup(expression[i], options);
6275
6218
 
6276
6219
  if (output instanceof DocumentFragment) {
6277
6220
  const children = output.children;
6278
- rawGroups.push(...children);
6221
+ groups.push(...children);
6279
6222
  } else {
6280
- rawGroups.push(output);
6223
+ groups.push(output);
6224
+ }
6225
+ } // If `expression` is a partial group, let the parent handle spacings
6226
+ // to avoid processing groups multiple times.
6227
+
6228
+
6229
+ if (!isRealGroup) {
6230
+ return groups;
6231
+ }
6232
+
6233
+ let glueOptions = options;
6234
+
6235
+ if (expression.length === 1) {
6236
+ const node = checkNodeType(expression[0], "sizing") || checkNodeType(expression[0], "styling");
6237
+
6238
+ if (!node) ; else if (node.type === "sizing") {
6239
+ glueOptions = options.havingSize(node.size);
6240
+ } else if (node.type === "styling") {
6241
+ glueOptions = options.havingStyle(styleMap[node.style]);
6281
6242
  }
6282
- } // At this point `rawGroups` consists entirely of `symbolNode`s and `span`s.
6283
- // Ignore explicit spaces (e.g., \;, \,) when determining what implicit
6284
- // spacing should go between atoms of different classes, and add dummy
6285
- // spans for determining spacings between surrounding atoms.
6243
+ } // Dummy spans for determining spacings between surrounding atoms.
6244
+ // If `expression` has no atoms on the left or right, class "leftmost"
6245
+ // or "rightmost", respectively, is used to indicate it.
6286
6246
 
6287
6247
 
6288
- const nonSpaces = [surrounding[0] ? makeSpan$1([surrounding[0]], [], options) : null, ...rawGroups.filter(group => group && group.classes[0] !== "mspace"), surrounding[1] ? makeSpan$1([surrounding[1]], [], options) : null]; // Before determining what spaces to insert, perform bin cancellation.
6248
+ const dummyPrev = makeSpan$1([surrounding[0] || "leftmost"], [], options);
6249
+ const dummyNext = makeSpan$1([surrounding[1] || "rightmost"], [], options); // TODO: These code assumes that a node's math class is the first element
6250
+ // of its `classes` array. A later cleanup should ensure this, for
6251
+ // instance by changing the signature of `makeSpan`.
6252
+ // Before determining what spaces to insert, perform bin cancellation.
6289
6253
  // Binary operators change to ordinary symbols in some contexts.
6290
6254
 
6291
- for (let i = 1; i < nonSpaces.length - 1; i++) {
6292
- const nonSpacesI = assert(nonSpaces[i]);
6293
- const left = getOutermostNode(nonSpacesI, "left");
6255
+ traverseNonSpaceNodes(groups, (node, prev) => {
6256
+ const prevType = prev.classes[0];
6257
+ const type = node.classes[0];
6294
6258
 
6295
- if (left.classes[0] === "mbin" && isBinLeftCanceller(nonSpaces[i - 1], isRealGroup)) {
6296
- left.classes[0] = "mord";
6259
+ if (prevType === "mbin" && utils.contains(binRightCanceller, type)) {
6260
+ prev.classes[0] = "mord";
6261
+ } else if (type === "mbin" && utils.contains(binLeftCanceller, prevType)) {
6262
+ node.classes[0] = "mord";
6297
6263
  }
6264
+ }, {
6265
+ node: dummyPrev
6266
+ }, dummyNext);
6267
+ traverseNonSpaceNodes(groups, (node, prev) => {
6268
+ const prevType = getTypeOfDomTree(prev);
6269
+ const type = getTypeOfDomTree(node); // 'mtight' indicates that the node is script or scriptscript style.
6298
6270
 
6299
- const right = getOutermostNode(nonSpacesI, "right");
6271
+ const space = prevType && type ? node.hasClass("mtight") ? tightSpacings[prevType][type] : spacings[prevType][type] : null;
6300
6272
 
6301
- if (right.classes[0] === "mbin" && isBinRightCanceller(nonSpaces[i + 1], isRealGroup)) {
6302
- right.classes[0] = "mord";
6273
+ if (space) {
6274
+ // Insert glue (spacing) after the `prev`.
6275
+ return buildCommon.makeGlue(space, glueOptions);
6303
6276
  }
6277
+ }, {
6278
+ node: dummyPrev
6279
+ }, dummyNext);
6280
+ return groups;
6281
+ }; // Depth-first traverse non-space `nodes`, calling `callback` with the current and
6282
+ // previous node as arguments, optionally returning a node to insert after the
6283
+ // previous node. `prev` is an object with the previous node and `insertAfter`
6284
+ // function to insert after it. `next` is a node that will be added to the right.
6285
+ // Used for bin cancellation and inserting spacings.
6286
+
6287
+ const traverseNonSpaceNodes = function traverseNonSpaceNodes(nodes, callback, prev, next) {
6288
+ if (next) {
6289
+ // temporarily append the right node, if exists
6290
+ nodes.push(next);
6304
6291
  }
6305
6292
 
6306
- const groups = [];
6307
- let j = 0;
6293
+ let i = 0;
6308
6294
 
6309
- for (let i = 0; i < rawGroups.length; i++) {
6310
- groups.push(rawGroups[i]); // For any group that is not a space, get the next non-space. Then
6311
- // lookup what implicit space should be placed between those atoms and
6312
- // add it to groups.
6295
+ for (; i < nodes.length; i++) {
6296
+ const node = nodes[i];
6297
+ const partialGroup = checkPartialGroup(node);
6313
6298
 
6314
- if (rawGroups[i].classes[0] !== "mspace" && j < nonSpaces.length - 1) {
6315
- // if current non-space node is left dummy span, add a glue before
6316
- // first real non-space node
6317
- if (j === 0) {
6318
- groups.pop();
6319
- i--;
6320
- } // Get the type of the current non-space node. If it's a document
6321
- // fragment, get the type of the rightmost node in the fragment.
6299
+ if (partialGroup) {
6300
+ // Recursive DFS
6301
+ traverseNonSpaceNodes(partialGroup.children, callback, prev);
6302
+ continue;
6303
+ } // Ignore explicit spaces (e.g., \;, \,) when determining what implicit
6304
+ // spacing should go between atoms of different classes
6322
6305
 
6323
6306
 
6324
- const left = getTypeOfDomTree(nonSpaces[j], "right"); // Get the type of the next non-space node. If it's a document
6325
- // fragment, get the type of the leftmost node in the fragment.
6307
+ if (node.classes[0] === "mspace") {
6308
+ continue;
6309
+ }
6326
6310
 
6327
- const right = getTypeOfDomTree(nonSpaces[j + 1], "left"); // We use buildExpression inside of sizingGroup, but it returns a
6328
- // document fragment of elements. sizingGroup sets `isRealGroup`
6329
- // to false to avoid processing spans multiple times.
6311
+ const result = callback(node, prev.node);
6330
6312
 
6331
- if (left && right && isRealGroup) {
6332
- const nonSpacesJp1 = assert(nonSpaces[j + 1]);
6333
- const space = isLeftTight(nonSpacesJp1) ? tightSpacings[left][right] : spacings[left][right];
6313
+ if (result) {
6314
+ if (prev.insertAfter) {
6315
+ prev.insertAfter(result);
6316
+ } else {
6317
+ // insert at front
6318
+ nodes.unshift(result);
6319
+ i++;
6320
+ }
6321
+ }
6334
6322
 
6335
- if (space) {
6336
- let glueOptions = options;
6323
+ prev.node = node;
6337
6324
 
6338
- if (expression.length === 1) {
6339
- const node = checkNodeType(expression[0], "sizing") || checkNodeType(expression[0], "styling");
6325
+ prev.insertAfter = (index => n => {
6326
+ nodes.splice(index + 1, 0, n);
6327
+ i++;
6328
+ })(i);
6329
+ }
6340
6330
 
6341
- if (!node) ; else if (node.type === "sizing") {
6342
- glueOptions = options.havingSize(node.size);
6343
- } else if (node.type === "styling") {
6344
- glueOptions = options.havingStyle(styleMap[node.style]);
6345
- }
6346
- }
6331
+ if (next) {
6332
+ nodes.pop();
6333
+ }
6334
+ }; // Check if given node is a partial group, i.e., does not affect spacing around.
6347
6335
 
6348
- groups.push(buildCommon.makeGlue(space, glueOptions));
6349
- }
6350
- }
6351
6336
 
6352
- j++;
6353
- }
6337
+ const checkPartialGroup = function checkPartialGroup(node) {
6338
+ if (node instanceof DocumentFragment || node instanceof Anchor) {
6339
+ return node;
6354
6340
  }
6355
6341
 
6356
- return groups;
6342
+ return null;
6357
6343
  }; // Return the outermost node of a domTree.
6358
6344
 
6345
+
6359
6346
  const getOutermostNode = function getOutermostNode(node, side) {
6360
- if (node instanceof DocumentFragment || node instanceof Anchor) {
6361
- const children = node.children;
6347
+ const partialGroup = checkPartialGroup(node);
6348
+
6349
+ if (partialGroup) {
6350
+ const children = partialGroup.children;
6362
6351
 
6363
6352
  if (children.length) {
6364
6353
  if (side === "right") {
6365
6354
  return getOutermostNode(children[children.length - 1], "right");
6366
6355
  } else if (side === "left") {
6367
- return getOutermostNode(children[0], "right");
6356
+ return getOutermostNode(children[0], "left");
6368
6357
  }
6369
6358
  }
6370
6359
  }
6371
6360
 
6372
6361
  return node;
6373
6362
  }; // Return math atom class (mclass) of a domTree.
6363
+ // If `side` is given, it will get the type of the outermost node at given side.
6374
6364
 
6375
6365
 
6376
6366
  const getTypeOfDomTree = function getTypeOfDomTree(node, side) {
@@ -6378,18 +6368,13 @@ const getTypeOfDomTree = function getTypeOfDomTree(node, side) {
6378
6368
  return null;
6379
6369
  }
6380
6370
 
6381
- node = getOutermostNode(node, side); // This makes a lot of assumptions as to where the type of atom
6371
+ if (side) {
6372
+ node = getOutermostNode(node, side);
6373
+ } // This makes a lot of assumptions as to where the type of atom
6382
6374
  // appears. We should do a better job of enforcing this.
6383
6375
 
6376
+
6384
6377
  return DomEnum[node.classes[0]] || null;
6385
- }; // If `node` is an atom return whether it's been assigned the mtight class.
6386
- // If `node` is a document fragment, return the value of isLeftTight() for the
6387
- // leftmost node in the fragment.
6388
- // 'mtight' indicates that the node is script or scriptscript style.
6389
-
6390
- const isLeftTight = function isLeftTight(node) {
6391
- node = getOutermostNode(node, "left");
6392
- return node.hasClass("mtight");
6393
6378
  };
6394
6379
  const makeNullDelimiter = function makeNullDelimiter(options, classes) {
6395
6380
  const moreClasses = ["nulldelimiter"].concat(options.baseSizingClasses());
@@ -6477,10 +6462,10 @@ function buildHTML(tree, options) {
6477
6462
 
6478
6463
  if (expression[i].hasClass("mbin") || expression[i].hasClass("mrel") || expression[i].hasClass("allowbreak")) {
6479
6464
  // Put any post-operator glue on same line as operator.
6480
- // Watch for \nobreak along the way.
6465
+ // Watch for \nobreak along the way, and stop at \newline.
6481
6466
  let nobreak = false;
6482
6467
 
6483
- while (i < expression.length - 1 && expression[i + 1].hasClass("mspace")) {
6468
+ while (i < expression.length - 1 && expression[i + 1].hasClass("mspace") && !expression[i + 1].hasClass("newline")) {
6484
6469
  i++;
6485
6470
  parts.push(expression[i]);
6486
6471
 
@@ -6638,11 +6623,9 @@ class MathNode {
6638
6623
  */
6639
6624
 
6640
6625
  class TextNode {
6641
- constructor(text, needsEscape = true) {
6626
+ constructor(text) {
6642
6627
  this.text = void 0;
6643
- this.needsEscape = void 0;
6644
6628
  this.text = text;
6645
- this.needsEscape = needsEscape;
6646
6629
  }
6647
6630
  /**
6648
6631
  * Converts the text node into a DOM text node.
@@ -6650,7 +6633,7 @@ class TextNode {
6650
6633
 
6651
6634
 
6652
6635
  toNode() {
6653
- return document.createTextNode(this.toText());
6636
+ return document.createTextNode(this.text);
6654
6637
  }
6655
6638
  /**
6656
6639
  * Converts the text node into escaped HTML markup
@@ -6659,16 +6642,16 @@ class TextNode {
6659
6642
 
6660
6643
 
6661
6644
  toMarkup() {
6662
- return this.toText();
6645
+ return utils.escape(this.toText());
6663
6646
  }
6664
6647
  /**
6665
- * Converts the text node into an escaped string
6648
+ * Converts the text node into a string
6666
6649
  * (representing the text iteself).
6667
6650
  */
6668
6651
 
6669
6652
 
6670
6653
  toText() {
6671
- return this.needsEscape ? utils.escape(this.text) : this.text;
6654
+ return this.text;
6672
6655
  }
6673
6656
 
6674
6657
  }
@@ -6685,26 +6668,26 @@ class SpaceNode {
6685
6668
  this.width = void 0;
6686
6669
  this.character = void 0;
6687
6670
  this.width = width; // See https://www.w3.org/TR/2000/WD-MathML2-20000328/chapter6.html
6688
- // for a table of space-like characters. We consistently use the
6689
- // &LongNames; because Unicode does not have single characters for
6690
- // &ThickSpace; (\u2005\u200a) and all negative spaces.
6671
+ // for a table of space-like characters. We use Unicode
6672
+ // representations instead of &LongNames; as it's not clear how to
6673
+ // make the latter via document.createTextNode.
6691
6674
 
6692
6675
  if (width >= 0.05555 && width <= 0.05556) {
6693
- this.character = "&VeryThinSpace;"; // \u200a
6676
+ this.character = "\u200a"; // &VeryThinSpace;
6694
6677
  } else if (width >= 0.1666 && width <= 0.1667) {
6695
- this.character = "&ThinSpace;"; // \u2009
6678
+ this.character = "\u2009"; // &ThinSpace;
6696
6679
  } else if (width >= 0.2222 && width <= 0.2223) {
6697
- this.character = "&MediumSpace;"; // \u2005
6680
+ this.character = "\u2005"; // &MediumSpace;
6698
6681
  } else if (width >= 0.2777 && width <= 0.2778) {
6699
- this.character = "&ThickSpace;"; // \u2005\u200a
6682
+ this.character = "\u2005\u200a"; // &ThickSpace;
6700
6683
  } else if (width >= -0.05556 && width <= -0.05555) {
6701
- this.character = "&NegativeVeryThinSpace;";
6684
+ this.character = "\u200a\u2063"; // &NegativeVeryThinSpace;
6702
6685
  } else if (width >= -0.1667 && width <= -0.1666) {
6703
- this.character = "&NegativeThinSpace;";
6686
+ this.character = "\u2009\u2063"; // &NegativeThinSpace;
6704
6687
  } else if (width >= -0.2223 && width <= -0.2222) {
6705
- this.character = "&NegativeMediumSpace;";
6688
+ this.character = "\u205f\u2063"; // &NegativeMediumSpace;
6706
6689
  } else if (width >= -0.2778 && width <= -0.2777) {
6707
- this.character = "&NegativeThickSpace;";
6690
+ this.character = "\u2005\u2063"; // &NegativeThickSpace;
6708
6691
  } else {
6709
6692
  this.character = null;
6710
6693
  }
@@ -6874,13 +6857,24 @@ const buildExpression$1 = function buildExpression(expression, options) {
6874
6857
  lastGroup.children.push(...group.children);
6875
6858
  continue;
6876
6859
  }
6860
+ } else if (lastGroup.type === 'mi' && lastGroup.children.length === 1) {
6861
+ const lastChild = lastGroup.children[0];
6862
+
6863
+ if (lastChild instanceof TextNode && lastChild.text === '\u0338' && (group.type === 'mo' || group.type === 'mi' || group.type === 'mn')) {
6864
+ const child = group.children[0];
6865
+
6866
+ if (child instanceof TextNode && child.text.length > 0) {
6867
+ // Overlay with combining character long solidus
6868
+ child.text = child.text.slice(0, 1) + "\u0338" + child.text.slice(1);
6869
+ groups.pop();
6870
+ }
6871
+ }
6877
6872
  }
6878
6873
  }
6879
6874
 
6880
6875
  groups.push(group);
6881
6876
  lastGroup = group;
6882
- } // TODO(kevinb): combine \\not with mrels and mords
6883
-
6877
+ }
6884
6878
 
6885
6879
  return groups;
6886
6880
  };
@@ -6951,28 +6945,36 @@ const optionsFromSettings = function optionsFromSettings(settings) {
6951
6945
  });
6952
6946
  };
6953
6947
 
6948
+ const displayWrap = function displayWrap(node, settings) {
6949
+ if (settings.displayMode) {
6950
+ const classes = ["katex-display"];
6951
+
6952
+ if (settings.leqno) {
6953
+ classes.push("leqno");
6954
+ }
6955
+
6956
+ if (settings.fleqn) {
6957
+ classes.push("fleqn");
6958
+ }
6959
+
6960
+ node = buildCommon.makeSpan(classes, [node]);
6961
+ }
6962
+
6963
+ return node;
6964
+ };
6965
+
6954
6966
  const buildTree = function buildTree(tree, expression, settings) {
6955
6967
  const options = optionsFromSettings(settings);
6956
6968
  const mathMLNode = buildMathML(tree, expression, options);
6957
6969
  const htmlNode = buildHTML(tree, options);
6958
6970
  const katexNode = buildCommon.makeSpan(["katex"], [mathMLNode, htmlNode]);
6959
-
6960
- if (settings.displayMode) {
6961
- return buildCommon.makeSpan(["katex-display"], [katexNode]);
6962
- } else {
6963
- return katexNode;
6964
- }
6971
+ return displayWrap(katexNode, settings);
6965
6972
  };
6966
6973
  const buildHTMLTree = function buildHTMLTree(tree, expression, settings) {
6967
6974
  const options = optionsFromSettings(settings);
6968
6975
  const htmlNode = buildHTML(tree, options);
6969
6976
  const katexNode = buildCommon.makeSpan(["katex"], [htmlNode]);
6970
-
6971
- if (settings.displayMode) {
6972
- return buildCommon.makeSpan(["katex-display"], [katexNode]);
6973
- } else {
6974
- return katexNode;
6975
- }
6977
+ return displayWrap(katexNode, settings);
6976
6978
  };
6977
6979
 
6978
6980
  /**
@@ -6991,8 +6993,10 @@ const stretchyCodePoint = {
6991
6993
  overrightarrow: "\u2192",
6992
6994
  underrightarrow: "\u2192",
6993
6995
  xrightarrow: "\u2192",
6994
- underbrace: "\u23b5",
6996
+ underbrace: "\u23df",
6995
6997
  overbrace: "\u23de",
6998
+ overgroup: "\u23e0",
6999
+ undergroup: "\u23e1",
6996
7000
  overleftrightarrow: "\u2194",
6997
7001
  underleftrightarrow: "\u2194",
6998
7002
  xleftrightarrow: "\u2194",
@@ -7529,10 +7533,9 @@ defineFunction({
7529
7533
  props: {
7530
7534
  numArgs: 1
7531
7535
  },
7532
- handler: ({
7533
- parser,
7534
- funcName
7535
- }, args) => {
7536
+ handler: (_ref, args) => {
7537
+ let parser = _ref.parser,
7538
+ funcName = _ref.funcName;
7536
7539
  const base = args[0];
7537
7540
  return {
7538
7541
  type: "accentUnder",
@@ -7572,7 +7575,15 @@ defineFunction({
7572
7575
  }
7573
7576
  });
7574
7577
 
7575
- // Stretchy arrows with an optional argument
7578
+ // Helper function
7579
+ const paddedNode = group => {
7580
+ const node = new mathMLTree.MathNode("mpadded", group ? [group] : []);
7581
+ node.setAttribute("width", "+0.6em");
7582
+ node.setAttribute("lspace", "0.3em");
7583
+ return node;
7584
+ }; // Stretchy arrows with an optional argument
7585
+
7586
+
7576
7587
  defineFunction({
7577
7588
  type: "xArrow",
7578
7589
  names: ["\\xleftarrow", "\\xrightarrow", "\\xLeftarrow", "\\xRightarrow", "\\xleftrightarrow", "\\xLeftrightarrow", "\\xhookleftarrow", "\\xhookrightarrow", "\\xmapsto", "\\xrightharpoondown", "\\xrightharpoonup", "\\xleftharpoondown", "\\xleftharpoonup", "\\xrightleftharpoons", "\\xleftrightharpoons", "\\xlongequal", "\\xtwoheadrightarrow", "\\xtwoheadleftarrow", "\\xtofrom", // The next 3 functions are here to support the mhchem extension.
@@ -7583,10 +7594,9 @@ defineFunction({
7583
7594
  numOptionalArgs: 1
7584
7595
  },
7585
7596
 
7586
- handler({
7587
- parser,
7588
- funcName
7589
- }, args, optArgs) {
7597
+ handler(_ref, args, optArgs) {
7598
+ let parser = _ref.parser,
7599
+ funcName = _ref.funcName;
7590
7600
  return {
7591
7601
  type: "xArrow",
7592
7602
  mode: parser.mode,
@@ -7671,22 +7681,24 @@ defineFunction({
7671
7681
  mathmlBuilder(group, options) {
7672
7682
  const arrowNode = stretchy.mathMLnode(group.label);
7673
7683
  let node;
7674
- let lowerNode;
7675
7684
 
7676
7685
  if (group.body) {
7677
- const upperNode = buildGroup$1(group.body, options);
7686
+ const upperNode = paddedNode(buildGroup$1(group.body, options));
7678
7687
 
7679
7688
  if (group.below) {
7680
- lowerNode = buildGroup$1(group.below, options);
7689
+ const lowerNode = paddedNode(buildGroup$1(group.below, options));
7681
7690
  node = new mathMLTree.MathNode("munderover", [arrowNode, lowerNode, upperNode]);
7682
7691
  } else {
7683
7692
  node = new mathMLTree.MathNode("mover", [arrowNode, upperNode]);
7684
7693
  }
7685
7694
  } else if (group.below) {
7686
- lowerNode = buildGroup$1(group.below, options);
7695
+ const lowerNode = paddedNode(buildGroup$1(group.below, options));
7687
7696
  node = new mathMLTree.MathNode("munder", [arrowNode, lowerNode]);
7688
7697
  } else {
7689
- node = new mathMLTree.MathNode("mover", [arrowNode]);
7698
+ // This should never happen.
7699
+ // Parser.js throws an error if there is no argument.
7700
+ node = paddedNode();
7701
+ node = new mathMLTree.MathNode("mover", [arrowNode, node]);
7690
7702
  }
7691
7703
 
7692
7704
  return node;
@@ -7705,9 +7717,8 @@ defineFunction({
7705
7717
  allowedInText: true
7706
7718
  },
7707
7719
 
7708
- handler({
7709
- parser
7710
- }, args) {
7720
+ handler(_ref, args) {
7721
+ let parser = _ref.parser;
7711
7722
  const arg = assertNodeType(args[0], "ordgroup");
7712
7723
  const group = arg.body;
7713
7724
  let number = "";
@@ -7742,7 +7753,7 @@ const htmlBuilder$1 = (group, options) => {
7742
7753
  };
7743
7754
 
7744
7755
  const mathmlBuilder$1 = (group, options) => {
7745
- const inner = buildExpression$1(group.body, options);
7756
+ const inner = buildExpression$1(group.body, options.withColor(group.color));
7746
7757
  const node = new mathMLTree.MathNode("mstyle", inner);
7747
7758
  node.setAttribute("mathcolor", group.color);
7748
7759
  return node;
@@ -7758,9 +7769,8 @@ defineFunction({
7758
7769
  argTypes: ["color", "original"]
7759
7770
  },
7760
7771
 
7761
- handler({
7762
- parser
7763
- }, args) {
7772
+ handler(_ref, args) {
7773
+ let parser = _ref.parser;
7764
7774
  const color = assertNodeType(args[0], "color-token").color;
7765
7775
  const body = args[1];
7766
7776
  return {
@@ -7771,32 +7781,6 @@ defineFunction({
7771
7781
  };
7772
7782
  },
7773
7783
 
7774
- htmlBuilder: htmlBuilder$1,
7775
- mathmlBuilder: mathmlBuilder$1
7776
- }); // TODO(kevinb): define these using macros
7777
-
7778
- defineFunction({
7779
- type: "color",
7780
- names: ["\\blue", "\\orange", "\\pink", "\\red", "\\green", "\\gray", "\\purple", "\\blueA", "\\blueB", "\\blueC", "\\blueD", "\\blueE", "\\tealA", "\\tealB", "\\tealC", "\\tealD", "\\tealE", "\\greenA", "\\greenB", "\\greenC", "\\greenD", "\\greenE", "\\goldA", "\\goldB", "\\goldC", "\\goldD", "\\goldE", "\\redA", "\\redB", "\\redC", "\\redD", "\\redE", "\\maroonA", "\\maroonB", "\\maroonC", "\\maroonD", "\\maroonE", "\\purpleA", "\\purpleB", "\\purpleC", "\\purpleD", "\\purpleE", "\\mintA", "\\mintB", "\\mintC", "\\grayA", "\\grayB", "\\grayC", "\\grayD", "\\grayE", "\\grayF", "\\grayG", "\\grayH", "\\grayI", "\\kaBlue", "\\kaGreen"],
7781
- props: {
7782
- numArgs: 1,
7783
- allowedInText: true,
7784
- greediness: 3
7785
- },
7786
-
7787
- handler({
7788
- parser,
7789
- funcName
7790
- }, args) {
7791
- const body = args[0];
7792
- return {
7793
- type: "color",
7794
- mode: parser.mode,
7795
- color: "katex-" + funcName.slice(1),
7796
- body: ordargument(body)
7797
- };
7798
- },
7799
-
7800
7784
  htmlBuilder: htmlBuilder$1,
7801
7785
  mathmlBuilder: mathmlBuilder$1
7802
7786
  });
@@ -7810,10 +7794,9 @@ defineFunction({
7810
7794
  argTypes: ["color"]
7811
7795
  },
7812
7796
 
7813
- handler({
7814
- parser,
7815
- breakOnTokenText
7816
- }, args) {
7797
+ handler(_ref2, args) {
7798
+ let parser = _ref2.parser,
7799
+ breakOnTokenText = _ref2.breakOnTokenText;
7817
7800
  const color = assertNodeType(args[0], "color-token").color; // If we see a styling function, parse out the implicit body
7818
7801
 
7819
7802
  const body = parser.parseExpression(true, breakOnTokenText);
@@ -7844,10 +7827,9 @@ defineFunction({
7844
7827
  allowedInText: true
7845
7828
  },
7846
7829
 
7847
- handler({
7848
- parser,
7849
- funcName
7850
- }, args, optArgs) {
7830
+ handler(_ref, args, optArgs) {
7831
+ let parser = _ref.parser,
7832
+ funcName = _ref.funcName;
7851
7833
  const size = optArgs[0];
7852
7834
  const newRow = funcName === "\\cr";
7853
7835
  let newLine = false;
@@ -8725,7 +8707,7 @@ defineFunction({
8725
8707
  htmlBuilder: (group, options) => {
8726
8708
  assertParsed(group); // Build the inner expression
8727
8709
 
8728
- const inner = buildExpression(group.body, options, true, [null, "mclose"]);
8710
+ const inner = buildExpression(group.body, options, true, ["mopen", "mclose"]);
8729
8711
  let innerHeight = 0;
8730
8712
  let innerDepth = 0;
8731
8713
  let hadMiddle = false; // Calculate its height and depth
@@ -8848,8 +8830,17 @@ defineFunction({
8848
8830
  return middleDelim;
8849
8831
  },
8850
8832
  mathmlBuilder: (group, options) => {
8851
- const middleNode = new mathMLTree.MathNode("mo", [makeText(group.delim, group.mode)]);
8852
- middleNode.setAttribute("fence", "true");
8833
+ // A Firefox \middle will strech a character vertically only if it
8834
+ // is in the fence part of the operator dictionary at:
8835
+ // https://www.w3.org/TR/MathML3/appendixc.html.
8836
+ // So we need to avoid U+2223 and use plain "|" instead.
8837
+ const textNode = group.delim === "\\vert" || group.delim === "|" ? makeText("|", "text") : makeText(group.delim, group.mode);
8838
+ const middleNode = new mathMLTree.MathNode("mo", [textNode]);
8839
+ middleNode.setAttribute("fence", "true"); // MathML gives 5/18em spacing to each <mo> element.
8840
+ // \middle should get delimiter spacing instead.
8841
+
8842
+ middleNode.setAttribute("lspace", "0.05em");
8843
+ middleNode.setAttribute("rspace", "0.05em");
8853
8844
  return middleNode;
8854
8845
  }
8855
8846
  });
@@ -8955,7 +8946,7 @@ const htmlBuilder$2 = (group, options) => {
8955
8946
  };
8956
8947
 
8957
8948
  const mathmlBuilder$2 = (group, options) => {
8958
- const node = new mathMLTree.MathNode("menclose", [buildGroup$1(group.body, options)]);
8949
+ const node = new mathMLTree.MathNode(group.label.indexOf("colorbox") > -1 ? "mpadded" : "menclose", [buildGroup$1(group.body, options)]);
8959
8950
 
8960
8951
  switch (group.label) {
8961
8952
  case "\\cancel":
@@ -8975,8 +8966,20 @@ const mathmlBuilder$2 = (group, options) => {
8975
8966
  break;
8976
8967
 
8977
8968
  case "\\fcolorbox":
8978
- // TODO(ron): I don't know any way to set the border color.
8979
- node.setAttribute("notation", "box");
8969
+ case "\\colorbox":
8970
+ // <menclose> doesn't have a good notation option. So use <mpadded>
8971
+ // instead. Set some attributes that come included with <menclose>.
8972
+ node.setAttribute("width", "+6pt");
8973
+ node.setAttribute("height", "+6pt");
8974
+ node.setAttribute("lspace", "3pt"); // LaTeX source2e: \fboxsep = 3pt
8975
+
8976
+ node.setAttribute("voffset", "3pt");
8977
+
8978
+ if (group.label === "\\fcolorbox") {
8979
+ const thk = options.fontMetrics().defaultRuleThickness;
8980
+ node.setAttribute("style", "border: " + thk + "em solid " + String(group.borderColor));
8981
+ }
8982
+
8980
8983
  break;
8981
8984
 
8982
8985
  case "\\xcancel":
@@ -9001,10 +9004,9 @@ defineFunction({
9001
9004
  argTypes: ["color", "text"]
9002
9005
  },
9003
9006
 
9004
- handler({
9005
- parser,
9006
- funcName
9007
- }, args, optArgs) {
9007
+ handler(_ref, args, optArgs) {
9008
+ let parser = _ref.parser,
9009
+ funcName = _ref.funcName;
9008
9010
  const color = assertNodeType(args[0], "color-token").color;
9009
9011
  const body = args[1];
9010
9012
  return {
@@ -9029,10 +9031,9 @@ defineFunction({
9029
9031
  argTypes: ["color", "color", "text"]
9030
9032
  },
9031
9033
 
9032
- handler({
9033
- parser,
9034
- funcName
9035
- }, args, optArgs) {
9034
+ handler(_ref2, args, optArgs) {
9035
+ let parser = _ref2.parser,
9036
+ funcName = _ref2.funcName;
9036
9037
  const borderColor = assertNodeType(args[0], "color-token").color;
9037
9038
  const backgroundColor = assertNodeType(args[1], "color-token").color;
9038
9039
  const body = args[2];
@@ -9058,9 +9059,8 @@ defineFunction({
9058
9059
  allowedInText: true
9059
9060
  },
9060
9061
 
9061
- handler({
9062
- parser
9063
- }, args) {
9062
+ handler(_ref3, args) {
9063
+ let parser = _ref3.parser;
9064
9064
  return {
9065
9065
  type: "enclose",
9066
9066
  mode: parser.mode,
@@ -9077,10 +9077,9 @@ defineFunction({
9077
9077
  numArgs: 1
9078
9078
  },
9079
9079
 
9080
- handler({
9081
- parser,
9082
- funcName
9083
- }, args, optArgs) {
9080
+ handler(_ref4, args, optArgs) {
9081
+ let parser = _ref4.parser,
9082
+ funcName = _ref4.funcName;
9084
9083
  const body = args[0];
9085
9084
  return {
9086
9085
  type: "enclose",
@@ -9100,14 +9099,13 @@ defineFunction({
9100
9099
  * `Parser.js` requires this dictionary via `environments.js`.
9101
9100
  */
9102
9101
  const _environments = {};
9103
- function defineEnvironment({
9104
- type,
9105
- names,
9106
- props,
9107
- handler,
9108
- htmlBuilder,
9109
- mathmlBuilder
9110
- }) {
9102
+ function defineEnvironment(_ref) {
9103
+ let type = _ref.type,
9104
+ names = _ref.names,
9105
+ props = _ref.props,
9106
+ handler = _ref.handler,
9107
+ htmlBuilder = _ref.htmlBuilder,
9108
+ mathmlBuilder = _ref.mathmlBuilder;
9111
9109
  // Set default values of environments.
9112
9110
  const data = {
9113
9111
  type,
@@ -9159,12 +9157,12 @@ function getHLines(parser) {
9159
9157
  */
9160
9158
 
9161
9159
 
9162
- function parseArray(parser, {
9163
- hskipBeforeAndAfter,
9164
- addJot,
9165
- cols,
9166
- arraystretch
9167
- }, style) {
9160
+ function parseArray(parser, _ref, style) {
9161
+ let hskipBeforeAndAfter = _ref.hskipBeforeAndAfter,
9162
+ addJot = _ref.addJot,
9163
+ cols = _ref.cols,
9164
+ arraystretch = _ref.arraystretch,
9165
+ colSeparationType = _ref.colSeparationType;
9168
9166
  // Parse body of array with \\ temporarily mapped to \cr
9169
9167
  parser.gullet.beginGroup();
9170
9168
  parser.gullet.macros.set("\\\\", "\\cr"); // Get current arraystretch if it's not set by the environment
@@ -9249,7 +9247,8 @@ function parseArray(parser, {
9249
9247
  cols,
9250
9248
  rowGaps,
9251
9249
  hskipBeforeAndAfter,
9252
- hLinesBeforeRow
9250
+ hLinesBeforeRow,
9251
+ colSeparationType
9253
9252
  };
9254
9253
  } // Decides on a style for cells in an array according to whether the given
9255
9254
  // environment name starts with the letter 'd'.
@@ -9498,12 +9497,117 @@ const htmlBuilder$3 = function htmlBuilder(group, options) {
9498
9497
  return buildCommon.makeSpan(["mord"], [body], options);
9499
9498
  };
9500
9499
 
9500
+ const alignMap = {
9501
+ c: "center ",
9502
+ l: "left ",
9503
+ r: "right "
9504
+ };
9505
+
9501
9506
  const mathmlBuilder$3 = function mathmlBuilder(group, options) {
9502
- return new mathMLTree.MathNode("mtable", group.body.map(function (row) {
9507
+ const table = new mathMLTree.MathNode("mtable", group.body.map(function (row) {
9503
9508
  return new mathMLTree.MathNode("mtr", row.map(function (cell) {
9504
9509
  return new mathMLTree.MathNode("mtd", [buildGroup$1(cell, options)]);
9505
9510
  }));
9506
- }));
9511
+ })); // Set column alignment, row spacing, column spacing, and
9512
+ // array lines by setting attributes on the table element.
9513
+ // Set the row spacing. In MathML, we specify a gap distance.
9514
+ // We do not use rowGap[] because MathML automatically increases
9515
+ // cell height with the height/depth of the element content.
9516
+ // LaTeX \arraystretch multiplies the row baseline-to-baseline distance.
9517
+ // We simulate this by adding (arraystretch - 1)em to the gap. This
9518
+ // does a reasonable job of adjusting arrays containing 1 em tall content.
9519
+ // The 0.16 and 0.09 values are found emprically. They produce an array
9520
+ // similar to LaTeX and in which content does not interfere with \hines.
9521
+
9522
+ const gap = 0.16 + group.arraystretch - 1 + (group.addJot ? 0.09 : 0);
9523
+ table.setAttribute("rowspacing", gap + "em"); // MathML table lines go only between cells.
9524
+ // To place a line on an edge we'll use <menclose>, if necessary.
9525
+
9526
+ let menclose = "";
9527
+ let align = "";
9528
+
9529
+ if (group.cols) {
9530
+ // Find column alignment, column spacing, and vertical lines.
9531
+ const cols = group.cols;
9532
+ let columnLines = "";
9533
+ let prevTypeWasAlign = false;
9534
+ let iStart = 0;
9535
+ let iEnd = cols.length;
9536
+
9537
+ if (cols[0].type === "separator") {
9538
+ menclose += "top ";
9539
+ iStart = 1;
9540
+ }
9541
+
9542
+ if (cols[cols.length - 1].type === "separator") {
9543
+ menclose += "bottom ";
9544
+ iEnd -= 1;
9545
+ }
9546
+
9547
+ for (let i = iStart; i < iEnd; i++) {
9548
+ if (cols[i].type === "align") {
9549
+ align += alignMap[cols[i].align];
9550
+
9551
+ if (prevTypeWasAlign) {
9552
+ columnLines += "none ";
9553
+ }
9554
+
9555
+ prevTypeWasAlign = true;
9556
+ } else if (cols[i].type === "separator") {
9557
+ // MathML accepts only single lines between cells.
9558
+ // So we read only the first of consecutive separators.
9559
+ if (prevTypeWasAlign) {
9560
+ columnLines += cols[i].separator === "|" ? "solid " : "dashed ";
9561
+ prevTypeWasAlign = false;
9562
+ }
9563
+ }
9564
+ }
9565
+
9566
+ table.setAttribute("columnalign", align.trim());
9567
+
9568
+ if (/[sd]/.test(columnLines)) {
9569
+ table.setAttribute("columnlines", columnLines.trim());
9570
+ }
9571
+ } // Set column spacing.
9572
+
9573
+
9574
+ if (group.colSeparationType === "align") {
9575
+ const cols = group.cols || [];
9576
+ let spacing = "";
9577
+
9578
+ for (let i = 1; i < cols.length; i++) {
9579
+ spacing += i % 2 ? "0em " : "1em ";
9580
+ }
9581
+
9582
+ table.setAttribute("columnspacing", spacing.trim());
9583
+ } else if (group.colSeparationType === "alignat") {
9584
+ table.setAttribute("columnspacing", "0em");
9585
+ } else {
9586
+ table.setAttribute("columnspacing", "1em");
9587
+ } // Address \hline and \hdashline
9588
+
9589
+
9590
+ let rowLines = "";
9591
+ const hlines = group.hLinesBeforeRow;
9592
+ menclose += hlines[0].length > 0 ? "left " : "";
9593
+ menclose += hlines[hlines.length - 1].length > 0 ? "right " : "";
9594
+
9595
+ for (let i = 1; i < hlines.length - 1; i++) {
9596
+ rowLines += hlines[i].length === 0 ? "none " // MathML accepts only a single line between rows. Read one element.
9597
+ : hlines[i][0] ? "dashed " : "solid ";
9598
+ }
9599
+
9600
+ if (/[sd]/.test(rowLines)) {
9601
+ table.setAttribute("rowlines", rowLines.trim());
9602
+ }
9603
+
9604
+ if (menclose === "") {
9605
+ return table;
9606
+ } else {
9607
+ const wrapper = new mathMLTree.MathNode("menclose", [table]);
9608
+ wrapper.setAttribute("notation", menclose.trim());
9609
+ return wrapper;
9610
+ }
9507
9611
  }; // Convenience function for aligned and alignedat environments.
9508
9612
 
9509
9613
 
@@ -9586,6 +9690,7 @@ const alignedHandler = function alignedHandler(context, args) {
9586
9690
  };
9587
9691
  }
9588
9692
 
9693
+ res.colSeparationType = isAligned ? "align" : "alignat";
9589
9694
  return res;
9590
9695
  }; // Arrays are part of LaTeX, defined in lttab.dtx so its documentation
9591
9696
  // is part of the source2e.pdf file of LaTeX2e source documentation.
@@ -9806,10 +9911,9 @@ defineFunction({
9806
9911
  argTypes: ["text"]
9807
9912
  },
9808
9913
 
9809
- handler({
9810
- parser,
9811
- funcName
9812
- }, args) {
9914
+ handler(_ref, args) {
9915
+ let parser = _ref.parser,
9916
+ funcName = _ref.funcName;
9813
9917
  const nameGroup = args[0];
9814
9918
 
9815
9919
  if (nameGroup.type !== "ordgroup") {
@@ -9883,10 +9987,9 @@ defineFunction({
9883
9987
  numArgs: 1
9884
9988
  },
9885
9989
 
9886
- handler({
9887
- parser,
9888
- funcName
9889
- }, args) {
9990
+ handler(_ref, args) {
9991
+ let parser = _ref.parser,
9992
+ funcName = _ref.funcName;
9890
9993
  const body = args[0];
9891
9994
  return {
9892
9995
  type: "mclass",
@@ -9921,9 +10024,8 @@ defineFunction({
9921
10024
  numArgs: 2
9922
10025
  },
9923
10026
 
9924
- handler({
9925
- parser
9926
- }, args) {
10027
+ handler(_ref2, args) {
10028
+ let parser = _ref2.parser;
9927
10029
  return {
9928
10030
  type: "mclass",
9929
10031
  mode: parser.mode,
@@ -9941,10 +10043,9 @@ defineFunction({
9941
10043
  numArgs: 2
9942
10044
  },
9943
10045
 
9944
- handler({
9945
- parser,
9946
- funcName
9947
- }, args) {
10046
+ handler(_ref3, args) {
10047
+ let parser = _ref3.parser,
10048
+ funcName = _ref3.funcName;
9948
10049
  const baseArg = args[1];
9949
10050
  const shiftedArg = args[0];
9950
10051
  let mclass;
@@ -9961,6 +10062,7 @@ defineFunction({
9961
10062
  mode: baseArg.mode,
9962
10063
  limits: true,
9963
10064
  alwaysHandleSupSub: true,
10065
+ parentIsSupSub: false,
9964
10066
  symbol: false,
9965
10067
  suppressBaseShift: funcName !== "\\stackrel",
9966
10068
  body: ordargument(baseArg)
@@ -10014,10 +10116,9 @@ defineFunction({
10014
10116
  numArgs: 1,
10015
10117
  greediness: 2
10016
10118
  },
10017
- handler: ({
10018
- parser,
10019
- funcName
10020
- }, args) => {
10119
+ handler: (_ref, args) => {
10120
+ let parser = _ref.parser,
10121
+ funcName = _ref.funcName;
10021
10122
  const body = args[0];
10022
10123
  let func = funcName;
10023
10124
 
@@ -10042,9 +10143,8 @@ defineFunction({
10042
10143
  numArgs: 1,
10043
10144
  greediness: 2
10044
10145
  },
10045
- handler: ({
10046
- parser
10047
- }, args) => {
10146
+ handler: (_ref2, args) => {
10147
+ let parser = _ref2.parser;
10048
10148
  const body = args[0]; // amsbsy.sty's \boldsymbol uses \binrel spacing to inherit the
10049
10149
  // argument's bin|rel|ord status
10050
10150
 
@@ -10069,13 +10169,11 @@ defineFunction({
10069
10169
  numArgs: 0,
10070
10170
  allowedInText: true
10071
10171
  },
10072
- handler: ({
10073
- parser,
10074
- funcName,
10075
- breakOnTokenText
10076
- }, args) => {
10172
+ handler: (_ref3, args) => {
10173
+ let parser = _ref3.parser,
10174
+ funcName = _ref3.funcName,
10175
+ breakOnTokenText = _ref3.breakOnTokenText;
10077
10176
  const mode = parser.mode;
10078
- parser.consumeSpaces();
10079
10177
  const body = parser.parseExpression(true, breakOnTokenText);
10080
10178
  const style = `math${funcName.slice(1)}`;
10081
10179
  return {
@@ -10093,23 +10191,30 @@ defineFunction({
10093
10191
  mathmlBuilder: mathmlBuilder$5
10094
10192
  });
10095
10193
 
10096
- const htmlBuilder$6 = (group, options) => {
10097
- // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e).
10194
+ const adjustStyle = (size, originalStyle) => {
10098
10195
  // Figure out what style this fraction should be in based on the
10099
10196
  // function used
10100
- let style = options.style;
10197
+ let style = originalStyle;
10101
10198
 
10102
- if (group.size === "display") {
10103
- style = Style$1.DISPLAY;
10104
- } else if (group.size === "text" && style.size === Style$1.DISPLAY.size) {
10199
+ if (size === "display") {
10200
+ // Get display style as a default.
10201
+ // If incoming style is sub/sup, use style.text() to get correct size.
10202
+ style = style.id >= Style$1.SCRIPT.id ? style.text() : Style$1.DISPLAY;
10203
+ } else if (size === "text" && style.size === Style$1.DISPLAY.size) {
10105
10204
  // We're in a \tfrac but incoming style is displaystyle, so:
10106
10205
  style = Style$1.TEXT;
10107
- } else if (group.size === "script") {
10206
+ } else if (size === "script") {
10108
10207
  style = Style$1.SCRIPT;
10109
- } else if (group.size === "scriptscript") {
10208
+ } else if (size === "scriptscript") {
10110
10209
  style = Style$1.SCRIPTSCRIPT;
10111
10210
  }
10112
10211
 
10212
+ return style;
10213
+ };
10214
+
10215
+ const htmlBuilder$6 = (group, options) => {
10216
+ // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e).
10217
+ const style = adjustStyle(group.size, options.style);
10113
10218
  const nstyle = style.fracNum();
10114
10219
  const dstyle = style.fracDen();
10115
10220
  let newOptions;
@@ -10152,7 +10257,7 @@ const htmlBuilder$6 = (group, options) => {
10152
10257
  let clearance;
10153
10258
  let denomShift;
10154
10259
 
10155
- if (style.size === Style$1.DISPLAY.size) {
10260
+ if (style.size === Style$1.DISPLAY.size || group.size === "display") {
10156
10261
  numShift = options.fontMetrics().num1;
10157
10262
 
10158
10263
  if (ruleWidth > 0) {
@@ -10263,7 +10368,7 @@ const htmlBuilder$6 = (group, options) => {
10263
10368
  };
10264
10369
 
10265
10370
  const mathmlBuilder$6 = (group, options) => {
10266
- const node = new mathMLTree.MathNode("mfrac", [buildGroup$1(group.numer, options), buildGroup$1(group.denom, options)]);
10371
+ let node = new mathMLTree.MathNode("mfrac", [buildGroup$1(group.numer, options), buildGroup$1(group.denom, options)]);
10267
10372
 
10268
10373
  if (!group.hasBarLine) {
10269
10374
  node.setAttribute("linethickness", "0px");
@@ -10272,11 +10377,20 @@ const mathmlBuilder$6 = (group, options) => {
10272
10377
  node.setAttribute("linethickness", ruleWidth + "em");
10273
10378
  }
10274
10379
 
10380
+ const style = adjustStyle(group.size, options.style);
10381
+
10382
+ if (style.size !== options.style.size) {
10383
+ node = new mathMLTree.MathNode("mstyle", [node]);
10384
+ const isDisplay = style.size === Style$1.DISPLAY.size ? "true" : "false";
10385
+ node.setAttribute("displaystyle", isDisplay);
10386
+ node.setAttribute("scriptlevel", "0");
10387
+ }
10388
+
10275
10389
  if (group.leftDelim != null || group.rightDelim != null) {
10276
10390
  const withDelims = [];
10277
10391
 
10278
10392
  if (group.leftDelim != null) {
10279
- const leftOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.leftDelim)]);
10393
+ const leftOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.leftDelim.replace("\\", ""))]);
10280
10394
  leftOp.setAttribute("fence", "true");
10281
10395
  withDelims.push(leftOp);
10282
10396
  }
@@ -10284,7 +10398,7 @@ const mathmlBuilder$6 = (group, options) => {
10284
10398
  withDelims.push(node);
10285
10399
 
10286
10400
  if (group.rightDelim != null) {
10287
- const rightOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.rightDelim)]);
10401
+ const rightOp = new mathMLTree.MathNode("mo", [new mathMLTree.TextNode(group.rightDelim.replace("\\", ""))]);
10288
10402
  rightOp.setAttribute("fence", "true");
10289
10403
  withDelims.push(rightOp);
10290
10404
  }
@@ -10303,10 +10417,9 @@ defineFunction({
10303
10417
  numArgs: 2,
10304
10418
  greediness: 2
10305
10419
  },
10306
- handler: ({
10307
- parser,
10308
- funcName
10309
- }, args) => {
10420
+ handler: (_ref, args) => {
10421
+ let parser = _ref.parser,
10422
+ funcName = _ref.funcName;
10310
10423
  const numer = args[0];
10311
10424
  const denom = args[1];
10312
10425
  let hasBarLine;
@@ -10389,11 +10502,10 @@ defineFunction({
10389
10502
  infix: true
10390
10503
  },
10391
10504
 
10392
- handler({
10393
- parser,
10394
- funcName,
10395
- token
10396
- }) {
10505
+ handler(_ref2) {
10506
+ let parser = _ref2.parser,
10507
+ funcName = _ref2.funcName,
10508
+ token = _ref2.token;
10397
10509
  let replaceWith;
10398
10510
 
10399
10511
  switch (funcName) {
@@ -10452,30 +10564,25 @@ defineFunction({
10452
10564
  argTypes: ["math", "math", "size", "text", "math", "math"]
10453
10565
  },
10454
10566
 
10455
- handler({
10456
- parser
10457
- }, args) {
10567
+ handler(_ref3, args) {
10568
+ let parser = _ref3.parser;
10458
10569
  const numer = args[4];
10459
10570
  const denom = args[5]; // Look into the parse nodes to get the desired delimiters.
10460
10571
 
10461
- let leftNode = checkNodeType(args[0], "ordgroup");
10572
+ let leftNode = checkNodeType(args[0], "atom");
10462
10573
 
10463
10574
  if (leftNode) {
10464
- leftNode = assertAtomFamily(leftNode.body[0], "open");
10465
- } else {
10466
10575
  leftNode = assertAtomFamily(args[0], "open");
10467
10576
  }
10468
10577
 
10469
- const leftDelim = delimFromValue(leftNode.text);
10470
- let rightNode = checkNodeType(args[1], "ordgroup");
10578
+ const leftDelim = leftNode ? delimFromValue(leftNode.text) : null;
10579
+ let rightNode = checkNodeType(args[1], "atom");
10471
10580
 
10472
10581
  if (rightNode) {
10473
- rightNode = assertAtomFamily(rightNode.body[0], "close");
10474
- } else {
10475
10582
  rightNode = assertAtomFamily(args[1], "close");
10476
10583
  }
10477
10584
 
10478
- const rightDelim = delimFromValue(rightNode.text);
10585
+ const rightDelim = rightNode ? delimFromValue(rightNode.text) : null;
10479
10586
  const barNode = assertNodeType(args[2], "size");
10480
10587
  let hasBarLine;
10481
10588
  let barSize = null;
@@ -10531,11 +10638,10 @@ defineFunction({
10531
10638
  infix: true
10532
10639
  },
10533
10640
 
10534
- handler({
10535
- parser,
10536
- funcName,
10537
- token
10538
- }, args) {
10641
+ handler(_ref4, args) {
10642
+ let parser = _ref4.parser,
10643
+ funcName = _ref4.funcName,
10644
+ token = _ref4.token;
10539
10645
  return {
10540
10646
  type: "infix",
10541
10647
  mode: parser.mode,
@@ -10553,10 +10659,9 @@ defineFunction({
10553
10659
  numArgs: 3,
10554
10660
  argTypes: ["math", "size", "math"]
10555
10661
  },
10556
- handler: ({
10557
- parser,
10558
- funcName
10559
- }, args) => {
10662
+ handler: (_ref5, args) => {
10663
+ let parser = _ref5.parser,
10664
+ funcName = _ref5.funcName;
10560
10665
  const numer = args[0];
10561
10666
  const barSize = assert(assertNodeType(args[1], "infix").size);
10562
10667
  const denom = args[2];
@@ -10697,10 +10802,9 @@ defineFunction({
10697
10802
  numArgs: 1
10698
10803
  },
10699
10804
 
10700
- handler({
10701
- parser,
10702
- funcName
10703
- }, args) {
10805
+ handler(_ref, args) {
10806
+ let parser = _ref.parser,
10807
+ funcName = _ref.funcName;
10704
10808
  return {
10705
10809
  type: "horizBrace",
10706
10810
  mode: parser.mode,
@@ -10722,9 +10826,8 @@ defineFunction({
10722
10826
  argTypes: ["url", "original"],
10723
10827
  allowedInText: true
10724
10828
  },
10725
- handler: ({
10726
- parser
10727
- }, args) => {
10829
+ handler: (_ref, args) => {
10830
+ let parser = _ref.parser;
10728
10831
  const body = args[1];
10729
10832
  const href = assertNodeType(args[0], "url").url;
10730
10833
  return {
@@ -10757,9 +10860,8 @@ defineFunction({
10757
10860
  argTypes: ["url"],
10758
10861
  allowedInText: true
10759
10862
  },
10760
- handler: ({
10761
- parser
10762
- }, args) => {
10863
+ handler: (_ref2, args) => {
10864
+ let parser = _ref2.parser;
10763
10865
  const href = assertNodeType(args[0], "url").url;
10764
10866
  const chars = [];
10765
10867
 
@@ -10799,9 +10901,8 @@ defineFunction({
10799
10901
  numArgs: 2,
10800
10902
  allowedInText: true
10801
10903
  },
10802
- handler: ({
10803
- parser
10804
- }, args) => {
10904
+ handler: (_ref, args) => {
10905
+ let parser = _ref.parser;
10805
10906
  return {
10806
10907
  type: "htmlmathml",
10807
10908
  mode: parser.mode,
@@ -10829,10 +10930,9 @@ defineFunction({
10829
10930
  allowedInText: true
10830
10931
  },
10831
10932
 
10832
- handler({
10833
- parser,
10834
- funcName
10835
- }, args) {
10933
+ handler(_ref, args) {
10934
+ let parser = _ref.parser,
10935
+ funcName = _ref.funcName;
10836
10936
  const size = assertNodeType(args[0], "size");
10837
10937
 
10838
10938
  if (parser.settings.strict) {
@@ -10882,10 +10982,9 @@ defineFunction({
10882
10982
  numArgs: 1,
10883
10983
  allowedInText: true
10884
10984
  },
10885
- handler: ({
10886
- parser,
10887
- funcName
10888
- }, args) => {
10985
+ handler: (_ref, args) => {
10986
+ let parser = _ref.parser,
10987
+ funcName = _ref.funcName;
10889
10988
  const body = args[0];
10890
10989
  return {
10891
10990
  type: "lap",
@@ -10952,10 +11051,9 @@ defineFunction({
10952
11051
  consumeMode: "math"
10953
11052
  },
10954
11053
 
10955
- handler({
10956
- funcName,
10957
- parser
10958
- }, args) {
11054
+ handler(_ref, args) {
11055
+ let funcName = _ref.funcName,
11056
+ parser = _ref.parser;
10959
11057
  const outerMode = parser.mode;
10960
11058
  parser.switchMode("math");
10961
11059
  const close = funcName === "\\(" ? "\\)" : "$";
@@ -11016,9 +11114,8 @@ defineFunction({
11016
11114
  props: {
11017
11115
  numArgs: 4
11018
11116
  },
11019
- handler: ({
11020
- parser
11021
- }, args) => {
11117
+ handler: (_ref, args) => {
11118
+ let parser = _ref.parser;
11022
11119
  return {
11023
11120
  type: "mathchoice",
11024
11121
  mode: parser.mode,
@@ -11040,7 +11137,10 @@ defineFunction({
11040
11137
  });
11041
11138
 
11042
11139
  // Limits, symbols
11043
- // NOTE: Unlike most `htmlBuilder`s, this one handles not only "op", but also
11140
+ // Most operators have a large successor symbol, but these don't.
11141
+ const noSuccessor = ["\\smallint"]; // NOTE: Unlike most `htmlBuilder`s, this one handles not only "op", but also
11142
+ // "supsub" since some of them (like \int) can affect super/subscripting.
11143
+
11044
11144
  const htmlBuilder$8 = (grp, options) => {
11045
11145
  // Operators are handled in the TeXbook pg. 443-444, rule 13(a).
11046
11146
  let supGroup;
@@ -11061,9 +11161,7 @@ const htmlBuilder$8 = (grp, options) => {
11061
11161
  group = assertNodeType(grp, "op");
11062
11162
  }
11063
11163
 
11064
- const style = options.style; // Most operators have a large successor symbol, but these don't.
11065
-
11066
- const noSuccessor = ["\\smallint"];
11164
+ const style = options.style;
11067
11165
  let large = false;
11068
11166
 
11069
11167
  if (style.size === Style$1.DISPLAY.size && group.symbol && !utils.contains(noSuccessor, group.name)) {
@@ -11273,11 +11371,15 @@ const htmlBuilder$8 = (grp, options) => {
11273
11371
  };
11274
11372
 
11275
11373
  const mathmlBuilder$8 = (group, options) => {
11276
- let node; // TODO(emily): handle big operators using the `largeop` attribute
11374
+ let node;
11277
11375
 
11278
11376
  if (group.symbol) {
11279
11377
  // This is a symbol. Just add the symbol.
11280
11378
  node = new MathNode("mo", [makeText(group.name, group.mode)]);
11379
+
11380
+ if (utils.contains(noSuccessor, group.name)) {
11381
+ node.setAttribute("largeop", "false");
11382
+ }
11281
11383
  } else if (group.body) {
11282
11384
  // This is an operator with children. Add them.
11283
11385
  node = new MathNode("mo", buildExpression$1(group.body, options));
@@ -11290,7 +11392,12 @@ const mathmlBuilder$8 = (group, options) => {
11290
11392
  // ref: https://www.w3.org/TR/REC-MathML/chap3_2.html#sec3.2.4
11291
11393
 
11292
11394
  const operator = new MathNode("mo", [makeText("\u2061", "text")]);
11293
- return newDocumentFragment([node, operator]);
11395
+
11396
+ if (group.parentIsSupSub) {
11397
+ node = new MathNode("mo", [node, operator]);
11398
+ } else {
11399
+ node = newDocumentFragment([node, operator]);
11400
+ }
11294
11401
  }
11295
11402
 
11296
11403
  return node;
@@ -11303,7 +11410,7 @@ const singleCharBigOps = {
11303
11410
  "\u22c0": "\\bigwedge",
11304
11411
  "\u22c1": "\\bigvee",
11305
11412
  "\u22c2": "\\bigcap",
11306
- "\u22c3": "\\bigcap",
11413
+ "\u22c3": "\\bigcup",
11307
11414
  "\u2a00": "\\bigodot",
11308
11415
  "\u2a01": "\\bigoplus",
11309
11416
  "\u2a02": "\\bigotimes",
@@ -11316,10 +11423,9 @@ defineFunction({
11316
11423
  props: {
11317
11424
  numArgs: 0
11318
11425
  },
11319
- handler: ({
11320
- parser,
11321
- funcName
11322
- }, args) => {
11426
+ handler: (_ref, args) => {
11427
+ let parser = _ref.parser,
11428
+ funcName = _ref.funcName;
11323
11429
  let fName = funcName;
11324
11430
 
11325
11431
  if (fName.length === 1) {
@@ -11330,6 +11436,7 @@ defineFunction({
11330
11436
  type: "op",
11331
11437
  mode: parser.mode,
11332
11438
  limits: true,
11439
+ parentIsSupSub: false,
11333
11440
  symbol: true,
11334
11441
  name: fName
11335
11442
  };
@@ -11345,14 +11452,14 @@ defineFunction({
11345
11452
  props: {
11346
11453
  numArgs: 1
11347
11454
  },
11348
- handler: ({
11349
- parser
11350
- }, args) => {
11455
+ handler: (_ref2, args) => {
11456
+ let parser = _ref2.parser;
11351
11457
  const body = args[0];
11352
11458
  return {
11353
11459
  type: "op",
11354
11460
  mode: parser.mode,
11355
11461
  limits: false,
11462
+ parentIsSupSub: false,
11356
11463
  symbol: false,
11357
11464
  body: ordargument(body)
11358
11465
  };
@@ -11379,14 +11486,14 @@ defineFunction({
11379
11486
  numArgs: 0
11380
11487
  },
11381
11488
 
11382
- handler({
11383
- parser,
11384
- funcName
11385
- }) {
11489
+ handler(_ref3) {
11490
+ let parser = _ref3.parser,
11491
+ funcName = _ref3.funcName;
11386
11492
  return {
11387
11493
  type: "op",
11388
11494
  mode: parser.mode,
11389
11495
  limits: false,
11496
+ parentIsSupSub: false,
11390
11497
  symbol: false,
11391
11498
  name: funcName
11392
11499
  };
@@ -11403,14 +11510,14 @@ defineFunction({
11403
11510
  numArgs: 0
11404
11511
  },
11405
11512
 
11406
- handler({
11407
- parser,
11408
- funcName
11409
- }) {
11513
+ handler(_ref4) {
11514
+ let parser = _ref4.parser,
11515
+ funcName = _ref4.funcName;
11410
11516
  return {
11411
11517
  type: "op",
11412
11518
  mode: parser.mode,
11413
11519
  limits: true,
11520
+ parentIsSupSub: false,
11414
11521
  symbol: false,
11415
11522
  name: funcName
11416
11523
  };
@@ -11427,10 +11534,9 @@ defineFunction({
11427
11534
  numArgs: 0
11428
11535
  },
11429
11536
 
11430
- handler({
11431
- parser,
11432
- funcName
11433
- }) {
11537
+ handler(_ref5) {
11538
+ let parser = _ref5.parser,
11539
+ funcName = _ref5.funcName;
11434
11540
  let fName = funcName;
11435
11541
 
11436
11542
  if (fName.length === 1) {
@@ -11441,6 +11547,7 @@ defineFunction({
11441
11547
  type: "op",
11442
11548
  mode: parser.mode,
11443
11549
  limits: false,
11550
+ parentIsSupSub: false,
11444
11551
  symbol: true,
11445
11552
  name: fName
11446
11553
  };
@@ -11458,9 +11565,8 @@ defineFunction({
11458
11565
  props: {
11459
11566
  numArgs: 1
11460
11567
  },
11461
- handler: ({
11462
- parser
11463
- }, args) => {
11568
+ handler: (_ref, args) => {
11569
+ let parser = _ref.parser;
11464
11570
  const body = args[0];
11465
11571
  return {
11466
11572
  type: "operatorname",
@@ -11544,9 +11650,8 @@ defineFunction({
11544
11650
 
11545
11651
  if (isAllString) {
11546
11652
  // Write a single TextNode instead of multiple nested tags.
11547
- const word = expression.map(node => node.toText()).join(""); // word has already been escaped by `node.toText()`
11548
-
11549
- expression = [new mathMLTree.TextNode(word, false)];
11653
+ const word = expression.map(node => node.toText()).join("");
11654
+ expression = [new mathMLTree.TextNode(word)];
11550
11655
  }
11551
11656
 
11552
11657
  const identifier = new mathMLTree.MathNode("mi", expression);
@@ -11562,6 +11667,10 @@ defineFunctionBuilders({
11562
11667
  type: "ordgroup",
11563
11668
 
11564
11669
  htmlBuilder(group, options) {
11670
+ if (group.semisimple) {
11671
+ return buildCommon.makeFragment(buildExpression(group.body, options, false));
11672
+ }
11673
+
11565
11674
  return buildCommon.makeSpan(["mord"], buildExpression(group.body, options, true), options);
11566
11675
  },
11567
11676
 
@@ -11578,9 +11687,8 @@ defineFunction({
11578
11687
  numArgs: 1
11579
11688
  },
11580
11689
 
11581
- handler({
11582
- parser
11583
- }, args) {
11690
+ handler(_ref, args) {
11691
+ let parser = _ref.parser;
11584
11692
  const body = args[0];
11585
11693
  return {
11586
11694
  type: "overline",
@@ -11632,9 +11740,8 @@ defineFunction({
11632
11740
  numArgs: 1,
11633
11741
  allowedInText: true
11634
11742
  },
11635
- handler: ({
11636
- parser
11637
- }, args) => {
11743
+ handler: (_ref, args) => {
11744
+ let parser = _ref.parser;
11638
11745
  const body = args[0];
11639
11746
  return {
11640
11747
  type: "phantom",
@@ -11660,9 +11767,8 @@ defineFunction({
11660
11767
  numArgs: 1,
11661
11768
  allowedInText: true
11662
11769
  },
11663
- handler: ({
11664
- parser
11665
- }, args) => {
11770
+ handler: (_ref2, args) => {
11771
+ let parser = _ref2.parser;
11666
11772
  const body = args[0];
11667
11773
  return {
11668
11774
  type: "hphantom",
@@ -11689,13 +11795,16 @@ defineFunction({
11689
11795
  type: "elem",
11690
11796
  elem: node
11691
11797
  }]
11692
- }, options);
11693
- return node;
11798
+ }, options); // For spacing, TeX treats \smash as a math group (same spacing as ord).
11799
+
11800
+ return buildCommon.makeSpan(["mord"], [node], options);
11694
11801
  },
11695
11802
  mathmlBuilder: (group, options) => {
11696
11803
  const inner = buildExpression$1(ordargument(group.body), options);
11697
- const node = new mathMLTree.MathNode("mphantom", inner);
11804
+ const phantom = new mathMLTree.MathNode("mphantom", inner);
11805
+ const node = new mathMLTree.MathNode("mpadded", [phantom]);
11698
11806
  node.setAttribute("height", "0px");
11807
+ node.setAttribute("depth", "0px");
11699
11808
  return node;
11700
11809
  }
11701
11810
  });
@@ -11706,9 +11815,8 @@ defineFunction({
11706
11815
  numArgs: 1,
11707
11816
  allowedInText: true
11708
11817
  },
11709
- handler: ({
11710
- parser
11711
- }, args) => {
11818
+ handler: (_ref3, args) => {
11819
+ let parser = _ref3.parser;
11712
11820
  const body = args[0];
11713
11821
  return {
11714
11822
  type: "vphantom",
@@ -11723,7 +11831,8 @@ defineFunction({
11723
11831
  },
11724
11832
  mathmlBuilder: (group, options) => {
11725
11833
  const inner = buildExpression$1(ordargument(group.body), options);
11726
- const node = new mathMLTree.MathNode("mphantom", inner);
11834
+ const phantom = new mathMLTree.MathNode("mphantom", inner);
11835
+ const node = new mathMLTree.MathNode("mpadded", [phantom]);
11727
11836
  node.setAttribute("width", "0px");
11728
11837
  return node;
11729
11838
  }
@@ -11767,12 +11876,10 @@ defineFunction({
11767
11876
  numArgs: 0,
11768
11877
  allowedInText: true
11769
11878
  },
11770
- handler: ({
11771
- breakOnTokenText,
11772
- funcName,
11773
- parser
11774
- }, args) => {
11775
- parser.consumeSpaces();
11879
+ handler: (_ref, args) => {
11880
+ let breakOnTokenText = _ref.breakOnTokenText,
11881
+ funcName = _ref.funcName,
11882
+ parser = _ref.parser;
11776
11883
  const body = parser.parseExpression(false, breakOnTokenText);
11777
11884
  return {
11778
11885
  type: "sizing",
@@ -11806,9 +11913,8 @@ defineFunction({
11806
11913
  allowedInText: true
11807
11914
  },
11808
11915
 
11809
- handler({
11810
- parser
11811
- }, args) {
11916
+ handler(_ref, args) {
11917
+ let parser = _ref.parser;
11812
11918
  const amount = assertNodeType(args[0], "size").value;
11813
11919
  const body = args[1];
11814
11920
  return {
@@ -11864,9 +11970,8 @@ defineFunction({
11864
11970
  argTypes: ["size", "size", "size"]
11865
11971
  },
11866
11972
 
11867
- handler({
11868
- parser
11869
- }, args, optArgs) {
11973
+ handler(_ref, args, optArgs) {
11974
+ let parser = _ref.parser;
11870
11975
  const shift = optArgs[0];
11871
11976
  const width = assertNodeType(args[0], "size");
11872
11977
  const height = assertNodeType(args[1], "size");
@@ -11883,14 +11988,9 @@ defineFunction({
11883
11988
  // Make an empty span for the rule
11884
11989
  const rule = buildCommon.makeSpan(["mord", "rule"], [], options); // Calculate the shift, width, and height of the rule, and account for units
11885
11990
 
11886
- let shift = 0;
11887
-
11888
- if (group.shift) {
11889
- shift = calculateSize(group.shift, options);
11890
- }
11891
-
11892
11991
  const width = calculateSize(group.width, options);
11893
- const height = calculateSize(group.height, options); // Style the rule to the right size
11992
+ const height = calculateSize(group.height, options);
11993
+ const shift = group.shift ? calculateSize(group.shift, options) : 0; // Style the rule to the right size
11894
11994
 
11895
11995
  rule.style.borderRightWidth = width + "em";
11896
11996
  rule.style.borderTopWidth = height + "em";
@@ -11907,10 +12007,25 @@ defineFunction({
11907
12007
  },
11908
12008
 
11909
12009
  mathmlBuilder(group, options) {
11910
- // TODO(emily): Figure out if there's an actual way to draw black boxes
11911
- // in MathML.
11912
- const node = new mathMLTree.MathNode("mrow");
11913
- return node;
12010
+ const width = calculateSize(group.width, options);
12011
+ const height = calculateSize(group.height, options);
12012
+ const shift = group.shift ? calculateSize(group.shift, options) : 0;
12013
+ const color = options.color && options.getColor() || "black";
12014
+ const rule = new mathMLTree.MathNode("mspace");
12015
+ rule.setAttribute("mathbackground", color);
12016
+ rule.setAttribute("width", width + "em");
12017
+ rule.setAttribute("height", height + "em");
12018
+ const wrapper = new mathMLTree.MathNode("mpadded", [rule]);
12019
+
12020
+ if (shift >= 0) {
12021
+ wrapper.setAttribute("height", "+" + shift + "em");
12022
+ } else {
12023
+ wrapper.setAttribute("height", shift + "em");
12024
+ wrapper.setAttribute("depth", "+" + -shift + "em");
12025
+ }
12026
+
12027
+ wrapper.setAttribute("voffset", shift + "em");
12028
+ return wrapper;
11914
12029
  }
11915
12030
 
11916
12031
  });
@@ -11924,9 +12039,8 @@ defineFunction({
11924
12039
  numOptionalArgs: 1,
11925
12040
  allowedInText: true
11926
12041
  },
11927
- handler: ({
11928
- parser
11929
- }, args, optArgs) => {
12042
+ handler: (_ref, args, optArgs) => {
12043
+ let parser = _ref.parser;
11930
12044
  let smashHeight = false;
11931
12045
  let smashDepth = false;
11932
12046
  const tbArg = optArgs[0] && assertNodeType(optArgs[0], "ordgroup");
@@ -11967,7 +12081,7 @@ defineFunction({
11967
12081
  };
11968
12082
  },
11969
12083
  htmlBuilder: (group, options) => {
11970
- const node = buildCommon.makeSpan(["mord"], [buildGroup(group.body, options)]);
12084
+ const node = buildCommon.makeSpan([], [buildGroup(group.body, options)]);
11971
12085
 
11972
12086
  if (!group.smashHeight && !group.smashDepth) {
11973
12087
  return node;
@@ -11997,13 +12111,15 @@ defineFunction({
11997
12111
  // from acting on that line height. So we'll call makeVList now.
11998
12112
 
11999
12113
 
12000
- return buildCommon.makeVList({
12114
+ const smashedNode = buildCommon.makeVList({
12001
12115
  positionType: "firstBaseline",
12002
12116
  children: [{
12003
12117
  type: "elem",
12004
12118
  elem: node
12005
12119
  }]
12006
- }, options);
12120
+ }, options); // For spacing, TeX treats \hphantom as a math group (same spacing as ord).
12121
+
12122
+ return buildCommon.makeSpan(["mord"], [smashedNode], options);
12007
12123
  },
12008
12124
  mathmlBuilder: (group, options) => {
12009
12125
  const node = new mathMLTree.MathNode("mpadded", [buildGroup$1(group.body, options)]);
@@ -12028,9 +12144,8 @@ defineFunction({
12028
12144
  numOptionalArgs: 1
12029
12145
  },
12030
12146
 
12031
- handler({
12032
- parser
12033
- }, args, optArgs) {
12147
+ handler(_ref, args, optArgs) {
12148
+ let parser = _ref.parser;
12034
12149
  const index = optArgs[0];
12035
12150
  const body = args[0];
12036
12151
  return {
@@ -12149,13 +12264,11 @@ defineFunction({
12149
12264
  allowedInText: true
12150
12265
  },
12151
12266
 
12152
- handler({
12153
- breakOnTokenText,
12154
- funcName,
12155
- parser
12156
- }, args) {
12267
+ handler(_ref, args) {
12268
+ let breakOnTokenText = _ref.breakOnTokenText,
12269
+ funcName = _ref.funcName,
12270
+ parser = _ref.parser;
12157
12271
  // parse out the implicit body
12158
- parser.consumeSpaces();
12159
12272
  const body = parser.parseExpression(true, breakOnTokenText); // TODO: Refactor to avoid duplicating styleMap in multiple places (e.g.
12160
12273
  // here and in buildHTML and de-dupe the enumeration of all the styles).
12161
12274
  // $FlowFixMe: The names above exactly match the styles.
@@ -12394,6 +12507,10 @@ defineFunctionBuilders({
12394
12507
  }
12395
12508
  }
12396
12509
 
12510
+ if (group.base && group.base.type === "op") {
12511
+ group.base.parentIsSupSub = true;
12512
+ }
12513
+
12397
12514
  const children = [buildGroup$1(group.base, options)];
12398
12515
 
12399
12516
  if (group.sub) {
@@ -12411,7 +12528,7 @@ defineFunctionBuilders({
12411
12528
  } else if (!group.sub) {
12412
12529
  const base = group.base;
12413
12530
 
12414
- if (base && base.type === "op" && base.limits && options.style === Style$1.DISPLAY) {
12531
+ if (base && base.type === "op" && base.limits && (options.style === Style$1.DISPLAY || base.alwaysHandleSupSub)) {
12415
12532
  nodeType = "mover";
12416
12533
  } else {
12417
12534
  nodeType = "msup";
@@ -12419,7 +12536,7 @@ defineFunctionBuilders({
12419
12536
  } else if (!group.sup) {
12420
12537
  const base = group.base;
12421
12538
 
12422
- if (base && base.type === "op" && base.limits && options.style === Style$1.DISPLAY) {
12539
+ if (base && base.type === "op" && base.limits && (options.style === Style$1.DISPLAY || base.alwaysHandleSupSub)) {
12423
12540
  nodeType = "munder";
12424
12541
  } else {
12425
12542
  nodeType = "msub";
@@ -12458,6 +12575,10 @@ defineFunctionBuilders({
12458
12575
  }
12459
12576
  } else if (group.family === "punct") {
12460
12577
  node.setAttribute("separator", "true");
12578
+ } else if (group.family === "open" || group.family === "close") {
12579
+ // Delims built here should not stretch vertically.
12580
+ // See delimsizing.js for stretchy delims.
12581
+ node.setAttribute("stretchy", "false");
12461
12582
  }
12462
12583
 
12463
12584
  return node;
@@ -12586,13 +12707,25 @@ defineFunctionBuilders({
12586
12707
 
12587
12708
  });
12588
12709
 
12710
+ const pad = () => {
12711
+ const padNode = new mathMLTree.MathNode("mtd", []);
12712
+ padNode.setAttribute("width", "50%");
12713
+ return padNode;
12714
+ };
12715
+
12589
12716
  defineFunctionBuilders({
12590
12717
  type: "tag",
12591
12718
 
12592
12719
  mathmlBuilder(group, options) {
12593
- const table = new mathMLTree.MathNode("mtable", [new mathMLTree.MathNode("mlabeledtr", [new mathMLTree.MathNode("mtd", [buildExpressionRow(group.tag, options)]), new mathMLTree.MathNode("mtd", [buildExpressionRow(group.body, options)])])]);
12594
- table.setAttribute("side", "right");
12595
- return table;
12720
+ const table = new mathMLTree.MathNode("mtable", [new mathMLTree.MathNode("mtr", [pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group.body, options)]), pad(), new mathMLTree.MathNode("mtd", [buildExpressionRow(group.tag, options)])])]);
12721
+ table.setAttribute("width", "100%");
12722
+ return table; // TODO: Left-aligned tags.
12723
+ // Currently, the group and options passed here do not contain
12724
+ // enough info to set tag alignment. `leqno` is in Settings but it is
12725
+ // not passed to Options. On the HTML side, leqno is
12726
+ // set by a CSS class applied in buildTree.js. That would have worked
12727
+ // in MathML if browsers supported <mlabeledtr>. Since they don't, we
12728
+ // need to rewrite the way this function is called.
12596
12729
  }
12597
12730
 
12598
12731
  });
@@ -12605,10 +12738,12 @@ const textFontFamilies = {
12605
12738
  "\\textnormal": "textrm"
12606
12739
  };
12607
12740
  const textFontWeights = {
12608
- "\\textbf": "textbf"
12741
+ "\\textbf": "textbf",
12742
+ "\\textmd": "textmd"
12609
12743
  };
12610
12744
  const textFontShapes = {
12611
- "\\textit": "textit"
12745
+ "\\textit": "textit",
12746
+ "\\textup": "textup"
12612
12747
  };
12613
12748
 
12614
12749
  const optionsWithFont = (group, options) => {
@@ -12629,8 +12764,8 @@ defineFunction({
12629
12764
  type: "text",
12630
12765
  names: [// Font families
12631
12766
  "\\text", "\\textrm", "\\textsf", "\\texttt", "\\textnormal", // Font weights
12632
- "\\textbf", // Font Shapes
12633
- "\\textit"],
12767
+ "\\textbf", "\\textmd", // Font Shapes
12768
+ "\\textit", "\\textup"],
12634
12769
  props: {
12635
12770
  numArgs: 1,
12636
12771
  argTypes: ["text"],
@@ -12639,10 +12774,9 @@ defineFunction({
12639
12774
  consumeMode: "text"
12640
12775
  },
12641
12776
 
12642
- handler({
12643
- parser,
12644
- funcName
12645
- }, args) {
12777
+ handler(_ref, args) {
12778
+ let parser = _ref.parser,
12779
+ funcName = _ref.funcName;
12646
12780
  const body = args[0];
12647
12781
  return {
12648
12782
  type: "text",
@@ -12673,9 +12807,8 @@ defineFunction({
12673
12807
  allowedInText: true
12674
12808
  },
12675
12809
 
12676
- handler({
12677
- parser
12678
- }, args) {
12810
+ handler(_ref, args) {
12811
+ let parser = _ref.parser;
12679
12812
  return {
12680
12813
  type: "underline",
12681
12814
  mode: parser.mode,
@@ -12819,15 +12952,28 @@ const tokenRegexString = `(${spaceRegexString}+)|` + // whitespace
12819
12952
  "|\\\\verb([^*a-zA-Z]).*?\\4" + // \verb unstarred
12820
12953
  `|${controlWordWhitespaceRegexString}` + // \macroName + spaces
12821
12954
  `|${controlSymbolRegexString})`; // \\, \', etc.
12955
+
12822
12956
  /** Main Lexer class */
12823
12957
 
12824
12958
  class Lexer {
12825
- constructor(input) {
12959
+ // category codes, only supports comment characters (14) for now
12960
+ constructor(input, settings) {
12826
12961
  this.input = void 0;
12962
+ this.settings = void 0;
12827
12963
  this.tokenRegex = void 0;
12964
+ this.catcodes = void 0;
12828
12965
  // Separate accents from characters
12829
12966
  this.input = input;
12967
+ this.settings = settings;
12830
12968
  this.tokenRegex = new RegExp(tokenRegexString, 'g');
12969
+ this.catcodes = {
12970
+ "%": 14 // comment character
12971
+
12972
+ };
12973
+ }
12974
+
12975
+ setCatcode(char, code) {
12976
+ this.catcodes[char] = code;
12831
12977
  }
12832
12978
  /**
12833
12979
  * This function lexes a single token.
@@ -12848,7 +12994,23 @@ class Lexer {
12848
12994
  throw new ParseError(`Unexpected character: '${input[pos]}'`, new Token(input[pos], new SourceLocation(this, pos, pos + 1)));
12849
12995
  }
12850
12996
 
12851
- let text = match[2] || " "; // Trim any trailing whitespace from control word match
12997
+ let text = match[2] || " ";
12998
+
12999
+ if (this.catcodes[text] === 14) {
13000
+ // comment character
13001
+ const nlIndex = input.indexOf('\n', this.tokenRegex.lastIndex);
13002
+
13003
+ if (nlIndex === -1) {
13004
+ this.tokenRegex.lastIndex = input.length; // EOF
13005
+
13006
+ this.settings.reportNonstrict("commentAtEnd", "% comment has no terminating newline; LaTeX would " + "fail because of commenting the end of math mode (e.g. $)");
13007
+ } else {
13008
+ this.tokenRegex.lastIndex = nlIndex + 1;
13009
+ }
13010
+
13011
+ return this.lex();
13012
+ } // Trim any trailing whitespace from control word match
13013
+
12852
13014
 
12853
13015
  const controlMatch = text.match(controlWordWhitespaceRegex);
12854
13016
 
@@ -12875,7 +13037,15 @@ class Namespace {
12875
13037
  * of initial (global-level) mappings, which will constantly change
12876
13038
  * according to any global/top-level `set`s done.
12877
13039
  */
12878
- constructor(builtins = {}, globalMacros = {}) {
13040
+ constructor(builtins, globalMacros) {
13041
+ if (builtins === void 0) {
13042
+ builtins = {};
13043
+ }
13044
+
13045
+ if (globalMacros === void 0) {
13046
+ globalMacros = {};
13047
+ }
13048
+
12879
13049
  this.current = void 0;
12880
13050
  this.builtins = void 0;
12881
13051
  this.undefStack = void 0;
@@ -12947,7 +13117,11 @@ class Namespace {
12947
13117
  */
12948
13118
 
12949
13119
 
12950
- set(name, value, global = false) {
13120
+ set(name, value, global) {
13121
+ if (global === void 0) {
13122
+ global = false;
13123
+ }
13124
+
12951
13125
  if (global) {
12952
13126
  // Global set is equivalent to setting in all groups. Simulate this
12953
13127
  // by destroying any undos currently scheduled for this name,
@@ -13245,9 +13419,7 @@ defineMacro("\\providecommand", context => newcommand(context, true, true)); ///
13245
13419
  // \let\bgroup={ \let\egroup=}
13246
13420
 
13247
13421
  defineMacro("\\bgroup", "{");
13248
- defineMacro("\\egroup", "}");
13249
- defineMacro("\\begingroup", "{");
13250
- defineMacro("\\endgroup", "}"); // Symbols from latex.ltx:
13422
+ defineMacro("\\egroup", "}"); // Symbols from latex.ltx:
13251
13423
  // \def\lq{`}
13252
13424
  // \def\rq{'}
13253
13425
  // \def \aa {\r a}
@@ -13265,17 +13437,7 @@ defineMacro("\\AA", "\\r A"); // Copyright (C) and registered (R) symbols. Use r
13265
13437
 
13266
13438
  defineMacro("\\textcopyright", "\\html@mathml{\\textcircled{c}}{\\char`©}");
13267
13439
  defineMacro("\\copyright", "\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");
13268
- defineMacro("\\textregistered", "\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"); // Unicode double-struck letters
13269
-
13270
- defineMacro("\u2102", "\\mathbb{C}");
13271
- defineMacro("\u210D", "\\mathbb{H}");
13272
- defineMacro("\u2115", "\\mathbb{N}");
13273
- defineMacro("\u2119", "\\mathbb{P}");
13274
- defineMacro("\u211A", "\\mathbb{Q}");
13275
- defineMacro("\u211D", "\\mathbb{R}");
13276
- defineMacro("\u2124", "\\mathbb{Z}");
13277
- defineMacro("\u210E", "\\mathit{h}"); // Planck constant
13278
- // Characters omitted from Unicode range 1D400–1D7FF
13440
+ defineMacro("\\textregistered", "\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}"); // Characters omitted from Unicode range 1D400–1D7FF
13279
13441
 
13280
13442
  defineMacro("\u212C", "\\mathscr{B}"); // script
13281
13443
 
@@ -13289,7 +13451,9 @@ defineMacro("\u211B", "\\mathscr{R}");
13289
13451
  defineMacro("\u212D", "\\mathfrak{C}"); // Fraktur
13290
13452
 
13291
13453
  defineMacro("\u210C", "\\mathfrak{H}");
13292
- defineMacro("\u2128", "\\mathfrak{Z}"); // Unicode middle dot
13454
+ defineMacro("\u2128", "\\mathfrak{Z}"); // Define \Bbbk with a macro that works in both HTML and MathML.
13455
+
13456
+ defineMacro("\\Bbbk", "\\Bbb{k}"); // Unicode middle dot
13293
13457
  // The KaTeX fonts do not contain U+00B7. Instead, \cdotp displays
13294
13458
  // the dot at U+22C5 and gives it punct spacing.
13295
13459
 
@@ -13301,8 +13465,9 @@ defineMacro("\\clap", "\\mathclap{\\textrm{#1}}"); // \not is defined by base/fo
13301
13465
  // \DeclareMathSymbol{\not}{\mathrel}{symbols}{"36}
13302
13466
  // It's thus treated like a \mathrel, but defined by a symbol that has zero
13303
13467
  // width but extends to the right. We use \rlap to get that spacing.
13468
+ // For MathML we write U+0338 here. buildMathML.js will then do the overlay.
13304
13469
 
13305
- defineMacro("\\not", '\\mathrel{\\mathrlap\\@not}'); // Negated symbols from base/fontmath.ltx:
13470
+ defineMacro("\\not", '\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'); // Negated symbols from base/fontmath.ltx:
13306
13471
  // \def\neq{\not=} \let\ne=\neq
13307
13472
  // \DeclareRobustCommand
13308
13473
  // \notin{\mathrel{\m@th\mathpalette\c@ncel\in}}
@@ -13618,31 +13783,37 @@ defineMacro("\\ordinarycolon", ":"); //\def\vcentcolon{\mathrel{\mathop\ordinary
13618
13783
 
13619
13784
  defineMacro("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}"); // \providecommand*\dblcolon{\vcentcolon\mathrel{\mkern-.9mu}\vcentcolon}
13620
13785
 
13621
- defineMacro("\\dblcolon", "\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}"); // \providecommand*\coloneqq{\vcentcolon\mathrel{\mkern-1.2mu}=}
13786
+ defineMacro("\\dblcolon", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}" + "{\\mathop{\\char\"2237}}"); // \providecommand*\coloneqq{\vcentcolon\mathrel{\mkern-1.2mu}=}
13787
+
13788
+ defineMacro("\\coloneqq", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}" + "{\\mathop{\\char\"2254}}"); // ≔
13789
+ // \providecommand*\Coloneqq{\dblcolon\mathrel{\mkern-1.2mu}=}
13622
13790
 
13623
- defineMacro("\\coloneqq", "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}"); // \providecommand*\Coloneqq{\dblcolon\mathrel{\mkern-1.2mu}=}
13791
+ defineMacro("\\Coloneqq", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}" + "{\\mathop{\\char\"2237\\char\"3d}}"); // \providecommand*\coloneq{\vcentcolon\mathrel{\mkern-1.2mu}\mathrel{-}}
13624
13792
 
13625
- defineMacro("\\Coloneqq", "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}"); // \providecommand*\coloneq{\vcentcolon\mathrel{\mkern-1.2mu}\mathrel{-}}
13793
+ defineMacro("\\coloneq", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}" + "{\\mathop{\\char\"3a\\char\"2212}}"); // \providecommand*\Coloneq{\dblcolon\mathrel{\mkern-1.2mu}\mathrel{-}}
13626
13794
 
13627
- defineMacro("\\coloneq", "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}"); // \providecommand*\Coloneq{\dblcolon\mathrel{\mkern-1.2mu}\mathrel{-}}
13795
+ defineMacro("\\Coloneq", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}" + "{\\mathop{\\char\"2237\\char\"2212}}"); // \providecommand*\eqqcolon{=\mathrel{\mkern-1.2mu}\vcentcolon}
13628
13796
 
13629
- defineMacro("\\Coloneq", "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}"); // \providecommand*\eqqcolon{=\mathrel{\mkern-1.2mu}\vcentcolon}
13797
+ defineMacro("\\eqqcolon", "\\html@mathml{" + "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}" + "{\\mathop{\\char\"2255}}"); // ≕
13798
+ // \providecommand*\Eqqcolon{=\mathrel{\mkern-1.2mu}\dblcolon}
13630
13799
 
13631
- defineMacro("\\eqqcolon", "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}"); // \providecommand*\Eqqcolon{=\mathrel{\mkern-1.2mu}\dblcolon}
13800
+ defineMacro("\\Eqqcolon", "\\html@mathml{" + "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}" + "{\\mathop{\\char\"3d\\char\"2237}}"); // \providecommand*\eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\vcentcolon}
13632
13801
 
13633
- defineMacro("\\Eqqcolon", "\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}"); // \providecommand*\eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\vcentcolon}
13802
+ defineMacro("\\eqcolon", "\\html@mathml{" + "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}" + "{\\mathop{\\char\"2239}}"); // \providecommand*\Eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\dblcolon}
13634
13803
 
13635
- defineMacro("\\eqcolon", "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}"); // \providecommand*\Eqcolon{\mathrel{-}\mathrel{\mkern-1.2mu}\dblcolon}
13804
+ defineMacro("\\Eqcolon", "\\html@mathml{" + "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}" + "{\\mathop{\\char\"2212\\char\"2237}}"); // \providecommand*\colonapprox{\vcentcolon\mathrel{\mkern-1.2mu}\approx}
13636
13805
 
13637
- defineMacro("\\Eqcolon", "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}"); // \providecommand*\colonapprox{\vcentcolon\mathrel{\mkern-1.2mu}\approx}
13806
+ defineMacro("\\colonapprox", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}" + "{\\mathop{\\char\"3a\\char\"2248}}"); // \providecommand*\Colonapprox{\dblcolon\mathrel{\mkern-1.2mu}\approx}
13638
13807
 
13639
- defineMacro("\\colonapprox", "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}"); // \providecommand*\Colonapprox{\dblcolon\mathrel{\mkern-1.2mu}\approx}
13808
+ defineMacro("\\Colonapprox", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}" + "{\\mathop{\\char\"2237\\char\"2248}}"); // \providecommand*\colonsim{\vcentcolon\mathrel{\mkern-1.2mu}\sim}
13640
13809
 
13641
- defineMacro("\\Colonapprox", "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}"); // \providecommand*\colonsim{\vcentcolon\mathrel{\mkern-1.2mu}\sim}
13810
+ defineMacro("\\colonsim", "\\html@mathml{" + "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}" + "{\\mathop{\\char\"3a\\char\"223c}}"); // \providecommand*\Colonsim{\dblcolon\mathrel{\mkern-1.2mu}\sim}
13642
13811
 
13643
- defineMacro("\\colonsim", "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}"); // \providecommand*\Colonsim{\dblcolon\mathrel{\mkern-1.2mu}\sim}
13812
+ defineMacro("\\Colonsim", "\\html@mathml{" + "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}" + "{\\mathop{\\char\"2237\\char\"223c}}"); // Some Unicode characters are implemented with macros to mathtools functions.
13644
13813
 
13645
- defineMacro("\\Colonsim", "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}"); // Some Unicode characters are implemented with macros to mathtools functions.
13814
+ defineMacro("\u2237", "\\dblcolon"); // ::
13815
+
13816
+ defineMacro("\u2239", "\\eqcolon"); // -:
13646
13817
 
13647
13818
  defineMacro("\u2254", "\\coloneqq"); // :=
13648
13819
 
@@ -13676,13 +13847,37 @@ defineMacro("\\approxcoloncolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\d
13676
13847
  defineMacro("\\notni", "\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");
13677
13848
  defineMacro("\\limsup", "\\DOTSB\\mathop{\\operatorname{lim\\,sup}}\\limits");
13678
13849
  defineMacro("\\liminf", "\\DOTSB\\mathop{\\operatorname{lim\\,inf}}\\limits"); //////////////////////////////////////////////////////////////////////
13679
- // semantic
13680
- // The semantic package renders the next two items by calling a glyph from the
13681
- // bbold package. Those glyphs do not exist in the KaTeX fonts. Hence the macros.
13682
-
13683
- defineMacro("\u27e6", "\\mathopen{[\\mkern-3.2mu[}"); // blackboard bold [
13684
-
13685
- defineMacro("\u27e7", "\\mathclose{]\\mkern-3.2mu]}"); // blackboard bold ]
13850
+ // MathML alternates for KaTeX glyphs in the Unicode private area
13851
+
13852
+ defineMacro("\\gvertneqq", "\\html@mathml{\\@gvertneqq}{\u2269}");
13853
+ defineMacro("\\lvertneqq", "\\html@mathml{\\@lvertneqq}{\u2268}");
13854
+ defineMacro("\\ngeqq", "\\html@mathml{\\@ngeqq}{\u2271}");
13855
+ defineMacro("\\ngeqslant", "\\html@mathml{\\@ngeqslant}{\u2271}");
13856
+ defineMacro("\\nleqq", "\\html@mathml{\\@nleqq}{\u2270}");
13857
+ defineMacro("\\nleqslant", "\\html@mathml{\\@nleqslant}{\u2270}");
13858
+ defineMacro("\\nshortmid", "\\html@mathml{\\@nshortmid}{∤}");
13859
+ defineMacro("\\nshortparallel", "\\html@mathml{\\@nshortparallel}{∦}");
13860
+ defineMacro("\\nsubseteqq", "\\html@mathml{\\@nsubseteqq}{\u2288}");
13861
+ defineMacro("\\nsupseteqq", "\\html@mathml{\\@nsupseteqq}{\u2289}");
13862
+ defineMacro("\\varsubsetneq", "\\html@mathml{\\@varsubsetneq}{⊊}");
13863
+ defineMacro("\\varsubsetneqq", "\\html@mathml{\\@varsubsetneqq}{⫋}");
13864
+ defineMacro("\\varsupsetneq", "\\html@mathml{\\@varsupsetneq}{⊋}");
13865
+ defineMacro("\\varsupsetneqq", "\\html@mathml{\\@varsupsetneqq}{⫌}"); //////////////////////////////////////////////////////////////////////
13866
+ // stmaryrd and semantic
13867
+ // The stmaryrd and semantic packages render the next four items by calling a
13868
+ // glyph. Those glyphs do not exist in the KaTeX fonts. Hence the macros.
13869
+
13870
+ defineMacro("\\llbracket", "\\html@mathml{" + "\\mathopen{[\\mkern-3.2mu[}}" + "{\\mathopen{\\char`\u27e6}}");
13871
+ defineMacro("\\rrbracket", "\\html@mathml{" + "\\mathclose{]\\mkern-3.2mu]}}" + "{\\mathclose{\\char`\u27e7}}");
13872
+ defineMacro("\u27e6", "\\llbracket"); // blackboard bold [
13873
+
13874
+ defineMacro("\u27e7", "\\rrbracket"); // blackboard bold ]
13875
+
13876
+ defineMacro("\\lBrace", "\\html@mathml{" + "\\mathopen{\\{\\mkern-3.2mu[}}" + "{\\mathopen{\\char`\u2983}}");
13877
+ defineMacro("\\rBrace", "\\html@mathml{" + "\\mathclose{]\\mkern-3.2mu\\}}}" + "{\\mathclose{\\char`\u2984}}");
13878
+ defineMacro("\u2983", "\\lBrace"); // blackboard bold {
13879
+
13880
+ defineMacro("\u2984", "\\rBrace"); // blackboard bold }
13686
13881
  // TODO: Create variable sized versions of the last two items. I believe that
13687
13882
  // will require new font glyphs.
13688
13883
  //////////////////////////////////////////////////////////////////////
@@ -13744,7 +13939,7 @@ defineMacro("\\Rarr", "\\Rightarrow");
13744
13939
  defineMacro("\\real", "\\Re");
13745
13940
  defineMacro("\\reals", "\\mathbb{R}");
13746
13941
  defineMacro("\\Reals", "\\mathbb{R}");
13747
- defineMacro("\\Rho", "\\mathrm{R}");
13942
+ defineMacro("\\Rho", "\\mathrm{P}");
13748
13943
  defineMacro("\\sdot", "\\cdot");
13749
13944
  defineMacro("\\sect", "\\S");
13750
13945
  defineMacro("\\spades", "\\spadesuit");
@@ -13755,7 +13950,69 @@ defineMacro("\\Tau", "\\mathrm{T}");
13755
13950
  defineMacro("\\thetasym", "\\vartheta"); // TODO: defineMacro("\\varcoppa", "\\\mbox{\\coppa}");
13756
13951
 
13757
13952
  defineMacro("\\weierp", "\\wp");
13758
- defineMacro("\\Zeta", "\\mathrm{Z}");
13953
+ defineMacro("\\Zeta", "\\mathrm{Z}"); //////////////////////////////////////////////////////////////////////
13954
+ // statmath.sty
13955
+ // https://ctan.math.illinois.edu/macros/latex/contrib/statmath/statmath.pdf
13956
+
13957
+ defineMacro("\\argmin", "\\DOTSB\\mathop{\\operatorname{arg\\,min}}\\limits");
13958
+ defineMacro("\\argmax", "\\DOTSB\\mathop{\\operatorname{arg\\,max}}\\limits"); // Custom Khan Academy colors, should be moved to an optional package
13959
+
13960
+ defineMacro("\\blue", "\\textcolor{##6495ed}{#1}");
13961
+ defineMacro("\\orange", "\\textcolor{##ffa500}{#1}");
13962
+ defineMacro("\\pink", "\\textcolor{##ff00af}{#1}");
13963
+ defineMacro("\\red", "\\textcolor{##df0030}{#1}");
13964
+ defineMacro("\\green", "\\textcolor{##28ae7b}{#1}");
13965
+ defineMacro("\\gray", "\\textcolor{gray}{##1}");
13966
+ defineMacro("\\purple", "\\textcolor{##9d38bd}{#1}");
13967
+ defineMacro("\\blueA", "\\textcolor{##ccfaff}{#1}");
13968
+ defineMacro("\\blueB", "\\textcolor{##80f6ff}{#1}");
13969
+ defineMacro("\\blueC", "\\textcolor{##63d9ea}{#1}");
13970
+ defineMacro("\\blueD", "\\textcolor{##11accd}{#1}");
13971
+ defineMacro("\\blueE", "\\textcolor{##0c7f99}{#1}");
13972
+ defineMacro("\\tealA", "\\textcolor{##94fff5}{#1}");
13973
+ defineMacro("\\tealB", "\\textcolor{##26edd5}{#1}");
13974
+ defineMacro("\\tealC", "\\textcolor{##01d1c1}{#1}");
13975
+ defineMacro("\\tealD", "\\textcolor{##01a995}{#1}");
13976
+ defineMacro("\\tealE", "\\textcolor{##208170}{#1}");
13977
+ defineMacro("\\greenA", "\\textcolor{##b6ffb0}{#1}");
13978
+ defineMacro("\\greenB", "\\textcolor{##8af281}{#1}");
13979
+ defineMacro("\\greenC", "\\textcolor{##74cf70}{#1}");
13980
+ defineMacro("\\greenD", "\\textcolor{##1fab54}{#1}");
13981
+ defineMacro("\\greenE", "\\textcolor{##0d923f}{#1}");
13982
+ defineMacro("\\goldA", "\\textcolor{##ffd0a9}{#1}");
13983
+ defineMacro("\\goldB", "\\textcolor{##ffbb71}{#1}");
13984
+ defineMacro("\\goldC", "\\textcolor{##ff9c39}{#1}");
13985
+ defineMacro("\\goldD", "\\textcolor{##e07d10}{#1}");
13986
+ defineMacro("\\goldE", "\\textcolor{##a75a05}{#1}");
13987
+ defineMacro("\\redA", "\\textcolor{##fca9a9}{#1}");
13988
+ defineMacro("\\redB", "\\textcolor{##ff8482}{#1}");
13989
+ defineMacro("\\redC", "\\textcolor{##f9685d}{#1}");
13990
+ defineMacro("\\redD", "\\textcolor{##e84d39}{#1}");
13991
+ defineMacro("\\redE", "\\textcolor{##bc2612}{#1}");
13992
+ defineMacro("\\maroonA", "\\textcolor{##ffbde0}{#1}");
13993
+ defineMacro("\\maroonB", "\\textcolor{##ff92c6}{#1}");
13994
+ defineMacro("\\maroonC", "\\textcolor{##ed5fa6}{#1}");
13995
+ defineMacro("\\maroonD", "\\textcolor{##ca337c}{#1}");
13996
+ defineMacro("\\maroonE", "\\textcolor{##9e034e}{#1}");
13997
+ defineMacro("\\purpleA", "\\textcolor{##ddd7ff}{#1}");
13998
+ defineMacro("\\purpleB", "\\textcolor{##c6b9fc}{#1}");
13999
+ defineMacro("\\purpleC", "\\textcolor{##aa87ff}{#1}");
14000
+ defineMacro("\\purpleD", "\\textcolor{##7854ab}{#1}");
14001
+ defineMacro("\\purpleE", "\\textcolor{##543b78}{#1}");
14002
+ defineMacro("\\mintA", "\\textcolor{##f5f9e8}{#1}");
14003
+ defineMacro("\\mintB", "\\textcolor{##edf2df}{#1}");
14004
+ defineMacro("\\mintC", "\\textcolor{##e0e5cc}{#1}");
14005
+ defineMacro("\\grayA", "\\textcolor{##f6f7f7}{#1}");
14006
+ defineMacro("\\grayB", "\\textcolor{##f0f1f2}{#1}");
14007
+ defineMacro("\\grayC", "\\textcolor{##e3e5e6}{#1}");
14008
+ defineMacro("\\grayD", "\\textcolor{##d6d8da}{#1}");
14009
+ defineMacro("\\grayE", "\\textcolor{##babec2}{#1}");
14010
+ defineMacro("\\grayF", "\\textcolor{##888d93}{#1}");
14011
+ defineMacro("\\grayG", "\\textcolor{##626569}{#1}");
14012
+ defineMacro("\\grayH", "\\textcolor{##3b3e40}{#1}");
14013
+ defineMacro("\\grayI", "\\textcolor{##21242c}{#1}");
14014
+ defineMacro("\\kaBlue", "\\textcolor{##314453}{#1}");
14015
+ defineMacro("\\kaGreen", "\\textcolor{##71B307}{#1}");
13759
14016
 
13760
14017
  /**
13761
14018
  * This file contains the “gullet” where macros are expanded
@@ -13798,7 +14055,7 @@ class MacroExpander {
13798
14055
 
13799
14056
 
13800
14057
  feed(input) {
13801
- this.lexer = new Lexer(input);
14058
+ this.lexer = new Lexer(input, this.settings);
13802
14059
  }
13803
14060
  /**
13804
14061
  * Switches between "text" and "math" modes.
@@ -14103,7 +14360,7 @@ class MacroExpander {
14103
14360
  }
14104
14361
  }
14105
14362
 
14106
- const bodyLexer = new Lexer(expansion);
14363
+ const bodyLexer = new Lexer(expansion, this.settings);
14107
14364
  const tokens = [];
14108
14365
  let tok = bodyLexer.lex();
14109
14366
 
@@ -14879,7 +15136,11 @@ class Parser {
14879
15136
  */
14880
15137
 
14881
15138
 
14882
- expect(text, consume = true) {
15139
+ expect(text, consume) {
15140
+ if (consume === void 0) {
15141
+ consume = true;
15142
+ }
15143
+
14883
15144
  if (this.nextToken.text !== text) {
14884
15145
  throw new ParseError("Expected '" + text + "', got '" + this.nextToken.text + "'", this.nextToken);
14885
15146
  }
@@ -14932,17 +15193,6 @@ class Parser {
14932
15193
  return parse;
14933
15194
  }
14934
15195
 
14935
- /**
14936
- * Parses an "expression", which is a list of atoms.
14937
- *
14938
- * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This
14939
- * happens when functions have higher precendence han infix
14940
- * nodes in implicit parses.
14941
- *
14942
- * `breakOnTokenText`: The text of the token that the expression should end
14943
- * with, or `null` if something else should end the
14944
- * expression.
14945
- */
14946
15196
  parseExpression(breakOnInfix, breakOnTokenText) {
14947
15197
  const body = []; // Keep adding atoms to the body until we can't parse any more atoms (either
14948
15198
  // we reached the end, a }, or a \right)
@@ -15182,8 +15432,6 @@ class Parser {
15182
15432
  mode: this.mode,
15183
15433
  body: primes
15184
15434
  };
15185
- } else if (lex.text === "%") {
15186
- this.consumeComment();
15187
15435
  } else {
15188
15436
  // If it wasn't ^, _, or ', stop parsing super/subscripts
15189
15437
  break;
@@ -15227,6 +15475,11 @@ class Parser {
15227
15475
  throw new ParseError("Can't use function '" + func + "' in text mode", token);
15228
15476
  } else if (this.mode === "math" && funcData.allowedInMath === false) {
15229
15477
  throw new ParseError("Can't use function '" + func + "' in math mode", token);
15478
+ } // hyperref package sets the catcode of % as an active character
15479
+
15480
+
15481
+ if (funcData.argTypes && funcData.argTypes[0] === "url") {
15482
+ this.gullet.lexer.setCatcode("%", 13);
15230
15483
  } // Consume the command token after possibly switching to the
15231
15484
  // mode specified by the function (for instant mode switching),
15232
15485
  // and then immediately switch back.
@@ -15348,6 +15601,25 @@ class Parser {
15348
15601
  case "text":
15349
15602
  return this.parseGroup(name, optional, greediness, undefined, type);
15350
15603
 
15604
+ case "raw":
15605
+ {
15606
+ if (optional && this.nextToken.text === "{") {
15607
+ return null;
15608
+ }
15609
+
15610
+ const token = this.parseStringGroup("raw", optional, true);
15611
+
15612
+ if (token) {
15613
+ return {
15614
+ type: "raw",
15615
+ mode: "text",
15616
+ string: token.text
15617
+ };
15618
+ } else {
15619
+ throw new ParseError("Expected raw group", this.nextToken);
15620
+ }
15621
+ }
15622
+
15351
15623
  case "original":
15352
15624
  case null:
15353
15625
  case undefined:
@@ -15363,28 +15635,6 @@ class Parser {
15363
15635
  this.consume();
15364
15636
  }
15365
15637
  }
15366
-
15367
- consumeComment() {
15368
- // the newline character is normalized in Lexer, check original source
15369
- while (this.nextToken.text !== "EOF" && this.nextToken.loc && this.nextToken.loc.getSource().indexOf("\n") === -1) {
15370
- this.consume();
15371
- }
15372
-
15373
- if (this.nextToken.text === "EOF") {
15374
- this.settings.reportNonstrict("commentAtEnd", "% comment has no terminating newline; LaTeX would " + "fail because of commenting the end of math mode (e.g. $)");
15375
- }
15376
-
15377
- if (this.mode === "math") {
15378
- this.consumeSpaces(); // ignore spaces in math mode
15379
- } else if (this.nextToken.loc) {
15380
- // text mode
15381
- const source = this.nextToken.loc.getSource();
15382
-
15383
- if (source.indexOf("\n") === source.length - 1) {
15384
- this.consumeSpaces(); // if no space after the first newline
15385
- }
15386
- }
15387
- }
15388
15638
  /**
15389
15639
  * Parses a group, essentially returning the string formed by the
15390
15640
  * brace-enclosed tokens plus some position information.
@@ -15402,6 +15652,8 @@ class Parser {
15402
15652
  return null;
15403
15653
  } else if (raw && nextToken.text !== "EOF" && /[^{}[\]]/.test(nextToken.text)) {
15404
15654
  // allow a single character in raw string group
15655
+ this.gullet.lexer.setCatcode("%", 14); // reset the catcode of %
15656
+
15405
15657
  this.consume();
15406
15658
  return nextToken;
15407
15659
  }
@@ -15421,15 +15673,6 @@ class Parser {
15421
15673
  case "EOF":
15422
15674
  throw new ParseError("Unexpected end of input in " + modeName, firstToken.range(lastToken, str));
15423
15675
 
15424
- case "%":
15425
- if (!raw) {
15426
- // allow % in raw string group
15427
- this.consumeComment();
15428
- continue;
15429
- }
15430
-
15431
- break;
15432
-
15433
15676
  case groupBegin:
15434
15677
  nested++;
15435
15678
  break;
@@ -15445,6 +15688,8 @@ class Parser {
15445
15688
  }
15446
15689
 
15447
15690
  this.mode = outerMode;
15691
+ this.gullet.lexer.setCatcode("%", 14); // reset the catcode of %
15692
+
15448
15693
  this.expect(groupEnd);
15449
15694
  return firstToken.range(lastToken, str);
15450
15695
  }
@@ -15462,12 +15707,7 @@ class Parser {
15462
15707
  let lastToken = firstToken;
15463
15708
  let str = "";
15464
15709
 
15465
- while (this.nextToken.text !== "EOF" && (regex.test(str + this.nextToken.text) || this.nextToken.text === "%")) {
15466
- if (this.nextToken.text === "%") {
15467
- this.consumeComment();
15468
- continue;
15469
- }
15470
-
15710
+ while (this.nextToken.text !== "EOF" && regex.test(str + this.nextToken.text)) {
15471
15711
  lastToken = this.nextToken;
15472
15712
  str += lastToken.text;
15473
15713
  this.consume();
@@ -15619,29 +15859,29 @@ class Parser {
15619
15859
  this.switchMode(mode);
15620
15860
  }
15621
15861
 
15622
- let result; // Try to parse an open brace
15862
+ let groupEnd;
15863
+ let result; // Try to parse an open brace or \begingroup
15864
+
15865
+ if (optional ? text === "[" : text === "{" || text === "\\begingroup") {
15866
+ groupEnd = Parser.endOfGroup[text]; // Start a new group namespace
15623
15867
 
15624
- if (text === (optional ? "[" : "{")) {
15625
- // Start a new group namespace
15626
15868
  this.gullet.beginGroup(); // If we get a brace, parse an expression
15627
15869
 
15628
15870
  this.consume();
15629
- const expression = this.parseExpression(false, optional ? "]" : "}");
15630
- const lastToken = this.nextToken; // Switch mode back before consuming symbol after close brace
15631
-
15632
- if (mode) {
15633
- this.switchMode(outerMode);
15634
- } // End group namespace before consuming symbol after close brace
15635
-
15871
+ const expression = this.parseExpression(false, groupEnd);
15872
+ const lastToken = this.nextToken; // End group namespace before consuming symbol after close brace
15636
15873
 
15637
- this.gullet.endGroup(); // Make sure we get a close brace
15638
-
15639
- this.expect(optional ? "]" : "}");
15640
- return {
15874
+ this.gullet.endGroup();
15875
+ result = {
15641
15876
  type: "ordgroup",
15642
15877
  mode: this.mode,
15643
15878
  loc: SourceLocation.range(firstToken, lastToken),
15644
- body: expression
15879
+ body: expression,
15880
+ // A group formed by \begingroup...\endgroup is a semi-simple group
15881
+ // which doesn't affect spacing in math mode, i.e., is transparent.
15882
+ // https://tex.stackexchange.com/questions/1930/when-should-one-
15883
+ // use-begingroup-instead-of-bgroup
15884
+ semisimple: text === "\\begingroup" || undefined
15645
15885
  };
15646
15886
  } else if (optional) {
15647
15887
  // Return nothing for an optional group
@@ -15663,6 +15903,11 @@ class Parser {
15663
15903
 
15664
15904
  if (mode) {
15665
15905
  this.switchMode(outerMode);
15906
+ } // Make sure we got a close brace
15907
+
15908
+
15909
+ if (groupEnd) {
15910
+ this.expect(groupEnd);
15666
15911
  }
15667
15912
 
15668
15913
  return result;
@@ -15750,9 +15995,6 @@ class Parser {
15750
15995
  body: arg,
15751
15996
  star
15752
15997
  };
15753
- } else if (text === "%") {
15754
- this.consumeComment();
15755
- return this.parseSymbol();
15756
15998
  } // At this point, we should have a symbol, possibly with accents.
15757
15999
  // First expand any accented base symbol according to unicodeSymbols.
15758
16000
 
@@ -15864,7 +16106,24 @@ class Parser {
15864
16106
  }
15865
16107
 
15866
16108
  }
15867
- Parser.endOfExpression = ["}", "\\end", "\\right", "&"];
16109
+ Parser.endOfExpression = ["}", "\\endgroup", "\\end", "\\right", "&"];
16110
+ Parser.endOfGroup = {
16111
+ "[": "]",
16112
+ "{": "}",
16113
+ "\\begingroup": "\\endgroup"
16114
+ /**
16115
+ * Parses an "expression", which is a list of atoms.
16116
+ *
16117
+ * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This
16118
+ * happens when functions have higher precendence han infix
16119
+ * nodes in implicit parses.
16120
+ *
16121
+ * `breakOnTokenText`: The text of the token that the expression should end
16122
+ * with, or `null` if something else should end the
16123
+ * expression.
16124
+ */
16125
+
16126
+ };
15868
16127
  Parser.SUPSUB_GREEDINESS = 1;
15869
16128
 
15870
16129
  /**
@@ -15998,7 +16257,7 @@ var katex = {
15998
16257
  /**
15999
16258
  * Current KaTeX version
16000
16259
  */
16001
- version: "0.10.0",
16260
+ version: "0.10.2",
16002
16261
 
16003
16262
  /**
16004
16263
  * Renders the given LaTeX into an HTML+MathML combination, and adds