diff --git a/ABI/index.php b/ABI/index.php
index ef5dfa2..fe9392a 100644
--- a/ABI/index.php
+++ b/ABI/index.php
@@ -69,21 +69,21 @@
 
     <ul>
     <li> Internal implementation dependent issues - details of direct
-	rendering, loadable driver modules, etc. Such details are
-	hidden from the public interfaces by the implementation,
-	and are irrelevant to applications using the ABI. </li>
+        rendering, loadable driver modules, etc. Such details are
+        hidden from the public interfaces by the implementation,
+        and are irrelevant to applications using the ABI. </li>
     <li> Operating systems other than Linux. Other platforms such as BSD
-	are welcome to use whatever comes out of this project, but we
-	are explicitly not trying to solve this problem for every free
-	OS in the world. </li>
+        are welcome to use whatever comes out of this project, but we
+        are explicitly not trying to solve this problem for every free
+        OS in the world. </li>
     <li> Changes to the OpenGL API. The definition of OpenGL is
-	controlled by the OpenGL Architecture Review Board, and we in no
-	way challenge this. A single GLX extension is required; this
-	extension has already been approved by the ARB. </li>
+        controlled by the OpenGL Architecture Review Board, and we in no
+        way challenge this. A single GLX extension is required; this
+        extension has already been approved by the ARB. </li>
     <li> Use of 3D outside the X11/GLX context. There are a variety of
-	approaches (fxMesa, GGI, etc.) that again are welcome to use
-	relevant parts of this project, but whose support is not part of
-	its goals. </li>
+        approaches (fxMesa, GGI, etc.) that again are welcome to use
+        relevant parts of this project, but whose support is not part of
+        its goals. </li>
     </ul>
 
 <p> 1.3. We believe all critical decisions have been made. Some
@@ -119,50 +119,50 @@
 
 <table border="1" class="center-table">
     <tr><td>GL datatype</td>
-	<td>Description</td>
-	<td>gcc equivalent for IA32</td></tr>
+        <td>Description</td>
+        <td>gcc equivalent for IA32</td></tr>
     <tr><td><tt>GLboolean</tt></td>
-	<td>8-bit boolean</td>
-	<td><tt>unsigned char</tt></td></tr>
+        <td>8-bit boolean</td>
+        <td><tt>unsigned char</tt></td></tr>
     <tr><td><tt>GLbyte</tt></td>
-	<td>signed 8-bit 2's-complement integer</td>
-	<td><tt>signed char</tt></td></tr>
+        <td>signed 8-bit 2's-complement integer</td>
+        <td><tt>signed char</tt></td></tr>
     <tr><td><tt>GLubyte</tt></td>
-	<td>unsigned 8-bit integer</td>
-	<td><tt>unsigned char</tt></td></tr>
+        <td>unsigned 8-bit integer</td>
+        <td><tt>unsigned char</tt></td></tr>
     <tr><td><tt>GLshort</tt></td>
-	<td>signed 16-bit 2's-complement integer</td>
-	<td><tt>short</tt></td></tr>
+        <td>signed 16-bit 2's-complement integer</td>
+        <td><tt>short</tt></td></tr>
     <tr><td><tt>GLushort</tt></td>
-	<td>unsigned 16-bit integer</td>
-	<td><tt>unsigned short</tt></td></tr>
+        <td>unsigned 16-bit integer</td>
+        <td><tt>unsigned short</tt></td></tr>
     <tr><td><tt>GLint</tt></td>
-	<td>signed 32-bit 2's-complement integer</td>
-	<td><tt>int</tt></td></tr>
+        <td>signed 32-bit 2's-complement integer</td>
+        <td><tt>int</tt></td></tr>
     <tr><td><tt>GLuint</tt></td>
-	<td>unsigned 32-bit integer</td>
-	<td><tt>unsigned int</tt></td></tr>
+        <td>unsigned 32-bit integer</td>
+        <td><tt>unsigned int</tt></td></tr>
     <tr><td><tt>GLsizei</tt></td>
-	<td>non-negative 32-bit binary integer size</td>
-	<td><tt>int</tt></td></tr>
+        <td>non-negative 32-bit binary integer size</td>
+        <td><tt>int</tt></td></tr>
     <tr><td><tt>GLenum</tt></td>
-	<td>enumerated 32-bit value</td>
-	<td><tt>unsigned int</tt></td></tr>
+        <td>enumerated 32-bit value</td>
+        <td><tt>unsigned int</tt></td></tr>
     <tr><td><tt>GLbitfield</tt></td>
-	<td>32 bit bitfield</td>
-	<td><tt>unsigned int</tt></td></tr>
+        <td>32 bit bitfield</td>
+        <td><tt>unsigned int</tt></td></tr>
     <tr><td><tt>GLfloat</tt></td>
-	<td>32-bit IEEE754 floating-point</td>
-	<td><tt>float</tt></td></tr>
+        <td>32-bit IEEE754 floating-point</td>
+        <td><tt>float</tt></td></tr>
     <tr><td><tt>GLclampf</tt></td>
-	<td>Same as GLfloat, but in range [0, 1]</td>
-	<td><tt>float</tt></td></tr>
+        <td>Same as GLfloat, but in range [0, 1]</td>
+        <td><tt>float</tt></td></tr>
     <tr><td><tt>GLdouble</tt></td>
-	<td>64-bit IEEE754 floating-point</td>
-	<td><tt>double</tt></td></tr>
+        <td>64-bit IEEE754 floating-point</td>
+        <td><tt>double</tt></td></tr>
     <tr><td><tt>GLclampd</tt></td>
-	<td>Same as GLdouble, but in range [0, 1]</td>
-	<td><tt>double</tt></td></tr>
+        <td>Same as GLdouble, but in range [0, 1]</td>
+        <td><tt>double</tt></td></tr>
 </table>
 
 <p> <a href="#issue2.1">Issues</a></p>
@@ -195,13 +195,13 @@
 
 <table cellspacing="1" border="1" class="center-table">
     <tr><td>Link name</td>
-	<td>Runtime name (<tt>DT_SONAME</tt>)</td>
+        <td>Runtime name (<tt>DT_SONAME</tt>)</td>
     </tr>
     <tr><td><tt>libGL.so<tt></td>
-	<td><tt>libGL.so.1<tt></td>
+        <td><tt>libGL.so.1<tt></td>
     </tr>
     <tr><td><tt>libGLU.so<tt></td>
-	<td><tt>libGLU.so.1<tt></td>
+        <td><tt>libGLU.so.1<tt></td>
     </tr>
 </table>
 
@@ -250,7 +250,7 @@
     <tt>libGL</tt> also must export an entry point called </p>
 
     <blockquote>
-	<tt>void (*glXGetProcAddressARB(const GLubyte *))();</tt>
+        <tt>void (*glXGetProcAddressARB(const GLubyte *))();</tt>
     </blockquote>
 
 <p> The <a href="http://www.opengl.org/registry/specs/ARB/get_proc_address.txt">full specification</a>
@@ -367,7 +367,7 @@
     registry at <a href="http://www.opengl.org/registry/">
     http://www.opengl.org/registry/</a>. </p>
 
-<p> The <a href="../api/glext.h">latest version of
+<p> The <a href="../api/GL/glext.h">latest version of
     <tt>glext.h</tt></a> is available in the registry. It is
     automatically generated from the master OpenGL function and
     enumerant registries, and is updated as new extensions are
@@ -378,11 +378,11 @@
     generating glext.h are also available. </p>
 
 <p> Likewise for GLX, a single header defining
-    all GLX extensions, <a href="../api/glxext.h"><tt>glxext.h</tt></a>,
+    all GLX extensions, <a href="../api/GL/glxext.h"><tt>glxext.h</tt></a>,
     is required and is maintained centrally. </p>
 
 <p> The registry also contains a header defining WGL
-    extensions, <a href="../api/wglext.h"><tt>wglext.h</tt></a>, but this is
+    extensions, <a href="../api/GL/wglext.h"><tt>wglext.h</tt></a>, but this is
     only for use on Windows; <tt>wglext.h</tt> is <b>not</b> required by
     or useful for the Linux ABI. </p>
 
@@ -420,8 +420,8 @@
     #define GL_EXT_<i>extensionname</i> 1<br>
     <i> Define enumerants specific to this extension</i><br>
     <i> Typedef function pointers for entry points specifically to
-	this extension, dynamically obtained
-	with glXGetProcAddressARB</i><br>
+        this extension, dynamically obtained
+        with glXGetProcAddressARB</i><br>
     #ifdef GL_GLEXT_PROTOTYPES<br>
     <i> Define prototypes specific to this extension</i><br>
     #endif<br>
diff --git a/README.adoc b/README.adoc
index b810918..9016764 100644
--- a/README.adoc
+++ b/README.adoc
@@ -1,3 +1,23 @@
+// XX to be filled in by the merger of this PR (likely Jon)
+= *Advance Notice of Pending XML Registry Change (posted 2021-01-08)*
+
+[WARNING]
+.Warning
+====
+Shortly after 2021-04-08, we will be removing the old-style group blocks
+(contained within the `groups` section at the top of the XML registry)
+The groups are intended to contain all the possible legal values
+for corresponding function parameters, but it is likely that many
+of the groups are out of date relative to current OpenGL and OpenGL
+ES specifications, and the many extensions to those specifications.
+As of Wednesday 8th January 2020, these group blocks have been
+deprecated in favour of group attributes declared inline with
+the enumerant itself, which are currently the only actively updated
+source for groupings. For more information, see public issue
+link:https://github.com/KhronosGroup/OpenGL-Registry/issues/335[#335].
+====
+
+
 = OpenGL-Registry
 
 
diff --git a/api/GL/glcorearb.h b/api/GL/glcorearb.h
index d625420..ea6acc8 100755
--- a/api/GL/glcorearb.h
+++ b/api/GL/glcorearb.h
@@ -4662,6 +4662,11 @@
 #define GL_SR8_EXT                        0x8FBD
 #endif /* GL_EXT_texture_sRGB_R8 */
 
+#ifndef GL_EXT_texture_sRGB_RG8
+#define GL_EXT_texture_sRGB_RG8 1
+#define GL_SRG8_EXT                       0x8FBE
+#endif /* GL_EXT_texture_sRGB_RG8 */
+
 #ifndef GL_EXT_texture_sRGB_decode
 #define GL_EXT_texture_sRGB_decode 1
 #define GL_TEXTURE_SRGB_DECODE_EXT        0x8A48
@@ -5612,6 +5617,12 @@
 #define GL_SHARED_EDGE_NV                 0xC0
 #endif /* GL_NV_path_rendering_shared_edge */
 
+#ifndef GL_NV_primitive_shading_rate
+#define GL_NV_primitive_shading_rate 1
+#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1
+#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2
+#endif /* GL_NV_primitive_shading_rate */
+
 #ifndef GL_NV_representative_fragment_test
 #define GL_NV_representative_fragment_test 1
 #define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F
diff --git a/api/GL/glext.h b/api/GL/glext.h
index f6499a5..4a4a5ce 100644
--- a/api/GL/glext.h
+++ b/api/GL/glext.h
@@ -32,7 +32,7 @@
 #define GLAPI extern
 #endif
 
-#define GL_GLEXT_VERSION 20201027
+#define GL_GLEXT_VERSION 20210107
 
 #include <KHR/khrplatform.h>
 
@@ -8536,6 +8536,11 @@
 #define GL_SR8_EXT                        0x8FBD
 #endif /* GL_EXT_texture_sRGB_R8 */
 
+#ifndef GL_EXT_texture_sRGB_RG8
+#define GL_EXT_texture_sRGB_RG8 1
+#define GL_SRG8_EXT                       0x8FBE
+#endif /* GL_EXT_texture_sRGB_RG8 */
+
 #ifndef GL_EXT_texture_sRGB_decode
 #define GL_EXT_texture_sRGB_decode 1
 #define GL_TEXTURE_SRGB_DECODE_EXT        0x8A48
@@ -10780,6 +10785,12 @@
 #endif
 #endif /* GL_NV_primitive_restart */
 
+#ifndef GL_NV_primitive_shading_rate
+#define GL_NV_primitive_shading_rate 1
+#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1
+#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2
+#endif /* GL_NV_primitive_shading_rate */
+
 #ifndef GL_NV_query_resource
 #define GL_NV_query_resource 1
 #define GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV 0x9540
diff --git a/api/GLES/gl.h b/api/GLES/gl.h
index e598367..2153011 100644
--- a/api/GLES/gl.h
+++ b/api/GLES/gl.h
@@ -17,7 +17,7 @@
 
 #include <GLES/glplatform.h>
 
-/* Generated on date 20201027 */
+/* Generated on date 20210107 */
 
 /* Generated C header for:
  * API: gles1
diff --git a/api/GLES/glext.h b/api/GLES/glext.h
index 037af10..61a6363 100644
--- a/api/GLES/glext.h
+++ b/api/GLES/glext.h
@@ -19,7 +19,7 @@
 #define GL_APIENTRYP GL_APIENTRY*
 #endif
 
-/* Generated on date 20201027 */
+/* Generated on date 20210107 */
 
 /* Generated C header for:
  * API: gles1
diff --git a/api/GLES2/gl2.h b/api/GLES2/gl2.h
index ef3fe7c..3c5e6d3 100644
--- a/api/GLES2/gl2.h
+++ b/api/GLES2/gl2.h
@@ -25,7 +25,7 @@
 #define GL_GLES_PROTOTYPES 1
 #endif
 
-/* Generated on date 20201027 */
+/* Generated on date 20210107 */
 
 /* Generated C header for:
  * API: gles2
diff --git a/api/GLES2/gl2ext.h b/api/GLES2/gl2ext.h
index 7c0b043..8a66d82 100644
--- a/api/GLES2/gl2ext.h
+++ b/api/GLES2/gl2ext.h
@@ -19,7 +19,7 @@
 #define GL_APIENTRYP GL_APIENTRY*
 #endif
 
-/* Generated on date 20201027 */
+/* Generated on date 20210107 */
 
 /* Generated C header for:
  * API: gles2
@@ -3442,6 +3442,12 @@
 #endif
 #endif /* GL_NV_polygon_mode */
 
+#ifndef GL_NV_primitive_shading_rate
+#define GL_NV_primitive_shading_rate 1
+#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1
+#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2
+#endif /* GL_NV_primitive_shading_rate */
+
 #ifndef GL_NV_read_buffer
 #define GL_NV_read_buffer 1
 #define GL_READ_BUFFER_NV                 0x0C02
@@ -3791,6 +3797,14 @@
 #endif
 #endif /* GL_QCOM_extended_get2 */
 
+#ifndef GL_QCOM_frame_extrapolation
+#define GL_QCOM_frame_extrapolation 1
+typedef void (GL_APIENTRYP PFNGLEXTRAPOLATETEX2DQCOMPROC) (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor);
+#ifdef GL_GLEXT_PROTOTYPES
+GL_APICALL void GL_APIENTRY glExtrapolateTex2DQCOM (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor);
+#endif
+#endif /* GL_QCOM_frame_extrapolation */
+
 #ifndef GL_QCOM_framebuffer_foveated
 #define GL_QCOM_framebuffer_foveated 1
 #define GL_FOVEATION_ENABLE_BIT_QCOM      0x00000001
diff --git a/api/GLES3/gl3.h b/api/GLES3/gl3.h
index 7ad72f9..6bb4d8f 100644
--- a/api/GLES3/gl3.h
+++ b/api/GLES3/gl3.h
@@ -25,7 +25,7 @@
 #define GL_GLES_PROTOTYPES 1
 #endif
 
-/* Generated on date 20201027 */
+/* Generated on date 20210107 */
 
 /* Generated C header for:
  * API: gles2
diff --git a/extensions/ARB/ARB_indirect_parameters.txt b/extensions/ARB/ARB_indirect_parameters.txt
index 0dc05dc..f7024c6 100644
--- a/extensions/ARB/ARB_indirect_parameters.txt
+++ b/extensions/ARB/ARB_indirect_parameters.txt
@@ -36,8 +36,8 @@
 
 Version
 
-    Last Modified Date: 23 October 2017
-    Revision: 4
+    Last Modified Date: 11 November 2020
+    Revision: 5
 
 Number
 
@@ -139,7 +139,7 @@
         void MultiDrawArraysIndirectCountARB(enum mode,
                                              const void *indirect,
                                              intptr drawcount,
-                                             intptr maxdrawcount,
+                                             sizei maxdrawcount,
                                              sizei stride);
 
     behaves similarly to MultiDrawArraysIndirect, except that <drawcount>
@@ -218,3 +218,6 @@
      3    06/20/2013  pdaniell  Modify the <indirect> parameter type to
                                 const void *.
      4    10/23/2017  nhaehnle  Add COMMAND_BARRIER_BIT language.
+     5    11/11/2020  pdaniell  Fix the type of the maxdrawcount parameter
+                                of MultiDrawArraysIndirectCountARB to be
+                                sizei making it consistent in the extension.
diff --git a/extensions/EXT/EXT_disjoint_timer_query.txt b/extensions/EXT/EXT_disjoint_timer_query.txt
index 9c30452..d31619a 100644
--- a/extensions/EXT/EXT_disjoint_timer_query.txt
+++ b/extensions/EXT/EXT_disjoint_timer_query.txt
@@ -33,7 +33,7 @@
 
 Version
 
-    Version 8, December 11, 2019
+    Version 9, November 20, 2020
 
 Number
 
@@ -477,7 +477,7 @@
         
     (2) This example uses QueryCounter.
     
-        GLint queries[1];
+        GLint queries[2];
         GLint available = 0;
         GLint disjointOccurred = 0;
         /* Timer queries can contain more than 32 bits of data, so always
@@ -485,20 +485,24 @@
         GLuint64 timeStart, timeEnd, timeElapsed = 0;
 
         /* Create a query object. */
-        glGenQueries(1, queries);
+        glGenQueries(2, queries);
 
         /* Clear disjoint error */
         glGetIntegerv(GL_GPU_DISJOINT_EXT, &disjointOccurred);
 
+        /* Query current timestamp before drawing */
+        glQueryCounterEXT(queries[0], GL_TIMESTAMP_EXT);
+
         /* Draw full rendertarget of objects */
 
-        glQueryCounterEXT(queries[0], GL_TIMESTAMP_EXT);
+        /* Query current timestamp after drawing */
+        glQueryCounterEXT(queries[1], GL_TIMESTAMP_EXT);
         
         /* Do some other work so you don't stall waiting for available */
         
         /* Wait for the query result to become available */
         while (!available) {
-            glGetQueryObjectiv(queries[0], GL_QUERY_RESULT_AVAILABLE, &available);
+            glGetQueryObjectiv(queries[1], GL_QUERY_RESULT_AVAILABLE, &available);
         }
         
         /* Check for disjoint operation. */
@@ -507,15 +511,18 @@
         /* If a disjoint operation occurred, continue without reading the the
            values */
         if (!disjointOccurred) {
+            /* Get timestamp for when rendertarget started. */
+            glGetQueryObjectui64vEXT(queries[0], GL_QUERY_RESULT, &timeStart);
             /* Get timestamp for when rendertarget finished. */
-            glGetQueryObjectui64vEXT(queries[0], GL_QUERY_RESULT, &timeElapsed);
+            glGetQueryObjectui64vEXT(queries[1], GL_QUERY_RESULT, &timeEnd);
+            /* See how much time the rendering took in nanoseconds. */
+            timeElapsed = timeEnd - timeStart;
             
             /* Do something useful with the time if a disjoint operation did
                not occur.  Note that care should be taken to use all
                significant bits of the result, not just the least significant
                32 bits. */
-                
-            AdjustObjectLODBasedOnDrawTime(i, timeElapsed);
+            AdjustObjectLODBasedOnDrawTime(timeElapsed);
         }
         
     (3) This example demonstrates how to measure the latency between GL
@@ -538,7 +545,7 @@
         glGetIntegerv(GL_GPU_DISJOINT_EXT, &disjointOccurred);
         
         /* Queue a query to find out when the frame finishes on the GL */
-        glQueryCounterEXT(GL_TIMESTAMP_EXT, endFrameQuery);
+        glQueryCounterEXT(endFrameQuery, GL_TIMESTAMP_EXT);
 
         /* Get the current GL time without stalling the GL */
         glGetIntegerv(GL_TIMESTAMP_EXT, &flushTime);
@@ -754,6 +761,8 @@
     will not be set.
 
 Revision History
+    Revision 9, 2020/11/20 (xndcn)
+      - Minor fix of code sample
     Revision 8, 2019/12/11 (Jon Leech)
       - Add actual spec language defining GetInteger64vEXT (github
         OpenGL-Registry issue 326)
diff --git a/extensions/EXT/EXT_texture_sRGB_RG8.txt b/extensions/EXT/EXT_texture_sRGB_RG8.txt
index 35fac02..c973dba 100644
--- a/extensions/EXT/EXT_texture_sRGB_RG8.txt
+++ b/extensions/EXT/EXT_texture_sRGB_RG8.txt
@@ -12,6 +12,7 @@
     Maurice Ribble
     Tobias Hector
     Jan-Harald Fredriksen
+    Dylan Perks
     Contributors to EXT_texture_sRGB_R8, on which this is based.
 
 Contact
@@ -24,18 +25,28 @@
 
 Version
 
-    Last Modified Date: February 05, 2015
-    Revision: 3.0
+    Last Modified Date: December 11, 2020
+    Revision: 4
 
 Number
 
     OpenGL ES Extension #223
+    OpenGL Extension #555
 
 Dependencies
 
-    OpenGL ES 3.0 is required.
+    OpenGL ES 3.0 or OpenGL 1.2 is required.
 
-    This extension is written against the OpenGL ES 3.1 specification.
+    This extension is written against the OpenGL ES 3.1 and
+    OpenGL 4.6 (Core Profile) specifications.
+
+    This extension interacts with ARB_texture_view.
+
+    This extension interacts with EXT_texture_view.
+
+    This extension interacts with OES_texture_view.
+
+    This extension interacts with ARB_direct_state_access.
 
 Overview
 
@@ -49,8 +60,9 @@
 
 New Tokens
 
-    Accepted by the <internalformat> parameters of TexImage2D, TexImage3D,
-    TexStorage2D and TexStorage3D:
+    Accepted by the <internalformat> parameters of TexImage3D, TexImage2D,
+    TexImage1D, TexStorage3D, TexStorage2D, TexStorage1D, TextureStorage3D,
+    TextureStorage2D, and TextureStorage1D:
 
         SRG8_EXT    0x8FBE
 
@@ -78,6 +90,62 @@
         ---------------
         SRG8_EXT
 
+Additions to Chapter 8 of the OpenGL 4.6 (Core Profile) Specification
+(Textures and Samplers)
+
+    The following table entry is added to Table 8.2 (Valid combinations of
+    format, type and sized internalformat):
+
+        Format    Type             External Bytes per Pixel    Internal Format
+        ------    ----             ------------------------    ---------------
+        RG        UNSIGNED_BYTE    2                           SRG8_EXT
+
+    The following table entry is added to Table 8.12 (Correspondence of sized
+    internal color formats to base internal formats):
+
+        Sized Internal Format    Base Internal Format    R    G    B    A    S    CR    TF    Req. rend.    Req. tex.
+        ---------------------    --------------------    -    -    -    -    -    --    --    ----------    ---------
+        SRG8_EXT                 RG                      8    8                         X                   X
+    
+    The following table entry is added to Table 8.22 (Compatible internal
+    formats for TextureView):
+
+        Class              Internal formats
+        ---------------    ----------------
+        VIEW_CLASS_16_BITS  SRG8_EXT
+
+    The following table entry is added to Table 8.24 (sRGB texture internal
+    formats):
+
+        Internal Format
+        ---------------
+        SRG8_EXT
+        
+Dependencies on OpenGL
+        
+    If OpenGL is not supported, ignore all references to 1D textures,
+    including TexImage1D, TexStorage1D, and TextureStorage1D.
+    
+Dependencies on OpenGL 4.5 and ARB_direct_state_access
+
+    If neither OpenGL 4.5 nor ARB_direct_state_access are supported,
+    ignore all references to TextureStorage3D, TextureStorage2D, and
+    TextureStorage1D.
+
+Dependencies on ARB_texture_view
+
+    If ARB_texture_view is supported, add SRG8_EXT to the Internal formats
+    column of the VIEW_CLASS_16_BITS row in Table 3.X.2.
+
+Dependencies on EXT_texture_view
+
+    If EXT_texture_view is supported, add SRG8_EXT to the Internal formats
+    column of the VIEW_CLASS_16_BITS row in Table 8.X.2.
+
+Dependencies on OES_texture_view
+
+    If OES_texture_view is supported, add SRG8_EXT to the Internal formats
+    column of the VIEW_CLASS_16_BITS row in Table 8.X.2.
 
 Errors
 
@@ -92,3 +160,4 @@
     #01    2/5/2015    Tobias Hector      Initial revision.
     #02    2/5/2015    Tobias Hector      Fixed Table 8.13 entry and whitespace issues.
     #03    2/17/2015   Tobias Hector      Fixed Table 8.2 entry to correctly say 2 bytes.
+    #04    12/11/2020  Dylan Perks        Add GL interactions and register for GL
diff --git a/extensions/NV/NV_primitive_shading_rate.txt b/extensions/NV/NV_primitive_shading_rate.txt
new file mode 100644
index 0000000..dc0bb42
--- /dev/null
+++ b/extensions/NV/NV_primitive_shading_rate.txt
@@ -0,0 +1,267 @@
+Name
+
+    NV_primitive_shading_rate
+
+Name Strings
+
+    GL_NV_primitive_shading_rate
+
+Contact
+
+    Pat Brown, NVIDIA Corporation (pbrown 'at' nvidia.com)
+
+Contributors
+
+    Jeff Bolz, NVIDIA
+
+Status
+
+    Shipping
+
+Version
+
+    Last Modified:      October 30, 2020
+    Revision:           1
+
+Number
+
+    OpenGL Extension #554
+    OpenGL ES Extension #332
+
+Dependencies
+
+    This extension is written against the OpenGL 4.6 Specification
+    (Compatibility Profile), dated February 2, 2019.
+
+    OpenGL 4.5 or OpenGL ES 3.2 is required.
+
+    NV_shading_rate_image is required.
+
+    This extension requires support from the OpenGL Shading Language (GLSL)
+    extension "NV_primitive_shading_rate", which can be found at the Khronos
+    Group Github site here:
+
+        https://github.com/KhronosGroup/GLSL
+
+    This extension interacts with NV_mesh_shader.
+
+Overview
+
+    This extension builds on top of the NV_shading_rate_image extension to
+    provide OpenGL API support for using a per-primitive shading rate value to
+    control the computation of the rate used to process each fragment.
+
+    In the NV_shading_rate_image extension, the shading rate for each fragment
+    produced by a primitive is determined by looking up a texel in the bound
+    shading rate image and using that value as an index into a shading rate
+    palette.  That extension provides a separate shading rate image lookup
+    enable and palette for each viewport.  When a primitive is rasterized, the
+    implementation uses the enable and palette associated with the primitive's
+    viewport to determine the shading rate.
+
+    This extension decouples the shading rate image enables and palettes from
+    viewports.  The number of enables/palettes now comes from the
+    implementation-dependent constant SHADING_RATE_IMAGE_PALETTE_COUNT_NV.  When
+    SHADING_RATE_IMAGE_PER_PRIMITIVE_NV (added here) is enabled, the value of
+    the new gl_ShadingRateNV built-in output is used to select an enable and
+    palette to determine the shading rate.  Otherwise, the viewport number for
+    the primitive is used, as in NV_shading_rate_image.
+
+
+New Procedures and Functions
+
+    None.
+
+
+New Tokens
+
+    Accepted by the <cap> parameter of Enable, Disable, and IsEnabled and by the
+    <pname> parameter of GetBooleanv, GetIntegerv, GetInteger64v, GetFloatv,
+    GetDoublev:
+
+        SHADING_RATE_IMAGE_PER_PRIMITIVE_NV             0x95B1
+
+    Accepted by the <pname> parameter of GetBooleanv, GetDoublev,
+    GetIntegerv, and GetFloatv:
+
+        SHADING_RATE_IMAGE_PALETTE_COUNT_NV             0x95B2
+
+
+Modifications to the OpenGL 4.6 Specification (Compatibility Profile)
+
+    Modify Section 14.3.1, Multisampling, as modified by the
+    NV_shading_rate_image extension.
+
+    (modify the introduction of the shading rate image functionality to decouple
+    shading rate image enables and viewports)
+
+    When using a shading rate image (Section 14.4.1), rasterization may produce
+    fragments covering multiple pixels, where each pixel is treated as a sample.
+    If any of the SHADING_RATE_IMAGE_NV enables is enabled, primitives will be
+    processed with multisample rasterization rules, regardless of the
+    MULTISAMPLE enable or the value of SAMPLE_BUFFERS.  ...
+
+
+    Modify Section 14.4.1, Shading Rate Image, as added by the
+    NV_shading_rate_image extension.
+
+    (rework the introduction of the shading rate image functionality to decouple
+    shading rate image enables and viewports)
+
+    Applications can specify the use of a shading rate that varies by (x,y)
+    location using a _shading rate image_.  For each primitive, the shading rate
+    image is enabled or disabled by selecting a single enable in an array of
+    enables whose size is given by the implementation-dependent constant
+    SHADING_RATE_IMAGE_PALETTE_COUNT_NV.  Use of a shading rate image is enabled
+    or disabled globally by using Enable or Disable with target
+    SHADING_RATE_IMAGE_NV.  A single shading rate image enable can be modified
+    by calling Enablei or Disablei with the constant SHADING_RATE_IMAGE_NV and
+    the index of the selected enable.  The shading rate image may only be used
+    with a framebuffer object.  When rendering to the default framebuffer, the
+    shading rate image enables are ignored and operations in this section are
+    disabled.  In the initial state, all shading rate image enables are
+    disabled.
+
+    The method used to select a single shading rate image enable used to process
+    each primitive is controlled by calling Enable or Disable with the target
+    SHADING_RATE_IMAGE_PER_PRIMITIVE_NV.  When enabled, a shading rate enable
+    used for a primitive is selected using an index taken from the value of the
+    built-in output gl_ShadingRateNV for the primitive's provoking vertex.  If
+    the value of gl_ShadingRateNV is negative or greater than or equal to the
+    number of shading rate enables, the shading rate used for a primitive is
+    undefined.  When SHADING_RATE_IMAGE_PER_PRIMITIVE_NV is disabled, a shading
+    rate enable is selected using the index of the viewport used for processing
+    the primitive.  In the initial state, SHADING_RATE_IMAGE_PER_PRIMITIVE_NV is
+    disabled.
+
+
+    (rework the introduction of the shading rate image functionality to decouple
+    shading rate image palettes and viewports)
+
+    A shading rate index is mapped to a _base shading rate_ using a lookup table
+    called the shading rate image palette.  There is a separate palette
+    associated with each shading rate image enable.  As with the shading rate
+    image enables, a single palette is selected for a primitive according to the
+    enable SHADING_RATE_IMAGE_PER_PRIMITIVE_NV.  The number of palettes and the
+    number of entries in each palette are given by the implementation-dependent
+    constants SHADING_RATE_IMAGE_PALETTE_COUNT_NV and
+    SHADING_RATE_IMAGE_PALETTE_SIZE_NV, respectively.  The base shading rate for
+    an (x,y) coordinate with a shading rate index of <i> will be given by entry
+    <i> of the selected palette.  If the shading rate index is greater than or
+    equal to the palette size, the results of the palette lookup are undefined.
+
+
+    (rework the introduction of ShadingRateImagePaletteNV to decouple shading
+    rate image palettes and viewports)
+
+      Shading rate image palettes are updated using the command
+
+        void ShadingRateImagePaletteNV(uint viewport, uint first, sizei count,
+                                       const enum *rates);
+
+      <viewport> specifies the number of the palette that should be updated.
+      [[ Note:  The formal parameter name <viewport> is a remnant of the
+      original NV_shading_rate_image extension, where palettes were tightly
+      coupled with viewports. ]]  <rates> is an array ...
+
+
+    (modify the discussion of ShadingRateImagePaletteNV errors to decouple
+    shading rate image palettes and viewports)
+
+        INVALID_VALUE is generated if <viewport> is greater than or equal to
+        SHADING_RATE_IMAGE_PALETTE_COUNT_NV.
+
+        INVALID_VALUE is generated if <first> plus <count> is greater than
+        SHADING_RATE_IMAGE_PALETTE_SIZE_NV.
+
+
+    (modify the discussion of GetShadingRateImagePaletteNV to decouple shading
+    rate image palettes and viewports)
+
+      Individual entries in the shading rate palette can be queried using the
+      command:
+
+        void GetShadingRateImagePaletteNV(uint viewport, uint entry,
+                                          enum *rate);
+
+      where <viewport> specifies the number of the palette to query and...
+      <entry> specifies the palette entry number.  [[ Note:  The formal
+      parameter name <viewport> is a remnant of the original
+      NV_shading_rate_image extension, where palettes were tightly coupled
+      with viewports. ]]  A single enum from Table X.1 is returned in <rate>.
+
+      Errors
+
+        INVALID_VALUE is generated if <viewport> is greater than or equal to
+        SHADING_RATE_IMAGE_PALETTE_COUNT_NV.
+
+        INVALID_VALUE is generated if <first> plus <count> is greater than
+        SHADING_RATE_IMAGE_PALETTE_SIZE_NV.
+
+
+    Modify Section 14.9.3, Multisample Fragment Operations, as edited by
+    NV_shading_rate_image.
+
+    (modify the discussion of the shading rate image multisample functionality
+    to decouple shading rate image enables and viewports)
+
+    ... This step is skipped if MULTISAMPLE is disabled or if the value of
+    SAMPLE_BUFFERS is not one, unless one or more of the SHADING_RATE_IMAGE_NV
+    enables are enabled.
+
+
+Dependencies on NV_mesh_shader
+
+    When NV_mesh_shader is supported, the "NV_primitive_shading_rate" GLSL
+    extension allows multi-view mesh shaders to write separate per-primitive
+    shading rates for each view using the built-in gl_ShadingRatePerViewNV[].
+    When gl_ShadingRatePerViewNV[] is used with
+    SHADING_RATE_IMAGE_PER_PRIMITIVE_NV enabled, a separate shading rate image
+    enable and palette will be used for each view.
+
+
+Additions to the AGL/GLX/WGL Specifications
+
+    None
+
+Errors
+
+    See the "Errors" sections for individual commands above.
+
+New State
+
+    Get Value                   Get Command        Type    Initial Value    Description                 Sec.    Attribute
+    ---------                   ---------------    ----    -------------    -----------                 ----    ---------
+    SHADING_RATE_IMAGE_         IsEnabled           B      FALSE            Use per-primitive shading   14.4.1  enable
+      PER_PRIMITIVE_NV                                                      rate to select shading
+                                                                            rate images/palettes
+
+New Implementation Dependent State
+
+                                                    Minimum
+    Get Value                Type  Get Command      Value   Description                   Sec.
+    ---------                ----- ---------------  ------- ------------------------      ------
+    SHADING_RATE_IMAGE_      Z+    GetIntegerv      16      Number of shading rate image  14.4.1
+      PALETTE_COUNT_NV                                      enables/palettes supported
+
+Issues
+
+    (1) How should we name this extension?
+
+      RESOLVED:  We are calling this extension "NV_primitive_shading_rate"
+      because it adds a new per-primitive shading rate to the variable-rate
+      shading functionality added by NV_shading_rate_image.
+
+    (2) Do we need to add queries like LAYER_PROVOKING_VERTEX and
+        VIEWPORT_INDEX_PROVOKING_VERTEX to determine the vertex used to obtain
+        the per-primitive shading rate for each primitive?
+
+      RESOLVED:  No -- we will always use the provoking vertex.  In the event
+      that this extension is standardized in the future with behavior that
+      diverges between implementations, such a query could be added as part of
+      that effort.
+
+Revision History
+
+    Revision 1 (pbrown)
+    - Internal revisions.
diff --git a/extensions/QCOM/QCOM_frame_extrapolation.txt b/extensions/QCOM/QCOM_frame_extrapolation.txt
new file mode 100644
index 0000000..b185217
--- /dev/null
+++ b/extensions/QCOM/QCOM_frame_extrapolation.txt
@@ -0,0 +1,133 @@
+Name
+
+    QCOM_frame_extrapolation
+
+Name Strings
+
+    GL_QCOM_frame_extrapolation
+
+Contributors
+
+    Sam Holmes
+    Jonathan Wicks
+
+Contacts
+
+    Jeff Leger  <jleger@qti.qualcomm.com>
+
+Status
+
+    Complete
+
+Version
+
+    Last Modified Date: November 30, 2020
+    Revision: 1.0
+
+Number
+
+    OpenGL ES Extension #333
+
+Dependencies
+
+    Requires OpenGL ES 2.0
+
+    This extension is written based on the wording of the OpenGL ES 3.2
+    Specification.
+
+Overview
+
+    Frame extrapolation is the process of producing a new, future frame
+    based on the contents of two previously rendered frames. It may be
+    used to produce high frame rate display updates without incurring the
+    full cost of traditional rendering at the higher framerate.
+
+    This extension adds support for frame extrapolation in OpenGL ES by
+    adding a function which takes three textures. The first two are used
+    in sequence as the source frames, from which the extrapolated frame
+    is derived. The extrapolated frame is stored in the third texture.
+
+New Procedures and Functions
+
+    void ExtrapolateTex2DQCOM(uint  src1,
+                              uint  src2,
+                              uint  output,
+                              float scaleFactor);
+
+Additions to Chapter 8 of the OpenGL ES 3.2 Specification
+
+    8.24 Frame Extrapolation
+
+    The command
+
+    void ExtrapolateTex2DQCOM(uint src1, uint src2,
+    uint output, float scaleFactor);
+
+    is used to produce an extrapolated frame based on the contents of
+    two previous frames. <src1> and <src2> specify the two previously
+    rendered frames, in order, which will be used as the basis of the
+    extrapolation. The three textures provided must have the same
+    dimensions and format. While <src1>, <src2> and <output> can
+    have multiple levels the implementation only reads from or writes
+    to the base level.
+
+    The texture contents provided in the two source textures represent
+    frame contents at two points in time. <scaleFactor> defines the amount
+    of time into the future the extrapolation is to target, based on the
+    delta in time between the two source textures.
+
+    For example, a value of 1.0 for <scaleFactor> will produce an
+    extrapolated frame that is as far into the future beyond 'src2'
+    as the time delta between 'src1' and 'src2'. A value of 0.5
+    for 'scaleFactor' targets a time that is a half step in the
+    future (compared to the full step delta between the two source frames).
+
+    Specifying an accurate scale factor is important for producing smooth
+    animation. An application that is displaying to the user alternating
+    rendered and extrapolated frames would use a scale factor of 0.5 so
+    that the extrapolated frame has contents which fall halfways between the
+    last rendered frame and the next rendered frame to come in the future.
+    Negative <scaleFactor> values produce frames targeting times before
+    that represented by the contents of <src2>.
+
+    Table 8.28: Compatible formats for <src1>, <src2> and <output>
+
+        Internal Format
+        ---------------
+        RGBA8
+        RGB8
+        R8
+        RGBA16F
+        RGB16F
+        RGBA32F
+        RGB32F
+
+Errors
+
+    INVALID_VALUE is generated if scaleFactor is equal to 0.
+
+    INVALID_OPERATION is generated if the texture formats of src1, src2 and
+    output are not identical.
+
+    INVALID_OPERATION is generated if the texture dimensions of src1, src2
+    and output are not identical.
+
+    INVALID_OPERATION is generated if the texture formats of src1, src2 and
+    output are not one of the formats listed in table 8.28.
+
+Issues
+
+    (1) Why is the extrapolation quality not defined?
+
+    Resolved: The intention of this specification is to extrapolate a new
+    texture based on the two input textures. Implementations should aim to
+    produce the highest quality extrapolation but since the results are
+    extrapolations there are no prescribed steps for how the textures must
+    be generated.
+
+Revision History
+
+      Rev.  Date        Author    Changes
+      ----  ----------  --------  -----------------------------------------
+      0.1   11/21/2019  Sam       Initial draft
+      1.0   11/30/2020  Tate      Official extension number
diff --git a/extensions/SGI/GLX_SGI_video_sync.txt b/extensions/SGI/GLX_SGI_video_sync.txt
index 4042391..9072014 100644
--- a/extensions/SGI/GLX_SGI_video_sync.txt
+++ b/extensions/SGI/GLX_SGI_video_sync.txt
@@ -6,10 +6,6 @@
 
     GLX_SGI_video_sync
 
-Version
-
-    $Date: 1995/09/15 01:22:58 $ $Revision: 1.8 $
-
 Number
 
     41
@@ -39,6 +35,13 @@
 
     The counter is an unsigned 32-bit integer.
 
+Interaction with {ARB,OES}_framebuffer_object
+
+    If the current context does not have a default framebuffer there may be
+    no "frame rate" to refer to, since there is no Window or GLXWindow to map
+    to an output device. If the client API context is in this state, all
+    interaction with this extension is undefined.
+
 Issues
 
     Should glXWaitVideoSyncSGI return GLX_BAD_VALUE if <remainder> is
@@ -124,3 +127,10 @@
 New Implementation Dependent State
 
     None
+
+Version
+
+    $Date: 1995/09/15 01:22:58 $ $Revision: 1.8 $
+
+    Khronos revision 2:
+    - Note ARB_framebuffer_object interaction (ajax)
diff --git a/extensions/esext.php b/extensions/esext.php
index 3d80fe4..7e56ead 100644
--- a/extensions/esext.php
+++ b/extensions/esext.php
@@ -689,4 +689,8 @@
 </li>
 <li value=331><a href="extensions/QCOM/QCOM_texture_foveated2.txt">GL_QCOM_texture_foveated2</a>
 </li>
+<li value=332><a href="extensions/NV/NV_primitive_shading_rate.txt">GL_NV_primitive_shading_rate</a>
+</li>
+<li value=333><a href="extensions/QCOM/QCOM_frame_extrapolation.txt">QCOM_frame_extrapolation</a>
+</li>
 </ol>
diff --git a/extensions/glext.php b/extensions/glext.php
index 89618c1..1e2c0f1 100644
--- a/extensions/glext.php
+++ b/extensions/glext.php
@@ -1045,4 +1045,6 @@
 </li>
 <li value=553><a href="extensions/EXT/GLX_EXT_no_config_context.txt">GLX_EXT_no_config_context</a>
 </li>
+<li value=554><a href="extensions/NV/NV_primitive_shading_rate.txt">GL_NV_primitive_shading_rate</a>
+</li>
 </ol>
diff --git a/extensions/registry.py b/extensions/registry.py
index 86d395e..fd7502f 100644
--- a/extensions/registry.py
+++ b/extensions/registry.py
@@ -2560,6 +2560,7 @@
         'url' : 'extensions/EXT/EXT_texture_sRGB_R8.txt',
     },
     'GL_EXT_texture_sRGB_RG8' : {
+        'number' : 555,
         'esnumber' : 223,
         'flags' : { 'public' },
         'url' : 'extensions/EXT/EXT_texture_sRGB_RG8.txt',
@@ -3660,6 +3661,13 @@
         'supporters' : { 'NVIDIA' },
         'url' : 'extensions/NV/NV_primitive_restart.txt',
     },
+    'GL_NV_primitive_shading_rate' : {
+        'number' : 554,
+        'esnumber' : 332,
+        'flags' : { 'public' },
+        'supporters' : { 'NVIDIA' },
+        'url' : 'extensions/NV/NV_primitive_shading_rate.txt',
+    },
     'GL_NV_query_resource' : {
         'number' : 511,
         'flags' : { 'public' },
@@ -4528,6 +4536,11 @@
         'flags' : { 'public' },
         'url' : 'extensions/QCOM/QCOM_motion_estimation.txt',
     },
+    'QCOM_frame_extrapolation' : {
+        'esnumber' : 333,
+        'flags' : { 'public' },
+        'url' : 'extensions/QCOM/QCOM_frame_extrapolation.txt',
+    },
     'GL_QCOM_performance_monitor_global_mode' : {
         'esnumber' : 56,
         'flags' : { 'public' },
diff --git a/specs/es/3.2/katex/README.md b/specs/es/3.2/katex/README.md
deleted file mode 100644
index 5f8caa8..0000000
--- a/specs/es/3.2/katex/README.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# [<img src="https://khan.github.io/KaTeX/katex-logo.svg" width="130" alt="KaTeX">](https://khan.github.io/KaTeX/) [![Build Status](https://travis-ci.org/Khan/KaTeX.svg?branch=master)](https://travis-ci.org/Khan/KaTeX)
-
-[![Join the chat at https://gitter.im/Khan/KaTeX](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Khan/KaTeX?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-
-KaTeX is a fast, easy-to-use JavaScript library for TeX math rendering on the web.
-
- * **Fast:** KaTeX renders its math synchronously and doesn't need to reflow the page. See how it compares to a competitor in [this speed test](http://jsperf.com/katex-vs-mathjax/).
- * **Print quality:** KaTeX’s layout is based on Donald Knuth’s TeX, the gold standard for math typesetting.
- * **Self contained:** KaTeX has no dependencies and can easily be bundled with your website resources.
- * **Server side rendering:** KaTeX produces the same output regardless of browser or environment, so you can pre-render expressions using Node.js and send them as plain HTML.
-
-KaTeX supports all major browsers, including Chrome, Safari, Firefox, Opera, and IE 8 - IE 11.  A list of supported  commands can be on the [wiki](https://github.com/Khan/KaTeX/wiki/Function-Support-in-KaTeX).
-
-## Usage
-
-You can [download KaTeX](https://github.com/khan/katex/releases) and host it on your server or include the `katex.min.js` and `katex.min.css` files on your page directly from a CDN:
-
-```html
-<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.6.0/katex.min.css">
-<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.6.0/katex.min.js"></script>
-```
-
-#### In-browser rendering
-
-Call `katex.render` with a TeX expression and a DOM element to render into:
-
-```js
-katex.render("c = \\pm\\sqrt{a^2 + b^2}", element);
-```
-
-If KaTeX can't parse the expression, it throws a `katex.ParseError` error.
-
-#### Server side rendering or rendering to a string
-
-To generate HTML on the server or to generate an HTML string of the rendered math, you can use `katex.renderToString`:
-
-```js
-var html = katex.renderToString("c = \\pm\\sqrt{a^2 + b^2}");
-// '<span class="katex">...</span>'
-```
-
-Make sure to include the CSS and font files, but there is no need to include the JavaScript. Like `render`, `renderToString` throws if it can't parse the expression.
-
-#### Rendering options
-
-You can provide an object of options as the last argument to `katex.render` and `katex.renderToString`. Available options are:
-
-- `displayMode`: `boolean`. If `true` the math will be rendered in display mode, which will put the math in display style (so `\int` and `\sum` are large, for example), and will center the math on the page on its own line. If `false` the math will be rendered in inline mode. (default: `false`)
-- `throwOnError`: `boolean`. If `true`, KaTeX will throw a `ParseError` when it encounters an unsupported command. If `false`, KaTeX will render the unsupported command as text in the color given by `errorColor`. (default: `true`)
-- `errorColor`: `string`. A color string given in the format `"#XXX"` or `"#XXXXXX"`. This option determines the color which unsupported commands are rendered in. (default: `#cc0000`)
-
-For example:
-
-```js
-katex.render("c = \\pm\\sqrt{a^2 + b^2}", element, { displayMode: true });
-```
-
-#### Automatic rendering of math on a page
-
-Math on the page can be automatically rendered using the auto-render extension. See [the Auto-render README](contrib/auto-render/README.md) for more information.
-
-## Contributing
-
-See [CONTRIBUTING.md](CONTRIBUTING.md)
-
-## License
-
-KaTeX is licensed under the [MIT License](http://opensource.org/licenses/MIT).
diff --git a/specs/es/3.2/katex/katex.css b/specs/es/3.2/katex/katex.css
deleted file mode 100644
index ef0aa62..0000000
--- a/specs/es/3.2/katex/katex.css
+++ /dev/null
@@ -1,976 +0,0 @@
-@font-face {
-  font-family: 'KaTeX_AMS';
-  src: url('fonts/KaTeX_AMS-Regular.eot');
-  src: url('fonts/KaTeX_AMS-Regular.eot#iefix') format('embedded-opentype'), 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: normal;
-  font-style: normal;
-}
-@font-face {
-  font-family: 'KaTeX_Caligraphic';
-  src: url('fonts/KaTeX_Caligraphic-Bold.eot');
-  src: url('fonts/KaTeX_Caligraphic-Bold.eot#iefix') format('embedded-opentype'), 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: bold;
-  font-style: normal;
-}
-@font-face {
-  font-family: 'KaTeX_Caligraphic';
-  src: url('fonts/KaTeX_Caligraphic-Regular.eot');
-  src: url('fonts/KaTeX_Caligraphic-Regular.eot#iefix') format('embedded-opentype'), 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: normal;
-  font-style: normal;
-}
-@font-face {
-  font-family: 'KaTeX_Fraktur';
-  src: url('fonts/KaTeX_Fraktur-Bold.eot');
-  src: url('fonts/KaTeX_Fraktur-Bold.eot#iefix') format('embedded-opentype'), 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: bold;
-  font-style: normal;
-}
-@font-face {
-  font-family: 'KaTeX_Fraktur';
-  src: url('fonts/KaTeX_Fraktur-Regular.eot');
-  src: url('fonts/KaTeX_Fraktur-Regular.eot#iefix') format('embedded-opentype'), 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: normal;
-  font-style: normal;
-}
-@font-face {
-  font-family: 'KaTeX_Main';
-  src: url('fonts/KaTeX_Main-Bold.eot');
-  src: url('fonts/KaTeX_Main-Bold.eot#iefix') format('embedded-opentype'), 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: bold;
-  font-style: normal;
-}
-@font-face {
-  font-family: 'KaTeX_Main';
-  src: url('fonts/KaTeX_Main-Italic.eot');
-  src: url('fonts/KaTeX_Main-Italic.eot#iefix') format('embedded-opentype'), 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: normal;
-  font-style: italic;
-}
-@font-face {
-  font-family: 'KaTeX_Main';
-  src: url('fonts/KaTeX_Main-Regular.eot');
-  src: url('fonts/KaTeX_Main-Regular.eot#iefix') format('embedded-opentype'), 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: normal;
-  font-style: normal;
-}
-@font-face {
-  font-family: 'KaTeX_Math';
-  src: url('fonts/KaTeX_Math-Italic.eot');
-  src: url('fonts/KaTeX_Math-Italic.eot#iefix') format('embedded-opentype'), 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: normal;
-  font-style: italic;
-}
-@font-face {
-  font-family: 'KaTeX_SansSerif';
-  src: url('fonts/KaTeX_SansSerif-Regular.eot');
-  src: url('fonts/KaTeX_SansSerif-Regular.eot#iefix') format('embedded-opentype'), 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: normal;
-  font-style: normal;
-}
-@font-face {
-  font-family: 'KaTeX_Script';
-  src: url('fonts/KaTeX_Script-Regular.eot');
-  src: url('fonts/KaTeX_Script-Regular.eot#iefix') format('embedded-opentype'), 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: normal;
-  font-style: normal;
-}
-@font-face {
-  font-family: 'KaTeX_Size1';
-  src: url('fonts/KaTeX_Size1-Regular.eot');
-  src: url('fonts/KaTeX_Size1-Regular.eot#iefix') format('embedded-opentype'), 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: normal;
-  font-style: normal;
-}
-@font-face {
-  font-family: 'KaTeX_Size2';
-  src: url('fonts/KaTeX_Size2-Regular.eot');
-  src: url('fonts/KaTeX_Size2-Regular.eot#iefix') format('embedded-opentype'), 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: normal;
-  font-style: normal;
-}
-@font-face {
-  font-family: 'KaTeX_Size3';
-  src: url('fonts/KaTeX_Size3-Regular.eot');
-  src: url('fonts/KaTeX_Size3-Regular.eot#iefix') format('embedded-opentype'), 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: normal;
-  font-style: normal;
-}
-@font-face {
-  font-family: 'KaTeX_Size4';
-  src: url('fonts/KaTeX_Size4-Regular.eot');
-  src: url('fonts/KaTeX_Size4-Regular.eot#iefix') format('embedded-opentype'), 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: normal;
-  font-style: normal;
-}
-@font-face {
-  font-family: 'KaTeX_Typewriter';
-  src: url('fonts/KaTeX_Typewriter-Regular.eot');
-  src: url('fonts/KaTeX_Typewriter-Regular.eot#iefix') format('embedded-opentype'), 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: normal;
-  font-style: normal;
-}
-.katex-display {
-  display: block;
-  margin: 1em 0;
-  text-align: center;
-}
-.katex-display > .katex {
-  display: inline-block;
-  text-align: initial;
-}
-.katex {
-  font: normal 1.21em KaTeX_Main, Times New Roman, serif;
-  line-height: 1.2;
-  white-space: nowrap;
-  text-indent: 0;
-}
-.katex .katex-html {
-  display: inline-block;
-}
-.katex .katex-mathml {
-  position: absolute;
-  clip: rect(1px, 1px, 1px, 1px);
-  padding: 0;
-  border: 0;
-  height: 1px;
-  width: 1px;
-  overflow: hidden;
-}
-.katex .base {
-  display: inline-block;
-}
-.katex .strut {
-  display: inline-block;
-}
-.katex .mathrm {
-  font-style: normal;
-}
-.katex .textit {
-  font-style: italic;
-}
-.katex .mathit {
-  font-family: KaTeX_Math;
-  font-style: italic;
-}
-.katex .mathbf {
-  font-family: KaTeX_Main;
-  font-weight: bold;
-}
-.katex .amsrm {
-  font-family: KaTeX_AMS;
-}
-.katex .mathbb {
-  font-family: KaTeX_AMS;
-}
-.katex .mathcal {
-  font-family: KaTeX_Caligraphic;
-}
-.katex .mathfrak {
-  font-family: KaTeX_Fraktur;
-}
-.katex .mathtt {
-  font-family: KaTeX_Typewriter;
-}
-.katex .mathscr {
-  font-family: KaTeX_Script;
-}
-.katex .mathsf {
-  font-family: KaTeX_SansSerif;
-}
-.katex .mainit {
-  font-family: KaTeX_Main;
-  font-style: italic;
-}
-.katex .mord + .mop {
-  margin-left: 0.16667em;
-}
-.katex .mord + .mbin {
-  margin-left: 0.22222em;
-}
-.katex .mord + .mrel {
-  margin-left: 0.27778em;
-}
-.katex .mord + .minner {
-  margin-left: 0.16667em;
-}
-.katex .mop + .mord {
-  margin-left: 0.16667em;
-}
-.katex .mop + .mop {
-  margin-left: 0.16667em;
-}
-.katex .mop + .mrel {
-  margin-left: 0.27778em;
-}
-.katex .mop + .minner {
-  margin-left: 0.16667em;
-}
-.katex .mbin + .mord {
-  margin-left: 0.22222em;
-}
-.katex .mbin + .mop {
-  margin-left: 0.22222em;
-}
-.katex .mbin + .mopen {
-  margin-left: 0.22222em;
-}
-.katex .mbin + .minner {
-  margin-left: 0.22222em;
-}
-.katex .mrel + .mord {
-  margin-left: 0.27778em;
-}
-.katex .mrel + .mop {
-  margin-left: 0.27778em;
-}
-.katex .mrel + .mopen {
-  margin-left: 0.27778em;
-}
-.katex .mrel + .minner {
-  margin-left: 0.27778em;
-}
-.katex .mclose + .mop {
-  margin-left: 0.16667em;
-}
-.katex .mclose + .mbin {
-  margin-left: 0.22222em;
-}
-.katex .mclose + .mrel {
-  margin-left: 0.27778em;
-}
-.katex .mclose + .minner {
-  margin-left: 0.16667em;
-}
-.katex .mpunct + .mord {
-  margin-left: 0.16667em;
-}
-.katex .mpunct + .mop {
-  margin-left: 0.16667em;
-}
-.katex .mpunct + .mrel {
-  margin-left: 0.16667em;
-}
-.katex .mpunct + .mopen {
-  margin-left: 0.16667em;
-}
-.katex .mpunct + .mclose {
-  margin-left: 0.16667em;
-}
-.katex .mpunct + .mpunct {
-  margin-left: 0.16667em;
-}
-.katex .mpunct + .minner {
-  margin-left: 0.16667em;
-}
-.katex .minner + .mord {
-  margin-left: 0.16667em;
-}
-.katex .minner + .mop {
-  margin-left: 0.16667em;
-}
-.katex .minner + .mbin {
-  margin-left: 0.22222em;
-}
-.katex .minner + .mrel {
-  margin-left: 0.27778em;
-}
-.katex .minner + .mopen {
-  margin-left: 0.16667em;
-}
-.katex .minner + .mpunct {
-  margin-left: 0.16667em;
-}
-.katex .minner + .minner {
-  margin-left: 0.16667em;
-}
-.katex .mord.mtight {
-  margin-left: 0;
-}
-.katex .mop.mtight {
-  margin-left: 0;
-}
-.katex .mbin.mtight {
-  margin-left: 0;
-}
-.katex .mrel.mtight {
-  margin-left: 0;
-}
-.katex .mopen.mtight {
-  margin-left: 0;
-}
-.katex .mclose.mtight {
-  margin-left: 0;
-}
-.katex .mpunct.mtight {
-  margin-left: 0;
-}
-.katex .minner.mtight {
-  margin-left: 0;
-}
-.katex .mord + .mop.mtight {
-  margin-left: 0.16667em;
-}
-.katex .mop + .mord.mtight {
-  margin-left: 0.16667em;
-}
-.katex .mop + .mop.mtight {
-  margin-left: 0.16667em;
-}
-.katex .mclose + .mop.mtight {
-  margin-left: 0.16667em;
-}
-.katex .minner + .mop.mtight {
-  margin-left: 0.16667em;
-}
-.katex .reset-textstyle.textstyle {
-  font-size: 1em;
-}
-.katex .reset-textstyle.scriptstyle {
-  font-size: 0.7em;
-}
-.katex .reset-textstyle.scriptscriptstyle {
-  font-size: 0.5em;
-}
-.katex .reset-scriptstyle.textstyle {
-  font-size: 1.42857em;
-}
-.katex .reset-scriptstyle.scriptstyle {
-  font-size: 1em;
-}
-.katex .reset-scriptstyle.scriptscriptstyle {
-  font-size: 0.71429em;
-}
-.katex .reset-scriptscriptstyle.textstyle {
-  font-size: 2em;
-}
-.katex .reset-scriptscriptstyle.scriptstyle {
-  font-size: 1.4em;
-}
-.katex .reset-scriptscriptstyle.scriptscriptstyle {
-  font-size: 1em;
-}
-.katex .style-wrap {
-  position: relative;
-}
-.katex .vlist {
-  display: inline-block;
-}
-.katex .vlist > span {
-  display: block;
-  height: 0;
-  position: relative;
-}
-.katex .vlist > span > span {
-  display: inline-block;
-}
-.katex .vlist .baseline-fix {
-  display: inline-table;
-  table-layout: fixed;
-}
-.katex .msupsub {
-  text-align: left;
-}
-.katex .mfrac > span > span {
-  text-align: center;
-}
-.katex .mfrac .frac-line {
-  width: 100%;
-}
-.katex .mfrac .frac-line:before {
-  border-bottom-style: solid;
-  border-bottom-width: 1px;
-  content: "";
-  display: block;
-}
-.katex .mfrac .frac-line:after {
-  border-bottom-style: solid;
-  border-bottom-width: 0.04em;
-  content: "";
-  display: block;
-  margin-top: -1px;
-}
-.katex .mspace {
-  display: inline-block;
-}
-.katex .mspace.negativethinspace {
-  margin-left: -0.16667em;
-}
-.katex .mspace.thinspace {
-  width: 0.16667em;
-}
-.katex .mspace.negativemediumspace {
-  margin-left: -0.22222em;
-}
-.katex .mspace.mediumspace {
-  width: 0.22222em;
-}
-.katex .mspace.thickspace {
-  width: 0.27778em;
-}
-.katex .mspace.sixmuspace {
-  width: 0.333333em;
-}
-.katex .mspace.eightmuspace {
-  width: 0.444444em;
-}
-.katex .mspace.enspace {
-  width: 0.5em;
-}
-.katex .mspace.twelvemuspace {
-  width: 0.666667em;
-}
-.katex .mspace.quad {
-  width: 1em;
-}
-.katex .mspace.qquad {
-  width: 2em;
-}
-.katex .llap,
-.katex .rlap {
-  width: 0;
-  position: relative;
-}
-.katex .llap > .inner,
-.katex .rlap > .inner {
-  position: absolute;
-}
-.katex .llap > .fix,
-.katex .rlap > .fix {
-  display: inline-block;
-}
-.katex .llap > .inner {
-  right: 0;
-}
-.katex .rlap > .inner {
-  left: 0;
-}
-.katex .katex-logo .a {
-  font-size: 0.75em;
-  margin-left: -0.32em;
-  position: relative;
-  top: -0.2em;
-}
-.katex .katex-logo .t {
-  margin-left: -0.23em;
-}
-.katex .katex-logo .e {
-  margin-left: -0.1667em;
-  position: relative;
-  top: 0.2155em;
-}
-.katex .katex-logo .x {
-  margin-left: -0.125em;
-}
-.katex .rule {
-  display: inline-block;
-  border: solid 0;
-  position: relative;
-}
-.katex .overline .overline-line,
-.katex .underline .underline-line {
-  width: 100%;
-}
-.katex .overline .overline-line:before,
-.katex .underline .underline-line:before {
-  border-bottom-style: solid;
-  border-bottom-width: 1px;
-  content: "";
-  display: block;
-}
-.katex .overline .overline-line:after,
-.katex .underline .underline-line:after {
-  border-bottom-style: solid;
-  border-bottom-width: 0.04em;
-  content: "";
-  display: block;
-  margin-top: -1px;
-}
-.katex .sqrt > .sqrt-sign {
-  position: relative;
-}
-.katex .sqrt .sqrt-line {
-  width: 100%;
-}
-.katex .sqrt .sqrt-line:before {
-  border-bottom-style: solid;
-  border-bottom-width: 1px;
-  content: "";
-  display: block;
-}
-.katex .sqrt .sqrt-line:after {
-  border-bottom-style: solid;
-  border-bottom-width: 0.04em;
-  content: "";
-  display: block;
-  margin-top: -1px;
-}
-.katex .sqrt > .root {
-  margin-left: 0.27777778em;
-  margin-right: -0.55555556em;
-}
-.katex .sizing,
-.katex .fontsize-ensurer {
-  display: inline-block;
-}
-.katex .sizing.reset-size1.size1,
-.katex .fontsize-ensurer.reset-size1.size1 {
-  font-size: 1em;
-}
-.katex .sizing.reset-size1.size2,
-.katex .fontsize-ensurer.reset-size1.size2 {
-  font-size: 1.4em;
-}
-.katex .sizing.reset-size1.size3,
-.katex .fontsize-ensurer.reset-size1.size3 {
-  font-size: 1.6em;
-}
-.katex .sizing.reset-size1.size4,
-.katex .fontsize-ensurer.reset-size1.size4 {
-  font-size: 1.8em;
-}
-.katex .sizing.reset-size1.size5,
-.katex .fontsize-ensurer.reset-size1.size5 {
-  font-size: 2em;
-}
-.katex .sizing.reset-size1.size6,
-.katex .fontsize-ensurer.reset-size1.size6 {
-  font-size: 2.4em;
-}
-.katex .sizing.reset-size1.size7,
-.katex .fontsize-ensurer.reset-size1.size7 {
-  font-size: 2.88em;
-}
-.katex .sizing.reset-size1.size8,
-.katex .fontsize-ensurer.reset-size1.size8 {
-  font-size: 3.46em;
-}
-.katex .sizing.reset-size1.size9,
-.katex .fontsize-ensurer.reset-size1.size9 {
-  font-size: 4.14em;
-}
-.katex .sizing.reset-size1.size10,
-.katex .fontsize-ensurer.reset-size1.size10 {
-  font-size: 4.98em;
-}
-.katex .sizing.reset-size2.size1,
-.katex .fontsize-ensurer.reset-size2.size1 {
-  font-size: 0.71428571em;
-}
-.katex .sizing.reset-size2.size2,
-.katex .fontsize-ensurer.reset-size2.size2 {
-  font-size: 1em;
-}
-.katex .sizing.reset-size2.size3,
-.katex .fontsize-ensurer.reset-size2.size3 {
-  font-size: 1.14285714em;
-}
-.katex .sizing.reset-size2.size4,
-.katex .fontsize-ensurer.reset-size2.size4 {
-  font-size: 1.28571429em;
-}
-.katex .sizing.reset-size2.size5,
-.katex .fontsize-ensurer.reset-size2.size5 {
-  font-size: 1.42857143em;
-}
-.katex .sizing.reset-size2.size6,
-.katex .fontsize-ensurer.reset-size2.size6 {
-  font-size: 1.71428571em;
-}
-.katex .sizing.reset-size2.size7,
-.katex .fontsize-ensurer.reset-size2.size7 {
-  font-size: 2.05714286em;
-}
-.katex .sizing.reset-size2.size8,
-.katex .fontsize-ensurer.reset-size2.size8 {
-  font-size: 2.47142857em;
-}
-.katex .sizing.reset-size2.size9,
-.katex .fontsize-ensurer.reset-size2.size9 {
-  font-size: 2.95714286em;
-}
-.katex .sizing.reset-size2.size10,
-.katex .fontsize-ensurer.reset-size2.size10 {
-  font-size: 3.55714286em;
-}
-.katex .sizing.reset-size3.size1,
-.katex .fontsize-ensurer.reset-size3.size1 {
-  font-size: 0.625em;
-}
-.katex .sizing.reset-size3.size2,
-.katex .fontsize-ensurer.reset-size3.size2 {
-  font-size: 0.875em;
-}
-.katex .sizing.reset-size3.size3,
-.katex .fontsize-ensurer.reset-size3.size3 {
-  font-size: 1em;
-}
-.katex .sizing.reset-size3.size4,
-.katex .fontsize-ensurer.reset-size3.size4 {
-  font-size: 1.125em;
-}
-.katex .sizing.reset-size3.size5,
-.katex .fontsize-ensurer.reset-size3.size5 {
-  font-size: 1.25em;
-}
-.katex .sizing.reset-size3.size6,
-.katex .fontsize-ensurer.reset-size3.size6 {
-  font-size: 1.5em;
-}
-.katex .sizing.reset-size3.size7,
-.katex .fontsize-ensurer.reset-size3.size7 {
-  font-size: 1.8em;
-}
-.katex .sizing.reset-size3.size8,
-.katex .fontsize-ensurer.reset-size3.size8 {
-  font-size: 2.1625em;
-}
-.katex .sizing.reset-size3.size9,
-.katex .fontsize-ensurer.reset-size3.size9 {
-  font-size: 2.5875em;
-}
-.katex .sizing.reset-size3.size10,
-.katex .fontsize-ensurer.reset-size3.size10 {
-  font-size: 3.1125em;
-}
-.katex .sizing.reset-size4.size1,
-.katex .fontsize-ensurer.reset-size4.size1 {
-  font-size: 0.55555556em;
-}
-.katex .sizing.reset-size4.size2,
-.katex .fontsize-ensurer.reset-size4.size2 {
-  font-size: 0.77777778em;
-}
-.katex .sizing.reset-size4.size3,
-.katex .fontsize-ensurer.reset-size4.size3 {
-  font-size: 0.88888889em;
-}
-.katex .sizing.reset-size4.size4,
-.katex .fontsize-ensurer.reset-size4.size4 {
-  font-size: 1em;
-}
-.katex .sizing.reset-size4.size5,
-.katex .fontsize-ensurer.reset-size4.size5 {
-  font-size: 1.11111111em;
-}
-.katex .sizing.reset-size4.size6,
-.katex .fontsize-ensurer.reset-size4.size6 {
-  font-size: 1.33333333em;
-}
-.katex .sizing.reset-size4.size7,
-.katex .fontsize-ensurer.reset-size4.size7 {
-  font-size: 1.6em;
-}
-.katex .sizing.reset-size4.size8,
-.katex .fontsize-ensurer.reset-size4.size8 {
-  font-size: 1.92222222em;
-}
-.katex .sizing.reset-size4.size9,
-.katex .fontsize-ensurer.reset-size4.size9 {
-  font-size: 2.3em;
-}
-.katex .sizing.reset-size4.size10,
-.katex .fontsize-ensurer.reset-size4.size10 {
-  font-size: 2.76666667em;
-}
-.katex .sizing.reset-size5.size1,
-.katex .fontsize-ensurer.reset-size5.size1 {
-  font-size: 0.5em;
-}
-.katex .sizing.reset-size5.size2,
-.katex .fontsize-ensurer.reset-size5.size2 {
-  font-size: 0.7em;
-}
-.katex .sizing.reset-size5.size3,
-.katex .fontsize-ensurer.reset-size5.size3 {
-  font-size: 0.8em;
-}
-.katex .sizing.reset-size5.size4,
-.katex .fontsize-ensurer.reset-size5.size4 {
-  font-size: 0.9em;
-}
-.katex .sizing.reset-size5.size5,
-.katex .fontsize-ensurer.reset-size5.size5 {
-  font-size: 1em;
-}
-.katex .sizing.reset-size5.size6,
-.katex .fontsize-ensurer.reset-size5.size6 {
-  font-size: 1.2em;
-}
-.katex .sizing.reset-size5.size7,
-.katex .fontsize-ensurer.reset-size5.size7 {
-  font-size: 1.44em;
-}
-.katex .sizing.reset-size5.size8,
-.katex .fontsize-ensurer.reset-size5.size8 {
-  font-size: 1.73em;
-}
-.katex .sizing.reset-size5.size9,
-.katex .fontsize-ensurer.reset-size5.size9 {
-  font-size: 2.07em;
-}
-.katex .sizing.reset-size5.size10,
-.katex .fontsize-ensurer.reset-size5.size10 {
-  font-size: 2.49em;
-}
-.katex .sizing.reset-size6.size1,
-.katex .fontsize-ensurer.reset-size6.size1 {
-  font-size: 0.41666667em;
-}
-.katex .sizing.reset-size6.size2,
-.katex .fontsize-ensurer.reset-size6.size2 {
-  font-size: 0.58333333em;
-}
-.katex .sizing.reset-size6.size3,
-.katex .fontsize-ensurer.reset-size6.size3 {
-  font-size: 0.66666667em;
-}
-.katex .sizing.reset-size6.size4,
-.katex .fontsize-ensurer.reset-size6.size4 {
-  font-size: 0.75em;
-}
-.katex .sizing.reset-size6.size5,
-.katex .fontsize-ensurer.reset-size6.size5 {
-  font-size: 0.83333333em;
-}
-.katex .sizing.reset-size6.size6,
-.katex .fontsize-ensurer.reset-size6.size6 {
-  font-size: 1em;
-}
-.katex .sizing.reset-size6.size7,
-.katex .fontsize-ensurer.reset-size6.size7 {
-  font-size: 1.2em;
-}
-.katex .sizing.reset-size6.size8,
-.katex .fontsize-ensurer.reset-size6.size8 {
-  font-size: 1.44166667em;
-}
-.katex .sizing.reset-size6.size9,
-.katex .fontsize-ensurer.reset-size6.size9 {
-  font-size: 1.725em;
-}
-.katex .sizing.reset-size6.size10,
-.katex .fontsize-ensurer.reset-size6.size10 {
-  font-size: 2.075em;
-}
-.katex .sizing.reset-size7.size1,
-.katex .fontsize-ensurer.reset-size7.size1 {
-  font-size: 0.34722222em;
-}
-.katex .sizing.reset-size7.size2,
-.katex .fontsize-ensurer.reset-size7.size2 {
-  font-size: 0.48611111em;
-}
-.katex .sizing.reset-size7.size3,
-.katex .fontsize-ensurer.reset-size7.size3 {
-  font-size: 0.55555556em;
-}
-.katex .sizing.reset-size7.size4,
-.katex .fontsize-ensurer.reset-size7.size4 {
-  font-size: 0.625em;
-}
-.katex .sizing.reset-size7.size5,
-.katex .fontsize-ensurer.reset-size7.size5 {
-  font-size: 0.69444444em;
-}
-.katex .sizing.reset-size7.size6,
-.katex .fontsize-ensurer.reset-size7.size6 {
-  font-size: 0.83333333em;
-}
-.katex .sizing.reset-size7.size7,
-.katex .fontsize-ensurer.reset-size7.size7 {
-  font-size: 1em;
-}
-.katex .sizing.reset-size7.size8,
-.katex .fontsize-ensurer.reset-size7.size8 {
-  font-size: 1.20138889em;
-}
-.katex .sizing.reset-size7.size9,
-.katex .fontsize-ensurer.reset-size7.size9 {
-  font-size: 1.4375em;
-}
-.katex .sizing.reset-size7.size10,
-.katex .fontsize-ensurer.reset-size7.size10 {
-  font-size: 1.72916667em;
-}
-.katex .sizing.reset-size8.size1,
-.katex .fontsize-ensurer.reset-size8.size1 {
-  font-size: 0.28901734em;
-}
-.katex .sizing.reset-size8.size2,
-.katex .fontsize-ensurer.reset-size8.size2 {
-  font-size: 0.40462428em;
-}
-.katex .sizing.reset-size8.size3,
-.katex .fontsize-ensurer.reset-size8.size3 {
-  font-size: 0.46242775em;
-}
-.katex .sizing.reset-size8.size4,
-.katex .fontsize-ensurer.reset-size8.size4 {
-  font-size: 0.52023121em;
-}
-.katex .sizing.reset-size8.size5,
-.katex .fontsize-ensurer.reset-size8.size5 {
-  font-size: 0.57803468em;
-}
-.katex .sizing.reset-size8.size6,
-.katex .fontsize-ensurer.reset-size8.size6 {
-  font-size: 0.69364162em;
-}
-.katex .sizing.reset-size8.size7,
-.katex .fontsize-ensurer.reset-size8.size7 {
-  font-size: 0.83236994em;
-}
-.katex .sizing.reset-size8.size8,
-.katex .fontsize-ensurer.reset-size8.size8 {
-  font-size: 1em;
-}
-.katex .sizing.reset-size8.size9,
-.katex .fontsize-ensurer.reset-size8.size9 {
-  font-size: 1.19653179em;
-}
-.katex .sizing.reset-size8.size10,
-.katex .fontsize-ensurer.reset-size8.size10 {
-  font-size: 1.43930636em;
-}
-.katex .sizing.reset-size9.size1,
-.katex .fontsize-ensurer.reset-size9.size1 {
-  font-size: 0.24154589em;
-}
-.katex .sizing.reset-size9.size2,
-.katex .fontsize-ensurer.reset-size9.size2 {
-  font-size: 0.33816425em;
-}
-.katex .sizing.reset-size9.size3,
-.katex .fontsize-ensurer.reset-size9.size3 {
-  font-size: 0.38647343em;
-}
-.katex .sizing.reset-size9.size4,
-.katex .fontsize-ensurer.reset-size9.size4 {
-  font-size: 0.43478261em;
-}
-.katex .sizing.reset-size9.size5,
-.katex .fontsize-ensurer.reset-size9.size5 {
-  font-size: 0.48309179em;
-}
-.katex .sizing.reset-size9.size6,
-.katex .fontsize-ensurer.reset-size9.size6 {
-  font-size: 0.57971014em;
-}
-.katex .sizing.reset-size9.size7,
-.katex .fontsize-ensurer.reset-size9.size7 {
-  font-size: 0.69565217em;
-}
-.katex .sizing.reset-size9.size8,
-.katex .fontsize-ensurer.reset-size9.size8 {
-  font-size: 0.83574879em;
-}
-.katex .sizing.reset-size9.size9,
-.katex .fontsize-ensurer.reset-size9.size9 {
-  font-size: 1em;
-}
-.katex .sizing.reset-size9.size10,
-.katex .fontsize-ensurer.reset-size9.size10 {
-  font-size: 1.20289855em;
-}
-.katex .sizing.reset-size10.size1,
-.katex .fontsize-ensurer.reset-size10.size1 {
-  font-size: 0.20080321em;
-}
-.katex .sizing.reset-size10.size2,
-.katex .fontsize-ensurer.reset-size10.size2 {
-  font-size: 0.2811245em;
-}
-.katex .sizing.reset-size10.size3,
-.katex .fontsize-ensurer.reset-size10.size3 {
-  font-size: 0.32128514em;
-}
-.katex .sizing.reset-size10.size4,
-.katex .fontsize-ensurer.reset-size10.size4 {
-  font-size: 0.36144578em;
-}
-.katex .sizing.reset-size10.size5,
-.katex .fontsize-ensurer.reset-size10.size5 {
-  font-size: 0.40160643em;
-}
-.katex .sizing.reset-size10.size6,
-.katex .fontsize-ensurer.reset-size10.size6 {
-  font-size: 0.48192771em;
-}
-.katex .sizing.reset-size10.size7,
-.katex .fontsize-ensurer.reset-size10.size7 {
-  font-size: 0.57831325em;
-}
-.katex .sizing.reset-size10.size8,
-.katex .fontsize-ensurer.reset-size10.size8 {
-  font-size: 0.69477912em;
-}
-.katex .sizing.reset-size10.size9,
-.katex .fontsize-ensurer.reset-size10.size9 {
-  font-size: 0.8313253em;
-}
-.katex .sizing.reset-size10.size10,
-.katex .fontsize-ensurer.reset-size10.size10 {
-  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: 0.12em;
-}
-.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 > span {
-  text-align: center;
-}
-.katex .accent > .vlist > span {
-  text-align: center;
-}
-.katex .accent .accent-body > span {
-  width: 0;
-}
-.katex .accent .accent-body.accent-vec > span {
-  position: relative;
-  left: 0.326em;
-}
-.katex .mtable .vertical-separator {
-  display: inline-block;
-  margin: 0 -0.025em;
-  border-right: 0.05em solid black;
-}
-.katex .mtable .arraycolsep {
-  display: inline-block;
-}
-.katex .mtable .col-align-c > .vlist {
-  text-align: center;
-}
-.katex .mtable .col-align-l > .vlist {
-  text-align: left;
-}
-.katex .mtable .col-align-r > .vlist {
-  text-align: right;
-}
diff --git a/specs/es/3.2/katex/katex.js b/specs/es/3.2/katex/katex.js
deleted file mode 100644
index e104be9..0000000
--- a/specs/es/3.2/katex/katex.js
+++ /dev/null
@@ -1,9075 +0,0 @@
-(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.katex = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
-/* eslint no-console:0 */
-/**
- * This is the main entry point for KaTeX. Here, we expose functions for
- * rendering expressions either to DOM nodes or to markup strings.
- *
- * We also expose the ParseError class to check if errors thrown from KaTeX are
- * errors in the expression, or errors in javascript handling.
- */
-
-var ParseError = require("./src/ParseError");
-var Settings = require("./src/Settings");
-
-var buildTree = require("./src/buildTree");
-var parseTree = require("./src/parseTree");
-var utils = require("./src/utils");
-
-/**
- * Parse and build an expression, and place that expression in the DOM node
- * given.
- */
-var render = function(expression, baseNode, options) {
-    utils.clearNode(baseNode);
-
-    var settings = new Settings(options);
-
-    var tree = parseTree(expression, settings);
-    var node = buildTree(tree, expression, settings).toNode();
-
-    baseNode.appendChild(node);
-};
-
-// KaTeX's styles don't work properly in quirks mode. Print out an error, and
-// disable rendering.
-if (typeof document !== "undefined") {
-    if (document.compatMode !== "CSS1Compat") {
-        typeof console !== "undefined" && console.warn(
-            "Warning: KaTeX doesn't work in quirks mode. Make sure your " +
-                "website has a suitable doctype.");
-
-        render = function() {
-            throw new ParseError("KaTeX doesn't work in quirks mode.");
-        };
-    }
-}
-
-/**
- * Parse and build an expression, and return the markup for that.
- */
-var renderToString = function(expression, options) {
-    var settings = new Settings(options);
-
-    var tree = parseTree(expression, settings);
-    return buildTree(tree, expression, settings).toMarkup();
-};
-
-/**
- * Parse an expression and return the parse tree.
- */
-var generateParseTree = function(expression, options) {
-    var settings = new Settings(options);
-    return parseTree(expression, settings);
-};
-
-module.exports = {
-    render: render,
-    renderToString: renderToString,
-    /**
-     * NOTE: This method is not currently recommended for public use.
-     * The internal tree representation is unstable and is very likely
-     * to change. Use at your own risk.
-     */
-    __parse: generateParseTree,
-    ParseError: ParseError
-};
-
-},{"./src/ParseError":6,"./src/Settings":8,"./src/buildTree":13,"./src/parseTree":22,"./src/utils":25}],2:[function(require,module,exports){
-/** @flow */
-
-"use strict";
-
-function getRelocatable(re) {
-  // In the future, this could use a WeakMap instead of an expando.
-  if (!re.__matchAtRelocatable) {
-    // Disjunctions are the lowest-precedence operator, so we can make any
-    // pattern match the empty string by appending `|()` to it:
-    // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-patterns
-    var source = re.source + "|()";
-
-    // We always make the new regex global.
-    var flags = "g" + (re.ignoreCase ? "i" : "") + (re.multiline ? "m" : "") + (re.unicode ? "u" : "")
-    // sticky (/.../y) doesn't make sense in conjunction with our relocation
-    // logic, so we ignore it here.
-    ;
-
-    re.__matchAtRelocatable = new RegExp(source, flags);
-  }
-  return re.__matchAtRelocatable;
-}
-
-function matchAt(re, str, pos) {
-  if (re.global || re.sticky) {
-    throw new Error("matchAt(...): Only non-global regexes are supported");
-  }
-  var reloc = getRelocatable(re);
-  reloc.lastIndex = pos;
-  var match = reloc.exec(str);
-  // Last capturing group is our sentinel that indicates whether the regex
-  // matched at the given location.
-  if (match[match.length - 1] == null) {
-    // Original regex matched.
-    match.length = match.length - 1;
-    return match;
-  } else {
-    return null;
-  }
-}
-
-module.exports = matchAt;
-},{}],3:[function(require,module,exports){
-/**
- * The Lexer class handles tokenizing the input in various ways. Since our
- * parser expects us to be able to backtrack, the lexer allows lexing from any
- * given starting point.
- *
- * Its main exposed function is the `lex` function, which takes a position to
- * lex from and a type of token to lex. It defers to the appropriate `_innerLex`
- * function.
- *
- * The various `_innerLex` functions perform the actual lexing of different
- * kinds.
- */
-
-var matchAt = require("match-at");
-
-var ParseError = require("./ParseError");
-
-// The main lexer class
-function Lexer(input) {
-    this.input = input;
-    this.pos = 0;
-}
-
-/**
- * The resulting token returned from `lex`.
- *
- * It consists of the token text plus some position information.
- * The position information is essentially a range in an input string,
- * but instead of referencing the bare input string, we refer to the lexer.
- * That way it is possible to attach extra metadata to the input string,
- * like for example a file name or similar.
- *
- * The position information (all three parameters) is optional,
- * so it is OK to construct synthetic tokens if appropriate.
- * Not providing available position information may lead to
- * degraded error reporting, though.
- *
- * @param {string}  text   the text of this token
- * @param {number=} start  the start offset, zero-based inclusive
- * @param {number=} end    the end offset, zero-based exclusive
- * @param {Lexer=}  lexer  the lexer which in turn holds the input string
- */
-function Token(text, start, end, lexer) {
-    this.text = text;
-    this.start = start;
-    this.end = end;
-    this.lexer = lexer;
-}
-
-/**
- * Given a pair of tokens (this and endToken), compute a “Token” encompassing
- * the whole input range enclosed by these two.
- *
- * @param {Token}  endToken  last token of the range, inclusive
- * @param {string} text      the text of the newly constructed token
- */
-Token.prototype.range = function(endToken, text) {
-    if (endToken.lexer !== this.lexer) {
-        return new Token(text); // sorry, no position information available
-    }
-    return new Token(text, this.start, endToken.end, this.lexer);
-};
-
-/* The following tokenRegex
- * - matches typical whitespace (but not NBSP etc.) using its first group
- * - does not match any control character \x00-\x1f except whitespace
- * - does not match a bare backslash
- * - matches any ASCII character except those just mentioned
- * - does not match the BMP private use area \uE000-\uF8FF
- * - does not match bare surrogate code units
- * - matches any BMP character except for those just described
- * - matches any valid Unicode surrogate pair
- * - matches a backslash followed by one or more letters
- * - matches a backslash followed by any BMP character, including newline
- * Just because the Lexer matches something doesn't mean it's valid input:
- * If there is no matching function or symbol definition, the Parser will
- * still reject the input.
- */
-var tokenRegex = new RegExp(
-    "([ \r\n\t]+)|" +                                 // whitespace
-    "([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]" +  // single codepoint
-    "|[\uD800-\uDBFF][\uDC00-\uDFFF]" +               // surrogate pair
-    "|\\\\(?:[a-zA-Z]+|[^\uD800-\uDFFF])" +           // function name
-    ")"
-);
-
-/**
- * This function lexes a single token.
- */
-Lexer.prototype.lex = function() {
-    var input = this.input;
-    var pos = this.pos;
-    if (pos === input.length) {
-        return new Token("EOF", pos, pos, this);
-    }
-    var match = matchAt(tokenRegex, input, pos);
-    if (match === null) {
-        throw new ParseError(
-            "Unexpected character: '" + input[pos] + "'",
-            new Token(input[pos], pos, pos + 1, this));
-    }
-    var text = match[2] || " ";
-    var start = this.pos;
-    this.pos += match[0].length;
-    var end = this.pos;
-    return new Token(text, start, end, this);
-};
-
-module.exports = Lexer;
-
-},{"./ParseError":6,"match-at":2}],4:[function(require,module,exports){
-/**
- * This file contains the “gullet” where macros are expanded
- * until only non-macro tokens remain.
- */
-
-var Lexer = require("./Lexer");
-
-function MacroExpander(input, macros) {
-    this.lexer = new Lexer(input);
-    this.macros = macros;
-    this.stack = []; // contains tokens in REVERSE order
-    this.discardedWhiteSpace = [];
-}
-
-/**
- * Recursively expand first token, then return first non-expandable token.
- */
-MacroExpander.prototype.nextToken = function() {
-    for (;;) {
-        if (this.stack.length === 0) {
-            this.stack.push(this.lexer.lex());
-        }
-        var topToken = this.stack.pop();
-        var name = topToken.text;
-        if (!(name.charAt(0) === "\\" && this.macros.hasOwnProperty(name))) {
-            return topToken;
-        }
-        var expansion = this.macros[name];
-        if (typeof expansion === "string") {
-            var bodyLexer = new Lexer(expansion);
-            expansion = [];
-            var tok = bodyLexer.lex();
-            while (tok.text !== "EOF") {
-                expansion.push(tok);
-                tok = bodyLexer.lex();
-            }
-            expansion.reverse(); // to fit in with stack using push and pop
-            this.macros[name] = expansion;
-        }
-        this.stack = this.stack.concat(expansion);
-    }
-};
-
-MacroExpander.prototype.get = function(ignoreSpace) {
-    this.discardedWhiteSpace = [];
-    var token = this.nextToken();
-    if (ignoreSpace) {
-        while (token.text === " ") {
-            this.discardedWhiteSpace.push(token);
-            token = this.nextToken();
-        }
-    }
-    return token;
-};
-
-/**
- * Undo the effect of the preceding call to the get method.
- * A call to this method MUST be immediately preceded and immediately followed
- * by a call to get.  Only used during mode switching, i.e. after one token
- * was got in the old mode but should get got again in a new mode
- * with possibly different whitespace handling.
- */
-MacroExpander.prototype.unget = function(token) {
-    this.stack.push(token);
-    while (this.discardedWhiteSpace.length !== 0) {
-        this.stack.push(this.discardedWhiteSpace.pop());
-    }
-};
-
-module.exports = MacroExpander;
-
-},{"./Lexer":3}],5:[function(require,module,exports){
-/**
- * This file contains information about the options that the Parser carries
- * around with it while parsing. Data is held in an `Options` object, and when
- * recursing, a new `Options` object can be created with the `.with*` and
- * `.reset` functions.
- */
-
-/**
- * This is the main options class. It contains the style, size, color, and font
- * of the current parse level. It also contains the style and size of the parent
- * parse level, so size changes can be handled efficiently.
- *
- * Each of the `.with*` and `.reset` functions passes its current style and size
- * as the parentStyle and parentSize of the new options class, so parent
- * handling is taken care of automatically.
- */
-function Options(data) {
-    this.style = data.style;
-    this.color = data.color;
-    this.size = data.size;
-    this.phantom = data.phantom;
-    this.font = data.font;
-
-    if (data.parentStyle === undefined) {
-        this.parentStyle = data.style;
-    } else {
-        this.parentStyle = data.parentStyle;
-    }
-
-    if (data.parentSize === undefined) {
-        this.parentSize = data.size;
-    } else {
-        this.parentSize = data.parentSize;
-    }
-}
-
-/**
- * Returns a new options object with the same properties as "this".  Properties
- * from "extension" will be copied to the new options object.
- */
-Options.prototype.extend = function(extension) {
-    var data = {
-        style: this.style,
-        size: this.size,
-        color: this.color,
-        parentStyle: this.style,
-        parentSize: this.size,
-        phantom: this.phantom,
-        font: this.font
-    };
-
-    for (var key in extension) {
-        if (extension.hasOwnProperty(key)) {
-            data[key] = extension[key];
-        }
-    }
-
-    return new Options(data);
-};
-
-/**
- * Create a new options object with the given style.
- */
-Options.prototype.withStyle = function(style) {
-    return this.extend({
-        style: style
-    });
-};
-
-/**
- * Create a new options object with the given size.
- */
-Options.prototype.withSize = function(size) {
-    return this.extend({
-        size: size
-    });
-};
-
-/**
- * Create a new options object with the given color.
- */
-Options.prototype.withColor = function(color) {
-    return this.extend({
-        color: color
-    });
-};
-
-/**
- * Create a new options object with "phantom" set to true.
- */
-Options.prototype.withPhantom = function() {
-    return this.extend({
-        phantom: true
-    });
-};
-
-/**
- * Create a new options objects with the give font.
- */
-Options.prototype.withFont = function(font) {
-    return this.extend({
-        font: font || this.font
-    });
-};
-
-/**
- * Create a new options object with the same style, size, and color. This is
- * used so that parent style and size changes are handled correctly.
- */
-Options.prototype.reset = function() {
-    return this.extend({});
-};
-
-/**
- * A map of color names to CSS colors.
- * TODO(emily): Remove this when we have real macros
- */
-var colorMap = {
-    "katex-blue": "#6495ed",
-    "katex-orange": "#ffa500",
-    "katex-pink": "#ff00af",
-    "katex-red": "#df0030",
-    "katex-green": "#28ae7b",
-    "katex-gray": "gray",
-    "katex-purple": "#9d38bd",
-    "katex-blueA": "#ccfaff",
-    "katex-blueB": "#80f6ff",
-    "katex-blueC": "#63d9ea",
-    "katex-blueD": "#11accd",
-    "katex-blueE": "#0c7f99",
-    "katex-tealA": "#94fff5",
-    "katex-tealB": "#26edd5",
-    "katex-tealC": "#01d1c1",
-    "katex-tealD": "#01a995",
-    "katex-tealE": "#208170",
-    "katex-greenA": "#b6ffb0",
-    "katex-greenB": "#8af281",
-    "katex-greenC": "#74cf70",
-    "katex-greenD": "#1fab54",
-    "katex-greenE": "#0d923f",
-    "katex-goldA": "#ffd0a9",
-    "katex-goldB": "#ffbb71",
-    "katex-goldC": "#ff9c39",
-    "katex-goldD": "#e07d10",
-    "katex-goldE": "#a75a05",
-    "katex-redA": "#fca9a9",
-    "katex-redB": "#ff8482",
-    "katex-redC": "#f9685d",
-    "katex-redD": "#e84d39",
-    "katex-redE": "#bc2612",
-    "katex-maroonA": "#ffbde0",
-    "katex-maroonB": "#ff92c6",
-    "katex-maroonC": "#ed5fa6",
-    "katex-maroonD": "#ca337c",
-    "katex-maroonE": "#9e034e",
-    "katex-purpleA": "#ddd7ff",
-    "katex-purpleB": "#c6b9fc",
-    "katex-purpleC": "#aa87ff",
-    "katex-purpleD": "#7854ab",
-    "katex-purpleE": "#543b78",
-    "katex-mintA": "#f5f9e8",
-    "katex-mintB": "#edf2df",
-    "katex-mintC": "#e0e5cc",
-    "katex-grayA": "#f6f7f7",
-    "katex-grayB": "#f0f1f2",
-    "katex-grayC": "#e3e5e6",
-    "katex-grayD": "#d6d8da",
-    "katex-grayE": "#babec2",
-    "katex-grayF": "#888d93",
-    "katex-grayG": "#626569",
-    "katex-grayH": "#3b3e40",
-    "katex-grayI": "#21242c",
-    "katex-kaBlue": "#314453",
-    "katex-kaGreen": "#71B307"
-};
-
-/**
- * Gets the CSS color of the current options object, accounting for the
- * `colorMap`.
- */
-Options.prototype.getColor = function() {
-    if (this.phantom) {
-        return "transparent";
-    } else {
-        return colorMap[this.color] || this.color;
-    }
-};
-
-module.exports = Options;
-
-},{}],6:[function(require,module,exports){
-/**
- * This is the ParseError class, which is the main error thrown by KaTeX
- * functions when something has gone wrong. This is used to distinguish internal
- * errors from errors in the expression that the user provided.
- *
- * If possible, a caller should provide a Token or ParseNode with information
- * about where in the source string the problem occurred.
- *
- * @param {string} message  The error message
- * @param {(Token|ParseNode)=} token  An object providing position information
- */
-function ParseError(message, token) {
-    var error = "KaTeX parse error: " + message;
-    var start;
-    var end;
-
-    if (token && token.lexer && token.start <= token.end) {
-        // If we have the input and a position, make the error a bit fancier
-
-        // Get the input
-        var input = token.lexer.input;
-
-        // Prepend some information
-        start = token.start;
-        end = token.end;
-        if (start === input.length) {
-            error += " at end of input: ";
-        } else {
-            error += " at position " + (start + 1) + ": ";
-        }
-
-        // Underline token in question using combining underscores
-        var underlined = input.slice(start, end).replace(/[^]/g, "$&\u0332");
-
-        // Extract some context from the input and add it to the error
-        var left;
-        if (start > 15) {
-            left = "…" + input.slice(start - 15, start);
-        } else {
-            left = input.slice(0, start);
-        }
-        var right;
-        if (end + 15 < input.length) {
-            right = input.slice(end, end + 15) + "…";
-        } else {
-            right = input.slice(end);
-        }
-        error += left + underlined + right;
-    }
-
-    // Some hackery to make ParseError a prototype of Error
-    // See http://stackoverflow.com/a/8460753
-    var self = new Error(error);
-    self.name = "ParseError";
-    self.__proto__ = ParseError.prototype;
-
-    self.position = start;
-    return self;
-}
-
-// More hackery
-ParseError.prototype.__proto__ = Error.prototype;
-
-module.exports = ParseError;
-
-},{}],7:[function(require,module,exports){
-/* eslint no-constant-condition:0 */
-var functions = require("./functions");
-var environments = require("./environments");
-var MacroExpander = require("./MacroExpander");
-var symbols = require("./symbols");
-var utils = require("./utils");
-var cjkRegex = require("./unicodeRegexes").cjkRegex;
-
-var parseData = require("./parseData");
-var ParseError = require("./ParseError");
-
-/**
- * This file contains the parser used to parse out a TeX expression from the
- * input. Since TeX isn't context-free, standard parsers don't work particularly
- * well.
- *
- * The strategy of this parser is as such:
- *
- * The main functions (the `.parse...` ones) take a position in the current
- * parse string to parse tokens from. The lexer (found in Lexer.js, stored at
- * this.lexer) also supports pulling out tokens at arbitrary places. When
- * individual tokens are needed at a position, the lexer is called to pull out a
- * token, which is then used.
- *
- * The parser has a property called "mode" indicating the mode that
- * the parser is currently in. Currently it has to be one of "math" or
- * "text", which denotes whether the current environment is a math-y
- * one or a text-y one (e.g. inside \text). Currently, this serves to
- * limit the functions which can be used in text mode.
- *
- * The main functions then return an object which contains the useful data that
- * was parsed at its given point, and a new position at the end of the parsed
- * data. The main functions can call each other and continue the parsing by
- * using the returned position as a new starting point.
- *
- * There are also extra `.handle...` functions, which pull out some reused
- * functionality into self-contained functions.
- *
- * The earlier functions return ParseNodes.
- * The later functions (which are called deeper in the parse) sometimes return
- * ParseFuncOrArgument, which contain a ParseNode as well as some data about
- * whether the parsed object is a function which is missing some arguments, or a
- * standalone object which can be used as an argument to another function.
- */
-
-/**
- * Main Parser class
- */
-function Parser(input, settings) {
-    // Create a new macro expander (gullet) and (indirectly via that) also a
-    // new lexer (mouth) for this parser (stomach, in the language of TeX)
-    this.gullet = new MacroExpander(input, settings.macros);
-    // Store the settings for use in parsing
-    this.settings = settings;
-    // Count leftright depth (for \middle errors)
-    this.leftrightDepth = 0;
-}
-
-var ParseNode = parseData.ParseNode;
-
-/**
- * An initial function (without its arguments), or an argument to a function.
- * The `result` argument should be a ParseNode.
- */
-function ParseFuncOrArgument(result, isFunction, token) {
-    this.result = result;
-    // Is this a function (i.e. is it something defined in functions.js)?
-    this.isFunction = isFunction;
-    this.token = token;
-}
-
-/**
- * Checks a result to make sure it has the right type, and throws an
- * appropriate error otherwise.
- *
- * @param {boolean=} consume whether to consume the expected token,
- *                           defaults to true
- */
-Parser.prototype.expect = function(text, consume) {
-    if (this.nextToken.text !== text) {
-        throw new ParseError(
-            "Expected '" + text + "', got '" + this.nextToken.text + "'",
-            this.nextToken
-        );
-    }
-    if (consume !== false) {
-        this.consume();
-    }
-};
-
-/**
- * Considers the current look ahead token as consumed,
- * and fetches the one after that as the new look ahead.
- */
-Parser.prototype.consume = function() {
-    this.nextToken = this.gullet.get(this.mode === "math");
-};
-
-Parser.prototype.switchMode = function(newMode) {
-    this.gullet.unget(this.nextToken);
-    this.mode = newMode;
-    this.consume();
-};
-
-/**
- * Main parsing function, which parses an entire input.
- *
- * @return {?Array.<ParseNode>}
- */
-Parser.prototype.parse = function() {
-    // Try to parse the input
-    this.mode = "math";
-    this.consume();
-    var parse = this.parseInput();
-    return parse;
-};
-
-/**
- * Parses an entire input tree.
- */
-Parser.prototype.parseInput = function() {
-    // Parse an expression
-    var expression = this.parseExpression(false);
-    // If we succeeded, make sure there's an EOF at the end
-    this.expect("EOF", false);
-    return expression;
-};
-
-var endOfExpression = ["}", "\\end", "\\right", "&", "\\\\", "\\cr"];
-
-/**
- * Parses an "expression", which is a list of atoms.
- *
- * @param {boolean} breakOnInfix  Should the parsing stop when we hit infix
- *                  nodes? This happens when functions have higher precendence
- *                  than infix nodes in implicit parses.
- *
- * @param {?string} breakOnTokenText  The text of the token that the expression
- *                  should end with, or `null` if something else should end the
- *                  expression.
- *
- * @return {ParseNode}
- */
-Parser.prototype.parseExpression = function(breakOnInfix, breakOnTokenText) {
-    var body = [];
-    // Keep adding atoms to the body until we can't parse any more atoms (either
-    // we reached the end, a }, or a \right)
-    while (true) {
-        var lex = this.nextToken;
-        if (endOfExpression.indexOf(lex.text) !== -1) {
-            break;
-        }
-        if (breakOnTokenText && lex.text === breakOnTokenText) {
-            break;
-        }
-        if (breakOnInfix && functions[lex.text] && functions[lex.text].infix) {
-            break;
-        }
-        var atom = this.parseAtom();
-        if (!atom) {
-            if (!this.settings.throwOnError && lex.text[0] === "\\") {
-                var errorNode = this.handleUnsupportedCmd();
-                body.push(errorNode);
-                continue;
-            }
-
-            break;
-        }
-        body.push(atom);
-    }
-    return this.handleInfixNodes(body);
-};
-
-/**
- * Rewrites infix operators such as \over with corresponding commands such
- * as \frac.
- *
- * There can only be one infix operator per group.  If there's more than one
- * then the expression is ambiguous.  This can be resolved by adding {}.
- *
- * @returns {Array}
- */
-Parser.prototype.handleInfixNodes = function(body) {
-    var overIndex = -1;
-    var funcName;
-
-    for (var i = 0; i < body.length; i++) {
-        var node = body[i];
-        if (node.type === "infix") {
-            if (overIndex !== -1) {
-                throw new ParseError(
-                    "only one infix operator per group",
-                    node.value.token);
-            }
-            overIndex = i;
-            funcName = node.value.replaceWith;
-        }
-    }
-
-    if (overIndex !== -1) {
-        var numerNode;
-        var denomNode;
-
-        var numerBody = body.slice(0, overIndex);
-        var denomBody = body.slice(overIndex + 1);
-
-        if (numerBody.length === 1 && numerBody[0].type === "ordgroup") {
-            numerNode = numerBody[0];
-        } else {
-            numerNode = new ParseNode("ordgroup", numerBody, this.mode);
-        }
-
-        if (denomBody.length === 1 && denomBody[0].type === "ordgroup") {
-            denomNode = denomBody[0];
-        } else {
-            denomNode = new ParseNode("ordgroup", denomBody, this.mode);
-        }
-
-        var value = this.callFunction(
-            funcName, [numerNode, denomNode], null);
-        return [new ParseNode(value.type, value, this.mode)];
-    } else {
-        return body;
-    }
-};
-
-// The greediness of a superscript or subscript
-var SUPSUB_GREEDINESS = 1;
-
-/**
- * Handle a subscript or superscript with nice errors.
- */
-Parser.prototype.handleSupSubscript = function(name) {
-    var symbolToken = this.nextToken;
-    var symbol = symbolToken.text;
-    this.consume();
-    var group = this.parseGroup();
-
-    if (!group) {
-        if (!this.settings.throwOnError && this.nextToken.text[0] === "\\") {
-            return this.handleUnsupportedCmd();
-        } else {
-            throw new ParseError(
-                "Expected group after '" + symbol + "'",
-                symbolToken
-            );
-        }
-    } else if (group.isFunction) {
-        // ^ and _ have a greediness, so handle interactions with functions'
-        // greediness
-        var funcGreediness = functions[group.result].greediness;
-        if (funcGreediness > SUPSUB_GREEDINESS) {
-            return this.parseFunction(group);
-        } else {
-            throw new ParseError(
-                "Got function '" + group.result + "' with no arguments " +
-                    "as " + name, symbolToken);
-        }
-    } else {
-        return group.result;
-    }
-};
-
-/**
- * Converts the textual input of an unsupported command into a text node
- * contained within a color node whose color is determined by errorColor
- */
-Parser.prototype.handleUnsupportedCmd = function() {
-    var text = this.nextToken.text;
-    var textordArray = [];
-
-    for (var i = 0; i < text.length; i++) {
-        textordArray.push(new ParseNode("textord", text[i], "text"));
-    }
-
-    var textNode = new ParseNode(
-        "text",
-        {
-            body: textordArray,
-            type: "text"
-        },
-        this.mode);
-
-    var colorNode = new ParseNode(
-        "color",
-        {
-            color: this.settings.errorColor,
-            value: [textNode],
-            type: "color"
-        },
-        this.mode);
-
-    this.consume();
-    return colorNode;
-};
-
-/**
- * Parses a group with optional super/subscripts.
- *
- * @return {?ParseNode}
- */
-Parser.prototype.parseAtom = function() {
-    // The body of an atom is an implicit group, so that things like
-    // \left(x\right)^2 work correctly.
-    var base = this.parseImplicitGroup();
-
-    // In text mode, we don't have superscripts or subscripts
-    if (this.mode === "text") {
-        return base;
-    }
-
-    // Note that base may be empty (i.e. null) at this point.
-
-    var superscript;
-    var subscript;
-    while (true) {
-        // Lex the first token
-        var lex = this.nextToken;
-
-        if (lex.text === "\\limits" || lex.text === "\\nolimits") {
-            // We got a limit control
-            if (!base || base.type !== "op") {
-                throw new ParseError(
-                    "Limit controls must follow a math operator",
-                    lex);
-            } else {
-                var limits = lex.text === "\\limits";
-                base.value.limits = limits;
-                base.value.alwaysHandleSupSub = true;
-            }
-            this.consume();
-        } else if (lex.text === "^") {
-            // We got a superscript start
-            if (superscript) {
-                throw new ParseError("Double superscript", lex);
-            }
-            superscript = this.handleSupSubscript("superscript");
-        } else if (lex.text === "_") {
-            // We got a subscript start
-            if (subscript) {
-                throw new ParseError("Double subscript", lex);
-            }
-            subscript = this.handleSupSubscript("subscript");
-        } else if (lex.text === "'") {
-            // We got a prime
-            var prime = new ParseNode("textord", "\\prime", this.mode);
-
-            // Many primes can be grouped together, so we handle this here
-            var primes = [prime];
-            this.consume();
-            // Keep lexing tokens until we get something that's not a prime
-            while (this.nextToken.text === "'") {
-                // For each one, add another prime to the list
-                primes.push(prime);
-                this.consume();
-            }
-            // Put them into an ordgroup as the superscript
-            superscript = new ParseNode("ordgroup", primes, this.mode);
-        } else {
-            // If it wasn't ^, _, or ', stop parsing super/subscripts
-            break;
-        }
-    }
-
-    if (superscript || subscript) {
-        // If we got either a superscript or subscript, create a supsub
-        return new ParseNode("supsub", {
-            base: base,
-            sup: superscript,
-            sub: subscript
-        }, this.mode);
-    } else {
-        // Otherwise return the original body
-        return base;
-    }
-};
-
-// A list of the size-changing functions, for use in parseImplicitGroup
-var sizeFuncs = [
-    "\\tiny", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize",
-    "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"
-];
-
-// A list of the style-changing functions, for use in parseImplicitGroup
-var styleFuncs = [
-    "\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"
-];
-
-/**
- * Parses an implicit group, which is a group that starts at the end of a
- * specified, and ends right before a higher explicit group ends, or at EOL. It
- * is used for functions that appear to affect the current style, like \Large or
- * \textrm, where instead of keeping a style we just pretend that there is an
- * implicit grouping after it until the end of the group. E.g.
- *   small text {\Large large text} small text again
- * It is also used for \left and \right to get the correct grouping.
- *
- * @return {?ParseNode}
- */
-Parser.prototype.parseImplicitGroup = function() {
-    var start = this.parseSymbol();
-
-    if (start == null) {
-        // If we didn't get anything we handle, fall back to parseFunction
-        return this.parseFunction();
-    }
-
-    var func = start.result;
-    var body;
-
-    if (func === "\\left") {
-        // If we see a left:
-        // Parse the entire left function (including the delimiter)
-        var left = this.parseFunction(start);
-        // Parse out the implicit body
-        ++this.leftrightDepth;
-        body = this.parseExpression(false);
-        --this.leftrightDepth;
-        // Check the next token
-        this.expect("\\right", false);
-        var right = this.parseFunction();
-        return new ParseNode("leftright", {
-            body: body,
-            left: left.value.value,
-            right: right.value.value
-        }, this.mode);
-    } else if (func === "\\begin") {
-        // begin...end is similar to left...right
-        var begin = this.parseFunction(start);
-        var envName = begin.value.name;
-        if (!environments.hasOwnProperty(envName)) {
-            throw new ParseError(
-                "No such environment: " + envName, begin.value.nameGroup);
-        }
-        // Build the environment object. Arguments and other information will
-        // be made available to the begin and end methods using properties.
-        var env = environments[envName];
-        var args = this.parseArguments("\\begin{" + envName + "}", env);
-        var context = {
-            mode: this.mode,
-            envName: envName,
-            parser: this,
-            positions: args.pop()
-        };
-        var result = env.handler(context, args);
-        this.expect("\\end", false);
-        var endNameToken = this.nextToken;
-        var end = this.parseFunction();
-        if (end.value.name !== envName) {
-            throw new ParseError(
-                "Mismatch: \\begin{" + envName + "} matched " +
-                "by \\end{" + end.value.name + "}",
-                endNameToken);
-        }
-        result.position = end.position;
-        return result;
-    } else if (utils.contains(sizeFuncs, func)) {
-        // If we see a sizing function, parse out the implict body
-        body = this.parseExpression(false);
-        return new ParseNode("sizing", {
-            // Figure out what size to use based on the list of functions above
-            size: "size" + (utils.indexOf(sizeFuncs, func) + 1),
-            value: body
-        }, this.mode);
-    } else if (utils.contains(styleFuncs, func)) {
-        // If we see a styling function, parse out the implict body
-        body = this.parseExpression(true);
-        return new ParseNode("styling", {
-            // Figure out what style to use by pulling out the style from
-            // the function name
-            style: func.slice(1, func.length - 5),
-            value: body
-        }, this.mode);
-    } else {
-        // Defer to parseFunction if it's not a function we handle
-        return this.parseFunction(start);
-    }
-};
-
-/**
- * Parses an entire function, including its base and all of its arguments.
- * The base might either have been parsed already, in which case
- * it is provided as an argument, or it's the next group in the input.
- *
- * @param {ParseFuncOrArgument=} baseGroup optional as described above
- * @return {?ParseNode}
- */
-Parser.prototype.parseFunction = function(baseGroup) {
-    if (!baseGroup) {
-        baseGroup = this.parseGroup();
-    }
-
-    if (baseGroup) {
-        if (baseGroup.isFunction) {
-            var func = baseGroup.result;
-            var funcData = functions[func];
-            if (this.mode === "text" && !funcData.allowedInText) {
-                throw new ParseError(
-                    "Can't use function '" + func + "' in text mode",
-                    baseGroup.token);
-            }
-
-            var args = this.parseArguments(func, funcData);
-            var token = baseGroup.token;
-            var result = this.callFunction(func, args, args.pop(), token);
-            return new ParseNode(result.type, result, this.mode);
-        } else {
-            return baseGroup.result;
-        }
-    } else {
-        return null;
-    }
-};
-
-/**
- * Call a function handler with a suitable context and arguments.
- */
-Parser.prototype.callFunction = function(name, args, positions, token) {
-    var context = {
-        funcName: name,
-        parser: this,
-        positions: positions,
-        token: token
-    };
-    return functions[name].handler(context, args);
-};
-
-/**
- * Parses the arguments of a function or environment
- *
- * @param {string} func  "\name" or "\begin{name}"
- * @param {{numArgs:number,numOptionalArgs:number|undefined}} funcData
- * @return the array of arguments, with the list of positions as last element
- */
-Parser.prototype.parseArguments = function(func, funcData) {
-    var totalArgs = funcData.numArgs + funcData.numOptionalArgs;
-    if (totalArgs === 0) {
-        return [[this.pos]];
-    }
-
-    var baseGreediness = funcData.greediness;
-    var positions = [this.pos];
-    var args = [];
-
-    for (var i = 0; i < totalArgs; i++) {
-        var nextToken = this.nextToken;
-        var argType = funcData.argTypes && funcData.argTypes[i];
-        var arg;
-        if (i < funcData.numOptionalArgs) {
-            if (argType) {
-                arg = this.parseGroupOfType(argType, true);
-            } else {
-                arg = this.parseGroup(true);
-            }
-            if (!arg) {
-                args.push(null);
-                positions.push(this.pos);
-                continue;
-            }
-        } else {
-            if (argType) {
-                arg = this.parseGroupOfType(argType);
-            } else {
-                arg = this.parseGroup();
-            }
-            if (!arg) {
-                if (!this.settings.throwOnError &&
-                    this.nextToken.text[0] === "\\") {
-                    arg = new ParseFuncOrArgument(
-                        this.handleUnsupportedCmd(this.nextToken.text),
-                        false);
-                } else {
-                    throw new ParseError(
-                        "Expected group after '" + func + "'", nextToken);
-                }
-            }
-        }
-        var argNode;
-        if (arg.isFunction) {
-            var argGreediness =
-                functions[arg.result].greediness;
-            if (argGreediness > baseGreediness) {
-                argNode = this.parseFunction(arg);
-            } else {
-                throw new ParseError(
-                    "Got function '" + arg.result + "' as " +
-                    "argument to '" + func + "'", nextToken);
-            }
-        } else {
-            argNode = arg.result;
-        }
-        args.push(argNode);
-        positions.push(this.pos);
-    }
-
-    args.push(positions);
-
-    return args;
-};
-
-
-/**
- * Parses a group when the mode is changing.
- *
- * @return {?ParseFuncOrArgument}
- */
-Parser.prototype.parseGroupOfType = function(innerMode, optional) {
-    var outerMode = this.mode;
-    // Handle `original` argTypes
-    if (innerMode === "original") {
-        innerMode = outerMode;
-    }
-
-    if (innerMode === "color") {
-        return this.parseColorGroup(optional);
-    }
-    if (innerMode === "size") {
-        return this.parseSizeGroup(optional);
-    }
-
-    this.switchMode(innerMode);
-    if (innerMode === "text") {
-        // text mode is special because it should ignore the whitespace before
-        // it
-        while (this.nextToken.text === " ") {
-            this.consume();
-        }
-    }
-    // By the time we get here, innerMode is one of "text" or "math".
-    // We switch the mode of the parser, recurse, then restore the old mode.
-    var res = this.parseGroup(optional);
-    this.switchMode(outerMode);
-    return res;
-};
-
-/**
- * Parses a group, essentially returning the string formed by the
- * brace-enclosed tokens plus some position information.
- *
- * @param {string} modeName  Used to describe the mode in error messages
- * @param {boolean=} optional  Whether the group is optional or required
- */
-Parser.prototype.parseStringGroup = function(modeName, optional) {
-    if (optional && this.nextToken.text !== "[") {
-        return null;
-    }
-    var outerMode = this.mode;
-    this.mode = "text";
-    this.expect(optional ? "[" : "{");
-    var str = "";
-    var firstToken = this.nextToken;
-    var lastToken = firstToken;
-    while (this.nextToken.text !== (optional ? "]" : "}")) {
-        if (this.nextToken.text === "EOF") {
-            throw new ParseError(
-                "Unexpected end of input in " + modeName,
-                firstToken.range(this.nextToken, str));
-        }
-        lastToken = this.nextToken;
-        str += lastToken.text;
-        this.consume();
-    }
-    this.mode = outerMode;
-    this.expect(optional ? "]" : "}");
-    return firstToken.range(lastToken, str);
-};
-
-/**
- * Parses a regex-delimited group: the largest sequence of tokens
- * whose concatenated strings match `regex`. Returns the string
- * formed by the tokens plus some position information.
- *
- * @param {RegExp} regex
- * @param {string} modeName  Used to describe the mode in error messages
- */
-Parser.prototype.parseRegexGroup = function(regex, modeName) {
-    var outerMode = this.mode;
-    this.mode = "text";
-    var firstToken = this.nextToken;
-    var lastToken = firstToken;
-    var str = "";
-    while (this.nextToken.text !== "EOF"
-           && regex.test(str + this.nextToken.text)) {
-        lastToken = this.nextToken;
-        str += lastToken.text;
-        this.consume();
-    }
-    if (str === "") {
-        throw new ParseError(
-            "Invalid " + modeName + ": '" + firstToken.text + "'",
-            firstToken);
-    }
-    this.mode = outerMode;
-    return firstToken.range(lastToken, str);
-};
-
-/**
- * Parses a color description.
- */
-Parser.prototype.parseColorGroup = function(optional) {
-    var res = this.parseStringGroup("color", optional);
-    if (!res) {
-        return null;
-    }
-    var match = (/^(#[a-z0-9]+|[a-z]+)$/i).exec(res.text);
-    if (!match) {
-        throw new ParseError("Invalid color: '" + res.text + "'", res);
-    }
-    return new ParseFuncOrArgument(
-        new ParseNode("color", match[0], this.mode),
-        false);
-};
-
-/**
- * Parses a size specification, consisting of magnitude and unit.
- */
-Parser.prototype.parseSizeGroup = function(optional) {
-    var res;
-    if (!optional && this.nextToken.text !== "{") {
-        res = this.parseRegexGroup(
-            /^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2}$/, "size");
-    } else {
-        res = this.parseStringGroup("size", optional);
-    }
-    if (!res) {
-        return null;
-    }
-    var match = (/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/).exec(res.text);
-    if (!match) {
-        throw new ParseError("Invalid size: '" + res.text + "'", res);
-    }
-    var data = {
-        number: +(match[1] + match[2]), // sign + magnitude, cast to number
-        unit: match[3]
-    };
-    if (data.unit !== "em" && data.unit !== "ex" && data.unit !== "mu") {
-        throw new ParseError("Invalid unit: '" + data.unit + "'", res);
-    }
-    return new ParseFuncOrArgument(
-        new ParseNode("color", data, this.mode),
-        false);
-};
-
-/**
- * If the argument is false or absent, this parses an ordinary group,
- * which is either a single nucleus (like "x") or an expression
- * in braces (like "{x+y}").
- * If the argument is true, it parses either a bracket-delimited expression
- * (like "[x+y]") or returns null to indicate the absence of a
- * bracket-enclosed group.
- *
- * @param {boolean=} optional  Whether the group is optional or required
- * @return {?ParseFuncOrArgument}
- */
-Parser.prototype.parseGroup = function(optional) {
-    var firstToken = this.nextToken;
-    // Try to parse an open brace
-    if (this.nextToken.text === (optional ? "[" : "{")) {
-        // If we get a brace, parse an expression
-        this.consume();
-        var expression = this.parseExpression(false, optional ? "]" : null);
-        var lastToken = this.nextToken;
-        // Make sure we get a close brace
-        this.expect(optional ? "]" : "}");
-        if (this.mode === "text") {
-            this.formLigatures(expression);
-        }
-        return new ParseFuncOrArgument(
-            new ParseNode("ordgroup", expression, this.mode,
-                          firstToken, lastToken),
-            false);
-    } else {
-        // Otherwise, just return a nucleus, or nothing for an optional group
-        return optional ? null : this.parseSymbol();
-    }
-};
-
-/**
- * Form ligature-like combinations of characters for text mode.
- * This includes inputs like "--", "---", "``" and "''".
- * The result will simply replace multiple textord nodes with a single
- * character in each value by a single textord node having multiple
- * characters in its value.  The representation is still ASCII source.
- *
- * @param {Array.<ParseNode>} group  the nodes of this group,
- *                                   list will be moified in place
- */
-Parser.prototype.formLigatures = function(group) {
-    var i;
-    var n = group.length - 1;
-    for (i = 0; i < n; ++i) {
-        var a = group[i];
-        var v = a.value;
-        if (v === "-" && group[i + 1].value === "-") {
-            if (i + 1 < n && group[i + 2].value === "-") {
-                group.splice(i, 3, new ParseNode(
-                    "textord", "---", "text", a, group[i + 2]));
-                n -= 2;
-            } else {
-                group.splice(i, 2, new ParseNode(
-                    "textord", "--", "text", a, group[i + 1]));
-                n -= 1;
-            }
-        }
-        if ((v === "'" || v === "`") && group[i + 1].value === v) {
-            group.splice(i, 2, new ParseNode(
-                "textord", v + v, "text", a, group[i + 1]));
-            n -= 1;
-        }
-    }
-};
-
-/**
- * Parse a single symbol out of the string. Here, we handle both the functions
- * we have defined, as well as the single character symbols
- *
- * @return {?ParseFuncOrArgument}
- */
-Parser.prototype.parseSymbol = function() {
-    var nucleus = this.nextToken;
-
-    if (functions[nucleus.text]) {
-        this.consume();
-        // If there exists a function with this name, we return the function and
-        // say that it is a function.
-        return new ParseFuncOrArgument(
-            nucleus.text,
-            true, nucleus);
-    } else if (symbols[this.mode][nucleus.text]) {
-        this.consume();
-        // Otherwise if this is a no-argument function, find the type it
-        // corresponds to in the symbols map
-        return new ParseFuncOrArgument(
-            new ParseNode(symbols[this.mode][nucleus.text].group,
-                          nucleus.text, this.mode, nucleus),
-            false, nucleus);
-    } else if (this.mode === "text" && cjkRegex.test(nucleus.text)) {
-        this.consume();
-        return new ParseFuncOrArgument(
-            new ParseNode("textord", nucleus.text, this.mode, nucleus),
-            false, nucleus);
-    } else {
-        return null;
-    }
-};
-
-Parser.prototype.ParseNode = ParseNode;
-
-module.exports = Parser;
-
-},{"./MacroExpander":4,"./ParseError":6,"./environments":16,"./functions":19,"./parseData":21,"./symbols":23,"./unicodeRegexes":24,"./utils":25}],8:[function(require,module,exports){
-/**
- * This is a module for storing settings passed into KaTeX. It correctly handles
- * default settings.
- */
-
-/**
- * Helper function for getting a default value if the value is undefined
- */
-function get(option, defaultValue) {
-    return option === undefined ? defaultValue : option;
-}
-
-/**
- * The main Settings object
- *
- * The current options stored are:
- *  - displayMode: Whether the expression should be typeset by default in
- *                 textstyle or displaystyle (default false)
- */
-function Settings(options) {
-    // allow null options
-    options = options || {};
-    this.displayMode = get(options.displayMode, false);
-    this.throwOnError = get(options.throwOnError, true);
-    this.errorColor = get(options.errorColor, "#cc0000");
-    this.macros = options.macros || {};
-}
-
-module.exports = Settings;
-
-},{}],9:[function(require,module,exports){
-/**
- * This file contains information and classes for the various kinds of styles
- * used in TeX. It provides a generic `Style` class, which holds information
- * about a specific style. It then provides instances of all the different kinds
- * of styles possible, and provides functions to move between them and get
- * information about them.
- */
-
-var sigmas = require("./fontMetrics.js").sigmas;
-
-var metrics = [{}, {}, {}];
-var i;
-for (var key in sigmas) {
-    if (sigmas.hasOwnProperty(key)) {
-        for (i = 0; i < 3; i++) {
-            metrics[i][key] = sigmas[key][i];
-        }
-    }
-}
-for (i = 0; i < 3; i++) {
-    metrics[i].emPerEx = sigmas.xHeight[i] / sigmas.quad[i];
-}
-
-/**
- * The main style class. Contains a unique id for the style, a size (which is
- * the same for cramped and uncramped version of a style), a cramped flag, and a
- * size multiplier, which gives the size difference between a style and
- * textstyle.
- */
-function Style(id, size, multiplier, cramped) {
-    this.id = id;
-    this.size = size;
-    this.cramped = cramped;
-    this.sizeMultiplier = multiplier;
-    this.metrics = metrics[size > 0 ? size - 1 : 0];
-}
-
-/**
- * Get the style of a superscript given a base in the current style.
- */
-Style.prototype.sup = function() {
-    return styles[sup[this.id]];
-};
-
-/**
- * Get the style of a subscript given a base in the current style.
- */
-Style.prototype.sub = function() {
-    return styles[sub[this.id]];
-};
-
-/**
- * Get the style of a fraction numerator given the fraction in the current
- * style.
- */
-Style.prototype.fracNum = function() {
-    return styles[fracNum[this.id]];
-};
-
-/**
- * Get the style of a fraction denominator given the fraction in the current
- * style.
- */
-Style.prototype.fracDen = function() {
-    return styles[fracDen[this.id]];
-};
-
-/**
- * Get the cramped version of a style (in particular, cramping a cramped style
- * doesn't change the style).
- */
-Style.prototype.cramp = function() {
-    return styles[cramp[this.id]];
-};
-
-/**
- * HTML class name, like "displaystyle cramped"
- */
-Style.prototype.cls = function() {
-    return sizeNames[this.size] + (this.cramped ? " cramped" : " uncramped");
-};
-
-/**
- * HTML Reset class name, like "reset-textstyle"
- */
-Style.prototype.reset = function() {
-    return resetNames[this.size];
-};
-
-/**
- * Return if this style is tightly spaced (scriptstyle/scriptscriptstyle)
- */
-Style.prototype.isTight = function() {
-    return this.size >= 2;
-};
-
-// IDs of the different styles
-var D = 0;
-var Dc = 1;
-var T = 2;
-var Tc = 3;
-var S = 4;
-var Sc = 5;
-var SS = 6;
-var SSc = 7;
-
-// String names for the different sizes
-var sizeNames = [
-    "displaystyle textstyle",
-    "textstyle",
-    "scriptstyle",
-    "scriptscriptstyle"
-];
-
-// Reset names for the different sizes
-var resetNames = [
-    "reset-textstyle",
-    "reset-textstyle",
-    "reset-scriptstyle",
-    "reset-scriptscriptstyle"
-];
-
-// Instances of the different styles
-var styles = [
-    new Style(D, 0, 1.0, false),
-    new Style(Dc, 0, 1.0, true),
-    new Style(T, 1, 1.0, false),
-    new Style(Tc, 1, 1.0, true),
-    new Style(S, 2, 0.7, false),
-    new Style(Sc, 2, 0.7, true),
-    new Style(SS, 3, 0.5, false),
-    new Style(SSc, 3, 0.5, true)
-];
-
-// Lookup tables for switching from one style to another
-var sup = [S, Sc, S, Sc, SS, SSc, SS, SSc];
-var sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc];
-var fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc];
-var fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc];
-var cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc];
-
-// We only export some of the styles. Also, we don't export the `Style` class so
-// no more styles can be generated.
-module.exports = {
-    DISPLAY: styles[D],
-    TEXT: styles[T],
-    SCRIPT: styles[S],
-    SCRIPTSCRIPT: styles[SS]
-};
-
-},{"./fontMetrics.js":17}],10:[function(require,module,exports){
-/* eslint no-console:0 */
-/**
- * This module contains general functions that can be used for building
- * different kinds of domTree nodes in a consistent manner.
- */
-
-var domTree = require("./domTree");
-var fontMetrics = require("./fontMetrics");
-var symbols = require("./symbols");
-var utils = require("./utils");
-
-var greekCapitals = [
-    "\\Gamma",
-    "\\Delta",
-    "\\Theta",
-    "\\Lambda",
-    "\\Xi",
-    "\\Pi",
-    "\\Sigma",
-    "\\Upsilon",
-    "\\Phi",
-    "\\Psi",
-    "\\Omega"
-];
-
-// The following have to be loaded from Main-Italic font, using class mainit
-var mainitLetters = [
-    "\u0131",   // dotless i, \imath
-    "\u0237",   // dotless j, \jmath
-    "\u00a3"   // \pounds
-];
-
-/**
- * Makes a symbolNode after translation via the list of symbols in symbols.js.
- * Correctly pulls out metrics for the character, and optionally takes a list of
- * classes to be attached to the node.
- *
- * TODO: make argument order closer to makeSpan
- * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which
- * should if present come first in `classes`.
- */
-var makeSymbol = function(value, fontFamily, mode, options, classes) {
-    // Replace the value with its replaced value from symbol.js
-    if (symbols[mode][value] && symbols[mode][value].replace) {
-        value = symbols[mode][value].replace;
-    }
-
-    var metrics = fontMetrics.getCharacterMetrics(value, fontFamily);
-
-    var symbolNode;
-    if (metrics) {
-        var italic = metrics.italic;
-        if (mode === "text") {
-            italic = 0;
-        }
-        symbolNode = new domTree.symbolNode(
-            value, metrics.height, metrics.depth, italic, metrics.skew,
-            classes);
-    } else {
-        // TODO(emily): Figure out a good way to only print this in development
-        typeof console !== "undefined" && console.warn(
-            "No character metrics for '" + value + "' in style '" +
-                fontFamily + "'");
-        symbolNode = new domTree.symbolNode(value, 0, 0, 0, 0, classes);
-    }
-
-    if (options) {
-        if (options.style.isTight()) {
-            symbolNode.classes.push("mtight");
-        }
-        if (options.getColor()) {
-            symbolNode.style.color = options.getColor();
-        }
-    }
-
-    return symbolNode;
-};
-
-/**
- * Makes a symbol in Main-Regular or AMS-Regular.
- * Used for rel, bin, open, close, inner, and punct.
- */
-var mathsym = function(value, mode, options, classes) {
-    // Decide what font to render the symbol in by its entry in the symbols
-    // table.
-    // Have a special case for when the value = \ because the \ is used as a
-    // textord in unsupported command errors but cannot be parsed as a regular
-    // text ordinal and is therefore not present as a symbol in the symbols
-    // table for text
-    if (value === "\\" || symbols[mode][value].font === "main") {
-        return makeSymbol(value, "Main-Regular", mode, options, classes);
-    } else {
-        return makeSymbol(
-            value, "AMS-Regular", mode, options, classes.concat(["amsrm"]));
-    }
-};
-
-/**
- * Makes a symbol in the default font for mathords and textords.
- */
-var mathDefault = function(value, mode, options, classes, type) {
-    if (type === "mathord") {
-        return mathit(value, mode, options, classes);
-    } else if (type === "textord") {
-        return makeSymbol(
-            value, "Main-Regular", mode, options, classes.concat(["mathrm"]));
-    } else {
-        throw new Error("unexpected type: " + type + " in mathDefault");
-    }
-};
-
-/**
- * Makes a symbol in the italic math font.
- */
-var mathit = function(value, mode, options, classes) {
-    if (/[0-9]/.test(value.charAt(0)) ||
-            // glyphs for \imath and \jmath do not exist in Math-Italic so we
-            // need to use Main-Italic instead
-            utils.contains(mainitLetters, value) ||
-            utils.contains(greekCapitals, value)) {
-        return makeSymbol(
-            value, "Main-Italic", mode, options, classes.concat(["mainit"]));
-    } else {
-        return makeSymbol(
-            value, "Math-Italic", mode, options, classes.concat(["mathit"]));
-    }
-};
-
-/**
- * Makes either a mathord or textord in the correct font and color.
- */
-var makeOrd = function(group, options, type) {
-    var mode = group.mode;
-    var value = group.value;
-    if (symbols[mode][value] && symbols[mode][value].replace) {
-        value = symbols[mode][value].replace;
-    }
-
-    var classes = ["mord"];
-
-    var font = options.font;
-    if (font) {
-        if (font === "mathit" || utils.contains(mainitLetters, value)) {
-            return mathit(value, mode, options, classes);
-        } else {
-            var fontName = fontMap[font].fontName;
-            if (fontMetrics.getCharacterMetrics(value, fontName)) {
-                return makeSymbol(
-                    value, fontName, mode, options, classes.concat([font]));
-            } else {
-                return mathDefault(value, mode, options, classes, type);
-            }
-        }
-    } else {
-        return mathDefault(value, mode, options, classes, type);
-    }
-};
-
-/**
- * Calculate the height, depth, and maxFontSize of an element based on its
- * children.
- */
-var sizeElementFromChildren = function(elem) {
-    var height = 0;
-    var depth = 0;
-    var maxFontSize = 0;
-
-    if (elem.children) {
-        for (var i = 0; i < elem.children.length; i++) {
-            if (elem.children[i].height > height) {
-                height = elem.children[i].height;
-            }
-            if (elem.children[i].depth > depth) {
-                depth = elem.children[i].depth;
-            }
-            if (elem.children[i].maxFontSize > maxFontSize) {
-                maxFontSize = elem.children[i].maxFontSize;
-            }
-        }
-    }
-
-    elem.height = height;
-    elem.depth = depth;
-    elem.maxFontSize = maxFontSize;
-};
-
-/**
- * Makes a span with the given list of classes, list of children, and options.
- *
- * TODO: Ensure that `options` is always provided (currently some call sites
- * don't pass it).
- * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which
- * should if present come first in `classes`.
- */
-var makeSpan = function(classes, children, options) {
-    var span = new domTree.span(classes, children, options);
-
-    sizeElementFromChildren(span);
-
-    return span;
-};
-
-/**
- * Prepends the given children to the given span, updating height, depth, and
- * maxFontSize.
- */
-var prependChildren = function(span, children) {
-    span.children = children.concat(span.children);
-
-    sizeElementFromChildren(span);
-};
-
-/**
- * Makes a document fragment with the given list of children.
- */
-var makeFragment = function(children) {
-    var fragment = new domTree.documentFragment(children);
-
-    sizeElementFromChildren(fragment);
-
-    return fragment;
-};
-
-/**
- * Makes an element placed in each of the vlist elements to ensure that each
- * element has the same max font size. To do this, we create a zero-width space
- * with the correct font size.
- */
-var makeFontSizer = function(options, fontSize) {
-    var fontSizeInner = makeSpan([], [new domTree.symbolNode("\u200b")]);
-    fontSizeInner.style.fontSize =
-        (fontSize / options.style.sizeMultiplier) + "em";
-
-    var fontSizer = makeSpan(
-        ["fontsize-ensurer", "reset-" + options.size, "size5"],
-        [fontSizeInner]);
-
-    return fontSizer;
-};
-
-/**
- * Makes a vertical list by stacking elements and kerns on top of each other.
- * Allows for many different ways of specifying the positioning method.
- *
- * Arguments:
- *  - children: A list of child or kern nodes to be stacked on top of each other
- *              (i.e. the first element will be at the bottom, and the last at
- *              the top). Element nodes are specified as
- *                {type: "elem", elem: node}
- *              while kern nodes are specified as
- *                {type: "kern", size: size}
- *  - positionType: The method by which the vlist should be positioned. Valid
- *                  values are:
- *                   - "individualShift": The children list only contains elem
- *                                        nodes, and each node contains an extra
- *                                        "shift" value of how much it should be
- *                                        shifted (note that shifting is always
- *                                        moving downwards). positionData is
- *                                        ignored.
- *                   - "top": The positionData specifies the topmost point of
- *                            the vlist (note this is expected to be a height,
- *                            so positive values move up)
- *                   - "bottom": The positionData specifies the bottommost point
- *                               of the vlist (note this is expected to be a
- *                               depth, so positive values move down
- *                   - "shift": The vlist will be positioned such that its
- *                              baseline is positionData away from the baseline
- *                              of the first child. Positive values move
- *                              downwards.
- *                   - "firstBaseline": The vlist will be positioned such that
- *                                      its baseline is aligned with the
- *                                      baseline of the first child.
- *                                      positionData is ignored. (this is
- *                                      equivalent to "shift" with
- *                                      positionData=0)
- *  - positionData: Data used in different ways depending on positionType
- *  - options: An Options object
- *
- */
-var makeVList = function(children, positionType, positionData, options) {
-    var depth;
-    var currPos;
-    var i;
-    if (positionType === "individualShift") {
-        var oldChildren = children;
-        children = [oldChildren[0]];
-
-        // Add in kerns to the list of children to get each element to be
-        // shifted to the correct specified shift
-        depth = -oldChildren[0].shift - oldChildren[0].elem.depth;
-        currPos = depth;
-        for (i = 1; i < oldChildren.length; i++) {
-            var diff = -oldChildren[i].shift - currPos -
-                oldChildren[i].elem.depth;
-            var size = diff -
-                (oldChildren[i - 1].elem.height +
-                 oldChildren[i - 1].elem.depth);
-
-            currPos = currPos + diff;
-
-            children.push({type: "kern", size: size});
-            children.push(oldChildren[i]);
-        }
-    } else if (positionType === "top") {
-        // We always start at the bottom, so calculate the bottom by adding up
-        // all the sizes
-        var bottom = positionData;
-        for (i = 0; i < children.length; i++) {
-            if (children[i].type === "kern") {
-                bottom -= children[i].size;
-            } else {
-                bottom -= children[i].elem.height + children[i].elem.depth;
-            }
-        }
-        depth = bottom;
-    } else if (positionType === "bottom") {
-        depth = -positionData;
-    } else if (positionType === "shift") {
-        depth = -children[0].elem.depth - positionData;
-    } else if (positionType === "firstBaseline") {
-        depth = -children[0].elem.depth;
-    } else {
-        depth = 0;
-    }
-
-    // Make the fontSizer
-    var maxFontSize = 0;
-    for (i = 0; i < children.length; i++) {
-        if (children[i].type === "elem") {
-            maxFontSize = Math.max(maxFontSize, children[i].elem.maxFontSize);
-        }
-    }
-    var fontSizer = makeFontSizer(options, maxFontSize);
-
-    // Create a new list of actual children at the correct offsets
-    var realChildren = [];
-    currPos = depth;
-    for (i = 0; i < children.length; i++) {
-        if (children[i].type === "kern") {
-            currPos += children[i].size;
-        } else {
-            var child = children[i].elem;
-
-            var shift = -child.depth - currPos;
-            currPos += child.height + child.depth;
-
-            var childWrap = makeSpan([], [fontSizer, child]);
-            childWrap.height -= shift;
-            childWrap.depth += shift;
-            childWrap.style.top = shift + "em";
-
-            realChildren.push(childWrap);
-        }
-    }
-
-    // Add in an element at the end with no offset to fix the calculation of
-    // baselines in some browsers (namely IE, sometimes safari)
-    var baselineFix = makeSpan(
-        ["baseline-fix"], [fontSizer, new domTree.symbolNode("\u200b")]);
-    realChildren.push(baselineFix);
-
-    var vlist = makeSpan(["vlist"], realChildren);
-    // Fix the final height and depth, in case there were kerns at the ends
-    // since the makeSpan calculation won't take that in to account.
-    vlist.height = Math.max(currPos, vlist.height);
-    vlist.depth = Math.max(-depth, vlist.depth);
-    return vlist;
-};
-
-// A table of size -> font size for the different sizing functions
-var sizingMultiplier = {
-    size1: 0.5,
-    size2: 0.7,
-    size3: 0.8,
-    size4: 0.9,
-    size5: 1.0,
-    size6: 1.2,
-    size7: 1.44,
-    size8: 1.73,
-    size9: 2.07,
-    size10: 2.49
-};
-
-// A map of spacing functions to their attributes, like size and corresponding
-// CSS class
-var spacingFunctions = {
-    "\\qquad": {
-        size: "2em",
-        className: "qquad"
-    },
-    "\\quad": {
-        size: "1em",
-        className: "quad"
-    },
-    "\\enspace": {
-        size: "0.5em",
-        className: "enspace"
-    },
-    "\\;": {
-        size: "0.277778em",
-        className: "thickspace"
-    },
-    "\\:": {
-        size: "0.22222em",
-        className: "mediumspace"
-    },
-    "\\,": {
-        size: "0.16667em",
-        className: "thinspace"
-    },
-    "\\!": {
-        size: "-0.16667em",
-        className: "negativethinspace"
-    }
-};
-
-/**
- * Maps TeX font commands to objects containing:
- * - variant: string used for "mathvariant" attribute in buildMathML.js
- * - fontName: the "style" parameter to fontMetrics.getCharacterMetrics
- */
-// A map between tex font commands an MathML mathvariant attribute values
-var fontMap = {
-    // styles
-    "mathbf": {
-        variant: "bold",
-        fontName: "Main-Bold"
-    },
-    "mathrm": {
-        variant: "normal",
-        fontName: "Main-Regular"
-    },
-    "textit": {
-        variant: "italic",
-        fontName: "Main-Italic"
-    },
-
-    // "mathit" is missing because it requires the use of two fonts: Main-Italic
-    // and Math-Italic.  This is handled by a special case in makeOrd which ends
-    // up calling mathit.
-
-    // families
-    "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"
-    }
-};
-
-module.exports = {
-    fontMap: fontMap,
-    makeSymbol: makeSymbol,
-    mathsym: mathsym,
-    makeSpan: makeSpan,
-    makeFragment: makeFragment,
-    makeVList: makeVList,
-    makeOrd: makeOrd,
-    prependChildren: prependChildren,
-    sizingMultiplier: sizingMultiplier,
-    spacingFunctions: spacingFunctions
-};
-
-},{"./domTree":15,"./fontMetrics":17,"./symbols":23,"./utils":25}],11:[function(require,module,exports){
-/* eslint no-console:0 */
-/**
- * This file does the main work of building a domTree structure from a parse
- * tree. The entry point is the `buildHTML` function, which takes a parse tree.
- * Then, the buildExpression, buildGroup, and various groupTypes functions are
- * called, to produce a final HTML tree.
- */
-
-var ParseError = require("./ParseError");
-var Style = require("./Style");
-
-var buildCommon = require("./buildCommon");
-var delimiter = require("./delimiter");
-var domTree = require("./domTree");
-var fontMetrics = require("./fontMetrics");
-var utils = require("./utils");
-
-var makeSpan = buildCommon.makeSpan;
-
-var isSpace = function(node) {
-    return node instanceof domTree.span && node.classes[0] === "mspace";
-};
-
-// Binary atoms (first class `mbin`) change into ordinary atoms (`mord`)
-// depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6,
-// and the text before Rule 19.
-
-var isBin = function(node) {
-    return node && node.classes[0] === "mbin";
-};
-
-var isBinLeftCanceller = function(node, isRealGroup) {
-    // TODO: This code assumes that a node's math class is the first element
-    // of its `classes` array. A later cleanup should ensure this, for
-    // instance by changing the signature of `makeSpan`.
-    if (node) {
-        return utils.contains(["mbin", "mopen", "mrel", "mop", "mpunct"],
-                              node.classes[0]);
-    } else {
-        return isRealGroup;
-    }
-};
-
-var isBinRightCanceller = function(node, isRealGroup) {
-    if (node) {
-        return utils.contains(["mrel", "mclose", "mpunct"], node.classes[0]);
-    } else {
-        return isRealGroup;
-    }
-};
-
-/**
- * Take a list of nodes, build them in order, and return a list of the built
- * nodes. documentFragments are flattened into their contents, so the
- * returned list contains no fragments. `isRealGroup` is true if `expression`
- * is a real group (no atoms will be added on either side), as opposed to
- * a partial group (e.g. one created by \color).
- */
-var buildExpression = function(expression, options, isRealGroup) {
-    // Parse expressions into `groups`.
-    var groups = [];
-    for (var i = 0; i < expression.length; i++) {
-        var group = expression[i];
-        var output = buildGroup(group, options);
-        if (output instanceof domTree.documentFragment) {
-            Array.prototype.push.apply(groups, output.children);
-        } else {
-            groups.push(output);
-        }
-    }
-    // At this point `groups` consists entirely of `symbolNode`s and `span`s.
-
-    // Explicit spaces (e.g., \;, \,) should be ignored with respect to atom
-    // spacing (e.g., "add thick space between mord and mrel"). Since CSS
-    // adjacency rules implement atom spacing, spaces should be invisible to
-    // CSS. So we splice them out of `groups` and into the atoms themselves.
-    var spaces = null;
-    for (i = 0; i < groups.length; i++) {
-        if (isSpace(groups[i])) {
-            spaces = spaces || [];
-            spaces.push(groups[i]);
-            groups.splice(i, 1);
-            i--;
-        } else if (spaces) {
-            if (groups[i] instanceof domTree.symbolNode) {
-                groups[i] = makeSpan([].concat(groups[i].classes), [groups[i]]);
-            }
-            buildCommon.prependChildren(groups[i], spaces);
-            spaces = null;
-        }
-    }
-    if (spaces) {
-        Array.prototype.push.apply(groups, spaces);
-    }
-
-    // Binary operators change to ordinary symbols in some contexts.
-    for (i = 0; i < groups.length; i++) {
-        if (isBin(groups[i])
-            && (isBinLeftCanceller(groups[i - 1], isRealGroup)
-                || isBinRightCanceller(groups[i + 1], isRealGroup))) {
-            groups[i].classes[0] = "mord";
-        }
-    }
-
-    return groups;
-};
-
-// Return math atom class (mclass) of a domTree.
-var getTypeOfDomTree = function(node) {
-    if (node instanceof domTree.documentFragment) {
-        if (node.children.length) {
-            return getTypeOfDomTree(
-                node.children[node.children.length - 1]);
-        }
-    } else {
-        if (utils.contains(["mord", "mop", "mbin", "mrel", "mopen", "mclose",
-            "mpunct", "minner"], node.classes[0])) {
-            return node.classes[0];
-        }
-    }
-    return null;
-};
-
-/**
- * Sometimes, groups perform special rules when they have superscripts or
- * subscripts attached to them. This function lets the `supsub` group know that
- * its inner element should handle the superscripts and subscripts instead of
- * handling them itself.
- */
-var shouldHandleSupSub = function(group, options) {
-    if (!group) {
-        return false;
-    } else if (group.type === "op") {
-        // Operators handle supsubs differently when they have limits
-        // (e.g. `\displaystyle\sum_2^3`)
-        return group.value.limits &&
-            (options.style.size === Style.DISPLAY.size ||
-            group.value.alwaysHandleSupSub);
-    } else if (group.type === "accent") {
-        return isCharacterBox(group.value.base);
-    } else {
-        return null;
-    }
-};
-
-/**
- * Sometimes we want to pull out the innermost element of a group. In most
- * cases, this will just be the group itself, but when ordgroups and colors have
- * a single element, we want to pull that out.
- */
-var getBaseElem = function(group) {
-    if (!group) {
-        return false;
-    } else if (group.type === "ordgroup") {
-        if (group.value.length === 1) {
-            return getBaseElem(group.value[0]);
-        } else {
-            return group;
-        }
-    } else if (group.type === "color") {
-        if (group.value.value.length === 1) {
-            return getBaseElem(group.value.value[0]);
-        } else {
-            return group;
-        }
-    } else if (group.type === "font") {
-        return getBaseElem(group.value.body);
-    } else {
-        return group;
-    }
-};
-
-/**
- * TeXbook algorithms often reference "character boxes", which are simply groups
- * with a single character in them. To decide if something is a character box,
- * we find its innermost group, and see if it is a single character.
- */
-var isCharacterBox = function(group) {
-    var baseElem = getBaseElem(group);
-
-    // These are all they types of groups which hold single characters
-    return baseElem.type === "mathord" ||
-        baseElem.type === "textord" ||
-        baseElem.type === "bin" ||
-        baseElem.type === "rel" ||
-        baseElem.type === "inner" ||
-        baseElem.type === "open" ||
-        baseElem.type === "close" ||
-        baseElem.type === "punct";
-};
-
-var makeNullDelimiter = function(options, classes) {
-    return makeSpan(classes.concat([
-        "sizing", "reset-" + options.size, "size5",
-        options.style.reset(), Style.TEXT.cls(),
-        "nulldelimiter"]));
-};
-
-/**
- * This is a map of group types to the function used to handle that type.
- * Simpler types come at the beginning, while complicated types come afterwards.
- */
-var groupTypes = {};
-
-groupTypes.mathord = function(group, options) {
-    return buildCommon.makeOrd(group, options, "mathord");
-};
-
-groupTypes.textord = function(group, options) {
-    return buildCommon.makeOrd(group, options, "textord");
-};
-
-groupTypes.bin = function(group, options) {
-    return buildCommon.mathsym(
-        group.value, group.mode, options, ["mbin"]);
-};
-
-groupTypes.rel = function(group, options) {
-    return buildCommon.mathsym(
-        group.value, group.mode, options, ["mrel"]);
-};
-
-groupTypes.open = function(group, options) {
-    return buildCommon.mathsym(
-        group.value, group.mode, options, ["mopen"]);
-};
-
-groupTypes.close = function(group, options) {
-    return buildCommon.mathsym(
-        group.value, group.mode, options, ["mclose"]);
-};
-
-groupTypes.inner = function(group, options) {
-    return buildCommon.mathsym(
-        group.value, group.mode, options, ["minner"]);
-};
-
-groupTypes.punct = function(group, options) {
-    return buildCommon.mathsym(
-        group.value, group.mode, options, ["mpunct"]);
-};
-
-groupTypes.ordgroup = function(group, options) {
-    return makeSpan(
-        ["mord", options.style.cls()],
-        buildExpression(group.value, options.reset(), true),
-        options
-    );
-};
-
-groupTypes.text = function(group, options) {
-    var newOptions = options.withFont(group.value.style);
-    var inner = buildExpression(group.value.body, newOptions, true);
-    for (var i = 0; i < inner.length - 1; i++) {
-        if (inner[i].tryCombine(inner[i + 1])) {
-            inner.splice(i + 1, 1);
-            i--;
-        }
-    }
-    return makeSpan(["mord", "text", newOptions.style.cls()],
-        inner, newOptions);
-};
-
-groupTypes.color = function(group, options) {
-    var elements = buildExpression(
-        group.value.value,
-        options.withColor(group.value.color),
-        false
-    );
-
-    // \color isn't supposed to affect the type of the elements it contains.
-    // To accomplish this, we wrap the results in a fragment, so the inner
-    // elements will be able to directly interact with their neighbors. For
-    // example, `\color{red}{2 +} 3` has the same spacing as `2 + 3`
-    return new buildCommon.makeFragment(elements);
-};
-
-groupTypes.supsub = function(group, options) {
-    // Superscript and subscripts are handled in the TeXbook on page
-    // 445-446, rules 18(a-f).
-
-    // Here is where we defer to the inner group if it should handle
-    // superscripts and subscripts itself.
-    if (shouldHandleSupSub(group.value.base, options)) {
-        return groupTypes[group.value.base.type](group, options);
-    }
-
-    var base = buildGroup(group.value.base, options.reset());
-    var supmid;
-    var submid;
-    var sup;
-    var sub;
-
-    var style = options.style;
-    var newOptions;
-
-    if (group.value.sup) {
-        newOptions = options.withStyle(style.sup());
-        sup = buildGroup(group.value.sup, newOptions);
-        supmid = makeSpan([style.reset(), style.sup().cls()],
-            [sup], newOptions);
-    }
-
-    if (group.value.sub) {
-        newOptions = options.withStyle(style.sub());
-        sub = buildGroup(group.value.sub, newOptions);
-        submid = makeSpan([style.reset(), style.sub().cls()],
-            [sub], newOptions);
-    }
-
-    // Rule 18a
-    var supShift;
-    var subShift;
-    if (isCharacterBox(group.value.base)) {
-        supShift = 0;
-        subShift = 0;
-    } else {
-        supShift = base.height - style.metrics.supDrop;
-        subShift = base.depth + style.metrics.subDrop;
-    }
-
-    // Rule 18c
-    var minSupShift;
-    if (style === Style.DISPLAY) {
-        minSupShift = style.metrics.sup1;
-    } else if (style.cramped) {
-        minSupShift = style.metrics.sup3;
-    } else {
-        minSupShift = style.metrics.sup2;
-    }
-
-    // scriptspace is a font-size-independent size, so scale it
-    // appropriately
-    var multiplier = Style.TEXT.sizeMultiplier *
-            style.sizeMultiplier;
-    var scriptspace =
-        (0.5 / fontMetrics.metrics.ptPerEm) / multiplier + "em";
-
-    var supsub;
-    if (!group.value.sup) {
-        // Rule 18b
-        subShift = Math.max(
-            subShift, style.metrics.sub1,
-            sub.height - 0.8 * style.metrics.xHeight);
-
-        supsub = buildCommon.makeVList([
-            {type: "elem", elem: submid}
-        ], "shift", subShift, options);
-
-        supsub.children[0].style.marginRight = scriptspace;
-
-        // Subscripts shouldn't be shifted by the base's italic correction.
-        // Account for that by shifting the subscript back the appropriate
-        // amount. Note we only do this when the base is a single symbol.
-        if (base instanceof domTree.symbolNode) {
-            supsub.children[0].style.marginLeft = -base.italic + "em";
-        }
-    } else if (!group.value.sub) {
-        // Rule 18c, d
-        supShift = Math.max(supShift, minSupShift,
-            sup.depth + 0.25 * style.metrics.xHeight);
-
-        supsub = buildCommon.makeVList([
-            {type: "elem", elem: supmid}
-        ], "shift", -supShift, options);
-
-        supsub.children[0].style.marginRight = scriptspace;
-    } else {
-        supShift = Math.max(
-            supShift, minSupShift, sup.depth + 0.25 * style.metrics.xHeight);
-        subShift = Math.max(subShift, style.metrics.sub2);
-
-        var ruleWidth = fontMetrics.metrics.defaultRuleThickness;
-
-        // Rule 18e
-        if ((supShift - sup.depth) - (sub.height - subShift) <
-                4 * ruleWidth) {
-            subShift = 4 * ruleWidth - (supShift - sup.depth) + sub.height;
-            var psi = 0.8 * style.metrics.xHeight - (supShift - sup.depth);
-            if (psi > 0) {
-                supShift += psi;
-                subShift -= psi;
-            }
-        }
-
-        supsub = buildCommon.makeVList([
-            {type: "elem", elem: submid, shift: subShift},
-            {type: "elem", elem: supmid, shift: -supShift}
-        ], "individualShift", null, options);
-
-        // See comment above about subscripts not being shifted
-        if (base instanceof domTree.symbolNode) {
-            supsub.children[0].style.marginLeft = -base.italic + "em";
-        }
-
-        supsub.children[0].style.marginRight = scriptspace;
-        supsub.children[1].style.marginRight = scriptspace;
-    }
-
-    // We ensure to wrap the supsub vlist in a span.msupsub to reset text-align
-    var mclass = getTypeOfDomTree(base) || "mord";
-    return makeSpan([mclass],
-        [base, makeSpan(["msupsub"], [supsub])],
-        options);
-};
-
-groupTypes.genfrac = function(group, options) {
-    // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e).
-    // Figure out what style this fraction should be in based on the
-    // function used
-    var style = options.style;
-    if (group.value.size === "display") {
-        style = Style.DISPLAY;
-    } else if (group.value.size === "text") {
-        style = Style.TEXT;
-    }
-
-    var nstyle = style.fracNum();
-    var dstyle = style.fracDen();
-    var newOptions;
-
-    newOptions = options.withStyle(nstyle);
-    var numer = buildGroup(group.value.numer, newOptions);
-    var numerreset = makeSpan([style.reset(), nstyle.cls()],
-        [numer], newOptions);
-
-    newOptions = options.withStyle(dstyle);
-    var denom = buildGroup(group.value.denom, newOptions);
-    var denomreset = makeSpan([style.reset(), dstyle.cls()],
-        [denom], newOptions);
-
-    var ruleWidth;
-    if (group.value.hasBarLine) {
-        ruleWidth = fontMetrics.metrics.defaultRuleThickness /
-            options.style.sizeMultiplier;
-    } else {
-        ruleWidth = 0;
-    }
-
-    // Rule 15b
-    var numShift;
-    var clearance;
-    var denomShift;
-    if (style.size === Style.DISPLAY.size) {
-        numShift = style.metrics.num1;
-        if (ruleWidth > 0) {
-            clearance = 3 * ruleWidth;
-        } else {
-            clearance = 7 * fontMetrics.metrics.defaultRuleThickness;
-        }
-        denomShift = style.metrics.denom1;
-    } else {
-        if (ruleWidth > 0) {
-            numShift = style.metrics.num2;
-            clearance = ruleWidth;
-        } else {
-            numShift = style.metrics.num3;
-            clearance = 3 * fontMetrics.metrics.defaultRuleThickness;
-        }
-        denomShift = style.metrics.denom2;
-    }
-
-    var frac;
-    if (ruleWidth === 0) {
-        // Rule 15c
-        var candidateClearance =
-            (numShift - numer.depth) - (denom.height - denomShift);
-        if (candidateClearance < clearance) {
-            numShift += 0.5 * (clearance - candidateClearance);
-            denomShift += 0.5 * (clearance - candidateClearance);
-        }
-
-        frac = buildCommon.makeVList([
-            {type: "elem", elem: denomreset, shift: denomShift},
-            {type: "elem", elem: numerreset, shift: -numShift}
-        ], "individualShift", null, options);
-    } else {
-        // Rule 15d
-        var axisHeight = style.metrics.axisHeight;
-
-        if ((numShift - numer.depth) - (axisHeight + 0.5 * ruleWidth) <
-                clearance) {
-            numShift +=
-                clearance - ((numShift - numer.depth) -
-                             (axisHeight + 0.5 * ruleWidth));
-        }
-
-        if ((axisHeight - 0.5 * ruleWidth) - (denom.height - denomShift) <
-                clearance) {
-            denomShift +=
-                clearance - ((axisHeight - 0.5 * ruleWidth) -
-                             (denom.height - denomShift));
-        }
-
-        var mid = makeSpan(
-            [options.style.reset(), Style.TEXT.cls(), "frac-line"]);
-        // Manually set the height of the line because its height is
-        // created in CSS
-        mid.height = ruleWidth;
-
-        var midShift = -(axisHeight - 0.5 * ruleWidth);
-
-        frac = buildCommon.makeVList([
-            {type: "elem", elem: denomreset, shift: denomShift},
-            {type: "elem", elem: mid,        shift: midShift},
-            {type: "elem", elem: numerreset, shift: -numShift}
-        ], "individualShift", null, options);
-    }
-
-    // Since we manually change the style sometimes (with \dfrac or \tfrac),
-    // account for the possible size change here.
-    frac.height *= style.sizeMultiplier / options.style.sizeMultiplier;
-    frac.depth *= style.sizeMultiplier / options.style.sizeMultiplier;
-
-    // Rule 15e
-    var delimSize;
-    if (style.size === Style.DISPLAY.size) {
-        delimSize = style.metrics.delim1;
-    } else {
-        delimSize = style.metrics.delim2;
-    }
-
-    var leftDelim;
-    var rightDelim;
-    if (group.value.leftDelim == null) {
-        leftDelim = makeNullDelimiter(options, ["mopen"]);
-    } else {
-        leftDelim = delimiter.customSizedDelim(
-            group.value.leftDelim, delimSize, true,
-            options.withStyle(style), group.mode, ["mopen"]);
-    }
-    if (group.value.rightDelim == null) {
-        rightDelim = makeNullDelimiter(options, ["mclose"]);
-    } else {
-        rightDelim = delimiter.customSizedDelim(
-            group.value.rightDelim, delimSize, true,
-            options.withStyle(style), group.mode, ["mclose"]);
-    }
-
-    return makeSpan(
-        ["mord", options.style.reset(), style.cls()],
-        [leftDelim, makeSpan(["mfrac"], [frac]), rightDelim],
-        options);
-};
-
-var calculateSize = function(sizeValue, style) {
-    var x = sizeValue.number;
-    if (sizeValue.unit === "ex") {
-        x *= style.metrics.emPerEx;
-    } else if (sizeValue.unit === "mu") {
-        x /= 18;
-    }
-    return x;
-};
-
-groupTypes.array = function(group, options) {
-    var r;
-    var c;
-    var nr = group.value.body.length;
-    var nc = 0;
-    var body = new Array(nr);
-
-    var style = options.style;
-
-    // Horizontal spacing
-    var pt = 1 / fontMetrics.metrics.ptPerEm;
-    var arraycolsep = 5 * pt; // \arraycolsep in article.cls
-
-    // Vertical spacing
-    var baselineskip = 12 * pt; // see size10.clo
-    // Default \arraystretch from lttab.dtx
-    // TODO(gagern): may get redefined once we have user-defined macros
-    var arraystretch = utils.deflt(group.value.arraystretch, 1);
-    var arrayskip = arraystretch * baselineskip;
-    var arstrutHeight = 0.7 * arrayskip; // \strutbox in ltfsstrc.dtx and
-    var arstrutDepth = 0.3 * arrayskip;  // \@arstrutbox in lttab.dtx
-
-    var totalHeight = 0;
-    for (r = 0; r < group.value.body.length; ++r) {
-        var inrow = group.value.body[r];
-        var height = arstrutHeight; // \@array adds an \@arstrut
-        var depth = arstrutDepth;   // to each tow (via the template)
-
-        if (nc < inrow.length) {
-            nc = inrow.length;
-        }
-
-        var outrow = new Array(inrow.length);
-        for (c = 0; c < inrow.length; ++c) {
-            var elt = buildGroup(inrow[c], options);
-            if (depth < elt.depth) {
-                depth = elt.depth;
-            }
-            if (height < elt.height) {
-                height = elt.height;
-            }
-            outrow[c] = elt;
-        }
-
-        var gap = 0;
-        if (group.value.rowGaps[r]) {
-            gap = calculateSize(group.value.rowGaps[r].value, style);
-            if (gap > 0) { // \@argarraycr
-                gap += arstrutDepth;
-                if (depth < gap) {
-                    depth = gap; // \@xargarraycr
-                }
-                gap = 0;
-            }
-        }
-
-        outrow.height = height;
-        outrow.depth = depth;
-        totalHeight += height;
-        outrow.pos = totalHeight;
-        totalHeight += depth + gap; // \@yargarraycr
-        body[r] = outrow;
-    }
-
-    var offset = totalHeight / 2 + style.metrics.axisHeight;
-    var colDescriptions = group.value.cols || [];
-    var cols = [];
-    var colSep;
-    var colDescrNum;
-    for (c = 0, colDescrNum = 0;
-         // Continue while either there are more columns or more column
-         // descriptions, so trailing separators don't get lost.
-         c < nc || colDescrNum < colDescriptions.length;
-         ++c, ++colDescrNum) {
-
-        var colDescr = colDescriptions[colDescrNum] || {};
-
-        var firstSeparator = true;
-        while (colDescr.type === "separator") {
-            // If there is more than one separator in a row, add a space
-            // between them.
-            if (!firstSeparator) {
-                colSep = makeSpan(["arraycolsep"], []);
-                colSep.style.width =
-                    fontMetrics.metrics.doubleRuleSep + "em";
-                cols.push(colSep);
-            }
-
-            if (colDescr.separator === "|") {
-                var separator = makeSpan(
-                    ["vertical-separator"],
-                    []);
-                separator.style.height = totalHeight + "em";
-                separator.style.verticalAlign =
-                    -(totalHeight - offset) + "em";
-
-                cols.push(separator);
-            } else {
-                throw new ParseError(
-                    "Invalid separator type: " + colDescr.separator);
-            }
-
-            colDescrNum++;
-            colDescr = colDescriptions[colDescrNum] || {};
-            firstSeparator = false;
-        }
-
-        if (c >= nc) {
-            continue;
-        }
-
-        var sepwidth;
-        if (c > 0 || group.value.hskipBeforeAndAfter) {
-            sepwidth = utils.deflt(colDescr.pregap, arraycolsep);
-            if (sepwidth !== 0) {
-                colSep = makeSpan(["arraycolsep"], []);
-                colSep.style.width = sepwidth + "em";
-                cols.push(colSep);
-            }
-        }
-
-        var col = [];
-        for (r = 0; r < nr; ++r) {
-            var row = body[r];
-            var elem = row[c];
-            if (!elem) {
-                continue;
-            }
-            var shift = row.pos - offset;
-            elem.depth = row.depth;
-            elem.height = row.height;
-            col.push({type: "elem", elem: elem, shift: shift});
-        }
-
-        col = buildCommon.makeVList(col, "individualShift", null, options);
-        col = makeSpan(
-            ["col-align-" + (colDescr.align || "c")],
-            [col]);
-        cols.push(col);
-
-        if (c < nc - 1 || group.value.hskipBeforeAndAfter) {
-            sepwidth = utils.deflt(colDescr.postgap, arraycolsep);
-            if (sepwidth !== 0) {
-                colSep = makeSpan(["arraycolsep"], []);
-                colSep.style.width = sepwidth + "em";
-                cols.push(colSep);
-            }
-        }
-    }
-    body = makeSpan(["mtable"], cols);
-    return makeSpan(["mord"], [body], options);
-};
-
-groupTypes.spacing = function(group, options) {
-    if (group.value === "\\ " || group.value === "\\space" ||
-        group.value === " " || group.value === "~") {
-        // Spaces are generated by adding an actual space. Each of these
-        // things has an entry in the symbols table, so these will be turned
-        // into appropriate outputs.
-        if (group.mode === "text") {
-            return buildCommon.makeOrd(group, options, "textord");
-        } else {
-            return makeSpan(["mspace"],
-                [buildCommon.mathsym(group.value, group.mode, options)],
-                options);
-        }
-    } else {
-        // Other kinds of spaces are of arbitrary width. We use CSS to
-        // generate these.
-        return makeSpan(
-            ["mspace",
-                buildCommon.spacingFunctions[group.value].className],
-            [], options);
-    }
-};
-
-groupTypes.llap = function(group, options) {
-    var inner = makeSpan(
-        ["inner"], [buildGroup(group.value.body, options.reset())]);
-    var fix = makeSpan(["fix"], []);
-    return makeSpan(
-        ["mord", "llap", options.style.cls()], [inner, fix], options);
-};
-
-groupTypes.rlap = function(group, options) {
-    var inner = makeSpan(
-        ["inner"], [buildGroup(group.value.body, options.reset())]);
-    var fix = makeSpan(["fix"], []);
-    return makeSpan(
-        ["mord", "rlap", options.style.cls()], [inner, fix], options);
-};
-
-groupTypes.op = function(group, options) {
-    // Operators are handled in the TeXbook pg. 443-444, rule 13(a).
-    var supGroup;
-    var subGroup;
-    var hasLimits = false;
-    if (group.type === "supsub") {
-        // If we have limits, supsub will pass us its group to handle. Pull
-        // out the superscript and subscript and set the group to the op in
-        // its base.
-        supGroup = group.value.sup;
-        subGroup = group.value.sub;
-        group = group.value.base;
-        hasLimits = true;
-    }
-
-    var style = options.style;
-
-    // Most operators have a large successor symbol, but these don't.
-    var noSuccessor = [
-        "\\smallint"
-    ];
-
-    var large = false;
-    if (style.size === Style.DISPLAY.size &&
-        group.value.symbol &&
-        !utils.contains(noSuccessor, group.value.body)) {
-
-        // Most symbol operators get larger in displaystyle (rule 13)
-        large = true;
-    }
-
-    var base;
-    var baseShift = 0;
-    var slant = 0;
-    if (group.value.symbol) {
-        // If this is a symbol, create the symbol.
-        var fontName = large ? "Size2-Regular" : "Size1-Regular";
-        base = buildCommon.makeSymbol(
-            group.value.body, fontName, "math", options,
-            ["mop", "op-symbol", large ? "large-op" : "small-op"]);
-
-        // Shift the symbol so its center lies on the axis (rule 13). It
-        // appears that our fonts have the centers of the symbols already
-        // almost on the axis, so these numbers are very small. Note we
-        // don't actually apply this here, but instead it is used either in
-        // the vlist creation or separately when there are no limits.
-        baseShift = (base.height - base.depth) / 2 -
-            style.metrics.axisHeight * style.sizeMultiplier;
-
-        // The slant of the symbol is just its italic correction.
-        slant = base.italic;
-    } else if (group.value.value) {
-        // If this is a list, compose that list.
-        var inner = buildExpression(group.value.value, options, true);
-
-        base = makeSpan(["mop"], inner, options);
-    } else {
-        // Otherwise, this is a text operator. Build the text from the
-        // operator's name.
-        // TODO(emily): Add a space in the middle of some of these
-        // operators, like \limsup
-        var output = [];
-        for (var i = 1; i < group.value.body.length; i++) {
-            output.push(buildCommon.mathsym(group.value.body[i], group.mode));
-        }
-        base = makeSpan(["mop"], output, options);
-    }
-
-    if (hasLimits) {
-        // IE 8 clips \int if it is in a display: inline-block. We wrap it
-        // in a new span so it is an inline, and works.
-        base = makeSpan([], [base]);
-
-        var supmid;
-        var supKern;
-        var submid;
-        var subKern;
-        var newOptions;
-        // We manually have to handle the superscripts and subscripts. This,
-        // aside from the kern calculations, is copied from supsub.
-        if (supGroup) {
-            newOptions = options.withStyle(style.sup());
-            var sup = buildGroup(supGroup, newOptions);
-            supmid = makeSpan([style.reset(), style.sup().cls()],
-                [sup], newOptions);
-
-            supKern = Math.max(
-                fontMetrics.metrics.bigOpSpacing1,
-                fontMetrics.metrics.bigOpSpacing3 - sup.depth);
-        }
-
-        if (subGroup) {
-            newOptions = options.withStyle(style.sub());
-            var sub = buildGroup(subGroup, newOptions);
-            submid = makeSpan([style.reset(), style.sub().cls()],
-                [sub], newOptions);
-
-            subKern = Math.max(
-                fontMetrics.metrics.bigOpSpacing2,
-                fontMetrics.metrics.bigOpSpacing4 - sub.height);
-        }
-
-        // Build the final group as a vlist of the possible subscript, base,
-        // and possible superscript.
-        var finalGroup;
-        var top;
-        var bottom;
-        if (!supGroup) {
-            top = base.height - baseShift;
-
-            finalGroup = buildCommon.makeVList([
-                {type: "kern", size: fontMetrics.metrics.bigOpSpacing5},
-                {type: "elem", elem: submid},
-                {type: "kern", size: subKern},
-                {type: "elem", elem: base}
-            ], "top", top, options);
-
-            // Here, we shift the limits by the slant of the symbol. Note
-            // that we are supposed to shift the limits by 1/2 of the slant,
-            // but since we are centering the limits adding a full slant of
-            // margin will shift by 1/2 that.
-            finalGroup.children[0].style.marginLeft = -slant + "em";
-        } else if (!subGroup) {
-            bottom = base.depth + baseShift;
-
-            finalGroup = buildCommon.makeVList([
-                {type: "elem", elem: base},
-                {type: "kern", size: supKern},
-                {type: "elem", elem: supmid},
-                {type: "kern", size: fontMetrics.metrics.bigOpSpacing5}
-            ], "bottom", bottom, options);
-
-            // See comment above about slants
-            finalGroup.children[1].style.marginLeft = slant + "em";
-        } else if (!supGroup && !subGroup) {
-            // This case probably shouldn't occur (this would mean the
-            // supsub was sending us a group with no superscript or
-            // subscript) but be safe.
-            return base;
-        } else {
-            bottom = fontMetrics.metrics.bigOpSpacing5 +
-                submid.height + submid.depth +
-                subKern +
-                base.depth + baseShift;
-
-            finalGroup = buildCommon.makeVList([
-                {type: "kern", size: fontMetrics.metrics.bigOpSpacing5},
-                {type: "elem", elem: submid},
-                {type: "kern", size: subKern},
-                {type: "elem", elem: base},
-                {type: "kern", size: supKern},
-                {type: "elem", elem: supmid},
-                {type: "kern", size: fontMetrics.metrics.bigOpSpacing5}
-            ], "bottom", bottom, options);
-
-            // See comment above about slants
-            finalGroup.children[0].style.marginLeft = -slant + "em";
-            finalGroup.children[2].style.marginLeft = slant + "em";
-        }
-
-        return makeSpan(["mop", "op-limits"], [finalGroup], options);
-    } else {
-        if (group.value.symbol) {
-            base.style.top = baseShift + "em";
-        }
-
-        return base;
-    }
-};
-
-groupTypes.mod = function(group, options) {
-    var inner = [];
-
-    if (group.value.modType === "bmod") {
-        // “\nonscript\mskip-\medmuskip\mkern5mu”
-        if (!options.style.isTight()) {
-            inner.push(makeSpan(
-                ["mspace", "negativemediumspace"], [], options));
-        }
-        inner.push(makeSpan(["mspace", "thickspace"], [], options));
-    } else if (options.style.size === Style.DISPLAY.size) {
-        inner.push(makeSpan(["mspace", "quad"], [], options));
-    } else if (group.value.modType === "mod") {
-        inner.push(makeSpan(["mspace", "twelvemuspace"], [], options));
-    } else {
-        inner.push(makeSpan(["mspace", "eightmuspace"], [], options));
-    }
-
-    if (group.value.modType === "pod" || group.value.modType === "pmod") {
-        inner.push(buildCommon.mathsym("(", group.mode));
-    }
-
-    if (group.value.modType !== "pod") {
-        var modInner = [
-            buildCommon.mathsym("m", group.mode),
-            buildCommon.mathsym("o", group.mode),
-            buildCommon.mathsym("d", group.mode)];
-        if (group.value.modType === "bmod") {
-            inner.push(makeSpan(["mbin"], modInner, options));
-            // “\mkern5mu\nonscript\mskip-\medmuskip”
-            inner.push(makeSpan(["mspace", "thickspace"], [], options));
-            if (!options.style.isTight()) {
-                inner.push(makeSpan(
-                    ["mspace", "negativemediumspace"], [], options));
-            }
-        } else {
-            Array.prototype.push.apply(inner, modInner);
-            inner.push(makeSpan(["mspace", "sixmuspace"], [], options));
-        }
-    }
-
-    if (group.value.value) {
-        Array.prototype.push.apply(inner,
-            buildExpression(group.value.value, options, false));
-    }
-
-    if (group.value.modType === "pod" || group.value.modType === "pmod") {
-        inner.push(buildCommon.mathsym(")", group.mode));
-    }
-
-    return buildCommon.makeFragment(inner);
-};
-
-groupTypes.katex = function(group, options) {
-    // The KaTeX logo. The offsets for the K and a were chosen to look
-    // good, but the offsets for the T, E, and X were taken from the
-    // definition of \TeX in TeX (see TeXbook pg. 356)
-    var k = makeSpan(
-        ["k"], [buildCommon.mathsym("K", group.mode)], options);
-    var a = makeSpan(
-        ["a"], [buildCommon.mathsym("A", group.mode)], options);
-
-    a.height = (a.height + 0.2) * 0.75;
-    a.depth = (a.height - 0.2) * 0.75;
-
-    var t = makeSpan(
-        ["t"], [buildCommon.mathsym("T", group.mode)], options);
-    var e = makeSpan(
-        ["e"], [buildCommon.mathsym("E", group.mode)], options);
-
-    e.height = (e.height - 0.2155);
-    e.depth = (e.depth + 0.2155);
-
-    var x = makeSpan(
-        ["x"], [buildCommon.mathsym("X", group.mode)], options);
-
-    return makeSpan(
-        ["mord", "katex-logo"], [k, a, t, e, x], options);
-};
-
-groupTypes.overline = function(group, options) {
-    // Overlines are handled in the TeXbook pg 443, Rule 9.
-    var style = options.style;
-
-    // Build the inner group in the cramped style.
-    var innerGroup = buildGroup(group.value.body,
-            options.withStyle(style.cramp()));
-
-    var ruleWidth = fontMetrics.metrics.defaultRuleThickness /
-        style.sizeMultiplier;
-
-    // Create the line above the body
-    var line = makeSpan(
-        [style.reset(), Style.TEXT.cls(), "overline-line"]);
-    line.height = ruleWidth;
-    line.maxFontSize = 1.0;
-
-    // Generate the vlist, with the appropriate kerns
-    var vlist = buildCommon.makeVList([
-        {type: "elem", elem: innerGroup},
-        {type: "kern", size: 3 * ruleWidth},
-        {type: "elem", elem: line},
-        {type: "kern", size: ruleWidth}
-    ], "firstBaseline", null, options);
-
-    return makeSpan(["mord", "overline"], [vlist], options);
-};
-
-groupTypes.underline = function(group, options) {
-    // Underlines are handled in the TeXbook pg 443, Rule 10.
-    var style = options.style;
-
-    // Build the inner group.
-    var innerGroup = buildGroup(group.value.body, options);
-
-    var ruleWidth = fontMetrics.metrics.defaultRuleThickness /
-        style.sizeMultiplier;
-
-    // Create the line above the body
-    var line = makeSpan([style.reset(), Style.TEXT.cls(), "underline-line"]);
-    line.height = ruleWidth;
-    line.maxFontSize = 1.0;
-
-    // Generate the vlist, with the appropriate kerns
-    var vlist = buildCommon.makeVList([
-        {type: "kern", size: ruleWidth},
-        {type: "elem", elem: line},
-        {type: "kern", size: 3 * ruleWidth},
-        {type: "elem", elem: innerGroup}
-    ], "top", innerGroup.height, options);
-
-    return makeSpan(["mord", "underline"], [vlist], options);
-};
-
-groupTypes.sqrt = function(group, options) {
-    // Square roots are handled in the TeXbook pg. 443, Rule 11.
-    var style = options.style;
-
-    // First, we do the same steps as in overline to build the inner group
-    // and line
-    var inner = buildGroup(group.value.body, options.withStyle(style.cramp()));
-
-    var ruleWidth = fontMetrics.metrics.defaultRuleThickness /
-        style.sizeMultiplier;
-
-    var line = makeSpan(
-        [style.reset(), Style.TEXT.cls(), "sqrt-line"], [],
-        options);
-    line.height = ruleWidth;
-    line.maxFontSize = 1.0;
-
-    var phi = ruleWidth;
-    if (style.id < Style.TEXT.id) {
-        phi = style.metrics.xHeight;
-    }
-
-    // Calculate the clearance between the body and line
-    var lineClearance = ruleWidth + phi / 4;
-
-    var innerHeight = (inner.height + inner.depth) * style.sizeMultiplier;
-    var minDelimiterHeight = innerHeight + lineClearance + ruleWidth;
-
-    // Create a \surd delimiter of the required minimum size
-    var delim = makeSpan(["sqrt-sign"], [
-        delimiter.customSizedDelim("\\surd", minDelimiterHeight,
-                                   false, options, group.mode)],
-                         options);
-
-    var delimDepth = (delim.height + delim.depth) - ruleWidth;
-
-    // Adjust the clearance based on the delimiter size
-    if (delimDepth > inner.height + inner.depth + lineClearance) {
-        lineClearance =
-            (lineClearance + delimDepth - inner.height - inner.depth) / 2;
-    }
-
-    // Shift the delimiter so that its top lines up with the top of the line
-    var delimShift = -(inner.height + lineClearance + ruleWidth) + delim.height;
-    delim.style.top = delimShift + "em";
-    delim.height -= delimShift;
-    delim.depth += delimShift;
-
-    // We add a special case here, because even when `inner` is empty, we
-    // still get a line. So, we use a simple heuristic to decide if we
-    // should omit the body entirely. (note this doesn't work for something
-    // like `\sqrt{\rlap{x}}`, but if someone is doing that they deserve for
-    // it not to work.
-    var body;
-    if (inner.height === 0 && inner.depth === 0) {
-        body = makeSpan();
-    } else {
-        body = buildCommon.makeVList([
-            {type: "elem", elem: inner},
-            {type: "kern", size: lineClearance},
-            {type: "elem", elem: line},
-            {type: "kern", size: ruleWidth}
-        ], "firstBaseline", null, options);
-    }
-
-    if (!group.value.index) {
-        return makeSpan(["mord", "sqrt"], [delim, body], options);
-    } else {
-        // Handle the optional root index
-
-        // The index is always in scriptscript style
-        var newOptions = options.withStyle(Style.SCRIPTSCRIPT);
-        var root = buildGroup(group.value.index, newOptions);
-        var rootWrap = makeSpan(
-            [style.reset(), Style.SCRIPTSCRIPT.cls()],
-            [root],
-            newOptions);
-
-        // Figure out the height and depth of the inner part
-        var innerRootHeight = Math.max(delim.height, body.height);
-        var innerRootDepth = Math.max(delim.depth, body.depth);
-
-        // The amount the index is shifted by. This is taken from the TeX
-        // source, in the definition of `\r@@t`.
-        var toShift = 0.6 * (innerRootHeight - innerRootDepth);
-
-        // Build a VList with the superscript shifted up correctly
-        var rootVList = buildCommon.makeVList(
-            [{type: "elem", elem: rootWrap}],
-            "shift", -toShift, options);
-        // Add a class surrounding it so we can add on the appropriate
-        // kerning
-        var rootVListWrap = makeSpan(["root"], [rootVList]);
-
-        return makeSpan(["mord", "sqrt"],
-            [rootVListWrap, delim, body], options);
-    }
-};
-
-groupTypes.sizing = function(group, options) {
-    // Handle sizing operators like \Huge. Real TeX doesn't actually allow
-    // these functions inside of math expressions, so we do some special
-    // handling.
-    var inner = buildExpression(group.value.value,
-            options.withSize(group.value.size), false);
-
-    // Compute the correct maxFontSize.
-    var style = options.style;
-    var fontSize = buildCommon.sizingMultiplier[group.value.size];
-    fontSize = fontSize * style.sizeMultiplier;
-
-    // Add size-resetting classes to the inner list and set maxFontSize
-    // manually. Handle nested size changes.
-    for (var i = 0; i < inner.length; i++) {
-        var pos = utils.indexOf(inner[i].classes, "sizing");
-        if (pos < 0) {
-            inner[i].classes.push("sizing", "reset-" + options.size,
-                                  group.value.size, style.cls());
-            inner[i].maxFontSize = fontSize;
-        } else if (inner[i].classes[pos + 1] === "reset-" + group.value.size) {
-            // This is a nested size change: e.g., inner[i] is the "b" in
-            // `\Huge a \small b`. Override the old size (the `reset-` class)
-            // but not the new size.
-            inner[i].classes[pos + 1] = "reset-" + options.size;
-        }
-    }
-
-    return buildCommon.makeFragment(inner);
-};
-
-groupTypes.styling = function(group, options) {
-    // Style changes are handled in the TeXbook on pg. 442, Rule 3.
-
-    // Figure out what style we're changing to.
-    var styleMap = {
-        "display": Style.DISPLAY,
-        "text": Style.TEXT,
-        "script": Style.SCRIPT,
-        "scriptscript": Style.SCRIPTSCRIPT
-    };
-
-    var newStyle = styleMap[group.value.style];
-    var newOptions = options.withStyle(newStyle);
-
-    // Build the inner expression in the new style.
-    var inner = buildExpression(
-        group.value.value, newOptions, false);
-
-    // Add style-resetting classes to the inner list. Handle nested changes.
-    for (var i = 0; i < inner.length; i++) {
-        var pos = utils.indexOf(inner[i].classes, newStyle.reset());
-        if (pos < 0) {
-            inner[i].classes.push(options.style.reset(), newStyle.cls());
-        } else {
-            // This is a nested style change, as `\textstyle a\scriptstyle b`.
-            // Only override the old style (the reset class).
-            inner[i].classes[pos] = options.style.reset();
-        }
-    }
-
-    return new buildCommon.makeFragment(inner);
-};
-
-groupTypes.font = function(group, options) {
-    var font = group.value.font;
-    return buildGroup(group.value.body, options.withFont(font));
-};
-
-groupTypes.delimsizing = function(group, options) {
-    var delim = group.value.value;
-
-    if (delim === ".") {
-        // Empty delimiters still count as elements, even though they don't
-        // show anything.
-        return makeSpan([group.value.mclass]);
-    }
-
-    // Use delimiter.sizedDelim to generate the delimiter.
-    return delimiter.sizedDelim(
-            delim, group.value.size, options, group.mode,
-            [group.value.mclass]);
-};
-
-groupTypes.leftright = function(group, options) {
-    // Build the inner expression
-    var inner = buildExpression(group.value.body, options.reset(), true);
-
-    var innerHeight = 0;
-    var innerDepth = 0;
-    var hadMiddle = false;
-
-    // Calculate its height and depth
-    for (var i = 0; i < inner.length; i++) {
-        if (inner[i].isMiddle) {
-            hadMiddle = true;
-        } else {
-            innerHeight = Math.max(inner[i].height, innerHeight);
-            innerDepth = Math.max(inner[i].depth, innerDepth);
-        }
-    }
-
-    var style = options.style;
-
-    // The size of delimiters is the same, regardless of what style we are
-    // in. Thus, to correctly calculate the size of delimiter we need around
-    // a group, we scale down the inner size based on the size.
-    innerHeight *= style.sizeMultiplier;
-    innerDepth *= style.sizeMultiplier;
-
-    var leftDelim;
-    if (group.value.left === ".") {
-        // Empty delimiters in \left and \right make null delimiter spaces.
-        leftDelim = makeNullDelimiter(options, ["mopen"]);
-    } else {
-        // Otherwise, use leftRightDelim to generate the correct sized
-        // delimiter.
-        leftDelim = delimiter.leftRightDelim(
-            group.value.left, innerHeight, innerDepth, options,
-            group.mode, ["mopen"]);
-    }
-    // Add it to the beginning of the expression
-    inner.unshift(leftDelim);
-
-    // Handle middle delimiters
-    if (hadMiddle) {
-        for (i = 1; i < inner.length; i++) {
-            if (inner[i].isMiddle) {
-                // Apply the options that were active when \middle was called
-                inner[i] = delimiter.leftRightDelim(
-                    inner[i].isMiddle.value, innerHeight, innerDepth,
-                    inner[i].isMiddle.options, group.mode, []);
-            }
-        }
-    }
-
-    var rightDelim;
-    // Same for the right delimiter
-    if (group.value.right === ".") {
-        rightDelim = makeNullDelimiter(options, ["mclose"]);
-    } else {
-        rightDelim = delimiter.leftRightDelim(
-            group.value.right, innerHeight, innerDepth, options,
-            group.mode, ["mclose"]);
-    }
-    // Add it to the end of the expression.
-    inner.push(rightDelim);
-
-    return makeSpan(
-        ["minner", style.cls()], inner, options);
-};
-
-groupTypes.middle = function(group, options) {
-    var middleDelim;
-    if (group.value.value === ".") {
-        middleDelim = makeNullDelimiter(options, []);
-    } else {
-        middleDelim = delimiter.sizedDelim(
-            group.value.value, 1, options,
-            group.mode, []);
-        middleDelim.isMiddle = {value: group.value.value, options: options};
-    }
-    return middleDelim;
-};
-
-groupTypes.rule = function(group, options) {
-    // Make an empty span for the rule
-    var rule = makeSpan(["mord", "rule"], [], options);
-    var style = options.style;
-
-    // Calculate the shift, width, and height of the rule, and account for units
-    var shift = 0;
-    if (group.value.shift) {
-        shift = calculateSize(group.value.shift, style);
-    }
-
-    var width = calculateSize(group.value.width, style);
-    var height = calculateSize(group.value.height, style);
-
-    // The sizes of rules are absolute, so make it larger if we are in a
-    // smaller style.
-    shift /= style.sizeMultiplier;
-    width /= style.sizeMultiplier;
-    height /= style.sizeMultiplier;
-
-    // Style the rule to the right size
-    rule.style.borderRightWidth = width + "em";
-    rule.style.borderTopWidth = height + "em";
-    rule.style.bottom = shift + "em";
-
-    // Record the height and width
-    rule.width = width;
-    rule.height = height + shift;
-    rule.depth = -shift;
-
-    return rule;
-};
-
-groupTypes.kern = function(group, options) {
-    // Make an empty span for the rule
-    var rule = makeSpan(["mord", "rule"], [], options);
-    var style = options.style;
-
-    var dimension = 0;
-    if (group.value.dimension) {
-        dimension = calculateSize(group.value.dimension, style);
-    }
-
-    dimension /= style.sizeMultiplier;
-
-    rule.style.marginLeft = dimension + "em";
-
-    return rule;
-};
-
-groupTypes.accent = function(group, options) {
-    // Accents are handled in the TeXbook pg. 443, rule 12.
-    var base = group.value.base;
-    var style = options.style;
-
-    var supsubGroup;
-    if (group.type === "supsub") {
-        // If our base is a character box, and we have superscripts and
-        // subscripts, the supsub will defer to us. In particular, we want
-        // to attach the superscripts and subscripts to the inner body (so
-        // that the position of the superscripts and subscripts won't be
-        // affected by the height of the accent). We accomplish this by
-        // sticking the base of the accent into the base of the supsub, and
-        // rendering that, while keeping track of where the accent is.
-
-        // The supsub group is the group that was passed in
-        var supsub = group;
-        // The real accent group is the base of the supsub group
-        group = supsub.value.base;
-        // The character box is the base of the accent group
-        base = group.value.base;
-        // Stick the character box into the base of the supsub group
-        supsub.value.base = base;
-
-        // Rerender the supsub group with its new base, and store that
-        // result.
-        supsubGroup = buildGroup(
-            supsub, options.reset());
-    }
-
-    // Build the base group
-    var body = buildGroup(
-        base, options.withStyle(style.cramp()));
-
-    // Calculate the skew of the accent. This is based on the line "If the
-    // nucleus is not a single character, let s = 0; otherwise set s to the
-    // kern amount for the nucleus followed by the \skewchar of its font."
-    // Note that our skew metrics are just the kern between each character
-    // and the skewchar.
-    var skew;
-    if (isCharacterBox(base)) {
-        // If the base is a character box, then we want the skew of the
-        // innermost character. To do that, we find the innermost character:
-        var baseChar = getBaseElem(base);
-        // Then, we render its group to get the symbol inside it
-        var baseGroup = buildGroup(
-            baseChar, options.withStyle(style.cramp()));
-        // Finally, we pull the skew off of the symbol.
-        skew = baseGroup.skew;
-        // Note that we now throw away baseGroup, because the layers we
-        // removed with getBaseElem might contain things like \color which
-        // we can't get rid of.
-        // TODO(emily): Find a better way to get the skew
-    } else {
-        skew = 0;
-    }
-
-    // calculate the amount of space between the body and the accent
-    var clearance = Math.min(
-        body.height,
-        style.metrics.xHeight);
-
-    // Build the accent
-    var accent = buildCommon.makeSymbol(
-        group.value.accent, "Main-Regular", "math", options);
-    // Remove the italic correction of the accent, because it only serves to
-    // shift the accent over to a place we don't want.
-    accent.italic = 0;
-
-    // The \vec character that the fonts use is a combining character, and
-    // thus shows up much too far to the left. To account for this, we add a
-    // specific class which shifts the accent over to where we want it.
-    // TODO(emily): Fix this in a better way, like by changing the font
-    var vecClass = group.value.accent === "\\vec" ? "accent-vec" : null;
-
-    var accentBody = makeSpan(["accent-body", vecClass], [
-        makeSpan([], [accent])]);
-
-    accentBody = buildCommon.makeVList([
-        {type: "elem", elem: body},
-        {type: "kern", size: -clearance},
-        {type: "elem", elem: accentBody}
-    ], "firstBaseline", null, options);
-
-    // Shift the accent over by the skew. Note we shift by twice the skew
-    // because we are centering the accent, so by adding 2*skew to the left,
-    // we shift it to the right by 1*skew.
-    accentBody.children[1].style.marginLeft = 2 * skew + "em";
-
-    var accentWrap = makeSpan(["mord", "accent"], [accentBody], options);
-
-    if (supsubGroup) {
-        // Here, we replace the "base" child of the supsub with our newly
-        // generated accent.
-        supsubGroup.children[0] = accentWrap;
-
-        // Since we don't rerun the height calculation after replacing the
-        // accent, we manually recalculate height.
-        supsubGroup.height = Math.max(accentWrap.height, supsubGroup.height);
-
-        // Accents should always be ords, even when their innards are not.
-        supsubGroup.classes[0] = "mord";
-
-        return supsubGroup;
-    } else {
-        return accentWrap;
-    }
-};
-
-groupTypes.phantom = function(group, options) {
-    var elements = buildExpression(
-        group.value.value,
-        options.withPhantom(),
-        false
-    );
-
-    // \phantom isn't supposed to affect the elements it contains.
-    // See "color" for more details.
-    return new buildCommon.makeFragment(elements);
-};
-
-groupTypes.mclass = function(group, options) {
-    var elements = buildExpression(group.value.value, options, true);
-
-    return makeSpan([group.value.mclass], elements, options);
-};
-
-/**
- * buildGroup is the function that takes a group and calls the correct groupType
- * function for it. It also handles the interaction of size and style changes
- * between parents and children.
- */
-var buildGroup = function(group, options) {
-    if (!group) {
-        return makeSpan();
-    }
-
-    if (groupTypes[group.type]) {
-        // Call the groupTypes function
-        var groupNode = groupTypes[group.type](group, options);
-        var multiplier;
-
-        // If the style changed between the parent and the current group,
-        // account for the size difference
-        if (options.style !== options.parentStyle) {
-            multiplier = options.style.sizeMultiplier /
-                    options.parentStyle.sizeMultiplier;
-
-            groupNode.height *= multiplier;
-            groupNode.depth *= multiplier;
-        }
-
-        // If the size changed between the parent and the current group, account
-        // for that size difference.
-        if (options.size !== options.parentSize) {
-            multiplier = buildCommon.sizingMultiplier[options.size] /
-                    buildCommon.sizingMultiplier[options.parentSize];
-
-            groupNode.height *= multiplier;
-            groupNode.depth *= multiplier;
-        }
-
-        return groupNode;
-    } else {
-        throw new ParseError(
-            "Got group of unknown type: '" + group.type + "'");
-    }
-};
-
-/**
- * Take an entire parse tree, and build it into an appropriate set of HTML
- * nodes.
- */
-var buildHTML = function(tree, options) {
-    // buildExpression is destructive, so we need to make a clone
-    // of the incoming tree so that it isn't accidentally changed
-    tree = JSON.parse(JSON.stringify(tree));
-
-    // Build the expression contained in the tree
-    var expression = buildExpression(tree, options, true);
-    var body = makeSpan(["base", options.style.cls()], expression, options);
-
-    // Add struts, which ensure that the top of the HTML element falls at the
-    // height of the expression, and the bottom of the HTML element falls at the
-    // depth of the expression.
-    var topStrut = makeSpan(["strut"]);
-    var bottomStrut = makeSpan(["strut", "bottom"]);
-
-    topStrut.style.height = body.height + "em";
-    bottomStrut.style.height = (body.height + body.depth) + "em";
-    // We'd like to use `vertical-align: top` but in IE 9 this lowers the
-    // baseline of the box to the bottom of this strut (instead staying in the
-    // normal place) so we use an absolute value for vertical-align instead
-    bottomStrut.style.verticalAlign = -body.depth + "em";
-
-    // Wrap the struts and body together
-    var htmlNode = makeSpan(["katex-html"], [topStrut, bottomStrut, body]);
-
-    htmlNode.setAttribute("aria-hidden", "true");
-
-    return htmlNode;
-};
-
-module.exports = buildHTML;
-
-},{"./ParseError":6,"./Style":9,"./buildCommon":10,"./delimiter":14,"./domTree":15,"./fontMetrics":17,"./utils":25}],12:[function(require,module,exports){
-/**
- * This file converts a parse tree into a cooresponding MathML tree. The main
- * entry point is the `buildMathML` function, which takes a parse tree from the
- * parser.
- */
-
-var buildCommon = require("./buildCommon");
-var fontMetrics = require("./fontMetrics");
-var mathMLTree = require("./mathMLTree");
-var ParseError = require("./ParseError");
-var symbols = require("./symbols");
-var utils = require("./utils");
-
-var makeSpan = buildCommon.makeSpan;
-var fontMap = buildCommon.fontMap;
-
-/**
- * Takes a symbol and converts it into a MathML text node after performing
- * optional replacement from symbols.js.
- */
-var makeText = function(text, mode) {
-    if (symbols[mode][text] && symbols[mode][text].replace) {
-        text = symbols[mode][text].replace;
-    }
-
-    return new mathMLTree.TextNode(text);
-};
-
-/**
- * Returns the math variant as a string or null if none is required.
- */
-var getVariant = function(group, options) {
-    var font = options.font;
-    if (!font) {
-        return null;
-    }
-
-    var mode = group.mode;
-    if (font === "mathit") {
-        return "italic";
-    }
-
-    var value = group.value;
-    if (utils.contains(["\\imath", "\\jmath"], value)) {
-        return null;
-    }
-
-    if (symbols[mode][value] && symbols[mode][value].replace) {
-        value = symbols[mode][value].replace;
-    }
-
-    var fontName = fontMap[font].fontName;
-    if (fontMetrics.getCharacterMetrics(value, fontName)) {
-        return fontMap[options.font].variant;
-    }
-
-    return null;
-};
-
-/**
- * Functions for handling the different types of groups found in the parse
- * tree. Each function should take a parse group and return a MathML node.
- */
-var groupTypes = {};
-
-groupTypes.mathord = function(group, options) {
-    var node = new mathMLTree.MathNode(
-        "mi",
-        [makeText(group.value, group.mode)]);
-
-    var variant = getVariant(group, options);
-    if (variant) {
-        node.setAttribute("mathvariant", variant);
-    }
-    return node;
-};
-
-groupTypes.textord = function(group, options) {
-    var text = makeText(group.value, group.mode);
-
-    var variant = getVariant(group, options) || "normal";
-
-    var node;
-    if (/[0-9]/.test(group.value)) {
-        // TODO(kevinb) merge adjacent <mn> nodes
-        // do it as a post processing step
-        node = new mathMLTree.MathNode("mn", [text]);
-        if (options.font) {
-            node.setAttribute("mathvariant", variant);
-        }
-    } else {
-        node = new mathMLTree.MathNode("mi", [text]);
-        node.setAttribute("mathvariant", variant);
-    }
-
-    return node;
-};
-
-groupTypes.bin = function(group) {
-    var node = new mathMLTree.MathNode(
-        "mo", [makeText(group.value, group.mode)]);
-
-    return node;
-};
-
-groupTypes.rel = function(group) {
-    var node = new mathMLTree.MathNode(
-        "mo", [makeText(group.value, group.mode)]);
-
-    return node;
-};
-
-groupTypes.open = function(group) {
-    var node = new mathMLTree.MathNode(
-        "mo", [makeText(group.value, group.mode)]);
-
-    return node;
-};
-
-groupTypes.close = function(group) {
-    var node = new mathMLTree.MathNode(
-        "mo", [makeText(group.value, group.mode)]);
-
-    return node;
-};
-
-groupTypes.inner = function(group) {
-    var node = new mathMLTree.MathNode(
-        "mo", [makeText(group.value, group.mode)]);
-
-    return node;
-};
-
-groupTypes.punct = function(group) {
-    var node = new mathMLTree.MathNode(
-        "mo", [makeText(group.value, group.mode)]);
-
-    node.setAttribute("separator", "true");
-
-    return node;
-};
-
-groupTypes.ordgroup = function(group, options) {
-    var inner = buildExpression(group.value, options);
-
-    var node = new mathMLTree.MathNode("mrow", inner);
-
-    return node;
-};
-
-groupTypes.text = function(group, options) {
-    var inner = buildExpression(group.value.body, options);
-
-    var node = new mathMLTree.MathNode("mtext", inner);
-
-    return node;
-};
-
-groupTypes.color = function(group, options) {
-    var inner = buildExpression(group.value.value, options);
-
-    var node = new mathMLTree.MathNode("mstyle", inner);
-
-    node.setAttribute("mathcolor", group.value.color);
-
-    return node;
-};
-
-groupTypes.supsub = function(group, options) {
-    var children = [buildGroup(group.value.base, options)];
-
-    if (group.value.sub) {
-        children.push(buildGroup(group.value.sub, options));
-    }
-
-    if (group.value.sup) {
-        children.push(buildGroup(group.value.sup, options));
-    }
-
-    var nodeType;
-    if (!group.value.sub) {
-        nodeType = "msup";
-    } else if (!group.value.sup) {
-        nodeType = "msub";
-    } else {
-        nodeType = "msubsup";
-    }
-
-    var node = new mathMLTree.MathNode(nodeType, children);
-
-    return node;
-};
-
-groupTypes.genfrac = function(group, options) {
-    var node = new mathMLTree.MathNode(
-        "mfrac",
-        [buildGroup(group.value.numer, options),
-            buildGroup(group.value.denom, options)]);
-
-    if (!group.value.hasBarLine) {
-        node.setAttribute("linethickness", "0px");
-    }
-
-    if (group.value.leftDelim != null || group.value.rightDelim != null) {
-        var withDelims = [];
-
-        if (group.value.leftDelim != null) {
-            var leftOp = new mathMLTree.MathNode(
-                "mo", [new mathMLTree.TextNode(group.value.leftDelim)]);
-
-            leftOp.setAttribute("fence", "true");
-
-            withDelims.push(leftOp);
-        }
-
-        withDelims.push(node);
-
-        if (group.value.rightDelim != null) {
-            var rightOp = new mathMLTree.MathNode(
-                "mo", [new mathMLTree.TextNode(group.value.rightDelim)]);
-
-            rightOp.setAttribute("fence", "true");
-
-            withDelims.push(rightOp);
-        }
-
-        var outerNode = new mathMLTree.MathNode("mrow", withDelims);
-
-        return outerNode;
-    }
-
-    return node;
-};
-
-groupTypes.array = function(group, options) {
-    return new mathMLTree.MathNode(
-        "mtable", group.value.body.map(function(row) {
-            return new mathMLTree.MathNode(
-                "mtr", row.map(function(cell) {
-                    return new mathMLTree.MathNode(
-                        "mtd", [buildGroup(cell, options)]);
-                }));
-        }));
-};
-
-groupTypes.sqrt = function(group, options) {
-    var node;
-    if (group.value.index) {
-        node = new mathMLTree.MathNode(
-            "mroot", [
-                buildGroup(group.value.body, options),
-                buildGroup(group.value.index, options)
-            ]);
-    } else {
-        node = new mathMLTree.MathNode(
-            "msqrt", [buildGroup(group.value.body, options)]);
-    }
-
-    return node;
-};
-
-groupTypes.leftright = function(group, options) {
-    var inner = buildExpression(group.value.body, options);
-
-    if (group.value.left !== ".") {
-        var leftNode = new mathMLTree.MathNode(
-            "mo", [makeText(group.value.left, group.mode)]);
-
-        leftNode.setAttribute("fence", "true");
-
-        inner.unshift(leftNode);
-    }
-
-    if (group.value.right !== ".") {
-        var rightNode = new mathMLTree.MathNode(
-            "mo", [makeText(group.value.right, group.mode)]);
-
-        rightNode.setAttribute("fence", "true");
-
-        inner.push(rightNode);
-    }
-
-    var outerNode = new mathMLTree.MathNode("mrow", inner);
-
-    return outerNode;
-};
-
-groupTypes.middle = function(group, options) {
-    var middleNode = new mathMLTree.MathNode(
-        "mo", [makeText(group.value.middle, group.mode)]);
-    middleNode.setAttribute("fence", "true");
-    return middleNode;
-};
-
-groupTypes.accent = function(group, options) {
-    var accentNode = new mathMLTree.MathNode(
-        "mo", [makeText(group.value.accent, group.mode)]);
-
-    var node = new mathMLTree.MathNode(
-        "mover",
-        [buildGroup(group.value.base, options),
-            accentNode]);
-
-    node.setAttribute("accent", "true");
-
-    return node;
-};
-
-groupTypes.spacing = function(group) {
-    var node;
-
-    if (group.value === "\\ " || group.value === "\\space" ||
-        group.value === " " || group.value === "~") {
-        node = new mathMLTree.MathNode(
-            "mtext", [new mathMLTree.TextNode("\u00a0")]);
-    } else {
-        node = new mathMLTree.MathNode("mspace");
-
-        node.setAttribute(
-            "width", buildCommon.spacingFunctions[group.value].size);
-    }
-
-    return node;
-};
-
-groupTypes.op = function(group, options) {
-    var node;
-
-    // TODO(emily): handle big operators using the `largeop` attribute
-
-    if (group.value.symbol) {
-        // This is a symbol. Just add the symbol.
-        node = new mathMLTree.MathNode(
-            "mo", [makeText(group.value.body, group.mode)]);
-    } else if (group.value.value) {
-        // This is an operator with children. Add them.
-        node = new mathMLTree.MathNode(
-            "mo", buildExpression(group.value.value, options));
-    } else {
-        // This is a text operator. Add all of the characters from the
-        // operator's name.
-        // TODO(emily): Add a space in the middle of some of these
-        // operators, like \limsup.
-        node = new mathMLTree.MathNode(
-            "mi", [new mathMLTree.TextNode(group.value.body.slice(1))]);
-    }
-
-    return node;
-};
-
-groupTypes.mod = function(group, options) {
-    var inner = [];
-
-    if (group.value.modType === "pod" || group.value.modType === "pmod") {
-        inner.push(new mathMLTree.MathNode(
-            "mo", [makeText("(", group.mode)]));
-    }
-    if (group.value.modType !== "pod") {
-        inner.push(new mathMLTree.MathNode(
-            "mo", [makeText("mod", group.mode)]));
-    }
-    if (group.value.value) {
-        var space = new mathMLTree.MathNode("mspace");
-        space.setAttribute("width", "0.333333em");
-        inner.push(space);
-        inner = inner.concat(buildExpression(group.value.value, options));
-    }
-    if (group.value.modType === "pod" || group.value.modType === "pmod") {
-        inner.push(new mathMLTree.MathNode(
-            "mo", [makeText(")", group.mode)]));
-    }
-
-    return new mathMLTree.MathNode("mo", inner);
-};
-
-groupTypes.katex = function(group) {
-    var node = new mathMLTree.MathNode(
-        "mtext", [new mathMLTree.TextNode("KaTeX")]);
-
-    return node;
-};
-
-groupTypes.font = function(group, options) {
-    var font = group.value.font;
-    return buildGroup(group.value.body, options.withFont(font));
-};
-
-groupTypes.delimsizing = function(group) {
-    var children = [];
-
-    if (group.value.value !== ".") {
-        children.push(makeText(group.value.value, group.mode));
-    }
-
-    var node = new mathMLTree.MathNode("mo", children);
-
-    if (group.value.mclass === "mopen" ||
-        group.value.mclass === "mclose") {
-        // Only some of the delimsizing functions act as fences, and they
-        // return "mopen" or "mclose" mclass.
-        node.setAttribute("fence", "true");
-    } else {
-        // Explicitly disable fencing if it's not a fence, to override the
-        // defaults.
-        node.setAttribute("fence", "false");
-    }
-
-    return node;
-};
-
-groupTypes.styling = function(group, options) {
-    var inner = buildExpression(group.value.value, options);
-
-    var node = new mathMLTree.MathNode("mstyle", inner);
-
-    var styleAttributes = {
-        "display": ["0", "true"],
-        "text": ["0", "false"],
-        "script": ["1", "false"],
-        "scriptscript": ["2", "false"]
-    };
-
-    var attr = styleAttributes[group.value.style];
-
-    node.setAttribute("scriptlevel", attr[0]);
-    node.setAttribute("displaystyle", attr[1]);
-
-    return node;
-};
-
-groupTypes.sizing = function(group, options) {
-    var inner = buildExpression(group.value.value, options);
-
-    var node = new mathMLTree.MathNode("mstyle", inner);
-
-    // TODO(emily): This doesn't produce the correct size for nested size
-    // changes, because we don't keep state of what style we're currently
-    // in, so we can't reset the size to normal before changing it.  Now
-    // that we're passing an options parameter we should be able to fix
-    // this.
-    node.setAttribute(
-        "mathsize", buildCommon.sizingMultiplier[group.value.size] + "em");
-
-    return node;
-};
-
-groupTypes.overline = function(group, options) {
-    var operator = new mathMLTree.MathNode(
-        "mo", [new mathMLTree.TextNode("\u203e")]);
-    operator.setAttribute("stretchy", "true");
-
-    var node = new mathMLTree.MathNode(
-        "mover",
-        [buildGroup(group.value.body, options),
-            operator]);
-    node.setAttribute("accent", "true");
-
-    return node;
-};
-
-groupTypes.underline = function(group, options) {
-    var operator = new mathMLTree.MathNode(
-        "mo", [new mathMLTree.TextNode("\u203e")]);
-    operator.setAttribute("stretchy", "true");
-
-    var node = new mathMLTree.MathNode(
-        "munder",
-        [buildGroup(group.value.body, options),
-            operator]);
-    node.setAttribute("accentunder", "true");
-
-    return node;
-};
-
-groupTypes.rule = function(group) {
-    // TODO(emily): Figure out if there's an actual way to draw black boxes
-    // in MathML.
-    var node = new mathMLTree.MathNode("mrow");
-
-    return node;
-};
-
-groupTypes.kern = function(group) {
-    // TODO(kevin): Figure out if there's a way to add space in MathML
-    var node = new mathMLTree.MathNode("mrow");
-
-    return node;
-};
-
-groupTypes.llap = function(group, options) {
-    var node = new mathMLTree.MathNode(
-        "mpadded", [buildGroup(group.value.body, options)]);
-
-    node.setAttribute("lspace", "-1width");
-    node.setAttribute("width", "0px");
-
-    return node;
-};
-
-groupTypes.rlap = function(group, options) {
-    var node = new mathMLTree.MathNode(
-        "mpadded", [buildGroup(group.value.body, options)]);
-
-    node.setAttribute("width", "0px");
-
-    return node;
-};
-
-groupTypes.phantom = function(group, options) {
-    var inner = buildExpression(group.value.value, options);
-    return new mathMLTree.MathNode("mphantom", inner);
-};
-
-groupTypes.mclass = function(group, options) {
-    var inner = buildExpression(group.value.value, options);
-    return new mathMLTree.MathNode("mstyle", inner);
-};
-
-/**
- * Takes a list of nodes, builds them, and returns a list of the generated
- * MathML nodes. A little simpler than the HTML version because we don't do any
- * previous-node handling.
- */
-var buildExpression = function(expression, options) {
-    var groups = [];
-    for (var i = 0; i < expression.length; i++) {
-        var group = expression[i];
-        groups.push(buildGroup(group, options));
-    }
-    return groups;
-};
-
-/**
- * Takes a group from the parser and calls the appropriate groupTypes function
- * on it to produce a MathML node.
- */
-var buildGroup = function(group, options) {
-    if (!group) {
-        return new mathMLTree.MathNode("mrow");
-    }
-
-    if (groupTypes[group.type]) {
-        // Call the groupTypes function
-        return groupTypes[group.type](group, options);
-    } else {
-        throw new ParseError(
-            "Got group of unknown type: '" + group.type + "'");
-    }
-};
-
-/**
- * Takes a full parse tree and settings and builds a MathML representation of
- * it. In particular, we put the elements from building the parse tree into a
- * <semantics> tag so we can also include that TeX source as an annotation.
- *
- * Note that we actually return a domTree element with a `<math>` inside it so
- * we can do appropriate styling.
- */
-var buildMathML = function(tree, texExpression, options) {
-    var expression = buildExpression(tree, options);
-
-    // Wrap up the expression in an mrow so it is presented in the semantics
-    // tag correctly.
-    var wrapper = new mathMLTree.MathNode("mrow", expression);
-
-    // Build a TeX annotation of the source
-    var annotation = new mathMLTree.MathNode(
-        "annotation", [new mathMLTree.TextNode(texExpression)]);
-
-    annotation.setAttribute("encoding", "application/x-tex");
-
-    var semantics = new mathMLTree.MathNode(
-        "semantics", [wrapper, annotation]);
-
-    var math = new mathMLTree.MathNode("math", [semantics]);
-
-    // You can't style <math> nodes, so we wrap the node in a span.
-    return makeSpan(["katex-mathml"], [math]);
-};
-
-module.exports = buildMathML;
-
-},{"./ParseError":6,"./buildCommon":10,"./fontMetrics":17,"./mathMLTree":20,"./symbols":23,"./utils":25}],13:[function(require,module,exports){
-var buildHTML = require("./buildHTML");
-var buildMathML = require("./buildMathML");
-var buildCommon = require("./buildCommon");
-var Options = require("./Options");
-var Settings = require("./Settings");
-var Style = require("./Style");
-
-var makeSpan = buildCommon.makeSpan;
-
-var buildTree = function(tree, expression, settings) {
-    settings = settings || new Settings({});
-
-    var startStyle = Style.TEXT;
-    if (settings.displayMode) {
-        startStyle = Style.DISPLAY;
-    }
-
-    // Setup the default options
-    var options = new Options({
-        style: startStyle,
-        size: "size5"
-    });
-
-    // `buildHTML` sometimes messes with the parse tree (like turning bins ->
-    // ords), so we build the MathML version first.
-    var mathMLNode = buildMathML(tree, expression, options);
-    var htmlNode = buildHTML(tree, options);
-
-    var katexNode = makeSpan(["katex"], [
-        mathMLNode, htmlNode
-    ]);
-
-    if (settings.displayMode) {
-        return makeSpan(["katex-display"], [katexNode]);
-    } else {
-        return katexNode;
-    }
-};
-
-module.exports = buildTree;
-
-},{"./Options":5,"./Settings":8,"./Style":9,"./buildCommon":10,"./buildHTML":11,"./buildMathML":12}],14:[function(require,module,exports){
-/**
- * This file deals with creating delimiters of various sizes. The TeXbook
- * discusses these routines on page 441-442, in the "Another subroutine sets box
- * x to a specified variable delimiter" paragraph.
- *
- * There are three main routines here. `makeSmallDelim` makes a delimiter in the
- * normal font, but in either text, script, or scriptscript style.
- * `makeLargeDelim` makes a delimiter in textstyle, but in one of the Size1,
- * Size2, Size3, or Size4 fonts. `makeStackedDelim` makes a delimiter out of
- * smaller pieces that are stacked on top of one another.
- *
- * The functions take a parameter `center`, which determines if the delimiter
- * should be centered around the axis.
- *
- * Then, there are three exposed functions. `sizedDelim` makes a delimiter in
- * one of the given sizes. This is used for things like `\bigl`.
- * `customSizedDelim` makes a delimiter with a given total height+depth. It is
- * called in places like `\sqrt`. `leftRightDelim` makes an appropriate
- * delimiter which surrounds an expression of a given height an depth. It is
- * used in `\left` and `\right`.
- */
-
-var ParseError = require("./ParseError");
-var Style = require("./Style");
-
-var buildCommon = require("./buildCommon");
-var fontMetrics = require("./fontMetrics");
-var symbols = require("./symbols");
-var utils = require("./utils");
-
-var makeSpan = buildCommon.makeSpan;
-
-/**
- * Get the metrics for a given symbol and font, after transformation (i.e.
- * after following replacement from symbols.js)
- */
-var getMetrics = function(symbol, font) {
-    if (symbols.math[symbol] && symbols.math[symbol].replace) {
-        return fontMetrics.getCharacterMetrics(
-            symbols.math[symbol].replace, font);
-    } else {
-        return fontMetrics.getCharacterMetrics(
-            symbol, font);
-    }
-};
-
-/**
- * Builds a symbol in the given font size (note size is an integer)
- */
-var mathrmSize = function(value, size, mode, options) {
-    return buildCommon.makeSymbol(value, "Size" + size + "-Regular",
-        mode, options);
-};
-
-/**
- * Puts a delimiter span in a given style, and adds appropriate height, depth,
- * and maxFontSizes.
- */
-var styleWrap = function(delim, toStyle, options, classes) {
-    classes = classes || [];
-    var span = makeSpan(
-        classes.concat(["style-wrap", options.style.reset(), toStyle.cls()]),
-        [delim], options);
-
-    var multiplier = toStyle.sizeMultiplier / options.style.sizeMultiplier;
-
-    span.height *= multiplier;
-    span.depth *= multiplier;
-    span.maxFontSize = toStyle.sizeMultiplier;
-
-    return span;
-};
-
-/**
- * Makes a small delimiter. This is a delimiter that comes in the Main-Regular
- * font, but is restyled to either be in textstyle, scriptstyle, or
- * scriptscriptstyle.
- */
-var makeSmallDelim = function(delim, style, center, options, mode, classes) {
-    var text = buildCommon.makeSymbol(delim, "Main-Regular", mode, options);
-
-    var span = styleWrap(text, style, options, classes);
-
-    if (center) {
-        var shift =
-            (1 - options.style.sizeMultiplier / style.sizeMultiplier) *
-            options.style.metrics.axisHeight;
-
-        span.style.top = shift + "em";
-        span.height -= shift;
-        span.depth += shift;
-    }
-
-    return span;
-};
-
-/**
- * Makes a large delimiter. This is a delimiter that comes in the Size1, Size2,
- * Size3, or Size4 fonts. It is always rendered in textstyle.
- */
-var makeLargeDelim = function(delim, size, center, options, mode, classes) {
-    var inner = mathrmSize(delim, size, mode, options);
-
-    var span = styleWrap(
-        makeSpan(["delimsizing", "size" + size], [inner], options),
-        Style.TEXT, options, classes);
-
-    if (center) {
-        var shift = (1 - options.style.sizeMultiplier) *
-            options.style.metrics.axisHeight;
-
-        span.style.top = shift + "em";
-        span.height -= shift;
-        span.depth += shift;
-    }
-
-    return span;
-};
-
-/**
- * Make an inner span with the given offset and in the given font. This is used
- * in `makeStackedDelim` to make the stacking pieces for the delimiter.
- */
-var makeInner = function(symbol, font, mode) {
-    var sizeClass;
-    // Apply the correct CSS class to choose the right font.
-    if (font === "Size1-Regular") {
-        sizeClass = "delim-size1";
-    } else if (font === "Size4-Regular") {
-        sizeClass = "delim-size4";
-    }
-
-    var inner = makeSpan(
-        ["delimsizinginner", sizeClass],
-        [makeSpan([], [buildCommon.makeSymbol(symbol, font, mode)])]);
-
-    // Since this will be passed into `makeVList` in the end, wrap the element
-    // in the appropriate tag that VList uses.
-    return {type: "elem", elem: inner};
-};
-
-/**
- * Make a stacked delimiter out of a given delimiter, with the total height at
- * least `heightTotal`. This routine is mentioned on page 442 of the TeXbook.
- */
-var makeStackedDelim = function(delim, heightTotal, center, options, mode,
-                                classes) {
-    // There are four parts, the top, an optional middle, a repeated part, and a
-    // bottom.
-    var top;
-    var middle;
-    var repeat;
-    var bottom;
-    top = repeat = bottom = delim;
-    middle = null;
-    // Also keep track of what font the delimiters are in
-    var font = "Size1-Regular";
-
-    // We set the parts and font based on the symbol. Note that we use
-    // '\u23d0' instead of '|' and '\u2016' instead of '\\|' for the
-    // repeats of the arrows
-    if (delim === "\\uparrow") {
-        repeat = bottom = "\u23d0";
-    } else if (delim === "\\Uparrow") {
-        repeat = bottom = "\u2016";
-    } else if (delim === "\\downarrow") {
-        top = repeat = "\u23d0";
-    } else if (delim === "\\Downarrow") {
-        top = repeat = "\u2016";
-    } else if (delim === "\\updownarrow") {
-        top = "\\uparrow";
-        repeat = "\u23d0";
-        bottom = "\\downarrow";
-    } else if (delim === "\\Updownarrow") {
-        top = "\\Uparrow";
-        repeat = "\u2016";
-        bottom = "\\Downarrow";
-    } else if (delim === "[" || delim === "\\lbrack") {
-        top = "\u23a1";
-        repeat = "\u23a2";
-        bottom = "\u23a3";
-        font = "Size4-Regular";
-    } else if (delim === "]" || delim === "\\rbrack") {
-        top = "\u23a4";
-        repeat = "\u23a5";
-        bottom = "\u23a6";
-        font = "Size4-Regular";
-    } else if (delim === "\\lfloor") {
-        repeat = top = "\u23a2";
-        bottom = "\u23a3";
-        font = "Size4-Regular";
-    } else if (delim === "\\lceil") {
-        top = "\u23a1";
-        repeat = bottom = "\u23a2";
-        font = "Size4-Regular";
-    } else if (delim === "\\rfloor") {
-        repeat = top = "\u23a5";
-        bottom = "\u23a6";
-        font = "Size4-Regular";
-    } else if (delim === "\\rceil") {
-        top = "\u23a4";
-        repeat = bottom = "\u23a5";
-        font = "Size4-Regular";
-    } else if (delim === "(") {
-        top = "\u239b";
-        repeat = "\u239c";
-        bottom = "\u239d";
-        font = "Size4-Regular";
-    } else if (delim === ")") {
-        top = "\u239e";
-        repeat = "\u239f";
-        bottom = "\u23a0";
-        font = "Size4-Regular";
-    } else if (delim === "\\{" || delim === "\\lbrace") {
-        top = "\u23a7";
-        middle = "\u23a8";
-        bottom = "\u23a9";
-        repeat = "\u23aa";
-        font = "Size4-Regular";
-    } else if (delim === "\\}" || delim === "\\rbrace") {
-        top = "\u23ab";
-        middle = "\u23ac";
-        bottom = "\u23ad";
-        repeat = "\u23aa";
-        font = "Size4-Regular";
-    } else if (delim === "\\lgroup") {
-        top = "\u23a7";
-        bottom = "\u23a9";
-        repeat = "\u23aa";
-        font = "Size4-Regular";
-    } else if (delim === "\\rgroup") {
-        top = "\u23ab";
-        bottom = "\u23ad";
-        repeat = "\u23aa";
-        font = "Size4-Regular";
-    } else if (delim === "\\lmoustache") {
-        top = "\u23a7";
-        bottom = "\u23ad";
-        repeat = "\u23aa";
-        font = "Size4-Regular";
-    } else if (delim === "\\rmoustache") {
-        top = "\u23ab";
-        bottom = "\u23a9";
-        repeat = "\u23aa";
-        font = "Size4-Regular";
-    } else if (delim === "\\surd") {
-        top = "\ue001";
-        bottom = "\u23b7";
-        repeat = "\ue000";
-        font = "Size4-Regular";
-    }
-
-    // Get the metrics of the four sections
-    var topMetrics = getMetrics(top, font);
-    var topHeightTotal = topMetrics.height + topMetrics.depth;
-    var repeatMetrics = getMetrics(repeat, font);
-    var repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth;
-    var bottomMetrics = getMetrics(bottom, font);
-    var bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth;
-    var middleHeightTotal = 0;
-    var middleFactor = 1;
-    if (middle !== null) {
-        var middleMetrics = getMetrics(middle, font);
-        middleHeightTotal = middleMetrics.height + middleMetrics.depth;
-        middleFactor = 2; // repeat symmetrically above and below middle
-    }
-
-    // Calcuate the minimal height that the delimiter can have.
-    // It is at least the size of the top, bottom, and optional middle combined.
-    var minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal;
-
-    // Compute the number of copies of the repeat symbol we will need
-    var repeatCount = Math.ceil(
-        (heightTotal - minHeight) / (middleFactor * repeatHeightTotal));
-
-    // Compute the total height of the delimiter including all the symbols
-    var realHeightTotal =
-        minHeight + repeatCount * middleFactor * repeatHeightTotal;
-
-    // The center of the delimiter is placed at the center of the axis. Note
-    // that in this context, "center" means that the delimiter should be
-    // centered around the axis in the current style, while normally it is
-    // centered around the axis in textstyle.
-    var axisHeight = options.style.metrics.axisHeight;
-    if (center) {
-        axisHeight *= options.style.sizeMultiplier;
-    }
-    // Calculate the depth
-    var depth = realHeightTotal / 2 - axisHeight;
-
-    // Now, we start building the pieces that will go into the vlist
-
-    // Keep a list of the inner pieces
-    var inners = [];
-
-    // Add the bottom symbol
-    inners.push(makeInner(bottom, font, mode));
-
-    var i;
-    if (middle === null) {
-        // Add that many symbols
-        for (i = 0; i < repeatCount; i++) {
-            inners.push(makeInner(repeat, font, mode));
-        }
-    } else {
-        // When there is a middle bit, we need the middle part and two repeated
-        // sections
-        for (i = 0; i < repeatCount; i++) {
-            inners.push(makeInner(repeat, font, mode));
-        }
-        inners.push(makeInner(middle, font, mode));
-        for (i = 0; i < repeatCount; i++) {
-            inners.push(makeInner(repeat, font, mode));
-        }
-    }
-
-    // Add the top symbol
-    inners.push(makeInner(top, font, mode));
-
-    // Finally, build the vlist
-    var inner = buildCommon.makeVList(inners, "bottom", depth, options);
-
-    return styleWrap(
-        makeSpan(["delimsizing", "mult"], [inner], options),
-        Style.TEXT, options, classes);
-};
-
-// There are three kinds of delimiters, delimiters that stack when they become
-// too large
-var stackLargeDelimiters = [
-    "(", ")", "[", "\\lbrack", "]", "\\rbrack",
-    "\\{", "\\lbrace", "\\}", "\\rbrace",
-    "\\lfloor", "\\rfloor", "\\lceil", "\\rceil",
-    "\\surd"
-];
-
-// delimiters that always stack
-var stackAlwaysDelimiters = [
-    "\\uparrow", "\\downarrow", "\\updownarrow",
-    "\\Uparrow", "\\Downarrow", "\\Updownarrow",
-    "|", "\\|", "\\vert", "\\Vert",
-    "\\lvert", "\\rvert", "\\lVert", "\\rVert",
-    "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache"
-];
-
-// and delimiters that never stack
-var stackNeverDelimiters = [
-    "<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"
-];
-
-// Metrics of the different sizes. Found by looking at TeX's output of
-// $\bigl| // \Bigl| \biggl| \Biggl| \showlists$
-// Used to create stacked delimiters of appropriate sizes in makeSizedDelim.
-var sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0];
-
-/**
- * Used to create a delimiter of a specific size, where `size` is 1, 2, 3, or 4.
- */
-var makeSizedDelim = function(delim, size, options, mode, classes) {
-    // < and > turn into \langle and \rangle in delimiters
-    if (delim === "<" || delim === "\\lt") {
-        delim = "\\langle";
-    } else if (delim === ">" || delim === "\\gt") {
-        delim = "\\rangle";
-    }
-
-    // Sized delimiters are never centered.
-    if (utils.contains(stackLargeDelimiters, delim) ||
-        utils.contains(stackNeverDelimiters, delim)) {
-        return makeLargeDelim(delim, size, false, options, mode, classes);
-    } else if (utils.contains(stackAlwaysDelimiters, delim)) {
-        return makeStackedDelim(
-            delim, sizeToMaxHeight[size], false, options, mode, classes);
-    } else {
-        throw new ParseError("Illegal delimiter: '" + delim + "'");
-    }
-};
-
-/**
- * There are three different sequences of delimiter sizes that the delimiters
- * follow depending on the kind of delimiter. This is used when creating custom
- * sized delimiters to decide whether to create a small, large, or stacked
- * delimiter.
- *
- * In real TeX, these sequences aren't explicitly defined, but are instead
- * defined inside the font metrics. Since there are only three sequences that
- * are possible for the delimiters that TeX defines, it is easier to just encode
- * them explicitly here.
- */
-
-// Delimiters that never stack try small delimiters and large delimiters only
-var stackNeverDelimiterSequence = [
-    {type: "small", style: Style.SCRIPTSCRIPT},
-    {type: "small", style: Style.SCRIPT},
-    {type: "small", style: Style.TEXT},
-    {type: "large", size: 1},
-    {type: "large", size: 2},
-    {type: "large", size: 3},
-    {type: "large", size: 4}
-];
-
-// Delimiters that always stack try the small delimiters first, then stack
-var stackAlwaysDelimiterSequence = [
-    {type: "small", style: Style.SCRIPTSCRIPT},
-    {type: "small", style: Style.SCRIPT},
-    {type: "small", style: Style.TEXT},
-    {type: "stack"}
-];
-
-// Delimiters that stack when large try the small and then large delimiters, and
-// stack afterwards
-var stackLargeDelimiterSequence = [
-    {type: "small", style: Style.SCRIPTSCRIPT},
-    {type: "small", style: Style.SCRIPT},
-    {type: "small", style: Style.TEXT},
-    {type: "large", size: 1},
-    {type: "large", size: 2},
-    {type: "large", size: 3},
-    {type: "large", size: 4},
-    {type: "stack"}
-];
-
-/**
- * Get the font used in a delimiter based on what kind of delimiter it is.
- */
-var delimTypeToFont = function(type) {
-    if (type.type === "small") {
-        return "Main-Regular";
-    } else if (type.type === "large") {
-        return "Size" + type.size + "-Regular";
-    } else if (type.type === "stack") {
-        return "Size4-Regular";
-    }
-};
-
-/**
- * Traverse a sequence of types of delimiters to decide what kind of delimiter
- * should be used to create a delimiter of the given height+depth.
- */
-var traverseSequence = function(delim, height, sequence, options) {
-    // Here, we choose the index we should start at in the sequences. In smaller
-    // sizes (which correspond to larger numbers in style.size) we start earlier
-    // in the sequence. Thus, scriptscript starts at index 3-3=0, script starts
-    // at index 3-2=1, text starts at 3-1=2, and display starts at min(2,3-0)=2
-    var start = Math.min(2, 3 - options.style.size);
-    for (var i = start; i < sequence.length; i++) {
-        if (sequence[i].type === "stack") {
-            // This is always the last delimiter, so we just break the loop now.
-            break;
-        }
-
-        var metrics = getMetrics(delim, delimTypeToFont(sequence[i]));
-        var heightDepth = metrics.height + metrics.depth;
-
-        // Small delimiters are scaled down versions of the same font, so we
-        // account for the style change size.
-
-        if (sequence[i].type === "small") {
-            heightDepth *= sequence[i].style.sizeMultiplier;
-        }
-
-        // Check if the delimiter at this size works for the given height.
-        if (heightDepth > height) {
-            return sequence[i];
-        }
-    }
-
-    // If we reached the end of the sequence, return the last sequence element.
-    return sequence[sequence.length - 1];
-};
-
-/**
- * Make a delimiter of a given height+depth, with optional centering. Here, we
- * traverse the sequences, and create a delimiter that the sequence tells us to.
- */
-var makeCustomSizedDelim = function(delim, height, center, options, mode,
-                                    classes) {
-    if (delim === "<" || delim === "\\lt") {
-        delim = "\\langle";
-    } else if (delim === ">" || delim === "\\gt") {
-        delim = "\\rangle";
-    }
-
-    // Decide what sequence to use
-    var sequence;
-    if (utils.contains(stackNeverDelimiters, delim)) {
-        sequence = stackNeverDelimiterSequence;
-    } else if (utils.contains(stackLargeDelimiters, delim)) {
-        sequence = stackLargeDelimiterSequence;
-    } else {
-        sequence = stackAlwaysDelimiterSequence;
-    }
-
-    // Look through the sequence
-    var delimType = traverseSequence(delim, height, sequence, options);
-
-    // Depending on the sequence element we decided on, call the appropriate
-    // function.
-    if (delimType.type === "small") {
-        return makeSmallDelim(delim, delimType.style, center, options, mode,
-                              classes);
-    } else if (delimType.type === "large") {
-        return makeLargeDelim(delim, delimType.size, center, options, mode,
-                              classes);
-    } else if (delimType.type === "stack") {
-        return makeStackedDelim(delim, height, center, options, mode, classes);
-    }
-};
-
-/**
- * Make a delimiter for use with `\left` and `\right`, given a height and depth
- * of an expression that the delimiters surround.
- */
-var makeLeftRightDelim = function(delim, height, depth, options, mode,
-                                  classes) {
-    // We always center \left/\right delimiters, so the axis is always shifted
-    var axisHeight =
-        options.style.metrics.axisHeight * options.style.sizeMultiplier;
-
-    // Taken from TeX source, tex.web, function make_left_right
-    var delimiterFactor = 901;
-    var delimiterExtend = 5.0 / fontMetrics.metrics.ptPerEm;
-
-    var maxDistFromAxis = Math.max(
-        height - axisHeight, depth + axisHeight);
-
-    var totalHeight = Math.max(
-        // In real TeX, calculations are done using integral values which are
-        // 65536 per pt, or 655360 per em. So, the division here truncates in
-        // TeX but doesn't here, producing different results. If we wanted to
-        // exactly match TeX's calculation, we could do
-        //   Math.floor(655360 * maxDistFromAxis / 500) *
-        //    delimiterFactor / 655360
-        // (To see the difference, compare
-        //    x^{x^{\left(\rule{0.1em}{0.68em}\right)}}
-        // in TeX and KaTeX)
-        maxDistFromAxis / 500 * delimiterFactor,
-        2 * maxDistFromAxis - delimiterExtend);
-
-    // Finally, we defer to `makeCustomSizedDelim` with our calculated total
-    // height
-    return makeCustomSizedDelim(delim, totalHeight, true, options, mode,
-                                classes);
-};
-
-module.exports = {
-    sizedDelim: makeSizedDelim,
-    customSizedDelim: makeCustomSizedDelim,
-    leftRightDelim: makeLeftRightDelim
-};
-
-},{"./ParseError":6,"./Style":9,"./buildCommon":10,"./fontMetrics":17,"./symbols":23,"./utils":25}],15:[function(require,module,exports){
-/**
- * These objects store the data about the DOM nodes we create, as well as some
- * extra data. They can then be transformed into real DOM nodes with the
- * `toNode` function or HTML markup using `toMarkup`. They are useful for both
- * storing extra properties on the nodes, as well as providing a way to easily
- * work with the DOM.
- *
- * Similar functions for working with MathML nodes exist in mathMLTree.js.
- */
-var unicodeRegexes = require("./unicodeRegexes");
-var utils = require("./utils");
-
-/**
- * Create an HTML className based on a list of classes. In addition to joining
- * with spaces, we also remove null or empty classes.
- */
-var createClass = function(classes) {
-    classes = classes.slice();
-    for (var i = classes.length - 1; i >= 0; i--) {
-        if (!classes[i]) {
-            classes.splice(i, 1);
-        }
-    }
-
-    return classes.join(" ");
-};
-
-/**
- * This node represents a span node, with a className, a list of children, and
- * an inline style. It also contains information about its height, depth, and
- * maxFontSize.
- */
-function span(classes, children, options) {
-    this.classes = classes || [];
-    this.children = children || [];
-    this.height = 0;
-    this.depth = 0;
-    this.maxFontSize = 0;
-    this.style = {};
-    this.attributes = {};
-    if (options) {
-        if (options.style.isTight()) {
-            this.classes.push("mtight");
-        }
-        if (options.getColor()) {
-            this.style.color = options.getColor();
-        }
-    }
-}
-
-/**
- * Sets an arbitrary attribute on the span. Warning: use this wisely. Not all
- * browsers support attributes the same, and having too many custom attributes
- * is probably bad.
- */
-span.prototype.setAttribute = function(attribute, value) {
-    this.attributes[attribute] = value;
-};
-
-span.prototype.tryCombine = function(sibling) {
-    return false;
-};
-
-/**
- * Convert the span into an HTML node
- */
-span.prototype.toNode = function() {
-    var span = document.createElement("span");
-
-    // Apply the class
-    span.className = createClass(this.classes);
-
-    // Apply inline styles
-    for (var style in this.style) {
-        if (Object.prototype.hasOwnProperty.call(this.style, style)) {
-            span.style[style] = this.style[style];
-        }
-    }
-
-    // Apply attributes
-    for (var attr in this.attributes) {
-        if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
-            span.setAttribute(attr, this.attributes[attr]);
-        }
-    }
-
-    // Append the children, also as HTML nodes
-    for (var i = 0; i < this.children.length; i++) {
-        span.appendChild(this.children[i].toNode());
-    }
-
-    return span;
-};
-
-/**
- * Convert the span into an HTML markup string
- */
-span.prototype.toMarkup = function() {
-    var markup = "<span";
-
-    // Add the class
-    if (this.classes.length) {
-        markup += " class=\"";
-        markup += utils.escape(createClass(this.classes));
-        markup += "\"";
-    }
-
-    var styles = "";
-
-    // Add the styles, after hyphenation
-    for (var style in this.style) {
-        if (this.style.hasOwnProperty(style)) {
-            styles += utils.hyphenate(style) + ":" + this.style[style] + ";";
-        }
-    }
-
-    if (styles) {
-        markup += " style=\"" + utils.escape(styles) + "\"";
-    }
-
-    // Add the attributes
-    for (var attr in this.attributes) {
-        if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
-            markup += " " + attr + "=\"";
-            markup += utils.escape(this.attributes[attr]);
-            markup += "\"";
-        }
-    }
-
-    markup += ">";
-
-    // Add the markup of the children, also as markup
-    for (var i = 0; i < this.children.length; i++) {
-        markup += this.children[i].toMarkup();
-    }
-
-    markup += "</span>";
-
-    return markup;
-};
-
-/**
- * This node represents a document fragment, which contains elements, but when
- * placed into the DOM doesn't have any representation itself. Thus, it only
- * contains children and doesn't have any HTML properties. It also keeps track
- * of a height, depth, and maxFontSize.
- */
-function documentFragment(children) {
-    this.children = children || [];
-    this.height = 0;
-    this.depth = 0;
-    this.maxFontSize = 0;
-}
-
-/**
- * Convert the fragment into a node
- */
-documentFragment.prototype.toNode = function() {
-    // Create a fragment
-    var frag = document.createDocumentFragment();
-
-    // Append the children
-    for (var i = 0; i < this.children.length; i++) {
-        frag.appendChild(this.children[i].toNode());
-    }
-
-    return frag;
-};
-
-/**
- * Convert the fragment into HTML markup
- */
-documentFragment.prototype.toMarkup = function() {
-    var markup = "";
-
-    // Simply concatenate the markup for the children together
-    for (var i = 0; i < this.children.length; i++) {
-        markup += this.children[i].toMarkup();
-    }
-
-    return markup;
-};
-
-var iCombinations = {
-    'î': '\u0131\u0302',
-    'ï': '\u0131\u0308',
-    'í': '\u0131\u0301',
-    // 'ī': '\u0131\u0304', // enable when we add Extended Latin
-    'ì': '\u0131\u0300'
-};
-
-/**
- * A symbol node contains information about a single symbol. It either renders
- * to a single text node, or a span with a single text node in it, depending on
- * whether it has CSS classes, styles, or needs italic correction.
- */
-function symbolNode(value, height, depth, italic, skew, classes, style) {
-    this.value = value || "";
-    this.height = height || 0;
-    this.depth = depth || 0;
-    this.italic = italic || 0;
-    this.skew = skew || 0;
-    this.classes = classes || [];
-    this.style = style || {};
-    this.maxFontSize = 0;
-
-    // Mark CJK characters with specific classes so that we can specify which
-    // fonts to use.  This allows us to render these characters with a serif
-    // font in situations where the browser would either default to a sans serif
-    // or render a placeholder character.
-    if (unicodeRegexes.cjkRegex.test(value)) {
-        // I couldn't find any fonts that contained Hangul as well as all of
-        // the other characters we wanted to test there for it gets its own
-        // CSS class.
-        if (unicodeRegexes.hangulRegex.test(value)) {
-            this.classes.push('hangul_fallback');
-        } else {
-            this.classes.push('cjk_fallback');
-        }
-    }
-
-    if (/[îïíì]/.test(this.value)) {    // add ī when we add Extended Latin
-        this.value = iCombinations[this.value];
-    }
-}
-
-symbolNode.prototype.tryCombine = function(sibling) {
-    if (!sibling
-        || !(sibling instanceof symbolNode)
-        || this.italic > 0
-        || createClass(this.classes) !== createClass(sibling.classes)
-        || this.skew !== sibling.skew
-        || this.maxFontSize !== sibling.maxFontSize) {
-        return false;
-    }
-    for (var style in this.style) {
-        if (this.style.hasOwnProperty(style)
-            && this.style[style] !== sibling.style[style]) {
-            return false;
-        }
-    }
-    for (style in sibling.style) {
-        if (sibling.style.hasOwnProperty(style)
-            && this.style[style] !== sibling.style[style]) {
-            return false;
-        }
-    }
-    this.value += sibling.value;
-    this.height = Math.max(this.height, sibling.height);
-    this.depth = Math.max(this.depth, sibling.depth);
-    this.italic = sibling.italic;
-    return true;
-};
-
-/**
- * Creates a text node or span from a symbol node. Note that a span is only
- * created if it is needed.
- */
-symbolNode.prototype.toNode = function() {
-    var node = document.createTextNode(this.value);
-    var span = null;
-
-    if (this.italic > 0) {
-        span = document.createElement("span");
-        span.style.marginRight = this.italic + "em";
-    }
-
-    if (this.classes.length > 0) {
-        span = span || document.createElement("span");
-        span.className = createClass(this.classes);
-    }
-
-    for (var style in this.style) {
-        if (this.style.hasOwnProperty(style)) {
-            span = span || document.createElement("span");
-            span.style[style] = this.style[style];
-        }
-    }
-
-    if (span) {
-        span.appendChild(node);
-        return span;
-    } else {
-        return node;
-    }
-};
-
-/**
- * Creates markup for a symbol node.
- */
-symbolNode.prototype.toMarkup = function() {
-    // TODO(alpert): More duplication than I'd like from
-    // span.prototype.toMarkup and symbolNode.prototype.toNode...
-    var needsSpan = false;
-
-    var markup = "<span";
-
-    if (this.classes.length) {
-        needsSpan = true;
-        markup += " class=\"";
-        markup += utils.escape(createClass(this.classes));
-        markup += "\"";
-    }
-
-    var styles = "";
-
-    if (this.italic > 0) {
-        styles += "margin-right:" + this.italic + "em;";
-    }
-    for (var style in this.style) {
-        if (this.style.hasOwnProperty(style)) {
-            styles += utils.hyphenate(style) + ":" + this.style[style] + ";";
-        }
-    }
-
-    if (styles) {
-        needsSpan = true;
-        markup += " style=\"" + utils.escape(styles) + "\"";
-    }
-
-    var escaped = utils.escape(this.value);
-    if (needsSpan) {
-        markup += ">";
-        markup += escaped;
-        markup += "</span>";
-        return markup;
-    } else {
-        return escaped;
-    }
-};
-
-module.exports = {
-    span: span,
-    documentFragment: documentFragment,
-    symbolNode: symbolNode
-};
-
-},{"./unicodeRegexes":24,"./utils":25}],16:[function(require,module,exports){
-/* eslint no-constant-condition:0 */
-var parseData = require("./parseData");
-var ParseError = require("./ParseError");
-var Style = require("./Style");
-
-var ParseNode = parseData.ParseNode;
-
-/**
- * Parse the body of the environment, with rows delimited by \\ and
- * columns delimited by &, and create a nested list in row-major order
- * with one group per cell.
- */
-function parseArray(parser, result) {
-    var row = [];
-    var body = [row];
-    var rowGaps = [];
-    while (true) {
-        var cell = parser.parseExpression(false, null);
-        row.push(new ParseNode("ordgroup", cell, parser.mode));
-        var next = parser.nextToken.text;
-        if (next === "&") {
-            parser.consume();
-        } else if (next === "\\end") {
-            break;
-        } else if (next === "\\\\" || next === "\\cr") {
-            var cr = parser.parseFunction();
-            rowGaps.push(cr.value.size);
-            row = [];
-            body.push(row);
-        } else {
-            throw new ParseError("Expected & or \\\\ or \\end",
-                                 parser.nextToken);
-        }
-    }
-    result.body = body;
-    result.rowGaps = rowGaps;
-    return new ParseNode(result.type, result, parser.mode);
-}
-
-/*
- * An environment definition is very similar to a function definition:
- * it is declared with a name or a list of names, a set of properties
- * and a handler containing the actual implementation.
- *
- * The properties include:
- *  - numArgs: The number of arguments after the \begin{name} function.
- *  - argTypes: (optional) Just like for a function
- *  - allowedInText: (optional) Whether or not the environment is allowed inside
- *                   text mode (default false) (not enforced yet)
- *  - numOptionalArgs: (optional) Just like for a function
- * A bare number instead of that object indicates the numArgs value.
- *
- * The handler function will receive two arguments
- *  - context: information and references provided by the parser
- *  - args: an array of arguments passed to \begin{name}
- * The context contains the following properties:
- *  - envName: the name of the environment, one of the listed names.
- *  - parser: the parser object
- *  - lexer: the lexer object
- *  - positions: the positions associated with these arguments from args.
- * The handler must return a ParseResult.
- */
-
-function defineEnvironment(names, props, handler) {
-    if (typeof names === "string") {
-        names = [names];
-    }
-    if (typeof props === "number") {
-        props = { numArgs: props };
-    }
-    // Set default values of environments
-    var data = {
-        numArgs: props.numArgs || 0,
-        argTypes: props.argTypes,
-        greediness: 1,
-        allowedInText: !!props.allowedInText,
-        numOptionalArgs: props.numOptionalArgs || 0,
-        handler: handler
-    };
-    for (var i = 0; i < names.length; ++i) {
-        module.exports[names[i]] = data;
-    }
-}
-
-// Arrays are part of LaTeX, defined in lttab.dtx so its documentation
-// is part of the source2e.pdf file of LaTeX2e source documentation.
-defineEnvironment("array", {
-    numArgs: 1
-}, function(context, args) {
-    var colalign = args[0];
-    colalign = colalign.value.map ? colalign.value : [colalign];
-    var cols = colalign.map(function(node) {
-        var ca = node.value;
-        if ("lcr".indexOf(ca) !== -1) {
-            return {
-                type: "align",
-                align: ca
-            };
-        } else if (ca === "|") {
-            return {
-                type: "separator",
-                separator: "|"
-            };
-        }
-        throw new ParseError(
-            "Unknown column alignment: " + node.value,
-            node);
-    });
-    var res = {
-        type: "array",
-        cols: cols,
-        hskipBeforeAndAfter: true // \@preamble in lttab.dtx
-    };
-    res = parseArray(context.parser, res);
-    return res;
-});
-
-// The matrix environments of amsmath builds on the array environment
-// of LaTeX, which is discussed above.
-defineEnvironment([
-    "matrix",
-    "pmatrix",
-    "bmatrix",
-    "Bmatrix",
-    "vmatrix",
-    "Vmatrix"
-], {
-}, function(context) {
-    var delimiters = {
-        "matrix": null,
-        "pmatrix": ["(", ")"],
-        "bmatrix": ["[", "]"],
-        "Bmatrix": ["\\{", "\\}"],
-        "vmatrix": ["|", "|"],
-        "Vmatrix": ["\\Vert", "\\Vert"]
-    }[context.envName];
-    var res = {
-        type: "array",
-        hskipBeforeAndAfter: false // \hskip -\arraycolsep in amsmath
-    };
-    res = parseArray(context.parser, res);
-    if (delimiters) {
-        res = new ParseNode("leftright", {
-            body: [res],
-            left: delimiters[0],
-            right: delimiters[1]
-        }, context.mode);
-    }
-    return res;
-});
-
-// A cases environment (in amsmath.sty) is almost equivalent to
-// \def\arraystretch{1.2}%
-// \left\{\begin{array}{@{}l@{\quad}l@{}} … \end{array}\right.
-defineEnvironment("cases", {
-}, function(context) {
-    var res = {
-        type: "array",
-        arraystretch: 1.2,
-        cols: [{
-            type: "align",
-            align: "l",
-            pregap: 0,
-            // TODO(kevinb) get the current style.
-            // For now we use the metrics for TEXT style which is what we were
-            // doing before.  Before attempting to get the current style we
-            // should look at TeX's behavior especially for \over and matrices.
-            postgap: Style.TEXT.metrics.quad
-        }, {
-            type: "align",
-            align: "l",
-            pregap: 0,
-            postgap: 0
-        }]
-    };
-    res = parseArray(context.parser, res);
-    res = new ParseNode("leftright", {
-        body: [res],
-        left: "\\{",
-        right: "."
-    }, context.mode);
-    return res;
-});
-
-// An aligned environment is like the align* environment
-// except it operates within math mode.
-// Note that we assume \nomallineskiplimit to be zero,
-// so that \strut@ is the same as \strut.
-defineEnvironment("aligned", {
-}, function(context) {
-    var res = {
-        type: "array",
-        cols: []
-    };
-    res = parseArray(context.parser, res);
-    var emptyGroup = new ParseNode("ordgroup", [], context.mode);
-    var numCols = 0;
-    res.value.body.forEach(function(row) {
-        var i;
-        for (i = 1; i < row.length; i += 2) {
-            row[i].value.unshift(emptyGroup);
-        }
-        if (numCols < row.length) {
-            numCols = row.length;
-        }
-    });
-    for (var i = 0; i < numCols; ++i) {
-        var align = "r";
-        var pregap = 0;
-        if (i % 2 === 1) {
-            align = "l";
-        } else if (i > 0) {
-            pregap = 2; // one \qquad between columns
-        }
-        res.value.cols[i] = {
-            type: "align",
-            align: align,
-            pregap: pregap,
-            postgap: 0
-        };
-    }
-    return res;
-});
-
-},{"./ParseError":6,"./Style":9,"./parseData":21}],17:[function(require,module,exports){
-/* eslint no-unused-vars:0 */
-
-var Style = require("./Style");
-var cjkRegex = require("./unicodeRegexes").cjkRegex;
-
-/**
- * This file contains metrics regarding fonts and individual symbols. The sigma
- * and xi variables, as well as the metricMap map contain data extracted from
- * TeX, TeX font metrics, and the TTF files. These data are then exposed via the
- * `metrics` variable and the getCharacterMetrics function.
- */
-
-// In TeX, there are actually three sets of dimensions, one for each of
-// textstyle, scriptstyle, and scriptscriptstyle.  These are provided in the
-// the arrays below, in that order.
-//
-// The font metrics are stored in fonts cmsy10, cmsy7, and cmsy5 respsectively.
-// This was determined by running the folllowing script:
-//
-//     latex -interaction=nonstopmode \
-//     '\documentclass{article}\usepackage{amsmath}\begin{document}' \
-//     '$a$ \expandafter\show\the\textfont2' \
-//     '\expandafter\show\the\scriptfont2' \
-//     '\expandafter\show\the\scriptscriptfont2' \
-//     '\stop'
-//
-// The metrics themselves were retreived using the following commands:
-//
-//     tftopl cmsy10
-//     tftopl cmsy7
-//     tftopl cmsy5
-//
-// The output of each of these commands is quite lengthy.  The only part we
-// care about is the FONTDIMEN section. Each value is measured in EMs.
-var sigmas = {
-    slant: [0.250, 0.250, 0.250],       // sigma1
-    space: [0.000, 0.000, 0.000],       // sigma2
-    stretch: [0.000, 0.000, 0.000],     // sigma3
-    shrink: [0.000, 0.000, 0.000],      // sigma4
-    xHeight: [0.431, 0.431, 0.431],     // sigma5
-    quad: [1.000, 1.171, 1.472],        // sigma6
-    extraSpace: [0.000, 0.000, 0.000],  // sigma7
-    num1: [0.677, 0.732, 0.925],        // sigma8
-    num2: [0.394, 0.384, 0.387],        // sigma9
-    num3: [0.444, 0.471, 0.504],        // sigma10
-    denom1: [0.686, 0.752, 1.025],      // sigma11
-    denom2: [0.345, 0.344, 0.532],      // sigma12
-    sup1: [0.413, 0.503, 0.504],        // sigma13
-    sup2: [0.363, 0.431, 0.404],        // sigma14
-    sup3: [0.289, 0.286, 0.294],        // sigma15
-    sub1: [0.150, 0.143, 0.200],        // sigma16
-    sub2: [0.247, 0.286, 0.400],        // sigma17
-    supDrop: [0.386, 0.353, 0.494],     // sigma18
-    subDrop: [0.050, 0.071, 0.100],     // sigma19
-    delim1: [2.390, 1.700, 1.980],      // sigma20
-    delim2: [1.010, 1.157, 1.420],      // sigma21
-    axisHeight: [0.250, 0.250, 0.250]  // sigma22
-};
-
-// These font metrics are extracted from TeX by using
-// \font\a=cmex10
-// \showthe\fontdimenX\a
-// where X is the corresponding variable number. These correspond to the font
-// parameters of the extension fonts (family 3). See the TeXbook, page 441.
-var xi1 = 0;
-var xi2 = 0;
-var xi3 = 0;
-var xi4 = 0;
-var xi5 = 0.431;
-var xi6 = 1;
-var xi7 = 0;
-var xi8 = 0.04;
-var xi9 = 0.111;
-var xi10 = 0.166;
-var xi11 = 0.2;
-var xi12 = 0.6;
-var xi13 = 0.1;
-
-// This value determines how large a pt is, for metrics which are defined in
-// terms of pts.
-// This value is also used in katex.less; if you change it make sure the values
-// match.
-var ptPerEm = 10.0;
-
-// The space between adjacent `|` columns in an array definition. From
-// `\showthe\doublerulesep` in LaTeX.
-var doubleRuleSep = 2.0 / ptPerEm;
-
-/**
- * This is just a mapping from common names to real metrics
- */
-var metrics = {
-    defaultRuleThickness: xi8,
-    bigOpSpacing1: xi9,
-    bigOpSpacing2: xi10,
-    bigOpSpacing3: xi11,
-    bigOpSpacing4: xi12,
-    bigOpSpacing5: xi13,
-    ptPerEm: ptPerEm,
-    doubleRuleSep: doubleRuleSep
-};
-
-// This map contains a mapping from font name and character code to character
-// metrics, including height, depth, italic correction, and skew (kern from the
-// character to the corresponding \skewchar)
-// This map is generated via `make metrics`. It should not be changed manually.
-var metricMap = require("./fontMetricsData");
-
-// These are very rough approximations.  We default to Times New Roman which
-// should have Latin-1 and Cyrillic characters, but may not depending on the
-// operating system.  The metrics do not account for extra height from the
-// accents.  In the case of Cyrillic characters which have both ascenders and
-// descenders we prefer approximations with ascenders, primarily to prevent
-// the fraction bar or root line from intersecting the glyph.
-// TODO(kevinb) allow union of multiple glyph metrics for better accuracy.
-var extraCharacterMap = {
-    // Latin-1
-    'À': 'A',
-    'Á': 'A',
-    'Â': 'A',
-    'Ã': 'A',
-    'Ä': 'A',
-    'Å': 'A',
-    'Æ': 'A',
-    'Ç': 'C',
-    'È': 'E',
-    'É': 'E',
-    'Ê': 'E',
-    'Ë': 'E',
-    'Ì': 'I',
-    'Í': 'I',
-    'Î': 'I',
-    'Ï': 'I',
-    'Ð': 'D',
-    'Ñ': 'N',
-    'Ò': 'O',
-    'Ó': 'O',
-    'Ô': 'O',
-    'Õ': 'O',
-    'Ö': 'O',
-    'Ø': 'O',
-    'Ù': 'U',
-    'Ú': 'U',
-    'Û': 'U',
-    'Ü': 'U',
-    'Ý': 'Y',
-    'Þ': 'o',
-    'ß': 'B',
-    'à': 'a',
-    'á': 'a',
-    'â': 'a',
-    'ã': 'a',
-    'ä': 'a',
-    'å': 'a',
-    'æ': 'a',
-    'ç': 'c',
-    'è': 'e',
-    'é': 'e',
-    'ê': 'e',
-    'ë': 'e',
-    'ì': 'i',
-    'í': 'i',
-    'î': 'i',
-    'ï': 'i',
-    'ð': 'd',
-    'ñ': 'n',
-    'ò': 'o',
-    'ó': 'o',
-    'ô': 'o',
-    'õ': 'o',
-    'ö': 'o',
-    'ø': 'o',
-    'ù': 'u',
-    'ú': 'u',
-    'û': 'u',
-    'ü': 'u',
-    'ý': 'y',
-    'þ': 'o',
-    'ÿ': 'y',
-
-    // Cyrillic
-    'А': 'A',
-    'Б': 'B',
-    'В': 'B',
-    'Г': 'F',
-    'Д': 'A',
-    'Е': 'E',
-    'Ж': 'K',
-    'З': '3',
-    'И': 'N',
-    'Й': 'N',
-    'К': 'K',
-    'Л': 'N',
-    'М': 'M',
-    'Н': 'H',
-    'О': 'O',
-    'П': 'N',
-    'Р': 'P',
-    'С': 'C',
-    'Т': 'T',
-    'У': 'y',
-    'Ф': 'O',
-    'Х': 'X',
-    'Ц': 'U',
-    'Ч': 'h',
-    'Ш': 'W',
-    'Щ': 'W',
-    'Ъ': 'B',
-    'Ы': 'X',
-    'Ь': 'B',
-    'Э': '3',
-    'Ю': 'X',
-    'Я': 'R',
-    'а': 'a',
-    'б': 'b',
-    'в': 'a',
-    'г': 'r',
-    'д': 'y',
-    'е': 'e',
-    'ж': 'm',
-    'з': 'e',
-    'и': 'n',
-    'й': 'n',
-    'к': 'n',
-    'л': 'n',
-    'м': 'm',
-    'н': 'n',
-    'о': 'o',
-    'п': 'n',
-    'р': 'p',
-    'с': 'c',
-    'т': 'o',
-    'у': 'y',
-    'ф': 'b',
-    'х': 'x',
-    'ц': 'n',
-    'ч': 'n',
-    'ш': 'w',
-    'щ': 'w',
-    'ъ': 'a',
-    'ы': 'm',
-    'ь': 'a',
-    'э': 'e',
-    'ю': 'm',
-    'я': 'r'
-};
-
-/**
- * This function is a convenience function for looking up information in the
- * metricMap table. It takes a character as a string, and a style.
- *
- * Note: the `width` property may be undefined if fontMetricsData.js wasn't
- * built using `Make extended_metrics`.
- */
-var getCharacterMetrics = function(character, style) {
-    var ch = character.charCodeAt(0);
-    if (character[0] in extraCharacterMap) {
-        ch = extraCharacterMap[character[0]].charCodeAt(0);
-    } else if (cjkRegex.test(character[0])) {
-        ch = 'M'.charCodeAt(0);
-    }
-    var metrics = metricMap[style][ch];
-    if (metrics) {
-        return {
-            depth: metrics[0],
-            height: metrics[1],
-            italic: metrics[2],
-            skew: metrics[3],
-            width: metrics[4]
-        };
-    }
-};
-
-module.exports = {
-    metrics: metrics,
-    sigmas: sigmas,
-    getCharacterMetrics: getCharacterMetrics
-};
-
-},{"./Style":9,"./fontMetricsData":18,"./unicodeRegexes":24}],18:[function(require,module,exports){
-module.exports = {
-    "AMS-Regular": {
-        "65": [0, 0.68889, 0, 0],
-        "66": [0, 0.68889, 0, 0],
-        "67": [0, 0.68889, 0, 0],
-        "68": [0, 0.68889, 0, 0],
-        "69": [0, 0.68889, 0, 0],
-        "70": [0, 0.68889, 0, 0],
-        "71": [0, 0.68889, 0, 0],
-        "72": [0, 0.68889, 0, 0],
-        "73": [0, 0.68889, 0, 0],
-        "74": [0.16667, 0.68889, 0, 0],
-        "75": [0, 0.68889, 0, 0],
-        "76": [0, 0.68889, 0, 0],
-        "77": [0, 0.68889, 0, 0],
-        "78": [0, 0.68889, 0, 0],
-        "79": [0.16667, 0.68889, 0, 0],
-        "80": [0, 0.68889, 0, 0],
-        "81": [0.16667, 0.68889, 0, 0],
-        "82": [0, 0.68889, 0, 0],
-        "83": [0, 0.68889, 0, 0],
-        "84": [0, 0.68889, 0, 0],
-        "85": [0, 0.68889, 0, 0],
-        "86": [0, 0.68889, 0, 0],
-        "87": [0, 0.68889, 0, 0],
-        "88": [0, 0.68889, 0, 0],
-        "89": [0, 0.68889, 0, 0],
-        "90": [0, 0.68889, 0, 0],
-        "107": [0, 0.68889, 0, 0],
-        "165": [0, 0.675, 0.025, 0],
-        "174": [0.15559, 0.69224, 0, 0],
-        "240": [0, 0.68889, 0, 0],
-        "295": [0, 0.68889, 0, 0],
-        "710": [0, 0.825, 0, 0],
-        "732": [0, 0.9, 0, 0],
-        "770": [0, 0.825, 0, 0],
-        "771": [0, 0.9, 0, 0],
-        "989": [0.08167, 0.58167, 0, 0],
-        "1008": [0, 0.43056, 0.04028, 0],
-        "8245": [0, 0.54986, 0, 0],
-        "8463": [0, 0.68889, 0, 0],
-        "8487": [0, 0.68889, 0, 0],
-        "8498": [0, 0.68889, 0, 0],
-        "8502": [0, 0.68889, 0, 0],
-        "8503": [0, 0.68889, 0, 0],
-        "8504": [0, 0.68889, 0, 0],
-        "8513": [0, 0.68889, 0, 0],
-        "8592": [-0.03598, 0.46402, 0, 0],
-        "8594": [-0.03598, 0.46402, 0, 0],
-        "8602": [-0.13313, 0.36687, 0, 0],
-        "8603": [-0.13313, 0.36687, 0, 0],
-        "8606": [0.01354, 0.52239, 0, 0],
-        "8608": [0.01354, 0.52239, 0, 0],
-        "8610": [0.01354, 0.52239, 0, 0],
-        "8611": [0.01354, 0.52239, 0, 0],
-        "8619": [0, 0.54986, 0, 0],
-        "8620": [0, 0.54986, 0, 0],
-        "8621": [-0.13313, 0.37788, 0, 0],
-        "8622": [-0.13313, 0.36687, 0, 0],
-        "8624": [0, 0.69224, 0, 0],
-        "8625": [0, 0.69224, 0, 0],
-        "8630": [0, 0.43056, 0, 0],
-        "8631": [0, 0.43056, 0, 0],
-        "8634": [0.08198, 0.58198, 0, 0],
-        "8635": [0.08198, 0.58198, 0, 0],
-        "8638": [0.19444, 0.69224, 0, 0],
-        "8639": [0.19444, 0.69224, 0, 0],
-        "8642": [0.19444, 0.69224, 0, 0],
-        "8643": [0.19444, 0.69224, 0, 0],
-        "8644": [0.1808, 0.675, 0, 0],
-        "8646": [0.1808, 0.675, 0, 0],
-        "8647": [0.1808, 0.675, 0, 0],
-        "8648": [0.19444, 0.69224, 0, 0],
-        "8649": [0.1808, 0.675, 0, 0],
-        "8650": [0.19444, 0.69224, 0, 0],
-        "8651": [0.01354, 0.52239, 0, 0],
-        "8652": [0.01354, 0.52239, 0, 0],
-        "8653": [-0.13313, 0.36687, 0, 0],
-        "8654": [-0.13313, 0.36687, 0, 0],
-        "8655": [-0.13313, 0.36687, 0, 0],
-        "8666": [0.13667, 0.63667, 0, 0],
-        "8667": [0.13667, 0.63667, 0, 0],
-        "8669": [-0.13313, 0.37788, 0, 0],
-        "8672": [-0.064, 0.437, 0, 0],
-        "8674": [-0.064, 0.437, 0, 0],
-        "8705": [0, 0.825, 0, 0],
-        "8708": [0, 0.68889, 0, 0],
-        "8709": [0.08167, 0.58167, 0, 0],
-        "8717": [0, 0.43056, 0, 0],
-        "8722": [-0.03598, 0.46402, 0, 0],
-        "8724": [0.08198, 0.69224, 0, 0],
-        "8726": [0.08167, 0.58167, 0, 0],
-        "8733": [0, 0.69224, 0, 0],
-        "8736": [0, 0.69224, 0, 0],
-        "8737": [0, 0.69224, 0, 0],
-        "8738": [0.03517, 0.52239, 0, 0],
-        "8739": [0.08167, 0.58167, 0, 0],
-        "8740": [0.25142, 0.74111, 0, 0],
-        "8741": [0.08167, 0.58167, 0, 0],
-        "8742": [0.25142, 0.74111, 0, 0],
-        "8756": [0, 0.69224, 0, 0],
-        "8757": [0, 0.69224, 0, 0],
-        "8764": [-0.13313, 0.36687, 0, 0],
-        "8765": [-0.13313, 0.37788, 0, 0],
-        "8769": [-0.13313, 0.36687, 0, 0],
-        "8770": [-0.03625, 0.46375, 0, 0],
-        "8774": [0.30274, 0.79383, 0, 0],
-        "8776": [-0.01688, 0.48312, 0, 0],
-        "8778": [0.08167, 0.58167, 0, 0],
-        "8782": [0.06062, 0.54986, 0, 0],
-        "8783": [0.06062, 0.54986, 0, 0],
-        "8785": [0.08198, 0.58198, 0, 0],
-        "8786": [0.08198, 0.58198, 0, 0],
-        "8787": [0.08198, 0.58198, 0, 0],
-        "8790": [0, 0.69224, 0, 0],
-        "8791": [0.22958, 0.72958, 0, 0],
-        "8796": [0.08198, 0.91667, 0, 0],
-        "8806": [0.25583, 0.75583, 0, 0],
-        "8807": [0.25583, 0.75583, 0, 0],
-        "8808": [0.25142, 0.75726, 0, 0],
-        "8809": [0.25142, 0.75726, 0, 0],
-        "8812": [0.25583, 0.75583, 0, 0],
-        "8814": [0.20576, 0.70576, 0, 0],
-        "8815": [0.20576, 0.70576, 0, 0],
-        "8816": [0.30274, 0.79383, 0, 0],
-        "8817": [0.30274, 0.79383, 0, 0],
-        "8818": [0.22958, 0.72958, 0, 0],
-        "8819": [0.22958, 0.72958, 0, 0],
-        "8822": [0.1808, 0.675, 0, 0],
-        "8823": [0.1808, 0.675, 0, 0],
-        "8828": [0.13667, 0.63667, 0, 0],
-        "8829": [0.13667, 0.63667, 0, 0],
-        "8830": [0.22958, 0.72958, 0, 0],
-        "8831": [0.22958, 0.72958, 0, 0],
-        "8832": [0.20576, 0.70576, 0, 0],
-        "8833": [0.20576, 0.70576, 0, 0],
-        "8840": [0.30274, 0.79383, 0, 0],
-        "8841": [0.30274, 0.79383, 0, 0],
-        "8842": [0.13597, 0.63597, 0, 0],
-        "8843": [0.13597, 0.63597, 0, 0],
-        "8847": [0.03517, 0.54986, 0, 0],
-        "8848": [0.03517, 0.54986, 0, 0],
-        "8858": [0.08198, 0.58198, 0, 0],
-        "8859": [0.08198, 0.58198, 0, 0],
-        "8861": [0.08198, 0.58198, 0, 0],
-        "8862": [0, 0.675, 0, 0],
-        "8863": [0, 0.675, 0, 0],
-        "8864": [0, 0.675, 0, 0],
-        "8865": [0, 0.675, 0, 0],
-        "8872": [0, 0.69224, 0, 0],
-        "8873": [0, 0.69224, 0, 0],
-        "8874": [0, 0.69224, 0, 0],
-        "8876": [0, 0.68889, 0, 0],
-        "8877": [0, 0.68889, 0, 0],
-        "8878": [0, 0.68889, 0, 0],
-        "8879": [0, 0.68889, 0, 0],
-        "8882": [0.03517, 0.54986, 0, 0],
-        "8883": [0.03517, 0.54986, 0, 0],
-        "8884": [0.13667, 0.63667, 0, 0],
-        "8885": [0.13667, 0.63667, 0, 0],
-        "8888": [0, 0.54986, 0, 0],
-        "8890": [0.19444, 0.43056, 0, 0],
-        "8891": [0.19444, 0.69224, 0, 0],
-        "8892": [0.19444, 0.69224, 0, 0],
-        "8901": [0, 0.54986, 0, 0],
-        "8903": [0.08167, 0.58167, 0, 0],
-        "8905": [0.08167, 0.58167, 0, 0],
-        "8906": [0.08167, 0.58167, 0, 0],
-        "8907": [0, 0.69224, 0, 0],
-        "8908": [0, 0.69224, 0, 0],
-        "8909": [-0.03598, 0.46402, 0, 0],
-        "8910": [0, 0.54986, 0, 0],
-        "8911": [0, 0.54986, 0, 0],
-        "8912": [0.03517, 0.54986, 0, 0],
-        "8913": [0.03517, 0.54986, 0, 0],
-        "8914": [0, 0.54986, 0, 0],
-        "8915": [0, 0.54986, 0, 0],
-        "8916": [0, 0.69224, 0, 0],
-        "8918": [0.0391, 0.5391, 0, 0],
-        "8919": [0.0391, 0.5391, 0, 0],
-        "8920": [0.03517, 0.54986, 0, 0],
-        "8921": [0.03517, 0.54986, 0, 0],
-        "8922": [0.38569, 0.88569, 0, 0],
-        "8923": [0.38569, 0.88569, 0, 0],
-        "8926": [0.13667, 0.63667, 0, 0],
-        "8927": [0.13667, 0.63667, 0, 0],
-        "8928": [0.30274, 0.79383, 0, 0],
-        "8929": [0.30274, 0.79383, 0, 0],
-        "8934": [0.23222, 0.74111, 0, 0],
-        "8935": [0.23222, 0.74111, 0, 0],
-        "8936": [0.23222, 0.74111, 0, 0],
-        "8937": [0.23222, 0.74111, 0, 0],
-        "8938": [0.20576, 0.70576, 0, 0],
-        "8939": [0.20576, 0.70576, 0, 0],
-        "8940": [0.30274, 0.79383, 0, 0],
-        "8941": [0.30274, 0.79383, 0, 0],
-        "8994": [0.19444, 0.69224, 0, 0],
-        "8995": [0.19444, 0.69224, 0, 0],
-        "9416": [0.15559, 0.69224, 0, 0],
-        "9484": [0, 0.69224, 0, 0],
-        "9488": [0, 0.69224, 0, 0],
-        "9492": [0, 0.37788, 0, 0],
-        "9496": [0, 0.37788, 0, 0],
-        "9585": [0.19444, 0.68889, 0, 0],
-        "9586": [0.19444, 0.74111, 0, 0],
-        "9632": [0, 0.675, 0, 0],
-        "9633": [0, 0.675, 0, 0],
-        "9650": [0, 0.54986, 0, 0],
-        "9651": [0, 0.54986, 0, 0],
-        "9654": [0.03517, 0.54986, 0, 0],
-        "9660": [0, 0.54986, 0, 0],
-        "9661": [0, 0.54986, 0, 0],
-        "9664": [0.03517, 0.54986, 0, 0],
-        "9674": [0.11111, 0.69224, 0, 0],
-        "9733": [0.19444, 0.69224, 0, 0],
-        "10003": [0, 0.69224, 0, 0],
-        "10016": [0, 0.69224, 0, 0],
-        "10731": [0.11111, 0.69224, 0, 0],
-        "10846": [0.19444, 0.75583, 0, 0],
-        "10877": [0.13667, 0.63667, 0, 0],
-        "10878": [0.13667, 0.63667, 0, 0],
-        "10885": [0.25583, 0.75583, 0, 0],
-        "10886": [0.25583, 0.75583, 0, 0],
-        "10887": [0.13597, 0.63597, 0, 0],
-        "10888": [0.13597, 0.63597, 0, 0],
-        "10889": [0.26167, 0.75726, 0, 0],
-        "10890": [0.26167, 0.75726, 0, 0],
-        "10891": [0.48256, 0.98256, 0, 0],
-        "10892": [0.48256, 0.98256, 0, 0],
-        "10901": [0.13667, 0.63667, 0, 0],
-        "10902": [0.13667, 0.63667, 0, 0],
-        "10933": [0.25142, 0.75726, 0, 0],
-        "10934": [0.25142, 0.75726, 0, 0],
-        "10935": [0.26167, 0.75726, 0, 0],
-        "10936": [0.26167, 0.75726, 0, 0],
-        "10937": [0.26167, 0.75726, 0, 0],
-        "10938": [0.26167, 0.75726, 0, 0],
-        "10949": [0.25583, 0.75583, 0, 0],
-        "10950": [0.25583, 0.75583, 0, 0],
-        "10955": [0.28481, 0.79383, 0, 0],
-        "10956": [0.28481, 0.79383, 0, 0],
-        "57350": [0.08167, 0.58167, 0, 0],
-        "57351": [0.08167, 0.58167, 0, 0],
-        "57352": [0.08167, 0.58167, 0, 0],
-        "57353": [0, 0.43056, 0.04028, 0],
-        "57356": [0.25142, 0.75726, 0, 0],
-        "57357": [0.25142, 0.75726, 0, 0],
-        "57358": [0.41951, 0.91951, 0, 0],
-        "57359": [0.30274, 0.79383, 0, 0],
-        "57360": [0.30274, 0.79383, 0, 0],
-        "57361": [0.41951, 0.91951, 0, 0],
-        "57366": [0.25142, 0.75726, 0, 0],
-        "57367": [0.25142, 0.75726, 0, 0],
-        "57368": [0.25142, 0.75726, 0, 0],
-        "57369": [0.25142, 0.75726, 0, 0],
-        "57370": [0.13597, 0.63597, 0, 0],
-        "57371": [0.13597, 0.63597, 0, 0]
-    },
-    "Caligraphic-Regular": {
-        "48": [0, 0.43056, 0, 0],
-        "49": [0, 0.43056, 0, 0],
-        "50": [0, 0.43056, 0, 0],
-        "51": [0.19444, 0.43056, 0, 0],
-        "52": [0.19444, 0.43056, 0, 0],
-        "53": [0.19444, 0.43056, 0, 0],
-        "54": [0, 0.64444, 0, 0],
-        "55": [0.19444, 0.43056, 0, 0],
-        "56": [0, 0.64444, 0, 0],
-        "57": [0.19444, 0.43056, 0, 0],
-        "65": [0, 0.68333, 0, 0.19445],
-        "66": [0, 0.68333, 0.03041, 0.13889],
-        "67": [0, 0.68333, 0.05834, 0.13889],
-        "68": [0, 0.68333, 0.02778, 0.08334],
-        "69": [0, 0.68333, 0.08944, 0.11111],
-        "70": [0, 0.68333, 0.09931, 0.11111],
-        "71": [0.09722, 0.68333, 0.0593, 0.11111],
-        "72": [0, 0.68333, 0.00965, 0.11111],
-        "73": [0, 0.68333, 0.07382, 0],
-        "74": [0.09722, 0.68333, 0.18472, 0.16667],
-        "75": [0, 0.68333, 0.01445, 0.05556],
-        "76": [0, 0.68333, 0, 0.13889],
-        "77": [0, 0.68333, 0, 0.13889],
-        "78": [0, 0.68333, 0.14736, 0.08334],
-        "79": [0, 0.68333, 0.02778, 0.11111],
-        "80": [0, 0.68333, 0.08222, 0.08334],
-        "81": [0.09722, 0.68333, 0, 0.11111],
-        "82": [0, 0.68333, 0, 0.08334],
-        "83": [0, 0.68333, 0.075, 0.13889],
-        "84": [0, 0.68333, 0.25417, 0],
-        "85": [0, 0.68333, 0.09931, 0.08334],
-        "86": [0, 0.68333, 0.08222, 0],
-        "87": [0, 0.68333, 0.08222, 0.08334],
-        "88": [0, 0.68333, 0.14643, 0.13889],
-        "89": [0.09722, 0.68333, 0.08222, 0.08334],
-        "90": [0, 0.68333, 0.07944, 0.13889]
-    },
-    "Fraktur-Regular": {
-        "33": [0, 0.69141, 0, 0],
-        "34": [0, 0.69141, 0, 0],
-        "38": [0, 0.69141, 0, 0],
-        "39": [0, 0.69141, 0, 0],
-        "40": [0.24982, 0.74947, 0, 0],
-        "41": [0.24982, 0.74947, 0, 0],
-        "42": [0, 0.62119, 0, 0],
-        "43": [0.08319, 0.58283, 0, 0],
-        "44": [0, 0.10803, 0, 0],
-        "45": [0.08319, 0.58283, 0, 0],
-        "46": [0, 0.10803, 0, 0],
-        "47": [0.24982, 0.74947, 0, 0],
-        "48": [0, 0.47534, 0, 0],
-        "49": [0, 0.47534, 0, 0],
-        "50": [0, 0.47534, 0, 0],
-        "51": [0.18906, 0.47534, 0, 0],
-        "52": [0.18906, 0.47534, 0, 0],
-        "53": [0.18906, 0.47534, 0, 0],
-        "54": [0, 0.69141, 0, 0],
-        "55": [0.18906, 0.47534, 0, 0],
-        "56": [0, 0.69141, 0, 0],
-        "57": [0.18906, 0.47534, 0, 0],
-        "58": [0, 0.47534, 0, 0],
-        "59": [0.12604, 0.47534, 0, 0],
-        "61": [-0.13099, 0.36866, 0, 0],
-        "63": [0, 0.69141, 0, 0],
-        "65": [0, 0.69141, 0, 0],
-        "66": [0, 0.69141, 0, 0],
-        "67": [0, 0.69141, 0, 0],
-        "68": [0, 0.69141, 0, 0],
-        "69": [0, 0.69141, 0, 0],
-        "70": [0.12604, 0.69141, 0, 0],
-        "71": [0, 0.69141, 0, 0],
-        "72": [0.06302, 0.69141, 0, 0],
-        "73": [0, 0.69141, 0, 0],
-        "74": [0.12604, 0.69141, 0, 0],
-        "75": [0, 0.69141, 0, 0],
-        "76": [0, 0.69141, 0, 0],
-        "77": [0, 0.69141, 0, 0],
-        "78": [0, 0.69141, 0, 0],
-        "79": [0, 0.69141, 0, 0],
-        "80": [0.18906, 0.69141, 0, 0],
-        "81": [0.03781, 0.69141, 0, 0],
-        "82": [0, 0.69141, 0, 0],
-        "83": [0, 0.69141, 0, 0],
-        "84": [0, 0.69141, 0, 0],
-        "85": [0, 0.69141, 0, 0],
-        "86": [0, 0.69141, 0, 0],
-        "87": [0, 0.69141, 0, 0],
-        "88": [0, 0.69141, 0, 0],
-        "89": [0.18906, 0.69141, 0, 0],
-        "90": [0.12604, 0.69141, 0, 0],
-        "91": [0.24982, 0.74947, 0, 0],
-        "93": [0.24982, 0.74947, 0, 0],
-        "94": [0, 0.69141, 0, 0],
-        "97": [0, 0.47534, 0, 0],
-        "98": [0, 0.69141, 0, 0],
-        "99": [0, 0.47534, 0, 0],
-        "100": [0, 0.62119, 0, 0],
-        "101": [0, 0.47534, 0, 0],
-        "102": [0.18906, 0.69141, 0, 0],
-        "103": [0.18906, 0.47534, 0, 0],
-        "104": [0.18906, 0.69141, 0, 0],
-        "105": [0, 0.69141, 0, 0],
-        "106": [0, 0.69141, 0, 0],
-        "107": [0, 0.69141, 0, 0],
-        "108": [0, 0.69141, 0, 0],
-        "109": [0, 0.47534, 0, 0],
-        "110": [0, 0.47534, 0, 0],
-        "111": [0, 0.47534, 0, 0],
-        "112": [0.18906, 0.52396, 0, 0],
-        "113": [0.18906, 0.47534, 0, 0],
-        "114": [0, 0.47534, 0, 0],
-        "115": [0, 0.47534, 0, 0],
-        "116": [0, 0.62119, 0, 0],
-        "117": [0, 0.47534, 0, 0],
-        "118": [0, 0.52396, 0, 0],
-        "119": [0, 0.52396, 0, 0],
-        "120": [0.18906, 0.47534, 0, 0],
-        "121": [0.18906, 0.47534, 0, 0],
-        "122": [0.18906, 0.47534, 0, 0],
-        "8216": [0, 0.69141, 0, 0],
-        "8217": [0, 0.69141, 0, 0],
-        "58112": [0, 0.62119, 0, 0],
-        "58113": [0, 0.62119, 0, 0],
-        "58114": [0.18906, 0.69141, 0, 0],
-        "58115": [0.18906, 0.69141, 0, 0],
-        "58116": [0.18906, 0.47534, 0, 0],
-        "58117": [0, 0.69141, 0, 0],
-        "58118": [0, 0.62119, 0, 0],
-        "58119": [0, 0.47534, 0, 0]
-    },
-    "Main-Bold": {
-        "33": [0, 0.69444, 0, 0],
-        "34": [0, 0.69444, 0, 0],
-        "35": [0.19444, 0.69444, 0, 0],
-        "36": [0.05556, 0.75, 0, 0],
-        "37": [0.05556, 0.75, 0, 0],
-        "38": [0, 0.69444, 0, 0],
-        "39": [0, 0.69444, 0, 0],
-        "40": [0.25, 0.75, 0, 0],
-        "41": [0.25, 0.75, 0, 0],
-        "42": [0, 0.75, 0, 0],
-        "43": [0.13333, 0.63333, 0, 0],
-        "44": [0.19444, 0.15556, 0, 0],
-        "45": [0, 0.44444, 0, 0],
-        "46": [0, 0.15556, 0, 0],
-        "47": [0.25, 0.75, 0, 0],
-        "48": [0, 0.64444, 0, 0],
-        "49": [0, 0.64444, 0, 0],
-        "50": [0, 0.64444, 0, 0],
-        "51": [0, 0.64444, 0, 0],
-        "52": [0, 0.64444, 0, 0],
-        "53": [0, 0.64444, 0, 0],
-        "54": [0, 0.64444, 0, 0],
-        "55": [0, 0.64444, 0, 0],
-        "56": [0, 0.64444, 0, 0],
-        "57": [0, 0.64444, 0, 0],
-        "58": [0, 0.44444, 0, 0],
-        "59": [0.19444, 0.44444, 0, 0],
-        "60": [0.08556, 0.58556, 0, 0],
-        "61": [-0.10889, 0.39111, 0, 0],
-        "62": [0.08556, 0.58556, 0, 0],
-        "63": [0, 0.69444, 0, 0],
-        "64": [0, 0.69444, 0, 0],
-        "65": [0, 0.68611, 0, 0],
-        "66": [0, 0.68611, 0, 0],
-        "67": [0, 0.68611, 0, 0],
-        "68": [0, 0.68611, 0, 0],
-        "69": [0, 0.68611, 0, 0],
-        "70": [0, 0.68611, 0, 0],
-        "71": [0, 0.68611, 0, 0],
-        "72": [0, 0.68611, 0, 0],
-        "73": [0, 0.68611, 0, 0],
-        "74": [0, 0.68611, 0, 0],
-        "75": [0, 0.68611, 0, 0],
-        "76": [0, 0.68611, 0, 0],
-        "77": [0, 0.68611, 0, 0],
-        "78": [0, 0.68611, 0, 0],
-        "79": [0, 0.68611, 0, 0],
-        "80": [0, 0.68611, 0, 0],
-        "81": [0.19444, 0.68611, 0, 0],
-        "82": [0, 0.68611, 0, 0],
-        "83": [0, 0.68611, 0, 0],
-        "84": [0, 0.68611, 0, 0],
-        "85": [0, 0.68611, 0, 0],
-        "86": [0, 0.68611, 0.01597, 0],
-        "87": [0, 0.68611, 0.01597, 0],
-        "88": [0, 0.68611, 0, 0],
-        "89": [0, 0.68611, 0.02875, 0],
-        "90": [0, 0.68611, 0, 0],
-        "91": [0.25, 0.75, 0, 0],
-        "92": [0.25, 0.75, 0, 0],
-        "93": [0.25, 0.75, 0, 0],
-        "94": [0, 0.69444, 0, 0],
-        "95": [0.31, 0.13444, 0.03194, 0],
-        "96": [0, 0.69444, 0, 0],
-        "97": [0, 0.44444, 0, 0],
-        "98": [0, 0.69444, 0, 0],
-        "99": [0, 0.44444, 0, 0],
-        "100": [0, 0.69444, 0, 0],
-        "101": [0, 0.44444, 0, 0],
-        "102": [0, 0.69444, 0.10903, 0],
-        "103": [0.19444, 0.44444, 0.01597, 0],
-        "104": [0, 0.69444, 0, 0],
-        "105": [0, 0.69444, 0, 0],
-        "106": [0.19444, 0.69444, 0, 0],
-        "107": [0, 0.69444, 0, 0],
-        "108": [0, 0.69444, 0, 0],
-        "109": [0, 0.44444, 0, 0],
-        "110": [0, 0.44444, 0, 0],
-        "111": [0, 0.44444, 0, 0],
-        "112": [0.19444, 0.44444, 0, 0],
-        "113": [0.19444, 0.44444, 0, 0],
-        "114": [0, 0.44444, 0, 0],
-        "115": [0, 0.44444, 0, 0],
-        "116": [0, 0.63492, 0, 0],
-        "117": [0, 0.44444, 0, 0],
-        "118": [0, 0.44444, 0.01597, 0],
-        "119": [0, 0.44444, 0.01597, 0],
-        "120": [0, 0.44444, 0, 0],
-        "121": [0.19444, 0.44444, 0.01597, 0],
-        "122": [0, 0.44444, 0, 0],
-        "123": [0.25, 0.75, 0, 0],
-        "124": [0.25, 0.75, 0, 0],
-        "125": [0.25, 0.75, 0, 0],
-        "126": [0.35, 0.34444, 0, 0],
-        "168": [0, 0.69444, 0, 0],
-        "172": [0, 0.44444, 0, 0],
-        "175": [0, 0.59611, 0, 0],
-        "176": [0, 0.69444, 0, 0],
-        "177": [0.13333, 0.63333, 0, 0],
-        "180": [0, 0.69444, 0, 0],
-        "215": [0.13333, 0.63333, 0, 0],
-        "247": [0.13333, 0.63333, 0, 0],
-        "305": [0, 0.44444, 0, 0],
-        "567": [0.19444, 0.44444, 0, 0],
-        "710": [0, 0.69444, 0, 0],
-        "711": [0, 0.63194, 0, 0],
-        "713": [0, 0.59611, 0, 0],
-        "714": [0, 0.69444, 0, 0],
-        "715": [0, 0.69444, 0, 0],
-        "728": [0, 0.69444, 0, 0],
-        "729": [0, 0.69444, 0, 0],
-        "730": [0, 0.69444, 0, 0],
-        "732": [0, 0.69444, 0, 0],
-        "768": [0, 0.69444, 0, 0],
-        "769": [0, 0.69444, 0, 0],
-        "770": [0, 0.69444, 0, 0],
-        "771": [0, 0.69444, 0, 0],
-        "772": [0, 0.59611, 0, 0],
-        "774": [0, 0.69444, 0, 0],
-        "775": [0, 0.69444, 0, 0],
-        "776": [0, 0.69444, 0, 0],
-        "778": [0, 0.69444, 0, 0],
-        "779": [0, 0.69444, 0, 0],
-        "780": [0, 0.63194, 0, 0],
-        "824": [0.19444, 0.69444, 0, 0],
-        "915": [0, 0.68611, 0, 0],
-        "916": [0, 0.68611, 0, 0],
-        "920": [0, 0.68611, 0, 0],
-        "923": [0, 0.68611, 0, 0],
-        "926": [0, 0.68611, 0, 0],
-        "928": [0, 0.68611, 0, 0],
-        "931": [0, 0.68611, 0, 0],
-        "933": [0, 0.68611, 0, 0],
-        "934": [0, 0.68611, 0, 0],
-        "936": [0, 0.68611, 0, 0],
-        "937": [0, 0.68611, 0, 0],
-        "8211": [0, 0.44444, 0.03194, 0],
-        "8212": [0, 0.44444, 0.03194, 0],
-        "8216": [0, 0.69444, 0, 0],
-        "8217": [0, 0.69444, 0, 0],
-        "8220": [0, 0.69444, 0, 0],
-        "8221": [0, 0.69444, 0, 0],
-        "8224": [0.19444, 0.69444, 0, 0],
-        "8225": [0.19444, 0.69444, 0, 0],
-        "8242": [0, 0.55556, 0, 0],
-        "8407": [0, 0.72444, 0.15486, 0],
-        "8463": [0, 0.69444, 0, 0],
-        "8465": [0, 0.69444, 0, 0],
-        "8467": [0, 0.69444, 0, 0],
-        "8472": [0.19444, 0.44444, 0, 0],
-        "8476": [0, 0.69444, 0, 0],
-        "8501": [0, 0.69444, 0, 0],
-        "8592": [-0.10889, 0.39111, 0, 0],
-        "8593": [0.19444, 0.69444, 0, 0],
-        "8594": [-0.10889, 0.39111, 0, 0],
-        "8595": [0.19444, 0.69444, 0, 0],
-        "8596": [-0.10889, 0.39111, 0, 0],
-        "8597": [0.25, 0.75, 0, 0],
-        "8598": [0.19444, 0.69444, 0, 0],
-        "8599": [0.19444, 0.69444, 0, 0],
-        "8600": [0.19444, 0.69444, 0, 0],
-        "8601": [0.19444, 0.69444, 0, 0],
-        "8636": [-0.10889, 0.39111, 0, 0],
-        "8637": [-0.10889, 0.39111, 0, 0],
-        "8640": [-0.10889, 0.39111, 0, 0],
-        "8641": [-0.10889, 0.39111, 0, 0],
-        "8656": [-0.10889, 0.39111, 0, 0],
-        "8657": [0.19444, 0.69444, 0, 0],
-        "8658": [-0.10889, 0.39111, 0, 0],
-        "8659": [0.19444, 0.69444, 0, 0],
-        "8660": [-0.10889, 0.39111, 0, 0],
-        "8661": [0.25, 0.75, 0, 0],
-        "8704": [0, 0.69444, 0, 0],
-        "8706": [0, 0.69444, 0.06389, 0],
-        "8707": [0, 0.69444, 0, 0],
-        "8709": [0.05556, 0.75, 0, 0],
-        "8711": [0, 0.68611, 0, 0],
-        "8712": [0.08556, 0.58556, 0, 0],
-        "8715": [0.08556, 0.58556, 0, 0],
-        "8722": [0.13333, 0.63333, 0, 0],
-        "8723": [0.13333, 0.63333, 0, 0],
-        "8725": [0.25, 0.75, 0, 0],
-        "8726": [0.25, 0.75, 0, 0],
-        "8727": [-0.02778, 0.47222, 0, 0],
-        "8728": [-0.02639, 0.47361, 0, 0],
-        "8729": [-0.02639, 0.47361, 0, 0],
-        "8730": [0.18, 0.82, 0, 0],
-        "8733": [0, 0.44444, 0, 0],
-        "8734": [0, 0.44444, 0, 0],
-        "8736": [0, 0.69224, 0, 0],
-        "8739": [0.25, 0.75, 0, 0],
-        "8741": [0.25, 0.75, 0, 0],
-        "8743": [0, 0.55556, 0, 0],
-        "8744": [0, 0.55556, 0, 0],
-        "8745": [0, 0.55556, 0, 0],
-        "8746": [0, 0.55556, 0, 0],
-        "8747": [0.19444, 0.69444, 0.12778, 0],
-        "8764": [-0.10889, 0.39111, 0, 0],
-        "8768": [0.19444, 0.69444, 0, 0],
-        "8771": [0.00222, 0.50222, 0, 0],
-        "8776": [0.02444, 0.52444, 0, 0],
-        "8781": [0.00222, 0.50222, 0, 0],
-        "8801": [0.00222, 0.50222, 0, 0],
-        "8804": [0.19667, 0.69667, 0, 0],
-        "8805": [0.19667, 0.69667, 0, 0],
-        "8810": [0.08556, 0.58556, 0, 0],
-        "8811": [0.08556, 0.58556, 0, 0],
-        "8826": [0.08556, 0.58556, 0, 0],
-        "8827": [0.08556, 0.58556, 0, 0],
-        "8834": [0.08556, 0.58556, 0, 0],
-        "8835": [0.08556, 0.58556, 0, 0],
-        "8838": [0.19667, 0.69667, 0, 0],
-        "8839": [0.19667, 0.69667, 0, 0],
-        "8846": [0, 0.55556, 0, 0],
-        "8849": [0.19667, 0.69667, 0, 0],
-        "8850": [0.19667, 0.69667, 0, 0],
-        "8851": [0, 0.55556, 0, 0],
-        "8852": [0, 0.55556, 0, 0],
-        "8853": [0.13333, 0.63333, 0, 0],
-        "8854": [0.13333, 0.63333, 0, 0],
-        "8855": [0.13333, 0.63333, 0, 0],
-        "8856": [0.13333, 0.63333, 0, 0],
-        "8857": [0.13333, 0.63333, 0, 0],
-        "8866": [0, 0.69444, 0, 0],
-        "8867": [0, 0.69444, 0, 0],
-        "8868": [0, 0.69444, 0, 0],
-        "8869": [0, 0.69444, 0, 0],
-        "8900": [-0.02639, 0.47361, 0, 0],
-        "8901": [-0.02639, 0.47361, 0, 0],
-        "8902": [-0.02778, 0.47222, 0, 0],
-        "8968": [0.25, 0.75, 0, 0],
-        "8969": [0.25, 0.75, 0, 0],
-        "8970": [0.25, 0.75, 0, 0],
-        "8971": [0.25, 0.75, 0, 0],
-        "8994": [-0.13889, 0.36111, 0, 0],
-        "8995": [-0.13889, 0.36111, 0, 0],
-        "9651": [0.19444, 0.69444, 0, 0],
-        "9657": [-0.02778, 0.47222, 0, 0],
-        "9661": [0.19444, 0.69444, 0, 0],
-        "9667": [-0.02778, 0.47222, 0, 0],
-        "9711": [0.19444, 0.69444, 0, 0],
-        "9824": [0.12963, 0.69444, 0, 0],
-        "9825": [0.12963, 0.69444, 0, 0],
-        "9826": [0.12963, 0.69444, 0, 0],
-        "9827": [0.12963, 0.69444, 0, 0],
-        "9837": [0, 0.75, 0, 0],
-        "9838": [0.19444, 0.69444, 0, 0],
-        "9839": [0.19444, 0.69444, 0, 0],
-        "10216": [0.25, 0.75, 0, 0],
-        "10217": [0.25, 0.75, 0, 0],
-        "10815": [0, 0.68611, 0, 0],
-        "10927": [0.19667, 0.69667, 0, 0],
-        "10928": [0.19667, 0.69667, 0, 0]
-    },
-    "Main-Italic": {
-        "33": [0, 0.69444, 0.12417, 0],
-        "34": [0, 0.69444, 0.06961, 0],
-        "35": [0.19444, 0.69444, 0.06616, 0],
-        "37": [0.05556, 0.75, 0.13639, 0],
-        "38": [0, 0.69444, 0.09694, 0],
-        "39": [0, 0.69444, 0.12417, 0],
-        "40": [0.25, 0.75, 0.16194, 0],
-        "41": [0.25, 0.75, 0.03694, 0],
-        "42": [0, 0.75, 0.14917, 0],
-        "43": [0.05667, 0.56167, 0.03694, 0],
-        "44": [0.19444, 0.10556, 0, 0],
-        "45": [0, 0.43056, 0.02826, 0],
-        "46": [0, 0.10556, 0, 0],
-        "47": [0.25, 0.75, 0.16194, 0],
-        "48": [0, 0.64444, 0.13556, 0],
-        "49": [0, 0.64444, 0.13556, 0],
-        "50": [0, 0.64444, 0.13556, 0],
-        "51": [0, 0.64444, 0.13556, 0],
-        "52": [0.19444, 0.64444, 0.13556, 0],
-        "53": [0, 0.64444, 0.13556, 0],
-        "54": [0, 0.64444, 0.13556, 0],
-        "55": [0.19444, 0.64444, 0.13556, 0],
-        "56": [0, 0.64444, 0.13556, 0],
-        "57": [0, 0.64444, 0.13556, 0],
-        "58": [0, 0.43056, 0.0582, 0],
-        "59": [0.19444, 0.43056, 0.0582, 0],
-        "61": [-0.13313, 0.36687, 0.06616, 0],
-        "63": [0, 0.69444, 0.1225, 0],
-        "64": [0, 0.69444, 0.09597, 0],
-        "65": [0, 0.68333, 0, 0],
-        "66": [0, 0.68333, 0.10257, 0],
-        "67": [0, 0.68333, 0.14528, 0],
-        "68": [0, 0.68333, 0.09403, 0],
-        "69": [0, 0.68333, 0.12028, 0],
-        "70": [0, 0.68333, 0.13305, 0],
-        "71": [0, 0.68333, 0.08722, 0],
-        "72": [0, 0.68333, 0.16389, 0],
-        "73": [0, 0.68333, 0.15806, 0],
-        "74": [0, 0.68333, 0.14028, 0],
-        "75": [0, 0.68333, 0.14528, 0],
-        "76": [0, 0.68333, 0, 0],
-        "77": [0, 0.68333, 0.16389, 0],
-        "78": [0, 0.68333, 0.16389, 0],
-        "79": [0, 0.68333, 0.09403, 0],
-        "80": [0, 0.68333, 0.10257, 0],
-        "81": [0.19444, 0.68333, 0.09403, 0],
-        "82": [0, 0.68333, 0.03868, 0],
-        "83": [0, 0.68333, 0.11972, 0],
-        "84": [0, 0.68333, 0.13305, 0],
-        "85": [0, 0.68333, 0.16389, 0],
-        "86": [0, 0.68333, 0.18361, 0],
-        "87": [0, 0.68333, 0.18361, 0],
-        "88": [0, 0.68333, 0.15806, 0],
-        "89": [0, 0.68333, 0.19383, 0],
-        "90": [0, 0.68333, 0.14528, 0],
-        "91": [0.25, 0.75, 0.1875, 0],
-        "93": [0.25, 0.75, 0.10528, 0],
-        "94": [0, 0.69444, 0.06646, 0],
-        "95": [0.31, 0.12056, 0.09208, 0],
-        "97": [0, 0.43056, 0.07671, 0],
-        "98": [0, 0.69444, 0.06312, 0],
-        "99": [0, 0.43056, 0.05653, 0],
-        "100": [0, 0.69444, 0.10333, 0],
-        "101": [0, 0.43056, 0.07514, 0],
-        "102": [0.19444, 0.69444, 0.21194, 0],
-        "103": [0.19444, 0.43056, 0.08847, 0],
-        "104": [0, 0.69444, 0.07671, 0],
-        "105": [0, 0.65536, 0.1019, 0],
-        "106": [0.19444, 0.65536, 0.14467, 0],
-        "107": [0, 0.69444, 0.10764, 0],
-        "108": [0, 0.69444, 0.10333, 0],
-        "109": [0, 0.43056, 0.07671, 0],
-        "110": [0, 0.43056, 0.07671, 0],
-        "111": [0, 0.43056, 0.06312, 0],
-        "112": [0.19444, 0.43056, 0.06312, 0],
-        "113": [0.19444, 0.43056, 0.08847, 0],
-        "114": [0, 0.43056, 0.10764, 0],
-        "115": [0, 0.43056, 0.08208, 0],
-        "116": [0, 0.61508, 0.09486, 0],
-        "117": [0, 0.43056, 0.07671, 0],
-        "118": [0, 0.43056, 0.10764, 0],
-        "119": [0, 0.43056, 0.10764, 0],
-        "120": [0, 0.43056, 0.12042, 0],
-        "121": [0.19444, 0.43056, 0.08847, 0],
-        "122": [0, 0.43056, 0.12292, 0],
-        "126": [0.35, 0.31786, 0.11585, 0],
-        "163": [0, 0.69444, 0, 0],
-        "305": [0, 0.43056, 0, 0.02778],
-        "567": [0.19444, 0.43056, 0, 0.08334],
-        "768": [0, 0.69444, 0, 0],
-        "769": [0, 0.69444, 0.09694, 0],
-        "770": [0, 0.69444, 0.06646, 0],
-        "771": [0, 0.66786, 0.11585, 0],
-        "772": [0, 0.56167, 0.10333, 0],
-        "774": [0, 0.69444, 0.10806, 0],
-        "775": [0, 0.66786, 0.11752, 0],
-        "776": [0, 0.66786, 0.10474, 0],
-        "778": [0, 0.69444, 0, 0],
-        "779": [0, 0.69444, 0.1225, 0],
-        "780": [0, 0.62847, 0.08295, 0],
-        "915": [0, 0.68333, 0.13305, 0],
-        "916": [0, 0.68333, 0, 0],
-        "920": [0, 0.68333, 0.09403, 0],
-        "923": [0, 0.68333, 0, 0],
-        "926": [0, 0.68333, 0.15294, 0],
-        "928": [0, 0.68333, 0.16389, 0],
-        "931": [0, 0.68333, 0.12028, 0],
-        "933": [0, 0.68333, 0.11111, 0],
-        "934": [0, 0.68333, 0.05986, 0],
-        "936": [0, 0.68333, 0.11111, 0],
-        "937": [0, 0.68333, 0.10257, 0],
-        "8211": [0, 0.43056, 0.09208, 0],
-        "8212": [0, 0.43056, 0.09208, 0],
-        "8216": [0, 0.69444, 0.12417, 0],
-        "8217": [0, 0.69444, 0.12417, 0],
-        "8220": [0, 0.69444, 0.1685, 0],
-        "8221": [0, 0.69444, 0.06961, 0],
-        "8463": [0, 0.68889, 0, 0]
-    },
-    "Main-Regular": {
-        "32": [0, 0, 0, 0],
-        "33": [0, 0.69444, 0, 0],
-        "34": [0, 0.69444, 0, 0],
-        "35": [0.19444, 0.69444, 0, 0],
-        "36": [0.05556, 0.75, 0, 0],
-        "37": [0.05556, 0.75, 0, 0],
-        "38": [0, 0.69444, 0, 0],
-        "39": [0, 0.69444, 0, 0],
-        "40": [0.25, 0.75, 0, 0],
-        "41": [0.25, 0.75, 0, 0],
-        "42": [0, 0.75, 0, 0],
-        "43": [0.08333, 0.58333, 0, 0],
-        "44": [0.19444, 0.10556, 0, 0],
-        "45": [0, 0.43056, 0, 0],
-        "46": [0, 0.10556, 0, 0],
-        "47": [0.25, 0.75, 0, 0],
-        "48": [0, 0.64444, 0, 0],
-        "49": [0, 0.64444, 0, 0],
-        "50": [0, 0.64444, 0, 0],
-        "51": [0, 0.64444, 0, 0],
-        "52": [0, 0.64444, 0, 0],
-        "53": [0, 0.64444, 0, 0],
-        "54": [0, 0.64444, 0, 0],
-        "55": [0, 0.64444, 0, 0],
-        "56": [0, 0.64444, 0, 0],
-        "57": [0, 0.64444, 0, 0],
-        "58": [0, 0.43056, 0, 0],
-        "59": [0.19444, 0.43056, 0, 0],
-        "60": [0.0391, 0.5391, 0, 0],
-        "61": [-0.13313, 0.36687, 0, 0],
-        "62": [0.0391, 0.5391, 0, 0],
-        "63": [0, 0.69444, 0, 0],
-        "64": [0, 0.69444, 0, 0],
-        "65": [0, 0.68333, 0, 0],
-        "66": [0, 0.68333, 0, 0],
-        "67": [0, 0.68333, 0, 0],
-        "68": [0, 0.68333, 0, 0],
-        "69": [0, 0.68333, 0, 0],
-        "70": [0, 0.68333, 0, 0],
-        "71": [0, 0.68333, 0, 0],
-        "72": [0, 0.68333, 0, 0],
-        "73": [0, 0.68333, 0, 0],
-        "74": [0, 0.68333, 0, 0],
-        "75": [0, 0.68333, 0, 0],
-        "76": [0, 0.68333, 0, 0],
-        "77": [0, 0.68333, 0, 0],
-        "78": [0, 0.68333, 0, 0],
-        "79": [0, 0.68333, 0, 0],
-        "80": [0, 0.68333, 0, 0],
-        "81": [0.19444, 0.68333, 0, 0],
-        "82": [0, 0.68333, 0, 0],
-        "83": [0, 0.68333, 0, 0],
-        "84": [0, 0.68333, 0, 0],
-        "85": [0, 0.68333, 0, 0],
-        "86": [0, 0.68333, 0.01389, 0],
-        "87": [0, 0.68333, 0.01389, 0],
-        "88": [0, 0.68333, 0, 0],
-        "89": [0, 0.68333, 0.025, 0],
-        "90": [0, 0.68333, 0, 0],
-        "91": [0.25, 0.75, 0, 0],
-        "92": [0.25, 0.75, 0, 0],
-        "93": [0.25, 0.75, 0, 0],
-        "94": [0, 0.69444, 0, 0],
-        "95": [0.31, 0.12056, 0.02778, 0],
-        "96": [0, 0.69444, 0, 0],
-        "97": [0, 0.43056, 0, 0],
-        "98": [0, 0.69444, 0, 0],
-        "99": [0, 0.43056, 0, 0],
-        "100": [0, 0.69444, 0, 0],
-        "101": [0, 0.43056, 0, 0],
-        "102": [0, 0.69444, 0.07778, 0],
-        "103": [0.19444, 0.43056, 0.01389, 0],
-        "104": [0, 0.69444, 0, 0],
-        "105": [0, 0.66786, 0, 0],
-        "106": [0.19444, 0.66786, 0, 0],
-        "107": [0, 0.69444, 0, 0],
-        "108": [0, 0.69444, 0, 0],
-        "109": [0, 0.43056, 0, 0],
-        "110": [0, 0.43056, 0, 0],
-        "111": [0, 0.43056, 0, 0],
-        "112": [0.19444, 0.43056, 0, 0],
-        "113": [0.19444, 0.43056, 0, 0],
-        "114": [0, 0.43056, 0, 0],
-        "115": [0, 0.43056, 0, 0],
-        "116": [0, 0.61508, 0, 0],
-        "117": [0, 0.43056, 0, 0],
-        "118": [0, 0.43056, 0.01389, 0],
-        "119": [0, 0.43056, 0.01389, 0],
-        "120": [0, 0.43056, 0, 0],
-        "121": [0.19444, 0.43056, 0.01389, 0],
-        "122": [0, 0.43056, 0, 0],
-        "123": [0.25, 0.75, 0, 0],
-        "124": [0.25, 0.75, 0, 0],
-        "125": [0.25, 0.75, 0, 0],
-        "126": [0.35, 0.31786, 0, 0],
-        "160": [0, 0, 0, 0],
-        "168": [0, 0.66786, 0, 0],
-        "172": [0, 0.43056, 0, 0],
-        "175": [0, 0.56778, 0, 0],
-        "176": [0, 0.69444, 0, 0],
-        "177": [0.08333, 0.58333, 0, 0],
-        "180": [0, 0.69444, 0, 0],
-        "215": [0.08333, 0.58333, 0, 0],
-        "247": [0.08333, 0.58333, 0, 0],
-        "305": [0, 0.43056, 0, 0],
-        "567": [0.19444, 0.43056, 0, 0],
-        "710": [0, 0.69444, 0, 0],
-        "711": [0, 0.62847, 0, 0],
-        "713": [0, 0.56778, 0, 0],
-        "714": [0, 0.69444, 0, 0],
-        "715": [0, 0.69444, 0, 0],
-        "728": [0, 0.69444, 0, 0],
-        "729": [0, 0.66786, 0, 0],
-        "730": [0, 0.69444, 0, 0],
-        "732": [0, 0.66786, 0, 0],
-        "768": [0, 0.69444, 0, 0],
-        "769": [0, 0.69444, 0, 0],
-        "770": [0, 0.69444, 0, 0],
-        "771": [0, 0.66786, 0, 0],
-        "772": [0, 0.56778, 0, 0],
-        "774": [0, 0.69444, 0, 0],
-        "775": [0, 0.66786, 0, 0],
-        "776": [0, 0.66786, 0, 0],
-        "778": [0, 0.69444, 0, 0],
-        "779": [0, 0.69444, 0, 0],
-        "780": [0, 0.62847, 0, 0],
-        "824": [0.19444, 0.69444, 0, 0],
-        "915": [0, 0.68333, 0, 0],
-        "916": [0, 0.68333, 0, 0],
-        "920": [0, 0.68333, 0, 0],
-        "923": [0, 0.68333, 0, 0],
-        "926": [0, 0.68333, 0, 0],
-        "928": [0, 0.68333, 0, 0],
-        "931": [0, 0.68333, 0, 0],
-        "933": [0, 0.68333, 0, 0],
-        "934": [0, 0.68333, 0, 0],
-        "936": [0, 0.68333, 0, 0],
-        "937": [0, 0.68333, 0, 0],
-        "8211": [0, 0.43056, 0.02778, 0],
-        "8212": [0, 0.43056, 0.02778, 0],
-        "8216": [0, 0.69444, 0, 0],
-        "8217": [0, 0.69444, 0, 0],
-        "8220": [0, 0.69444, 0, 0],
-        "8221": [0, 0.69444, 0, 0],
-        "8224": [0.19444, 0.69444, 0, 0],
-        "8225": [0.19444, 0.69444, 0, 0],
-        "8230": [0, 0.12, 0, 0],
-        "8242": [0, 0.55556, 0, 0],
-        "8407": [0, 0.71444, 0.15382, 0],
-        "8463": [0, 0.68889, 0, 0],
-        "8465": [0, 0.69444, 0, 0],
-        "8467": [0, 0.69444, 0, 0.11111],
-        "8472": [0.19444, 0.43056, 0, 0.11111],
-        "8476": [0, 0.69444, 0, 0],
-        "8501": [0, 0.69444, 0, 0],
-        "8592": [-0.13313, 0.36687, 0, 0],
-        "8593": [0.19444, 0.69444, 0, 0],
-        "8594": [-0.13313, 0.36687, 0, 0],
-        "8595": [0.19444, 0.69444, 0, 0],
-        "8596": [-0.13313, 0.36687, 0, 0],
-        "8597": [0.25, 0.75, 0, 0],
-        "8598": [0.19444, 0.69444, 0, 0],
-        "8599": [0.19444, 0.69444, 0, 0],
-        "8600": [0.19444, 0.69444, 0, 0],
-        "8601": [0.19444, 0.69444, 0, 0],
-        "8614": [0.011, 0.511, 0, 0],
-        "8617": [0.011, 0.511, 0, 0],
-        "8618": [0.011, 0.511, 0, 0],
-        "8636": [-0.13313, 0.36687, 0, 0],
-        "8637": [-0.13313, 0.36687, 0, 0],
-        "8640": [-0.13313, 0.36687, 0, 0],
-        "8641": [-0.13313, 0.36687, 0, 0],
-        "8652": [0.011, 0.671, 0, 0],
-        "8656": [-0.13313, 0.36687, 0, 0],
-        "8657": [0.19444, 0.69444, 0, 0],
-        "8658": [-0.13313, 0.36687, 0, 0],
-        "8659": [0.19444, 0.69444, 0, 0],
-        "8660": [-0.13313, 0.36687, 0, 0],
-        "8661": [0.25, 0.75, 0, 0],
-        "8704": [0, 0.69444, 0, 0],
-        "8706": [0, 0.69444, 0.05556, 0.08334],
-        "8707": [0, 0.69444, 0, 0],
-        "8709": [0.05556, 0.75, 0, 0],
-        "8711": [0, 0.68333, 0, 0],
-        "8712": [0.0391, 0.5391, 0, 0],
-        "8715": [0.0391, 0.5391, 0, 0],
-        "8722": [0.08333, 0.58333, 0, 0],
-        "8723": [0.08333, 0.58333, 0, 0],
-        "8725": [0.25, 0.75, 0, 0],
-        "8726": [0.25, 0.75, 0, 0],
-        "8727": [-0.03472, 0.46528, 0, 0],
-        "8728": [-0.05555, 0.44445, 0, 0],
-        "8729": [-0.05555, 0.44445, 0, 0],
-        "8730": [0.2, 0.8, 0, 0],
-        "8733": [0, 0.43056, 0, 0],
-        "8734": [0, 0.43056, 0, 0],
-        "8736": [0, 0.69224, 0, 0],
-        "8739": [0.25, 0.75, 0, 0],
-        "8741": [0.25, 0.75, 0, 0],
-        "8743": [0, 0.55556, 0, 0],
-        "8744": [0, 0.55556, 0, 0],
-        "8745": [0, 0.55556, 0, 0],
-        "8746": [0, 0.55556, 0, 0],
-        "8747": [0.19444, 0.69444, 0.11111, 0],
-        "8764": [-0.13313, 0.36687, 0, 0],
-        "8768": [0.19444, 0.69444, 0, 0],
-        "8771": [-0.03625, 0.46375, 0, 0],
-        "8773": [-0.022, 0.589, 0, 0],
-        "8776": [-0.01688, 0.48312, 0, 0],
-        "8781": [-0.03625, 0.46375, 0, 0],
-        "8784": [-0.133, 0.67, 0, 0],
-        "8800": [0.215, 0.716, 0, 0],
-        "8801": [-0.03625, 0.46375, 0, 0],
-        "8804": [0.13597, 0.63597, 0, 0],
-        "8805": [0.13597, 0.63597, 0, 0],
-        "8810": [0.0391, 0.5391, 0, 0],
-        "8811": [0.0391, 0.5391, 0, 0],
-        "8826": [0.0391, 0.5391, 0, 0],
-        "8827": [0.0391, 0.5391, 0, 0],
-        "8834": [0.0391, 0.5391, 0, 0],
-        "8835": [0.0391, 0.5391, 0, 0],
-        "8838": [0.13597, 0.63597, 0, 0],
-        "8839": [0.13597, 0.63597, 0, 0],
-        "8846": [0, 0.55556, 0, 0],
-        "8849": [0.13597, 0.63597, 0, 0],
-        "8850": [0.13597, 0.63597, 0, 0],
-        "8851": [0, 0.55556, 0, 0],
-        "8852": [0, 0.55556, 0, 0],
-        "8853": [0.08333, 0.58333, 0, 0],
-        "8854": [0.08333, 0.58333, 0, 0],
-        "8855": [0.08333, 0.58333, 0, 0],
-        "8856": [0.08333, 0.58333, 0, 0],
-        "8857": [0.08333, 0.58333, 0, 0],
-        "8866": [0, 0.69444, 0, 0],
-        "8867": [0, 0.69444, 0, 0],
-        "8868": [0, 0.69444, 0, 0],
-        "8869": [0, 0.69444, 0, 0],
-        "8872": [0.249, 0.75, 0, 0],
-        "8900": [-0.05555, 0.44445, 0, 0],
-        "8901": [-0.05555, 0.44445, 0, 0],
-        "8902": [-0.03472, 0.46528, 0, 0],
-        "8904": [0.005, 0.505, 0, 0],
-        "8942": [0.03, 0.9, 0, 0],
-        "8943": [-0.19, 0.31, 0, 0],
-        "8945": [-0.1, 0.82, 0, 0],
-        "8968": [0.25, 0.75, 0, 0],
-        "8969": [0.25, 0.75, 0, 0],
-        "8970": [0.25, 0.75, 0, 0],
-        "8971": [0.25, 0.75, 0, 0],
-        "8994": [-0.14236, 0.35764, 0, 0],
-        "8995": [-0.14236, 0.35764, 0, 0],
-        "9136": [0.244, 0.744, 0, 0],
-        "9137": [0.244, 0.744, 0, 0],
-        "9651": [0.19444, 0.69444, 0, 0],
-        "9657": [-0.03472, 0.46528, 0, 0],
-        "9661": [0.19444, 0.69444, 0, 0],
-        "9667": [-0.03472, 0.46528, 0, 0],
-        "9711": [0.19444, 0.69444, 0, 0],
-        "9824": [0.12963, 0.69444, 0, 0],
-        "9825": [0.12963, 0.69444, 0, 0],
-        "9826": [0.12963, 0.69444, 0, 0],
-        "9827": [0.12963, 0.69444, 0, 0],
-        "9837": [0, 0.75, 0, 0],
-        "9838": [0.19444, 0.69444, 0, 0],
-        "9839": [0.19444, 0.69444, 0, 0],
-        "10216": [0.25, 0.75, 0, 0],
-        "10217": [0.25, 0.75, 0, 0],
-        "10222": [0.244, 0.744, 0, 0],
-        "10223": [0.244, 0.744, 0, 0],
-        "10229": [0.011, 0.511, 0, 0],
-        "10230": [0.011, 0.511, 0, 0],
-        "10231": [0.011, 0.511, 0, 0],
-        "10232": [0.024, 0.525, 0, 0],
-        "10233": [0.024, 0.525, 0, 0],
-        "10234": [0.024, 0.525, 0, 0],
-        "10236": [0.011, 0.511, 0, 0],
-        "10815": [0, 0.68333, 0, 0],
-        "10927": [0.13597, 0.63597, 0, 0],
-        "10928": [0.13597, 0.63597, 0, 0]
-    },
-    "Math-BoldItalic": {
-        "47": [0.19444, 0.69444, 0, 0],
-        "65": [0, 0.68611, 0, 0],
-        "66": [0, 0.68611, 0.04835, 0],
-        "67": [0, 0.68611, 0.06979, 0],
-        "68": [0, 0.68611, 0.03194, 0],
-        "69": [0, 0.68611, 0.05451, 0],
-        "70": [0, 0.68611, 0.15972, 0],
-        "71": [0, 0.68611, 0, 0],
-        "72": [0, 0.68611, 0.08229, 0],
-        "73": [0, 0.68611, 0.07778, 0],
-        "74": [0, 0.68611, 0.10069, 0],
-        "75": [0, 0.68611, 0.06979, 0],
-        "76": [0, 0.68611, 0, 0],
-        "77": [0, 0.68611, 0.11424, 0],
-        "78": [0, 0.68611, 0.11424, 0],
-        "79": [0, 0.68611, 0.03194, 0],
-        "80": [0, 0.68611, 0.15972, 0],
-        "81": [0.19444, 0.68611, 0, 0],
-        "82": [0, 0.68611, 0.00421, 0],
-        "83": [0, 0.68611, 0.05382, 0],
-        "84": [0, 0.68611, 0.15972, 0],
-        "85": [0, 0.68611, 0.11424, 0],
-        "86": [0, 0.68611, 0.25555, 0],
-        "87": [0, 0.68611, 0.15972, 0],
-        "88": [0, 0.68611, 0.07778, 0],
-        "89": [0, 0.68611, 0.25555, 0],
-        "90": [0, 0.68611, 0.06979, 0],
-        "97": [0, 0.44444, 0, 0],
-        "98": [0, 0.69444, 0, 0],
-        "99": [0, 0.44444, 0, 0],
-        "100": [0, 0.69444, 0, 0],
-        "101": [0, 0.44444, 0, 0],
-        "102": [0.19444, 0.69444, 0.11042, 0],
-        "103": [0.19444, 0.44444, 0.03704, 0],
-        "104": [0, 0.69444, 0, 0],
-        "105": [0, 0.69326, 0, 0],
-        "106": [0.19444, 0.69326, 0.0622, 0],
-        "107": [0, 0.69444, 0.01852, 0],
-        "108": [0, 0.69444, 0.0088, 0],
-        "109": [0, 0.44444, 0, 0],
-        "110": [0, 0.44444, 0, 0],
-        "111": [0, 0.44444, 0, 0],
-        "112": [0.19444, 0.44444, 0, 0],
-        "113": [0.19444, 0.44444, 0.03704, 0],
-        "114": [0, 0.44444, 0.03194, 0],
-        "115": [0, 0.44444, 0, 0],
-        "116": [0, 0.63492, 0, 0],
-        "117": [0, 0.44444, 0, 0],
-        "118": [0, 0.44444, 0.03704, 0],
-        "119": [0, 0.44444, 0.02778, 0],
-        "120": [0, 0.44444, 0, 0],
-        "121": [0.19444, 0.44444, 0.03704, 0],
-        "122": [0, 0.44444, 0.04213, 0],
-        "915": [0, 0.68611, 0.15972, 0],
-        "916": [0, 0.68611, 0, 0],
-        "920": [0, 0.68611, 0.03194, 0],
-        "923": [0, 0.68611, 0, 0],
-        "926": [0, 0.68611, 0.07458, 0],
-        "928": [0, 0.68611, 0.08229, 0],
-        "931": [0, 0.68611, 0.05451, 0],
-        "933": [0, 0.68611, 0.15972, 0],
-        "934": [0, 0.68611, 0, 0],
-        "936": [0, 0.68611, 0.11653, 0],
-        "937": [0, 0.68611, 0.04835, 0],
-        "945": [0, 0.44444, 0, 0],
-        "946": [0.19444, 0.69444, 0.03403, 0],
-        "947": [0.19444, 0.44444, 0.06389, 0],
-        "948": [0, 0.69444, 0.03819, 0],
-        "949": [0, 0.44444, 0, 0],
-        "950": [0.19444, 0.69444, 0.06215, 0],
-        "951": [0.19444, 0.44444, 0.03704, 0],
-        "952": [0, 0.69444, 0.03194, 0],
-        "953": [0, 0.44444, 0, 0],
-        "954": [0, 0.44444, 0, 0],
-        "955": [0, 0.69444, 0, 0],
-        "956": [0.19444, 0.44444, 0, 0],
-        "957": [0, 0.44444, 0.06898, 0],
-        "958": [0.19444, 0.69444, 0.03021, 0],
-        "959": [0, 0.44444, 0, 0],
-        "960": [0, 0.44444, 0.03704, 0],
-        "961": [0.19444, 0.44444, 0, 0],
-        "962": [0.09722, 0.44444, 0.07917, 0],
-        "963": [0, 0.44444, 0.03704, 0],
-        "964": [0, 0.44444, 0.13472, 0],
-        "965": [0, 0.44444, 0.03704, 0],
-        "966": [0.19444, 0.44444, 0, 0],
-        "967": [0.19444, 0.44444, 0, 0],
-        "968": [0.19444, 0.69444, 0.03704, 0],
-        "969": [0, 0.44444, 0.03704, 0],
-        "977": [0, 0.69444, 0, 0],
-        "981": [0.19444, 0.69444, 0, 0],
-        "982": [0, 0.44444, 0.03194, 0],
-        "1009": [0.19444, 0.44444, 0, 0],
-        "1013": [0, 0.44444, 0, 0]
-    },
-    "Math-Italic": {
-        "47": [0.19444, 0.69444, 0, 0],
-        "65": [0, 0.68333, 0, 0.13889],
-        "66": [0, 0.68333, 0.05017, 0.08334],
-        "67": [0, 0.68333, 0.07153, 0.08334],
-        "68": [0, 0.68333, 0.02778, 0.05556],
-        "69": [0, 0.68333, 0.05764, 0.08334],
-        "70": [0, 0.68333, 0.13889, 0.08334],
-        "71": [0, 0.68333, 0, 0.08334],
-        "72": [0, 0.68333, 0.08125, 0.05556],
-        "73": [0, 0.68333, 0.07847, 0.11111],
-        "74": [0, 0.68333, 0.09618, 0.16667],
-        "75": [0, 0.68333, 0.07153, 0.05556],
-        "76": [0, 0.68333, 0, 0.02778],
-        "77": [0, 0.68333, 0.10903, 0.08334],
-        "78": [0, 0.68333, 0.10903, 0.08334],
-        "79": [0, 0.68333, 0.02778, 0.08334],
-        "80": [0, 0.68333, 0.13889, 0.08334],
-        "81": [0.19444, 0.68333, 0, 0.08334],
-        "82": [0, 0.68333, 0.00773, 0.08334],
-        "83": [0, 0.68333, 0.05764, 0.08334],
-        "84": [0, 0.68333, 0.13889, 0.08334],
-        "85": [0, 0.68333, 0.10903, 0.02778],
-        "86": [0, 0.68333, 0.22222, 0],
-        "87": [0, 0.68333, 0.13889, 0],
-        "88": [0, 0.68333, 0.07847, 0.08334],
-        "89": [0, 0.68333, 0.22222, 0],
-        "90": [0, 0.68333, 0.07153, 0.08334],
-        "97": [0, 0.43056, 0, 0],
-        "98": [0, 0.69444, 0, 0],
-        "99": [0, 0.43056, 0, 0.05556],
-        "100": [0, 0.69444, 0, 0.16667],
-        "101": [0, 0.43056, 0, 0.05556],
-        "102": [0.19444, 0.69444, 0.10764, 0.16667],
-        "103": [0.19444, 0.43056, 0.03588, 0.02778],
-        "104": [0, 0.69444, 0, 0],
-        "105": [0, 0.65952, 0, 0],
-        "106": [0.19444, 0.65952, 0.05724, 0],
-        "107": [0, 0.69444, 0.03148, 0],
-        "108": [0, 0.69444, 0.01968, 0.08334],
-        "109": [0, 0.43056, 0, 0],
-        "110": [0, 0.43056, 0, 0],
-        "111": [0, 0.43056, 0, 0.05556],
-        "112": [0.19444, 0.43056, 0, 0.08334],
-        "113": [0.19444, 0.43056, 0.03588, 0.08334],
-        "114": [0, 0.43056, 0.02778, 0.05556],
-        "115": [0, 0.43056, 0, 0.05556],
-        "116": [0, 0.61508, 0, 0.08334],
-        "117": [0, 0.43056, 0, 0.02778],
-        "118": [0, 0.43056, 0.03588, 0.02778],
-        "119": [0, 0.43056, 0.02691, 0.08334],
-        "120": [0, 0.43056, 0, 0.02778],
-        "121": [0.19444, 0.43056, 0.03588, 0.05556],
-        "122": [0, 0.43056, 0.04398, 0.05556],
-        "915": [0, 0.68333, 0.13889, 0.08334],
-        "916": [0, 0.68333, 0, 0.16667],
-        "920": [0, 0.68333, 0.02778, 0.08334],
-        "923": [0, 0.68333, 0, 0.16667],
-        "926": [0, 0.68333, 0.07569, 0.08334],
-        "928": [0, 0.68333, 0.08125, 0.05556],
-        "931": [0, 0.68333, 0.05764, 0.08334],
-        "933": [0, 0.68333, 0.13889, 0.05556],
-        "934": [0, 0.68333, 0, 0.08334],
-        "936": [0, 0.68333, 0.11, 0.05556],
-        "937": [0, 0.68333, 0.05017, 0.08334],
-        "945": [0, 0.43056, 0.0037, 0.02778],
-        "946": [0.19444, 0.69444, 0.05278, 0.08334],
-        "947": [0.19444, 0.43056, 0.05556, 0],
-        "948": [0, 0.69444, 0.03785, 0.05556],
-        "949": [0, 0.43056, 0, 0.08334],
-        "950": [0.19444, 0.69444, 0.07378, 0.08334],
-        "951": [0.19444, 0.43056, 0.03588, 0.05556],
-        "952": [0, 0.69444, 0.02778, 0.08334],
-        "953": [0, 0.43056, 0, 0.05556],
-        "954": [0, 0.43056, 0, 0],
-        "955": [0, 0.69444, 0, 0],
-        "956": [0.19444, 0.43056, 0, 0.02778],
-        "957": [0, 0.43056, 0.06366, 0.02778],
-        "958": [0.19444, 0.69444, 0.04601, 0.11111],
-        "959": [0, 0.43056, 0, 0.05556],
-        "960": [0, 0.43056, 0.03588, 0],
-        "961": [0.19444, 0.43056, 0, 0.08334],
-        "962": [0.09722, 0.43056, 0.07986, 0.08334],
-        "963": [0, 0.43056, 0.03588, 0],
-        "964": [0, 0.43056, 0.1132, 0.02778],
-        "965": [0, 0.43056, 0.03588, 0.02778],
-        "966": [0.19444, 0.43056, 0, 0.08334],
-        "967": [0.19444, 0.43056, 0, 0.05556],
-        "968": [0.19444, 0.69444, 0.03588, 0.11111],
-        "969": [0, 0.43056, 0.03588, 0],
-        "977": [0, 0.69444, 0, 0.08334],
-        "981": [0.19444, 0.69444, 0, 0.08334],
-        "982": [0, 0.43056, 0.02778, 0],
-        "1009": [0.19444, 0.43056, 0, 0.08334],
-        "1013": [0, 0.43056, 0, 0.05556]
-    },
-    "Math-Regular": {
-        "65": [0, 0.68333, 0, 0.13889],
-        "66": [0, 0.68333, 0.05017, 0.08334],
-        "67": [0, 0.68333, 0.07153, 0.08334],
-        "68": [0, 0.68333, 0.02778, 0.05556],
-        "69": [0, 0.68333, 0.05764, 0.08334],
-        "70": [0, 0.68333, 0.13889, 0.08334],
-        "71": [0, 0.68333, 0, 0.08334],
-        "72": [0, 0.68333, 0.08125, 0.05556],
-        "73": [0, 0.68333, 0.07847, 0.11111],
-        "74": [0, 0.68333, 0.09618, 0.16667],
-        "75": [0, 0.68333, 0.07153, 0.05556],
-        "76": [0, 0.68333, 0, 0.02778],
-        "77": [0, 0.68333, 0.10903, 0.08334],
-        "78": [0, 0.68333, 0.10903, 0.08334],
-        "79": [0, 0.68333, 0.02778, 0.08334],
-        "80": [0, 0.68333, 0.13889, 0.08334],
-        "81": [0.19444, 0.68333, 0, 0.08334],
-        "82": [0, 0.68333, 0.00773, 0.08334],
-        "83": [0, 0.68333, 0.05764, 0.08334],
-        "84": [0, 0.68333, 0.13889, 0.08334],
-        "85": [0, 0.68333, 0.10903, 0.02778],
-        "86": [0, 0.68333, 0.22222, 0],
-        "87": [0, 0.68333, 0.13889, 0],
-        "88": [0, 0.68333, 0.07847, 0.08334],
-        "89": [0, 0.68333, 0.22222, 0],
-        "90": [0, 0.68333, 0.07153, 0.08334],
-        "97": [0, 0.43056, 0, 0],
-        "98": [0, 0.69444, 0, 0],
-        "99": [0, 0.43056, 0, 0.05556],
-        "100": [0, 0.69444, 0, 0.16667],
-        "101": [0, 0.43056, 0, 0.05556],
-        "102": [0.19444, 0.69444, 0.10764, 0.16667],
-        "103": [0.19444, 0.43056, 0.03588, 0.02778],
-        "104": [0, 0.69444, 0, 0],
-        "105": [0, 0.65952, 0, 0],
-        "106": [0.19444, 0.65952, 0.05724, 0],
-        "107": [0, 0.69444, 0.03148, 0],
-        "108": [0, 0.69444, 0.01968, 0.08334],
-        "109": [0, 0.43056, 0, 0],
-        "110": [0, 0.43056, 0, 0],
-        "111": [0, 0.43056, 0, 0.05556],
-        "112": [0.19444, 0.43056, 0, 0.08334],
-        "113": [0.19444, 0.43056, 0.03588, 0.08334],
-        "114": [0, 0.43056, 0.02778, 0.05556],
-        "115": [0, 0.43056, 0, 0.05556],
-        "116": [0, 0.61508, 0, 0.08334],
-        "117": [0, 0.43056, 0, 0.02778],
-        "118": [0, 0.43056, 0.03588, 0.02778],
-        "119": [0, 0.43056, 0.02691, 0.08334],
-        "120": [0, 0.43056, 0, 0.02778],
-        "121": [0.19444, 0.43056, 0.03588, 0.05556],
-        "122": [0, 0.43056, 0.04398, 0.05556],
-        "915": [0, 0.68333, 0.13889, 0.08334],
-        "916": [0, 0.68333, 0, 0.16667],
-        "920": [0, 0.68333, 0.02778, 0.08334],
-        "923": [0, 0.68333, 0, 0.16667],
-        "926": [0, 0.68333, 0.07569, 0.08334],
-        "928": [0, 0.68333, 0.08125, 0.05556],
-        "931": [0, 0.68333, 0.05764, 0.08334],
-        "933": [0, 0.68333, 0.13889, 0.05556],
-        "934": [0, 0.68333, 0, 0.08334],
-        "936": [0, 0.68333, 0.11, 0.05556],
-        "937": [0, 0.68333, 0.05017, 0.08334],
-        "945": [0, 0.43056, 0.0037, 0.02778],
-        "946": [0.19444, 0.69444, 0.05278, 0.08334],
-        "947": [0.19444, 0.43056, 0.05556, 0],
-        "948": [0, 0.69444, 0.03785, 0.05556],
-        "949": [0, 0.43056, 0, 0.08334],
-        "950": [0.19444, 0.69444, 0.07378, 0.08334],
-        "951": [0.19444, 0.43056, 0.03588, 0.05556],
-        "952": [0, 0.69444, 0.02778, 0.08334],
-        "953": [0, 0.43056, 0, 0.05556],
-        "954": [0, 0.43056, 0, 0],
-        "955": [0, 0.69444, 0, 0],
-        "956": [0.19444, 0.43056, 0, 0.02778],
-        "957": [0, 0.43056, 0.06366, 0.02778],
-        "958": [0.19444, 0.69444, 0.04601, 0.11111],
-        "959": [0, 0.43056, 0, 0.05556],
-        "960": [0, 0.43056, 0.03588, 0],
-        "961": [0.19444, 0.43056, 0, 0.08334],
-        "962": [0.09722, 0.43056, 0.07986, 0.08334],
-        "963": [0, 0.43056, 0.03588, 0],
-        "964": [0, 0.43056, 0.1132, 0.02778],
-        "965": [0, 0.43056, 0.03588, 0.02778],
-        "966": [0.19444, 0.43056, 0, 0.08334],
-        "967": [0.19444, 0.43056, 0, 0.05556],
-        "968": [0.19444, 0.69444, 0.03588, 0.11111],
-        "969": [0, 0.43056, 0.03588, 0],
-        "977": [0, 0.69444, 0, 0.08334],
-        "981": [0.19444, 0.69444, 0, 0.08334],
-        "982": [0, 0.43056, 0.02778, 0],
-        "1009": [0.19444, 0.43056, 0, 0.08334],
-        "1013": [0, 0.43056, 0, 0.05556]
-    },
-    "SansSerif-Regular": {
-        "33": [0, 0.69444, 0, 0],
-        "34": [0, 0.69444, 0, 0],
-        "35": [0.19444, 0.69444, 0, 0],
-        "36": [0.05556, 0.75, 0, 0],
-        "37": [0.05556, 0.75, 0, 0],
-        "38": [0, 0.69444, 0, 0],
-        "39": [0, 0.69444, 0, 0],
-        "40": [0.25, 0.75, 0, 0],
-        "41": [0.25, 0.75, 0, 0],
-        "42": [0, 0.75, 0, 0],
-        "43": [0.08333, 0.58333, 0, 0],
-        "44": [0.125, 0.08333, 0, 0],
-        "45": [0, 0.44444, 0, 0],
-        "46": [0, 0.08333, 0, 0],
-        "47": [0.25, 0.75, 0, 0],
-        "48": [0, 0.65556, 0, 0],
-        "49": [0, 0.65556, 0, 0],
-        "50": [0, 0.65556, 0, 0],
-        "51": [0, 0.65556, 0, 0],
-        "52": [0, 0.65556, 0, 0],
-        "53": [0, 0.65556, 0, 0],
-        "54": [0, 0.65556, 0, 0],
-        "55": [0, 0.65556, 0, 0],
-        "56": [0, 0.65556, 0, 0],
-        "57": [0, 0.65556, 0, 0],
-        "58": [0, 0.44444, 0, 0],
-        "59": [0.125, 0.44444, 0, 0],
-        "61": [-0.13, 0.37, 0, 0],
-        "63": [0, 0.69444, 0, 0],
-        "64": [0, 0.69444, 0, 0],
-        "65": [0, 0.69444, 0, 0],
-        "66": [0, 0.69444, 0, 0],
-        "67": [0, 0.69444, 0, 0],
-        "68": [0, 0.69444, 0, 0],
-        "69": [0, 0.69444, 0, 0],
-        "70": [0, 0.69444, 0, 0],
-        "71": [0, 0.69444, 0, 0],
-        "72": [0, 0.69444, 0, 0],
-        "73": [0, 0.69444, 0, 0],
-        "74": [0, 0.69444, 0, 0],
-        "75": [0, 0.69444, 0, 0],
-        "76": [0, 0.69444, 0, 0],
-        "77": [0, 0.69444, 0, 0],
-        "78": [0, 0.69444, 0, 0],
-        "79": [0, 0.69444, 0, 0],
-        "80": [0, 0.69444, 0, 0],
-        "81": [0.125, 0.69444, 0, 0],
-        "82": [0, 0.69444, 0, 0],
-        "83": [0, 0.69444, 0, 0],
-        "84": [0, 0.69444, 0, 0],
-        "85": [0, 0.69444, 0, 0],
-        "86": [0, 0.69444, 0.01389, 0],
-        "87": [0, 0.69444, 0.01389, 0],
-        "88": [0, 0.69444, 0, 0],
-        "89": [0, 0.69444, 0.025, 0],
-        "90": [0, 0.69444, 0, 0],
-        "91": [0.25, 0.75, 0, 0],
-        "93": [0.25, 0.75, 0, 0],
-        "94": [0, 0.69444, 0, 0],
-        "95": [0.35, 0.09444, 0.02778, 0],
-        "97": [0, 0.44444, 0, 0],
-        "98": [0, 0.69444, 0, 0],
-        "99": [0, 0.44444, 0, 0],
-        "100": [0, 0.69444, 0, 0],
-        "101": [0, 0.44444, 0, 0],
-        "102": [0, 0.69444, 0.06944, 0],
-        "103": [0.19444, 0.44444, 0.01389, 0],
-        "104": [0, 0.69444, 0, 0],
-        "105": [0, 0.67937, 0, 0],
-        "106": [0.19444, 0.67937, 0, 0],
-        "107": [0, 0.69444, 0, 0],
-        "108": [0, 0.69444, 0, 0],
-        "109": [0, 0.44444, 0, 0],
-        "110": [0, 0.44444, 0, 0],
-        "111": [0, 0.44444, 0, 0],
-        "112": [0.19444, 0.44444, 0, 0],
-        "113": [0.19444, 0.44444, 0, 0],
-        "114": [0, 0.44444, 0.01389, 0],
-        "115": [0, 0.44444, 0, 0],
-        "116": [0, 0.57143, 0, 0],
-        "117": [0, 0.44444, 0, 0],
-        "118": [0, 0.44444, 0.01389, 0],
-        "119": [0, 0.44444, 0.01389, 0],
-        "120": [0, 0.44444, 0, 0],
-        "121": [0.19444, 0.44444, 0.01389, 0],
-        "122": [0, 0.44444, 0, 0],
-        "126": [0.35, 0.32659, 0, 0],
-        "305": [0, 0.44444, 0, 0],
-        "567": [0.19444, 0.44444, 0, 0],
-        "768": [0, 0.69444, 0, 0],
-        "769": [0, 0.69444, 0, 0],
-        "770": [0, 0.69444, 0, 0],
-        "771": [0, 0.67659, 0, 0],
-        "772": [0, 0.60889, 0, 0],
-        "774": [0, 0.69444, 0, 0],
-        "775": [0, 0.67937, 0, 0],
-        "776": [0, 0.67937, 0, 0],
-        "778": [0, 0.69444, 0, 0],
-        "779": [0, 0.69444, 0, 0],
-        "780": [0, 0.63194, 0, 0],
-        "915": [0, 0.69444, 0, 0],
-        "916": [0, 0.69444, 0, 0],
-        "920": [0, 0.69444, 0, 0],
-        "923": [0, 0.69444, 0, 0],
-        "926": [0, 0.69444, 0, 0],
-        "928": [0, 0.69444, 0, 0],
-        "931": [0, 0.69444, 0, 0],
-        "933": [0, 0.69444, 0, 0],
-        "934": [0, 0.69444, 0, 0],
-        "936": [0, 0.69444, 0, 0],
-        "937": [0, 0.69444, 0, 0],
-        "8211": [0, 0.44444, 0.02778, 0],
-        "8212": [0, 0.44444, 0.02778, 0],
-        "8216": [0, 0.69444, 0, 0],
-        "8217": [0, 0.69444, 0, 0],
-        "8220": [0, 0.69444, 0, 0],
-        "8221": [0, 0.69444, 0, 0]
-    },
-    "Script-Regular": {
-        "65": [0, 0.7, 0.22925, 0],
-        "66": [0, 0.7, 0.04087, 0],
-        "67": [0, 0.7, 0.1689, 0],
-        "68": [0, 0.7, 0.09371, 0],
-        "69": [0, 0.7, 0.18583, 0],
-        "70": [0, 0.7, 0.13634, 0],
-        "71": [0, 0.7, 0.17322, 0],
-        "72": [0, 0.7, 0.29694, 0],
-        "73": [0, 0.7, 0.19189, 0],
-        "74": [0.27778, 0.7, 0.19189, 0],
-        "75": [0, 0.7, 0.31259, 0],
-        "76": [0, 0.7, 0.19189, 0],
-        "77": [0, 0.7, 0.15981, 0],
-        "78": [0, 0.7, 0.3525, 0],
-        "79": [0, 0.7, 0.08078, 0],
-        "80": [0, 0.7, 0.08078, 0],
-        "81": [0, 0.7, 0.03305, 0],
-        "82": [0, 0.7, 0.06259, 0],
-        "83": [0, 0.7, 0.19189, 0],
-        "84": [0, 0.7, 0.29087, 0],
-        "85": [0, 0.7, 0.25815, 0],
-        "86": [0, 0.7, 0.27523, 0],
-        "87": [0, 0.7, 0.27523, 0],
-        "88": [0, 0.7, 0.26006, 0],
-        "89": [0, 0.7, 0.2939, 0],
-        "90": [0, 0.7, 0.24037, 0]
-    },
-    "Size1-Regular": {
-        "40": [0.35001, 0.85, 0, 0],
-        "41": [0.35001, 0.85, 0, 0],
-        "47": [0.35001, 0.85, 0, 0],
-        "91": [0.35001, 0.85, 0, 0],
-        "92": [0.35001, 0.85, 0, 0],
-        "93": [0.35001, 0.85, 0, 0],
-        "123": [0.35001, 0.85, 0, 0],
-        "125": [0.35001, 0.85, 0, 0],
-        "710": [0, 0.72222, 0, 0],
-        "732": [0, 0.72222, 0, 0],
-        "770": [0, 0.72222, 0, 0],
-        "771": [0, 0.72222, 0, 0],
-        "8214": [-0.00099, 0.601, 0, 0],
-        "8593": [1e-05, 0.6, 0, 0],
-        "8595": [1e-05, 0.6, 0, 0],
-        "8657": [1e-05, 0.6, 0, 0],
-        "8659": [1e-05, 0.6, 0, 0],
-        "8719": [0.25001, 0.75, 0, 0],
-        "8720": [0.25001, 0.75, 0, 0],
-        "8721": [0.25001, 0.75, 0, 0],
-        "8730": [0.35001, 0.85, 0, 0],
-        "8739": [-0.00599, 0.606, 0, 0],
-        "8741": [-0.00599, 0.606, 0, 0],
-        "8747": [0.30612, 0.805, 0.19445, 0],
-        "8748": [0.306, 0.805, 0.19445, 0],
-        "8749": [0.306, 0.805, 0.19445, 0],
-        "8750": [0.30612, 0.805, 0.19445, 0],
-        "8896": [0.25001, 0.75, 0, 0],
-        "8897": [0.25001, 0.75, 0, 0],
-        "8898": [0.25001, 0.75, 0, 0],
-        "8899": [0.25001, 0.75, 0, 0],
-        "8968": [0.35001, 0.85, 0, 0],
-        "8969": [0.35001, 0.85, 0, 0],
-        "8970": [0.35001, 0.85, 0, 0],
-        "8971": [0.35001, 0.85, 0, 0],
-        "9168": [-0.00099, 0.601, 0, 0],
-        "10216": [0.35001, 0.85, 0, 0],
-        "10217": [0.35001, 0.85, 0, 0],
-        "10752": [0.25001, 0.75, 0, 0],
-        "10753": [0.25001, 0.75, 0, 0],
-        "10754": [0.25001, 0.75, 0, 0],
-        "10756": [0.25001, 0.75, 0, 0],
-        "10758": [0.25001, 0.75, 0, 0]
-    },
-    "Size2-Regular": {
-        "40": [0.65002, 1.15, 0, 0],
-        "41": [0.65002, 1.15, 0, 0],
-        "47": [0.65002, 1.15, 0, 0],
-        "91": [0.65002, 1.15, 0, 0],
-        "92": [0.65002, 1.15, 0, 0],
-        "93": [0.65002, 1.15, 0, 0],
-        "123": [0.65002, 1.15, 0, 0],
-        "125": [0.65002, 1.15, 0, 0],
-        "710": [0, 0.75, 0, 0],
-        "732": [0, 0.75, 0, 0],
-        "770": [0, 0.75, 0, 0],
-        "771": [0, 0.75, 0, 0],
-        "8719": [0.55001, 1.05, 0, 0],
-        "8720": [0.55001, 1.05, 0, 0],
-        "8721": [0.55001, 1.05, 0, 0],
-        "8730": [0.65002, 1.15, 0, 0],
-        "8747": [0.86225, 1.36, 0.44445, 0],
-        "8748": [0.862, 1.36, 0.44445, 0],
-        "8749": [0.862, 1.36, 0.44445, 0],
-        "8750": [0.86225, 1.36, 0.44445, 0],
-        "8896": [0.55001, 1.05, 0, 0],
-        "8897": [0.55001, 1.05, 0, 0],
-        "8898": [0.55001, 1.05, 0, 0],
-        "8899": [0.55001, 1.05, 0, 0],
-        "8968": [0.65002, 1.15, 0, 0],
-        "8969": [0.65002, 1.15, 0, 0],
-        "8970": [0.65002, 1.15, 0, 0],
-        "8971": [0.65002, 1.15, 0, 0],
-        "10216": [0.65002, 1.15, 0, 0],
-        "10217": [0.65002, 1.15, 0, 0],
-        "10752": [0.55001, 1.05, 0, 0],
-        "10753": [0.55001, 1.05, 0, 0],
-        "10754": [0.55001, 1.05, 0, 0],
-        "10756": [0.55001, 1.05, 0, 0],
-        "10758": [0.55001, 1.05, 0, 0]
-    },
-    "Size3-Regular": {
-        "40": [0.95003, 1.45, 0, 0],
-        "41": [0.95003, 1.45, 0, 0],
-        "47": [0.95003, 1.45, 0, 0],
-        "91": [0.95003, 1.45, 0, 0],
-        "92": [0.95003, 1.45, 0, 0],
-        "93": [0.95003, 1.45, 0, 0],
-        "123": [0.95003, 1.45, 0, 0],
-        "125": [0.95003, 1.45, 0, 0],
-        "710": [0, 0.75, 0, 0],
-        "732": [0, 0.75, 0, 0],
-        "770": [0, 0.75, 0, 0],
-        "771": [0, 0.75, 0, 0],
-        "8730": [0.95003, 1.45, 0, 0],
-        "8968": [0.95003, 1.45, 0, 0],
-        "8969": [0.95003, 1.45, 0, 0],
-        "8970": [0.95003, 1.45, 0, 0],
-        "8971": [0.95003, 1.45, 0, 0],
-        "10216": [0.95003, 1.45, 0, 0],
-        "10217": [0.95003, 1.45, 0, 0]
-    },
-    "Size4-Regular": {
-        "40": [1.25003, 1.75, 0, 0],
-        "41": [1.25003, 1.75, 0, 0],
-        "47": [1.25003, 1.75, 0, 0],
-        "91": [1.25003, 1.75, 0, 0],
-        "92": [1.25003, 1.75, 0, 0],
-        "93": [1.25003, 1.75, 0, 0],
-        "123": [1.25003, 1.75, 0, 0],
-        "125": [1.25003, 1.75, 0, 0],
-        "710": [0, 0.825, 0, 0],
-        "732": [0, 0.825, 0, 0],
-        "770": [0, 0.825, 0, 0],
-        "771": [0, 0.825, 0, 0],
-        "8730": [1.25003, 1.75, 0, 0],
-        "8968": [1.25003, 1.75, 0, 0],
-        "8969": [1.25003, 1.75, 0, 0],
-        "8970": [1.25003, 1.75, 0, 0],
-        "8971": [1.25003, 1.75, 0, 0],
-        "9115": [0.64502, 1.155, 0, 0],
-        "9116": [1e-05, 0.6, 0, 0],
-        "9117": [0.64502, 1.155, 0, 0],
-        "9118": [0.64502, 1.155, 0, 0],
-        "9119": [1e-05, 0.6, 0, 0],
-        "9120": [0.64502, 1.155, 0, 0],
-        "9121": [0.64502, 1.155, 0, 0],
-        "9122": [-0.00099, 0.601, 0, 0],
-        "9123": [0.64502, 1.155, 0, 0],
-        "9124": [0.64502, 1.155, 0, 0],
-        "9125": [-0.00099, 0.601, 0, 0],
-        "9126": [0.64502, 1.155, 0, 0],
-        "9127": [1e-05, 0.9, 0, 0],
-        "9128": [0.65002, 1.15, 0, 0],
-        "9129": [0.90001, 0, 0, 0],
-        "9130": [0, 0.3, 0, 0],
-        "9131": [1e-05, 0.9, 0, 0],
-        "9132": [0.65002, 1.15, 0, 0],
-        "9133": [0.90001, 0, 0, 0],
-        "9143": [0.88502, 0.915, 0, 0],
-        "10216": [1.25003, 1.75, 0, 0],
-        "10217": [1.25003, 1.75, 0, 0],
-        "57344": [-0.00499, 0.605, 0, 0],
-        "57345": [-0.00499, 0.605, 0, 0],
-        "57680": [0, 0.12, 0, 0],
-        "57681": [0, 0.12, 0, 0],
-        "57682": [0, 0.12, 0, 0],
-        "57683": [0, 0.12, 0, 0]
-    },
-    "Typewriter-Regular": {
-        "33": [0, 0.61111, 0, 0],
-        "34": [0, 0.61111, 0, 0],
-        "35": [0, 0.61111, 0, 0],
-        "36": [0.08333, 0.69444, 0, 0],
-        "37": [0.08333, 0.69444, 0, 0],
-        "38": [0, 0.61111, 0, 0],
-        "39": [0, 0.61111, 0, 0],
-        "40": [0.08333, 0.69444, 0, 0],
-        "41": [0.08333, 0.69444, 0, 0],
-        "42": [0, 0.52083, 0, 0],
-        "43": [-0.08056, 0.53055, 0, 0],
-        "44": [0.13889, 0.125, 0, 0],
-        "45": [-0.08056, 0.53055, 0, 0],
-        "46": [0, 0.125, 0, 0],
-        "47": [0.08333, 0.69444, 0, 0],
-        "48": [0, 0.61111, 0, 0],
-        "49": [0, 0.61111, 0, 0],
-        "50": [0, 0.61111, 0, 0],
-        "51": [0, 0.61111, 0, 0],
-        "52": [0, 0.61111, 0, 0],
-        "53": [0, 0.61111, 0, 0],
-        "54": [0, 0.61111, 0, 0],
-        "55": [0, 0.61111, 0, 0],
-        "56": [0, 0.61111, 0, 0],
-        "57": [0, 0.61111, 0, 0],
-        "58": [0, 0.43056, 0, 0],
-        "59": [0.13889, 0.43056, 0, 0],
-        "60": [-0.05556, 0.55556, 0, 0],
-        "61": [-0.19549, 0.41562, 0, 0],
-        "62": [-0.05556, 0.55556, 0, 0],
-        "63": [0, 0.61111, 0, 0],
-        "64": [0, 0.61111, 0, 0],
-        "65": [0, 0.61111, 0, 0],
-        "66": [0, 0.61111, 0, 0],
-        "67": [0, 0.61111, 0, 0],
-        "68": [0, 0.61111, 0, 0],
-        "69": [0, 0.61111, 0, 0],
-        "70": [0, 0.61111, 0, 0],
-        "71": [0, 0.61111, 0, 0],
-        "72": [0, 0.61111, 0, 0],
-        "73": [0, 0.61111, 0, 0],
-        "74": [0, 0.61111, 0, 0],
-        "75": [0, 0.61111, 0, 0],
-        "76": [0, 0.61111, 0, 0],
-        "77": [0, 0.61111, 0, 0],
-        "78": [0, 0.61111, 0, 0],
-        "79": [0, 0.61111, 0, 0],
-        "80": [0, 0.61111, 0, 0],
-        "81": [0.13889, 0.61111, 0, 0],
-        "82": [0, 0.61111, 0, 0],
-        "83": [0, 0.61111, 0, 0],
-        "84": [0, 0.61111, 0, 0],
-        "85": [0, 0.61111, 0, 0],
-        "86": [0, 0.61111, 0, 0],
-        "87": [0, 0.61111, 0, 0],
-        "88": [0, 0.61111, 0, 0],
-        "89": [0, 0.61111, 0, 0],
-        "90": [0, 0.61111, 0, 0],
-        "91": [0.08333, 0.69444, 0, 0],
-        "92": [0.08333, 0.69444, 0, 0],
-        "93": [0.08333, 0.69444, 0, 0],
-        "94": [0, 0.61111, 0, 0],
-        "95": [0.09514, 0, 0, 0],
-        "96": [0, 0.61111, 0, 0],
-        "97": [0, 0.43056, 0, 0],
-        "98": [0, 0.61111, 0, 0],
-        "99": [0, 0.43056, 0, 0],
-        "100": [0, 0.61111, 0, 0],
-        "101": [0, 0.43056, 0, 0],
-        "102": [0, 0.61111, 0, 0],
-        "103": [0.22222, 0.43056, 0, 0],
-        "104": [0, 0.61111, 0, 0],
-        "105": [0, 0.61111, 0, 0],
-        "106": [0.22222, 0.61111, 0, 0],
-        "107": [0, 0.61111, 0, 0],
-        "108": [0, 0.61111, 0, 0],
-        "109": [0, 0.43056, 0, 0],
-        "110": [0, 0.43056, 0, 0],
-        "111": [0, 0.43056, 0, 0],
-        "112": [0.22222, 0.43056, 0, 0],
-        "113": [0.22222, 0.43056, 0, 0],
-        "114": [0, 0.43056, 0, 0],
-        "115": [0, 0.43056, 0, 0],
-        "116": [0, 0.55358, 0, 0],
-        "117": [0, 0.43056, 0, 0],
-        "118": [0, 0.43056, 0, 0],
-        "119": [0, 0.43056, 0, 0],
-        "120": [0, 0.43056, 0, 0],
-        "121": [0.22222, 0.43056, 0, 0],
-        "122": [0, 0.43056, 0, 0],
-        "123": [0.08333, 0.69444, 0, 0],
-        "124": [0.08333, 0.69444, 0, 0],
-        "125": [0.08333, 0.69444, 0, 0],
-        "126": [0, 0.61111, 0, 0],
-        "127": [0, 0.61111, 0, 0],
-        "305": [0, 0.43056, 0, 0],
-        "567": [0.22222, 0.43056, 0, 0],
-        "768": [0, 0.61111, 0, 0],
-        "769": [0, 0.61111, 0, 0],
-        "770": [0, 0.61111, 0, 0],
-        "771": [0, 0.61111, 0, 0],
-        "772": [0, 0.56555, 0, 0],
-        "774": [0, 0.61111, 0, 0],
-        "776": [0, 0.61111, 0, 0],
-        "778": [0, 0.61111, 0, 0],
-        "780": [0, 0.56597, 0, 0],
-        "915": [0, 0.61111, 0, 0],
-        "916": [0, 0.61111, 0, 0],
-        "920": [0, 0.61111, 0, 0],
-        "923": [0, 0.61111, 0, 0],
-        "926": [0, 0.61111, 0, 0],
-        "928": [0, 0.61111, 0, 0],
-        "931": [0, 0.61111, 0, 0],
-        "933": [0, 0.61111, 0, 0],
-        "934": [0, 0.61111, 0, 0],
-        "936": [0, 0.61111, 0, 0],
-        "937": [0, 0.61111, 0, 0],
-        "2018": [0, 0.61111, 0, 0],
-        "2019": [0, 0.61111, 0, 0],
-        "8242": [0, 0.61111, 0, 0]
-    }
-};
-
-},{}],19:[function(require,module,exports){
-var utils = require("./utils");
-var ParseError = require("./ParseError");
-var parseData = require("./parseData");
-var ParseNode = parseData.ParseNode;
-
-/* This file contains a list of functions that we parse, identified by
- * the calls to defineFunction.
- *
- * The first argument to defineFunction is a single name or a list of names.
- * All functions named in such a list will share a single implementation.
- *
- * Each declared function can have associated properties, which
- * include the following:
- *
- *  - numArgs: The number of arguments the function takes.
- *             If this is the only property, it can be passed as a number
- *             instead of an element of a properties object.
- *  - argTypes: (optional) An array corresponding to each argument of the
- *              function, giving the type of argument that should be parsed. Its
- *              length should be equal to `numArgs + numOptionalArgs`. Valid
- *              types:
- *               - "size": A size-like thing, such as "1em" or "5ex"
- *               - "color": An html color, like "#abc" or "blue"
- *               - "original": The same type as the environment that the
- *                             function being parsed is in (e.g. used for the
- *                             bodies of functions like \color where the first
- *                             argument is special and the second argument is
- *                             parsed normally)
- *              Other possible types (probably shouldn't be used)
- *               - "text": Text-like (e.g. \text)
- *               - "math": Normal math
- *              If undefined, this will be treated as an appropriate length
- *              array of "original" strings
- *  - greediness: (optional) The greediness of the function to use ungrouped
- *                arguments.
- *
- *                E.g. if you have an expression
- *                  \sqrt \frac 1 2
- *                since \frac has greediness=2 vs \sqrt's greediness=1, \frac
- *                will use the two arguments '1' and '2' as its two arguments,
- *                then that whole function will be used as the argument to
- *                \sqrt. On the other hand, the expressions
- *                  \frac \frac 1 2 3
- *                and
- *                  \frac \sqrt 1 2
- *                will fail because \frac and \frac have equal greediness
- *                and \sqrt has a lower greediness than \frac respectively. To
- *                make these parse, we would have to change them to:
- *                  \frac {\frac 1 2} 3
- *                and
- *                  \frac {\sqrt 1} 2
- *
- *                The default value is `1`
- *  - allowedInText: (optional) Whether or not the function is allowed inside
- *                   text mode (default false)
- *  - numOptionalArgs: (optional) The number of optional arguments the function
- *                     should parse. If the optional arguments aren't found,
- *                     `null` will be passed to the handler in their place.
- *                     (default 0)
- *  - infix: (optional) Must be true if the function is an infix operator.
- *
- * The last argument is that implementation, the handler for the function(s).
- * It is called to handle these functions and their arguments.
- * It receives two arguments:
- *  - context contains information and references provided by the parser
- *  - args is an array of arguments obtained from TeX input
- * The context contains the following properties:
- *  - funcName: the text (i.e. name) of the function, including \
- *  - parser: the parser object
- *  - lexer: the lexer object
- *  - positions: the positions in the overall string of the function
- *               and the arguments.
- * The latter three should only be used to produce error messages.
- *
- * The function should return an object with the following keys:
- *  - type: The type of element that this is. This is then used in
- *          buildHTML/buildMathML to determine which function
- *          should be called to build this node into a DOM node
- * Any other data can be added to the object, which will be passed
- * in to the function in buildHTML/buildMathML as `group.value`.
- */
-
-function defineFunction(names, props, handler) {
-    if (typeof names === "string") {
-        names = [names];
-    }
-    if (typeof props === "number") {
-        props = { numArgs: props };
-    }
-    // Set default values of functions
-    var data = {
-        numArgs: props.numArgs,
-        argTypes: props.argTypes,
-        greediness: (props.greediness === undefined) ? 1 : props.greediness,
-        allowedInText: !!props.allowedInText,
-        numOptionalArgs: props.numOptionalArgs || 0,
-        infix: !!props.infix,
-        handler: handler
-    };
-    for (var i = 0; i < names.length; ++i) {
-        module.exports[names[i]] = data;
-    }
-}
-
-// Since the corresponding buildHTML/buildMathML function expects a
-// list of elements, we normalize for different kinds of arguments
-var ordargument = function(arg) {
-    if (arg.type === "ordgroup") {
-        return arg.value;
-    } else {
-        return [arg];
-    }
-};
-
-// A normal square root
-defineFunction("\\sqrt", {
-    numArgs: 1,
-    numOptionalArgs: 1
-}, function(context, args) {
-    var index = args[0];
-    var body = args[1];
-    return {
-        type: "sqrt",
-        body: body,
-        index: index
-    };
-});
-
-// Non-mathy text, possibly in a font
-var textFunctionStyles = {
-    "\\text": undefined, "\\textrm": "mathrm", "\\textsf": "mathsf",
-    "\\texttt": "mathtt", "\\textnormal": "mathrm", "\\textbf": "mathbf",
-    "\\textit": "textit"
-};
-
-defineFunction([
-    "\\text", "\\textrm", "\\textsf", "\\texttt", "\\textnormal",
-    "\\textbf", "\\textit"
-], {
-    numArgs: 1,
-    argTypes: ["text"],
-    greediness: 2,
-    allowedInText: true
-}, function(context, args) {
-    var body = args[0];
-    return {
-        type: "text",
-        body: ordargument(body),
-        style: textFunctionStyles[context.funcName]
-    };
-});
-
-// A two-argument custom color
-defineFunction("\\color", {
-    numArgs: 2,
-    allowedInText: true,
-    greediness: 3,
-    argTypes: ["color", "original"]
-}, function(context, args) {
-    var color = args[0];
-    var body = args[1];
-    return {
-        type: "color",
-        color: color.value,
-        value: ordargument(body)
-    };
-});
-
-// An overline
-defineFunction("\\overline", {
-    numArgs: 1
-}, function(context, args) {
-    var body = args[0];
-    return {
-        type: "overline",
-        body: body
-    };
-});
-
-// An underline
-defineFunction("\\underline", {
-    numArgs: 1
-}, function(context, args) {
-    var body = args[0];
-    return {
-        type: "underline",
-        body: body
-    };
-});
-
-// A box of the width and height
-defineFunction("\\rule", {
-    numArgs: 2,
-    numOptionalArgs: 1,
-    argTypes: ["size", "size", "size"]
-}, function(context, args) {
-    var shift = args[0];
-    var width = args[1];
-    var height = args[2];
-    return {
-        type: "rule",
-        shift: shift && shift.value,
-        width: width.value,
-        height: height.value
-    };
-});
-
-// TODO: In TeX, \mkern only accepts mu-units, and \kern does not accept
-// mu-units. In current KaTeX we relax this; both commands accept any unit.
-defineFunction(["\\kern", "\\mkern"], {
-    numArgs: 1,
-    argTypes: ["size"]
-}, function(context, args) {
-    return {
-        type: "kern",
-        dimension: args[0].value
-    };
-});
-
-// A KaTeX logo
-defineFunction("\\KaTeX", {
-    numArgs: 0
-}, function(context) {
-    return {
-        type: "katex"
-    };
-});
-
-defineFunction("\\phantom", {
-    numArgs: 1
-}, function(context, args) {
-    var body = args[0];
-    return {
-        type: "phantom",
-        value: ordargument(body)
-    };
-});
-
-// Math class commands except \mathop
-defineFunction([
-    "\\mathord", "\\mathbin", "\\mathrel", "\\mathopen",
-    "\\mathclose", "\\mathpunct", "\\mathinner"
-], {
-    numArgs: 1
-}, function(context, args) {
-    var body = args[0];
-    return {
-        type: "mclass",
-        mclass: "m" + context.funcName.substr(5),
-        value: ordargument(body)
-    };
-});
-
-// Build a relation by placing one symbol on top of another
-defineFunction("\\stackrel", {
-    numArgs: 2
-}, function(context, args) {
-    var top = args[0];
-    var bottom = args[1];
-
-    var bottomop = new ParseNode("op", {
-        type: "op",
-        limits: true,
-        alwaysHandleSupSub: true,
-        symbol: false,
-        value: ordargument(bottom)
-    }, bottom.mode);
-
-    var supsub = new ParseNode("supsub", {
-        base: bottomop,
-        sup: top,
-        sub: null
-    }, top.mode);
-
-    return {
-        type: "mclass",
-        mclass: "mrel",
-        value: [supsub]
-    };
-});
-
-// \mod-type functions
-defineFunction("\\bmod", {
-    numArgs: 0
-}, function(context, args) {
-    return {
-        type: "mod",
-        modType: "bmod",
-        value: null
-    };
-});
-
-defineFunction(["\\pod", "\\pmod", "\\mod"], {
-    numArgs: 1
-}, function(context, args) {
-    var body = args[0];
-    return {
-        type: "mod",
-        modType: context.funcName.substr(1),
-        value: ordargument(body)
-    };
-});
-
-// Extra data needed for the delimiter handler down below
-var delimiterSizes = {
-    "\\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}
-};
-
-var delimiters = [
-    "(", ")", "[", "\\lbrack", "]", "\\rbrack",
-    "\\{", "\\lbrace", "\\}", "\\rbrace",
-    "\\lfloor", "\\rfloor", "\\lceil", "\\rceil",
-    "<", ">", "\\langle", "\\rangle", "\\lt", "\\gt",
-    "\\lvert", "\\rvert", "\\lVert", "\\rVert",
-    "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache",
-    "/", "\\backslash",
-    "|", "\\vert", "\\|", "\\Vert",
-    "\\uparrow", "\\Uparrow",
-    "\\downarrow", "\\Downarrow",
-    "\\updownarrow", "\\Updownarrow",
-    "."
-];
-
-var fontAliases = {
-    "\\Bbb": "\\mathbb",
-    "\\bold": "\\mathbf",
-    "\\frak": "\\mathfrak"
-};
-
-// Single-argument color functions
-defineFunction([
-    "\\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"
-], {
-    numArgs: 1,
-    allowedInText: true,
-    greediness: 3
-}, function(context, args) {
-    var body = args[0];
-    return {
-        type: "color",
-        color: "katex-" + context.funcName.slice(1),
-        value: ordargument(body)
-    };
-});
-
-// There are 2 flags for operators; whether they produce limits in
-// displaystyle, and whether they are symbols and should grow in
-// displaystyle. These four groups cover the four possible choices.
-
-// No limits, not symbols
-defineFunction([
-    "\\arcsin", "\\arccos", "\\arctan", "\\arg", "\\cos", "\\cosh",
-    "\\cot", "\\coth", "\\csc", "\\deg", "\\dim", "\\exp", "\\hom",
-    "\\ker", "\\lg", "\\ln", "\\log", "\\sec", "\\sin", "\\sinh",
-    "\\tan", "\\tanh"
-], {
-    numArgs: 0
-}, function(context) {
-    return {
-        type: "op",
-        limits: false,
-        symbol: false,
-        body: context.funcName
-    };
-});
-
-// Limits, not symbols
-defineFunction([
-    "\\det", "\\gcd", "\\inf", "\\lim", "\\liminf", "\\limsup", "\\max",
-    "\\min", "\\Pr", "\\sup"
-], {
-    numArgs: 0
-}, function(context) {
-    return {
-        type: "op",
-        limits: true,
-        symbol: false,
-        body: context.funcName
-    };
-});
-
-// No limits, symbols
-defineFunction([
-    "\\int", "\\iint", "\\iiint", "\\oint"
-], {
-    numArgs: 0
-}, function(context) {
-    return {
-        type: "op",
-        limits: false,
-        symbol: true,
-        body: context.funcName
-    };
-});
-
-// Limits, symbols
-defineFunction([
-    "\\coprod", "\\bigvee", "\\bigwedge", "\\biguplus", "\\bigcap",
-    "\\bigcup", "\\intop", "\\prod", "\\sum", "\\bigotimes",
-    "\\bigoplus", "\\bigodot", "\\bigsqcup", "\\smallint"
-], {
-    numArgs: 0
-}, function(context) {
-    return {
-        type: "op",
-        limits: true,
-        symbol: true,
-        body: context.funcName
-    };
-});
-
-// \mathop class command
-defineFunction("\\mathop", {
-    numArgs: 1
-}, function(context, args) {
-    var body = args[0];
-    return {
-        type: "op",
-        limits: false,
-        symbol: false,
-        value: ordargument(body)
-    };
-});
-
-// Fractions
-defineFunction([
-    "\\dfrac", "\\frac", "\\tfrac",
-    "\\dbinom", "\\binom", "\\tbinom",
-    "\\\\atopfrac" // can’t be entered directly
-], {
-    numArgs: 2,
-    greediness: 2
-}, function(context, args) {
-    var numer = args[0];
-    var denom = args[1];
-    var hasBarLine;
-    var leftDelim = null;
-    var rightDelim = null;
-    var size = "auto";
-
-    switch (context.funcName) {
-        case "\\dfrac":
-        case "\\frac":
-        case "\\tfrac":
-            hasBarLine = true;
-            break;
-        case "\\\\atopfrac":
-            hasBarLine = false;
-            break;
-        case "\\dbinom":
-        case "\\binom":
-        case "\\tbinom":
-            hasBarLine = false;
-            leftDelim = "(";
-            rightDelim = ")";
-            break;
-        default:
-            throw new Error("Unrecognized genfrac command");
-    }
-
-    switch (context.funcName) {
-        case "\\dfrac":
-        case "\\dbinom":
-            size = "display";
-            break;
-        case "\\tfrac":
-        case "\\tbinom":
-            size = "text";
-            break;
-    }
-
-    return {
-        type: "genfrac",
-        numer: numer,
-        denom: denom,
-        hasBarLine: hasBarLine,
-        leftDelim: leftDelim,
-        rightDelim: rightDelim,
-        size: size
-    };
-});
-
-// Left and right overlap functions
-defineFunction(["\\llap", "\\rlap"], {
-    numArgs: 1,
-    allowedInText: true
-}, function(context, args) {
-    var body = args[0];
-    return {
-        type: context.funcName.slice(1),
-        body: body
-    };
-});
-
-// Delimiter functions
-var checkDelimiter = function(delim, context) {
-    if (utils.contains(delimiters, delim.value)) {
-        return delim;
-    } else {
-        throw new ParseError(
-            "Invalid delimiter: '" + delim.value + "' after '" +
-            context.funcName + "'", delim);
-    }
-};
-
-defineFunction([
-    "\\bigl", "\\Bigl", "\\biggl", "\\Biggl",
-    "\\bigr", "\\Bigr", "\\biggr", "\\Biggr",
-    "\\bigm", "\\Bigm", "\\biggm", "\\Biggm",
-    "\\big",  "\\Big",  "\\bigg",  "\\Bigg"
-], {
-    numArgs: 1
-}, function(context, args) {
-    var delim = checkDelimiter(args[0], context);
-
-    return {
-        type: "delimsizing",
-        size: delimiterSizes[context.funcName].size,
-        mclass: delimiterSizes[context.funcName].mclass,
-        value: delim.value
-    };
-});
-
-defineFunction([
-    "\\left", "\\right"
-], {
-    numArgs: 1
-}, function(context, args) {
-    var delim = checkDelimiter(args[0], context);
-
-    // \left and \right are caught somewhere in Parser.js, which is
-    // why this data doesn't match what is in buildHTML.
-    return {
-        type: "leftright",
-        value: delim.value
-    };
-});
-
-defineFunction("\\middle", {
-    numArgs: 1
-}, function(context, args) {
-    var delim = checkDelimiter(args[0], context);
-    if (!context.parser.leftrightDepth) {
-        throw new ParseError("\\middle without preceding \\left", delim);
-    }
-
-    return {
-        type: "middle",
-        value: delim.value
-    };
-});
-
-// Sizing functions (handled in Parser.js explicitly, hence no handler)
-defineFunction([
-    "\\tiny", "\\scriptsize", "\\footnotesize", "\\small",
-    "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"
-], 0, null);
-
-// Style changing functions (handled in Parser.js explicitly, hence no
-// handler)
-defineFunction([
-    "\\displaystyle", "\\textstyle", "\\scriptstyle",
-    "\\scriptscriptstyle"
-], 0, null);
-
-defineFunction([
-    // styles
-    "\\mathrm", "\\mathit", "\\mathbf",
-
-    // families
-    "\\mathbb", "\\mathcal", "\\mathfrak", "\\mathscr", "\\mathsf",
-    "\\mathtt",
-
-    // aliases
-    "\\Bbb", "\\bold", "\\frak"
-], {
-    numArgs: 1,
-    greediness: 2
-}, function(context, args) {
-    var body = args[0];
-    var func = context.funcName;
-    if (func in fontAliases) {
-        func = fontAliases[func];
-    }
-    return {
-        type: "font",
-        font: func.slice(1),
-        body: body
-    };
-});
-
-// Accents
-defineFunction([
-    "\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve",
-    "\\check", "\\hat", "\\vec", "\\dot"
-    // We don't support expanding accents yet
-    // "\\widetilde", "\\widehat"
-], {
-    numArgs: 1
-}, function(context, args) {
-    var base = args[0];
-    return {
-        type: "accent",
-        accent: context.funcName,
-        base: base
-    };
-});
-
-// Infix generalized fractions
-defineFunction(["\\over", "\\choose", "\\atop"], {
-    numArgs: 0,
-    infix: true
-}, function(context) {
-    var replaceWith;
-    switch (context.funcName) {
-        case "\\over":
-            replaceWith = "\\frac";
-            break;
-        case "\\choose":
-            replaceWith = "\\binom";
-            break;
-        case "\\atop":
-            replaceWith = "\\\\atopfrac";
-            break;
-        default:
-            throw new Error("Unrecognized infix genfrac command");
-    }
-    return {
-        type: "infix",
-        replaceWith: replaceWith,
-        token: context.token
-    };
-});
-
-// Row breaks for aligned data
-defineFunction(["\\\\", "\\cr"], {
-    numArgs: 0,
-    numOptionalArgs: 1,
-    argTypes: ["size"]
-}, function(context, args) {
-    var size = args[0];
-    return {
-        type: "cr",
-        size: size
-    };
-});
-
-// Environment delimiters
-defineFunction(["\\begin", "\\end"], {
-    numArgs: 1,
-    argTypes: ["text"]
-}, function(context, args) {
-    var nameGroup = args[0];
-    if (nameGroup.type !== "ordgroup") {
-        throw new ParseError("Invalid environment name", nameGroup);
-    }
-    var name = "";
-    for (var i = 0; i < nameGroup.value.length; ++i) {
-        name += nameGroup.value[i].value;
-    }
-    return {
-        type: "environment",
-        name: name,
-        nameGroup: nameGroup
-    };
-});
-
-},{"./ParseError":6,"./parseData":21,"./utils":25}],20:[function(require,module,exports){
-/**
- * These objects store data about MathML nodes. This is the MathML equivalent
- * of the types in domTree.js. Since MathML handles its own rendering, and
- * since we're mainly using MathML to improve accessibility, we don't manage
- * any of the styling state that the plain DOM nodes do.
- *
- * The `toNode` and `toMarkup` functions work simlarly to how they do in
- * domTree.js, creating namespaced DOM nodes and HTML text markup respectively.
- */
-
-var utils = require("./utils");
-
-/**
- * This node represents a general purpose MathML node of any type. The
- * constructor requires the type of node to create (for example, `"mo"` or
- * `"mspace"`, corresponding to `<mo>` and `<mspace>` tags).
- */
-function MathNode(type, children) {
-    this.type = type;
-    this.attributes = {};
-    this.children = children || [];
-}
-
-/**
- * Sets an attribute on a MathML node. MathML depends on attributes to convey a
- * semantic content, so this is used heavily.
- */
-MathNode.prototype.setAttribute = function(name, value) {
-    this.attributes[name] = value;
-};
-
-/**
- * Converts the math node into a MathML-namespaced DOM element.
- */
-MathNode.prototype.toNode = function() {
-    var node = document.createElementNS(
-        "http://www.w3.org/1998/Math/MathML", this.type);
-
-    for (var attr in this.attributes) {
-        if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
-            node.setAttribute(attr, this.attributes[attr]);
-        }
-    }
-
-    for (var i = 0; i < this.children.length; i++) {
-        node.appendChild(this.children[i].toNode());
-    }
-
-    return node;
-};
-
-/**
- * Converts the math node into an HTML markup string.
- */
-MathNode.prototype.toMarkup = function() {
-    var markup = "<" + this.type;
-
-    // Add the attributes
-    for (var attr in this.attributes) {
-        if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {
-            markup += " " + attr + "=\"";
-            markup += utils.escape(this.attributes[attr]);
-            markup += "\"";
-        }
-    }
-
-    markup += ">";
-
-    for (var i = 0; i < this.children.length; i++) {
-        markup += this.children[i].toMarkup();
-    }
-
-    markup += "</" + this.type + ">";
-
-    return markup;
-};
-
-/**
- * This node represents a piece of text.
- */
-function TextNode(text) {
-    this.text = text;
-}
-
-/**
- * Converts the text node into a DOM text node.
- */
-TextNode.prototype.toNode = function() {
-    return document.createTextNode(this.text);
-};
-
-/**
- * Converts the text node into HTML markup (which is just the text itself).
- */
-TextNode.prototype.toMarkup = function() {
-    return utils.escape(this.text);
-};
-
-module.exports = {
-    MathNode: MathNode,
-    TextNode: TextNode
-};
-
-},{"./utils":25}],21:[function(require,module,exports){
-/**
- * The resulting parse tree nodes of the parse tree.
- *
- * It is possible to provide position information, so that a ParseNode can
- * fulfil a role similar to a Token in error reporting.
- * For details on the corresponding properties see Token constructor.
- * Providing such information can lead to better error reporting.
- *
- * @param {string}  type       type of node, like e.g. "ordgroup"
- * @param {?object} value      type-specific representation of the node
- * @param {string}  mode       parse mode in action for this node,
- *                             "math" or "text"
- * @param {Token=} firstToken  first token of the input for this node,
- *                             will omit position information if unset
- * @param {Token=} lastToken   last token of the input for this node,
- *                             will default to firstToken if unset
- */
-function ParseNode(type, value, mode, firstToken, lastToken) {
-    this.type = type;
-    this.value = value;
-    this.mode = mode;
-    if (firstToken && (!lastToken || lastToken.lexer === firstToken.lexer)) {
-        this.lexer = firstToken.lexer;
-        this.start = firstToken.start;
-        this.end = (lastToken || firstToken).end;
-    }
-}
-
-module.exports = {
-    ParseNode: ParseNode
-};
-
-
-},{}],22:[function(require,module,exports){
-/**
- * Provides a single function for parsing an expression using a Parser
- * TODO(emily): Remove this
- */
-
-var Parser = require("./Parser");
-
-/**
- * Parses an expression using a Parser, then returns the parsed result.
- */
-var parseTree = function(toParse, settings) {
-    if (!(typeof toParse === 'string' || toParse instanceof String)) {
-        throw new TypeError('KaTeX can only parse string typed expression');
-    }
-    var parser = new Parser(toParse, settings);
-
-    return parser.parse();
-};
-
-module.exports = parseTree;
-
-},{"./Parser":7}],23:[function(require,module,exports){
-/**
- * This file holds a list of all no-argument functions and single-character
- * symbols (like 'a' or ';').
- *
- * For each of the symbols, there are three properties they can have:
- * - font (required): the font to be used for this symbol. Either "main" (the
-     normal font), or "ams" (the ams fonts).
- * - group (required): the ParseNode group type the symbol should have (i.e.
-     "textord", "mathord", etc).
-     See https://github.com/Khan/KaTeX/wiki/Examining-TeX#group-types
- * - replace: the character that this symbol or function should be
- *   replaced with (i.e. "\phi" has a replace value of "\u03d5", the phi
- *   character in the main font).
- *
- * The outermost map in the table indicates what mode the symbols should be
- * accepted in (e.g. "math" or "text").
- */
-
-module.exports = {
-    math: {},
-    text: {}
-};
-
-function defineSymbol(mode, font, group, replace, name) {
-    module.exports[mode][name] = {
-        font: font,
-        group: group,
-        replace: replace
-    };
-}
-
-// Some abbreviations for commonly used strings.
-// This helps minify the code, and also spotting typos using jshint.
-
-// modes:
-var math = "math";
-var text = "text";
-
-// fonts:
-var main = "main";
-var ams = "ams";
-
-// groups:
-var accent = "accent";
-var bin = "bin";
-var close = "close";
-var inner = "inner";
-var mathord = "mathord";
-var op = "op";
-var open = "open";
-var punct = "punct";
-var rel = "rel";
-var spacing = "spacing";
-var textord = "textord";
-
-// Now comes the symbol table
-
-// Relation Symbols
-defineSymbol(math, main, rel, "\u2261", "\\equiv");
-defineSymbol(math, main, rel, "\u227a", "\\prec");
-defineSymbol(math, main, rel, "\u227b", "\\succ");
-defineSymbol(math, main, rel, "\u223c", "\\sim");
-defineSymbol(math, main, rel, "\u22a5", "\\perp");
-defineSymbol(math, main, rel, "\u2aaf", "\\preceq");
-defineSymbol(math, main, rel, "\u2ab0", "\\succeq");
-defineSymbol(math, main, rel, "\u2243", "\\simeq");
-defineSymbol(math, main, rel, "\u2223", "\\mid");
-defineSymbol(math, main, rel, "\u226a", "\\ll");
-defineSymbol(math, main, rel, "\u226b", "\\gg");
-defineSymbol(math, main, rel, "\u224d", "\\asymp");
-defineSymbol(math, main, rel, "\u2225", "\\parallel");
-defineSymbol(math, main, rel, "\u22c8", "\\bowtie");
-defineSymbol(math, main, rel, "\u2323", "\\smile");
-defineSymbol(math, main, rel, "\u2291", "\\sqsubseteq");
-defineSymbol(math, main, rel, "\u2292", "\\sqsupseteq");
-defineSymbol(math, main, rel, "\u2250", "\\doteq");
-defineSymbol(math, main, rel, "\u2322", "\\frown");
-defineSymbol(math, main, rel, "\u220b", "\\ni");
-defineSymbol(math, main, rel, "\u221d", "\\propto");
-defineSymbol(math, main, rel, "\u22a2", "\\vdash");
-defineSymbol(math, main, rel, "\u22a3", "\\dashv");
-defineSymbol(math, main, rel, "\u220b", "\\owns");
-
-// Punctuation
-defineSymbol(math, main, punct, "\u002e", "\\ldotp");
-defineSymbol(math, main, punct, "\u22c5", "\\cdotp");
-
-// Misc Symbols
-defineSymbol(math, main, textord, "\u0023", "\\#");
-defineSymbol(text, main, textord, "\u0023", "\\#");
-defineSymbol(math, main, textord, "\u0026", "\\&");
-defineSymbol(text, main, textord, "\u0026", "\\&");
-defineSymbol(math, main, textord, "\u2135", "\\aleph");
-defineSymbol(math, main, textord, "\u2200", "\\forall");
-defineSymbol(math, main, textord, "\u210f", "\\hbar");
-defineSymbol(math, main, textord, "\u2203", "\\exists");
-defineSymbol(math, main, textord, "\u2207", "\\nabla");
-defineSymbol(math, main, textord, "\u266d", "\\flat");
-defineSymbol(math, main, textord, "\u2113", "\\ell");
-defineSymbol(math, main, textord, "\u266e", "\\natural");
-defineSymbol(math, main, textord, "\u2663", "\\clubsuit");
-defineSymbol(math, main, textord, "\u2118", "\\wp");
-defineSymbol(math, main, textord, "\u266f", "\\sharp");
-defineSymbol(math, main, textord, "\u2662", "\\diamondsuit");
-defineSymbol(math, main, textord, "\u211c", "\\Re");
-defineSymbol(math, main, textord, "\u2661", "\\heartsuit");
-defineSymbol(math, main, textord, "\u2111", "\\Im");
-defineSymbol(math, main, textord, "\u2660", "\\spadesuit");
-
-// Math and Text
-defineSymbol(math, main, textord, "\u2020", "\\dag");
-defineSymbol(math, main, textord, "\u2021", "\\ddag");
-
-// Large Delimiters
-defineSymbol(math, main, close, "\u23b1", "\\rmoustache");
-defineSymbol(math, main, open, "\u23b0", "\\lmoustache");
-defineSymbol(math, main, close, "\u27ef", "\\rgroup");
-defineSymbol(math, main, open, "\u27ee", "\\lgroup");
-
-// Binary Operators
-defineSymbol(math, main, bin, "\u2213", "\\mp");
-defineSymbol(math, main, bin, "\u2296", "\\ominus");
-defineSymbol(math, main, bin, "\u228e", "\\uplus");
-defineSymbol(math, main, bin, "\u2293", "\\sqcap");
-defineSymbol(math, main, bin, "\u2217", "\\ast");
-defineSymbol(math, main, bin, "\u2294", "\\sqcup");
-defineSymbol(math, main, bin, "\u25ef", "\\bigcirc");
-defineSymbol(math, main, bin, "\u2219", "\\bullet");
-defineSymbol(math, main, bin, "\u2021", "\\ddagger");
-defineSymbol(math, main, bin, "\u2240", "\\wr");
-defineSymbol(math, main, bin, "\u2a3f", "\\amalg");
-
-// Arrow Symbols
-defineSymbol(math, main, rel, "\u27f5", "\\longleftarrow");
-defineSymbol(math, main, rel, "\u21d0", "\\Leftarrow");
-defineSymbol(math, main, rel, "\u27f8", "\\Longleftarrow");
-defineSymbol(math, main, rel, "\u27f6", "\\longrightarrow");
-defineSymbol(math, main, rel, "\u21d2", "\\Rightarrow");
-defineSymbol(math, main, rel, "\u27f9", "\\Longrightarrow");
-defineSymbol(math, main, rel, "\u2194", "\\leftrightarrow");
-defineSymbol(math, main, rel, "\u27f7", "\\longleftrightarrow");
-defineSymbol(math, main, rel, "\u21d4", "\\Leftrightarrow");
-defineSymbol(math, main, rel, "\u27fa", "\\Longleftrightarrow");
-defineSymbol(math, main, rel, "\u21a6", "\\mapsto");
-defineSymbol(math, main, rel, "\u27fc", "\\longmapsto");
-defineSymbol(math, main, rel, "\u2197", "\\nearrow");
-defineSymbol(math, main, rel, "\u21a9", "\\hookleftarrow");
-defineSymbol(math, main, rel, "\u21aa", "\\hookrightarrow");
-defineSymbol(math, main, rel, "\u2198", "\\searrow");
-defineSymbol(math, main, rel, "\u21bc", "\\leftharpoonup");
-defineSymbol(math, main, rel, "\u21c0", "\\rightharpoonup");
-defineSymbol(math, main, rel, "\u2199", "\\swarrow");
-defineSymbol(math, main, rel, "\u21bd", "\\leftharpoondown");
-defineSymbol(math, main, rel, "\u21c1", "\\rightharpoondown");
-defineSymbol(math, main, rel, "\u2196", "\\nwarrow");
-defineSymbol(math, main, rel, "\u21cc", "\\rightleftharpoons");
-
-// AMS Negated Binary Relations
-defineSymbol(math, ams, rel, "\u226e", "\\nless");
-defineSymbol(math, ams, rel, "\ue010", "\\nleqslant");
-defineSymbol(math, ams, rel, "\ue011", "\\nleqq");
-defineSymbol(math, ams, rel, "\u2a87", "\\lneq");
-defineSymbol(math, ams, rel, "\u2268", "\\lneqq");
-defineSymbol(math, ams, rel, "\ue00c", "\\lvertneqq");
-defineSymbol(math, ams, rel, "\u22e6", "\\lnsim");
-defineSymbol(math, ams, rel, "\u2a89", "\\lnapprox");
-defineSymbol(math, ams, rel, "\u2280", "\\nprec");
-defineSymbol(math, ams, rel, "\u22e0", "\\npreceq");
-defineSymbol(math, ams, rel, "\u22e8", "\\precnsim");
-defineSymbol(math, ams, rel, "\u2ab9", "\\precnapprox");
-defineSymbol(math, ams, rel, "\u2241", "\\nsim");
-defineSymbol(math, ams, rel, "\ue006", "\\nshortmid");
-defineSymbol(math, ams, rel, "\u2224", "\\nmid");
-defineSymbol(math, ams, rel, "\u22ac", "\\nvdash");
-defineSymbol(math, ams, rel, "\u22ad", "\\nvDash");
-defineSymbol(math, ams, rel, "\u22ea", "\\ntriangleleft");
-defineSymbol(math, ams, rel, "\u22ec", "\\ntrianglelefteq");
-defineSymbol(math, ams, rel, "\u228a", "\\subsetneq");
-defineSymbol(math, ams, rel, "\ue01a", "\\varsubsetneq");
-defineSymbol(math, ams, rel, "\u2acb", "\\subsetneqq");
-defineSymbol(math, ams, rel, "\ue017", "\\varsubsetneqq");
-defineSymbol(math, ams, rel, "\u226f", "\\ngtr");
-defineSymbol(math, ams, rel, "\ue00f", "\\ngeqslant");
-defineSymbol(math, ams, rel, "\ue00e", "\\ngeqq");
-defineSymbol(math, ams, rel, "\u2a88", "\\gneq");
-defineSymbol(math, ams, rel, "\u2269", "\\gneqq");
-defineSymbol(math, ams, rel, "\ue00d", "\\gvertneqq");
-defineSymbol(math, ams, rel, "\u22e7", "\\gnsim");
-defineSymbol(math, ams, rel, "\u2a8a", "\\gnapprox");
-defineSymbol(math, ams, rel, "\u2281", "\\nsucc");
-defineSymbol(math, ams, rel, "\u22e1", "\\nsucceq");
-defineSymbol(math, ams, rel, "\u22e9", "\\succnsim");
-defineSymbol(math, ams, rel, "\u2aba", "\\succnapprox");
-defineSymbol(math, ams, rel, "\u2246", "\\ncong");
-defineSymbol(math, ams, rel, "\ue007", "\\nshortparallel");
-defineSymbol(math, ams, rel, "\u2226", "\\nparallel");
-defineSymbol(math, ams, rel, "\u22af", "\\nVDash");
-defineSymbol(math, ams, rel, "\u22eb", "\\ntriangleright");
-defineSymbol(math, ams, rel, "\u22ed", "\\ntrianglerighteq");
-defineSymbol(math, ams, rel, "\ue018", "\\nsupseteqq");
-defineSymbol(math, ams, rel, "\u228b", "\\supsetneq");
-defineSymbol(math, ams, rel, "\ue01b", "\\varsupsetneq");
-defineSymbol(math, ams, rel, "\u2acc", "\\supsetneqq");
-defineSymbol(math, ams, rel, "\ue019", "\\varsupsetneqq");
-defineSymbol(math, ams, rel, "\u22ae", "\\nVdash");
-defineSymbol(math, ams, rel, "\u2ab5", "\\precneqq");
-defineSymbol(math, ams, rel, "\u2ab6", "\\succneqq");
-defineSymbol(math, ams, rel, "\ue016", "\\nsubseteqq");
-defineSymbol(math, ams, bin, "\u22b4", "\\unlhd");
-defineSymbol(math, ams, bin, "\u22b5", "\\unrhd");
-
-// AMS Negated Arrows
-defineSymbol(math, ams, rel, "\u219a", "\\nleftarrow");
-defineSymbol(math, ams, rel, "\u219b", "\\nrightarrow");
-defineSymbol(math, ams, rel, "\u21cd", "\\nLeftarrow");
-defineSymbol(math, ams, rel, "\u21cf", "\\nRightarrow");
-defineSymbol(math, ams, rel, "\u21ae", "\\nleftrightarrow");
-defineSymbol(math, ams, rel, "\u21ce", "\\nLeftrightarrow");
-
-// AMS Misc
-defineSymbol(math, ams, rel, "\u25b3", "\\vartriangle");
-defineSymbol(math, ams, textord, "\u210f", "\\hslash");
-defineSymbol(math, ams, textord, "\u25bd", "\\triangledown");
-defineSymbol(math, ams, textord, "\u25ca", "\\lozenge");
-defineSymbol(math, ams, textord, "\u24c8", "\\circledS");
-defineSymbol(math, ams, textord, "\u00ae", "\\circledR");
-defineSymbol(math, ams, textord, "\u2221", "\\measuredangle");
-defineSymbol(math, ams, textord, "\u2204", "\\nexists");
-defineSymbol(math, ams, textord, "\u2127", "\\mho");
-defineSymbol(math, ams, textord, "\u2132", "\\Finv");
-defineSymbol(math, ams, textord, "\u2141", "\\Game");
-defineSymbol(math, ams, textord, "\u006b", "\\Bbbk");
-defineSymbol(math, ams, textord, "\u2035", "\\backprime");
-defineSymbol(math, ams, textord, "\u25b2", "\\blacktriangle");
-defineSymbol(math, ams, textord, "\u25bc", "\\blacktriangledown");
-defineSymbol(math, ams, textord, "\u25a0", "\\blacksquare");
-defineSymbol(math, ams, textord, "\u29eb", "\\blacklozenge");
-defineSymbol(math, ams, textord, "\u2605", "\\bigstar");
-defineSymbol(math, ams, textord, "\u2222", "\\sphericalangle");
-defineSymbol(math, ams, textord, "\u2201", "\\complement");
-defineSymbol(math, ams, textord, "\u00f0", "\\eth");
-defineSymbol(math, ams, textord, "\u2571", "\\diagup");
-defineSymbol(math, ams, textord, "\u2572", "\\diagdown");
-defineSymbol(math, ams, textord, "\u25a1", "\\square");
-defineSymbol(math, ams, textord, "\u25a1", "\\Box");
-defineSymbol(math, ams, textord, "\u25ca", "\\Diamond");
-defineSymbol(math, ams, textord, "\u00a5", "\\yen");
-defineSymbol(math, ams, textord, "\u2713", "\\checkmark");
-
-// AMS Hebrew
-defineSymbol(math, ams, textord, "\u2136", "\\beth");
-defineSymbol(math, ams, textord, "\u2138", "\\daleth");
-defineSymbol(math, ams, textord, "\u2137", "\\gimel");
-
-// AMS Greek
-defineSymbol(math, ams, textord, "\u03dd", "\\digamma");
-defineSymbol(math, ams, textord, "\u03f0", "\\varkappa");
-
-// AMS Delimiters
-defineSymbol(math, ams, open, "\u250c", "\\ulcorner");
-defineSymbol(math, ams, close, "\u2510", "\\urcorner");
-defineSymbol(math, ams, open, "\u2514", "\\llcorner");
-defineSymbol(math, ams, close, "\u2518", "\\lrcorner");
-
-// AMS Binary Relations
-defineSymbol(math, ams, rel, "\u2266", "\\leqq");
-defineSymbol(math, ams, rel, "\u2a7d", "\\leqslant");
-defineSymbol(math, ams, rel, "\u2a95", "\\eqslantless");
-defineSymbol(math, ams, rel, "\u2272", "\\lesssim");
-defineSymbol(math, ams, rel, "\u2a85", "\\lessapprox");
-defineSymbol(math, ams, rel, "\u224a", "\\approxeq");
-defineSymbol(math, ams, bin, "\u22d6", "\\lessdot");
-defineSymbol(math, ams, rel, "\u22d8", "\\lll");
-defineSymbol(math, ams, rel, "\u2276", "\\lessgtr");
-defineSymbol(math, ams, rel, "\u22da", "\\lesseqgtr");
-defineSymbol(math, ams, rel, "\u2a8b", "\\lesseqqgtr");
-defineSymbol(math, ams, rel, "\u2251", "\\doteqdot");
-defineSymbol(math, ams, rel, "\u2253", "\\risingdotseq");
-defineSymbol(math, ams, rel, "\u2252", "\\fallingdotseq");
-defineSymbol(math, ams, rel, "\u223d", "\\backsim");
-defineSymbol(math, ams, rel, "\u22cd", "\\backsimeq");
-defineSymbol(math, ams, rel, "\u2ac5", "\\subseteqq");
-defineSymbol(math, ams, rel, "\u22d0", "\\Subset");
-defineSymbol(math, ams, rel, "\u228f", "\\sqsubset");
-defineSymbol(math, ams, rel, "\u227c", "\\preccurlyeq");
-defineSymbol(math, ams, rel, "\u22de", "\\curlyeqprec");
-defineSymbol(math, ams, rel, "\u227e", "\\precsim");
-defineSymbol(math, ams, rel, "\u2ab7", "\\precapprox");
-defineSymbol(math, ams, rel, "\u22b2", "\\vartriangleleft");
-defineSymbol(math, ams, rel, "\u22b4", "\\trianglelefteq");
-defineSymbol(math, ams, rel, "\u22a8", "\\vDash");
-defineSymbol(math, ams, rel, "\u22aa", "\\Vvdash");
-defineSymbol(math, ams, rel, "\u2323", "\\smallsmile");
-defineSymbol(math, ams, rel, "\u2322", "\\smallfrown");
-defineSymbol(math, ams, rel, "\u224f", "\\bumpeq");
-defineSymbol(math, ams, rel, "\u224e", "\\Bumpeq");
-defineSymbol(math, ams, rel, "\u2267", "\\geqq");
-defineSymbol(math, ams, rel, "\u2a7e", "\\geqslant");
-defineSymbol(math, ams, rel, "\u2a96", "\\eqslantgtr");
-defineSymbol(math, ams, rel, "\u2273", "\\gtrsim");
-defineSymbol(math, ams, rel, "\u2a86", "\\gtrapprox");
-defineSymbol(math, ams, bin, "\u22d7", "\\gtrdot");
-defineSymbol(math, ams, rel, "\u22d9", "\\ggg");
-defineSymbol(math, ams, rel, "\u2277", "\\gtrless");
-defineSymbol(math, ams, rel, "\u22db", "\\gtreqless");
-defineSymbol(math, ams, rel, "\u2a8c", "\\gtreqqless");
-defineSymbol(math, ams, rel, "\u2256", "\\eqcirc");
-defineSymbol(math, ams, rel, "\u2257", "\\circeq");
-defineSymbol(math, ams, rel, "\u225c", "\\triangleq");
-defineSymbol(math, ams, rel, "\u223c", "\\thicksim");
-defineSymbol(math, ams, rel, "\u2248", "\\thickapprox");
-defineSymbol(math, ams, rel, "\u2ac6", "\\supseteqq");
-defineSymbol(math, ams, rel, "\u22d1", "\\Supset");
-defineSymbol(math, ams, rel, "\u2290", "\\sqsupset");
-defineSymbol(math, ams, rel, "\u227d", "\\succcurlyeq");
-defineSymbol(math, ams, rel, "\u22df", "\\curlyeqsucc");
-defineSymbol(math, ams, rel, "\u227f", "\\succsim");
-defineSymbol(math, ams, rel, "\u2ab8", "\\succapprox");
-defineSymbol(math, ams, rel, "\u22b3", "\\vartriangleright");
-defineSymbol(math, ams, rel, "\u22b5", "\\trianglerighteq");
-defineSymbol(math, ams, rel, "\u22a9", "\\Vdash");
-defineSymbol(math, ams, rel, "\u2223", "\\shortmid");
-defineSymbol(math, ams, rel, "\u2225", "\\shortparallel");
-defineSymbol(math, ams, rel, "\u226c", "\\between");
-defineSymbol(math, ams, rel, "\u22d4", "\\pitchfork");
-defineSymbol(math, ams, rel, "\u221d", "\\varpropto");
-defineSymbol(math, ams, rel, "\u25c0", "\\blacktriangleleft");
-defineSymbol(math, ams, rel, "\u2234", "\\therefore");
-defineSymbol(math, ams, rel, "\u220d", "\\backepsilon");
-defineSymbol(math, ams, rel, "\u25b6", "\\blacktriangleright");
-defineSymbol(math, ams, rel, "\u2235", "\\because");
-defineSymbol(math, ams, rel, "\u22d8", "\\llless");
-defineSymbol(math, ams, rel, "\u22d9", "\\gggtr");
-defineSymbol(math, ams, bin, "\u22b2", "\\lhd");
-defineSymbol(math, ams, bin, "\u22b3", "\\rhd");
-defineSymbol(math, ams, rel, "\u2242", "\\eqsim");
-defineSymbol(math, main, rel, "\u22c8", "\\Join");
-defineSymbol(math, ams, rel, "\u2251", "\\Doteq");
-
-// AMS Binary Operators
-defineSymbol(math, ams, bin, "\u2214", "\\dotplus");
-defineSymbol(math, ams, bin, "\u2216", "\\smallsetminus");
-defineSymbol(math, ams, bin, "\u22d2", "\\Cap");
-defineSymbol(math, ams, bin, "\u22d3", "\\Cup");
-defineSymbol(math, ams, bin, "\u2a5e", "\\doublebarwedge");
-defineSymbol(math, ams, bin, "\u229f", "\\boxminus");
-defineSymbol(math, ams, bin, "\u229e", "\\boxplus");
-defineSymbol(math, ams, bin, "\u22c7", "\\divideontimes");
-defineSymbol(math, ams, bin, "\u22c9", "\\ltimes");
-defineSymbol(math, ams, bin, "\u22ca", "\\rtimes");
-defineSymbol(math, ams, bin, "\u22cb", "\\leftthreetimes");
-defineSymbol(math, ams, bin, "\u22cc", "\\rightthreetimes");
-defineSymbol(math, ams, bin, "\u22cf", "\\curlywedge");
-defineSymbol(math, ams, bin, "\u22ce", "\\curlyvee");
-defineSymbol(math, ams, bin, "\u229d", "\\circleddash");
-defineSymbol(math, ams, bin, "\u229b", "\\circledast");
-defineSymbol(math, ams, bin, "\u22c5", "\\centerdot");
-defineSymbol(math, ams, bin, "\u22ba", "\\intercal");
-defineSymbol(math, ams, bin, "\u22d2", "\\doublecap");
-defineSymbol(math, ams, bin, "\u22d3", "\\doublecup");
-defineSymbol(math, ams, bin, "\u22a0", "\\boxtimes");
-
-// AMS Arrows
-defineSymbol(math, ams, rel, "\u21e2", "\\dashrightarrow");
-defineSymbol(math, ams, rel, "\u21e0", "\\dashleftarrow");
-defineSymbol(math, ams, rel, "\u21c7", "\\leftleftarrows");
-defineSymbol(math, ams, rel, "\u21c6", "\\leftrightarrows");
-defineSymbol(math, ams, rel, "\u21da", "\\Lleftarrow");
-defineSymbol(math, ams, rel, "\u219e", "\\twoheadleftarrow");
-defineSymbol(math, ams, rel, "\u21a2", "\\leftarrowtail");
-defineSymbol(math, ams, rel, "\u21ab", "\\looparrowleft");
-defineSymbol(math, ams, rel, "\u21cb", "\\leftrightharpoons");
-defineSymbol(math, ams, rel, "\u21b6", "\\curvearrowleft");
-defineSymbol(math, ams, rel, "\u21ba", "\\circlearrowleft");
-defineSymbol(math, ams, rel, "\u21b0", "\\Lsh");
-defineSymbol(math, ams, rel, "\u21c8", "\\upuparrows");
-defineSymbol(math, ams, rel, "\u21bf", "\\upharpoonleft");
-defineSymbol(math, ams, rel, "\u21c3", "\\downharpoonleft");
-defineSymbol(math, ams, rel, "\u22b8", "\\multimap");
-defineSymbol(math, ams, rel, "\u21ad", "\\leftrightsquigarrow");
-defineSymbol(math, ams, rel, "\u21c9", "\\rightrightarrows");
-defineSymbol(math, ams, rel, "\u21c4", "\\rightleftarrows");
-defineSymbol(math, ams, rel, "\u21a0", "\\twoheadrightarrow");
-defineSymbol(math, ams, rel, "\u21a3", "\\rightarrowtail");
-defineSymbol(math, ams, rel, "\u21ac", "\\looparrowright");
-defineSymbol(math, ams, rel, "\u21b7", "\\curvearrowright");
-defineSymbol(math, ams, rel, "\u21bb", "\\circlearrowright");
-defineSymbol(math, ams, rel, "\u21b1", "\\Rsh");
-defineSymbol(math, ams, rel, "\u21ca", "\\downdownarrows");
-defineSymbol(math, ams, rel, "\u21be", "\\upharpoonright");
-defineSymbol(math, ams, rel, "\u21c2", "\\downharpoonright");
-defineSymbol(math, ams, rel, "\u21dd", "\\rightsquigarrow");
-defineSymbol(math, ams, rel, "\u21dd", "\\leadsto");
-defineSymbol(math, ams, rel, "\u21db", "\\Rrightarrow");
-defineSymbol(math, ams, rel, "\u21be", "\\restriction");
-
-defineSymbol(math, main, textord, "\u2018", "`");
-defineSymbol(math, main, textord, "$", "\\$");
-defineSymbol(text, main, textord, "$", "\\$");
-defineSymbol(math, main, textord, "%", "\\%");
-defineSymbol(text, main, textord, "%", "\\%");
-defineSymbol(math, main, textord, "_", "\\_");
-defineSymbol(text, main, textord, "_", "\\_");
-defineSymbol(math, main, textord, "\u2220", "\\angle");
-defineSymbol(math, main, textord, "\u221e", "\\infty");
-defineSymbol(math, main, textord, "\u2032", "\\prime");
-defineSymbol(math, main, textord, "\u25b3", "\\triangle");
-defineSymbol(math, main, textord, "\u0393", "\\Gamma");
-defineSymbol(math, main, textord, "\u0394", "\\Delta");
-defineSymbol(math, main, textord, "\u0398", "\\Theta");
-defineSymbol(math, main, textord, "\u039b", "\\Lambda");
-defineSymbol(math, main, textord, "\u039e", "\\Xi");
-defineSymbol(math, main, textord, "\u03a0", "\\Pi");
-defineSymbol(math, main, textord, "\u03a3", "\\Sigma");
-defineSymbol(math, main, textord, "\u03a5", "\\Upsilon");
-defineSymbol(math, main, textord, "\u03a6", "\\Phi");
-defineSymbol(math, main, textord, "\u03a8", "\\Psi");
-defineSymbol(math, main, textord, "\u03a9", "\\Omega");
-defineSymbol(math, main, textord, "\u00ac", "\\neg");
-defineSymbol(math, main, textord, "\u00ac", "\\lnot");
-defineSymbol(math, main, textord, "\u22a4", "\\top");
-defineSymbol(math, main, textord, "\u22a5", "\\bot");
-defineSymbol(math, main, textord, "\u2205", "\\emptyset");
-defineSymbol(math, ams, textord, "\u2205", "\\varnothing");
-defineSymbol(math, main, mathord, "\u03b1", "\\alpha");
-defineSymbol(math, main, mathord, "\u03b2", "\\beta");
-defineSymbol(math, main, mathord, "\u03b3", "\\gamma");
-defineSymbol(math, main, mathord, "\u03b4", "\\delta");
-defineSymbol(math, main, mathord, "\u03f5", "\\epsilon");
-defineSymbol(math, main, mathord, "\u03b6", "\\zeta");
-defineSymbol(math, main, mathord, "\u03b7", "\\eta");
-defineSymbol(math, main, mathord, "\u03b8", "\\theta");
-defineSymbol(math, main, mathord, "\u03b9", "\\iota");
-defineSymbol(math, main, mathord, "\u03ba", "\\kappa");
-defineSymbol(math, main, mathord, "\u03bb", "\\lambda");
-defineSymbol(math, main, mathord, "\u03bc", "\\mu");
-defineSymbol(math, main, mathord, "\u03bd", "\\nu");
-defineSymbol(math, main, mathord, "\u03be", "\\xi");
-defineSymbol(math, main, mathord, "o", "\\omicron");
-defineSymbol(math, main, mathord, "\u03c0", "\\pi");
-defineSymbol(math, main, mathord, "\u03c1", "\\rho");
-defineSymbol(math, main, mathord, "\u03c3", "\\sigma");
-defineSymbol(math, main, mathord, "\u03c4", "\\tau");
-defineSymbol(math, main, mathord, "\u03c5", "\\upsilon");
-defineSymbol(math, main, mathord, "\u03d5", "\\phi");
-defineSymbol(math, main, mathord, "\u03c7", "\\chi");
-defineSymbol(math, main, mathord, "\u03c8", "\\psi");
-defineSymbol(math, main, mathord, "\u03c9", "\\omega");
-defineSymbol(math, main, mathord, "\u03b5", "\\varepsilon");
-defineSymbol(math, main, mathord, "\u03d1", "\\vartheta");
-defineSymbol(math, main, mathord, "\u03d6", "\\varpi");
-defineSymbol(math, main, mathord, "\u03f1", "\\varrho");
-defineSymbol(math, main, mathord, "\u03c2", "\\varsigma");
-defineSymbol(math, main, mathord, "\u03c6", "\\varphi");
-defineSymbol(math, main, bin, "\u2217", "*");
-defineSymbol(math, main, bin, "+", "+");
-defineSymbol(math, main, bin, "\u2212", "-");
-defineSymbol(math, main, bin, "\u22c5", "\\cdot");
-defineSymbol(math, main, bin, "\u2218", "\\circ");
-defineSymbol(math, main, bin, "\u00f7", "\\div");
-defineSymbol(math, main, bin, "\u00b1", "\\pm");
-defineSymbol(math, main, bin, "\u00d7", "\\times");
-defineSymbol(math, main, bin, "\u2229", "\\cap");
-defineSymbol(math, main, bin, "\u222a", "\\cup");
-defineSymbol(math, main, bin, "\u2216", "\\setminus");
-defineSymbol(math, main, bin, "\u2227", "\\land");
-defineSymbol(math, main, bin, "\u2228", "\\lor");
-defineSymbol(math, main, bin, "\u2227", "\\wedge");
-defineSymbol(math, main, bin, "\u2228", "\\vee");
-defineSymbol(math, main, textord, "\u221a", "\\surd");
-defineSymbol(math, main, open, "(", "(");
-defineSymbol(math, main, open, "[", "[");
-defineSymbol(math, main, open, "\u27e8", "\\langle");
-defineSymbol(math, main, open, "\u2223", "\\lvert");
-defineSymbol(math, main, open, "\u2225", "\\lVert");
-defineSymbol(math, main, close, ")", ")");
-defineSymbol(math, main, close, "]", "]");
-defineSymbol(math, main, close, "?", "?");
-defineSymbol(math, main, close, "!", "!");
-defineSymbol(math, main, close, "\u27e9", "\\rangle");
-defineSymbol(math, main, close, "\u2223", "\\rvert");
-defineSymbol(math, main, close, "\u2225", "\\rVert");
-defineSymbol(math, main, rel, "=", "=");
-defineSymbol(math, main, rel, "<", "<");
-defineSymbol(math, main, rel, ">", ">");
-defineSymbol(math, main, rel, ":", ":");
-defineSymbol(math, main, rel, "\u2248", "\\approx");
-defineSymbol(math, main, rel, "\u2245", "\\cong");
-defineSymbol(math, main, rel, "\u2265", "\\ge");
-defineSymbol(math, main, rel, "\u2265", "\\geq");
-defineSymbol(math, main, rel, "\u2190", "\\gets");
-defineSymbol(math, main, rel, ">", "\\gt");
-defineSymbol(math, main, rel, "\u2208", "\\in");
-defineSymbol(math, main, rel, "\u2209", "\\notin");
-defineSymbol(math, main, rel, "\u2282", "\\subset");
-defineSymbol(math, main, rel, "\u2283", "\\supset");
-defineSymbol(math, main, rel, "\u2286", "\\subseteq");
-defineSymbol(math, main, rel, "\u2287", "\\supseteq");
-defineSymbol(math, ams, rel, "\u2288", "\\nsubseteq");
-defineSymbol(math, ams, rel, "\u2289", "\\nsupseteq");
-defineSymbol(math, main, rel, "\u22a8", "\\models");
-defineSymbol(math, main, rel, "\u2190", "\\leftarrow");
-defineSymbol(math, main, rel, "\u2264", "\\le");
-defineSymbol(math, main, rel, "\u2264", "\\leq");
-defineSymbol(math, main, rel, "<", "\\lt");
-defineSymbol(math, main, rel, "\u2260", "\\ne");
-defineSymbol(math, main, rel, "\u2260", "\\neq");
-defineSymbol(math, main, rel, "\u2192", "\\rightarrow");
-defineSymbol(math, main, rel, "\u2192", "\\to");
-defineSymbol(math, ams, rel, "\u2271", "\\ngeq");
-defineSymbol(math, ams, rel, "\u2270", "\\nleq");
-defineSymbol(math, main, spacing, null, "\\!");
-defineSymbol(math, main, spacing, "\u00a0", "\\ ");
-defineSymbol(math, main, spacing, "\u00a0", "~");
-defineSymbol(math, main, spacing, null, "\\,");
-defineSymbol(math, main, spacing, null, "\\:");
-defineSymbol(math, main, spacing, null, "\\;");
-defineSymbol(math, main, spacing, null, "\\enspace");
-defineSymbol(math, main, spacing, null, "\\qquad");
-defineSymbol(math, main, spacing, null, "\\quad");
-defineSymbol(math, main, spacing, "\u00a0", "\\space");
-defineSymbol(math, main, punct, ",", ",");
-defineSymbol(math, main, punct, ";", ";");
-defineSymbol(math, main, punct, ":", "\\colon");
-defineSymbol(math, ams, bin, "\u22bc", "\\barwedge");
-defineSymbol(math, ams, bin, "\u22bb", "\\veebar");
-defineSymbol(math, main, bin, "\u2299", "\\odot");
-defineSymbol(math, main, bin, "\u2295", "\\oplus");
-defineSymbol(math, main, bin, "\u2297", "\\otimes");
-defineSymbol(math, main, textord, "\u2202", "\\partial");
-defineSymbol(math, main, bin, "\u2298", "\\oslash");
-defineSymbol(math, ams, bin, "\u229a", "\\circledcirc");
-defineSymbol(math, ams, bin, "\u22a1", "\\boxdot");
-defineSymbol(math, main, bin, "\u25b3", "\\bigtriangleup");
-defineSymbol(math, main, bin, "\u25bd", "\\bigtriangledown");
-defineSymbol(math, main, bin, "\u2020", "\\dagger");
-defineSymbol(math, main, bin, "\u22c4", "\\diamond");
-defineSymbol(math, main, bin, "\u22c6", "\\star");
-defineSymbol(math, main, bin, "\u25c3", "\\triangleleft");
-defineSymbol(math, main, bin, "\u25b9", "\\triangleright");
-defineSymbol(math, main, open, "{", "\\{");
-defineSymbol(text, main, textord, "{", "\\{");
-defineSymbol(math, main, close, "}", "\\}");
-defineSymbol(text, main, textord, "}", "\\}");
-defineSymbol(math, main, open, "{", "\\lbrace");
-defineSymbol(math, main, close, "}", "\\rbrace");
-defineSymbol(math, main, open, "[", "\\lbrack");
-defineSymbol(math, main, close, "]", "\\rbrack");
-defineSymbol(math, main, open, "\u230a", "\\lfloor");
-defineSymbol(math, main, close, "\u230b", "\\rfloor");
-defineSymbol(math, main, open, "\u2308", "\\lceil");
-defineSymbol(math, main, close, "\u2309", "\\rceil");
-defineSymbol(math, main, textord, "\\", "\\backslash");
-defineSymbol(math, main, textord, "\u2223", "|");
-defineSymbol(math, main, textord, "\u2223", "\\vert");
-defineSymbol(math, main, textord, "\u2225", "\\|");
-defineSymbol(math, main, textord, "\u2225", "\\Vert");
-defineSymbol(math, main, rel, "\u2191", "\\uparrow");
-defineSymbol(math, main, rel, "\u21d1", "\\Uparrow");
-defineSymbol(math, main, rel, "\u2193", "\\downarrow");
-defineSymbol(math, main, rel, "\u21d3", "\\Downarrow");
-defineSymbol(math, main, rel, "\u2195", "\\updownarrow");
-defineSymbol(math, main, rel, "\u21d5", "\\Updownarrow");
-defineSymbol(math, math, op, "\u2210", "\\coprod");
-defineSymbol(math, math, op, "\u22c1", "\\bigvee");
-defineSymbol(math, math, op, "\u22c0", "\\bigwedge");
-defineSymbol(math, math, op, "\u2a04", "\\biguplus");
-defineSymbol(math, math, op, "\u22c2", "\\bigcap");
-defineSymbol(math, math, op, "\u22c3", "\\bigcup");
-defineSymbol(math, math, op, "\u222b", "\\int");
-defineSymbol(math, math, op, "\u222b", "\\intop");
-defineSymbol(math, math, op, "\u222c", "\\iint");
-defineSymbol(math, math, op, "\u222d", "\\iiint");
-defineSymbol(math, math, op, "\u220f", "\\prod");
-defineSymbol(math, math, op, "\u2211", "\\sum");
-defineSymbol(math, math, op, "\u2a02", "\\bigotimes");
-defineSymbol(math, math, op, "\u2a01", "\\bigoplus");
-defineSymbol(math, math, op, "\u2a00", "\\bigodot");
-defineSymbol(math, math, op, "\u222e", "\\oint");
-defineSymbol(math, math, op, "\u2a06", "\\bigsqcup");
-defineSymbol(math, math, op, "\u222b", "\\smallint");
-defineSymbol(text, main, inner, "\u2026", "\\textellipsis");
-defineSymbol(math, main, inner, "\u2026", "\\mathellipsis");
-defineSymbol(text, main, inner, "\u2026", "\\ldots");
-defineSymbol(math, main, inner, "\u2026", "\\ldots");
-defineSymbol(math, main, inner, "\u22ef", "\\cdots");
-defineSymbol(math, main, inner, "\u22f1", "\\ddots");
-defineSymbol(math, main, textord, "\u22ee", "\\vdots");
-defineSymbol(math, main, accent, "\u00b4", "\\acute");
-defineSymbol(math, main, accent, "\u0060", "\\grave");
-defineSymbol(math, main, accent, "\u00a8", "\\ddot");
-defineSymbol(math, main, accent, "\u007e", "\\tilde");
-defineSymbol(math, main, accent, "\u00af", "\\bar");
-defineSymbol(math, main, accent, "\u02d8", "\\breve");
-defineSymbol(math, main, accent, "\u02c7", "\\check");
-defineSymbol(math, main, accent, "\u005e", "\\hat");
-defineSymbol(math, main, accent, "\u20d7", "\\vec");
-defineSymbol(math, main, accent, "\u02d9", "\\dot");
-defineSymbol(math, main, mathord, "\u0131", "\\imath");
-defineSymbol(math, main, mathord, "\u0237", "\\jmath");
-
-defineSymbol(text, main, textord, "\u2013", "--");
-defineSymbol(text, main, textord, "\u2014", "---");
-defineSymbol(text, main, textord, "\u2018", "`");
-defineSymbol(text, main, textord, "\u2019", "'");
-defineSymbol(text, main, textord, "\u201c", "``");
-defineSymbol(text, main, textord, "\u201d", "''");
-defineSymbol(math, main, textord, "\u00b0", "\\degree");
-defineSymbol(text, main, textord, "\u00b0", "\\degree");
-defineSymbol(math, main, mathord, "\u00a3", "\\pounds");
-defineSymbol(math, ams, textord, "\u2720", "\\maltese");
-defineSymbol(text, ams, textord, "\u2720", "\\maltese");
-
-defineSymbol(text, main, spacing, "\u00a0", "\\ ");
-defineSymbol(text, main, spacing, "\u00a0", " ");
-defineSymbol(text, main, spacing, "\u00a0", "~");
-
-// There are lots of symbols which are the same, so we add them in afterwards.
-var i;
-var ch;
-
-// All of these are textords in math mode
-var mathTextSymbols = "0123456789/@.\"";
-for (i = 0; i < mathTextSymbols.length; i++) {
-    ch = mathTextSymbols.charAt(i);
-    defineSymbol(math, main, textord, ch, ch);
-}
-
-// All of these are textords in text mode
-var textSymbols = "0123456789!@*()-=+[]\";:?/.,";
-for (i = 0; i < textSymbols.length; i++) {
-    ch = textSymbols.charAt(i);
-    defineSymbol(text, main, textord, ch, ch);
-}
-
-// All of these are textords in text mode, and mathords in math mode
-var letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
-for (i = 0; i < letters.length; i++) {
-    ch = letters.charAt(i);
-    defineSymbol(math, main, mathord, ch, ch);
-    defineSymbol(text, main, textord, ch, ch);
-}
-
-// Latin-1 letters
-for (i = 0x00C0; i <= 0x00D6; i++) {
-    ch = String.fromCharCode(i);
-    defineSymbol(text, main, textord, ch, ch);
-}
-
-for (i = 0x00D8; i <= 0x00F6; i++) {
-    ch = String.fromCharCode(i);
-    defineSymbol(text, main, textord, ch, ch);
-}
-
-for (i = 0x00F8; i <= 0x00FF; i++) {
-    ch = String.fromCharCode(i);
-    defineSymbol(text, main, textord, ch, ch);
-}
-
-// Cyrillic
-for (i = 0x0410; i <= 0x044F; i++) {
-    ch = String.fromCharCode(i);
-    defineSymbol(text, main, textord, ch, ch);
-}
-
-// Unicode versions of existing characters
-defineSymbol(text, main, textord, "\u2013", "–");
-defineSymbol(text, main, textord, "\u2014", "—");
-defineSymbol(text, main, textord, "\u2018", "‘");
-defineSymbol(text, main, textord, "\u2019", "’");
-defineSymbol(text, main, textord, "\u201c", "“");
-defineSymbol(text, main, textord, "\u201d", "”");
-
-},{}],24:[function(require,module,exports){
-var hangulRegex = /[\uAC00-\uD7AF]/;
-
-// This regex combines
-// - Hiragana: [\u3040-\u309F]
-// - Katakana: [\u30A0-\u30FF]
-// - CJK ideograms: [\u4E00-\u9FAF]
-// - Hangul syllables: [\uAC00-\uD7AF]
-// Notably missing are halfwidth Katakana and Romanji glyphs.
-var cjkRegex =
-    /[\u3040-\u309F]|[\u30A0-\u30FF]|[\u4E00-\u9FAF]|[\uAC00-\uD7AF]/;
-
-module.exports = {
-    cjkRegex: cjkRegex,
-    hangulRegex: hangulRegex
-};
-
-},{}],25:[function(require,module,exports){
-/**
- * This file contains a list of utility functions which are useful in other
- * files.
- */
-
-/**
- * Provide an `indexOf` function which works in IE8, but defers to native if
- * possible.
- */
-var nativeIndexOf = Array.prototype.indexOf;
-var indexOf = function(list, elem) {
-    if (list == null) {
-        return -1;
-    }
-    if (nativeIndexOf && list.indexOf === nativeIndexOf) {
-        return list.indexOf(elem);
-    }
-    var i = 0;
-    var l = list.length;
-    for (; i < l; i++) {
-        if (list[i] === elem) {
-            return i;
-        }
-    }
-    return -1;
-};
-
-/**
- * Return whether an element is contained in a list
- */
-var contains = function(list, elem) {
-    return indexOf(list, elem) !== -1;
-};
-
-/**
- * Provide a default value if a setting is undefined
- */
-var deflt = function(setting, defaultIfUndefined) {
-    return setting === undefined ? defaultIfUndefined : setting;
-};
-
-// hyphenate and escape adapted from Facebook's React under Apache 2 license
-
-var uppercase = /([A-Z])/g;
-var hyphenate = function(str) {
-    return str.replace(uppercase, "-$1").toLowerCase();
-};
-
-var ESCAPE_LOOKUP = {
-    "&": "&amp;",
-    ">": "&gt;",
-    "<": "&lt;",
-    "\"": "&quot;",
-    "'": "&#x27;"
-};
-
-var ESCAPE_REGEX = /[&><"']/g;
-
-function escaper(match) {
-    return ESCAPE_LOOKUP[match];
-}
-
-/**
- * Escapes text to prevent scripting attacks.
- *
- * @param {*} text Text value to escape.
- * @return {string} An escaped string.
- */
-function escape(text) {
-    return ("" + text).replace(ESCAPE_REGEX, escaper);
-}
-
-/**
- * A function to set the text content of a DOM element in all supported
- * browsers. Note that we don't define this if there is no document.
- */
-var setTextContent;
-if (typeof document !== "undefined") {
-    var testNode = document.createElement("span");
-    if ("textContent" in testNode) {
-        setTextContent = function(node, text) {
-            node.textContent = text;
-        };
-    } else {
-        setTextContent = function(node, text) {
-            node.innerText = text;
-        };
-    }
-}
-
-/**
- * A function to clear a node.
- */
-function clearNode(node) {
-    setTextContent(node, "");
-}
-
-module.exports = {
-    contains: contains,
-    deflt: deflt,
-    escape: escape,
-    hyphenate: hyphenate,
-    indexOf: indexOf,
-    setTextContent: setTextContent,
-    clearNode: clearNode
-};
-
-},{}]},{},[1])(1)
-});
\ No newline at end of file
diff --git a/specs/es/3.2/katex/katex.min.css b/specs/es/3.2/katex/katex.min.css
deleted file mode 100644
index d6fb837..0000000
--- a/specs/es/3.2/katex/katex.min.css
+++ /dev/null
@@ -1 +0,0 @@
-@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.eot);src:url(fonts/KaTeX_AMS-Regular.eot#iefix) format('embedded-opentype'),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.eot);src:url(fonts/KaTeX_Caligraphic-Bold.eot#iefix) format('embedded-opentype'),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.eot);src:url(fonts/KaTeX_Caligraphic-Regular.eot#iefix) format('embedded-opentype'),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.eot);src:url(fonts/KaTeX_Fraktur-Bold.eot#iefix) format('embedded-opentype'),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.eot);src:url(fonts/KaTeX_Fraktur-Regular.eot#iefix) format('embedded-opentype'),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.eot);src:url(fonts/KaTeX_Main-Bold.eot#iefix) format('embedded-opentype'),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-Italic.eot);src:url(fonts/KaTeX_Main-Italic.eot#iefix) format('embedded-opentype'),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.eot);src:url(fonts/KaTeX_Main-Regular.eot#iefix) format('embedded-opentype'),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-Italic.eot);src:url(fonts/KaTeX_Math-Italic.eot#iefix) format('embedded-opentype'),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-Regular.eot);src:url(fonts/KaTeX_SansSerif-Regular.eot#iefix) format('embedded-opentype'),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.eot);src:url(fonts/KaTeX_Script-Regular.eot#iefix) format('embedded-opentype'),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.eot);src:url(fonts/KaTeX_Size1-Regular.eot#iefix) format('embedded-opentype'),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.eot);src:url(fonts/KaTeX_Size2-Regular.eot#iefix) format('embedded-opentype'),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.eot);src:url(fonts/KaTeX_Size3-Regular.eot#iefix) format('embedded-opentype'),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.eot);src:url(fonts/KaTeX_Size4-Regular.eot#iefix) format('embedded-opentype'),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.eot);src:url(fonts/KaTeX_Typewriter-Regular.eot#iefix) format('embedded-opentype'),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-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0}.katex .katex-html{display:inline-block}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base,.katex .strut{display:inline-block}.katex .mathrm{font-style:normal}.katex .textit{font-style:italic}.katex .mathit{font-family:KaTeX_Math;font-style:italic}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;font-style:italic}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.katex .reset-textstyle.textstyle{font-size:1em}.katex .reset-textstyle.scriptstyle{font-size:.7em}.katex .reset-textstyle.scriptscriptstyle{font-size:.5em}.katex .reset-scriptstyle.textstyle{font-size:1.42857em}.katex .reset-scriptstyle.scriptstyle{font-size:1em}.katex .reset-scriptstyle.scriptscriptstyle{font-size:.71429em}.katex .reset-scriptscriptstyle.textstyle{font-size:2em}.katex .reset-scriptscriptstyle.scriptstyle{font-size:1.4em}.katex .reset-scriptscriptstyle.scriptscriptstyle{font-size:1em}.katex .style-wrap{position:relative}.katex .vlist{display:inline-block}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist .baseline-fix{display:inline-table;table-layout:fixed}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mfrac .frac-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .mfrac .frac-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .mspace{display:inline-block}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .llap,.katex .rlap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .rlap>.inner{left:0}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{width:100%}.katex .overline .overline-line:before,.katex .underline .underline-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .overline .overline-line:after,.katex .underline .underline-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .sqrt>.sqrt-sign{position:relative}.katex .sqrt .sqrt-line{width:100%}.katex .sqrt .sqrt-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .sqrt .sqrt-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.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.4em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:2em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:3.46em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:4.14em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.98em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.71428571em}.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.14285714em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.47142857em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.95714286em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.55714286em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.875em}.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.125em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.25em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.5em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.8em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.1625em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.5875em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:3.1125em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.77777778em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.88888889em}.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.11111111em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.6em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.92222222em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.3em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.76666667em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.7em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.8em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.9em}.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.2em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.44em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.73em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:2.07em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.49em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.58333333em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.66666667em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.75em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.83333333em}.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.44166667em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.725em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.075em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.48611111em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.55555556em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.625em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.69444444em}.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.20138889em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.4375em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72916667em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.28901734em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.40462428em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.46242775em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.52023121em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.57803468em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69364162em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83236994em}.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.19653179em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.43930636em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.24154589em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.33816425em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.38647343em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.43478261em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.48309179em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.57971014em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69565217em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83574879em}.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.20289855em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.20080321em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2811245em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.32128514em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.36144578em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.40160643em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48192771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57831325em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69477912em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8313253em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{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 .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist>span,.katex .op-limits>.vlist>span{text-align:center}.katex .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid #000}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist{text-align:center}.katex .mtable .col-align-l>.vlist{text-align:left}.katex .mtable .col-align-r>.vlist{text-align:right}
\ No newline at end of file
diff --git a/specs/es/3.2/katex/katex.min.js b/specs/es/3.2/katex/katex.min.js
deleted file mode 100644
index 66c0821..0000000
--- a/specs/es/3.2/katex/katex.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.katex=e()}})(function(){var e,t,r;return function a(e,t,r){function i(s,l){if(!t[s]){if(!e[s]){var o=typeof require=="function"&&require;if(!l&&o)return o(s,!0);if(n)return n(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var p=t[s]={exports:{}};e[s][0].call(p.exports,function(t){var r=e[s][1][t];return i(r?r:t)},p,p.exports,a,e,t,r)}return t[s].exports}var n=typeof require=="function"&&require;for(var s=0;s<r.length;s++)i(r[s]);return i}({1:[function(e,t,r){var a=e("./src/ParseError");var i=e("./src/Settings");var n=e("./src/buildTree");var s=e("./src/parseTree");var l=e("./src/utils");var o=function(e,t,r){l.clearNode(t);var a=new i(r);var o=s(e,a);var u=n(o,e,a).toNode();t.appendChild(u)};if(typeof document!=="undefined"){if(document.compatMode!=="CSS1Compat"){typeof console!=="undefined"&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your "+"website has a suitable doctype.");o=function(){throw new a("KaTeX doesn't work in quirks mode.")}}}var u=function(e,t){var r=new i(t);var a=s(e,r);return n(a,e,r).toMarkup()};var p=function(e,t){var r=new i(t);return s(e,r)};t.exports={render:o,renderToString:u,__parse:p,ParseError:a}},{"./src/ParseError":6,"./src/Settings":8,"./src/buildTree":13,"./src/parseTree":22,"./src/utils":25}],2:[function(e,t,r){"use strict";function a(e){if(!e.__matchAtRelocatable){var t=e.source+"|()";var r="g"+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"");e.__matchAtRelocatable=new RegExp(t,r)}return e.__matchAtRelocatable}function i(e,t,r){if(e.global||e.sticky){throw new Error("matchAt(...): Only non-global regexes are supported")}var i=a(e);i.lastIndex=r;var n=i.exec(t);if(n[n.length-1]==null){n.length=n.length-1;return n}else{return null}}t.exports=i},{}],3:[function(e,t,r){var a=e("match-at");var i=e("./ParseError");function n(e){this.input=e;this.pos=0}function s(e,t,r,a){this.text=e;this.start=t;this.end=r;this.lexer=a}s.prototype.range=function(e,t){if(e.lexer!==this.lexer){return new s(t)}return new s(t,this.start,e.end,this.lexer)};var l=new RegExp("([ \r\n	]+)|"+"([!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff]"+"|[\ud800-\udbff][\udc00-\udfff]"+"|\\\\(?:[a-zA-Z]+|[^\ud800-\udfff])"+")");n.prototype.lex=function(){var e=this.input;var t=this.pos;if(t===e.length){return new s("EOF",t,t,this)}var r=a(l,e,t);if(r===null){throw new i("Unexpected character: '"+e[t]+"'",new s(e[t],t,t+1,this))}var n=r[2]||" ";var o=this.pos;this.pos+=r[0].length;var u=this.pos;return new s(n,o,u,this)};t.exports=n},{"./ParseError":6,"match-at":2}],4:[function(e,t,r){var a=e("./Lexer");function i(e,t){this.lexer=new a(e);this.macros=t;this.stack=[];this.discardedWhiteSpace=[]}i.prototype.nextToken=function(){for(;;){if(this.stack.length===0){this.stack.push(this.lexer.lex())}var e=this.stack.pop();var t=e.text;if(!(t.charAt(0)==="\\"&&this.macros.hasOwnProperty(t))){return e}var r=this.macros[t];if(typeof r==="string"){var i=new a(r);r=[];var n=i.lex();while(n.text!=="EOF"){r.push(n);n=i.lex()}r.reverse();this.macros[t]=r}this.stack=this.stack.concat(r)}};i.prototype.get=function(e){this.discardedWhiteSpace=[];var t=this.nextToken();if(e){while(t.text===" "){this.discardedWhiteSpace.push(t);t=this.nextToken()}}return t};i.prototype.unget=function(e){this.stack.push(e);while(this.discardedWhiteSpace.length!==0){this.stack.push(this.discardedWhiteSpace.pop())}};t.exports=i},{"./Lexer":3}],5:[function(e,t,r){function a(e){this.style=e.style;this.color=e.color;this.size=e.size;this.phantom=e.phantom;this.font=e.font;if(e.parentStyle===undefined){this.parentStyle=e.style}else{this.parentStyle=e.parentStyle}if(e.parentSize===undefined){this.parentSize=e.size}else{this.parentSize=e.parentSize}}a.prototype.extend=function(e){var t={style:this.style,size:this.size,color:this.color,parentStyle:this.style,parentSize:this.size,phantom:this.phantom,font:this.font};for(var r in e){if(e.hasOwnProperty(r)){t[r]=e[r]}}return new a(t)};a.prototype.withStyle=function(e){return this.extend({style:e})};a.prototype.withSize=function(e){return this.extend({size:e})};a.prototype.withColor=function(e){return this.extend({color:e})};a.prototype.withPhantom=function(){return this.extend({phantom:true})};a.prototype.withFont=function(e){return this.extend({font:e||this.font})};a.prototype.reset=function(){return this.extend({})};var i={"katex-blue":"#6495ed","katex-orange":"#ffa500","katex-pink":"#ff00af","katex-red":"#df0030","katex-green":"#28ae7b","katex-gray":"gray","katex-purple":"#9d38bd","katex-blueA":"#ccfaff","katex-blueB":"#80f6ff","katex-blueC":"#63d9ea","katex-blueD":"#11accd","katex-blueE":"#0c7f99","katex-tealA":"#94fff5","katex-tealB":"#26edd5","katex-tealC":"#01d1c1","katex-tealD":"#01a995","katex-tealE":"#208170","katex-greenA":"#b6ffb0","katex-greenB":"#8af281","katex-greenC":"#74cf70","katex-greenD":"#1fab54","katex-greenE":"#0d923f","katex-goldA":"#ffd0a9","katex-goldB":"#ffbb71","katex-goldC":"#ff9c39","katex-goldD":"#e07d10","katex-goldE":"#a75a05","katex-redA":"#fca9a9","katex-redB":"#ff8482","katex-redC":"#f9685d","katex-redD":"#e84d39","katex-redE":"#bc2612","katex-maroonA":"#ffbde0","katex-maroonB":"#ff92c6","katex-maroonC":"#ed5fa6","katex-maroonD":"#ca337c","katex-maroonE":"#9e034e","katex-purpleA":"#ddd7ff","katex-purpleB":"#c6b9fc","katex-purpleC":"#aa87ff","katex-purpleD":"#7854ab","katex-purpleE":"#543b78","katex-mintA":"#f5f9e8","katex-mintB":"#edf2df","katex-mintC":"#e0e5cc","katex-grayA":"#f6f7f7","katex-grayB":"#f0f1f2","katex-grayC":"#e3e5e6","katex-grayD":"#d6d8da","katex-grayE":"#babec2","katex-grayF":"#888d93","katex-grayG":"#626569","katex-grayH":"#3b3e40","katex-grayI":"#21242c","katex-kaBlue":"#314453","katex-kaGreen":"#71B307"};a.prototype.getColor=function(){if(this.phantom){return"transparent"}else{return i[this.color]||this.color}};t.exports=a},{}],6:[function(e,t,r){function a(e,t){var r="KaTeX parse error: "+e;var i;var n;if(t&&t.lexer&&t.start<=t.end){var s=t.lexer.input;i=t.start;n=t.end;if(i===s.length){r+=" at end of input: "}else{r+=" at position "+(i+1)+": "}var l=s.slice(i,n).replace(/[^]/g,"$&\u0332");var o;if(i>15){o="\u2026"+s.slice(i-15,i)}else{o=s.slice(0,i)}var u;if(n+15<s.length){u=s.slice(n,n+15)+"\u2026"}else{u=s.slice(n)}r+=o+l+u}var p=new Error(r);p.name="ParseError";p.__proto__=a.prototype;p.position=i;return p}a.prototype.__proto__=Error.prototype;t.exports=a},{}],7:[function(e,t,r){var a=e("./functions");var i=e("./environments");var n=e("./MacroExpander");var s=e("./symbols");var l=e("./utils");var o=e("./unicodeRegexes").cjkRegex;var u=e("./parseData");var p=e("./ParseError");function h(e,t){this.gullet=new n(e,t.macros);this.settings=t;this.leftrightDepth=0}var c=u.ParseNode;function m(e,t,r){this.result=e;this.isFunction=t;this.token=r}h.prototype.expect=function(e,t){if(this.nextToken.text!==e){throw new p("Expected '"+e+"', got '"+this.nextToken.text+"'",this.nextToken)}if(t!==false){this.consume()}};h.prototype.consume=function(){this.nextToken=this.gullet.get(this.mode==="math")};h.prototype.switchMode=function(e){this.gullet.unget(this.nextToken);this.mode=e;this.consume()};h.prototype.parse=function(){this.mode="math";this.consume();var e=this.parseInput();return e};h.prototype.parseInput=function(){var e=this.parseExpression(false);this.expect("EOF",false);return e};var f=["}","\\end","\\right","&","\\\\","\\cr"];h.prototype.parseExpression=function(e,t){var r=[];while(true){var i=this.nextToken;if(f.indexOf(i.text)!==-1){break}if(t&&i.text===t){break}if(e&&a[i.text]&&a[i.text].infix){break}var n=this.parseAtom();if(!n){if(!this.settings.throwOnError&&i.text[0]==="\\"){var s=this.handleUnsupportedCmd();r.push(s);continue}break}r.push(n)}return this.handleInfixNodes(r)};h.prototype.handleInfixNodes=function(e){var t=-1;var r;for(var a=0;a<e.length;a++){var i=e[a];if(i.type==="infix"){if(t!==-1){throw new p("only one infix operator per group",i.value.token)}t=a;r=i.value.replaceWith}}if(t!==-1){var n;var s;var l=e.slice(0,t);var o=e.slice(t+1);if(l.length===1&&l[0].type==="ordgroup"){n=l[0]}else{n=new c("ordgroup",l,this.mode)}if(o.length===1&&o[0].type==="ordgroup"){s=o[0]}else{s=new c("ordgroup",o,this.mode)}var u=this.callFunction(r,[n,s],null);return[new c(u.type,u,this.mode)]}else{return e}};var v=1;h.prototype.handleSupSubscript=function(e){var t=this.nextToken;var r=t.text;this.consume();var i=this.parseGroup();if(!i){if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){return this.handleUnsupportedCmd()}else{throw new p("Expected group after '"+r+"'",t)}}else if(i.isFunction){var n=a[i.result].greediness;if(n>v){return this.parseFunction(i)}else{throw new p("Got function '"+i.result+"' with no arguments "+"as "+e,t)}}else{return i.result}};h.prototype.handleUnsupportedCmd=function(){var e=this.nextToken.text;var t=[];for(var r=0;r<e.length;r++){t.push(new c("textord",e[r],"text"))}var a=new c("text",{body:t,type:"text"},this.mode);var i=new c("color",{color:this.settings.errorColor,value:[a],type:"color"},this.mode);this.consume();return i};h.prototype.parseAtom=function(){var e=this.parseImplicitGroup();if(this.mode==="text"){return e}var t;var r;while(true){var a=this.nextToken;if(a.text==="\\limits"||a.text==="\\nolimits"){if(!e||e.type!=="op"){throw new p("Limit controls must follow a math operator",a)}else{var i=a.text==="\\limits";e.value.limits=i;e.value.alwaysHandleSupSub=true}this.consume()}else if(a.text==="^"){if(t){throw new p("Double superscript",a)}t=this.handleSupSubscript("superscript")}else if(a.text==="_"){if(r){throw new p("Double subscript",a)}r=this.handleSupSubscript("subscript")}else if(a.text==="'"){var n=new c("textord","\\prime",this.mode);var s=[n];this.consume();while(this.nextToken.text==="'"){s.push(n);this.consume()}t=new c("ordgroup",s,this.mode)}else{break}}if(t||r){return new c("supsub",{base:e,sup:t,sub:r},this.mode)}else{return e}};var d=["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];var g=["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"];h.prototype.parseImplicitGroup=function(){var e=this.parseSymbol();if(e==null){return this.parseFunction()}var t=e.result;var r;if(t==="\\left"){var a=this.parseFunction(e);++this.leftrightDepth;r=this.parseExpression(false);--this.leftrightDepth;this.expect("\\right",false);var n=this.parseFunction();return new c("leftright",{body:r,left:a.value.value,right:n.value.value},this.mode)}else if(t==="\\begin"){var s=this.parseFunction(e);var o=s.value.name;if(!i.hasOwnProperty(o)){throw new p("No such environment: "+o,s.value.nameGroup)}var u=i[o];var h=this.parseArguments("\\begin{"+o+"}",u);var m={mode:this.mode,envName:o,parser:this,positions:h.pop()};var f=u.handler(m,h);this.expect("\\end",false);var v=this.nextToken;var y=this.parseFunction();if(y.value.name!==o){throw new p("Mismatch: \\begin{"+o+"} matched "+"by \\end{"+y.value.name+"}",v)}f.position=y.position;return f}else if(l.contains(d,t)){r=this.parseExpression(false);return new c("sizing",{size:"size"+(l.indexOf(d,t)+1),value:r},this.mode)}else if(l.contains(g,t)){r=this.parseExpression(true);return new c("styling",{style:t.slice(1,t.length-5),value:r},this.mode)}else{return this.parseFunction(e)}};h.prototype.parseFunction=function(e){if(!e){e=this.parseGroup()}if(e){if(e.isFunction){var t=e.result;var r=a[t];if(this.mode==="text"&&!r.allowedInText){throw new p("Can't use function '"+t+"' in text mode",e.token)}var i=this.parseArguments(t,r);var n=e.token;var s=this.callFunction(t,i,i.pop(),n);return new c(s.type,s,this.mode)}else{return e.result}}else{return null}};h.prototype.callFunction=function(e,t,r,i){var n={funcName:e,parser:this,positions:r,token:i};return a[e].handler(n,t)};h.prototype.parseArguments=function(e,t){var r=t.numArgs+t.numOptionalArgs;if(r===0){return[[this.pos]]}var i=t.greediness;var n=[this.pos];var s=[];for(var l=0;l<r;l++){var o=this.nextToken;var u=t.argTypes&&t.argTypes[l];var h;if(l<t.numOptionalArgs){if(u){h=this.parseGroupOfType(u,true)}else{h=this.parseGroup(true)}if(!h){s.push(null);n.push(this.pos);continue}}else{if(u){h=this.parseGroupOfType(u)}else{h=this.parseGroup()}if(!h){if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){h=new m(this.handleUnsupportedCmd(this.nextToken.text),false)}else{throw new p("Expected group after '"+e+"'",o)}}}var c;if(h.isFunction){var f=a[h.result].greediness;if(f>i){c=this.parseFunction(h)}else{throw new p("Got function '"+h.result+"' as "+"argument to '"+e+"'",o)}}else{c=h.result}s.push(c);n.push(this.pos)}s.push(n);return s};h.prototype.parseGroupOfType=function(e,t){var r=this.mode;if(e==="original"){e=r}if(e==="color"){return this.parseColorGroup(t)}if(e==="size"){return this.parseSizeGroup(t)}this.switchMode(e);if(e==="text"){while(this.nextToken.text===" "){this.consume()}}var a=this.parseGroup(t);this.switchMode(r);return a};h.prototype.parseStringGroup=function(e,t){if(t&&this.nextToken.text!=="["){return null}var r=this.mode;this.mode="text";this.expect(t?"[":"{");var a="";var i=this.nextToken;var n=i;while(this.nextToken.text!==(t?"]":"}")){if(this.nextToken.text==="EOF"){throw new p("Unexpected end of input in "+e,i.range(this.nextToken,a))}n=this.nextToken;a+=n.text;this.consume()}this.mode=r;this.expect(t?"]":"}");return i.range(n,a)};h.prototype.parseRegexGroup=function(e,t){var r=this.mode;this.mode="text";var a=this.nextToken;var i=a;var n="";while(this.nextToken.text!=="EOF"&&e.test(n+this.nextToken.text)){i=this.nextToken;n+=i.text;this.consume()}if(n===""){throw new p("Invalid "+t+": '"+a.text+"'",a)}this.mode=r;return a.range(i,n)};h.prototype.parseColorGroup=function(e){var t=this.parseStringGroup("color",e);if(!t){return null}var r=/^(#[a-z0-9]+|[a-z]+)$/i.exec(t.text);if(!r){throw new p("Invalid color: '"+t.text+"'",t)}return new m(new c("color",r[0],this.mode),false)};h.prototype.parseSizeGroup=function(e){var t;if(!e&&this.nextToken.text!=="{"){t=this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2}$/,"size")}else{t=this.parseStringGroup("size",e)}if(!t){return null}var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);if(!r){throw new p("Invalid size: '"+t.text+"'",t)}var a={number:+(r[1]+r[2]),unit:r[3]};if(a.unit!=="em"&&a.unit!=="ex"&&a.unit!=="mu"){throw new p("Invalid unit: '"+a.unit+"'",t)}return new m(new c("color",a,this.mode),false)};h.prototype.parseGroup=function(e){var t=this.nextToken;if(this.nextToken.text===(e?"[":"{")){this.consume();var r=this.parseExpression(false,e?"]":null);var a=this.nextToken;this.expect(e?"]":"}");if(this.mode==="text"){this.formLigatures(r)}return new m(new c("ordgroup",r,this.mode,t,a),false)}else{return e?null:this.parseSymbol()}};h.prototype.formLigatures=function(e){var t;var r=e.length-1;for(t=0;t<r;++t){var a=e[t];var i=a.value;if(i==="-"&&e[t+1].value==="-"){if(t+1<r&&e[t+2].value==="-"){e.splice(t,3,new c("textord","---","text",a,e[t+2]));r-=2}else{e.splice(t,2,new c("textord","--","text",a,e[t+1]));r-=1}}if((i==="'"||i==="`")&&e[t+1].value===i){e.splice(t,2,new c("textord",i+i,"text",a,e[t+1]));r-=1}}};h.prototype.parseSymbol=function(){var e=this.nextToken;if(a[e.text]){this.consume();return new m(e.text,true,e)}else if(s[this.mode][e.text]){this.consume();return new m(new c(s[this.mode][e.text].group,e.text,this.mode,e),false,e)}else if(this.mode==="text"&&o.test(e.text)){this.consume();return new m(new c("textord",e.text,this.mode,e),false,e)}else{return null}};h.prototype.ParseNode=c;t.exports=h},{"./MacroExpander":4,"./ParseError":6,"./environments":16,"./functions":19,"./parseData":21,"./symbols":23,"./unicodeRegexes":24,"./utils":25}],8:[function(e,t,r){function a(e,t){return e===undefined?t:e}function i(e){e=e||{};this.displayMode=a(e.displayMode,false);this.throwOnError=a(e.throwOnError,true);this.errorColor=a(e.errorColor,"#cc0000");this.macros=e.macros||{}}t.exports=i},{}],9:[function(e,t,r){var a=e("./fontMetrics.js").sigmas;var i=[{},{},{}];var n;for(var s in a){if(a.hasOwnProperty(s)){for(n=0;n<3;n++){i[n][s]=a[s][n]}}}for(n=0;n<3;n++){i[n].emPerEx=a.xHeight[n]/a.quad[n]}function l(e,t,r,a){this.id=e;this.size=t;this.cramped=a;this.sizeMultiplier=r;this.metrics=i[t>0?t-1:0]}l.prototype.sup=function(){return y[x[this.id]]};l.prototype.sub=function(){return y[b[this.id]]};l.prototype.fracNum=function(){return y[w[this.id]]};l.prototype.fracDen=function(){return y[k[this.id]]};l.prototype.cramp=function(){return y[z[this.id]]};l.prototype.cls=function(){return d[this.size]+(this.cramped?" cramped":" uncramped")};l.prototype.reset=function(){return g[this.size]};l.prototype.isTight=function(){return this.size>=2};var o=0;var u=1;var p=2;var h=3;var c=4;var m=5;var f=6;var v=7;var d=["displaystyle textstyle","textstyle","scriptstyle","scriptscriptstyle"];var g=["reset-textstyle","reset-textstyle","reset-scriptstyle","reset-scriptscriptstyle"];var y=[new l(o,0,1,false),new l(u,0,1,true),new l(p,1,1,false),new l(h,1,1,true),new l(c,2,.7,false),new l(m,2,.7,true),new l(f,3,.5,false),new l(v,3,.5,true)];var x=[c,m,c,m,f,v,f,v];var b=[m,m,m,m,v,v,v,v];var w=[p,h,c,m,f,v,f,v];var k=[h,h,m,m,v,v,v,v];var z=[u,u,h,h,m,m,v,v];t.exports={DISPLAY:y[o],TEXT:y[p],SCRIPT:y[c],SCRIPTSCRIPT:y[f]}},{"./fontMetrics.js":17}],10:[function(e,t,r){var a=e("./domTree");var i=e("./fontMetrics");var n=e("./symbols");var s=e("./utils");var l=["\\Gamma","\\Delta","\\Theta","\\Lambda","\\Xi","\\Pi","\\Sigma","\\Upsilon","\\Phi","\\Psi","\\Omega"];var o=["\u0131","\u0237","\xa3"];var u=function(e,t,r,s,l){if(n[r][e]&&n[r][e].replace){e=n[r][e].replace}var o=i.getCharacterMetrics(e,t);var u;if(o){var p=o.italic;if(r==="text"){p=0}u=new a.symbolNode(e,o.height,o.depth,p,o.skew,l)}else{typeof console!=="undefined"&&console.warn("No character metrics for '"+e+"' in style '"+t+"'");u=new a.symbolNode(e,0,0,0,0,l)}if(s){if(s.style.isTight()){u.classes.push("mtight")}if(s.getColor()){u.style.color=s.getColor()}}return u};var p=function(e,t,r,a){if(e==="\\"||n[t][e].font==="main"){return u(e,"Main-Regular",t,r,a)}else{return u(e,"AMS-Regular",t,r,a.concat(["amsrm"]))}};var h=function(e,t,r,a,i){if(i==="mathord"){return c(e,t,r,a)}else if(i==="textord"){return u(e,"Main-Regular",t,r,a.concat(["mathrm"]))}else{throw new Error("unexpected type: "+i+" in mathDefault")}};var c=function(e,t,r,a){if(/[0-9]/.test(e.charAt(0))||s.contains(o,e)||s.contains(l,e)){return u(e,"Main-Italic",t,r,a.concat(["mainit"]))}else{return u(e,"Math-Italic",t,r,a.concat(["mathit"]))}};var m=function(e,t,r){var a=e.mode;var l=e.value;if(n[a][l]&&n[a][l].replace){l=n[a][l].replace}var p=["mord"];var m=t.font;if(m){if(m==="mathit"||s.contains(o,l)){return c(l,a,t,p)}else{var f=k[m].fontName;if(i.getCharacterMetrics(l,f)){return u(l,f,a,t,p.concat([m]))}else{return h(l,a,t,p,r)}}}else{return h(l,a,t,p,r)}};var f=function(e){var t=0;var r=0;var a=0;if(e.children){for(var i=0;i<e.children.length;i++){if(e.children[i].height>t){t=e.children[i].height}if(e.children[i].depth>r){r=e.children[i].depth}if(e.children[i].maxFontSize>a){a=e.children[i].maxFontSize}}}e.height=t;e.depth=r;e.maxFontSize=a};var v=function(e,t,r){var i=new a.span(e,t,r);f(i);return i};var d=function(e,t){e.children=t.concat(e.children);f(e)};var g=function(e){var t=new a.documentFragment(e);f(t);return t};var y=function(e,t){var r=v([],[new a.symbolNode("\u200b")]);r.style.fontSize=t/e.style.sizeMultiplier+"em";var i=v(["fontsize-ensurer","reset-"+e.size,"size5"],[r]);return i};var x=function(e,t,r,i){var n;var s;var l;if(t==="individualShift"){var o=e;e=[o[0]];n=-o[0].shift-o[0].elem.depth;s=n;for(l=1;l<o.length;l++){var u=-o[l].shift-s-o[l].elem.depth;var p=u-(o[l-1].elem.height+o[l-1].elem.depth);s=s+u;e.push({type:"kern",size:p});e.push(o[l])}}else if(t==="top"){var h=r;for(l=0;l<e.length;l++){if(e[l].type==="kern"){h-=e[l].size}else{h-=e[l].elem.height+e[l].elem.depth}}n=h}else if(t==="bottom"){n=-r}else if(t==="shift"){n=-e[0].elem.depth-r}else if(t==="firstBaseline"){n=-e[0].elem.depth}else{n=0}var c=0;for(l=0;l<e.length;l++){if(e[l].type==="elem"){c=Math.max(c,e[l].elem.maxFontSize)}}var m=y(i,c);var f=[];s=n;for(l=0;l<e.length;l++){if(e[l].type==="kern"){s+=e[l].size}else{var d=e[l].elem;var g=-d.depth-s;s+=d.height+d.depth;var x=v([],[m,d]);x.height-=g;x.depth+=g;x.style.top=g+"em";f.push(x)}}var b=v(["baseline-fix"],[m,new a.symbolNode("\u200b")]);f.push(b);var w=v(["vlist"],f);w.height=Math.max(s,w.height);w.depth=Math.max(-n,w.depth);return w};var b={size1:.5,size2:.7,size3:.8,size4:.9,size5:1,size6:1.2,size7:1.44,size8:1.73,size9:2.07,size10:2.49};var w={"\\qquad":{size:"2em",className:"qquad"},"\\quad":{size:"1em",className:"quad"},"\\enspace":{size:"0.5em",className:"enspace"},"\\;":{size:"0.277778em",className:"thickspace"},"\\:":{size:"0.22222em",className:"mediumspace"},"\\,":{size:"0.16667em",className:"thinspace"},"\\!":{size:"-0.16667em",className:"negativethinspace"}};var k={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{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"}};t.exports={fontMap:k,makeSymbol:u,mathsym:p,makeSpan:v,makeFragment:g,makeVList:x,makeOrd:m,prependChildren:d,sizingMultiplier:b,spacingFunctions:w}},{"./domTree":15,"./fontMetrics":17,"./symbols":23,"./utils":25}],11:[function(e,t,r){var a=e("./ParseError");var i=e("./Style");var n=e("./buildCommon");var s=e("./delimiter");var l=e("./domTree");var o=e("./fontMetrics");var u=e("./utils");var p=n.makeSpan;var h=function(e){return e instanceof l.span&&e.classes[0]==="mspace"};var c=function(e){return e&&e.classes[0]==="mbin"};var m=function(e,t){if(e){return u.contains(["mbin","mopen","mrel","mop","mpunct"],e.classes[0])}else{return t}};var f=function(e,t){if(e){return u.contains(["mrel","mclose","mpunct"],e.classes[0])}else{return t}};var v=function(e,t,r){var a=[];for(var i=0;i<e.length;i++){var s=e[i];var o=z(s,t);if(o instanceof l.documentFragment){Array.prototype.push.apply(a,o.children)}else{a.push(o)}}var u=null;for(i=0;i<a.length;i++){if(h(a[i])){u=u||[];u.push(a[i]);a.splice(i,1);i--}else if(u){if(a[i]instanceof l.symbolNode){a[i]=p([].concat(a[i].classes),[a[i]])}n.prependChildren(a[i],u);u=null}}if(u){Array.prototype.push.apply(a,u)}for(i=0;i<a.length;i++){if(c(a[i])&&(m(a[i-1],r)||f(a[i+1],r))){a[i].classes[0]="mord"}}return a};var d=function(e){if(e instanceof l.documentFragment){if(e.children.length){return d(e.children[e.children.length-1])}}else{if(u.contains(["mord","mop","mbin","mrel","mopen","mclose","mpunct","minner"],e.classes[0])){return e.classes[0]}}return null};var g=function(e,t){if(!e){return false}else if(e.type==="op"){return e.value.limits&&(t.style.size===i.DISPLAY.size||e.value.alwaysHandleSupSub)}else if(e.type==="accent"){return x(e.value.base)}else{return null}};var y=function(e){if(!e){return false}else if(e.type==="ordgroup"){if(e.value.length===1){return y(e.value[0])}else{return e}}else if(e.type==="color"){if(e.value.value.length===1){return y(e.value.value[0])}else{return e}}else if(e.type==="font"){return y(e.value.body)}else{return e}};var x=function(e){var t=y(e);return t.type==="mathord"||t.type==="textord"||t.type==="bin"||t.type==="rel"||t.type==="inner"||t.type==="open"||t.type==="close"||t.type==="punct"};var b=function(e,t){return p(t.concat(["sizing","reset-"+e.size,"size5",e.style.reset(),i.TEXT.cls(),"nulldelimiter"]))};var w={};w.mathord=function(e,t){return n.makeOrd(e,t,"mathord")};w.textord=function(e,t){return n.makeOrd(e,t,"textord")};w.bin=function(e,t){return n.mathsym(e.value,e.mode,t,["mbin"])};w.rel=function(e,t){return n.mathsym(e.value,e.mode,t,["mrel"])};w.open=function(e,t){return n.mathsym(e.value,e.mode,t,["mopen"])};w.close=function(e,t){return n.mathsym(e.value,e.mode,t,["mclose"])};w.inner=function(e,t){return n.mathsym(e.value,e.mode,t,["minner"])};w.punct=function(e,t){return n.mathsym(e.value,e.mode,t,["mpunct"])};w.ordgroup=function(e,t){return p(["mord",t.style.cls()],v(e.value,t.reset(),true),t)};w.text=function(e,t){var r=t.withFont(e.value.style);var a=v(e.value.body,r,true);for(var i=0;i<a.length-1;i++){if(a[i].tryCombine(a[i+1])){a.splice(i+1,1);i--}}return p(["mord","text",r.style.cls()],a,r)};w.color=function(e,t){var r=v(e.value.value,t.withColor(e.value.color),false);return new n.makeFragment(r)};w.supsub=function(e,t){if(g(e.value.base,t)){return w[e.value.base.type](e,t)}var r=z(e.value.base,t.reset());var a;var s;var u;var h;var c=t.style;var m;if(e.value.sup){m=t.withStyle(c.sup());u=z(e.value.sup,m);a=p([c.reset(),c.sup().cls()],[u],m)}if(e.value.sub){m=t.withStyle(c.sub());h=z(e.value.sub,m);s=p([c.reset(),c.sub().cls()],[h],m)}var f;var v;if(x(e.value.base)){f=0;v=0}else{f=r.height-c.metrics.supDrop;v=r.depth+c.metrics.subDrop}var y;if(c===i.DISPLAY){y=c.metrics.sup1}else if(c.cramped){y=c.metrics.sup3}else{y=c.metrics.sup2}var b=i.TEXT.sizeMultiplier*c.sizeMultiplier;var k=.5/o.metrics.ptPerEm/b+"em";var S;if(!e.value.sup){v=Math.max(v,c.metrics.sub1,h.height-.8*c.metrics.xHeight);S=n.makeVList([{type:"elem",elem:s}],"shift",v,t);S.children[0].style.marginRight=k;if(r instanceof l.symbolNode){S.children[0].style.marginLeft=-r.italic+"em"}}else if(!e.value.sub){f=Math.max(f,y,u.depth+.25*c.metrics.xHeight);S=n.makeVList([{type:"elem",elem:a}],"shift",-f,t);S.children[0].style.marginRight=k}else{f=Math.max(f,y,u.depth+.25*c.metrics.xHeight);v=Math.max(v,c.metrics.sub2);var M=o.metrics.defaultRuleThickness;if(f-u.depth-(h.height-v)<4*M){v=4*M-(f-u.depth)+h.height;var T=.8*c.metrics.xHeight-(f-u.depth);if(T>0){f+=T;v-=T}}S=n.makeVList([{type:"elem",elem:s,shift:v},{type:"elem",elem:a,shift:-f}],"individualShift",null,t);if(r instanceof l.symbolNode){S.children[0].style.marginLeft=-r.italic+"em"}S.children[0].style.marginRight=k;S.children[1].style.marginRight=k}var A=d(r)||"mord";return p([A],[r,p(["msupsub"],[S])],t)};w.genfrac=function(e,t){var r=t.style;if(e.value.size==="display"){r=i.DISPLAY}else if(e.value.size==="text"){r=i.TEXT}var a=r.fracNum();var l=r.fracDen();var u;u=t.withStyle(a);var h=z(e.value.numer,u);var c=p([r.reset(),a.cls()],[h],u);u=t.withStyle(l);var m=z(e.value.denom,u);var f=p([r.reset(),l.cls()],[m],u);var v;if(e.value.hasBarLine){v=o.metrics.defaultRuleThickness/t.style.sizeMultiplier}else{v=0}var d;var g;var y;if(r.size===i.DISPLAY.size){d=r.metrics.num1;if(v>0){g=3*v}else{g=7*o.metrics.defaultRuleThickness}y=r.metrics.denom1}else{if(v>0){d=r.metrics.num2;g=v}else{d=r.metrics.num3;g=3*o.metrics.defaultRuleThickness}y=r.metrics.denom2}var x;if(v===0){var w=d-h.depth-(m.height-y);if(w<g){d+=.5*(g-w);y+=.5*(g-w)}x=n.makeVList([{type:"elem",elem:f,shift:y},{type:"elem",elem:c,shift:-d}],"individualShift",null,t)}else{var k=r.metrics.axisHeight;if(d-h.depth-(k+.5*v)<g){d+=g-(d-h.depth-(k+.5*v))}if(k-.5*v-(m.height-y)<g){y+=g-(k-.5*v-(m.height-y))}var S=p([t.style.reset(),i.TEXT.cls(),"frac-line"]);S.height=v;var M=-(k-.5*v);x=n.makeVList([{type:"elem",elem:f,shift:y},{type:"elem",elem:S,shift:M},{type:"elem",elem:c,shift:-d}],"individualShift",null,t)}x.height*=r.sizeMultiplier/t.style.sizeMultiplier;x.depth*=r.sizeMultiplier/t.style.sizeMultiplier;var T;if(r.size===i.DISPLAY.size){T=r.metrics.delim1}else{T=r.metrics.delim2}var A;var N;if(e.value.leftDelim==null){A=b(t,["mopen"])}else{A=s.customSizedDelim(e.value.leftDelim,T,true,t.withStyle(r),e.mode,["mopen"])}if(e.value.rightDelim==null){N=b(t,["mclose"])}else{N=s.customSizedDelim(e.value.rightDelim,T,true,t.withStyle(r),e.mode,["mclose"])}return p(["mord",t.style.reset(),r.cls()],[A,p(["mfrac"],[x]),N],t)};var k=function(e,t){var r=e.number;if(e.unit==="ex"){r*=t.metrics.emPerEx}else if(e.unit==="mu"){r/=18}return r};w.array=function(e,t){var r;var i;var s=e.value.body.length;var l=0;var h=new Array(s);var c=t.style;var m=1/o.metrics.ptPerEm;var f=5*m;var v=12*m;var d=u.deflt(e.value.arraystretch,1);var g=d*v;var y=.7*g;var x=.3*g;var b=0;for(r=0;r<e.value.body.length;++r){var w=e.value.body[r];var S=y;var M=x;if(l<w.length){l=w.length}var T=new Array(w.length);for(i=0;i<w.length;++i){var A=z(w[i],t);if(M<A.depth){M=A.depth}if(S<A.height){S=A.height}T[i]=A}var N=0;if(e.value.rowGaps[r]){N=k(e.value.rowGaps[r].value,c);if(N>0){N+=x;if(M<N){M=N}N=0}}T.height=S;T.depth=M;b+=S;T.pos=b;b+=M+N;h[r]=T}var q=b/2+c.metrics.axisHeight;var R=e.value.cols||[];var E=[];var C;var D;for(i=0,D=0;i<l||D<R.length;++i,++D){var O=R[D]||{};var P=true;while(O.type==="separator"){if(!P){C=p(["arraycolsep"],[]);C.style.width=o.metrics.doubleRuleSep+"em";E.push(C)}if(O.separator==="|"){var F=p(["vertical-separator"],[]);F.style.height=b+"em";F.style.verticalAlign=-(b-q)+"em";E.push(F)}else{throw new a("Invalid separator type: "+O.separator)}D++;O=R[D]||{};P=false}if(i>=l){continue}var I;if(i>0||e.value.hskipBeforeAndAfter){I=u.deflt(O.pregap,f);if(I!==0){C=p(["arraycolsep"],[]);C.style.width=I+"em";E.push(C)}}var L=[];for(r=0;r<s;++r){var B=h[r];var G=B[i];if(!G){continue}var V=B.pos-q;G.depth=B.depth;G.height=B.height;L.push({type:"elem",elem:G,shift:V})}L=n.makeVList(L,"individualShift",null,t);L=p(["col-align-"+(O.align||"c")],[L]);E.push(L);if(i<l-1||e.value.hskipBeforeAndAfter){I=u.deflt(O.postgap,f);if(I!==0){C=p(["arraycolsep"],[]);C.style.width=I+"em";E.push(C)}}}h=p(["mtable"],E);return p(["mord"],[h],t)};w.spacing=function(e,t){if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){if(e.mode==="text"){return n.makeOrd(e,t,"textord")}else{return p(["mspace"],[n.mathsym(e.value,e.mode,t)],t)}}else{return p(["mspace",n.spacingFunctions[e.value].className],[],t)}};w.llap=function(e,t){var r=p(["inner"],[z(e.value.body,t.reset())]);var a=p(["fix"],[]);return p(["mord","llap",t.style.cls()],[r,a],t)};w.rlap=function(e,t){var r=p(["inner"],[z(e.value.body,t.reset())]);var a=p(["fix"],[]);return p(["mord","rlap",t.style.cls()],[r,a],t)};w.op=function(e,t){var r;var a;var s=false;if(e.type==="supsub"){r=e.value.sup;a=e.value.sub;e=e.value.base;s=true}var l=t.style;var h=["\\smallint"];var c=false;if(l.size===i.DISPLAY.size&&e.value.symbol&&!u.contains(h,e.value.body)){c=true}var m;var f=0;var d=0;if(e.value.symbol){var g=c?"Size2-Regular":"Size1-Regular";m=n.makeSymbol(e.value.body,g,"math",t,["mop","op-symbol",c?"large-op":"small-op"]);f=(m.height-m.depth)/2-l.metrics.axisHeight*l.sizeMultiplier;d=m.italic}else if(e.value.value){var y=v(e.value.value,t,true);m=p(["mop"],y,t)}else{var x=[];for(var b=1;b<e.value.body.length;b++){x.push(n.mathsym(e.value.body[b],e.mode))}m=p(["mop"],x,t)}if(s){m=p([],[m]);var w;var k;var S;var M;var T;if(r){T=t.withStyle(l.sup());var A=z(r,T);w=p([l.reset(),l.sup().cls()],[A],T);k=Math.max(o.metrics.bigOpSpacing1,o.metrics.bigOpSpacing3-A.depth)}if(a){T=t.withStyle(l.sub());var N=z(a,T);S=p([l.reset(),l.sub().cls()],[N],T);M=Math.max(o.metrics.bigOpSpacing2,o.metrics.bigOpSpacing4-N.height)}var q;var R;var E;if(!r){R=m.height-f;q=n.makeVList([{type:"kern",size:o.metrics.bigOpSpacing5},{type:"elem",elem:S},{type:"kern",size:M},{type:"elem",elem:m}],"top",R,t);q.children[0].style.marginLeft=-d+"em"}else if(!a){E=m.depth+f;q=n.makeVList([{type:"elem",elem:m},{type:"kern",size:k},{type:"elem",elem:w},{type:"kern",size:o.metrics.bigOpSpacing5}],"bottom",E,t);q.children[1].style.marginLeft=d+"em"}else if(!r&&!a){return m}else{E=o.metrics.bigOpSpacing5+S.height+S.depth+M+m.depth+f;
-q=n.makeVList([{type:"kern",size:o.metrics.bigOpSpacing5},{type:"elem",elem:S},{type:"kern",size:M},{type:"elem",elem:m},{type:"kern",size:k},{type:"elem",elem:w},{type:"kern",size:o.metrics.bigOpSpacing5}],"bottom",E,t);q.children[0].style.marginLeft=-d+"em";q.children[2].style.marginLeft=d+"em"}return p(["mop","op-limits"],[q],t)}else{if(e.value.symbol){m.style.top=f+"em"}return m}};w.mod=function(e,t){var r=[];if(e.value.modType==="bmod"){if(!t.style.isTight()){r.push(p(["mspace","negativemediumspace"],[],t))}r.push(p(["mspace","thickspace"],[],t))}else if(t.style.size===i.DISPLAY.size){r.push(p(["mspace","quad"],[],t))}else if(e.value.modType==="mod"){r.push(p(["mspace","twelvemuspace"],[],t))}else{r.push(p(["mspace","eightmuspace"],[],t))}if(e.value.modType==="pod"||e.value.modType==="pmod"){r.push(n.mathsym("(",e.mode))}if(e.value.modType!=="pod"){var a=[n.mathsym("m",e.mode),n.mathsym("o",e.mode),n.mathsym("d",e.mode)];if(e.value.modType==="bmod"){r.push(p(["mbin"],a,t));r.push(p(["mspace","thickspace"],[],t));if(!t.style.isTight()){r.push(p(["mspace","negativemediumspace"],[],t))}}else{Array.prototype.push.apply(r,a);r.push(p(["mspace","sixmuspace"],[],t))}}if(e.value.value){Array.prototype.push.apply(r,v(e.value.value,t,false))}if(e.value.modType==="pod"||e.value.modType==="pmod"){r.push(n.mathsym(")",e.mode))}return n.makeFragment(r)};w.katex=function(e,t){var r=p(["k"],[n.mathsym("K",e.mode)],t);var a=p(["a"],[n.mathsym("A",e.mode)],t);a.height=(a.height+.2)*.75;a.depth=(a.height-.2)*.75;var i=p(["t"],[n.mathsym("T",e.mode)],t);var s=p(["e"],[n.mathsym("E",e.mode)],t);s.height=s.height-.2155;s.depth=s.depth+.2155;var l=p(["x"],[n.mathsym("X",e.mode)],t);return p(["mord","katex-logo"],[r,a,i,s,l],t)};w.overline=function(e,t){var r=t.style;var a=z(e.value.body,t.withStyle(r.cramp()));var s=o.metrics.defaultRuleThickness/r.sizeMultiplier;var l=p([r.reset(),i.TEXT.cls(),"overline-line"]);l.height=s;l.maxFontSize=1;var u=n.makeVList([{type:"elem",elem:a},{type:"kern",size:3*s},{type:"elem",elem:l},{type:"kern",size:s}],"firstBaseline",null,t);return p(["mord","overline"],[u],t)};w.underline=function(e,t){var r=t.style;var a=z(e.value.body,t);var s=o.metrics.defaultRuleThickness/r.sizeMultiplier;var l=p([r.reset(),i.TEXT.cls(),"underline-line"]);l.height=s;l.maxFontSize=1;var u=n.makeVList([{type:"kern",size:s},{type:"elem",elem:l},{type:"kern",size:3*s},{type:"elem",elem:a}],"top",a.height,t);return p(["mord","underline"],[u],t)};w.sqrt=function(e,t){var r=t.style;var a=z(e.value.body,t.withStyle(r.cramp()));var l=o.metrics.defaultRuleThickness/r.sizeMultiplier;var u=p([r.reset(),i.TEXT.cls(),"sqrt-line"],[],t);u.height=l;u.maxFontSize=1;var h=l;if(r.id<i.TEXT.id){h=r.metrics.xHeight}var c=l+h/4;var m=(a.height+a.depth)*r.sizeMultiplier;var f=m+c+l;var v=p(["sqrt-sign"],[s.customSizedDelim("\\surd",f,false,t,e.mode)],t);var d=v.height+v.depth-l;if(d>a.height+a.depth+c){c=(c+d-a.height-a.depth)/2}var g=-(a.height+c+l)+v.height;v.style.top=g+"em";v.height-=g;v.depth+=g;var y;if(a.height===0&&a.depth===0){y=p()}else{y=n.makeVList([{type:"elem",elem:a},{type:"kern",size:c},{type:"elem",elem:u},{type:"kern",size:l}],"firstBaseline",null,t)}if(!e.value.index){return p(["mord","sqrt"],[v,y],t)}else{var x=t.withStyle(i.SCRIPTSCRIPT);var b=z(e.value.index,x);var w=p([r.reset(),i.SCRIPTSCRIPT.cls()],[b],x);var k=Math.max(v.height,y.height);var S=Math.max(v.depth,y.depth);var M=.6*(k-S);var T=n.makeVList([{type:"elem",elem:w}],"shift",-M,t);var A=p(["root"],[T]);return p(["mord","sqrt"],[A,v,y],t)}};w.sizing=function(e,t){var r=v(e.value.value,t.withSize(e.value.size),false);var a=t.style;var i=n.sizingMultiplier[e.value.size];i=i*a.sizeMultiplier;for(var s=0;s<r.length;s++){var l=u.indexOf(r[s].classes,"sizing");if(l<0){r[s].classes.push("sizing","reset-"+t.size,e.value.size,a.cls());r[s].maxFontSize=i}else if(r[s].classes[l+1]==="reset-"+e.value.size){r[s].classes[l+1]="reset-"+t.size}}return n.makeFragment(r)};w.styling=function(e,t){var r={display:i.DISPLAY,text:i.TEXT,script:i.SCRIPT,scriptscript:i.SCRIPTSCRIPT};var a=r[e.value.style];var s=t.withStyle(a);var l=v(e.value.value,s,false);for(var o=0;o<l.length;o++){var p=u.indexOf(l[o].classes,a.reset());if(p<0){l[o].classes.push(t.style.reset(),a.cls())}else{l[o].classes[p]=t.style.reset()}}return new n.makeFragment(l)};w.font=function(e,t){var r=e.value.font;return z(e.value.body,t.withFont(r))};w.delimsizing=function(e,t){var r=e.value.value;if(r==="."){return p([e.value.mclass])}return s.sizedDelim(r,e.value.size,t,e.mode,[e.value.mclass])};w.leftright=function(e,t){var r=v(e.value.body,t.reset(),true);var a=0;var i=0;var n=false;for(var l=0;l<r.length;l++){if(r[l].isMiddle){n=true}else{a=Math.max(r[l].height,a);i=Math.max(r[l].depth,i)}}var o=t.style;a*=o.sizeMultiplier;i*=o.sizeMultiplier;var u;if(e.value.left==="."){u=b(t,["mopen"])}else{u=s.leftRightDelim(e.value.left,a,i,t,e.mode,["mopen"])}r.unshift(u);if(n){for(l=1;l<r.length;l++){if(r[l].isMiddle){r[l]=s.leftRightDelim(r[l].isMiddle.value,a,i,r[l].isMiddle.options,e.mode,[])}}}var h;if(e.value.right==="."){h=b(t,["mclose"])}else{h=s.leftRightDelim(e.value.right,a,i,t,e.mode,["mclose"])}r.push(h);return p(["minner",o.cls()],r,t)};w.middle=function(e,t){var r;if(e.value.value==="."){r=b(t,[])}else{r=s.sizedDelim(e.value.value,1,t,e.mode,[]);r.isMiddle={value:e.value.value,options:t}}return r};w.rule=function(e,t){var r=p(["mord","rule"],[],t);var a=t.style;var i=0;if(e.value.shift){i=k(e.value.shift,a)}var n=k(e.value.width,a);var s=k(e.value.height,a);i/=a.sizeMultiplier;n/=a.sizeMultiplier;s/=a.sizeMultiplier;r.style.borderRightWidth=n+"em";r.style.borderTopWidth=s+"em";r.style.bottom=i+"em";r.width=n;r.height=s+i;r.depth=-i;return r};w.kern=function(e,t){var r=p(["mord","rule"],[],t);var a=t.style;var i=0;if(e.value.dimension){i=k(e.value.dimension,a)}i/=a.sizeMultiplier;r.style.marginLeft=i+"em";return r};w.accent=function(e,t){var r=e.value.base;var a=t.style;var i;if(e.type==="supsub"){var s=e;e=s.value.base;r=e.value.base;s.value.base=r;i=z(s,t.reset())}var l=z(r,t.withStyle(a.cramp()));var o;if(x(r)){var u=y(r);var h=z(u,t.withStyle(a.cramp()));o=h.skew}else{o=0}var c=Math.min(l.height,a.metrics.xHeight);var m=n.makeSymbol(e.value.accent,"Main-Regular","math",t);m.italic=0;var f=e.value.accent==="\\vec"?"accent-vec":null;var v=p(["accent-body",f],[p([],[m])]);v=n.makeVList([{type:"elem",elem:l},{type:"kern",size:-c},{type:"elem",elem:v}],"firstBaseline",null,t);v.children[1].style.marginLeft=2*o+"em";var d=p(["mord","accent"],[v],t);if(i){i.children[0]=d;i.height=Math.max(d.height,i.height);i.classes[0]="mord";return i}else{return d}};w.phantom=function(e,t){var r=v(e.value.value,t.withPhantom(),false);return new n.makeFragment(r)};w.mclass=function(e,t){var r=v(e.value.value,t,true);return p([e.value.mclass],r,t)};var z=function(e,t){if(!e){return p()}if(w[e.type]){var r=w[e.type](e,t);var i;if(t.style!==t.parentStyle){i=t.style.sizeMultiplier/t.parentStyle.sizeMultiplier;r.height*=i;r.depth*=i}if(t.size!==t.parentSize){i=n.sizingMultiplier[t.size]/n.sizingMultiplier[t.parentSize];r.height*=i;r.depth*=i}return r}else{throw new a("Got group of unknown type: '"+e.type+"'")}};var S=function(e,t){e=JSON.parse(JSON.stringify(e));var r=v(e,t,true);var a=p(["base",t.style.cls()],r,t);var i=p(["strut"]);var n=p(["strut","bottom"]);i.style.height=a.height+"em";n.style.height=a.height+a.depth+"em";n.style.verticalAlign=-a.depth+"em";var s=p(["katex-html"],[i,n,a]);s.setAttribute("aria-hidden","true");return s};t.exports=S},{"./ParseError":6,"./Style":9,"./buildCommon":10,"./delimiter":14,"./domTree":15,"./fontMetrics":17,"./utils":25}],12:[function(e,t,r){var a=e("./buildCommon");var i=e("./fontMetrics");var n=e("./mathMLTree");var s=e("./ParseError");var l=e("./symbols");var o=e("./utils");var u=a.makeSpan;var p=a.fontMap;var h=function(e,t){if(l[t][e]&&l[t][e].replace){e=l[t][e].replace}return new n.TextNode(e)};var c=function(e,t){var r=t.font;if(!r){return null}var a=e.mode;if(r==="mathit"){return"italic"}var n=e.value;if(o.contains(["\\imath","\\jmath"],n)){return null}if(l[a][n]&&l[a][n].replace){n=l[a][n].replace}var s=p[r].fontName;if(i.getCharacterMetrics(n,s)){return p[t.font].variant}return null};var m={};m.mathord=function(e,t){var r=new n.MathNode("mi",[h(e.value,e.mode)]);var a=c(e,t);if(a){r.setAttribute("mathvariant",a)}return r};m.textord=function(e,t){var r=h(e.value,e.mode);var a=c(e,t)||"normal";var i;if(/[0-9]/.test(e.value)){i=new n.MathNode("mn",[r]);if(t.font){i.setAttribute("mathvariant",a)}}else{i=new n.MathNode("mi",[r]);i.setAttribute("mathvariant",a)}return i};m.bin=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};m.rel=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};m.open=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};m.close=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};m.inner=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);return t};m.punct=function(e){var t=new n.MathNode("mo",[h(e.value,e.mode)]);t.setAttribute("separator","true");return t};m.ordgroup=function(e,t){var r=f(e.value,t);var a=new n.MathNode("mrow",r);return a};m.text=function(e,t){var r=f(e.value.body,t);var a=new n.MathNode("mtext",r);return a};m.color=function(e,t){var r=f(e.value.value,t);var a=new n.MathNode("mstyle",r);a.setAttribute("mathcolor",e.value.color);return a};m.supsub=function(e,t){var r=[v(e.value.base,t)];if(e.value.sub){r.push(v(e.value.sub,t))}if(e.value.sup){r.push(v(e.value.sup,t))}var a;if(!e.value.sub){a="msup"}else if(!e.value.sup){a="msub"}else{a="msubsup"}var i=new n.MathNode(a,r);return i};m.genfrac=function(e,t){var r=new n.MathNode("mfrac",[v(e.value.numer,t),v(e.value.denom,t)]);if(!e.value.hasBarLine){r.setAttribute("linethickness","0px")}if(e.value.leftDelim!=null||e.value.rightDelim!=null){var a=[];if(e.value.leftDelim!=null){var i=new n.MathNode("mo",[new n.TextNode(e.value.leftDelim)]);i.setAttribute("fence","true");a.push(i)}a.push(r);if(e.value.rightDelim!=null){var s=new n.MathNode("mo",[new n.TextNode(e.value.rightDelim)]);s.setAttribute("fence","true");a.push(s)}var l=new n.MathNode("mrow",a);return l}return r};m.array=function(e,t){return new n.MathNode("mtable",e.value.body.map(function(e){return new n.MathNode("mtr",e.map(function(e){return new n.MathNode("mtd",[v(e,t)])}))}))};m.sqrt=function(e,t){var r;if(e.value.index){r=new n.MathNode("mroot",[v(e.value.body,t),v(e.value.index,t)])}else{r=new n.MathNode("msqrt",[v(e.value.body,t)])}return r};m.leftright=function(e,t){var r=f(e.value.body,t);if(e.value.left!=="."){var a=new n.MathNode("mo",[h(e.value.left,e.mode)]);a.setAttribute("fence","true");r.unshift(a)}if(e.value.right!=="."){var i=new n.MathNode("mo",[h(e.value.right,e.mode)]);i.setAttribute("fence","true");r.push(i)}var s=new n.MathNode("mrow",r);return s};m.middle=function(e,t){var r=new n.MathNode("mo",[h(e.value.middle,e.mode)]);r.setAttribute("fence","true");return r};m.accent=function(e,t){var r=new n.MathNode("mo",[h(e.value.accent,e.mode)]);var a=new n.MathNode("mover",[v(e.value.base,t),r]);a.setAttribute("accent","true");return a};m.spacing=function(e){var t;if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){t=new n.MathNode("mtext",[new n.TextNode("\xa0")])}else{t=new n.MathNode("mspace");t.setAttribute("width",a.spacingFunctions[e.value].size)}return t};m.op=function(e,t){var r;if(e.value.symbol){r=new n.MathNode("mo",[h(e.value.body,e.mode)])}else if(e.value.value){r=new n.MathNode("mo",f(e.value.value,t))}else{r=new n.MathNode("mi",[new n.TextNode(e.value.body.slice(1))])}return r};m.mod=function(e,t){var r=[];if(e.value.modType==="pod"||e.value.modType==="pmod"){r.push(new n.MathNode("mo",[h("(",e.mode)]))}if(e.value.modType!=="pod"){r.push(new n.MathNode("mo",[h("mod",e.mode)]))}if(e.value.value){var a=new n.MathNode("mspace");a.setAttribute("width","0.333333em");r.push(a);r=r.concat(f(e.value.value,t))}if(e.value.modType==="pod"||e.value.modType==="pmod"){r.push(new n.MathNode("mo",[h(")",e.mode)]))}return new n.MathNode("mo",r)};m.katex=function(e){var t=new n.MathNode("mtext",[new n.TextNode("KaTeX")]);return t};m.font=function(e,t){var r=e.value.font;return v(e.value.body,t.withFont(r))};m.delimsizing=function(e){var t=[];if(e.value.value!=="."){t.push(h(e.value.value,e.mode))}var r=new n.MathNode("mo",t);if(e.value.mclass==="mopen"||e.value.mclass==="mclose"){r.setAttribute("fence","true")}else{r.setAttribute("fence","false")}return r};m.styling=function(e,t){var r=f(e.value.value,t);var a=new n.MathNode("mstyle",r);var i={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]};var s=i[e.value.style];a.setAttribute("scriptlevel",s[0]);a.setAttribute("displaystyle",s[1]);return a};m.sizing=function(e,t){var r=f(e.value.value,t);var i=new n.MathNode("mstyle",r);i.setAttribute("mathsize",a.sizingMultiplier[e.value.size]+"em");return i};m.overline=function(e,t){var r=new n.MathNode("mo",[new n.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new n.MathNode("mover",[v(e.value.body,t),r]);a.setAttribute("accent","true");return a};m.underline=function(e,t){var r=new n.MathNode("mo",[new n.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new n.MathNode("munder",[v(e.value.body,t),r]);a.setAttribute("accentunder","true");return a};m.rule=function(e){var t=new n.MathNode("mrow");return t};m.kern=function(e){var t=new n.MathNode("mrow");return t};m.llap=function(e,t){var r=new n.MathNode("mpadded",[v(e.value.body,t)]);r.setAttribute("lspace","-1width");r.setAttribute("width","0px");return r};m.rlap=function(e,t){var r=new n.MathNode("mpadded",[v(e.value.body,t)]);r.setAttribute("width","0px");return r};m.phantom=function(e,t){var r=f(e.value.value,t);return new n.MathNode("mphantom",r)};m.mclass=function(e,t){var r=f(e.value.value,t);return new n.MathNode("mstyle",r)};var f=function(e,t){var r=[];for(var a=0;a<e.length;a++){var i=e[a];r.push(v(i,t))}return r};var v=function(e,t){if(!e){return new n.MathNode("mrow")}if(m[e.type]){return m[e.type](e,t)}else{throw new s("Got group of unknown type: '"+e.type+"'")}};var d=function(e,t,r){var a=f(e,r);var i=new n.MathNode("mrow",a);var s=new n.MathNode("annotation",[new n.TextNode(t)]);s.setAttribute("encoding","application/x-tex");var l=new n.MathNode("semantics",[i,s]);var o=new n.MathNode("math",[l]);return u(["katex-mathml"],[o])};t.exports=d},{"./ParseError":6,"./buildCommon":10,"./fontMetrics":17,"./mathMLTree":20,"./symbols":23,"./utils":25}],13:[function(e,t,r){var a=e("./buildHTML");var i=e("./buildMathML");var n=e("./buildCommon");var s=e("./Options");var l=e("./Settings");var o=e("./Style");var u=n.makeSpan;var p=function(e,t,r){r=r||new l({});var n=o.TEXT;if(r.displayMode){n=o.DISPLAY}var p=new s({style:n,size:"size5"});var h=i(e,t,p);var c=a(e,p);var m=u(["katex"],[h,c]);if(r.displayMode){return u(["katex-display"],[m])}else{return m}};t.exports=p},{"./Options":5,"./Settings":8,"./Style":9,"./buildCommon":10,"./buildHTML":11,"./buildMathML":12}],14:[function(e,t,r){var a=e("./ParseError");var i=e("./Style");var n=e("./buildCommon");var s=e("./fontMetrics");var l=e("./symbols");var o=e("./utils");var u=n.makeSpan;var p=function(e,t){if(l.math[e]&&l.math[e].replace){return s.getCharacterMetrics(l.math[e].replace,t)}else{return s.getCharacterMetrics(e,t)}};var h=function(e,t,r,a){return n.makeSymbol(e,"Size"+t+"-Regular",r,a)};var c=function(e,t,r,a){a=a||[];var i=u(a.concat(["style-wrap",r.style.reset(),t.cls()]),[e],r);var n=t.sizeMultiplier/r.style.sizeMultiplier;i.height*=n;i.depth*=n;i.maxFontSize=t.sizeMultiplier;return i};var m=function(e,t,r,a,i,s){var l=n.makeSymbol(e,"Main-Regular",i,a);var o=c(l,t,a,s);if(r){var u=(1-a.style.sizeMultiplier/t.sizeMultiplier)*a.style.metrics.axisHeight;o.style.top=u+"em";o.height-=u;o.depth+=u}return o};var f=function(e,t,r,a,n,s){var l=h(e,t,n,a);var o=c(u(["delimsizing","size"+t],[l],a),i.TEXT,a,s);if(r){var p=(1-a.style.sizeMultiplier)*a.style.metrics.axisHeight;o.style.top=p+"em";o.height-=p;o.depth+=p}return o};var v=function(e,t,r){var a;if(t==="Size1-Regular"){a="delim-size1"}else if(t==="Size4-Regular"){a="delim-size4"}var i=u(["delimsizinginner",a],[u([],[n.makeSymbol(e,t,r)])]);return{type:"elem",elem:i}};var d=function(e,t,r,a,s,l){var o;var h;var m;var f;o=m=f=e;h=null;var d="Size1-Regular";if(e==="\\uparrow"){m=f="\u23d0"}else if(e==="\\Uparrow"){m=f="\u2016"}else if(e==="\\downarrow"){o=m="\u23d0"}else if(e==="\\Downarrow"){o=m="\u2016"}else if(e==="\\updownarrow"){o="\\uparrow";m="\u23d0";f="\\downarrow"}else if(e==="\\Updownarrow"){o="\\Uparrow";m="\u2016";f="\\Downarrow"}else if(e==="["||e==="\\lbrack"){o="\u23a1";m="\u23a2";f="\u23a3";d="Size4-Regular"}else if(e==="]"||e==="\\rbrack"){o="\u23a4";m="\u23a5";f="\u23a6";d="Size4-Regular"}else if(e==="\\lfloor"){m=o="\u23a2";f="\u23a3";d="Size4-Regular"}else if(e==="\\lceil"){o="\u23a1";m=f="\u23a2";d="Size4-Regular"}else if(e==="\\rfloor"){m=o="\u23a5";f="\u23a6";d="Size4-Regular"}else if(e==="\\rceil"){o="\u23a4";m=f="\u23a5";d="Size4-Regular"}else if(e==="("){o="\u239b";m="\u239c";f="\u239d";d="Size4-Regular"}else if(e===")"){o="\u239e";m="\u239f";f="\u23a0";d="Size4-Regular"}else if(e==="\\{"||e==="\\lbrace"){o="\u23a7";h="\u23a8";f="\u23a9";m="\u23aa";d="Size4-Regular"}else if(e==="\\}"||e==="\\rbrace"){o="\u23ab";h="\u23ac";f="\u23ad";m="\u23aa";d="Size4-Regular"}else if(e==="\\lgroup"){o="\u23a7";f="\u23a9";m="\u23aa";d="Size4-Regular"}else if(e==="\\rgroup"){o="\u23ab";f="\u23ad";m="\u23aa";d="Size4-Regular"}else if(e==="\\lmoustache"){o="\u23a7";f="\u23ad";m="\u23aa";d="Size4-Regular"}else if(e==="\\rmoustache"){o="\u23ab";f="\u23a9";m="\u23aa";d="Size4-Regular"}else if(e==="\\surd"){o="\ue001";f="\u23b7";m="\ue000";d="Size4-Regular"}var g=p(o,d);var y=g.height+g.depth;var x=p(m,d);var b=x.height+x.depth;var w=p(f,d);var k=w.height+w.depth;var z=0;var S=1;if(h!==null){var M=p(h,d);z=M.height+M.depth;S=2}var T=y+k+z;var A=Math.ceil((t-T)/(S*b));var N=T+A*S*b;var q=a.style.metrics.axisHeight;if(r){q*=a.style.sizeMultiplier}var R=N/2-q;var E=[];E.push(v(f,d,s));var C;if(h===null){for(C=0;C<A;C++){E.push(v(m,d,s))}}else{for(C=0;C<A;C++){E.push(v(m,d,s))}E.push(v(h,d,s));for(C=0;C<A;C++){E.push(v(m,d,s))}}E.push(v(o,d,s));var D=n.makeVList(E,"bottom",R,a);return c(u(["delimsizing","mult"],[D],a),i.TEXT,a,l)};var g=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","\\surd"];var y=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache"];var x=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"];var b=[0,1.2,1.8,2.4,3];var w=function(e,t,r,i,n){if(e==="<"||e==="\\lt"){e="\\langle"}else if(e===">"||e==="\\gt"){e="\\rangle"}if(o.contains(g,e)||o.contains(x,e)){return f(e,t,false,r,i,n)}else if(o.contains(y,e)){return d(e,b[t],false,r,i,n)}else{throw new a("Illegal delimiter: '"+e+"'")}};var k=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}];var z=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"stack"}];var S=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}];var M=function(e){if(e.type==="small"){return"Main-Regular"}else if(e.type==="large"){return"Size"+e.size+"-Regular"}else if(e.type==="stack"){return"Size4-Regular"}};var T=function(e,t,r,a){var i=Math.min(2,3-a.style.size);for(var n=i;n<r.length;n++){if(r[n].type==="stack"){break}var s=p(e,M(r[n]));var l=s.height+s.depth;if(r[n].type==="small"){l*=r[n].style.sizeMultiplier}if(l>t){return r[n]}}return r[r.length-1]};var A=function(e,t,r,a,i,n){if(e==="<"||e==="\\lt"){e="\\langle"}else if(e===">"||e==="\\gt"){e="\\rangle"}var s;if(o.contains(x,e)){s=k}else if(o.contains(g,e)){s=S}else{s=z}var l=T(e,t,s,a);if(l.type==="small"){return m(e,l.style,r,a,i,n)}else if(l.type==="large"){return f(e,l.size,r,a,i,n)}else if(l.type==="stack"){return d(e,t,r,a,i,n)}};var N=function(e,t,r,a,i,n){var l=a.style.metrics.axisHeight*a.style.sizeMultiplier;var o=901;var u=5/s.metrics.ptPerEm;var p=Math.max(t-l,r+l);var h=Math.max(p/500*o,2*p-u);return A(e,h,true,a,i,n)};t.exports={sizedDelim:w,customSizedDelim:A,leftRightDelim:N}},{"./ParseError":6,"./Style":9,"./buildCommon":10,"./fontMetrics":17,"./symbols":23,"./utils":25}],15:[function(e,t,r){var a=e("./unicodeRegexes");var i=e("./utils");var n=function(e){e=e.slice();for(var t=e.length-1;t>=0;t--){if(!e[t]){e.splice(t,1)}}return e.join(" ")};function s(e,t,r){this.classes=e||[];this.children=t||[];this.height=0;this.depth=0;this.maxFontSize=0;this.style={};this.attributes={};if(r){if(r.style.isTight()){this.classes.push("mtight")}if(r.getColor()){this.style.color=r.getColor()}}}s.prototype.setAttribute=function(e,t){this.attributes[e]=t};s.prototype.tryCombine=function(e){return false};s.prototype.toNode=function(){var e=document.createElement("span");e.className=n(this.classes);for(var t in this.style){if(Object.prototype.hasOwnProperty.call(this.style,t)){e.style[t]=this.style[t]}}for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){e.setAttribute(r,this.attributes[r])}}for(var a=0;a<this.children.length;a++){e.appendChild(this.children[a].toNode())}return e};s.prototype.toMarkup=function(){var e="<span";if(this.classes.length){e+=' class="';e+=i.escape(n(this.classes));e+='"'}var t="";for(var r in this.style){if(this.style.hasOwnProperty(r)){t+=i.hyphenate(r)+":"+this.style[r]+";"}}if(t){e+=' style="'+i.escape(t)+'"'}for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){e+=" "+a+'="';e+=i.escape(this.attributes[a]);e+='"'}}e+=">";for(var s=0;s<this.children.length;s++){e+=this.children[s].toMarkup()}e+="</span>";return e};function l(e){this.children=e||[];this.height=0;this.depth=0;this.maxFontSize=0}l.prototype.toNode=function(){var e=document.createDocumentFragment();for(var t=0;t<this.children.length;t++){e.appendChild(this.children[t].toNode())}return e};l.prototype.toMarkup=function(){var e="";for(var t=0;t<this.children.length;t++){e+=this.children[t].toMarkup()}return e};var o={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"};function u(e,t,r,i,n,s,l){this.value=e||"";this.height=t||0;this.depth=r||0;this.italic=i||0;this.skew=n||0;this.classes=s||[];this.style=l||{};this.maxFontSize=0;if(a.cjkRegex.test(e)){if(a.hangulRegex.test(e)){this.classes.push("hangul_fallback")}else{this.classes.push("cjk_fallback")}}if(/[\xee\xef\xed\xec]/.test(this.value)){this.value=o[this.value]}}u.prototype.tryCombine=function(e){if(!e||!(e instanceof u)||this.italic>0||n(this.classes)!==n(e.classes)||this.skew!==e.skew||this.maxFontSize!==e.maxFontSize){return false}for(var t in this.style){if(this.style.hasOwnProperty(t)&&this.style[t]!==e.style[t]){return false}}for(t in e.style){if(e.style.hasOwnProperty(t)&&this.style[t]!==e.style[t]){return false}}this.value+=e.value;this.height=Math.max(this.height,e.height);this.depth=Math.max(this.depth,e.depth);this.italic=e.italic;return true};u.prototype.toNode=function(){var e=document.createTextNode(this.value);var t=null;if(this.italic>0){t=document.createElement("span");t.style.marginRight=this.italic+"em"}if(this.classes.length>0){t=t||document.createElement("span");t.className=n(this.classes)}for(var r in this.style){if(this.style.hasOwnProperty(r)){t=t||document.createElement("span");t.style[r]=this.style[r]}}if(t){t.appendChild(e);return t}else{return e}};u.prototype.toMarkup=function(){var e=false;var t="<span";if(this.classes.length){e=true;t+=' class="';t+=i.escape(n(this.classes));t+='"'}var r="";if(this.italic>0){r+="margin-right:"+this.italic+"em;"}for(var a in this.style){if(this.style.hasOwnProperty(a)){r+=i.hyphenate(a)+":"+this.style[a]+";"}}if(r){e=true;t+=' style="'+i.escape(r)+'"'}var s=i.escape(this.value);if(e){t+=">";t+=s;t+="</span>";return t}else{return s}};t.exports={span:s,documentFragment:l,symbolNode:u}},{"./unicodeRegexes":24,"./utils":25}],16:[function(e,t,r){var a=e("./parseData");var i=e("./ParseError");var n=e("./Style");var s=a.ParseNode;function l(e,t){var r=[];var a=[r];var n=[];while(true){var l=e.parseExpression(false,null);r.push(new s("ordgroup",l,e.mode));var o=e.nextToken.text;if(o==="&"){e.consume()}else if(o==="\\end"){break}else if(o==="\\\\"||o==="\\cr"){var u=e.parseFunction();n.push(u.value.size);r=[];a.push(r)}else{throw new i("Expected & or \\\\ or \\end",e.nextToken)}}t.body=a;t.rowGaps=n;return new s(t.type,t,e.mode)}function o(e,r,a){if(typeof e==="string"){e=[e]}if(typeof r==="number"){r={numArgs:r}}var i={numArgs:r.numArgs||0,argTypes:r.argTypes,greediness:1,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,handler:a};for(var n=0;n<e.length;++n){t.exports[e[n]]=i}}o("array",{numArgs:1},function(e,t){var r=t[0];r=r.value.map?r.value:[r];var a=r.map(function(e){var t=e.value;if("lcr".indexOf(t)!==-1){return{type:"align",align:t}}else if(t==="|"){return{type:"separator",separator:"|"}}throw new i("Unknown column alignment: "+e.value,e)});var n={type:"array",cols:a,hskipBeforeAndAfter:true};n=l(e.parser,n);return n});o(["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],{},function(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName];var r={type:"array",hskipBeforeAndAfter:false};r=l(e.parser,r);if(t){r=new s("leftright",{body:[r],left:t[0],right:t[1]},e.mode)}return r});o("cases",{},function(e){var t={type:"array",arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:n.TEXT.metrics.quad},{type:"align",align:"l",pregap:0,postgap:0}]};t=l(e.parser,t);t=new s("leftright",{body:[t],left:"\\{",right:"."},e.mode);return t});o("aligned",{},function(e){var t={type:"array",cols:[]};t=l(e.parser,t);var r=new s("ordgroup",[],e.mode);var a=0;t.value.body.forEach(function(e){var t;for(t=1;t<e.length;t+=2){e[t].value.unshift(r)}if(a<e.length){a=e.length}});for(var i=0;i<a;++i){var n="r";var o=0;if(i%2===1){n="l"}else if(i>0){o=2}t.value.cols[i]={type:"align",align:n,pregap:o,postgap:0}}return t})},{"./ParseError":6,"./Style":9,"./parseData":21}],17:[function(e,t,r){var a=e("./Style");var i=e("./unicodeRegexes").cjkRegex;var n={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25]};var s=0;var l=0;var o=0;var u=0;var p=.431;var h=1;var c=0;var m=.04;var f=.111;var v=.166;var d=.2;var g=.6;var y=.1;var x=10;var b=2/x;var w={defaultRuleThickness:m,bigOpSpacing1:f,bigOpSpacing2:v,bigOpSpacing3:d,bigOpSpacing4:g,bigOpSpacing5:y,ptPerEm:x,doubleRuleSep:b};var k=e("./fontMetricsData");var z={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xc6":"A","\xc7":"C","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xd0":"D","\xd1":"N","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xdd":"Y","\xde":"o","\xdf":"B","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xe6":"a","\xe7":"c","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xf0":"d","\xf1":"n","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xfd":"y","\xfe":"o","\xff":"y","\u0410":"A","\u0411":"B","\u0412":"B","\u0413":"F","\u0414":"A","\u0415":"E","\u0416":"K","\u0417":"3","\u0418":"N","\u0419":"N","\u041a":"K","\u041b":"N","\u041c":"M","\u041d":"H","\u041e":"O","\u041f":"N","\u0420":"P","\u0421":"C","\u0422":"T","\u0423":"y","\u0424":"O","\u0425":"X","\u0426":"U","\u0427":"h","\u0428":"W","\u0429":"W","\u042a":"B","\u042b":"X","\u042c":"B","\u042d":"3","\u042e":"X","\u042f":"R","\u0430":"a","\u0431":"b","\u0432":"a","\u0433":"r","\u0434":"y","\u0435":"e","\u0436":"m","\u0437":"e","\u0438":"n","\u0439":"n","\u043a":"n","\u043b":"n","\u043c":"m","\u043d":"n","\u043e":"o","\u043f":"n","\u0440":"p","\u0441":"c","\u0442":"o","\u0443":"y","\u0444":"b","\u0445":"x","\u0446":"n","\u0447":"n","\u0448":"w","\u0449":"w","\u044a":"a","\u044b":"m","\u044c":"a","\u044d":"e","\u044e":"m","\u044f":"r"};var S=function(e,t){var r=e.charCodeAt(0);if(e[0]in z){r=z[e[0]].charCodeAt(0)}else if(i.test(e[0])){r="M".charCodeAt(0)}var a=k[t][r];if(a){return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}};t.exports={metrics:w,sigmas:n,getCharacterMetrics:S}},{"./Style":9,"./fontMetricsData":18,"./unicodeRegexes":24}],18:[function(e,t,r){t.exports={"AMS-Regular":{65:[0,.68889,0,0],66:[0,.68889,0,0],67:[0,.68889,0,0],68:[0,.68889,0,0],69:[0,.68889,0,0],70:[0,.68889,0,0],71:[0,.68889,0,0],72:[0,.68889,0,0],73:[0,.68889,0,0],74:[.16667,.68889,0,0],75:[0,.68889,0,0],76:[0,.68889,0,0],77:[0,.68889,0,0],78:[0,.68889,0,0],79:[.16667,.68889,0,0],80:[0,.68889,0,0],81:[.16667,.68889,0,0],82:[0,.68889,0,0],83:[0,.68889,0,0],84:[0,.68889,0,0],85:[0,.68889,0,0],86:[0,.68889,0,0],87:[0,.68889,0,0],88:[0,.68889,0,0],89:[0,.68889,0,0],90:[0,.68889,0,0],107:[0,.68889,0,0],165:[0,.675,.025,0],174:[.15559,.69224,0,0],240:[0,.68889,0,0],295:[0,.68889,0,0],710:[0,.825,0,0],732:[0,.9,0,0],770:[0,.825,0,0],771:[0,.9,0,0],989:[.08167,.58167,0,0],1008:[0,.43056,.04028,0],8245:[0,.54986,0,0],8463:[0,.68889,0,0],8487:[0,.68889,0,0],8498:[0,.68889,0,0],8502:[0,.68889,0,0],8503:[0,.68889,0,0],8504:[0,.68889,0,0],8513:[0,.68889,0,0],8592:[-.03598,.46402,0,0],8594:[-.03598,.46402,0,0],8602:[-.13313,.36687,0,0],8603:[-.13313,.36687,0,0],8606:[.01354,.52239,0,0],8608:[.01354,.52239,0,0],8610:[.01354,.52239,0,0],8611:[.01354,.52239,0,0],8619:[0,.54986,0,0],8620:[0,.54986,0,0],8621:[-.13313,.37788,0,0],8622:[-.13313,.36687,0,0],8624:[0,.69224,0,0],8625:[0,.69224,0,0],8630:[0,.43056,0,0],8631:[0,.43056,0,0],8634:[.08198,.58198,0,0],8635:[.08198,.58198,0,0],8638:[.19444,.69224,0,0],8639:[.19444,.69224,0,0],8642:[.19444,.69224,0,0],8643:[.19444,.69224,0,0],8644:[.1808,.675,0,0],8646:[.1808,.675,0,0],8647:[.1808,.675,0,0],8648:[.19444,.69224,0,0],8649:[.1808,.675,0,0],8650:[.19444,.69224,0,0],8651:[.01354,.52239,0,0],8652:[.01354,.52239,0,0],8653:[-.13313,.36687,0,0],8654:[-.13313,.36687,0,0],8655:[-.13313,.36687,0,0],8666:[.13667,.63667,0,0],8667:[.13667,.63667,0,0],8669:[-.13313,.37788,0,0],8672:[-.064,.437,0,0],8674:[-.064,.437,0,0],8705:[0,.825,0,0],8708:[0,.68889,0,0],8709:[.08167,.58167,0,0],8717:[0,.43056,0,0],8722:[-.03598,.46402,0,0],8724:[.08198,.69224,0,0],8726:[.08167,.58167,0,0],8733:[0,.69224,0,0],8736:[0,.69224,0,0],8737:[0,.69224,0,0],8738:[.03517,.52239,0,0],8739:[.08167,.58167,0,0],8740:[.25142,.74111,0,0],8741:[.08167,.58167,0,0],8742:[.25142,.74111,0,0],8756:[0,.69224,0,0],8757:[0,.69224,0,0],8764:[-.13313,.36687,0,0],8765:[-.13313,.37788,0,0],8769:[-.13313,.36687,0,0],8770:[-.03625,.46375,0,0],8774:[.30274,.79383,0,0],8776:[-.01688,.48312,0,0],8778:[.08167,.58167,0,0],8782:[.06062,.54986,0,0],8783:[.06062,.54986,0,0],8785:[.08198,.58198,0,0],8786:[.08198,.58198,0,0],8787:[.08198,.58198,0,0],8790:[0,.69224,0,0],8791:[.22958,.72958,0,0],8796:[.08198,.91667,0,0],8806:[.25583,.75583,0,0],
-8807:[.25583,.75583,0,0],8808:[.25142,.75726,0,0],8809:[.25142,.75726,0,0],8812:[.25583,.75583,0,0],8814:[.20576,.70576,0,0],8815:[.20576,.70576,0,0],8816:[.30274,.79383,0,0],8817:[.30274,.79383,0,0],8818:[.22958,.72958,0,0],8819:[.22958,.72958,0,0],8822:[.1808,.675,0,0],8823:[.1808,.675,0,0],8828:[.13667,.63667,0,0],8829:[.13667,.63667,0,0],8830:[.22958,.72958,0,0],8831:[.22958,.72958,0,0],8832:[.20576,.70576,0,0],8833:[.20576,.70576,0,0],8840:[.30274,.79383,0,0],8841:[.30274,.79383,0,0],8842:[.13597,.63597,0,0],8843:[.13597,.63597,0,0],8847:[.03517,.54986,0,0],8848:[.03517,.54986,0,0],8858:[.08198,.58198,0,0],8859:[.08198,.58198,0,0],8861:[.08198,.58198,0,0],8862:[0,.675,0,0],8863:[0,.675,0,0],8864:[0,.675,0,0],8865:[0,.675,0,0],8872:[0,.69224,0,0],8873:[0,.69224,0,0],8874:[0,.69224,0,0],8876:[0,.68889,0,0],8877:[0,.68889,0,0],8878:[0,.68889,0,0],8879:[0,.68889,0,0],8882:[.03517,.54986,0,0],8883:[.03517,.54986,0,0],8884:[.13667,.63667,0,0],8885:[.13667,.63667,0,0],8888:[0,.54986,0,0],8890:[.19444,.43056,0,0],8891:[.19444,.69224,0,0],8892:[.19444,.69224,0,0],8901:[0,.54986,0,0],8903:[.08167,.58167,0,0],8905:[.08167,.58167,0,0],8906:[.08167,.58167,0,0],8907:[0,.69224,0,0],8908:[0,.69224,0,0],8909:[-.03598,.46402,0,0],8910:[0,.54986,0,0],8911:[0,.54986,0,0],8912:[.03517,.54986,0,0],8913:[.03517,.54986,0,0],8914:[0,.54986,0,0],8915:[0,.54986,0,0],8916:[0,.69224,0,0],8918:[.0391,.5391,0,0],8919:[.0391,.5391,0,0],8920:[.03517,.54986,0,0],8921:[.03517,.54986,0,0],8922:[.38569,.88569,0,0],8923:[.38569,.88569,0,0],8926:[.13667,.63667,0,0],8927:[.13667,.63667,0,0],8928:[.30274,.79383,0,0],8929:[.30274,.79383,0,0],8934:[.23222,.74111,0,0],8935:[.23222,.74111,0,0],8936:[.23222,.74111,0,0],8937:[.23222,.74111,0,0],8938:[.20576,.70576,0,0],8939:[.20576,.70576,0,0],8940:[.30274,.79383,0,0],8941:[.30274,.79383,0,0],8994:[.19444,.69224,0,0],8995:[.19444,.69224,0,0],9416:[.15559,.69224,0,0],9484:[0,.69224,0,0],9488:[0,.69224,0,0],9492:[0,.37788,0,0],9496:[0,.37788,0,0],9585:[.19444,.68889,0,0],9586:[.19444,.74111,0,0],9632:[0,.675,0,0],9633:[0,.675,0,0],9650:[0,.54986,0,0],9651:[0,.54986,0,0],9654:[.03517,.54986,0,0],9660:[0,.54986,0,0],9661:[0,.54986,0,0],9664:[.03517,.54986,0,0],9674:[.11111,.69224,0,0],9733:[.19444,.69224,0,0],10003:[0,.69224,0,0],10016:[0,.69224,0,0],10731:[.11111,.69224,0,0],10846:[.19444,.75583,0,0],10877:[.13667,.63667,0,0],10878:[.13667,.63667,0,0],10885:[.25583,.75583,0,0],10886:[.25583,.75583,0,0],10887:[.13597,.63597,0,0],10888:[.13597,.63597,0,0],10889:[.26167,.75726,0,0],10890:[.26167,.75726,0,0],10891:[.48256,.98256,0,0],10892:[.48256,.98256,0,0],10901:[.13667,.63667,0,0],10902:[.13667,.63667,0,0],10933:[.25142,.75726,0,0],10934:[.25142,.75726,0,0],10935:[.26167,.75726,0,0],10936:[.26167,.75726,0,0],10937:[.26167,.75726,0,0],10938:[.26167,.75726,0,0],10949:[.25583,.75583,0,0],10950:[.25583,.75583,0,0],10955:[.28481,.79383,0,0],10956:[.28481,.79383,0,0],57350:[.08167,.58167,0,0],57351:[.08167,.58167,0,0],57352:[.08167,.58167,0,0],57353:[0,.43056,.04028,0],57356:[.25142,.75726,0,0],57357:[.25142,.75726,0,0],57358:[.41951,.91951,0,0],57359:[.30274,.79383,0,0],57360:[.30274,.79383,0,0],57361:[.41951,.91951,0,0],57366:[.25142,.75726,0,0],57367:[.25142,.75726,0,0],57368:[.25142,.75726,0,0],57369:[.25142,.75726,0,0],57370:[.13597,.63597,0,0],57371:[.13597,.63597,0,0]},"Caligraphic-Regular":{48:[0,.43056,0,0],49:[0,.43056,0,0],50:[0,.43056,0,0],51:[.19444,.43056,0,0],52:[.19444,.43056,0,0],53:[.19444,.43056,0,0],54:[0,.64444,0,0],55:[.19444,.43056,0,0],56:[0,.64444,0,0],57:[.19444,.43056,0,0],65:[0,.68333,0,.19445],66:[0,.68333,.03041,.13889],67:[0,.68333,.05834,.13889],68:[0,.68333,.02778,.08334],69:[0,.68333,.08944,.11111],70:[0,.68333,.09931,.11111],71:[.09722,.68333,.0593,.11111],72:[0,.68333,.00965,.11111],73:[0,.68333,.07382,0],74:[.09722,.68333,.18472,.16667],75:[0,.68333,.01445,.05556],76:[0,.68333,0,.13889],77:[0,.68333,0,.13889],78:[0,.68333,.14736,.08334],79:[0,.68333,.02778,.11111],80:[0,.68333,.08222,.08334],81:[.09722,.68333,0,.11111],82:[0,.68333,0,.08334],83:[0,.68333,.075,.13889],84:[0,.68333,.25417,0],85:[0,.68333,.09931,.08334],86:[0,.68333,.08222,0],87:[0,.68333,.08222,.08334],88:[0,.68333,.14643,.13889],89:[.09722,.68333,.08222,.08334],90:[0,.68333,.07944,.13889]},"Fraktur-Regular":{33:[0,.69141,0,0],34:[0,.69141,0,0],38:[0,.69141,0,0],39:[0,.69141,0,0],40:[.24982,.74947,0,0],41:[.24982,.74947,0,0],42:[0,.62119,0,0],43:[.08319,.58283,0,0],44:[0,.10803,0,0],45:[.08319,.58283,0,0],46:[0,.10803,0,0],47:[.24982,.74947,0,0],48:[0,.47534,0,0],49:[0,.47534,0,0],50:[0,.47534,0,0],51:[.18906,.47534,0,0],52:[.18906,.47534,0,0],53:[.18906,.47534,0,0],54:[0,.69141,0,0],55:[.18906,.47534,0,0],56:[0,.69141,0,0],57:[.18906,.47534,0,0],58:[0,.47534,0,0],59:[.12604,.47534,0,0],61:[-.13099,.36866,0,0],63:[0,.69141,0,0],65:[0,.69141,0,0],66:[0,.69141,0,0],67:[0,.69141,0,0],68:[0,.69141,0,0],69:[0,.69141,0,0],70:[.12604,.69141,0,0],71:[0,.69141,0,0],72:[.06302,.69141,0,0],73:[0,.69141,0,0],74:[.12604,.69141,0,0],75:[0,.69141,0,0],76:[0,.69141,0,0],77:[0,.69141,0,0],78:[0,.69141,0,0],79:[0,.69141,0,0],80:[.18906,.69141,0,0],81:[.03781,.69141,0,0],82:[0,.69141,0,0],83:[0,.69141,0,0],84:[0,.69141,0,0],85:[0,.69141,0,0],86:[0,.69141,0,0],87:[0,.69141,0,0],88:[0,.69141,0,0],89:[.18906,.69141,0,0],90:[.12604,.69141,0,0],91:[.24982,.74947,0,0],93:[.24982,.74947,0,0],94:[0,.69141,0,0],97:[0,.47534,0,0],98:[0,.69141,0,0],99:[0,.47534,0,0],100:[0,.62119,0,0],101:[0,.47534,0,0],102:[.18906,.69141,0,0],103:[.18906,.47534,0,0],104:[.18906,.69141,0,0],105:[0,.69141,0,0],106:[0,.69141,0,0],107:[0,.69141,0,0],108:[0,.69141,0,0],109:[0,.47534,0,0],110:[0,.47534,0,0],111:[0,.47534,0,0],112:[.18906,.52396,0,0],113:[.18906,.47534,0,0],114:[0,.47534,0,0],115:[0,.47534,0,0],116:[0,.62119,0,0],117:[0,.47534,0,0],118:[0,.52396,0,0],119:[0,.52396,0,0],120:[.18906,.47534,0,0],121:[.18906,.47534,0,0],122:[.18906,.47534,0,0],8216:[0,.69141,0,0],8217:[0,.69141,0,0],58112:[0,.62119,0,0],58113:[0,.62119,0,0],58114:[.18906,.69141,0,0],58115:[.18906,.69141,0,0],58116:[.18906,.47534,0,0],58117:[0,.69141,0,0],58118:[0,.62119,0,0],58119:[0,.47534,0,0]},"Main-Bold":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.13333,.63333,0,0],44:[.19444,.15556,0,0],45:[0,.44444,0,0],46:[0,.15556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.44444,0,0],59:[.19444,.44444,0,0],60:[.08556,.58556,0,0],61:[-.10889,.39111,0,0],62:[.08556,.58556,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,0,0],67:[0,.68611,0,0],68:[0,.68611,0,0],69:[0,.68611,0,0],70:[0,.68611,0,0],71:[0,.68611,0,0],72:[0,.68611,0,0],73:[0,.68611,0,0],74:[0,.68611,0,0],75:[0,.68611,0,0],76:[0,.68611,0,0],77:[0,.68611,0,0],78:[0,.68611,0,0],79:[0,.68611,0,0],80:[0,.68611,0,0],81:[.19444,.68611,0,0],82:[0,.68611,0,0],83:[0,.68611,0,0],84:[0,.68611,0,0],85:[0,.68611,0,0],86:[0,.68611,.01597,0],87:[0,.68611,.01597,0],88:[0,.68611,0,0],89:[0,.68611,.02875,0],90:[0,.68611,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.13444,.03194,0],96:[0,.69444,0,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.10903,0],103:[.19444,.44444,.01597,0],104:[0,.69444,0,0],105:[0,.69444,0,0],106:[.19444,.69444,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,0,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.01597,0],119:[0,.44444,.01597,0],120:[0,.44444,0,0],121:[.19444,.44444,.01597,0],122:[0,.44444,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.34444,0,0],168:[0,.69444,0,0],172:[0,.44444,0,0],175:[0,.59611,0,0],176:[0,.69444,0,0],177:[.13333,.63333,0,0],180:[0,.69444,0,0],215:[.13333,.63333,0,0],247:[.13333,.63333,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],710:[0,.69444,0,0],711:[0,.63194,0,0],713:[0,.59611,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.69444,0,0],730:[0,.69444,0,0],732:[0,.69444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.69444,0,0],772:[0,.59611,0,0],774:[0,.69444,0,0],775:[0,.69444,0,0],776:[0,.69444,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],824:[.19444,.69444,0,0],915:[0,.68611,0,0],916:[0,.68611,0,0],920:[0,.68611,0,0],923:[0,.68611,0,0],926:[0,.68611,0,0],928:[0,.68611,0,0],931:[0,.68611,0,0],933:[0,.68611,0,0],934:[0,.68611,0,0],936:[0,.68611,0,0],937:[0,.68611,0,0],8211:[0,.44444,.03194,0],8212:[0,.44444,.03194,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8242:[0,.55556,0,0],8407:[0,.72444,.15486,0],8463:[0,.69444,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,0],8472:[.19444,.44444,0,0],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.10889,.39111,0,0],8593:[.19444,.69444,0,0],8594:[-.10889,.39111,0,0],8595:[.19444,.69444,0,0],8596:[-.10889,.39111,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8636:[-.10889,.39111,0,0],8637:[-.10889,.39111,0,0],8640:[-.10889,.39111,0,0],8641:[-.10889,.39111,0,0],8656:[-.10889,.39111,0,0],8657:[.19444,.69444,0,0],8658:[-.10889,.39111,0,0],8659:[.19444,.69444,0,0],8660:[-.10889,.39111,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.06389,0],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68611,0,0],8712:[.08556,.58556,0,0],8715:[.08556,.58556,0,0],8722:[.13333,.63333,0,0],8723:[.13333,.63333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.02778,.47222,0,0],8728:[-.02639,.47361,0,0],8729:[-.02639,.47361,0,0],8730:[.18,.82,0,0],8733:[0,.44444,0,0],8734:[0,.44444,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.12778,0],8764:[-.10889,.39111,0,0],8768:[.19444,.69444,0,0],8771:[.00222,.50222,0,0],8776:[.02444,.52444,0,0],8781:[.00222,.50222,0,0],8801:[.00222,.50222,0,0],8804:[.19667,.69667,0,0],8805:[.19667,.69667,0,0],8810:[.08556,.58556,0,0],8811:[.08556,.58556,0,0],8826:[.08556,.58556,0,0],8827:[.08556,.58556,0,0],8834:[.08556,.58556,0,0],8835:[.08556,.58556,0,0],8838:[.19667,.69667,0,0],8839:[.19667,.69667,0,0],8846:[0,.55556,0,0],8849:[.19667,.69667,0,0],8850:[.19667,.69667,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.13333,.63333,0,0],8854:[.13333,.63333,0,0],8855:[.13333,.63333,0,0],8856:[.13333,.63333,0,0],8857:[.13333,.63333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8900:[-.02639,.47361,0,0],8901:[-.02639,.47361,0,0],8902:[-.02778,.47222,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.13889,.36111,0,0],8995:[-.13889,.36111,0,0],9651:[.19444,.69444,0,0],9657:[-.02778,.47222,0,0],9661:[.19444,.69444,0,0],9667:[-.02778,.47222,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10815:[0,.68611,0,0],10927:[.19667,.69667,0,0],10928:[.19667,.69667,0,0]},"Main-Italic":{33:[0,.69444,.12417,0],34:[0,.69444,.06961,0],35:[.19444,.69444,.06616,0],37:[.05556,.75,.13639,0],38:[0,.69444,.09694,0],39:[0,.69444,.12417,0],40:[.25,.75,.16194,0],41:[.25,.75,.03694,0],42:[0,.75,.14917,0],43:[.05667,.56167,.03694,0],44:[.19444,.10556,0,0],45:[0,.43056,.02826,0],46:[0,.10556,0,0],47:[.25,.75,.16194,0],48:[0,.64444,.13556,0],49:[0,.64444,.13556,0],50:[0,.64444,.13556,0],51:[0,.64444,.13556,0],52:[.19444,.64444,.13556,0],53:[0,.64444,.13556,0],54:[0,.64444,.13556,0],55:[.19444,.64444,.13556,0],56:[0,.64444,.13556,0],57:[0,.64444,.13556,0],58:[0,.43056,.0582,0],59:[.19444,.43056,.0582,0],61:[-.13313,.36687,.06616,0],63:[0,.69444,.1225,0],64:[0,.69444,.09597,0],65:[0,.68333,0,0],66:[0,.68333,.10257,0],67:[0,.68333,.14528,0],68:[0,.68333,.09403,0],69:[0,.68333,.12028,0],70:[0,.68333,.13305,0],71:[0,.68333,.08722,0],72:[0,.68333,.16389,0],73:[0,.68333,.15806,0],74:[0,.68333,.14028,0],75:[0,.68333,.14528,0],76:[0,.68333,0,0],77:[0,.68333,.16389,0],78:[0,.68333,.16389,0],79:[0,.68333,.09403,0],80:[0,.68333,.10257,0],81:[.19444,.68333,.09403,0],82:[0,.68333,.03868,0],83:[0,.68333,.11972,0],84:[0,.68333,.13305,0],85:[0,.68333,.16389,0],86:[0,.68333,.18361,0],87:[0,.68333,.18361,0],88:[0,.68333,.15806,0],89:[0,.68333,.19383,0],90:[0,.68333,.14528,0],91:[.25,.75,.1875,0],93:[.25,.75,.10528,0],94:[0,.69444,.06646,0],95:[.31,.12056,.09208,0],97:[0,.43056,.07671,0],98:[0,.69444,.06312,0],99:[0,.43056,.05653,0],100:[0,.69444,.10333,0],101:[0,.43056,.07514,0],102:[.19444,.69444,.21194,0],103:[.19444,.43056,.08847,0],104:[0,.69444,.07671,0],105:[0,.65536,.1019,0],106:[.19444,.65536,.14467,0],107:[0,.69444,.10764,0],108:[0,.69444,.10333,0],109:[0,.43056,.07671,0],110:[0,.43056,.07671,0],111:[0,.43056,.06312,0],112:[.19444,.43056,.06312,0],113:[.19444,.43056,.08847,0],114:[0,.43056,.10764,0],115:[0,.43056,.08208,0],116:[0,.61508,.09486,0],117:[0,.43056,.07671,0],118:[0,.43056,.10764,0],119:[0,.43056,.10764,0],120:[0,.43056,.12042,0],121:[.19444,.43056,.08847,0],122:[0,.43056,.12292,0],126:[.35,.31786,.11585,0],163:[0,.69444,0,0],305:[0,.43056,0,.02778],567:[.19444,.43056,0,.08334],768:[0,.69444,0,0],769:[0,.69444,.09694,0],770:[0,.69444,.06646,0],771:[0,.66786,.11585,0],772:[0,.56167,.10333,0],774:[0,.69444,.10806,0],775:[0,.66786,.11752,0],776:[0,.66786,.10474,0],778:[0,.69444,0,0],779:[0,.69444,.1225,0],780:[0,.62847,.08295,0],915:[0,.68333,.13305,0],916:[0,.68333,0,0],920:[0,.68333,.09403,0],923:[0,.68333,0,0],926:[0,.68333,.15294,0],928:[0,.68333,.16389,0],931:[0,.68333,.12028,0],933:[0,.68333,.11111,0],934:[0,.68333,.05986,0],936:[0,.68333,.11111,0],937:[0,.68333,.10257,0],8211:[0,.43056,.09208,0],8212:[0,.43056,.09208,0],8216:[0,.69444,.12417,0],8217:[0,.69444,.12417,0],8220:[0,.69444,.1685,0],8221:[0,.69444,.06961,0],8463:[0,.68889,0,0]},"Main-Regular":{32:[0,0,0,0],33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.19444,.10556,0,0],45:[0,.43056,0,0],46:[0,.10556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.43056,0,0],59:[.19444,.43056,0,0],60:[.0391,.5391,0,0],61:[-.13313,.36687,0,0],62:[.0391,.5391,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68333,0,0],66:[0,.68333,0,0],67:[0,.68333,0,0],68:[0,.68333,0,0],69:[0,.68333,0,0],70:[0,.68333,0,0],71:[0,.68333,0,0],72:[0,.68333,0,0],73:[0,.68333,0,0],74:[0,.68333,0,0],75:[0,.68333,0,0],76:[0,.68333,0,0],77:[0,.68333,0,0],78:[0,.68333,0,0],79:[0,.68333,0,0],80:[0,.68333,0,0],81:[.19444,.68333,0,0],82:[0,.68333,0,0],83:[0,.68333,0,0],84:[0,.68333,0,0],85:[0,.68333,0,0],86:[0,.68333,.01389,0],87:[0,.68333,.01389,0],88:[0,.68333,0,0],89:[0,.68333,.025,0],90:[0,.68333,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.12056,.02778,0],96:[0,.69444,0,0],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,0],100:[0,.69444,0,0],101:[0,.43056,0,0],102:[0,.69444,.07778,0],103:[.19444,.43056,.01389,0],104:[0,.69444,0,0],105:[0,.66786,0,0],106:[.19444,.66786,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.19444,.43056,0,0],113:[.19444,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.61508,0,0],117:[0,.43056,0,0],118:[0,.43056,.01389,0],119:[0,.43056,.01389,0],120:[0,.43056,0,0],121:[.19444,.43056,.01389,0],122:[0,.43056,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.31786,0,0],160:[0,0,0,0],168:[0,.66786,0,0],172:[0,.43056,0,0],175:[0,.56778,0,0],176:[0,.69444,0,0],177:[.08333,.58333,0,0],180:[0,.69444,0,0],215:[.08333,.58333,0,0],247:[.08333,.58333,0,0],305:[0,.43056,0,0],567:[.19444,.43056,0,0],710:[0,.69444,0,0],711:[0,.62847,0,0],713:[0,.56778,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.66786,0,0],730:[0,.69444,0,0],732:[0,.66786,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.66786,0,0],772:[0,.56778,0,0],774:[0,.69444,0,0],775:[0,.66786,0,0],776:[0,.66786,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.62847,0,0],824:[.19444,.69444,0,0],915:[0,.68333,0,0],916:[0,.68333,0,0],920:[0,.68333,0,0],923:[0,.68333,0,0],926:[0,.68333,0,0],928:[0,.68333,0,0],931:[0,.68333,0,0],933:[0,.68333,0,0],934:[0,.68333,0,0],936:[0,.68333,0,0],937:[0,.68333,0,0],8211:[0,.43056,.02778,0],8212:[0,.43056,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8230:[0,.12,0,0],8242:[0,.55556,0,0],8407:[0,.71444,.15382,0],8463:[0,.68889,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,.11111],8472:[.19444,.43056,0,.11111],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.13313,.36687,0,0],8593:[.19444,.69444,0,0],8594:[-.13313,.36687,0,0],8595:[.19444,.69444,0,0],8596:[-.13313,.36687,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8614:[.011,.511,0,0],8617:[.011,.511,0,0],8618:[.011,.511,0,0],8636:[-.13313,.36687,0,0],8637:[-.13313,.36687,0,0],8640:[-.13313,.36687,0,0],8641:[-.13313,.36687,0,0],8652:[.011,.671,0,0],8656:[-.13313,.36687,0,0],8657:[.19444,.69444,0,0],8658:[-.13313,.36687,0,0],8659:[.19444,.69444,0,0],8660:[-.13313,.36687,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.05556,.08334],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68333,0,0],8712:[.0391,.5391,0,0],8715:[.0391,.5391,0,0],8722:[.08333,.58333,0,0],8723:[.08333,.58333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.03472,.46528,0,0],8728:[-.05555,.44445,0,0],8729:[-.05555,.44445,0,0],8730:[.2,.8,0,0],8733:[0,.43056,0,0],8734:[0,.43056,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.11111,0],8764:[-.13313,.36687,0,0],8768:[.19444,.69444,0,0],8771:[-.03625,.46375,0,0],8773:[-.022,.589,0,0],8776:[-.01688,.48312,0,0],8781:[-.03625,.46375,0,0],8784:[-.133,.67,0,0],8800:[.215,.716,0,0],8801:[-.03625,.46375,0,0],8804:[.13597,.63597,0,0],8805:[.13597,.63597,0,0],8810:[.0391,.5391,0,0],8811:[.0391,.5391,0,0],8826:[.0391,.5391,0,0],8827:[.0391,.5391,0,0],8834:[.0391,.5391,0,0],8835:[.0391,.5391,0,0],8838:[.13597,.63597,0,0],8839:[.13597,.63597,0,0],8846:[0,.55556,0,0],8849:[.13597,.63597,0,0],8850:[.13597,.63597,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.08333,.58333,0,0],8854:[.08333,.58333,0,0],8855:[.08333,.58333,0,0],8856:[.08333,.58333,0,0],8857:[.08333,.58333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8872:[.249,.75,0,0],8900:[-.05555,.44445,0,0],8901:[-.05555,.44445,0,0],8902:[-.03472,.46528,0,0],8904:[.005,.505,0,0],8942:[.03,.9,0,0],8943:[-.19,.31,0,0],8945:[-.1,.82,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.14236,.35764,0,0],8995:[-.14236,.35764,0,0],9136:[.244,.744,0,0],9137:[.244,.744,0,0],9651:[.19444,.69444,0,0],9657:[-.03472,.46528,0,0],9661:[.19444,.69444,0,0],9667:[-.03472,.46528,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10222:[.244,.744,0,0],10223:[.244,.744,0,0],10229:[.011,.511,0,0],10230:[.011,.511,0,0],10231:[.011,.511,0,0],10232:[.024,.525,0,0],10233:[.024,.525,0,0],10234:[.024,.525,0,0],10236:[.011,.511,0,0],10815:[0,.68333,0,0],10927:[.13597,.63597,0,0],10928:[.13597,.63597,0,0]},"Math-BoldItalic":{47:[.19444,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,.04835,0],67:[0,.68611,.06979,0],68:[0,.68611,.03194,0],69:[0,.68611,.05451,0],70:[0,.68611,.15972,0],71:[0,.68611,0,0],72:[0,.68611,.08229,0],73:[0,.68611,.07778,0],74:[0,.68611,.10069,0],75:[0,.68611,.06979,0],76:[0,.68611,0,0],77:[0,.68611,.11424,0],78:[0,.68611,.11424,0],79:[0,.68611,.03194,0],80:[0,.68611,.15972,0],81:[.19444,.68611,0,0],82:[0,.68611,.00421,0],83:[0,.68611,.05382,0],84:[0,.68611,.15972,0],85:[0,.68611,.11424,0],86:[0,.68611,.25555,0],87:[0,.68611,.15972,0],88:[0,.68611,.07778,0],89:[0,.68611,.25555,0],90:[0,.68611,.06979,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[.19444,.69444,.11042,0],103:[.19444,.44444,.03704,0],104:[0,.69444,0,0],105:[0,.69326,0,0],106:[.19444,.69326,.0622,0],107:[0,.69444,.01852,0],108:[0,.69444,.0088,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,.03704,0],114:[0,.44444,.03194,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.03704,0],119:[0,.44444,.02778,0],120:[0,.44444,0,0],121:[.19444,.44444,.03704,0],122:[0,.44444,.04213,0],915:[0,.68611,.15972,0],916:[0,.68611,0,0],920:[0,.68611,.03194,0],923:[0,.68611,0,0],926:[0,.68611,.07458,0],928:[0,.68611,.08229,0],931:[0,.68611,.05451,0],933:[0,.68611,.15972,0],934:[0,.68611,0,0],936:[0,.68611,.11653,0],937:[0,.68611,.04835,0],945:[0,.44444,0,0],946:[.19444,.69444,.03403,0],947:[.19444,.44444,.06389,0],948:[0,.69444,.03819,0],949:[0,.44444,0,0],950:[.19444,.69444,.06215,0],951:[.19444,.44444,.03704,0],952:[0,.69444,.03194,0],953:[0,.44444,0,0],954:[0,.44444,0,0],955:[0,.69444,0,0],956:[.19444,.44444,0,0],957:[0,.44444,.06898,0],958:[.19444,.69444,.03021,0],959:[0,.44444,0,0],960:[0,.44444,.03704,0],961:[.19444,.44444,0,0],962:[.09722,.44444,.07917,0],963:[0,.44444,.03704,0],964:[0,.44444,.13472,0],965:[0,.44444,.03704,0],966:[.19444,.44444,0,0],967:[.19444,.44444,0,0],968:[.19444,.69444,.03704,0],969:[0,.44444,.03704,0],977:[0,.69444,0,0],981:[.19444,.69444,0,0],982:[0,.44444,.03194,0],1009:[.19444,.44444,0,0],1013:[0,.44444,0,0]},"Math-Italic":{47:[.19444,.69444,0,0],65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"Math-Regular":{65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"SansSerif-Regular":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.125,.08333,0,0],45:[0,.44444,0,0],46:[0,.08333,0,0],47:[.25,.75,0,0],48:[0,.65556,0,0],49:[0,.65556,0,0],50:[0,.65556,0,0],51:[0,.65556,0,0],52:[0,.65556,0,0],53:[0,.65556,0,0],54:[0,.65556,0,0],55:[0,.65556,0,0],56:[0,.65556,0,0],57:[0,.65556,0,0],58:[0,.44444,0,0],59:[.125,.44444,0,0],61:[-.13,.37,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.69444,0,0],66:[0,.69444,0,0],67:[0,.69444,0,0],68:[0,.69444,0,0],69:[0,.69444,0,0],70:[0,.69444,0,0],71:[0,.69444,0,0],72:[0,.69444,0,0],73:[0,.69444,0,0],74:[0,.69444,0,0],75:[0,.69444,0,0],76:[0,.69444,0,0],77:[0,.69444,0,0],78:[0,.69444,0,0],79:[0,.69444,0,0],80:[0,.69444,0,0],81:[.125,.69444,0,0],82:[0,.69444,0,0],83:[0,.69444,0,0],84:[0,.69444,0,0],85:[0,.69444,0,0],86:[0,.69444,.01389,0],87:[0,.69444,.01389,0],88:[0,.69444,0,0],89:[0,.69444,.025,0],90:[0,.69444,0,0],91:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.35,.09444,.02778,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.06944,0],103:[.19444,.44444,.01389,0],104:[0,.69444,0,0],105:[0,.67937,0,0],106:[.19444,.67937,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,.01389,0],115:[0,.44444,0,0],116:[0,.57143,0,0],117:[0,.44444,0,0],118:[0,.44444,.01389,0],119:[0,.44444,.01389,0],120:[0,.44444,0,0],121:[.19444,.44444,.01389,0],122:[0,.44444,0,0],126:[.35,.32659,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.67659,0,0],772:[0,.60889,0,0],774:[0,.69444,0,0],775:[0,.67937,0,0],776:[0,.67937,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],915:[0,.69444,0,0],916:[0,.69444,0,0],920:[0,.69444,0,0],923:[0,.69444,0,0],926:[0,.69444,0,0],928:[0,.69444,0,0],931:[0,.69444,0,0],933:[0,.69444,0,0],934:[0,.69444,0,0],936:[0,.69444,0,0],937:[0,.69444,0,0],8211:[0,.44444,.02778,0],8212:[0,.44444,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0]},"Script-Regular":{65:[0,.7,.22925,0],66:[0,.7,.04087,0],67:[0,.7,.1689,0],68:[0,.7,.09371,0],69:[0,.7,.18583,0],70:[0,.7,.13634,0],71:[0,.7,.17322,0],72:[0,.7,.29694,0],73:[0,.7,.19189,0],74:[.27778,.7,.19189,0],75:[0,.7,.31259,0],76:[0,.7,.19189,0],77:[0,.7,.15981,0],78:[0,.7,.3525,0],79:[0,.7,.08078,0],80:[0,.7,.08078,0],81:[0,.7,.03305,0],82:[0,.7,.06259,0],83:[0,.7,.19189,0],84:[0,.7,.29087,0],85:[0,.7,.25815,0],86:[0,.7,.27523,0],87:[0,.7,.27523,0],88:[0,.7,.26006,0],89:[0,.7,.2939,0],90:[0,.7,.24037,0]},"Size1-Regular":{40:[.35001,.85,0,0],41:[.35001,.85,0,0],47:[.35001,.85,0,0],91:[.35001,.85,0,0],92:[.35001,.85,0,0],93:[.35001,.85,0,0],123:[.35001,.85,0,0],125:[.35001,.85,0,0],710:[0,.72222,0,0],732:[0,.72222,0,0],770:[0,.72222,0,0],771:[0,.72222,0,0],8214:[-99e-5,.601,0,0],8593:[1e-5,.6,0,0],8595:[1e-5,.6,0,0],8657:[1e-5,.6,0,0],8659:[1e-5,.6,0,0],8719:[.25001,.75,0,0],8720:[.25001,.75,0,0],8721:[.25001,.75,0,0],8730:[.35001,.85,0,0],8739:[-.00599,.606,0,0],8741:[-.00599,.606,0,0],8747:[.30612,.805,.19445,0],8748:[.306,.805,.19445,0],8749:[.306,.805,.19445,0],8750:[.30612,.805,.19445,0],8896:[.25001,.75,0,0],8897:[.25001,.75,0,0],8898:[.25001,.75,0,0],8899:[.25001,.75,0,0],8968:[.35001,.85,0,0],8969:[.35001,.85,0,0],8970:[.35001,.85,0,0],8971:[.35001,.85,0,0],9168:[-99e-5,.601,0,0],10216:[.35001,.85,0,0],10217:[.35001,.85,0,0],10752:[.25001,.75,0,0],10753:[.25001,.75,0,0],10754:[.25001,.75,0,0],10756:[.25001,.75,0,0],10758:[.25001,.75,0,0]},"Size2-Regular":{40:[.65002,1.15,0,0],41:[.65002,1.15,0,0],47:[.65002,1.15,0,0],91:[.65002,1.15,0,0],92:[.65002,1.15,0,0],93:[.65002,1.15,0,0],123:[.65002,1.15,0,0],125:[.65002,1.15,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8719:[.55001,1.05,0,0],8720:[.55001,1.05,0,0],8721:[.55001,1.05,0,0],8730:[.65002,1.15,0,0],8747:[.86225,1.36,.44445,0],8748:[.862,1.36,.44445,0],8749:[.862,1.36,.44445,0],8750:[.86225,1.36,.44445,0],8896:[.55001,1.05,0,0],8897:[.55001,1.05,0,0],8898:[.55001,1.05,0,0],8899:[.55001,1.05,0,0],8968:[.65002,1.15,0,0],8969:[.65002,1.15,0,0],8970:[.65002,1.15,0,0],8971:[.65002,1.15,0,0],10216:[.65002,1.15,0,0],10217:[.65002,1.15,0,0],10752:[.55001,1.05,0,0],10753:[.55001,1.05,0,0],10754:[.55001,1.05,0,0],
-10756:[.55001,1.05,0,0],10758:[.55001,1.05,0,0]},"Size3-Regular":{40:[.95003,1.45,0,0],41:[.95003,1.45,0,0],47:[.95003,1.45,0,0],91:[.95003,1.45,0,0],92:[.95003,1.45,0,0],93:[.95003,1.45,0,0],123:[.95003,1.45,0,0],125:[.95003,1.45,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8730:[.95003,1.45,0,0],8968:[.95003,1.45,0,0],8969:[.95003,1.45,0,0],8970:[.95003,1.45,0,0],8971:[.95003,1.45,0,0],10216:[.95003,1.45,0,0],10217:[.95003,1.45,0,0]},"Size4-Regular":{40:[1.25003,1.75,0,0],41:[1.25003,1.75,0,0],47:[1.25003,1.75,0,0],91:[1.25003,1.75,0,0],92:[1.25003,1.75,0,0],93:[1.25003,1.75,0,0],123:[1.25003,1.75,0,0],125:[1.25003,1.75,0,0],710:[0,.825,0,0],732:[0,.825,0,0],770:[0,.825,0,0],771:[0,.825,0,0],8730:[1.25003,1.75,0,0],8968:[1.25003,1.75,0,0],8969:[1.25003,1.75,0,0],8970:[1.25003,1.75,0,0],8971:[1.25003,1.75,0,0],9115:[.64502,1.155,0,0],9116:[1e-5,.6,0,0],9117:[.64502,1.155,0,0],9118:[.64502,1.155,0,0],9119:[1e-5,.6,0,0],9120:[.64502,1.155,0,0],9121:[.64502,1.155,0,0],9122:[-99e-5,.601,0,0],9123:[.64502,1.155,0,0],9124:[.64502,1.155,0,0],9125:[-99e-5,.601,0,0],9126:[.64502,1.155,0,0],9127:[1e-5,.9,0,0],9128:[.65002,1.15,0,0],9129:[.90001,0,0,0],9130:[0,.3,0,0],9131:[1e-5,.9,0,0],9132:[.65002,1.15,0,0],9133:[.90001,0,0,0],9143:[.88502,.915,0,0],10216:[1.25003,1.75,0,0],10217:[1.25003,1.75,0,0],57344:[-.00499,.605,0,0],57345:[-.00499,.605,0,0],57680:[0,.12,0,0],57681:[0,.12,0,0],57682:[0,.12,0,0],57683:[0,.12,0,0]},"Typewriter-Regular":{33:[0,.61111,0,0],34:[0,.61111,0,0],35:[0,.61111,0,0],36:[.08333,.69444,0,0],37:[.08333,.69444,0,0],38:[0,.61111,0,0],39:[0,.61111,0,0],40:[.08333,.69444,0,0],41:[.08333,.69444,0,0],42:[0,.52083,0,0],43:[-.08056,.53055,0,0],44:[.13889,.125,0,0],45:[-.08056,.53055,0,0],46:[0,.125,0,0],47:[.08333,.69444,0,0],48:[0,.61111,0,0],49:[0,.61111,0,0],50:[0,.61111,0,0],51:[0,.61111,0,0],52:[0,.61111,0,0],53:[0,.61111,0,0],54:[0,.61111,0,0],55:[0,.61111,0,0],56:[0,.61111,0,0],57:[0,.61111,0,0],58:[0,.43056,0,0],59:[.13889,.43056,0,0],60:[-.05556,.55556,0,0],61:[-.19549,.41562,0,0],62:[-.05556,.55556,0,0],63:[0,.61111,0,0],64:[0,.61111,0,0],65:[0,.61111,0,0],66:[0,.61111,0,0],67:[0,.61111,0,0],68:[0,.61111,0,0],69:[0,.61111,0,0],70:[0,.61111,0,0],71:[0,.61111,0,0],72:[0,.61111,0,0],73:[0,.61111,0,0],74:[0,.61111,0,0],75:[0,.61111,0,0],76:[0,.61111,0,0],77:[0,.61111,0,0],78:[0,.61111,0,0],79:[0,.61111,0,0],80:[0,.61111,0,0],81:[.13889,.61111,0,0],82:[0,.61111,0,0],83:[0,.61111,0,0],84:[0,.61111,0,0],85:[0,.61111,0,0],86:[0,.61111,0,0],87:[0,.61111,0,0],88:[0,.61111,0,0],89:[0,.61111,0,0],90:[0,.61111,0,0],91:[.08333,.69444,0,0],92:[.08333,.69444,0,0],93:[.08333,.69444,0,0],94:[0,.61111,0,0],95:[.09514,0,0,0],96:[0,.61111,0,0],97:[0,.43056,0,0],98:[0,.61111,0,0],99:[0,.43056,0,0],100:[0,.61111,0,0],101:[0,.43056,0,0],102:[0,.61111,0,0],103:[.22222,.43056,0,0],104:[0,.61111,0,0],105:[0,.61111,0,0],106:[.22222,.61111,0,0],107:[0,.61111,0,0],108:[0,.61111,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.22222,.43056,0,0],113:[.22222,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.55358,0,0],117:[0,.43056,0,0],118:[0,.43056,0,0],119:[0,.43056,0,0],120:[0,.43056,0,0],121:[.22222,.43056,0,0],122:[0,.43056,0,0],123:[.08333,.69444,0,0],124:[.08333,.69444,0,0],125:[.08333,.69444,0,0],126:[0,.61111,0,0],127:[0,.61111,0,0],305:[0,.43056,0,0],567:[.22222,.43056,0,0],768:[0,.61111,0,0],769:[0,.61111,0,0],770:[0,.61111,0,0],771:[0,.61111,0,0],772:[0,.56555,0,0],774:[0,.61111,0,0],776:[0,.61111,0,0],778:[0,.61111,0,0],780:[0,.56597,0,0],915:[0,.61111,0,0],916:[0,.61111,0,0],920:[0,.61111,0,0],923:[0,.61111,0,0],926:[0,.61111,0,0],928:[0,.61111,0,0],931:[0,.61111,0,0],933:[0,.61111,0,0],934:[0,.61111,0,0],936:[0,.61111,0,0],937:[0,.61111,0,0],2018:[0,.61111,0,0],2019:[0,.61111,0,0],8242:[0,.61111,0,0]}}},{}],19:[function(e,t,r){var a=e("./utils");var i=e("./ParseError");var n=e("./parseData");var s=n.ParseNode;function l(e,r,a){if(typeof e==="string"){e=[e]}if(typeof r==="number"){r={numArgs:r}}var i={numArgs:r.numArgs,argTypes:r.argTypes,greediness:r.greediness===undefined?1:r.greediness,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,handler:a};for(var n=0;n<e.length;++n){t.exports[e[n]]=i}}var o=function(e){if(e.type==="ordgroup"){return e.value}else{return[e]}};l("\\sqrt",{numArgs:1,numOptionalArgs:1},function(e,t){var r=t[0];var a=t[1];return{type:"sqrt",body:a,index:r}});var u={"\\text":undefined,"\\textrm":"mathrm","\\textsf":"mathsf","\\texttt":"mathtt","\\textnormal":"mathrm","\\textbf":"mathbf","\\textit":"textit"};l(["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textit"],{numArgs:1,argTypes:["text"],greediness:2,allowedInText:true},function(e,t){var r=t[0];return{type:"text",body:o(r),style:u[e.funcName]}});l("\\color",{numArgs:2,allowedInText:true,greediness:3,argTypes:["color","original"]},function(e,t){var r=t[0];var a=t[1];return{type:"color",color:r.value,value:o(a)}});l("\\overline",{numArgs:1},function(e,t){var r=t[0];return{type:"overline",body:r}});l("\\underline",{numArgs:1},function(e,t){var r=t[0];return{type:"underline",body:r}});l("\\rule",{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},function(e,t){var r=t[0];var a=t[1];var i=t[2];return{type:"rule",shift:r&&r.value,width:a.value,height:i.value}});l(["\\kern","\\mkern"],{numArgs:1,argTypes:["size"]},function(e,t){return{type:"kern",dimension:t[0].value}});l("\\KaTeX",{numArgs:0},function(e){return{type:"katex"}});l("\\phantom",{numArgs:1},function(e,t){var r=t[0];return{type:"phantom",value:o(r)}});l(["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],{numArgs:1},function(e,t){var r=t[0];return{type:"mclass",mclass:"m"+e.funcName.substr(5),value:o(r)}});l("\\stackrel",{numArgs:2},function(e,t){var r=t[0];var a=t[1];var i=new s("op",{type:"op",limits:true,alwaysHandleSupSub:true,symbol:false,value:o(a)},a.mode);var n=new s("supsub",{base:i,sup:r,sub:null},r.mode);return{type:"mclass",mclass:"mrel",value:[n]}});l("\\bmod",{numArgs:0},function(e,t){return{type:"mod",modType:"bmod",value:null}});l(["\\pod","\\pmod","\\mod"],{numArgs:1},function(e,t){var r=t[0];return{type:"mod",modType:e.funcName.substr(1),value:o(r)}});var p={"\\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}};var h=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","<",">","\\langle","\\rangle","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];var c={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak"};l(["\\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"],{numArgs:1,allowedInText:true,greediness:3},function(e,t){var r=t[0];return{type:"color",color:"katex-"+e.funcName.slice(1),value:o(r)}});l(["\\arcsin","\\arccos","\\arctan","\\arg","\\cos","\\cosh","\\cot","\\coth","\\csc","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\tan","\\tanh"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:false,body:e.funcName}});l(["\\det","\\gcd","\\inf","\\lim","\\liminf","\\limsup","\\max","\\min","\\Pr","\\sup"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:false,body:e.funcName}});l(["\\int","\\iint","\\iiint","\\oint"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:true,body:e.funcName}});l(["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:true,body:e.funcName}});l("\\mathop",{numArgs:1},function(e,t){var r=t[0];return{type:"op",limits:false,symbol:false,value:o(r)}});l(["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac"],{numArgs:2,greediness:2},function(e,t){var r=t[0];var a=t[1];var i;var n=null;var s=null;var l="auto";switch(e.funcName){case"\\dfrac":case"\\frac":case"\\tfrac":i=true;break;case"\\\\atopfrac":i=false;break;case"\\dbinom":case"\\binom":case"\\tbinom":i=false;n="(";s=")";break;default:throw new Error("Unrecognized genfrac command")}switch(e.funcName){case"\\dfrac":case"\\dbinom":l="display";break;case"\\tfrac":case"\\tbinom":l="text";break}return{type:"genfrac",numer:r,denom:a,hasBarLine:i,leftDelim:n,rightDelim:s,size:l}});l(["\\llap","\\rlap"],{numArgs:1,allowedInText:true},function(e,t){var r=t[0];return{type:e.funcName.slice(1),body:r}});var m=function(e,t){if(a.contains(h,e.value)){return e}else{throw new i("Invalid delimiter: '"+e.value+"' after '"+t.funcName+"'",e)}};l(["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],{numArgs:1},function(e,t){var r=m(t[0],e);return{type:"delimsizing",size:p[e.funcName].size,mclass:p[e.funcName].mclass,value:r.value}});l(["\\left","\\right"],{numArgs:1},function(e,t){var r=m(t[0],e);return{type:"leftright",value:r.value}});l("\\middle",{numArgs:1},function(e,t){var r=m(t[0],e);if(!e.parser.leftrightDepth){throw new i("\\middle without preceding \\left",r)}return{type:"middle",value:r.value}});l(["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],0,null);l(["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],0,null);l(["\\mathrm","\\mathit","\\mathbf","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],{numArgs:1,greediness:2},function(e,t){var r=t[0];var a=e.funcName;if(a in c){a=c[a]}return{type:"font",font:a.slice(1),body:r}});l(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot"],{numArgs:1},function(e,t){var r=t[0];return{type:"accent",accent:e.funcName,base:r}});l(["\\over","\\choose","\\atop"],{numArgs:0,infix:true},function(e){var t;switch(e.funcName){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",replaceWith:t,token:e.token}});l(["\\\\","\\cr"],{numArgs:0,numOptionalArgs:1,argTypes:["size"]},function(e,t){var r=t[0];return{type:"cr",size:r}});l(["\\begin","\\end"],{numArgs:1,argTypes:["text"]},function(e,t){var r=t[0];if(r.type!=="ordgroup"){throw new i("Invalid environment name",r)}var a="";for(var n=0;n<r.value.length;++n){a+=r.value[n].value}return{type:"environment",name:a,nameGroup:r}})},{"./ParseError":6,"./parseData":21,"./utils":25}],20:[function(e,t,r){var a=e("./utils");function i(e,t){this.type=e;this.attributes={};this.children=t||[]}i.prototype.setAttribute=function(e,t){this.attributes[e]=t};i.prototype.toNode=function(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,t)){e.setAttribute(t,this.attributes[t])}}for(var r=0;r<this.children.length;r++){e.appendChild(this.children[r].toNode())}return e};i.prototype.toMarkup=function(){var e="<"+this.type;for(var t in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,t)){e+=" "+t+'="';e+=a.escape(this.attributes[t]);e+='"'}}e+=">";for(var r=0;r<this.children.length;r++){e+=this.children[r].toMarkup()}e+="</"+this.type+">";return e};function n(e){this.text=e}n.prototype.toNode=function(){return document.createTextNode(this.text)};n.prototype.toMarkup=function(){return a.escape(this.text)};t.exports={MathNode:i,TextNode:n}},{"./utils":25}],21:[function(e,t,r){function a(e,t,r,a,i){this.type=e;this.value=t;this.mode=r;if(a&&(!i||i.lexer===a.lexer)){this.lexer=a.lexer;this.start=a.start;this.end=(i||a).end}}t.exports={ParseNode:a}},{}],22:[function(e,t,r){var a=e("./Parser");var i=function(e,t){if(!(typeof e==="string"||e instanceof String)){throw new TypeError("KaTeX can only parse string typed expression")}var r=new a(e,t);return r.parse()};t.exports=i},{"./Parser":7}],23:[function(e,t,r){t.exports={math:{},text:{}};function a(e,r,a,i,n){t.exports[e][n]={font:r,group:a,replace:i}}var i="math";var n="text";var s="main";var l="ams";var o="accent";var u="bin";var p="close";var h="inner";var c="mathord";var m="op";var f="open";var v="punct";var d="rel";var g="spacing";var y="textord";a(i,s,d,"\u2261","\\equiv");a(i,s,d,"\u227a","\\prec");a(i,s,d,"\u227b","\\succ");a(i,s,d,"\u223c","\\sim");a(i,s,d,"\u22a5","\\perp");a(i,s,d,"\u2aaf","\\preceq");a(i,s,d,"\u2ab0","\\succeq");a(i,s,d,"\u2243","\\simeq");a(i,s,d,"\u2223","\\mid");a(i,s,d,"\u226a","\\ll");a(i,s,d,"\u226b","\\gg");a(i,s,d,"\u224d","\\asymp");a(i,s,d,"\u2225","\\parallel");a(i,s,d,"\u22c8","\\bowtie");a(i,s,d,"\u2323","\\smile");a(i,s,d,"\u2291","\\sqsubseteq");a(i,s,d,"\u2292","\\sqsupseteq");a(i,s,d,"\u2250","\\doteq");a(i,s,d,"\u2322","\\frown");a(i,s,d,"\u220b","\\ni");a(i,s,d,"\u221d","\\propto");a(i,s,d,"\u22a2","\\vdash");a(i,s,d,"\u22a3","\\dashv");a(i,s,d,"\u220b","\\owns");a(i,s,v,".","\\ldotp");a(i,s,v,"\u22c5","\\cdotp");a(i,s,y,"#","\\#");a(n,s,y,"#","\\#");a(i,s,y,"&","\\&");a(n,s,y,"&","\\&");a(i,s,y,"\u2135","\\aleph");a(i,s,y,"\u2200","\\forall");a(i,s,y,"\u210f","\\hbar");a(i,s,y,"\u2203","\\exists");a(i,s,y,"\u2207","\\nabla");a(i,s,y,"\u266d","\\flat");a(i,s,y,"\u2113","\\ell");a(i,s,y,"\u266e","\\natural");a(i,s,y,"\u2663","\\clubsuit");a(i,s,y,"\u2118","\\wp");a(i,s,y,"\u266f","\\sharp");a(i,s,y,"\u2662","\\diamondsuit");a(i,s,y,"\u211c","\\Re");a(i,s,y,"\u2661","\\heartsuit");a(i,s,y,"\u2111","\\Im");a(i,s,y,"\u2660","\\spadesuit");a(i,s,y,"\u2020","\\dag");a(i,s,y,"\u2021","\\ddag");a(i,s,p,"\u23b1","\\rmoustache");a(i,s,f,"\u23b0","\\lmoustache");a(i,s,p,"\u27ef","\\rgroup");a(i,s,f,"\u27ee","\\lgroup");a(i,s,u,"\u2213","\\mp");a(i,s,u,"\u2296","\\ominus");a(i,s,u,"\u228e","\\uplus");a(i,s,u,"\u2293","\\sqcap");a(i,s,u,"\u2217","\\ast");a(i,s,u,"\u2294","\\sqcup");a(i,s,u,"\u25ef","\\bigcirc");a(i,s,u,"\u2219","\\bullet");a(i,s,u,"\u2021","\\ddagger");a(i,s,u,"\u2240","\\wr");a(i,s,u,"\u2a3f","\\amalg");a(i,s,d,"\u27f5","\\longleftarrow");a(i,s,d,"\u21d0","\\Leftarrow");a(i,s,d,"\u27f8","\\Longleftarrow");a(i,s,d,"\u27f6","\\longrightarrow");a(i,s,d,"\u21d2","\\Rightarrow");a(i,s,d,"\u27f9","\\Longrightarrow");a(i,s,d,"\u2194","\\leftrightarrow");a(i,s,d,"\u27f7","\\longleftrightarrow");a(i,s,d,"\u21d4","\\Leftrightarrow");a(i,s,d,"\u27fa","\\Longleftrightarrow");a(i,s,d,"\u21a6","\\mapsto");a(i,s,d,"\u27fc","\\longmapsto");a(i,s,d,"\u2197","\\nearrow");a(i,s,d,"\u21a9","\\hookleftarrow");a(i,s,d,"\u21aa","\\hookrightarrow");a(i,s,d,"\u2198","\\searrow");a(i,s,d,"\u21bc","\\leftharpoonup");a(i,s,d,"\u21c0","\\rightharpoonup");a(i,s,d,"\u2199","\\swarrow");a(i,s,d,"\u21bd","\\leftharpoondown");a(i,s,d,"\u21c1","\\rightharpoondown");a(i,s,d,"\u2196","\\nwarrow");a(i,s,d,"\u21cc","\\rightleftharpoons");a(i,l,d,"\u226e","\\nless");a(i,l,d,"\ue010","\\nleqslant");a(i,l,d,"\ue011","\\nleqq");a(i,l,d,"\u2a87","\\lneq");a(i,l,d,"\u2268","\\lneqq");a(i,l,d,"\ue00c","\\lvertneqq");a(i,l,d,"\u22e6","\\lnsim");a(i,l,d,"\u2a89","\\lnapprox");a(i,l,d,"\u2280","\\nprec");a(i,l,d,"\u22e0","\\npreceq");a(i,l,d,"\u22e8","\\precnsim");a(i,l,d,"\u2ab9","\\precnapprox");a(i,l,d,"\u2241","\\nsim");a(i,l,d,"\ue006","\\nshortmid");a(i,l,d,"\u2224","\\nmid");a(i,l,d,"\u22ac","\\nvdash");a(i,l,d,"\u22ad","\\nvDash");a(i,l,d,"\u22ea","\\ntriangleleft");a(i,l,d,"\u22ec","\\ntrianglelefteq");a(i,l,d,"\u228a","\\subsetneq");a(i,l,d,"\ue01a","\\varsubsetneq");a(i,l,d,"\u2acb","\\subsetneqq");a(i,l,d,"\ue017","\\varsubsetneqq");a(i,l,d,"\u226f","\\ngtr");a(i,l,d,"\ue00f","\\ngeqslant");a(i,l,d,"\ue00e","\\ngeqq");a(i,l,d,"\u2a88","\\gneq");a(i,l,d,"\u2269","\\gneqq");a(i,l,d,"\ue00d","\\gvertneqq");a(i,l,d,"\u22e7","\\gnsim");a(i,l,d,"\u2a8a","\\gnapprox");a(i,l,d,"\u2281","\\nsucc");a(i,l,d,"\u22e1","\\nsucceq");a(i,l,d,"\u22e9","\\succnsim");a(i,l,d,"\u2aba","\\succnapprox");a(i,l,d,"\u2246","\\ncong");a(i,l,d,"\ue007","\\nshortparallel");a(i,l,d,"\u2226","\\nparallel");a(i,l,d,"\u22af","\\nVDash");a(i,l,d,"\u22eb","\\ntriangleright");a(i,l,d,"\u22ed","\\ntrianglerighteq");a(i,l,d,"\ue018","\\nsupseteqq");a(i,l,d,"\u228b","\\supsetneq");a(i,l,d,"\ue01b","\\varsupsetneq");a(i,l,d,"\u2acc","\\supsetneqq");a(i,l,d,"\ue019","\\varsupsetneqq");a(i,l,d,"\u22ae","\\nVdash");a(i,l,d,"\u2ab5","\\precneqq");a(i,l,d,"\u2ab6","\\succneqq");a(i,l,d,"\ue016","\\nsubseteqq");a(i,l,u,"\u22b4","\\unlhd");a(i,l,u,"\u22b5","\\unrhd");a(i,l,d,"\u219a","\\nleftarrow");a(i,l,d,"\u219b","\\nrightarrow");a(i,l,d,"\u21cd","\\nLeftarrow");a(i,l,d,"\u21cf","\\nRightarrow");a(i,l,d,"\u21ae","\\nleftrightarrow");a(i,l,d,"\u21ce","\\nLeftrightarrow");a(i,l,d,"\u25b3","\\vartriangle");a(i,l,y,"\u210f","\\hslash");a(i,l,y,"\u25bd","\\triangledown");a(i,l,y,"\u25ca","\\lozenge");a(i,l,y,"\u24c8","\\circledS");a(i,l,y,"\xae","\\circledR");a(i,l,y,"\u2221","\\measuredangle");a(i,l,y,"\u2204","\\nexists");a(i,l,y,"\u2127","\\mho");a(i,l,y,"\u2132","\\Finv");a(i,l,y,"\u2141","\\Game");a(i,l,y,"k","\\Bbbk");a(i,l,y,"\u2035","\\backprime");a(i,l,y,"\u25b2","\\blacktriangle");a(i,l,y,"\u25bc","\\blacktriangledown");a(i,l,y,"\u25a0","\\blacksquare");a(i,l,y,"\u29eb","\\blacklozenge");a(i,l,y,"\u2605","\\bigstar");a(i,l,y,"\u2222","\\sphericalangle");a(i,l,y,"\u2201","\\complement");a(i,l,y,"\xf0","\\eth");a(i,l,y,"\u2571","\\diagup");a(i,l,y,"\u2572","\\diagdown");a(i,l,y,"\u25a1","\\square");a(i,l,y,"\u25a1","\\Box");a(i,l,y,"\u25ca","\\Diamond");a(i,l,y,"\xa5","\\yen");a(i,l,y,"\u2713","\\checkmark");a(i,l,y,"\u2136","\\beth");a(i,l,y,"\u2138","\\daleth");a(i,l,y,"\u2137","\\gimel");a(i,l,y,"\u03dd","\\digamma");a(i,l,y,"\u03f0","\\varkappa");a(i,l,f,"\u250c","\\ulcorner");a(i,l,p,"\u2510","\\urcorner");a(i,l,f,"\u2514","\\llcorner");a(i,l,p,"\u2518","\\lrcorner");a(i,l,d,"\u2266","\\leqq");a(i,l,d,"\u2a7d","\\leqslant");a(i,l,d,"\u2a95","\\eqslantless");a(i,l,d,"\u2272","\\lesssim");a(i,l,d,"\u2a85","\\lessapprox");a(i,l,d,"\u224a","\\approxeq");a(i,l,u,"\u22d6","\\lessdot");a(i,l,d,"\u22d8","\\lll");a(i,l,d,"\u2276","\\lessgtr");a(i,l,d,"\u22da","\\lesseqgtr");a(i,l,d,"\u2a8b","\\lesseqqgtr");a(i,l,d,"\u2251","\\doteqdot");a(i,l,d,"\u2253","\\risingdotseq");a(i,l,d,"\u2252","\\fallingdotseq");a(i,l,d,"\u223d","\\backsim");a(i,l,d,"\u22cd","\\backsimeq");a(i,l,d,"\u2ac5","\\subseteqq");a(i,l,d,"\u22d0","\\Subset");a(i,l,d,"\u228f","\\sqsubset");a(i,l,d,"\u227c","\\preccurlyeq");a(i,l,d,"\u22de","\\curlyeqprec");a(i,l,d,"\u227e","\\precsim");a(i,l,d,"\u2ab7","\\precapprox");a(i,l,d,"\u22b2","\\vartriangleleft");a(i,l,d,"\u22b4","\\trianglelefteq");a(i,l,d,"\u22a8","\\vDash");a(i,l,d,"\u22aa","\\Vvdash");a(i,l,d,"\u2323","\\smallsmile");a(i,l,d,"\u2322","\\smallfrown");a(i,l,d,"\u224f","\\bumpeq");a(i,l,d,"\u224e","\\Bumpeq");a(i,l,d,"\u2267","\\geqq");a(i,l,d,"\u2a7e","\\geqslant");a(i,l,d,"\u2a96","\\eqslantgtr");a(i,l,d,"\u2273","\\gtrsim");a(i,l,d,"\u2a86","\\gtrapprox");a(i,l,u,"\u22d7","\\gtrdot");a(i,l,d,"\u22d9","\\ggg");a(i,l,d,"\u2277","\\gtrless");a(i,l,d,"\u22db","\\gtreqless");a(i,l,d,"\u2a8c","\\gtreqqless");a(i,l,d,"\u2256","\\eqcirc");a(i,l,d,"\u2257","\\circeq");a(i,l,d,"\u225c","\\triangleq");a(i,l,d,"\u223c","\\thicksim");a(i,l,d,"\u2248","\\thickapprox");a(i,l,d,"\u2ac6","\\supseteqq");a(i,l,d,"\u22d1","\\Supset");a(i,l,d,"\u2290","\\sqsupset");a(i,l,d,"\u227d","\\succcurlyeq");a(i,l,d,"\u22df","\\curlyeqsucc");a(i,l,d,"\u227f","\\succsim");a(i,l,d,"\u2ab8","\\succapprox");a(i,l,d,"\u22b3","\\vartriangleright");a(i,l,d,"\u22b5","\\trianglerighteq");a(i,l,d,"\u22a9","\\Vdash");a(i,l,d,"\u2223","\\shortmid");a(i,l,d,"\u2225","\\shortparallel");a(i,l,d,"\u226c","\\between");a(i,l,d,"\u22d4","\\pitchfork");a(i,l,d,"\u221d","\\varpropto");a(i,l,d,"\u25c0","\\blacktriangleleft");a(i,l,d,"\u2234","\\therefore");a(i,l,d,"\u220d","\\backepsilon");a(i,l,d,"\u25b6","\\blacktriangleright");a(i,l,d,"\u2235","\\because");a(i,l,d,"\u22d8","\\llless");a(i,l,d,"\u22d9","\\gggtr");a(i,l,u,"\u22b2","\\lhd");a(i,l,u,"\u22b3","\\rhd");a(i,l,d,"\u2242","\\eqsim");a(i,s,d,"\u22c8","\\Join");a(i,l,d,"\u2251","\\Doteq");a(i,l,u,"\u2214","\\dotplus");a(i,l,u,"\u2216","\\smallsetminus");a(i,l,u,"\u22d2","\\Cap");a(i,l,u,"\u22d3","\\Cup");a(i,l,u,"\u2a5e","\\doublebarwedge");a(i,l,u,"\u229f","\\boxminus");a(i,l,u,"\u229e","\\boxplus");a(i,l,u,"\u22c7","\\divideontimes");a(i,l,u,"\u22c9","\\ltimes");a(i,l,u,"\u22ca","\\rtimes");a(i,l,u,"\u22cb","\\leftthreetimes");a(i,l,u,"\u22cc","\\rightthreetimes");a(i,l,u,"\u22cf","\\curlywedge");a(i,l,u,"\u22ce","\\curlyvee");a(i,l,u,"\u229d","\\circleddash");a(i,l,u,"\u229b","\\circledast");a(i,l,u,"\u22c5","\\centerdot");a(i,l,u,"\u22ba","\\intercal");a(i,l,u,"\u22d2","\\doublecap");a(i,l,u,"\u22d3","\\doublecup");a(i,l,u,"\u22a0","\\boxtimes");a(i,l,d,"\u21e2","\\dashrightarrow");a(i,l,d,"\u21e0","\\dashleftarrow");a(i,l,d,"\u21c7","\\leftleftarrows");a(i,l,d,"\u21c6","\\leftrightarrows");a(i,l,d,"\u21da","\\Lleftarrow");a(i,l,d,"\u219e","\\twoheadleftarrow");a(i,l,d,"\u21a2","\\leftarrowtail");a(i,l,d,"\u21ab","\\looparrowleft");a(i,l,d,"\u21cb","\\leftrightharpoons");a(i,l,d,"\u21b6","\\curvearrowleft");a(i,l,d,"\u21ba","\\circlearrowleft");a(i,l,d,"\u21b0","\\Lsh");a(i,l,d,"\u21c8","\\upuparrows");a(i,l,d,"\u21bf","\\upharpoonleft");a(i,l,d,"\u21c3","\\downharpoonleft");a(i,l,d,"\u22b8","\\multimap");a(i,l,d,"\u21ad","\\leftrightsquigarrow");a(i,l,d,"\u21c9","\\rightrightarrows");a(i,l,d,"\u21c4","\\rightleftarrows");a(i,l,d,"\u21a0","\\twoheadrightarrow");a(i,l,d,"\u21a3","\\rightarrowtail");a(i,l,d,"\u21ac","\\looparrowright");a(i,l,d,"\u21b7","\\curvearrowright");a(i,l,d,"\u21bb","\\circlearrowright");a(i,l,d,"\u21b1","\\Rsh");a(i,l,d,"\u21ca","\\downdownarrows");a(i,l,d,"\u21be","\\upharpoonright");a(i,l,d,"\u21c2","\\downharpoonright");a(i,l,d,"\u21dd","\\rightsquigarrow");a(i,l,d,"\u21dd","\\leadsto");a(i,l,d,"\u21db","\\Rrightarrow");a(i,l,d,"\u21be","\\restriction");a(i,s,y,"\u2018","`");a(i,s,y,"$","\\$");a(n,s,y,"$","\\$");a(i,s,y,"%","\\%");a(n,s,y,"%","\\%");a(i,s,y,"_","\\_");a(n,s,y,"_","\\_");a(i,s,y,"\u2220","\\angle");a(i,s,y,"\u221e","\\infty");a(i,s,y,"\u2032","\\prime");a(i,s,y,"\u25b3","\\triangle");a(i,s,y,"\u0393","\\Gamma");a(i,s,y,"\u0394","\\Delta");a(i,s,y,"\u0398","\\Theta");a(i,s,y,"\u039b","\\Lambda");a(i,s,y,"\u039e","\\Xi");a(i,s,y,"\u03a0","\\Pi");a(i,s,y,"\u03a3","\\Sigma");a(i,s,y,"\u03a5","\\Upsilon");a(i,s,y,"\u03a6","\\Phi");a(i,s,y,"\u03a8","\\Psi");a(i,s,y,"\u03a9","\\Omega");a(i,s,y,"\xac","\\neg");a(i,s,y,"\xac","\\lnot");a(i,s,y,"\u22a4","\\top");a(i,s,y,"\u22a5","\\bot");a(i,s,y,"\u2205","\\emptyset");a(i,l,y,"\u2205","\\varnothing");a(i,s,c,"\u03b1","\\alpha");a(i,s,c,"\u03b2","\\beta");a(i,s,c,"\u03b3","\\gamma");a(i,s,c,"\u03b4","\\delta");a(i,s,c,"\u03f5","\\epsilon");a(i,s,c,"\u03b6","\\zeta");a(i,s,c,"\u03b7","\\eta");a(i,s,c,"\u03b8","\\theta");a(i,s,c,"\u03b9","\\iota");a(i,s,c,"\u03ba","\\kappa");a(i,s,c,"\u03bb","\\lambda");a(i,s,c,"\u03bc","\\mu");a(i,s,c,"\u03bd","\\nu");a(i,s,c,"\u03be","\\xi");a(i,s,c,"o","\\omicron");a(i,s,c,"\u03c0","\\pi");a(i,s,c,"\u03c1","\\rho");a(i,s,c,"\u03c3","\\sigma");a(i,s,c,"\u03c4","\\tau");a(i,s,c,"\u03c5","\\upsilon");a(i,s,c,"\u03d5","\\phi");a(i,s,c,"\u03c7","\\chi");a(i,s,c,"\u03c8","\\psi");a(i,s,c,"\u03c9","\\omega");a(i,s,c,"\u03b5","\\varepsilon");a(i,s,c,"\u03d1","\\vartheta");a(i,s,c,"\u03d6","\\varpi");a(i,s,c,"\u03f1","\\varrho");a(i,s,c,"\u03c2","\\varsigma");a(i,s,c,"\u03c6","\\varphi");a(i,s,u,"\u2217","*");a(i,s,u,"+","+");a(i,s,u,"\u2212","-");a(i,s,u,"\u22c5","\\cdot");a(i,s,u,"\u2218","\\circ");a(i,s,u,"\xf7","\\div");a(i,s,u,"\xb1","\\pm");a(i,s,u,"\xd7","\\times");a(i,s,u,"\u2229","\\cap");a(i,s,u,"\u222a","\\cup");a(i,s,u,"\u2216","\\setminus");a(i,s,u,"\u2227","\\land");a(i,s,u,"\u2228","\\lor");a(i,s,u,"\u2227","\\wedge");a(i,s,u,"\u2228","\\vee");a(i,s,y,"\u221a","\\surd");a(i,s,f,"(","(");a(i,s,f,"[","[");a(i,s,f,"\u27e8","\\langle");a(i,s,f,"\u2223","\\lvert");a(i,s,f,"\u2225","\\lVert");a(i,s,p,")",")");a(i,s,p,"]","]");a(i,s,p,"?","?");a(i,s,p,"!","!");a(i,s,p,"\u27e9","\\rangle");a(i,s,p,"\u2223","\\rvert");a(i,s,p,"\u2225","\\rVert");a(i,s,d,"=","=");a(i,s,d,"<","<");a(i,s,d,">",">");a(i,s,d,":",":");a(i,s,d,"\u2248","\\approx");a(i,s,d,"\u2245","\\cong");a(i,s,d,"\u2265","\\ge");a(i,s,d,"\u2265","\\geq");a(i,s,d,"\u2190","\\gets");a(i,s,d,">","\\gt");a(i,s,d,"\u2208","\\in");a(i,s,d,"\u2209","\\notin");a(i,s,d,"\u2282","\\subset");a(i,s,d,"\u2283","\\supset");a(i,s,d,"\u2286","\\subseteq");a(i,s,d,"\u2287","\\supseteq");a(i,l,d,"\u2288","\\nsubseteq");a(i,l,d,"\u2289","\\nsupseteq");a(i,s,d,"\u22a8","\\models");a(i,s,d,"\u2190","\\leftarrow");a(i,s,d,"\u2264","\\le");a(i,s,d,"\u2264","\\leq");a(i,s,d,"<","\\lt");a(i,s,d,"\u2260","\\ne");a(i,s,d,"\u2260","\\neq");a(i,s,d,"\u2192","\\rightarrow");a(i,s,d,"\u2192","\\to");a(i,l,d,"\u2271","\\ngeq");a(i,l,d,"\u2270","\\nleq");a(i,s,g,null,"\\!");a(i,s,g,"\xa0","\\ ");a(i,s,g,"\xa0","~");a(i,s,g,null,"\\,");a(i,s,g,null,"\\:");a(i,s,g,null,"\\;");a(i,s,g,null,"\\enspace");a(i,s,g,null,"\\qquad");a(i,s,g,null,"\\quad");a(i,s,g,"\xa0","\\space");a(i,s,v,",",",");a(i,s,v,";",";");a(i,s,v,":","\\colon");a(i,l,u,"\u22bc","\\barwedge");a(i,l,u,"\u22bb","\\veebar");a(i,s,u,"\u2299","\\odot");a(i,s,u,"\u2295","\\oplus");a(i,s,u,"\u2297","\\otimes");a(i,s,y,"\u2202","\\partial");a(i,s,u,"\u2298","\\oslash");a(i,l,u,"\u229a","\\circledcirc");a(i,l,u,"\u22a1","\\boxdot");a(i,s,u,"\u25b3","\\bigtriangleup");a(i,s,u,"\u25bd","\\bigtriangledown");a(i,s,u,"\u2020","\\dagger");a(i,s,u,"\u22c4","\\diamond");a(i,s,u,"\u22c6","\\star");a(i,s,u,"\u25c3","\\triangleleft");a(i,s,u,"\u25b9","\\triangleright");a(i,s,f,"{","\\{");a(n,s,y,"{","\\{");a(i,s,p,"}","\\}");a(n,s,y,"}","\\}");a(i,s,f,"{","\\lbrace");a(i,s,p,"}","\\rbrace");a(i,s,f,"[","\\lbrack");a(i,s,p,"]","\\rbrack");a(i,s,f,"\u230a","\\lfloor");a(i,s,p,"\u230b","\\rfloor");a(i,s,f,"\u2308","\\lceil");a(i,s,p,"\u2309","\\rceil");a(i,s,y,"\\","\\backslash");a(i,s,y,"\u2223","|");a(i,s,y,"\u2223","\\vert");a(i,s,y,"\u2225","\\|");a(i,s,y,"\u2225","\\Vert");a(i,s,d,"\u2191","\\uparrow");a(i,s,d,"\u21d1","\\Uparrow");a(i,s,d,"\u2193","\\downarrow");a(i,s,d,"\u21d3","\\Downarrow");a(i,s,d,"\u2195","\\updownarrow");a(i,s,d,"\u21d5","\\Updownarrow");a(i,i,m,"\u2210","\\coprod");a(i,i,m,"\u22c1","\\bigvee");a(i,i,m,"\u22c0","\\bigwedge");a(i,i,m,"\u2a04","\\biguplus");a(i,i,m,"\u22c2","\\bigcap");a(i,i,m,"\u22c3","\\bigcup");a(i,i,m,"\u222b","\\int");a(i,i,m,"\u222b","\\intop");a(i,i,m,"\u222c","\\iint");a(i,i,m,"\u222d","\\iiint");a(i,i,m,"\u220f","\\prod");a(i,i,m,"\u2211","\\sum");a(i,i,m,"\u2a02","\\bigotimes");a(i,i,m,"\u2a01","\\bigoplus");a(i,i,m,"\u2a00","\\bigodot");a(i,i,m,"\u222e","\\oint");a(i,i,m,"\u2a06","\\bigsqcup");a(i,i,m,"\u222b","\\smallint");a(n,s,h,"\u2026","\\textellipsis");a(i,s,h,"\u2026","\\mathellipsis");a(n,s,h,"\u2026","\\ldots");a(i,s,h,"\u2026","\\ldots");a(i,s,h,"\u22ef","\\cdots");a(i,s,h,"\u22f1","\\ddots");a(i,s,y,"\u22ee","\\vdots");a(i,s,o,"\xb4","\\acute");a(i,s,o,"`","\\grave");a(i,s,o,"\xa8","\\ddot");a(i,s,o,"~","\\tilde");a(i,s,o,"\xaf","\\bar");a(i,s,o,"\u02d8","\\breve");a(i,s,o,"\u02c7","\\check");a(i,s,o,"^","\\hat");a(i,s,o,"\u20d7","\\vec");a(i,s,o,"\u02d9","\\dot");a(i,s,c,"\u0131","\\imath");a(i,s,c,"\u0237","\\jmath");a(n,s,y,"\u2013","--");a(n,s,y,"\u2014","---");a(n,s,y,"\u2018","`");a(n,s,y,"\u2019","'");a(n,s,y,"\u201c","``");a(n,s,y,"\u201d","''");a(i,s,y,"\xb0","\\degree");a(n,s,y,"\xb0","\\degree");a(i,s,c,"\xa3","\\pounds");a(i,l,y,"\u2720","\\maltese");a(n,l,y,"\u2720","\\maltese");a(n,s,g,"\xa0","\\ ");a(n,s,g,"\xa0"," ");a(n,s,g,"\xa0","~");var x;var b;var w='0123456789/@."';for(x=0;x<w.length;x++){b=w.charAt(x);a(i,s,y,b,b)}var k='0123456789!@*()-=+[]";:?/.,';for(x=0;x<k.length;x++){b=k.charAt(x);a(n,s,y,b,b)}var z="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(x=0;x<z.length;x++){b=z.charAt(x);a(i,s,c,b,b);a(n,s,y,b,b)}for(x=192;x<=214;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}for(x=216;x<=246;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}for(x=248;x<=255;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}for(x=1040;x<=1103;x++){b=String.fromCharCode(x);a(n,s,y,b,b)}a(n,s,y,"\u2013","\u2013");a(n,s,y,"\u2014","\u2014");a(n,s,y,"\u2018","\u2018");a(n,s,y,"\u2019","\u2019");a(n,s,y,"\u201c","\u201c");a(n,s,y,"\u201d","\u201d")},{}],24:[function(e,t,r){var a=/[\uAC00-\uD7AF]/;var i=/[\u3040-\u309F]|[\u30A0-\u30FF]|[\u4E00-\u9FAF]|[\uAC00-\uD7AF]/;t.exports={cjkRegex:i,hangulRegex:a}},{}],25:[function(e,t,r){var a=Array.prototype.indexOf;var i=function(e,t){if(e==null){return-1}if(a&&e.indexOf===a){return e.indexOf(t)}var r=0;var i=e.length;for(;r<i;r++){if(e[r]===t){return r}}return-1};var n=function(e,t){return i(e,t)!==-1};var s=function(e,t){return e===undefined?t:e};var l=/([A-Z])/g;var o=function(e){return e.replace(l,"-$1").toLowerCase()};var u={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;"};var p=/[&><"']/g;function h(e){return u[e]}function c(e){return(""+e).replace(p,h)}var m;if(typeof document!=="undefined"){var f=document.createElement("span");if("textContent"in f){m=function(e,t){e.textContent=t}}else{m=function(e,t){e.innerText=t}}}function v(e){m(e,"")}t.exports={contains:n,deflt:s,escape:c,hyphenate:o,indexOf:i,setTextContent:m,clearNode:v}},{}]},{},[1])(1)});
diff --git a/specs/gl/katex/README.md b/specs/es/katex/README.md
similarity index 100%
rename from specs/gl/katex/README.md
rename to specs/es/katex/README.md
diff --git a/specs/es/3.2/katex/contrib/auto-render.min.js b/specs/es/katex/contrib/auto-render.min.js
similarity index 100%
rename from specs/es/3.2/katex/contrib/auto-render.min.js
rename to specs/es/katex/contrib/auto-render.min.js
diff --git a/specs/es/3.2/katex/fonts/KaTeX_AMS-Regular.eot b/specs/es/katex/fonts/KaTeX_AMS-Regular.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_AMS-Regular.eot
rename to specs/es/katex/fonts/KaTeX_AMS-Regular.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_AMS-Regular.ttf b/specs/es/katex/fonts/KaTeX_AMS-Regular.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_AMS-Regular.ttf
rename to specs/es/katex/fonts/KaTeX_AMS-Regular.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_AMS-Regular.woff b/specs/es/katex/fonts/KaTeX_AMS-Regular.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_AMS-Regular.woff
rename to specs/es/katex/fonts/KaTeX_AMS-Regular.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_AMS-Regular.woff2 b/specs/es/katex/fonts/KaTeX_AMS-Regular.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_AMS-Regular.woff2
rename to specs/es/katex/fonts/KaTeX_AMS-Regular.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Caligraphic-Bold.eot b/specs/es/katex/fonts/KaTeX_Caligraphic-Bold.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Caligraphic-Bold.eot
rename to specs/es/katex/fonts/KaTeX_Caligraphic-Bold.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Caligraphic-Bold.ttf b/specs/es/katex/fonts/KaTeX_Caligraphic-Bold.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Caligraphic-Bold.ttf
rename to specs/es/katex/fonts/KaTeX_Caligraphic-Bold.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Caligraphic-Bold.woff b/specs/es/katex/fonts/KaTeX_Caligraphic-Bold.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Caligraphic-Bold.woff
rename to specs/es/katex/fonts/KaTeX_Caligraphic-Bold.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Caligraphic-Bold.woff2 b/specs/es/katex/fonts/KaTeX_Caligraphic-Bold.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Caligraphic-Bold.woff2
rename to specs/es/katex/fonts/KaTeX_Caligraphic-Bold.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Caligraphic-Regular.eot b/specs/es/katex/fonts/KaTeX_Caligraphic-Regular.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Caligraphic-Regular.eot
rename to specs/es/katex/fonts/KaTeX_Caligraphic-Regular.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Caligraphic-Regular.ttf b/specs/es/katex/fonts/KaTeX_Caligraphic-Regular.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Caligraphic-Regular.ttf
rename to specs/es/katex/fonts/KaTeX_Caligraphic-Regular.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Caligraphic-Regular.woff b/specs/es/katex/fonts/KaTeX_Caligraphic-Regular.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Caligraphic-Regular.woff
rename to specs/es/katex/fonts/KaTeX_Caligraphic-Regular.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Caligraphic-Regular.woff2 b/specs/es/katex/fonts/KaTeX_Caligraphic-Regular.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Caligraphic-Regular.woff2
rename to specs/es/katex/fonts/KaTeX_Caligraphic-Regular.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Fraktur-Bold.eot b/specs/es/katex/fonts/KaTeX_Fraktur-Bold.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Fraktur-Bold.eot
rename to specs/es/katex/fonts/KaTeX_Fraktur-Bold.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Fraktur-Bold.ttf b/specs/es/katex/fonts/KaTeX_Fraktur-Bold.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Fraktur-Bold.ttf
rename to specs/es/katex/fonts/KaTeX_Fraktur-Bold.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Fraktur-Bold.woff b/specs/es/katex/fonts/KaTeX_Fraktur-Bold.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Fraktur-Bold.woff
rename to specs/es/katex/fonts/KaTeX_Fraktur-Bold.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Fraktur-Bold.woff2 b/specs/es/katex/fonts/KaTeX_Fraktur-Bold.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Fraktur-Bold.woff2
rename to specs/es/katex/fonts/KaTeX_Fraktur-Bold.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Fraktur-Regular.eot b/specs/es/katex/fonts/KaTeX_Fraktur-Regular.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Fraktur-Regular.eot
rename to specs/es/katex/fonts/KaTeX_Fraktur-Regular.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Fraktur-Regular.ttf b/specs/es/katex/fonts/KaTeX_Fraktur-Regular.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Fraktur-Regular.ttf
rename to specs/es/katex/fonts/KaTeX_Fraktur-Regular.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Fraktur-Regular.woff b/specs/es/katex/fonts/KaTeX_Fraktur-Regular.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Fraktur-Regular.woff
rename to specs/es/katex/fonts/KaTeX_Fraktur-Regular.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Fraktur-Regular.woff2 b/specs/es/katex/fonts/KaTeX_Fraktur-Regular.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Fraktur-Regular.woff2
rename to specs/es/katex/fonts/KaTeX_Fraktur-Regular.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Main-Bold.eot b/specs/es/katex/fonts/KaTeX_Main-Bold.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Main-Bold.eot
rename to specs/es/katex/fonts/KaTeX_Main-Bold.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Main-Bold.ttf b/specs/es/katex/fonts/KaTeX_Main-Bold.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Main-Bold.ttf
rename to specs/es/katex/fonts/KaTeX_Main-Bold.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Main-Bold.woff b/specs/es/katex/fonts/KaTeX_Main-Bold.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Main-Bold.woff
rename to specs/es/katex/fonts/KaTeX_Main-Bold.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Main-Bold.woff2 b/specs/es/katex/fonts/KaTeX_Main-Bold.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Main-Bold.woff2
rename to specs/es/katex/fonts/KaTeX_Main-Bold.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Main-Italic.eot b/specs/es/katex/fonts/KaTeX_Main-Italic.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Main-Italic.eot
rename to specs/es/katex/fonts/KaTeX_Main-Italic.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Main-Italic.ttf b/specs/es/katex/fonts/KaTeX_Main-Italic.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Main-Italic.ttf
rename to specs/es/katex/fonts/KaTeX_Main-Italic.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Main-Italic.woff b/specs/es/katex/fonts/KaTeX_Main-Italic.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Main-Italic.woff
rename to specs/es/katex/fonts/KaTeX_Main-Italic.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Main-Italic.woff2 b/specs/es/katex/fonts/KaTeX_Main-Italic.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Main-Italic.woff2
rename to specs/es/katex/fonts/KaTeX_Main-Italic.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Main-Regular.eot b/specs/es/katex/fonts/KaTeX_Main-Regular.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Main-Regular.eot
rename to specs/es/katex/fonts/KaTeX_Main-Regular.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Main-Regular.ttf b/specs/es/katex/fonts/KaTeX_Main-Regular.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Main-Regular.ttf
rename to specs/es/katex/fonts/KaTeX_Main-Regular.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Main-Regular.woff b/specs/es/katex/fonts/KaTeX_Main-Regular.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Main-Regular.woff
rename to specs/es/katex/fonts/KaTeX_Main-Regular.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Main-Regular.woff2 b/specs/es/katex/fonts/KaTeX_Main-Regular.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Main-Regular.woff2
rename to specs/es/katex/fonts/KaTeX_Main-Regular.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Math-BoldItalic.eot b/specs/es/katex/fonts/KaTeX_Math-BoldItalic.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Math-BoldItalic.eot
rename to specs/es/katex/fonts/KaTeX_Math-BoldItalic.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Math-BoldItalic.ttf b/specs/es/katex/fonts/KaTeX_Math-BoldItalic.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Math-BoldItalic.ttf
rename to specs/es/katex/fonts/KaTeX_Math-BoldItalic.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Math-BoldItalic.woff b/specs/es/katex/fonts/KaTeX_Math-BoldItalic.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Math-BoldItalic.woff
rename to specs/es/katex/fonts/KaTeX_Math-BoldItalic.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Math-BoldItalic.woff2 b/specs/es/katex/fonts/KaTeX_Math-BoldItalic.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Math-BoldItalic.woff2
rename to specs/es/katex/fonts/KaTeX_Math-BoldItalic.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Math-Italic.eot b/specs/es/katex/fonts/KaTeX_Math-Italic.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Math-Italic.eot
rename to specs/es/katex/fonts/KaTeX_Math-Italic.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Math-Italic.ttf b/specs/es/katex/fonts/KaTeX_Math-Italic.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Math-Italic.ttf
rename to specs/es/katex/fonts/KaTeX_Math-Italic.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Math-Italic.woff b/specs/es/katex/fonts/KaTeX_Math-Italic.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Math-Italic.woff
rename to specs/es/katex/fonts/KaTeX_Math-Italic.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Math-Italic.woff2 b/specs/es/katex/fonts/KaTeX_Math-Italic.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Math-Italic.woff2
rename to specs/es/katex/fonts/KaTeX_Math-Italic.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Math-Regular.eot b/specs/es/katex/fonts/KaTeX_Math-Regular.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Math-Regular.eot
rename to specs/es/katex/fonts/KaTeX_Math-Regular.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Math-Regular.ttf b/specs/es/katex/fonts/KaTeX_Math-Regular.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Math-Regular.ttf
rename to specs/es/katex/fonts/KaTeX_Math-Regular.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Math-Regular.woff b/specs/es/katex/fonts/KaTeX_Math-Regular.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Math-Regular.woff
rename to specs/es/katex/fonts/KaTeX_Math-Regular.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Math-Regular.woff2 b/specs/es/katex/fonts/KaTeX_Math-Regular.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Math-Regular.woff2
rename to specs/es/katex/fonts/KaTeX_Math-Regular.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_SansSerif-Bold.eot b/specs/es/katex/fonts/KaTeX_SansSerif-Bold.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_SansSerif-Bold.eot
rename to specs/es/katex/fonts/KaTeX_SansSerif-Bold.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_SansSerif-Bold.ttf b/specs/es/katex/fonts/KaTeX_SansSerif-Bold.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_SansSerif-Bold.ttf
rename to specs/es/katex/fonts/KaTeX_SansSerif-Bold.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_SansSerif-Bold.woff b/specs/es/katex/fonts/KaTeX_SansSerif-Bold.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_SansSerif-Bold.woff
rename to specs/es/katex/fonts/KaTeX_SansSerif-Bold.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_SansSerif-Bold.woff2 b/specs/es/katex/fonts/KaTeX_SansSerif-Bold.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_SansSerif-Bold.woff2
rename to specs/es/katex/fonts/KaTeX_SansSerif-Bold.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_SansSerif-Italic.eot b/specs/es/katex/fonts/KaTeX_SansSerif-Italic.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_SansSerif-Italic.eot
rename to specs/es/katex/fonts/KaTeX_SansSerif-Italic.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_SansSerif-Italic.ttf b/specs/es/katex/fonts/KaTeX_SansSerif-Italic.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_SansSerif-Italic.ttf
rename to specs/es/katex/fonts/KaTeX_SansSerif-Italic.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_SansSerif-Italic.woff b/specs/es/katex/fonts/KaTeX_SansSerif-Italic.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_SansSerif-Italic.woff
rename to specs/es/katex/fonts/KaTeX_SansSerif-Italic.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_SansSerif-Italic.woff2 b/specs/es/katex/fonts/KaTeX_SansSerif-Italic.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_SansSerif-Italic.woff2
rename to specs/es/katex/fonts/KaTeX_SansSerif-Italic.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_SansSerif-Regular.eot b/specs/es/katex/fonts/KaTeX_SansSerif-Regular.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_SansSerif-Regular.eot
rename to specs/es/katex/fonts/KaTeX_SansSerif-Regular.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_SansSerif-Regular.ttf b/specs/es/katex/fonts/KaTeX_SansSerif-Regular.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_SansSerif-Regular.ttf
rename to specs/es/katex/fonts/KaTeX_SansSerif-Regular.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_SansSerif-Regular.woff b/specs/es/katex/fonts/KaTeX_SansSerif-Regular.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_SansSerif-Regular.woff
rename to specs/es/katex/fonts/KaTeX_SansSerif-Regular.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_SansSerif-Regular.woff2 b/specs/es/katex/fonts/KaTeX_SansSerif-Regular.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_SansSerif-Regular.woff2
rename to specs/es/katex/fonts/KaTeX_SansSerif-Regular.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Script-Regular.eot b/specs/es/katex/fonts/KaTeX_Script-Regular.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Script-Regular.eot
rename to specs/es/katex/fonts/KaTeX_Script-Regular.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Script-Regular.ttf b/specs/es/katex/fonts/KaTeX_Script-Regular.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Script-Regular.ttf
rename to specs/es/katex/fonts/KaTeX_Script-Regular.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Script-Regular.woff b/specs/es/katex/fonts/KaTeX_Script-Regular.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Script-Regular.woff
rename to specs/es/katex/fonts/KaTeX_Script-Regular.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Script-Regular.woff2 b/specs/es/katex/fonts/KaTeX_Script-Regular.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Script-Regular.woff2
rename to specs/es/katex/fonts/KaTeX_Script-Regular.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Size1-Regular.eot b/specs/es/katex/fonts/KaTeX_Size1-Regular.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Size1-Regular.eot
rename to specs/es/katex/fonts/KaTeX_Size1-Regular.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Size1-Regular.ttf b/specs/es/katex/fonts/KaTeX_Size1-Regular.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Size1-Regular.ttf
rename to specs/es/katex/fonts/KaTeX_Size1-Regular.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Size1-Regular.woff b/specs/es/katex/fonts/KaTeX_Size1-Regular.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Size1-Regular.woff
rename to specs/es/katex/fonts/KaTeX_Size1-Regular.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Size1-Regular.woff2 b/specs/es/katex/fonts/KaTeX_Size1-Regular.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Size1-Regular.woff2
rename to specs/es/katex/fonts/KaTeX_Size1-Regular.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Size2-Regular.eot b/specs/es/katex/fonts/KaTeX_Size2-Regular.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Size2-Regular.eot
rename to specs/es/katex/fonts/KaTeX_Size2-Regular.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Size2-Regular.ttf b/specs/es/katex/fonts/KaTeX_Size2-Regular.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Size2-Regular.ttf
rename to specs/es/katex/fonts/KaTeX_Size2-Regular.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Size2-Regular.woff b/specs/es/katex/fonts/KaTeX_Size2-Regular.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Size2-Regular.woff
rename to specs/es/katex/fonts/KaTeX_Size2-Regular.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Size2-Regular.woff2 b/specs/es/katex/fonts/KaTeX_Size2-Regular.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Size2-Regular.woff2
rename to specs/es/katex/fonts/KaTeX_Size2-Regular.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Size3-Regular.eot b/specs/es/katex/fonts/KaTeX_Size3-Regular.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Size3-Regular.eot
rename to specs/es/katex/fonts/KaTeX_Size3-Regular.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Size3-Regular.ttf b/specs/es/katex/fonts/KaTeX_Size3-Regular.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Size3-Regular.ttf
rename to specs/es/katex/fonts/KaTeX_Size3-Regular.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Size3-Regular.woff b/specs/es/katex/fonts/KaTeX_Size3-Regular.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Size3-Regular.woff
rename to specs/es/katex/fonts/KaTeX_Size3-Regular.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Size3-Regular.woff2 b/specs/es/katex/fonts/KaTeX_Size3-Regular.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Size3-Regular.woff2
rename to specs/es/katex/fonts/KaTeX_Size3-Regular.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Size4-Regular.eot b/specs/es/katex/fonts/KaTeX_Size4-Regular.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Size4-Regular.eot
rename to specs/es/katex/fonts/KaTeX_Size4-Regular.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Size4-Regular.ttf b/specs/es/katex/fonts/KaTeX_Size4-Regular.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Size4-Regular.ttf
rename to specs/es/katex/fonts/KaTeX_Size4-Regular.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Size4-Regular.woff b/specs/es/katex/fonts/KaTeX_Size4-Regular.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Size4-Regular.woff
rename to specs/es/katex/fonts/KaTeX_Size4-Regular.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Size4-Regular.woff2 b/specs/es/katex/fonts/KaTeX_Size4-Regular.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Size4-Regular.woff2
rename to specs/es/katex/fonts/KaTeX_Size4-Regular.woff2
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Typewriter-Regular.eot b/specs/es/katex/fonts/KaTeX_Typewriter-Regular.eot
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Typewriter-Regular.eot
rename to specs/es/katex/fonts/KaTeX_Typewriter-Regular.eot
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Typewriter-Regular.ttf b/specs/es/katex/fonts/KaTeX_Typewriter-Regular.ttf
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Typewriter-Regular.ttf
rename to specs/es/katex/fonts/KaTeX_Typewriter-Regular.ttf
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Typewriter-Regular.woff b/specs/es/katex/fonts/KaTeX_Typewriter-Regular.woff
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Typewriter-Regular.woff
rename to specs/es/katex/fonts/KaTeX_Typewriter-Regular.woff
Binary files differ
diff --git a/specs/es/3.2/katex/fonts/KaTeX_Typewriter-Regular.woff2 b/specs/es/katex/fonts/KaTeX_Typewriter-Regular.woff2
similarity index 100%
rename from specs/es/3.2/katex/fonts/KaTeX_Typewriter-Regular.woff2
rename to specs/es/katex/fonts/KaTeX_Typewriter-Regular.woff2
Binary files differ
diff --git a/specs/gl/katex/katex.css b/specs/es/katex/katex.css
similarity index 100%
rename from specs/gl/katex/katex.css
rename to specs/es/katex/katex.css
diff --git a/specs/gl/katex/katex.js b/specs/es/katex/katex.js
similarity index 100%
rename from specs/gl/katex/katex.js
rename to specs/es/katex/katex.js
diff --git a/specs/gl/katex/katex.min.css b/specs/es/katex/katex.min.css
similarity index 100%
rename from specs/gl/katex/katex.min.css
rename to specs/es/katex/katex.min.css
diff --git a/specs/gl/katex/katex.min.js b/specs/es/katex/katex.min.js
similarity index 100%
rename from specs/gl/katex/katex.min.js
rename to specs/es/katex/katex.min.js
diff --git a/specs/gl/katex/README.md b/specs/katex/README.md
similarity index 100%
copy from specs/gl/katex/README.md
copy to specs/katex/README.md
diff --git a/specs/gl/katex/contrib/auto-render.min.js b/specs/katex/contrib/auto-render.min.js
similarity index 100%
rename from specs/gl/katex/contrib/auto-render.min.js
rename to specs/katex/contrib/auto-render.min.js
diff --git a/specs/gl/katex/fonts/KaTeX_AMS-Regular.eot b/specs/katex/fonts/KaTeX_AMS-Regular.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_AMS-Regular.eot
rename to specs/katex/fonts/KaTeX_AMS-Regular.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_AMS-Regular.ttf b/specs/katex/fonts/KaTeX_AMS-Regular.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_AMS-Regular.ttf
rename to specs/katex/fonts/KaTeX_AMS-Regular.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_AMS-Regular.woff b/specs/katex/fonts/KaTeX_AMS-Regular.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_AMS-Regular.woff
rename to specs/katex/fonts/KaTeX_AMS-Regular.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_AMS-Regular.woff2 b/specs/katex/fonts/KaTeX_AMS-Regular.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_AMS-Regular.woff2
rename to specs/katex/fonts/KaTeX_AMS-Regular.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Caligraphic-Bold.eot b/specs/katex/fonts/KaTeX_Caligraphic-Bold.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Caligraphic-Bold.eot
rename to specs/katex/fonts/KaTeX_Caligraphic-Bold.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Caligraphic-Bold.ttf b/specs/katex/fonts/KaTeX_Caligraphic-Bold.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Caligraphic-Bold.ttf
rename to specs/katex/fonts/KaTeX_Caligraphic-Bold.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Caligraphic-Bold.woff b/specs/katex/fonts/KaTeX_Caligraphic-Bold.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Caligraphic-Bold.woff
rename to specs/katex/fonts/KaTeX_Caligraphic-Bold.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Caligraphic-Bold.woff2 b/specs/katex/fonts/KaTeX_Caligraphic-Bold.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Caligraphic-Bold.woff2
rename to specs/katex/fonts/KaTeX_Caligraphic-Bold.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Caligraphic-Regular.eot b/specs/katex/fonts/KaTeX_Caligraphic-Regular.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Caligraphic-Regular.eot
rename to specs/katex/fonts/KaTeX_Caligraphic-Regular.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Caligraphic-Regular.ttf b/specs/katex/fonts/KaTeX_Caligraphic-Regular.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Caligraphic-Regular.ttf
rename to specs/katex/fonts/KaTeX_Caligraphic-Regular.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Caligraphic-Regular.woff b/specs/katex/fonts/KaTeX_Caligraphic-Regular.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Caligraphic-Regular.woff
rename to specs/katex/fonts/KaTeX_Caligraphic-Regular.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Caligraphic-Regular.woff2 b/specs/katex/fonts/KaTeX_Caligraphic-Regular.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Caligraphic-Regular.woff2
rename to specs/katex/fonts/KaTeX_Caligraphic-Regular.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Fraktur-Bold.eot b/specs/katex/fonts/KaTeX_Fraktur-Bold.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Fraktur-Bold.eot
rename to specs/katex/fonts/KaTeX_Fraktur-Bold.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Fraktur-Bold.ttf b/specs/katex/fonts/KaTeX_Fraktur-Bold.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Fraktur-Bold.ttf
rename to specs/katex/fonts/KaTeX_Fraktur-Bold.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Fraktur-Bold.woff b/specs/katex/fonts/KaTeX_Fraktur-Bold.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Fraktur-Bold.woff
rename to specs/katex/fonts/KaTeX_Fraktur-Bold.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Fraktur-Bold.woff2 b/specs/katex/fonts/KaTeX_Fraktur-Bold.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Fraktur-Bold.woff2
rename to specs/katex/fonts/KaTeX_Fraktur-Bold.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Fraktur-Regular.eot b/specs/katex/fonts/KaTeX_Fraktur-Regular.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Fraktur-Regular.eot
rename to specs/katex/fonts/KaTeX_Fraktur-Regular.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Fraktur-Regular.ttf b/specs/katex/fonts/KaTeX_Fraktur-Regular.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Fraktur-Regular.ttf
rename to specs/katex/fonts/KaTeX_Fraktur-Regular.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Fraktur-Regular.woff b/specs/katex/fonts/KaTeX_Fraktur-Regular.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Fraktur-Regular.woff
rename to specs/katex/fonts/KaTeX_Fraktur-Regular.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Fraktur-Regular.woff2 b/specs/katex/fonts/KaTeX_Fraktur-Regular.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Fraktur-Regular.woff2
rename to specs/katex/fonts/KaTeX_Fraktur-Regular.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Main-Bold.eot b/specs/katex/fonts/KaTeX_Main-Bold.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Main-Bold.eot
rename to specs/katex/fonts/KaTeX_Main-Bold.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Main-Bold.ttf b/specs/katex/fonts/KaTeX_Main-Bold.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Main-Bold.ttf
rename to specs/katex/fonts/KaTeX_Main-Bold.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Main-Bold.woff b/specs/katex/fonts/KaTeX_Main-Bold.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Main-Bold.woff
rename to specs/katex/fonts/KaTeX_Main-Bold.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Main-Bold.woff2 b/specs/katex/fonts/KaTeX_Main-Bold.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Main-Bold.woff2
rename to specs/katex/fonts/KaTeX_Main-Bold.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Main-Italic.eot b/specs/katex/fonts/KaTeX_Main-Italic.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Main-Italic.eot
rename to specs/katex/fonts/KaTeX_Main-Italic.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Main-Italic.ttf b/specs/katex/fonts/KaTeX_Main-Italic.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Main-Italic.ttf
rename to specs/katex/fonts/KaTeX_Main-Italic.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Main-Italic.woff b/specs/katex/fonts/KaTeX_Main-Italic.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Main-Italic.woff
rename to specs/katex/fonts/KaTeX_Main-Italic.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Main-Italic.woff2 b/specs/katex/fonts/KaTeX_Main-Italic.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Main-Italic.woff2
rename to specs/katex/fonts/KaTeX_Main-Italic.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Main-Regular.eot b/specs/katex/fonts/KaTeX_Main-Regular.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Main-Regular.eot
rename to specs/katex/fonts/KaTeX_Main-Regular.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Main-Regular.ttf b/specs/katex/fonts/KaTeX_Main-Regular.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Main-Regular.ttf
rename to specs/katex/fonts/KaTeX_Main-Regular.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Main-Regular.woff b/specs/katex/fonts/KaTeX_Main-Regular.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Main-Regular.woff
rename to specs/katex/fonts/KaTeX_Main-Regular.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Main-Regular.woff2 b/specs/katex/fonts/KaTeX_Main-Regular.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Main-Regular.woff2
rename to specs/katex/fonts/KaTeX_Main-Regular.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Math-BoldItalic.eot b/specs/katex/fonts/KaTeX_Math-BoldItalic.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Math-BoldItalic.eot
rename to specs/katex/fonts/KaTeX_Math-BoldItalic.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Math-BoldItalic.ttf b/specs/katex/fonts/KaTeX_Math-BoldItalic.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Math-BoldItalic.ttf
rename to specs/katex/fonts/KaTeX_Math-BoldItalic.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Math-BoldItalic.woff b/specs/katex/fonts/KaTeX_Math-BoldItalic.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Math-BoldItalic.woff
rename to specs/katex/fonts/KaTeX_Math-BoldItalic.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Math-BoldItalic.woff2 b/specs/katex/fonts/KaTeX_Math-BoldItalic.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Math-BoldItalic.woff2
rename to specs/katex/fonts/KaTeX_Math-BoldItalic.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Math-Italic.eot b/specs/katex/fonts/KaTeX_Math-Italic.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Math-Italic.eot
rename to specs/katex/fonts/KaTeX_Math-Italic.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Math-Italic.ttf b/specs/katex/fonts/KaTeX_Math-Italic.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Math-Italic.ttf
rename to specs/katex/fonts/KaTeX_Math-Italic.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Math-Italic.woff b/specs/katex/fonts/KaTeX_Math-Italic.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Math-Italic.woff
rename to specs/katex/fonts/KaTeX_Math-Italic.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Math-Italic.woff2 b/specs/katex/fonts/KaTeX_Math-Italic.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Math-Italic.woff2
rename to specs/katex/fonts/KaTeX_Math-Italic.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Math-Regular.eot b/specs/katex/fonts/KaTeX_Math-Regular.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Math-Regular.eot
rename to specs/katex/fonts/KaTeX_Math-Regular.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Math-Regular.ttf b/specs/katex/fonts/KaTeX_Math-Regular.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Math-Regular.ttf
rename to specs/katex/fonts/KaTeX_Math-Regular.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Math-Regular.woff b/specs/katex/fonts/KaTeX_Math-Regular.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Math-Regular.woff
rename to specs/katex/fonts/KaTeX_Math-Regular.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Math-Regular.woff2 b/specs/katex/fonts/KaTeX_Math-Regular.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Math-Regular.woff2
rename to specs/katex/fonts/KaTeX_Math-Regular.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_SansSerif-Bold.eot b/specs/katex/fonts/KaTeX_SansSerif-Bold.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_SansSerif-Bold.eot
rename to specs/katex/fonts/KaTeX_SansSerif-Bold.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_SansSerif-Bold.ttf b/specs/katex/fonts/KaTeX_SansSerif-Bold.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_SansSerif-Bold.ttf
rename to specs/katex/fonts/KaTeX_SansSerif-Bold.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_SansSerif-Bold.woff b/specs/katex/fonts/KaTeX_SansSerif-Bold.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_SansSerif-Bold.woff
rename to specs/katex/fonts/KaTeX_SansSerif-Bold.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_SansSerif-Bold.woff2 b/specs/katex/fonts/KaTeX_SansSerif-Bold.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_SansSerif-Bold.woff2
rename to specs/katex/fonts/KaTeX_SansSerif-Bold.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_SansSerif-Italic.eot b/specs/katex/fonts/KaTeX_SansSerif-Italic.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_SansSerif-Italic.eot
rename to specs/katex/fonts/KaTeX_SansSerif-Italic.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_SansSerif-Italic.ttf b/specs/katex/fonts/KaTeX_SansSerif-Italic.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_SansSerif-Italic.ttf
rename to specs/katex/fonts/KaTeX_SansSerif-Italic.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_SansSerif-Italic.woff b/specs/katex/fonts/KaTeX_SansSerif-Italic.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_SansSerif-Italic.woff
rename to specs/katex/fonts/KaTeX_SansSerif-Italic.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_SansSerif-Italic.woff2 b/specs/katex/fonts/KaTeX_SansSerif-Italic.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_SansSerif-Italic.woff2
rename to specs/katex/fonts/KaTeX_SansSerif-Italic.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_SansSerif-Regular.eot b/specs/katex/fonts/KaTeX_SansSerif-Regular.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_SansSerif-Regular.eot
rename to specs/katex/fonts/KaTeX_SansSerif-Regular.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_SansSerif-Regular.ttf b/specs/katex/fonts/KaTeX_SansSerif-Regular.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_SansSerif-Regular.ttf
rename to specs/katex/fonts/KaTeX_SansSerif-Regular.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_SansSerif-Regular.woff b/specs/katex/fonts/KaTeX_SansSerif-Regular.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_SansSerif-Regular.woff
rename to specs/katex/fonts/KaTeX_SansSerif-Regular.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_SansSerif-Regular.woff2 b/specs/katex/fonts/KaTeX_SansSerif-Regular.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_SansSerif-Regular.woff2
rename to specs/katex/fonts/KaTeX_SansSerif-Regular.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Script-Regular.eot b/specs/katex/fonts/KaTeX_Script-Regular.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Script-Regular.eot
rename to specs/katex/fonts/KaTeX_Script-Regular.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Script-Regular.ttf b/specs/katex/fonts/KaTeX_Script-Regular.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Script-Regular.ttf
rename to specs/katex/fonts/KaTeX_Script-Regular.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Script-Regular.woff b/specs/katex/fonts/KaTeX_Script-Regular.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Script-Regular.woff
rename to specs/katex/fonts/KaTeX_Script-Regular.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Script-Regular.woff2 b/specs/katex/fonts/KaTeX_Script-Regular.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Script-Regular.woff2
rename to specs/katex/fonts/KaTeX_Script-Regular.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Size1-Regular.eot b/specs/katex/fonts/KaTeX_Size1-Regular.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Size1-Regular.eot
rename to specs/katex/fonts/KaTeX_Size1-Regular.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Size1-Regular.ttf b/specs/katex/fonts/KaTeX_Size1-Regular.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Size1-Regular.ttf
rename to specs/katex/fonts/KaTeX_Size1-Regular.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Size1-Regular.woff b/specs/katex/fonts/KaTeX_Size1-Regular.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Size1-Regular.woff
rename to specs/katex/fonts/KaTeX_Size1-Regular.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Size1-Regular.woff2 b/specs/katex/fonts/KaTeX_Size1-Regular.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Size1-Regular.woff2
rename to specs/katex/fonts/KaTeX_Size1-Regular.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Size2-Regular.eot b/specs/katex/fonts/KaTeX_Size2-Regular.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Size2-Regular.eot
rename to specs/katex/fonts/KaTeX_Size2-Regular.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Size2-Regular.ttf b/specs/katex/fonts/KaTeX_Size2-Regular.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Size2-Regular.ttf
rename to specs/katex/fonts/KaTeX_Size2-Regular.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Size2-Regular.woff b/specs/katex/fonts/KaTeX_Size2-Regular.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Size2-Regular.woff
rename to specs/katex/fonts/KaTeX_Size2-Regular.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Size2-Regular.woff2 b/specs/katex/fonts/KaTeX_Size2-Regular.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Size2-Regular.woff2
rename to specs/katex/fonts/KaTeX_Size2-Regular.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Size3-Regular.eot b/specs/katex/fonts/KaTeX_Size3-Regular.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Size3-Regular.eot
rename to specs/katex/fonts/KaTeX_Size3-Regular.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Size3-Regular.ttf b/specs/katex/fonts/KaTeX_Size3-Regular.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Size3-Regular.ttf
rename to specs/katex/fonts/KaTeX_Size3-Regular.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Size3-Regular.woff b/specs/katex/fonts/KaTeX_Size3-Regular.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Size3-Regular.woff
rename to specs/katex/fonts/KaTeX_Size3-Regular.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Size3-Regular.woff2 b/specs/katex/fonts/KaTeX_Size3-Regular.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Size3-Regular.woff2
rename to specs/katex/fonts/KaTeX_Size3-Regular.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Size4-Regular.eot b/specs/katex/fonts/KaTeX_Size4-Regular.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Size4-Regular.eot
rename to specs/katex/fonts/KaTeX_Size4-Regular.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Size4-Regular.ttf b/specs/katex/fonts/KaTeX_Size4-Regular.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Size4-Regular.ttf
rename to specs/katex/fonts/KaTeX_Size4-Regular.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Size4-Regular.woff b/specs/katex/fonts/KaTeX_Size4-Regular.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Size4-Regular.woff
rename to specs/katex/fonts/KaTeX_Size4-Regular.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Size4-Regular.woff2 b/specs/katex/fonts/KaTeX_Size4-Regular.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Size4-Regular.woff2
rename to specs/katex/fonts/KaTeX_Size4-Regular.woff2
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Typewriter-Regular.eot b/specs/katex/fonts/KaTeX_Typewriter-Regular.eot
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Typewriter-Regular.eot
rename to specs/katex/fonts/KaTeX_Typewriter-Regular.eot
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Typewriter-Regular.ttf b/specs/katex/fonts/KaTeX_Typewriter-Regular.ttf
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Typewriter-Regular.ttf
rename to specs/katex/fonts/KaTeX_Typewriter-Regular.ttf
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Typewriter-Regular.woff b/specs/katex/fonts/KaTeX_Typewriter-Regular.woff
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Typewriter-Regular.woff
rename to specs/katex/fonts/KaTeX_Typewriter-Regular.woff
Binary files differ
diff --git a/specs/gl/katex/fonts/KaTeX_Typewriter-Regular.woff2 b/specs/katex/fonts/KaTeX_Typewriter-Regular.woff2
similarity index 100%
rename from specs/gl/katex/fonts/KaTeX_Typewriter-Regular.woff2
rename to specs/katex/fonts/KaTeX_Typewriter-Regular.woff2
Binary files differ
diff --git a/specs/gl/katex/katex.css b/specs/katex/katex.css
similarity index 100%
copy from specs/gl/katex/katex.css
copy to specs/katex/katex.css
diff --git a/specs/gl/katex/katex.js b/specs/katex/katex.js
similarity index 100%
copy from specs/gl/katex/katex.js
copy to specs/katex/katex.js
diff --git a/specs/gl/katex/katex.min.css b/specs/katex/katex.min.css
similarity index 100%
copy from specs/gl/katex/katex.min.css
copy to specs/katex/katex.min.css
diff --git a/specs/gl/katex/katex.min.js b/specs/katex/katex.min.js
similarity index 100%
copy from specs/gl/katex/katex.min.js
copy to specs/katex/katex.min.js
diff --git a/xml/gl.xml b/xml/gl.xml
index 8fb0ce5..2af2461 100644
--- a/xml/gl.xml
+++ b/xml/gl.xml
@@ -9135,7 +9135,7 @@
         <enum value="0x8B4A" name="GL_MAX_VERTEX_UNIFORM_COMPONENTS" group="GetPName"/>
         <enum value="0x8B4A" name="GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB"/>
         <enum value="0x8B4B" name="GL_MAX_VARYING_FLOATS" group="GetPName"/>
-        <enum value="0x8B4B" name="GL_MAX_VARYING_COMPONENTS" alias="MAX_VARYING_FLOATS" group="GetPName"/>
+        <enum value="0x8B4B" name="GL_MAX_VARYING_COMPONENTS" alias="GL_MAX_VARYING_FLOATS" group="GetPName"/>
         <enum value="0x8B4B" name="GL_MAX_VARYING_COMPONENTS_EXT"/>
         <enum value="0x8B4B" name="GL_MAX_VARYING_FLOATS_ARB"/>
         <enum value="0x8B4C" name="GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS" group="GetPName"/>
@@ -9324,7 +9324,7 @@
         <enum value="0x8C07" name="GL_FACTOR_ALPHA_MODULATE_IMG"/>
         <enum value="0x8C08" name="GL_FRAGMENT_ALPHA_MODULATE_IMG"/>
         <enum value="0x8C09" name="GL_ADD_BLEND_IMG"/>
-        <enum value="0x8C0A" name="GL_SGX_BINARY_IMG"/>
+        <enum value="0x8C0A" name="GL_SGX_BINARY_IMG" group="ShaderBinaryFormat"/>
             <unused start="0x8C0B" end="0x8C0F" vendor="IMG"/>
     </enums>
 
@@ -9982,7 +9982,7 @@
         <enum value="0x8DF5" name="GL_HIGH_INT" group="PrecisionType"/>
         <enum value="0x8DF6" name="GL_UNSIGNED_INT_10_10_10_2_OES"/>
         <enum value="0x8DF7" name="GL_INT_10_10_10_2_OES"/>
-        <enum value="0x8DF8" name="GL_SHADER_BINARY_FORMATS"/>
+        <enum value="0x8DF8" name="GL_SHADER_BINARY_FORMATS" group="GetPName"/>
         <enum value="0x8DF9" name="GL_NUM_SHADER_BINARY_FORMATS" group="GetPName"/>
         <enum value="0x8DFA" name="GL_SHADER_COMPILER" group="GetPName"/>
         <enum value="0x8DFB" name="GL_MAX_VERTEX_UNIFORM_VECTORS" group="GetPName"/>
@@ -10319,7 +10319,7 @@
     </enums>
 
     <enums namespace="GL" start="0x8F60" end="0x8F6F" vendor="ARM" comment="For Remi Pedersen, Khronos bug 3745">
-        <enum value="0x8F60" name="GL_MALI_SHADER_BINARY_ARM"/>
+        <enum value="0x8F60" name="GL_MALI_SHADER_BINARY_ARM" group="ShaderBinaryFormat"/>
         <enum value="0x8F61" name="GL_MALI_PROGRAM_BINARY_ARM"/>
             <unused start="0x8F62" vendor="ARM"/>
         <enum value="0x8F63" name="GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT"/>
@@ -10375,13 +10375,13 @@
             <unused start="0x8FB4" end="0x8FBA" vendor="QCOM"/>
         <enum value="0x8FBB" name="GL_GPU_DISJOINT_EXT"/>
             <unused start="0x8FBC" vendor="QCOM"/>
-        <enum value="0x8FBD" name="GL_SR8_EXT"/>
-        <enum value="0x8FBE" name="GL_SRG8_EXT"/>
+        <enum value="0x8FBD" name="GL_SR8_EXT" group="InternalFormat"/>
+        <enum value="0x8FBE" name="GL_SRG8_EXT" group="InternalFormat"/>
         <enum value="0x8FBF" name="GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT"/>
     </enums>
 
     <enums namespace="GL" start="0x8FC0" end="0x8FDF" vendor="VIV" comment="For Frido Garritsen, bug 4526">
-        <enum value="0x8FC4" name="GL_SHADER_BINARY_VIV"/>
+        <enum value="0x8FC4" name="GL_SHADER_BINARY_VIV" group="ShaderBinaryFormat"/>
     </enums>
 
     <enums namespace="GL" start="0x8FE0" end="0x8FFF" vendor="NV" comment="For Pat Brown, bug 4935">
@@ -10964,7 +10964,7 @@
     </enums>
 
     <enums namespace="GL" start="0x9250" end="0x925F" vendor="DMP" comment="For Eisaku Ohbuchi via email">
-        <enum value="0x9250" name="GL_SHADER_BINARY_DMP"/>
+        <enum value="0x9250" name="GL_SHADER_BINARY_DMP" group="ShaderBinaryFormat"/>
         <enum value="0x9251" name="GL_SMAPHS30_PROGRAM_BINARY_DMP"/>
         <enum value="0x9252" name="GL_SMAPHS_PROGRAM_BINARY_DMP"/>
         <enum value="0x9253" name="GL_DMP_PROGRAM_BINARY_DMP"/>
@@ -10972,7 +10972,7 @@
     </enums>
 
     <enums namespace="GL" start="0x9260" end="0x926F" vendor="FJ" comment="Khronos bug 7486">
-        <enum value="0x9260" name="GL_GCCSO_SHADER_BINARY_FJ"/>
+        <enum value="0x9260" name="GL_GCCSO_SHADER_BINARY_FJ" group="ShaderBinaryFormat"/>
             <unused start="0x9261" end="0x926F" vendor="FJ"/>
     </enums>
 
@@ -11586,7 +11586,8 @@
         <enum value="0x95AE" name="GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV"/>
         <enum value="0x95AF" name="GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV"/>
         <enum value="0x95B0" name="GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV"/>
-        <unused start="0x95B1" end="0x95B2" vendor="NV"/>
+        <enum value="0x95B1" name="GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV" group="EnableCap,GetPName"/>
+        <enum value="0x95B2" name="GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV" group="GetPName"/>
         <enum value="0x95B3" name="GL_SEMAPHORE_TYPE_NV" group="SemaphoreParameterName"/>
         <enum value="0x95B4" name="GL_SEMAPHORE_TYPE_BINARY_NV" group="SemaphoreParameterName"/>
         <enum value="0x95B5" name="GL_SEMAPHORE_TYPE_TIMELINE_NV" group="SemaphoreParameterName"/>
@@ -15006,7 +15007,7 @@
             <param len="n"><ptype>GLuint</ptype> *<name>states</name></param>
         </command>
         <command>
-            <proto group="sync"><ptype>GLsync</ptype> <name>glCreateSyncFromCLeventARB</name></proto>
+            <proto class="sync" group="sync"><ptype>GLsync</ptype> <name>glCreateSyncFromCLeventARB</name></proto>
             <param group="cl_context"><ptype>struct _cl_context</ptype> *<name>context</name></param>
             <param group="cl_event"><ptype>struct _cl_event</ptype> *<name>event</name></param>
             <param><ptype>GLbitfield</ptype> <name>flags</name></param>
@@ -16601,12 +16602,12 @@
             <param len="n">const <ptype>GLfixed</ptype> *<name>buffer</name></param>
         </command>
         <command>
-            <proto group="sync"><ptype>GLsync</ptype> <name>glFenceSync</name></proto>
+            <proto class="sync" group="sync"><ptype>GLsync</ptype> <name>glFenceSync</name></proto>
             <param group="SyncCondition"><ptype>GLenum</ptype> <name>condition</name></param>
             <param group="SyncBehaviorFlags"><ptype>GLbitfield</ptype> <name>flags</name></param>
         </command>
         <command>
-            <proto group="sync"><ptype>GLsync</ptype> <name>glFenceSyncAPPLE</name></proto>
+            <proto class="sync" group="sync"><ptype>GLsync</ptype> <name>glFenceSyncAPPLE</name></proto>
             <param group="SyncCondition"><ptype>GLenum</ptype> <name>condition</name></param>
             <param group="SyncBehaviorFlags"><ptype>GLbitfield</ptype> <name>flags</name></param>
             <alias name="glFenceSync"/>
@@ -19132,7 +19133,7 @@
             <param><ptype>GLuint</ptype> <name>monitor</name></param>
             <param><ptype>GLenum</ptype> <name>pname</name></param>
             <param><ptype>GLsizei</ptype> <name>dataSize</name></param>
-            <param len="dataSize"><ptype>GLuint</ptype> *<name>data</name></param>
+            <param len="dataSize / 4"><ptype>GLuint</ptype> *<name>data</name></param>
             <param len="1"><ptype>GLint</ptype> *<name>bytesWritten</name></param>
         </command>
         <command>
@@ -20675,7 +20676,7 @@
             <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
             <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param>void *<name>table</name></param>
+            <param len="bufSize">void *<name>table</name></param>
         </command>
         <command>
             <proto>void <name>glGetnColorTableARB</name></proto>
@@ -20690,7 +20691,7 @@
             <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
             <param><ptype>GLint</ptype> <name>lod</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param>void *<name>pixels</name></param>
+            <param len="bufSize">void *<name>pixels</name></param>
         </command>
         <command>
             <proto>void <name>glGetnCompressedTexImageARB</name></proto>
@@ -20705,7 +20706,7 @@
             <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
             <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param>void *<name>image</name></param>
+            <param len="bufSize">void *<name>image</name></param>
         </command>
         <command>
             <proto>void <name>glGetnConvolutionFilterARB</name></proto>
@@ -20722,7 +20723,7 @@
             <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
             <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param>void *<name>values</name></param>
+            <param len="bufSize">void *<name>values</name></param>
         </command>
         <command>
             <proto>void <name>glGetnHistogramARB</name></proto>
@@ -20738,14 +20739,14 @@
             <param group="MapTarget"><ptype>GLenum</ptype> <name>target</name></param>
             <param group="MapQuery"><ptype>GLenum</ptype> <name>query</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param><ptype>GLdouble</ptype> *<name>v</name></param>
+            <param len="COMPSIZE(bufSize)"><ptype>GLdouble</ptype> *<name>v</name></param>
         </command>
         <command>
             <proto>void <name>glGetnMapdvARB</name></proto>
             <param group="MapTarget"><ptype>GLenum</ptype> <name>target</name></param>
             <param group="MapQuery"><ptype>GLenum</ptype> <name>query</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLdouble</ptype> *<name>v</name></param>
+            <param len="bufSize / 8"><ptype>GLdouble</ptype> *<name>v</name></param>
         </command>
         <command>
             <proto>void <name>glGetnMapfv</name></proto>
@@ -20782,7 +20783,7 @@
             <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
             <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param>void *<name>values</name></param>
+            <param len="bufSize">void *<name>values</name></param>
         </command>
         <command>
             <proto>void <name>glGetnMinmaxARB</name></proto>
@@ -20797,13 +20798,13 @@
             <proto>void <name>glGetnPixelMapfv</name></proto>
             <param group="PixelMap"><ptype>GLenum</ptype> <name>map</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param><ptype>GLfloat</ptype> *<name>values</name></param>
+            <param len="COMPSIZE(bufSize)"><ptype>GLfloat</ptype> *<name>values</name></param>
         </command>
         <command>
             <proto>void <name>glGetnPixelMapfvARB</name></proto>
             <param group="PixelMap"><ptype>GLenum</ptype> <name>map</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLfloat</ptype> *<name>values</name></param>
+            <param len="bufSize / 4"><ptype>GLfloat</ptype> *<name>values</name></param>
         </command>
         <command>
             <proto>void <name>glGetnPixelMapuiv</name></proto>
@@ -20832,7 +20833,7 @@
         <command>
             <proto>void <name>glGetnPolygonStipple</name></proto>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param><ptype>GLubyte</ptype> *<name>pattern</name></param>
+            <param len="bufSize"><ptype>GLubyte</ptype> *<name>pattern</name></param>
         </command>
         <command>
             <proto>void <name>glGetnPolygonStippleARB</name></proto>
@@ -20845,10 +20846,10 @@
             <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
             <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
             <param><ptype>GLsizei</ptype> <name>rowBufSize</name></param>
-            <param>void *<name>row</name></param>
+            <param len="rowBufSize">void *<name>row</name></param>
             <param><ptype>GLsizei</ptype> <name>columnBufSize</name></param>
-            <param>void *<name>column</name></param>
-            <param>void *<name>span</name></param>
+            <param len="columnBufSize">void *<name>column</name></param>
+            <param len="0">void *<name>span</name></param>
         </command>
         <command>
             <proto>void <name>glGetnSeparableFilterARB</name></proto>
@@ -20884,35 +20885,35 @@
             <param class="program"><ptype>GLuint</ptype> <name>program</name></param>
             <param><ptype>GLint</ptype> <name>location</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLdouble</ptype> *<name>params</name></param>
+            <param len="bufSize / 8"><ptype>GLdouble</ptype> *<name>params</name></param>
         </command>
         <command>
             <proto>void <name>glGetnUniformdvARB</name></proto>
             <param class="program"><ptype>GLuint</ptype> <name>program</name></param>
             <param><ptype>GLint</ptype> <name>location</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLdouble</ptype> *<name>params</name></param>
+            <param len="bufSize / 8"><ptype>GLdouble</ptype> *<name>params</name></param>
         </command>
         <command>
             <proto>void <name>glGetnUniformfv</name></proto>
             <param class="program"><ptype>GLuint</ptype> <name>program</name></param>
             <param><ptype>GLint</ptype> <name>location</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLfloat</ptype> *<name>params</name></param>
+            <param len="bufSize / 4"><ptype>GLfloat</ptype> *<name>params</name></param>
         </command>
         <command>
             <proto>void <name>glGetnUniformfvARB</name></proto>
             <param class="program"><ptype>GLuint</ptype> <name>program</name></param>
             <param><ptype>GLint</ptype> <name>location</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLfloat</ptype> *<name>params</name></param>
+            <param len="bufSize / 4"><ptype>GLfloat</ptype> *<name>params</name></param>
         </command>
         <command>
             <proto>void <name>glGetnUniformfvEXT</name></proto>
             <param class="program"><ptype>GLuint</ptype> <name>program</name></param>
             <param><ptype>GLint</ptype> <name>location</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLfloat</ptype> *<name>params</name></param>
+            <param len="bufSize / 4"><ptype>GLfloat</ptype> *<name>params</name></param>
             <alias name="glGetnUniformfv"/>
         </command>
         <command>
@@ -20920,7 +20921,7 @@
             <param class="program"><ptype>GLuint</ptype> <name>program</name></param>
             <param><ptype>GLint</ptype> <name>location</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLfloat</ptype> *<name>params</name></param>
+            <param len="bufSize / 4"><ptype>GLfloat</ptype> *<name>params</name></param>
             <alias name="glGetnUniformfv"/>
         </command>
         <command>
@@ -20928,28 +20929,28 @@
             <param class="program"><ptype>GLuint</ptype> <name>program</name></param>
             <param><ptype>GLint</ptype> <name>location</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLint64</ptype> *<name>params</name></param>
+            <param len="bufSize / 8"><ptype>GLint64</ptype> *<name>params</name></param>
         </command>
         <command>
             <proto>void <name>glGetnUniformiv</name></proto>
             <param class="program"><ptype>GLuint</ptype> <name>program</name></param>
             <param><ptype>GLint</ptype> <name>location</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLint</ptype> *<name>params</name></param>
+            <param len="bufSize / 4"><ptype>GLint</ptype> *<name>params</name></param>
         </command>
         <command>
             <proto>void <name>glGetnUniformivARB</name></proto>
             <param class="program"><ptype>GLuint</ptype> <name>program</name></param>
             <param><ptype>GLint</ptype> <name>location</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLint</ptype> *<name>params</name></param>
+            <param len="bufSize / 4"><ptype>GLint</ptype> *<name>params</name></param>
         </command>
         <command>
             <proto>void <name>glGetnUniformivEXT</name></proto>
             <param class="program"><ptype>GLuint</ptype> <name>program</name></param>
             <param><ptype>GLint</ptype> <name>location</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLint</ptype> *<name>params</name></param>
+            <param len="bufSize / 4"><ptype>GLint</ptype> *<name>params</name></param>
             <alias name="glGetnUniformiv"/>
         </command>
         <command>
@@ -20957,7 +20958,7 @@
             <param class="program"><ptype>GLuint</ptype> <name>program</name></param>
             <param><ptype>GLint</ptype> <name>location</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLint</ptype> *<name>params</name></param>
+            <param len="bufSize / 4"><ptype>GLint</ptype> *<name>params</name></param>
             <alias name="glGetnUniformiv"/>
         </command>
         <command>
@@ -20965,28 +20966,28 @@
             <param class="program"><ptype>GLuint</ptype> <name>program</name></param>
             <param><ptype>GLint</ptype> <name>location</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLuint64</ptype> *<name>params</name></param>
+            <param len="bufSize / 8"><ptype>GLuint64</ptype> *<name>params</name></param>
         </command>
         <command>
             <proto>void <name>glGetnUniformuiv</name></proto>
             <param class="program"><ptype>GLuint</ptype> <name>program</name></param>
             <param><ptype>GLint</ptype> <name>location</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLuint</ptype> *<name>params</name></param>
+            <param len="bufSize / 4"><ptype>GLuint</ptype> *<name>params</name></param>
         </command>
         <command>
             <proto>void <name>glGetnUniformuivARB</name></proto>
             <param class="program"><ptype>GLuint</ptype> <name>program</name></param>
             <param><ptype>GLint</ptype> <name>location</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLuint</ptype> *<name>params</name></param>
+            <param len="bufSize / 4"><ptype>GLuint</ptype> *<name>params</name></param>
         </command>
         <command>
             <proto>void <name>glGetnUniformuivKHR</name></proto>
             <param class="program"><ptype>GLuint</ptype> <name>program</name></param>
             <param><ptype>GLint</ptype> <name>location</name></param>
             <param><ptype>GLsizei</ptype> <name>bufSize</name></param>
-            <param len="bufSize"><ptype>GLuint</ptype> *<name>params</name></param>
+            <param len="bufSize / 4"><ptype>GLuint</ptype> *<name>params</name></param>
             <alias name="glGetnUniformuiv"/>
         </command>
         <command>
@@ -21119,7 +21120,7 @@
             <param>const void *<name>name</name></param>
         </command>
         <command>
-            <proto group="sync"><ptype>GLsync</ptype> <name>glImportSyncEXT</name></proto>
+            <proto class="sync" group="sync"><ptype>GLsync</ptype> <name>glImportSyncEXT</name></proto>
             <param><ptype>GLenum</ptype> <name>external_sync_type</name></param>
             <param><ptype>GLintptr</ptype> <name>external_sync</name></param>
             <param><ptype>GLbitfield</ptype> <name>flags</name></param>
@@ -28915,6 +28916,13 @@
             <param class="texture" group="Texture"><ptype>GLuint</ptype> <name>mask</name></param>
         </command>
         <command>
+            <proto>void <name>glExtrapolateTex2DQCOM</name></proto>
+            <param class="texture"><ptype>GLuint</ptype> <name>src1</name></param>
+            <param class="texture"><ptype>GLuint</ptype> <name>src2</name></param>
+            <param class="texture"><ptype>GLuint</ptype> <name>output</name></param>
+            <param><ptype>GLfloat</ptype> <name>scaleFactor</name></param>
+        </command>
+        <command>
             <proto>void <name>glTexFilterFuncSGIS</name></proto>
             <param group="TextureTarget"><ptype>GLenum</ptype> <name>target</name></param>
             <param group="TextureFilterSGIS"><ptype>GLenum</ptype> <name>filter</name></param>
@@ -40506,7 +40514,6 @@
             <enum name="GL_FRAMEBUFFER_BINDING"/>
             <enum name="GL_RENDERBUFFER_BINDING"/>
             <enum name="GL_MAX_RENDERBUFFER_SIZE"/>
-            <enum name="GL_NO_ERROR"/>
             <enum name="GL_GUILTY_CONTEXT_RESET"/>
             <enum name="GL_INNOCENT_CONTEXT_RESET"/>
             <enum name="GL_UNKNOWN_CONTEXT_RESET"/>
@@ -46183,7 +46190,6 @@
                 <command name="glProgramUniform2uivEXT"/>
                 <command name="glProgramUniform3uivEXT"/>
                 <command name="glProgramUniform4uivEXT"/>
-                <command name="glProgramUniformMatrix4fvEXT"/>
                 <command name="glProgramUniformMatrix2x3fvEXT"/>
                 <command name="glProgramUniformMatrix3x2fvEXT"/>
                 <command name="glProgramUniformMatrix2x4fvEXT"/>
@@ -46809,7 +46815,7 @@
                 <enum name="GL_SR8_EXT"/>
             </require>
         </extension>
-        <extension name="GL_EXT_texture_sRGB_RG8" supported="gles2">
+        <extension name="GL_EXT_texture_sRGB_RG8" supported="gles2|gl|glcore">
             <require>
                 <enum name="GL_SRG8_EXT"/>
             </require>
@@ -48138,7 +48144,6 @@
                 <enum name="GL_CONSERVATIVE_RASTER_MODE_NV"/>
                 <enum name="GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV"/>
                 <enum name="GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV"/>
-                <enum name="GL_CONSERVATIVE_RASTER_MODE_NV"/>
                 <command name="glConservativeRasterParameteriNV"/>
             </require>
         </extension>
@@ -49202,6 +49207,12 @@
                 <command name="glPrimitiveRestartIndexNV"/>
             </require>
         </extension>
+        <extension name="GL_NV_primitive_shading_rate" supported="gl|glcore|gles2">
+            <require>
+                <enum name="GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV"/>
+                <enum name="GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV"/>
+            </require>
+        </extension>
         <extension name="GL_NV_query_resource" supported="gl">
             <require>
                 <enum name="GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV"/>
@@ -51094,6 +51105,11 @@
                 <command name="glTexEstimateMotionRegionsQCOM"/>
             </require>
         </extension>
+        <extension name="GL_QCOM_frame_extrapolation" supported="gles2">
+            <require>
+                <command name="glExtrapolateTex2DQCOM"/>
+            </require>
+        </extension>
         <extension name="GL_QCOM_texture_foveated" supported="gles2">
             <require>
                 <enum name="GL_FOVEATION_ENABLE_BIT_QCOM"/>
