[yelp] Local copy of MathJax so we don't have to hit CDN



commit 1f50a383a7a1f89b0b9e9089e151623fab60d774
Author: Shaun McCance <shaunm gnome org>
Date:   Tue Nov 20 14:34:25 2012 -0500

    Local copy of MathJax so we don't have to hit CDN

 configure.ac                                       |   44 +-
 data/Makefile.am                                   |    2 +-
 data/mathjax/LICENSE                               |  202 ++
 data/mathjax/Makefile.am                           |    7 +
 data/mathjax/MathJax.js                            |   30 +
 data/mathjax/README                                |   11 +
 data/mathjax/config/MMLorHTML.js                   |   16 +
 data/mathjax/config/Makefile.am                    |    5 +
 data/mathjax/config/yelp.js                        |   16 +
 data/mathjax/extensions/HTML-CSS/Makefile.am       |    5 +
 data/mathjax/extensions/HTML-CSS/handle-floats.js  |   16 +
 data/mathjax/extensions/Makefile.am                |   11 +
 data/mathjax/extensions/MathEvents.js              |   16 +
 data/mathjax/extensions/MathMenu.js                |   16 +
 data/mathjax/extensions/MathZoom.js                |   16 +
 data/mathjax/extensions/mml2jax.js                 |   16 +
 data/mathjax/fonts/HTML-CSS/TeX/woff/Makefile.am   |   25 +
 .../HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff     |  Bin 0 -> 40808 bytes
 .../TeX/woff/MathJax_Caligraphic-Bold.woff         |  Bin 0 -> 9912 bytes
 .../TeX/woff/MathJax_Caligraphic-Regular.woff      |  Bin 0 -> 9604 bytes
 .../HTML-CSS/TeX/woff/MathJax_Fraktur-Bold.woff    |  Bin 0 -> 22336 bytes
 .../HTML-CSS/TeX/woff/MathJax_Fraktur-Regular.woff |  Bin 0 -> 21476 bytes
 .../fonts/HTML-CSS/TeX/woff/MathJax_Main-Bold.woff |  Bin 0 -> 34464 bytes
 .../HTML-CSS/TeX/woff/MathJax_Main-Italic.woff     |  Bin 0 -> 20832 bytes
 .../HTML-CSS/TeX/woff/MathJax_Main-Regular.woff    |  Bin 0 -> 34160 bytes
 .../HTML-CSS/TeX/woff/MathJax_Math-BoldItalic.woff |  Bin 0 -> 19776 bytes
 .../HTML-CSS/TeX/woff/MathJax_Math-Italic.woff     |  Bin 0 -> 19356 bytes
 .../HTML-CSS/TeX/woff/MathJax_Math-Regular.woff    |  Bin 0 -> 19292 bytes
 .../HTML-CSS/TeX/woff/MathJax_SansSerif-Bold.woff  |  Bin 0 -> 15932 bytes
 .../TeX/woff/MathJax_SansSerif-Italic.woff         |  Bin 0 -> 14628 bytes
 .../TeX/woff/MathJax_SansSerif-Regular.woff        |  Bin 0 -> 12656 bytes
 .../HTML-CSS/TeX/woff/MathJax_Script-Regular.woff  |  Bin 0 -> 11856 bytes
 .../HTML-CSS/TeX/woff/MathJax_Size1-Regular.woff   |  Bin 0 -> 5788 bytes
 .../HTML-CSS/TeX/woff/MathJax_Size2-Regular.woff   |  Bin 0 -> 5464 bytes
 .../HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff   |  Bin 0 -> 3240 bytes
 .../HTML-CSS/TeX/woff/MathJax_Size4-Regular.woff   |  Bin 0 -> 5144 bytes
 .../TeX/woff/MathJax_Typewriter-Regular.woff       |  Bin 0 -> 17608 bytes
 data/mathjax/jax/Makefile.am                       |    1 +
 data/mathjax/jax/element/Makefile.am               |    1 +
 data/mathjax/jax/element/mml/Makefile.am           |    7 +
 data/mathjax/jax/element/mml/jax.js                |   16 +
 data/mathjax/jax/element/mml/optable/Arrows.js     |   16 +
 data/mathjax/jax/element/mml/optable/BasicLatin.js |   16 +
 .../jax/element/mml/optable/CombDiacritMarks.js    |   16 +
 .../jax/element/mml/optable/CombDiactForSymbols.js |   16 +
 data/mathjax/jax/element/mml/optable/Dingbats.js   |   16 +
 .../jax/element/mml/optable/GeneralPunctuation.js  |   16 +
 .../jax/element/mml/optable/GeometricShapes.js     |   16 +
 .../jax/element/mml/optable/GreekAndCoptic.js      |   16 +
 .../jax/element/mml/optable/Latin1Supplement.js    |   16 +
 .../jax/element/mml/optable/LetterlikeSymbols.js   |   16 +
 data/mathjax/jax/element/mml/optable/Makefile.am   |   25 +
 .../jax/element/mml/optable/MathOperators.js       |   16 +
 .../jax/element/mml/optable/MiscMathSymbolsA.js    |   16 +
 .../jax/element/mml/optable/MiscMathSymbolsB.js    |   16 +
 .../element/mml/optable/MiscSymbolsAndArrows.js    |   16 +
 .../jax/element/mml/optable/MiscTechnical.js       |   16 +
 .../jax/element/mml/optable/SpacingModLetters.js   |   16 +
 .../jax/element/mml/optable/SuppMathOperators.js   |   16 +
 .../jax/element/mml/optable/SupplementalArrowsA.js |   16 +
 .../jax/element/mml/optable/SupplementalArrowsB.js |   16 +
 data/mathjax/jax/input/Makefile.am                 |    1 +
 data/mathjax/jax/input/MathML/Makefile.am          |    7 +
 data/mathjax/jax/input/MathML/config.js            |   16 +
 data/mathjax/jax/input/MathML/entities/Makefile.am |   34 +
 data/mathjax/jax/input/MathML/entities/a.js        |   16 +
 data/mathjax/jax/input/MathML/entities/b.js        |   16 +
 data/mathjax/jax/input/MathML/entities/c.js        |   16 +
 data/mathjax/jax/input/MathML/entities/d.js        |   16 +
 data/mathjax/jax/input/MathML/entities/e.js        |   16 +
 data/mathjax/jax/input/MathML/entities/f.js        |   16 +
 data/mathjax/jax/input/MathML/entities/fr.js       |   16 +
 data/mathjax/jax/input/MathML/entities/g.js        |   16 +
 data/mathjax/jax/input/MathML/entities/h.js        |   16 +
 data/mathjax/jax/input/MathML/entities/i.js        |   16 +
 data/mathjax/jax/input/MathML/entities/j.js        |   16 +
 data/mathjax/jax/input/MathML/entities/k.js        |   16 +
 data/mathjax/jax/input/MathML/entities/l.js        |   16 +
 data/mathjax/jax/input/MathML/entities/m.js        |   16 +
 data/mathjax/jax/input/MathML/entities/n.js        |   16 +
 data/mathjax/jax/input/MathML/entities/o.js        |   16 +
 data/mathjax/jax/input/MathML/entities/opf.js      |   16 +
 data/mathjax/jax/input/MathML/entities/p.js        |   16 +
 data/mathjax/jax/input/MathML/entities/q.js        |   16 +
 data/mathjax/jax/input/MathML/entities/r.js        |   16 +
 data/mathjax/jax/input/MathML/entities/s.js        |   16 +
 data/mathjax/jax/input/MathML/entities/scr.js      |   16 +
 data/mathjax/jax/input/MathML/entities/t.js        |   16 +
 data/mathjax/jax/input/MathML/entities/u.js        |   16 +
 data/mathjax/jax/input/MathML/entities/v.js        |   16 +
 data/mathjax/jax/input/MathML/entities/w.js        |   16 +
 data/mathjax/jax/input/MathML/entities/x.js        |   16 +
 data/mathjax/jax/input/MathML/entities/y.js        |   16 +
 data/mathjax/jax/input/MathML/entities/z.js        |   16 +
 data/mathjax/jax/input/MathML/jax.js               |   16 +
 data/mathjax/jax/output/HTML-CSS/Makefile.am       |    7 +
 .../jax/output/HTML-CSS/autoload/Makefile.am       |   14 +
 .../jax/output/HTML-CSS/autoload/annotation-xml.js |   16 +
 .../jax/output/HTML-CSS/autoload/maction.js        |   16 +
 .../jax/output/HTML-CSS/autoload/menclose.js       |   16 +
 .../mathjax/jax/output/HTML-CSS/autoload/mglyph.js |   16 +
 .../jax/output/HTML-CSS/autoload/mmultiscripts.js  |   16 +
 data/mathjax/jax/output/HTML-CSS/autoload/ms.js    |   16 +
 .../mathjax/jax/output/HTML-CSS/autoload/mtable.js |   16 +
 .../jax/output/HTML-CSS/autoload/multiline.js      |   16 +
 data/mathjax/jax/output/HTML-CSS/config.js         |   16 +
 data/mathjax/jax/output/HTML-CSS/fonts/Makefile.am |    1 +
 .../HTML-CSS/fonts/TeX/AMS/Regular/Arrows.js       |   16 +
 .../HTML-CSS/fonts/TeX/AMS/Regular/BBBold.js       |   16 +
 .../HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js   |   16 +
 .../fonts/TeX/AMS/Regular/CombDiacritMarks.js      |   16 +
 .../HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js     |   16 +
 .../fonts/TeX/AMS/Regular/EnclosedAlphanum.js      |   16 +
 .../fonts/TeX/AMS/Regular/GeneralPunctuation.js    |   16 +
 .../fonts/TeX/AMS/Regular/GeometricShapes.js       |   16 +
 .../fonts/TeX/AMS/Regular/GreekAndCoptic.js        |   16 +
 .../fonts/TeX/AMS/Regular/Latin1Supplement.js      |   16 +
 .../fonts/TeX/AMS/Regular/LatinExtendedA.js        |   16 +
 .../fonts/TeX/AMS/Regular/LetterlikeSymbols.js     |   16 +
 .../output/HTML-CSS/fonts/TeX/AMS/Regular/Main.js  |   16 +
 .../HTML-CSS/fonts/TeX/AMS/Regular/Makefile.am     |   25 +
 .../fonts/TeX/AMS/Regular/MathOperators.js         |   16 +
 .../fonts/TeX/AMS/Regular/MiscMathSymbolsB.js      |   16 +
 .../HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js  |   16 +
 .../fonts/TeX/AMS/Regular/MiscTechnical.js         |   16 +
 .../output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js   |   16 +
 .../fonts/TeX/AMS/Regular/SpacingModLetters.js     |   16 +
 .../fonts/TeX/AMS/Regular/SuppMathOperators.js     |   16 +
 .../HTML-CSS/fonts/TeX/Caligraphic/Bold/Main.js    |   16 +
 .../fonts/TeX/Caligraphic/Bold/Makefile.am         |    5 +
 .../HTML-CSS/fonts/TeX/Caligraphic/Regular/Main.js |   16 +
 .../fonts/TeX/Caligraphic/Regular/Makefile.am      |    5 +
 .../HTML-CSS/fonts/TeX/Fraktur/Bold/BasicLatin.js  |   16 +
 .../output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js |   16 +
 .../HTML-CSS/fonts/TeX/Fraktur/Bold/Makefile.am    |    9 +
 .../HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js       |   16 +
 .../output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js  |   16 +
 .../fonts/TeX/Fraktur/Regular/BasicLatin.js        |   16 +
 .../HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js     |   16 +
 .../HTML-CSS/fonts/TeX/Fraktur/Regular/Makefile.am |    9 +
 .../HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js    |   16 +
 .../HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js      |   16 +
 .../output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js   |   16 +
 .../HTML-CSS/fonts/TeX/Greek/Bold/Makefile.am      |    5 +
 .../HTML-CSS/fonts/TeX/Greek/BoldItalic/Main.js    |   16 +
 .../fonts/TeX/Greek/BoldItalic/Makefile.am         |    5 +
 .../output/HTML-CSS/fonts/TeX/Greek/Italic/Main.js |   16 +
 .../HTML-CSS/fonts/TeX/Greek/Italic/Makefile.am    |    5 +
 .../HTML-CSS/fonts/TeX/Greek/Regular/Main.js       |   16 +
 .../HTML-CSS/fonts/TeX/Greek/Regular/Makefile.am   |    5 +
 .../output/HTML-CSS/fonts/TeX/Main/Bold/Arrows.js  |   16 +
 .../fonts/TeX/Main/Bold/CombDiacritMarks.js        |   16 +
 .../fonts/TeX/Main/Bold/CombDiactForSymbols.js     |   16 +
 .../fonts/TeX/Main/Bold/GeneralPunctuation.js      |   16 +
 .../fonts/TeX/Main/Bold/GeometricShapes.js         |   16 +
 .../fonts/TeX/Main/Bold/Latin1Supplement.js        |   16 +
 .../HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js |   16 +
 .../HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js |   16 +
 .../fonts/TeX/Main/Bold/LetterlikeSymbols.js       |   16 +
 .../output/HTML-CSS/fonts/TeX/Main/Bold/Main.js    |   16 +
 .../HTML-CSS/fonts/TeX/Main/Bold/Makefile.am       |   22 +
 .../HTML-CSS/fonts/TeX/Main/Bold/MathOperators.js  |   16 +
 .../fonts/TeX/Main/Bold/MiscMathSymbolsA.js        |   16 +
 .../HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js    |   16 +
 .../HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js  |   16 +
 .../fonts/TeX/Main/Bold/SpacingModLetters.js       |   16 +
 .../fonts/TeX/Main/Bold/SuppMathOperators.js       |   16 +
 .../fonts/TeX/Main/Bold/SupplementalArrowsA.js     |   16 +
 .../fonts/TeX/Main/Italic/CombDiacritMarks.js      |   16 +
 .../fonts/TeX/Main/Italic/GeneralPunctuation.js    |   16 +
 .../fonts/TeX/Main/Italic/Latin1Supplement.js      |   16 +
 .../fonts/TeX/Main/Italic/LetterlikeSymbols.js     |   16 +
 .../output/HTML-CSS/fonts/TeX/Main/Italic/Main.js  |   16 +
 .../HTML-CSS/fonts/TeX/Main/Italic/Makefile.am     |   10 +
 .../fonts/TeX/Main/Regular/CombDiacritMarks.js     |   16 +
 .../fonts/TeX/Main/Regular/GeometricShapes.js      |   16 +
 .../output/HTML-CSS/fonts/TeX/Main/Regular/Main.js |   16 +
 .../HTML-CSS/fonts/TeX/Main/Regular/Makefile.am    |   10 +
 .../HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js |   16 +
 .../fonts/TeX/Main/Regular/SpacingModLetters.js    |   16 +
 .../jax/output/HTML-CSS/fonts/TeX/Makefile.am      |   30 +
 .../HTML-CSS/fonts/TeX/Math/BoldItalic/Main.js     |   16 +
 .../HTML-CSS/fonts/TeX/Math/BoldItalic/Makefile.am |    5 +
 .../output/HTML-CSS/fonts/TeX/Math/Italic/Main.js  |   16 +
 .../HTML-CSS/fonts/TeX/Math/Italic/Makefile.am     |    5 +
 .../fonts/TeX/SansSerif/Bold/BasicLatin.js         |   16 +
 .../fonts/TeX/SansSerif/Bold/CombDiacritMarks.js   |   16 +
 .../HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js      |   16 +
 .../HTML-CSS/fonts/TeX/SansSerif/Bold/Makefile.am  |    9 +
 .../HTML-CSS/fonts/TeX/SansSerif/Bold/Other.js     |   16 +
 .../fonts/TeX/SansSerif/Italic/BasicLatin.js       |   16 +
 .../fonts/TeX/SansSerif/Italic/CombDiacritMarks.js |   16 +
 .../HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js    |   16 +
 .../fonts/TeX/SansSerif/Italic/Makefile.am         |    9 +
 .../HTML-CSS/fonts/TeX/SansSerif/Italic/Other.js   |   16 +
 .../fonts/TeX/SansSerif/Regular/BasicLatin.js      |   16 +
 .../TeX/SansSerif/Regular/CombDiacritMarks.js      |   16 +
 .../HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js   |   16 +
 .../fonts/TeX/SansSerif/Regular/Makefile.am        |    9 +
 .../HTML-CSS/fonts/TeX/SansSerif/Regular/Other.js  |   16 +
 .../fonts/TeX/Script/Regular/BasicLatin.js         |   16 +
 .../HTML-CSS/fonts/TeX/Script/Regular/Main.js      |   16 +
 .../HTML-CSS/fonts/TeX/Script/Regular/Makefile.am  |    5 +
 .../HTML-CSS/fonts/TeX/Script/Regular/Other.js     |   16 +
 .../HTML-CSS/fonts/TeX/Size1/Regular/Main.js       |   16 +
 .../HTML-CSS/fonts/TeX/Size1/Regular/Makefile.am   |    5 +
 .../HTML-CSS/fonts/TeX/Size2/Regular/Main.js       |   16 +
 .../HTML-CSS/fonts/TeX/Size2/Regular/Makefile.am   |    5 +
 .../HTML-CSS/fonts/TeX/Size3/Regular/Main.js       |   16 +
 .../HTML-CSS/fonts/TeX/Size3/Regular/Makefile.am   |    5 +
 .../HTML-CSS/fonts/TeX/Size4/Regular/Main.js       |   16 +
 .../HTML-CSS/fonts/TeX/Size4/Regular/Makefile.am   |    5 +
 .../fonts/TeX/Typewriter/Regular/BasicLatin.js     |   16 +
 .../TeX/Typewriter/Regular/CombDiacritMarks.js     |   16 +
 .../HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js  |   16 +
 .../fonts/TeX/Typewriter/Regular/Makefile.am       |    9 +
 .../HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js |   16 +
 .../output/HTML-CSS/fonts/TeX/fontdata-extra.js    |   16 +
 .../jax/output/HTML-CSS/fonts/TeX/fontdata.js      |   16 +
 data/mathjax/jax/output/HTML-CSS/jax.js            |   16 +
 data/mathjax/jax/output/Makefile.am                |    1 +
 data/mathjax/jax/output/NativeMML/Makefile.am      |    5 +
 data/mathjax/jax/output/NativeMML/config.js        |   16 +
 data/mathjax/jax/output/NativeMML/jax.js           |   16 +
 data/mathjax/unpacked/Makefile.am                  |  159 ++
 data/mathjax/unpacked/MathJax.js                   | 2476 +++++++++++++++++
 data/mathjax/unpacked/config/MMLorHTML.js          |  105 +
 .../unpacked/extensions/HTML-CSS/handle-floats.js  |   79 +
 data/mathjax/unpacked/extensions/MathEvents.js     |  533 ++++
 data/mathjax/unpacked/extensions/MathMenu.js       | 1038 +++++++
 data/mathjax/unpacked/extensions/MathZoom.js       |  316 +++
 data/mathjax/unpacked/extensions/mml2jax.js        |  207 ++
 data/mathjax/unpacked/jax/element/mml/jax.js       | 1634 +++++++++++
 .../unpacked/jax/element/mml/optable/Arrows.js     |  122 +
 .../unpacked/jax/element/mml/optable/BasicLatin.js |   65 +
 .../jax/element/mml/optable/CombDiacritMarks.js    |   35 +
 .../jax/element/mml/optable/CombDiactForSymbols.js |   36 +
 .../unpacked/jax/element/mml/optable/Dingbats.js   |   38 +
 .../jax/element/mml/optable/GeneralPunctuation.js  |   42 +
 .../jax/element/mml/optable/GeometricShapes.js     |   66 +
 .../jax/element/mml/optable/GreekAndCoptic.js      |   35 +
 .../jax/element/mml/optable/Latin1Supplement.js    |   37 +
 .../jax/element/mml/optable/LetterlikeSymbols.js   |   36 +
 .../jax/element/mml/optable/MathOperators.js       |  228 ++
 .../jax/element/mml/optable/MiscMathSymbolsA.js    |   42 +
 .../jax/element/mml/optable/MiscMathSymbolsB.js    |  168 ++
 .../element/mml/optable/MiscSymbolsAndArrows.js    |   36 +
 .../jax/element/mml/optable/MiscTechnical.js       |   40 +
 .../jax/element/mml/optable/SpacingModLetters.js   |   38 +
 .../jax/element/mml/optable/SuppMathOperators.js   |  289 ++
 .../jax/element/mml/optable/SupplementalArrowsA.js |   40 +
 .../jax/element/mml/optable/SupplementalArrowsB.js |  162 ++
 data/mathjax/unpacked/jax/input/MathML/config.js   |   38 +
 .../unpacked/jax/input/MathML/entities/a.js        |   90 +
 .../unpacked/jax/input/MathML/entities/b.js        |  116 +
 .../unpacked/jax/input/MathML/entities/c.js        |  114 +
 .../unpacked/jax/input/MathML/entities/d.js        |  112 +
 .../unpacked/jax/input/MathML/entities/e.js        |   92 +
 .../unpacked/jax/input/MathML/entities/f.js        |   60 +
 .../unpacked/jax/input/MathML/entities/fr.js       |   79 +
 .../unpacked/jax/input/MathML/entities/g.js        |   83 +
 .../unpacked/jax/input/MathML/entities/h.js        |   52 +
 .../unpacked/jax/input/MathML/entities/i.js        |   86 +
 .../unpacked/jax/input/MathML/entities/j.js        |   35 +
 .../unpacked/jax/input/MathML/entities/k.js        |   37 +
 .../unpacked/jax/input/MathML/entities/l.js        |  179 ++
 .../unpacked/jax/input/MathML/entities/m.js        |   61 +
 .../unpacked/jax/input/MathML/entities/n.js        |  220 ++
 .../unpacked/jax/input/MathML/entities/o.js        |   90 +
 .../unpacked/jax/input/MathML/entities/opf.js      |   79 +
 .../unpacked/jax/input/MathML/entities/p.js        |   84 +
 .../unpacked/jax/input/MathML/entities/q.js        |   35 +
 .../unpacked/jax/input/MathML/entities/r.js        |  138 +
 .../unpacked/jax/input/MathML/entities/s.js        |  170 ++
 .../unpacked/jax/input/MathML/entities/scr.js      |   79 +
 .../unpacked/jax/input/MathML/entities/t.js        |   86 +
 .../unpacked/jax/input/MathML/entities/u.js        |   92 +
 .../unpacked/jax/input/MathML/entities/v.js        |   73 +
 .../unpacked/jax/input/MathML/entities/w.js        |   35 +
 .../unpacked/jax/input/MathML/entities/x.js        |   47 +
 .../unpacked/jax/input/MathML/entities/y.js        |   41 +
 .../unpacked/jax/input/MathML/entities/z.js        |   42 +
 data/mathjax/unpacked/jax/input/MathML/jax.js      |  700 +++++
 .../jax/output/HTML-CSS/autoload/annotation-xml.js |   58 +
 .../jax/output/HTML-CSS/autoload/maction.js        |  220 ++
 .../jax/output/HTML-CSS/autoload/menclose.js       |  305 +++
 .../jax/output/HTML-CSS/autoload/mglyph.js         |  110 +
 .../jax/output/HTML-CSS/autoload/mmultiscripts.js  |  146 +
 .../unpacked/jax/output/HTML-CSS/autoload/ms.js    |   53 +
 .../jax/output/HTML-CSS/autoload/mtable.js         |  479 ++++
 .../jax/output/HTML-CSS/autoload/multiline.js      |  692 +++++
 .../mathjax/unpacked/jax/output/HTML-CSS/config.js |  155 ++
 .../HTML-CSS/fonts/TeX/AMS/Regular/Arrows.js       |   65 +
 .../HTML-CSS/fonts/TeX/AMS/Regular/BBBold.js       |   55 +
 .../HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js   |   33 +
 .../fonts/TeX/AMS/Regular/CombDiacritMarks.js      |   29 +
 .../HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js     |   29 +
 .../fonts/TeX/AMS/Regular/EnclosedAlphanum.js      |   28 +
 .../fonts/TeX/AMS/Regular/GeneralPunctuation.js    |   28 +
 .../fonts/TeX/AMS/Regular/GeometricShapes.js       |   36 +
 .../fonts/TeX/AMS/Regular/GreekAndCoptic.js        |   29 +
 .../fonts/TeX/AMS/Regular/Latin1Supplement.js      |   31 +
 .../fonts/TeX/AMS/Regular/LatinExtendedA.js        |   28 +
 .../fonts/TeX/AMS/Regular/LetterlikeSymbols.js     |   34 +
 .../output/HTML-CSS/fonts/TeX/AMS/Regular/Main.js  |   52 +
 .../fonts/TeX/AMS/Regular/MathOperators.js         |  138 +
 .../fonts/TeX/AMS/Regular/MiscMathSymbolsB.js      |   28 +
 .../HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js  |   28 +
 .../fonts/TeX/AMS/Regular/MiscTechnical.js         |   29 +
 .../output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js   |   43 +
 .../fonts/TeX/AMS/Regular/SpacingModLetters.js     |   29 +
 .../fonts/TeX/AMS/Regular/SuppMathOperators.js     |   50 +
 .../HTML-CSS/fonts/TeX/Caligraphic/Bold/Main.js    |   97 +
 .../HTML-CSS/fonts/TeX/Caligraphic/Regular/Main.js |   96 +
 .../HTML-CSS/fonts/TeX/Fraktur/Bold/BasicLatin.js  |  109 +
 .../output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js |   37 +
 .../HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js       |   30 +
 .../output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js  |   34 +
 .../fonts/TeX/Fraktur/Regular/BasicLatin.js        |  109 +
 .../HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js     |   36 +
 .../HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js    |   30 +
 .../HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js      |   35 +
 .../output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js   |   44 +
 .../HTML-CSS/fonts/TeX/Greek/BoldItalic/Main.js    |  111 +
 .../output/HTML-CSS/fonts/TeX/Greek/Italic/Main.js |  110 +
 .../HTML-CSS/fonts/TeX/Greek/Regular/Main.js       |   43 +
 .../output/HTML-CSS/fonts/TeX/Main/Bold/Arrows.js  |   51 +
 .../fonts/TeX/Main/Bold/CombDiacritMarks.js        |   39 +
 .../fonts/TeX/Main/Bold/CombDiactForSymbols.js     |   28 +
 .../fonts/TeX/Main/Bold/GeneralPunctuation.js      |   44 +
 .../fonts/TeX/Main/Bold/GeometricShapes.js         |   32 +
 .../fonts/TeX/Main/Bold/Latin1Supplement.js        |   36 +
 .../HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js |   28 +
 .../HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js |   28 +
 .../fonts/TeX/Main/Bold/LetterlikeSymbols.js       |   33 +
 .../output/HTML-CSS/fonts/TeX/Main/Bold/Main.js    |  162 ++
 .../HTML-CSS/fonts/TeX/Main/Bold/MathOperators.js  |   94 +
 .../fonts/TeX/Main/Bold/MiscMathSymbolsA.js        |   29 +
 .../HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js    |   34 +
 .../HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js  |   33 +
 .../fonts/TeX/Main/Bold/SpacingModLetters.js       |   36 +
 .../fonts/TeX/Main/Bold/SuppMathOperators.js       |   30 +
 .../fonts/TeX/Main/Bold/SupplementalArrowsA.js     |   34 +
 .../fonts/TeX/Main/Italic/CombDiacritMarks.js      |   38 +
 .../fonts/TeX/Main/Italic/GeneralPunctuation.js    |   33 +
 .../fonts/TeX/Main/Italic/Latin1Supplement.js      |   28 +
 .../fonts/TeX/Main/Italic/LetterlikeSymbols.js     |   28 +
 .../output/HTML-CSS/fonts/TeX/Main/Italic/Main.js  |  138 +
 .../fonts/TeX/Main/Regular/CombDiacritMarks.js     |   39 +
 .../fonts/TeX/Main/Regular/GeometricShapes.js      |   32 +
 .../output/HTML-CSS/fonts/TeX/Main/Regular/Main.js |  305 +++
 .../HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js |   34 +
 .../fonts/TeX/Main/Regular/SpacingModLetters.js    |   28 +
 .../HTML-CSS/fonts/TeX/Math/BoldItalic/Main.js     |  206 ++
 .../output/HTML-CSS/fonts/TeX/Math/Italic/Main.js  |  205 ++
 .../fonts/TeX/SansSerif/Bold/BasicLatin.js         |  115 +
 .../fonts/TeX/SansSerif/Bold/CombDiacritMarks.js   |   38 +
 .../HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js      |   37 +
 .../HTML-CSS/fonts/TeX/SansSerif/Bold/Other.js     |   47 +
 .../fonts/TeX/SansSerif/Italic/BasicLatin.js       |  115 +
 .../fonts/TeX/SansSerif/Italic/CombDiacritMarks.js |   38 +
 .../HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js    |   37 +
 .../HTML-CSS/fonts/TeX/SansSerif/Italic/Other.js   |   47 +
 .../fonts/TeX/SansSerif/Regular/BasicLatin.js      |  115 +
 .../TeX/SansSerif/Regular/CombDiacritMarks.js      |   38 +
 .../HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js   |   36 +
 .../HTML-CSS/fonts/TeX/SansSerif/Regular/Other.js  |   47 +
 .../fonts/TeX/Script/Regular/BasicLatin.js         |   54 +
 .../HTML-CSS/fonts/TeX/Script/Regular/Main.js      |   63 +
 .../HTML-CSS/fonts/TeX/Script/Regular/Other.js     |   28 +
 .../HTML-CSS/fonts/TeX/Size1/Regular/Main.js       |   75 +
 .../HTML-CSS/fonts/TeX/Size2/Regular/Main.js       |   67 +
 .../HTML-CSS/fonts/TeX/Size3/Regular/Main.js       |   51 +
 .../HTML-CSS/fonts/TeX/Size4/Regular/Main.js       |   78 +
 .../fonts/TeX/Typewriter/Regular/BasicLatin.js     |  123 +
 .../TeX/Typewriter/Regular/CombDiacritMarks.js     |   36 +
 .../HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js  |   36 +
 .../HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js |   44 +
 .../output/HTML-CSS/fonts/TeX/fontdata-extra.js    |  236 ++
 .../jax/output/HTML-CSS/fonts/TeX/fontdata.js      | 1956 ++++++++++++++
 data/mathjax/unpacked/jax/output/HTML-CSS/jax.js   | 2835 ++++++++++++++++++++
 .../unpacked/jax/output/NativeMML/config.js        |   47 +
 data/mathjax/unpacked/jax/output/NativeMML/jax.js  |  705 +++++
 data/xslt/yelp-common.xsl.in                       |   14 +-
 384 files changed, 27538 insertions(+), 3 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 7e4a783..2e4df03 100644
--- a/configure.ac
+++ b/configure.ac
@@ -35,7 +35,7 @@ PKG_CHECK_MODULES(YELP,
 	libxslt >= 1.1.4
 	libexslt >= 0.8.1
 	sqlite3
-	webkitgtk-3.0 >= 1.3.2
+	webkitgtk-3.0 >= 1.3.10
 	yelp-xsl >= 3.1.2
 ])
 AC_SUBST([YELP_CFLAGS])
@@ -220,6 +220,48 @@ data/icons/hicolor/16x16/status/Makefile
 data/icons/hicolor/scalable/Makefile
 data/icons/hicolor/scalable/actions/Makefile
 data/icons/hicolor/scalable/status/Makefile
+data/mathjax/Makefile
+data/mathjax/config/Makefile
+data/mathjax/extensions/HTML-CSS/Makefile
+data/mathjax/extensions/Makefile
+data/mathjax/fonts/HTML-CSS/TeX/woff/Makefile
+data/mathjax/jax/Makefile
+data/mathjax/jax/element/Makefile
+data/mathjax/jax/element/mml/Makefile
+data/mathjax/jax/element/mml/optable/Makefile
+data/mathjax/jax/input/Makefile
+data/mathjax/jax/input/MathML/Makefile
+data/mathjax/jax/input/MathML/entities/Makefile
+data/mathjax/jax/output/HTML-CSS/Makefile
+data/mathjax/jax/output/HTML-CSS/autoload/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/Italic/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Makefile
+data/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Makefile
+data/mathjax/jax/output/Makefile
+data/mathjax/jax/output/NativeMML/Makefile
+data/mathjax/unpacked/Makefile
 data/xslt/Makefile
 data/xslt/db2html.xsl
 data/xslt/info2html.xsl
diff --git a/data/Makefile.am b/data/Makefile.am
index bc0bdc2..234e613 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = domains dtd icons xslt
+SUBDIRS = domains dtd icons mathjax xslt
 
 #This has to be defined, because GSETTINGS_CHECK_RULE adds to it
 MOSTLYCLEANFILES =
diff --git a/data/mathjax/LICENSE b/data/mathjax/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/data/mathjax/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/data/mathjax/Makefile.am b/data/mathjax/Makefile.am
new file mode 100644
index 0000000..0730332
--- /dev/null
+++ b/data/mathjax/Makefile.am
@@ -0,0 +1,7 @@
+SUBDIRS = config extensions fonts/HTML-CSS/TeX/woff jax unpacked
+
+mjdir=$(datadir)/yelp/mathjax
+
+mj_DATA = MathJax.js
+
+EXTRA_DIST = $(mj_DATA) LICENSE README
diff --git a/data/mathjax/MathJax.js b/data/mathjax/MathJax.js
new file mode 100644
index 0000000..44eecb7
--- /dev/null
+++ b/data/mathjax/MathJax.js
@@ -0,0 +1,30 @@
+/*************************************************************
+ *
+ *  MathJax.js
+ *  
+ *  The main code for the MathJax math-typesetting library.  See 
+ *  http://www.mathjax.org/ for details.
+ *  
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+if (!window.MathJax) {window.MathJax = {}}
+
+MathJax.isPacked = true;
+
+if(document.getElementById&&document.childNodes&&document.createElement){if(!window.MathJax){window.MathJax={}}if(!MathJax.Hub){MathJax.version="2.1";MathJax.fileversion="2.1";(function(d){var b=window[d];if(!b){b=window[d]={}}var f=[];var c=function(g){var h=g.constructor;if(!h){h=new Function("")}for(var i in g){if(i!=="constructor"&&g.hasOwnProperty(i)){h[i]=g[i]}}return h};var a=function(){return new Function("return arguments.callee.Init.call(this,arguments)")};var e=a();e.prototype={bug_test:1};if(!e.prototype.bug_test){a=function(){return function(){return arguments.callee.Init.call(this,arguments)}}}b.Object=c({constructor:a(),Subclass:function(g,i){var h=a();h.SUPER=this;h.Init=this.Init;h.Subclass=this.Subclass;h.Augment=this.Augment;h.protoFunction=this.protoFunction;h.can=this.can;h.has=this.has;h.isa=this.isa;h.prototype=new this(f);h.prototype.constructor=h;h.Augment(g,i);return h},Init:function(g){var h=this;if(g.length===1&&g[0]===f){return h}if(!(h instanceo
 f g.callee)){h=new g.callee(f)}return h.Init.apply(h,g)||h},Augment:function(g,h){var i;if(g!=null){for(i in g){if(g.hasOwnProperty(i)){this.protoFunction(i,g[i])}}if(g.toString!==this.prototype.toString&&g.toString!=={}.toString){this.protoFunction("toString",g.toString)}}if(h!=null){for(i in h){if(h.hasOwnProperty(i)){this[i]=h[i]}}}return this},protoFunction:function(h,g){this.prototype[h]=g;if(typeof g==="function"){g.SUPER=this.SUPER.prototype}},prototype:{Init:function(){},SUPER:function(g){return g.callee.SUPER},can:function(g){return typeof(this[g])==="function"},has:function(g){return typeof(this[g])!=="undefined"},isa:function(g){return(g instanceof Object)&&(this instanceof g)}},can:function(g){return this.prototype.can.call(this,g)},has:function(g){return this.prototype.has.call(this,g)},isa:function(h){var g=this;while(g){if(g===h){return true}else{g=g.SUPER}}return false},SimpleSUPER:c({constructor:function(g){return this.SimpleSUPER.define(g)},define:function(
 g){var i={};if(g!=null){for(var h in g){if(g.hasOwnProperty(h)){i[h]=this.wrap(h,g[h])}}if(g.toString!==this.prototype.toString&&g.toString!=={}.toString){i.toString=this.wrap("toString",g.toString)}}return i},wrap:function(i,h){if(typeof(h)==="function"&&h.toString().match(/\.\s*SUPER\s*\(/)){var g=new Function(this.wrapper);g.label=i;g.original=h;h=g;g.toString=this.stringify}return h},wrapper:function(){var h=arguments.callee;this.SUPER=h.SUPER[h.label];try{var g=h.original.apply(this,arguments)}catch(i){delete this.SUPER;throw i}delete this.SUPER;return g}.toString().replace(/^\s*function\s*\(\)\s*\{\s*/i,"").replace(/\s*\}\s*$/i,""),toString:function(){return this.original.toString.apply(this.original,arguments)}})})})("MathJax");(function(BASENAME){var BASE=window[BASENAME];if(!BASE){BASE=window[BASENAME]={}}var CALLBACK=function(data){var cb=new Function("return arguments.callee.execute.apply(arguments.callee,arguments)");for(var id in CALLBACK.prototype){if(CALLBACK.
 prototype.hasOwnProperty(id)){if(typeof(data[id])!=="undefined"){cb[id]=data[id]}else{cb[id]=CALLBACK.prototype[id]}}}cb.toString=CALLBACK.prototype.toString;return cb};CALLBACK.prototype={isCallback:true,hook:function(){},data:[],object:window,execute:function(){if(!this.called||this.autoReset){this.called=!this.autoReset;return this.hook.apply(this.object,this.data.concat([].slice.call(arguments,0)))}},reset:function(){delete this.called},toString:function(){return this.hook.toString.apply(this.hook,arguments)}};var ISCALLBACK=function(f){return(typeof(f)==="function"&&f.isCallback)};var EVAL=function(code){return eval.call(window,code)};EVAL("var __TeSt_VaR__ = 1");if(window.__TeSt_VaR__){try{delete window.__TeSt_VaR__}catch(error){window.__TeSt_VaR__=null}}else{if(window.execScript){EVAL=function(code){BASE.__code=code;code="try {"+BASENAME+".__result = eval("+BASENAME+".__code)} catch(err) {"+BASENAME+".__result = err}";window.execScript(code);var result=BASE.__result;d
 elete BASE.__result;delete BASE.__code;if(result instanceof Error){throw result}return result}}else{EVAL=function(code){BASE.__code=code;code="try {"+BASENAME+".__result = eval("+BASENAME+".__code)} catch(err) {"+BASENAME+".__result = err}";var head=(document.getElementsByTagName("head"))[0];if(!head){head=document.body}var script=document.createElement("script");script.appendChild(document.createTextNode(code));head.appendChild(script);head.removeChild(script);var result=BASE.__result;delete BASE.__result;delete BASE.__code;if(result instanceof Error){throw result}return result}}}var USING=function(args,i){if(arguments.length>1){if(arguments.length===2&&!(typeof arguments[0]==="function")&&arguments[0] instanceof Object&&typeof arguments[1]==="number"){args=[].slice.call(args,i)}else{args=[].slice.call(arguments,0)}}if(args instanceof Array&&args.length===1){args=args[0]}if(typeof args==="function"){if(args.execute===CALLBACK.prototype.execute){return args}return CALLBACK({
 hook:args})}else{if(args instanceof Array){if(typeof(args[0])==="string"&&args[1] instanceof Object&&typeof args[1][args[0]]==="function"){return CALLBACK({hook:args[1][args[0]],object:args[1],data:args.slice(2)})}else{if(typeof args[0]==="function"){return CALLBACK({hook:args[0],data:args.slice(1)})}else{if(typeof args[1]==="function"){return CALLBACK({hook:args[1],object:args[0],data:args.slice(2)})}}}}else{if(typeof(args)==="string"){return CALLBACK({hook:EVAL,data:[args]})}else{if(args instanceof Object){return CALLBACK(args)}else{if(typeof(args)==="undefined"){return CALLBACK({})}}}}}throw Error("Can't make callback from given data")};var DELAY=function(time,callback){callback=USING(callback);callback.timeout=setTimeout(callback,time);return callback};var WAITFOR=function(callback,signal){callback=USING(callback);if(!callback.called){WAITSIGNAL(callback,signal);signal.pending++}};var WAITEXECUTE=function(){var signals=this.signal;delete this.signal;this.execute=this.old
 Execute;delete this.oldExecute;var result=this.execute.apply(this,arguments);if(ISCALLBACK(result)&&!result.called){WAITSIGNAL(result,signals)}else{for(var i=0,m=signals.length;i<m;i++){signals[i].pending--;if(signals[i].pending<=0){signals[i].call()}}}};var WAITSIGNAL=function(callback,signals){if(!(signals instanceof Array)){signals=[signals]}if(!callback.signal){callback.oldExecute=callback.execute;callback.execute=WAITEXECUTE;callback.signal=signals}else{if(signals.length===1){callback.signal.push(signals[0])}else{callback.signal=callback.signal.concat(signals)}}};var AFTER=function(callback){callback=USING(callback);callback.pending=0;for(var i=1,m=arguments.length;i<m;i++){if(arguments[i]){WAITFOR(arguments[i],callback)}}if(callback.pending===0){var result=callback();if(ISCALLBACK(result)){callback=result}}return callback};var HOOKS=MathJax.Object.Subclass({Init:function(reset){this.hooks=[];this.reset=reset},Add:function(hook,priority){if(priority==null){priority=10}i
 f(!ISCALLBACK(hook)){hook=USING(hook)}hook.priority=priority;var i=this.hooks.length;while(i>0&&priority<this.hooks[i-1].priority){i--}this.hooks.splice(i,0,hook);return hook},Remove:function(hook){for(var i=0,m=this.hooks.length;i<m;i++){if(this.hooks[i]===hook){this.hooks.splice(i,1);return}}},Execute:function(){var callbacks=[{}];for(var i=0,m=this.hooks.length;i<m;i++){if(this.reset){this.hooks[i].reset()}var result=this.hooks[i].apply(window,arguments);if(ISCALLBACK(result)&&!result.called){callbacks.push(result)}}if(callbacks.length===1){return null}if(callbacks.length===2){return callbacks[1]}return AFTER.apply({},callbacks)}});var EXECUTEHOOKS=function(hooks,data,reset){if(!hooks){return null}if(!(hooks instanceof Array)){hooks=[hooks]}if(!(data instanceof Array)){data=(data==null?[]:[data])}var handler=HOOKS(reset);for(var i=0,m=hooks.length;i<m;i++){handler.Add(hooks[i])}return handler.Execute.apply(handler,data)};var QUEUE=BASE.Object.Subclass({Init:function(){thi
 s.pending=0;this.running=0;this.queue=[];this.Push.apply(this,arguments)},Push:function(){var callback;for(var i=0,m=arguments.length;i<m;i++){callback=USING(arguments[i]);if(callback===arguments[i]&&!callback.called){callback=USING(["wait",this,callback])}this.queue.push(callback)}if(!this.running&&!this.pending){this.Process()}return callback},Process:function(queue){while(!this.running&&!this.pending&&this.queue.length){var callback=this.queue[0];queue=this.queue.slice(1);this.queue=[];this.Suspend();var result=callback();this.Resume();if(queue.length){this.queue=queue.concat(this.queue)}if(ISCALLBACK(result)&&!result.called){WAITFOR(result,this)}}},Suspend:function(){this.running++},Resume:function(){if(this.running){this.running--}},call:function(){this.Process.apply(this,arguments)},wait:function(callback){return callback}});var SIGNAL=QUEUE.Subclass({Init:function(name){QUEUE.prototype.Init.call(this);this.name=name;this.posted=[];this.listeners=HOOKS(true)},Post:func
 tion(message,callback,forget){callback=USING(callback);if(this.posting||this.pending){this.Push(["Post",this,message,callback,forget])}else{this.callback=callback;callback.reset();if(!forget){this.posted.push(message)}this.Suspend();this.posting=true;var result=this.listeners.Execute(message);if(ISCALLBACK(result)&&!result.called){WAITFOR(result,this)}this.Resume();delete this.posting;if(!this.pending){this.call()}}return callback},Clear:function(callback){callback=USING(callback);if(this.posting||this.pending){callback=this.Push(["Clear",this,callback])}else{this.posted=[];callback()}return callback},call:function(){this.callback(this);this.Process()},Interest:function(callback,ignorePast,priority){callback=USING(callback);this.listeners.Add(callback,priority);if(!ignorePast){for(var i=0,m=this.posted.length;i<m;i++){callback.reset();var result=callback(this.posted[i]);if(ISCALLBACK(result)&&i===this.posted.length-1){WAITFOR(result,this)}}}return callback},NoInterest:functi
 on(callback){this.listeners.Remove(callback)},MessageHook:function(msg,callback,priority){callback=USING(callback);if(!this.hooks){this.hooks={};this.Interest(["ExecuteHooks",this])}if(!this.hooks[msg]){this.hooks[msg]=HOOKS(true)}this.hooks[msg].Add(callback,priority);for(var i=0,m=this.posted.length;i<m;i++){if(this.posted[i]==msg){callback.reset();callback(this.posted[i])}}return callback},ExecuteHooks:function(msg,more){var type=((msg instanceof Array)?msg[0]:msg);if(!this.hooks[type]){return null}return this.hooks[type].Execute(msg)}},{signals:{},find:function(name){if(!SIGNAL.signals[name]){SIGNAL.signals[name]=new SIGNAL(name)}return SIGNAL.signals[name]}});BASE.Callback=BASE.CallBack=USING;BASE.Callback.Delay=DELAY;BASE.Callback.After=AFTER;BASE.Callback.Queue=QUEUE;BASE.Callback.Signal=SIGNAL.find;BASE.Callback.Hooks=HOOKS;BASE.Callback.ExecuteHooks=EXECUTEHOOKS})("MathJax");(function(d){var a=window[d];if(!a){a=window[d]={}}var c=(navigator.vendor==="Apple Computer
 , Inc."&&typeof navigator.vendorSub==="undefined");var f=0;var g=function(h){if(document.styleSheets&&document.styleSheets.length>f){f=document.styleSheets.length}if(!h){h=(document.getElementsByTagName("head"))[0];if(!h){h=document.body}}return h};var e=[];var b=function(){for(var j=0,h=e.length;j<h;j++){a.Ajax.head.removeChild(e[j])}e=[]};a.Ajax={loaded:{},loading:{},loadHooks:{},timeout:15*1000,styleDelay:1,config:{root:""},STATUS:{OK:1,ERROR:-1},rootPattern:new RegExp("^\\["+d+"\\]"),fileURL:function(h){return h.replace(this.rootPattern,this.config.root)},Require:function(j,m){m=a.Callback(m);var k;if(j instanceof Object){for(var h in j){}k=h.toUpperCase();j=j[h]}else{k=j.split(/\./).pop().toUpperCase()}j=this.fileURL(j);if(this.loaded[j]){m(this.loaded[j])}else{var l={};l[k]=j;this.Load(l,m)}return m},Load:function(j,l){l=a.Callback(l);var k;if(j instanceof Object){for(var h in j){}k=h.toUpperCase();j=j[h]}else{k=j.split(/\./).pop().toUpperCase()}j=this.fileURL(j);if(th
 is.loading[j]){this.addHook(j,l)}else{this.head=g(this.head);if(this.loader[k]){this.loader[k].call(this,j,l)}else{throw Error("Can't load files of type "+k)}}return l},LoadHook:function(k,l,j){l=a.Callback(l);if(k instanceof Object){for(var h in k){k=k[h]}}k=this.fileURL(k);if(this.loaded[k]){l(this.loaded[k])}else{this.addHook(k,l,j)}return l},addHook:function(i,j,h){if(!this.loadHooks[i]){this.loadHooks[i]=MathJax.Callback.Hooks()}this.loadHooks[i].Add(j,h)},Preloading:function(){for(var k=0,h=arguments.length;k<h;k++){var j=this.fileURL(arguments[k]);if(!this.loading[j]){this.loading[j]={preloaded:true}}}},loader:{JS:function(i,k){var h=document.createElement("script");var j=a.Callback(["loadTimeout",this,i]);this.loading[i]={callback:k,message:a.Message.File(i),timeout:setTimeout(j,this.timeout),status:this.STATUS.OK,script:h};h.onerror=j;h.type="text/javascript";h.src=i;this.head.appendChild(h)},CSS:function(h,j){var i=document.createElement("link");i.rel="stylesheet";
 i.type="text/css";i.href=h;this.loading[h]={callback:j,message:a.Message.File(h),status:this.STATUS.OK};this.head.appendChild(i);this.timer.create.call(this,[this.timer.file,h],i)}},timer:{create:function(i,h){i=a.Callback(i);if(h.nodeName==="STYLE"&&h.styleSheet&&typeof(h.styleSheet.cssText)!=="undefined"){i(this.STATUS.OK)}else{if(window.chrome&&typeof(window.sessionStorage)!=="undefined"&&h.nodeName==="STYLE"){i(this.STATUS.OK)}else{if(c){this.timer.start(this,[this.timer.checkSafari2,f++,i],this.styleDelay)}else{this.timer.start(this,[this.timer.checkLength,h,i],this.styleDelay)}}}return i},start:function(i,h,j,k){h=a.Callback(h);h.execute=this.execute;h.time=this.time;h.STATUS=i.STATUS;h.timeout=k||i.timeout;h.delay=h.total=0;if(j){setTimeout(h,j)}else{h()}},time:function(h){this.total+=this.delay;this.delay=Math.floor(this.delay*1.05+5);if(this.total>=this.timeout){h(this.STATUS.ERROR);return 1}return 0},file:function(i,h){if(h<0){a.Ajax.loadTimeout(i)}else{a.Ajax.load
 Complete(i)}},execute:function(){this.hook.call(this.object,this,this.data[0],this.data[1])},checkSafari2:function(h,i,j){if(h.time(j)){return}if(document.styleSheets.length>i&&document.styleSheets[i].cssRules&&document.styleSheets[i].cssRules.length){j(h.STATUS.OK)}else{setTimeout(h,h.delay)}},checkLength:function(h,k,m){if(h.time(m)){return}var l=0;var i=(k.sheet||k.styleSheet);try{if((i.cssRules||i.rules||[]).length>0){l=1}}catch(j){if(j.message.match(/protected variable|restricted URI/)){l=1}else{if(j.message.match(/Security error/)){l=1}}}if(l){setTimeout(a.Callback([m,h.STATUS.OK]),0)}else{setTimeout(h,h.delay)}}},loadComplete:function(h){h=this.fileURL(h);var i=this.loading[h];if(i&&!i.preloaded){a.Message.Clear(i.message);clearTimeout(i.timeout);if(i.script){if(e.length===0){setTimeout(b,0)}e.push(i.script)}this.loaded[h]=i.status;delete this.loading[h];this.addHook(h,i.callback)}else{if(i){delete this.loading[h]}this.loaded[h]=this.STATUS.OK;i={status:this.STATUS.OK
 }}if(!this.loadHooks[h]){return null}return this.loadHooks[h].Execute(i.status)},loadTimeout:function(h){if(this.loading[h].timeout){clearTimeout(this.loading[h].timeout)}this.loading[h].status=this.STATUS.ERROR;this.loadError(h);this.loadComplete(h)},loadError:function(h){a.Message.Set("File failed to load: "+h,null,2000);a.Hub.signal.Post(["file load error",h])},Styles:function(j,k){var h=this.StyleString(j);if(h===""){k=a.Callback(k);k()}else{var i=document.createElement("style");i.type="text/css";this.head=g(this.head);this.head.appendChild(i);if(i.styleSheet&&typeof(i.styleSheet.cssText)!=="undefined"){i.styleSheet.cssText=h}else{i.appendChild(document.createTextNode(h))}k=this.timer.create.call(this,k,i)}return k},StyleString:function(m){if(typeof(m)==="string"){return m}var j="",n,l;for(n in m){if(m.hasOwnProperty(n)){if(typeof m[n]==="string"){j+=n+" {"+m[n]+"}\n"}else{if(m[n] instanceof Array){for(var k=0;k<m[n].length;k++){l={};l[n]=m[n][k];j+=this.StyleString(l)}}
 else{if(n.substr(0,6)==="@media"){j+=n+" {"+this.StyleString(m[n])+"}\n"}else{if(m[n]!=null){l=[];for(var h in m[n]){if(m[n].hasOwnProperty(h)){if(m[n][h]!=null){l[l.length]=h+": "+m[n][h]}}}j+=n+" {"+l.join("; ")+"}\n"}}}}}}return j}}})("MathJax");MathJax.HTML={Element:function(c,e,d){var f=document.createElement(c);if(e){if(e.style){var b=e.style;e.style={};for(var g in b){if(b.hasOwnProperty(g)){e.style[g.replace(/-([a-z])/g,this.ucMatch)]=b[g]}}}MathJax.Hub.Insert(f,e)}if(d){if(!(d instanceof Array)){d=[d]}for(var a=0;a<d.length;a++){if(d[a] instanceof Array){f.appendChild(this.Element(d[a][0],d[a][1],d[a][2]))}else{f.appendChild(document.createTextNode(d[a]))}}}return f},ucMatch:function(a,b){return b.toUpperCase()},addElement:function(b,a,d,c){return b.appendChild(this.Element(a,d,c))},TextNode:function(a){return document.createTextNode(a)},addText:function(a,b){return a.appendChild(this.TextNode(b))},setScript:function(a,b){if(this.setScriptBug){a.text=b}else{while(a.
 firstChild){a.removeChild(a.firstChild)}this.addText(a,b)}},getScript:function(a){var b=(a.text===""?a.innerHTML:a.text);return b.replace(/^\s+/,"").replace(/\s+$/,"")},Cookie:{prefix:"mjx",expires:365,Set:function(a,d){var c=[];if(d){for(var f in d){if(d.hasOwnProperty(f)){c.push(f+":"+d[f].toString().replace(/&/g,"&&"))}}}var b=this.prefix+"."+a+"="+escape(c.join("&;"));if(this.expires){var e=new Date();e.setDate(e.getDate()+this.expires);b+="; expires="+e.toGMTString()}document.cookie=b+"; path=/"},Get:function(c,h){if(!h){h={}}var g=new RegExp("(?:^|;\\s*)"+this.prefix+"\\."+c+"=([^;]*)(?:;|$)");var b=g.exec(document.cookie);if(b&&b[1]!==""){var e=unescape(b[1]).split("&;");for(var d=0,a=e.length;d<a;d++){b=e[d].match(/([^:]+):(.*)/);var f=b[2].replace(/&&/g,"&");if(f==="true"){f=true}else{if(f==="false"){f=false}else{if(f.match(/^-?(\d+(\.\d+)?|\.\d+)$/)){f=parseFloat(f)}}}h[b[1]]=f}}return h}}};MathJax.Message={ready:false,log:[{}],current:null,textNodeBug:(navigator.v
 endor==="Apple Computer, Inc."&&typeof navigator.vendorSub==="undefined")||(window.hasOwnProperty&&window.hasOwnProperty("konqueror")),styles:{"#MathJax_Message":{position:"fixed",left:"1px",bottom:"2px","background-color":"#E6E6E6",border:"1px solid #959595",margin:"0px",padding:"2px 8px","z-index":"102",color:"black","font-size":"80%",width:"auto","white-space":"nowrap"},"#MathJax_MSIE_Frame":{position:"absolute",top:0,left:0,width:"0px","z-index":101,border:"0px",margin:"0px",padding:"0px"}},browsers:{MSIE:function(a){MathJax.Hub.config.styles["#MathJax_Message"].position="absolute";MathJax.Message.quirks=(document.compatMode==="BackCompat")},Chrome:function(a){MathJax.Hub.config.styles["#MathJax_Message"].bottom="1.5em";MathJax.Hub.config.styles["#MathJax_Message"].left="1em"}},Init:function(a){if(a){this.ready=true}if(!document.body||!this.ready){return false}if(this.div&&this.div.parentNode==null){this.div=document.getElementById("MathJax_Message");if(this.div){this.te
 xt=this.div.firstChild}}if(!this.div){var b=document.body;if(MathJax.Hub.Browser.isMSIE){b=this.frame=this.addDiv(document.body);b.removeAttribute("id");b.style.position="absolute";b.style.border=b.style.margin=b.style.padding="0px";b.style.zIndex="101";b.style.height="0px";b=this.addDiv(b);b.id="MathJax_MSIE_Frame";window.attachEvent("onscroll",this.MoveFrame);window.attachEvent("onresize",this.MoveFrame);this.MoveFrame()}this.div=this.addDiv(b);this.div.style.display="none";this.text=this.div.appendChild(document.createTextNode(""))}return true},addDiv:function(a){var b=document.createElement("div");b.id="MathJax_Message";if(a.firstChild){a.insertBefore(b,a.firstChild)}else{a.appendChild(b)}return b},MoveFrame:function(){var a=(MathJax.Message.quirks?document.body:document.documentElement);var b=MathJax.Message.frame;b.style.left=a.scrollLeft+"px";b.style.top=a.scrollTop+"px";b.style.width=a.clientWidth+"px";b=b.firstChild;b.style.height=a.clientHeight+"px"},filterText:fun
 ction(a,b){if(MathJax.Hub.config.messageStyle==="simple"){if(a.match(/^Loading /)){if(!this.loading){this.loading="Loading "}a=this.loading;this.loading+="."}else{if(a.match(/^Processing /)){if(!this.processing){this.processing="Processing "}a=this.processing;this.processing+="."}else{if(a.match(/^Typesetting /)){if(!this.typesetting){this.typesetting="Typesetting "}a=this.typesetting;this.typesetting+="."}}}}return a},Set:function(b,c,a){if(this.timer){clearTimeout(this.timer);delete this.timeout}if(c==null){c=this.log.length;this.log[c]={}}this.log[c].text=b;this.log[c].filteredText=b=this.filterText(b,c);if(typeof(this.log[c].next)==="undefined"){this.log[c].next=this.current;if(this.current!=null){this.log[this.current].prev=c}this.current=c}if(this.current===c&&MathJax.Hub.config.messageStyle!=="none"){if(this.Init()){if(this.textNodeBug){this.div.innerHTML=b}else{this.text.nodeValue=b}this.div.style.display="";if(this.status){window.status="";delete this.status}}else{w
 indow.status=b;this.status=true}}if(a){setTimeout(MathJax.Callback(["Clear",this,c]),a)}else{if(a==0){this.Clear(c,0)}}return c},Clear:function(b,a){if(this.log[b].prev!=null){this.log[this.log[b].prev].next=this.log[b].next}if(this.log[b].next!=null){this.log[this.log[b].next].prev=this.log[b].prev}if(this.current===b){this.current=this.log[b].next;if(this.text){if(this.div.parentNode==null){this.Init()}if(this.current==null){if(this.timer){clearTimeout(this.timer);delete this.timer}if(a==null){a=600}if(a===0){this.Remove()}else{this.timer=setTimeout(MathJax.Callback(["Remove",this]),a)}}else{if(MathJax.Hub.config.messageStyle!=="none"){if(this.textNodeBug){this.div.innerHTML=this.log[this.current].filteredText}else{this.text.nodeValue=this.log[this.current].filteredText}}}if(this.status){window.status="";delete this.status}}else{if(this.status){window.status=(this.current==null?"":this.log[this.current].text)}}}delete this.log[b].next;delete this.log[b].prev;delete this.lo
 g[b].filteredText},Remove:function(){this.text.nodeValue="";this.div.style.display="none"},File:function(b){var a=MathJax.Ajax.config.root;if(b.substr(0,a.length)===a){b="[MathJax]"+b.substr(a.length)}return this.Set("Loading "+b)},Log:function(){var b=[];for(var c=1,a=this.log.length;c<a;c++){b[c]=this.log[c].text}return b.join("\n")}};MathJax.Hub={config:{root:"",config:[],styleSheets:[],styles:{".MathJax_Preview":{color:"#888"}},jax:[],extensions:[],preJax:null,postJax:null,displayAlign:"center",displayIndent:"0",preRemoveClass:"MathJax_Preview",showProcessingMessages:true,messageStyle:"normal",delayStartupUntil:"none",skipStartupTypeset:false,"v1.0-compatible":true,elements:[],positionToHash:true,showMathMenu:true,showMathMenuMSIE:true,menuSettings:{zoom:"None",CTRL:false,ALT:false,CMD:false,Shift:false,discoverable:false,zscale:"200%",renderer:"",font:"Auto",context:"MathJax",mpContext:false,mpMouse:false,texHints:true},errorSettings:{message:["[Math Processing Error]"]
 ,style:{color:"#CC0000","font-style":"italic"}}},preProcessors:MathJax.Callback.Hooks(true),inputJax:{},outputJax:{order:{}},processUpdateTime:250,processUpdateDelay:10,signal:MathJax.Callback.Signal("Hub"),Config:function(a){this.Insert(this.config,a);if(this.config.Augment){this.Augment(this.config.Augment)}},CombineConfig:function(c,f){var b=this.config,g,e;c=c.split(/\./);for(var d=0,a=c.length;d<a;d++){g=c[d];if(!b[g]){b[g]={}}e=b;b=b[g]}e[g]=b=this.Insert(f,b);return b},Register:{PreProcessor:function(){MathJax.Hub.preProcessors.Add.apply(MathJax.Hub.preProcessors,arguments)},MessageHook:function(){return MathJax.Hub.signal.MessageHook.apply(MathJax.Hub.signal,arguments)},StartupHook:function(){return MathJax.Hub.Startup.signal.MessageHook.apply(MathJax.Hub.Startup.signal,arguments)},LoadHook:function(){return MathJax.Ajax.LoadHook.apply(MathJax.Ajax,arguments)}},getAllJax:function(e){var c=[],b=this.elementScripts(e);for(var d=0,a=b.length;d<a;d++){if(b[d].MathJax&&b[
 d].MathJax.elementJax){c.push(b[d].MathJax.elementJax)}}return c},getJaxByType:function(f,e){var c=[],b=this.elementScripts(e);for(var d=0,a=b.length;d<a;d++){if(b[d].MathJax&&b[d].MathJax.elementJax&&b[d].MathJax.elementJax.mimeType===f){c.push(b[d].MathJax.elementJax)}}return c},getJaxByInputType:function(f,e){var c=[],b=this.elementScripts(e);for(var d=0,a=b.length;d<a;d++){if(b[d].MathJax&&b[d].MathJax.elementJax&&b[d].type&&b[d].type.replace(/ *;(.|\s)*/,"")===f){c.push(b[d].MathJax.elementJax)}}return c},getJaxFor:function(a){if(typeof(a)==="string"){a=document.getElementById(a)}if(a&&a.MathJax){return a.MathJax.elementJax}if(a&&a.isMathJax){while(a&&!a.jaxID){a=a.parentNode}if(a){return MathJax.OutputJax[a.jaxID].getJaxFromMath(a)}}return null},isJax:function(a){if(typeof(a)==="string"){a=document.getElementById(a)}if(a&&a.isMathJax){return 1}if(a&&a.tagName!=null&&a.tagName.toLowerCase()==="script"){if(a.MathJax){return(a.MathJax.state===MathJax.ElementJax.STATE.PROC
 ESSED?1:-1)}if(a.type&&this.inputJax[a.type.replace(/ *;(.|\s)*/,"")]){return -1}}return 0},setRenderer:function(d,c){if(!d){return}if(!MathJax.OutputJax[d]){this.config.menuSettings.renderer="";var b="[MathJax]/jax/output/"+d+"/config.js";return MathJax.Ajax.Require(b,["setRenderer",this,d,c])}else{this.config.menuSettings.renderer=d;if(c==null){c="jax/mml"}var a=this.outputJax;if(a[c]&&a[c].length){if(d!==a[c][0].id){a[c].unshift(MathJax.OutputJax[d]);return this.signal.Post(["Renderer Selected",d])}}return null}},Queue:function(){return this.queue.Push.apply(this.queue,arguments)},Typeset:function(e,f){if(!MathJax.isReady){return null}var c=this.elementCallback(e,f);var b=MathJax.Callback.Queue();for(var d=0,a=c.elements.length;d<a;d++){if(c.elements[d]){b.Push(["PreProcess",this,c.elements[d]],["Process",this,c.elements[d]])}}return b.Push(c.callback)},PreProcess:function(e,f){var c=this.elementCallback(e,f);var b=MathJax.Callback.Queue();for(var d=0,a=c.elements.length;
 d<a;d++){if(c.elements[d]){b.Push(["Post",this.signal,["Begin PreProcess",c.elements[d]]],(arguments.callee.disabled?{}:["Execute",this.preProcessors,c.elements[d]]),["Post",this.signal,["End PreProcess",c.elements[d]]])}}return b.Push(c.callback)},Process:function(a,b){return this.takeAction("Process",a,b)},Update:function(a,b){return this.takeAction("Update",a,b)},Reprocess:function(a,b){return this.takeAction("Reprocess",a,b)},Rerender:function(a,b){return this.takeAction("Rerender",a,b)},takeAction:function(g,e,h){var c=this.elementCallback(e,h);var b=MathJax.Callback.Queue(["Clear",this.signal]);for(var d=0,a=c.elements.length;d<a;d++){if(c.elements[d]){var f={scripts:[],start:new Date().getTime(),i:0,j:0,jax:{},jaxIDs:[]};b.Push(["Post",this.signal,["Begin "+g,c.elements[d]]],["Post",this.signal,["Begin Math",c.elements[d],g]],["prepareScripts",this,g,c.elements[d],f],["Post",this.signal,["Begin Math Input",c.elements[d],g]],["processInput",this,f],["Post",this.signal,
 ["End Math Input",c.elements[d],g]],["prepareOutput",this,f,"preProcess"],["Post",this.signal,["Begin Math Output",c.elements[d],g]],["processOutput",this,f],["Post",this.signal,["End Math Output",c.elements[d],g]],["prepareOutput",this,f,"postProcess"],["Post",this.signal,["End Math",c.elements[d],g]],["Post",this.signal,["End "+g,c.elements[d]]])}}return b.Push(c.callback)},scriptAction:{Process:function(a){},Update:function(b){var a=b.MathJax.elementJax;if(a&&a.needsUpdate()){a.Remove(true);b.MathJax.state=a.STATE.UPDATE}else{b.MathJax.state=a.STATE.PROCESSED}},Reprocess:function(b){var a=b.MathJax.elementJax;if(a){a.Remove(true);b.MathJax.state=a.STATE.UPDATE}},Rerender:function(b){var a=b.MathJax.elementJax;if(a){a.Remove(true);b.MathJax.state=a.STATE.OUTPUT}}},prepareScripts:function(h,e,g){if(arguments.callee.disabled){return}var b=this.elementScripts(e);var f=MathJax.ElementJax.STATE;for(var d=0,a=b.length;d<a;d++){var c=b[d];if(c.type&&this.inputJax[c.type.replace(/
  *;(.|\n)*/,"")]){if(c.MathJax){if(c.MathJax.elementJax&&c.MathJax.elementJax.hover){MathJax.Extension.MathEvents.Hover.ClearHover(c.MathJax.elementJax)}if(c.MathJax.state!==f.PENDING){this.scriptAction[h](c)}}if(!c.MathJax){c.MathJax={state:f.PENDING}}if(c.MathJax.state!==f.PROCESSED){g.scripts.push(c)}}}},checkScriptSiblings:function(a){if(a.MathJax.checked){return}var b=this.config,f=a.previousSibling;if(f&&f.nodeName==="#text"){var d,e,c=a.nextSibling;if(c&&c.nodeName!=="#text"){c=null}if(b.preJax){if(typeof(b.preJax)==="string"){b.preJax=new RegExp(b.preJax+"$")}d=f.nodeValue.match(b.preJax)}if(b.postJax&&c){if(typeof(b.postJax)==="string"){b.postJax=new RegExp("^"+b.postJax)}e=c.nodeValue.match(b.postJax)}if(d&&(!b.postJax||e)){f.nodeValue=f.nodeValue.replace(b.preJax,(d.length>1?d[1]:""));f=null}if(e&&(!b.preJax||d)){c.nodeValue=c.nodeValue.replace(b.postJax,(e.length>1?e[1]:""))}if(f&&!f.nodeValue.match(/\S/)){f=f.previousSibling}}if(b.preRemoveClass&&f&&f.className=
 ==b.preRemoveClass){a.MathJax.preview=f}a.MathJax.checked=1},processInput:function(a){var b,i=MathJax.ElementJax.STATE;var h,e,d=a.scripts.length;try{while(a.i<d){h=a.scripts[a.i];if(!h){a.i++;continue}e=h.previousSibling;if(e&&e.className==="MathJax_Error"){e.parentNode.removeChild(e)}if(!h.MathJax||h.MathJax.state===i.PROCESSED){a.i++;continue}if(!h.MathJax.elementJax||h.MathJax.state===i.UPDATE){this.checkScriptSiblings(h);var g=h.type.replace(/ *;(.|\s)*/,"");b=this.inputJax[g].Process(h,a);if(typeof b==="function"){if(b.called){continue}this.RestartAfter(b)}b.Attach(h,this.inputJax[g].id);this.saveScript(b,a,h,i)}else{if(h.MathJax.state===i.OUTPUT){this.saveScript(h.MathJax.elementJax,a,h,i)}}a.i++;var c=new Date().getTime();if(c-a.start>this.processUpdateTime&&a.i<a.scripts.length){a.start=c;this.RestartAfter(MathJax.Callback.Delay(1))}}}catch(f){return this.processError(f,a,"Input")}if(a.scripts.length&&this.config.showProcessingMessages){MathJax.Message.Set("Processi
 ng math: 100%",0)}a.start=new Date().getTime();a.i=a.j=0;return null},saveScript:function(a,d,b,c){if(!this.outputJax[a.mimeType]){b.MathJax.state=c.UPDATE;throw Error("No output jax registered for "+a.mimeType)}a.outputJax=this.outputJax[a.mimeType][0].id;if(!d.jax[a.outputJax]){if(d.jaxIDs.length===0){d.jax[a.outputJax]=d.scripts}else{if(d.jaxIDs.length===1){d.jax[d.jaxIDs[0]]=d.scripts.slice(0,d.i)}d.jax[a.outputJax]=[]}d.jaxIDs.push(a.outputJax)}if(d.jaxIDs.length>1){d.jax[a.outputJax].push(b)}b.MathJax.state=c.OUTPUT},prepareOutput:function(c,f){while(c.j<c.jaxIDs.length){var e=c.jaxIDs[c.j],d=MathJax.OutputJax[e];if(d[f]){try{var a=d[f](c);if(typeof a==="function"){if(a.called){continue}this.RestartAfter(a)}}catch(b){if(!b.restart){MathJax.Message.Set("Error preparing "+e+" output ("+f+")",null,600);MathJax.Hub.lastPrepError=b;c.j++}return MathJax.Callback.After(["prepareOutput",this,c,f],b.restart)}}c.j++}return null},processOutput:function(h){var b,g=MathJax.ElementJ
 ax.STATE,d,a=h.scripts.length;try{while(h.i<a){d=h.scripts[h.i];if(!d||!d.MathJax){h.i++;continue}var c=d.MathJax.elementJax;if(!c){h.i++;continue}b=MathJax.OutputJax[c.outputJax].Process(d,h);d.MathJax.state=g.PROCESSED;h.i++;if(d.MathJax.preview){d.MathJax.preview.innerHTML=""}this.signal.Post(["New Math",c.inputID]);var e=new Date().getTime();if(e-h.start>this.processUpdateTime&&h.i<h.scripts.length){h.start=e;this.RestartAfter(MathJax.Callback.Delay(this.processUpdateDelay))}}}catch(f){return this.processError(f,h,"Output")}if(h.scripts.length&&this.config.showProcessingMessages){MathJax.Message.Set("Typesetting math: 100%",0);MathJax.Message.Clear(0)}h.i=h.j=0;return null},processMessage:function(d,b){var a=Math.floor(d.i/(d.scripts.length)*100);var c=(b==="Output"?"Typesetting":"Processing");if(this.config.showProcessingMessages){MathJax.Message.Set(c+" math: "+a+"%",0)}},processError:function(b,c,a){if(!b.restart){if(!this.config.errorSettings.message){throw b}this.fo
 rmatError(c.scripts[c.i],b);c.i++}this.processMessage(c,a);return MathJax.Callback.After(["process"+a,this,c],b.restart)},formatError:function(a,c){var b=MathJax.HTML.Element("span",{className:"MathJax_Error"},this.config.errorSettings.message);b.jaxID="Error";if(MathJax.Extension.MathEvents){b.oncontextmenu=MathJax.Extension.MathEvents.Event.Menu;b.onmousedown=MathJax.Extension.MathEvents.Event.Mousedown}else{MathJax.Ajax.Require("[MathJax]/extensions/MathEvents.js",function(){b.oncontextmenu=MathJax.Extension.MathEvents.Event.Menu;b.onmousedown=MathJax.Extension.MathEvents.Event.Mousedown})}a.parentNode.insertBefore(b,a);if(a.MathJax.preview){a.MathJax.preview.innerHTML=""}this.lastError=c;this.signal.Post(["Math Processing Error",a,c])},RestartAfter:function(a){throw this.Insert(Error("restart"),{restart:MathJax.Callback(a)})},elementCallback:function(c,f){if(f==null&&(c instanceof Array||typeof c==="function")){try{MathJax.Callback(c);f=c;c=null}catch(d){}}if(c==null){c=
 this.config.elements||[]}if(!(c instanceof Array)){c=[c]}c=[].concat(c);for(var b=0,a=c.length;b<a;b++){if(typeof(c[b])==="string"){c[b]=document.getElementById(c[b])}}if(c.length==0){c.push(document.body)}if(!f){f={}}return{elements:c,callback:f}},elementScripts:function(a){if(typeof(a)==="string"){a=document.getElementById(a)}if(a==null){a=document.body}if(a.tagName!=null&&a.tagName.toLowerCase()==="script"){return[a]}return a.getElementsByTagName("script")},Insert:function(c,a){for(var b in a){if(a.hasOwnProperty(b)){if(typeof a[b]==="object"&&!(a[b] instanceof Array)&&(typeof c[b]==="object"||typeof c[b]==="function")){this.Insert(c[b],a[b])}else{c[b]=a[b]}}}return c}};MathJax.Hub.Insert(MathJax.Hub.config.styles,MathJax.Message.styles);MathJax.Hub.Insert(MathJax.Hub.config.styles,{".MathJax_Error":MathJax.Hub.config.errorSettings.style});MathJax.Extension={};MathJax.Hub.Configured=MathJax.Callback({});MathJax.Hub.Startup={script:"",queue:MathJax.Callback.Queue(),signal:
 MathJax.Callback.Signal("Startup"),params:{},Config:function(){this.queue.Push(["Post",this.signal,"Begin Config"]);var b=MathJax.HTML.Cookie.Get("user");if(b.URL||b.Config){if(confirm("MathJax has found a user-configuration cookie that includes code to be run.  Do you want to run it?\n\n(You should press Cancel unless you set up the cookie yourself.)")){if(b.URL){this.queue.Push(["Require",MathJax.Ajax,b.URL])}if(b.Config){this.queue.Push(new Function(b.Config))}}else{MathJax.HTML.Cookie.Set("user",{})}}if(this.params.config){var d=this.params.config.split(/,/);for(var c=0,a=d.length;c<a;c++){if(!d[c].match(/\.js$/)){d[c]+=".js"}this.queue.Push(["Require",MathJax.Ajax,this.URL("config",d[c])])}}if(this.script.match(/\S/)){this.queue.Push(this.script+";\n1;")}this.queue.Push(["ConfigDelay",this],["ConfigBlocks",this],["ConfigDefault",this],[function(e){return e.loadArray(MathJax.Hub.config.config,"config",null,true)},this],["Post",this.signal,"End Config"])},ConfigDelay:func
 tion(){var a=this.params.delayStartupUntil||MathJax.Hub.config.delayStartupUntil;if(a==="onload"){return this.onload}if(a==="configured"){return MathJax.Hub.Configured}return a},ConfigBlocks:function(){var c=document.getElementsByTagName("script");var f=null,b=MathJax.Callback.Queue();for(var d=0,a=c.length;d<a;d++){var e=String(c[d].type).replace(/ /g,"");if(e.match(/^text\/x-mathjax-config(;.*)?$/)&&!e.match(/;executed=true/)){c[d].type+=";executed=true";f=b.Push(c[d].innerHTML+";\n1;")}}return f},ConfigDefault:function(){var a=MathJax.Hub.config;if(a["v1.0-compatible"]&&(a.jax||[]).length===0&&!this.params.config&&(a.config||[]).length===0){return MathJax.Ajax.Require(this.URL("extensions","v1.0-warning.js"))}},Cookie:function(){return this.queue.Push(["Post",this.signal,"Begin Cookie"],["Get",MathJax.HTML.Cookie,"menu",MathJax.Hub.config.menuSettings],[function(d){var f=d.menuSettings.renderer,b=d.jax;if(f){var c="output/"+f;b.sort();for(var e=0,a=b.length;e<a;e++){if(b[
 e].substr(0,7)==="output/"){break}}if(e==a-1){b.pop()}else{while(e<a){if(b[e]===c){b.splice(e,1);break}e++}}b.unshift(c)}},MathJax.Hub.config],["Post",this.signal,"End Cookie"])},Styles:function(){return this.queue.Push(["Post",this.signal,"Begin Styles"],["loadArray",this,MathJax.Hub.config.styleSheets,"config"],["Styles",MathJax.Ajax,MathJax.Hub.config.styles],["Post",this.signal,"End Styles"])},Jax:function(){var f=MathJax.Hub.config,c=MathJax.Hub.outputJax;for(var g=0,b=f.jax.length,d=0;g<b;g++){var e=f.jax[g].substr(7);if(f.jax[g].substr(0,7)==="output/"&&c.order[e]==null){c.order[e]=d;d++}}var a=MathJax.Callback.Queue();return a.Push(["Post",this.signal,"Begin Jax"],["loadArray",this,f.jax,"jax","config.js"],["Post",this.signal,"End Jax"])},Extensions:function(){var a=MathJax.Callback.Queue();return a.Push(["Post",this.signal,"Begin Extensions"],["loadArray",this,MathJax.Hub.config.extensions,"extensions"],["Post",this.signal,"End Extensions"])},Message:function(){Math
 Jax.Message.Init(true)},Menu:function(){var b=MathJax.Hub.config.menuSettings,a=MathJax.Hub.outputJax,d;for(var c in a){if(a.hasOwnProperty(c)){if(a[c].length){d=a[c];break}}}if(d&&d.length){if(b.renderer&&b.renderer!==d[0].id){d.unshift(MathJax.OutputJax[b.renderer])}b.renderer=d[0].id}},Hash:function(){if(MathJax.Hub.config.positionToHash&&document.location.hash&&document.body&&document.body.scrollIntoView){var d=document.location.hash.substr(1);var f=document.getElementById(d);if(!f){var c=document.getElementsByTagName("a");for(var e=0,b=c.length;e<b;e++){if(c[e].name===d){f=c[e];break}}}if(f){while(!f.scrollIntoView){f=f.parentNode}f=this.HashCheck(f);if(f&&f.scrollIntoView){setTimeout(function(){f.scrollIntoView(true)},1)}}}},HashCheck:function(b){if(b.isMathJax){var a=MathJax.Hub.getJaxFor(b);if(a&&MathJax.OutputJax[a.outputJax].hashCheck){b=MathJax.OutputJax[a.outputJax].hashCheck(b)}}return b},MenuZoom:function(){if(!MathJax.Extension.MathMenu){setTimeout(MathJax.Cal
 lback(["Require",MathJax.Ajax,"[MathJax]/extensions/MathMenu.js",{}]),1000)}if(!MathJax.Extension.MathZoom){setTimeout(MathJax.Callback(["Require",MathJax.Ajax,"[MathJax]/extensions/MathZoom.js",{}]),2000)}},onLoad:function(){var a=this.onload=MathJax.Callback(function(){MathJax.Hub.Startup.signal.Post("onLoad")});if(document.body&&document.readyState){if(MathJax.Hub.Browser.isMSIE){if(document.readyState==="complete"){return[a]}}else{if(document.readyState!=="loading"){return[a]}}}if(window.addEventListener){window.addEventListener("load",a,false);if(!this.params.noDOMContentEvent){window.addEventListener("DOMContentLoaded",a,false)}}else{if(window.attachEvent){window.attachEvent("onload",a)}else{window.onload=a}}return a},Typeset:function(a,b){if(MathJax.Hub.config.skipStartupTypeset){return function(){}}return this.queue.Push(["Post",this.signal,"Begin Typeset"],["Typeset",MathJax.Hub,a,b],["Post",this.signal,"End Typeset"])},URL:function(b,a){if(!a.match(/^([a-z]+:\/\/|\
 [|\/)/)){a="[MathJax]/"+b+"/"+a}return a},loadArray:function(b,f,c,a){if(b){if(!(b instanceof Array)){b=[b]}if(b.length){var h=MathJax.Callback.Queue(),j={},e;for(var g=0,d=b.length;g<d;g++){e=this.URL(f,b[g]);if(c){e+="/"+c}if(a){h.Push(["Require",MathJax.Ajax,e,j])}else{h.Push(MathJax.Ajax.Require(e,j))}}return h.Push({})}}return null}};(function(d){var b=window[d],e="["+d+"]";var c=b.Hub,a=b.Ajax,f=b.Callback;var g=MathJax.Object.Subclass({JAXFILE:"jax.js",require:null,config:{},Init:function(i,h){if(arguments.length===0){return this}return(this.constructor.Subclass(i,h))()},Augment:function(k,j){var i=this.constructor,h={};if(k!=null){for(var l in k){if(k.hasOwnProperty(l)){if(typeof k[l]==="function"){i.protoFunction(l,k[l])}else{h[l]=k[l]}}}if(k.toString!==i.prototype.toString&&k.toString!=={}.toString){i.protoFunction("toString",k.toString)}}c.Insert(i.prototype,h);i.Augment(null,j);return this},Translate:function(h,i){throw Error(this.directory+"/"+this.JAXFILE+" fai
 led to define the Translate() method")},Register:function(h){},Config:function(){this.config=c.CombineConfig(this.id,this.config);if(this.config.Augment){this.Augment(this.config.Augment)}},Startup:function(){},loadComplete:function(i){if(i==="config.js"){return a.loadComplete(this.directory+"/"+i)}else{var h=f.Queue();h.Push(c.Register.StartupHook("End Config",{}),["Post",c.Startup.signal,this.id+" Jax Config"],["Config",this],["Post",c.Startup.signal,this.id+" Jax Require"],[function(j){return MathJax.Hub.Startup.loadArray(j.require,this.directory)},this],[function(j,k){return MathJax.Hub.Startup.loadArray(j.extensions,"extensions/"+k)},this.config||{},this.id],["Post",c.Startup.signal,this.id+" Jax Startup"],["Startup",this],["Post",c.Startup.signal,this.id+" Jax Ready"]);if(this.copyTranslate){h.Push([function(j){j.preProcess=j.preTranslate;j.Process=j.Translate;j.postProcess=j.postTranslate},this.constructor.prototype])}return h.Push(["loadComplete",a,this.directory+"/"
 +i])}}},{id:"Jax",version:"2.1",directory:e+"/jax",extensionDir:e+"/extensions"});b.InputJax=g.Subclass({elementJax:"mml",copyTranslate:true,Process:function(l,q){var j=f.Queue(),o;var k=this.elementJax;if(!(k instanceof Array)){k=[k]}for(var n=0,h=k.length;n<h;n++){o=b.ElementJax.directory+"/"+k[n]+"/"+this.JAXFILE;if(!this.require){this.require=[]}else{if(!(this.require instanceof Array)){this.require=[this.require]}}this.require.push(o);j.Push(a.Require(o))}o=this.directory+"/"+this.JAXFILE;var p=j.Push(a.Require(o));if(!p.called){this.constructor.prototype.Process=function(){if(!p.called){return p}throw Error(o+" failed to load properly")}}k=c.outputJax["jax/"+k[0]];if(k){j.Push(a.Require(k[0].directory+"/"+this.JAXFILE))}return j.Push({})},needsUpdate:function(h){var i=h.SourceElement();return(h.originalText!==b.HTML.getScript(i))},Register:function(h){if(!c.inputJax){c.inputJax={}}c.inputJax[h]=this}},{id:"InputJax",version:"2.1",directory:g.directory+"/input",extensio
 nDir:g.extensionDir});b.OutputJax=g.Subclass({copyTranslate:true,preProcess:function(j){var i,h=this.directory+"/"+this.JAXFILE;this.constructor.prototype.preProcess=function(k){if(!i.called){return i}throw Error(h+" failed to load properly")};i=a.Require(h);return i},Register:function(i){var h=c.outputJax;if(!h[i]){h[i]=[]}if(h[i].length&&(this.id===c.config.menuSettings.renderer||(h.order[this.id]||0)<(h.order[h[i][0].id]||0))){h[i].unshift(this)}else{h[i].push(this)}if(!this.require){this.require=[]}else{if(!(this.require instanceof Array)){this.require=[this.require]}}this.require.push(b.ElementJax.directory+"/"+(i.split(/\//)[1])+"/"+this.JAXFILE)},Remove:function(h){}},{id:"OutputJax",version:"2.1",directory:g.directory+"/output",extensionDir:g.extensionDir,fontDir:e+(b.isPacked?"":"/..")+"/fonts",imageDir:e+(b.isPacked?"":"/..")+"/images"});b.ElementJax=g.Subclass({Init:function(i,h){return this.constructor.Subclass(i,h)},inputJax:null,outputJax:null,inputID:null,orig
 inalText:"",mimeType:"",Text:function(i,j){var h=this.SourceElement();b.HTML.setScript(h,i);h.MathJax.state=this.STATE.UPDATE;return c.Update(h,j)},Reprocess:function(i){var h=this.SourceElement();h.MathJax.state=this.STATE.UPDATE;return c.Reprocess(h,i)},Update:function(h){return this.Rerender(h)},Rerender:function(i){var h=this.SourceElement();h.MathJax.state=this.STATE.OUTPUT;return c.Process(h,i)},Remove:function(h){if(this.hover){this.hover.clear(this)}b.OutputJax[this.outputJax].Remove(this);if(!h){c.signal.Post(["Remove Math",this.inputID]);this.Detach()}},needsUpdate:function(){return b.InputJax[this.inputJax].needsUpdate(this)},SourceElement:function(){return document.getElementById(this.inputID)},Attach:function(i,j){var h=i.MathJax.elementJax;if(i.MathJax.state===this.STATE.UPDATE){h.Clone(this)}else{h=i.MathJax.elementJax=this;if(i.id){this.inputID=i.id}else{i.id=this.inputID=b.ElementJax.GetID();this.newID=1}}h.originalText=b.HTML.getScript(i);h.inputJax=j;if(h.
 root){h.root.inputID=h.inputID}return h},Detach:function(){var h=this.SourceElement();if(!h){return}try{delete h.MathJax}catch(i){h.MathJax=null}if(this.newID){h.id=""}},Clone:function(h){var i;for(i in this){if(!this.hasOwnProperty(i)){continue}if(typeof(h[i])==="undefined"&&i!=="newID"){delete this[i]}}for(i in h){if(!h.hasOwnProperty(i)){continue}if(typeof(this[i])==="undefined"||(this[i]!==h[i]&&i!=="inputID")){this[i]=h[i]}}}},{id:"ElementJax",version:"2.1",directory:g.directory+"/element",extensionDir:g.extensionDir,ID:0,STATE:{PENDING:1,PROCESSED:2,UPDATE:3,OUTPUT:4},GetID:function(){this.ID++;return"MathJax-Element-"+this.ID},Subclass:function(){var h=g.Subclass.apply(this,arguments);h.loadComplete=this.prototype.loadComplete;return h}});b.ElementJax.prototype.STATE=b.ElementJax.STATE;b.OutputJax.Error={id:"Error",version:"2.1",config:{},ContextMenu:function(){return b.Extension.MathEvents.Event.ContextMenu.apply(b.Extension.MathEvents.Event,arguments)},Mousedown:fun
 ction(){return b.Extension.MathEvents.Event.AltContextMenu.apply(b.Extension.MathEvents.Event,arguments)},getJaxFromMath:function(){return{inputJax:"Error",outputJax:"Error",originalText:"Math Processing Error"}}};b.InputJax.Error={id:"Error",version:"2.1",config:{},sourceMenuTitle:"Error Message"}})("MathJax");(function(l){var f=window[l];if(!f){f=window[l]={}}var c=f.Hub;var q=c.Startup;var u=c.config;var e=document.getElementsByTagName("head")[0];if(!e){e=document.childNodes[0]}var b=(document.documentElement||document).getElementsByTagName("script");var d=new RegExp("(^|/)"+l+"\\.js(\\?.*)?$");for(var o=b.length-1;o>=0;o--){if((b[o].src||"").match(d)){q.script=b[o].innerHTML;if(RegExp.$2){var r=RegExp.$2.substr(1).split(/\&/);for(var n=0,h=r.length;n<h;n++){var k=r[n].match(/(.*)=(.*)/);if(k){q.params[unescape(k[1])]=unescape(k[2])}}}u.root=b[o].src.replace(/(^|\/)[^\/]*(\?.*)?$/,"");break}}f.Ajax.config=u;var a={isMac:(navigator.platform.substr(0,3)==="Mac"),isPC:(navig
 ator.platform.substr(0,3)==="Win"),isMSIE:(window.ActiveXObject!=null&&window.clipboardData!=null),isFirefox:((window.netscape!=null||window.mozPaintCount!=null)&&document.ATTRIBUTE_NODE!=null&&!window.opera),isSafari:(navigator.userAgent.match(/ (Apple)?WebKit\//)!=null&&(!window.chrome||window.chrome.loadTimes==null)),isChrome:(window.chrome!=null&&window.chrome.loadTimes!=null),isOpera:(window.opera!=null&&window.opera.version!=null),isKonqueror:(window.hasOwnProperty&&window.hasOwnProperty("konqueror")&&navigator.vendor=="KDE"),versionAtLeast:function(x){var w=(this.version).split(".");x=(new String(x)).split(".");for(var y=0,j=x.length;y<j;y++){if(w[y]!=x[y]){return parseInt(w[y]||"0")>=parseInt(x[y])}}return true},Select:function(j){var i=j[c.Browser];if(i){return i(c.Browser)}return null}};var g=navigator.userAgent.replace(/^Mozilla\/(\d+\.)+\d+ /,"").replace(/[a-z][-a-z0-9._: ]+\/\d+[^ ]*-[^ ]*\.([a-z][a-z])?\d+ /i,"").replace(/Gentoo |Ubuntu\/(\d+\.)*\d+ (\([^)]*\) 
 )?/,"");c.Browser=c.Insert(c.Insert(new String("Unknown"),{version:"0.0"}),a);for(var t in a){if(a.hasOwnProperty(t)){if(a[t]&&t.substr(0,2)==="is"){t=t.slice(2);if(t==="Mac"||t==="PC"){continue}c.Browser=c.Insert(new String(t),a);var p=new RegExp(".*(Version)/((?:\\d+\\.)+\\d+)|.*("+t+")"+(t=="MSIE"?" ":"/")+"((?:\\d+\\.)*\\d+)|(?:^|\\(| )([a-z][-a-z0-9._: ]+|(?:Apple)?WebKit)/((?:\\d+\\.)+\\d+)");var s=p.exec(g)||["","","","unknown","0.0"];c.Browser.name=(s[1]=="Version"?t:(s[3]||s[5]));c.Browser.version=s[2]||s[4]||s[6];break}}}c.Browser.Select({Safari:function(j){var i=parseInt((String(j.version).split("."))[0]);if(i>85){j.webkit=j.version}if(i>=534){j.version="5.1"}else{if(i>=533){j.version="5.0"}else{if(i>=526){j.version="4.0"}else{if(i>=525){j.version="3.1"}else{if(i>500){j.version="3.0"}else{if(i>400){j.version="2.0"}else{if(i>85){j.version="1.0"}}}}}}}j.isMobile=(navigator.appVersion.match(/Mobile/i)!=null);j.noContextMenu=j.isMobile},Firefox:function(j){if((j.versi
 on==="0.0"||navigator.userAgent.match(/Firefox/)==null)&&navigator.product==="Gecko"){var m=navigator.userAgent.match(/[\/ ]rv:(\d+\.\d.*?)[\) ]/);if(m){j.version=m[1]}else{var i=(navigator.buildID||navigator.productSub||"0").substr(0,8);if(i>="20111220"){j.version="9.0"}else{if(i>="20111120"){j.version="8.0"}else{if(i>="20110927"){j.version="7.0"}else{if(i>="20110816"){j.version="6.0"}else{if(i>="20110621"){j.version="5.0"}else{if(i>="20110320"){j.version="4.0"}else{if(i>="20100121"){j.version="3.6"}else{if(i>="20090630"){j.version="3.5"}else{if(i>="20080617"){j.version="3.0"}else{if(i>="20061024"){j.version="2.0"}}}}}}}}}}}}j.isMobile=(navigator.appVersion.match(/Android/i)!=null||navigator.userAgent.match(/ Fennec\//)!=null)},Opera:function(i){i.version=opera.version()},MSIE:function(j){j.isIE9=!!(document.documentMode&&(window.performance||window.msPerformance));MathJax.HTML.setScriptBug=!j.isIE9||document.documentMode<9;var v=false;try{new ActiveXObject("MathPlayer.Fact
 ory.1");j.hasMathPlayer=v=true}catch(m){}try{if(v&&!q.params.NoMathPlayer){var i=document.createElement("object");i.id="mathplayer";i.classid="clsid:32F66A20-7614-11D4-BD11-00104BD3F987";document.getElementsByTagName("head")[0].appendChild(i);document.namespaces.add("m","http://www.w3.org/1998/Math/MathML";);j.mpNamespace=true;if(document.readyState&&(document.readyState==="loading"||document.readyState==="interactive")){document.write('<?import namespace="m" implementation="#MathPlayer">');j.mpImported=true}}else{document.namespaces.add("mjx_IE_fix","http://www.w3.org/1999/xlink";)}}catch(m){}}});c.Browser.Select(MathJax.Message.browsers);c.queue=f.Callback.Queue();c.queue.Push(["Post",q.signal,"Begin"],["Config",q],["Cookie",q],["Styles",q],["Message",q],function(){var i=f.Callback.Queue(q.Jax(),q.Extensions());return i.Push({})},["Menu",q],q.onLoad(),function(){MathJax.isReady=true},["Typeset",q],["Hash",q],["MenuZoom",q],["Post",q.signal,"End"])})("MathJax")}};
+
diff --git a/data/mathjax/README b/data/mathjax/README
new file mode 100644
index 0000000..d3eec49
--- /dev/null
+++ b/data/mathjax/README
@@ -0,0 +1,11 @@
+This is a copy of a subset of the files in the MathJax repository:
+
+https://github.com/mathjax/mathjax/
+
+It was last updated to the following commit on master:
+
+commit 9207aa2841ab24127be30f1a119ee05a6c28ccf5
+Author: Davide P. Cervone <dpvc union edu>
+Date:   Sun Oct 28 18:28:36 2012 -0400
+
+    Remove branch file README file (it's supposed to make the branch be separate from master)
diff --git a/data/mathjax/config/MMLorHTML.js b/data/mathjax/config/MMLorHTML.js
new file mode 100644
index 0000000..fac173a
--- /dev/null
+++ b/data/mathjax/config/MMLorHTML.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/config/MMLorHTML.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(c,g){var f="2.1";var a=MathJax.Hub.CombineConfig("MMLorHTML",{prefer:{MSIE:"MML",Firefox:"HTML",Opera:"HTML",Chrome:"HTML",Safari:"HTML",other:"HTML"}});var e={Firefox:3,Opera:9.52,MSIE:6,Chrome:0.3,Safari:2,Konqueror:4};var b=(g.version==="0.0"||g.versionAtLeast(e[g]||0));var d=(g.isFirefox&&g.versionAtLeast("1.5"))||(g.isMSIE&&g.hasMathPlayer)||(g.isSafari&&g.versionAtLeast("5.0"))||(g.isOpera&&g.versionAtLeast("9.52"));c.Register.StartupHook("End Config",function(){var h=(a.prefer&&typeof(a.prefer)==="object"?a.prefer[MathJax.Hub.Browser]||a.prefer.other||"HTML":a.prefer);if(b||d){if(d&&(h==="MML"||!b)){if(MathJax.OutputJax.NativeMML){MathJax.OutputJax.NativeMML.Register("jax/mml")}else{c.config.jax.unshift("output/NativeMML")}c.Startup.signal.Post("NativeMML output selected")}else{if(MathJax.OutputJax["HTML-CSS"]){MathJax.OutputJax["HTML-CSS"].Register("jax/mml")}else{c.config.jax.unshift("output/HTML-CSS")}c.Startup.signal.Post("HTML-CSS output selected")}}els
 e{c.PreProcess.disabled=true;c.prepareScripts.disabled=true;MathJax.Message.Set("Your browser does not support MathJax",null,4000);c.Startup.signal.Post("MathJax not supported")}})})(MathJax.Hub,MathJax.Hub.Browser);MathJax.Ajax.loadComplete("[MathJax]/config/MMLorHTML.js");
+
diff --git a/data/mathjax/config/Makefile.am b/data/mathjax/config/Makefile.am
new file mode 100644
index 0000000..22508c0
--- /dev/null
+++ b/data/mathjax/config/Makefile.am
@@ -0,0 +1,5 @@
+mjdir=$(datadir)/yelp/mathjax/config
+
+mj_DATA = MMLorHTML.js yelp.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/config/yelp.js b/data/mathjax/config/yelp.js
new file mode 100644
index 0000000..414a668
--- /dev/null
+++ b/data/mathjax/config/yelp.js
@@ -0,0 +1,16 @@
+MathJax.Hub.Config({
+ "HTML-CSS": {
+    availableFonts: ["TeX"],
+    preferredFont: "TeX",
+    webFont: "TeX",
+    imageFont: null
+  },
+  config: ["MMLorHTML.js"],
+  extensions: ["mml2jax.js"],
+  jax: ["input/MathML"],
+  positionToHash: true,
+  messageStyle: "none",
+  showMathMenu: false
+});
+
+MathJax.Ajax.loadComplete("[MathJax]/config/yelp.js");
diff --git a/data/mathjax/extensions/HTML-CSS/Makefile.am b/data/mathjax/extensions/HTML-CSS/Makefile.am
new file mode 100644
index 0000000..ecf8a97
--- /dev/null
+++ b/data/mathjax/extensions/HTML-CSS/Makefile.am
@@ -0,0 +1,5 @@
+mjdir=$(datadir)/yelp/mathjax/extensions/HTML-CSS
+
+mj_DATA = handle-floats.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/extensions/HTML-CSS/handle-floats.js b/data/mathjax/extensions/HTML-CSS/handle-floats.js
new file mode 100644
index 0000000..4d559da
--- /dev/null
+++ b/data/mathjax/extensions/HTML-CSS/handle-floats.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/extensions/HTML-CSS/handle-floats.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Extension["HTML-CSS/handle-floats"]={version:"2.1"};MathJax.Hub.Config({"HTML-CSS":{styles:{".MathJax_Display":{display:"table-cell",padding:"1em 0 ! important",width:(MathJax.Hub.Browser.isMSIE&&(document.documentMode||0)<8?"100%":"1000em")}}}});MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function(){var a=MathJax.OutputJax["HTML-CSS"],b=a.Translate;a.Augment({Translate:function(c,f){b.call(this,c,f);if(c.MathJax.elementJax.HTMLCSS.display){var e=c.nextSibling;if(!e||e.className!=="MathJax_MSIE_Separator"){var d=a.Element("span",{className:"MathJax_MSIE_Separator"});c.parentNode.insertBefore(d,e)}}}});MathJax.Hub.Startup.signal.Post("HTML-CSS handle-floats Ready")});MathJax.Ajax.loadComplete("[MathJax]/extensions/HTML-CSS/handle-floats.js");
+
diff --git a/data/mathjax/extensions/Makefile.am b/data/mathjax/extensions/Makefile.am
new file mode 100644
index 0000000..1d7111a
--- /dev/null
+++ b/data/mathjax/extensions/Makefile.am
@@ -0,0 +1,11 @@
+SUBDIRS = HTML-CSS
+
+mjdir=$(datadir)/yelp/mathjax/extensions
+
+mj_DATA =		\
+	MathEvents.js	\
+	MathMenu.js	\
+	MathZoom.js	\
+	mml2jax.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/extensions/MathEvents.js b/data/mathjax/extensions/MathEvents.js
new file mode 100644
index 0000000..45dd0cc
--- /dev/null
+++ b/data/mathjax/extensions/MathEvents.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/extensions/MathEvents.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(d,h,l,g,b,j){var p="2.1";var i=MathJax.Extension;var c=i.MathEvents={version:p};var k=d.config.menuSettings;var o={hover:500,frame:{x:3.5,y:5,bwidth:1,bcolor:"#A6D",hwidth:"15px",hcolor:"#83A"},button:{x:-4,y:-3,wx:-2,src:l.fileURL(b.imageDir+"/MenuArrow-15.png")},fadeinInc:0.2,fadeoutInc:0.05,fadeDelay:50,fadeoutStart:400,fadeoutDelay:15*1000,styles:{".MathJax_Hover_Frame":{"border-radius":".25em","-webkit-border-radius":".25em","-moz-border-radius":".25em","-khtml-border-radius":".25em","box-shadow":"0px 0px 15px #83A","-webkit-box-shadow":"0px 0px 15px #83A","-moz-box-shadow":"0px 0px 15px #83A","-khtml-box-shadow":"0px 0px 15px #83A",border:"1px solid #A6D ! important",display:"inline-block",position:"absolute"},".MathJax_Hover_Arrow":{position:"absolute",width:"15px",height:"11px",cursor:"pointer"}}};var m=c.Event={LEFTBUTTON:0,RIGHTBUTTON:2,MENUKEY:"altKey",Mousedown:function(q){return m.Handler(q,"Mousedown",this)},Mouseup:function(q){return m.Handler(q,"Mou
 seup",this)},Mousemove:function(q){return m.Handler(q,"Mousemove",this)},Mouseover:function(q){return m.Handler(q,"Mouseover",this)},Mouseout:function(q){return m.Handler(q,"Mouseout",this)},Click:function(q){return m.Handler(q,"Click",this)},DblClick:function(q){return m.Handler(q,"DblClick",this)},Menu:function(q){return m.Handler(q,"ContextMenu",this)},Handler:function(t,r,s){if(l.loadingMathMenu){return m.False(t)}var q=b[s.jaxID];if(!t){t=window.event}t.isContextMenu=(r==="ContextMenu");if(q[r]){return q[r](t,s)}if(i.MathZoom){return i.MathZoom.HandleEvent(t,r,s)}},False:function(q){if(!q){q=window.event}if(q){if(q.preventDefault){q.preventDefault()}if(q.stopPropagation){q.stopPropagation()}q.cancelBubble=true;q.returnValue=false}return false},ContextMenu:function(r,y,u){var w=b[y.jaxID],t=w.getJaxFromMath(y);var z=(w.config.showMathMenu!=null?w:d).config.showMathMenu;if(!z||(k.context!=="MathJax"&&!u)){return}if(c.msieEventBug){r=window.event||r}m.ClearSelection();f.Cl
 earHoverTimer();if(t.hover){if(t.hover.remove){clearTimeout(t.hover.remove);delete t.hover.remove}t.hover.nofade=true}var s=MathJax.Menu;if(s){s.jax=t;var q=s.menu.Find("Show Math As").menu;q.items[1].name=(j[t.inputJax].sourceMenuTitle||"Original Form");q.items[0].hidden=(t.inputJax==="Error");var v=s.menu.Find("Math Settings","MathPlayer");v.hidden=!(t.outputJax==="NativeMML"&&d.Browser.hasMathPlayer);return s.menu.Post(r)}else{if(!l.loadingMathMenu){l.loadingMathMenu=true;var x={pageX:r.pageX,pageY:r.pageY,clientX:r.clientX,clientY:r.clientY};g.Queue(l.Require("[MathJax]/extensions/MathMenu.js"),function(){delete l.loadingMathMenu;if(!MathJax.Menu){MathJax.Menu={}}},["ContextMenu",this,x,y,u])}return m.False(r)}},AltContextMenu:function(s,r){var t=b[r.jaxID];var q=(t.config.showMathMenu!=null?t:d).config.showMathMenu;if(q){q=(t.config.showMathMenuMSIE!=null?t:d).config.showMathMenuMSIE;if(k.context==="MathJax"&&!k.mpContext&&q){if(!c.noContextMenuBug||s.button!==m.RIGHTBU
 TTON){return}}else{if(!s[m.MENUKEY]||s.button!==m.LEFTBUTTON){return}}return t.ContextMenu(s,r,true)}},ClearSelection:function(){if(c.safariContextMenuBug){setTimeout("window.getSelection().empty()",0)}if(document.selection){setTimeout("document.selection.empty()",0)}},getBBox:function(s){s.appendChild(c.topImg);var r=c.topImg.offsetTop,t=s.offsetHeight-r,q=s.offsetWidth;s.removeChild(c.topImg);return{w:q,h:r,d:t}}};var f=c.Hover={Mouseover:function(s,r){if(k.discoverable||k.zoom==="Hover"){var u=s.fromElement||s.relatedTarget,t=s.toElement||s.target;if(u&&t&&(u.isMathJax!=t.isMathJax||d.getJaxFor(u)!==d.getJaxFor(t))){var q=this.getJaxFromMath(r);if(q.hover){f.ReHover(q)}else{f.HoverTimer(q,r)}return m.False(s)}}},Mouseout:function(s,r){if(k.discoverable||k.zoom==="Hover"){var u=s.fromElement||s.relatedTarget,t=s.toElement||s.target;if(u&&t&&(u.isMathJax!=t.isMathJax||d.getJaxFor(u)!==d.getJaxFor(t))){var q=this.getJaxFromMath(r);if(q.hover){f.UnHover(q)}else{f.ClearHoverTi
 mer()}return m.False(s)}}},Mousemove:function(s,r){if(k.discoverable||k.zoom==="Hover"){var q=this.getJaxFromMath(r);if(q.hover){return}if(f.lastX==s.clientX&&f.lastY==s.clientY){return}f.lastX=s.clientX;f.lastY=s.clientY;f.HoverTimer(q,r);return m.False(s)}},HoverTimer:function(q,r){this.ClearHoverTimer();this.hoverTimer=setTimeout(g(["Hover",this,q,r]),o.hover)},ClearHoverTimer:function(){if(this.hoverTimer){clearTimeout(this.hoverTimer);delete this.hoverTimer}},Hover:function(q,u){if(i.MathZoom&&i.MathZoom.Hover({},u)){return}var t=b[q.outputJax],v=t.getHoverSpan(q,u),y=t.getHoverBBox(q,v,u),w=(t.config.showMathMenu!=null?t:d).config.showMathMenu;var A=o.frame.x,z=o.frame.y,x=o.frame.bwidth;if(c.msieBorderWidthBug){x=0}q.hover={opacity:0,id:q.inputID+"-Hover"};var r=h.Element("span",{id:q.hover.id,isMathJax:true,style:{display:"inline-block",width:0,height:0,position:"relative"}},[["span",{className:"MathJax_Hover_Frame",isMathJax:true,style:{display:"inline-block",positi
 on:"absolute",top:this.Px(-y.h-z-x-(y.y||0)),left:this.Px(-A-x+(y.x||0)),width:this.Px(y.w+2*A),height:this.Px(y.h+y.d+2*z),opacity:0,filter:"alpha(opacity=0)"}}]]);var s=h.Element("span",{isMathJax:true,id:q.hover.id+"Menu",style:{display:"inline-block","z-index":1,width:0,height:0,position:"relative"}},[["img",{className:"MathJax_Hover_Arrow",isMathJax:true,math:u,src:o.button.src,onclick:this.HoverMenu,jax:t.id,style:{left:this.Px(y.w+A+x+(y.x||0)+o.button.x),top:this.Px(-y.h-z-x-(y.y||0)-o.button.y),opacity:0,filter:"alpha(opacity=0)"}}]]);if(y.width){r.style.width=s.style.width=y.width;r.style.marginRight=s.style.marginRight="-"+y.width;r.firstChild.style.width=y.width;s.firstChild.style.left="";s.firstChild.style.right=this.Px(o.button.wx)}v.parentNode.insertBefore(r,v);if(w){v.parentNode.insertBefore(s,v)}if(v.style){v.style.position="relative"}this.ReHover(q)},ReHover:function(q){if(q.hover.remove){clearTimeout(q.hover.remove)}q.hover.remove=setTimeout(g(["UnHover",t
 his,q]),o.fadeoutDelay);this.HoverFadeTimer(q,o.fadeinInc)},UnHover:function(q){if(!q.hover.nofade){this.HoverFadeTimer(q,-o.fadeoutInc,o.fadeoutStart)}},HoverFade:function(q){delete q.hover.timer;q.hover.opacity=Math.max(0,Math.min(1,q.hover.opacity+q.hover.inc));q.hover.opacity=Math.floor(1000*q.hover.opacity)/1000;var s=document.getElementById(q.hover.id),r=document.getElementById(q.hover.id+"Menu");s.firstChild.style.opacity=q.hover.opacity;s.firstChild.style.filter="alpha(opacity="+Math.floor(100*q.hover.opacity)+")";if(r){r.firstChild.style.opacity=q.hover.opacity;r.firstChild.style.filter=s.style.filter}if(q.hover.opacity===1){return}if(q.hover.opacity>0){this.HoverFadeTimer(q,q.hover.inc);return}s.parentNode.removeChild(s);if(r){r.parentNode.removeChild(r)}if(q.hover.remove){clearTimeout(q.hover.remove)}delete q.hover},HoverFadeTimer:function(q,s,r){q.hover.inc=s;if(!q.hover.timer){q.hover.timer=setTimeout(g(["HoverFade",this,q]),(r||o.fadeDelay))}},HoverMenu:functio
 n(q){if(!q){q=window.event}return b[this.jax].ContextMenu(q,this.math,true)},ClearHover:function(q){if(q.hover.remove){clearTimeout(q.hover.remove)}if(q.hover.timer){clearTimeout(q.hover.timer)}f.ClearHoverTimer();delete q.hover},Px:function(q){if(Math.abs(q)<0.006){return"0px"}return q.toFixed(2).replace(/\.?0+$/,"")+"px"},getImages:function(){var q=new Image();q.src=o.button.src}};var a=c.Touch={last:0,delay:500,start:function(r){var q=new Date().getTime();var s=(q-a.last<a.delay&&a.up);a.last=q;a.up=false;if(s){a.timeout=setTimeout(a.menu,a.delay,r,this);r.preventDefault()}},end:function(r){var q=new Date().getTime();a.up=(q-a.last<a.delay);if(a.timeout){clearTimeout(a.timeout);delete a.timeout;a.last=0;a.up=false;r.preventDefault();return m.Handler((r.touches[0]||r.touch),"DblClick",this)}},menu:function(r,q){delete a.timeout;a.last=0;a.up=false;return m.Handler((r.touches[0]||r.touch),"ContextMenu",q)}};if(d.Browser.isMobile){var n=o.styles[".MathJax_Hover_Arrow"];n.wid
 th="25px";n.height="18px";o.button.x=-6}d.Browser.Select({MSIE:function(q){var s=(document.documentMode||0);var r=q.versionAtLeast("8.0");c.msieBorderWidthBug=(document.compatMode==="BackCompat");c.msieEventBug=q.isIE9;c.msieAlignBug=(!r||s<8);if(s<9){m.LEFTBUTTON=1}},Safari:function(q){c.safariContextMenuBug=true},Opera:function(q){c.operaPositionBug=true},Konqueror:function(q){c.noContextMenuBug=true}});c.topImg=(c.msieAlignBug?h.Element("img",{style:{width:0,height:0,position:"relative"},src:"about:blank"}):h.Element("span",{style:{width:0,height:0,display:"inline-block"}}));if(c.operaPositionBug){c.topImg.style.border="1px solid"}c.config=o=d.CombineConfig("MathEvents",o);var e=function(){var q=o.styles[".MathJax_Hover_Frame"];q.border=o.frame.bwidth+"px solid "+o.frame.bcolor+" ! important";q["box-shadow"]=q["-webkit-box-shadow"]=q["-moz-box-shadow"]=q["-khtml-box-shadow"]="0px 0px "+o.frame.hwidth+" "+o.frame.hcolor};g.Queue(d.Register.StartupHook("End Config",{}),[e],
 ["getImages",f],["Styles",l,o.styles],["Post",d.Startup.signal,"MathEvents Ready"],["loadComplete",l,"[MathJax]/extensions/MathEvents.js"])})(MathJax.Hub,MathJax.HTML,MathJax.Ajax,MathJax.Callback,MathJax.OutputJax,MathJax.InputJax);
+
diff --git a/data/mathjax/extensions/MathMenu.js b/data/mathjax/extensions/MathMenu.js
new file mode 100644
index 0000000..0d03e23
--- /dev/null
+++ b/data/mathjax/extensions/MathMenu.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/extensions/MathMenu.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(c,g,k,f,b){var p="2.1";var j=MathJax.Callback.Signal("menu");MathJax.Extension.MathMenu={version:p,signal:j};var n=c.Browser.isPC,l=c.Browser.isMSIE,e=((document.documentMode||0)>8);var i=(n?null:"5px");var o=c.CombineConfig("MathMenu",{delay:150,helpURL:"http://www.mathjax.org/help-v2/user/",closeImg:k.fileURL(b.imageDir+"/CloseX-31.png"),showRenderer:true,showMathPlayer:true,showFontMenu:false,showContext:false,showDiscoverable:false,windowSettings:{status:"no",toolbar:"no",locationbar:"no",menubar:"no",directories:"no",personalbar:"no",resizable:"yes",scrollbars:"yes",width:400,height:300,left:Math.round((screen.width-400)/2),top:Math.round((screen.height-300)/3)},styles:{"#MathJax_About":{position:"fixed",left:"50%",width:"auto","text-align":"center",border:"3px outset",padding:"1em 2em","background-color":"#DDDDDD",color:"black",cursor:"default","font-family":"message-box","font-size":"120%","font-style":"normal","text-indent":0,"text-transform":"none","line-h
 eight":"normal","letter-spacing":"normal","word-spacing":"normal","word-wrap":"normal","white-space":"nowrap","float":"none","z-index":201,"border-radius":"15px","-webkit-border-radius":"15px","-moz-border-radius":"15px","-khtml-border-radius":"15px","box-shadow":"0px 10px 20px #808080","-webkit-box-shadow":"0px 10px 20px #808080","-moz-box-shadow":"0px 10px 20px #808080","-khtml-box-shadow":"0px 10px 20px #808080",filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')"},".MathJax_Menu":{position:"absolute","background-color":"white",color:"black",width:"auto",padding:(n?"2px":"5px 0px"),border:"1px solid #CCCCCC",margin:0,cursor:"default",font:"menu","text-align":"left","text-indent":0,"text-transform":"none","line-height":"normal","letter-spacing":"normal","word-spacing":"normal","word-wrap":"normal","white-space":"nowrap","float":"none","z-index":201,"border-radius":i,"-webkit-border-radius":i,"-moz-border-radius":i,"-khtml-bor
 der-radius":i,"box-shadow":"0px 10px 20px #808080","-webkit-box-shadow":"0px 10px 20px #808080","-moz-box-shadow":"0px 10px 20px #808080","-khtml-box-shadow":"0px 10px 20px #808080",filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')"},".MathJax_MenuItem":{padding:(n?"2px 2em":"1px 2em"),background:"transparent"},".MathJax_MenuTitle":{"background-color":"#CCCCCC",margin:(n?"-1px -1px 1px -1px":"-5px 0 0 0"),"text-align":"center","font-style":"italic","font-size":"80%",color:"#444444",padding:"2px 0",overflow:"hidden"},".MathJax_MenuArrow":{position:"absolute",right:".5em",color:"#666666","font-family":(l?"'Arial unicode MS'":null)},".MathJax_MenuActive .MathJax_MenuArrow":{color:"white"},".MathJax_MenuCheck":{position:"absolute",left:".7em","font-family":(l?"'Arial unicode MS'":null)},".MathJax_MenuRadioCheck":{position:"absolute",left:(n?"1em":".7em")},".MathJax_MenuLabel":{padding:(n?"2px 2em 4px 1.33em":"1px 2em 3px 1.33em")
 ,"font-style":"italic"},".MathJax_MenuRule":{"border-top":(n?"1px solid #CCCCCC":"1px solid #DDDDDD"),margin:(n?"4px 1px 0px":"4px 3px")},".MathJax_MenuDisabled":{color:"GrayText"},".MathJax_MenuActive":{"background-color":(n?"Highlight":"#606872"),color:(n?"HighlightText":"white")},".MathJax_Menu_Close":{position:"absolute",width:"31px",height:"31px",top:"-15px",left:"-15px"}}});var h,d;c.Register.StartupHook("MathEvents Ready",function(){h=MathJax.Extension.MathEvents.Event.False;d=MathJax.Extension.MathEvents.Hover});var a=MathJax.Menu=MathJax.Object.Subclass({version:p,items:[],posted:false,title:null,margin:5,Init:function(q){this.items=[].slice.call(arguments,0)},With:function(q){if(q){c.Insert(this,q)}return this},Post:function(r,B){if(!r){r=window.event}var z=(!this.title?null:[["div",{className:"MathJax_MenuTitle"},[this.title]]]);var q=document.getElementById("MathJax_MenuFrame");if(!q){q=a.Background(this);delete m.lastItem;delete m.lastMenu;delete a.skipUp;j.Post
 (["post",a.jax])}var s=g.addElement(q,"div",{onmouseup:a.Mouseup,ondblclick:h,ondragstart:h,onselectstart:h,oncontextmenu:h,menuItem:this,className:"MathJax_Menu"},z);for(var u=0,t=this.items.length;u<t;u++){this.items[u].Create(s)}if(a.isMobile){g.addElement(s,"span",{className:"MathJax_Menu_Close",menu:B,ontouchstart:a.Close,ontouchend:h,onmousedown:a.Close,onmouseup:h},[["img",{src:o.closeImg,style:{width:"100%",height:"100%"}}]])}this.posted=true;s.style.width=(s.offsetWidth+2)+"px";var A=r.pageX,w=r.pageY;if(!A&&!w){A=r.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;w=r.clientY+document.body.scrollTop+document.documentElement.scrollTop}if(!B){if(A+s.offsetWidth>document.body.offsetWidth-this.margin){A=document.body.offsetWidth-s.offsetWidth-this.margin}if(a.isMobile){A=Math.max(5,A-Math.floor(s.offsetWidth/2));w-=20}a.skipUp=r.isContextMenu}else{var v="left",C=B.offsetWidth;A=(a.isMobile?30:C-2);w=0;while(B&&B!==q){A+=B.offsetLeft;w+=B.offsetTop;B=
 B.parentNode}if(A+s.offsetWidth>document.body.offsetWidth-this.margin&&!a.isMobile){v="right";A=Math.max(this.margin,A-C-s.offsetWidth+6)}if(!n){s.style["borderRadiusTop"+v]=0;s.style["WebkitBorderRadiusTop"+v]=0;s.style["MozBorderRadiusTop"+v]=0;s.style["KhtmlBorderRadiusTop"+v]=0}}s.style.left=A+"px";s.style.top=w+"px";if(document.selection&&document.selection.empty){document.selection.empty()}return h(r)},Remove:function(q,r){j.Post(["unpost",a.jax]);var s=document.getElementById("MathJax_MenuFrame");if(s){s.parentNode.removeChild(s);if(this.msieFixedPositionBug){detachEvent("onresize",a.Resize)}}if(a.jax.hover){delete a.jax.hover.nofade;d.UnHover(a.jax)}return h(q)},Find:function(r){var t=[].slice.call(arguments,1);for(var s=0,q=this.items.length;s<q;s++){if(this.items[s].name===r){if(t.length){if(!this.items[s].menu){return null}return this.items[s].menu.Find.apply(this.items[s].menu,t)}return this.items[s]}}return null},IndexOf:function(r){for(var s=0,q=this.items.leng
 th;s<q;s++){if(this.items[s].name===r){return s}}return null}},{config:o,div:null,Close:function(q){return a.Event(q,this.menu||this.parentNode,(this.menu?"Touchend":"Remove"))},Remove:function(q){return a.Event(q,this,"Remove")},Mouseover:function(q){return a.Event(q,this,"Mouseover")},Mouseout:function(q){return a.Event(q,this,"Mouseout")},Mousedown:function(q){return a.Event(q,this,"Mousedown")},Mouseup:function(q){return a.Event(q,this,"Mouseup")},Touchstart:function(q){return a.Event(q,this,"Touchstart")},Touchend:function(q){return a.Event(q,this,"Touchend")},Event:function(s,u,q,t){if(a.skipMouseover&&q==="Mouseover"&&!t){return h(s)}if(a.skipUp){if(q.match(/Mouseup|Touchend/)){delete a.skipUp;return h(s)}if(q==="Touchstart"||(q==="Mousedown"&&!a.skipMousedown)){delete a.skipUp}}if(!s){s=window.event}var r=u.menuItem;if(r&&r[q]){return r[q](s,u)}return null},BGSTYLE:{position:"absolute",left:0,top:0,"z-index":200,width:"100%",height:"100%",border:0,padding:0,margin:0}
 ,Background:function(r){var s=g.addElement(document.body,"div",{style:this.BGSTYLE,id:"MathJax_MenuFrame"},[["div",{style:this.BGSTYLE,menuItem:r,onmousedown:this.Remove}]]);var q=s.firstChild;if(r.msieBackgroundBug){q.style.backgroundColor="white";q.style.filter="alpha(opacity=0)"}if(r.msieFixedPositionBug){s.width=s.height=0;this.Resize();attachEvent("onresize",this.Resize)}else{q.style.position="fixed"}return s},Resize:function(){setTimeout(a.SetWH,0)},SetWH:function(){var q=document.getElementById("MathJax_MenuFrame");if(q){q=q.firstChild;q.style.width=q.style.height="1px";q.style.width=document.body.scrollWidth+"px";q.style.height=document.body.scrollHeight+"px"}},saveCookie:function(){g.Cookie.Set("menu",this.cookie)},getCookie:function(){this.cookie=g.Cookie.Get("menu")},getImages:function(){if(a.isMobile){var q=new Image();q.src=o.closeImg}}});var m=a.ITEM=MathJax.Object.Subclass({name:"",Create:function(r){if(!this.hidden){var q={onmouseover:a.Mouseover,onmouseout:a
 .Mouseout,onmouseup:a.Mouseup,onmousedown:a.Mousedown,ondragstart:h,onselectstart:h,onselectend:h,ontouchstart:a.Touchstart,ontouchend:a.Touchend,className:"MathJax_MenuItem",menuItem:this};if(this.disabled){q.className+=" MathJax_MenuDisabled"}g.addElement(r,"div",q,this.Label(q,r))}},Mouseover:function(u,w){if(!this.disabled){this.Activate(w)}if(!this.menu||!this.menu.posted){var v=document.getElementById("MathJax_MenuFrame").childNodes,r=w.parentNode.childNodes;for(var s=0,q=r.length;s<q;s++){var t=r[s].menuItem;if(t&&t.menu&&t.menu.posted){t.Deactivate(r[s])}}q=v.length-1;while(q>=0&&w.parentNode.menuItem!==v[q].menuItem){v[q].menuItem.posted=false;v[q].parentNode.removeChild(v[q]);q--}if(this.Timer&&!a.isMobile){this.Timer(u,w)}}},Mouseout:function(q,r){if(!this.menu||!this.menu.posted){this.Deactivate(r)}if(this.timer){clearTimeout(this.timer);delete this.timer}},Mouseup:function(q,r){return this.Remove(q,r)},Touchstart:function(q,r){return this.TouchEvent(q,r,"Mousedo
 wn")},Touchend:function(q,r){return this.TouchEvent(q,r,"Mouseup")},TouchEvent:function(r,s,q){if(this!==m.lastItem){if(m.lastMenu){a.Event(r,m.lastMenu,"Mouseout")}a.Event(r,s,"Mouseover",true);m.lastItem=this;m.lastMenu=s}if(this.nativeTouch){return null}a.Event(r,s,q);return false},Remove:function(q,r){r=r.parentNode.menuItem;return r.Remove(q,r)},Activate:function(q){this.Deactivate(q);q.className+=" MathJax_MenuActive"},Deactivate:function(q){q.className=q.className.replace(/ MathJax_MenuActive/,"")},With:function(q){if(q){c.Insert(this,q)}return this}});a.ITEM.COMMAND=a.ITEM.Subclass({action:function(){},Init:function(q,s,r){this.name=q;this.action=s;this.With(r)},Label:function(q,r){return[this.name]},Mouseup:function(q,r){if(!this.disabled){this.Remove(q,r);j.Post(["command",this]);this.action.call(this,q)}return h(q)}});a.ITEM.SUBMENU=a.ITEM.Subclass({menu:null,marker:(n&&!c.Browser.isSafari?"\u25B6":"\u25B8"),Init:function(q,s){this.name=q;var r=1;if(!(s instanceof
  a.ITEM)){this.With(s),r++}this.menu=a.apply(a,[].slice.call(arguments,r))},Label:function(q,r){this.menu.posted=false;return[this.name+" ",["span",{className:"MathJax_MenuArrow"},[this.marker]]]},Timer:function(q,r){if(this.timer){clearTimeout(this.timer)}q={clientX:q.clientX,clientY:q.clientY};this.timer=setTimeout(f(["Mouseup",this,q,r]),o.delay)},Touchend:function(r,t){var s=this.menu.posted;var q=this.SUPER(arguments).Touchend.apply(this,arguments);if(s){this.Deactivate(t);delete m.lastItem;delete m.lastMenu}return q},Mouseup:function(r,t){if(!this.disabled){if(!this.menu.posted){if(this.timer){clearTimeout(this.timer);delete this.timer}this.menu.Post(r,t)}else{var s=document.getElementById("MathJax_MenuFrame").childNodes,q=s.length-1;while(q>=0){var u=s[q];u.menuItem.posted=false;u.parentNode.removeChild(u);if(u.menuItem===this.menu){break}q--}}}return h(r)}});a.ITEM.RADIO=a.ITEM.Subclass({variable:null,marker:(n?"\u25CF":"\u2713"),Init:function(r,q,s){this.name=r;this
 .variable=q;this.With(s);if(this.value==null){this.value=this.name}},Label:function(r,s){var q={className:"MathJax_MenuRadioCheck"};if(o.settings[this.variable]!==this.value){q={style:{display:"none"}}}return[["span",q,[this.marker]]," "+this.name]},Mouseup:function(t,u){if(!this.disabled){var v=u.parentNode.childNodes;for(var r=0,q=v.length;r<q;r++){var s=v[r].menuItem;if(s&&s.variable===this.variable){v[r].firstChild.style.display="none"}}u.firstChild.display="";o.settings[this.variable]=this.value;a.cookie[this.variable]=o.settings[this.variable];a.saveCookie();j.Post(["radio button",this])}this.Remove(t,u);if(this.action&&!this.disabled){this.action.call(a,this)}return h(t)}});a.ITEM.CHECKBOX=a.ITEM.Subclass({variable:null,marker:"\u2713",Init:function(r,q,s){this.name=r;this.variable=q;this.With(s)},Label:function(r,s){var q={className:"MathJax_MenuCheck"};if(!o.settings[this.variable]){q={style:{display:"none"}}}return[["span",q,[this.marker]]," "+this.name]},Mouseup:f
 unction(q,r){if(!this.disabled){r.firstChild.display=(o.settings[this.variable]?"none":"");o.settings[this.variable]=!o.settings[this.variable];a.cookie[this.variable]=o.settings[this.variable];a.saveCookie();j.Post(["checkbox",this])}this.Remove(q,r);if(this.action&&!this.disabled){this.action.call(a,this)}return h(q)}});a.ITEM.LABEL=a.ITEM.Subclass({Init:function(q,r){this.name=q;this.With(r)},Label:function(q,r){delete q.onmouseover,delete q.onmouseout;delete q.onmousedown;q.className+=" MathJax_MenuLabel";return[this.name]}});a.ITEM.RULE=a.ITEM.Subclass({Label:function(q,r){delete q.onmouseover,delete q.onmouseout;delete q.onmousedown;q.className+=" MathJax_MenuRule";return null}});a.About=function(){var t=b["HTML-CSS"]||{fontInUse:""};var v=(t.webFonts?"":"local "),r=(t.webFonts?" web":"");var s=(t.imgFonts?"Image":v+t.fontInUse+r)+" fonts";if(s==="local  fonts"&&b.SVG){s="web SVG fonts"}var q=["MathJax.js v"+MathJax.fileversion,["br"]];q.push(["div",{style:{"border-top
 ":"groove 2px",margin:".25em 0"}}]);a.About.GetJax(q,MathJax.InputJax,"Input Jax");a.About.GetJax(q,MathJax.OutputJax,"Output Jax");a.About.GetJax(q,MathJax.ElementJax,"Element Jax");q.push(["div",{style:{"border-top":"groove 2px",margin:".25em 0"}}]);a.About.GetJax(q,MathJax.Extension,"Extension",true);q.push(["div",{style:{"border-top":"groove 2px",margin:".25em 0"}}],["center",{},[c.Browser+" v"+c.Browser.version+(t.webFonts&&!t.imgFonts?" \u2014 "+t.allowWebFonts.replace(/otf/,"woff or otf")+" fonts":"")]]);a.About.div=a.Background(a.About);var w=g.addElement(a.About.div,"div",{id:"MathJax_About"},[["b",{style:{fontSize:"120%"}},["MathJax"]]," v"+MathJax.version,["br"],"using "+s,["br"],["br"],["span",{style:{display:"inline-block","text-align":"left","font-size":"80%","max-height":"20em",overflow:"auto","background-color":"#E4E4E4",padding:".4em .6em",border:"1px inset"}},q],["br"],["br"],["a",{href:"http://www.mathjax.org/"},["www.mathjax.org"]],["img",{src:o.closeImg,
 style:{width:"21px",height:"21px",position:"absolute",top:".2em",right:".2em"},onclick:a.About.Remove}]]);var x=(document.documentElement||{});var u=window.innerHeight||x.clientHeight||x.scrollHeight||0;if(a.prototype.msieAboutBug){w.style.width="20em";w.style.position="absolute";w.style.left=Math.floor((document.documentElement.scrollWidth-w.offsetWidth)/2)+"px";w.style.top=(Math.floor((u-w.offsetHeight)/3)+document.body.scrollTop)+"px"}else{w.style.marginLeft=Math.floor(-w.offsetWidth/2)+"px";w.style.top=Math.floor((u-w.offsetHeight)/3)+"px"}};a.About.Remove=function(q){if(a.About.div){document.body.removeChild(a.About.div);delete a.About.div}};a.About.GetJax=function(r,w,u,t){var v=[];for(var x in w){if(w.hasOwnProperty(x)&&w[x]){if((t&&w[x].version)||(w[x].isa&&w[x].isa(w))){v.push((w[x].id||x)+" "+u+" v"+w[x].version)}}}v.sort();for(var s=0,q=v.length;s<q;s++){r.push(v[s],["br"])}return r};a.Help=function(){window.open(o.helpURL,"MathJaxHelp")};a.ShowSource=function(t){
 if(!t){t=window.event}var s={screenX:t.screenX,screenY:t.screenY};if(!a.jax){return}if(this.format==="MathML"){var q=MathJax.ElementJax.mml;if(q&&typeof(q.mbase.prototype.toMathML)!=="undefined"){try{a.ShowSource.Text(a.jax.root.toMathML(),t)}catch(r){if(!r.restart){throw r}f.After([this,a.ShowSource,s],r.restart)}}else{if(!k.loadingToMathML){k.loadingToMathML=true;a.ShowSource.Window(t);f.Queue(k.Require("[MathJax]/extensions/toMathML.js"),function(){delete k.loadingToMathML;if(!q.mbase.prototype.toMathML){q.mbase.prototype.toMathML=function(){}}},[this,a.ShowSource,s]);return}}}else{if(a.jax.originalText==null){alert("No original form available");return}a.ShowSource.Text(a.jax.originalText,t)}};a.ShowSource.Window=function(r){if(!a.ShowSource.w){var s=[],q=o.windowSettings;for(var t in q){if(q.hasOwnProperty(t)){s.push(t+"="+q[t])}}a.ShowSource.w=window.open("","_blank",s.join(","))}return a.ShowSource.w};a.ShowSource.Text=function(t,s){var q=a.ShowSource.Window(s);delete 
 a.ShowSource.w;t=t.replace(/^\s*/,"").replace(/\s*$/,"");t=t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");if(a.isMobile){q.document.open();q.document.write("<html><head><meta name='viewport' content='width=device-width, initial-scale=1.0' /><title>MathJax Equation Source</title></head><body style='font-size:85%'>");q.document.write("<pre>"+t+"</pre>");q.document.write("<hr><input type='button' value='Close' onclick='window.close()' />");q.document.write("</body></html>");q.document.close()}else{q.document.open();q.document.write("<html><head><title>MathJax Equation Source</title></head><body style='font-size:85%'>");q.document.write("<table><tr><td><pre>"+t+"</pre></td></tr></table>");q.document.write("</body></html>");q.document.close();var r=q.document.body.firstChild;setTimeout(function(){var w=(q.outerHeight-q.innerHeight)||30,v=(q.outerWidth-q.innerWidth)||30,u,z;v=Math.max(100,Math.min(Math.floor(0.5*screen.width),r.offsetWidth+v+25));w=Math.max(40,M
 ath.min(Math.floor(0.5*screen.height),r.offsetHeight+w+25));q.resizeTo(v,w);if(s&&s.screenX!=null){u=Math.max(0,Math.min(s.screenX-Math.floor(v/2),screen.width-v-20));z=Math.max(0,Math.min(s.screenY-Math.floor(w/2),screen.height-w-20));q.moveTo(u,z)}},50)}};a.Scale=function(){var r=b["HTML-CSS"],q=b.NativeMML,u=b.SVG;var t=(r||q||u||{config:{scale:100}}).config.scale;var s=prompt("Scale all mathematics (compared to surrounding text) by",t+"%");if(s){if(s.match(/^\s*\d+(\.\d*)?\s*%?\s*$/)){s=parseFloat(s);if(s){if(s!==t){if(r){r.config.scale=s}if(q){q.config.scale=s}if(u){u.config.scale=s}a.cookie.scale=s;a.saveCookie();c.Reprocess()}}else{alert("The scale should not be zero")}}else{alert("The scale should be a percentage (e.g., 120%)")}}};a.Zoom=function(){if(!MathJax.Extension.MathZoom){k.Require("[MathJax]/extensions/MathZoom.js")}};a.Renderer=function(){var r=c.outputJax["jax/mml"];if(r[0]!==o.settings.renderer){var u=c.Browser,t,q=a.Renderer.Messages,s;switch(o.settings.
 renderer){case"NativeMML":if(!o.settings.warnedMML){if(u.isChrome||(u.isSafari&&!u.versionAtLeast("5.0"))){t=q.MML.WebKit}else{if(u.isMSIE){if(!u.hasMathPlayer){t=q.MML.MSIE}}else{t=q.MML[u]}}s="warnedMML"}break;case"SVG":if(!o.settings.warnedSVG){if(u.isMSIE&&!e){t=q.SVG.MSIE}}break}if(t){t+="\n\nSwitch the renderer anyway?\n\n(Press OK to switch, CANCEL to continue with the current renderer)";a.cookie.renderer=r[0].id;a.saveCookie();if(!confirm(t)){return}if(s){a.cookie[s]=o.settings[s]=true}a.cookie.renderer=o.settings.renderer;a.saveCookie()}c.Queue(["setRenderer",c,o.settings.renderer,"jax/mml"],["Rerender",c])}};a.Renderer.Messages={MML:{WebKit:"Your browser doesn't seem to support MathML natively, so switching to MathML output may cause the mathematics on the page to become unreadable.",MSIE:"Internet Explorer requires the MathPlayer plugin in order to process MathML output.",Opera:"Opera's support for MathML is limited, so switching to MathML output may cause some ex
 pressions to render poorly.",Safari:"Your browser's native MathML does not implement all the features used by MathJax, so some expressions may not render properly.",Firefox:"Your browser's native MathML does not implement all the features used by MathJax, so some expressions may not render properly."},SVG:{MSIE:"SVG is not implemented in Internet Explorer prior to IE9, or when the browser is emulating IE8 or below. Switching to SVG output will cause the mathemtics to not display properly."}};a.Font=function(){var q=b["HTML-CSS"];if(!q){return}document.location.reload()};a.MPEvents=function(s){var r=o.settings.discoverable,q=a.MPEvents.Messages;if(!e){if(o.settings.mpMouse&&!confirm(q.IE8warning)){delete a.cookie.mpContext;delete o.settings.mpContext;delete a.cookie.mpMouse;delete o.settings.mpMouse;a.saveCookie();return}o.settings.mpContext=o.settings.mpMouse;a.cookie.mpContext=a.cookie.mpMouse=o.settings.mpMouse;a.saveCookie();MathJax.Hub.Queue(["Rerender",MathJax.Hub])}els
 e{if(!r&&s.name==="Menu Events"&&o.settings.mpContext){alert(q.IE9warning)}}};a.MPEvents.Messages={IE8warning:"This will disable the MathJax menu and zoom features, but you can Alt-Click on an expression to obtain the MathJax menu instead.\n\nReally change the MathPlayer settings?",IE9warning:"The MathJax contextual menu will be disabled, but you can Alt-Click on an expression to obtain the MathJax menu instead."};c.Browser.Select({MSIE:function(q){var r=(document.compatMode==="BackCompat");var s=q.versionAtLeast("8.0")&&document.documentMode>7;a.Augment({margin:20,msieBackgroundBug:(document.documentMode<9),msieFixedPositionBug:(r||!s),msieAboutBug:r});if(e){delete o.styles["#MathJax_About"].filter;delete o.styles[".MathJax_Menu"].filter}},Firefox:function(q){a.skipMouseover=q.isMobile&&q.versionAtLeast("6.0");a.skipMousedown=q.isMobile}});a.isMobile=c.Browser.isMobile;a.noContextMenu=c.Browser.noContextMenu;c.Register.StartupHook("End Config",function(){o.settings=c.config
 .menuSettings;if(typeof(o.settings.showRenderer)!=="undefined"){o.showRenderer=o.settings.showRenderer}if(typeof(o.settings.showFontMenu)!=="undefined"){o.showFontMenu=o.settings.showFontMenu}if(typeof(o.settings.showContext)!=="undefined"){o.showContext=o.settings.showContext}a.getCookie();a.menu=a(m.SUBMENU("Show Math As",m.COMMAND("MathML Code",a.ShowSource,{nativeTouch:true,format:"MathML"}),m.COMMAND("Original Form",a.ShowSource,{nativeTouch:true}),m.RULE(),m.CHECKBOX("Show TeX hints in MathML","texHints")),m.RULE(),m.SUBMENU("Math Settings",m.SUBMENU("Zoom Trigger",m.RADIO("Hover","zoom",{action:a.Zoom}),m.RADIO("Click","zoom",{action:a.Zoom}),m.RADIO("Double-Click","zoom",{action:a.Zoom}),m.RADIO("No Zoom","zoom",{value:"None"}),m.RULE(),m.LABEL("Trigger Requires:"),m.CHECKBOX((c.Browser.isMac?"Option":"Alt"),"ALT"),m.CHECKBOX("Command","CMD",{hidden:!c.Browser.isMac}),m.CHECKBOX("Control","CTRL",{hidden:c.Browser.isMac}),m.CHECKBOX("Shift","Shift")),m.SUBMENU("Zoom F
 actor",m.RADIO("125%","zscale"),m.RADIO("133%","zscale"),m.RADIO("150%","zscale"),m.RADIO("175%","zscale"),m.RADIO("200%","zscale"),m.RADIO("250%","zscale"),m.RADIO("300%","zscale"),m.RADIO("400%","zscale")),m.RULE(),m.SUBMENU("Math Renderer",{hidden:!o.showRenderer},m.RADIO("HTML-CSS","renderer",{action:a.Renderer}),m.RADIO("MathML","renderer",{action:a.Renderer,value:"NativeMML"}),m.RADIO("SVG","renderer",{action:a.Renderer})),m.SUBMENU("MathPlayer",{hidden:!c.Browser.isMSIE||!o.showMathPlayer,disabled:!c.Browser.hasMathPlayer},m.LABEL("Let MathPlayer Handle:"),m.CHECKBOX("Menu Events","mpContext",{action:a.MPEvents,hidden:!e}),m.CHECKBOX("Mouse Events","mpMouse",{action:a.MPEvents,hidden:!e}),m.CHECKBOX("Mouse and Menu Events","mpMouse",{action:a.MPEvents,hidden:e})),m.SUBMENU("Font Preference",{hidden:!o.showFontMenu},m.LABEL("For HTML-CSS:"),m.RADIO("Auto","font",{action:a.Font}),m.RULE(),m.RADIO("TeX (local)","font",{action:a.Font}),m.RADIO("TeX (web)","font",{action:a
 .Font}),m.RADIO("TeX (image)","font",{action:a.Font}),m.RULE(),m.RADIO("STIX (local)","font",{action:a.Font})),m.SUBMENU("Contextual Menu",{hidden:!o.showContext},m.RADIO("MathJax","context"),m.RADIO("Browser","context")),m.COMMAND("Scale All Math ...",a.Scale),m.RULE().With({hidden:!o.showDiscoverable,name:"discover_rule"}),m.CHECKBOX("Highlight on Hover","discoverable",{hidden:!o.showDiscoverable})),m.RULE(),m.COMMAND("About MathJax",a.About),m.COMMAND("MathJax Help",a.Help));if(a.isMobile){(function(){var r=o.settings;var q=a.menu.Find("Math Settings","Zoom Trigger").menu;q.items[0].disabled=q.items[1].disabled=true;if(r.zoom==="Hover"||r.zoom=="Click"){r.zoom="None"}q.items=q.items.slice(0,4);if(navigator.appVersion.match(/[ (]Android[) ]/)){a.ITEM.SUBMENU.Augment({marker:"\u00BB"})}})()}});a.showRenderer=function(q){a.cookie.showRenderer=o.showRenderer=q;a.saveCookie();a.menu.Find("Math Settings","Math Renderer").hidden=!q};a.showMathPlayer=function(q){a.cookie.showMath
 Player=o.showMathPlayer=q;a.saveCookie();a.menu.Find("Math Settings","MathPlayer").hidden=!q};a.showFontMenu=function(q){a.cookie.showFontMenu=o.showFontMenu=q;a.saveCookie();a.menu.Find("Math Settings","Font Preference").hidden=!q};a.showContext=function(q){a.cookie.showContext=o.showContext=q;a.saveCookie();a.menu.Find("Math Settings","Contextual Menu").hidden=!q};a.showDiscoverable=function(q){a.cookie.showContext=o.showContext=q;a.saveCookie();a.menu.Find("Math Settings","Highlight on Hover").hidden=!q;a.menu.Find("Math Settings","discover_rule").hidden=!q};MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function(){if(!MathJax.OutputJax["HTML-CSS"].config.imageFont){a.menu.Find("Math Settings","Font Preference","TeX (image)").disabled=true}});f.Queue(c.Register.StartupHook("End Config",{}),["getImages",a],["Styles",k,o.styles],["Post",c.Startup.signal,"MathMenu Ready"],["loadComplete",k,"[MathJax]/extensions/MathMenu.js"])})(MathJax.Hub,MathJax.HTML,MathJax.Ajax,Ma
 thJax.CallBack,MathJax.OutputJax);
+
diff --git a/data/mathjax/extensions/MathZoom.js b/data/mathjax/extensions/MathZoom.js
new file mode 100644
index 0000000..edc0e08
--- /dev/null
+++ b/data/mathjax/extensions/MathZoom.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/extensions/MathZoom.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a,d,f,c,j){var k="2.1";var i=a.CombineConfig("MathZoom",{styles:{"#MathJax_Zoom":{position:"absolute","background-color":"#F0F0F0",overflow:"auto",display:"block","z-index":301,padding:".5em",border:"1px solid black",margin:0,"font-weight":"normal","font-style":"normal","text-align":"left","text-indent":0,"text-transform":"none","line-height":"normal","letter-spacing":"normal","word-spacing":"normal","word-wrap":"normal","white-space":"nowrap","float":"none","box-shadow":"5px 5px 15px #AAAAAA","-webkit-box-shadow":"5px 5px 15px #AAAAAA","-moz-box-shadow":"5px 5px 15px #AAAAAA","-khtml-box-shadow":"5px 5px 15px #AAAAAA",filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')"},"#MathJax_ZoomOverlay":{position:"absolute",left:0,top:0,"z-index":300,display:"inline-block",width:"100%",height:"100%",border:0,padding:0,margin:0,"background-color":"white",opacity:0,filter:"alpha(opacity=0)"},"#MathJax_ZoomEventTrap":{position:"a
 bsolute",left:0,top:0,"z-index":302,display:"inline-block",border:0,padding:0,margin:0,"background-color":"white",opacity:0,filter:"alpha(opacity=0)"}}});var e,b,g;MathJax.Hub.Register.StartupHook("MathEvents Ready",function(){g=MathJax.Extension.MathEvents.Event;e=MathJax.Extension.MathEvents.Event.False;b=MathJax.Extension.MathEvents.Hover});var h=MathJax.Extension.MathZoom={version:k,settings:a.config.menuSettings,scrollSize:18,HandleEvent:function(n,l,m){if(h.settings.CTRL&&!n.ctrlKey){return true}if(h.settings.ALT&&!n.altKey){return true}if(h.settings.CMD&&!n.metaKey){return true}if(h.settings.Shift&&!n.shiftKey){return true}if(!h[l]){return true}return h[l](n,m)},Click:function(m,l){if(this.settings.zoom==="Click"){return this.Zoom(m,l)}},DblClick:function(m,l){if(this.settings.zoom==="Double-Click"){return this.Zoom(m,l)}},Hover:function(m,l){if(this.settings.zoom==="Hover"){this.Zoom(m,l);return true}return false},Zoom:function(n,s){this.Remove();b.ClearHoverTimer();
 g.ClearSelection();var q=MathJax.OutputJax[s.jaxID];var o=q.getJaxFromMath(s);if(o.hover){b.UnHover(o)}var l=Math.floor(0.85*document.body.clientWidth),r=Math.floor(0.85*Math.max(document.body.clientHeight,document.documentElement.clientHeight));var m=d.Element("span",{style:{position:"relative",display:"inline-block",height:0,width:0},id:"MathJax_ZoomFrame"},[["span",{id:"MathJax_ZoomOverlay",onmousedown:this.Remove}],["span",{id:"MathJax_Zoom",onclick:this.Remove,style:{visibility:"hidden",fontSize:this.settings.zscale,"max-width":l+"px","max-height":r+"px"}},[["span",{style:{display:"inline-block","white-space":"nowrap"}}]]]]);var x=m.lastChild,u=x.firstChild,p=m.firstChild;s.parentNode.insertBefore(m,s);s.parentNode.insertBefore(s,m);if(u.addEventListener){u.addEventListener("mousedown",this.Remove,true)}if(this.msieTrapEventBug){var w=d.Element("span",{id:"MathJax_ZoomEventTrap",onmousedown:this.Remove});m.insertBefore(w,x)}if(this.msieZIndexBug){var t=d.addElement(docu
 ment.body,"img",{src:"about:blank",id:"MathJax_ZoomTracker",width:0,height:0,style:{width:0,height:0,position:"relative"}});m.style.position="relative";m.style.zIndex=i.styles["#MathJax_ZoomOverlay"]["z-index"];m=t}var v=q.Zoom(o,u,s,l,r);if(this.msiePositionBug){if(this.msieSizeBug){x.style.height=v.zH+"px";x.style.width=v.zW+"px"}if(x.offsetHeight>r){x.style.height=r+"px";x.style.width=(v.zW+this.scrollSize)+"px"}if(x.offsetWidth>l){x.style.width=l+"px";x.style.height=(v.zH+this.scrollSize)+"px"}}if(this.operaPositionBug){x.style.width=Math.min(l,v.zW)+"px"}if(x.offsetWidth<l&&x.offsetHeight<r){x.style.overflow="visible"}this.Position(x,v);if(this.msieTrapEventBug){w.style.height=x.clientHeight+"px";w.style.width=x.clientWidth+"px";w.style.left=(parseFloat(x.style.left)+x.clientLeft)+"px";w.style.top=(parseFloat(x.style.top)+x.clientTop)+"px"}x.style.visibility="";if(this.settings.zoom==="Hover"){p.onmouseover=this.Remove}if(window.addEventListener){addEventListener("resiz
 e",this.Resize,false)}else{if(window.attachEvent){attachEvent("onresize",this.Resize)}else{this.onresize=window.onresize;window.onresize=this.Resize}}a.signal.Post(["math zoomed",o]);return e(n)},Position:function(p,r){var q=this.Resize(),m=q.x,s=q.y,l=r.mW;var o=-l-Math.floor((p.offsetWidth-l)/2),n=r.Y;p.style.left=Math.max(o,10-m)+"px";p.style.top=Math.max(n,10-s)+"px";if(!h.msiePositionBug){h.SetWH()}},Resize:function(n){if(h.onresize){h.onresize(n)}var l=0,q=0,o,p=document.getElementById("MathJax_ZoomFrame"),m=document.getElementById("MathJax_ZoomOverlay");o=p;while(o.offsetParent){l+=o.offsetLeft;o=o.offsetParent}if(h.operaPositionBug){p.style.border="1px solid"}o=p;while(o.offsetParent){q+=o.offsetTop;o=o.offsetParent}if(h.operaPositionBug){p.style.border=""}m.style.left=(-l)+"px";m.style.top=(-q)+"px";if(h.msiePositionBug){setTimeout(h.SetWH,0)}else{h.SetWH()}return{x:l,y:q}},SetWH:function(){var l=document.getElementById("MathJax_ZoomOverlay");l.style.width=l.style.h
 eight="1px";var m=document.documentElement||document.body;l.style.width=m.scrollWidth+"px";l.style.height=Math.max(m.clientHeight,m.scrollHeight)+"px"},Remove:function(n){var p=document.getElementById("MathJax_ZoomFrame");if(p){var o=MathJax.OutputJax[p.previousSibling.jaxID];var l=o.getJaxFromMath(p.previousSibling);a.signal.Post(["math unzoomed",l]);p.parentNode.removeChild(p);p=document.getElementById("MathJax_ZoomTracker");if(p){p.parentNode.removeChild(p)}if(h.operaRefreshBug){var m=d.addElement(document.body,"div",{style:{position:"fixed",left:0,top:0,width:"100%",height:"100%",backgroundColor:"white",opacity:0},id:"MathJax_OperaDiv"});document.body.removeChild(m)}if(window.removeEventListener){removeEventListener("resize",h.Resize,false)}else{if(window.detachEvent){detachEvent("onresize",h.Resize)}else{window.onresize=h.onresize;delete h.onresize}}}return e(n)}};a.Browser.Select({MSIE:function(l){var n=(document.documentMode||0);var m=(n>=9);h.msiePositionBug=!m;h.msi
 eSizeBug=l.versionAtLeast("7.0")&&(!document.documentMode||n===7||n===8);h.msieZIndexBug=(n<=7);h.msieInlineBlockAlignBug=(n<=7);h.msieTrapEventBug=!window.addEventListener;if(document.compatMode==="BackCompat"){h.scrollSize=52}if(m){delete i.styles["#MathJax_Zoom"].filter}},Opera:function(l){h.operaPositionBug=true;h.operaRefreshBug=true}});h.topImg=(h.msieInlineBlockAlignBug?d.Element("img",{style:{width:0,height:0,position:"relative"},src:"about:blank"}):d.Element("span",{style:{width:0,height:0,display:"inline-block"}}));if(h.operaPositionBug||h.msieTopBug){h.topImg.style.border="1px solid"}MathJax.Callback.Queue(["StartupHook",MathJax.Hub.Register,"Begin Styles",{}],["Styles",f,i.styles],["Post",a.Startup.signal,"MathZoom Ready"],["loadComplete",f,"[MathJax]/extensions/MathZoom.js"])})(MathJax.Hub,MathJax.HTML,MathJax.Ajax,MathJax.OutputJax["HTML-CSS"],MathJax.OutputJax.NativeMML);
+
diff --git a/data/mathjax/extensions/mml2jax.js b/data/mathjax/extensions/mml2jax.js
new file mode 100644
index 0000000..d69b514
--- /dev/null
+++ b/data/mathjax/extensions/mml2jax.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/extensions/mml2jax.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Extension.mml2jax={version:"2.1",config:{preview:"alttext"},MMLnamespace:"http://www.w3.org/1998/Math/MathML",PreProcess:function(e){if(!this.configured){this.config=MathJax.Hub.CombineConfig("mml2jax",this.config);if(this.config.Augment){MathJax.Hub.Insert(this,this.config.Augment)}this.InitBrowser();this.configured=true}if(typeof(e)==="string"){e=document.getElementById(e)}if(!e){e=document.body}this.ProcessMathArray(e.getElementsByTagName("math"));if(e.getElementsByTagNameNS){this.ProcessMathArray(e.getElementsByTagNameNS(this.MMLnamespace,"math"))}var d,b;if(typeof(document.namespaces)!=="undefined"){try{for(d=0,b=document.namespaces.length;d<b;d++){var f=document.namespaces[d];if(f.urn===this.MMLnamespace){this.ProcessMathArray(e.getElementsByTagName(f.name+":math"))}}}catch(g){}}else{var c=document.getElementsByTagName("html")[0];if(c){for(d=0,b=c.attributes.length;d<b;d++){var a=c.attributes[d];if(a.nodeName.substr(0,6)==="xmlns:"&&a.nodeValue===this.MMLnamesp
 ace){this.ProcessMathArray(e.getElementsByTagName(a.nodeName.substr(6)+":math"))}}}}},ProcessMathArray:function(b){var a;if(b.length){if(this.MathTagBug){for(a=b.length-1;a>=0;a--){if(b[a].nodeName==="MATH"){this.ProcessMathFlattened(b[a])}else{this.ProcessMath(b[a])}}}else{for(a=b.length-1;a>=0;a--){this.ProcessMath(b[a])}}}},ProcessMath:function(e){var d=e.parentNode;var a=document.createElement("script");a.type="math/mml";d.insertBefore(a,e);if(this.AttributeBug){var b=this.OuterHTML(e);if(this.CleanupHTML){b=b.replace(/<\?import .*?>/i,"").replace(/<\?xml:namespace .*?\/>/i,"");b=b.replace(/&nbsp;/g,"&#xA0;")}MathJax.HTML.setScript(a,b);d.removeChild(e)}else{var c=MathJax.HTML.Element("span");c.appendChild(e);MathJax.HTML.setScript(a,c.innerHTML)}if(this.config.preview!=="none"){this.createPreview(e,a)}},ProcessMathFlattened:function(f){var d=f.parentNode;var b=document.createElement("script");b.type="math/mml";d.insertBefore(b,f);var c="",e,a=f;while(f&&f.nodeName!=="/M
 ATH"){e=f;f=f.nextSibling;c+=this.NodeHTML(e);e.parentNode.removeChild(e)}if(f&&f.nodeName==="/MATH"){f.parentNode.removeChild(f)}b.text=c+"</math>";if(this.config.preview!=="none"){this.createPreview(a,b)}},NodeHTML:function(e){var c,b,a;if(e.nodeName==="#text"){c=this.quoteHTML(e.nodeValue)}else{if(e.nodeName==="#comment"){c="<!--"+e.nodeValue+"-->"}else{c="<"+e.nodeName.toLowerCase();for(b=0,a=e.attributes.length;b<a;b++){var d=e.attributes[b];if(d.specified){c+=" "+d.nodeName.toLowerCase().replace(/xmlns:xmlns/,"xmlns")+"=";var f=d.nodeValue;if(f==null&&d.nodeName==="style"&&e.style){f=e.style.cssText}c+='"'+this.quoteHTML(f)+'"'}}c+=">";if(e.outerHTML!=null&&e.outerHTML.match(/(.<\/[A-Z]+>|\/>)$/)){for(b=0,a=e.childNodes.length;b<a;b++){c+=this.OuterHTML(e.childNodes[b])}c+="</"+e.nodeName.toLowerCase()+">"}}}return c},OuterHTML:function(d){if(d.nodeName.charAt(0)==="#"){return this.NodeHTML(d)}if(!this.AttributeBug){return d.outerHTML}var c=this.NodeHTML(d);for(var b=0
 ,a=d.childNodes.length;b<a;b++){c+=this.OuterHTML(d.childNodes[b])}c+="</"+d.nodeName.toLowerCase()+">";return c},quoteHTML:function(a){if(a==null){a=""}return a.replace(/&/g,"&#x26;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")},createPreview:function(b,a){var c;if(this.config.preview==="alttext"){var d=b.getAttribute("alttext");if(d!=null){c=[this.filterPreview(d)]}}else{if(this.config.preview instanceof Array){c=this.config.preview}}if(c){c=MathJax.HTML.Element("span",{className:MathJax.Hub.config.preRemoveClass},c);a.parentNode.insertBefore(c,a)}},filterPreview:function(a){return a},InitBrowser:function(){var b=MathJax.HTML.Element("span",{id:"<",className:"mathjax",innerHTML:"<math><mi>x</mi><mspace /></math>"});var a=b.outerHTML||"";this.AttributeBug=a!==""&&!(a.match(/id="&lt;"/)&&a.match(/class="mathjax"/)&&a.match(/<\/math>/));this.MathTagBug=b.childNodes.length>1;this.CleanupHTML=MathJax.Hub.Browser.isMSIE}};MathJax.Hub.Register.PreProcessor(["
 PreProcess",MathJax.Extension.mml2jax]);MathJax.Ajax.loadComplete("[MathJax]/extensions/mml2jax.js");
+
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/Makefile.am b/data/mathjax/fonts/HTML-CSS/TeX/woff/Makefile.am
new file mode 100644
index 0000000..8d9d63f
--- /dev/null
+++ b/data/mathjax/fonts/HTML-CSS/TeX/woff/Makefile.am
@@ -0,0 +1,25 @@
+mjdir=$(datadir)/yelp/mathjax/fonts/HTML-CSS/TeX/woff
+
+mj_DATA =					\
+	MathJax_AMS-Regular.woff		\
+	MathJax_Caligraphic-Bold.woff		\
+	MathJax_Caligraphic-Regular.woff	\
+	MathJax_Fraktur-Bold.woff		\
+	MathJax_Fraktur-Regular.woff		\
+	MathJax_Main-Bold.woff			\
+	MathJax_Main-Italic.woff		\
+	MathJax_Main-Regular.woff		\
+	MathJax_Math-BoldItalic.woff		\
+	MathJax_Math-Italic.woff		\
+	MathJax_Math-Regular.woff		\
+	MathJax_SansSerif-Bold.woff		\
+	MathJax_SansSerif-Italic.woff		\
+	MathJax_SansSerif-Regular.woff		\
+	MathJax_Script-Regular.woff		\
+	MathJax_Size1-Regular.woff		\
+	MathJax_Size2-Regular.woff		\
+	MathJax_Size3-Regular.woff		\
+	MathJax_Size4-Regular.woff		\
+	MathJax_Typewriter-Regular.woff
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff
new file mode 100644
index 0000000..7aff423
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Bold.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Bold.woff
new file mode 100644
index 0000000..8f7552f
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Bold.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Regular.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Regular.woff
new file mode 100644
index 0000000..dcb26bb
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Regular.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Bold.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Bold.woff
new file mode 100644
index 0000000..5c3c076
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Bold.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Regular.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Regular.woff
new file mode 100644
index 0000000..4f8ea15
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Regular.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Bold.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Bold.woff
new file mode 100644
index 0000000..f6e65a5
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Bold.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Italic.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Italic.woff
new file mode 100644
index 0000000..f143cbb
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Italic.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Regular.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Regular.woff
new file mode 100644
index 0000000..863f97d
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Regular.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-BoldItalic.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-BoldItalic.woff
new file mode 100644
index 0000000..665421e
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-BoldItalic.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Italic.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Italic.woff
new file mode 100644
index 0000000..a1c3ce3
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Italic.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Regular.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Regular.woff
new file mode 100644
index 0000000..b7d94b0
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Regular.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Bold.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Bold.woff
new file mode 100644
index 0000000..3276cda
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Bold.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Italic.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Italic.woff
new file mode 100644
index 0000000..262b5dd
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Italic.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Regular.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Regular.woff
new file mode 100644
index 0000000..bd8891a
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Regular.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Script-Regular.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Script-Regular.woff
new file mode 100644
index 0000000..e26e10b
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Script-Regular.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size1-Regular.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size1-Regular.woff
new file mode 100644
index 0000000..91132d2
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size1-Regular.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size2-Regular.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size2-Regular.woff
new file mode 100644
index 0000000..dabf024
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size2-Regular.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff
new file mode 100644
index 0000000..b96e627
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size4-Regular.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size4-Regular.woff
new file mode 100644
index 0000000..ddb3f5d
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size4-Regular.woff differ
diff --git a/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Typewriter-Regular.woff b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Typewriter-Regular.woff
new file mode 100644
index 0000000..b060489
Binary files /dev/null and b/data/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Typewriter-Regular.woff differ
diff --git a/data/mathjax/jax/Makefile.am b/data/mathjax/jax/Makefile.am
new file mode 100644
index 0000000..42e61de
--- /dev/null
+++ b/data/mathjax/jax/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = element input output
diff --git a/data/mathjax/jax/element/Makefile.am b/data/mathjax/jax/element/Makefile.am
new file mode 100644
index 0000000..7ebbf8c
--- /dev/null
+++ b/data/mathjax/jax/element/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = mml
diff --git a/data/mathjax/jax/element/mml/Makefile.am b/data/mathjax/jax/element/mml/Makefile.am
new file mode 100644
index 0000000..0653c64
--- /dev/null
+++ b/data/mathjax/jax/element/mml/Makefile.am
@@ -0,0 +1,7 @@
+SUBDIRS = optable
+
+mjdir=$(datadir)/yelp/mathjax/jax/element/mml
+
+mj_DATA = jax.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/element/mml/jax.js b/data/mathjax/jax/element/mml/jax.js
new file mode 100644
index 0000000..17aef3d
--- /dev/null
+++ b/data/mathjax/jax/element/mml/jax.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/jax.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.ElementJax.mml=MathJax.ElementJax({mimeType:"jax/mml"},{id:"mml",version:"2.1",directory:MathJax.ElementJax.directory+"/mml",extensionDir:MathJax.ElementJax.extensionDir+"/mml",optableDir:MathJax.ElementJax.directory+"/mml/optable"});MathJax.ElementJax.mml.Augment({Init:function(){if(arguments.length===1&&arguments[0].type==="math"){this.root=arguments[0]}else{this.root=MathJax.ElementJax.mml.math.apply(this,arguments)}if(this.root.attr&&this.root.attr.mode){if(!this.root.display&&this.root.attr.mode==="display"){this.root.display="block";this.root.attrNames.push("display")}delete this.root.attr.mode;for(var b=0,a=this.root.attrNames.length;b<a;b++){if(this.root.attrNames[b]==="mode"){this.root.attrNames.splice(b,1);break}}}}},{INHERIT:"_inherit_",AUTO:"_auto_",SIZE:{INFINITY:"infinity",SMALL:"small",NORMAL:"normal",BIG:"big"},COLOR:{TRANSPARENT:"transparent"},VARIANT:{NORMAL:"normal",BOLD:"bold",ITALIC:"italic",BOLDITALIC:"bold-italic",DOUBLESTRUCK:"double-struck",F
 RAKTUR:"fraktur",BOLDFRAKTUR:"bold-fraktur",SCRIPT:"script",BOLDSCRIPT:"bold-script",SANSSERIF:"sans-serif",BOLDSANSSERIF:"bold-sans-serif",SANSSERIFITALIC:"sans-serif-italic",SANSSERIFBOLDITALIC:"sans-serif-bold-italic",MONOSPACE:"monospace",INITIAL:"inital",TAILED:"tailed",LOOPED:"looped",STRETCHED:"stretched",CALIGRAPHIC:"-tex-caligraphic",OLDSTYLE:"-tex-oldstyle"},FORM:{PREFIX:"prefix",INFIX:"infix",POSTFIX:"postfix"},LINEBREAK:{AUTO:"auto",NEWLINE:"newline",NOBREAK:"nobreak",GOODBREAK:"goodbreak",BADBREAK:"badbreak"},LINEBREAKSTYLE:{BEFORE:"before",AFTER:"after",DUPLICATE:"duplicate",INFIXLINBREAKSTYLE:"infixlinebreakstyle"},INDENTALIGN:{LEFT:"left",CENTER:"center",RIGHT:"right",AUTO:"auto",ID:"id",INDENTALIGN:"indentalign"},INDENTSHIFT:{INDENTSHIFT:"indentshift"},LINETHICKNESS:{THIN:"thin",MEDIUM:"medium",THICK:"thick"},NOTATION:{LONGDIV:"longdiv",ACTUARIAL:"actuarial",RADICAL:"radical",BOX:"box",ROUNDEDBOX:"roundedbox",CIRCLE:"circle",LEFT:"left",RIGHT:"right",TOP:"to
 p",BOTTOM:"bottom",UPDIAGONALSTRIKE:"updiagonalstrike",DOWNDIAGONALSTRIKE:"downdiagonalstrike",VERTICALSTRIKE:"verticalstrike",HORIZONTALSTRIKE:"horizontalstrike",MADRUWB:"madruwb"},ALIGN:{TOP:"top",BOTTOM:"bottom",CENTER:"center",BASELINE:"baseline",AXIS:"axis",LEFT:"left",RIGHT:"right"},LINES:{NONE:"none",SOLID:"solid",DASHED:"dashed"},SIDE:{LEFT:"left",RIGHT:"right",LEFTOVERLAP:"leftoverlap",RIGHTOVERLAP:"rightoverlap"},WIDTH:{AUTO:"auto",FIT:"fit"},ACTIONTYPE:{TOGGLE:"toggle",STATUSLINE:"statusline",TOOLTIP:"tooltip",INPUT:"input"},LENGTH:{VERYVERYTHINMATHSPACE:"veryverythinmathspace",VERYTHINMATHSPACE:"verythinmathspace",THINMATHSPACE:"thinmathspace",MEDIUMMATHSPACE:"mediummathspace",THICKMATHSPACE:"thickmathspace",VERYTHICKMATHSPACE:"verythickmathspace",VERYVERYTHICKMATHSPACE:"veryverythickmathspace",NEGATIVEVERYVERYTHINMATHSPACE:"negativeveryverythinmathspace",NEGATIVEVERYTHINMATHSPACE:"negativeverythinmathspace",NEGATIVETHINMATHSPACE:"negativethinmathspace",NEGATIVEM
 EDIUMMATHSPACE:"negativemediummathspace",NEGATIVETHICKMATHSPACE:"negativethickmathspace",NEGATIVEVERYTHICKMATHSPACE:"negativeverythickmathspace",NEGATIVEVERYVERYTHICKMATHSPACE:"negativeveryverythickmathspace"},OVERFLOW:{LINBREAK:"linebreak",SCROLL:"scroll",ELIDE:"elide",TRUNCATE:"truncate",SCALE:"scale"},UNIT:{EM:"em",EX:"ex",PX:"px",IN:"in",CM:"cm",MM:"mm",PT:"pt",PC:"pc"},TEXCLASS:{ORD:0,OP:1,BIN:2,REL:3,OPEN:4,CLOSE:5,PUNCT:6,INNER:7,VCENTER:8,NONE:-1},TEXCLASSNAMES:["ORD","OP","BIN","REL","OPEN","CLOSE","PUNCT","INNER","VCENTER"],copyAttributes:{fontfamily:true,fontsize:true,fontweight:true,fontstyle:true,color:true,background:true,id:true,"class":true,href:true,style:true},skipAttributes:{texClass:true,useHeight:true,texprimestyle:true},copyAttributeNames:["fontfamily","fontsize","fontweight","fontstyle","color","background","id","class","href","style"]});(function(a){a.mbase=MathJax.Object.Subclass({type:"base",isToken:false,defaults:{mathbackground:a.INHERIT,mathcolor
 :a.INHERIT},noInherit:{},noInheritAttribute:{texClass:true},linebreakContainer:false,Init:function(){this.data=[];if(this.inferRow&&!(arguments.length===1&&arguments[0].inferred)){this.Append(a.mrow().With({inferred:true}))}this.Append.apply(this,arguments)},With:function(d){for(var e in d){if(d.hasOwnProperty(e)){this[e]=d[e]}}return this},Append:function(){if(this.inferRow&&this.data.length){this.data[0].Append.apply(this.data[0],arguments)}else{for(var e=0,d=arguments.length;e<d;e++){this.SetData(this.data.length,arguments[e])}}},SetData:function(d,e){if(e!=null){if(!(e instanceof a.mbase)){e=(this.isToken?a.chars(e):a.mtext(e))}e.parent=this;e.setInherit(this.inheritFromMe?this:this.inherit)}this.data[d]=e},Parent:function(){var d=this.parent;while(d&&d.inferred){d=d.parent}return d},Get:function(e,j){if(this[e]!=null){return this[e]}if(this.attr&&this.attr[e]!=null){return this.attr[e]}var f=this.Parent();if(f&&f["adjustChild_"+e]!=null){return(f["adjustChild_"+e])(f.ch
 ildPosition(this))}var i=this.inherit;var d=i;while(i){var h=i[e];if(h==null&&i.attr){h=i.attr[e]}if(h!=null&&!i.noInheritAttribute[e]){var g=i.noInherit[this.type];if(!(g&&g[e])){return h}}d=i;i=i.inherit}if(!j){if(this.defaults[e]===a.AUTO){return this.autoDefault(e)}if(this.defaults[e]!==a.INHERIT&&this.defaults[e]!=null){return this.defaults[e]}if(d){return d.defaults[e]}}return null},hasValue:function(d){return(this.Get(d,true)!=null)},getValues:function(){var e={};for(var f=0,d=arguments.length;f<d;f++){e[arguments[f]]=this.Get(arguments[f])}return e},adjustChild_scriptlevel:function(d){return this.Get("scriptlevel")},adjustChild_displaystyle:function(d){return this.Get("displaystyle")},adjustChild_texprimestyle:function(d){return this.Get("texprimestyle")},childPosition:function(f){if(f.parent.inferred){f=f.parent}for(var e=0,d=this.data.length;e<d;e++){if(this.data[e]===f){return e}}return null},setInherit:function(f){if(f!==this.inherit&&this.inherit==null){this.inh
 erit=f;for(var e=0,d=this.data.length;e<d;e++){if(this.data[e]&&this.data[e].setInherit){this.data[e].setInherit(f)}}}},setTeXclass:function(d){this.getPrevClass(d);return(typeof(this.texClass)!=="undefined"?this:d)},getPrevClass:function(d){if(d){this.prevClass=d.Get("texClass");this.prevLevel=d.Get("scriptlevel")}},updateTeXclass:function(d){if(d){this.prevClass=d.prevClass;delete d.prevClass;this.prevLevel=d.prevLevel;delete d.prevLevel;this.texClass=d.Get("texClass")}},texSpacing:function(){var e=(this.prevClass!=null?this.prevClass:a.TEXCLASS.NONE);var d=(this.Get("texClass")||a.TEXCLASS.ORD);if(e===a.TEXCLASS.NONE||d===a.TEXCLASS.NONE){return""}if(e===a.TEXCLASS.VCENTER){e=a.TEXCLASS.ORD}if(d===a.TEXCLASS.VCENTER){d=a.TEXCLASS.ORD}var f=this.TEXSPACE[e][d];if(this.prevLevel>0&&this.Get("scriptlevel")>0&&f>=0){return""}return this.TEXSPACELENGTH[Math.abs(f)]},TEXSPACELENGTH:["",a.LENGTH.THINMATHSPACE,a.LENGTH.MEDIUMMATHSPACE,a.LENGTH.THICKMATHSPACE],TEXSPACE:[[0,-1,2,3,
 0,0,0,1],[-1,-1,0,3,0,0,0,1],[2,2,0,0,2,0,0,2],[3,3,0,0,3,0,0,3],[0,0,0,0,0,0,0,0],[0,-1,2,3,0,0,0,1],[1,1,0,1,1,1,1,1],[1,-1,2,3,1,0,1,1]],autoDefault:function(d){return""},isSpacelike:function(){return false},isEmbellished:function(){return false},Core:function(){return this},CoreMO:function(){return this},hasNewline:function(){if(this.isEmbellished()){return this.CoreMO().hasNewline()}if(this.isToken||this.linebreakContainer){return false}for(var e=0,d=this.data.length;e<d;e++){if(this.data[e]&&this.data[e].hasNewline()){return true}}return false},array:function(){if(this.inferred){return this.data}else{return[this]}},toString:function(){return this.type+"("+this.data.join(",")+")"}},{childrenSpacelike:function(){for(var e=0,d=this.data.length;e<d;e++){if(!this.data[e].isSpacelike()){return false}}return true},childEmbellished:function(){return(this.data[0]&&this.data[0].isEmbellished())},childCore:function(){return this.data[0]},childCoreMO:function(){return(this.data[0]
 ?this.data[0].CoreMO():null)},setChildTeXclass:function(d){if(this.data[0]){d=this.data[0].setTeXclass(d);this.updateTeXclass(this.data[0])}return d},setBaseTeXclasses:function(f){this.getPrevClass(f);this.texClass=null;if(this.isEmbellished()||this.data[0].isa(a.mi)){f=this.data[0].setTeXclass(f);this.updateTeXclass(this.Core())}else{if(this.data[0]){this.data[0].setTeXclass()}f=this}for(var e=1,d=this.data.length;e<d;e++){if(this.data[e]){this.data[e].setTeXclass()}}return f},setSeparateTeXclasses:function(f){this.getPrevClass(f);for(var e=0,d=this.data.length;e<d;e++){if(this.data[e]){this.data[e].setTeXclass()}}if(this.isEmbellished()){this.updateTeXclass(this.Core())}return this}});a.mi=a.mbase.Subclass({type:"mi",isToken:true,texClass:a.TEXCLASS.ORD,defaults:{mathvariant:a.AUTO,mathsize:a.INHERIT,mathbackground:a.INHERIT,mathcolor:a.INHERIT},autoDefault:function(e){if(e==="mathvariant"){var d=(this.data[0]||"").toString();return(d.length===1||(d.length===2&&d.charCodeA
 t(0)>=55296&&d.charCodeAt(0)<56320)?a.VARIANT.ITALIC:a.VARIANT.NORMAL)}return""},setTeXclass:function(e){this.getPrevClass(e);var d=this.data.join("");if(d.length>1&&d.match(/^[a-z][a-z0-9]*$/i)&&this.texClass===a.TEXCLASS.ORD){this.texClass=a.TEXCLASS.OP;this.autoOP=true}return this}});a.mn=a.mbase.Subclass({type:"mn",isToken:true,texClass:a.TEXCLASS.ORD,defaults:{mathvariant:a.INHERIT,mathsize:a.INHERIT,mathbackground:a.INHERIT,mathcolor:a.INHERIT}});a.mo=a.mbase.Subclass({type:"mo",isToken:true,defaults:{mathvariant:a.INHERIT,mathsize:a.INHERIT,mathbackground:a.INHERIT,mathcolor:a.INHERIT,form:a.AUTO,fence:a.AUTO,separator:a.AUTO,lspace:a.AUTO,rspace:a.AUTO,stretchy:a.AUTO,symmetric:a.AUTO,maxsize:a.AUTO,minsize:a.AUTO,largeop:a.AUTO,movablelimits:a.AUTO,accent:a.AUTO,linebreak:a.LINEBREAK.AUTO,lineleading:a.INHERIT,linebreakstyle:a.AUTO,linebreakmultchar:a.INHERIT,indentalign:a.INHERIT,indentshift:a.INHERIT,indenttarget:a.INHERIT,indentalignfirst:a.INHERIT,indentshiftfir
 st:a.INHERIT,indentalignlast:a.INHERIT,indentshiftlast:a.INHERIT,texClass:a.AUTO},defaultDef:{form:a.FORM.INFIX,fence:false,separator:false,lspace:a.LENGTH.THICKMATHSPACE,rspace:a.LENGTH.THICKMATHSPACE,stretchy:false,symmetric:true,maxsize:a.SIZE.INFINITY,minsize:"0em",largeop:false,movablelimits:false,accent:false,linebreak:a.LINEBREAK.AUTO,lineleading:"1ex",linebreakstyle:"before",indentalign:a.INDENTALIGN.AUTO,indentshift:"0",indenttarget:"",indentalignfirst:a.INDENTALIGN.INDENTALIGN,indentshiftfirst:a.INDENTSHIFT.INDENTSHIFT,indentalignlast:a.INDENTALIGN.INDENTALIGN,indentshiftlast:a.INDENTSHIFT.INDENTSHIFT,texClass:a.TEXCLASS.REL},SPACE_ATTR:{lspace:1,rspace:2,form:4},useMMLspacing:7,autoDefault:function(f,l){var k=this.def;if(!k){if(f==="form"){this.useMMLspacing&=~this.SPACE_ATTR.form;return this.getForm()}var j=this.data.join("");var e=[this.Get("form"),a.FORM.INFIX,a.FORM.POSTFIX,a.FORM.PREFIX];for(var g=0,d=e.length;g<d;g++){var h=this.OPTABLE[e[g]][j];if(h){k=this
 .makeDef(h);break}}if(!k){k=this.CheckRange(j)}if(!k&&l){k={}}else{if(!k){k=MathJax.Hub.Insert({},this.defaultDef)}k.form=e[0];this.def=k}}this.useMMLspacing&=~(this.SPACE_ATTR[f]||0);if(k[f]!=null){return k[f]}else{if(!l){return this.defaultDef[f]}}return""},CheckRange:function(h){var j=h.charCodeAt(0);if(j>=55296&&j<56320){j=(((j-55296)<<10)+(h.charCodeAt(1)-56320))+65536}for(var f=0,d=this.RANGES.length;f<d&&this.RANGES[f][0]<=j;f++){if(j<=this.RANGES[f][1]){if(this.RANGES[f][3]){var e=a.optableDir+"/"+this.RANGES[f][3]+".js";this.RANGES[f][3]=null;MathJax.Hub.RestartAfter(MathJax.Ajax.Require(e))}var g=a.TEXCLASSNAMES[this.RANGES[f][2]];g=this.OPTABLE.infix[h]=a.mo.OPTYPES[g==="BIN"?"BIN3":g];return this.makeDef(g)}}return null},makeDef:function(e){if(e[2]==null){e[2]=this.defaultDef.texClass}if(!e[3]){e[3]={}}var d=MathJax.Hub.Insert({},e[3]);d.lspace=this.SPACE[e[0]];d.rspace=this.SPACE[e[1]];d.texClass=e[2];if(d.texClass===a.TEXCLASS.REL&&(this.movablelimits||this.dat
 a.join("").match(/^[a-z]+$/i))){d.texClass=a.TEXCLASS.OP}return d},getForm:function(){var d=this,f=this.parent,e=this.Parent();while(e&&e.isEmbellished()){d=f;f=e.parent;e=e.Parent()}if(f&&f.type==="mrow"&&f.NonSpaceLength()!==1){if(f.FirstNonSpace()===d){return a.FORM.PREFIX}if(f.LastNonSpace()===d){return a.FORM.POSTFIX}}return a.FORM.INFIX},isEmbellished:function(){return true},hasNewline:function(){return(this.Get("linebreak")===a.LINEBREAK.NEWLINE)},setTeXclass:function(d){this.getValues("lspace","rspace");if(this.useMMLspacing){this.texClass=a.TEXCLASS.NONE;return this}this.texClass=this.Get("texClass");if(this.data.join("")==="\u2061"){d.texClass=a.TEXCLASS.OP;this.texClass=this.prevClass=a.TEXCLASS.NONE;return d}return this.adjustTeXclass(d)},adjustTeXclass:function(d){if(this.texClass===a.TEXCLASS.NONE){return d}if(d){if(d.autoOP&&(this.texClass===a.TEXCLASS.BIN||this.texClass===a.TEXCLASS.REL)){d.texClass=a.TEXCLASS.ORD}this.prevClass=d.texClass||a.TEXCLASS.ORD;thi
 s.prevLevel=d.Get("scriptlevel")}else{this.prevClass=a.TEXCLASS.NONE}if(this.texClass===a.TEXCLASS.BIN&&(this.prevClass===a.TEXCLASS.NONE||this.prevClass===a.TEXCLASS.BIN||this.prevClass===a.TEXCLASS.OP||this.prevClass===a.TEXCLASS.REL||this.prevClass===a.TEXCLASS.OPEN||this.prevClass===a.TEXCLASS.PUNCT)){this.texClass=a.TEXCLASS.ORD}else{if(this.prevClass===a.TEXCLASS.BIN&&(this.texClass===a.TEXCLASS.REL||this.texClass===a.TEXCLASS.CLOSE||this.texClass===a.TEXCLASS.PUNCT)){d.texClass=this.prevClass=a.TEXCLASS.ORD}}return this}});a.mtext=a.mbase.Subclass({type:"mtext",isToken:true,isSpacelike:function(){return true},texClass:a.TEXCLASS.ORD,defaults:{mathvariant:a.INHERIT,mathsize:a.INHERIT,mathbackground:a.INHERIT,mathcolor:a.INHERIT}});a.mspace=a.mbase.Subclass({type:"mspace",isToken:true,isSpacelike:function(){return true},defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,width:"0em",height:"0ex",depth:"0ex",linebreak:a.LINEBREAK.AUTO},hasNewline:function(){return(thi
 s.Get("linebreak")===a.LINEBREAK.NEWLINE)}});a.ms=a.mbase.Subclass({type:"ms",isToken:true,texClass:a.TEXCLASS.ORD,defaults:{mathvariant:a.INHERIT,mathsize:a.INHERIT,mathbackground:a.INHERIT,mathcolor:a.INHERIT,lquote:'"',rquote:'"'}});a.mglyph=a.mbase.Subclass({type:"mglyph",isToken:true,texClass:a.TEXCLASS.ORD,defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,alt:"",src:"",width:a.AUTO,height:a.AUTO,valign:"0em"}});a.mrow=a.mbase.Subclass({type:"mrow",isSpacelike:a.mbase.childrenSpacelike,inferred:false,isEmbellished:function(){var e=false;for(var f=0,d=this.data.length;f<d;f++){if(this.data[f]==null){continue}if(this.data[f].isEmbellished()){if(e){return false}e=true;this.core=f}else{if(!this.data[f].isSpacelike()){return false}}}return e},NonSpaceLength:function(){var f=0;for(var e=0,d=this.data.length;e<d;e++){if(this.data[e]&&!this.data[e].isSpacelike()){f++}}return f},FirstNonSpace:function(){for(var e=0,d=this.data.length;e<d;e++){if(this.data[e]&&!this.data[e].
 isSpacelike()){return this.data[e]}}return null},LastNonSpace:function(){for(var d=this.data.length-1;d>=0;d--){if(this.data[0]&&!this.data[d].isSpacelike()){return this.data[d]}}return null},Core:function(){if(!(this.isEmbellished())||typeof(this.core)==="undefined"){return this}return this.data[this.core]},CoreMO:function(){if(!(this.isEmbellished())||typeof(this.core)==="undefined"){return this}return this.data[this.core].CoreMO()},toString:function(){if(this.inferred){return"["+this.data.join(",")+"]"}return this.SUPER(arguments).toString.call(this)},setTeXclass:function(f){for(var e=0,d=this.data.length;e<d;e++){if(this.data[e]){f=this.data[e].setTeXclass(f)}}if(this.data[0]){this.updateTeXclass(this.data[0])}return f}});a.mfrac=a.mbase.Subclass({type:"mfrac",num:0,den:1,linebreakContainer:true,texClass:a.TEXCLASS.INNER,isEmbellished:a.mbase.childEmbellished,Core:a.mbase.childCore,CoreMO:a.mbase.childCoreMO,defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,linethic
 kness:a.LINETHICKNESS.MEDIUM,numalign:a.ALIGN.CENTER,denomalign:a.ALIGN.CENTER,bevelled:false},adjustChild_displaystyle:function(d){return false},adjustChild_scriptlevel:function(e){var d=this.Get("scriptlevel");if(!this.Get("displaystyle")||d>0){d++}return d},adjustChild_texprimestyle:function(d){if(d==this.den){return true}return this.Get("texprimestyle")},setTeXclass:a.mbase.setSeparateTeXclasses});a.msqrt=a.mbase.Subclass({type:"msqrt",inferRow:true,linebreakContainer:true,texClass:a.TEXCLASS.ORD,setTeXclass:a.mbase.setSeparateTeXclasses,adjustChild_texprimestyle:function(d){return true}});a.mroot=a.mbase.Subclass({type:"mroot",linebreakContainer:true,texClass:a.TEXCLASS.ORD,adjustChild_displaystyle:function(d){if(d===1){return false}return this.Get("displaystyle")},adjustChild_scriptlevel:function(e){var d=this.Get("scriptlevel");if(e===1){d+=2}return d},adjustChild_texprimestyle:function(d){if(d===0){return true}return this.Get("texprimestyle")},setTeXclass:a.mbase.set
 SeparateTeXclasses});a.mstyle=a.mbase.Subclass({type:"mstyle",isSpacelike:a.mbase.childrenSpacelike,isEmbellished:a.mbase.childEmbellished,Core:a.mbase.childCore,CoreMO:a.mbase.childCoreMO,inferRow:true,defaults:{scriptlevel:a.INHERIT,displaystyle:a.INHERIT,scriptsizemultiplier:Math.sqrt(1/2),scriptminsize:"8pt",mathbackground:a.INHERIT,mathcolor:a.INHERIT,infixlinebreakstyle:a.LINEBREAKSTYLE.BEFORE,decimalseparator:"."},adjustChild_scriptlevel:function(f){var e=this.scriptlevel;if(e==null){e=this.Get("scriptlevel")}else{if(String(e).match(/^ *[-+]/)){delete this.scriptlevel;var d=this.Get("scriptlevel");this.scriptlevel=e;e=d+parseInt(e)}}return e},inheritFromMe:true,noInherit:{mpadded:{width:true,height:true,depth:true,lspace:true,voffset:true},mtable:{width:true,height:true,depth:true,align:true}},setTeXclass:a.mbase.setChildTeXclass});a.merror=a.mbase.Subclass({type:"merror",inferRow:true,linebreakContainer:true,texClass:a.TEXCLASS.ORD});a.mpadded=a.mbase.Subclass({type:
 "mpadded",inferRow:true,isSpacelike:a.mbase.childrenSpacelike,isEmbellished:a.mbase.childEmbellished,Core:a.mbase.childCore,CoreMO:a.mbase.childCoreMO,defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,width:"",height:"",depth:"",lspace:0,voffset:0},setTeXclass:a.mbase.setChildTeXclass});a.mphantom=a.mbase.Subclass({type:"mphantom",texClass:a.TEXCLASS.ORD,inferRow:true,isSpacelike:a.mbase.childrenSpacelike,isEmbellished:a.mbase.childEmbellished,Core:a.mbase.childCore,CoreMO:a.mbase.childCoreMO,setTeXclass:a.mbase.setChildTeXclass});a.mfenced=a.mbase.Subclass({type:"mfenced",defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,open:"(",close:")",separators:","},texClass:a.TEXCLASS.OPEN,setTeXclass:function(g){this.getPrevClass(g);var e=this.getValues("open","close","separators");e.open=e.open.replace(/[ \t\n\r]/g,"");e.close=e.close.replace(/[ \t\n\r]/g,"");e.separators=e.separators.replace(/[ \t\n\r]/g,"");if(e.open!==""){this.SetData("open",a.mo(e.open).With({stretchy
 :true,texClass:a.TEXCLASS.OPEN}));g=this.data.open.setTeXclass(g)}if(e.separators!==""){while(e.separators.length<this.data.length){e.separators+=e.separators.charAt(e.separators.length-1)}}if(this.data[0]){g=this.data[0].setTeXclass(g)}for(var f=1,d=this.data.length;f<d;f++){if(this.data[f]){if(e.separators!==""){this.SetData("sep"+f,a.mo(e.separators.charAt(f-1)));g=this.data["sep"+f].setTeXclass(g)}g=this.data[f].setTeXclass(g)}}if(e.close!==""){this.SetData("close",a.mo(e.close).With({stretchy:true,texClass:a.TEXCLASS.CLOSE}));g=this.data.close.setTeXclass(g)}this.updateTeXclass(this.data.open);return g}});a.menclose=a.mbase.Subclass({type:"menclose",inferRow:true,linebreakContainer:true,defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,notation:a.NOTATION.LONGDIV,texClass:a.TEXCLASS.ORD},setTeXclass:a.mbase.setSeparateTeXclasses});a.msubsup=a.mbase.Subclass({type:"msubsup",base:0,sub:1,sup:2,isEmbellished:a.mbase.childEmbellished,Core:a.mbase.childCore,CoreMO:a.mba
 se.childCoreMO,defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,subscriptshift:"",superscriptshift:"",texClass:a.AUTO},autoDefault:function(d){if(d==="texClass"){return(this.isEmbellished()?this.CoreMO().Get(d):a.TEXCLASS.ORD)}return 0},adjustChild_displaystyle:function(d){if(d>0){return false}return this.Get("displaystyle")},adjustChild_scriptlevel:function(e){var d=this.Get("scriptlevel");if(e>0){d++}return d},adjustChild_texprimestyle:function(d){if(d===this.sub){return true}return this.Get("texprimestyle")},setTeXclass:a.mbase.setBaseTeXclasses});a.msub=a.msubsup.Subclass({type:"msub"});a.msup=a.msubsup.Subclass({type:"msup",sub:2,sup:1});a.mmultiscripts=a.msubsup.Subclass({type:"mmultiscripts",adjustChild_texprimestyle:function(d){if(d%2===1){return true}return this.Get("texprimestyle")}});a.mprescripts=a.mbase.Subclass({type:"mprescripts"});a.none=a.mbase.Subclass({type:"none"});a.munderover=a.mbase.Subclass({type:"munderover",base:0,under:1,over:2,sub:1,sup:2,AC
 CENTS:["","accentunder","accent"],linebreakContainer:true,isEmbellished:a.mbase.childEmbellished,Core:a.mbase.childCore,CoreMO:a.mbase.childCoreMO,defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,accent:a.AUTO,accentunder:a.AUTO,align:a.ALIGN.CENTER,texClass:a.AUTO,subscriptshift:"",superscriptshift:""},autoDefault:function(d){if(d==="texClass"){return(this.isEmbellished()?this.CoreMO().Get(d):a.TEXCLASS.ORD)}if(d==="accent"&&this.data[this.over]){return this.data[this.over].CoreMO().Get("accent")}if(d==="accentunder"&&this.data[this.under]){return this.data[this.under].CoreMO().Get("accent")}return false},adjustChild_displaystyle:function(d){if(d>0){return false}return this.Get("displaystyle")},adjustChild_scriptlevel:function(f){var e=this.Get("scriptlevel");var d=(this.data[this.base]&&!this.Get("displaystyle")&&this.data[this.base].CoreMO().Get("movablelimits"));if(f==this.under&&(d||!this.Get("accentunder"))){e++}if(f==this.over&&(d||!this.Get("accent"))){e++}retu
 rn e},adjustChild_texprimestyle:function(d){if(d===this.base&&this.data[this.over]){return true}return this.Get("texprimestyle")},setTeXclass:a.mbase.setBaseTeXclasses});a.munder=a.munderover.Subclass({type:"munder"});a.mover=a.munderover.Subclass({type:"mover",over:1,under:2,sup:1,sub:2,ACCENTS:["","accent","accentunder"]});a.mtable=a.mbase.Subclass({type:"mtable",defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,align:a.ALIGN.AXIS,rowalign:a.ALIGN.BASELINE,columnalign:a.ALIGN.CENTER,groupalign:"{left}",alignmentscope:true,columnwidth:a.WIDTH.AUTO,width:a.WIDTH.AUTO,rowspacing:"1ex",columnspacing:".8em",rowlines:a.LINES.NONE,columnlines:a.LINES.NONE,frame:a.LINES.NONE,framespacing:"0.4em 0.5ex",equalrows:false,equalcolumns:false,displaystyle:false,side:a.SIDE.RIGHT,minlabelspacing:"0.8em",texClass:a.TEXCLASS.ORD,useHeight:1},inheritFromMe:true,noInherit:{mover:{align:true},munder:{align:true},munderover:{align:true},mtable:{align:true,rowalign:true,columnalign:true,gro
 upalign:true,alignmentscope:true,columnwidth:true,width:true,rowspacing:true,columnspacing:true,rowlines:true,columnlines:true,frame:true,framespacing:true,equalrows:true,equalcolumns:true,side:true,minlabelspacing:true,texClass:true,useHeight:1}},linebreakContainer:true,Append:function(){for(var e=0,d=arguments.length;e<d;e++){if(!((arguments[e] instanceof a.mtr)||(arguments[e] instanceof a.mlabeledtr))){arguments[e]=a.mtd(arguments[e])}}this.SUPER(arguments).Append.apply(this,arguments)},setTeXclass:a.mbase.setSeparateTeXclasses});a.mtr=a.mbase.Subclass({type:"mtr",defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,rowalign:a.INHERIT,columnalign:a.INHERIT,groupalign:a.INHERIT},inheritFromMe:true,noInherit:{mrow:{rowalign:true,columnalign:true,groupalign:true},mtable:{rowalign:true,columnalign:true,groupalign:true}},linebreakContainer:true,Append:function(){for(var e=0,d=arguments.length;e<d;e++){if(!(arguments[e] instanceof a.mtd)){arguments[e]=a.mtd(arguments[e])}}thi
 s.SUPER(arguments).Append.apply(this,arguments)},setTeXclass:a.mbase.setSeparateTeXclasses});a.mtd=a.mbase.Subclass({type:"mtd",inferRow:true,linebreakContainer:true,isEmbellished:a.mbase.childEmbellished,Core:a.mbase.childCore,CoreMO:a.mbase.childCoreMO,defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,rowspan:1,columnspan:1,rowalign:a.INHERIT,columnalign:a.INHERIT,groupalign:a.INHERIT},setTeXclass:a.mbase.setSeparateTeXclasses});a.maligngroup=a.mbase.Subclass({type:"malign",isSpacelike:function(){return true},defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,groupalign:a.INHERIT},inheritFromMe:true,noInherit:{mrow:{groupalign:true},mtable:{groupalign:true}}});a.malignmark=a.mbase.Subclass({type:"malignmark",defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,edge:a.SIDE.LEFT},isSpacelike:function(){return true}});a.mlabeledtr=a.mtr.Subclass({type:"mlabeledtr"});a.maction=a.mbase.Subclass({type:"maction",defaults:{mathbackground:a.INHERIT,mathcolor:a.INHERIT,ac
 tiontype:a.ACTIONTYPE.TOGGLE,selection:1},selected:function(){return this.data[this.Get("selection")-1]||a.NULL},isEmbellished:function(){return this.selected().isEmbellished()},isSpacelike:function(){return this.selected().isSpacelike()},Core:function(){return this.selected().Core()},CoreMO:function(){return this.selected().CoreMO()},setTeXclass:function(d){return this.selected().setTeXclass(d)}});a.semantics=a.mbase.Subclass({type:"semantics",isEmbellished:a.mbase.childEmbellished,Core:a.mbase.childCore,CoreMO:a.mbase.childCoreMO,defaults:{definitionURL:null,encoding:null},setTeXclass:a.mbase.setChildTeXclass});a.annotation=a.mbase.Subclass({type:"annotation",isToken:true,linebreakContainer:true,defaults:{definitionURL:null,encoding:null,cd:"mathmlkeys",name:"",src:null}});a["annotation-xml"]=a.mbase.Subclass({type:"annotation-xml",linebreakContainer:true,defaults:{definitionURL:null,encoding:null,cd:"mathmlkeys",name:"",src:null}});a.math=a.mstyle.Subclass({type:"math",de
 faults:{mathvariant:a.VARIANT.NORMAL,mathsize:a.SIZE.NORMAL,mathcolor:"",mathbackground:a.COLOR.TRANSPARENT,scriptlevel:0,displaystyle:a.AUTO,display:"inline",maxwidth:"",overflow:a.OVERFLOW.LINEBREAK,altimg:"","altimg-width":"","altimg-height":"","altimg-valign":"",alttext:"",cdgroup:"",scriptsizemultiplier:Math.sqrt(1/2),scriptminsize:"8px",infixlinebreakstyle:a.LINEBREAKSTYLE.BEFORE,lineleading:"1ex",indentshift:"auto",indentalign:a.INDENTALIGN.AUTO,indentalignfirst:a.INDENTALIGN.INDENTALIGN,indentshiftfirst:a.INDENTSHIFT.INDENTSHIFT,indentalignlast:a.INDENTALIGN.INDENTALIGN,indentshiftlast:a.INDENTSHIFT.INDENTSHIFT,decimalseparator:".",texprimestyle:false},autoDefault:function(d){if(d==="displaystyle"){return this.Get("display")==="block"}return""},linebreakContainer:true,setTeXclass:a.mbase.setChildTeXclass});a.chars=a.mbase.Subclass({type:"chars",Append:function(){this.data.push.apply(this.data,arguments)},value:function(){return this.data.join("")},toString:function()
 {return this.data.join("")}});a.entity=a.mbase.Subclass({type:"entity",Append:function(){this.data.push.apply(this.data,arguments)},value:function(){if(this.data[0].substr(0,2)==="#x"){return parseInt(this.data[0].substr(2),16)}else{if(this.data[0].substr(0,1)==="#"){return parseInt(this.data[0].substr(1))}else{return 0}}},toString:function(){var d=this.value();if(d<=65535){return String.fromCharCode(d)}d-=65536;return String.fromCharCode((d>>10)+55296)+String.fromCharCode((d&1023)+56320)}});a.xml=a.mbase.Subclass({type:"xml",Init:function(){this.div=document.createElement("div");return this.SUPER(arguments).Init.apply(this,arguments)},Append:function(){for(var e=0,d=arguments.length;e<d;e++){var f=this.Import(arguments[e]);this.data.push(f);this.div.appendChild(f)}},Import:function(h){if(document.importNode){return document.importNode(h,true)}var e,f,d;if(h.nodeType===1){e=document.createElement(h.nodeName);for(f=0,d=h.attributes.length;f<d;f++){var g=h.attributes[f];if(g.s
 pecified&&g.nodeValue!=null&&g.nodeValue!=""){e.setAttribute(g.nodeName,g.nodeValue)}if(g.nodeName==="style"){e.style.cssText=g.nodeValue}}if(h.className){e.className=h.className}}else{if(h.nodeType===3||h.nodeType===4){e=document.createTextNode(h.nodeValue)}else{if(h.nodeType===8){e=document.createComment(h.nodeValue)}else{return document.createTextNode("")}}}for(f=0,d=h.childNodes.length;f<d;f++){e.appendChild(this.Import(h.childNodes[f]))}return e},value:function(){return this.div},toString:function(){return this.div.innerHTML}});a.TeXAtom=a.mbase.Subclass({type:"texatom",inferRow:true,texClass:a.TEXCLASS.ORD,Core:a.mbase.childCore,CoreMO:a.mbase.childCoreMO,isEmbellished:a.mbase.childEmbellished,setTeXclass:function(d){this.data[0].setTeXclass();return this.adjustTeXclass(d)},adjustTeXclass:a.mo.prototype.adjustTeXclass});a.NULL=a.mbase().With({type:"null"});var b=a.TEXCLASS;var c={ORD:[0,0,b.ORD],ORD11:[1,1,b.ORD],ORD21:[2,1,b.ORD],ORD02:[0,2,b.ORD],ORD55:[5,5,b.ORD],OP
 :[1,2,b.OP,{largeop:true,movablelimits:true,symmetric:true}],OPFIXED:[1,2,b.OP,{largeop:true,movablelimits:true}],INTEGRAL:[0,1,b.OP,{largeop:true,symmetric:true}],INTEGRAL2:[1,2,b.OP,{largeop:true,symmetric:true}],BIN3:[3,3,b.BIN],BIN4:[4,4,b.BIN],BIN01:[0,1,b.BIN],BIN5:[5,5,b.BIN],TALLBIN:[4,4,b.BIN,{stretchy:true}],BINOP:[4,4,b.BIN,{largeop:true,movablelimits:true}],REL:[5,5,b.REL],REL1:[1,1,b.REL,{stretchy:true}],REL4:[4,4,b.REL],RELSTRETCH:[5,5,b.REL,{stretchy:true}],RELACCENT:[5,5,b.REL,{accent:true}],WIDEREL:[5,5,b.REL,{accent:true,stretchy:true}],OPEN:[0,0,b.OPEN,{fence:true,stretchy:true,symmetric:true}],CLOSE:[0,0,b.CLOSE,{fence:true,stretchy:true,symmetric:true}],INNER:[0,0,b.INNER],PUNCT:[0,3,b.PUNCT],ACCENT:[0,0,b.ORD,{accent:true}],WIDEACCENT:[0,0,b.ORD,{accent:true,stretchy:true}]};a.mo.Augment({SPACE:["0em","0.1111em","0.1667em","0.2222em","0.2667em","0.3333em"],RANGES:[[32,127,b.REL,"BasicLatin"],[160,255,b.ORD,"Latin1Supplement"],[256,383,b.ORD],[384,591,b.
 ORD],[688,767,b.ORD,"SpacingModLetters"],[768,879,b.ORD,"CombDiacritMarks"],[880,1023,b.ORD,"GreekAndCoptic"],[7680,7935,b.ORD],[8192,8303,b.PUNCT,"GeneralPunctuation"],[8304,8351,b.ORD],[8352,8399,b.ORD],[8400,8447,b.ORD,"CombDiactForSymbols"],[8448,8527,b.ORD,"LetterlikeSymbols"],[8528,8591,b.ORD],[8592,8703,b.REL,"Arrows"],[8704,8959,b.BIN,"MathOperators"],[8960,9215,b.ORD,"MiscTechnical"],[9312,9471,b.ORD],[9472,9631,b.ORD],[9632,9727,b.ORD,"GeometricShapes"],[9984,10175,b.ORD,"Dingbats"],[10176,10223,b.ORD,"MiscMathSymbolsA"],[10224,10239,b.REL,"SupplementalArrowsA"],[10496,10623,b.REL,"SupplementalArrowsB"],[10624,10751,b.ORD,"MiscMathSymbolsB"],[10752,11007,b.BIN,"SuppMathOperators"],[11008,11263,b.ORD,"MiscSymbolsAndArrows"],[119808,120831,b.ORD]],OPTABLE:{prefix:{"\u2200":c.ORD21,"\u2202":c.ORD21,"\u2203":c.ORD21,"\u2207":c.ORD21,"\u220F":c.OP,"\u2210":c.OP,"\u2211":c.OP,"\u2212":c.BIN01,"\u2213":c.BIN01,"\u221A":[1,1,b.ORD,{stretchy:true}],"\u2220":c.ORD,"\u222B":c
 .INTEGRAL,"\u222E":c.INTEGRAL,"\u22C0":c.OP,"\u22C1":c.OP,"\u22C2":c.OP,"\u22C3":c.OP,"\u2308":c.OPEN,"\u230A":c.OPEN,"\u27E8":c.OPEN,"\u27EE":c.OPEN,"\u2A00":c.OP,"\u2A01":c.OP,"\u2A02":c.OP,"\u2A04":c.OP,"\u2A06":c.OP,"\u00AC":c.ORD21,"\u00B1":c.BIN01,"(":c.OPEN,"+":c.BIN01,"-":c.BIN01,"[":c.OPEN,"{":c.OPEN,"|":c.OPEN},postfix:{"!":[1,0,b.CLOSE],"&":c.ORD,"\u2032":c.ORD02,"\u203E":c.WIDEACCENT,"\u2309":c.CLOSE,"\u230B":c.CLOSE,"\u23DE":c.WIDEACCENT,"\u23DF":c.WIDEACCENT,"\u266D":c.ORD02,"\u266E":c.ORD02,"\u266F":c.ORD02,"\u27E9":c.CLOSE,"\u27EF":c.CLOSE,"\u02C6":c.WIDEACCENT,"\u02C7":c.WIDEACCENT,"\u02C9":c.WIDEACCENT,"\u02CA":c.ACCENT,"\u02CB":c.ACCENT,"\u02D8":c.ACCENT,"\u02D9":c.ACCENT,"\u02DC":c.WIDEACCENT,"\u0302":c.WIDEACCENT,"\u00A8":c.ACCENT,"\u00AF":c.WIDEACCENT,")":c.CLOSE,"]":c.CLOSE,"^":c.WIDEACCENT,_:c.WIDEACCENT,"`":c.ACCENT,"|":c.CLOSE,"}":c.CLOSE,"~":c.WIDEACCENT},infix:{"":c.ORD,"%":[3,3,b.ORD],"\u2022":c.BIN4,"\u2026":c.INNER,"\u2044":c.TALLBIN,"\u2061":c
 .ORD,"\u2062":c.ORD,"\u2063":[0,0,b.ORD,{linebreakstyle:"after",separator:true}],"\u2064":c.ORD,"\u2190":c.WIDEREL,"\u2191":c.RELSTRETCH,"\u2192":c.WIDEREL,"\u2193":c.RELSTRETCH,"\u2194":c.WIDEREL,"\u2195":c.RELSTRETCH,"\u2196":c.RELSTRETCH,"\u2197":c.RELSTRETCH,"\u2198":c.RELSTRETCH,"\u2199":c.RELSTRETCH,"\u21A6":c.WIDEREL,"\u21A9":c.WIDEREL,"\u21AA":c.WIDEREL,"\u21BC":c.WIDEREL,"\u21BD":c.WIDEREL,"\u21C0":c.WIDEREL,"\u21C1":c.WIDEREL,"\u21CC":c.WIDEREL,"\u21D0":c.WIDEREL,"\u21D1":c.RELSTRETCH,"\u21D2":c.WIDEREL,"\u21D3":c.RELSTRETCH,"\u21D4":c.WIDEREL,"\u21D5":c.RELSTRETCH,"\u2208":c.REL,"\u2209":c.REL,"\u220B":c.REL,"\u2212":c.BIN4,"\u2213":c.BIN4,"\u2215":c.TALLBIN,"\u2216":c.BIN4,"\u2217":c.BIN4,"\u2218":c.BIN4,"\u2219":c.BIN4,"\u221D":c.REL,"\u2223":c.REL,"\u2225":c.REL,"\u2227":c.BIN4,"\u2228":c.BIN4,"\u2229":c.BIN4,"\u222A":c.BIN4,"\u223C":c.REL,"\u2240":c.BIN4,"\u2243":c.REL,"\u2245":c.REL,"\u2248":c.REL,"\u224D":c.REL,"\u2250":c.REL,"\u2260":c.REL,"\u2261":c.REL,"\
 u2264":c.REL,"\u2265":c.REL,"\u226A":c.REL,"\u226B":c.REL,"\u227A":c.REL,"\u227B":c.REL,"\u2282":c.REL,"\u2283":c.REL,"\u2286":c.REL,"\u2287":c.REL,"\u228E":c.BIN4,"\u2291":c.REL,"\u2292":c.REL,"\u2293":c.BIN4,"\u2294":c.BIN4,"\u2295":c.BIN4,"\u2296":c.BIN4,"\u2297":c.BIN4,"\u2298":c.BIN4,"\u2299":c.BIN4,"\u22A2":c.REL,"\u22A3":c.REL,"\u22A4":c.ORD55,"\u22A5":c.REL,"\u22A8":c.REL,"\u22C4":c.BIN4,"\u22C5":c.BIN4,"\u22C6":c.BIN4,"\u22C8":c.REL,"\u22EE":c.ORD55,"\u22EF":c.INNER,"\u22F1":[5,5,b.INNER],"\u25B3":c.BIN4,"\u25B5":c.BIN4,"\u25B9":c.BIN4,"\u25BD":c.BIN4,"\u25BF":c.BIN4,"\u25C3":c.BIN4,"\u2758":c.REL,"\u27F5":c.WIDEREL,"\u27F6":c.WIDEREL,"\u27F7":c.WIDEREL,"\u27F8":c.WIDEREL,"\u27F9":c.WIDEREL,"\u27FA":c.WIDEREL,"\u27FC":c.WIDEREL,"\u2A2F":c.BIN4,"\u2A3F":c.BIN4,"\u2AAF":c.REL,"\u2AB0":c.REL,"\u00B1":c.BIN4,"\u00B7":c.BIN4,"\u00D7":c.BIN4,"\u00F7":c.BIN4,"*":c.BIN3,"+":c.BIN4,",":[0,3,b.PUNCT,{linebreakstyle:"after",separator:true}],"-":c.BIN4,".":[3,3,b.ORD],"/":c.ORD
 11,":":[1,2,b.REL],";":[0,3,b.PUNCT,{linebreakstyle:"after",separator:true}],"<":c.REL,"=":c.REL,">":c.REL,"?":[1,1,b.CLOSE],"\\":c.ORD,"^":c.ORD11,_:c.ORD11,"|":[2,2,b.ORD,{fence:true,stretchy:true,symmetric:true}],"#":c.ORD,"$":c.ORD,"\u002E":[0,3,b.PUNCT,{separator:true}],"\u02B9":c.ORD,"\u0300":c.ACCENT,"\u0301":c.ACCENT,"\u0303":c.WIDEACCENT,"\u0304":c.ACCENT,"\u0306":c.ACCENT,"\u0307":c.ACCENT,"\u0308":c.ACCENT,"\u030C":c.ACCENT,"\u0332":c.WIDEACCENT,"\u0338":c.REL4,"\u2015":[0,0,b.ORD,{stretchy:true}],"\u2017":[0,0,b.ORD,{stretchy:true}],"\u2020":c.BIN3,"\u2021":c.BIN3,"\u20D7":c.ACCENT,"\u2111":c.ORD,"\u2113":c.ORD,"\u2118":c.ORD,"\u211C":c.ORD,"\u2205":c.ORD,"\u221E":c.ORD,"\u2305":c.BIN3,"\u2306":c.BIN3,"\u2322":c.REL4,"\u2323":c.REL4,"\u2329":c.OPEN,"\u232A":c.CLOSE,"\u23AA":c.ORD,"\u23AF":[0,0,b.ORD,{stretchy:true}],"\u23B0":c.OPEN,"\u23B1":c.CLOSE,"\u2500":c.ORD,"\u25EF":c.BIN3,"\u2660":c.ORD,"\u2661":c.ORD,"\u2662":c.ORD,"\u2663":c.ORD,"\u3008":c.OPEN,"\u3009":
 c.CLOSE,"\uFE37":c.WIDEACCENT,"\uFE38":c.WIDEACCENT}}},{OPTYPES:c});a.mo.prototype.OPTABLE.infix["^"]=c.WIDEREL;a.mo.prototype.OPTABLE.infix._=c.WIDEREL})(MathJax.ElementJax.mml);MathJax.ElementJax.mml.loadComplete("jax.js");
+
diff --git a/data/mathjax/jax/element/mml/optable/Arrows.js b/data/mathjax/jax/element/mml/optable/Arrows.js
new file mode 100644
index 0000000..730717d
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/Arrows.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/Arrows.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{infix:{"\u219A":c.RELACCENT,"\u219B":c.RELACCENT,"\u219C":c.WIDEREL,"\u219D":c.WIDEREL,"\u219E":c.WIDEREL,"\u219F":c.WIDEREL,"\u21A0":c.WIDEREL,"\u21A1":c.RELSTRETCH,"\u21A2":c.WIDEREL,"\u21A3":c.WIDEREL,"\u21A4":c.WIDEREL,"\u21A5":c.RELSTRETCH,"\u21A7":c.RELSTRETCH,"\u21A8":c.RELSTRETCH,"\u21AB":c.WIDEREL,"\u21AC":c.WIDEREL,"\u21AD":c.WIDEREL,"\u21AE":c.RELACCENT,"\u21AF":c.RELSTRETCH,"\u21B0":c.RELSTRETCH,"\u21B1":c.RELSTRETCH,"\u21B2":c.RELSTRETCH,"\u21B3":c.RELSTRETCH,"\u21B4":c.RELSTRETCH,"\u21B5":c.RELSTRETCH,"\u21B6":c.RELACCENT,"\u21B7":c.RELACCENT,"\u21B8":c.REL,"\u21B9":c.WIDEREL,"\u21BA":c.REL,"\u21BB":c.REL,"\u21BE":c.RELSTRETCH,"\u21BF":c.RELSTRETCH,"\u21C2":c.RELSTRETCH,"\u21C3":c.RELSTRETCH,"\u21C4":c.WIDEREL,"\u21C5":c.RELSTRETCH,"\u21C6":c.WIDEREL,"\u21C7":c.WIDEREL,"\u21C8":c.RELSTRETCH,"\u21C9":c.WIDEREL,"\u21CA":c.RELSTRETCH,"\u21CB":c.WIDEREL,"\u21CD":c.RELACCENT
 ,"\u21CE":c.RELACCENT,"\u21CF":c.RELACCENT,"\u21D6":c.RELSTRETCH,"\u21D7":c.RELSTRETCH,"\u21D8":c.RELSTRETCH,"\u21D9":c.RELSTRETCH,"\u21DA":c.WIDEREL,"\u21DB":c.WIDEREL,"\u21DC":c.WIDEREL,"\u21DD":c.WIDEREL,"\u21DE":c.REL,"\u21DF":c.REL,"\u21E0":c.WIDEREL,"\u21E1":c.RELSTRETCH,"\u21E2":c.WIDEREL,"\u21E3":c.RELSTRETCH,"\u21E4":c.WIDEREL,"\u21E5":c.WIDEREL,"\u21E6":c.WIDEREL,"\u21E7":c.RELSTRETCH,"\u21E8":c.WIDEREL,"\u21E9":c.RELSTRETCH,"\u21EA":c.RELSTRETCH,"\u21EB":c.RELSTRETCH,"\u21EC":c.RELSTRETCH,"\u21ED":c.RELSTRETCH,"\u21EE":c.RELSTRETCH,"\u21EF":c.RELSTRETCH,"\u21F0":c.WIDEREL,"\u21F1":c.REL,"\u21F2":c.REL,"\u21F3":c.RELSTRETCH,"\u21F4":c.RELACCENT,"\u21F5":c.RELSTRETCH,"\u21F6":c.WIDEREL,"\u21F7":c.RELACCENT,"\u21F8":c.RELACCENT,"\u21F9":c.RELACCENT,"\u21FA":c.RELACCENT,"\u21FB":c.RELACCENT,"\u21FC":c.RELACCENT,"\u21FD":c.WIDEREL,"\u21FE":c.WIDEREL,"\u21FF":c.WIDEREL}}});MathJax.Ajax.loadComplete(a.optableDir+"/Arrows.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/BasicLatin.js b/data/mathjax/jax/element/mml/optable/BasicLatin.js
new file mode 100644
index 0000000..318cd3b
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/BasicLatin.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/BasicLatin.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"||":[0,0,b.BIN,{fence:true,stretchy:true,symmetric:true}],"|||":[0,0,b.ORD,{fence:true,stretchy:true,symmetric:true}]},postfix:{"!!":[1,0,b.BIN],"'":c.ACCENT,"++":[0,0,b.BIN],"--":[0,0,b.BIN],"..":[0,0,b.BIN],"...":c.ORD,"||":[0,0,b.BIN,{fence:true,stretchy:true,symmetric:true}],"|||":[0,0,b.ORD,{fence:true,stretchy:true,symmetric:true}]},infix:{"!=":c.BIN4,"&&":c.BIN4,"**":[1,1,b.BIN],"*=":c.BIN4,"+=":c.BIN4,"-=":c.BIN4,"->":c.BIN5,"//":[1,1,b.BIN],"/=":c.BIN4,":=":c.BIN4,"<=":c.BIN5,"<>":[1,1,b.BIN],"==":c.BIN4,">=":c.BIN5,"@":c.ORD11,"||":[2,2,b.BIN,{fence:true,stretchy:true,symmetric:true}],"|||":[2,2,b.ORD,{fence:true,stretchy:true,symmetric:true}]}}});MathJax.Ajax.loadComplete(a.optableDir+"/BasicLatin.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/CombDiacritMarks.js b/data/mathjax/jax/element/mml/optable/CombDiacritMarks.js
new file mode 100644
index 0000000..ab8289d
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/CombDiacritMarks.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/CombDiacritMarks.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u0311":c.ACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/CombDiacritMarks.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/CombDiactForSymbols.js b/data/mathjax/jax/element/mml/optable/CombDiactForSymbols.js
new file mode 100644
index 0000000..820da0b
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/CombDiactForSymbols.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/CombDiactForSymbols.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u20DB":c.ACCENT,"\u20DC":c.ACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/CombDiactForSymbols.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/Dingbats.js b/data/mathjax/jax/element/mml/optable/Dingbats.js
new file mode 100644
index 0000000..68dbac6
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/Dingbats.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/Dingbats.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u2772":c.OPEN},postfix:{"\u2773":c.CLOSE}}});MathJax.Ajax.loadComplete(a.optableDir+"/Dingbats.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/GeneralPunctuation.js b/data/mathjax/jax/element/mml/optable/GeneralPunctuation.js
new file mode 100644
index 0000000..4292659
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/GeneralPunctuation.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/GeneralPunctuation.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u2016":[0,0,b.ORD,{fence:true,stretchy:true}],"\u2018":[0,0,b.OPEN,{fence:true}],"\u201C":[0,0,b.OPEN,{fence:true}]},postfix:{"\u2016":[0,0,b.ORD,{fence:true,stretchy:true}],"\u2019":[0,0,b.CLOSE,{fence:true}],"\u201D":[0,0,b.CLOSE,{fence:true}]}}});MathJax.Ajax.loadComplete(a.optableDir+"/GeneralPunctuation.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/GeometricShapes.js b/data/mathjax/jax/element/mml/optable/GeometricShapes.js
new file mode 100644
index 0000000..af57457
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/GeometricShapes.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/GeometricShapes.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{infix:{"\u25A0":c.BIN3,"\u25A1":c.BIN3,"\u25AA":c.BIN3,"\u25AB":c.BIN3,"\u25AD":c.BIN3,"\u25AE":c.BIN3,"\u25AF":c.BIN3,"\u25B0":c.BIN3,"\u25B1":c.BIN3,"\u25B2":c.BIN4,"\u25B4":c.BIN4,"\u25B6":c.BIN4,"\u25B7":c.BIN4,"\u25B8":c.BIN4,"\u25BC":c.BIN4,"\u25BE":c.BIN4,"\u25C0":c.BIN4,"\u25C1":c.BIN4,"\u25C2":c.BIN4,"\u25C4":c.BIN4,"\u25C5":c.BIN4,"\u25C6":c.BIN4,"\u25C7":c.BIN4,"\u25C8":c.BIN4,"\u25C9":c.BIN4,"\u25CC":c.BIN4,"\u25CD":c.BIN4,"\u25CE":c.BIN4,"\u25CF":c.BIN4,"\u25D6":c.BIN4,"\u25D7":c.BIN4,"\u25E6":c.BIN4}}});MathJax.Ajax.loadComplete(a.optableDir+"/GeometricShapes.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/GreekAndCoptic.js b/data/mathjax/jax/element/mml/optable/GreekAndCoptic.js
new file mode 100644
index 0000000..b5d995a
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/GreekAndCoptic.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/GreekAndCoptic.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{infix:{"\u03F6":c.REL}}});MathJax.Ajax.loadComplete(a.optableDir+"/GreekAndCoptic.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/Latin1Supplement.js b/data/mathjax/jax/element/mml/optable/Latin1Supplement.js
new file mode 100644
index 0000000..dbe0eae
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/Latin1Supplement.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/Latin1Supplement.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u00B0":c.ORD,"\u00B4":c.ACCENT,"\u00B8":c.ACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/Latin1Supplement.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/LetterlikeSymbols.js b/data/mathjax/jax/element/mml/optable/LetterlikeSymbols.js
new file mode 100644
index 0000000..8f71404
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/LetterlikeSymbols.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/LetterlikeSymbols.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u2145":c.ORD21,"\u2146":[2,0,b.ORD]}}});MathJax.Ajax.loadComplete(a.optableDir+"/LetterlikeSymbols.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/Makefile.am b/data/mathjax/jax/element/mml/optable/Makefile.am
new file mode 100644
index 0000000..2fdddba
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/Makefile.am
@@ -0,0 +1,25 @@
+mjdir=$(datadir)/yelp/mathjax/jax/element/mml/optable
+
+mj_DATA =			\
+	Arrows.js		\
+	BasicLatin.js		\
+	CombDiacritMarks.js	\
+	CombDiactForSymbols.js	\
+	Dingbats.js		\
+	GeneralPunctuation.js	\
+	GeometricShapes.js	\
+	GreekAndCoptic.js	\
+	Latin1Supplement.js	\
+	LetterlikeSymbols.js	\
+	Makefile.am		\
+	MathOperators.js	\
+	MiscMathSymbolsA.js	\
+	MiscMathSymbolsB.js	\
+	MiscSymbolsAndArrows.js	\
+	MiscTechnical.js	\
+	SpacingModLetters.js	\
+	SupplementalArrowsA.js	\
+	SupplementalArrowsB.js	\
+	SuppMathOperators.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/element/mml/optable/MathOperators.js b/data/mathjax/jax/element/mml/optable/MathOperators.js
new file mode 100644
index 0000000..f1b7535
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/MathOperators.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/MathOperators.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u2204":c.ORD21,"\u221B":c.ORD11,"\u221C":c.ORD11,"\u2221":c.ORD,"\u2222":c.ORD,"\u222C":c.INTEGRAL,"\u222D":c.INTEGRAL,"\u222F":c.INTEGRAL,"\u2230":c.INTEGRAL,"\u2231":c.INTEGRAL,"\u2232":c.INTEGRAL,"\u2233":c.INTEGRAL},infix:{"\u2201":[1,2,b.ORD],"\u2206":c.BIN3,"\u220A":c.REL,"\u220C":c.REL,"\u220D":c.REL,"\u220E":c.BIN3,"\u2214":c.BIN4,"\u221F":c.REL,"\u2224":c.REL,"\u2226":c.REL,"\u2234":c.REL,"\u2235":c.REL,"\u2236":c.REL,"\u2237":c.REL,"\u2238":c.BIN4,"\u2239":c.REL,"\u223A":c.BIN4,"\u223B":c.REL,"\u223D":c.REL,"\u223D\u0331":c.BIN3,"\u223E":c.REL,"\u223F":c.BIN3,"\u2241":c.REL,"\u2242":c.REL,"\u2242\u0338":c.REL,"\u2244":c.REL,"\u2246":c.REL,"\u2247":c.REL,"\u2249":c.REL,"\u224A":c.REL,"\u224B":c.REL,"\u224C":c.REL,"\u224E":c.REL,"\u224E\u0338":c.REL,"\u224F":c.REL,"\u224F\u0338":c.REL,"\u2251":c.REL,"\u2252":c.REL,"\u2253":c.REL,"\u2254":c.REL,"\u2255":c.REL,"\u2256
 ":c.REL,"\u2257":c.REL,"\u2258":c.REL,"\u2259":c.REL,"\u225A":c.REL,"\u225C":c.REL,"\u225D":c.REL,"\u225E":c.REL,"\u225F":c.REL,"\u2262":c.REL,"\u2263":c.REL,"\u2266":c.REL,"\u2266\u0338":c.REL,"\u2267":c.REL,"\u2268":c.REL,"\u2269":c.REL,"\u226A\u0338":c.REL,"\u226B\u0338":c.REL,"\u226C":c.REL,"\u226D":c.REL,"\u226E":c.REL,"\u226F":c.REL,"\u2270":c.REL,"\u2271":c.REL,"\u2272":c.REL,"\u2273":c.REL,"\u2274":c.REL,"\u2275":c.REL,"\u2276":c.REL,"\u2277":c.REL,"\u2278":c.REL,"\u2279":c.REL,"\u227C":c.REL,"\u227D":c.REL,"\u227E":c.REL,"\u227F":c.REL,"\u227F\u0338":c.REL,"\u2280":c.REL,"\u2281":c.REL,"\u2282\u20D2":c.REL,"\u2283\u20D2":c.REL,"\u2284":c.REL,"\u2285":c.REL,"\u2288":c.REL,"\u2289":c.REL,"\u228A":c.REL,"\u228B":c.REL,"\u228C":c.BIN4,"\u228D":c.BIN4,"\u228F":c.REL,"\u228F\u0338":c.REL,"\u2290":c.REL,"\u2290\u0338":c.REL,"\u229A":c.BIN4,"\u229B":c.BIN4,"\u229C":c.BIN4,"\u229D":c.BIN4,"\u229E":c.BIN4,"\u229F":c.BIN4,"\u22A0":c.BIN4,"\u22A1":c.BIN4,"\u22A6":c.REL,"\u22A7"
 :c.REL,"\u22A9":c.REL,"\u22AA":c.REL,"\u22AB":c.REL,"\u22AC":c.REL,"\u22AD":c.REL,"\u22AE":c.REL,"\u22AF":c.REL,"\u22B0":c.REL,"\u22B1":c.REL,"\u22B2":c.REL,"\u22B3":c.REL,"\u22B4":c.REL,"\u22B5":c.REL,"\u22B6":c.REL,"\u22B7":c.REL,"\u22B8":c.REL,"\u22B9":c.REL,"\u22BA":c.BIN4,"\u22BB":c.BIN4,"\u22BC":c.BIN4,"\u22BD":c.BIN4,"\u22BE":c.BIN3,"\u22BF":c.BIN3,"\u22C7":c.BIN4,"\u22C9":c.BIN4,"\u22CA":c.BIN4,"\u22CB":c.BIN4,"\u22CC":c.BIN4,"\u22CD":c.REL,"\u22CE":c.BIN4,"\u22CF":c.BIN4,"\u22D0":c.REL,"\u22D1":c.REL,"\u22D2":c.BIN4,"\u22D3":c.BIN4,"\u22D4":c.REL,"\u22D5":c.REL,"\u22D6":c.REL,"\u22D7":c.REL,"\u22D8":c.REL,"\u22D9":c.REL,"\u22DA":c.REL,"\u22DB":c.REL,"\u22DC":c.REL,"\u22DD":c.REL,"\u22DE":c.REL,"\u22DF":c.REL,"\u22E0":c.REL,"\u22E1":c.REL,"\u22E2":c.REL,"\u22E3":c.REL,"\u22E4":c.REL,"\u22E5":c.REL,"\u22E6":c.REL,"\u22E7":c.REL,"\u22E8":c.REL,"\u22E9":c.REL,"\u22EA":c.REL,"\u22EB":c.REL,"\u22EC":c.REL,"\u22ED":c.REL,"\u22F0":c.REL,"\u22F2":c.REL,"\u22F3":c.REL,"\u22F4
 ":c.REL,"\u22F5":c.REL,"\u22F6":c.REL,"\u22F7":c.REL,"\u22F8":c.REL,"\u22F9":c.REL,"\u22FA":c.REL,"\u22FB":c.REL,"\u22FC":c.REL,"\u22FD":c.REL,"\u22FE":c.REL,"\u22FF":c.REL}}});MathJax.Ajax.loadComplete(a.optableDir+"/MathOperators.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/MiscMathSymbolsA.js b/data/mathjax/jax/element/mml/optable/MiscMathSymbolsA.js
new file mode 100644
index 0000000..d90294a
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/MiscMathSymbolsA.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/MiscMathSymbolsA.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u27E6":c.OPEN,"\u27EA":c.OPEN,"\u27EC":c.OPEN},postfix:{"\u27E7":c.CLOSE,"\u27EB":c.CLOSE,"\u27ED":c.CLOSE}}});MathJax.Ajax.loadComplete(a.optableDir+"/MiscMathSymbolsA.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/MiscMathSymbolsB.js b/data/mathjax/jax/element/mml/optable/MiscMathSymbolsB.js
new file mode 100644
index 0000000..7ceb6ac
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/MiscMathSymbolsB.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/MiscMathSymbolsB.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u2980":[0,0,b.ORD,{fence:true,stretchy:true}],"\u2983":c.OPEN,"\u2985":c.OPEN,"\u2987":c.OPEN,"\u2989":c.OPEN,"\u298B":c.OPEN,"\u298D":c.OPEN,"\u298F":c.OPEN,"\u2991":c.OPEN,"\u2993":c.OPEN,"\u2995":c.OPEN,"\u2997":c.OPEN,"\u29FC":c.OPEN},postfix:{"\u2980":[0,0,b.ORD,{fence:true,stretchy:true}],"\u2984":c.CLOSE,"\u2986":c.CLOSE,"\u2988":c.CLOSE,"\u298A":c.CLOSE,"\u298C":c.CLOSE,"\u298E":c.CLOSE,"\u2990":c.CLOSE,"\u2992":c.CLOSE,"\u2994":c.CLOSE,"\u2996":c.CLOSE,"\u2998":c.CLOSE,"\u29FD":c.CLOSE},infix:{"\u2981":c.BIN3,"\u2982":c.BIN3,"\u2999":c.BIN3,"\u299A":c.BIN3,"\u299B":c.BIN3,"\u299C":c.BIN3,"\u299D":c.BIN3,"\u299E":c.BIN3,"\u299F":c.BIN3,"\u29A0":c.BIN3,"\u29A1":c.BIN3,"\u29A2":c.BIN3,"\u29A3":c.BIN3,"\u29A4":c.BIN3,"\u29A5":c.BIN3,"\u29A6":c.BIN3,"\u29A7":c.BIN3,"\u29A8":c.BIN3,"\u29A9":c.BIN3,"\u29AA":c.BIN3,"\u29AB":c.BIN3,"\u29AC":c.BIN3,"\u29AD":c.BIN3,"\u29AE":c
 .BIN3,"\u29AF":c.BIN3,"\u29B0":c.BIN3,"\u29B1":c.BIN3,"\u29B2":c.BIN3,"\u29B3":c.BIN3,"\u29B4":c.BIN3,"\u29B5":c.BIN3,"\u29B6":c.BIN4,"\u29B7":c.BIN4,"\u29B8":c.BIN4,"\u29B9":c.BIN4,"\u29BA":c.BIN4,"\u29BB":c.BIN4,"\u29BC":c.BIN4,"\u29BD":c.BIN4,"\u29BE":c.BIN4,"\u29BF":c.BIN4,"\u29C0":c.REL,"\u29C1":c.REL,"\u29C2":c.BIN3,"\u29C3":c.BIN3,"\u29C4":c.BIN4,"\u29C5":c.BIN4,"\u29C6":c.BIN4,"\u29C7":c.BIN4,"\u29C8":c.BIN4,"\u29C9":c.BIN3,"\u29CA":c.BIN3,"\u29CB":c.BIN3,"\u29CC":c.BIN3,"\u29CD":c.BIN3,"\u29CE":c.REL,"\u29CF":c.REL,"\u29CF\u0338":c.REL,"\u29D0":c.REL,"\u29D0\u0338":c.REL,"\u29D1":c.REL,"\u29D2":c.REL,"\u29D3":c.REL,"\u29D4":c.REL,"\u29D5":c.REL,"\u29D6":c.BIN4,"\u29D7":c.BIN4,"\u29D8":c.BIN3,"\u29D9":c.BIN3,"\u29DB":c.BIN3,"\u29DC":c.BIN3,"\u29DD":c.BIN3,"\u29DE":c.REL,"\u29DF":c.BIN3,"\u29E0":c.BIN3,"\u29E1":c.REL,"\u29E2":c.BIN4,"\u29E3":c.REL,"\u29E4":c.REL,"\u29E5":c.REL,"\u29E6":c.REL,"\u29E7":c.BIN3,"\u29E8":c.BIN3,"\u29E9":c.BIN3,"\u29EA":c.BIN3,"\u29EB":c.BI
 N3,"\u29EC":c.BIN3,"\u29ED":c.BIN3,"\u29EE":c.BIN3,"\u29EF":c.BIN3,"\u29F0":c.BIN3,"\u29F1":c.BIN3,"\u29F2":c.BIN3,"\u29F3":c.BIN3,"\u29F4":c.REL,"\u29F5":c.BIN4,"\u29F6":c.BIN4,"\u29F7":c.BIN4,"\u29F8":c.BIN3,"\u29F9":c.BIN3,"\u29FA":c.BIN3,"\u29FB":c.BIN3,"\u29FE":c.BIN4,"\u29FF":c.BIN4}}});MathJax.Ajax.loadComplete(a.optableDir+"/MiscMathSymbolsB.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/MiscSymbolsAndArrows.js b/data/mathjax/jax/element/mml/optable/MiscSymbolsAndArrows.js
new file mode 100644
index 0000000..dfef882
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/MiscSymbolsAndArrows.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/MiscSymbolsAndArrows.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{infix:{"\u2B45":c.RELSTRETCH,"\u2B46":c.RELSTRETCH}}});MathJax.Ajax.loadComplete(a.optableDir+"/MiscSymbolsAndArrows.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/MiscTechnical.js b/data/mathjax/jax/element/mml/optable/MiscTechnical.js
new file mode 100644
index 0000000..860c94e
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/MiscTechnical.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/MiscTechnical.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u23B4":c.WIDEACCENT,"\u23B5":c.WIDEACCENT,"\u23DC":c.WIDEACCENT,"\u23DD":c.WIDEACCENT,"\u23E0":c.WIDEACCENT,"\u23E1":c.WIDEACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/MiscTechnical.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/SpacingModLetters.js b/data/mathjax/jax/element/mml/optable/SpacingModLetters.js
new file mode 100644
index 0000000..df4057d
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/SpacingModLetters.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/SpacingModLetters.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{postfix:{"\u02CD":c.WIDEACCENT,"\u02DA":c.ACCENT,"\u02DD":c.ACCENT,"\u02F7":c.WIDEACCENT}}});MathJax.Ajax.loadComplete(a.optableDir+"/SpacingModLetters.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/SuppMathOperators.js b/data/mathjax/jax/element/mml/optable/SuppMathOperators.js
new file mode 100644
index 0000000..7cb0993
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/SuppMathOperators.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/SuppMathOperators.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{prefix:{"\u2A03":c.OP,"\u2A05":c.OP,"\u2A07":c.OP,"\u2A08":c.OP,"\u2A09":c.OP,"\u2A0A":c.OP,"\u2A0B":c.INTEGRAL2,"\u2A0C":c.INTEGRAL,"\u2A0D":c.INTEGRAL2,"\u2A0E":c.INTEGRAL2,"\u2A0F":c.INTEGRAL2,"\u2A10":c.OP,"\u2A11":c.OP,"\u2A12":c.OP,"\u2A13":c.OP,"\u2A14":c.OP,"\u2A15":c.INTEGRAL2,"\u2A16":c.INTEGRAL2,"\u2A17":c.INTEGRAL2,"\u2A18":c.INTEGRAL2,"\u2A19":c.INTEGRAL2,"\u2A1A":c.INTEGRAL2,"\u2A1B":c.INTEGRAL2,"\u2A1C":c.INTEGRAL2,"\u2AFC":c.OP,"\u2AFF":c.OP},infix:{"\u2A1D":c.BIN3,"\u2A1E":c.BIN3,"\u2A1F":c.BIN3,"\u2A20":c.BIN3,"\u2A21":c.BIN3,"\u2A22":c.BIN4,"\u2A23":c.BIN4,"\u2A24":c.BIN4,"\u2A25":c.BIN4,"\u2A26":c.BIN4,"\u2A27":c.BIN4,"\u2A28":c.BIN4,"\u2A29":c.BIN4,"\u2A2A":c.BIN4,"\u2A2B":c.BIN4,"\u2A2C":c.BIN4,"\u2A2D":c.BIN4,"\u2A2E":c.BIN4,"\u2A30":c.BIN4,"\u2A31":c.BIN4,"\u2A32":c.BIN4,"\u2A33":c.BIN4,"\u2A34":c.BIN4,"\u2A35":c.BIN4,"\u2A36":c.BIN4,"\u2A37":c.BIN4,"\u2A38":c
 .BIN4,"\u2A39":c.BIN4,"\u2A3A":c.BIN4,"\u2A3B":c.BIN4,"\u2A3C":c.BIN4,"\u2A3D":c.BIN4,"\u2A3E":c.BIN4,"\u2A40":c.BIN4,"\u2A41":c.BIN4,"\u2A42":c.BIN4,"\u2A43":c.BIN4,"\u2A44":c.BIN4,"\u2A45":c.BIN4,"\u2A46":c.BIN4,"\u2A47":c.BIN4,"\u2A48":c.BIN4,"\u2A49":c.BIN4,"\u2A4A":c.BIN4,"\u2A4B":c.BIN4,"\u2A4C":c.BIN4,"\u2A4D":c.BIN4,"\u2A4E":c.BIN4,"\u2A4F":c.BIN4,"\u2A50":c.BIN4,"\u2A51":c.BIN4,"\u2A52":c.BIN4,"\u2A53":c.BIN4,"\u2A54":c.BIN4,"\u2A55":c.BIN4,"\u2A56":c.BIN4,"\u2A57":c.BIN4,"\u2A58":c.BIN4,"\u2A59":c.REL,"\u2A5A":c.BIN4,"\u2A5B":c.BIN4,"\u2A5C":c.BIN4,"\u2A5D":c.BIN4,"\u2A5E":c.BIN4,"\u2A5F":c.BIN4,"\u2A60":c.BIN4,"\u2A61":c.BIN4,"\u2A62":c.BIN4,"\u2A63":c.BIN4,"\u2A64":c.BIN4,"\u2A65":c.BIN4,"\u2A66":c.REL,"\u2A67":c.REL,"\u2A68":c.REL,"\u2A69":c.REL,"\u2A6A":c.REL,"\u2A6B":c.REL,"\u2A6C":c.REL,"\u2A6D":c.REL,"\u2A6E":c.REL,"\u2A6F":c.REL,"\u2A70":c.REL,"\u2A71":c.BIN4,"\u2A72":c.BIN4,"\u2A73":c.REL,"\u2A74":c.REL,"\u2A75":c.REL,"\u2A76":c.REL,"\u2A77":c.REL,"\u2A78"
 :c.REL,"\u2A79":c.REL,"\u2A7A":c.REL,"\u2A7B":c.REL,"\u2A7C":c.REL,"\u2A7D":c.REL,"\u2A7D\u0338":c.REL,"\u2A7E":c.REL,"\u2A7E\u0338":c.REL,"\u2A7F":c.REL,"\u2A80":c.REL,"\u2A81":c.REL,"\u2A82":c.REL,"\u2A83":c.REL,"\u2A84":c.REL,"\u2A85":c.REL,"\u2A86":c.REL,"\u2A87":c.REL,"\u2A88":c.REL,"\u2A89":c.REL,"\u2A8A":c.REL,"\u2A8B":c.REL,"\u2A8C":c.REL,"\u2A8D":c.REL,"\u2A8E":c.REL,"\u2A8F":c.REL,"\u2A90":c.REL,"\u2A91":c.REL,"\u2A92":c.REL,"\u2A93":c.REL,"\u2A94":c.REL,"\u2A95":c.REL,"\u2A96":c.REL,"\u2A97":c.REL,"\u2A98":c.REL,"\u2A99":c.REL,"\u2A9A":c.REL,"\u2A9B":c.REL,"\u2A9C":c.REL,"\u2A9D":c.REL,"\u2A9E":c.REL,"\u2A9F":c.REL,"\u2AA0":c.REL,"\u2AA1":c.REL,"\u2AA1\u0338":c.REL,"\u2AA2":c.REL,"\u2AA2\u0338":c.REL,"\u2AA3":c.REL,"\u2AA4":c.REL,"\u2AA5":c.REL,"\u2AA6":c.REL,"\u2AA7":c.REL,"\u2AA8":c.REL,"\u2AA9":c.REL,"\u2AAA":c.REL,"\u2AAB":c.REL,"\u2AAC":c.REL,"\u2AAD":c.REL,"\u2AAE":c.REL,"\u2AAF\u0338":c.REL,"\u2AB0\u0338":c.REL,"\u2AB1":c.REL,"\u2AB2":c.REL,"\u2AB3":c.REL,"
 \u2AB4":c.REL,"\u2AB5":c.REL,"\u2AB6":c.REL,"\u2AB7":c.REL,"\u2AB8":c.REL,"\u2AB9":c.REL,"\u2ABA":c.REL,"\u2ABB":c.REL,"\u2ABC":c.REL,"\u2ABD":c.REL,"\u2ABE":c.REL,"\u2ABF":c.REL,"\u2AC0":c.REL,"\u2AC1":c.REL,"\u2AC2":c.REL,"\u2AC3":c.REL,"\u2AC4":c.REL,"\u2AC5":c.REL,"\u2AC6":c.REL,"\u2AC7":c.REL,"\u2AC8":c.REL,"\u2AC9":c.REL,"\u2ACA":c.REL,"\u2ACB":c.REL,"\u2ACC":c.REL,"\u2ACD":c.REL,"\u2ACE":c.REL,"\u2ACF":c.REL,"\u2AD0":c.REL,"\u2AD1":c.REL,"\u2AD2":c.REL,"\u2AD3":c.REL,"\u2AD4":c.REL,"\u2AD5":c.REL,"\u2AD6":c.REL,"\u2AD7":c.REL,"\u2AD8":c.REL,"\u2AD9":c.REL,"\u2ADA":c.REL,"\u2ADB":c.REL,"\u2ADC":c.REL,"\u2ADD":c.REL,"\u2ADE":c.REL,"\u2ADF":c.REL,"\u2AE0":c.REL,"\u2AE1":c.REL,"\u2AE2":c.REL,"\u2AE3":c.REL,"\u2AE4":c.REL,"\u2AE5":c.REL,"\u2AE6":c.REL,"\u2AE7":c.REL,"\u2AE8":c.REL,"\u2AE9":c.REL,"\u2AEA":c.REL,"\u2AEB":c.REL,"\u2AEC":c.REL,"\u2AED":c.REL,"\u2AEE":c.REL,"\u2AEF":c.REL,"\u2AF0":c.REL,"\u2AF1":c.REL,"\u2AF2":c.REL,"\u2AF3":c.REL,"\u2AF4":c.BIN4,"\u2AF5":c.BIN
 4,"\u2AF6":c.BIN4,"\u2AF7":c.REL,"\u2AF8":c.REL,"\u2AF9":c.REL,"\u2AFA":c.REL,"\u2AFB":c.BIN4,"\u2AFD":c.BIN4,"\u2AFE":c.BIN3}}});MathJax.Ajax.loadComplete(a.optableDir+"/SuppMathOperators.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/SupplementalArrowsA.js b/data/mathjax/jax/element/mml/optable/SupplementalArrowsA.js
new file mode 100644
index 0000000..4a5cc98
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/SupplementalArrowsA.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/SupplementalArrowsA.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{infix:{"\u27F0":c.RELSTRETCH,"\u27F1":c.RELSTRETCH,"\u27FB":c.WIDEREL,"\u27FD":c.WIDEREL,"\u27FE":c.WIDEREL,"\u27FF":c.WIDEREL}}});MathJax.Ajax.loadComplete(a.optableDir+"/SupplementalArrowsA.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/element/mml/optable/SupplementalArrowsB.js b/data/mathjax/jax/element/mml/optable/SupplementalArrowsB.js
new file mode 100644
index 0000000..f6a05bf
--- /dev/null
+++ b/data/mathjax/jax/element/mml/optable/SupplementalArrowsB.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/element/mml/optable/SupplementalArrowsB.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){var c=a.mo.OPTYPES;var b=a.TEXCLASS;MathJax.Hub.Insert(a.mo.prototype,{OPTABLE:{infix:{"\u2900":c.RELACCENT,"\u2901":c.RELACCENT,"\u2902":c.RELACCENT,"\u2903":c.RELACCENT,"\u2904":c.RELACCENT,"\u2905":c.RELACCENT,"\u2906":c.RELACCENT,"\u2907":c.RELACCENT,"\u2908":c.REL,"\u2909":c.REL,"\u290A":c.RELSTRETCH,"\u290B":c.RELSTRETCH,"\u290C":c.WIDEREL,"\u290D":c.WIDEREL,"\u290E":c.WIDEREL,"\u290F":c.WIDEREL,"\u2910":c.WIDEREL,"\u2911":c.RELACCENT,"\u2912":c.RELSTRETCH,"\u2913":c.RELSTRETCH,"\u2914":c.RELACCENT,"\u2915":c.RELACCENT,"\u2916":c.RELACCENT,"\u2917":c.RELACCENT,"\u2918":c.RELACCENT,"\u2919":c.RELACCENT,"\u291A":c.RELACCENT,"\u291B":c.RELACCENT,"\u291C":c.RELACCENT,"\u291D":c.RELACCENT,"\u291E":c.RELACCENT,"\u291F":c.RELACCENT,"\u2920":c.RELACCENT,"\u2921":c.RELSTRETCH,"\u2922":c.RELSTRETCH,"\u2923":c.REL,"\u2924":c.REL,"\u2925":c.REL,"\u2926":c.REL,"\u2927":c.REL,"\u2928":c.REL,"\u2929":c.REL,"\u292A":c.REL,"\u292B":c.REL,"\u292C":c.REL,"\u292D":c.REL,"\u29
 2E":c.REL,"\u292F":c.REL,"\u2930":c.REL,"\u2931":c.REL,"\u2932":c.REL,"\u2933":c.RELACCENT,"\u2934":c.REL,"\u2935":c.REL,"\u2936":c.REL,"\u2937":c.REL,"\u2938":c.REL,"\u2939":c.REL,"\u293A":c.RELACCENT,"\u293B":c.RELACCENT,"\u293C":c.RELACCENT,"\u293D":c.RELACCENT,"\u293E":c.REL,"\u293F":c.REL,"\u2940":c.REL,"\u2941":c.REL,"\u2942":c.RELACCENT,"\u2943":c.RELACCENT,"\u2944":c.RELACCENT,"\u2945":c.RELACCENT,"\u2946":c.RELACCENT,"\u2947":c.RELACCENT,"\u2948":c.RELACCENT,"\u2949":c.REL,"\u294A":c.RELACCENT,"\u294B":c.RELACCENT,"\u294C":c.REL,"\u294D":c.REL,"\u294E":c.WIDEREL,"\u294F":c.RELSTRETCH,"\u2950":c.WIDEREL,"\u2951":c.RELSTRETCH,"\u2952":c.WIDEREL,"\u2953":c.WIDEREL,"\u2954":c.RELSTRETCH,"\u2955":c.RELSTRETCH,"\u2956":c.RELSTRETCH,"\u2957":c.RELSTRETCH,"\u2958":c.RELSTRETCH,"\u2959":c.RELSTRETCH,"\u295A":c.WIDEREL,"\u295B":c.WIDEREL,"\u295C":c.RELSTRETCH,"\u295D":c.RELSTRETCH,"\u295E":c.WIDEREL,"\u295F":c.WIDEREL,"\u2960":c.RELSTRETCH,"\u2961":c.RELSTRETCH,"\u2962":c.REL
 ACCENT,"\u2963":c.REL,"\u2964":c.RELACCENT,"\u2965":c.REL,"\u2966":c.RELACCENT,"\u2967":c.RELACCENT,"\u2968":c.RELACCENT,"\u2969":c.RELACCENT,"\u296A":c.RELACCENT,"\u296B":c.RELACCENT,"\u296C":c.RELACCENT,"\u296D":c.RELACCENT,"\u296E":c.RELSTRETCH,"\u296F":c.RELSTRETCH,"\u2970":c.RELACCENT,"\u2971":c.RELACCENT,"\u2972":c.RELACCENT,"\u2973":c.RELACCENT,"\u2974":c.RELACCENT,"\u2975":c.RELACCENT,"\u2976":c.RELACCENT,"\u2977":c.RELACCENT,"\u2978":c.RELACCENT,"\u2979":c.RELACCENT,"\u297A":c.RELACCENT,"\u297B":c.RELACCENT,"\u297C":c.RELACCENT,"\u297D":c.RELACCENT,"\u297E":c.REL,"\u297F":c.REL}}});MathJax.Ajax.loadComplete(a.optableDir+"/SupplementalArrowsB.js")})(MathJax.ElementJax.mml);
+
diff --git a/data/mathjax/jax/input/Makefile.am b/data/mathjax/jax/input/Makefile.am
new file mode 100644
index 0000000..9d4eee8
--- /dev/null
+++ b/data/mathjax/jax/input/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = MathML
diff --git a/data/mathjax/jax/input/MathML/Makefile.am b/data/mathjax/jax/input/MathML/Makefile.am
new file mode 100644
index 0000000..de31616
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/Makefile.am
@@ -0,0 +1,7 @@
+SUBDIRS = entities
+
+mjdir=$(datadir)/yelp/mathjax/jax/input/MathML
+
+mj_DATA = config.js jax.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/input/MathML/config.js b/data/mathjax/jax/input/MathML/config.js
new file mode 100644
index 0000000..b7e0e9b
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/config.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/config.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.InputJax.MathML=MathJax.InputJax({id:"MathML",version:"2.1",directory:MathJax.InputJax.directory+"/MathML",extensionDir:MathJax.InputJax.extensionDir+"/MathML",entityDir:MathJax.InputJax.directory+"/MathML/entities",config:{useMathMLspacing:false}});MathJax.InputJax.MathML.Register("math/mml");MathJax.InputJax.MathML.loadComplete("config.js");
+
diff --git a/data/mathjax/jax/input/MathML/entities/Makefile.am b/data/mathjax/jax/input/MathML/entities/Makefile.am
new file mode 100644
index 0000000..526e7c7
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/Makefile.am
@@ -0,0 +1,34 @@
+mjdir=$(datadir)/yelp/mathjax/jax/input/MathML/entities
+
+mj_DATA =	\
+	a.js	\
+	b.js	\
+	c.js	\
+	d.js	\
+	e.js	\
+	f.js	\
+	fr.js	\
+	g.js	\
+	h.js	\
+	i.js	\
+	j.js	\
+	k.js	\
+	l.js	\
+	m.js	\
+	n.js	\
+	o.js	\
+	opf.js	\
+	p.js	\
+	q.js	\
+	r.js	\
+	scr.js	\
+	s.js	\
+	t.js	\
+	u.js	\
+	v.js	\
+	w.js	\
+	x.js	\
+	y.js	\
+	z.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/input/MathML/entities/a.js b/data/mathjax/jax/input/MathML/entities/a.js
new file mode 100644
index 0000000..64356f0
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/a.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/a.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{AElig:"\u00C6",AMP:"\u0026",Aacute:"\u00C1",Abreve:"\u0102",Acirc:"\u00C2",Acy:"\u0410",Agrave:"\u00C0",Alpha:"\u0391",Amacr:"\u0100",And:"\u2A53",Aogon:"\u0104",Aring:"\u00C5",Assign:"\u2254",Atilde:"\u00C3",Auml:"\u00C4",aacute:"\u00E1",abreve:"\u0103",ac:"\u223E",acE:"\u223E\u0333",acd:"\u223F",acirc:"\u00E2",acy:"\u0430",aelig:"\u00E6",af:"\u2061",agrave:"\u00E0",alefsym:"\u2135",amacr:"\u0101",amp:"\u0026",andand:"\u2A55",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ange:"\u29A4",angle:"\u2220",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angst:"\u00C5",angzarr:"\u237C",aogon:"\u0105",ap:"\u2248",apE:"\u2A70",apacir:"\u2A6F",apid:"\u224B",apos:"\u0027",approx:"\u2248",approxeq:"\u224A",aring:"\u00E5",ast:"\u002A",asymp:"\u2248",asympeq:"\u224D",atilde:"\u00E3",auml:"\u00E4",a
 wconint:"\u2233",awint:"\u2A11"});MathJax.Ajax.loadComplete(a.entityDir+"/a.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/b.js b/data/mathjax/jax/input/MathML/entities/b.js
new file mode 100644
index 0000000..4684c2b
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/b.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/b.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{Barv:"\u2AE7",Barwed:"\u2306",Bcy:"\u0411",Bernoullis:"\u212C",Beta:"\u0392",Bumpeq:"\u224E",bNot:"\u2AED",backcong:"\u224C",backepsilon:"\u03F6",barvee:"\u22BD",barwed:"\u2305",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",bcy:"\u0431",bdquo:"\u201E",becaus:"\u2235",because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",bigcap:"\u22C2",bigcup:"\u22C3",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacksquare:"\u25AA",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"\u003D\u20E5",bnequiv:"\u2261\u20E5",bnot:"\u2310",bot:"\u22A5",bottom:"\u22A5",boxDL:"\u2557",boxDR:"\u2554",boxDl:"\u2556",boxDr:"\u2553",boxH:"\u2550",boxHD:"\u2566",boxHU:"\u2569",boxHd:"\u2564",boxHu:"\u2567",boxUL:"\u255D",boxUR:"\u255A",boxUl:"\u255C",boxUr:"\u2559",boxV:"\u2551",boxVH:"\u256C",boxVL:"\u2563",boxVR:"\u2560",boxVh:"\u256B",boxVl:"\u2562",boxVr:"\u255F",
 boxbox:"\u29C9",boxdL:"\u2555",boxdR:"\u2552",boxh:"\u2500",boxhD:"\u2565",boxhU:"\u2568",boxhd:"\u252C",boxhu:"\u2534",boxuL:"\u255B",boxuR:"\u2558",boxv:"\u2502",boxvH:"\u256A",boxvL:"\u2561",boxvR:"\u255E",boxvh:"\u253C",boxvl:"\u2524",boxvr:"\u251C",bprime:"\u2035",breve:"\u02D8",brvbar:"\u00A6",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsolb:"\u29C5",bsolhsub:"\u27C8",bullet:"\u2022",bump:"\u224E",bumpE:"\u2AAE",bumpe:"\u224F",bumpeq:"\u224F"});MathJax.Ajax.loadComplete(a.entityDir+"/b.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/c.js b/data/mathjax/jax/input/MathML/entities/c.js
new file mode 100644
index 0000000..39e5655
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/c.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/c.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{CHcy:"\u0427",COPY:"\u00A9",Cacute:"\u0106",CapitalDifferentialD:"\u2145",Cayleys:"\u212D",Ccaron:"\u010C",Ccedil:"\u00C7",Ccirc:"\u0108",Cconint:"\u2230",Cdot:"\u010A",Cedilla:"\u00B8",Chi:"\u03A7",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201D",CloseCurlyQuote:"\u2019",Colon:"\u2237",Colone:"\u2A74",Conint:"\u222F",CounterClockwiseContourIntegral:"\u2233",cacute:"\u0107",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",capcup:"\u2A47",capdot:"\u2A40",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",ccaps:"\u2A4D",ccaron:"\u010D",ccedil:"\u00E7",ccirc:"\u0109",ccups:"\u2A4C",ccupssm:"\u2A50",cdot:"\u010B",cedil:"\u00B8",cemptyv:"\u29B2",cent:"\u00A2",centerdot:"\u00B7",chcy:"\u0447",checkmark:"\u2713",cir:"\u25CB",cirE:"\u29C3",cire:"\u2257",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",clubsuit:"\u2663",colone:"\u2254",coloneq:"\u2254",comma:"\u002C",commat:"\u0040",compfn:"\u2218",complement:"\u2201",
 complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",conint:"\u222E",coprod:"\u2210",copy:"\u00A9",copysr:"\u2117",crarr:"\u21B5",cross:"\u2717",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",cudarrl:"\u2938",cudarrr:"\u2935",cularrp:"\u293D",cupbrcap:"\u2A48",cupcap:"\u2A46",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curren:"\u00A4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D"});MathJax.Ajax.loadComplete(a.entityDir+"/c.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/d.js b/data/mathjax/jax/input/MathML/entities/d.js
new file mode 100644
index 0000000..8c6d119
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/d.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/d.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{DD:"\u2145",DDotrahd:"\u2911",DJcy:"\u0402",DScy:"\u0405",DZcy:"\u040F",Darr:"\u21A1",Dashv:"\u2AE4",Dcaron:"\u010E",Dcy:"\u0414",DiacriticalAcute:"\u00B4",DiacriticalDot:"\u02D9",DiacriticalDoubleAcute:"\u02DD",DiacriticalGrave:"\u0060",DiacriticalTilde:"\u02DC",Dot:"\u00A8",DotDot:"\u20DC",DoubleContourIntegral:"\u222F",DoubleDownArrow:"\u21D3",DoubleLeftArrow:"\u21D0",DoubleLeftRightArrow:"\u21D4",DoubleLeftTee:"\u2AE4",DoubleLongLeftArrow:"\u27F8",DoubleLongLeftRightArrow:"\u27FA",DoubleLongRightArrow:"\u27F9",DoubleRightArrow:"\u21D2",DoubleUpArrow:"\u21D1",DoubleUpDownArrow:"\u21D5",DownArrowBar:"\u2913",DownArrowUpArrow:"\u21F5",DownBreve:"\u0311",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295E",DownLeftVectorBar:"\u2956",DownRightTeeVector:"\u295F",DownRightVectorBar:"\u2957",DownTeeArrow:"\u21A7",Dstrok:"\u0110",dArr:"\u21D3",dHar:"\u2965",darr:"\u2193",dash:"\u2010",dashv:"\u22A3",dbkarow:"\u290F",dblac:"\u02DD
 ",dcaron:"\u010F",dcy:"\u0434",dd:"\u2146",ddagger:"\u2021",ddotseq:"\u2A77",demptyv:"\u29B1",dfisht:"\u297F",dharl:"\u21C3",dharr:"\u21C2",diam:"\u22C4",diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\u00A8",disin:"\u22F2",divide:"\u00F7",divonx:"\u22C7",djcy:"\u0452",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"\u0024",doteq:"\u2250",dotminus:"\u2238",doublebarwedge:"\u2306",downarrow:"\u2193",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",dscy:"\u0455",dsol:"\u29F6",dstrok:"\u0111",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",dzcy:"\u045F",dzigrarr:"\u27FF"});MathJax.Ajax.loadComplete(a.entityDir+"/d.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/e.js b/data/mathjax/jax/input/MathML/entities/e.js
new file mode 100644
index 0000000..a51e3ea
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/e.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/e.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{ENG:"\u014A",ETH:"\u00D0",Eacute:"\u00C9",Ecaron:"\u011A",Ecirc:"\u00CA",Ecy:"\u042D",Edot:"\u0116",Egrave:"\u00C8",Emacr:"\u0112",EmptySmallSquare:"\u25FB",EmptyVerySmallSquare:"\u25AB",Eogon:"\u0118",Epsilon:"\u0395",Equal:"\u2A75",Esim:"\u2A73",Eta:"\u0397",Euml:"\u00CB",eDDot:"\u2A77",eDot:"\u2251",eacute:"\u00E9",easter:"\u2A6E",ecaron:"\u011B",ecirc:"\u00EA",ecolon:"\u2255",ecy:"\u044D",edot:"\u0117",ee:"\u2147",eg:"\u2A9A",egrave:"\u00E8",egsdot:"\u2A98",el:"\u2A99",elinters:"\u23E7",elsdot:"\u2A97",emacr:"\u0113",emptyset:"\u2205",emptyv:"\u2205",emsp:"\u2003",emsp13:"\u2004",emsp14:"\u2005",eng:"\u014B",ensp:"\u2002",eogon:"\u0119",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsilon:"\u03B5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",equals:"\u003D",equest:"\u225F",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erarr:"\u2971",esdot:"\u2250",esim:"\u2242",euml:"\u00EB",e
 uro:"\u20AC",excl:"\u0021",exist:"\u2203",expectation:"\u2130",exponentiale:"\u2147"});MathJax.Ajax.loadComplete(a.entityDir+"/e.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/f.js b/data/mathjax/jax/input/MathML/entities/f.js
new file mode 100644
index 0000000..f8eec34
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/f.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/f.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{Fcy:"\u0424",FilledSmallSquare:"\u25FC",Fouriertrf:"\u2131",fallingdotseq:"\u2252",fcy:"\u0444",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",filig:"\uFB01",fjlig:"\u0066\u006A",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",forall:"\u2200",forkv:"\u2AD9",fpartint:"\u2A0D",frac12:"\u00BD",frac13:"\u2153",frac14:"\u00BC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\u00BE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044"});MathJax.Ajax.loadComplete(a.entityDir+"/f.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/fr.js b/data/mathjax/jax/input/MathML/entities/fr.js
new file mode 100644
index 0000000..9980ddb
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/fr.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/fr.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{Afr:"\uD835\uDD04",Bfr:"\uD835\uDD05",Cfr:"\u212D",Dfr:"\uD835\uDD07",Efr:"\uD835\uDD08",Ffr:"\uD835\uDD09",Gfr:"\uD835\uDD0A",Hfr:"\u210C",Ifr:"\u2111",Jfr:"\uD835\uDD0D",Kfr:"\uD835\uDD0E",Lfr:"\uD835\uDD0F",Mfr:"\uD835\uDD10",Nfr:"\uD835\uDD11",Ofr:"\uD835\uDD12",Pfr:"\uD835\uDD13",Qfr:"\uD835\uDD14",Rfr:"\u211C",Sfr:"\uD835\uDD16",Tfr:"\uD835\uDD17",Ufr:"\uD835\uDD18",Vfr:"\uD835\uDD19",Wfr:"\uD835\uDD1A",Xfr:"\uD835\uDD1B",Yfr:"\uD835\uDD1C",Zfr:"\u2128",afr:"\uD835\uDD1E",bfr:"\uD835\uDD1F",cfr:"\uD835\uDD20",dfr:"\uD835\uDD21",efr:"\uD835\uDD22",ffr:"\uD835\uDD23",gfr:"\uD835\uDD24",hfr:"\uD835\uDD25",ifr:"\uD835\uDD26",jfr:"\uD835\uDD27",kfr:"\uD835\uDD28",lfr:"\uD835\uDD29",mfr:"\uD835\uDD2A",nfr:"\uD835\uDD2B",ofr:"\uD835\uDD2C",pfr:"\uD835\uDD2D",qfr:"\uD835\uDD2E",rfr:"\uD835\uDD2F",sfr:"\uD835\uDD30",tfr:"\uD835\uDD31",ufr:"\uD835\uDD32",vfr:"\uD835\uDD33",wfr:"\uD835\uDD34",xfr:"\uD835\uDD35",yfr:"\uD835\uDD36",zf
 r:"\uD835\uDD37"});MathJax.Ajax.loadComplete(a.entityDir+"/fr.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/g.js b/data/mathjax/jax/input/MathML/entities/g.js
new file mode 100644
index 0000000..1a64ab0
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/g.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/g.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{GJcy:"\u0403",GT:"\u003E",Gammad:"\u03DC",Gbreve:"\u011E",Gcedil:"\u0122",Gcirc:"\u011C",Gcy:"\u0413",Gdot:"\u0120",GreaterGreater:"\u2AA2",Gt:"\u226B",gE:"\u2267",gacute:"\u01F5",gammad:"\u03DD",gbreve:"\u011F",gcirc:"\u011D",gcy:"\u0433",gdot:"\u0121",ge:"\u2265",gel:"\u22DB",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",ges:"\u2A7E",gescc:"\u2AA9",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",gg:"\u226B",ggg:"\u22D9",gjcy:"\u0453",gl:"\u2277",glE:"\u2A92",gla:"\u2AA5",glj:"\u2AA4",gnapprox:"\u2A8A",gneq:"\u2A88",gneqq:"\u2269",grave:"\u0060",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",gtcc:"\u2AA7",gtcir:"\u2A7A",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00"});MathJax.Ajax.loadComplete(a.entityDir+"/g.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/h.js b/data/mathjax/jax/input/MathML/entities/h.js
new file mode 100644
index 0000000..6144a17
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/h.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/h.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{HARDcy:"\u042A",Hcirc:"\u0124",HilbertSpace:"\u210B",HorizontalLine:"\u2500",Hstrok:"\u0126",hArr:"\u21D4",hairsp:"\u200A",half:"\u00BD",hamilt:"\u210B",hardcy:"\u044A",harr:"\u2194",harrcir:"\u2948",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hercon:"\u22B9",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",horbar:"\u2015",hslash:"\u210F",hstrok:"\u0127",hybull:"\u2043",hyphen:"\u2010"});MathJax.Ajax.loadComplete(a.entityDir+"/h.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/i.js b/data/mathjax/jax/input/MathML/entities/i.js
new file mode 100644
index 0000000..cc18c87
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/i.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/i.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{IEcy:"\u0415",IJlig:"\u0132",IOcy:"\u0401",Iacute:"\u00CD",Icirc:"\u00CE",Icy:"\u0418",Idot:"\u0130",Igrave:"\u00CC",Imacr:"\u012A",Implies:"\u21D2",Int:"\u222C",Iogon:"\u012E",Iota:"\u0399",Itilde:"\u0128",Iukcy:"\u0406",Iuml:"\u00CF",iacute:"\u00ED",ic:"\u2063",icirc:"\u00EE",icy:"\u0438",iecy:"\u0435",iexcl:"\u00A1",iff:"\u21D4",igrave:"\u00EC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",ijlig:"\u0133",imacr:"\u012B",image:"\u2111",imagline:"\u2110",imagpart:"\u2111",imof:"\u22B7",imped:"\u01B5","in":"\u2208",incare:"\u2105",infintie:"\u29DD",inodot:"\u0131","int":"\u222B",integers:"\u2124",intercal:"\u22BA",intlarhk:"\u2A17",intprod:"\u2A3C",iocy:"\u0451",iogon:"\u012F",iprod:"\u2A3C",iquest:"\u00BF",isin:"\u2208",isinE:"\u22F9",isindot:"\u22F5",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",itilde:"\u0129",iukcy:"\u0456",iuml:"\u00EF"});MathJax.Ajax.loadComplete(a.entityDir+"/i.js")
 })(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/j.js b/data/mathjax/jax/input/MathML/entities/j.js
new file mode 100644
index 0000000..935cd67
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/j.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/j.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{Jcirc:"\u0134",Jcy:"\u0419",Jsercy:"\u0408",Jukcy:"\u0404",jcirc:"\u0135",jcy:"\u0439",jsercy:"\u0458",jukcy:"\u0454"});MathJax.Ajax.loadComplete(a.entityDir+"/j.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/k.js b/data/mathjax/jax/input/MathML/entities/k.js
new file mode 100644
index 0000000..427f767
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/k.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/k.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{KHcy:"\u0425",KJcy:"\u040C",Kappa:"\u039A",Kcedil:"\u0136",Kcy:"\u041A",kcedil:"\u0137",kcy:"\u043A",kgreen:"\u0138",khcy:"\u0445",kjcy:"\u045C"});MathJax.Ajax.loadComplete(a.entityDir+"/k.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/l.js b/data/mathjax/jax/input/MathML/entities/l.js
new file mode 100644
index 0000000..a45cd4f
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/l.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/l.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{LJcy:"\u0409",LT:"\u003C",Lacute:"\u0139",Lang:"\u27EA",Laplacetrf:"\u2112",Lcaron:"\u013D",Lcedil:"\u013B",Lcy:"\u041B",LeftArrowBar:"\u21E4",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVectorBar:"\u2959",LeftRightVector:"\u294E",LeftTeeArrow:"\u21A4",LeftTeeVector:"\u295A",LeftTriangleBar:"\u29CF",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVectorBar:"\u2958",LeftVectorBar:"\u2952",LessLess:"\u2AA1",Lmidot:"\u013F",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",Lstrok:"\u0141",Lt:"\u226A",lAarr:"\u21DA",lArr:"\u21D0",lAtail:"\u291B",lBarr:"\u290E",lE:"\u2266",lHar:"\u2962",lacute:"\u013A",laemptyv:"\u29B4",lagran:"\u2112",lang:"\u27E8",langd:"\u2991",langle:"\u27E8",laquo:"\u00AB",larr:"\u2190",larrb:"\u21E4",larrbfs:"\u291F",larrfs:"\u291D",larrhk:"\u21A9",larrpl:"\u2939",larrsim:"\u2973",lat:"\u2AAB",latail:"\u2919",late:"\u2AAD",lates:"\u2AAD\uFE00",lbarr:"\u290C",lbbrk:"\u2772",lbrke:"\u29
 8B",lbrksld:"\u298F",lbrkslu:"\u298D",lcaron:"\u013E",lcedil:"\u013C",lceil:"\u2308",lcub:"\u007B",lcy:"\u043B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",leftarrow:"\u2190",leftarrowtail:"\u21A2",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftrightarrow:"\u2194",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",leg:"\u22DA",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",les:"\u2A7D",lescc:"\u2AA8",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",lessgtr:"\u2276",lesssim:"\u2272",lfisht:"\u297C",lfloor:"\u230A",lg:"\u2276",lgE:"\u2A91",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",ljcy:"\u0459",ll:"\u226A",llarr:"\u21C7",llcorner:"\u231E",llhard:"\u296B",lltri:"\u25FA",lmidot:"\u0140",lmoustache:"\u23B0",lnapprox:"\u2A89",lneq:"\u2A87",lneqq:"\u2268",loang:"\u27EC",loarr:"\u21FD",l
 obrk:"\u27E6",longleftarrow:"\u27F5",longleftrightarrow:"\u27F7",longrightarrow:"\u27F6",looparrowleft:"\u21AB",lopar:"\u2985",loplus:"\u2A2D",lotimes:"\u2A34",lowbar:"\u005F",lozenge:"\u25CA",lozf:"\u29EB",lpar:"\u0028",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"\u005B",lsquo:"\u2018",lsquor:"\u201A",lstrok:"\u0142",ltcc:"\u2AA6",ltcir:"\u2A79",ltdot:"\u22D6",lthree:"\u22CB",ltlarr:"\u2976",ltquest:"\u2A7B",ltrPar:"\u2996",ltrie:"\u22B4",ltrif:"\u25C2",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00"});MathJax.Ajax.loadComplete(a.entityDir+"/l.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/m.js b/data/mathjax/jax/input/MathML/entities/m.js
new file mode 100644
index 0000000..1f2753a
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/m.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/m.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{Map:"\u2905",Mcy:"\u041C",MediumSpace:"\u205F",Mellintrf:"\u2133",Mu:"\u039C",mDDot:"\u223A",male:"\u2642",maltese:"\u2720",map:"\u21A6",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",mcy:"\u043C",mdash:"\u2014",measuredangle:"\u2221",micro:"\u00B5",mid:"\u2223",midast:"\u002A",midcir:"\u2AF0",middot:"\u00B7",minus:"\u2212",minusb:"\u229F",minusd:"\u2238",minusdu:"\u2A2A",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",mp:"\u2213",mstpos:"\u223E",mumap:"\u22B8"});MathJax.Ajax.loadComplete(a.entityDir+"/m.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/n.js b/data/mathjax/jax/input/MathML/entities/n.js
new file mode 100644
index 0000000..c0ca5c5
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/n.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/n.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{NJcy:"\u040A",Nacute:"\u0143",Ncaron:"\u0147",Ncedil:"\u0145",Ncy:"\u041D",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",NewLine:"\u000A",NoBreak:"\u2060",NonBreakingSpace:"\u00A0",Not:"\u2AEC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotEqualTilde:"\u2242\u0338",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",NotLeftTriangleBar:"\u29CF\u0338",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",NotPrecedesEqual:"\u2AAF\u0338",NotReverseElement:"\u220C",NotRightTriangleBar:"\u29D0\u0338",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u03
 38",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",Ntilde:"\u00D1",Nu:"\u039D",nGg:"\u22D9\u0338",nGt:"\u226B\u20D2",nGtv:"\u226B\u0338",nLl:"\u22D8\u0338",nLt:"\u226A\u20D2",nLtv:"\u226A\u0338",nabla:"\u2207",nacute:"\u0144",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natural:"\u266E",naturals:"\u2115",nbsp:"\u00A0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",ncaron:"\u0148",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",ncy:"\u043D",ndash:"\u2013",ne:"\u2260",neArr:"\u21D7",nearhk:"\u2924",nearrow:"\u2197",nedot:"\u2250\u0338",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",nexist:"\u2204",nexists:"\u2204",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:
 "\u2A7E\u0338",ngsim:"\u2275",ngt:"\u226F",ngtr:"\u226F",nhArr:"\u21CE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",njcy:"\u045A",nlArr:"\u21CD",nlE:"\u2266\u0338",nldr:"\u2025",nle:"\u2270",nleftarrow:"\u219A",nleftrightarrow:"\u21AE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nlsim:"\u2274",nlt:"\u226E",nltri:"\u22EA",nltrie:"\u22EC",nmid:"\u2224",notin:"\u2209",notinE:"\u22F9\u0338",notindot:"\u22F5\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",npar:"\u2226",nparallel:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",npre:"\u2AAF\u0338",nprec:"\u2280",npreceq:"\u2AAF\u0338",nrArr:"\u21CF",nrarrc:"\u2933\u0338",nrarrw:"\u219D\u0338",nrightarrow:"\u219B",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",nshortmid:"\u2224",nshortparallel:"\u2226",n
 sim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsubE:"\u2AC5\u0338",nsube:"\u2288",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupE:"\u2AC6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",ntilde:"\u00F1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",num:"\u0023",numero:"\u2116",numsp:"\u2007",nvHarr:"\u2904",nvap:"\u224D\u20D2",nvge:"\u2265\u20D2",nvgt:"\u003E\u20D2",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"\u003C\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwArr:"\u21D6",nwarhk:"\u2923",nwarrow:"\u2196",nwnear:"\u2927"});MathJax.Ajax.loadComplete(a.entityDir+"/n.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/o.js b/data/mathjax/jax/input/MathML/entities/o.js
new file mode 100644
index 0000000..5acf222
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/o.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/o.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{OElig:"\u0152",Oacute:"\u00D3",Ocirc:"\u00D4",Ocy:"\u041E",Odblac:"\u0150",Ograve:"\u00D2",Omacr:"\u014C",Omicron:"\u039F",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",Or:"\u2A54",Oslash:"\u00D8",Otilde:"\u00D5",Otimes:"\u2A37",Ouml:"\u00D6",OverBracket:"\u23B4",OverParenthesis:"\u23DC",oS:"\u24C8",oacute:"\u00F3",oast:"\u229B",ocir:"\u229A",ocirc:"\u00F4",ocy:"\u043E",odash:"\u229D",odblac:"\u0151",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",oelig:"\u0153",ofcir:"\u29BF",ogon:"\u02DB",ograve:"\u00F2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",omacr:"\u014D",omid:"\u29B6",ominus:"\u2296",opar:"\u29B7",operp:"\u29B9",oplus:"\u2295",orarr:"\u21BB",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\u00AA",ordm:"\u00BA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oslash:"\u00F8",otilde:"\u00F5",otimes:"\u2297",otimesas:"
 \u2A36",ouml:"\u00F6",ovbar:"\u233D"});MathJax.Ajax.loadComplete(a.entityDir+"/o.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/opf.js b/data/mathjax/jax/input/MathML/entities/opf.js
new file mode 100644
index 0000000..82b7c7f
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/opf.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/opf.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{Aopf:"\uD835\uDD38",Bopf:"\uD835\uDD39",Copf:"\u2102",Dopf:"\uD835\uDD3B",Eopf:"\uD835\uDD3C",Fopf:"\uD835\uDD3D",Gopf:"\uD835\uDD3E",Hopf:"\u210D",Iopf:"\uD835\uDD40",Jopf:"\uD835\uDD41",Kopf:"\uD835\uDD42",Lopf:"\uD835\uDD43",Mopf:"\uD835\uDD44",Nopf:"\u2115",Oopf:"\uD835\uDD46",Popf:"\u2119",Qopf:"\u211A",Ropf:"\u211D",Sopf:"\uD835\uDD4A",Topf:"\uD835\uDD4B",Uopf:"\uD835\uDD4C",Vopf:"\uD835\uDD4D",Wopf:"\uD835\uDD4E",Xopf:"\uD835\uDD4F",Yopf:"\uD835\uDD50",Zopf:"\u2124",aopf:"\uD835\uDD52",bopf:"\uD835\uDD53",copf:"\uD835\uDD54",dopf:"\uD835\uDD55",eopf:"\uD835\uDD56",fopf:"\uD835\uDD57",gopf:"\uD835\uDD58",hopf:"\uD835\uDD59",iopf:"\uD835\uDD5A",jopf:"\uD835\uDD5B",kopf:"\uD835\uDD5C",lopf:"\uD835\uDD5D",mopf:"\uD835\uDD5E",nopf:"\uD835\uDD5F",oopf:"\uD835\uDD60",popf:"\uD835\uDD61",qopf:"\uD835\uDD62",ropf:"\uD835\uDD63",sopf:"\uD835\uDD64",topf:"\uD835\uDD65",uopf:"\uD835\uDD66",vopf:"\uD835\uDD67",wopf:"\uD835\uDD68",xop
 f:"\uD835\uDD69",yopf:"\uD835\uDD6A",zopf:"\uD835\uDD6B"});MathJax.Ajax.loadComplete(a.entityDir+"/opf.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/p.js b/data/mathjax/jax/input/MathML/entities/p.js
new file mode 100644
index 0000000..de09eab
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/p.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/p.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{Pcy:"\u041F",Poincareplane:"\u210C",Pr:"\u2ABB",Prime:"\u2033",Proportion:"\u2237",par:"\u2225",para:"\u00B6",parallel:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",pcy:"\u043F",percnt:"\u0025",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",phmmat:"\u2133",phone:"\u260E",pitchfork:"\u22D4",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plus:"\u002B",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",plusmn:"\u00B1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\u00B1",pointint:"\u2A15",pound:"\u00A3",pr:"\u227A",prE:"\u2AB3",prcue:"\u227C",pre:"\u2AAF",prec:"\u227A",precapprox:"\u2AB7",preccurlyeq:"\u227C",preceq:"\u2AAF",precsim:"\u227E",primes:"\u2119",prnE:"\u2AB5",prnap:"\u2AB9",prnsim:"\u22E8",prod:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",puncsp:"\u2008"});MathJax.Ajax.loadComplete(a.entityDir+
 "/p.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/q.js b/data/mathjax/jax/input/MathML/entities/q.js
new file mode 100644
index 0000000..fbad679
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/q.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/q.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{QUOT:"\u0022",qint:"\u2A0C",qprime:"\u2057",quaternions:"\u210D",quatint:"\u2A16",quest:"\u003F",questeq:"\u225F",quot:"\u0022"});MathJax.Ajax.loadComplete(a.entityDir+"/q.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/r.js b/data/mathjax/jax/input/MathML/entities/r.js
new file mode 100644
index 0000000..d927ab2
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/r.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/r.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{RBarr:"\u2910",REG:"\u00AE",Racute:"\u0154",Rang:"\u27EB",Rarrtl:"\u2916",Rcaron:"\u0158",Rcedil:"\u0156",Rcy:"\u0420",ReverseElement:"\u220B",ReverseUpEquilibrium:"\u296F",Rho:"\u03A1",RightArrowBar:"\u21E5",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVectorBar:"\u2955",RightTeeVector:"\u295B",RightTriangleBar:"\u29D0",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVectorBar:"\u2954",RightVectorBar:"\u2953",RoundImplies:"\u2970",RuleDelayed:"\u29F4",rAarr:"\u21DB",rArr:"\u21D2",rAtail:"\u291C",rBarr:"\u290F",rHar:"\u2964",race:"\u223D\u0331",racute:"\u0155",radic:"\u221A",raemptyv:"\u29B3",rang:"\u27E9",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\u00BB",rarr:"\u2192",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",rarrw:"\u219D",ratail:"\u291A",ratio:"\u2236",rationals:"\u211A",rbarr:"\u29
 0D",rbbrk:"\u2773",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",rcaron:"\u0159",rcedil:"\u0157",rceil:"\u2309",rcub:"\u007D",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",rect:"\u25AD",reg:"\u00AE",rfisht:"\u297D",rfloor:"\u230B",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",rightarrow:"\u2192",rightarrowtail:"\u21A3",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightsquigarrow:"\u219D",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoustache:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",roplus:"\u2A2E",rotimes:"\u2A35",rpar:"\u0029",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",rsaquo:"\u203A",rsh:"\u21B1",rsqb:"\u005D",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",ruluhar:"\u2968",rx:"\u211E"});MathJa
 x.Ajax.loadComplete(a.entityDir+"/r.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/s.js b/data/mathjax/jax/input/MathML/entities/s.js
new file mode 100644
index 0000000..cb80b51
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/s.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/s.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{SHCHcy:"\u0429",SHcy:"\u0428",SOFTcy:"\u042C",Sacute:"\u015A",Sc:"\u2ABC",Scaron:"\u0160",Scedil:"\u015E",Scirc:"\u015C",Scy:"\u0421",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",Sub:"\u22D0",Sup:"\u22D1",sacute:"\u015B",sbquo:"\u201A",sc:"\u227B",scE:"\u2AB4",scaron:"\u0161",sccue:"\u227D",sce:"\u2AB0",scedil:"\u015F",scirc:"\u015D",scpolint:"\u2A13",scsim:"\u227F",scy:"\u0441",sdotb:"\u22A1",sdote:"\u2A66",seArr:"\u21D8",searhk:"\u2925",searrow:"\u2198",semi:"\u003B",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",sfrown:"\u2322",shchcy:"\u0449",shcy:"\u0448",shortmid:"\u2223",shortparallel:"\u2225",shy:"\u00AD",sigmaf:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",sm
 t:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",softcy:"\u044C",sol:"\u002F",solb:"\u29C4",solbar:"\u233F",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",squ:"\u25A1",square:"\u25A1",squarf:"\u25AA",squf:"\u25AA",srarr:"\u2192",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\u00AF",subdot:"\u2ABD",sube:"\u2286",subedot:"\u2AC3",submult:"\u2AC1",subplus:"\u2ABF",subrarr:"\u2979",subset:"\u2282",subseteq:"\u2286",subseteqq:"\u2AC5",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succ:"\u227B",succapprox:"\u2AB8",succcurlyeq:"\u227D",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",sum:"\u2211",sung:"\u266A",sup:"\u2283",sup1
 :"\u00B9",sup2:"\u00B2",sup3:"\u00B3",supdot:"\u2ABE",supdsub:"\u2AD8",supe:"\u2287",supedot:"\u2AC4",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supplus:"\u2AC0",supset:"\u2283",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swArr:"\u21D9",swarhk:"\u2926",swarrow:"\u2199",swnwar:"\u292A",szlig:"\u00DF"});MathJax.Ajax.loadComplete(a.entityDir+"/s.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/scr.js b/data/mathjax/jax/input/MathML/entities/scr.js
new file mode 100644
index 0000000..1117538
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/scr.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/scr.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{Ascr:"\uD835\uDC9C",Bscr:"\u212C",Cscr:"\uD835\uDC9E",Dscr:"\uD835\uDC9F",Escr:"\u2130",Fscr:"\u2131",Gscr:"\uD835\uDCA2",Hscr:"\u210B",Iscr:"\u2110",Jscr:"\uD835\uDCA5",Kscr:"\uD835\uDCA6",Lscr:"\u2112",Mscr:"\u2133",Nscr:"\uD835\uDCA9",Oscr:"\uD835\uDCAA",Pscr:"\uD835\uDCAB",Qscr:"\uD835\uDCAC",Rscr:"\u211B",Sscr:"\uD835\uDCAE",Tscr:"\uD835\uDCAF",Uscr:"\uD835\uDCB0",Vscr:"\uD835\uDCB1",Wscr:"\uD835\uDCB2",Xscr:"\uD835\uDCB3",Yscr:"\uD835\uDCB4",Zscr:"\uD835\uDCB5",ascr:"\uD835\uDCB6",bscr:"\uD835\uDCB7",cscr:"\uD835\uDCB8",dscr:"\uD835\uDCB9",escr:"\u212F",fscr:"\uD835\uDCBB",gscr:"\u210A",hscr:"\uD835\uDCBD",iscr:"\uD835\uDCBE",jscr:"\uD835\uDCBF",kscr:"\uD835\uDCC0",lscr:"\uD835\uDCC1",mscr:"\uD835\uDCC2",nscr:"\uD835\uDCC3",oscr:"\u2134",pscr:"\uD835\uDCC5",qscr:"\uD835\uDCC6",rscr:"\uD835\uDCC7",sscr:"\uD835\uDCC8",tscr:"\uD835\uDCC9",uscr:"\uD835\uDCCA",vscr:"\uD835\uDCCB",wscr:"\uD835\uDCCC",xscr:"\uD835\uDCCD",yscr:"\
 uD835\uDCCE",zscr:"\uD835\uDCCF"});MathJax.Ajax.loadComplete(a.entityDir+"/scr.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/t.js b/data/mathjax/jax/input/MathML/entities/t.js
new file mode 100644
index 0000000..5799df2
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/t.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/t.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{THORN:"\u00DE",TRADE:"\u2122",TSHcy:"\u040B",TScy:"\u0426",Tab:"\u0009",Tau:"\u03A4",Tcaron:"\u0164",Tcedil:"\u0162",Tcy:"\u0422",ThickSpace:"\u205F\u200A",ThinSpace:"\u2009",TripleDot:"\u20DB",Tstrok:"\u0166",target:"\u2316",tbrk:"\u23B4",tcaron:"\u0165",tcedil:"\u0163",tcy:"\u0442",tdot:"\u20DB",telrec:"\u2315",there4:"\u2234",therefore:"\u2234",thetasym:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223C",thorn:"\u00FE",timesb:"\u22A0",timesbar:"\u2A31",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",top:"\u22A4",topbot:"\u2336",topcir:"\u2AF1",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",tscy:"\u0446",tshcy:"\u045B",tstrok:"\u0167",twixt:"\u22
 6C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0"});MathJax.Ajax.loadComplete(a.entityDir+"/t.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/u.js b/data/mathjax/jax/input/MathML/entities/u.js
new file mode 100644
index 0000000..65ece45
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/u.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/u.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{Uacute:"\u00DA",Uarr:"\u219F",Uarrocir:"\u2949",Ubrcy:"\u040E",Ubreve:"\u016C",Ucirc:"\u00DB",Ucy:"\u0423",Udblac:"\u0170",Ugrave:"\u00D9",Umacr:"\u016A",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Uogon:"\u0172",UpArrowBar:"\u2912",UpArrowDownArrow:"\u21C5",UpEquilibrium:"\u296E",UpTeeArrow:"\u21A5",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",Upsi:"\u03D2",Uring:"\u016E",Utilde:"\u0168",Uuml:"\u00DC",uArr:"\u21D1",uHar:"\u2963",uacute:"\u00FA",uarr:"\u2191",ubrcy:"\u045E",ubreve:"\u016D",ucirc:"\u00FB",ucy:"\u0443",udarr:"\u21C5",udblac:"\u0171",udhar:"\u296E",ufisht:"\u297E",ugrave:"\u00F9",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",umacr:"\u016B",uml:"\u00A8",uogon:"\u0173",uparrow:"\u2191",updownarrow:"\u2195",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",upsih:"\u03D2",upsilon:"\u03C5",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230
 E",uring:"\u016F",urtri:"\u25F9",utdot:"\u22F0",utilde:"\u0169",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",uuml:"\u00FC",uwangle:"\u29A7"});MathJax.Ajax.loadComplete(a.entityDir+"/u.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/v.js b/data/mathjax/jax/input/MathML/entities/v.js
new file mode 100644
index 0000000..3e0dcb7
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/v.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/v.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{VDash:"\u22AB",Vbar:"\u2AEB",Vcy:"\u0412",Vdashl:"\u2AE6",Verbar:"\u2016",Vert:"\u2016",VerticalLine:"\u007C",VerticalSeparator:"\u2758",VeryThinSpace:"\u200A",vArr:"\u21D5",vBar:"\u2AE8",vBarv:"\u2AE9",vDash:"\u22A8",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",varr:"\u2195",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",vcy:"\u0432",vdash:"\u22A2",vee:"\u2228",veeeq:"\u225A",verbar:"\u007C",vert:"\u007C",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",vprop:"\u221D",vrtri:"\u22B3",vsubnE:"\u2ACB\uFE00",vsubne:"\u228A\uFE00",vsupnE:"\u2ACC\uFE00",vsupne:"\u228B\uFE00",vzigzag:"\u299A"});MathJax.Ajax.loadComplete(a.entityDir+"/v.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/w.js b/data/mathjax/jax/input/MathML/entities/w.js
new file mode 100644
index 0000000..3492a6f
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/w.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/w.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2A5F",wedge:"\u2227",wedgeq:"\u2259",wp:"\u2118",wr:"\u2240",wreath:"\u2240"});MathJax.Ajax.loadComplete(a.entityDir+"/w.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/x.js b/data/mathjax/jax/input/MathML/entities/x.js
new file mode 100644
index 0000000..bd1e8b9
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/x.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/x.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",xhArr:"\u27FA",xharr:"\u27F7",xlArr:"\u27F8",xlarr:"\u27F5",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",xoplus:"\u2A01",xotime:"\u2A02",xrArr:"\u27F9",xrarr:"\u27F6",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0"});MathJax.Ajax.loadComplete(a.entityDir+"/x.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/y.js b/data/mathjax/jax/input/MathML/entities/y.js
new file mode 100644
index 0000000..df0d36d
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/y.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/y.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{YAcy:"\u042F",YIcy:"\u0407",YUcy:"\u042E",Yacute:"\u00DD",Ycirc:"\u0176",Ycy:"\u042B",Yuml:"\u0178",yacute:"\u00FD",yacy:"\u044F",ycirc:"\u0177",ycy:"\u044B",yicy:"\u0457",yucy:"\u044E",yuml:"\u00FF"});MathJax.Ajax.loadComplete(a.entityDir+"/y.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/entities/z.js b/data/mathjax/jax/input/MathML/entities/z.js
new file mode 100644
index 0000000..7e44793
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/entities/z.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/entities/z.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(a){MathJax.Hub.Insert(a.Parse.Entity,{ZHcy:"\u0416",Zacute:"\u0179",Zcaron:"\u017D",Zcy:"\u0417",Zdot:"\u017B",ZeroWidthSpace:"\u200B",Zeta:"\u0396",zacute:"\u017A",zcaron:"\u017E",zcy:"\u0437",zdot:"\u017C",zeetrf:"\u2128",zhcy:"\u0436",zwj:"\u200D",zwnj:"\u200C"});MathJax.Ajax.loadComplete(a.entityDir+"/z.js")})(MathJax.InputJax.MathML);
+
diff --git a/data/mathjax/jax/input/MathML/jax.js b/data/mathjax/jax/input/MathML/jax.js
new file mode 100644
index 0000000..afcb274
--- /dev/null
+++ b/data/mathjax/jax/input/MathML/jax.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/input/MathML/jax.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(b,c){var a;b.Parse=MathJax.Object.Subclass({Init:function(d){this.Parse(d)},Parse:function(g){var h;if(typeof g!=="string"){h=g.parentNode}else{if(g.match(/^<[a-z]+:/i)&&!g.match(/^<[^<>]* xmlns:/)){g=g.replace(/^<([a-z]+)(:math)/i,'<$1$2 xmlns:$1="http://www.w3.org/1998/Math/MathML";')}var d=g.match(/^(<math( ('.*?'|".*?"|[^>])+)>)/i);if(d&&d[2].match(/ (?!xmlns=)[a-z]+=\"http:/i)){g=d[1].replace(/ (?!xmlns=)([a-z]+=(['"])http:.*?\2)/ig," xmlns:$1 $1")+g.substr(d[0].length)}g=g.replace(/^\s*(?:\/\/)?<!(--)?\[CDATA\[((.|\n)*)(\/\/)?\]\]\1>\s*$/,"$2");g=g.replace(/&([a-z][a-z0-9]*);/ig,this.replaceEntity);h=b.ParseXML(g);if(h==null){b.Error("Error parsing MathML")}}var f=h.getElementsByTagName("parsererror")[0];if(f){b.Error("Error parsing MathML: "+f.textContent.replace(/This page.*?errors:|XML Parsing Error: |Below is a rendering of the page.*/g,""))}if(h.childNodes.length!==1){b.Error("MathML must be formed by a single element")}if(h.firstChild.nodeName.toLowerCas
 e()==="html"){var e=h.getElementsByTagName("h1")[0];if(e&&e.textContent==="XML parsing error"&&e.nextSibling){b.Error("Error parsing MathML: "+String(e.nextSibling.nodeValue).replace(/fatal parsing error: /,""))}}if(h.firstChild.nodeName.toLowerCase().replace(/^[a-z]+:/,"")!=="math"){b.Error("MathML must be formed by a <math> element, not <"+h.firstChild.nodeName+">")}this.mml=this.MakeMML(h.firstChild)},MakeMML:function(g){var h=String(g.getAttribute("class")||"");var e,f=g.nodeName.toLowerCase().replace(/^[a-z]+:/,"");var d=(h.match(/(^| )MJX-TeXAtom-([^ ]*)/));if(d){e=this.TeXAtom(d[2])}else{if(!(a[f]&&a[f].isa&&a[f].isa(a.mbase))){MathJax.Hub.signal.Post(["MathML Jax - unknown node type",f]);return a.merror("Unknown node type: "+f)}else{e=a[f]()}}this.AddAttributes(e,g);this.CheckClass(e,h);this.AddChildren(e,g);if(b.config.useMathMLspacing){e.useMMLspacing=8}return e},TeXAtom:function(e){var d=a.TeXAtom().With({texClass:a.TEXCLASS[e]});if(d.texClass===a.TEXCLASS.OP){d.m
 ovesupsub=d.movablelimits=true}return d},CheckClass:function(e,g){g=g.split(/ /);var h=[];for(var f=0,d=g.length;f<d;f++){if(g[f].substr(0,4)==="MJX-"){if(g[f]==="MJX-arrow"){e.arrow=true}else{if(g[f]==="MJX-variant"){e.variantForm=true;if(!MathJax.Extension["TeX/AMSsymbols"]){MathJax.Hub.RestartAfter(MathJax.Ajax.Require("[MathJax]/extensions/TeX/AMSsymbols.js"))}}else{if(g[f].substr(0,11)!=="MJX-TeXAtom"){e.mathvariant=g[f].substr(3);if(e.mathvariant==="-tex-caligraphic-bold"||e.mathvariant==="-tex-oldstyle-bold"){if(!MathJax.Extension["TeX/boldsymbol"]){MathJax.Hub.RestartAfter(MathJax.Ajax.Require("[MathJax]/extensions/TeX/boldsymbol.js"))}}}}}}else{h.push(g[f])}}if(h.length){e["class"]=h.join(" ")}else{delete e["class"]}},AddAttributes:function(f,h){f.attr={};f.attrNames=[];for(var g=0,d=h.attributes.length;g<d;g++){var e=h.attributes[g].name;if(e=="xlink:href"){e="href"}if(e.match(/:/)){continue}if(e.match(/^_moz-math-((column|row)(align|line)|font-style)$/)){continue}
 var j=h.attributes[g].value;if(j.toLowerCase()==="true"){j=true}else{if(j.toLowerCase()==="false"){j=false}}if(f.defaults[e]!=null||a.copyAttributes[e]){f[e]=j}else{f.attr[e]=j}f.attrNames.push(e)}},AddChildren:function(f,h){for(var g=0,d=h.childNodes.length;g<d;g++){var k=h.childNodes[g];if(k.nodeName==="#comment"){continue}if(k.nodeName==="#text"){if(f.isToken&&!f.mmlSelfClosing){var j=k.nodeValue.replace(/&([a-z][a-z0-9]*);/ig,this.replaceEntity);f.Append(a.chars(this.trimSpace(j)))}else{if(k.nodeValue.match(/\S/)){b.Error("Unexpected text node: '"+k.nodeValue+"'")}}}else{if(f.type==="annotation-xml"){f.Append(a.xml(k))}else{var e=this.MakeMML(k);f.Append(e);if(e.mmlSelfClosing&&e.data.length){f.Append.apply(f,e.data);e.data=[]}}}}},trimSpace:function(d){return d.replace(/[\t\n\r]/g," ").replace(/^ +/,"").replace(/ +$/,"").replace(/  +/g," ")},replaceEntity:function(f,e){if(e.match(/^(lt|amp|quot)$/)){return f}if(b.Parse.Entity[e]){return b.Parse.Entity[e]}var g=e.charAt(
 0).toLowerCase();var d=e.match(/^[a-zA-Z](fr|scr|opf)$/);if(d){g=d[1]}if(!b.Parse.loaded[g]){b.Parse.loaded[g]=true;MathJax.Hub.RestartAfter(MathJax.Ajax.Require(b.entityDir+"/"+g+".js"))}return f}},{loaded:[]});b.Augment({sourceMenuTitle:"Original MathML",prefilterHooks:MathJax.Callback.Hooks(true),postfilterHooks:MathJax.Callback.Hooks(true),Translate:function(d){if(!this.ParseXML){this.ParseXML=this.createParser()}var e,g,h={script:d};if(d.firstChild&&d.firstChild.nodeName.toLowerCase().replace(/^[a-z]+:/,"")==="math"){h.math=d.firstChild;this.prefilterHooks.Execute(h);g=h.math}else{g=MathJax.HTML.getScript(d);if(c.isMSIE){g=g.replace(/(&nbsp;)+$/,"")}h.math=g;this.prefilterHooks.Execute(h);g=h.math}try{e=b.Parse(g).mml}catch(f){if(!f.mathmlError){throw f}e=this.formatError(f,g,d)}h.math=a(e);this.postfilterHooks.Execute(h);return h.math},prefilterMath:function(e,d){return e},prefilterMathML:function(e,d){return e},formatError:function(g,f,d){var e=g.message.replace(/\n.*
 /,"");MathJax.Hub.signal.Post(["MathML Jax - parse error",e,f,d]);return a.merror(e)},Error:function(d){throw MathJax.Hub.Insert(Error(d),{mathmlError:true})},parseDOM:function(d){return this.parser.parseFromString(d,"text/xml")},parseMS:function(d){return(this.parser.loadXML(d)?this.parser:null)},parseDIV:function(d){this.div.innerHTML=d.replace(/<([a-z]+)([^>]*)\/>/g,"<$1$2></$1>");return this.div},parseError:function(d){return null},createParser:function(){if(window.DOMParser){this.parser=new DOMParser();return(this.parseDOM)}else{if(window.ActiveXObject){var e=["MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument.2.0","Microsoft.XMLDOM"];for(var f=0,d=e.length;f<d&&!this.parser;f++){try{this.parser=new ActiveXObject(e[f])}catch(g){}}if(!this.parser){alert("MathJax can't create an XML parser for MathML.  Check that\nthe 'Script ActiveX controls marked safe for scripting' security\nsetting is enabled (use t
 he Internet Options item in the Tools\nmenu, and select the Security panel, then press the Custom Level\nbutton to check this).\n\nMathML equations will not be able to be processed by MathJax.");return(this.parseError)}this.parser.async=false;return(this.parseMS)}}this.div=MathJax.Hub.Insert(document.createElement("div"),{style:{visibility:"hidden",overflow:"hidden",height:"1px",position:"absolute",top:0}});if(!document.body.firstChild){document.body.appendChild(this.div)}else{document.body.insertBefore(this.div,document.body.firstChild)}return(this.parseDIV)},Startup:function(){a=MathJax.ElementJax.mml;a.mspace.Augment({mmlSelfClosing:true});a.none.Augment({mmlSelfClosing:true});a.mprescripts.Augment({mmlSelfClosing:true})}});b.prefilterHooks.Add(function(d){d.math=(typeof(d.math)==="string"?b.prefilterMath(d.math,d.script):b.prefilterMathML(d.math,d.script))});b.Parse.Entity={ApplyFunction:"\u2061",Backslash:"\u2216",Because:"\u2235",Breve:"\u02D8",Cap:"\u22D2",CenterDot:"
 \u00B7",CircleDot:"\u2299",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",Congruent:"\u2261",ContourIntegral:"\u222E",Coproduct:"\u2210",Cross:"\u2A2F",Cup:"\u22D3",CupCap:"\u224D",Dagger:"\u2021",Del:"\u2207",Delta:"\u0394",Diamond:"\u22C4",DifferentialD:"\u2146",DotEqual:"\u2250",DoubleDot:"\u00A8",DoubleRightTee:"\u22A8",DoubleVerticalBar:"\u2225",DownArrow:"\u2193",DownLeftVector:"\u21BD",DownRightVector:"\u21C1",DownTee:"\u22A4",Downarrow:"\u21D3",Element:"\u2208",EqualTilde:"\u2242",Equilibrium:"\u21CC",Exists:"\u2203",ExponentialE:"\u2147",FilledVerySmallSquare:"\u25AA",ForAll:"\u2200",Gamma:"\u0393",Gg:"\u22D9",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",Hacek:"\u02C7",Hat:"\u005E",HumpDownHump:"\u224E",HumpEqual:"\u224F",Im:"\u2111",ImaginaryI:"\u2148",Integral:"\u222B",Intersection:"\u22C2",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",Lambda:"\u039B
 ",Larr:"\u219E",LeftAngleBracket:"\u27E8",LeftArrow:"\u2190",LeftArrowRightArrow:"\u21C6",LeftCeiling:"\u2308",LeftDownVector:"\u21C3",LeftFloor:"\u230A",LeftRightArrow:"\u2194",LeftTee:"\u22A3",LeftTriangle:"\u22B2",LeftTriangleEqual:"\u22B4",LeftUpVector:"\u21BF",LeftVector:"\u21BC",Leftarrow:"\u21D0",Leftrightarrow:"\u21D4",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",Ll:"\u22D8",Lleftarrow:"\u21DA",LongLeftArrow:"\u27F5",LongLeftRightArrow:"\u27F7",LongRightArrow:"\u27F6",Longleftarrow:"\u27F8",Longleftrightarrow:"\u27FA",Longrightarrow:"\u27F9",Lsh:"\u21B0",MinusPlus:"\u2213",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotLeftTriangle:"\u22EA",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotPrecedes:"\u2280",NotPrecedesSlantEqual:"\u22E0",N
 otRightTriangle:"\u22EB",NotRightTriangleEqual:"\u22ED",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsSlantEqual:"\u22E1",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotVerticalBar:"\u2224",Omega:"\u03A9",OverBar:"\u203E",OverBrace:"\u23DE",PartialD:"\u2202",Phi:"\u03A6",Pi:"\u03A0",PlusMinus:"\u00B1",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",Product:"\u220F",Proportional:"\u221D",Psi:"\u03A8",Rarr:"\u21A0",Re:"\u211C",ReverseEquilibrium:"\u21CB",RightAngleBracket:"\u27E9",RightArrow:"\u2192",RightArrowLeftArrow:"\u21C4",RightCeiling:"\u2309",RightDownVector:"\u21C2",RightFloor:"\u230B",RightTee:"\u22A2",RightTeeArrow:"\u21A6",RightTriangle:"\u22B3",RightTriangleEqual:"\u22B5",RightUpVector:"\u21BE",RightVector:"\u21C0",Rightarrow:"\u21D2",Rrightarrow:"\u21DB",Rsh:"\u21B1",Sigma:"\u03A3",SmallCircle:"\u2218",Sqrt:"\u221A",Square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",Sq
 uareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",Star:"\u22C6",Subset:"\u22D0",SubsetEqual:"\u2286",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",SuchThat:"\u220B",Sum:"\u2211",Superset:"\u2283",SupersetEqual:"\u2287",Supset:"\u22D1",Therefore:"\u2234",Theta:"\u0398",Tilde:"\u223C",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",UnderBar:"\u005F",UnderBrace:"\u23DF",Union:"\u22C3",UnionPlus:"\u228E",UpArrow:"\u2191",UpDownArrow:"\u2195",UpTee:"\u22A5",Uparrow:"\u21D1",Updownarrow:"\u21D5",Upsilon:"\u03A5",Vdash:"\u22A9",Vee:"\u22C1",VerticalBar:"\u2223",VerticalTilde:"\u2240",Vvdash:"\u22AA",Wedge:"\u22C0",Xi:"\u039E",acute:"\u00B4",aleph:"\u2135",alpha:"\u03B1",amalg:"\u2A3F",and:"\u2227",ang:"\u2220",angmsd:"\u2221",angsph:"\u2222",ape:"\u224A",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",beta:"\u03B2",beth:"\u2136",between:"\u226C",bigcirc:"\u25EF",bigodot:"\u2A00",bigoplus:"\u2
 A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",blacklozenge:"\u29EB",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",bowtie:"\u22C8",boxdl:"\u2510",boxdr:"\u250C",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxul:"\u2518",boxur:"\u2514",bsol:"\u005C",bull:"\u2022",cap:"\u2229",check:"\u2713",chi:"\u03C7",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledR:"\u00AE",circledS:"\u24C8",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",clubs:"\u2663",colon:"\u003A",comp:"\u2201",ctdot:"\u22EF",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cup:"\u222A",curarr:"\u21B7",curlyvee:"\u22CE",curlywedge:"\u22CF",dagger:"\u2020",daleth:"\u2138",ddarr:"\u21CA",deg:"\u00B0",delta:"\u03B4",digamma:"\u03DD",div:"\u00F7",divideontimes:"\u22C7",dot:"\u02D9",doteqdot:"\u2251",dotplus:"\u2214",dotsquare:"\u22A1",dtdot:"\u22F1",ecir:"
 \u2256",efDot:"\u2252",egs:"\u2A96",ell:"\u2113",els:"\u2A95",empty:"\u2205",epsi:"\u03B5",epsiv:"\u03F5",erDot:"\u2253",eta:"\u03B7",eth:"\u00F0",flat:"\u266D",fork:"\u22D4",frown:"\u2322",gEl:"\u2A8C",gamma:"\u03B3",gap:"\u2A86",gimel:"\u2137",gnE:"\u2269",gnap:"\u2A8A",gne:"\u2A88",gnsim:"\u22E7",gt:"\u003E",gtdot:"\u22D7",harrw:"\u21AD",hbar:"\u210F",hellip:"\u2026",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",imath:"\u0131",infin:"\u221E",intcal:"\u22BA",iota:"\u03B9",jmath:"\u0237",kappa:"\u03BA",kappav:"\u03F0",lEg:"\u2A8B",lambda:"\u03BB",lap:"\u2A85",larrlp:"\u21AB",larrtl:"\u21A2",lbrace:"\u007B",lbrack:"\u005B",le:"\u2264",leftleftarrows:"\u21C7",leftthreetimes:"\u22CB",lessdot:"\u22D6",lmoust:"\u23B0",lnE:"\u2268",lnap:"\u2A89",lne:"\u2A87",lnsim:"\u22E6",longmapsto:"\u27FC",looparrowright:"\u21AC",lowast:"\u2217",loz:"\u25CA",lt:"\u003C",ltimes:"\u22C9",ltri:"\u25C3",macr:"\u00AF",malt:"\u2720",mho:"\u2127",mu:"\u03BC",multimap:"\u22B8",nLeftarrow:"\u21CD",nLe
 ftrightarrow:"\u21CE",nRightarrow:"\u21CF",nVDash:"\u22AF",nVdash:"\u22AE",natur:"\u266E",nearr:"\u2197",nharr:"\u21AE",nlarr:"\u219A",not:"\u00AC",nrarr:"\u219B",nu:"\u03BD",nvDash:"\u22AD",nvdash:"\u22AC",nwarr:"\u2196",omega:"\u03C9",omicron:"\u03BF",or:"\u2228",osol:"\u2298",period:"\u002E",phi:"\u03C6",phiv:"\u03D5",pi:"\u03C0",piv:"\u03D6",prap:"\u2AB7",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",prime:"\u2032",psi:"\u03C8",rarrtl:"\u21A3",rbrace:"\u007D",rbrack:"\u005D",rho:"\u03C1",rhov:"\u03F1",rightrightarrows:"\u21C9",rightthreetimes:"\u22CC",ring:"\u02DA",rmoust:"\u23B1",rtimes:"\u22CA",rtri:"\u25B9",scap:"\u2AB8",scnE:"\u2AB6",scnap:"\u2ABA",scnsim:"\u22E9",sdot:"\u22C5",searr:"\u2198",sect:"\u00A7",sharp:"\u266F",sigma:"\u03C3",sigmav:"\u03C2",simne:"\u2246",smile:"\u2323",spades:"\u2660",sub:"\u2282",subE:"\u2AC5",subnE:"\u2ACB",subne:"\u228A",supE:"\u2AC6",supnE:"\u2ACC",supne:"\u228B",swarr:"\u2199",tau:"\u03C4",theta:"\u03B8",thetav:"\u03D1",ti
 lde:"\u02DC",times:"\u00D7",triangle:"\u25B5",triangleq:"\u225C",upsi:"\u03C5",upuparrows:"\u21C8",veebar:"\u22BB",vellip:"\u22EE",weierp:"\u2118",xi:"\u03BE",yen:"\u00A5",zeta:"\u03B6",zigrarr:"\u21DD"};b.loadComplete("jax.js")})(MathJax.InputJax.MathML,MathJax.Hub.Browser);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/Makefile.am b/data/mathjax/jax/output/HTML-CSS/Makefile.am
new file mode 100644
index 0000000..10cc1c3
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/Makefile.am
@@ -0,0 +1,7 @@
+SUBDIRS = autoload fonts
+
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS
+
+mj_DATA = config.js jax.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/autoload/Makefile.am b/data/mathjax/jax/output/HTML-CSS/autoload/Makefile.am
new file mode 100644
index 0000000..f8963d0
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/autoload/Makefile.am
@@ -0,0 +1,14 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/autoload
+
+mj_DATA =			\
+	annotation-xml.js	\
+	maction.js		\
+	Makefile.am		\
+	menclose.js		\
+	mglyph.js		\
+	mmultiscripts.js	\
+	ms.js			\
+	mtable.js		\
+	multiline.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/autoload/annotation-xml.js b/data/mathjax/jax/output/HTML-CSS/autoload/annotation-xml.js
new file mode 100644
index 0000000..bd9de61
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/autoload/annotation-xml.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/autoload/annotation-xml.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function(){var c="2.1";var a=MathJax.ElementJax.mml,b=MathJax.OutputJax["HTML-CSS"];a["annotation-xml"].Augment({toHTML:function(f){f=this.HTMLhandleSize(this.HTMLcreateSpan(f));var g=this.Get("encoding");for(var e=0,d=this.data.length;e<d;e++){this.data[e].toHTML(f,g)}this.HTMLhandleSpace(f);this.HTMLhandleColor(f);return f},HTMLgetScale:function(){return this.SUPER(arguments).HTMLgetScale.call(this)/b.scale}});a.xml.Augment({toHTML:function(f,g){for(var e=0,d=this.data.length;e<d;e++){f.appendChild(this.data[e].cloneNode(true))}f.bbox.w=b.getW(f);f.bbox.rw=f.bbox.w;var h=b.getHD(f);f.bbox.h=h.h;f.bbox.d=h.d}});MathJax.Hub.Startup.signal.Post("HTML-CSS annotation-xml Ready");MathJax.Ajax.loadComplete(b.autoloadDir+"/annotation-xml.js")});
+
diff --git a/data/mathjax/jax/output/HTML-CSS/autoload/maction.js b/data/mathjax/jax/output/HTML-CSS/autoload/maction.js
new file mode 100644
index 0000000..d2865ea
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/autoload/maction.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/autoload/maction.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function(){var g="2.1";var c=MathJax.ElementJax.mml,e=MathJax.OutputJax["HTML-CSS"];var d,f,b;var a=e.config.tooltip=MathJax.Hub.Insert({delayPost:600,delayClear:600,offsetX:10,offsetY:5},e.config.tooltip||{});c.maction.Augment({HTMLtooltip:e.addElement(document.body,"div",{id:"MathJax_Tooltip"}),toHTML:function(j,h,l){j=this.HTMLhandleSize(this.HTMLcreateSpan(j));j.bbox=null;var i=this.selected();if(i){var k=i.toHTML(j);if(l!=null){e.Remeasured(i.HTMLstretchV(j,h,l),j)}else{if(h!=null){e.Remeasured(i.HTMLstretchH(j,h),j)}else{e.Measured(k,j)}}this.HTMLhandleHitBox(j)}this.HTMLhandleSpace(j);this.HTMLhandleColor(j);return j},HTMLhandleHitBox:function(i,l){var k;if(e.msieHitBoxBug){var j=e.addElement(i,"span",{isMathJax:true});k=e.createFrame(j,i.bbox.h,i.bbox.d,i.bbox.w,0,"none");i.insertBefore(j,i.firstChild);j.style.marginRight=e.Em(-i.bbox.w);if(e.msieInlineBlockAlignBug){k.style.verticalAlign=e.Em(e.getHD(i).d-i.bbox.
 d)}}else{k=e.createFrame(i,i.bbox.h,i.bbox.d,i.bbox.w,0,"none");i.insertBefore(k,i.firstChild);k.style.marginRight=e.Em(-i.bbox.w)}k.className="MathJax_HitBox";k.id="MathJax-HitBox-"+this.spanID+(l||"")+e.idPostfix;var h=this.Get("actiontype");if(this.HTMLaction[h]){this.HTMLaction[h].call(this,i,k,this.Get("selection"))}},HTMLstretchH:c.mbase.HTMLstretchH,HTMLstretchV:c.mbase.HTMLstretchV,HTMLaction:{toggle:function(i,j,h){this.selection=h;j.onclick=i.childNodes[1].onclick=MathJax.Callback(["HTMLclick",this]);j.style.cursor=i.childNodes[1].style.cursor="pointer"},statusline:function(i,j,h){j.onmouseover=i.childNodes[1].onmouseover=MathJax.Callback(["HTMLsetStatus",this]);j.onmouseout=i.childNodes[1].onmouseout=MathJax.Callback(["HTMLclearStatus",this]);j.onmouseover.autoReset=j.onmouseout.autoReset=true},tooltip:function(i,j,h){if(this.data[1]&&this.data[1].isToken){j.title=j.alt=i.childNodes[1].title=i.childNodes[1].alt=this.data[1].data.join("")}else{j.onmouseover=i.child
 Nodes[1].onmouseover=MathJax.Callback(["HTMLtooltipOver",this]);j.onmouseout=i.childNodes[1].onmouseout=MathJax.Callback(["HTMLtooltipOut",this]);j.onmouseover.autoReset=j.onmouseout.autoReset=true}}},HTMLclick:function(l){this.selection++;if(this.selection>this.data.length){this.selection=1}var k=this;while(k.type!=="math"){k=k.inherit}var h=MathJax.Hub.getJaxFor(k.inputID),j=!!h.hover;h.Update();if(j){var i=document.getElementById(h.inputID+"-Span");MathJax.Extension.MathEvents.Hover.Hover(h,i)}return MathJax.Extension.MathEvents.Event.False(l)},HTMLsetStatus:function(h){this.messageID=MathJax.Message.Set((this.data[1]&&this.data[1].isToken)?this.data[1].data.join(""):this.data[1].toString())},HTMLclearStatus:function(h){if(this.messageID){MathJax.Message.Clear(this.messageID,0)}delete this.messageID},HTMLtooltipOver:function(i){if(!i){i=window.event}if(b){clearTimeout(b);b=null}if(f){clearTimeout(f)}var h=i.pageX;var k=i.pageY;if(h==null){h=i.clientX+document.body.scrollL
 eft+document.documentElement.scrollLeft;k=i.clientY+document.body.scrollTop+document.documentElement.scrollTop}var j=MathJax.Callback(["HTMLtooltipPost",this,h+a.offsetX,k+a.offsetY]);f=setTimeout(j,a.delayPost)},HTMLtooltipOut:function(h){if(f){clearTimeout(f);f=null}if(b){clearTimeout(b)}var i=MathJax.Callback(["HTMLtooltipClear",this,80]);b=setTimeout(i,a.delayClear)},HTMLtooltipPost:function(o,m){f=null;if(b){clearTimeout(b);b=null}var p=this.HTMLtooltip;p.style.display="block";p.style.opacity="";p.style.filter=e.config.styles["#MathJax_Tooltip"].filter;if(this===d){return}p.style.left=o+"px";p.style.top=m+"px";p.innerHTML='<span class="MathJax"><nobr></nobr></span>';var q=p.insertBefore(e.EmExSpan.cloneNode(true),p.firstChild);var l=q.firstChild.offsetHeight/60,h=q.lastChild.firstChild.offsetHeight/60;e.em=e.outerEm=c.mbase.prototype.em=h;var i=Math.floor(Math.max(e.config.minScaleAdjust/100,(l/e.TeX.x_height)/h)*e.config.scale);p.firstChild.style.fontSize=i+"%";q.paren
 tNode.removeChild(q);var n=e.createStack(p.firstChild.firstChild);var k=e.createBox(n);try{e.Measured(this.data[1].toHTML(k),k)}catch(j){if(!j.restart){throw j}p.style.display="none";MathJax.Callback.After(["HTMLtooltipPost",this,o,m],j.restart);return}e.placeBox(k,0,0);e.createRule(p.firstChild.firstChild,k.bbox.h,k.bbox.d,0);d=this},HTMLtooltipClear:function(i){var h=this.HTMLtooltip;if(i<=0){h.style.display="none";h.style.opacity=h.style.filter="";b=null}else{h.style.opacity=i/100;h.style.filter="alpha(opacity="+i+")";b=setTimeout(MathJax.Callback(["HTMLtooltipClear",this,i-20]),50)}}});MathJax.Hub.Browser.Select({MSIE:function(h){e.msieHitBoxBug=true}});MathJax.Hub.Startup.signal.Post("HTML-CSS maction Ready");MathJax.Ajax.loadComplete(e.autoloadDir+"/maction.js")});
+
diff --git a/data/mathjax/jax/output/HTML-CSS/autoload/menclose.js b/data/mathjax/jax/output/HTML-CSS/autoload/menclose.js
new file mode 100644
index 0000000..eebbea9
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/autoload/menclose.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/autoload/menclose.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function(){var d="2.1";var a=MathJax.ElementJax.mml,b=MathJax.OutputJax["HTML-CSS"];var c="http://www.w3.org/2000/svg";var f="urn:schemas-microsoft-com:vml";var e="mjxvml";a.menclose.Augment({toHTML:function(ab){var j=this.getValues("notation","thickness","padding","mathcolor","color");if(j.color&&!this.mathcolor){j.mathcolor=j.color}if(j.thickness==null){j.thickness=".075em"}if(j.padding==null){j.padding=".2em"}var U=this.HTMLgetMu(ab),ae=this.HTMLgetScale();var V=b.length2em(j.padding,U,1/b.em)*ae;var M=b.length2em(j.thickness,U,1/b.em)*ae;var C=b.Em(M)+" solid";ab=this.HTMLcreateSpan(ab);var v=b.createStack(ab);var s=b.createBox(v);this.HTMLmeasureChild(0,s);var J=s.bbox.h+V+M,O=s.bbox.d+V+M,k=s.bbox.w+2*(V+M);var N=b.createFrame(v,J+O,0,k,M,"none");N.id="MathJax-frame-"+this.spanID;b.addBox(v,N);v.insertBefore(N,s);var n=j.notation.split(/ /);var o=0,S=0,q=0,z=0,K=0,I=0;var Q,g;var G,ac,P;if(!j.mathcolor){j.mathcolor=
 "black"}else{ab.style.color=j.mathcolor}for(var aa=0,Y=n.length;aa<Y;aa++){switch(n[aa]){case a.NOTATION.BOX:N.style.border=C;if(!b.msieBorderWidthBug){o=S=z=q=M}break;case a.NOTATION.ROUNDEDBOX:if(b.useVML){if(!g){g=this.HTMLvml(v,J,O,k,M,j.mathcolor)}P=Math.floor(1000*Math.min(k,J+O)-2*M);G=Math.floor(4000*(k-2*M)),ac=Math.floor(4000*(J+O-2*M));this.HTMLvmlElement(g,"shape",{style:{width:this.HTMLpx(k-2*M),height:this.HTMLpx(J+O-2*M),left:this.HTMLpx(M,0.5),top:this.HTMLpx(M,0.5)},path:"m "+P+",0 qx 0,"+P+" l 0,"+(ac-P)+" qy "+P+","+ac+" l "+(G-P)+","+ac+" qx "+G+","+(ac-P)+" l "+G+","+P+" qy "+(G-P)+",0 x e",coordsize:G+","+ac})}else{if(!Q){Q=this.HTMLsvg(v,J,O,k,M,j.mathcolor)}this.HTMLsvgElement(Q.firstChild,"rect",{x:1,y:1,width:this.HTMLpx(k-M)-1,height:this.HTMLpx(J+O-M)-1,rx:this.HTMLpx(Math.min(J+O,k)/4)})}break;case a.NOTATION.CIRCLE:if(b.useVML){if(!g){g=this.HTMLvml(v,J,O,k,M,j.mathcolor)}this.HTMLvmlElement(g,"oval",{style:{width:this.HTMLpx(k-2*M),height:this.
 HTMLpx(J+O-2*M),left:this.HTMLpx(M,0.5),top:this.HTMLpx(M,0.5)}})}else{if(!Q){Q=this.HTMLsvg(v,J,O,k,M,j.mathcolor)}this.HTMLsvgElement(Q.firstChild,"ellipse",{rx:this.HTMLpx(k/2-M),ry:this.HTMLpx((J+O)/2-M),cx:this.HTMLpx(k/2),cy:this.HTMLpx((J+O)/2)})}break;case a.NOTATION.LEFT:N.style.borderLeft=C;if(!b.msieBorderWidthBug){z=M}break;case a.NOTATION.ACTUARIAL:N.style.borderTop=C;if(!b.msieBorderWidthBug){o=M;N.bbox.w+=V-M}case a.NOTATION.RIGHT:N.style.borderRight=C;if(!b.msieBorderWidthBug){q=M}break;case a.NOTATION.VERTICALSTRIKE:var u=b.createRule(v,J+O-M/2,0,M);b.addBox(v,u);b.placeBox(u,V+M+s.bbox.w/2,-O,true);break;case a.NOTATION.TOP:N.style.borderTop=C;if(!b.msieBorderWidthBug){o=M}break;case a.NOTATION.BOTTOM:N.style.borderBottom=C;if(!b.msieBorderWidthBug){S=M}break;case a.NOTATION.HORIZONTALSTRIKE:var X=b.createRule(v,M,0,k-M/2);b.addBox(v,X);b.placeBox(X,0,(J+O)/2-O,true);break;case a.NOTATION.UPDIAGONALSTRIKE:if(b.useVML){if(!g){g=this.HTMLvml(v,J,O,k,M,j.mathc
 olor)}var F=this.HTMLvmlElement(g,"line",{from:"0,"+this.HTMLpx(J+O-M),to:this.HTMLpx(k)+",0"});if(this.arrow){this.HTMLvmlElement(F,"stroke",{endarrow:"classic"});F.to=this.HTMLpx(k)+","+this.HTMLpx(M)}}else{if(!Q){Q=this.HTMLsvg(v,J,O,k,M,j.mathcolor)}if(this.arrow){var Z=Math.sqrt(k*k+(J+O)*(J+O)),ad=1/Z*10*ae/b.em*M/0.075;G=k*ad;ac=(J+O)*ad;var E=k-M/2,A=M/2;if(A+ac-0.4*G<0){A=0.4*G-ac}this.HTMLsvgElement(Q.firstChild,"line",{x1:1,y1:this.HTMLpx(J+O-M),x2:this.HTMLpx(E-0.7*G),y2:this.HTMLpx(A+0.7*ac)});this.HTMLsvgElement(Q.firstChild,"polygon",{points:this.HTMLpx(E)+","+this.HTMLpx(A)+" "+this.HTMLpx(E-G-0.4*ac)+","+this.HTMLpx(A+ac-0.4*G)+" "+this.HTMLpx(E-0.7*G)+","+this.HTMLpx(A+0.7*ac)+" "+this.HTMLpx(E-G+0.4*ac)+","+this.HTMLpx(A+ac+0.4*G)+" "+this.HTMLpx(E)+","+this.HTMLpx(A),fill:j.mathcolor,stroke:"none"})}else{this.HTMLsvgElement(Q.firstChild,"line",{x1:1,y1:this.HTMLpx(J+O-M),x2:this.HTMLpx(k-M),y2:this.HTMLpx(M)})}}break;case a.NOTATION.DOWNDIAGONALSTRIKE:if(
 b.useVML){if(!g){g=this.HTMLvml(v,J,O,k,M,j.mathcolor)}this.HTMLvmlElement(g,"line",{from:"0,0",to:this.HTMLpx(k)+","+this.HTMLpx(J+O-M)})}else{if(!Q){Q=this.HTMLsvg(v,J,O,k,M,j.mathcolor)}this.HTMLsvgElement(Q.firstChild,"line",{x1:1,y1:this.HTMLpx(M),x2:this.HTMLpx(k-M),y2:this.HTMLpx(J+O-M)})}break;case a.NOTATION.MADRUWB:N.style.borderBottom=C;N.style.borderRight=C;if(!b.msieBorderWidthBug){S=q=M}break;case a.NOTATION.RADICAL:if(b.useVML){if(!g){g=this.HTMLvml(v,J,O,k,M,j.mathcolor)}this.HTMLvmlElement(g,"shape",{style:{width:this.HTMLpx(k),height:this.HTMLpx(J+O)},path:"m "+this.HTMLpt(M/2,0.6*(J+O))+" l "+this.HTMLpt(V,J+O-M)+" "+this.HTMLpt(2*V,M/2)+" "+this.HTMLpt(k,M/2)+" e",coordsize:this.HTMLpt(k,J+O)});K=V}else{if(!Q){Q=this.HTMLsvg(v,J,O,k,M,j.mathcolor)}this.HTMLsvgElement(Q.firstChild,"path",{d:"M 1,"+this.HTMLpx(0.6*(J+O))+" L "+this.HTMLpx(V)+","+this.HTMLpx(J+O)+" L "+this.HTMLpx(2*V)+",1 L "+this.HTMLpx(k)+",1"});b.placeBox(Q.parentNode,0,V/2-O,true);K=V;I
 =M}break;case a.NOTATION.LONGDIV:if(b.useVML){if(!g){g=this.HTMLvml(v,J,O,k,M,j.mathcolor)}this.HTMLvmlElement(g,"line",{from:"0,"+this.HTMLpx(M/2),to:this.HTMLpx(k-M)+","+this.HTMLpx(M/2)});this.HTMLvmlElement(g,"arc",{style:{width:this.HTMLpx(2*V),height:this.HTMLpx(J+O-2*M),left:this.HTMLpx(-V),top:this.HTMLpx(M)},startangle:"10",endangle:"170"});K=V}else{if(!Q){Q=this.HTMLsvg(v,J,O,k,M,j.mathcolor)}this.HTMLsvgElement(Q.firstChild,"path",{d:"M "+this.HTMLpx(k)+",1 L 1,1 a"+this.HTMLpx(V)+","+this.HTMLpx((J+O)/2-M)+" 0 0,1 1,"+this.HTMLpx(J+O-2*M)});b.placeBox(Q.parentNode,0,M-O,true);K=V;I=M}break}}N.style.width=b.Em(k-z-q);N.style.height=b.Em(J+O-o-S);b.placeBox(N,0,I-O,true);b.placeBox(s,K+V+M,0);this.HTMLhandleSpace(ab);this.HTMLhandleColor(ab);return ab},HTMLpx:function(g){return(g*b.em)},HTMLpt:function(g,h){return Math.floor(1000*g)+","+Math.floor(1000*h)},HTMLhandleColor:function(h){var i=document.getElementById("MathJax-frame-"+this.spanID);if(i){var g=this.getVa
 lues("mathbackground","background");if(this.style&&h.style.backgroundColor){g.mathbackground=h.style.backgroundColor;h.style.backgroundColor=""}if(g.background&&!this.mathbackground){g.mathbackground=g.background}if(g.mathbackground&&g.mathbackground!==a.COLOR.TRANSPARENT){i.style.backgroundColor=g.mathbackground}}else{this.SUPER(arguments).HTMLhandleColor.call(this,h)}},HTMLsvg:function(h,l,m,g,k,j){var i=document.createElementNS(c,"svg");if(i.style){i.style.width=b.Em(g);i.style.height=b.Em(l+m)}var n=b.createBox(h);n.appendChild(i);b.placeBox(n,0,-m,true);this.HTMLsvgElement(i,"g",{fill:"none",stroke:j,"stroke-width":k*b.em});return i},HTMLsvgElement:function(g,h,i){var j=document.createElementNS(c,h);j.isMathJax=true;if(i){for(var k in i){if(i.hasOwnProperty(k)){j.setAttributeNS(null,k,i[k].toString())}}}g.appendChild(j);return j},HTMLvml:function(i,l,m,h,k,j){var g=b.createFrame(i,l+m,0,h,0,"none");b.addBox(i,g);b.placeBox(g,0,-m,true);this.constructor.VMLcolor=j;this.c
 onstructor.VMLthickness=this.HTMLpx(k);return g},HTMLvmlElement:function(g,h,i){var j=b.addElement(g,e+":"+h,{isMathJax:true});j.style.position="absolute";j.style.left=j.style.top=0;MathJax.Hub.Insert(j,i);if(!i.fillcolor){j.fillcolor="none"}if(!i.strokecolor){j.strokecolor=this.constructor.VMLcolor}if(!i.strokeweight){j.strokeweight=this.constructor.VMLthickness}return j}});MathJax.Hub.Browser.Select({MSIE:function(g){if((document.documentMode||0)<9){a.menclose.Augment({HTMLpx:function(i,h){return(i*b.em+(h||0))+"px"}});b.useVML=true;if(!document.namespaces[e]){if(document.documentMode&&document.documentMode===8){document.namespaces.add(e,f,"#default#VML")}else{document.namespaces.add(e,f);document.createStyleSheet().addRule(e+"\\: *","{behavior: url(#default#VML)}")}}}}});MathJax.Hub.Startup.signal.Post("HTML-CSS menclose Ready");MathJax.Ajax.loadComplete(b.autoloadDir+"/menclose.js")});
+
diff --git a/data/mathjax/jax/output/HTML-CSS/autoload/mglyph.js b/data/mathjax/jax/output/HTML-CSS/autoload/mglyph.js
new file mode 100644
index 0000000..85cb72e
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/autoload/mglyph.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/autoload/mglyph.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function(){var c="2.1";var a=MathJax.ElementJax.mml,b=MathJax.OutputJax["HTML-CSS"];a.mglyph.Augment({toHTML:function(j,f){var i=j,k=this.getValues("src","width","height","valign","alt"),e;j=this.HTMLcreateSpan(j);if(k.src===""){var h=this.Get("index");if(h){f=this.HTMLgetVariant();var d=f.defaultFont;if(d){d.noStyleChar=true;d.testString=String.fromCharCode(h)+"ABCabc";if(b.Font.testFont(d)){this.HTMLhandleVariant(j,f,String.fromCharCode(h))}else{if(k.alt===""){k.alt="Bad font: "+d.family}e=a.merror(k.alt).With({mathsize:"75%"});this.Append(e);e.toHTML(j);this.data.pop();j.bbox=e.HTMLspanElement().bbox}}}}else{if(!this.img){this.img=a.mglyph.GLYPH[k.src]}if(!this.img){this.img=a.mglyph.GLYPH[k.src]={img:new Image(),status:"pending"};var g=this.img.img;g.onload=MathJax.Callback(["HTMLimgLoaded",this]);g.onerror=MathJax.Callback(["HTMLimgError",this]);g.src=k.src;MathJax.Hub.RestartAfter(g.onload)}if(this.img.status!=="OK"
 ){e=a.merror("Bad mglyph: "+k.src).With({mathsize:"75%"});this.Append(e);e.toHTML(j);this.data.pop();j.bbox=e.HTMLspanElement().bbox}else{var l=this.HTMLgetMu(j);g=b.addElement(j,"img",{isMathJax:true,src:k.src,alt:k.alt,title:k.alt});if(k.width){if(String(k.width).match(/^\s*-?\d+\s*$/)){k.width+="px"}g.style.width=b.Em(b.length2em(k.width,l,this.img.img.width/b.em))}if(k.height){if(String(k.height).match(/^\s*-?\d+\s*$/)){k.height+="px"}g.style.height=b.Em(b.length2em(k.height,l,this.img.img.height/b.em))}j.bbox.w=j.bbox.rw=g.offsetWidth/b.em;j.bbox.h=g.offsetHeight/b.em;if(k.valign){if(String(k.valign).match(/^\s*-?\d+\s*$/)){k.valign+="px"}j.bbox.d=-b.length2em(k.valign,l,this.img.img.height/b.em);g.style.verticalAlign=b.Em(-j.bbox.d);j.bbox.h-=j.bbox.d}}}if(!i.bbox){i.bbox={w:j.bbox.w,h:j.bbox.h,d:j.bbox.d,rw:j.bbox.rw,lw:j.bbox.lw}}else{if(j.bbox){i.bbox.w+=j.bbox.w;if(i.bbox.w>i.bbox.rw){i.bbox.rw=i.bbox.w}if(j.bbox.h>i.bbox.h){i.bbox.h=j.bbox.h}if(j.bbox.d>i.bbox.d){
 i.bbox.d=j.bbox.d}}}this.HTMLhandleSpace(j);this.HTMLhandleColor(j);return j},HTMLimgLoaded:function(e,d){if(typeof(e)==="string"){d=e}this.img.status=(d||"OK")},HTMLimgError:function(){this.img.img.onload("error")}},{GLYPH:{}});MathJax.Hub.Startup.signal.Post("HTML-CSS mglyph Ready");MathJax.Ajax.loadComplete(b.autoloadDir+"/mglyph.js")});
+
diff --git a/data/mathjax/jax/output/HTML-CSS/autoload/mmultiscripts.js b/data/mathjax/jax/output/HTML-CSS/autoload/mmultiscripts.js
new file mode 100644
index 0000000..173c2e6
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/autoload/mmultiscripts.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/autoload/mmultiscripts.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function(){var c="2.1";var a=MathJax.ElementJax.mml,b=MathJax.OutputJax["HTML-CSS"];a.mmultiscripts.Augment({toHTML:function(J,H,B){J=this.HTMLcreateSpan(J);var O=this.HTMLgetScale();var l=b.createStack(J),f;var j=b.createBox(l);if(this.data[this.base]){var k=this.data[this.base].toHTML(j);if(B!=null){this.data[this.base].HTMLstretchV(j,H,B)}else{if(H!=null){this.data[this.base].HTMLstretchH(j,H)}}b.Measured(k,j)}else{j.bbox=this.HTMLzeroBBox()}var M=b.TeX.x_height*O,A=b.TeX.scriptspace*O*0.75;var z=this.HTMLgetScripts(l,A);var m=z[0],e=z[1],w=z[2],i=z[3];var g=(this.data[1]||this).HTMLgetScale();var E=b.TeX.sup_drop*g,C=b.TeX.sub_drop*g;var x=j.bbox.h-E,o=j.bbox.d+C,N=0,G;if(j.bbox.ic){N=j.bbox.ic}if(this.data[this.base]&&(this.data[this.base].type==="mi"||this.data[this.base].type==="mo")){if(this.data[this.base].data.join("").length===1&&j.bbox.scale===1&&!this.data[this.base].Get("largeop")){x=o=0}}var I=this.getValue
 s("subscriptshift","superscriptshift"),F=this.HTMLgetMu(J);I.subscriptshift=(I.subscriptshift===""?0:b.length2em(I.subscriptshift,F));I.superscriptshift=(I.superscriptshift===""?0:b.length2em(I.superscriptshift,F));var n=0;if(w){n=w.bbox.w+N}else{if(i){n=i.bbox.w-N}}if(n<0){n=0}b.placeBox(j,n,0);if(!e&&!i){o=Math.max(o,b.TeX.sub1*O,I.subscriptshift);if(m){o=Math.max(o,m.bbox.h-(4/5)*M)}if(w){o=Math.max(o,w.bbox.h-(4/5)*M)}if(m){b.placeBox(m,n+j.bbox.w+A-N,-o)}if(w){b.placeBox(w,0,-o)}}else{if(!m&&!w){f=this.getValues("displaystyle","texprimestyle");G=b.TeX[(f.displaystyle?"sup1":(f.texprimestyle?"sup3":"sup2"))];x=Math.max(x,G*O,I.superscriptshift);if(e){x=Math.max(x,e.bbox.d+(1/4)*M)}if(i){x=Math.max(x,i.bbox.d+(1/4)*M)}if(e){b.placeBox(e,n+j.bbox.w+A,x)}if(i){b.placeBox(i,0,x)}}else{o=Math.max(o,b.TeX.sub2*O);var y=b.TeX.rule_thickness*O;var K=(m||w).bbox.h,L=(e||i).bbox.d;if(w){K=Math.max(K,w.bbox.h)}if(i){L=Math.max(L,i.bbox.d)}if((x-L)-(K-o)<3*y){o=3*y-x+L+K;E=(4/5)*M-(
 x-L);if(E>0){x+=E;o-=E}}x=Math.max(x,I.superscriptshift);o=Math.max(o,I.subscriptshift);if(e){b.placeBox(e,n+j.bbox.w+A,x)}if(i){b.placeBox(i,n+N-i.bbox.w,x)}if(m){b.placeBox(m,n+j.bbox.w+A-N,-o)}if(w){b.placeBox(w,n-w.bbox.w,-o)}}}this.HTMLhandleSpace(J);this.HTMLhandleColor(J);return J},HTMLgetScripts:function(p,q){var o,d,e=[];var n=1,g=this.data.length,f=0;for(var h=0;h<4;h+=2){while(n<g&&this.data[n].type!=="mprescripts"){for(var l=h;l<h+2;l++){if(this.data[n]&&this.data[n].type!=="none"){if(!e[l]){e[l]=b.createBox(p);e[l].bbox=this.HTMLemptyBBox({});if(f){b.createBlank(e[l],f);e[l].bbox.w=e[l].bbox.rw=f}}this.data[n].toHTML(e[l]);this.HTMLcombineBBoxes(this.data[n],e[l].bbox)}n++}d=e[h];o=e[h+1];if(d&&o){if(d.bbox.w<o.bbox.w){b.createBlank(d,o.bbox.w-d.bbox.w);d.bbox.w=o.bbox.w;d.bbox.rw=Math.max(d.bbox.w,d.bbox.rw)}else{if(d.bbox.w>o.bbox.w){b.createBlank(o,d.bbox.w-o.bbox.w);o.bbox.w=d.bbox.w;o.bbox.rw=Math.max(o.bbox.w,o.bbox.rw)}}}if(d){f=d.bbox.w}else{if(o){f=o.bb
 ox.w}}}n++;f=0}for(l=0;l<4;l++){if(e[l]){e[l].bbox.w+=q;e[l].bbox.rw=Math.max(e[l].bbox.w,e[l].bbox.rw);this.HTMLcleanBBox(e[l].bbox)}}return e},HTMLstretchH:a.mbase.HTMLstretchH,HTMLstretchV:a.mbase.HTMLstretchV});MathJax.Hub.Startup.signal.Post("HTML-CSS mmultiscripts Ready");MathJax.Ajax.loadComplete(b.autoloadDir+"/mmultiscripts.js")});
+
diff --git a/data/mathjax/jax/output/HTML-CSS/autoload/ms.js b/data/mathjax/jax/output/HTML-CSS/autoload/ms.js
new file mode 100644
index 0000000..cd7b79c
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/autoload/ms.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/autoload/ms.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function(){var c="2.1";var a=MathJax.ElementJax.mml,b=MathJax.OutputJax["HTML-CSS"];a.ms.Augment({toHTML:function(e){e=this.HTMLhandleSize(this.HTMLcreateSpan(e));var d=this.getValues("lquote","rquote");var g=this.data.join("");var f=[];if(d.lquote.length===1){f.push(this.HTMLquoteRegExp(d.lquote))}if(d.rquote.length===1){f.push(this.HTMLquoteRegExp(d.rquote))}if(f.length){g=g.replace(RegExp("("+f.join("|")+")","g"),"\\$1")}this.HTMLhandleVariant(e,this.HTMLgetVariant(),d.lquote+g+d.rquote);this.HTMLhandleSpace(e);this.HTMLhandleColor(e);return e},HTMLquoteRegExp:function(d){return d.replace(/([.*+?|{}()\[\]\\])/g,"\\$1")}});a.ms.prototype.defaults.mathvariant="monospace";MathJax.Hub.Startup.signal.Post("HTML-CSS ms Ready");MathJax.Ajax.loadComplete(b.autoloadDir+"/ms.js")});
+
diff --git a/data/mathjax/jax/output/HTML-CSS/autoload/mtable.js b/data/mathjax/jax/output/HTML-CSS/autoload/mtable.js
new file mode 100644
index 0000000..2af2c62
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/autoload/mtable.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/autoload/mtable.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function(){var c="2.1";var a=MathJax.ElementJax.mml,b=MathJax.OutputJax["HTML-CSS"];a.mtable.Augment({toHTML:function(r){r=this.HTMLcreateSpan(r);if(this.data.length===0){return r}var G=this.getValues("columnalign","rowalign","columnspacing","rowspacing","columnwidth","equalcolumns","equalrows","columnlines","rowlines","frame","framespacing","align","useHeight","width","side","minlabelspacing");var aF=G.width.match(/%$/);var av=b.createStack(r);var aC=this.HTMLgetScale(),ax=this.HTMLgetMu(r),ay=-1;var ao=[],ar=[],ai=[],au=[],at=[],ad,ac,an=-1,ab,am,V,aB,O,az,aK=[];var aj=b.FONTDATA.baselineskip*aC*G.useHeight,aP,E=b.FONTDATA.lineH*aC,L=b.FONTDATA.lineD*aC;for(ad=0,ab=this.data.length;ad<ab;ad++){aB=this.data[ad];V=(aB.type==="mlabeledtr"?ay:0);au[ad]=[];ao[ad]=ar[ad]=0;for(ac=V,am=aB.data.length+V;ac<am;ac++){if(ai[ac]==null){if(ac>an){an=ac}at[ac]=b.createStack(b.createBox(av));ai[ac]=-b.BIGDIMEN}au[ad][ac]=b.createBox(a
 t[ac]);aK.push(aB.data[ac-V].toHTML(au[ad][ac]))}}b.MeasureSpans(aK);for(ad=0,ab=this.data.length;ad<ab;ad++){aB=this.data[ad];V=(aB.type==="mlabeledtr"?ay:0);for(ac=V,am=aB.data.length+V;ac<am;ac++){O=aB.data[ac-V];if(O.isMultiline){au[ad][ac].style.width="100%"}if(O.isEmbellished()){az=O.CoreMO();var aO=az.Get("minsize",true);if(aO){var aH=az.HTMLspanElement().bbox;if(az.HTMLcanStretch("Vertical")){aP=aH.h+aH.d;if(aP){aO=b.length2em(aO,ax,aP);if(aO*aH.h/aP>ao[ac]){ao[ac]=aO*aH.h/aP}if(aO*aH.d/aP>ar[ac]){ar[ac]=aO*aH.d/aP}}}else{if(az.HTMLcanStretch("Horizontal")){aO=b.length2em(aO,ax,aH.w);if(aO>ai[ac]){ai[ac]=aO}}}}}if(au[ad][ac].bbox.h>ao[ad]){ao[ad]=au[ad][ac].bbox.h}if(au[ad][ac].bbox.d>ar[ad]){ar[ad]=au[ad][ac].bbox.d}if(au[ad][ac].bbox.w>ai[ac]){ai[ac]=au[ad][ac].bbox.w}}}if(ao[0]+ar[0]){ao[0]=Math.max(ao[0],E)}if(ao[au.length-1]+ar[au.length-1]){ar[au.length-1]=Math.max(ar[au.length-1],L)}var aw=G.columnspacing.split(/ /),aM=G.rowspacing.split(/ /),e=G.columnalign.s
 plit(/ /),z=G.rowalign.split(/ /),d=G.columnlines.split(/ /),v=G.rowlines.split(/ /),aI=G.columnwidth.split(/ /),T=[];for(ad=0,ab=aw.length;ad<ab;ad++){aw[ad]=b.length2em(aw[ad],ax)}for(ad=0,ab=aM.length;ad<ab;ad++){aM[ad]=b.length2em(aM[ad],ax)}while(aw.length<an){aw.push(aw[aw.length-1])}while(e.length<=an){e.push(e[e.length-1])}while(d.length<an){d.push(d[d.length-1])}while(aI.length<=an){aI.push(aI[aI.length-1])}while(aM.length<au.length){aM.push(aM[aM.length-1])}while(z.length<=au.length){z.push(z[z.length-1])}while(v.length<au.length){v.push(v[v.length-1])}if(at[ay]){e[ay]=(G.side.substr(0,1)==="l"?"left":"right");aw[ay]=-ai[ay]}for(ad=0,ab=au.length;ad<ab;ad++){aB=this.data[ad];T[ad]=[];if(aB.rowalign){z[ad]=aB.rowalign}if(aB.columnalign){T[ad]=aB.columnalign.split(/ /);while(T[ad].length<=an){T[ad].push(T[ad][T[ad].length-1])}}}if(G.equalrows){var aA=Math.max.apply(Math,ao),U=Math.max.apply(Math,ar);for(ad=0,ab=au.length;ad<ab;ad++){V=((aA+U)-(ao[ad]+ar[ad]))/2;ao[ad
 ]+=V;ar[ad]+=V}}aP=ao[0]+ar[au.length-1];for(ad=0,ab=au.length-1;ad<ab;ad++){aP+=Math.max((ao[ad]+ar[ad]?aj:0),ar[ad]+ao[ad+1]+aM[ad])}var aE=0,aD=0,aR,g=aP;if(G.frame!=="none"||(G.columnlines+G.rowlines).match(/solid|dashed/)){aE=b.length2em(G.framespacing.split(/[, ]+/)[0],ax);aD=b.length2em(G.framespacing.split(/[, ]+/)[1],ax);g=aP+2*aD}var ah,aQ,Z="";if(typeof(G.align)!=="string"){G.align=String(G.align)}if(G.align.match(/(top|bottom|center|baseline|axis)( +(-?\d+))?/)){Z=RegExp.$3;G.align=RegExp.$1}else{G.align=this.defaults.align}if(Z!==""){Z=parseInt(Z);if(Z<0){Z=au.length+1+Z}if(Z<1){Z=1}else{if(Z>au.length){Z=au.length}}ah=0;aQ=-(aP+aD)+ao[0];for(ad=0,ab=Z-1;ad<ab;ad++){var K=Math.max((ao[ad]+ar[ad]?aj:0),ar[ad]+ao[ad+1]+aM[ad]);ah+=K;aQ+=K}}else{ah=({top:-(ao[0]+aD),bottom:aP+aD-ao[0],center:aP/2-ao[0],baseline:aP/2-ao[0],axis:aP/2+b.TeX.axis_height*aC-ao[0]})[G.align];aQ=({top:-(aP+2*aD),bottom:0,center:-(aP/2+aD),baseline:-(aP/2+aD),axis:b.TeX.axis_height*aC-aP/2
 -aD})[G.align]}var aa,ae=0,w=0,I=0,X=0,af=0,al=[],aq=[],Q=1;if(G.equalcolumns&&G.width!=="auto"){if(aF){aa=(100/(an+1)).toFixed(2).replace(/\.?0+$/,"")+"%";for(ad=0,ab=Math.min(an+1,aI.length);ad<ab;ad++){aI[ad]=aa}aa=0;ae=1;af=an+1;for(ad=0,ab=Math.min(an+1,aw.length);ad<ab;ad++){aa+=aw[ad]}}else{aa=b.length2em(G.width,ax);for(ad=0,ab=Math.min(an+1,aw.length);ad<ab;ad++){aa-=aw[ad]}aa/=an+1;for(ad=0,ab=Math.min(an+1,aI.length);ad<ab;ad++){ai[ad]=aa}}}else{for(ad=0,ab=Math.min(an+1,aI.length);ad<ab;ad++){if(aI[ad]==="auto"){w+=ai[ad]}else{if(aI[ad]==="fit"){aq[af]=ad;af++;w+=ai[ad]}else{if(aI[ad].match(/%$/)){al[X]=ad;X++;I+=ai[ad];ae+=b.length2em(aI[ad],ax,1)}else{ai[ad]=b.length2em(aI[ad],ax);w+=ai[ad]}}}}if(aF){aa=0;for(ad=0,ab=Math.min(an,aw.length);ad<ab;ad++){aa+=aw[ad]}if(ae>0.98){Q=0.98/ae;ae=0.98}}else{if(G.width==="auto"){if(ae>0.98){Q=I/(w+I);aa=w+I}else{aa=w/(1-ae)}}else{aa=b.length2em(G.width,ax);for(ad=0,ab=Math.min(an+1,aw.length);ad<ab;ad++){aa-=aw[ad]}}for(a
 d=0,ab=al.length;ad<ab;ad++){ai[al[ad]]=b.length2em(aI[al[ad]],ax,aa*Q);w+=ai[al[ad]]}if(Math.abs(aa-w)>0.01){if(af&&aa>w){aa=(aa-w)/af;for(ad=0,ab=aq.length;ad<ab;ad++){ai[aq[ad]]+=aa}}else{aa=aa/w;for(ac=0;ac<=an;ac++){ai[ac]*=aa}}}if(G.equalcolumns){var N=Math.max.apply(Math,ai);for(ac=0;ac<=an;ac++){ai[ac]=N}}}}var R=ah,o,q,aN;V=(at[ay]?ay:0);for(ac=V;ac<=an;ac++){for(ad=0,ab=au.length;ad<ab;ad++){if(au[ad][ac]){V=(this.data[ad].type==="mlabeledtr"?ay:0);O=this.data[ad].data[ac-V];if(O.HTMLcanStretch("Horizontal")){au[ad][ac].bbox=O.HTMLstretchH(at[ac],ai[ac]).bbox}else{if(O.HTMLcanStretch("Vertical")){az=O.CoreMO();var aG=az.symmetric;az.symmetric=false;au[ad][ac].bbox=O.HTMLstretchV(at[ac],ao[ad],ar[ad]).bbox;au[ad][ac].HH=null;az.symmetric=aG}}aN=O.rowalign||this.data[ad].rowalign||z[ad];o=({top:ao[ad]-au[ad][ac].bbox.h,bottom:au[ad][ac].bbox.d-ar[ad],center:((ao[ad]-ar[ad])-(au[ad][ac].bbox.h-au[ad][ac].bbox.d))/2,baseline:0,axis:0})[aN]||0;aN=(O.columnalign||T[ad][a
 c]||e[ac]);b.alignBox(au[ad][ac],aN,R+o)}if(ad<au.length-1){R-=Math.max((ao[ad]+ar[ad]?aj:0),ar[ad]+ao[ad+1]+aM[ad])}}R=ah}if(aF){var B=b.createBox(av);B.style.left=B.style.top=0;B.style.right=b.Em(aa+2*aE);B.style.display="inline-block";B.style.height="0px";if(b.msieRelativeWidthBug){B=b.createBox(B);B.style.position="relative";B.style.height="1em";B.style.width="100%";B.bbox=av.bbox}var aL=0,aS=aE,k,l;if(af){k=100*(1-ae)/af,l=w/af}else{k=100*(1-ae)/(an+1);l=w/(an+1)}for(ac=0;ac<=an;ac++){b.placeBox(at[ac].parentNode,0,0);at[ac].style.position="relative";at[ac].style.left=b.Em(aS);at[ac].style.width="100%";at[ac].parentNode.parentNode.removeChild(at[ac].parentNode);var ak=b.createBox(B);b.addBox(ak,at[ac]);at[ac]=ak;var h=ak.style;h.display="inline-block";h.left=aL+"%";if(aI[ac].match(/%$/)){var t=parseFloat(aI[ac])*Q;if(af===0){h.width=(k+t)+"%";aL+=k+t;ak=b.createBox(ak);b.addBox(ak,at[ac].firstChild);ak.style.left=0;ak.style.right=b.Em(l);aS-=l}else{h.width=t+"%";aL+=t}}
 else{if(aI[ac]==="fit"||af===0){h.width=k+"%";ak=b.createBox(ak);b.addBox(ak,at[ac].firstChild);ak.style.left=0;ak.style.right=b.Em(l-ai[ac]);aS+=ai[ac]-l;aL+=k}else{h.width=b.Em(ai[ac]);aS+=ai[ac]}}if(b.msieRelativeWidthBug){b.addText(ak.firstChild,b.NBSP);ak.firstChild.style.position="relative"}aS+=aw[ac];if(d[ac]!=="none"&&ac<an&&ac!==ay){q=b.createBox(B);q.style.left=aL+"%";q=b.createRule(q,g,0,1.25/b.em);q.style.position="absolute";q.bbox={h:g,d:0,w:0,rw:1.25/b.em,lw:0};q.parentNode.bbox=av.bbox;b.placeBox(q,aS-aw[ac]/2,aQ,true);q.style.borderStyle=d[ac]}}}else{var S=aE;for(ac=0;ac<=an;ac++){if(!at[ac].bbox.width){b.setStackWidth(at[ac],ai[ac])}if(aI[ac]!=="auto"&&aI[ac]!=="fit"){at[ac].bbox.width=ai[ac];at[ac].bbox.isFixed=true}b.placeBox(at[ac].parentNode,S,0);S+=ai[ac]+aw[ac];if(d[ac]!=="none"&&ac<an&&ac!==ay){q=b.createRule(av,g,0,1.25/b.em);b.addBox(av,q);q.bbox={h:g,d:0,w:0,rw:1.25/b.em,lw:0};b.placeBox(q,S-aw[ac]/2,aQ,true);q.style.borderStyle=d[ac]}}}av.bbox.d=-
 aQ;av.bbox.h=g+aQ;b.setStackWidth(av,av.bbox.w+aE);aR=av.bbox.w;var ag;if(G.frame!=="none"){ag=b.createFrame(av,g,0,aR,1.25/b.em,G.frame);b.addBox(av,ag);b.placeBox(ag,0,aQ,true);if(aF){ag.style.width="100%"}}R=ah;for(ad=0,ab=au.length-1;ad<ab;ad++){o=Math.max(aj,ar[ad]+ao[ad+1]+aM[ad]);if(v[ad]!=="none"){q=b.createRule(av,1.25/b.em,0,aR);b.addBox(av,q);q.bbox={h:1.25/b.em,d:0,w:aR,rw:aR,lw:0};b.placeBox(q,0,R-ar[ad]-(o-ar[ad]-ao[ad+1])/2,true);if(v[ad]==="dashed"||aF){q.style.borderTop=q.style.height+" "+v[ad];q.style.height=0;q.style.width=q.style.borderLeftWidth;q.style.borderLeft="";if(aF){q.style.width="100%"}}}R-=o}if(aF){r.bbox.width=G.width;av.style.width="100%"}if(at[ay]){var ap=this.getValues("indentalignfirst","indentshiftfirst","indentalign","indentshift");if(ap.indentalignfirst!==a.INDENTALIGN.INDENTALIGN){ap.indentalign=ap.indentalignfirst}if(ap.indentalign===a.INDENTALIGN.AUTO){ap.indentalign=this.displayAlign}if(ap.indentshiftfirst!==a.INDENTSHIFT.INDENTSHIFT
 ){ap.indentshift=ap.indentshiftfirst}if(ap.indentshift==="auto"){ap.indentshift=this.displayIndent}var aJ=b.createStack(r,false,"100%");b.addBox(aJ,av);b.alignBox(av,ap.indentalign,0);if(ap.indentshift&&ap.indentalign!==a.INDENTALIGN.CENTER){av.style[ap.indentalign]=b.Em(b.length2em(ap.indentshift,ax))}at[ay].parentNode.parentNode.removeChild(at[ay].parentNode);b.addBox(aJ,at[ay]);b.alignBox(at[ay],e[ay],0);if(b.msieRelativeWidthBug){av.style.top=at[ay].style.top=""}if(aF){av.style.width=G.width;r.bbox.width="100%"}at[ay].style.marginRight=at[ay].style.marginLeft=b.Em(b.length2em(G.minlabelspacing,ax))}if(!aF){this.HTMLhandleSpace(r)}var u=this.HTMLhandleColor(r);if(u&&aF){if(!ag){ag=b.createFrame(av,g,0,aR,0,"none");b.addBox(av,ag);b.placeBox(ag,0,aQ,true);ag.style.width="100%"}ag.style.backgroundColor=u.style.backgroundColor;ag.parentNode.insertBefore(ag,ag.parentNode.firstChild);u.parentNode.removeChild(u)}return r},HTMLhandleSpace:function(d){d.bbox.keepPadding=true;d.bb
 ox.exact=true;if(!this.hasFrame){d.style.paddingLeft=d.style.paddingRight=b.Em(1/6)}this.SUPER(arguments).HTMLhandleSpace.call(this,d)}});a.mtd.Augment({toHTML:function(e,d,g){e=this.HTMLcreateSpan(e);if(this.data[0]){var f=this.data[0].toHTML(e);if(g!=null){f=this.data[0].HTMLstretchV(e,d,g)}else{if(d!=null){f=this.data[0].HTMLstretchH(e,d)}}e.bbox=f.bbox}this.HTMLhandleSpace(e);this.HTMLhandleColor(e);return e},HTMLstretchH:a.mbase.HTMLstretchH,HTMLstretchV:a.mbase.HTMLstretchV});MathJax.Hub.Startup.signal.Post("HTML-CSS mtable Ready");MathJax.Ajax.loadComplete(b.autoloadDir+"/mtable.js")});
+
diff --git a/data/mathjax/jax/output/HTML-CSS/autoload/multiline.js b/data/mathjax/jax/output/HTML-CSS/autoload/multiline.js
new file mode 100644
index 0000000..e0d0fc3
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/autoload/multiline.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/autoload/multiline.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function(){var d="2.1";var a=MathJax.ElementJax.mml,b=MathJax.OutputJax["HTML-CSS"];var e={newline:0,nobreak:1000000,goodbreak:[-200],badbreak:[+200],auto:[0],toobig:800,nestfactor:400,spacefactor:-100,spaceoffset:2,spacelimit:1,fence:500,close:500};var c={linebreakstyle:"after"};a.mbase.Augment({HTMLlinebreakPenalty:e,HTMLmultiline:function(n){var o=this;while(o.inferred||(o.parent&&o.parent.type==="mrow"&&o.parent.data.length===1)){o=o.parent}var l=((o.type==="math"&&o.Get("display")==="block")||o.type==="mtd");o.isMultiline=true;var p=this.getValues("linebreak","linebreakstyle","lineleading","linebreakmultchar","indentalign","indentshift","indentalignfirst","indentshiftfirst","indentalignlast","indentshiftlast");if(p.linebreakstyle===a.LINEBREAKSTYLE.INFIXLINEBREAKSTYLE){p.linebreakstyle=this.Get("infixlinebreakstyle")}p.lineleading=b.length2em(p.lineleading,1,0.5);this.HTMLremoveColor(n);var m=b.createStack(n);var f={
 n:0,Y:0,scale:this.HTMLgetScale(),isTop:l,values:{},VALUES:p},k=this.HTMLgetAlign(f,{}),h=this.HTMLgetShift(f,{},k),g=[],i={index:[],penalty:e.nobreak,w:0,W:h,shift:h,scanW:h,nest:0},j=false;while(this.HTMLbetterBreak(i,f)&&(i.scanW>=b.linebreakWidth||i.penalty==e.newline)){this.HTMLaddLine(m,g,i.index,f,i.values,j);g=i.index.slice(0);j=true;k=this.HTMLgetAlign(f,i.values);h=this.HTMLgetShift(f,i.values,k);if(k===a.INDENTALIGN.CENTER){h=0}i.W=i.shift=i.scanW=h;i.penalty=e.nobreak}f.isLast=true;this.HTMLaddLine(m,g,[],f,c,j);if(l){m.style.width="100%";if(o.type==="math"){n.bbox.width="100%"}}this.HTMLhandleSpace(n);this.HTMLhandleColor(n);n.bbox.isMultiline=true;return n},HTMLbetterBreak:function(h,f){if(this.isToken){return false}if(this.isEmbellished()){h.embellished=this;return this.CoreMO().HTMLbetterBreak(h,f)}if(this.linebreakContainer){return false}var p=h.index.slice(0),n=h.index.shift(),l=this.data.length,k,q,j,o=(h.index.length>0),g=false;if(n==null){n=-1}if(!o){n++
 ;h.W+=h.w;h.w=0}j=h.scanW=h.W;h.nest++;while(n<l&&h.scanW<1.33*b.linebreakWidth){if(this.data[n]){if(this.data[n].HTMLbetterBreak(h,f)){g=true;p=[n].concat(h.index);k=h.W;q=h.w;if(h.penalty===e.newline){h.index=p;h.nest--;return true}}j=(o?h.scanW:this.HTMLaddWidth(n,h,j))}h.index=[];n++;o=false}h.nest--;h.index=p;if(g){h.W=k;h.w=q}return g},HTMLaddWidth:function(f,j,h){if(this.data[f]){var g=this.data[f].HTMLspanElement();h+=g.bbox.w;if(g.style.paddingLeft){h+=b.unEm(g.style.paddingLeft)}if(g.style.paddingRight){h+=b.unEm(g.style.paddingRight)}j.W=j.scanW=h;j.w=0}return h},HTMLaddLine:function(n,g,j,f,o,l){line=b.createBox(n);line.bbox=this.HTMLemptyBBox({});f.first=l;f.last=true;this.HTMLmoveLine(g,j,line,f,o);this.HTMLcleanBBox(line.bbox);var m=this.HTMLgetAlign(f,o),h=this.HTMLgetShift(f,o,m);if(h){b.createBlank(line,h,(m!==a.INDENTALIGN.RIGHT));line.bbox.w+=h;line.bbox.rw+=h}if(f.n>0){var k=b.FONTDATA.baselineskip*f.scale;var i=(f.values.lineleading==null?f.VALUES:f.val
 ues).lineleading;f.Y-=Math.max(k,f.d+line.bbox.h+i)}b.alignBox(line,m,f.Y);f.d=line.bbox.d;f.values=o;f.n++},HTMLgetAlign:function(i,f){var j=f,g=i.values,h=i.VALUES,k;if(i.n===0){k=j.indentalignfirst||g.indentalignfirst||h.indentalignfirst}else{if(i.isLast){k=g.indentalignlast||h.indentalignlast}else{k=g.indentalign||h.indentalign}}if(k===a.INDENTALIGN.INDENTALIGN){k=g.indentalign||h.indentalign}if(k===a.INDENTALIGN.AUTO){k=(i.isTop?this.displayAlign:a.INDENTALIGN.LEFT)}return k},HTMLgetShift:function(j,g,l){if(l===a.INDENTALIGN.CENTER){return 0}var k=g,h=j.values,i=j.VALUES,f;if(j.n===0){f=k.indentshiftfirst||h.indentshiftfirst||i.indentshiftfirst}else{if(j.isLast){f=h.indentshiftlast||i.indentshiftlast}else{f=h.indentshift||i.indentshift}}if(f===a.INDENTSHIFT.INDENTSHIFT){f=h.indentshift||i.indentshift}if(f==="auto"||f===""){f=(j.isTSop?this.displayIndent:"0")}return b.length2em(f,0)},HTMLmoveLine:function(o,f,l,n,g){var k=o[0],h=f[0];if(k==null){k=-1}if(h==null){h=this.d
 ata.length-1}if(k===h&&o.length>1){this.data[k].HTMLmoveSlice(o.slice(1),f.slice(1),l,n,g,"paddingLeft")}else{var m=n.last;n.last=false;while(k<h){if(this.data[k]){if(o.length<=1){this.data[k].HTMLmoveSpan(l,n,g)}else{this.data[k].HTMLmoveSlice(o.slice(1),[],l,n,g,"paddingLeft")}}k++;n.first=false;o=[]}n.last=m;if(this.data[k]){if(f.length<=1){this.data[k].HTMLmoveSpan(l,n,g)}else{this.data[k].HTMLmoveSlice([],f.slice(1),l,n,g,"paddingRight")}}}},HTMLmoveSlice:function(g,j,m,f,o,k){this.HTMLremoveColor();var l=this.HTMLcreateSliceSpan(m);this.HTMLmoveLine(g,j,l,f,o);l.style[k]="";this.HTMLcombineBBoxes(l,m.bbox);this.HTMLcleanBBox(l.bbox);if(j.length===0){m=this.HTMLspanElement();m.parentNode.removeChild(m);m.nextMathJaxSpan.id=m.id;var h=0;while(m=m.nextMathJaxSpan){var i=this.HTMLhandleColor(m);if(i){i.id+="-MathJax-Continue-"+h;h++}}}return l},HTMLcreateSliceSpan:function(g){var j=this.HTMLspanElement(),i=0;var f=j;while(f.nextMathJaxSpan){f=f.nextMathJaxSpan;i++}var h=j.
 cloneNode(false);f.nextMathJaxSpan=h;h.nextMathJaxSpan=null;h.id+="-MathJax-Continue-"+i;h.bbox=this.HTMLemptyBBox({});return g.appendChild(h)},HTMLmoveSpan:function(f,j,h){if(!(j.first||j.last)||(j.first&&j.values.linebreakstyle===a.LINEBREAKSTYLE.BEFORE)||(j.last&&h.linebreakstyle===a.LINEBREAKSTYLE.AFTER)){var g=document.getElementById("MathJax-Color-"+this.spanID+b.idPostfix);if(g){f.appendChild(g)}var i=this.HTMLspanElement();f.appendChild(i);if(j.last){i.style.paddingRight=""}if(j.first||j.nextIsFirst){delete j.nextIsFirst;i.style.paddingLeft="";if(g){this.HTMLremoveColor(i);this.HTMLhandleColor(i)}}this.HTMLcombineBBoxes(this,f.bbox)}else{if(j.first){j.nextIsFirst=true}else{delete j.nextIsFirst}}}});a.mfenced.Augment({HTMLbetterBreak:function(h,f){var t=h.index.slice(0),r=h.index.shift(),o=this.data.length,n,u,l,s=(h.index.length>0),g=false;if(r==null){r=-1}if(!s){r++;h.W+=h.w;h.w=0}l=h.scanW=h.W;h.nest++;if(!this.dataI){this.dataI=[];if(this.data.open){this.dataI.pus
 h("open")}if(o){this.dataI.push(0)}for(var q=1;q<o;q++){if(this.data["sep"+q]){this.dataI.push("sep"+q)}this.dataI.push(q)}if(this.data.close){this.dataI.push("close")}}o=this.dataI.length;while(r<o&&h.scanW<1.33*b.linebreakWidth){var p=this.dataI[r];if(this.data[p]){if(this.data[p].HTMLbetterBreak(h,f)){g=true;t=[r].concat(h.index);n=h.W;u=h.w;if(h.penalty===e.newline){h.index=t;h.nest--;return true}}l=(s?h.scanW:this.HTMLaddWidth(r,h,l))}h.index=[];r++;s=false}h.nest--;h.index=t;if(g){h.W=n;h.w=u}return g},HTMLmoveLine:function(g,l,o,f,q){var n=g[0],m=l[0];if(n==null){n=-1}if(m==null){m=this.dataI.length-1}if(n===m&&g.length>1){this.data[this.dataI[n]].HTMLmoveSlice(g.slice(1),l.slice(1),o,f,q,"paddingLeft")}else{var p=f.last;f.last=false;var h=this.dataI[n];while(n<m){if(this.data[h]){if(g.length<=1){this.data[h].HTMLmoveSpan(o,f,q)}else{this.data[h].HTMLmoveSlice(g.slice(1),[],o,f,q,"paddingLeft")}}n++;h=this.dataI[n];f.first=false;g=[]}f.last=p;if(this.data[h]){if(l.len
 gth<=1){this.data[h].HTMLmoveSpan(o,f,q)}else{this.data[h].HTMLmoveSlice([],l.slice(1),o,f,q,"paddingRight")}}}}});a.msubsup.Augment({HTMLbetterBreak:function(h,f){if(!this.data[this.base]){return false}var n=h.index.slice(0),l=h.index.shift(),k,o,j,m=(h.index.length>0),g=false;if(!m){h.W+=h.w;h.w=0}j=h.scanW=h.W;if(l==null){this.HTMLbaseW=this.data[this.base].HTMLspanElement().bbox.w;this.HTMLdw=this.HTMLspanElement().bbox.w-this.HTMLbaseW}if(this.data[this.base].HTMLbetterBreak(h,f)){g=true;n=[this.base].concat(h.index);k=h.W;o=h.w;if(h.penalty===e.newline){g=m=true}}if(!m){this.HTMLaddWidth(this.base,h,j)}h.scanW+=this.HTMLdw;h.W=h.scanW;h.index=[];if(g){h.W=k;h.w=o;h.index=n}return g},HTMLmoveLine:function(m,g,j,l,h){if(this.data[this.base]){if(m.length>1){this.data[this.base].HTMLmoveSlice(m.slice(1),g.slice(1),j,l,h,"paddingLeft")}else{if(g.length<=1){this.data[this.base].HTMLmoveSpan(j,l,h)}else{this.data[this.base].HTMLmoveSlice([],g.slice(1),j,l,h,"paddingRight")}}}
 if(g.length===0){var i=this.data[this.sup]||this.data[this.sub];if(i){var k=i.HTMLspanElement().parentNode,f=k.parentNode;if(this.data[this.base]){f.removeChild(f.firstChild)}for(k=f.firstChild;k;k=k.nextSibling){k.style.left=b.Em(b.unEm(k.style.left)-this.HTMLbaseW)}f.bbox.w-=this.HTMLbaseW;f.style.width=b.Em(f.bbox.w);this.HTMLcombineBBoxes(f,j.bbox);j.appendChild(f)}}}});a.mo.Augment({HTMLbetterBreak:function(h,f){if(h.values&&h.values.id===this.spanID){return false}var p=this.getValues("linebreak","linebreakstyle","lineleading","linebreakmultchar","indentalign","indentshift","indentalignfirst","indentshiftfirst","indentalignlast","indentshiftlast","texClass","fence");if(p.linebreakstyle===a.LINEBREAKSTYLE.INFIXLINEBREAKSTYLE){p.linebreakstyle=this.Get("infixlinebreakstyle")}if(p.texClass===a.TEXCLASS.OPEN){h.nest++}if(p.texClass===a.TEXCLASS.CLOSE){h.nest--}var i=h.scanW,j=(h.embellished||this);delete h.embellished;var n=j.HTMLspanElement(),o=n.bbox.w;if(n.style.paddingL
 eft){o+=b.unEm(n.style.paddingLeft)}if(p.linebreakstyle===a.LINEBREAKSTYLE.AFTER){i+=o;o=0}if(i-h.shift===0){return false}var k=b.linebreakWidth-i;if(f.n===0&&(p.indentshiftfirst!==f.VALUES.indentshiftfirst||p.indentalignfirst!==f.VALUES.indentalignfirst)){var l=this.HTMLgetAlign(f,p),g=this.HTMLgetShift(f,p,l);k+=(h.shift-g)}var m=Math.floor(k/b.linebreakWidth*1000);if(m<0){m=e.toobig-3*m}if(p.fence){m+=e.fence}if((p.linebreakstyle===a.LINEBREAKSTYLE.AFTER&&p.texClass===a.TEXCLASS.OPEN)||p.texClass===a.TEXCLASS.CLOSE){m+=e.close}m+=h.nest*e.nestfactor;var q=e[p.linebreak||a.LINEBREAK.AUTO];if(!(q instanceof Array)){if(k>=0){m=q*h.nest}}else{m=Math.max(1,m+q[0]*h.nest)}if(m>=h.penalty){return false}h.penalty=m;h.values=p;h.W=i;h.w=o;p.lineleading=b.length2em(p.lineleading,f.VALUES.lineleading);p.id=this.spanID;return true}});a.mspace.Augment({HTMLbetterBreak:function(g,f){if(g.values&&g.values.id===this.spanID){return false}var m=this.getValues("linebreak");var h=g.scanW,k=t
 his.HTMLspanElement(),l=k.bbox.w;if(k.style.paddingLeft){l+=b.unEm(k.style.paddingLeft)}if(h-g.shift===0){return false}var i=b.linebreakWidth-h;var j=Math.floor(i/b.linebreakWidth*1000);if(j<0){j=e.toobig-3*j}j+=g.nest*e.nestfactor;var n=e[m.linebreak||a.LINEBREAK.AUTO];if(m.linebreak===a.LINEBREAK.AUTO&&l>=e.spacelimit){n=[(l+e.spaceoffset)*e.spacefactor]}if(!(n instanceof Array)){if(i>=0){j=n*g.nest}}else{j=Math.max(1,j+n[0]*g.nest)}if(j>=g.penalty){return false}g.penalty=j;g.values=m;g.W=h;g.w=l;m.lineleading=f.VALUES.lineleading;m.linebreakstyle="before";m.id=this.spanID;return true}});MathJax.Hub.Register.StartupHook("TeX mathchoice Ready",function(){a.TeXmathchoice.Augment({HTMLbetterBreak:function(g,f){return this.Core().HTMLbetterBreak(g,f)},HTMLmoveLine:function(j,f,h,i,g){return this.Core().HTMLmoveSlice(j,f,h,i,g)}})});a.maction.Augment({HTMLbetterBreak:function(g,f){return this.Core().HTMLbetterBreak(g,f)},HTMLmoveLine:function(j,f,h,i,g){return this.Core().HTMLm
 oveSlice(j,f,h,i,g)},HTMLmoveSlice:function(g,i,l,f,m,j){var o=document.getElementById("MathJax-HitBox-"+this.spanID+b.idPostfix);if(o){o.parentNode.removeChild(o)}var k=this.SUPER(arguments).HTMLmoveSlice.apply(this,arguments);if(i.length===0){l=this.HTMLspanElement();var h=0;while(l){o=this.HTMLhandleHitBox(l,"-Continue-"+h);l=l.nextMathJaxSpan;h++}}return k}});a.semantics.Augment({HTMLbetterBreak:function(g,f){return(this.data[0]?this.data[0].HTMLbetterBreak(g,f):false)},HTMLmoveLine:function(j,f,h,i,g){return(this.data[0]?this.data[0].HTMLmoveSlice(j,f,h,i,g):null)}});MathJax.Hub.Startup.signal.Post("HTML-CSS multiline Ready");MathJax.Ajax.loadComplete(b.autoloadDir+"/multiline.js")});
+
diff --git a/data/mathjax/jax/output/HTML-CSS/config.js b/data/mathjax/jax/output/HTML-CSS/config.js
new file mode 100644
index 0000000..fec4f65
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/config.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/config.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"]=MathJax.OutputJax({id:"HTML-CSS",version:"2.1",directory:MathJax.OutputJax.directory+"/HTML-CSS",extensionDir:MathJax.OutputJax.extensionDir+"/HTML-CSS",autoloadDir:MathJax.OutputJax.directory+"/HTML-CSS/autoload",fontDir:MathJax.OutputJax.directory+"/HTML-CSS/fonts",webfontDir:MathJax.OutputJax.fontDir+"/HTML-CSS",config:{scale:100,minScaleAdjust:50,availableFonts:["STIX","TeX"],preferredFont:"TeX",webFont:"TeX",imageFont:"TeX",undefinedFamily:"STIXGeneral,'Arial Unicode MS',serif",mtextFontInherit:false,EqnChunk:(MathJax.Hub.Browser.isMobile?10:50),EqnChunkFactor:1.5,EqnChunkDelay:100,linebreaks:{automatic:false,width:"container"},styles:{".MathJax_Display":{"text-align":"center",margin:"1em 0em"},".MathJax .merror":{"background-color":"#FFFF88",color:"#CC0000",border:"1px solid #CC0000",padding:"1px 3px","font-style":"normal","font-size":"90%"},"#MathJax_Tooltip":{"background-color":"InfoBackground",color:"InfoText",border:"1px solid black","
 box-shadow":"2px 2px 5px #AAAAAA","-webkit-box-shadow":"2px 2px 5px #AAAAAA","-moz-box-shadow":"2px 2px 5px #AAAAAA","-khtml-box-shadow":"2px 2px 5px #AAAAAA",filter:"progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')",padding:"3px 4px"}}}});if(MathJax.Hub.Browser.isMSIE&&document.documentMode>=9){delete MathJax.OutputJax["HTML-CSS"].config.styles["#MathJax_Tooltip"].filter}if(!MathJax.Hub.config.delayJaxRegistration){MathJax.OutputJax["HTML-CSS"].Register("jax/mml")}MathJax.Hub.Register.StartupHook("End Config",[function(b,c){var a=b.Insert({minBrowserVersion:{Firefox:3,Opera:9.52,MSIE:6,Chrome:0.3,Safari:2,Konqueror:4},inlineMathDelimiters:["$","$"],displayMathDelimiters:["$$","$$"],multilineDisplay:true,minBrowserTranslate:function(f){var e=b.getJaxFor(f),k=["[Math]"],j;var h=document.createElement("span",{className:"MathJax_Preview"});if(e.inputJax==="TeX"){if(e.root.Get("displaystyle")){j=a.displayMathDelimiters;k=[j[0]+e.origina
 lText+j[1]];if(a.multilineDisplay){k=k[0].split(/\n/)}}else{j=a.inlineMathDelimiters;k=[j[0]+e.originalText.replace(/^\s+/,"").replace(/\s+$/,"")+j[1]]}}for(var g=0,d=k.length;g<d;g++){h.appendChild(document.createTextNode(k[g]));if(g<d-1){h.appendChild(document.createElement("br"))}}f.parentNode.insertBefore(h,f)}},(b.config["HTML-CSS"]||{}));if(b.Browser.version!=="0.0"&&!b.Browser.versionAtLeast(a.minBrowserVersion[b.Browser]||0)){c.Translate=a.minBrowserTranslate;b.Config({showProcessingMessages:false});MathJax.Message.Set("Your browser does not support MathJax",null,4000);b.Startup.signal.Post("MathJax not supported")}},MathJax.Hub,MathJax.OutputJax["HTML-CSS"]]);MathJax.OutputJax["HTML-CSS"].loadComplete("config.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/Makefile.am
new file mode 100644
index 0000000..14ceaa2
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = TeX
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Arrows.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Arrows.js
new file mode 100644
index 0000000..462211d
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Arrows.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Arrows.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{8592:[437,-64,500,64,422],8594:[437,-64,500,58,417],8602:[437,-60,1000,56,942],8603:[437,-60,1000,54,942],8606:[417,-83,1000,56,944],8608:[417,-83,1000,55,943],8610:[417,-83,1111,56,1031],8611:[417,-83,1111,79,1054],8619:[575,41,1000,56,964],8620:[575,41,1000,35,943],8621:[417,-83,1389,57,1331],8622:[437,-60,1000,56,942],8624:[722,0,500,56,444],8625:[722,0,500,55,443],8630:[461,1,1000,17,950],8631:[460,1,1000,46,982],8634:[650,83,778,56,722],8635:[650,83,778,56,721],8638:[694,194,417,188,375],8639:[694,194,417,41,228],8642:[694,194,417,188,375],8643:[694,194,417,41,228],8644:[667,0,1000,55,944],8646:[667,0,1000,55,944],8647:[583,83,1000,55,944],8648:[694,193,833,83,749],8649:[583,83,1000,55,944],8650:[694,194,833,83,749],8651:[514,14,1000,55,944],8652:[514,14,1000,55,944],8653:[534,35,1000,54,942],8654:[534,37,1000,32,965],8655:[534,35,1000,55,943],8666:[611,111,1000,76,944],8667:[611,111,1000,55,92
 3],8669:[417,-83,1000,56,943],8672:[437,-64,1334,64,1251],8674:[437,-64,1334,84,1251]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/Arrows.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BBBold.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BBBold.js
new file mode 100644
index 0000000..7bbb24b
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BBBold.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BBBold.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{32:[0,0,250,0,0],65:[701,1,722,17,703],66:[683,1,667,11,620],67:[702,19,722,39,684],68:[683,1,722,16,688],69:[683,1,667,12,640],70:[683,1,611,12,584],71:[702,19,778,39,749],72:[683,1,778,14,762],73:[683,1,389,20,369],74:[683,77,500,6,478],75:[683,1,778,22,768],76:[683,1,667,12,640],77:[683,1,944,17,926],78:[683,20,722,20,702],79:[701,19,778,34,742],80:[683,1,611,16,597],81:[701,181,778,34,742],82:[683,1,722,16,705],83:[702,12,556,28,528],84:[683,1,667,33,635],85:[683,19,722,16,709],86:[683,20,722,0,719],87:[683,19,1000,5,994],88:[683,1,722,16,705],89:[683,1,722,16,704],90:[683,1,667,29,635],107:[683,1,556,17,534]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/BBBold.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js
new file mode 100644
index 0000000..0ee6297
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{9484:[694,-306,500,55,444],9488:[694,-306,500,55,444],9492:[366,22,500,55,444],9496:[366,22,500,55,444],9585:[694,195,889,0,860],9586:[694,195,889,0,860]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/BoxDrawing.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/CombDiacritMarks.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/CombDiacritMarks.js
new file mode 100644
index 0000000..ff8c8fe
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/CombDiacritMarks.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/CombDiacritMarks.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{770:[845,-561,0,-2347,13],771:[899,-628,0,-2332,-3]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/CombDiacritMarks.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js
new file mode 100644
index 0000000..ebcfb31
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{10003:[706,34,833,84,749],10016:[716,22,833,48,786]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/Dingbats.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/EnclosedAlphanum.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/EnclosedAlphanum.js
new file mode 100644
index 0000000..6089fa9
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/EnclosedAlphanum.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/EnclosedAlphanum.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{9416:[709,175,902,8,894]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/EnclosedAlphanum.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeneralPunctuation.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeneralPunctuation.js
new file mode 100644
index 0000000..d110188
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeneralPunctuation.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeneralPunctuation.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{8245:[560,-43,275,12,244]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/GeneralPunctuation.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeometricShapes.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeometricShapes.js
new file mode 100644
index 0000000..34eff61
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeometricShapes.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeometricShapes.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{9632:[689,0,778,55,722],9633:[689,0,778,55,722],9650:[575,20,722,84,637],9651:[575,20,722,84,637],9654:[539,41,778,83,694],9660:[576,19,722,84,637],9661:[576,19,722,84,637],9664:[539,41,778,83,694],9674:[716,132,667,56,611]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/GeometricShapes.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GreekAndCoptic.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GreekAndCoptic.js
new file mode 100644
index 0000000..e206b37
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GreekAndCoptic.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GreekAndCoptic.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{989:[605,85,778,55,719],1008:[434,6,667,37,734]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/GreekAndCoptic.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Latin1Supplement.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Latin1Supplement.js
new file mode 100644
index 0000000..e2ea7ad
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Latin1Supplement.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Latin1Supplement.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{160:[0,0,250,0,0],165:[683,0,750,11,738],174:[709,175,947,32,915],240:[749,21,556,42,509]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/Latin1Supplement.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LatinExtendedA.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LatinExtendedA.js
new file mode 100644
index 0000000..264867b
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LatinExtendedA.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LatinExtendedA.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{295:[695,13,540,42,562]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/LatinExtendedA.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LetterlikeSymbols.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LetterlikeSymbols.js
new file mode 100644
index 0000000..3b6647e
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LetterlikeSymbols.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LetterlikeSymbols.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{8463:[695,13,540,42,562],8487:[684,22,722,44,675],8498:[695,1,556,55,497],8502:[763,21,667,-22,687],8503:[764,43,444,-22,421],8504:[764,43,667,54,640],8513:[705,23,639,37,577]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/LetterlikeSymbols.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Main.js
new file mode 100644
index 0000000..dc7f1d6
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS={directory:"AMS/Regular",family:"MathJax_AMS",testString:"MATHJAX AMS \u02C6",Ranges:[[0,127,"BBBold"],[128,255,"Latin1Supplement"],[256,383,"LatinExtendedA"],[688,767,"SpacingModLetters"],[768,879,"CombDiacritMarks"],[880,1023,"GreekAndCoptic"],[8192,8303,"GeneralPunctuation"],[8448,8527,"LetterlikeSymbols"],[8592,8703,"Arrows"],[8704,8959,"MathOperators"],[8960,9215,"MiscTechnical"],[9312,9471,"EnclosedAlphanum"],[9472,9599,"BoxDrawing"],[9632,9727,"GeometricShapes"],[9728,9983,"MiscSymbols"],[9984,10175,"Dingbats"],[10624,10751,"MiscMathSymbolsB"],[10752,11007,"SuppMathOperators"],[57344,63743,"PUA"]]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_AMS"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Makefile.am
new file mode 100644
index 0000000..6c4b17a
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Makefile.am
@@ -0,0 +1,25 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular
+
+mj_DATA =			\
+	Arrows.js		\
+	MathOperators.js	\
+	BBBold.js		\
+	Latin1Supplement.js	\
+	Dingbats.js		\
+	SuppMathOperators.js	\
+	Main.js			\
+	GeometricShapes.js	\
+	LetterlikeSymbols.js	\
+	MiscMathSymbolsB.js	\
+	MiscSymbols.js		\
+	EnclosedAlphanum.js	\
+	GeneralPunctuation.js	\
+	BoxDrawing.js		\
+	PUA.js			\
+	LatinExtendedA.js	\
+	MiscTechnical.js	\
+	GreekAndCoptic.js	\
+	SpacingModLetters.js	\
+	CombDiacritMarks.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MathOperators.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MathOperators.js
new file mode 100644
index 0000000..3051927
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MathOperators.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MathOperators.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{8705:[846,21,500,56,444],8708:[860,166,556,55,497],8709:[587,3,778,54,720],8717:[440,1,429,102,456],8722:[270,-230,500,84,417],8724:[766,93,778,57,722],8726:[430,23,778,91,685],8733:[472,-28,778,56,722],8736:[694,0,722,55,666],8737:[714,20,722,55,666],8738:[551,51,722,55,666],8739:[430,23,222,91,131],8740:[750,252,278,-21,297],8741:[431,23,389,55,331],8742:[750,250,500,-20,518],8756:[471,82,667,24,643],8757:[471,82,667,23,643],8764:[365,-132,778,55,719],8765:[367,-133,778,56,722],8769:[467,-32,778,55,719],8770:[463,-34,778,55,720],8774:[652,155,778,54,720],8776:[481,-50,778,55,719],8778:[579,39,778,51,725],8782:[492,-8,778,56,722],8783:[492,-133,778,56,722],8785:[609,108,778,56,722],8786:[601,101,778,15,762],8787:[601,102,778,14,762],8790:[367,-133,778,56,722],8791:[721,-133,778,56,722],8796:[859,-133,778,56,723],8806:[753,175,778,83,694],8807:[753,175,778,83,694],8808:[752,286,778,82,693],8809:[752
 ,286,778,82,693],8812:[750,250,500,74,425],8814:[708,209,778,82,693],8815:[708,209,778,82,693],8816:[801,303,778,82,694],8817:[801,303,778,82,694],8818:[732,228,778,56,722],8819:[732,228,778,56,722],8822:[681,253,778,44,734],8823:[681,253,778,83,694],8828:[580,153,778,83,694],8829:[580,154,778,82,694],8830:[732,228,778,56,722],8831:[732,228,778,56,722],8832:[705,208,778,82,693],8833:[705,208,778,82,693],8840:[801,303,778,83,693],8841:[801,303,778,82,691],8842:[635,241,778,84,693],8843:[635,241,778,82,691],8847:[539,41,778,83,694],8848:[539,41,778,64,714],8858:[582,82,778,57,721],8859:[582,82,778,57,721],8861:[582,82,778,57,721],8862:[689,0,778,55,722],8863:[689,0,778,55,722],8864:[689,0,778,55,722],8865:[689,0,778,55,722],8872:[694,0,611,55,555],8873:[694,0,722,55,666],8874:[694,0,889,55,833],8876:[695,1,611,-55,554],8877:[695,1,611,-55,554],8878:[695,1,722,-55,665],8879:[695,1,722,-55,665],8882:[539,41,778,83,694],8883:[539,41,778,83,694],8884:[636,138,778,83,694],8885:[636
 ,138,778,83,694],8888:[408,-92,1111,55,1055],8890:[431,212,556,57,500],8891:[716,0,611,55,555],8892:[716,0,611,55,555],8901:[189,0,278,55,222],8903:[545,44,778,55,720],8905:[492,-8,778,146,628],8906:[492,-8,778,146,628],8907:[694,22,778,55,722],8908:[694,22,778,55,722],8909:[464,-36,778,56,722],8910:[578,21,760,83,676],8911:[578,22,760,83,676],8912:[540,40,778,84,694],8913:[540,40,778,83,693],8914:[598,22,667,55,611],8915:[598,22,667,55,611],8916:[736,22,667,56,611],8918:[541,41,778,82,693],8919:[541,41,778,82,693],8920:[568,67,1333,56,1277],8921:[568,67,1333,55,1277],8922:[886,386,778,83,674],8923:[886,386,778,83,674],8926:[734,0,778,83,694],8927:[734,0,778,82,694],8928:[801,303,778,82,693],8929:[801,303,778,82,694],8934:[730,359,778,55,719],8935:[730,359,778,55,719],8936:[730,359,778,55,719],8937:[730,359,778,55,719],8938:[706,208,778,82,693],8939:[706,208,778,82,693],8940:[802,303,778,82,693],8941:[801,303,778,82,693]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CS
 S"].fontDir+"/AMS/Regular/MathOperators.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js
new file mode 100644
index 0000000..3f85cb0
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{10731:[716,132,667,56,611]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/MiscMathSymbolsB.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js
new file mode 100644
index 0000000..9ff6328
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{9733:[694,111,944,49,895]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/MiscSymbols.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscTechnical.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscTechnical.js
new file mode 100644
index 0000000..3eab297
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscTechnical.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscTechnical.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{8994:[378,-122,778,55,722],8995:[378,-143,778,55,722]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/MiscTechnical.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js
new file mode 100644
index 0000000..3c97072
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{57350:[430,23,222,-20,240],57351:[431,24,389,-20,407],57352:[605,85,778,55,719],57353:[434,6,667,37,734],57356:[752,284,778,82,693],57357:[752,284,778,82,693],57358:[919,421,778,82,694],57359:[801,303,778,82,694],57360:[801,303,778,82,694],57361:[919,421,778,82,694],57366:[828,330,778,82,694],57367:[752,332,778,82,694],57368:[828,330,778,82,694],57369:[752,333,778,82,693],57370:[634,255,778,84,693],57371:[634,254,778,82,691]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/PUA.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SpacingModLetters.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SpacingModLetters.js
new file mode 100644
index 0000000..b99b0b4
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SpacingModLetters.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SpacingModLetters.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{710:[845,-561,2333,-14,2346],732:[899,-628,2333,1,2330]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/SpacingModLetters.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SuppMathOperators.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SuppMathOperators.js
new file mode 100644
index 0000000..443118f
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SuppMathOperators.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SuppMathOperators.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_AMS,{10846:[813,97,611,55,555],10877:[636,138,778,83,694],10878:[636,138,778,83,694],10885:[762,290,778,55,722],10886:[762,290,778,55,722],10887:[635,241,778,82,693],10888:[635,241,778,82,693],10889:[761,387,778,57,718],10890:[761,387,778,57,718],10891:[1003,463,778,83,694],10892:[1003,463,778,83,694],10901:[636,138,778,83,694],10902:[636,138,778,83,694],10933:[752,286,778,82,693],10934:[752,286,778,82,693],10935:[761,294,778,57,717],10936:[761,294,778,57,717],10937:[761,337,778,57,718],10938:[761,337,778,57,718],10949:[753,215,778,84,694],10950:[753,215,778,83,694],10955:[783,385,778,82,693],10956:[783,385,778,82,693]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/SuppMathOperators.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Main.js
new file mode 100644
index 0000000..bbb7052
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Caligraphic-bold"]={directory:"Caligraphic/Bold",family:"MathJax_Caligraphic",weight:"bold",testString:"MATHJAX CALIGRAPHIC",skew:{65:0.224,66:0.16,67:0.16,68:0.0958,69:0.128,70:0.128,71:0.128,72:0.128,73:0.0319,74:0.192,75:0.0639,76:0.16,77:0.16,78:0.0958,79:0.128,80:0.0958,81:0.128,82:0.0958,83:0.16,84:0.0319,85:0.0958,86:0.0319,87:0.0958,88:0.16,89:0.0958,90:0.16},32:[0,0,250,0,0],48:[460,17,575,46,528],49:[461,0,575,80,494],50:[460,0,575,51,517],51:[461,211,575,48,525],52:[469,194,575,32,542],53:[461,211,575,57,517],54:[660,17,575,48,526],55:[476,211,575,64,558],56:[661,17,575,48,526],57:[461,210,575,48,526],65:[751,49,921,39,989],66:[705,17,748,40,740],67:[703,20,613,20,599],68:[686,0,892,20,885],69:[703,16,607,37,627],70:[686,30,814,17,930],71:[703,113,682,50,671],72:[686,48,987,20,946],73:[686,0,642,-27,746],74:[686,114,779,53,937],75:[703,17,871,40,834],76:[703,17,788,41,751],77:[703,49,1378,38,1353],78:[840,49,93
 7,-24,1105],79:[703,17,906,63,882],80:[686,67,810,20,846],81:[703,146,939,120,905],82:[686,17,990,20,981],83:[703,16,696,25,721],84:[720,69,644,38,947],85:[686,24,715,-10,771],86:[686,77,737,25,774],87:[686,77,1169,25,1206],88:[686,-1,817,56,906],89:[686,164,759,36,797],90:[686,0,818,46,853],160:[0,0,250,0,0]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Caligraphic-bold"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Caligraphic/Bold/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Makefile.am
new file mode 100644
index 0000000..d04d38b
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Makefile.am
@@ -0,0 +1,5 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold
+
+mj_DATA = Main.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Main.js
new file mode 100644
index 0000000..6d46006
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Caligraphic={directory:"Caligraphic/Regular",family:"MathJax_Caligraphic",testString:"MATHJAX CALIGRAPHIC",skew:{65:0.194,66:0.139,67:0.139,68:0.0833,69:0.111,70:0.111,71:0.111,72:0.111,73:0.0278,74:0.167,75:0.0556,76:0.139,77:0.139,78:0.0833,79:0.111,80:0.0833,81:0.111,82:0.0833,83:0.139,84:0.0278,85:0.0833,86:0.0278,87:0.0833,88:0.139,89:0.0833,90:0.139},32:[0,0,250,0,0],48:[452,22,500,39,460],49:[453,0,500,86,426],50:[453,0,500,44,449],51:[452,216,500,42,456],52:[464,194,500,28,471],53:[453,216,500,50,448],54:[665,22,500,42,456],55:[463,216,500,55,485],56:[666,21,500,43,456],57:[453,216,500,42,457],65:[728,50,798,30,819],66:[705,22,657,32,664],67:[705,25,527,12,533],68:[683,0,771,19,766],69:[705,22,528,30,564],70:[683,32,719,18,829],71:[704,119,595,44,599],72:[683,48,845,18,803],73:[683,0,545,-30,642],74:[683,119,678,47,839],75:[705,22,762,32,732],76:[705,22,690,32,656],77:[705,50,1201,28,1137],78:[789,50,820,-27,979],7
 9:[705,22,796,58,777],80:[683,57,696,19,733],81:[705,131,817,114,787],82:[682,22,848,19,837],83:[705,22,606,18,642],84:[717,68,545,34,833],85:[683,28,626,-17,687],86:[683,52,613,25,658],87:[683,53,988,25,1034],88:[683,0,713,52,807],89:[683,143,668,31,714],90:[683,0,725,37,767],160:[0,0,250,0,0]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Caligraphic"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Caligraphic/Regular/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Makefile.am
new file mode 100644
index 0000000..777a617
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Makefile.am
@@ -0,0 +1,5 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular
+
+mj_DATA = Main.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/BasicLatin.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/BasicLatin.js
new file mode 100644
index 0000000..6d6d85f
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/BasicLatin.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/BasicLatin.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Fraktur-bold"],{32:[0,0,250,0,0],33:[689,12,349,107,241],34:[695,-432,254,10,231],38:[696,16,871,44,839],39:[695,-436,250,80,158],40:[737,186,459,134,347],41:[735,187,459,105,326],42:[692,-449,328,40,277],43:[598,82,893,56,837],44:[107,191,328,118,253],45:[275,-236,893,54,833],46:[102,15,328,103,237],47:[721,182,593,41,550],48:[501,12,593,42,533],49:[489,0,593,54,548],50:[491,-2,593,44,563],51:[487,193,593,31,523],52:[495,196,593,13,565],53:[481,190,593,19,518],54:[704,12,593,48,547],55:[479,197,593,54,591],56:[714,5,593,45,542],57:[487,195,593,29,549],58:[457,12,255,57,197],59:[458,190,255,56,211],61:[343,-168,582,22,559],63:[697,14,428,40,422],65:[686,31,847,29,827],66:[684,31,1044,57,965],67:[676,32,723,72,726],68:[683,29,982,31,896],69:[686,29,783,74,728],70:[684,146,722,17,727],71:[687,29,927,74,844],72:[683,126,851,6,752],73:[681,25,655,32,623],74:[680,141,652,-8,616],75:[681,26,789,20,806],76:[68
 3,28,786,30,764],77:[683,32,1239,27,1232],78:[679,30,983,26,973],79:[726,30,976,12,881],80:[688,223,977,33,943],81:[726,83,976,12,918],82:[688,28,978,31,978],83:[685,31,978,82,905],84:[686,30,790,31,802],85:[688,39,851,18,871],86:[685,29,982,25,966],87:[683,30,1235,26,1240],88:[681,35,849,32,835],89:[688,214,984,34,878],90:[677,148,711,-4,624],91:[740,130,257,36,226],93:[738,132,257,14,208],94:[734,-452,590,1,584],97:[472,32,603,80,586],98:[690,32,590,86,504],99:[473,26,464,87,424],100:[632,28,589,-1,511],101:[471,27,472,81,428],102:[687,222,388,35,372],103:[472,208,595,17,541],104:[687,207,615,89,507],105:[686,25,331,3,327],106:[682,203,332,-19,238],107:[682,25,464,34,432],108:[681,24,337,100,312],109:[476,31,921,16,900],110:[473,28,654,5,608],111:[482,34,609,107,515],112:[557,207,604,-1,519],113:[485,211,596,87,515],114:[472,26,460,13,453],115:[479,34,523,-23,481],116:[648,27,393,43,407],117:[472,32,589,9,603],118:[546,27,604,56,507],119:[549,32,918,55,815],120:[471,188,45
 9,8,441],121:[557,221,589,60,512],122:[471,214,461,-7,378]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Fraktur/Bold/BasicLatin.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js
new file mode 100644
index 0000000..a57b61d
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Fraktur-bold"]={directory:"Fraktur/Bold",family:"MathJax_Fraktur",weight:"bold",testString:"MathJax Fraktur",Ranges:[[0,127,"BasicLatin"],[128,57343,"Other"],[58112,58128,"PUA"]]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Fraktur-bold"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Fraktur/Bold/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Makefile.am
new file mode 100644
index 0000000..3f5ffbc
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Makefile.am
@@ -0,0 +1,9 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold
+
+mj_DATA =		\
+	Main.js		\
+	Other.js	\
+	BasicLatin.js	\
+	PUA.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js
new file mode 100644
index 0000000..42bd889
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Fraktur-bold"],{160:[0,0,250,0,0],8216:[708,-411,254,53,187],8217:[692,-394,254,58,193]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Fraktur/Bold/Other.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js
new file mode 100644
index 0000000..8fe10a4
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Fraktur-bold"],{58113:[630,27,587,64,512],58114:[693,212,394,37,408],58115:[681,219,387,36,384],58116:[473,212,593,67,531],58117:[684,27,393,33,387],58120:[679,220,981,32,875],58121:[717,137,727,17,633]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Fraktur/Bold/PUA.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/BasicLatin.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/BasicLatin.js
new file mode 100644
index 0000000..53c3e7e
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/BasicLatin.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/BasicLatin.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Fraktur,{32:[0,0,250,0,0],33:[689,12,296,91,204],34:[695,-432,215,8,196],38:[698,11,738,49,733],39:[695,-436,212,69,134],40:[737,186,389,114,293],41:[735,187,389,89,276],42:[692,-449,278,33,234],43:[598,82,756,47,709],44:[107,191,278,99,213],45:[275,-236,756,46,706],46:[102,15,278,87,200],47:[721,182,502,34,466],48:[492,13,502,42,456],49:[468,2,502,47,460],50:[474,-1,502,60,484],51:[473,182,502,39,429],52:[476,191,502,10,481],53:[458,184,502,47,440],54:[700,13,502,45,471],55:[468,181,502,37,498],56:[705,10,502,40,461],57:[469,182,502,28,466],58:[457,12,216,50,168],59:[458,189,216,47,179],61:[368,-132,756,54,725],63:[693,11,362,46,357],65:[696,26,718,22,708],66:[691,27,884,48,820],67:[685,24,613,59,607],68:[685,27,832,27,745],69:[685,24,663,86,634],70:[686,153,611,11,612],71:[690,26,785,66,710],72:[666,133,720,1,644],73:[686,26,554,30,532],74:[686,139,552,-10,522],75:[680,27,668,17,682],76:[686,26,666,33,
 644],77:[692,27,1050,27,1048],78:[686,25,832,27,825],79:[729,27,827,12,744],80:[692,218,828,28,804],81:[729,69,827,11,782],82:[686,26,828,27,824],83:[692,27,829,66,756],84:[701,27,669,34,676],85:[697,27,646,-25,665],86:[686,26,831,26,825],87:[686,27,1046,32,1054],88:[688,27,719,28,709],89:[686,218,833,27,740],90:[729,139,602,11,532],91:[740,130,278,117,278],93:[738,131,278,-4,160],94:[734,-452,500,0,495],97:[470,35,500,66,497],98:[685,31,513,87,442],99:[466,29,389,72,359],100:[609,33,499,13,428],101:[467,30,401,70,364],102:[681,221,326,30,323],103:[470,209,504,17,455],104:[688,205,521,77,434],105:[673,20,279,14,267],106:[672,208,281,-9,196],107:[689,25,389,24,362],108:[685,20,280,98,276],109:[475,26,767,8,753],110:[475,22,527,20,514],111:[480,28,489,67,412],112:[541,212,500,12,430],113:[479,219,489,60,419],114:[474,21,389,17,387],115:[478,29,443,-18,406],116:[640,20,333,27,348],117:[474,23,517,9,513],118:[530,28,512,55,434],119:[532,28,774,45,688],120:[472,188,389,10,363],12
 1:[528,218,499,45,431],122:[471,214,391,-7,314]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Fraktur/Regular/BasicLatin.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js
new file mode 100644
index 0000000..d0389f0
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Fraktur={directory:"Fraktur/Regular",family:"MathJax_Fraktur",testString:"MathJax Fraktur",Ranges:[[0,127,"BasicLatin"],[128,57343,"Other"],[58112,58128,"PUA"]]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Fraktur"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Fraktur/Regular/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Makefile.am
new file mode 100644
index 0000000..afec886
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Makefile.am
@@ -0,0 +1,9 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular
+
+mj_DATA =		\
+	Main.js		\
+	Other.js	\
+	BasicLatin.js	\
+	PUA.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js
new file mode 100644
index 0000000..1c24b2f
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Fraktur,{160:[0,0,250,0,0],8216:[708,-410,215,45,158],8217:[692,-395,215,49,163]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Fraktur/Regular/Other.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js
new file mode 100644
index 0000000..c16cd36
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Fraktur,{58112:[683,32,497,75,430],58113:[616,30,498,35,432],58114:[680,215,333,29,339],58115:[679,224,329,28,318],58116:[471,214,503,52,449],58117:[686,20,333,26,315],58118:[577,21,334,29,347],58119:[475,22,501,10,514]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Fraktur/Regular/PUA.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js
new file mode 100644
index 0000000..f304784
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Greek-bold"]={directory:"Greek/Bold",family:"MathJax_Greek",weight:"bold",testString:"\u0393 \u03A5 \u039B",32:[0,0,250,0,0],160:[0,0,250,0,0],915:[680,0,692,39,643],916:[698,0,958,56,901],920:[696,10,894,64,829],923:[698,0,806,40,765],926:[675,0,767,48,718],928:[680,0,900,39,860],931:[686,0,831,64,766],933:[697,0,894,64,829],934:[686,0,831,64,766],936:[686,0,894,64,829],937:[696,1,831,51,779]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Greek-bold"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Greek/Bold/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Makefile.am
new file mode 100644
index 0000000..4cf4de7
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Makefile.am
@@ -0,0 +1,5 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Bold
+
+mj_DATA = Main.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Main.js
new file mode 100644
index 0000000..03a9328
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Greek-bold-italic"]={directory:"Greek/BoldItalic",family:"MathJax_Greek",weight:"bold",style:"italic",testString:"\u0393 \u03A5 \u039B",skew:{915:0.0958,916:0.192,920:0.0958,923:0.192,926:0.0958,928:0.0639,931:0.0958,933:0.0639,934:0.0958,936:0.0639,937:0.0958,945:0.0319,946:0.0958,948:0.0639,949:0.0958,950:0.0958,951:0.0639,952:0.0958,953:0.0639,956:0.0319,957:0.0319,958:0.128,959:0.0639,961:0.0958,962:0.0958,964:0.0319,965:0.0319,966:0.0958,967:0.0639,968:0.128,977:0.0958,981:0.0958,1009:0.0958,1013:0.0639},32:[0,0,250,0,0],160:[0,0,250,0,0],915:[680,0,657,43,777],916:[711,0,958,59,904],920:[702,17,867,54,844],923:[711,0,806,44,776],926:[675,0,841,62,867],928:[680,0,982,43,1026],931:[686,0,885,69,902],933:[703,0,671,32,802],934:[686,0,767,29,737],936:[686,0,714,22,790],937:[703,0,879,93,886],945:[452,8,761,39,712],946:[701,194,660,28,637],947:[451,211,590,5,617],948:[725,8,522,39,513],949:[461,17,529,36,481],950:[711,20
 2,508,48,521],951:[452,211,600,24,600],952:[702,8,562,40,554],953:[452,8,412,38,386],954:[452,8,668,45,642],955:[694,13,671,40,652],956:[452,211,708,33,682],957:[452,2,577,38,608],958:[711,201,508,23,490],959:[452,8,585,39,576],960:[444,8,682,23,674],961:[451,211,612,34,603],962:[451,105,424,33,457],963:[444,8,686,35,677],964:[444,13,521,23,610],965:[453,8,631,24,604],966:[452,216,747,53,703],967:[452,201,718,32,685],968:[694,202,758,24,732],969:[453,8,718,24,691],977:[701,8,692,24,656],981:[694,202,712,51,693],982:[444,8,975,23,961],1009:[451,194,612,75,603],1013:[444,7,483,44,450]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Greek-bold-italic"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Greek/BoldItalic/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Makefile.am
new file mode 100644
index 0000000..e288677
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Makefile.am
@@ -0,0 +1,5 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic
+
+mj_DATA = Main.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Main.js
new file mode 100644
index 0000000..107824e
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Greek-italic"]={directory:"Greek/Italic",family:"MathJax_Greek",style:"italic",testString:"\u0393 \u03A5 \u039B",skew:{915:0.0833,916:0.167,920:0.0833,923:0.167,926:0.0833,928:0.0556,931:0.0833,933:0.0556,934:0.0833,936:0.0556,937:0.0833,945:0.0278,946:0.0833,948:0.0556,949:0.0833,950:0.0833,951:0.0556,952:0.0833,953:0.0556,956:0.0278,957:0.0278,958:0.111,959:0.0556,961:0.0833,962:0.0833,964:0.0278,965:0.0278,966:0.0833,967:0.0556,968:0.111,977:0.0833,981:0.0833,1009:0.0833,1013:0.0556},32:[0,0,250,0,0],160:[0,0,250,0,0],915:[680,-1,615,31,721],916:[716,0,833,48,788],920:[704,22,763,50,740],923:[716,0,694,35,670],926:[678,0,742,53,777],928:[681,0,831,31,887],931:[683,0,780,58,806],933:[705,0,583,28,700],934:[683,0,667,24,642],936:[683,0,612,21,692],937:[704,0,772,80,786],945:[442,11,640,34,603],946:[705,194,566,23,573],947:[441,216,518,11,543],948:[717,10,444,36,451],949:[452,22,466,27,428],950:[704,204,438,44,471],951:[4
 42,216,497,21,503],952:[705,10,469,35,462],953:[442,10,354,48,332],954:[442,11,576,49,554],955:[694,12,583,47,556],956:[442,216,603,23,580],957:[442,2,494,45,530],958:[704,205,438,21,443],959:[441,11,485,34,476],960:[431,11,570,19,573],961:[442,216,517,23,510],962:[442,107,363,31,405],963:[431,11,571,31,572],964:[431,13,437,18,517],965:[443,10,540,21,523],966:[442,218,654,50,618],967:[442,204,626,25,600],968:[694,205,651,21,634],969:[443,11,622,15,604],977:[705,11,591,21,563],981:[694,205,596,43,579],982:[431,10,828,19,823],1009:[442,194,517,67,510],1013:[431,11,406,40,382]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Greek-italic"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Greek/Italic/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Makefile.am
new file mode 100644
index 0000000..a43c4a3
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Makefile.am
@@ -0,0 +1,5 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Italic
+
+mj_DATA = Main.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Main.js
new file mode 100644
index 0000000..c1dc935
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Greek={directory:"Greek/Regular",family:"MathJax_Greek",testString:"\u0393 \u03A5 \u039B",32:[0,0,250,0,0],160:[0,0,250,0,0],915:[680,0,625,25,582],916:[716,0,833,46,786],920:[705,22,778,56,722],923:[716,0,694,32,661],926:[677,0,667,42,624],928:[680,0,750,25,724],931:[683,0,722,55,666],933:[705,0,778,55,722],934:[683,0,722,56,665],936:[683,0,778,55,722],937:[704,0,722,44,677]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Greek"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Greek/Regular/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Makefile.am
new file mode 100644
index 0000000..c588e4a
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Makefile.am
@@ -0,0 +1,5 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Greek/Regular
+
+mj_DATA = Main.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Arrows.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Arrows.js
new file mode 100644
index 0000000..3c0849e
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Arrows.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Arrows.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{8592:[518,17,1150,64,1084],8593:[694,193,575,14,561],8594:[518,17,1150,65,1085],8595:[694,194,575,14,561],8596:[518,17,1150,64,1085],8597:[767,267,575,14,561],8598:[724,194,1150,64,1084],8599:[724,193,1150,64,1085],8600:[694,224,1150,65,1085],8601:[694,224,1150,64,1085],8614:[518,17,1150,65,1085],8617:[518,17,1282,64,1218],8618:[518,17,1282,65,1217],8636:[518,-220,1150,64,1084],8637:[281,17,1150,64,1084],8640:[518,-220,1150,65,1085],8641:[281,17,1150,64,1085],8652:[718,17,1150,64,1085],8656:[547,46,1150,64,1085],8657:[694,193,703,30,672],8658:[547,46,1150,64,1084],8659:[694,194,703,30,672],8660:[547,46,1150,47,1102],8661:[767,267,703,30,672]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/Arrows.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiacritMarks.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiacritMarks.js
new file mode 100644
index 0000000..fd2274b
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiacritMarks.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiacritMarks.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{768:[706,-503,0,-461,-237],769:[706,-503,0,-339,-115],770:[694,-520,0,-449,-127],771:[694,-552,0,-479,-97],772:[607,-540,0,-495,-81],774:[694,-500,0,-473,-103],775:[695,-525,0,-373,-203],776:[695,-535,0,-479,-97],778:[702,-536,0,-415,-161],779:[714,-511,0,-442,-82],780:[660,-515,0,-445,-131],824:[711,210,0,-734,-161]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/CombDiacritMarks.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiactForSymbols.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiactForSymbols.js
new file mode 100644
index 0000000..d20aecc
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiactForSymbols.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiactForSymbols.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{8407:[723,-513,0,-542,-33]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/CombDiactForSymbols.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeneralPunctuation.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeneralPunctuation.js
new file mode 100644
index 0000000..41332a2
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeneralPunctuation.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeneralPunctuation.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{8194:[0,0,500,0,0],8195:[0,0,999,0,0],8196:[0,0,333,0,0],8197:[0,0,250,0,0],8198:[0,0,167,0,0],8201:[0,0,167,0,0],8202:[0,0,83,0,0],8211:[300,-249,575,0,574],8212:[300,-249,1150,0,1149],8216:[694,-329,319,58,245],8217:[694,-329,319,74,261],8220:[694,-329,603,110,564],8221:[694,-329,603,38,492],8224:[702,211,511,64,446],8225:[702,202,511,64,446],8230:[171,-1,1295,74,1221],8242:[563,-33,344,35,331]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/GeneralPunctuation.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeometricShapes.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeometricShapes.js
new file mode 100644
index 0000000..5369df8
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeometricShapes.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeometricShapes.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{9651:[711,-1,1022,69,953],9657:[540,39,575,33,542],9661:[500,210,1022,68,953],9667:[539,38,575,33,542],9711:[711,211,1150,65,1084]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/GeometricShapes.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Latin1Supplement.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Latin1Supplement.js
new file mode 100644
index 0000000..8981b1b
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Latin1Supplement.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Latin1Supplement.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{160:[0,0,250,0,0],168:[695,-535,575,96,478],172:[371,-61,767,64,702],175:[607,-540,575,80,494],176:[702,-536,575,160,414],177:[728,35,894,64,829],180:[706,-503,575,236,460],215:[530,28,894,168,726],247:[597,96,894,64,828]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/Latin1Supplement.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js
new file mode 100644
index 0000000..54c7fcd
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{305:[452,8,394,24,367]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/LatinExtendedA.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js
new file mode 100644
index 0000000..ad91ed4
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{567:[451,201,439,-12,420]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/LatinExtendedB.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LetterlikeSymbols.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LetterlikeSymbols.js
new file mode 100644
index 0000000..dd1f669
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LetterlikeSymbols.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LetterlikeSymbols.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{8463:[694,8,668,45,642],8465:[702,8,831,64,798],8467:[702,19,474,-1,446],8472:[461,210,740,72,726],8476:[711,16,831,42,824],8501:[694,0,703,64,638]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/LetterlikeSymbols.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Main.js
new file mode 100644
index 0000000..89ff997
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"]={directory:"Main/Bold",family:"MathJax_Main",weight:"bold",testString:"MathJax Main ^ \u210F \u2223",skew:{305:0.0319,567:0.0958,8463:-0.0319,8467:0.128,8706:0.0958},Ranges:[[160,255,"Latin1Supplement"],[256,383,"LatinExtendedA"],[384,591,"LatinExtendedB"],[688,767,"SpacingModLetters"],[768,879,"CombDiacritMarks"],[8192,8303,"GeneralPunctuation"],[8400,8447,"CombDiactForSymbols"],[8448,8527,"LetterlikeSymbols"],[8592,8703,"Arrows"],[8704,8959,"MathOperators"],[8960,9215,"MiscTechnical"],[9632,9727,"GeometricShapes"],[9728,9983,"MiscSymbols"],[10176,10223,"MiscMathSymbolsA"],[10224,10239,"SupplementalArrowsA"],[10752,11007,"SuppMathOperators"]],32:[0,0,250,0,0],33:[705,-1,350,89,260],34:[694,-329,603,38,492],35:[694,193,958,64,893],36:[750,56,575,64,510],37:[750,56,958,65,893],38:[705,11,894,48,836],39:[694,-329,319,74,261],40:[750,249,447,103,382],41:[750,249,447,64,343],42:[750,-306,575,73,501],43:[633,131,89
 4,64,829],44:[171,194,319,74,258],45:[278,-166,383,13,318],46:[171,-1,319,74,245],47:[750,250,575,63,511],48:[654,10,575,45,529],49:[655,0,575,80,494],50:[654,0,575,57,517],51:[655,11,575,47,526],52:[656,0,575,32,542],53:[655,11,575,57,517],54:[655,11,575,48,526],55:[676,11,575,64,558],56:[654,11,575,48,526],57:[654,11,575,48,526],58:[444,-1,319,74,245],59:[444,194,319,74,248],60:[587,85,894,96,797],61:[393,-109,894,64,829],62:[587,85,894,96,797],63:[700,-1,543,65,478],64:[699,6,894,64,829],65:[698,0,869,40,828],66:[686,0,818,39,752],67:[697,11,831,64,766],68:[686,0,882,39,817],69:[680,0,756,39,723],70:[680,0,724,39,675],71:[697,10,904,64,845],72:[686,0,900,39,860],73:[686,0,436,25,410],74:[686,11,594,8,527],75:[686,0,901,39,852],76:[686,0,692,39,643],77:[686,0,1092,39,1052],78:[686,0,900,39,860],79:[696,10,864,64,798],80:[686,0,786,39,721],81:[696,193,864,64,805],82:[686,11,862,39,858],83:[697,11,639,64,574],84:[675,0,800,41,758],85:[686,11,885,39,845],86:[686,7,869,25,843]
 ,87:[686,7,1189,24,1164],88:[686,0,869,33,835],89:[686,0,869,19,849],90:[686,0,703,64,645],91:[750,250,319,128,293],92:[750,250,575,63,511],93:[750,250,319,25,190],94:[694,-520,575,126,448],95:[-10,61,575,0,574],96:[706,-503,575,114,338],97:[453,6,559,32,558],98:[694,6,639,29,600],99:[453,6,511,39,478],100:[694,6,639,38,609],101:[452,6,527,32,494],102:[700,0,351,40,452],103:[455,201,575,30,558],104:[694,0,639,37,623],105:[695,0,319,40,294],106:[695,200,351,-71,274],107:[694,0,607,29,587],108:[694,0,319,40,301],109:[450,0,958,37,942],110:[450,0,639,37,623],111:[452,5,575,32,542],112:[450,194,639,29,600],113:[450,194,607,38,609],114:[450,0,474,29,442],115:[453,6,454,38,414],116:[635,5,447,21,382],117:[450,6,639,37,623],118:[444,3,607,26,580],119:[444,4,831,25,805],120:[444,0,607,21,586],121:[444,200,607,23,580],122:[444,0,511,32,462],123:[750,250,575,70,504],124:[750,249,319,129,190],125:[750,250,575,70,504],126:[344,-202,575,96,478],915:[680,0,692,39,643],916:[698,0,958,56,90
 1],920:[696,10,894,64,829],923:[698,0,806,40,765],926:[675,0,767,48,718],928:[680,0,900,39,860],931:[686,0,831,63,766],933:[697,0,894,64,829],934:[686,0,831,64,766],936:[686,0,894,64,829],937:[696,0,831,51,779]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Main-bold"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Makefile.am
new file mode 100644
index 0000000..eee3c88
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Makefile.am
@@ -0,0 +1,22 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold
+
+mj_DATA =			\
+	Arrows.js		\
+	MathOperators.js	\
+	SupplementalArrowsA.js	\
+	Latin1Supplement.js	\
+	LatinExtendedB.js	\
+	SuppMathOperators.js	\
+	Main.js			\
+	GeometricShapes.js	\
+	MiscMathSymbolsA.js	\
+	LetterlikeSymbols.js	\
+	MiscSymbols.js		\
+	GeneralPunctuation.js	\
+	CombDiactForSymbols.js	\
+	LatinExtendedA.js	\
+	MiscTechnical.js	\
+	SpacingModLetters.js	\
+	CombDiacritMarks.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MathOperators.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MathOperators.js
new file mode 100644
index 0000000..1f47d9c
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MathOperators.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MathOperators.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{8704:[694,16,639,1,640],8706:[710,17,628,60,657],8707:[694,-1,639,64,574],8709:[767,73,575,46,528],8711:[686,24,958,56,901],8712:[587,86,767,97,670],8713:[711,210,767,97,670],8715:[587,86,767,96,670],8722:[281,-221,894,96,797],8723:[537,227,894,64,829],8725:[750,250,575,63,511],8726:[750,250,575,63,511],8727:[472,-28,575,73,501],8728:[474,-28,575,64,510],8729:[474,-28,575,64,510],8730:[820,180,958,78,988],8733:[451,8,894,65,830],8734:[452,8,1150,65,1084],8736:[714,0,722,55,676],8739:[750,249,319,129,190],8741:[750,248,575,145,430],8743:[604,17,767,64,702],8744:[604,16,767,64,702],8745:[603,16,767,64,702],8746:[604,16,767,64,702],8747:[711,211,569,64,632],8764:[391,-109,894,64,828],8768:[583,82,319,64,254],8771:[502,3,894,64,829],8773:[638,27,1000,64,829],8776:[524,-32,894,64,829],8781:[533,32,894,64,829],8784:[721,-109,894,64,829],8800:[711,210,894,64,829],8801:[505,3,894,64,829],8804:[697,
 199,894,96,797],8805:[697,199,894,96,797],8810:[617,116,1150,64,1085],8811:[618,116,1150,64,1085],8826:[585,86,894,96,797],8827:[586,86,894,96,797],8834:[587,85,894,96,797],8835:[587,86,894,96,796],8838:[697,199,894,96,797],8839:[697,199,894,96,796],8846:[604,16,767,64,702],8849:[697,199,894,96,828],8850:[697,199,894,66,797],8851:[604,-1,767,70,696],8852:[604,-1,767,70,696],8853:[632,132,894,64,828],8854:[632,132,894,64,828],8855:[632,132,894,64,828],8856:[632,132,894,64,828],8857:[632,132,894,64,828],8866:[693,-1,703,65,637],8867:[693,-1,703,64,638],8868:[694,-1,894,64,829],8869:[693,-1,894,65,829],8872:[750,249,974,129,918],8900:[523,21,575,15,560],8901:[336,-166,319,74,245],8902:[502,0,575,24,550],8904:[540,39,1000,33,967],8942:[951,29,319,74,245],8943:[336,-166,1295,74,1221],8945:[871,-101,1323,129,1194]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/MathOperators.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscMathSymbolsA.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscMathSymbolsA.js
new file mode 100644
index 0000000..8ce565b
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscMathSymbolsA.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscMathSymbolsA.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{10216:[750,249,447,127,382],10217:[750,249,447,64,319]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/MiscMathSymbolsA.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js
new file mode 100644
index 0000000..baaecc4
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{9824:[719,129,894,64,829],9825:[711,24,894,65,828],9826:[719,154,894,64,828],9827:[719,129,894,32,861],9837:[750,17,447,64,381],9838:[741,223,447,57,389],9839:[724,224,447,63,382]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/MiscSymbols.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js
new file mode 100644
index 0000000..319a71d
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{8968:[750,248,511,194,493],8969:[750,248,511,17,317],8970:[749,248,511,194,493],8971:[749,248,511,17,317],8994:[405,-108,1150,65,1084],8995:[392,-126,1150,64,1085]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/MiscTechnical.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SpacingModLetters.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SpacingModLetters.js
new file mode 100644
index 0000000..56ecc34
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SpacingModLetters.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SpacingModLetters.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{710:[694,-520,575,126,448],711:[660,-515,575,130,444],713:[607,-540,575,80,494],714:[706,-503,575,236,460],715:[706,-503,575,114,338],728:[694,-500,575,102,472],729:[695,-525,575,202,372],730:[702,-536,575,160,414],732:[694,-552,575,96,478]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/SpacingModLetters.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SuppMathOperators.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SuppMathOperators.js
new file mode 100644
index 0000000..ecb07bc
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SuppMathOperators.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SuppMathOperators.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{10815:[686,0,900,39,860],10927:[696,199,894,96,797],10928:[697,199,894,96,797]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/SuppMathOperators.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SupplementalArrowsA.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SupplementalArrowsA.js
new file mode 100644
index 0000000..c60025d
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SupplementalArrowsA.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SupplementalArrowsA.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-bold"],{10229:[518,17,1805,64,1741],10230:[518,17,1833,96,1773],10231:[518,17,2126,64,2061],10232:[547,46,1868,64,1804],10233:[547,46,1870,64,1804],10234:[547,46,2126,64,2060],10236:[518,17,1833,65,1773]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/SupplementalArrowsA.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/CombDiacritMarks.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/CombDiacritMarks.js
new file mode 100644
index 0000000..c3a19d4
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/CombDiacritMarks.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/CombDiacritMarks.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-italic"],{768:[697,-500,0,-222,-74],769:[697,-500,0,-173,39],770:[694,-527,0,-251,17],771:[668,-558,0,-265,60],772:[589,-544,0,-282,54],774:[694,-515,0,-237,62],775:[669,-548,0,-165,-41],776:[669,-554,0,-251,45],778:[716,-542,0,-199,3],779:[697,-503,0,-248,65],780:[638,-502,0,-236,29]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Italic/CombDiacritMarks.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/GeneralPunctuation.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/GeneralPunctuation.js
new file mode 100644
index 0000000..161ed40
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/GeneralPunctuation.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/GeneralPunctuation.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-italic"],{8211:[285,-248,511,91,554],8212:[285,-248,1022,117,1038],8216:[694,-379,307,197,362],8217:[694,-379,307,213,377],8220:[694,-379,514,243,606],8221:[694,-379,514,176,538]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Italic/GeneralPunctuation.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Latin1Supplement.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Latin1Supplement.js
new file mode 100644
index 0000000..a40e1b5
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Latin1Supplement.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Latin1Supplement.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-italic"],{160:[0,0,250,0,0]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Italic/Latin1Supplement.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/LetterlikeSymbols.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/LetterlikeSymbols.js
new file mode 100644
index 0000000..7793665
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/LetterlikeSymbols.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/LetterlikeSymbols.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-italic"],{8463:[695,13,540,42,562]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Italic/LetterlikeSymbols.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Main.js
new file mode 100644
index 0000000..dc71fa4
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Main-italic"]={directory:"Main/Italic",family:"MathJax_Main",style:"italic",testString:"MathJax Main ^ \u210F \u2223",Ranges:[[160,255,"Latin1Supplement"],[768,879,"CombDiacritMarks"],[8192,8303,"GeneralPunctuation"],[8448,8527,"LetterlikeSymbols"]],32:[0,0,250,0,0],33:[716,0,307,107,380],34:[694,-379,514,176,538],35:[694,194,818,115,828],37:[750,56,818,145,847],38:[716,22,767,127,802],39:[694,-379,307,213,377],40:[750,250,409,144,517],41:[750,250,409,17,390],42:[750,-320,511,195,584],43:[557,57,767,139,753],44:[121,194,307,69,232],45:[251,-180,358,84,341],46:[121,0,307,107,231],47:[750,250,511,19,617],48:[665,21,511,110,562],49:[666,0,511,110,468],50:[666,22,511,76,551],51:[666,22,511,96,562],52:[666,194,511,46,478],53:[666,22,511,106,567],54:[665,22,511,120,565],55:[666,22,511,136,634],56:[666,21,511,99,553],57:[666,22,511,107,553],58:[431,0,307,107,308],59:[431,194,307,70,308],61:[367,-133,767,116,776],63:[716,0,511,19
 5,551],64:[705,11,767,152,789],65:[716,0,743,58,696],66:[683,0,704,57,732],67:[705,21,716,150,812],68:[683,0,755,56,775],69:[680,0,678,54,743],70:[680,-1,653,54,731],71:[705,22,774,150,812],72:[683,0,743,54,860],73:[683,0,386,49,508],74:[683,21,525,78,622],75:[683,0,769,54,859],76:[683,0,627,54,628],77:[683,0,897,58,1010],78:[683,0,743,54,860],79:[704,22,767,149,788],80:[683,0,678,55,729],81:[704,194,767,149,788],82:[683,22,729,55,723],83:[705,22,562,74,633],84:[677,0,716,171,806],85:[683,22,743,194,860],86:[683,22,743,205,868],87:[683,22,999,205,1124],88:[683,0,743,50,825],89:[683,0,743,198,875],90:[683,0,613,80,704],91:[750,250,307,73,446],93:[750,250,307,-14,359],94:[694,-527,511,260,528],95:[-25,62,511,91,554],97:[442,11,511,101,543],98:[694,11,460,108,467],99:[441,10,460,103,469],100:[694,11,511,101,567],101:[442,10,460,107,470],102:[705,204,307,-23,450],103:[442,205,460,46,494],104:[694,11,511,69,544],105:[656,10,307,75,340],106:[656,204,307,-32,364],107:[694,11,460,69
 ,498],108:[694,11,256,87,312],109:[442,11,818,75,851],110:[442,11,562,75,595],111:[442,11,511,103,517],112:[442,194,511,6,518],113:[442,194,460,101,504],114:[442,11,422,75,484],115:[442,11,409,76,418],116:[626,11,332,87,373],117:[441,11,537,75,570],118:[443,10,460,75,492],119:[443,11,664,75,696],120:[442,11,464,58,513],121:[441,205,486,75,522],122:[442,11,409,54,466],126:[318,-208,511,246,571],163:[714,11,769,88,699],305:[441,10,307,75,340],567:[442,204,332,-32,327],915:[680,0,627,54,705],916:[716,0,818,70,751],920:[704,22,767,149,788],923:[716,0,692,58,646],926:[677,0,664,74,754],928:[680,0,743,54,859],931:[683,0,716,80,782],933:[705,0,767,213,832],934:[683,0,716,159,728],936:[683,0,767,207,824],937:[705,0,716,100,759]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Main-italic"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Italic/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Makefile.am
new file mode 100644
index 0000000..fb7eb89
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Makefile.am
@@ -0,0 +1,10 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Italic
+
+mj_DATA =			\
+	Latin1Supplement.js	\
+	Main.js			\
+	LetterlikeSymbols.js	\
+	GeneralPunctuation.js	\
+	CombDiacritMarks.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/CombDiacritMarks.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/CombDiacritMarks.js
new file mode 100644
index 0000000..1785ca9
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/CombDiacritMarks.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/CombDiacritMarks.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Main,{768:[699,-505,0,-394,-205],769:[699,-505,0,-297,-107],770:[694,-531,0,-388,-113],771:[668,-565,0,-417,-84],772:[590,-544,0,-431,-70],774:[694,-515,0,-408,-93],775:[669,-549,0,-310,-191],776:[669,-554,0,-405,-96],778:[715,-542,0,-353,-148],779:[701,-510,0,-378,-80],780:[644,-513,0,-386,-115],824:[716,215,0,-639,-140]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Regular/CombDiacritMarks.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/GeometricShapes.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/GeometricShapes.js
new file mode 100644
index 0000000..dbbaa3e
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/GeometricShapes.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/GeometricShapes.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Main,{9651:[716,0,889,59,828],9657:[505,5,500,26,474],9661:[500,215,889,59,828],9667:[505,5,500,26,473],9711:[715,215,1000,56,944]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Regular/GeometricShapes.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/Main.js
new file mode 100644
index 0000000..67b4709
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Main={directory:"Main/Regular",family:"MathJax_Main",testString:"MathJax Main ^ \u210F \u2223",skew:{305:0.0278,567:0.0833,8467:0.111,8472:0.111,8706:0.0833},Ranges:[[688,767,"SpacingModLetters"],[768,879,"CombDiacritMarks"],[9632,9727,"GeometricShapes"],[9728,9983,"MiscSymbols"]],32:[0,0,250,0,0],33:[716,-1,278,78,199],34:[694,-379,500,34,372],35:[694,194,833,56,777],36:[750,56,500,55,444],37:[750,56,833,56,776],38:[716,22,778,42,727],39:[694,-379,278,78,212],40:[750,250,389,94,333],41:[750,250,389,55,294],42:[750,-320,500,64,435],43:[583,82,778,56,722],44:[121,194,278,78,210],45:[252,-179,333,11,277],46:[120,0,278,78,199],47:[750,250,500,56,445],48:[666,22,500,39,460],49:[666,0,500,83,427],50:[666,0,500,50,449],51:[665,22,500,42,457],52:[677,0,500,28,471],53:[666,22,500,50,449],54:[666,22,500,42,456],55:[676,22,500,55,485],56:[666,22,500,43,457],57:[666,22,500,42,456],58:[430,0,278,78,199],59:[430,194,278,78,202],60:[540
 ,40,778,83,694],61:[367,-133,778,56,722],62:[540,40,778,83,694],63:[705,-1,472,55,416],64:[705,11,778,56,722],65:[716,0,750,32,717],66:[683,0,708,28,651],67:[705,21,722,56,666],68:[683,0,764,27,708],69:[680,0,681,25,652],70:[680,0,653,25,610],71:[705,22,785,56,735],72:[683,0,750,25,724],73:[683,0,361,21,339],74:[683,22,514,25,465],75:[683,0,778,25,736],76:[683,0,625,25,582],77:[683,0,917,29,887],78:[683,0,750,25,724],79:[705,22,778,56,722],80:[683,0,681,27,624],81:[705,193,778,56,728],82:[683,22,736,27,732],83:[705,22,556,55,500],84:[677,0,722,36,685],85:[683,22,750,25,724],86:[683,22,750,19,730],87:[683,22,1028,18,1009],88:[683,0,750,23,726],89:[683,0,750,11,738],90:[683,0,611,55,560],91:[750,250,278,118,255],92:[750,250,500,56,444],93:[750,250,278,22,159],94:[694,-531,500,112,387],95:[-25,62,500,0,499],96:[699,-505,500,106,295],97:[448,11,500,34,493],98:[694,11,556,20,522],99:[448,11,444,34,415],100:[694,11,556,34,535],101:[448,11,444,28,415],102:[705,0,306,26,372],103:[45
 3,206,500,29,485],104:[694,0,556,25,542],105:[669,0,278,26,255],106:[669,205,306,-55,218],107:[694,0,528,20,511],108:[694,0,278,26,263],109:[442,0,833,25,819],110:[442,0,556,25,542],111:[448,10,500,28,471],112:[442,194,556,20,522],113:[442,194,528,33,535],114:[442,0,392,20,364],115:[448,11,394,33,359],116:[615,10,389,18,333],117:[442,11,556,25,542],118:[431,11,528,19,508],119:[431,11,722,18,703],120:[431,0,528,11,516],121:[431,204,528,19,508],122:[431,0,444,28,401],123:[750,250,500,65,434],124:[750,249,278,119,159],125:[750,250,500,65,434],126:[318,-215,500,83,416],160:[0,0,250,0,0],168:[669,-554,500,95,404],172:[356,-89,667,56,611],175:[590,-544,500,69,430],176:[715,-542,500,147,352],177:[666,0,778,56,722],180:[699,-505,500,203,393],215:[491,-9,778,147,630],247:[537,36,778,56,721],305:[442,0,278,26,255],567:[442,205,306,-55,218],710:[694,-531,500,112,387],711:[644,-513,500,114,385],713:[590,-544,500,69,430],714:[699,-505,500,203,393],715:[699,-505,500,106,295],728:[694,-515
 ,500,92,407],729:[669,-549,500,190,309],732:[668,-565,500,83,416],915:[680,0,625,25,582],916:[716,0,833,46,786],920:[705,22,778,56,722],923:[716,0,694,32,661],926:[677,0,667,42,624],928:[680,0,750,25,724],931:[683,0,722,55,666],933:[705,0,778,55,722],934:[683,0,722,56,665],936:[683,0,778,55,722],937:[704,0,722,44,677],8194:[0,0,500,0,0],8195:[0,0,999,0,0],8196:[0,0,333,0,0],8197:[0,0,250,0,0],8198:[0,0,167,0,0],8201:[0,0,167,0,0],8202:[0,0,83,0,0],8211:[285,-248,500,0,499],8212:[285,-248,1000,0,999],8216:[694,-379,278,64,198],8217:[694,-379,278,78,212],8220:[694,-379,500,128,466],8221:[694,-379,500,34,372],8224:[705,216,444,55,389],8225:[705,205,444,55,389],8230:[120,0,1172,78,1093],8242:[560,-43,275,30,262],8407:[714,-516,0,-471,-29],8463:[695,13,540,42,562],8465:[705,10,722,55,693],8467:[705,20,417,6,397],8472:[453,216,636,67,625],8476:[716,22,722,40,715],8501:[694,0,611,55,555],8592:[511,11,1000,55,944],8593:[694,193,500,17,483],8594:[511,11,1000,56,944],8595:[694,194,500
 ,17,483],8596:[511,11,1000,55,944],8597:[772,272,500,17,483],8598:[720,195,1000,29,944],8599:[720,195,1000,55,970],8600:[695,220,1000,55,970],8601:[695,220,1000,29,944],8614:[511,11,1000,55,944],8617:[511,11,1126,55,1070],8618:[511,11,1126,55,1070],8636:[511,-230,1000,55,944],8637:[270,11,1000,55,944],8640:[511,-230,1000,56,944],8641:[270,11,1000,56,944],8652:[671,11,1000,55,944],8656:[525,24,1000,56,944],8657:[694,194,611,31,579],8658:[525,24,1000,56,944],8659:[694,194,611,31,579],8660:[526,25,1000,34,966],8661:[772,272,611,31,579],8704:[694,22,556,0,556],8706:[715,22,531,42,566],8707:[694,0,556,56,500],8709:[772,78,500,39,460],8711:[683,33,833,46,786],8712:[540,40,667,84,583],8713:[716,215,667,84,583],8715:[540,40,667,83,582],8722:[270,-230,778,84,694],8723:[500,166,778,56,722],8725:[750,250,500,56,445],8726:[750,250,500,56,444],8727:[465,-35,500,64,435],8728:[444,-55,500,55,444],8729:[444,-55,500,55,444],8730:[800,200,833,72,853],8733:[442,11,778,56,722],8734:[442,11,1000
 ,55,944],8736:[694,0,722,55,666],8739:[750,249,278,119,159],8741:[750,250,500,132,367],8743:[598,22,667,55,611],8744:[598,22,667,55,611],8745:[598,22,667,55,611],8746:[598,22,667,55,611],8747:[716,216,417,55,472],8764:[367,-133,778,55,722],8768:[583,83,278,55,222],8771:[464,-36,778,55,722],8773:[589,-22,1000,55,722],8776:[483,-55,778,55,722],8781:[484,-16,778,55,722],8784:[670,-133,778,56,722],8800:[716,215,778,56,722],8801:[464,-36,778,56,722],8804:[636,138,778,83,694],8805:[636,138,778,83,694],8810:[568,67,1000,56,944],8811:[567,67,1000,55,944],8826:[539,41,778,84,694],8827:[539,41,778,83,694],8834:[540,40,778,84,694],8835:[540,40,778,83,693],8838:[636,138,778,84,694],8839:[636,138,778,83,693],8846:[598,22,667,55,611],8849:[636,138,778,84,714],8850:[636,138,778,64,694],8851:[598,0,667,61,605],8852:[598,0,667,61,605],8853:[583,83,778,56,722],8854:[583,83,778,56,722],8855:[583,83,778,56,722],8856:[583,83,778,56,722],8857:[583,83,778,56,722],8866:[694,0,611,55,555],8867:[694,
 0,611,55,555],8868:[668,0,778,55,723],8869:[668,0,778,55,723],8872:[750,249,867,119,811],8900:[488,-12,500,12,488],8901:[310,-190,278,78,199],8902:[486,-16,500,3,497],8904:[505,5,900,26,873],8942:[900,30,278,78,199],8943:[310,-190,1172,78,1093],8945:[820,-100,1282,133,1148],8968:[750,250,444,174,422],8969:[750,250,444,21,269],8970:[750,250,444,174,422],8971:[750,250,444,21,269],8994:[388,-122,1000,55,944],8995:[378,-134,1000,55,944],9136:[744,244,412,55,357],9137:[744,244,412,56,357],10216:[750,250,389,110,333],10217:[750,250,389,55,278],10222:[744,244,412,173,357],10223:[744,244,412,56,240],10229:[511,11,1609,55,1525],10230:[511,11,1638,84,1553],10231:[511,11,1859,55,1803],10232:[525,24,1609,56,1553],10233:[525,24,1638,56,1582],10234:[525,24,1858,56,1802],10236:[511,11,1638,55,1553],10815:[683,0,750,28,721],10927:[636,138,778,84,694],10928:[636,138,778,83,694]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Main"],["loadComplete",MathJax.Ajax,Math
 Jax.OutputJax["HTML-CSS"].fontDir+"/Main/Regular/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/Makefile.am
new file mode 100644
index 0000000..be9b6a9
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/Makefile.am
@@ -0,0 +1,10 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular
+
+mj_DATA =			\
+	Main.js			\
+	GeometricShapes.js	\
+	MiscSymbols.js		\
+	SpacingModLetters.js	\
+	CombDiacritMarks.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js
new file mode 100644
index 0000000..dda5b77
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Main,{9824:[727,130,778,55,723],9825:[716,33,778,55,723],9826:[727,162,778,55,723],9827:[726,130,778,28,750],9837:[750,22,389,55,332],9838:[734,223,389,65,324],9839:[723,223,389,55,333]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Regular/MiscSymbols.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/SpacingModLetters.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/SpacingModLetters.js
new file mode 100644
index 0000000..c4e8ae1
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/SpacingModLetters.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/SpacingModLetters.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Main,{730:[715,-542,500,147,352]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Regular/SpacingModLetters.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Makefile.am
new file mode 100644
index 0000000..408ba7b
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Makefile.am
@@ -0,0 +1,30 @@
+SUBDIRS =			\
+	AMS/Regular		\
+	Caligraphic/Bold	\
+	Caligraphic/Regular	\
+	Fraktur/Bold		\
+	Fraktur/Regular		\
+	Greek/Bold		\
+	Greek/BoldItalic	\
+	Greek/Italic		\
+	Greek/Regular		\
+	Main/Bold		\
+	Main/Italic		\
+	Main/Regular		\
+	Math/BoldItalic		\
+	Math/Italic		\
+	SansSerif/Bold		\
+	SansSerif/Italic	\
+	SansSerif/Regular	\
+	Script/Regular		\
+	Size1/Regular		\
+	Size2/Regular		\
+	Size3/Regular		\
+	Size4/Regular		\
+	Typewriter/Regular
+
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX
+
+mj_DATA = fontdata-extra.js fontdata.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Main.js
new file mode 100644
index 0000000..5b87e9e
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Math-bold-italic"]={directory:"Math/BoldItalic",family:"MathJax_Math",weight:"bold",style:"italic",testString:"MathJax Math \u03A5",skew:{65:0.16,66:0.0958,67:0.0958,68:0.0639,69:0.0958,70:0.0958,71:0.0958,72:0.0639,73:0.128,74:0.192,75:0.0639,76:0.0319,77:0.0958,78:0.0958,79:0.0958,80:0.0958,81:0.0958,82:0.0958,83:0.0958,84:0.0958,85:0.0319,88:0.0958,90:0.0958,99:0.0639,100:0.192,101:0.0639,102:0.192,103:0.0319,104:-0.0319,108:0.0958,111:0.0639,112:0.0958,113:0.0958,114:0.0639,115:0.0639,116:0.0958,117:0.0319,118:0.0319,119:0.0958,120:0.0319,121:0.0639,122:0.0639,915:0.0958,916:0.192,920:0.0958,923:0.192,926:0.0958,928:0.0639,931:0.0958,933:0.0639,934:0.0958,936:0.0639,937:0.0958,945:0.0319,946:0.0958,948:0.0639,949:0.0958,950:0.0958,951:0.0639,952:0.0958,953:0.0639,956:0.0319,957:0.0319,958:0.128,959:0.0639,961:0.0958,962:0.0958,964:0.0319,965:0.0319,966:0.0958,967:0.0639,968:0.128,977:0.0958,981:0.0958,1009:0.0958,1013
 :0.0639},32:[0,0,250,0,0],47:[711,210,894,160,733],65:[711,0,869,45,839],66:[686,0,866,43,853],67:[703,17,817,55,855],68:[686,0,938,43,914],69:[680,0,810,43,825],70:[680,0,689,43,809],71:[703,16,887,56,854],72:[686,0,982,43,1027],73:[686,0,511,30,573],74:[686,17,631,42,694],75:[686,0,971,43,1003],76:[686,0,756,43,711],77:[686,0,1142,43,1219],78:[686,0,950,43,1027],79:[703,17,837,53,815],80:[686,0,723,43,847],81:[703,194,869,53,815],82:[686,17,872,43,881],83:[703,17,693,63,714],84:[675,0,637,22,772],85:[686,16,800,63,877],86:[686,16,678,62,886],87:[686,17,1093,61,1207],88:[686,0,947,38,953],89:[686,0,675,40,876],90:[686,0,773,68,805],97:[452,8,633,38,607],98:[694,8,521,45,513],99:[451,8,513,40,509],100:[694,8,610,38,612],101:[452,8,554,42,509],102:[701,201,568,64,624],103:[452,202,545,0,540],104:[694,8,668,45,642],105:[694,8,405,24,367],106:[694,202,471,-12,456],107:[694,8,604,45,578],108:[694,8,348,27,296],109:[452,8,1032,24,1006],110:[452,8,713,24,687],111:[452,8,585,39,576
 ],112:[452,194,601,-23,593],113:[452,194,542,38,550],114:[452,8,529,24,500],115:[451,8,531,57,476],116:[643,7,415,21,387],117:[452,8,681,24,655],118:[453,8,567,24,540],119:[453,8,831,24,796],120:[452,8,659,43,599],121:[452,202,590,24,587],122:[452,8,555,34,539],160:[0,0,250,0,0],915:[680,0,657,43,777],916:[711,0,958,59,904],920:[702,17,867,54,844],923:[711,0,806,44,776],926:[675,0,841,62,867],928:[680,0,982,43,1026],931:[686,0,885,69,902],933:[703,0,671,32,802],934:[686,0,767,29,737],936:[686,0,714,22,790],937:[703,0,879,93,886],945:[452,8,761,39,712],946:[701,194,660,28,637],947:[451,211,590,5,617],948:[725,8,522,39,513],949:[461,17,529,36,481],950:[711,202,508,48,521],951:[452,211,600,24,600],952:[702,8,562,40,554],953:[452,8,412,38,386],954:[452,8,668,45,642],955:[694,13,671,40,652],956:[452,211,708,33,682],957:[452,2,577,38,608],958:[711,201,508,23,490],959:[452,8,585,39,576],960:[444,8,682,23,674],961:[451,211,612,34,603],962:[451,105,424,33,457],963:[444,8,686,35,677],
 964:[444,13,521,23,610],965:[453,8,631,24,604],966:[452,216,747,53,703],967:[452,201,718,32,685],968:[694,202,758,24,732],969:[453,8,718,24,691],977:[701,8,692,24,656],981:[694,202,712,51,693],982:[444,8,975,23,961],1009:[451,194,612,75,603],1013:[444,7,483,44,450]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Math-bold-italic"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Math/BoldItalic/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Makefile.am
new file mode 100644
index 0000000..a85f2a7
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Makefile.am
@@ -0,0 +1,5 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic
+
+mj_DATA = Main.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/Italic/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/Italic/Main.js
new file mode 100644
index 0000000..adc4d0c
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/Italic/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Math/Italic/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_Math-italic"]={directory:"Math/Italic",family:"MathJax_Math",style:"italic",testString:"MathJax Math \u03A5",skew:{65:0.139,66:0.0833,67:0.0833,68:0.0556,69:0.0833,70:0.0833,71:0.0833,72:0.0556,73:0.111,74:0.167,75:0.0556,76:0.0278,77:0.0833,78:0.0833,79:0.0833,80:0.0833,81:0.0833,82:0.0833,83:0.0833,84:0.0833,85:0.0278,88:0.0833,90:0.0833,99:0.0556,100:0.167,101:0.0556,102:0.167,103:0.0278,104:-0.0278,108:0.0833,111:0.0556,112:0.0833,113:0.0833,114:0.0556,115:0.0556,116:0.0833,117:0.0278,118:0.0278,119:0.0833,120:0.0278,121:0.0556,122:0.0556,915:0.0833,916:0.167,920:0.0833,923:0.167,926:0.0833,928:0.0556,931:0.0833,933:0.0556,934:0.0833,936:0.0556,937:0.0833,945:0.0278,946:0.0833,948:0.0556,949:0.0833,950:0.0833,951:0.0556,952:0.0833,953:0.0556,956:0.0278,957:0.0278,958:0.111,959:0.0556,961:0.0833,962:0.0833,964:0.0278,965:0.0278,966:0.0833,967:0.0556,968:0.111,977:0.0833,981:0.0833,1009:0.0833,1013:0.0556},32:[0,0,250,0
 ,0],47:[716,215,778,139,638],65:[716,0,750,35,726],66:[683,0,759,35,756],67:[705,22,715,50,760],68:[683,0,828,33,803],69:[680,0,738,31,764],70:[680,0,643,31,749],71:[705,22,786,50,760],72:[683,0,831,31,888],73:[683,0,440,26,504],74:[683,22,555,57,633],75:[683,0,849,31,889],76:[683,0,681,32,647],77:[683,0,970,35,1051],78:[683,0,803,31,888],79:[704,22,763,50,740],80:[683,0,642,33,751],81:[704,194,791,50,740],82:[683,21,759,33,755],83:[705,22,613,52,645],84:[677,0,584,21,704],85:[683,22,683,60,767],86:[683,22,583,52,769],87:[683,22,944,51,1048],88:[683,0,828,26,852],89:[683,-1,581,30,763],90:[683,0,683,58,723],97:[441,10,529,33,506],98:[694,11,429,40,422],99:[442,11,433,34,429],100:[694,10,520,33,523],101:[442,11,466,39,429],102:[705,205,490,55,550],103:[442,205,477,10,480],104:[694,11,576,48,555],105:[661,11,345,21,302],106:[661,204,412,-12,403],107:[694,11,521,48,503],108:[694,11,298,38,266],109:[442,11,878,21,857],110:[442,11,600,21,580],111:[441,11,485,34,476],112:[442,194,
 503,-39,497],113:[442,194,446,33,460],114:[442,11,451,21,430],115:[442,10,469,53,419],116:[626,11,361,19,330],117:[442,11,572,21,551],118:[443,11,485,21,467],119:[443,11,716,21,690],120:[442,11,572,35,522],121:[442,205,490,21,496],122:[442,11,465,35,468],160:[0,0,250,0,0],915:[680,-1,615,31,721],916:[716,0,833,48,788],920:[704,22,763,50,740],923:[716,0,694,35,670],926:[677,0,742,53,777],928:[680,0,831,31,887],931:[683,0,780,58,806],933:[705,0,583,28,700],934:[683,0,667,24,642],936:[683,0,612,21,692],937:[704,0,772,80,786],945:[442,11,640,34,603],946:[705,194,566,23,573],947:[441,216,518,11,543],948:[717,10,444,36,451],949:[452,22,466,27,428],950:[704,204,438,44,471],951:[442,216,497,21,503],952:[705,10,469,35,462],953:[442,10,354,48,332],954:[442,11,576,49,554],955:[694,12,583,47,556],956:[442,216,603,23,580],957:[442,2,494,45,530],958:[704,205,438,21,443],959:[441,11,485,34,476],960:[431,11,570,19,573],961:[442,216,517,23,510],962:[442,107,363,31,405],963:[431,11,571,31,572
 ],964:[431,13,437,18,517],965:[443,10,540,21,523],966:[442,218,654,50,618],967:[442,204,626,25,600],968:[694,205,651,21,634],969:[443,11,622,15,604],977:[705,11,591,21,563],981:[694,205,596,43,579],982:[431,10,828,19,823],1009:[442,194,517,67,510],1013:[431,11,406,40,382]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Math-italic"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Math/Italic/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/Italic/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/Italic/Makefile.am
new file mode 100644
index 0000000..90c83f0
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/Italic/Makefile.am
@@ -0,0 +1,5 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Math/Italic
+
+mj_DATA = Main.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/BasicLatin.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/BasicLatin.js
new file mode 100644
index 0000000..dcb746d
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/BasicLatin.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/BasicLatin.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_SansSerif-bold"],{32:[0,0,250,0,0],33:[694,0,367,110,256],34:[694,-442,558,37,420],35:[694,193,917,61,855],36:[750,56,550,49,488],37:[750,56,1029,61,966],38:[716,22,831,47,769],39:[694,-442,306,80,226],40:[750,249,428,79,366],41:[750,250,428,61,348],42:[750,-293,550,67,482],43:[617,116,856,61,794],44:[146,106,306,80,226],45:[273,-186,367,12,305],46:[146,0,306,80,226],47:[750,249,550,61,488],48:[715,22,550,43,506],49:[716,-1,550,76,473],50:[716,0,550,46,495],51:[716,22,550,46,503],52:[694,0,550,31,518],53:[694,22,550,37,494],54:[716,22,550,46,503],55:[695,11,550,46,503],56:[715,22,550,46,503],57:[716,22,550,46,503],58:[458,0,306,80,226],59:[458,106,306,80,226],61:[407,-94,856,61,794],63:[705,0,519,61,457],64:[704,11,733,61,671],65:[694,0,733,42,690],66:[694,-1,733,92,671],67:[704,11,703,61,647],68:[694,-1,794,92,732],69:[691,0,642,92,595],70:[691,0,611,92,564],71:[705,11,733,61,659],72:[694,0,794,92,702]
 ,73:[694,0,331,85,246],74:[694,22,519,46,427],75:[694,0,764,92,701],76:[694,0,581,92,534],77:[694,0,978,92,886],78:[694,0,794,92,702],79:[716,22,794,62,731],80:[694,0,703,92,641],81:[716,106,794,62,732],82:[694,0,703,92,654],83:[716,22,611,49,549],84:[688,0,733,40,692],85:[694,22,764,92,672],86:[694,-1,733,27,705],87:[694,0,1039,24,1014],88:[694,0,733,37,694],89:[694,0,733,24,708],90:[694,0,672,61,616],91:[750,250,343,79,318],93:[750,250,343,24,263],94:[694,-537,550,108,441],95:[-23,110,550,0,549],97:[475,11,525,31,472],98:[694,10,561,54,523],99:[475,11,489,37,457],100:[694,11,561,37,507],101:[474,10,511,30,480],102:[705,0,336,29,381],103:[469,206,550,17,534],104:[694,0,561,53,508],105:[695,0,256,46,208],106:[695,205,286,-71,232],107:[694,0,531,63,496],108:[694,0,256,54,201],109:[469,0,867,53,815],110:[468,0,561,53,508],111:[474,11,550,32,518],112:[469,194,561,54,523],113:[469,194,561,37,507],114:[469,0,372,54,356],115:[474,10,422,30,396],116:[589,10,404,20,373],117:[458,11,
 561,52,508],118:[458,0,500,26,473],119:[458,0,744,24,719],120:[458,0,500,24,475],121:[458,205,500,29,473],122:[458,0,476,31,442],126:[344,-198,550,92,457]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Bold/BasicLatin.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/CombDiacritMarks.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/CombDiacritMarks.js
new file mode 100644
index 0000000..e58ef74
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/CombDiacritMarks.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/CombDiacritMarks.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_SansSerif-bold"],{768:[694,-537,0,-458,-218],769:[694,-537,0,-334,-93],770:[694,-537,0,-442,-109],771:[694,-548,0,-458,-93],772:[660,-560,0,-474,-77],774:[694,-552,0,-470,-80],775:[695,-596,0,-356,-194],776:[695,-595,0,-459,-91],778:[694,-538,0,-365,-119],779:[694,-537,0,-440,-94],780:[657,-500,0,-442,-109]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Bold/CombDiacritMarks.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js
new file mode 100644
index 0000000..fcb57db
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_SansSerif-bold"]={directory:"SansSerif/Bold",family:"MathJax_SansSerif",weight:"bold",testString:"MathJax SansSerif ^ _",Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"],[768,879,"CombDiacritMarks"]]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_SansSerif-bold"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Bold/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Makefile.am
new file mode 100644
index 0000000..97240e3
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Makefile.am
@@ -0,0 +1,9 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold
+
+mj_DATA =			\
+	Main.js			\
+	Other.js		\
+	BasicLatin.js		\
+	CombDiacritMarks.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Other.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Other.js
new file mode 100644
index 0000000..1f16d3f
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Other.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Other.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_SansSerif-bold"],{160:[0,0,250,0,0],305:[458,0,256,54,201],567:[458,205,286,-71,232],915:[691,0,581,92,534],916:[694,0,917,60,856],920:[716,22,856,62,793],923:[694,0,672,41,630],926:[688,0,733,46,686],928:[691,0,794,92,702],931:[694,0,794,61,732],933:[715,0,856,62,793],934:[694,0,794,62,732],936:[694,0,856,61,794],937:[716,0,794,49,744],8211:[327,-240,550,0,549],8212:[327,-240,1100,0,1099],8216:[694,-443,306,81,226],8217:[694,-442,306,80,226],8220:[694,-443,558,138,520],8221:[694,-442,558,37,420]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Bold/Other.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/BasicLatin.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/BasicLatin.js
new file mode 100644
index 0000000..a0f6bfa
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/BasicLatin.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/BasicLatin.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_SansSerif-italic"],{32:[0,0,250,0,0],33:[694,0,319,110,355],34:[694,-471,500,133,472],35:[694,194,833,87,851],36:[750,56,500,56,565],37:[750,56,833,165,815],38:[716,22,758,71,747],39:[694,-471,278,190,335],40:[750,250,389,104,491],41:[750,250,389,2,390],42:[750,-306,500,156,568],43:[583,83,778,108,775],44:[98,125,278,63,209],45:[259,-186,333,51,332],46:[98,0,278,90,209],47:[750,250,500,6,600],48:[678,22,500,88,549],49:[678,0,500,88,451],50:[678,0,500,50,551],51:[678,22,500,56,544],52:[656,0,500,62,521],53:[656,22,500,50,555],54:[678,22,500,94,548],55:[656,11,500,143,596],56:[678,22,500,77,554],57:[677,22,500,77,545],58:[444,0,278,90,282],59:[444,125,278,63,282],61:[370,-130,778,88,796],63:[704,0,472,173,536],64:[705,10,667,120,707],65:[694,0,667,28,638],66:[694,0,667,90,696],67:[705,10,639,124,719],68:[694,0,722,88,747],69:[691,0,597,86,688],70:[691,0,569,86,673],71:[705,11,667,125,730],72:[694,0,708,86
 ,768],73:[694,0,278,87,338],74:[694,22,472,46,535],75:[694,0,694,88,785],76:[694,0,542,87,516],77:[694,0,875,92,929],78:[694,0,708,88,766],79:[716,22,736,118,763],80:[694,0,639,88,690],81:[716,125,736,118,763],82:[694,0,646,88,698],83:[716,22,556,54,609],84:[688,0,681,165,790],85:[694,22,688,131,747],86:[694,0,667,161,799],87:[694,0,944,161,1076],88:[694,0,667,14,758],89:[694,0,667,151,810],90:[694,0,611,55,702],91:[750,250,289,41,425],93:[750,250,289,-31,353],94:[694,-527,500,190,533],95:[-38,114,500,50,565],97:[461,10,481,61,473],98:[694,11,517,75,539],99:[460,11,444,75,499],100:[694,10,517,73,588],101:[460,11,444,71,472],102:[705,0,306,94,494],103:[455,206,500,12,568],104:[694,0,517,73,513],105:[680,0,239,74,315],106:[680,204,267,-96,336],107:[694,0,489,76,543],108:[694,0,239,74,311],109:[455,0,794,73,790],110:[454,0,517,73,513],111:[461,11,500,69,523],112:[455,194,517,34,538],113:[455,194,517,72,538],114:[455,0,342,74,424],115:[461,11,383,35,436],116:[571,11,361,97,410],
 117:[444,10,517,90,537],118:[444,0,461,108,540],119:[444,0,683,108,762],120:[444,0,461,1,537],121:[444,205,461,1,540],122:[444,0,435,28,494],126:[327,-193,500,199,560]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Italic/BasicLatin.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js
new file mode 100644
index 0000000..8845c62
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_SansSerif-italic"],{768:[694,-527,0,-270,-87],769:[694,-527,0,-190,63],770:[694,-527,0,-310,33],771:[677,-543,0,-301,60],772:[631,-552,0,-314,64],774:[694,-508,0,-284,73],775:[680,-576,0,-180,-54],776:[680,-582,0,-273,40],778:[693,-527,0,-227,-2],779:[694,-527,0,-287,63],780:[654,-487,0,-283,60]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Italic/CombDiacritMarks.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js
new file mode 100644
index 0000000..ca8d56f
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_SansSerif-italic"]={directory:"SansSerif/Italic",family:"MathJax_SansSerif",style:"italic",testString:"MathJax SansSerif ^ _",Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"],[768,879,"CombDiacritMarks"]]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_SansSerif-italic"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Italic/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Makefile.am
new file mode 100644
index 0000000..e15950a
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Makefile.am
@@ -0,0 +1,9 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic
+
+mj_DATA =			\
+	Main.js			\
+	Other.js		\
+	BasicLatin.js		\
+	CombDiacritMarks.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Other.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Other.js
new file mode 100644
index 0000000..644b069
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Other.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Other.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS["MathJax_SansSerif-italic"],{160:[0,0,250,0,0],305:[444,0,239,74,258],567:[444,204,267,-96,286],915:[691,0,542,87,646],916:[694,0,833,42,790],920:[715,22,778,119,804],923:[694,0,611,28,582],926:[688,0,667,42,765],928:[691,0,708,86,768],931:[694,0,722,55,813],933:[716,0,778,173,843],934:[694,0,722,124,743],936:[694,0,778,171,854],937:[716,0,722,44,769],8211:[312,-236,500,50,565],8212:[312,-236,1000,50,1065],8216:[694,-471,278,190,336],8217:[694,-471,278,190,335],8220:[694,-471,500,274,614],8221:[694,-471,500,133,472]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Italic/Other.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/BasicLatin.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/BasicLatin.js
new file mode 100644
index 0000000..8ad0564
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/BasicLatin.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/BasicLatin.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_SansSerif,{32:[0,0,250,0,0],33:[694,0,319,110,208],34:[694,-471,500,32,325],35:[694,194,833,56,777],36:[750,56,500,44,444],37:[750,56,833,56,776],38:[716,22,758,42,702],39:[694,-471,278,89,188],40:[750,250,389,74,333],41:[750,250,389,55,314],42:[750,-306,500,63,436],43:[583,82,778,56,722],44:[98,125,278,89,188],45:[259,-186,333,11,277],46:[98,0,278,90,188],47:[750,250,500,56,445],48:[678,22,500,39,460],49:[678,0,500,83,430],50:[677,0,500,42,449],51:[678,22,500,42,457],52:[656,0,500,28,471],53:[656,21,500,33,449],54:[677,22,500,42,457],55:[656,11,500,42,457],56:[678,22,500,43,456],57:[677,22,500,42,457],58:[444,0,278,90,188],59:[444,125,278,89,188],61:[370,-130,778,56,722],63:[704,0,472,55,416],64:[704,11,667,56,612],65:[694,0,667,28,638],66:[694,0,667,90,610],67:[705,11,639,59,587],68:[694,0,722,88,666],69:[691,0,597,86,554],70:[691,0,569,86,526],71:[704,11,667,59,599],72:[694,0,708,86,621],73:[694,0,278
 ,87,191],74:[694,22,472,42,388],75:[694,0,694,88,651],76:[694,0,542,87,499],77:[694,0,875,92,782],78:[694,0,708,88,619],79:[715,22,736,55,680],80:[694,0,639,88,583],81:[715,125,736,55,680],82:[694,0,646,88,617],83:[716,22,556,44,500],84:[688,0,681,36,644],85:[694,22,688,87,600],86:[694,0,667,14,652],87:[694,0,944,14,929],88:[694,0,667,14,652],89:[694,0,667,3,663],90:[694,0,611,55,560],91:[750,250,289,94,266],93:[750,250,289,22,194],94:[694,-527,500,78,421],95:[-38,114,500,0,499],97:[460,10,481,38,407],98:[694,11,517,75,482],99:[460,10,444,34,415],100:[694,10,517,33,441],101:[461,10,444,28,415],102:[705,0,306,27,347],103:[455,206,500,28,485],104:[694,0,517,73,443],105:[680,0,239,67,171],106:[680,205,267,-59,192],107:[694,0,489,76,471],108:[694,0,239,74,164],109:[455,0,794,73,720],110:[455,0,517,73,443],111:[460,10,500,28,471],112:[455,194,517,75,483],113:[455,194,517,33,441],114:[455,0,342,74,327],115:[460,10,383,28,360],116:[571,10,361,18,333],117:[444,10,517,73,443],118:[44
 4,0,461,14,446],119:[444,0,683,14,668],120:[444,0,461,0,460],121:[444,204,461,14,446],122:[444,0,435,28,402],126:[327,-193,500,83,416]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Regular/BasicLatin.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js
new file mode 100644
index 0000000..17a65eb
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_SansSerif,{768:[694,-527,0,-417,-199],769:[694,-527,0,-302,-84],770:[694,-527,0,-422,-79],771:[677,-543,0,-417,-84],772:[631,-552,0,-431,-70],774:[694,-508,0,-427,-74],775:[680,-576,0,-302,-198],776:[680,-582,0,-397,-104],778:[694,-527,0,-319,-99],779:[694,-527,0,-399,-84],780:[654,-487,0,-422,-79]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Regular/CombDiacritMarks.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js
new file mode 100644
index 0000000..3e7616b
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_SansSerif={directory:"SansSerif/Regular",family:"MathJax_SansSerif",testString:"MathJax SansSerif ^ _",Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"],[768,879,"CombDiacritMarks"]]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_SansSerif"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Regular/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Makefile.am
new file mode 100644
index 0000000..1c3ffa6
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Makefile.am
@@ -0,0 +1,9 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular
+
+mj_DATA =			\
+	Main.js			\
+	Other.js		\
+	BasicLatin.js		\
+	CombDiacritMarks.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Other.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Other.js
new file mode 100644
index 0000000..9383be8
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Other.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Other.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_SansSerif,{160:[0,0,250,0,0],305:[444,0,239,74,164],567:[444,205,267,-59,192],915:[691,0,542,87,499],916:[694,0,833,42,790],920:[716,21,778,56,722],923:[694,0,611,28,582],926:[688,0,667,42,624],928:[691,0,708,86,621],931:[694,0,722,55,666],933:[716,0,778,55,722],934:[694,0,722,55,666],936:[694,0,778,55,722],937:[716,0,722,44,677],8211:[312,-236,500,0,499],8212:[312,-236,1000,0,999],8216:[694,-471,278,90,189],8217:[694,-471,278,89,188],8220:[694,-471,500,174,467],8221:[694,-471,500,32,325]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Regular/Other.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/BasicLatin.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/BasicLatin.js
new file mode 100644
index 0000000..f13512c
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/BasicLatin.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/BasicLatin.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Script,{32:[0,0,250,0,0],65:[717,8,803,35,1016],66:[708,28,908,31,928],67:[728,26,666,26,819],68:[708,31,774,68,855],69:[707,8,562,46,718],70:[735,36,895,39,990],71:[717,37,610,12,738],72:[717,36,969,29,1241],73:[717,17,809,59,946],74:[717,314,1052,92,1133],75:[717,37,914,29,1204],76:[717,17,874,14,1035],77:[721,50,1080,30,1216],78:[726,36,902,29,1208],79:[707,8,738,96,805],80:[716,37,1013,90,1031],81:[717,17,883,54,885],82:[717,17,850,-2,887],83:[708,36,868,29,1016],84:[735,37,747,92,996],85:[717,17,800,55,960],86:[717,17,622,56,850],87:[717,17,805,46,1026],88:[717,17,944,103,1131],89:[716,17,710,57,959],90:[717,16,821,83,1032]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Script/Regular/BasicLatin.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Main.js
new file mode 100644
index 0000000..d8189a5
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Script={directory:"Script/Regular",family:"MathJax_Script",testString:"MATHJAX SCRIPT",skew:{65:0.389,66:0.194,67:0.278,68:0.111,69:0.139,70:0.222,71:0.25,72:0.333,73:0.333,74:0.417,75:0.361,76:0.306,77:0.444,78:0.389,79:0.167,80:0.222,81:0.278,82:0.194,83:0.333,84:0.222,85:0.25,86:0.222,87:0.25,88:0.278,89:0.194,90:0.306},Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"]]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Script"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Script/Regular/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Makefile.am
new file mode 100644
index 0000000..a7563c7
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Makefile.am
@@ -0,0 +1,5 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular
+
+mj_DATA = Main.js Other.js BasicLatin.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Other.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Other.js
new file mode 100644
index 0000000..f2935ed
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Other.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Other.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Script,{160:[0,0,250,0,0]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Script/Regular/Other.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Main.js
new file mode 100644
index 0000000..caf1dde
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Size1={directory:"Size1/Regular",family:"MathJax_Size1",testString:"() [] {}",32:[0,0,250,0,0],40:[850,349,458,152,422],41:[850,349,458,35,305],47:[850,349,578,55,522],91:[850,349,417,202,394],92:[850,349,578,54,522],93:[850,349,417,22,214],123:[850,349,583,105,477],125:[850,349,583,105,477],160:[0,0,250,0,0],710:[744,-551,556,-8,564],732:[722,-597,556,1,554],770:[744,-551,0,-564,8],771:[722,-597,0,-555,-2],8214:[602,0,778,257,521],8593:[600,0,667,112,555],8595:[600,0,667,112,555],8657:[599,0,778,57,721],8659:[600,-1,778,57,721],8719:[750,250,944,55,888],8720:[750,250,944,55,888],8721:[750,250,1056,56,999],8730:[850,350,1000,111,1020],8739:[627,15,333,145,188],8741:[627,15,556,145,410],8747:[805,306,472,55,610],8748:[805,306,819,55,957],8749:[805,306,1166,55,1304],8750:[805,306,472,55,610],8896:[750,249,833,55,777],8897:[750,249,833,55,777],8898:[750,249,833,55,777],8899:[750,249,833,55,777],8968:[850,349,472,202,449],8969
 :[850,349,472,22,269],8970:[850,349,472,202,449],8971:[850,349,472,22,269],9168:[602,0,667,312,355],10216:[850,350,472,97,394],10217:[850,350,472,77,374],10752:[750,250,1111,56,1054],10753:[750,250,1111,56,1054],10754:[750,250,1111,56,1054],10756:[750,249,833,55,777],10758:[750,249,833,55,777]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Size1"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Size1/Regular/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Makefile.am
new file mode 100644
index 0000000..83a2ec4
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Makefile.am
@@ -0,0 +1,5 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Size1/Regular
+
+mj_DATA = Main.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Main.js
new file mode 100644
index 0000000..5f34094
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Size2={directory:"Size2/Regular",family:"MathJax_Size2",testString:"() [] {}",32:[0,0,250,0,0],40:[1150,649,597,180,561],41:[1150,649,597,35,416],47:[1150,649,811,56,754],91:[1150,649,472,224,455],92:[1150,649,811,54,754],93:[1150,649,472,16,247],123:[1150,649,667,119,547],125:[1150,649,667,119,547],160:[0,0,250,0,0],710:[772,-565,1000,-5,1004],732:[750,-611,1000,0,999],770:[772,-565,0,-1005,4],771:[750,-611,0,-1000,-1],8719:[950,450,1278,56,1221],8720:[950,450,1278,56,1221],8721:[950,450,1444,55,1388],8730:[1150,650,1000,111,1020],8747:[1360,862,556,55,944],8748:[1360,862,1084,55,1472],8749:[1360,862,1592,55,1980],8750:[1360,862,556,55,944],8896:[950,450,1111,55,1055],8897:[950,450,1111,55,1055],8898:[949,450,1111,55,1055],8899:[950,449,1111,55,1055],8968:[1150,649,528,224,511],8969:[1150,649,528,16,303],8970:[1150,649,528,224,511],8971:[1150,649,528,16,303],10216:[1150,649,611,112,524],10217:[1150,649,611,85,498],10752:[
 949,449,1511,56,1454],10753:[949,449,1511,56,1454],10754:[949,449,1511,56,1454],10756:[950,449,1111,55,1055],10758:[950,450,1111,55,1055]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Size2"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Size2/Regular/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Makefile.am
new file mode 100644
index 0000000..85e03e1
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Makefile.am
@@ -0,0 +1,5 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Size2/Regular
+
+mj_DATA = Main.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Main.js
new file mode 100644
index 0000000..fa6ae6d
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Size3={directory:"Size3/Regular",family:"MathJax_Size3",testString:"() [] {}",32:[0,0,250,0,0],40:[1450,949,736,209,701],41:[1450,949,736,34,526],47:[1450,949,1044,55,989],91:[1450,949,528,247,516],92:[1450,949,1044,56,988],93:[1450,949,528,11,280],123:[1450,949,750,130,618],125:[1450,949,750,131,618],160:[0,0,250,0,0],710:[772,-564,1444,-4,1447],732:[749,-610,1444,1,1442],770:[772,-564,0,-1448,3],771:[749,-610,0,-1443,-2],8730:[1450,950,1000,111,1020],8968:[1450,949,583,246,571],8969:[1450,949,583,11,336],8970:[1450,949,583,246,571],8971:[1450,949,583,11,336],10216:[1450,950,750,126,654],10217:[1450,949,750,94,623]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Size3"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Size3/Regular/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Makefile.am
new file mode 100644
index 0000000..ebd42f8
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Makefile.am
@@ -0,0 +1,5 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Size3/Regular
+
+mj_DATA = Main.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Main.js
new file mode 100644
index 0000000..3a327b1
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Size4={directory:"Size4/Regular",family:"MathJax_Size4",testString:"() [] {}",32:[0,0,250,0,0],40:[1750,1249,792,237,758],41:[1750,1249,792,33,554],47:[1750,1249,1278,56,1221],91:[1750,1249,583,269,577],92:[1750,1249,1278,56,1221],93:[1750,1249,583,5,313],123:[1750,1249,806,144,661],125:[1750,1249,806,144,661],160:[0,0,250,0,0],710:[845,-561,1889,-14,1902],732:[823,-583,1889,1,1885],770:[845,-561,0,-1903,13],771:[823,-583,0,-1888,-4],8730:[1750,1250,1000,111,1020],8968:[1750,1249,639,269,633],8969:[1750,1249,639,5,369],8970:[1750,1249,639,269,633],8971:[1750,1249,639,5,369],9115:[1154,655,875,291,843],9116:[610,10,875,291,417],9117:[1165,644,875,291,843],9118:[1154,655,875,31,583],9119:[610,10,875,457,583],9120:[1165,644,875,31,583],9121:[1154,645,667,319,666],9122:[602,0,667,319,403],9123:[1155,644,667,319,666],9124:[1154,645,667,0,347],9125:[602,0,667,263,347],9126:[1155,644,667,0,347],9127:[899,10,889,384,718],9128:[116
 0,660,889,170,504],9129:[10,899,889,384,718],9130:[310,10,889,384,504],9131:[899,10,889,170,504],9132:[1160,660,889,384,718],9133:[10,899,889,170,504],9143:[935,885,1056,111,742],10216:[1750,1248,806,140,703],10217:[1750,1248,806,103,665],57344:[625,14,1056,702,742],57345:[605,14,1056,702,1076],57680:[120,213,450,-24,460],57681:[120,213,450,-10,474],57682:[333,0,450,-24,460],57683:[333,0,450,-10,474],57684:[120,0,400,-10,410]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Size4"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Size4/Regular/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Makefile.am
new file mode 100644
index 0000000..d109723
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Makefile.am
@@ -0,0 +1,5 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Size4/Regular
+
+mj_DATA = Main.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/BasicLatin.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/BasicLatin.js
new file mode 100644
index 0000000..2190db4
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/BasicLatin.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/BasicLatin.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Typewriter,{32:[0,0,250,0,0],33:[622,0,525,206,320],34:[623,-333,525,122,402],35:[611,0,525,36,489],36:[694,82,525,58,466],37:[694,83,525,35,489],38:[622,11,525,28,490],39:[611,-287,525,175,349],40:[694,82,525,166,437],41:[694,82,525,87,358],42:[520,-90,525,68,456],43:[531,-81,525,38,487],44:[140,139,525,173,353],45:[341,-271,525,57,468],46:[140,-1,525,193,332],47:[694,83,525,58,466],48:[621,10,525,42,482],49:[622,-1,525,99,450],50:[622,-1,525,52,472],51:[622,11,525,44,479],52:[624,-1,525,29,495],53:[611,10,525,52,472],54:[622,11,525,45,479],55:[627,10,525,44,480],56:[621,10,525,45,479],57:[622,11,525,46,479],58:[431,-1,525,193,332],59:[431,139,525,175,337],60:[557,-55,525,57,468],61:[417,-195,525,38,487],62:[557,-55,525,57,468],63:[617,0,525,62,462],64:[617,6,525,44,481],65:[623,-1,525,28,496],66:[611,-1,525,17,482],67:[622,11,525,40,484],68:[611,-1,525,16,485],69:[611,-1,525,19,502],70:[611,-1,525,22,4
 90],71:[622,11,525,38,496],72:[611,-1,525,16,508],73:[611,-1,525,72,452],74:[611,11,525,57,479],75:[611,-1,525,18,495],76:[611,0,525,25,488],77:[611,-1,525,12,512],78:[611,0,525,20,504],79:[621,10,525,56,468],80:[611,-1,525,19,480],81:[621,138,525,56,468],82:[611,11,525,16,522],83:[622,11,525,52,472],84:[611,-1,525,26,498],85:[611,11,525,-3,528],86:[611,7,525,19,505],87:[611,7,525,12,512],88:[611,-1,525,28,495],89:[611,-1,525,20,505],90:[611,-1,525,48,481],91:[694,82,525,214,483],92:[694,83,525,58,466],93:[694,82,525,41,310],94:[611,-460,525,96,428],95:[-25,95,525,57,468],96:[681,-357,525,176,350],97:[439,6,525,48,524],98:[611,6,525,4,492],99:[440,6,525,66,466],100:[611,6,525,31,520],101:[440,6,525,48,464],102:[617,-1,525,35,437],103:[442,229,525,28,509],104:[611,-1,525,4,520],105:[612,-1,525,72,462],106:[612,228,525,48,376],107:[611,-1,525,13,507],108:[611,-1,525,51,474],109:[436,-1,525,-12,536],110:[436,-1,525,4,520],111:[440,6,525,52,472],112:[437,221,525,4,492],113:[437,
 221,525,34,545],114:[437,-1,525,24,487],115:[440,6,525,72,458],116:[554,6,525,25,448],117:[431,5,525,4,520],118:[431,4,525,24,500],119:[431,4,525,16,508],120:[431,-1,525,29,495],121:[431,228,525,26,500],122:[431,-1,525,34,475],123:[694,83,525,50,475],124:[694,82,525,228,297],125:[694,83,525,49,475],126:[611,-466,525,87,437],127:[612,-519,525,104,421]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Typewriter/Regular/BasicLatin.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js
new file mode 100644
index 0000000..b3317eb
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Typewriter,{768:[611,-485,0,-409,-195],769:[611,-485,0,-331,-117],770:[611,-460,0,-429,-97],771:[611,-466,0,-438,-88],772:[577,-500,0,-452,-74],774:[611,-504,0,-446,-79],776:[612,-519,0,-421,-104],778:[619,-499,0,-344,-182],780:[577,-449,0,-427,-99]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Typewriter/Regular/CombDiacritMarks.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js
new file mode 100644
index 0000000..db3cf3c
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Typewriter={directory:"Typewriter/Regular",family:"MathJax_Typewriter",testString:"MathJax Typewriter |",Ranges:[[0,127,"BasicLatin"],[128,65535,"Other"],[768,879,"CombDiacritMarks"]]};MathJax.Callback.Queue(["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Typewriter"],["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Typewriter/Regular/Main.js"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Makefile.am b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Makefile.am
new file mode 100644
index 0000000..cc5484e
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Makefile.am
@@ -0,0 +1,9 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular
+
+mj_DATA =			\
+	Main.js			\
+	Other.js		\
+	BasicLatin.js		\
+	CombDiacritMarks.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js
new file mode 100644
index 0000000..a3f7212
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.Hub.Insert(MathJax.OutputJax["HTML-CSS"].FONTDATA.FONTS.MathJax_Typewriter,{160:[0,0,250,0,0],305:[431,-1,525,72,462],567:[431,228,525,48,376],915:[611,0,525,25,488],916:[623,0,525,35,489],920:[621,10,525,56,468],923:[623,-1,525,30,495],926:[611,-1,525,33,491],928:[611,-1,525,16,508],931:[611,-1,525,40,484],933:[622,-1,525,38,486],934:[611,-1,525,41,483],936:[611,-1,525,37,487],937:[622,-1,525,32,492],2018:[611,-287,525,175,349],2019:[681,-357,525,176,350],8242:[623,-334,525,211,313]});MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir+"/Typewriter/Regular/Other.js");
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/fontdata-extra.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/fontdata-extra.js
new file mode 100644
index 0000000..f63bbba
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/fontdata-extra.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/fontdata-extra.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(g){var l="2.1";var k=g.FONTDATA.DELIMITERS;var f="MathJax_Main",h="MathJax_Main-bold",i="MathJax_AMS",d="MathJax_Size1",a="MathJax_Size4";var j="H",e="V";var c={61:{dir:j,HW:[[0.767,f]],stretch:{rep:[61,f]}},8606:{dir:j,HW:[[1,i]],stretch:{left:[8606,i],rep:[8722,f]}},8608:{dir:j,HW:[[1,i]],stretch:{right:[8608,i],rep:[8722,f]}},8612:{dir:j,HW:[],stretch:{min:1,left:[8592,f],rep:[8722,f],right:[8739,d,0,-0.05,0.9]}},8613:{dir:e,HW:[],stretch:{min:0.6,bot:[8869,h,0,0,0.75],ext:[9168,d],top:[8593,d]}},8614:{dir:j,HW:[[1,f]],stretch:{left:[8739,d,-0.09,-0.05,0.9],rep:[8722,f],right:[8594,f]}},8615:{dir:e,HW:[],stretch:{min:0.6,top:[8868,h,0,0,0.75],ext:[9168,d],bot:[8595,d]}},8624:{dir:e,HW:[[0.722,i]],stretch:{top:[8624,i],ext:[9168,d,0.097]}},8625:{dir:e,HW:[[0.722,i]],stretch:{top:[8625,i,0.27],ext:[9168,d]}},8636:{dir:j,HW:[[1,f]],stretch:{left:[8636,f],rep:[8722,f]}},8637:{dir:j,HW:[[1,f]],stretch:{left:[8637,f],rep:[8722,f]}},8638:{dir:e,HW:[[0.888,i]],stretch:{
 top:[8638,i,0.12,0,1.1],ext:[9168,d]}},8639:{dir:e,HW:[[0.888,i]],stretch:{top:[8639,i,0.12,0,1.1],ext:[9168,d]}},8640:{dir:j,HW:[[1,f]],stretch:{right:[8640,f],rep:[8722,f]}},8641:{dir:j,HW:[[1,f]],stretch:{right:[8641,f],rep:[8722,f]}},8642:{dir:e,HW:[[0.888,i]],stretch:{bot:[8642,i,0.12,0,1.1],ext:[9168,d]}},8643:{dir:e,HW:[[0.888,i]],stretch:{bot:[8643,i,0.12,0,1.1],ext:[9168,d]}},8666:{dir:j,HW:[[1,i]],stretch:{left:[8666,i],rep:[8801,f]}},8667:{dir:j,HW:[[1,i]],stretch:{right:[8667,i],rep:[8801,f]}},9140:{dir:j,HW:[],stretch:{min:0.5,left:[9484,i,0,-0.1],rep:[8722,f,0,0.35],right:[9488,i,0,-0.1]}},9141:{dir:j,HW:[],stretch:{min:0.5,left:[9492,i,0,0.26],rep:[8722,f,0,0,0,0.25],right:[9496,i,0,0.26]}},9180:{dir:j,HW:[[0.778,i,0,8994],[1,f,0,8994]],stretch:{left:[57680,a],rep:[57684,a],right:[57681,a]}},9181:{dir:j,HW:[[0.778,i,0,8995],[1,f,0,8995]],stretch:{left:[57682,a],rep:[57684,a],right:[57683,a]}},9184:{dir:j,HW:[],stretch:{min:1.25,left:[714,f,-0.1],rep:[713,f,0,0
 .13],right:[715,f],fullExtenders:true}},9185:{dir:j,HW:[],stretch:{min:1.5,left:[715,f,-0.1,0.1],rep:[713,f],right:[714,f,-0.1,0.1],fullExtenders:true}},10502:{dir:j,HW:[],stretch:{min:1,left:[8656,f],rep:[61,f],right:[8739,d,0,-0.1]}},10503:{dir:j,HW:[],stretch:{min:0.7,left:[8872,i,0,-0.12],rep:[61,f],right:[8658,f]}},10574:{dir:j,HW:[],stretch:{min:0.5,left:[8636,f],rep:[8722,f],right:[8640,f]}},10575:{dir:e,HW:[],stretch:{min:0.5,top:[8638,i,0.12,0,1.1],ext:[9168,d],bot:[8642,i,0.12,0,1.1]}},10576:{dir:j,HW:[],stretch:{min:0.5,left:[8637,f],rep:[8722,f],right:[8641,f]}},10577:{dir:e,HW:[],stretch:{min:0.5,top:[8639,i,0.12,0,1.1],ext:[9168,d],bot:[8643,i,0.12,0,1.1]}},10586:{dir:j,HW:[],stretch:{min:1,left:[8636,f],rep:[8722,f],right:[8739,d,0,-0.05,0.9]}},10587:{dir:j,HW:[],stretch:{min:1,left:[8739,d,-0.05,-0.05,0.9],rep:[8722,f],right:[8640,f]}},10588:{dir:e,HW:[],stretch:{min:0.7,bot:[8869,h,0,0,0.75],ext:[9168,d],top:[8638,i,0.12,0,1.1]}},10589:{dir:e,HW:[],stretch:{
 min:0.7,top:[8868,h,0,0,0.75],ext:[9168,d],bot:[8642,i,0.12,0,1.1]}},10590:{dir:j,HW:[],stretch:{min:1,left:[8637,f],rep:[8722,f],right:[8739,d,0,-0.05,0.9]}},10591:{dir:j,HW:[],stretch:{min:1,left:[8739,d,-0.05,-0.05,0.9],rep:[8722,f],right:[8641,f]}},10592:{dir:e,HW:[],stretch:{min:0.7,bot:[8869,h,0,0,0.75],ext:[9168,d],top:[8639,i,0.12,0,1.1]}},10593:{dir:e,HW:[],stretch:{min:0.7,top:[8868,h,0,0,0.75],ext:[9168,d],bot:[8643,i,0.12,0,1.1]}}};for(var b in c){if(c.hasOwnProperty(b)){k[b]=c[b]}}MathJax.Ajax.loadComplete(g.fontDir+"/fontdata-extra.js")})(MathJax.OutputJax["HTML-CSS"]);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/fonts/TeX/fontdata.js b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/fontdata.js
new file mode 100644
index 0000000..8cc3290
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/fonts/TeX/fontdata.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/fonts/TeX/fontdata.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(g,k,l){var p="2.1";var f="MathJax_Main",j="MathJax_Main-bold",h="MathJax_Math-italic",m="MathJax_AMS",d="MathJax_Size1",c="MathJax_Size2",b="MathJax_Size3",a="MathJax_Size4";var n="H",e="V",i={load:"extra",dir:n},o={load:"extra",dir:e};g.Augment({FONTDATA:{version:p,TeX_factor:1,baselineskip:1.2,lineH:0.8,lineD:0.2,hasStyleChar:true,FONTS:{MathJax_Main:"Main/Regular/Main.js","MathJax_Main-bold":"Main/Bold/Main.js","MathJax_Main-italic":"Main/Italic/Main.js","MathJax_Math-italic":"Math/Italic/Main.js","MathJax_Math-bold-italic":"Math/BoldItalic/Main.js",MathJax_Caligraphic:"Caligraphic/Regular/Main.js",MathJax_Size1:"Size1/Regular/Main.js",MathJax_Size2:"Size2/Regular/Main.js",MathJax_Size3:"Size3/Regular/Main.js",MathJax_Size4:"Size4/Regular/Main.js",MathJax_AMS:"AMS/Regular/Main.js",MathJax_Fraktur:"Fraktur/Regular/Main.js","MathJax_Fraktur-bold":"Fraktur/Bold/Main.js",MathJax_SansSerif:"SansSerif/Regular/Main.js","MathJax_SansSerif-bold":"SansSerif/Bold/Main.js",
 "MathJax_SansSerif-italic":"SansSerif/Italic/Main.js",MathJax_Script:"Script/Regular/Main.js",MathJax_Typewriter:"Typewriter/Regular/Main.js"},VARIANT:{normal:{fonts:[f,d,m],offsetG:945,variantG:"italic",remap:{913:65,914:66,917:69,918:90,919:72,921:73,922:75,924:77,925:78,927:79,929:80,932:84,935:88,8726:[8726,"-TeX-variant"],8463:[8463,"-TeX-variant"],8242:[39,"sans-serif-italic"],10744:[47,k.VARIANT.ITALIC]}},bold:{fonts:[j,d,m],bold:true,offsetG:945,variantG:"bold-italic",remap:{913:65,914:66,917:69,918:90,919:72,921:73,922:75,924:77,925:78,927:79,929:80,932:84,935:88,10744:[47,"bold-italic"],8602:"\u2190\u0338",8603:"\u2192\u0338",8622:"\u2194\u0338",8653:"\u21D0\u0338",8654:"\u21D4\u0338",8655:"\u21D2\u0338",8708:"\u2203\u0338",8740:"\u2223\u0338",8742:"\u2225\u0338",8769:"\u223C\u0338",8775:"\u2245\u0338",8814:"<\u0338",8815:">\u0338",8816:"\u2264\u0338",8817:"\u2265\u0338",8832:"\u227A\u0338",8833:"\u227B\u0338",8840:"\u2286\u0338",8841:"\u2287\u0338",8876:"\u22A2\u0
 338",8877:"\u22A8\u0338",8928:"\u227C\u0338",8929:"\u227D\u0338"}},italic:{fonts:[h,"MathJax_Main-italic",f,d,m],italic:true,remap:{913:65,914:66,917:69,918:90,919:72,921:73,922:75,924:77,925:78,927:79,929:80,932:84,935:88}},"bold-italic":{fonts:["MathJax_Math-bold-italic",j,d,m],bold:true,italic:true,remap:{913:65,914:66,917:69,918:90,919:72,921:73,922:75,924:77,925:78,927:79,929:80,932:84,935:88}},"double-struck":{fonts:[m,f]},fraktur:{fonts:["MathJax_Fraktur",f,d,m]},"bold-fraktur":{fonts:["MathJax_Fraktur-bold",j,d,m],bold:true},script:{fonts:["MathJax_Script",f,d,m]},"bold-script":{fonts:["MathJax_Script",j,d,m],bold:true},"sans-serif":{fonts:["MathJax_SansSerif",f,d,m]},"bold-sans-serif":{fonts:["MathJax_SansSerif-bold",j,d,m],bold:true},"sans-serif-italic":{fonts:["MathJax_SansSerif-italic","MathJax_Main-italic",d,m],italic:true},"sans-serif-bold-italic":{fonts:["MathJax_SansSerif-italic","MathJax_Main-italic",d,m],bold:true,italic:true},monospace:{fonts:["MathJax_Typ
 ewriter",f,d,m]},"-tex-caligraphic":{fonts:["MathJax_Caligraphic",f],offsetA:65,variantA:"italic"},"-tex-oldstyle":{fonts:["MathJax_Caligraphic",f]},"-tex-mathit":{fonts:["MathJax_Main-italic",h,f,d,m],italic:true,noIC:true,remap:{913:65,914:66,917:69,918:90,919:72,921:73,922:75,924:77,925:78,927:79,929:80,932:84,935:88}},"-TeX-variant":{fonts:[m,f,d],remap:{8808:57356,8809:57357,8816:57361,8817:57358,10887:57360,10888:57359,8740:57350,8742:57351,8840:57366,8841:57368,8842:57370,8843:57371,10955:57367,10956:57369,988:57352,1008:57353,8726:[8726,k.VARIANT.NORMAL],8463:[8463,k.VARIANT.NORMAL]}},"-largeOp":{fonts:[c,d,f]},"-smallOp":{fonts:[d,f]}},RANGES:[{name:"alpha",low:97,high:122,offset:"A",add:32},{name:"number",low:48,high:57,offset:"N"},{name:"greek",low:945,high:1014,offset:"G"}],RULECHAR:8722,REMAP:{8254:713,8400:8636,8401:8640,8406:8592,8417:8596,8428:8641,8429:8637,8430:8592,8431:8594,8432:42,65079:9182,65080:9183,183:8901,697:8242,978:933,8213:8212,8215:95,8226:872
 9,8260:47,8965:8892,8966:10846,9642:9632,9652:9650,9653:9651,9656:9654,9662:9660,9663:9661,9666:9664,9001:10216,9002:10217,12296:10216,12297:10217,10072:8739,10799:215,9723:9633,9724:9632,8450:[67,k.VARIANT.DOUBLESTRUCK],8459:[72,k.VARIANT.SCRIPT],8460:[72,k.VARIANT.FRAKTUR],8461:[72,k.VARIANT.DOUBLESTRUCK],8462:[104,k.VARIANT.ITALIC],8464:[74,k.VARIANT.SCRIPT],8465:[74,k.VARIANT.FRAKTUR],8466:[76,k.VARIANT.SCRIPT],8469:[78,k.VARIANT.DOUBLESTRUCK],8473:[80,k.VARIANT.DOUBLESTRUCK],8474:[81,k.VARIANT.DOUBLESTRUCK],8475:[82,k.VARIANT.SCRIPT],8476:[82,k.VARIANT.FRAKTUR],8477:[82,k.VARIANT.DOUBLESTRUCK],8484:[90,k.VARIANT.DOUBLESTRUCK],8486:[937,k.VARIANT.NORMAL],8488:[90,k.VARIANT.FRAKTUR],8492:[66,k.VARIANT.SCRIPT],8493:[67,k.VARIANT.FRAKTUR],8496:[69,k.VARIANT.SCRIPT],8497:[70,k.VARIANT.SCRIPT],8499:[77,k.VARIANT.SCRIPT],8775:8774,8988:9484,8989:9488,8990:9492,8991:9496,8708:"\u2203\u0338",8716:"\u220B\u0338",8772:"\u2243\u0338",8777:"\u2248\u0338",8802:"\u2261\u0338",8813:"\u
 224D\u0338",8820:"\u2272\u0338",8821:"\u2273\u0338",8824:"\u2276\u0338",8825:"\u2277\u0338",8836:"\u2282\u0338",8837:"\u2283\u0338",8930:"\u2291\u0338",8931:"\u2292\u0338",10764:"\u222C\u222C",8243:"\u2032\u2032",8244:"\u2032\u2032\u2032",8246:"\u2035\u2035",8247:"\u2035\u2035\u2035",8279:"\u2032\u2032\u2032\u2032",8411:"...",8412:"...."},REMAPACCENT:{"\u2192":"\u20D7","\u2032":"'","\u2035":"`"},REMAPACCENTUNDER:{},PLANE1MAP:[[119808,119833,65,k.VARIANT.BOLD],[119834,119859,97,k.VARIANT.BOLD],[119860,119885,65,k.VARIANT.ITALIC],[119886,119911,97,k.VARIANT.ITALIC],[119912,119937,65,k.VARIANT.BOLDITALIC],[119938,119963,97,k.VARIANT.BOLDITALIC],[119964,119989,65,k.VARIANT.SCRIPT],[120068,120093,65,k.VARIANT.FRAKTUR],[120094,120119,97,k.VARIANT.FRAKTUR],[120120,120145,65,k.VARIANT.DOUBLESTRUCK],[120172,120197,65,k.VARIANT.BOLDFRAKTUR],[120198,120223,97,k.VARIANT.BOLDFRAKTUR],[120224,120249,65,k.VARIANT.SANSSERIF],[120250,120275,97,k.VARIANT.SANSSERIF],[120276,120301,65,k.VARIANT
 .BOLDSANSSERIF],[120302,120327,97,k.VARIANT.BOLDSANSSERIF],[120328,120353,65,k.VARIANT.SANSSERIFITALIC],[120354,120379,97,k.VARIANT.SANSSERIFITALIC],[120432,120457,65,k.VARIANT.MONOSPACE],[120458,120483,97,k.VARIANT.MONOSPACE],[120488,120513,913,k.VARIANT.BOLD],[120546,120570,913,k.VARIANT.ITALIC],[120572,120603,945,k.VARIANT.ITALIC],[120604,120628,913,k.VARIANT.BOLDITALIC],[120630,120661,945,k.VARIANT.BOLDITALIC],[120662,120686,913,k.VARIANT.BOLDSANSSERIF],[120720,120744,913,k.VARIANT.SANSSERIFBOLDITALIC],[120782,120791,48,k.VARIANT.BOLD],[120802,120811,48,k.VARIANT.SANSSERIF],[120812,120821,48,k.VARIANT.BOLDSANSSERIF],[120822,120831,48,k.VARIANT.MONOSPACE]],REMAPGREEK:{913:65,914:66,917:69,918:90,919:72,921:73,922:75,924:77,925:78,927:79,929:80,930:920,932:84,935:88,938:8711,970:8706,971:1013,972:977,973:1008,974:981,975:1009,976:982},RemapPlane1:function(t,s){for(var r=0,q=this.PLANE1MAP.length;r<q;r++){if(t<this.PLANE1MAP[r][0]){break}if(t<=this.PLANE1MAP[r][1]){t=t-this
 .PLANE1MAP[r][0]+this.PLANE1MAP[r][2];if(this.REMAPGREEK[t]){t=this.REMAPGREEK[t]}s=this.VARIANT[this.PLANE1MAP[r][3]];break}}return{n:t,variant:s}},DELIMITERS:{40:{dir:e,HW:[[1,f],[1.2,d],[1.8,c],[2.4,b],[3,a]],stretch:{top:[9115,a],ext:[9116,a],bot:[9117,a]}},41:{dir:e,HW:[[1,f],[1.2,d],[1.8,c],[2.4,b],[3,a]],stretch:{top:[9118,a],ext:[9119,a],bot:[9120,a]}},47:{dir:e,HW:[[1,f],[1.2,d],[1.8,c],[2.4,b],[3,a]]},91:{dir:e,HW:[[1,f],[1.2,d],[1.8,c],[2.4,b],[3,a]],stretch:{top:[9121,a],ext:[9122,a],bot:[9123,a]}},92:{dir:e,HW:[[1,f],[1.2,d],[1.8,c],[2.4,b],[3,a]]},93:{dir:e,HW:[[1,f],[1.2,d],[1.8,c],[2.4,b],[3,a]],stretch:{top:[9124,a],ext:[9125,a],bot:[9126,a]}},123:{dir:e,HW:[[1,f],[1.2,d],[1.8,c],[2.4,b],[3,a]],stretch:{top:[9127,a],mid:[9128,a],bot:[9129,a],ext:[9130,a]}},124:{dir:e,HW:[[1,f]],stretch:{ext:[8739,f]}},125:{dir:e,HW:[[1,f],[1.2,d],[1.8,c],[2.4,b],[3,a]],stretch:{top:[9131,a],mid:[9132,a],bot:[9133,a],ext:[9130,a]}},175:{dir:n,HW:[[0.59,f]],stretch:{rep:[175,f
 ]}},710:{dir:n,HW:[[0.267+0.25,f],[0.567+0.25,d],[1.005+0.33,c],[1.447+0.33,b],[1.909,a]]},732:{dir:n,HW:[[0.333+0.25,f],[0.555+0.25,d],[1+0.33,c],[1.443+0.33,b],[1.887,a]]},8214:{dir:e,HW:[[0.602,d],[1,f,null,8741]],stretch:{ext:[8741,f]}},8592:{dir:n,HW:[[1,f]],stretch:{left:[8592,f],rep:[8722,f]}},8593:{dir:e,HW:[[0.888,f]],stretch:{top:[8593,d],ext:[9168,d]}},8594:{dir:n,HW:[[1,f]],stretch:{rep:[8722,f],right:[8594,f]}},8595:{dir:e,HW:[[0.888,f]],stretch:{ext:[9168,d],bot:[8595,d]}},8596:{dir:n,HW:[[1,f]],stretch:{left:[8592,f],rep:[8722,f],right:[8594,f]}},8597:{dir:e,HW:[[1.044,f]],stretch:{top:[8593,d],ext:[9168,d],bot:[8595,d]}},8656:{dir:n,HW:[[1,f]],stretch:{left:[8656,f],rep:[61,f]}},8657:{dir:e,HW:[[0.888,f]],stretch:{top:[8657,d],ext:[8214,d]}},8658:{dir:n,HW:[[1,f]],stretch:{rep:[61,f],right:[8658,f]}},8659:{dir:e,HW:[[0.888,f]],stretch:{ext:[8214,d],bot:[8659,d]}},8660:{dir:n,HW:[[1,f]],stretch:{left:[8656,f],rep:[61,f],right:[8658,f]}},8661:{dir:e,HW:[[1.044,
 f]],stretch:{top:[8657,d],ext:[8214,d],bot:[8659,d]}},8722:{dir:n,HW:[[0.611,f]],stretch:{rep:[8722,f]}},8730:{dir:e,HW:[[1,f],[1.2,d],[1.8,c],[2.4,b],[3,a]],stretch:{top:[57345,a],ext:[57344,a],bot:[9143,a],fullExtenders:true}},8739:{dir:e,HW:[[1,f]],stretch:{ext:[8739,f]}},8741:{dir:e,HW:[[1,f]],stretch:{ext:[8741,f]}},8968:{dir:e,HW:[[1,f],[1.2,d],[1.8,c],[2.4,b],[3,a]],stretch:{top:[9121,a],ext:[9122,a]}},8969:{dir:e,HW:[[1,f],[1.2,d],[1.8,c],[2.4,b],[3,a]],stretch:{top:[9124,a],ext:[9125,a]}},8970:{dir:e,HW:[[1,f],[1.2,d],[1.8,c],[2.4,b],[3,a]],stretch:{ext:[9122,a],bot:[9123,a]}},8971:{dir:e,HW:[[1,f],[1.2,d],[1.8,c],[2.4,b],[3,a]],stretch:{ext:[9125,a],bot:[9126,a]}},9130:{dir:e,HW:[[0.32,a]],stretch:{top:[9130,a],ext:[9130,a],bot:[9130,a]}},9136:{dir:e,HW:[[0.989,f]],stretch:{top:[9127,a],ext:[9130,a],bot:[9133,a]}},9137:{dir:e,HW:[[0.989,f]],stretch:{top:[9131,a],ext:[9130,a],bot:[9129,a]}},9168:{dir:e,HW:[[0.602,d],[1,f,null,8739]],stretch:{ext:[8739,f]}},9182:{dir
 :n,HW:[],stretch:{min:0.9,left:[57680,a],mid:[[57683,57682],a],right:[57681,a],rep:[57684,a]}},9183:{dir:n,HW:[],stretch:{min:0.9,left:[57682,a],mid:[[57681,57680],a],right:[57683,a],rep:[57684,a]}},10216:{dir:e,HW:[[1,f],[1.2,d],[1.8,c],[2.4,b],[3,a]]},10217:{dir:e,HW:[[1,f],[1.2,d],[1.8,c],[2.4,b],[3,a]]},10222:{dir:e,HW:[[0.989,f]],stretch:{top:[9127,a],ext:[9130,a],bot:[9129,a]}},10223:{dir:e,HW:[[0.989,f]],stretch:{top:[9131,a],ext:[9130,a],bot:[9133,a]}},45:{alias:8722,dir:n},94:{alias:710,dir:n},95:{alias:8722,dir:n},126:{alias:732,dir:n},713:{alias:175,dir:n},770:{alias:710,dir:n},771:{alias:732,dir:n},780:{alias:711,dir:n},818:{alias:8722,dir:n},8213:{alias:8722,dir:n},8215:{alias:8722,dir:n},8254:{alias:175,dir:n},8725:{alias:47,dir:e},9001:{alias:10216,dir:e},9002:{alias:10217,dir:e},9135:{alias:8722,dir:n},9472:{alias:8722,dir:n},10072:{alias:8739,dir:e},12296:{alias:10216,dir:e},12297:{alias:10217,dir:e},65079:{alias:9182,dir:n},65080:{alias:9183,dir:n},61:i,860
 6:i,8608:i,8612:i,8613:o,8614:i,8615:o,8624:o,8625:o,8636:i,8637:i,8638:o,8639:o,8640:i,8641:i,8642:o,8643:o,8666:i,8667:i,9140:i,9141:i,9180:i,9181:i,9184:i,9185:i,10502:i,10503:i,10574:i,10575:o,10576:i,10577:o,10586:i,10587:i,10588:o,10589:o,10590:i,10591:i,10592:o,10593:o,10229:{alias:8592,dir:n},10230:{alias:8594,dir:n},10231:{alias:8596,dir:n},10232:{alias:8656,dir:n},10233:{alias:8658,dir:n},10234:{alias:8660,dir:n},10235:{alias:8612,dir:n},10236:{alias:8614,dir:n},10237:{alias:10502,dir:n},10238:{alias:10503,dir:n}}}});g.Font.oldLoadComplete=g.Font.loadComplete;g.Font.loadComplete=function(s,t,r,q){if(t!=null){this.oldLoadComplete(s,t,r,q)}if(s.family===d||s.family===c){if(s.version===1){g.FONTDATA.VARIANT["-largeOp"].remap={8898:8899,8899:8898};g.FONTDATA.VARIANT["-smallOp"].remap={8898:8899,8899:8898}}}};g.FONTDATA.FONTS.MathJax_Caligraphic={directory:"Caligraphic/Regular",family:"MathJax_Caligraphic",testString:"MATHJAX CALIGRAPHIC",skew:{65:0.194,66:0.139,67:0.13
 9,68:0.0833,69:0.111,70:0.111,71:0.111,72:0.111,73:0.0278,74:0.167,75:0.0556,76:0.139,77:0.139,78:0.0833,79:0.111,80:0.0833,81:0.111,82:0.0833,83:0.139,84:0.0278,85:0.0833,86:0.0278,87:0.0833,88:0.139,89:0.0833,90:0.139},32:[0,0,250,0,0],48:[452,22,500,39,460],49:[453,0,500,86,426],50:[453,0,500,44,449],51:[452,216,500,42,456],52:[464,194,500,28,471],53:[453,216,500,50,448],54:[665,22,500,42,456],55:[463,216,500,55,485],56:[666,21,500,43,456],57:[453,216,500,42,457],65:[728,50,798,30,819],66:[705,22,657,32,664],67:[705,25,527,12,533],68:[683,0,771,19,766],69:[705,22,528,30,564],70:[683,32,719,18,829],71:[704,119,595,44,599],72:[683,48,845,18,803],73:[683,0,545,-30,642],74:[683,119,678,47,839],75:[705,22,762,32,732],76:[705,22,690,32,656],77:[705,50,1201,28,1137],78:[789,50,820,-27,979],79:[705,22,796,58,777],80:[683,57,696,19,733],81:[705,131,817,114,787],82:[682,22,848,19,837],83:[705,22,606,18,642],84:[717,68,545,34,833],85:[683,28,626,-17,687],86:[683,52,613,25,658],87:[6
 83,53,988,25,1034],88:[683,0,713,52,807],89:[683,143,668,31,714],90:[683,0,725,37,767],160:[0,0,250,0,0]};g.FONTDATA.FONTS["MathJax_Main-bold"]={directory:"Main/Bold",family:"MathJax_Main",weight:"bold",testString:"MathJax Main ^ \u210F \u2223",skew:{305:0.0319,567:0.0958,8463:-0.0319,8467:0.128,8706:0.0958},Ranges:[[160,255,"Latin1Supplement"],[256,383,"LatinExtendedA"],[384,591,"LatinExtendedB"],[688,767,"SpacingModLetters"],[768,879,"CombDiacritMarks"],[8192,8303,"GeneralPunctuation"],[8400,8447,"CombDiactForSymbols"],[8448,8527,"LetterlikeSymbols"],[8592,8703,"Arrows"],[8704,8959,"MathOperators"],[8960,9215,"MiscTechnical"],[9632,9727,"GeometricShapes"],[9728,9983,"MiscSymbols"],[10176,10223,"MiscMathSymbolsA"],[10224,10239,"SupplementalArrowsA"],[10752,11007,"SuppMathOperators"]],32:[0,0,250,0,0],33:[705,-1,350,89,260],34:[694,-329,603,38,492],35:[694,193,958,64,893],36:[750,56,575,64,510],37:[750,56,958,65,893],38:[705,11,894,48,836],39:[694,-329,319,74,261],40:[750,24
 9,447,103,382],41:[750,249,447,64,343],42:[750,-306,575,73,501],43:[633,131,894,64,829],44:[171,194,319,74,258],45:[278,-166,383,13,318],46:[171,-1,319,74,245],47:[750,250,575,63,511],48:[654,10,575,45,529],49:[655,0,575,80,494],50:[654,0,575,57,517],51:[655,11,575,47,526],52:[656,0,575,32,542],53:[655,11,575,57,517],54:[655,11,575,48,526],55:[676,11,575,64,558],56:[654,11,575,48,526],57:[654,11,575,48,526],58:[444,-1,319,74,245],59:[444,194,319,74,248],60:[587,85,894,96,797],61:[393,-109,894,64,829],62:[587,85,894,96,797],63:[700,-1,543,65,478],64:[699,6,894,64,829],65:[698,0,869,40,828],66:[686,0,818,39,752],67:[697,11,831,64,766],68:[686,0,882,39,817],69:[680,0,756,39,723],70:[680,0,724,39,675],71:[697,10,904,64,845],72:[686,0,900,39,860],73:[686,0,436,25,410],74:[686,11,594,8,527],75:[686,0,901,39,852],76:[686,0,692,39,643],77:[686,0,1092,39,1052],78:[686,0,900,39,860],79:[696,10,864,64,798],80:[686,0,786,39,721],81:[696,193,864,64,805],82:[686,11,862,39,858],83:[697,11,
 639,64,574],84:[675,0,800,41,758],85:[686,11,885,39,845],86:[686,7,869,25,843],87:[686,7,1189,24,1164],88:[686,0,869,33,835],89:[686,0,869,19,849],90:[686,0,703,64,645],91:[750,250,319,128,293],92:[750,250,575,63,511],93:[750,250,319,25,190],94:[694,-520,575,126,448],95:[-10,61,575,0,574],96:[706,-503,575,114,338],97:[453,6,559,32,558],98:[694,6,639,29,600],99:[453,6,511,39,478],100:[694,6,639,38,609],101:[452,6,527,32,494],102:[700,0,351,40,452],103:[455,201,575,30,558],104:[694,0,639,37,623],105:[695,0,319,40,294],106:[695,200,351,-71,274],107:[694,0,607,29,587],108:[694,0,319,40,301],109:[450,0,958,37,942],110:[450,0,639,37,623],111:[452,5,575,32,542],112:[450,194,639,29,600],113:[450,194,607,38,609],114:[450,0,474,29,442],115:[453,6,454,38,414],116:[635,5,447,21,382],117:[450,6,639,37,623],118:[444,3,607,26,580],119:[444,4,831,25,805],120:[444,0,607,21,586],121:[444,200,607,23,580],122:[444,0,511,32,462],123:[750,250,575,70,504],124:[750,249,319,129,190],125:[750,250,575
 ,70,504],126:[344,-202,575,96,478],915:[680,0,692,39,643],916:[698,0,958,56,901],920:[696,10,894,64,829],923:[698,0,806,40,765],926:[675,0,767,48,718],928:[680,0,900,39,860],931:[686,0,831,63,766],933:[697,0,894,64,829],934:[686,0,831,64,766],936:[686,0,894,64,829],937:[696,0,831,51,779]};g.FONTDATA.FONTS["MathJax_Main-italic"]={directory:"Main/Italic",family:"MathJax_Main",style:"italic",testString:"MathJax Main ^ \u210F \u2223",Ranges:[[160,255,"Latin1Supplement"],[768,879,"CombDiacritMarks"],[8192,8303,"GeneralPunctuation"],[8448,8527,"LetterlikeSymbols"]],32:[0,0,250,0,0],33:[716,0,307,107,380],34:[694,-379,514,176,538],35:[694,194,818,115,828],37:[750,56,818,145,847],38:[716,22,767,127,802],39:[694,-379,307,213,377],40:[750,250,409,144,517],41:[750,250,409,17,390],42:[750,-320,511,195,584],43:[557,57,767,139,753],44:[121,194,307,69,232],45:[251,-180,358,84,341],46:[121,0,307,107,231],47:[750,250,511,19,617],48:[665,21,511,110,562],49:[666,0,511,110,468],50:[666,22,511,7
 6,551],51:[666,22,511,96,562],52:[666,194,511,46,478],53:[666,22,511,106,567],54:[665,22,511,120,565],55:[666,22,511,136,634],56:[666,21,511,99,553],57:[666,22,511,107,553],58:[431,0,307,107,308],59:[431,194,307,70,308],61:[367,-133,767,116,776],63:[716,0,511,195,551],64:[705,11,767,152,789],65:[716,0,743,58,696],66:[683,0,704,57,732],67:[705,21,716,150,812],68:[683,0,755,56,775],69:[680,0,678,54,743],70:[680,-1,653,54,731],71:[705,22,774,150,812],72:[683,0,743,54,860],73:[683,0,386,49,508],74:[683,21,525,78,622],75:[683,0,769,54,859],76:[683,0,627,54,628],77:[683,0,897,58,1010],78:[683,0,743,54,860],79:[704,22,767,149,788],80:[683,0,678,55,729],81:[704,194,767,149,788],82:[683,22,729,55,723],83:[705,22,562,74,633],84:[677,0,716,171,806],85:[683,22,743,194,860],86:[683,22,743,205,868],87:[683,22,999,205,1124],88:[683,0,743,50,825],89:[683,0,743,198,875],90:[683,0,613,80,704],91:[750,250,307,73,446],93:[750,250,307,-14,359],94:[694,-527,511,260,528],95:[-25,62,511,91,554],97:
 [442,11,511,101,543],98:[694,11,460,108,467],99:[441,10,460,103,469],100:[694,11,511,101,567],101:[442,10,460,107,470],102:[705,204,307,-23,450],103:[442,205,460,46,494],104:[694,11,511,69,544],105:[656,10,307,75,340],106:[656,204,307,-32,364],107:[694,11,460,69,498],108:[694,11,256,87,312],109:[442,11,818,75,851],110:[442,11,562,75,595],111:[442,11,511,103,517],112:[442,194,511,6,518],113:[442,194,460,101,504],114:[442,11,422,75,484],115:[442,11,409,76,418],116:[626,11,332,87,373],117:[441,11,537,75,570],118:[443,10,460,75,492],119:[443,11,664,75,696],120:[442,11,464,58,513],121:[441,205,486,75,522],122:[442,11,409,54,466],126:[318,-208,511,246,571],163:[714,11,769,88,699],305:[441,10,307,75,340],567:[442,204,332,-32,327],915:[680,0,627,54,705],916:[716,0,818,70,751],920:[704,22,767,149,788],923:[716,0,692,58,646],926:[677,0,664,74,754],928:[680,0,743,54,859],931:[683,0,716,80,782],933:[705,0,767,213,832],934:[683,0,716,159,728],936:[683,0,767,207,824],937:[705,0,716,100,75
 9]};g.FONTDATA.FONTS.MathJax_Main={directory:"Main/Regular",family:"MathJax_Main",testString:"MathJax Main ^ \u210F \u2223",skew:{305:0.0278,567:0.0833,8467:0.111,8472:0.111,8706:0.0833},Ranges:[[688,767,"SpacingModLetters"],[768,879,"CombDiacritMarks"],[9632,9727,"GeometricShapes"],[9728,9983,"MiscSymbols"]],32:[0,0,250,0,0],33:[716,-1,278,78,199],34:[694,-379,500,34,372],35:[694,194,833,56,777],36:[750,56,500,55,444],37:[750,56,833,56,776],38:[716,22,778,42,727],39:[694,-379,278,78,212],40:[750,250,389,94,333],41:[750,250,389,55,294],42:[750,-320,500,64,435],43:[583,82,778,56,722],44:[121,194,278,78,210],45:[252,-179,333,11,277],46:[120,0,278,78,199],47:[750,250,500,56,445],48:[666,22,500,39,460],49:[666,0,500,83,427],50:[666,0,500,50,449],51:[665,22,500,42,457],52:[677,0,500,28,471],53:[666,22,500,50,449],54:[666,22,500,42,456],55:[676,22,500,55,485],56:[666,22,500,43,457],57:[666,22,500,42,456],58:[430,0,278,78,199],59:[430,194,278,78,202],60:[540,40,778,83,694],61:[367,
 -133,778,56,722],62:[540,40,778,83,694],63:[705,-1,472,55,416],64:[705,11,778,56,722],65:[716,0,750,32,717],66:[683,0,708,28,651],67:[705,21,722,56,666],68:[683,0,764,27,708],69:[680,0,681,25,652],70:[680,0,653,25,610],71:[705,22,785,56,735],72:[683,0,750,25,724],73:[683,0,361,21,339],74:[683,22,514,25,465],75:[683,0,778,25,736],76:[683,0,625,25,582],77:[683,0,917,29,887],78:[683,0,750,25,724],79:[705,22,778,56,722],80:[683,0,681,27,624],81:[705,193,778,56,728],82:[683,22,736,27,732],83:[705,22,556,55,500],84:[677,0,722,36,685],85:[683,22,750,25,724],86:[683,22,750,19,730],87:[683,22,1028,18,1009],88:[683,0,750,23,726],89:[683,0,750,11,738],90:[683,0,611,55,560],91:[750,250,278,118,255],92:[750,250,500,56,444],93:[750,250,278,22,159],94:[694,-531,500,112,387],95:[-25,62,500,0,499],96:[699,-505,500,106,295],97:[448,11,500,34,493],98:[694,11,556,20,522],99:[448,11,444,34,415],100:[694,11,556,34,535],101:[448,11,444,28,415],102:[705,0,306,26,372],103:[453,206,500,29,485],104:[6
 94,0,556,25,542],105:[669,0,278,26,255],106:[669,205,306,-55,218],107:[694,0,528,20,511],108:[694,0,278,26,263],109:[442,0,833,25,819],110:[442,0,556,25,542],111:[448,10,500,28,471],112:[442,194,556,20,522],113:[442,194,528,33,535],114:[442,0,392,20,364],115:[448,11,394,33,359],116:[615,10,389,18,333],117:[442,11,556,25,542],118:[431,11,528,19,508],119:[431,11,722,18,703],120:[431,0,528,11,516],121:[431,204,528,19,508],122:[431,0,444,28,401],123:[750,250,500,65,434],124:[750,249,278,119,159],125:[750,250,500,65,434],126:[318,-215,500,83,416],160:[0,0,250,0,0],168:[669,-554,500,95,404],172:[356,-89,667,56,611],175:[590,-544,500,69,430],176:[715,-542,500,147,352],177:[666,0,778,56,722],180:[699,-505,500,203,393],215:[491,-9,778,147,630],247:[537,36,778,56,721],305:[442,0,278,26,255],567:[442,205,306,-55,218],710:[694,-531,500,112,387],711:[644,-513,500,114,385],713:[590,-544,500,69,430],714:[699,-505,500,203,393],715:[699,-505,500,106,295],728:[694,-515,500,92,407],729:[669,-5
 49,500,190,309],732:[668,-565,500,83,416],915:[680,0,625,25,582],916:[716,0,833,46,786],920:[705,22,778,56,722],923:[716,0,694,32,661],926:[677,0,667,42,624],928:[680,0,750,25,724],931:[683,0,722,55,666],933:[705,0,778,55,722],934:[683,0,722,56,665],936:[683,0,778,55,722],937:[704,0,722,44,677],8194:[0,0,500,0,0],8195:[0,0,999,0,0],8196:[0,0,333,0,0],8197:[0,0,250,0,0],8198:[0,0,167,0,0],8201:[0,0,167,0,0],8202:[0,0,83,0,0],8211:[285,-248,500,0,499],8212:[285,-248,1000,0,999],8216:[694,-379,278,64,198],8217:[694,-379,278,78,212],8220:[694,-379,500,128,466],8221:[694,-379,500,34,372],8224:[705,216,444,55,389],8225:[705,205,444,55,389],8230:[120,0,1172,78,1093],8242:[560,-43,275,30,262],8407:[714,-516,0,-471,-29],8463:[695,13,540,42,562],8465:[705,10,722,55,693],8467:[705,20,417,6,397],8472:[453,216,636,67,625],8476:[716,22,722,40,715],8501:[694,0,611,55,555],8592:[511,11,1000,55,944],8593:[694,193,500,17,483],8594:[511,11,1000,56,944],8595:[694,194,500,17,483],8596:[511,11,10
 00,55,944],8597:[772,272,500,17,483],8598:[720,195,1000,29,944],8599:[720,195,1000,55,970],8600:[695,220,1000,55,970],8601:[695,220,1000,29,944],8614:[511,11,1000,55,944],8617:[511,11,1126,55,1070],8618:[511,11,1126,55,1070],8636:[511,-230,1000,55,944],8637:[270,11,1000,55,944],8640:[511,-230,1000,56,944],8641:[270,11,1000,56,944],8652:[671,11,1000,55,944],8656:[525,24,1000,56,944],8657:[694,194,611,31,579],8658:[525,24,1000,56,944],8659:[694,194,611,31,579],8660:[526,25,1000,34,966],8661:[772,272,611,31,579],8704:[694,22,556,0,556],8706:[715,22,531,42,566],8707:[694,0,556,56,500],8709:[772,78,500,39,460],8711:[683,33,833,46,786],8712:[540,40,667,84,583],8713:[716,215,667,84,583],8715:[540,40,667,83,582],8722:[270,-230,778,84,694],8723:[500,166,778,56,722],8725:[750,250,500,56,445],8726:[750,250,500,56,444],8727:[465,-35,500,64,435],8728:[444,-55,500,55,444],8729:[444,-55,500,55,444],8730:[800,200,833,72,853],8733:[442,11,778,56,722],8734:[442,11,1000,55,944],8736:[694,0,722
 ,55,666],8739:[750,249,278,119,159],8741:[750,250,500,132,367],8743:[598,22,667,55,611],8744:[598,22,667,55,611],8745:[598,22,667,55,611],8746:[598,22,667,55,611],8747:[716,216,417,55,472],8764:[367,-133,778,55,722],8768:[583,83,278,55,222],8771:[464,-36,778,55,722],8773:[589,-22,1000,55,722],8776:[483,-55,778,55,722],8781:[484,-16,778,55,722],8784:[670,-133,778,56,722],8800:[716,215,778,56,722],8801:[464,-36,778,56,722],8804:[636,138,778,83,694],8805:[636,138,778,83,694],8810:[568,67,1000,56,944],8811:[567,67,1000,55,944],8826:[539,41,778,84,694],8827:[539,41,778,83,694],8834:[540,40,778,84,694],8835:[540,40,778,83,693],8838:[636,138,778,84,694],8839:[636,138,778,83,693],8846:[598,22,667,55,611],8849:[636,138,778,84,714],8850:[636,138,778,64,694],8851:[598,0,667,61,605],8852:[598,0,667,61,605],8853:[583,83,778,56,722],8854:[583,83,778,56,722],8855:[583,83,778,56,722],8856:[583,83,778,56,722],8857:[583,83,778,56,722],8866:[694,0,611,55,555],8867:[694,0,611,55,555],8868:[668,
 0,778,55,723],8869:[668,0,778,55,723],8872:[750,249,867,119,811],8900:[488,-12,500,12,488],8901:[310,-190,278,78,199],8902:[486,-16,500,3,497],8904:[505,5,900,26,873],8942:[900,30,278,78,199],8943:[310,-190,1172,78,1093],8945:[820,-100,1282,133,1148],8968:[750,250,444,174,422],8969:[750,250,444,21,269],8970:[750,250,444,174,422],8971:[750,250,444,21,269],8994:[388,-122,1000,55,944],8995:[378,-134,1000,55,944],9136:[744,244,412,55,357],9137:[744,244,412,56,357],10216:[750,250,389,110,333],10217:[750,250,389,55,278],10222:[744,244,412,173,357],10223:[744,244,412,56,240],10229:[511,11,1609,55,1525],10230:[511,11,1638,84,1553],10231:[511,11,1859,55,1803],10232:[525,24,1609,56,1553],10233:[525,24,1638,56,1582],10234:[525,24,1858,56,1802],10236:[511,11,1638,55,1553],10815:[683,0,750,28,721],10927:[636,138,778,84,694],10928:[636,138,778,83,694]};g.FONTDATA.FONTS["MathJax_Math-italic"]={directory:"Math/Italic",family:"MathJax_Math",style:"italic",testString:"MathJax Math \u03A5",ske
 w:{65:0.139,66:0.0833,67:0.0833,68:0.0556,69:0.0833,70:0.0833,71:0.0833,72:0.0556,73:0.111,74:0.167,75:0.0556,76:0.0278,77:0.0833,78:0.0833,79:0.0833,80:0.0833,81:0.0833,82:0.0833,83:0.0833,84:0.0833,85:0.0278,88:0.0833,90:0.0833,99:0.0556,100:0.167,101:0.0556,102:0.167,103:0.0278,104:-0.0278,108:0.0833,111:0.0556,112:0.0833,113:0.0833,114:0.0556,115:0.0556,116:0.0833,117:0.0278,118:0.0278,119:0.0833,120:0.0278,121:0.0556,122:0.0556,915:0.0833,916:0.167,920:0.0833,923:0.167,926:0.0833,928:0.0556,931:0.0833,933:0.0556,934:0.0833,936:0.0556,937:0.0833,945:0.0278,946:0.0833,948:0.0556,949:0.0833,950:0.0833,951:0.0556,952:0.0833,953:0.0556,956:0.0278,957:0.0278,958:0.111,959:0.0556,961:0.0833,962:0.0833,964:0.0278,965:0.0278,966:0.0833,967:0.0556,968:0.111,977:0.0833,981:0.0833,1009:0.0833,1013:0.0556},32:[0,0,250,0,0],47:[716,215,778,139,638],65:[716,0,750,35,726],66:[683,0,759,35,756],67:[705,22,715,50,760],68:[683,0,828,33,803],69:[680,0,738,31,764],70:[680,0,643,31,749],71:[
 705,22,786,50,760],72:[683,0,831,31,888],73:[683,0,440,26,504],74:[683,22,555,57,633],75:[683,0,849,31,889],76:[683,0,681,32,647],77:[683,0,970,35,1051],78:[683,0,803,31,888],79:[704,22,763,50,740],80:[683,0,642,33,751],81:[704,194,791,50,740],82:[683,21,759,33,755],83:[705,22,613,52,645],84:[677,0,584,21,704],85:[683,22,683,60,767],86:[683,22,583,52,769],87:[683,22,944,51,1048],88:[683,0,828,26,852],89:[683,-1,581,30,763],90:[683,0,683,58,723],97:[441,10,529,33,506],98:[694,11,429,40,422],99:[442,11,433,34,429],100:[694,10,520,33,523],101:[442,11,466,39,429],102:[705,205,490,55,550],103:[442,205,477,10,480],104:[694,11,576,48,555],105:[661,11,345,21,302],106:[661,204,412,-12,403],107:[694,11,521,48,503],108:[694,11,298,38,266],109:[442,11,878,21,857],110:[442,11,600,21,580],111:[441,11,485,34,476],112:[442,194,503,-39,497],113:[442,194,446,33,460],114:[442,11,451,21,430],115:[442,10,469,53,419],116:[626,11,361,19,330],117:[442,11,572,21,551],118:[443,11,485,21,467],119:[443
 ,11,716,21,690],120:[442,11,572,35,522],121:[442,205,490,21,496],122:[442,11,465,35,468],160:[0,0,250,0,0],915:[680,-1,615,31,721],916:[716,0,833,48,788],920:[704,22,763,50,740],923:[716,0,694,35,670],926:[677,0,742,53,777],928:[680,0,831,31,887],931:[683,0,780,58,806],933:[705,0,583,28,700],934:[683,0,667,24,642],936:[683,0,612,21,692],937:[704,0,772,80,786],945:[442,11,640,34,603],946:[705,194,566,23,573],947:[441,216,518,11,543],948:[717,10,444,36,451],949:[452,22,466,27,428],950:[704,204,438,44,471],951:[442,216,497,21,503],952:[705,10,469,35,462],953:[442,10,354,48,332],954:[442,11,576,49,554],955:[694,12,583,47,556],956:[442,216,603,23,580],957:[442,2,494,45,530],958:[704,205,438,21,443],959:[441,11,485,34,476],960:[431,11,570,19,573],961:[442,216,517,23,510],962:[442,107,363,31,405],963:[431,11,571,31,572],964:[431,13,437,18,517],965:[443,10,540,21,523],966:[442,218,654,50,618],967:[442,204,626,25,600],968:[694,205,651,21,634],969:[443,11,622,15,604],977:[705,11,591,2
 1,563],981:[694,205,596,43,579],982:[431,10,828,19,823],1009:[442,194,517,67,510],1013:[431,11,406,40,382]};g.FONTDATA.FONTS.MathJax_Size1={directory:"Size1/Regular",family:"MathJax_Size1",testString:"() [] {}",32:[0,0,250,0,0],40:[850,349,458,152,422],41:[850,349,458,35,305],47:[850,349,578,55,522],91:[850,349,417,202,394],92:[850,349,578,54,522],93:[850,349,417,22,214],123:[850,349,583,105,477],125:[850,349,583,105,477],160:[0,0,250,0,0],710:[744,-551,556,-8,564],732:[722,-597,556,1,554],770:[744,-551,0,-564,8],771:[722,-597,0,-555,-2],8214:[602,0,778,257,521],8593:[600,0,667,112,555],8595:[600,0,667,112,555],8657:[599,0,778,57,721],8659:[600,-1,778,57,721],8719:[750,250,944,55,888],8720:[750,250,944,55,888],8721:[750,250,1056,56,999],8730:[850,350,1000,111,1020],8739:[627,15,333,145,188],8741:[627,15,556,145,410],8747:[805,306,472,55,610],8748:[805,306,819,55,957],8749:[805,306,1166,55,1304],8750:[805,306,472,55,610],8896:[750,249,833,55,777],8897:[750,249,833,55,777],889
 8:[750,249,833,55,777],8899:[750,249,833,55,777],8968:[850,349,472,202,449],8969:[850,349,472,22,269],8970:[850,349,472,202,449],8971:[850,349,472,22,269],9168:[602,0,667,312,355],10216:[850,350,472,97,394],10217:[850,350,472,77,374],10752:[750,250,1111,56,1054],10753:[750,250,1111,56,1054],10754:[750,250,1111,56,1054],10756:[750,249,833,55,777],10758:[750,249,833,55,777]};g.FONTDATA.FONTS.MathJax_Size2={directory:"Size2/Regular",family:"MathJax_Size2",testString:"() [] {}",32:[0,0,250,0,0],40:[1150,649,597,180,561],41:[1150,649,597,35,416],47:[1150,649,811,56,754],91:[1150,649,472,224,455],92:[1150,649,811,54,754],93:[1150,649,472,16,247],123:[1150,649,667,119,547],125:[1150,649,667,119,547],160:[0,0,250,0,0],710:[772,-565,1000,-5,1004],732:[750,-611,1000,0,999],770:[772,-565,0,-1005,4],771:[750,-611,0,-1000,-1],8719:[950,450,1278,56,1221],8720:[950,450,1278,56,1221],8721:[950,450,1444,55,1388],8730:[1150,650,1000,111,1020],8747:[1360,862,556,55,944],8748:[1360,862,1084,55,
 1472],8749:[1360,862,1592,55,1980],8750:[1360,862,556,55,944],8896:[950,450,1111,55,1055],8897:[950,450,1111,55,1055],8898:[949,450,1111,55,1055],8899:[950,449,1111,55,1055],8968:[1150,649,528,224,511],8969:[1150,649,528,16,303],8970:[1150,649,528,224,511],8971:[1150,649,528,16,303],10216:[1150,649,611,112,524],10217:[1150,649,611,85,498],10752:[949,449,1511,56,1454],10753:[949,449,1511,56,1454],10754:[949,449,1511,56,1454],10756:[950,449,1111,55,1055],10758:[950,450,1111,55,1055]};g.FONTDATA.FONTS.MathJax_Size3={directory:"Size3/Regular",family:"MathJax_Size3",testString:"() [] {}",32:[0,0,250,0,0],40:[1450,949,736,209,701],41:[1450,949,736,34,526],47:[1450,949,1044,55,989],91:[1450,949,528,247,516],92:[1450,949,1044,56,988],93:[1450,949,528,11,280],123:[1450,949,750,130,618],125:[1450,949,750,131,618],160:[0,0,250,0,0],710:[772,-564,1444,-4,1447],732:[749,-610,1444,1,1442],770:[772,-564,0,-1448,3],771:[749,-610,0,-1443,-2],8730:[1450,950,1000,111,1020],8968:[1450,949,583,2
 46,571],8969:[1450,949,583,11,336],8970:[1450,949,583,246,571],8971:[1450,949,583,11,336],10216:[1450,950,750,126,654],10217:[1450,949,750,94,623]};g.FONTDATA.FONTS.MathJax_Size4={directory:"Size4/Regular",family:"MathJax_Size4",testString:"() [] {}",32:[0,0,250,0,0],40:[1750,1249,792,237,758],41:[1750,1249,792,33,554],47:[1750,1249,1278,56,1221],91:[1750,1249,583,269,577],92:[1750,1249,1278,56,1221],93:[1750,1249,583,5,313],123:[1750,1249,806,144,661],125:[1750,1249,806,144,661],160:[0,0,250,0,0],710:[845,-561,1889,-14,1902],732:[823,-583,1889,1,1885],770:[845,-561,0,-1903,13],771:[823,-583,0,-1888,-4],8730:[1750,1250,1000,111,1020],8968:[1750,1249,639,269,633],8969:[1750,1249,639,5,369],8970:[1750,1249,639,269,633],8971:[1750,1249,639,5,369],9115:[1154,655,875,291,843],9116:[610,10,875,291,417],9117:[1165,644,875,291,843],9118:[1154,655,875,31,583],9119:[610,10,875,457,583],9120:[1165,644,875,31,583],9121:[1154,645,667,319,666],9122:[602,0,667,319,403],9123:[1155,644,667,3
 19,666],9124:[1154,645,667,0,347],9125:[602,0,667,263,347],9126:[1155,644,667,0,347],9127:[899,10,889,384,718],9128:[1160,660,889,170,504],9129:[10,899,889,384,718],9130:[310,10,889,384,504],9131:[899,10,889,170,504],9132:[1160,660,889,384,718],9133:[10,899,889,170,504],9143:[935,885,1056,111,742],10216:[1750,1248,806,140,703],10217:[1750,1248,806,103,665],57344:[625,14,1056,702,742],57345:[605,14,1056,702,1076],57680:[120,213,450,-24,460],57681:[120,213,450,-10,474],57682:[333,0,450,-24,460],57683:[333,0,450,-10,474],57684:[120,0,400,-10,410]};g.FONTDATA.FONTS.MathJax_Main[8942][0]+=400;g.FONTDATA.FONTS.MathJax_Main[8945][0]+=700;g.FONTDATA.FONTS.MathJax_Size4[57684][0]+=200;g.FONTDATA.FONTS.MathJax_Size4[57684][1]+=200;g.FONTDATA.FONTS.MathJax_Main[8722][1]+=100;g.FONTDATA.FONTS.MathJax_Main[61][1]+=100;g.FONTDATA.FONTS.MathJax_Main[8773][2]-=222;g.FONTDATA.FONTS.MathJax_Main[8773][5]={rfix:-222};MathJax.Hub.Register.LoadHook(g.fontDir+"/Main/Bold/MathOperators.js",functio
 n(){g.FONTDATA.FONTS["MathJax_Main-bold"][8773][2]-=106;g.FONTDATA.FONTS["MathJax_Main-bold"][8773][5]={rfix:-106}});MathJax.Hub.Insert(g.FONTDATA.FONTS.MathJax_Main,{61152:[0,0,-575,0,0,{space:1}],61153:[0,0,-300,0,0,{space:1}],61160:[0,0,25,0,0,{space:1}]});if(!g.imgFonts){MathJax.Hub.Browser.Select({MSIE:function(s){if(g.config.availableFonts&&g.config.availableFonts.length){g.FONTDATA.REMAP[713]=175;g.FONTDATA.REMAP[714]=180;g.FONTDATA.REMAP[715]=96;g.FONTDATA.REMAP[730]=176;var r=g.msieCheckGreek=String.fromCharCode(915)+" "+String.fromCharCode(933)+" "+String.fromCharCode(923);g.FONTDATA.RANGES.push({name:"IEgreek",low:945,high:969,offset:"IEG",add:32});g.FONTDATA.RANGES.push({name:"IEGreek",low:913,high:1014,offset:"IEG"});if(g.Font.testFont({family:"MathJax_Greek",testString:r})){g.Augment({FONTDATA:{VARIANT:{normal:{offsetIEG:913,variantIEG:"-Greek"},fraktur:{offsetIEG:913,variantIEG:"-Greek"},script:{offsetIEG:913,variantIEG:"-Greek"},"-tex-caligraphic":{offsetIEG:
 913,variantIEG:"-Greek"},"-tex-oldstyle":{offsetIEG:913,variantIEG:"-Greek"},"-Greek":{fonts:["MathJax_Greek"]}}}});g.FONTDATA.FONTS.MathJax_Greek={directory:"Greek/Regular",family:"MathJax_Greek",testString:"\u0393 \u03A5 \u039B",32:[0,0,250,0,0],160:[0,0,250,0,0],915:[680,0,625,25,582],916:[716,0,833,46,786],920:[705,22,778,56,722],923:[716,0,694,32,661],926:[677,0,667,42,624],928:[680,0,750,25,724],931:[683,0,722,55,666],933:[705,0,778,55,722],934:[683,0,722,56,665],936:[683,0,778,55,722],937:[704,0,722,44,677]}}if(g.Font.testFont({family:"MathJax_Greek",weight:"bold",testString:r})){g.Augment({FONTDATA:{VARIANT:{bold:{offsetIEG:913,variantIEG:"-Greek-Bold"},"bold-fraktur":{offsetIEG:913,variantIEG:"-Greek-Bold"},"bold-script":{offsetIEG:913,variantIEG:"-Greek-Bold"},"-Greek-Bold":{fonts:["MathJax_Greek-bold"]}}}});g.FONTDATA.FONTS["MathJax_Greek-bold"]={directory:"Greek/Bold",family:"MathJax_Greek",weight:"bold",testString:"\u0393 \u03A5 \u039B",32:[0,0,250,0,0],160:[0,0
 ,250,0,0],915:[680,0,692,39,643],916:[698,0,958,56,901],920:[696,10,894,64,829],923:[698,0,806,40,765],926:[675,0,767,48,718],928:[680,0,900,39,860],931:[686,0,831,64,766],933:[697,0,894,64,829],934:[686,0,831,64,766],936:[686,0,894,64,829],937:[696,1,831,51,779]}}if(g.Font.testFont({family:"MathJax_Greek",style:"italic",testString:r})){g.Augment({FONTDATA:{VARIANT:{italic:{offsetIEG:913,variantIEG:"-Greek-Italic"},"-Greek-Italic":{fonts:["MathJax_Greek-italic"]}}}});g.FONTDATA.FONTS["MathJax_Greek-italic"]={directory:"Greek/Italic",family:"MathJax_Greek",style:"italic",testString:"\u0393 \u03A5 \u039B",skew:{915:0.0833,916:0.167,920:0.0833,923:0.167,926:0.0833,928:0.0556,931:0.0833,933:0.0556,934:0.0833,936:0.0556,937:0.0833,945:0.0278,946:0.0833,948:0.0556,949:0.0833,950:0.0833,951:0.0556,952:0.0833,953:0.0556,956:0.0278,957:0.0278,958:0.111,959:0.0556,961:0.0833,962:0.0833,964:0.0278,965:0.0278,966:0.0833,967:0.0556,968:0.111,977:0.0833,981:0.0833,1009:0.0833,1013:0.0556}
 ,32:[0,0,250,0,0],160:[0,0,250,0,0],915:[680,-1,615,31,721],916:[716,0,833,48,788],920:[704,22,763,50,740],923:[716,0,694,35,670],926:[678,0,742,53,777],928:[681,0,831,31,887],931:[683,0,780,58,806],933:[705,0,583,28,700],934:[683,0,667,24,642],936:[683,0,612,21,692],937:[704,0,772,80,786],945:[442,11,640,34,603],946:[705,194,566,23,573],947:[441,216,518,11,543],948:[717,10,444,36,451],949:[452,22,466,27,428],950:[704,204,438,44,471],951:[442,216,497,21,503],952:[705,10,469,35,462],953:[442,10,354,48,332],954:[442,11,576,49,554],955:[694,12,583,47,556],956:[442,216,603,23,580],957:[442,2,494,45,530],958:[704,205,438,21,443],959:[441,11,485,34,476],960:[431,11,570,19,573],961:[442,216,517,23,510],962:[442,107,363,31,405],963:[431,11,571,31,572],964:[431,13,437,18,517],965:[443,10,540,21,523],966:[442,218,654,50,618],967:[442,204,626,25,600],968:[694,205,651,21,634],969:[443,11,622,15,604],977:[705,11,591,21,563],981:[694,205,596,43,579],982:[431,10,828,19,823],1009:[442,194,5
 17,67,510],1013:[431,11,406,40,382]}}}if(g.msieIE6){var u="MathJax_WinIE6";g.FONTDATA.FONTS[u]="WinIE6/Regular/Main.js";g.FONTDATA.RANGES.push({name:"arrows",low:8592,high:8601,offset:"AR"});var t={variant:"-WinIE6",8658:57866,8660:57867,8704:57868,8706:57869,8707:57870,8711:57871,8712:57872,8715:57873,8725:57874,8730:57875,8733:57876,8734:57877,8736:57878,8739:57879,8741:57880,8743:57881,8744:57882,8745:57883,8746:57884,8747:57885,8764:57886,8776:57887,8800:57888,8801:57889,8804:57890,8805:57891,8810:57892,8811:57893,8834:57894,8835:57895,8838:57896,8839:57897,8853:57898,8857:57899,8869:57900,9651:57901,9661:57902,9711:57903,9824:57904,9825:57905,9826:57906,9827:57907,9837:57908,9838:57909,9839:57910,8806:58053,8807:58054,8814:58055,8815:58056,8988:58058,8989:58059,8990:58060,8991:58061,9484:58058,9488:58059,9492:58060,9496:58061,9585:58062,9586:58063,9632:58064,9633:58065,9650:58066,9654:58068,9660:58069,9661:58070,9664:58071,9674:58072,8756:58073,8757:58074,8786:58075,973
 3:58076,8765:58077};var w={variant:"-WinIE6",8658:57930,8660:57931,8704:57932,8706:57933,8707:57934,8711:57935,8712:57936,8715:57937,8725:57938,8730:57939,8733:57940,8734:57941,8736:57942,8739:57943,8741:57944,8743:57945,8744:57946,8745:57947,8746:57948,8747:57949,8764:57950,8776:57951,8800:57952,8801:57953,8804:57954,8805:57955,8810:57956,8811:57957,8834:57958,8835:57959,8838:57960,8839:57961,8853:57962,8857:57963,8869:57964,9651:57965,9661:57966,9711:57967,9824:57968,9825:57969,9826:57970,9827:57971,9837:57972,9838:57973,9839:57974,8806:58053,8807:58054,8814:58055,8815:58056,8988:58058,8989:58059,8990:58060,8991:58061,9484:58058,9488:58059,9492:58060,9496:58061,9585:58062,9586:58063,9632:58064,9633:58065,9650:58066,9654:58068,9660:58069,9661:58070,9664:58071,9674:58072,8756:58073,8757:58074,8786:58075,9733:58076,8765:58077};var q={offsetAR:57856,variantAR:"-WinIE6",remap:t};var v={offsetAR:57920,variantAR:"-WinIE6",remap:w};g.Augment({FONTDATA:{VARIANT:{normal:q,bold:v,ita
 lic:q,"bold-italic":v,"-TeX-variant":{remap:{8592:[58049,"-WinIE6"],8594:[58048,"-WinIE6"],8739:[58050,"-WinIE6"],8741:[58051,"-WinIE6"],8764:[58052,"-WinIE6"],9651:[58067,"-WinIE6"]}},"-largeOp":{fonts:[u,c,d,f],remap:{8719:58000,8721:58001,8747:58005,8750:58006}},"-smallOp":{fonts:[u,d,f],remap:{8719:57984,8721:57985,8747:57989,8750:57990}},"-WinIE6":{fonts:[u]}},DELIMITERS:{8730:{HW:{0:[1,u,null,57875],1:[1.2,u,null,57986],2:[1.8,u,null,58002],3:[2.4,u,null,58018],4:[3,u,null,58034]}},124:{stretch:{ext:[57879,u]}},8739:{HW:{0:[1,u,null,57879]},stretch:{ext:[57879,u]}},9168:{HW:{1:[1,u,null,57879]},stretch:{ext:[57879,u]}},8741:{HW:{0:[1,u,null,57880]},stretch:{ext:[57880,u]}},8592:{HW:{0:[0.889,u,null,57856]},stretch:{left:[57856,u]}},8593:{HW:{0:[0.888,u,null,57857]},stretch:{top:[57991,u],ext:[57993,u]}},8594:{HW:{0:[0.889,u,null,57858]},stretch:{right:[57858,u]}},8595:{HW:{0:[0.888,u,null,57859]},stretch:{bot:[57992,u],ext:[57993,u]}},8596:{HW:{0:[1,u,null,57860]},stre
 tch:{left:[57856,u],right:[57858,u]}},8597:{HW:{0:[1.044,u,null,57859]},stretch:{top:[57991,u],bot:[57992,u],ext:[57993,u]}}}}})}},Chrome:function(r){if(r.isPC&&navigator.userAgent.match(/Windows NT (5|6.0)/)){g.Augment({FONTDATA:{REMAP:{824:"\uEEE0/\uEEE8"},REMAPACCENT:{"\u0307":".","\u030B":"\u00B4\uEEE1\u00B4","\u20D7":"\u2192"}}});delete g.FONTDATA.REMAPACCENT["\u2192"]}if(r.isPC&&!MathJax.Hub.Browser.versionAtLeast("5.0")){var q="-WinChrome";g.Augment({FONTDATA:{VARIANT:{normal:{remap:{62:[62,q]}},bold:{remap:{58097:[62,q]}},italic:{remap:{100:[100,q]}},"-tex-caligraphic":{remap:{84:[84,q]}},"-largeOp":{remap:{10752:[10752,q]}},"-smallOp":{remap:{8899:[8899,q]}},"-WinChrome":{fonts:["MathJax_WinChrome"]}},DELIMITERS:{93:{stretch:{bot:[9126,"MathJax_WinChrome"]}},8971:{stretch:{bot:[9126,"MathJax_WinChrome"]}}}}});g.FONTDATA.FONTS.MathJax_WinChrome={directory:"WinChrome/Regular",family:"MathJax_WinChrome",testString:"> T d \u23A6 \u2A00",skew:{84:0.0278,58096:0.0319},32:
 [0,0,250,0,0],62:[540,40,778,83,694],84:[717,68,545,34,833],100:[694,11,511,101,567],160:[0,0,250,0,0],8899:[750,249,833,55,777],9126:[1155,644,667,0,347],10752:[949,449,1511,56,1454],58096:[720,69,644,38,947],58097:[587,85,894,96,797]}}}})}(function(){var t=g.FONTDATA.FONTS,s=g.config.availableFonts;var r,q=[];if(g.allowWebFonts){for(r in t){if(t[r].family){if(s&&s.length&&g.Font.testFont(t[r])){t[r].available=true;g.Font.loadComplete(t[r])}else{t[r].isWebFont=true;if(g.FontFaceBug){t[r].family=r}q.push(g.Font.fontFace(r))}}}if(!g.config.preloadWebFonts){g.config.preloadWebFonts=[]}g.config.preloadWebFonts.push(f,h,d);if(q.length){g.config.styles["@font-face"]=q}}else{if(s&&s.length){for(r in t){if(t[r].family&&g.Font.testFont(t[r])){t[r].available=true;g.Font.loadComplete(t[r])}}}}})();l.loadComplete(g.fontDir+"/fontdata.js")})(MathJax.OutputJax["HTML-CSS"],MathJax.ElementJax.mml,MathJax.Ajax);
+
diff --git a/data/mathjax/jax/output/HTML-CSS/jax.js b/data/mathjax/jax/output/HTML-CSS/jax.js
new file mode 100644
index 0000000..94e8411
--- /dev/null
+++ b/data/mathjax/jax/output/HTML-CSS/jax.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/HTML-CSS/jax.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(g,b,d){var f,h=b.Browser.isMobile;var e=MathJax.Object.Subclass({timeout:(h?15:8)*1000,FontInfo:{STIX:{family:"STIXSizeOneSym",testString:"() {} []"},TeX:{family:"MathJax_Size1",testString:"() {} []"}},comparisonFont:["sans-serif","monospace","script","Times","Courier","Arial","Helvetica"],testSize:["40px","50px","60px","30px","20px"],Init:function(){this.div=MathJax.HTML.addElement(document.body,"div",{id:"MathJax_Font_Test",style:{position:"absolute",visibility:"hidden",top:0,left:0,width:"auto",padding:0,border:0,margin:0,whiteSpace:"nowrap",textAlign:"left",textIndent:0,textTransform:"none",lineHeight:"normal",letterSpacing:"normal",wordSpacing:"normal",fontSize:this.testSize[0],fontWeight:"normal",fontStyle:"normal",fontSizeAdjust:"none"}},[""]);this.text=this.div.firstChild},findFont:function(n,k){if(k&&this.testCollection(k)){return k}for(var l=0,j=n.length;l<j;l++){if(n[l]===k){continue}if(this.testCollection(n[l])){return n[l]}}return null},testCollection:
 function(j){return this.testFont(this.FontInfo[j])},testFont:function(l){if(l.isWebFont&&d.FontFaceBug){this.div.style.fontWeight=this.div.style.fontStyle="normal"}else{this.div.style.fontWeight=(l.weight||"normal");this.div.style.fontStyle=(l.style||"normal")}var k=this.getComparisonWidths(l.testString,l.noStyleChar);if(k){this.div.style.fontFamily="'"+l.family+"',"+this.comparisonFont[0];if(this.div.offsetWidth==k[0]){this.div.style.fontFamily="'"+l.family+"',"+this.comparisonFont[k[2]];if(this.div.offsetWidth==k[1]){return false}}if(this.div.offsetWidth!=k[3]||this.div.offsetHeight!=k[4]){if(l.noStyleChar||!d.FONTDATA||!d.FONTDATA.hasStyleChar){return true}for(var n=0,j=this.testSize.length;n<j;n++){if(this.testStyleChar(l,this.testSize[n])){return true}}}}return false},styleChar:"\uEFFD",versionChar:"\uEFFE",compChar:"\uEFFF",testStyleChar:function(l,o){var r=3+(l.weight?2:0)+(l.style?4:0);var k="",m=0;var q=this.div.style.fontSize;this.div.style.fontSize=o;if(d.msieItal
 icWidthBug&&l.style==="italic"){this.text.nodeValue=k=this.compChar;m=this.div.offsetWidth}if(d.safariTextNodeBug){this.div.innerHTML=this.compChar+k}else{this.text.nodeValue=this.compChar+k}var j=this.div.offsetWidth-m;if(d.safariTextNodeBug){this.div.innerHTML=this.styleChar+k}else{this.text.nodeValue=this.styleChar+k}var p=Math.floor((this.div.offsetWidth-m)/j+0.5);if(p===r){if(d.safariTextNodeBug){this.div.innerHTML=this.versionChar+k}else{this.text.nodeValue=this.versionChar+k}l.version=Math.floor((this.div.offsetWidth-m)/j+1.5)/2}this.div.style.fontSize=q;return(p===r)},getComparisonWidths:function(o,l){if(d.FONTDATA&&d.FONTDATA.hasStyleChar&&!l){o+=this.styleChar+" "+this.compChar}if(d.safariTextNodeBug){this.div.innerHTML=o}else{this.text.nodeValue=o}this.div.style.fontFamily=this.comparisonFont[0];var k=this.div.offsetWidth;this.div.style.fontFamily=d.webFontDefault;var q=this.div.offsetWidth,n=this.div.offsetHeight;for(var p=1,j=this.comparisonFont.length;p<j;p++){
 this.div.style.fontFamily=this.comparisonFont[p];if(this.div.offsetWidth!=k){return[k,this.div.offsetWidth,p,q,n]}}return null},loadWebFont:function(k){b.Startup.signal.Post("HTML-CSS Jax - Web-Font "+d.fontInUse+"/"+k.directory);var m=MathJax.Message.File("Web-Font "+d.fontInUse+"/"+k.directory);var j=MathJax.Callback({});var l=MathJax.Callback(["loadComplete",this,k,m,j]);g.timer.start(g,[this.checkWebFont,k,l],0,this.timeout);return j},loadComplete:function(l,o,k,j){MathJax.Message.Clear(o);if(j===g.STATUS.OK){this.webFontLoaded=true;k();return}this.loadError(l);if(b.Browser.isFirefox&&d.allowWebFonts){var m=document.location.protocol+"//"+document.location.hostname;if(document.location.port!=""){m+=":"+document.location.port}m+="/";if(g.fileURL(d.webfontDir).substr(0,m.length)!==m){this.firefoxFontError(l)}}if(!this.webFontLoaded){d.loadWebFontError(l,k)}else{k()}},loadError:function(j){MathJax.Message.Set("Can't load web font "+d.fontInUse+"/"+j.directory,null,2000);b.S
 tartup.signal.Post(["HTML-CSS Jax - web font error",d.fontInUse+"/"+j.directory,j])},firefoxFontError:function(j){MathJax.Message.Set("Firefox can't load web fonts from a remote host",null,3000);b.Startup.signal.Post("HTML-CSS Jax - Firefox web fonts on remote host error")},checkWebFont:function(j,k,l){if(j.time(l)){return}if(d.Font.testFont(k)){l(j.STATUS.OK)}else{setTimeout(j,j.delay)}},fontFace:function(l){var m=d.allowWebFonts;var o=d.FONTDATA.FONTS[l];if(d.msieFontCSSBug&&!o.family.match(/-Web$/)){o.family+="-Web"}var k=g.fileURL(d.webfontDir+"/"+m);var j=l.replace(/-b/,"-B").replace(/-i/,"-I").replace(/-Bold-/,"-Bold");if(!j.match(/-/)){j+="-Regular"}if(m==="svg"){j+=".svg#"+j}else{j+="."+m}var n={"font-family":o.family,src:"url('"+k+"/"+j+"')"};if(m==="otf"){n.src+=" format('opentype')";k=g.fileURL(d.webfontDir+"/woff");n.src="url('"+k+"/"+j.replace(/otf$/,"woff")+"') format('woff'), "+n.src}else{if(m!=="eot"){n.src+=" format('"+m+"')"}}if(!(d.FontFaceBug&&o.isWebFont
 )){if(l.match(/-bold/)){n["font-weight"]="bold"}if(l.match(/-italic/)){n["font-style"]="italic"}}return n}});var i,a,c;d.Augment({config:{styles:{".MathJax":{display:"inline","font-style":"normal","font-weight":"normal","line-height":"normal","font-size":"100%","font-size-adjust":"none","text-indent":0,"text-align":"left","text-transform":"none","letter-spacing":"normal","word-spacing":"normal","word-wrap":"normal","white-space":"nowrap","float":"none",direction:"ltr",border:0,padding:0,margin:0},".MathJax_Display":{position:"relative",display:"block",width:"100%"},".MathJax img, .MathJax nobr, .MathJax a":{border:0,padding:0,margin:0,"max-width":"none","max-height":"none","vertical-align":0,"line-height":"normal","text-decoration":"none"},"img.MathJax_strut":{border:"0 !important",padding:"0 !important",margin:"0 !important","vertical-align":"0 !important"},".MathJax span":{display:"inline",position:"static",border:0,padding:0,margin:0,"vertical-align":0,"line-height":"norm
 al","text-decoration":"none"},".MathJax nobr":{"white-space":"nowrap ! important"},".MathJax img":{display:"inline ! important","float":"none ! important"},".MathJax_Processing":{visibility:"hidden",position:"fixed",width:0,height:0,overflow:"hidden"},".MathJax_Processed":{display:"none!important"},".MathJax_ExBox":{display:"block",overflow:"hidden",width:"1px",height:"60ex"},".MathJax .MathJax_EmBox":{display:"block",overflow:"hidden",width:"1px",height:"60em"},".MathJax .MathJax_HitBox":{cursor:"text",background:"white",opacity:0,filter:"alpha(opacity=0)"},".MathJax .MathJax_HitBox *":{filter:"none",opacity:1,background:"transparent"},"#MathJax_Tooltip":{position:"absolute",left:0,top:0,width:"auto",height:"auto",display:"none"},"#MathJax_Tooltip *":{filter:"none",opacity:1,background:"transparent"},"@font-face":{"font-family":"MathJax_Blank",src:"url('about:blank')"}}},settings:b.config.menuSettings,hideProcessedMath:true,Font:null,webFontDefault:"MathJax_Blank",allowWebF
 onts:"otf",Config:function(){if(!this.require){this.require=[]}this.Font=e();this.SUPER(arguments).Config.call(this);var k=this.settings;if(this.adjustAvailableFonts){this.adjustAvailableFonts(this.config.availableFonts)}if(k.scale){this.config.scale=k.scale}if(k.font&&k.font!=="Auto"){if(k.font==="TeX (local)"){this.config.availableFonts=["TeX"];this.config.preferredFont="TeX";this.config.webFont="TeX"}else{if(k.font==="STIX (local)"){this.config.availableFonts=["STIX"];this.config.preferredFont="STIX";this.config.webFont="TeX"}else{if(k.font==="TeX (web)"){this.config.availableFonts=[];this.config.preferredFont="";this.config.webFont="TeX"}else{if(k.font==="TeX (image)"){this.config.availableFonts=[];this.config.preferredFont="";this.config.webFont=""}}}}}var j=this.Font.findFont(this.config.availableFonts,this.config.preferredFont);if(!j&&this.allowWebFonts){j=this.config.webFont;if(j){this.webFonts=true}}if(!j&&this.config.imageFont){j=this.config.imageFont;this.imgFonts
 =true}if(j){this.fontInUse=j;this.fontDir+="/"+j;this.webfontDir+="/"+j;this.require.push(this.fontDir+"/fontdata.js");if(this.imgFonts){this.require.push(this.directory+"/imageFonts.js");b.Startup.signal.Post("HTML-CSS Jax - using image fonts")}}else{MathJax.Message.Set("Can't find a valid font using ["+this.config.availableFonts.join(", ")+"]",null,3000);this.FONTDATA={TeX_factor:1,baselineskip:1.2,lineH:0.8,lineD:0.2,ffLineH:0.8,FONTS:{},VARIANT:{normal:{fonts:[]}},RANGES:[],DELIMITERS:{},RULECHAR:45,REMAP:{}};if(MathJax.InputJax.TeX&&MathJax.InputJax.TeX.Definitions){MathJax.InputJax.TeX.Definitions.macros.overline[1]="002D";MathJax.InputJax.TeX.Definitions.macros.underline[1]="002D"}b.Startup.signal.Post("HTML-CSS Jax - no valid font")}this.require.push(MathJax.OutputJax.extensionDir+"/MathEvents.js")},Startup:function(){i=MathJax.Extension.MathEvents.Event;a=MathJax.Extension.MathEvents.Touch;c=MathJax.Extension.MathEvents.Hover;this.ContextMenu=i.ContextMenu;this.Mous
 edown=i.AltContextMenu;this.Mouseover=c.Mouseover;this.Mouseout=c.Mouseout;this.Mousemove=c.Mousemove;this.hiddenDiv=this.Element("div",{style:{visibility:"hidden",overflow:"hidden",position:"absolute",top:0,height:"1px",width:"auto",padding:0,border:0,margin:0,textAlign:"left",textIndent:0,textTransform:"none",lineHeight:"normal",letterSpacing:"normal",wordSpacing:"normal"}});if(!document.body.firstChild){document.body.appendChild(this.hiddenDiv)}else{document.body.insertBefore(this.hiddenDiv,document.body.firstChild)}this.hiddenDiv=this.addElement(this.hiddenDiv,"div",{id:"MathJax_Hidden"});var k=this.addElement(this.hiddenDiv,"div",{style:{width:"5in"}});this.pxPerInch=k.offsetWidth/5;this.hiddenDiv.removeChild(k);this.startMarker=this.createStrut(this.Element("span"),10,true);this.endMarker=this.addText(this.Element("span"),"x").parentNode;this.HDspan=this.Element("span");if(this.operaHeightBug){this.createStrut(this.HDspan,0)}if(this.msieInlineBlockAlignBug){this.HDimg=
 this.addElement(this.HDspan,"img",{style:{height:"0px",width:"1px"}});try{this.HDimg.src="about:blank"}catch(j){}}else{this.HDimg=this.createStrut(this.HDspan,0)}this.EmExSpan=this.Element("span",{style:{position:"absolute","font-size-adjust":"none"}},[["span",{className:"MathJax_ExBox"}],["span",{className:"MathJax"},[["span",{className:"MathJax_EmBox"}]]]]);this.linebreakSpan=this.Element("span",null,[["hr",{style:{width:"100%",size:1,padding:0,border:0,margin:0}}]]);return g.Styles(this.config.styles,["InitializeHTML",this])},removeSTIXfonts:function(l){for(var k=0,j=l.length;k<j;k++){if(l[k]==="STIX"){l.splice(k,1);j--;k--}}if(this.config.preferredFont==="STIX"){this.config.preferredFont=l[0]}},PreloadWebFonts:function(){if(!d.allowWebFonts||!d.config.preloadWebFonts){return}for(var k=0,j=d.config.preloadWebFonts.length;k<j;k++){var l=d.FONTDATA.FONTS[d.config.preloadWebFonts[k]];if(!l.available){d.Font.testFont(l)}}},InitializeHTML:function(){this.PreloadWebFonts();docu
 ment.body.appendChild(this.EmExSpan);document.body.appendChild(this.linebreakSpan);this.defaultEx=this.EmExSpan.firstChild.offsetHeight/60;this.defaultEm=this.EmExSpan.lastChild.firstChild.offsetHeight/60;this.defaultWidth=this.linebreakSpan.firstChild.offsetWidth;document.body.removeChild(this.linebreakSpan);document.body.removeChild(this.EmExSpan)},preTranslate:function(n){var t=n.jax[this.id],u,q=t.length,y,s,z,l,x,k,w,p,r,j,v=false,A=this.config.linebreaks.automatic,o=this.config.linebreaks.width;if(A){v=(o.match(/^\s*(\d+(\.\d*)?%\s*)?container\s*$/)!=null);if(v){o=o.replace(/\s*container\s*/,"")}else{j=this.defaultWidth}if(o===""){o="100%"}}else{j=100000}for(u=0;u<q;u++){y=t[u];if(!y.parentNode){continue}s=y.previousSibling;if(s&&String(s.className).match(/^MathJax(_Display)?( MathJax_Processing)?$/)){s.parentNode.removeChild(s)}k=y.MathJax.elementJax;if(!k){continue}k.HTMLCSS={display:(k.root.Get("display")==="block")};z=l=this.Element("span",{className:"MathJax",id:k
 .inputID+"-Frame",isMathJax:true,jaxID:this.id,oncontextmenu:i.Menu,onmousedown:i.Mousedown,onmouseover:i.Mouseover,onmouseout:i.Mouseout,onmousemove:i.Mousemove,onclick:i.Click,ondblclick:i.DblClick});if(b.Browser.noContextMenu){z.ontouchstart=a.start;z.ontouchend=a.end}if(k.HTMLCSS.display){l=this.Element("div",{className:"MathJax_Display"});l.appendChild(z)}else{if(this.msieDisappearingBug){z.style.display="inline-block"}}l.setAttribute("role","textbox");l.setAttribute("aria-readonly","true");l.className+=" MathJax_Processing";y.parentNode.insertBefore(l,y);y.parentNode.insertBefore(this.EmExSpan.cloneNode(true),y);if(v){l.parentNode.insertBefore(this.linebreakSpan.cloneNode(true),l)}}for(u=0;u<q;u++){y=t[u];if(!y.parentNode){continue}x=y.previousSibling;l=x.previousSibling;k=y.MathJax.elementJax;if(!k){continue}w=x.firstChild.offsetHeight/60;p=x.lastChild.firstChild.offsetHeight/60;if(v){j=l.previousSibling.firstChild.offsetWidth}if(w===0||w==="NaN"){this.hiddenDiv.appen
 dChild(l);k.HTMLCSS.isHidden=true;w=this.defaultEx;p=this.defaultEm;if(v){j=this.defaultWidth}}r=Math.floor(Math.max(this.config.minScaleAdjust/100,(w/this.TeX.x_height)/p)*this.config.scale);k.HTMLCSS.scale=r/100;k.HTMLCSS.fontSize=r+"%";k.HTMLCSS.em=k.HTMLCSS.outerEm=p;this.em=p*r/100;k.HTMLCSS.ex=w;k.HTMLCSS.lineWidth=(A?this.length2em(o,1,j/this.em):1000000)}for(u=0;u<q;u++){y=t[u];if(!y.parentNode){continue}x=t[u].previousSibling;k=t[u].MathJax.elementJax;if(!k){continue}if(v){z=x.previousSibling;if(!k.HTMLCSS.isHidden){z=z.previousSibling}z.parentNode.removeChild(z)}x.parentNode.removeChild(x)}n.HTMLCSSeqn=n.HTMLCSSlast=0;n.HTMLCSSi=-1;n.HTMLCSSchunk=this.config.EqnChunk;n.HTMLCSSdelay=false},Translate:function(k,o){if(!k.parentNode){return}if(o.HTMLCSSdelay){o.HTMLCSSdelay=false;b.RestartAfter(MathJax.Callback.Delay(this.config.EqnChunkDelay))}var j=k.MathJax.elementJax,n=j.root,l=document.getElementById(j.inputID+"-Frame"),p=(j.HTMLCSS.display?l.parentNode:l);this.em
 =f.mbase.prototype.em=j.HTMLCSS.em*j.HTMLCSS.scale;this.outerEm=j.HTMLCSS.em;this.scale=j.HTMLCSS.scale;this.linebreakWidth=j.HTMLCSS.lineWidth;l.style.fontSize=j.HTMLCSS.fontSize;this.initImg(l);this.initHTML(n,l);n.setTeXclass();try{n.toHTML(l,p)}catch(m){if(m.restart){while(l.firstChild){l.removeChild(l.firstChild)}}throw m}if(j.HTMLCSS.isHidden){k.parentNode.insertBefore(p,k)}p.className=p.className.split(/ /)[0];if(this.hideProcessedMath){p.className+=" MathJax_Processed";if(k.MathJax.preview){j.HTMLCSS.preview=k.MathJax.preview;delete k.MathJax.preview}o.HTMLCSSeqn+=(o.i-o.HTMLCSSi);o.HTMLCSSi=o.i;if(o.HTMLCSSeqn>=o.HTMLCSSlast+o.HTMLCSSchunk){this.postTranslate(o);o.HTMLCSSchunk=Math.floor(o.HTMLCSSchunk*this.config.EqnChunkFactor);o.HTMLCSSdelay=true}}},postTranslate:function(q){var k=q.jax[this.id];if(!this.hideProcessedMath){return}for(var o=q.HTMLCSSlast,j=q.HTMLCSSeqn;o<j;o++){var l=k[o];if(l&&l.MathJax.elementJax){l.previousSibling.className=l.previousSibling.cl
 assName.split(/ /)[0];var p=l.MathJax.elementJax.HTMLCSS;if(p.preview){p.preview.innerHTML="";l.MathJax.preview=p.preview;delete p.preview}}}if(this.forceReflow){var n=(document.styleSheets||[])[0]||{};n.disabled=true;n.disabled=false}q.HTMLCSSlast=q.HTMLCSSeqn},getJaxFromMath:function(j){if(j.parentNode.className==="MathJax_Display"){j=j.parentNode}do{j=j.nextSibling}while(j&&j.nodeName.toLowerCase()!=="script");return b.getJaxFor(j)},getHoverSpan:function(j,k){return j.root.HTMLspanElement()},getHoverBBox:function(j,m,n){var o=m.bbox,l=j.HTMLCSS.outerEm;var k={w:o.w*l,h:o.h*l,d:o.d*l};if(o.width){k.width=o.width}return k},Zoom:function(k,u,t,j,r){u.className="MathJax";u.style.fontSize=k.HTMLCSS.fontSize;var w=u.appendChild(this.EmExSpan.cloneNode(true));var n=w.lastChild.firstChild.offsetHeight/60;this.em=f.mbase.prototype.em=n;this.outerEm=n/k.HTMLCSS.scale;w.parentNode.removeChild(w);this.idPostfix="-zoom";k.root.toHTML(u,u);this.idPostfix="";var m=k.root.HTMLspanElement
 ().bbox.width;if(m){u.style.width=Math.floor(j-1.5*d.em)+"px";u.style.display="inline-block";var l=(k.root.id||"MathJax-Span-"+k.root.spanID)+"-zoom";var o=document.getElementById(l).firstChild;while(o&&o.style.width!==m){o=o.nextSibling}if(o){o.style.width="100%"}}u.style.position=t.style.position="absolute";var s=u.offsetWidth,q=u.offsetHeight,v=t.offsetHeight,p=t.offsetWidth;if(p===0){p=t.parentNode.offsetWidth}u.style.position=t.style.position="";return{Y:-i.getBBox(u).h,mW:p,mH:v,zW:s,zH:q}},initImg:function(j){},initHTML:function(k,j){},initFont:function(j){var l=d.FONTDATA.FONTS,k=d.config.availableFonts;if(k&&k.length&&d.Font.testFont(l[j])){l[j].available=true;return null}if(!this.allowWebFonts){return null}l[j].isWebFont=true;if(d.FontFaceBug){l[j].family=j;if(d.msieFontCSSBug){l[j].family+="-Web"}}return g.Styles({"@font-face":this.Font.fontFace(j)})},Remove:function(j){var k=document.getElementById(j.inputID+"-Frame");if(k){if(j.HTMLCSS.display){k=k.parentNode}k.
 parentNode.removeChild(k)}delete j.HTMLCSS},getHD:function(k){var j=k.style.position;k.style.position="absolute";this.HDimg.style.height="0px";k.appendChild(this.HDspan);var l={h:k.offsetHeight};this.HDimg.style.height=l.h+"px";l.d=k.offsetHeight-l.h;l.h-=l.d;l.h/=this.em;l.d/=this.em;k.removeChild(this.HDspan);k.style.position=j;return l},getW:function(n){var k,m,l=(n.bbox||{}).w,o=n;if(n.bbox&&n.bbox.exactW){return l}if((n.bbox&&l>=0&&!this.initialSkipBug)||this.negativeBBoxes||!n.firstChild){k=n.offsetWidth;m=n.parentNode.offsetHeight}else{if(n.bbox&&l<0&&this.msieNegativeBBoxBug){k=-n.offsetWidth,m=n.parentNode.offsetHeight}else{if(this.initialSkipBug){var j=n.style.position;n.style.position="absolute";o=this.startMarker;n.insertBefore(o,n.firstChild)}n.appendChild(this.endMarker);k=this.endMarker.offsetLeft-o.offsetLeft;n.removeChild(this.endMarker);if(this.initialSkipBug){n.removeChild(o);n.style.position=j}}}if(m!=null){n.parentNode.HH=m/this.em}return k/this.em},Meas
 ured:function(l,k){var m=l.bbox;if(m.width==null&&m.w&&!m.isMultiline){var j=this.getW(l);m.rw+=j-m.w;m.w=j;m.exactW=true}if(!k){k=l.parentNode}if(!k.bbox){k.bbox=m}return l},Remeasured:function(k,j){j.bbox=this.Measured(k,j).bbox},MeasureSpans:function(n){var q=[],s,p,l,t,j,o,k;for(p=0,l=n.length;p<l;p++){s=n[p];if(!s){continue}t=s.bbox;if(t.exactW||t.width||t.w===0||t.isMultiline){if(!s.parentNode.bbox){s.parentNode.bbox=t}continue}if(this.negativeBBoxes||!s.firstChild||(t.w>=0&&!this.initialSkipBug)||(t.w<0&&this.msieNegativeBBoxBug)){q.push([s])}else{if(this.initialSkipBug){j=this.startMarker.cloneNode(true);o=this.endMarker.cloneNode(true);s.insertBefore(j,s.firstChild);s.appendChild(o);q.push([s,j,o,s.style.position]);s.style.position="absolute"}else{o=this.endMarker.cloneNode(true);s.appendChild(o);q.push([s,null,o])}}}for(p=0,l=q.length;p<l;p++){s=q[p][0];t=s.bbox;var r=s.parentNode;if((t.w>=0&&!this.initialSkipBug)||this.negativeBBoxes||!s.firstChild){k=s.offsetWidt
 h;r.HH=s.parentNode.offsetHeight/this.em}else{if(t.w<0&&this.msieNegativeBBoxBug){k=-s.offsetWidth,r.HH=s.parentNode.offsetHeight/this.em}else{k=q[p][2].offsetLeft-((q[p][1]||{}).offsetLeft||0)}}k/=this.em;t.rw+=k-t.w;t.w=k;t.exactW=true;if(!r.bbox){r.bbox=t}}for(p=0,l=q.length;p<l;p++){s=q[p];if(s[1]){s[1].parentNode.removeChild(s[1]),s[0].style.position=s[3]}if(s[2]){s[2].parentNode.removeChild(s[2])}}},Em:function(j){if(Math.abs(j)<0.0006){return"0em"}return j.toFixed(3).replace(/\.?0+$/,"")+"em"},unEm:function(j){return parseFloat(j)},Px:function(j){j*=this.em;var k=(j<0?"-":"");return k+Math.abs(j).toFixed(1).replace(/\.?0+$/,"")+"px"},unPx:function(j){return parseFloat(j)/this.em},Percent:function(j){return(100*j).toFixed(1).replace(/\.?0+$/,"")+"%"},length2em:function(q,k,o){if(typeof(q)!=="string"){q=q.toString()}if(q===""){return""}if(q===f.SIZE.NORMAL){return 1}if(q===f.SIZE.BIG){return 2}if(q===f.SIZE.SMALL){return 0.71}if(q==="infinity"){return d.BIGDIMEN}var n=t
 his.FONTDATA.TeX_factor;if(q.match(/mathspace$/)){return d.MATHSPACE[q]*n}var l=q.match(/^\s*([-+]?(?:\.\d+|\d+(?:\.\d*)?))?(pt|em|ex|mu|px|pc|in|mm|cm|%)?/);var j=parseFloat(l[1]||"1"),p=l[2];if(o==null){o=1}if(k==null){k=1}if(p==="em"){return j*n}if(p==="ex"){return j*d.TeX.x_height*n}if(p==="%"){return j/100*o}if(p==="px"){return j/d.em}if(p==="pt"){return j/10*n}if(p==="pc"){return j*1.2*n}if(p==="in"){return j*this.pxPerInch/d.em}if(p==="cm"){return j*this.pxPerInch/d.em/2.54}if(p==="mm"){return j*this.pxPerInch/d.em/25.4}if(p==="mu"){return j/18*n*k}return j*n*o},thickness2em:function(k,j){var l=d.TeX.rule_thickness;if(k===f.LINETHICKNESS.MEDIUM){return l}if(k===f.LINETHICKNESS.THIN){return 0.67*l}if(k===f.LINETHICKNESS.THICK){return 1.67*l}return this.length2em(k,j,l)},getPadding:function(k){var m={top:0,right:0,bottom:0,left:0},j=false;for(var n in m){if(m.hasOwnProperty(n)){var l=k.style["padding"+n.charAt(0).toUpperCase()+n.substr(1)];if(l){m[n]=this.length2em(l);j
 =true}}}return(j?m:false)},getBorders:function(o){var l={top:0,right:0,bottom:0,left:0},m={},k=false;for(var p in l){if(l.hasOwnProperty(p)){var j="border"+p.charAt(0).toUpperCase()+p.substr(1);var n=o.style[j+"Style"];if(n){k=true;l[p]=this.length2em(o.style[j+"Width"]);m[j]=[o.style[j+"Width"],o.style[j+"Style"],o.style[j+"Color"]].join(" ")}}}l.css=m;return(k?l:false)},setBorders:function(j,k){if(k){for(var l in k.css){if(k.css.hasOwnProperty(l)){j.style[l]=k.css[l]}}}},createStrut:function(l,k,m){var j=this.Element("span",{isMathJax:true,style:{display:"inline-block",overflow:"hidden",height:k+"px",width:"1px",marginRight:"-1px"}});if(m){l.insertBefore(j,l.firstChild)}else{l.appendChild(j)}return j},createBlank:function(k,j,l){var m=this.Element("span",{isMathJax:true,style:{display:"inline-block",overflow:"hidden",height:"1px",width:this.Em(j)}});if(l){k.insertBefore(m,k.firstChild)}else{k.appendChild(m)}return m},createShift:function(k,j,m){var l=this.Element("span",{s
 tyle:{marginLeft:this.Em(j)},isMathJax:true});if(m){k.insertBefore(l,k.firstChild)}else{k.appendChild(l)}return l},createSpace:function(o,m,n,p,l,r){if(m<-n){n=-m}var q=this.Em(m+n),j=this.Em(-n);if(this.msieInlineBlockAlignBug){j=this.Em(d.getHD(o.parentNode).d-n)}if(o.isBox||r){var k=(o.scale==null?1:o.scale);o.bbox={exactW:true,h:m*k,d:n*k,w:p*k,rw:p*k,lw:0};o.style.height=q;o.style.verticalAlign=j;o.HH=(m+n)*k}else{o=this.addElement(o,"span",{style:{height:q,verticalAlign:j},isMathJax:true})}if(p>=0){o.style.width=this.Em(p);o.style.display="inline-block";o.style.overflow="hidden"}else{if(this.msieNegativeSpaceBug){o.style.height=""}o.style.marginLeft=this.Em(p);if(d.safariNegativeSpaceBug&&o.parentNode.firstChild==o){this.createBlank(o,0,true)}}if(l&&l!==f.COLOR.TRANSPARENT){o.style.backgroundColor=l;o.style.position="relative"}return o},createRule:function(q,m,o,r,k){if(m<-o){o=-m}var l=d.TeX.min_rule_thickness,n=1;if(r>0&&r*this.em<l){r=l/this.em}if(m+o>0&&(m+o)*this.
 em<l){n=1/(m+o)*(l/this.em);m*=n;o*=n}if(!k){k="solid"}else{k="solid "+k}k=this.Em(r)+" "+k;var s=(n===1?this.Em(m+o):l+"px"),j=this.Em(-o);var p=this.addElement(q,"span",{style:{borderLeft:k,display:"inline-block",overflow:"hidden",width:0,height:s,verticalAlign:j},bbox:{h:m,d:o,w:r,rw:r,lw:0,exactW:true},noAdjust:true,HH:m+o,isMathJax:true});if(r>0&&p.offsetWidth==0){p.style.width=this.Em(r)}if(q.isBox||q.className=="mspace"){q.bbox=p.bbox,q.HH=m+o}return p},createFrame:function(r,p,q,s,v,k){if(p<-q){q=-p}var o=2*v;if(this.msieFrameSizeBug){if(s<o){s=o}if(p+q<o){p=o-q}}if(this.msieBorderWidthBug){o=0}var u=this.Em(p+q-o),j=this.Em(-q-v),n=this.Em(s-o);var l=this.Em(v)+" "+k;var m=this.addElement(r,"span",{style:{border:l,display:"inline-block",overflow:"hidden",width:n,height:u},bbox:{h:p,d:q,w:s,rw:s,lw:0,exactW:true},noAdjust:true,HH:p+q,isMathJax:true});if(j){m.style.verticalAlign=j}return m},createStack:function(l,n,k){if(this.msiePaddingWidthBug){this.createStrut(l,0)
 }var m=String(k).match(/%$/);var j=(!m&&k!=null?k:0);l=this.addElement(l,"span",{noAdjust:true,HH:0,isMathJax:true,style:{display:"inline-block",position:"relative",width:(m?"100%":this.Em(j)),height:0}});if(!n){l.parentNode.bbox=l.bbox={exactW:true,h:-this.BIGDIMEN,d:-this.BIGDIMEN,w:j,lw:this.BIGDIMEN,rw:(!m&&k!=null?k:-this.BIGDIMEN)};if(m){l.bbox.width=k}}return l},createBox:function(k,j){var l=this.addElement(k,"span",{style:{position:"absolute"},isBox:true,isMathJax:true});if(j!=null){l.style.width=j}return l},addBox:function(j,k){k.style.position="absolute";k.isBox=k.isMathJax=true;return j.appendChild(k)},placeBox:function(s,q,p,n){s.isMathJax=true;var u=s.parentNode,B=s.bbox,w=u.bbox;if(this.msiePlaceBoxBug){this.addText(s,this.NBSP)}if(this.imgSpaceBug){this.addText(s,this.imgSpace)}var v,E=0;if(s.HH!=null){v=s.HH}else{if(B){v=Math.max(3,B.h+B.d)}else{v=s.offsetHeight/this.em}}if(!s.noAdjust){v+=1;v=Math.round(v*this.em)/this.em;if(this.msieInlineBlockAlignBug){thi
 s.addElement(s,"img",{className:"MathJax_strut",border:0,src:"about:blank",isMathJax:true,style:{width:0,height:this.Em(v)}})}else{this.addElement(s,"span",{isMathJax:true,style:{display:"inline-block",width:0,height:this.Em(v)}});if(d.chromeHeightBug){v-=(s.lastChild.offsetHeight-Math.round(v*this.em))/this.em}}}if(B){if(this.initialSkipBug){if(B.lw<0){E=B.lw;d.createBlank(s,-E,true)}if(B.rw>B.w){d.createBlank(s,B.rw-B.w+0.1)}}if(!this.msieClipRectBug&&!B.noclip&&!n){var A=3/this.em;var z=(B.H==null?B.h:B.H),k=(B.D==null?B.d:B.D);var C=v-z-A,o=v+k+A,m=B.lw-3*A,j=1000;if(this.initialSkipBug&&B.lw<0){m=-3*A}if(B.isFixed){j=B.width-m}s.style.clip="rect("+this.Em(C)+" "+this.Em(j)+" "+this.Em(o)+" "+this.Em(m)+")"}}s.style.top=this.Em(-p-v);s.style.left=this.Em(q+E);if(B&&w){if(B.H!=null&&(w.H==null||B.H+p>w.H)){w.H=B.H+p}if(B.D!=null&&(w.D==null||B.D-p>w.D)){w.D=B.D-p}if(B.h+p>w.h){w.h=B.h+p}if(B.d-p>w.d){w.d=B.d-p}if(w.H!=null&&w.H<=w.h){delete w.H}if(w.D!=null&&w.D<=w.d){del
 ete w.D}if(B.w+q>w.w){w.w=B.w+q;if(w.width==null){u.style.width=this.Em(w.w)}}if(B.rw+q>w.rw){w.rw=B.rw+q}if(B.lw+q<w.lw){w.lw=B.lw+q}if(B.width!=null&&!B.isFixed){if(w.width==null){u.style.width=w.width="100%"}s.style.width=B.width}}},alignBox:function(m,s,q){this.placeBox(m,0,q);var o=m.bbox;if(o.isMultiline){return}var k=o.width!=null&&!o.isFixed;var n=0,p=-o.w/2,j="50%";if(this.initialSkipBug){n=o.w-o.rw-0.1;p+=o.lw}if(this.msieMarginScaleBug){p=(p*this.em)+"px"}else{p=this.Em(p)}if(k){p="";j=(50-parseFloat(o.width)/2)+"%"}b.Insert(m.style,({right:{left:"",right:this.Em(n)},center:{left:j,marginLeft:p}})[s])},setStackWidth:function(k,j){if(typeof(j)==="number"){k.style.width=this.Em(Math.max(0,j));var l=k.bbox;if(l){l.w=j;l.exactW=true}l=k.parentNode.bbox;if(l){l.w=j;l.exactW=true}}else{k.style.width=k.parentNode.style.width="100%";if(k.bbox){k.bbox.width=j}if(k.parentNode.bbox){k.parentNode.bbox.width=j}}},createDelimiter:function(t,j,l,p,n){if(!j){t.bbox={h:0,d:0,w:thi
 s.TeX.nulldelimiterspace,lw:0};t.bbox.rw=t.bbox.w;this.createSpace(t,t.bbox.h,t.bbox.d,t.bbox.w);return}if(!p){p=1}if(!(l instanceof Array)){l=[l,l]}var s=l[1];l=l[0];var k={alias:j};while(k.alias){j=k.alias;k=this.FONTDATA.DELIMITERS[j];if(!k){k={HW:[0,this.FONTDATA.VARIANT[f.VARIANT.NORMAL]]}}}if(k.load){b.RestartAfter(g.Require(this.fontDir+"/fontdata-"+k.load+".js"))}for(var r=0,o=k.HW.length;r<o;r++){if(k.HW[r][0]*p>=l-0.01||(r==o-1&&!k.stretch)){if(k.HW[r][2]){p*=k.HW[r][2]}if(k.HW[r][3]){j=k.HW[r][3]}var q=this.addElement(t,"span");this.createChar(q,[j,k.HW[r][1]],p,n);t.bbox=q.bbox;t.offset=0.65*t.bbox.w;t.scale=p;return}}if(k.stretch){this["extendDelimiter"+k.dir](t,s,k.stretch,p,n)}},extendDelimiterV:function(z,s,D,E,v){var m=this.createStack(z,true);var u=this.createBox(m),t=this.createBox(m);this.createChar(u,(D.top||D.ext),E,v);this.createChar(t,(D.bot||D.ext),E,v);var l={bbox:{w:0,lw:0,rw:0}},C=l,o;var A=u.bbox.h+u.bbox.d+t.bbox.h+t.bbox.d;var q=-u.bbox.h;this.
 placeBox(u,0,q,true);q-=u.bbox.d;if(D.mid){C=this.createBox(m);this.createChar(C,D.mid,E,v);A+=C.bbox.h+C.bbox.d}if(D.min&&s<A*D.min){s=A*D.min}if(s>A){l=this.Element("span");this.createChar(l,D.ext,E,v);var B=l.bbox.h+l.bbox.d,j=B-0.05,w,p,x=(D.mid?2:1);p=w=Math.ceil((s-A)/(x*j));if(!D.fullExtenders){j=(s-A)/(x*w)}var r=(w/(w+1))*(B-j);j=B-r;q+=r+j-l.bbox.h;while(x-->0){while(w-->0){if(!this.msieCloneNodeBug){o=l.cloneNode(true)}else{o=this.Element("span");this.createChar(o,D.ext,E,v)}o.bbox=l.bbox;q-=j;this.placeBox(this.addBox(m,o),0,q,true)}q+=r-l.bbox.d;if(D.mid&&x){this.placeBox(C,0,q-C.bbox.h,true);w=p;q+=-(C.bbox.h+C.bbox.d)+r+j-l.bbox.h}}}else{q+=(A-s)/2;if(D.mid){this.placeBox(C,0,q-C.bbox.h,true);q+=-(C.bbox.h+C.bbox.d)}q+=(A-s)/2}this.placeBox(t,0,q-t.bbox.h,true);q-=t.bbox.h+t.bbox.d;z.bbox={w:Math.max(u.bbox.w,l.bbox.w,t.bbox.w,C.bbox.w),lw:Math.min(u.bbox.lw,l.bbox.lw,t.bbox.lw,C.bbox.lw),rw:Math.max(u.bbox.rw,l.bbox.rw,t.bbox.rw,C.bbox.rw),h:0,d:-q,exactW:tru
 e};z.scale=E;z.offset=0.55*z.bbox.w;z.isMultiChar=true;this.setStackWidth(m,z.bbox.w)},extendDelimiterH:function(A,m,D,F,v){var q=this.createStack(A,true);var o=this.createBox(q),B=this.createBox(q);this.createChar(o,(D.left||D.rep),F,v);this.createChar(B,(D.right||D.rep),F,v);var j=this.Element("span");this.createChar(j,D.rep,F,v);var C={bbox:{h:-this.BIGDIMEN,d:-this.BIGDIMEN}},l;this.placeBox(o,-o.bbox.lw,0,true);var t=(o.bbox.rw-o.bbox.lw)+(B.bbox.rw-B.bbox.lw)-0.05,s=o.bbox.rw-o.bbox.lw-0.025,u;if(D.mid){C=this.createBox(q);this.createChar(C,D.mid,F,v);t+=C.bbox.w}if(D.min&&m<t*D.min){m=t*D.min}if(m>t){var E=j.bbox.rw-j.bbox.lw,p=E-0.05,y,r,z=(D.mid?2:1);r=y=Math.ceil((m-t)/(z*p));if(!D.fillExtenders){p=(m-t)/(z*y)}u=(y/(y+1))*(E-p);p=E-u;s-=j.bbox.lw+u;while(z-->0){while(y-->0){if(!this.cloneNodeBug){l=j.cloneNode(true)}else{l=this.Element("span");this.createChar(l,D.rep,F,v)}l.bbox=j.bbox;this.placeBox(this.addBox(q,l),s,0,true);s+=p}if(D.mid&&z){this.placeBox(C,s,0,t
 rue);s+=C.bbox.w-u;y=r}}}else{s-=(t-m)/2;if(D.mid){this.placeBox(C,s,0,true);s+=C.bbox.w}s-=(t-m)/2}this.placeBox(B,s,0,true);A.bbox={w:s+B.bbox.rw,lw:0,rw:s+B.bbox.rw,H:Math.max(o.bbox.h,j.bbox.h,B.bbox.h,C.bbox.h),D:Math.max(o.bbox.d,j.bbox.d,B.bbox.d,C.bbox.d),h:j.bbox.h,d:j.bbox.d,exactW:true};A.scale=F;A.isMultiChar=true;this.setStackWidth(q,A.bbox.w)},createChar:function(r,o,l,j){r.isMathJax=true;var q=r,s="",n={fonts:[o[1]],noRemap:true};if(j&&j===f.VARIANT.BOLD){n.fonts=[o[1]+"-bold",o[1]]}if(typeof(o[1])!=="string"){n=o[1]}if(o[0] instanceof Array){for(var p=0,k=o[0].length;p<k;p++){s+=String.fromCharCode(o[0][p])}}else{s=String.fromCharCode(o[0])}if(o[4]){l*=o[4]}if(l!==1||o[3]){q=this.addElement(r,"span",{style:{fontSize:this.Percent(l)},scale:l,isMathJax:true});this.handleVariant(q,n,s);r.bbox=q.bbox}else{this.handleVariant(r,n,s)}if(o[2]){r.style.marginLeft=this.Em(o[2])}if(o[3]){r.firstChild.style.verticalAlign=this.Em(o[3]);r.bbox.h+=o[3];if(r.bbox.h<0){r.bbox
 .h=0}}if(o[5]){r.bbox.h+=o[5]}if(o[6]){r.bbox.d+=o[6]}if(this.AccentBug&&r.bbox.w===0){q.firstChild.nodeValue+=this.NBSP}},positionDelimiter:function(k,j){j-=k.bbox.h;k.bbox.d-=j;k.bbox.h+=j;if(j){if(this.safariVerticalAlignBug||this.konquerorVerticalAlignBug||(this.operaVerticalAlignBug&&k.isMultiChar)){if(k.firstChild.style.display===""&&k.style.top!==""){k=k.firstChild;j-=d.unEm(k.style.top)}k.style.position="relative";k.style.top=this.Em(-j)}else{k.style.verticalAlign=this.Em(j);if(d.ffVerticalAlignBug){d.createRule(k.parentNode,k.bbox.h,0,0)}}}},handleVariant:function(z,o,r){var y="",w,B,s,C,j=z,k=!!z.style.fontFamily;if(r.length===0){return}if(!z.bbox){z.bbox={w:0,h:-this.BIGDIMEN,d:-this.BIGDIMEN,rw:-this.BIGDIMEN,lw:this.BIGDIMEN}}if(!o){o=this.FONTDATA.VARIANT[f.VARIANT.NORMAL]}C=o;for(var A=0,x=r.length;A<x;A++){o=C;w=r.charCodeAt(A);B=r.charAt(A);if(w>=55296&&w<56319){A++;w=(((w-55296)<<10)+(r.charCodeAt(A)-56320))+65536;if(this.FONTDATA.RemapPlane1){var D=this.FO
 NTDATA.RemapPlane1(w,o);w=D.n;o=D.variant}}else{var t,q,u=this.FONTDATA.RANGES;for(t=0,q=u.length;t<q;t++){if(u[t].name==="alpha"&&o.noLowerCase){continue}var p=o["offset"+u[t].offset];if(p&&w>=u[t].low&&w<=u[t].high){if(u[t].remap&&u[t].remap[w]){w=p+u[t].remap[w]}else{w=w-u[t].low+p;if(u[t].add){w+=u[t].add}}if(o["variant"+u[t].offset]){o=this.FONTDATA.VARIANT[o["variant"+u[t].offset]]}break}}}if(o.remap&&o.remap[w]){if(o.remap[w] instanceof Array){var l=o.remap[w];w=l[0];o=this.FONTDATA.VARIANT[l[1]]}else{if(typeof(o.remap[w])==="string"){r=o.remap[w]+r.substr(A+1);A=0;x=r.length;w=r.charCodeAt(0)}else{w=o.remap[w];if(o.remap.variant){o=this.FONTDATA.VARIANT[o.remap.variant]}}}}if(this.FONTDATA.REMAP[w]&&!o.noRemap){w=this.FONTDATA.REMAP[w];if(w instanceof Array){o=this.FONTDATA.VARIANT[w[1]];w=w[0]}if(typeof(w)==="string"){r=w+r.substr(A+1);A=0;x=r.length;w=w.charCodeAt(0)}}s=this.lookupChar(o,w);B=s[w];if(k||(!this.checkFont(s,j.style)&&!B[5].img)){if(y.length){this.add
 Text(j,y);y=""}var v=!!j.style.fontFamily||!!z.style.fontStyle||!!z.style.fontWeight||!s.directory||k;k=false;if(j!==z){v=!this.checkFont(s,z.style);j=z}if(v){j=this.addElement(z,"span",{isMathJax:true,subSpan:true})}this.handleFont(j,s,j!==z)}y=this.handleChar(j,s,B,w,y);if(!(B[5]||{}).space){if(B[0]/1000>z.bbox.h){z.bbox.h=B[0]/1000}if(B[1]/1000>z.bbox.d){z.bbox.d=B[1]/1000}}if(z.bbox.w+B[3]/1000<z.bbox.lw){z.bbox.lw=z.bbox.w+B[3]/1000}if(z.bbox.w+B[4]/1000>z.bbox.rw){z.bbox.rw=z.bbox.w+B[4]/1000}z.bbox.w+=B[2]/1000}if(y.length){this.addText(j,y)}if(z.scale&&z.scale!==1){z.bbox.h*=z.scale;z.bbox.d*=z.scale;z.bbox.w*=z.scale;z.bbox.lw*=z.scale;z.bbox.rw*=z.scale}if(r.length==1&&s.skew&&s.skew[w]){z.bbox.skew=s.skew[w]}},checkFont:function(j,k){var l=(k.fontWeight||"normal");if(l.match(/^\d+$/)){l=(parseInt(l)>=600?"bold":"normal")}return(j.family.replace(/'/g,"")===k.fontFamily.replace(/'/g,"")&&(j.style||"normal")===(k.fontStyle||"normal")&&(j.weight||"normal")===l)},handl
 eFont:function(l,j,n){l.style.fontFamily=j.family;if(!j.directory){l.style.fontSize=Math.floor(100/d.scale+0.5)+"%"}if(!(d.FontFaceBug&&j.isWebFont)){var k=j.style||"normal",m=j.weight||"normal";if(k!=="normal"||n){l.style.fontStyle=k}if(m!=="normal"||n){l.style.fontWeight=m}}},handleChar:function(k,j,r,q,p){var o=r[5];if(o.space){if(p.length){this.addText(k,p)}d.createShift(k,r[2]/1000);return""}if(o.img){return this.handleImg(k,j,r,q,p)}if(o.isUnknown&&this.FONTDATA.DELIMITERS[q]){if(p.length){this.addText(k,p)}var m=k.scale;d.createDelimiter(k,q,0,1,j);if(this.FONTDATA.DELIMITERS[q].dir==="V"){k.style.verticalAlign=this.Em(k.bbox.d);k.bbox.h+=k.bbox.d;k.bbox.d=0}k.scale=m;r[0]=k.bbox.h*1000;r[1]=k.bbox.d*1000;r[2]=k.bbox.w*1000;r[3]=k.bbox.lw*1000;r[4]=k.bbox.rw*1000;return""}if(o.c==null){if(q<=65535){o.c=String.fromCharCode(q)}else{var l=q-65536;o.c=String.fromCharCode((l>>10)+55296)+String.fromCharCode((l&1023)+56320)}}if(o.rfix){this.addText(k,p+o.c);d.createShift(k,o
 .rfix/1000);return""}if(r[2]||!this.msieAccentBug||p.length){return p+o.c}d.createShift(k,r[3]/1000);d.createShift(k,(r[4]-r[3])/1000);this.addText(k,o.c);d.createShift(k,-r[4]/1000);return""},handleImg:function(k,j,o,m,l){return l},lookupChar:function(o,r){var l,j;if(!o.FONTS){var q=this.FONTDATA.FONTS;var p=(o.fonts||this.FONTDATA.VARIANT.normal.fonts);if(!(p instanceof Array)){p=[p]}if(o.fonts!=p){o.fonts=p}o.FONTS=[];for(l=0,j=p.length;l<j;l++){if(q[p[l]]){o.FONTS.push(q[p[l]]);q[p[l]].name=p[l]}}}for(l=0,j=o.FONTS.length;l<j;l++){var k=o.FONTS[l];if(typeof(k)==="string"){delete o.FONTS;this.loadFont(k)}if(k[r]){if(k[r].length===5){k[r][5]={}}if(d.allowWebFonts&&!k.available){this.loadWebFont(k)}else{return k}}else{this.findBlock(k,r)}}return this.unknownChar(o,r)},unknownChar:function(j,l){var k=(j.defaultFont||{family:d.config.undefinedFamily});if(j.bold){k.weight="bold"}if(j.italic){k.style="italic"}if(!k[l]){k[l]=[800,200,500,0,500,{isUnknown:true}]}b.signal.Post(["H
 TML-CSS Jax - unknown char",l,j]);return k},findBlock:function(l,q){if(l.Ranges){for(var p=0,k=l.Ranges.length;p<k;p++){if(q<l.Ranges[p][0]){return}if(q<=l.Ranges[p][1]){var o=l.Ranges[p][2];for(var n=l.Ranges.length-1;n>=0;n--){if(l.Ranges[n][2]==o){l.Ranges.splice(n,1)}}this.loadFont(l.directory+"/"+o+".js")}}}},loadFont:function(k){var j=MathJax.Callback.Queue();j.Push(["Require",g,this.fontDir+"/"+k]);if(this.imgFonts){if(!MathJax.isPacked){k=k.replace(/\/([^\/]*)$/,d.imgPacked+"/$1")}j.Push(["Require",g,this.webfontDir+"/png/"+k])}b.RestartAfter(j.Push({}))},loadWebFont:function(j){j.available=j.isWebFont=true;if(d.FontFaceBug){j.family=j.name;if(d.msieFontCSSBug){j.family+="-Web"}}b.RestartAfter(this.Font.loadWebFont(j))},loadWebFontError:function(k,j){b.Startup.signal.Post("HTML-CSS Jax - disable web fonts");k.isWebFont=false;if(this.config.imageFont&&this.config.imageFont===this.fontInUse){this.imgFonts=true;b.Startup.signal.Post("HTML-CSS Jax - switch to image fonts
 ");b.Startup.signal.Post("HTML-CSS Jax - using image fonts");MathJax.Message.Set("Web-Fonts not available -- using image fonts instead",null,3000);g.Require(this.directory+"/imageFonts.js",j)}else{this.allowWebFonts=false;j()}},Element:MathJax.HTML.Element,addElement:MathJax.HTML.addElement,TextNode:MathJax.HTML.TextNode,addText:MathJax.HTML.addText,ucMatch:MathJax.HTML.ucMatch,BIGDIMEN:10000000,ID:0,idPostfix:"",GetID:function(){this.ID++;return this.ID},MATHSPACE:{veryverythinmathspace:1/18,verythinmathspace:2/18,thinmathspace:3/18,mediummathspace:4/18,thickmathspace:5/18,verythickmathspace:6/18,veryverythickmathspace:7/18,negativeveryverythinmathspace:-1/18,negativeverythinmathspace:-2/18,negativethinmathspace:-3/18,negativemediummathspace:-4/18,negativethickmathspace:-5/18,negativeverythickmathspace:-6/18,negativeveryverythickmathspace:-7/18},TeX:{x_height:0.430554,quad:1,num1:0.676508,num2:0.393732,num3:0.44373,denom1:0.685951,denom2:0.344841,sup1:0.412892,sup2:0.362892
 ,sup3:0.288888,sub1:0.15,sub2:0.247217,sup_drop:0.386108,sub_drop:0.05,delim1:2.39,delim2:1,axis_height:0.25,rule_thickness:0.06,big_op_spacing1:0.111111,big_op_spacing2:0.166666,big_op_spacing3:0.2,big_op_spacing4:0.6,big_op_spacing5:0.1,scriptspace:0.1,nulldelimiterspace:0.12,delimiterfactor:901,delimitershortfall:0.1,min_rule_thickness:1.25},NBSP:"\u00A0",rfuzz:0});MathJax.Hub.Register.StartupHook("mml Jax Ready",function(){f=MathJax.ElementJax.mml;f.mbase.Augment({toHTML:function(n){n=this.HTMLcreateSpan(n);if(this.type!="mrow"){n=this.HTMLhandleSize(n)}for(var k=0,j=this.data.length;k<j;k++){if(this.data[k]){this.data[k].toHTML(n)}}var p=this.HTMLcomputeBBox(n);var l=n.bbox.h,o=n.bbox.d;for(k=0,j=p.length;k<j;k++){p[k].HTMLstretchV(n,l,o)}if(p.length){this.HTMLcomputeBBox(n,true)}if(this.HTMLlineBreaks(n)){n=this.HTMLmultiline(n)}this.HTMLhandleSpace(n);this.HTMLhandleColor(n);return n},HTMLlineBreaks:function(){return false},HTMLmultiline:function(){f.mbase.HTMLautoloa
 dFile("multiline")},HTMLcomputeBBox:function(p,o,n,j){if(n==null){n=0}if(j==null){j=this.data.length}var l=p.bbox={exactW:true},q=[];while(n<j){var k=this.data[n];if(!k){continue}if(!o&&k.HTMLcanStretch("Vertical")){q.push(k);k=(k.CoreMO()||k)}this.HTMLcombineBBoxes(k,l);n++}this.HTMLcleanBBox(l);return q},HTMLcombineBBoxes:function(j,k){if(k.w==null){this.HTMLemptyBBox(k)}var m=(j.bbox?j:j.HTMLspanElement());if(!m||!m.bbox){return}var l=m.bbox;if(l.d>k.d){k.d=l.d}if(l.h>k.h){k.h=l.h}if(l.D!=null&&l.D>k.D){k.D=l.D}if(l.H!=null&&l.H>k.H){k.H=l.H}if(m.style.paddingLeft){k.w+=d.unEm(m.style.paddingLeft)*(m.scale||1)}if(k.w+l.lw<k.lw){k.lw=k.w+l.lw}if(k.w+l.rw>k.rw){k.rw=k.w+l.rw}k.w+=l.w;if(m.style.paddingRight){k.w+=d.unEm(m.style.paddingRight)*(m.scale||1)}if(l.width){k.width=l.width}if(l.ic){k.ic=l.ic}else{delete k.ic}if(k.exactW&&!l.exactW){delete k.exactW}},HTMLemptyBBox:function(j){j.h=j.d=j.H=j.D=j.rw=-d.BIGDIMEN;j.w=0;j.lw=d.BIGDIMEN;return j},HTMLcleanBBox:function(j){
 if(j.h===this.BIGDIMEN){j.h=j.d=j.H=j.D=j.w=j.rw=j.lw=0}if(j.D<=j.d){delete j.D}if(j.H<=j.h){delete j.H}},HTMLzeroBBox:function(){return{h:0,d:0,w:0,lw:0,rw:0}},HTMLcanStretch:function(k){if(this.isEmbellished()){var j=this.Core();if(j&&j!==this){return j.HTMLcanStretch(k)}}return false},HTMLstretchH:function(k,j){return this.HTMLspanElement()},HTMLstretchV:function(k,j,l){return this.HTMLspanElement()},HTMLnotEmpty:function(j){while(j){if((j.type!=="mrow"&&j.type!=="texatom")||j.data.length>1){return true}j=j.data[0]}return false},HTMLmeasureChild:function(k,j){if(this.data[k]){d.Measured(this.data[k].toHTML(j),j)}else{j.bbox=this.HTMLzeroBBox()}},HTMLboxChild:function(k,j){if(this.data[k]){return this.data[k].toHTML(j)}if(!j.bbox){j.bbox=this.HTMLzeroBBox()}return null},HTMLcreateSpan:function(j){if(this.spanID){var k=this.HTMLspanElement();if(k&&(k.parentNode===j||(k.parentNode||{}).parentNode===j)){while(k.firstChild){k.removeChild(k.firstChild)}k.bbox={w:0,h:0,d:0,lw:0,
 rw:0};k.scale=1;k.isMultChar=k.HH=null;k.style.cssText="";return k}}if(this.href){j=d.addElement(j,"a",{href:this.href,isMathJax:true})}j=d.addElement(j,"span",{className:this.type,isMathJax:true});if(d.imgHeightBug){j.style.display="inline-block"}if(this["class"]){j.className+=" "+this["class"]}if(!this.spanID){this.spanID=d.GetID()}j.id=(this.id||"MathJax-Span-"+this.spanID)+d.idPostfix;j.bbox={w:0,h:0,d:0,lw:0,rw:0};this.styles={};if(this.style){j.style.cssText=this.style;if(j.style.fontSize){this.mathsize=j.style.fontSize;j.style.fontSize=""}this.styles={border:d.getBorders(j),padding:d.getPadding(j)};if(this.styles.border){j.style.border=""}if(this.styles.padding){j.style.padding=""}}if(this.href){j.parentNode.bbox=j.bbox}return j},HTMLspanElement:function(){if(!this.spanID){return null}return document.getElementById((this.id||"MathJax-Span-"+this.spanID)+d.idPostfix)},HTMLhandleVariant:function(k,j,l){d.handleVariant(k,j,l)},HTMLhandleSize:function(j){if(!j.scale){j.sc
 ale=this.HTMLgetScale();if(j.scale!==1){j.style.fontSize=d.Percent(j.scale)}}return j},HTMLhandleColor:function(v){var x=this.getValues("mathcolor","color");if(this.mathbackground){x.mathbackground=this.mathbackground}if(this.background){x.background=this.background}if(this.style&&v.style.backgroundColor){x.mathbackground=v.style.backgroundColor;v.style.backgroundColor="transparent"}var s=(this.styles||{}).border,u=(this.styles||{}).padding;if(x.color&&!this.mathcolor){x.mathcolor=x.color}if(x.background&&!this.mathbackground){x.mathbackground=x.background}if(x.mathcolor){v.style.color=x.mathcolor}if((x.mathbackground&&x.mathbackground!==f.COLOR.TRANSPARENT)||s||u){var z=v.bbox,y=(z.exact?0:1/d.em),t=0,r=0,l=v.style.paddingLeft,p=v.style.paddingRight;if(this.isToken){t=z.lw;r=z.rw-z.w}if(l!==""){t+=d.unEm(l)*(v.scale||1)}if(p!==""){r-=d.unEm(p)*(v.scale||1)}var k=(d.PaddingWidthBug||z.keepPadding||z.exactW?0:r-t);var n=Math.max(0,d.getW(v)+k);var w=z.h+z.d,j=-z.d,q=0,o=0;if(
 n>0){n+=2*y;t-=y}if(w>0){w+=2*y;j-=y}r=-n-t;if(s){r-=s.right;j-=s.bottom;q+=s.left;o+=s.right;z.h+=s.top;z.d+=s.bottom;z.w+=s.left+s.right;z.lw-=s.left;z.rw+=s.right}if(u){w+=u.top+u.bottom;n+=u.left+u.right;r-=u.right;j-=u.bottom;q+=u.left;o+=u.right;z.h+=u.top;z.d+=u.bottom;z.w+=u.left+u.right;z.lw-=u.left;z.rw+=u.right}if(o){v.style.paddingRight=d.Em(o)}var m=d.Element("span",{id:"MathJax-Color-"+this.spanID+d.idPostfix,isMathJax:true,style:{display:"inline-block",backgroundColor:x.mathbackground,width:d.Em(n),height:d.Em(w),verticalAlign:d.Em(j),marginLeft:d.Em(t),marginRight:d.Em(r)}});d.setBorders(m,s);if(z.width){m.style.width=z.width;m.style.marginRight="-"+z.width}if(d.msieInlineBlockAlignBug){m.style.position="relative";m.style.width=m.style.height=0;m.style.verticalAlign=m.style.marginLeft=m.style.marginRight="";m.style.border=m.style.padding="";if(s&&d.msieBorderWidthBug){w+=s.top+s.bottom;n+=s.left+s.right}m.style.width=d.Em(q+y);d.placeBox(d.addElement(m,"span"
 ,{noAdjust:true,isMathJax:true,style:{display:"inline-block",position:"absolute",overflow:"hidden",background:(x.mathbackground||"transparent"),width:d.Em(n),height:d.Em(w)}}),t,z.h+y);d.setBorders(m.firstChild,s)}v.parentNode.insertBefore(m,v);if(d.msieColorPositionBug){v.style.position="relative"}return m}return null},HTMLremoveColor:function(){var j=document.getElementById("MathJax-Color-"+this.spanID+d.idPostfix);if(j){j.parentNode.removeChild(j)}},HTMLhandleSpace:function(n){if(this.useMMLspacing){if(this.type!=="mo"){return}var l=this.getValues("scriptlevel","lspace","rspace");if(l.scriptlevel<=0||this.hasValue("lspace")||this.hasValue("rspace")){var k=this.HTMLgetMu(n);l.lspace=Math.max(0,d.length2em(l.lspace,k));l.rspace=Math.max(0,d.length2em(l.rspace,k));var j=this,m=this.Parent();while(m&&m.isEmbellished()&&m.Core()===j){j=m;m=m.Parent();n=j.HTMLspanElement()}if(l.lspace){n.style.paddingLeft=d.Em(l.lspace)}if(l.rspace){n.style.paddingRight=d.Em(l.rspace)}}}else{va
 r o=this.texSpacing();if(o!==""){o=d.length2em(o,this.HTMLgetScale())/(n.scale||1);if(n.style.paddingLeft){o+=d.unEm(n.style.paddingLeft)}n.style.paddingLeft=d.Em(o)}}},HTMLgetScale:function(){var l=1,j=this.getValues("mathsize","scriptlevel","fontsize");if(this.style){var k=this.HTMLspanElement();if(k.style.fontSize!=""){j.fontsize=k.style.fontSize}}if(j.fontsize&&!this.mathsize){j.mathsize=j.fontsize}if(j.scriptlevel!==0){if(j.scriptlevel>2){j.scriptlevel=2}l=Math.pow(this.Get("scriptsizemultiplier"),j.scriptlevel);j.scriptminsize=d.length2em(this.Get("scriptminsize"));if(l<j.scriptminsize){l=j.scriptminsize}}if(this.isToken){l*=d.length2em(j.mathsize)}return l},HTMLgetMu:function(l){var j=1,k=this.getValues("scriptlevel","scriptsizemultiplier");if(l.scale&&l.scale!==1){j=1/l.scale}if(k.scriptlevel!==0){if(k.scriptlevel>2){k.scriptlevel=2}j=Math.sqrt(Math.pow(k.scriptsizemultiplier,k.scriptlevel))}return j},HTMLgetVariant:function(){var j=this.getValues("mathvariant","font
 family","fontweight","fontstyle");j.hasVariant=this.Get("mathvariant",true);if(!j.hasVariant){j.family=j.fontfamily;j.weight=j.fontweight;j.style=j.fontstyle}if(this.style){var l=this.HTMLspanElement();if(!j.family&&l.style.fontFamily){j.family=l.style.fontFamily}if(!j.weight&&l.style.fontWeight){j.weight=l.style.fontWeight}if(!j.style&&l.style.fontStyle){j.style=l.style.fontStyle}}if(j.weight&&j.weight.match(/^\d+$/)){j.weight=(parseInt(j.weight)>600?"bold":"normal")}var k=j.mathvariant;if(this.variantForm){k="-"+d.fontInUse+"-variant"}if(j.family&&!j.hasVariant){if(!j.weight&&j.mathvariant.match(/bold/)){j.weight="bold"}if(!j.style&&j.mathvariant.match(/italic/)){j.style="italic"}return{FONTS:[],fonts:[],noRemap:true,defaultFont:{family:j.family,style:j.style,weight:j.weight}}}if(j.weight==="bold"){k={normal:f.VARIANT.BOLD,italic:f.VARIANT.BOLDITALIC,fraktur:f.VARIANT.BOLDFRAKTUR,script:f.VARIANT.BOLDSCRIPT,"sans-serif":f.VARIANT.BOLDSANSSERIF,"sans-serif-italic":f.VARIANT
 .SANSSERIFBOLDITALIC}[k]||k}else{if(j.weight==="normal"){k={bold:f.VARIANT.normal,"bold-italic":f.VARIANT.ITALIC,"bold-fraktur":f.VARIANT.FRAKTUR,"bold-script":f.VARIANT.SCRIPT,"bold-sans-serif":f.VARIANT.SANSSERIF,"sans-serif-bold-italic":f.VARIANT.SANSSERIFITALIC}[k]||k}}if(j.style==="italic"){k={normal:f.VARIANT.ITALIC,bold:f.VARIANT.BOLDITALIC,"sans-serif":f.VARIANT.SANSSERIFITALIC,"bold-sans-serif":f.VARIANT.SANSSERIFBOLDITALIC}[k]||k}else{if(j.style==="normal"){k={italic:f.VARIANT.NORMAL,"bold-italic":f.VARIANT.BOLD,"sans-serif-italic":f.VARIANT.SANSSERIF,"sans-serif-bold-italic":f.VARIANT.BOLDSANSSERIF}[k]||k}}return d.FONTDATA.VARIANT[k]}},{HTMLautoload:function(){var j=d.autoloadDir+"/"+this.type+".js";b.RestartAfter(g.Require(j))},HTMLautoloadFile:function(j){var k=d.autoloadDir+"/"+j+".js";b.RestartAfter(g.Require(k))},HTMLstretchH:function(k,j){this.HTMLremoveColor();return this.toHTML(k,j)},HTMLstretchV:function(k,j,l){this.HTMLremoveColor();return this.toHTML(k
 ,j,l)}});f.chars.Augment({toHTML:function(m,l,k,n){var q=this.data.join("").replace(/[\u2061-\u2064]/g,"");if(k){q=k(q,n)}if(l.fontInherit){var p=Math.floor(100/d.scale+0.5)+"%";d.addElement(m,"span",{style:{"font-size":p}},[q]);if(l.bold){m.lastChild.style.fontWeight="bold"}if(l.italic){m.lastChild.style.fontStyle="italic"}var o=d.getHD(m),j=d.getW(m);m.bbox={h:o.h,d:o.d,w:j,lw:0,rw:j,exactW:true}}else{this.HTMLhandleVariant(m,l,q)}}});f.entity.Augment({toHTML:function(m,l,k,n){var q=this.toString().replace(/[\u2061-\u2064]/g,"");if(k){q=k(q,n)}if(l.fontInherit){var p=Math.floor(100/d.scale+0.5)+"%";d.addElement(m,"span",{style:{"font-size":p}},[q]);if(l.bold){m.lastChild.style.fontWeight="bold"}if(l.italic){m.lastChild.style.fontStyle="italic"}var o=d.getHD(m),j=d.getW(m);m.bbox={h:o.h,d:o.d,w:j,lw:0,rw:j,exactW:true}}else{this.HTMLhandleVariant(m,l,q)}}});f.mi.Augment({toHTML:function(n){n=this.HTMLhandleSize(this.HTMLcreateSpan(n));n.bbox=null;var l=this.HTMLgetVariant()
 ;for(var k=0,j=this.data.length;k<j;k++){if(this.data[k]){this.data[k].toHTML(n,l)}}if(!n.bbox){n.bbox={w:0,h:0,d:0,rw:0,lw:0}}var p=this.data.join(""),o=n.bbox;if(o.skew&&p.length!==1){delete o.skew}if(o.rw>o.w&&p.length===1&&!l.noIC){o.ic=o.rw-o.w;d.createBlank(n,o.ic);o.w=o.rw}this.HTMLhandleSpace(n);this.HTMLhandleColor(n);return n}});f.mn.Augment({toHTML:function(n){n=this.HTMLhandleSize(this.HTMLcreateSpan(n));n.bbox=null;var l=this.HTMLgetVariant();for(var k=0,j=this.data.length;k<j;k++){if(this.data[k]){this.data[k].toHTML(n,l)}}if(!n.bbox){n.bbox={w:0,h:0,d:0,rw:0,lw:0}}if(this.data.join("").length!==1){delete n.bbox.skew}this.HTMLhandleSpace(n);this.HTMLhandleColor(n);return n}});f.mo.Augment({toHTML:function(t){t=this.HTMLhandleSize(this.HTMLcreateSpan(t));if(this.data.length==0){return t}else{t.bbox=null}var w=this.data.join("");var o=this.HTMLgetVariant();var v=this.getValues("largeop","displaystyle");if(v.largeop){o=d.FONTDATA.VARIANT[v.displaystyle?"-largeOp":
 "-smallOp"]}var u=this.CoreParent(),n=(u&&u.isa(f.msubsup)&&this!==u.data[u.base]),k=(n?this.HTMLremapChars:null);if(w.length===1&&u&&u.isa(f.munderover)&&this.CoreText(u.data[u.base]).length===1){var r=u.data[u.over],s=u.data[u.under];if(r&&this===r.CoreMO()&&u.Get("accent")){k=d.FONTDATA.REMAPACCENT}else{if(s&&this===s.CoreMO()&&u.Get("accentunder")){k=d.FONTDATA.REMAPACCENTUNDER}}}if(n&&w.match(/['`"\u00B4\u2032-\u2037\u2057]/)){o=d.FONTDATA.VARIANT["-"+d.fontInUse+"-variant"]}for(var q=0,l=this.data.length;q<l;q++){if(this.data[q]){this.data[q].toHTML(t,o,this.HTMLremap,k)}}if(!t.bbox){t.bbox={w:0,h:0,d:0,rw:0,lw:0}}if(w.length!==1){delete t.bbox.skew}if(d.AccentBug&&t.bbox.w===0&&w.length===1&&t.firstChild){t.firstChild.nodeValue+=d.NBSP;d.createSpace(t,0,0,-t.offsetWidth/d.em)}if(v.largeop){var j=(t.bbox.h-t.bbox.d)/2-d.TeX.axis_height*t.scale;if(d.safariVerticalAlignBug&&t.lastChild.nodeName==="IMG"){t.lastChild.style.verticalAlign=d.Em(d.unEm(t.lastChild.style.vertic
 alAlign||0)/d.em-j/t.scale)}else{if(d.konquerorVerticalAlignBug&&t.lastChild.nodeName==="IMG"){t.style.position="relative";t.lastChild.style.position="relative";t.lastChild.style.top=d.Em(j/t.scale)}else{t.style.verticalAlign=d.Em(-j/t.scale)}}t.bbox.h-=j;t.bbox.d+=j;if(t.bbox.rw>t.bbox.w){t.bbox.ic=t.bbox.rw-t.bbox.w;d.createBlank(t,t.bbox.ic);t.bbox.w=t.bbox.rw}}this.HTMLhandleSpace(t);this.HTMLhandleColor(t);return t},CoreParent:function(){var j=this;while(j&&j.isEmbellished()&&j.CoreMO()===this&&!j.isa(f.math)){j=j.Parent()}return j},CoreText:function(j){if(!j){return""}if(j.isEmbellished()){return j.CoreMO().data.join("")}while((j.isa(f.mrow)||j.isa(f.TeXAtom))&&j.data.length===1&&j.data[0]){j=j.data[0]}if(!j.isToken){return""}else{return j.data.join("")}},HTMLremapChars:{"*":"\u2217",'"':"\u2033","\u00B0":"\u2218","\u00B2":"2","\u00B3":"3","\u00B4":"\u2032","\u00B9":"1"},HTMLremap:function(k,j){k=k.replace(/-/g,"\u2212");if(j){k=k.replace(/'/g,"\u2032").replace(/`/g,"\
 u2035");if(k.length===1){k=j[k]||k}}return k},HTMLcanStretch:function(m){if(!this.Get("stretchy")){return false}var n=this.data.join("");if(n.length>1){return false}var k=this.CoreParent();if(k&&k.isa(f.munderover)&&this.CoreText(k.data[k.base]).length===1){var l=k.data[k.over],j=k.data[k.under];if(l&&this===l.CoreMO()&&k.Get("accent")){n=d.FONTDATA.REMAPACCENT[n]||n}else{if(j&&this===j.CoreMO()&&k.Get("accentunder")){n=d.FONTDATA.REMAPACCENTUNDER[n]||n}}}n=d.FONTDATA.DELIMITERS[n.charCodeAt(0)];return(n&&n.dir==m.substr(0,1))},HTMLstretchV:function(l,m,n){this.HTMLremoveColor();var q=this.getValues("symmetric","maxsize","minsize");var o=this.HTMLspanElement(),r=this.HTMLgetMu(o),p;var j=d.TeX.axis_height,k=o.scale;if(q.symmetric){p=2*Math.max(m-j,n+j)}else{p=m+n}q.maxsize=d.length2em(q.maxsize,r,o.bbox.h+o.bbox.d);q.minsize=d.length2em(q.minsize,r,o.bbox.h+o.bbox.d);p=Math.max(q.minsize,Math.min(q.maxsize,p));o=this.HTMLcreateSpan(l);d.createDelimiter(o,this.data.join("").c
 harCodeAt(0),p,k);if(q.symmetric){p=(o.bbox.h+o.bbox.d)/2+j}else{p=(o.bbox.h+o.bbox.d)*m/(m+n)}d.positionDelimiter(o,p);this.HTMLhandleSpace(o);this.HTMLhandleColor(o);return o},HTMLstretchH:function(n,j){this.HTMLremoveColor();var l=this.getValues("maxsize","minsize","mathvariant","fontweight");if((l.fontweight==="bold"||parseInt(l.fontweight)>=600)&&!this.Get("mathvariant",true)){l.mathvariant=f.VARIANT.BOLD}var m=this.HTMLspanElement(),k=this.HTMLgetMu(m),o=m.scale;l.maxsize=d.length2em(l.maxsize,k,m.bbox.w);l.minsize=d.length2em(l.minsize,k,m.bbox.w);j=Math.max(l.minsize,Math.min(l.maxsize,j));m=this.HTMLcreateSpan(n);d.createDelimiter(m,this.data.join("").charCodeAt(0),j,o,l.mathvariant);this.HTMLhandleSpace(m);this.HTMLhandleColor(m);return m}});f.mtext.Augment({toHTML:function(n){n=this.HTMLhandleSize(this.HTMLcreateSpan(n));var l=this.HTMLgetVariant();if(d.config.mtextFontInherit||this.Parent().type==="merror"){l={bold:l.bold,italic:l.italic,fontInherit:true}}for(var
  k=0,j=this.data.length;k<j;k++){if(this.data[k]){this.data[k].toHTML(n,l)}}if(!n.bbox){n.bbox={w:0,h:0,d:0,rw:0,lw:0}}if(this.data.join("").length!==1){delete n.bbox.skew}this.HTMLhandleSpace(n);this.HTMLhandleColor(n);return n}});f.merror.Augment({toHTML:function(k){var m=MathJax.HTML.addElement(k,"span",{style:{display:"inline-block"}});k=this.SUPER(arguments).toHTML.call(this,m);var l=d.getHD(m),j=d.getW(m);m.bbox={h:l.h,d:l.d,w:j,lw:0,rw:j,exactW:true};m.id=k.id;k.id=null;return m}});f.ms.Augment({toHTML:f.mbase.HTMLautoload});f.mglyph.Augment({toHTML:f.mbase.HTMLautoload});f.mspace.Augment({toHTML:function(n){n=this.HTMLcreateSpan(n);var l=this.getValues("height","depth","width");var k=this.HTMLgetMu(n);l.mathbackground=this.mathbackground;if(this.background&&!this.mathbackground){l.mathbackground=this.background}var m=d.length2em(l.height,k),o=d.length2em(l.depth,k),j=d.length2em(l.width,k);d.createSpace(n,m,o,j,l.mathbackground,true);return n}});f.mphantom.Augment({t
 oHTML:function(n,k,p){n=this.HTMLcreateSpan(n);if(this.data[0]!=null){var o=this.data[0].toHTML(n);if(p!=null){d.Remeasured(this.data[0].HTMLstretchV(n,k,p),n)}else{if(k!=null){d.Remeasured(this.data[0].HTMLstretchH(n,k),n)}else{o=d.Measured(o,n)}}n.bbox={w:o.bbox.w,h:o.bbox.h,d:o.bbox.d,lw:0,rw:0,exactW:true};for(var l=0,j=n.childNodes.length;l<j;l++){n.childNodes[l].style.visibility="hidden"}}this.HTMLhandleSpace(n);this.HTMLhandleColor(n);return n},HTMLstretchH:f.mbase.HTMLstretchH,HTMLstretchV:f.mbase.HTMLstretchV});f.mpadded.Augment({toHTML:function(r,l,j){r=this.HTMLcreateSpan(r);if(this.data[0]!=null){var p=d.createStack(r,true);var m=d.createBox(p);var k=this.data[0].toHTML(m);if(j!=null){d.Remeasured(this.data[0].HTMLstretchV(m,l,j),m)}else{if(l!=null){d.Remeasured(this.data[0].HTMLstretchH(m,l),m)}else{d.Measured(k,m)}}var s=this.getValues("height","depth","width","lspace","voffset"),q=0,o=0,t=this.HTMLgetMu(r);if(s.lspace){q=this.HTMLlength2em(m,s.lspace,t)}if(s.v
 offset){o=this.HTMLlength2em(m,s.voffset,t)}d.placeBox(m,q,o);r.bbox={h:m.bbox.h,d:m.bbox.d,w:m.bbox.w,exactW:true,lw:Math.min(0,m.bbox.lw+q),rw:Math.max(m.bbox.w,m.bbox.rw+q),H:Math.max((m.bbox.H==null?-d.BIGDIMEN:m.bbox.H),m.bbox.h+o),D:Math.max((m.bbox.D==null?-d.BIGDIMEN:m.bbox.D),m.bbox.d-o)};if(s.height!==""){r.bbox.h=this.HTMLlength2em(m,s.height,t,"h",0)}if(s.depth!==""){r.bbox.d=this.HTMLlength2em(m,s.depth,t,"d",0)}if(s.width!==""){r.bbox.w=this.HTMLlength2em(m,s.width,t,"w",0)}if(r.bbox.H<=r.bbox.h){delete r.bbox.H}if(r.bbox.D<=r.bbox.d){delete r.bbox.D}var n=/^\s*(\d+(\.\d*)?|\.\d+)\s*(pt|em|ex|mu|px|pc|in|mm|cm)\s*$/;r.bbox.exact=!!((this.data[0]&&this.data[0].data.length==0)||n.exec(s.height)||n.exec(s.width)||n.exec(s.depth));d.setStackWidth(p,r.bbox.w)}this.HTMLhandleSpace(r);this.HTMLhandleColor(r);return r},HTMLlength2em:function(p,q,k,r,j){if(j==null){j=-d.BIGDIMEN}var n=String(q).match(/width|height|depth/);var o=(n?p.bbox[n[0].charAt(0)]:(r?p.bbox[r]:0))
 ;var l=d.length2em(q,k,o);if(r&&String(q).match(/^\s*[-+]/)){return Math.max(j,p.bbox[r]+l)}else{return l}},HTMLstretchH:f.mbase.HTMLstretchH,HTMLstretchV:f.mbase.HTMLstretchV});f.mrow.Augment({HTMLlineBreaks:function(j){if(!this.parent.linebreakContainer){return false}return(d.config.linebreaks.automatic&&j.bbox.w>d.linebreakWidth)||this.hasNewline()},HTMLstretchH:function(l,j){this.HTMLremoveColor();var k=this.HTMLspanElement();this.data[this.core].HTMLstretchH(k,j);this.HTMLcomputeBBox(k,true);this.HTMLhandleColor(k);return k},HTMLstretchV:function(l,k,m){this.HTMLremoveColor();var j=this.HTMLspanElement();this.data[this.core].HTMLstretchV(j,k,m);this.HTMLcomputeBBox(j,true);this.HTMLhandleColor(j);return j}});f.mstyle.Augment({toHTML:function(k,j,l){k=this.HTMLcreateSpan(k);if(this.data[0]!=null){var m=this.data[0].toHTML(k);if(l!=null){this.data[0].HTMLstretchV(k,j,l)}else{if(j!=null){this.data[0].HTMLstretchH(k,j)}}k.bbox=m.bbox}this.HTMLhandleSpace(k);this.HTMLhandleC
 olor(k);return k},HTMLstretchH:f.mbase.HTMLstretchH,HTMLstretchV:f.mbase.HTMLstretchV});f.mfrac.Augment({toHTML:function(C){C=this.HTMLcreateSpan(C);var l=d.createStack(C);var o=d.createBox(l),n=d.createBox(l);d.MeasureSpans([this.HTMLboxChild(0,o),this.HTMLboxChild(1,n)]);var j=this.getValues("displaystyle","linethickness","numalign","denomalign","bevelled");var G=this.HTMLgetScale(),B=j.displaystyle;var F=d.TeX.axis_height*G;if(j.bevelled){var E=(B?0.4:0.15);var r=Math.max(o.bbox.h+o.bbox.d,n.bbox.h+n.bbox.d)+2*E;var D=d.createBox(l);d.createDelimiter(D,47,r);d.placeBox(o,0,(o.bbox.d-o.bbox.h)/2+F+E);d.placeBox(D,o.bbox.w-E/2,(D.bbox.d-D.bbox.h)/2+F);d.placeBox(n,o.bbox.w+D.bbox.w-E,(n.bbox.d-n.bbox.h)/2+F-E)}else{var k=Math.max(o.bbox.w,n.bbox.w);var x=d.thickness2em(j.linethickness,G),z,y,w,s;var A=d.TeX.min_rule_thickness/this.em;if(B){w=d.TeX.num1;s=d.TeX.denom1}else{w=(x===0?d.TeX.num3:d.TeX.num2);s=d.TeX.denom2}w*=G;s*=G;if(x===0){z=Math.max((B?7:3)*d.TeX.rule_thickn
 ess,2*A);y=(w-o.bbox.d)-(n.bbox.h-s);if(y<z){w+=(z-y)/2;s+=(z-y)/2}}else{z=Math.max((B?2:0)*A+x,x/2+1.5*A);y=(w-o.bbox.d)-(F+x/2);if(y<z){w+=z-y}y=(F-x/2)-(n.bbox.h-s);if(y<z){s+=z-y}var m=d.createBox(l);d.createRule(m,x,0,k+2*x);d.placeBox(m,0,F-x/2)}d.alignBox(o,j.numalign,w);d.alignBox(n,j.denomalign,-s)}this.HTMLhandleSpace(C);this.HTMLhandleColor(C);return C},HTMLcanStretch:function(j){return false},HTMLhandleSpace:function(j){if(!this.texWithDelims){var k=(this.useMMLspacing?0:d.length2em(this.texSpacing()||0))+0.12;j.style.paddingLeft=d.Em(k);j.style.paddingRight=d.Em(0.12)}}});f.msqrt.Augment({toHTML:function(v){v=this.HTMLcreateSpan(v);var y=d.createStack(v);var m=d.createBox(y),s=d.createBox(y),r=d.createBox(y);var o=this.HTMLgetScale();var z=d.TeX.rule_thickness*o,l,k,w,n;if(this.Get("displaystyle")){l=d.TeX.x_height*o}else{l=z}k=Math.max(z+l/4,1.5*d.TeX.min_rule_thickness/this.em);var j=this.HTMLboxChild(0,m);w=j.bbox.h+j.bbox.d+k+z;d.createDelimiter(r,8730,w,o);
 d.MeasureSpans([j,r]);n=j.bbox.w;var u=0;if(r.isMultiChar||(d.AdjustSurd&&d.imgFonts)){r.bbox.w*=0.95}if(r.bbox.h+r.bbox.d>w){k=((r.bbox.h+r.bbox.d)-(w-z))/2}var A=d.FONTDATA.DELIMITERS[d.FONTDATA.RULECHAR];if(!A||n<A.HW[0][0]*o||o<0.75){d.createRule(s,0,z,n)}else{d.createDelimiter(s,d.FONTDATA.RULECHAR,n,o)}w=j.bbox.h+k+z;k=w*d.rfuzz;if(r.isMultiChar){k=d.rfuzz}u=this.HTMLaddRoot(y,r,u,r.bbox.h+r.bbox.d-w,o);d.placeBox(r,u,w-r.bbox.h);d.placeBox(s,u+r.bbox.w,w-s.bbox.h+k);d.placeBox(m,u+r.bbox.w,0);this.HTMLhandleSpace(v);this.HTMLhandleColor(v);return v},HTMLaddRoot:function(l,k,j,n,m){return j}});f.mroot.Augment({toHTML:f.msqrt.prototype.toHTML,HTMLaddRoot:function(r,k,p,n,j){var l=d.createBox(r);if(this.data[1]){var o=this.data[1].toHTML(l);o.style.paddingRight=o.style.paddingLeft="";d.Measured(o,l)}else{l.bbox=this.HTMLzeroBBox()}var m=this.HTMLrootHeight(k.bbox.h+k.bbox.d,j,l)-n;var q=Math.min(l.bbox.w,l.bbox.rw);p=Math.max(q,k.offset);d.placeBox(l,p-q,m);return p-k.of
 fset},HTMLrootHeight:function(l,k,j){return 0.45*(l-0.9*k)+0.6*k+Math.max(0,j.bbox.d-0.075)}});f.mfenced.Augment({toHTML:function(n){n=this.HTMLcreateSpan(n);if(this.data.open){this.data.open.toHTML(n)}if(this.data[0]!=null){this.data[0].toHTML(n)}for(var k=1,j=this.data.length;k<j;k++){if(this.data[k]){if(this.data["sep"+k]){this.data["sep"+k].toHTML(n)}this.data[k].toHTML(n)}}if(this.data.close){this.data.close.toHTML(n)}var p=this.HTMLcomputeBBox(n);var l=n.bbox.h,o=n.bbox.d;for(k=0,j=p.length;k<j;k++){p[k].HTMLstretchV(n,l,o)}if(p.length){this.HTMLcomputeBBox(n,true)}this.HTMLhandleSpace(n);this.HTMLhandleColor(n);return n},HTMLcomputeBBox:function(o,n){var k=o.bbox={},p=[];this.HTMLcheckStretchy(this.data.open,k,p,n);this.HTMLcheckStretchy(this.data[0],k,p,n);for(var l=1,j=this.data.length;l<j;l++){if(this.data[l]){this.HTMLcheckStretchy(this.data["sep"+l],k,p,n);this.HTMLcheckStretchy(this.data[l],k,p,n)}}this.HTMLcheckStretchy(this.data.close,k,p,n);this.HTMLcleanBBox
 (k);return p},HTMLcheckStretchy:function(j,k,m,l){if(j){if(!l&&j.HTMLcanStretch("Vertical")){m.push(j);j=(j.CoreMO()||j)}this.HTMLcombineBBoxes(j,k)}}});f.menclose.Augment({toHTML:f.mbase.HTMLautoload});f.maction.Augment({toHTML:f.mbase.HTMLautoload});f.semantics.Augment({toHTML:function(k,j,l){k=this.HTMLcreateSpan(k);if(this.data[0]!=null){var m=this.data[0].toHTML(k);if(l!=null){this.data[0].HTMLstretchV(k,j,l)}else{if(j!=null){this.data[0].HTMLstretchH(k,j)}}k.bbox=m.bbox}this.HTMLhandleSpace(k);return k},HTMLstretchH:f.mbase.HTMLstretchH,HTMLstretchV:f.mbase.HTMLstretchV});f.munderover.Augment({toHTML:function(K,G,E){var j=this.getValues("displaystyle","accent","accentunder","align");if(!j.displaystyle&&this.data[this.base]!=null&&this.data[this.base].CoreMO().Get("movablelimits")){return f.msubsup.prototype.toHTML.call(this,K)}K=this.HTMLcreateSpan(K);var O=this.HTMLgetScale();var p=d.createStack(K);var q=[],n=[],M=[],v,L,H;for(L=0,H=this.data.length;L<H;L++){if(this.d
 ata[L]!=null){v=q[L]=d.createBox(p);n[L]=this.data[L].toHTML(v);if(L==this.base){if(E!=null){this.data[this.base].HTMLstretchV(v,G,E)}else{if(G!=null){this.data[this.base].HTMLstretchH(v,G)}}M[L]=(E==null&&G!=null?false:this.data[L].HTMLcanStretch("Horizontal"))}else{M[L]=this.data[L].HTMLcanStretch("Horizontal")}}}d.MeasureSpans(n);var l=-d.BIGDIMEN,J=l;for(L=0,H=this.data.length;L<H;L++){if(this.data[L]){if(q[L].bbox.w>J){J=q[L].bbox.w}if(!M[L]&&J>l){l=J}}}if(E==null&&G!=null){l=G}else{if(l==-d.BIGDIMEN){l=J}}for(L=J=0,H=this.data.length;L<H;L++){if(this.data[L]){v=q[L];if(M[L]){v.bbox=this.data[L].HTMLstretchH(v,l).bbox}if(v.bbox.w>J){J=v.bbox.w}}}var C=d.TeX.rule_thickness,F=d.FONTDATA.TeX_factor;var o=q[this.base]||{bbox:this.HTMLzeroBBox()};var u,r,z,w,s,B,I,N=0;if(o.bbox.ic){N=1.3*o.bbox.ic+0.05}for(L=0,H=this.data.length;L<H;L++){if(this.data[L]!=null){v=q[L];s=d.TeX.big_op_spacing5*O;var A=(L!=this.base&&j[this.ACCENTS[L]]);if(A&&v.bbox.w<=1/d.em+0.0001){v.bbox.w=v.
 bbox.rw-v.bbox.lw;v.bbox.noclip=true;if(v.bbox.lw){v.insertBefore(d.createSpace(v.parentNode,0,0,-v.bbox.lw),v.firstChild)}d.createBlank(v,0,0,v.bbox.rw+0.1)}B={left:0,center:(J-v.bbox.w)/2,right:J-v.bbox.w}[j.align];u=B;r=0;if(L==this.over){if(A){I=Math.max(C*O*F,2.5/this.em);s=0;if(o.bbox.skew){u+=o.bbox.skew}}else{z=d.TeX.big_op_spacing1*O*F;w=d.TeX.big_op_spacing3*O*F;I=Math.max(z,w-Math.max(0,v.bbox.d))}I=Math.max(I,1.5/this.em);u+=N/2;r=o.bbox.h+v.bbox.d+I;v.bbox.h+=s}else{if(L==this.under){if(A){I=3*C*O*F;s=0}else{z=d.TeX.big_op_spacing2*O*F;w=d.TeX.big_op_spacing4*O*F;I=Math.max(z,w-v.bbox.h)}I=Math.max(I,1.5/this.em);u-=N/2;r=-(o.bbox.d+v.bbox.h+I);v.bbox.d+=s}}d.placeBox(v,u,r)}}this.HTMLhandleSpace(K);this.HTMLhandleColor(K);return K},HTMLstretchH:f.mbase.HTMLstretchH,HTMLstretchV:f.mbase.HTMLstretchV});f.msubsup.Augment({toHTML:function(J,H,B){J=this.HTMLcreateSpan(J);var M=this.HTMLgetScale(),G=this.HTMLgetMu(J);var o=d.createStack(J),k,m=[];var n=d.createBox(o)
 ;if(this.data[this.base]){m.push(this.data[this.base].toHTML(n));if(B!=null){this.data[this.base].HTMLstretchV(n,H,B)}else{if(H!=null){this.data[this.base].HTMLstretchH(n,H)}}}else{n.bbox=this.HTMLzeroBBox()}var K=d.TeX.x_height*M,A=d.TeX.scriptspace*M*0.75;var j,w;if(this.HTMLnotEmpty(this.data[this.sup])){j=d.createBox(o);m.push(this.data[this.sup].toHTML(j))}if(this.HTMLnotEmpty(this.data[this.sub])){w=d.createBox(o);m.push(this.data[this.sub].toHTML(w))}d.MeasureSpans(m);if(j){j.bbox.w+=A;j.bbox.rw=Math.max(j.bbox.w,j.bbox.rw)}if(w){w.bbox.w+=A;w.bbox.rw=Math.max(w.bbox.w,w.bbox.rw)}d.placeBox(n,0,0);var l=(this.data[this.sup]||this.data[this.sub]||this).HTMLgetScale();var E=d.TeX.sup_drop*l,C=d.TeX.sub_drop*l;var y=n.bbox.h-E,x=n.bbox.d+C,L=0,F;if(n.bbox.ic){n.bbox.w-=n.bbox.ic;L=1.3*n.bbox.ic+0.05}if(this.data[this.base]&&(this.data[this.base].type==="mi"||this.data[this.base].type==="mo")){if(this.data[this.base].data.join("").length===1&&n.bbox.scale===1&&!this.data[
 this.base].Get("largeop")){y=x=0}}var I=this.getValues("subscriptshift","superscriptshift");I.subscriptshift=(I.subscriptshift===""?0:d.length2em(I.subscriptshift,G));I.superscriptshift=(I.superscriptshift===""?0:d.length2em(I.superscriptshift,G));if(!j){if(w){x=Math.max(x,d.TeX.sub1*M,w.bbox.h-(4/5)*K,I.subscriptshift);d.placeBox(w,n.bbox.w,-x,w.bbox)}}else{if(!w){k=this.getValues("displaystyle","texprimestyle");F=d.TeX[(k.displaystyle?"sup1":(k.texprimestyle?"sup3":"sup2"))];y=Math.max(y,F*M,j.bbox.d+(1/4)*K,I.superscriptshift);d.placeBox(j,n.bbox.w+L,y,j.bbox)}else{x=Math.max(x,d.TeX.sub2*M);var z=d.TeX.rule_thickness*M;if((y-j.bbox.d)-(w.bbox.h-x)<3*z){x=3*z-y+j.bbox.d+w.bbox.h;E=(4/5)*K-(y-j.bbox.d);if(E>0){y+=E;x-=E}}d.placeBox(j,n.bbox.w+L,Math.max(y,I.superscriptshift));d.placeBox(w,n.bbox.w,-Math.max(x,I.subscriptshift))}}this.HTMLhandleSpace(J);this.HTMLhandleColor(J);return J},HTMLstretchH:f.mbase.HTMLstretchH,HTMLstretchV:f.mbase.HTMLstretchV});f.mmultiscripts.Au
 gment({toHTML:f.mbase.HTMLautoload});f.mtable.Augment({toHTML:f.mbase.HTMLautoload});f["annotation-xml"].Augment({toHTML:f.mbase.HTMLautoload});f.math.Augment({toHTML:function(t,k){var q=this.Get("alttext");if(q&&q!==""){k.setAttribute("aria-label",q)}var l=d.addElement(t,"nobr",{isMathJax:true});t=this.HTMLcreateSpan(l);var r=d.createStack(t),m=d.createBox(r),s;r.style.fontSize=l.parentNode.style.fontSize;l.parentNode.style.fontSize="";if(this.data[0]!=null){if(d.msieColorBug){if(this.background){this.data[0].background=this.background;delete this.background}if(this.mathbackground){this.data[0].mathbackground=this.mathbackground;delete this.mathbackground}}f.mbase.prototype.displayAlign=b.config.displayAlign;f.mbase.prototype.displayIndent=b.config.displayIndent;var n=this.data[0].toHTML(m);n.bbox.exactW=false;s=d.Measured(n,m)}d.placeBox(m,0,0);r.style.width=Math.round(d.unEm(r.style.width)*this.em)+"px";var j=1/d.em,o=d.em/d.outerEm;d.em/=o;t.bbox.h*=o;t.bbox.d*=o;t.bbox.
 w*=o;t.bbox.lw*=o;t.bbox.rw*=o;if(s&&s.bbox.width!=null){r.style.width=s.bbox.width;m.style.width="100%"}this.HTMLhandleColor(t);if(s){d.createRule(t,(s.bbox.h+j)*o,(s.bbox.d+j)*o,0)}if(!this.isMultiline&&this.Get("display")==="block"&&t.bbox.width==null){var u=this.getValues("indentalignfirst","indentshiftfirst","indentalign","indentshift");if(u.indentalignfirst!==f.INDENTALIGN.INDENTALIGN){u.indentalign=u.indentalignfirst}if(u.indentalign===f.INDENTALIGN.AUTO){u.indentalign=this.displayAlign}k.style.textAlign=u.indentalign;if(u.indentshiftfirst!==f.INDENTSHIFT.INDENTSHIFT){u.indentshift=u.indentshiftfirst}if(u.indentshift==="auto"){u.indentshift=this.displayIndent}if(u.indentshift&&u.indentalign!==f.INDENTALIGN.CENTER){t.style[{left:"marginLeft",right:"marginRight"}[u.indentalign]]=d.Em(d.length2em(u.indentshift))}}return t},HTMLspanElement:f.mbase.prototype.HTMLspanElement});f.TeXAtom.Augment({toHTML:function(k){k=this.HTMLcreateSpan(k);if(this.data[0]!=null){if(this.texC
 lass===f.TEXCLASS.VCENTER){var j=d.createStack(k);var l=d.createBox(j);d.Measured(this.data[0].toHTML(l),l);d.placeBox(l,0,d.TeX.axis_height-(l.bbox.h+l.bbox.d)/2+l.bbox.d)}else{k.bbox=this.data[0].toHTML(k).bbox}}this.HTMLhandleSpace(k);this.HTMLhandleColor(k);return k}});MathJax.Hub.Register.StartupHook("onLoad",function(){setTimeout(MathJax.Callback(["loadComplete",d,"jax.js"]),0)})});b.Register.StartupHook("End Config",function(){b.Browser.Select({MSIE:function(j){var n=(document.documentMode||0);var m=j.versionAtLeast("7.0");var l=j.versionAtLeast("8.0")&&n>7;var k=(document.compatMode==="BackCompat");if(n<9){d.config.styles[".MathJax .MathJax_HitBox"]["background-color"]="white";d.config.styles[".MathJax .MathJax_HitBox"].opacity=0;d.config.styles[".MathJax .MathJax_HitBox"].filter="alpha(opacity=0)"}d.Augment({PaddingWidthBug:true,msieAccentBug:true,msieColorBug:true,msieColorPositionBug:true,msieRelativeWidthBug:k,msieDisappearingBug:(n>=8),msieMarginScaleBug:(n<8),m
 siePaddingWidthBug:true,msieBorderWidthBug:k,msieFrameSizeBug:(n<=8),msieInlineBlockAlignBug:(!l||k),msiePlaceBoxBug:(l&&!k),msieClipRectBug:!l,msieNegativeSpaceBug:k,cloneNodeBug:(l&&j.version==="8.0"),initialSkipBug:(n<8),msieNegativeBBoxBug:(n>=8),msieIE6:!m,msieItalicWidthBug:true,FontFaceBug:true,msieFontCSSBug:j.isIE9,allowWebFonts:(n>=9?"woff":"eot")})},Firefox:function(k){var l=false;if(k.versionAtLeast("3.5")){var j=String(document.location).replace(/[^\/]*$/,"");if(document.location.protocol!=="file:"||b.config.root.match(/^https?:\/\//)||(b.config.root+"/").substr(0,j.length)===j){l="otf"}}d.Augment({ffVerticalAlignBug:true,AccentBug:true,allowWebFonts:l})},Safari:function(o){var m=o.versionAtLeast("3.0");var l=o.versionAtLeast("3.1");var j=navigator.appVersion.match(/ Safari\/\d/)&&navigator.appVersion.match(/ Version\/\d/)&&navigator.vendor.match(/Apple/);var k=(navigator.appVersion.match(/ Android (\d+)\.(\d+)/));var p=(l&&o.isMobile&&((navigator.platform.match
 (/iPad|iPod|iPhone/)&&!o.versionAtLeast("5.0"))||(k!=null&&(k[1]<2||(k[1]==2&&k[2]<2)))));d.Augment({config:{styles:{".MathJax img, .MathJax nobr, .MathJax a":{"max-width":"5000em","max-height":"5000em"}}},rfuzz:0.011,AccentBug:true,AdjustSurd:true,negativeBBoxes:true,safariNegativeSpaceBug:true,safariVerticalAlignBug:!l,safariTextNodeBug:!m,forceReflow:true,allowWebFonts:(l&&!p?"otf":false)});if(j){d.Augment({webFontDefault:(o.isMobile?"sans-serif":"serif")})}if(o.isPC){d.Augment({adjustAvailableFonts:d.removeSTIXfonts,checkWebFontsTwice:true})}if(p){var n=b.config["HTML-CSS"];if(n){n.availableFonts=[];n.preferredFont=null}else{b.config["HTML-CSS"]={availableFonts:[],preferredFont:null}}}},Chrome:function(j){d.Augment({Em:d.Px,unEm:d.unPx,chromeHeightBug:true,cloneNodeBug:true,rfuzz:0.011,AccentBug:true,AdjustSurd:true,negativeBBoxes:true,safariNegativeSpaceBug:true,safariWebFontSerif:[""],forceReflow:true,allowWebFonts:(j.versionAtLeast("4.0")?"otf":"svg")})},Opera:functio
 n(j){j.isMini=(navigator.appVersion.match("Opera Mini")!=null);d.config.styles[".MathJax .merror"]["vertical-align"]=null;d.config.styles[".MathJax span"]["z-index"]=0;d.Augment({operaHeightBug:true,operaVerticalAlignBug:true,operaFontSizeBug:j.versionAtLeast("10.61"),initialSkipBug:true,FontFaceBug:true,PaddingWidthBug:true,allowWebFonts:(j.versionAtLeast("10.0")&&!j.isMini?"otf":false),adjustAvailableFonts:d.removeSTIXfonts})},Konqueror:function(j){d.Augment({konquerorVerticalAlignBug:true})}})});MathJax.Hub.Register.StartupHook("End Cookie",function(){if(b.config.menuSettings.zoom!=="None"){g.Require("[MathJax]/extensions/MathZoom.js")}})})(MathJax.Ajax,MathJax.Hub,MathJax.OutputJax["HTML-CSS"]);
+
diff --git a/data/mathjax/jax/output/Makefile.am b/data/mathjax/jax/output/Makefile.am
new file mode 100644
index 0000000..b5b9680
--- /dev/null
+++ b/data/mathjax/jax/output/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = HTML-CSS NativeMML
diff --git a/data/mathjax/jax/output/NativeMML/Makefile.am b/data/mathjax/jax/output/NativeMML/Makefile.am
new file mode 100644
index 0000000..1544815
--- /dev/null
+++ b/data/mathjax/jax/output/NativeMML/Makefile.am
@@ -0,0 +1,5 @@
+mjdir=$(datadir)/yelp/mathjax/jax/output/NativeMML
+
+mj_DATA = config.js jax.js
+
+EXTRA_DIST = $(mj_DATA)
diff --git a/data/mathjax/jax/output/NativeMML/config.js b/data/mathjax/jax/output/NativeMML/config.js
new file mode 100644
index 0000000..ec11d46
--- /dev/null
+++ b/data/mathjax/jax/output/NativeMML/config.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/NativeMML/config.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+MathJax.OutputJax.NativeMML=MathJax.OutputJax({id:"NativeMML",version:"2.1",directory:MathJax.OutputJax.directory+"/NativeMML",extensionDir:MathJax.OutputJax.extensionDir+"/NativeMML",config:{scale:100,minScaleAdjust:50,styles:{"DIV.MathJax_MathML":{"text-align":"center",margin:".75em 0px"}}}});if(!MathJax.Hub.config.delayJaxRegistration){MathJax.OutputJax.NativeMML.Register("jax/mml")}MathJax.OutputJax.NativeMML.loadComplete("config.js");
+
diff --git a/data/mathjax/jax/output/NativeMML/jax.js b/data/mathjax/jax/output/NativeMML/jax.js
new file mode 100644
index 0000000..0ec1e15
--- /dev/null
+++ b/data/mathjax/jax/output/NativeMML/jax.js
@@ -0,0 +1,16 @@
+/*
+ *  /MathJax/jax/output/NativeMML/jax.js
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ *
+ *  Part of the MathJax library.
+ *  See http://www.mathjax.org for details.
+ * 
+ *  Licensed under the Apache License, Version 2.0;
+ *  you may not use this file except in compliance with the License.
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ */
+
+(function(j,b,f,d){var e,h=b.Browser.isMSIE;var g,a,c,i;b.Register.StartupHook("MathZoom Ready",function(){i=MathJax.Extension.MathZoom});j.Augment({config:{styles:{".MathJax_MathML":{"font-style":"normal","font-weight":"normal","line-height":"normal","font-size":"100%","font-size-adjust":"none","text-indent":0,"text-align":"left","text-transform":"none","letter-spacing":"normal","word-spacing":"normal","word-wrap":"normal","white-space":"nowrap","float":"none",direction:"ltr",border:0,padding:0,margin:0},"span.MathJax_MathML":{display:"inline"},"div.MathJax_MathML":{display:"block"},".MathJax_mmlExBox":{display:"block",overflow:"hidden",height:"1px",width:"60ex",padding:0,border:0,margin:0}}},settings:b.config.menuSettings,Config:function(){this.SUPER(arguments).Config.call(this);if(this.settings.scale){this.config.scale=this.settings.scale}if(b.config.displayAlign!=="center"){var m=b.config.displayAlign,k=b.config.displayIndent;var l={"text-align":m+"!important"};l["margin
 -"+m]=k+"!important";MathJax.Hub.Insert(this.config.styles,{"div.MathJax_MathML":l,"div.MathJax_MathML math":{"text-align":m},"div.MathJax_MathContainer > span":{"text-align":m+"!important"}})}if(!this.require){this.require=[]}this.require.push(MathJax.OutputJax.extensionDir+"/MathEvents.js")},Startup:function(){g=MathJax.Extension.MathEvents.Event;a=MathJax.Extension.MathEvents.Touch;c=MathJax.Extension.MathEvents.Hover;this.ContextMenu=g.ContextMenu;this.Mousedown=g.AltContextMenu;this.Mouseover=c.Mouseover;this.Mouseout=c.Mouseout;this.Mousemove=c.Mousemove;if(!h){this.EmExSpan=d.Element("span",{style:{position:"absolute","font-size-adjust":"none"}},[["div",{className:"MathJax_mmlExBox"}],["span",{className:"MathJax_MathML"}]]);e.math(e.mspace().With({width:"60ex"})).toNativeMML(this.EmExSpan.lastChild)}return f.Styles(this.config.styles)},InitializeMML:function(){this.initialized=true;if(h){try{if(!b.Browser.mpNamespace){var k=document.createElement("object");k.id="mathp
 layer";k.classid="clsid:32F66A20-7614-11D4-BD11-00104BD3F987";document.getElementsByTagName("head")[0].appendChild(k);document.namespaces.add("m","http://www.w3.org/1998/Math/MathML";);b.Browser.mpNamespace=true}if(!b.Browser.mpImported){document.namespaces.m.doImport("#mathplayer");b.Browser.mpImported=true}}catch(l){alert("MathJax was not able to set up MathPlayer.\n\nIf MathPlayer is not installed, you need to install it first.\nOtherwise, your security settings may be preventing ActiveX     \ncontrols from running.  Use the Internet Options item under\nthe Tools menu and select the Security tab, then press the\nCustom Level button. Check that the settings for\n'Run ActiveX Controls', and 'Binary and script behaviors'\nare enabled.\n\nCurrently you will see error messages rather than\ntypeset mathematics.")}}else{document.body.appendChild(this.EmExSpan);this.defaultEx=this.EmExSpan.firstChild.offsetWidth/60;this.defaultMEx=this.EmExSpan.lastChild.offsetWidth/60;document.bo
 dy.removeChild(this.EmExSpan)}},preTranslate:function(l){var r=l.jax[this.id],s,n=r.length,w,p,y,u,x,k,t,q,o;for(s=0;s<n;s++){w=r[s];if(!w.parentNode){continue}if(!this.initialized){this.InitializeMML()}p=w.previousSibling;if(p&&p.className==="MathJax_MathML"){p.parentNode.removeChild(p)}k=w.MathJax.elementJax;if(!k){continue}x=k.root;k.NativeMML={};var v=(x.Get("display")==="block"?"div":"span");y=d.Element(v,{className:"MathJax_MathML",id:k.inputID+"-Frame"},[["span",{className:"MathJax_MathContainer",isMathJax:true,jaxID:this.id,style:{position:"relative",display:"inline-block","white-space":"nowrap"}},[["span",{isMathJax:true,style:{display:"inline-block"}}]]]]);w.parentNode.insertBefore(y,w);if(!h){w.parentNode.insertBefore(this.EmExSpan.cloneNode(true),w)}}for(s=0;s<n;s++){w=r[s];if(!w.parentNode){continue}k=w.MathJax.elementJax;if(!k){continue}if(!h){u=w.previousSibling;y=u.previousSibling;t=u.firstChild.offsetWidth/60;q=u.lastChild.offsetWidth/60;if(t===0||t==="NaN")
 {t=this.defaultEx;q=this.defaultMEx}o=(q>1?t/q:1)*this.config.scale;o=Math.floor(Math.max(this.config.minScaleAdjust/100,o))}else{o=100}k.NativeMML.fontSize=o+"%"}if(!h){for(s=0;s<n;s++){w=r[s];if(!w.parentNode||!w.MathJax.elementJax){continue}u=r[s].previousSibling;u.parentNode.removeChild(u)}}},Translate:function(q){if(!q.parentNode){return}var k=q.MathJax.elementJax,r=k.root;var s=document.getElementById(k.inputID+"-Frame"),l=s.firstChild,o=l.firstChild;s.style.fontSize=k.NativeMML.fontSize;try{r.toNativeMML(o)}catch(p){if(p.restart){while(o.firstChild){o.removeChild(o.firstChild)}}throw p}if(h){if(l.addEventListener){for(var m in this.MSIE9events){if(this.MSIE9events.hasOwnProperty(m)){l.addEventListener(m,this.MSIE9event,true)}}}else{var n=(this.config.showMathMenuMSIE!=null?this:b).config;if(n.showMathMenuMSIE&&!this.settings.mpContext&&!this.settings.mpMouse){this.MSIEoverlay(l)}else{l.style.position="";o.firstChild.onmousedown=this.MSIEaltMenu}}}else{l.oncontextmenu=
 g.Menu;l.onmouseover=g.Mouseover;l.onmouseout=g.Mouseout;l.onmousedown=g.Mousedown;l.onclick=g.Click;l.ondblclick=g.DblClick;if(b.Browser.noContextMenu){l.ontouchstart=a.start;l.ontouchend=a.end}}},postTranslate:function(l){if(this.forceReflow){var k=(document.styleSheets||[])[0]||{};k.disabled=true;k.disabled=false}},Remove:function(k){var l=k.SourceElement();if(!l){return}l=l.previousSibling;if(!l){return}if(l.className.match(/MathJax_MathML/)){l.parentNode.removeChild(l)}},MMLnamespace:"http://www.w3.org/1998/Math/MathML",MSIEoverlay:function(k){var l=k.firstChild;if(l.nodeName.toLowerCase()==="span"){l=l.firstChild}var m=this.getHoverBBox(null,l,{});d.addElement(k,"span",{style:{display:"inline-block",width:0,height:0,position:"relative"}},[["span",{isMathJax:true,className:"MathJax_MathPlayer_Overlay",style:{display:"inline-block",position:"absolute",left:c.Px(-m.w),top:c.Px(-m.h-(m.y||0)-1),width:c.Px(m.w),height:c.Px(m.h+m.d),cursor:"pointer","background-color":"white
 ",filter:"alpha(opacity=0)"}}]]);b.Insert(k,{msieMath:l,onmousedown:this.MSIEevent,oncontextmenu:this.MSIEevent,onclick:this.MSIEevent,onmouseup:this.MSIEevent,onmousemove:this.MSIEevent,ondblclick:this.MSIEevent,onmouseover:this.MSIEevent,onmouseout:this.MSIEevent})},MSIEevents:{mousedown:"Mousedown",contextmenu:"ContextMenu",click:"Click",mouseup:"Mouseup",mousemove:"Mousemove",dblclick:"DblClick",mouseover:"Mouseover",mouseout:"Mouseout"},MSIEevent:function(){var l=window.event;var k=j.MSIEevents[l.type];if(j[k]&&j[k](l,this)===false){return false}if(i&&i.HandleEvent(l,k,this)===false){return false}if(l.srcElement.className==="MathJax_MathPlayer_Overlay"&&this.msieMath.fireEvent){if(k==="ContextMenu"||k==="Mouseover"||k==="Mouseout"){this.msieMath.fireEvent("on"+l.type,l)}}return g.False(l)},MSIEaltMenu:function(){var k=this.parentNode.parentNode;while(!k.jaxID){k=k.parentNode}g.AltContextMenu(window.event,k)},MSIE9events:{contextmenu:"Menu",click:"Click",dblclick:"DblCli
 ck",mouseup:"False",mouseover:"Mouseover",mouseout:"Mouseout"},MSIE9event:function(l){if(l.type==="contextmenu"&&j.settings.mpContext){return true}if(l.type==="mouseup"&&j.settings.mpMouse){return true}if(l.type==="click"&&j.settings.mpContext){return g.AltContextMenu(l,this)}var k=j.MSIE9events[l.type];return g[k].call(this,l)},getJaxFromMath:function(k){k=k.parentNode;do{k=k.nextSibling}while(k&&k.nodeName.toLowerCase()!=="script");return b.getJaxFor(k)},getHoverSpan:function(k,l){return l.firstChild},getHoverBBox:function(k,l,m){return g.getBBox(l.parentNode)},Zoom:function(l,r,p,k,o){l.root.toNativeMML(r);if(this.msieIE8HeightBug){r.style.position="absolute"}var m=p.offsetWidth||p.scrollWidth,s=p.offsetHeight||p.scrollHeight;var q=r.offsetWidth,n=r.offsetHeight;if(this.msieIE8HeightBug){r.style.position=""}return{Y:-g.getBBox(r.parentNode).h,mW:m,mH:s,zW:q,zH:n}},NAMEDSPACE:{negativeveryverythinmathspace:"-.0556em",negativeverythinmathspace:"-.1111em",negativethinmathspa
 ce:"-.1667em",negativemediummathspace:"-.2222em",negativethickmathspace:"-.2778em",negativeverythickmathspace:"-.3333em",negativeveryverythickmathspace:"-.3889em"}});b.Register.StartupHook("mml Jax Ready",function(){e=MathJax.ElementJax.mml;e.mbase.Augment({toNativeMML:function(p){var n=this.NativeMMLelement(this.type);this.NativeMMLattributes(n);for(var o=0,l=this.data.length;o<l;o++){if(this.data[o]){this.data[o].toNativeMML(n)}else{n.appendChild(this.NativeMMLelement("mrow"))}}p.appendChild(n)},NativeMMLattributes:function(n){var r=this.defaults;var t=(this.attrNames||e.copyAttributeNames),p=e.skipAttributes;if(!this.attrNames){if(this.type==="mstyle"){r=e.math.prototype.defaults}for(var s in r){if(!p[s]&&r.hasOwnProperty(s)){if(this[s]!=null){n.setAttribute(s,this.NativeMMLattribute(this[s]))}}}}for(var o=0,l=t.length;o<l;o++){var q=(this.attr||{})[t[o]];if(q==null){q=this[t[o]]}if(q!=null){n.setAttribute(t[o],this.NativeMMLattribute(q))}}this.NativeMMLclass(n)},NativeMM
 Lclass:function(l){var n=[];if(this["class"]){n.push(this["class"])}if(this.isa(e.TeXAtom)){var m=["ORD","OP","BIN","REL","OPEN","CLOSE","PUNCT","INNER","VCENTER"][this.texClass];if(m){n.push("MJX-TeXAtom-"+m)}}if(this.mathvariant&&this.NativeMMLvariants[this.mathvariant]){n.push("MJX"+this.mathvariant)}if(this.arrow){n.push("MJX-arrow")}if(this.variantForm){n.push("MJX-variant")}if(n.length){l.setAttribute("class",n.join(" "))}},NativeMMLattribute:function(l){l=String(l);if(j.NAMEDSPACE[l]){l=j.NAMEDSPACE[l]}else{if(l.match(/^\s*(([-+])?(\d+(\.\d*)?|\.\d+))\s*mu\s*$/)){l=RegExp.$2+((1/18)*RegExp.$3).toFixed(3).replace(/\.?0+$/,"")+"em"}else{if(this.NativeMMLvariants[l]){l=this.NativeMMLvariants[l]}}}return l},NativeMMLvariants:{"-tex-caligraphic":e.VARIANT.SCRIPT,"-tex-caligraphic-bold":e.VARIANT.BOLDSCRIPT,"-tex-oldstyle":e.VARIANT.NORMAL,"-tex-oldstyle-bold":e.VARIANT.BOLD,"-tex-mathit":e.VARIANT.ITALIC},NativeMMLelement:function(l){var m=(h?document.createElement("m:"+l)
 :document.createElementNS(j.MMLnamespace,l));m.isMathJax=true;return m}});e.mrow.Augment({toNativeMML:function(o){if(this.inferred&&this.parent.inferRow){for(var n=0,l=this.data.length;n<l;n++){if(this.data[n]){this.data[n].toNativeMML(o)}else{o.appendChild(this.NativeMMLelement("mrow"))}}}else{this.SUPER(arguments).toNativeMML.call(this,o)}}});e.msubsup.Augment({toNativeMML:function(q){var p=this.type;if(this.data[this.sup]==null){p="msub"}if(this.data[this.sub]==null){p="msup"}var n=this.NativeMMLelement(p);this.NativeMMLattributes(n);delete this.data[0].inferred;for(var o=0,l=this.data.length;o<l;o++){if(this.data[o]){this.data[o].toNativeMML(n)}}q.appendChild(n)}});e.munderover.Augment({toNativeMML:function(q){var p=this.type;if(this.data[this.under]==null){p="mover"}if(this.data[this.over]==null){p="munder"}var n=this.NativeMMLelement(p);this.NativeMMLattributes(n);delete this.data[0].inferred;for(var o=0,l=this.data.length;o<l;o++){if(this.data[o]){this.data[o].toNativ
 eMML(n)}}q.appendChild(n)}});if(b.Browser.isFirefox){if(!b.Browser.versionAtLeast("13.0")){e.mtable.Augment({toNativeMML:function(l){if(this.width){var m=(this.style||"").replace(/;\s*$/,"").split(";");if(m[0]===""){m.shift()}m.push("width:"+this.width);this.style=m.join(";")}this.SUPER(arguments).toNativeMML.call(this,l)}})}if(!b.Browser.versionAtLeast("9.0")){e.mlabeledtr.Augment({toNativeMML:function(p){var n=this.NativeMMLelement("mtr");this.NativeMMLattributes(n);for(var o=1,l=this.data.length;o<l;o++){if(this.data[o]){this.data[o].toNativeMML(n)}else{n.appendChild(this.NativeMMLelement("mrow"))}}p.appendChild(n)}})}var k=MathJax.Ajax.fileURL(MathJax.OutputJax.fontDir+"/HTML-CSS/TeX/otf");j.Augment({config:{styles:{'[mathvariant="double-struck"]':{"font-family":"MathJax_AMS, MathJax_AMS-WEB"},'[mathvariant="script"]':{"font-family":"MathJax_Script, MathJax_Script-WEB"},'[mathvariant="fraktur"]':{"font-family":"MathJax_Fraktur, MathJax_Fraktur-WEB"},'[mathvariant="bold-s
 cript"]':{"font-family":"MathJax_Script, MathJax_Caligraphic-WEB","font-weight":"bold"},'[mathvariant="bold-fraktur"]':{"font-family":"MathJax_Fraktur, MathJax_Fraktur-WEB","font-weight":"bold"},'[mathvariant="monospace"]':{"font-family":"monospace"},'[mathvariant="sans-serif"]':{"font-family":"sans-serif"},'[mathvariant="bold-sans-serif"]':{"font-family":"sans-serif","font-weight":"bold"},'[mathvariant="sans-serif-italic"]':{"font-family":"sans-serif","font-style":"italic"},'[mathvariant="sans-serif-bold-italic"]':{"font-family":"sans-serif","font-style":"italic","font-weight":"bold"},'[class="MJX-tex-oldstyle"]':{"font-family":"MathJax_Caligraphic, MathJax_Caligraphic-WEB"},'[class="MJX-tex-oldstyle-bold"]':{"font-family":"MathJax_Caligraphic, MathJax_Caligraphic-WEB","font-weight":"bold"},'[class="MJX-tex-caligraphic"]':{"font-family":"MathJax_Caligraphic, MathJax_Caligraphic-WEB"},'[class="MJX-tex-caligraphic-bold"]':{"font-family":"MathJax_Caligraphic, MathJax_Caligraph
 ic-WEB","font-weight":"bold"},"@font-face /*1*/":{"font-family":"MathJax_AMS-WEB",src:"url('"+k+"/MathJax_AMS-Regular.otf')"},"@font-face /*2*/":{"font-family":"MathJax_Script-WEB",src:"url('"+k+"/MathJax_Script-Regular.otf')"},"@font-face /*3*/":{"font-family":"MathJax_Fraktur-WEB",src:"url('"+k+"/MathJax_Fraktur-Regular.otf')"},"@font-face /*4*/":{"font-family":"MathJax_Caligraphic-WEB",src:"url('"+k+"/MathJax_Caligraphic-Regular.otf')"},"@font-face /*5*/":{"font-family":"MathJax_Fraktur-WEB","font-weight":"bold",src:"url('"+k+"/MathJax_Fraktur-Bold.otf')"},"@font-face /*6*/":{"font-family":"MathJax_Caligraphic-WEB","font-weight":"bold",src:"url('"+k+"/MathJax_Caligraphic-Bold.otf')"}}}})}e.math.Augment({toNativeMML:function(p){var n=this.NativeMMLelement(this.type),q=n;n.setAttribute("xmlns",j.MMLnamespace);this.NativeMMLattributes(n);if(j.widthBug){n=n.appendChild(this.NativeMMLelement("mrow"))}for(var o=0,l=this.data.length;o<l;o++){if(this.data[o]){this.data[o].toNativ
 eMML(n)}else{n.appendChild(this.NativeMMLelement("mrow"))}}p.appendChild(q);if(j.widthBug){p.style.width=q.firstChild.scrollWidth+"px"}}});e.TeXAtom.Augment({toNativeMML:function(m){var l=this.NativeMMLelement("mrow");this.NativeMMLattributes(l);this.data[0].toNativeMML(l);m.appendChild(l)}});e.chars.Augment({toNativeMML:function(l){l.appendChild(document.createTextNode(this.toString()))}});e.entity.Augment({toNativeMML:function(l){l.appendChild(document.createTextNode(this.toString()))}});e.xml.Augment({toNativeMML:function(o){for(var n=0,l=this.data.length;n<l;n++){o.appendChild(this.data[n].cloneNode(true))}}});b.Register.StartupHook("TeX mathchoice Ready",function(){e.TeXmathchoice.Augment({toNativeMML:function(l){this.Core().toNativeMML(l)}})});setTimeout(MathJax.Callback(["loadComplete",j,"jax.js"]),0)});b.Browser.Select({MSIE:function(k){var l=(document.documentMode||0);j.msieIE8HeightBug=(l===8)},Opera:function(k){j.operaPositionBug=true},Firefox:function(k){j.forceR
 eflow=true;j.widthBug=true}});b.Register.StartupHook("End Cookie",function(){if(b.config.menuSettings.zoom!=="None"){f.Require("[MathJax]/extensions/MathZoom.js")}})})(MathJax.OutputJax.NativeMML,MathJax.Hub,MathJax.Ajax,MathJax.HTML);
+
diff --git a/data/mathjax/unpacked/Makefile.am b/data/mathjax/unpacked/Makefile.am
new file mode 100644
index 0000000..3c0954c
--- /dev/null
+++ b/data/mathjax/unpacked/Makefile.am
@@ -0,0 +1,159 @@
+EXTRA_DIST =									\
+	MathJax.js								\
+	config/MMLorHTML.js							\
+	extensions/HTML-CSS/handle-floats.js					\
+	extensions/MathEvents.js						\
+	extensions/MathMenu.js							\
+	extensions/MathZoom.js							\
+	extensions/mml2jax.js							\
+	jax/element/mml/jax.js							\
+	jax/element/mml/optable/Arrows.js					\
+	jax/element/mml/optable/BasicLatin.js					\
+	jax/element/mml/optable/CombDiacritMarks.js				\
+	jax/element/mml/optable/CombDiactForSymbols.js				\
+	jax/element/mml/optable/Dingbats.js					\
+	jax/element/mml/optable/GeneralPunctuation.js				\
+	jax/element/mml/optable/GeometricShapes.js				\
+	jax/element/mml/optable/GreekAndCoptic.js				\
+	jax/element/mml/optable/Latin1Supplement.js				\
+	jax/element/mml/optable/LetterlikeSymbols.js				\
+	jax/element/mml/optable/MathOperators.js				\
+	jax/element/mml/optable/MiscMathSymbolsA.js				\
+	jax/element/mml/optable/MiscMathSymbolsB.js				\
+	jax/element/mml/optable/MiscSymbolsAndArrows.js				\
+	jax/element/mml/optable/MiscTechnical.js				\
+	jax/element/mml/optable/SpacingModLetters.js				\
+	jax/element/mml/optable/SuppMathOperators.js				\
+	jax/element/mml/optable/SupplementalArrowsA.js				\
+	jax/element/mml/optable/SupplementalArrowsB.js				\
+	jax/input/MathML/config.js						\
+	jax/input/MathML/entities/a.js						\
+	jax/input/MathML/entities/b.js						\
+	jax/input/MathML/entities/c.js						\
+	jax/input/MathML/entities/d.js						\
+	jax/input/MathML/entities/e.js						\
+	jax/input/MathML/entities/f.js						\
+	jax/input/MathML/entities/fr.js						\
+	jax/input/MathML/entities/g.js						\
+	jax/input/MathML/entities/h.js						\
+	jax/input/MathML/entities/i.js						\
+	jax/input/MathML/entities/j.js						\
+	jax/input/MathML/entities/k.js						\
+	jax/input/MathML/entities/l.js						\
+	jax/input/MathML/entities/m.js						\
+	jax/input/MathML/entities/n.js						\
+	jax/input/MathML/entities/o.js						\
+	jax/input/MathML/entities/opf.js					\
+	jax/input/MathML/entities/p.js						\
+	jax/input/MathML/entities/q.js						\
+	jax/input/MathML/entities/r.js						\
+	jax/input/MathML/entities/s.js						\
+	jax/input/MathML/entities/scr.js					\
+	jax/input/MathML/entities/t.js						\
+	jax/input/MathML/entities/u.js						\
+	jax/input/MathML/entities/v.js						\
+	jax/input/MathML/entities/w.js						\
+	jax/input/MathML/entities/x.js						\
+	jax/input/MathML/entities/y.js						\
+	jax/input/MathML/entities/z.js						\
+	jax/input/MathML/jax.js							\
+	jax/output/HTML-CSS/autoload/annotation-xml.js				\
+	jax/output/HTML-CSS/autoload/maction.js					\
+	jax/output/HTML-CSS/autoload/menclose.js				\
+	jax/output/HTML-CSS/autoload/mglyph.js					\
+	jax/output/HTML-CSS/autoload/mmultiscripts.js				\
+	jax/output/HTML-CSS/autoload/ms.js					\
+	jax/output/HTML-CSS/autoload/mtable.js					\
+	jax/output/HTML-CSS/autoload/multiline.js				\
+	jax/output/HTML-CSS/config.js						\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Arrows.js			\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BBBold.js			\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js			\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/CombDiacritMarks.js		\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js			\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/EnclosedAlphanum.js		\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeneralPunctuation.js		\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeometricShapes.js		\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GreekAndCoptic.js		\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Latin1Supplement.js		\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LatinExtendedA.js		\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LetterlikeSymbols.js		\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MathOperators.js		\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js		\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js		\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscTechnical.js		\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js			\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SpacingModLetters.js		\
+	jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SuppMathOperators.js		\
+	jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Main.js		\
+	jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/BasicLatin.js		\
+	jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js			\
+	jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js			\
+	jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/BasicLatin.js		\
+	jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js			\
+	jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js			\
+	jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/Arrows.js			\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiacritMarks.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiactForSymbols.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeneralPunctuation.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeometricShapes.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/Latin1Supplement.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/LetterlikeSymbols.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/Main.js				\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/MathOperators.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscMathSymbolsA.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js			\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/SpacingModLetters.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/SuppMathOperators.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Bold/SupplementalArrowsA.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Italic/CombDiacritMarks.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Italic/GeneralPunctuation.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Italic/Latin1Supplement.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Italic/LetterlikeSymbols.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Italic/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/Main/Regular/CombDiacritMarks.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Regular/GeometricShapes.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Regular/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js		\
+	jax/output/HTML-CSS/fonts/TeX/Main/Regular/SpacingModLetters.js		\
+	jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/Math/Italic/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/BasicLatin.js		\
+	jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/CombDiacritMarks.js	\
+	jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Other.js			\
+	jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/BasicLatin.js		\
+	jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js	\
+	jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Other.js			\
+	jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/BasicLatin.js		\
+	jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js	\
+	jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Other.js		\
+	jax/output/HTML-CSS/fonts/TeX/Script/Regular/BasicLatin.js		\
+	jax/output/HTML-CSS/fonts/TeX/Script/Regular/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/Script/Regular/Other.js			\
+	jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Main.js			\
+	jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/BasicLatin.js		\
+	jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js	\
+	jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js		\
+	jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js		\
+	jax/output/HTML-CSS/fonts/TeX/fontdata-extra.js				\
+	jax/output/HTML-CSS/fonts/TeX/fontdata.js				\
+	jax/output/HTML-CSS/jax.js						\
+	jax/output/NativeMML/config.js						\
+	jax/output/NativeMML/jax.js
diff --git a/data/mathjax/unpacked/MathJax.js b/data/mathjax/unpacked/MathJax.js
new file mode 100644
index 0000000..86a92de
--- /dev/null
+++ b/data/mathjax/unpacked/MathJax.js
@@ -0,0 +1,2476 @@
+/*************************************************************
+ *
+ *  MathJax.js
+ *  
+ *  The main support code for the MathJax Hub, including the
+ *  Ajax, Callback, Messaging, and Object-Oriented Programming
+ *  libraries, as well as the base Jax classes, and startup
+ *  processing code.
+ *  
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+if (document.getElementById && document.childNodes && document.createElement) {
+
+if (!window.MathJax) {window.MathJax= {}}
+if (!MathJax.Hub) {  // skip if already loaded
+  
+MathJax.version = "2.1";
+MathJax.fileversion = "2.1";
+
+/**********************************************************/
+
+(function (BASENAME) {
+  var BASE = window[BASENAME];
+  if (!BASE) {BASE = window[BASENAME] = {}}
+
+  var PROTO = [];  // a static object used to indicate when a prototype is being created
+  var OBJECT = function (def) {
+    var obj = def.constructor; if (!obj) {obj = new Function("")}
+    for (var id in def) {if (id !== 'constructor' && def.hasOwnProperty(id)) {obj[id] = def[id]}}
+    return obj;
+  };
+  var CONSTRUCTOR = function () {
+    return new Function ("return arguments.callee.Init.call(this,arguments)");
+  };
+  //
+  //  Test for Safari 2.x bug (can't replace prototype for result of new Function()).
+  //  (We don't use this version for everyone since it is a closure and we don't need that).
+  //
+  var BUGTEST = CONSTRUCTOR(); BUGTEST.prototype = {bug_test: 1};
+  if (!BUGTEST.prototype.bug_test) {
+    CONSTRUCTOR = function () {
+      return function () {return arguments.callee.Init.call(this,arguments)};
+    };
+  };
+
+  BASE.Object = OBJECT({
+    constructor: CONSTRUCTOR(),
+    
+    Subclass: function (def,classdef) {
+      var obj = CONSTRUCTOR();
+      obj.SUPER = this; obj.Init = this.Init;
+      obj.Subclass = this.Subclass; obj.Augment = this.Augment;
+      obj.protoFunction = this.protoFunction;
+      obj.can = this.can; obj.has = this.has; obj.isa = this.isa;
+      obj.prototype = new this(PROTO);
+      obj.prototype.constructor = obj;  // the real constructor
+      obj.Augment(def,classdef);
+      return obj;
+    },
+  
+    Init: function (args) {
+      var obj = this;
+      if (args.length === 1 && args[0] === PROTO) {return obj}
+      if (!(obj instanceof args.callee)) {obj = new args.callee(PROTO)}
+      return obj.Init.apply(obj,args) || obj;
+    },
+    
+    Augment: function (def,classdef) {
+      var id;
+      if (def != null) {
+        for (id in def) {if (def.hasOwnProperty(id)) {this.protoFunction(id,def[id])}}
+        // MSIE doesn't list toString even if it is not native so handle it separately
+        if (def.toString !== this.prototype.toString && def.toString !== {}.toString)
+          {this.protoFunction('toString',def.toString)}
+      }
+      if (classdef != null) {
+        for (id in classdef) {if (classdef.hasOwnProperty(id)) {this[id] = classdef[id]}}
+      }
+      return this;
+    },
+  
+    protoFunction: function (id,def) {
+      this.prototype[id] = def;
+      if (typeof def === "function") {def.SUPER = this.SUPER.prototype}
+    },
+  
+    prototype: {
+      Init: function () {},
+      SUPER: function (fn) {return fn.callee.SUPER},
+      can: function (method) {return typeof(this[method]) === "function"},
+      has: function (property) {return typeof(this[property]) !== "undefined"},
+      isa: function (obj) {return (obj instanceof Object) && (this instanceof obj)}
+    },
+  
+    can: function (method)   {return this.prototype.can.call(this,method)},
+    has: function (property) {return this.prototype.has.call(this,property)},
+    isa: function (obj) {
+      var constructor = this;
+      while (constructor) {
+        if (constructor === obj) {return true} else {constructor = constructor.SUPER}
+      }
+      return false;
+    },
+
+
+    SimpleSUPER: OBJECT({
+      constructor: function (def) {return this.SimpleSUPER.define(def)},
+
+      define: function (src) {
+	var dst = {};
+	if (src != null) {
+          for (var id in src) {if (src.hasOwnProperty(id)) {dst[id] = this.wrap(id,src[id])}}
+	  // MSIE doesn't list toString even if it is not native so handle it separately
+          if (src.toString !== this.prototype.toString && src.toString !== {}.toString)
+            {dst.toString = this.wrap('toString',src.toString)}
+	}
+	return dst;
+      },
+
+      wrap: function (id,f) {
+	if (typeof(f) === 'function' && f.toString().match(/\.\s*SUPER\s*\(/)) {
+	  var fn = new Function(this.wrapper);
+	  fn.label = id; fn.original = f; f = fn;
+	  fn.toString = this.stringify;
+	}
+	return f;
+      },
+
+      wrapper: function () {
+	var fn = arguments.callee;
+	this.SUPER = fn.SUPER[fn.label];
+	try {var result = fn.original.apply(this,arguments)}
+	  catch (err) {delete this.SUPER; throw err}
+	delete this.SUPER;
+	return result;
+      }.toString().replace(/^\s*function\s*\(\)\s*\{\s*/i,"").replace(/\s*\}\s*$/i,""),
+
+      toString: function () {
+	return this.original.toString.apply(this.original,arguments);
+      }
+    })
+  });
+
+})("MathJax");
+
+/**********************************************************/
+
+/*
+ *  Create a callback function from various forms of data:
+ *  
+ *     MathJax.Callback(fn)    -- callback to a function
+ *
+ *     MathJax.Callback([fn])  -- callback to function
+ *     MathJax.Callback([fn,data...])
+ *                             -- callback to function with given data as arguments
+ *     MathJax.Callback([object,fn])
+ *                             -- call fn with object as "this"
+ *     MathJax.Callback([object,fn,data...])
+ *                             -- call fn with object as "this" and data as arguments
+ *     MathJax.Callback(["method",object])
+ *                             -- call method of object wth object as "this"
+ *     MathJax.Callback(["method",object,data...])
+ *                             -- as above, but with data as arguments to method
+ *
+ *     MathJax.Callback({hook: fn, data: [...], object: this})
+ *                             -- give function, data, and object to act as "this" explicitly
+ *
+ *     MathJax.Callback("code")  -- callback that compiles and executes a string
+ *
+ *     MathJax.Callback([...],i)
+ *                             -- use slice of array starting at i and interpret
+ *                                result as above.  (Used for passing "arguments" array
+ *                                and trimming initial arguments, if any.)
+ */
+
+/*
+ *    MathJax.Callback.After([...],cb1,cb2,...)
+ *                             -- make a callback that isn't called until all the other
+ *                                ones are called first.  I.e., wait for a union of
+ *                                callbacks to occur before making the given callback.
+ */
+
+/*
+ *  MathJax.Callback.Queue([callback,...])
+ *                             -- make a synchronized queue of commands that process
+ *                                sequentially, waiting for those that return uncalled
+ *                                callbacks.
+ */
+
+/*
+ *  MathJax.Callback.Signal(name)
+ *                             -- finds or creates a names signal, to which listeners
+ *                                can be attached and are signaled by messages posted
+ *                                to the signal.  Responses can be asynchronous.
+ */
+
+(function (BASENAME) {
+  var BASE = window[BASENAME];
+  if (!BASE) {BASE = window[BASENAME] = {}}
+  //
+  //  Create a callback from an associative array
+  //
+  var CALLBACK = function (data) {
+    var cb = new Function("return arguments.callee.execute.apply(arguments.callee,arguments)");
+    for (var id in CALLBACK.prototype) {
+      if (CALLBACK.prototype.hasOwnProperty(id)) {
+        if (typeof(data[id]) !== 'undefined') {cb[id] = data[id]}
+                                         else {cb[id] = CALLBACK.prototype[id]}
+      }
+    }
+    cb.toString = CALLBACK.prototype.toString;
+    return cb;
+  };
+  CALLBACK.prototype = {
+    isCallback: true,
+    hook: function () {},
+    data: [],
+    object: window,
+    execute: function () {
+      if (!this.called || this.autoReset) {
+        this.called = !this.autoReset;
+        return this.hook.apply(this.object,this.data.concat([].slice.call(arguments,0)));
+      }
+    },
+    reset: function () {delete this.called},
+    toString: function () {return this.hook.toString.apply(this.hook,arguments)}
+  };
+  var ISCALLBACK = function (f) {
+    return (typeof(f) === "function" && f.isCallback);
+  }
+  //
+  //  Evaluate a string in global context
+  //
+  var EVAL = function (code) {return eval.call(window,code)}
+  EVAL("var __TeSt_VaR__ = 1"); // check if it works in global context
+  if (window.__TeSt_VaR__) {
+    try { delete window.__TeSt_VaR__; } // NOTE IE9 throws when in IE7 mode
+    catch (error) { window.__TeSt_VaR__ = null; } 
+  } else {
+    if (window.execScript) {
+      // IE
+      EVAL = function (code) {
+        BASE.__code = code;
+        code = "try {"+BASENAME+".__result = eval("+BASENAME+".__code)} catch(err) {"+BASENAME+".__result = err}";
+        window.execScript(code);
+        var result = BASE.__result; delete BASE.__result; delete BASE.__code;
+        if (result instanceof Error) {throw result}
+        return result;
+      }
+    } else {
+      // Safari2
+      EVAL = function (code) {
+        BASE.__code = code;
+        code = "try {"+BASENAME+".__result = eval("+BASENAME+".__code)} catch(err) {"+BASENAME+".__result = err}";
+        var head = (document.getElementsByTagName("head"))[0]; if (!head) {head = document.body}
+        var script = document.createElement("script");
+        script.appendChild(document.createTextNode(code));
+        head.appendChild(script); head.removeChild(script);
+        var result = BASE.__result; delete BASE.__result; delete BASE.__code;
+        if (result instanceof Error) {throw result}
+        return result;
+      }
+    }
+  }
+  //
+  //  Create a callback from various types of data
+  //
+  var USING = function (args,i) {
+    if (arguments.length > 1) {
+      if (arguments.length === 2 && !(typeof arguments[0] === 'function') &&
+          arguments[0] instanceof Object && typeof arguments[1] === 'number')
+            {args = [].slice.call(args,i)}
+      else {args = [].slice.call(arguments,0)}
+    }
+    if (args instanceof Array && args.length === 1) {args = args[0]}
+    if (typeof args === 'function') {
+      if (args.execute === CALLBACK.prototype.execute) {return args}
+      return CALLBACK({hook: args});
+    } else if (args instanceof Array) {
+      if (typeof(args[0]) === 'string' && args[1] instanceof Object &&
+                 typeof args[1][args[0]] === 'function') {
+        return CALLBACK({hook: args[1][args[0]], object: args[1], data: args.slice(2)});
+      } else if (typeof args[0] === 'function') {
+        return CALLBACK({hook: args[0], data: args.slice(1)});
+      } else if (typeof args[1] === 'function') {
+        return CALLBACK({hook: args[1], object: args[0], data: args.slice(2)});
+      }
+    } else if (typeof(args) === 'string') {
+      return CALLBACK({hook: EVAL, data: [args]});
+    } else if (args instanceof Object) {
+      return CALLBACK(args);
+    } else if (typeof(args) === 'undefined') {
+      return CALLBACK({});
+    }
+    throw Error("Can't make callback from given data");
+  };
+  
+  //
+  //  Wait for a given time to elapse and then perform the callback
+  //
+  var DELAY = function (time,callback) {
+    callback = USING(callback);
+    callback.timeout = setTimeout(callback,time);
+    return callback;
+  };
+
+  //
+  //  Callback used by AFTER, QUEUE, and SIGNAL to check if calls have completed
+  //
+  var WAITFOR = function (callback,signal) {
+    callback = USING(callback);
+    if (!callback.called) {WAITSIGNAL(callback,signal); signal.pending++}
+  };
+  var WAITEXECUTE = function () {
+    var signals = this.signal; delete this.signal;
+    this.execute = this.oldExecute; delete this.oldExecute;
+    var result = this.execute.apply(this,arguments);
+    if (ISCALLBACK(result) && !result.called) {WAITSIGNAL(result,signals)} else {
+      for (var i = 0, m = signals.length; i < m; i++) {
+        signals[i].pending--;
+        if (signals[i].pending <= 0) {signals[i].call()}
+      }
+    }
+  };
+  var WAITSIGNAL = function (callback,signals) {
+    if (!(signals instanceof Array)) {signals = [signals]}
+    if (!callback.signal) {
+      callback.oldExecute = callback.execute;
+      callback.execute = WAITEXECUTE;
+      callback.signal = signals;
+    } else if (signals.length === 1) {callback.signal.push(signals[0])}
+      else {callback.signal = callback.signal.concat(signals)}
+  };
+
+  //
+  //  Create a callback that is called when a collection of other callbacks have
+  //  all been executed.  If the callback gets called immediately (i.e., the
+  //  others are all already called), check if it returns another callback
+  //  and return that instead.
+  //
+  var AFTER = function (callback) {
+    callback = USING(callback);
+    callback.pending = 0;
+    for (var i = 1, m = arguments.length; i < m; i++)
+      {if (arguments[i]) {WAITFOR(arguments[i],callback)}}
+    if (callback.pending === 0) {
+      var result = callback();
+      if (ISCALLBACK(result)) {callback = result}
+    }
+    return callback;
+  };
+
+  //
+  //  An array of prioritized hooks that are executed sequentially
+  //  with a given set of data.
+  //
+  var HOOKS = MathJax.Object.Subclass({
+    //
+    //  Initialize the array and the auto-reset status
+    //
+    Init: function (reset) {
+      this.hooks = [];
+      this.reset = reset;
+    },
+    //
+    //  Add a callback to the list, in priority order (default priority is 10)
+    //
+    Add: function (hook,priority) {
+      if (priority == null) {priority = 10}
+      if (!ISCALLBACK(hook)) {hook = USING(hook)}
+      hook.priority = priority;
+      var i = this.hooks.length;
+      while (i > 0 && priority < this.hooks[i-1].priority) {i--}
+      this.hooks.splice(i,0,hook);
+      return hook;
+    },
+    Remove: function (hook) {
+      for (var i = 0, m = this.hooks.length; i < m; i++) {
+        if (this.hooks[i] === hook) {this.hooks.splice(i,1); return}
+      }
+    },
+    //
+    //  Execute the list of callbacks, resetting them if requested.
+    //  If any return callbacks, return a callback that will be 
+    //  executed when they all have completed.
+    //
+    Execute: function () {
+      var callbacks = [{}];
+      for (var i = 0, m = this.hooks.length; i < m; i++) {
+        if (this.reset) {this.hooks[i].reset()}
+        var result = this.hooks[i].apply(window,arguments);
+        if (ISCALLBACK(result) && !result.called) {callbacks.push(result)}
+      }
+      if (callbacks.length === 1) {return null}
+      if (callbacks.length === 2) {return callbacks[1]}
+      return AFTER.apply({},callbacks);
+    }
+  });
+  
+  //
+  //  Run an array of callbacks passing them the given data.
+  //  (Legacy function, since this has been replaced by the HOOKS object).
+  //
+  var EXECUTEHOOKS = function (hooks,data,reset) {
+    if (!hooks) {return null}
+    if (!(hooks instanceof Array)) {hooks = [hooks]}
+    if (!(data instanceof Array))  {data = (data == null ? [] : [data])}
+    var handler = HOOKS(reset);
+    for (var i = 0, m = hooks.length; i < m; i++) {handler.Add(hooks[i])}
+    return handler.Execute.apply(handler,data);
+  };
+   
+  //
+  //  Command queue that performs commands in order, waiting when
+  //  necessary for commands to complete asynchronousely
+  //
+  var QUEUE = BASE.Object.Subclass({
+    //
+    //  Create the queue and push any commands that are specified
+    //
+    Init: function () {
+      this.pending = 0; this.running = 0;
+      this.queue = [];
+      this.Push.apply(this,arguments);
+    },
+    //
+    //  Add commands to the queue and run them. Adding a callback object
+    //  (rather than a callback specification) queues a wait for that callback.
+    //  Return the final callback for synchronization purposes.
+    //
+    Push: function () {
+      var callback;
+      for (var i = 0, m = arguments.length; i < m; i++) {
+        callback = USING(arguments[i]);
+        if (callback === arguments[i] && !callback.called)
+          {callback = USING(["wait",this,callback])}
+        this.queue.push(callback);
+      }
+      if (!this.running && !this.pending) {this.Process()}
+      return callback;
+    },
+    //
+    //  Process the command queue if we aren't waiting on another command
+    //
+    Process: function (queue) {
+      while (!this.running && !this.pending && this.queue.length) {
+        var callback = this.queue[0];
+        queue = this.queue.slice(1); this.queue = [];
+        this.Suspend(); var result = callback(); this.Resume();
+        if (queue.length) {this.queue = queue.concat(this.queue)}
+        if (ISCALLBACK(result) && !result.called) {WAITFOR(result,this)}
+      }
+    },
+    //
+    //  Suspend/Resume command processing on this queue
+    //
+    Suspend: function () {this.running++},
+    Resume: function () {if (this.running) {this.running--}},
+    //
+    //  Used by WAITFOR to restart the queue when an action completes
+    //
+    call: function () {this.Process.apply(this,arguments)},
+    wait: function (callback) {return callback}
+  });
+  
+  //
+  //  Create a named signal that listeners can attach to, to be signaled by
+  //  postings made to the signal.  Posts are queued if they occur while one
+  //  is already in process.
+  //
+  var SIGNAL = QUEUE.Subclass({
+    Init: function (name) {
+      QUEUE.prototype.Init.call(this);
+      this.name = name;
+      this.posted = [];              // the messages posted so far
+      this.listeners = HOOKS(true);  // those with interest in this signal
+    },
+    //
+    // Post a message to the signal listeners, with callback for when complete
+    //
+    Post: function (message,callback,forget) {
+      callback = USING(callback);
+      if (this.posting || this.pending) {
+        this.Push(["Post",this,message,callback,forget]);
+      } else {
+        this.callback = callback; callback.reset();
+        if (!forget) {this.posted.push(message)}
+        this.Suspend(); this.posting = true;
+        var result = this.listeners.Execute(message);
+        if (ISCALLBACK(result) && !result.called) {WAITFOR(result,this)}
+        this.Resume(); delete this.posting;
+        if (!this.pending) {this.call()}
+      }
+      return callback;
+    },
+    //
+    //  Clear the post history (so new listeners won't get old messages)
+    //
+    Clear: function (callback) {
+      callback = USING(callback);
+      if (this.posting || this.pending) {
+        callback = this.Push(["Clear",this,callback]);
+      } else {
+        this.posted = [];
+        callback();
+      }
+      return callback;
+    },
+    //
+    //  Call the callback (all replies are in) and process the command queue
+    //
+    call: function () {this.callback(this); this.Process()},
+    
+    //
+    //  A listener calls this to register intrest in the signal (so it will be called
+    //  when posts occur).  If ignorePast is true, it will not be sent the post history.
+    //
+    Interest: function (callback,ignorePast,priority) {
+      callback = USING(callback);
+      this.listeners.Add(callback,priority);
+      if (!ignorePast) {
+        for (var i = 0, m = this.posted.length; i < m; i++) {
+          callback.reset();
+          var result = callback(this.posted[i]);
+          if (ISCALLBACK(result) && i === this.posted.length-1) {WAITFOR(result,this)}
+        }
+      }
+      return callback;
+    },
+    //
+    //  A listener calls this to remove itself from a signal
+    //
+    NoInterest: function (callback) {
+      this.listeners.Remove(callback);
+    },
+    
+    //
+    //  Hook a callback to a particular message on this signal
+    //
+    MessageHook: function (msg,callback,priority) {
+      callback = USING(callback);
+      if (!this.hooks) {this.hooks = {}; this.Interest(["ExecuteHooks",this])}
+      if (!this.hooks[msg]) {this.hooks[msg] = HOOKS(true)}
+      this.hooks[msg].Add(callback,priority);
+      for (var i = 0, m = this.posted.length; i < m; i++)
+        {if (this.posted[i] == msg) {callback.reset(); callback(this.posted[i])}}
+      return callback;
+    },
+    //
+    //  Execute the message hooks for the given message
+    //
+    ExecuteHooks: function (msg,more) {
+      var type = ((msg instanceof Array) ? msg[0] : msg);
+      if (!this.hooks[type]) {return null}
+      return this.hooks[type].Execute(msg);
+    }
+    
+  },{
+    signals: {},  // the named signals
+    find: function (name) {
+      if (!SIGNAL.signals[name]) {SIGNAL.signals[name] = new SIGNAL(name)}
+      return SIGNAL.signals[name];
+    }
+  });
+  
+  //
+  //  The main entry-points
+  //
+  BASE.Callback = BASE.CallBack = USING;
+  BASE.Callback.Delay = DELAY;
+  BASE.Callback.After = AFTER;
+  BASE.Callback.Queue = QUEUE;
+  BASE.Callback.Signal = SIGNAL.find;
+  BASE.Callback.Hooks = HOOKS;
+  BASE.Callback.ExecuteHooks = EXECUTEHOOKS;
+})("MathJax");
+
+
+/**********************************************************/
+
+(function (BASENAME) {
+  var BASE = window[BASENAME];
+  if (!BASE) {BASE = window[BASENAME] = {}}
+  
+  var isSafari2 = (navigator.vendor === "Apple Computer, Inc." &&
+                   typeof navigator.vendorSub === "undefined");
+  var sheets = 0; // used by Safari2
+
+  //
+  //  Update sheets count and look up the head object
+  //  
+  var HEAD = function (head) {
+    if (document.styleSheets && document.styleSheets.length > sheets)
+      {sheets = document.styleSheets.length}
+    if (!head) {
+      head = (document.getElementsByTagName("head"))[0];
+      if (!head) {head = document.body}
+    }
+    return head;
+  };
+  
+  //
+  //  Remove scripts that are completed so they don't clutter up the HEAD.
+  //  This runs via setTimeout since IE7 can't remove the script while it is running.
+  //
+  var SCRIPTS = [];  // stores scripts to be removed after a delay
+  var REMOVESCRIPTS = function () {
+    for (var i = 0, m = SCRIPTS.length; i < m; i++) {BASE.Ajax.head.removeChild(SCRIPTS[i])}
+    SCRIPTS = [];
+  };
+  
+  BASE.Ajax = {
+    loaded: {},         // files already loaded
+    loading: {},        // files currently in process of loading
+    loadHooks: {},      // hooks to call when files are loaded
+    timeout: 15*1000,   // timeout for loading of files (15 seconds)
+    styleDelay: 1,      // delay to use before styles are available
+    config: {root: ""}, // URL of root directory to load from
+
+    STATUS: {
+      OK: 1,         // file is loading or did load OK
+      ERROR: -1      // file timed out during load
+    },
+    
+    rootPattern: new RegExp("^\\["+BASENAME+"\\]"),
+    
+    //
+    //  Return a complete URL to a file (replacing the root pattern)
+    //
+    fileURL: function (file) {return file.replace(this.rootPattern,this.config.root)},
+    
+    //
+    //  Load a file if it hasn't been already.
+    //  Make sure the file URL is "safe"?
+    //
+    Require: function (file,callback) {
+      callback = BASE.Callback(callback); var type;
+      if (file instanceof Object) {for (var i in file) {}; type = i.toUpperCase(); file = file[i]}
+        else {type = file.split(/\./).pop().toUpperCase()}
+      file = this.fileURL(file);
+      // FIXME: check that URL is OK
+      if (this.loaded[file]) {
+        callback(this.loaded[file]);
+      } else {
+        var FILE = {}; FILE[type] = file;
+        this.Load(FILE,callback);
+      }
+      return callback;
+    },
+
+    //
+    //  Load a file regardless of where it is and whether it has
+    //  already been loaded.
+    //
+    Load: function (file,callback) {
+      callback = BASE.Callback(callback); var type;
+      if (file instanceof Object) {for (var i in file) {}; type = i.toUpperCase(); file = file[i]}
+        else {type = file.split(/\./).pop().toUpperCase()}
+      file = this.fileURL(file);
+      if (this.loading[file]) {
+        this.addHook(file,callback);
+      } else {
+        this.head = HEAD(this.head);
+        if (this.loader[type]) {this.loader[type].call(this,file,callback)}
+         else {throw Error("Can't load files of type "+type)}
+      }
+      return callback;
+    },
+    
+    //
+    //  Register a load hook for a particular file (it will be called when
+    //  loadComplete() is called for that file)
+    //
+    LoadHook: function (file,callback,priority) {
+      callback = BASE.Callback(callback);
+      if (file instanceof Object) {for (var i in file) {file = file[i]}}
+      file = this.fileURL(file);
+      if (this.loaded[file]) {callback(this.loaded[file])}
+        else {this.addHook(file,callback,priority)}
+      return callback;
+    },
+    addHook: function (file,callback,priority) {
+      if (!this.loadHooks[file]) {this.loadHooks[file] = MathJax.Callback.Hooks()}
+      this.loadHooks[file].Add(callback,priority);
+    },
+    
+    //
+    //  Used when files are combined in a preloading configuration file
+    //
+    Preloading: function () {
+      for (var i = 0, m = arguments.length; i < m; i++) {
+        var file = this.fileURL(arguments[i]);
+        if (!this.loading[file]) {this.loading[file] = {preloaded: true}}
+      }
+    },
+    
+    //
+    //  Code used to load the various types of files
+    //  (JS for JavaScript, CSS for style sheets)
+    //
+    loader: {
+      //
+      //  Create a SCRIPT tag to load the file
+      //
+      JS: function (file,callback) {
+        var script = document.createElement("script");
+        var timeout = BASE.Callback(["loadTimeout",this,file]);
+        this.loading[file] = {
+          callback: callback,
+          message: BASE.Message.File(file),
+          timeout: setTimeout(timeout,this.timeout),
+          status: this.STATUS.OK,
+          script: script
+        };
+        script.onerror = timeout;  // doesn't work in IE and no apparent substitute
+        script.type = "text/javascript";
+        script.src = file;
+        this.head.appendChild(script);
+      },
+      //
+      //  Create a LINK tag to load the style sheet
+      //
+      CSS: function (file,callback) {
+        var link = document.createElement("link");
+        link.rel = "stylesheet"; link.type = "text/css"; link.href = file;
+        this.loading[file] = {
+          callback: callback,
+          message: BASE.Message.File(file),
+          status: this.STATUS.OK
+        };
+        this.head.appendChild(link);
+        this.timer.create.call(this,[this.timer.file,file],link);
+      }
+    },
+    
+    //
+    //  Timing code for checking when style sheets are available.
+    //
+    timer: {
+      //
+      //  Create the timing callback and start the timing loop.
+      //  We use a delay because some browsers need it to allow the styles
+      //  to be processed.
+      //
+      create: function (callback,node) {
+        callback = BASE.Callback(callback);
+        if (node.nodeName === "STYLE" && node.styleSheet &&
+            typeof(node.styleSheet.cssText) !== 'undefined') {
+          callback(this.STATUS.OK); // MSIE processes style immediately, but doesn't set its styleSheet!
+        } else if (window.chrome && typeof(window.sessionStorage) !== "undefined" &&
+                   node.nodeName === "STYLE") {
+          callback(this.STATUS.OK); // Same for Chrome 5 (beta), Grrr.
+        } else if (isSafari2) {
+          this.timer.start(this,[this.timer.checkSafari2,sheets++,callback],this.styleDelay);
+        } else {
+          this.timer.start(this,[this.timer.checkLength,node,callback],this.styleDelay);
+        }
+        return callback;
+      },
+      //
+      //  Start the timer for the given callback checker
+      //
+      start: function (AJAX,check,delay,timeout) {
+        check = BASE.Callback(check);
+        check.execute = this.execute; check.time = this.time;
+        check.STATUS = AJAX.STATUS; check.timeout = timeout || AJAX.timeout;
+        check.delay = check.total = 0;
+        if (delay) {setTimeout(check,delay)} else {check()}
+      },
+      //
+      //  Increment the time total, increase the delay
+      //  and test if we are past the timeout time.
+      //  
+      time: function (callback) {
+        this.total += this.delay;
+        this.delay = Math.floor(this.delay * 1.05 + 5);
+        if (this.total >= this.timeout) {callback(this.STATUS.ERROR); return 1}
+        return 0;
+      },
+      //
+      //  For JS file loads, call the proper routine according to status
+      //
+      file: function (file,status) {
+        if (status < 0) {BASE.Ajax.loadTimeout(file)} else {BASE.Ajax.loadComplete(file)}
+      },
+      //
+      //  Call the hook with the required data
+      //
+      execute: function () {this.hook.call(this.object,this,this.data[0],this.data[1])},
+      //
+      //  Safari2 doesn't set the link's stylesheet, so we need to look in the
+      //  document.styleSheets array for the new sheet when it is created
+      //
+      checkSafari2: function (check,length,callback) {
+        if (check.time(callback)) return;
+        if (document.styleSheets.length > length &&
+            document.styleSheets[length].cssRules &&
+            document.styleSheets[length].cssRules.length)
+          {callback(check.STATUS.OK)} else {setTimeout(check,check.delay)}
+      },
+      //
+      //  Look for the stylesheets rules and check when they are defined
+      //  and no longer of length zero.  (This assumes there actually ARE
+      //  some rules in the stylesheet.)
+      //  
+      checkLength: function (check,node,callback) {
+        if (check.time(callback)) return;
+        var isStyle = 0; var sheet = (node.sheet || node.styleSheet);
+        try {if ((sheet.cssRules||sheet.rules||[]).length > 0) {isStyle = 1}} catch(err) {
+          if (err.message.match(/protected variable|restricted URI/)) {isStyle = 1}
+          else if (err.message.match(/Security error/)) {
+            // Firefox3 gives "Security error" for missing files, so
+            //   can't distinguish that from OK files on remote servers.
+            //   or OK files in different directory from local files.
+            isStyle = 1; // just say it is OK (can't really tell)
+          }
+        }
+        if (isStyle) {
+          // Opera 9.6 requires this setTimeout
+          setTimeout(BASE.Callback([callback,check.STATUS.OK]),0);
+        } else {
+          setTimeout(check,check.delay);
+        }
+      }
+    },
+
+    //
+    //  JavaScript code must call this when they are completely initialized
+    //  (this allows them to perform asynchronous actions before indicating
+    //  that they are complete).
+    //
+    loadComplete: function (file) {
+      file = this.fileURL(file);
+      var loading = this.loading[file];
+      if (loading && !loading.preloaded) {
+        BASE.Message.Clear(loading.message);
+        clearTimeout(loading.timeout);
+	if (loading.script) {
+	  if (SCRIPTS.length === 0) {setTimeout(REMOVESCRIPTS,0)}
+	  SCRIPTS.push(loading.script);
+	}
+        this.loaded[file] = loading.status; delete this.loading[file];
+        this.addHook(file,loading.callback);
+      } else {
+        if (loading) {delete this.loading[file]}
+        this.loaded[file] = this.STATUS.OK;
+        loading = {status: this.STATUS.OK}
+      }
+      if (!this.loadHooks[file]) {return null}
+      return this.loadHooks[file].Execute(loading.status);
+    },
+    
+    //
+    //  If a file fails to load within the timeout period (or the onerror handler
+    //  is called), this routine runs to signal the error condition.
+    //  
+    loadTimeout: function (file) {
+      if (this.loading[file].timeout) {clearTimeout(this.loading[file].timeout)}
+      this.loading[file].status = this.STATUS.ERROR;
+      this.loadError(file);
+      this.loadComplete(file);
+    },
+    
+    //
+    //  The default error hook for file load failures
+    //
+    loadError: function (file) {
+      BASE.Message.Set("File failed to load: "+file,null,2000);
+      BASE.Hub.signal.Post(["file load error",file]);
+    },
+
+    //
+    //  Defines a style sheet from a hash of style declarations (key:value pairs
+    //  where the key is the style selector and the value is a hash of CSS attributes 
+    //  and values).
+    //
+    Styles: function (styles,callback) {
+      var styleString = this.StyleString(styles);
+      if (styleString === "") {
+        callback = BASE.Callback(callback);
+        callback();
+      } else {
+        var style = document.createElement("style"); style.type = "text/css";
+        this.head = HEAD(this.head);
+        this.head.appendChild(style);
+        if (style.styleSheet && typeof(style.styleSheet.cssText) !== 'undefined') {
+          style.styleSheet.cssText = styleString;
+        } else {
+          style.appendChild(document.createTextNode(styleString));
+        }
+        callback = this.timer.create.call(this,callback,style);
+      }
+      return callback;
+    },
+    
+    //
+    //  Create a stylesheet string from a style declaration object
+    //
+    StyleString: function (styles) {
+      if (typeof(styles) === 'string') {return styles}
+      var string = "", id, style;
+      for (id in styles) {if (styles.hasOwnProperty(id)) {
+        if (typeof styles[id] === 'string') {
+          string += id + " {"+styles[id]+"}\n";
+        } else if (styles[id] instanceof Array) {
+          for (var i = 0; i < styles[id].length; i++) {
+            style = {}; style[id] = styles[id][i];
+            string += this.StyleString(style);
+          }
+        } else if (id.substr(0,6) === '@media') {
+          string += id + " {"+this.StyleString(styles[id])+"}\n";
+        } else if (styles[id] != null) {
+          style = [];
+          for (var name in styles[id]) {if (styles[id].hasOwnProperty(name)) {
+            if (styles[id][name] != null) 
+              {style[style.length] = name + ': ' + styles[id][name]}
+          }}
+          string += id +" {"+style.join('; ')+"}\n";
+        }
+      }}
+      return string;
+    }
+  };
+
+})("MathJax");
+
+/**********************************************************/
+
+MathJax.HTML = {
+  //
+  //  Create an HTML element with given attributes and content.
+  //  The def parameter is an (optional) object containing key:value pairs
+  //  of the attributes and their values, and contents is an (optional)
+  //  array of strings to be inserted as text, or arrays of the form
+  //  [type,def,contents] that describes an HTML element to be inserted
+  //  into the current element.  Thus the contents can describe a complete
+  //  HTML snippet of arbitrary complexity.  E.g.:
+  //  
+  //    MathJax.HTML.Element("span",{id:"mySpan",style{"font-style":"italic"}},[
+  //        "(See the ",["a",{href:"http://www.mathjax.org"},["MathJax home page"]],
+  //        " for more details.)"]);
+  // 
+  Element: function (type,def,contents) {
+    var obj = document.createElement(type);
+    if (def) {
+      if (def.style) {
+        var style = def.style; def.style = {};
+        for (var id in style) {if (style.hasOwnProperty(id))
+          {def.style[id.replace(/-([a-z])/g,this.ucMatch)] = style[id]}}
+      }
+      MathJax.Hub.Insert(obj,def);
+    }
+    if (contents) {
+      if (!(contents instanceof Array)) {contents = [contents]}
+      for (var i = 0; i < contents.length; i++) {
+        if (contents[i] instanceof Array) {
+          obj.appendChild(this.Element(contents[i][0],contents[i][1],contents[i][2]));
+        } else {
+          obj.appendChild(document.createTextNode(contents[i]));
+        }
+      }
+    }
+    return obj;
+  },
+  ucMatch: function (match,c) {return c.toUpperCase()},
+  addElement: function (span,type,def,contents) {return span.appendChild(this.Element(type,def,contents))},
+  TextNode: function (text) {return document.createTextNode(text)},
+  addText: function (span,text) {return span.appendChild(this.TextNode(text))},
+
+  //
+  //  Set and get the text of a script
+  //
+  setScript: function (script,text) {
+    if (this.setScriptBug) {script.text = text} else {
+      while (script.firstChild) {script.removeChild(script.firstChild)}
+      this.addText(script,text);
+    }
+  },
+  getScript: function (script) {
+    var text = (script.text === "" ? script.innerHTML : script.text);
+    return text.replace(/^\s+/,"").replace(/\s+$/,"");
+  },
+
+  //
+  //  Manage cookies
+  //
+  Cookie: {
+    prefix: "mjx",
+    expires: 365,
+    
+    //
+    //  Save an object as a named cookie
+    //
+    Set: function (name,def) {
+      var keys = [];
+      if (def) {
+        for (var id in def) {if (def.hasOwnProperty(id)) {
+          keys.push(id+":"+def[id].toString().replace(/&/g,"&&"));
+        }}
+      }
+      var cookie = this.prefix+"."+name+"="+escape(keys.join('&;'));
+      if (this.expires) {
+        var time = new Date(); time.setDate(time.getDate() + this.expires);
+        cookie += '; expires='+time.toGMTString();
+      }
+      document.cookie = cookie+"; path=/";
+    },
+    
+    //
+    //  Get the contents of a named cookie and incorporate
+    //  it into the given object (or return a fresh one)
+    //
+    Get: function (name,obj) {
+      if (!obj) {obj = {}}
+      var pattern = new RegExp("(?:^|;\\s*)"+this.prefix+"\\."+name+"=([^;]*)(?:;|$)");
+      var match = pattern.exec(document.cookie);
+      if (match && match[1] !== "") {
+        var keys = unescape(match[1]).split('&;');
+        for (var i = 0, m = keys.length; i < m; i++) {
+          match = keys[i].match(/([^:]+):(.*)/);
+          var value = match[2].replace(/&&/g,'&');
+          if (value === "true") {value = true} else if (value === "false") {value = false}
+            else if (value.match(/^-?(\d+(\.\d+)?|\.\d+)$/)) {value = parseFloat(value)}
+          obj[match[1]] = value;
+        }
+      }
+      return obj;
+    }
+  }
+    
+};
+
+
+/**********************************************************/
+
+MathJax.Message = {
+  ready: false,  // used to tell when the styles are available
+  log: [{}], current: null,
+  textNodeBug: (navigator.vendor === "Apple Computer, Inc." &&
+                typeof navigator.vendorSub === "undefined") ||
+               (window.hasOwnProperty && window.hasOwnProperty("konqueror")), // Konqueror displays some gibberish with text.nodeValue = "..."
+  
+  styles: {
+    "#MathJax_Message": {
+      position: "fixed", left: "1px", bottom: "2px",
+      'background-color': "#E6E6E6",  border: "1px solid #959595",
+      margin: "0px", padding: "2px 8px",
+      'z-index': "102", color: "black", 'font-size': "80%",
+      width: "auto", 'white-space': "nowrap"
+    },
+    
+    "#MathJax_MSIE_Frame": {
+      position: "absolute",
+      top:0, left: 0, width: "0px", 'z-index': 101,
+      border: "0px", margin: "0px", padding: "0px"
+    }
+  },
+  
+  browsers: {
+    MSIE: function (browser) {
+      MathJax.Hub.config.styles["#MathJax_Message"].position = "absolute";
+      MathJax.Message.quirks = (document.compatMode === "BackCompat");
+    },
+    Chrome: function (browser) {
+      MathJax.Hub.config.styles["#MathJax_Message"].bottom = "1.5em";
+      MathJax.Hub.config.styles["#MathJax_Message"].left = "1em";
+    }
+  },
+  
+  Init: function (styles) {
+    if (styles) {this.ready = true}
+    if (!document.body || !this.ready) {return false}
+    //
+    //  ASCIIMathML replaces the entire page with a copy of itself (@#!#% !!)
+    //  so check that this.div is still part of the page, otherwise look up
+    //  the copy and use that.
+    //
+    if (this.div && this.div.parentNode == null) {
+      this.div = document.getElementById("MathJax_Message");
+      if (this.div) {this.text = this.div.firstChild}
+    }
+    if (!this.div) {
+      var frame = document.body;
+      if (MathJax.Hub.Browser.isMSIE) {
+	  frame = this.frame = this.addDiv(document.body); frame.removeAttribute("id");
+        frame.style.position = "absolute";
+        frame.style.border = frame.style.margin = frame.style.padding = "0px";
+        frame.style.zIndex = "101"; frame.style.height = "0px";
+        frame = this.addDiv(frame);
+        frame.id = "MathJax_MSIE_Frame";
+        window.attachEvent("onscroll",this.MoveFrame);
+        window.attachEvent("onresize",this.MoveFrame);
+        this.MoveFrame();
+      }
+      this.div = this.addDiv(frame); this.div.style.display = "none";
+      this.text = this.div.appendChild(document.createTextNode(""));
+    }
+    return true;
+  },
+  
+  addDiv: function (parent) {
+    var div = document.createElement("div");
+    div.id = "MathJax_Message";
+    if (parent.firstChild) {parent.insertBefore(div,parent.firstChild)}
+      else {parent.appendChild(div)}
+    return div;
+  },
+  
+  MoveFrame: function () {
+    var body = (MathJax.Message.quirks ? document.body : document.documentElement);
+    var frame = MathJax.Message.frame;
+    frame.style.left = body.scrollLeft + 'px';
+    frame.style.top = body.scrollTop + 'px';
+    frame.style.width = body.clientWidth + 'px';
+    frame = frame.firstChild;
+    frame.style.height = body.clientHeight + 'px';
+  },
+  
+  filterText: function (text,n) {
+    if (MathJax.Hub.config.messageStyle === "simple") {
+      if (text.match(/^Loading /)) {
+        if (!this.loading) {this.loading = "Loading "}
+        text = this.loading; this.loading += ".";
+      } else if (text.match(/^Processing /)) {
+        if (!this.processing) {this.processing = "Processing "}
+        text = this.processing; this.processing += ".";
+      } else if (text.match(/^Typesetting /)) {
+        if (!this.typesetting) {this.typesetting = "Typesetting "}
+        text = this.typesetting; this.typesetting += ".";
+      }
+    }
+    return text;
+  },
+  
+  Set: function (text,n,clearDelay) {
+    if (this.timer) {clearTimeout(this.timer); delete this.timeout}
+    if (n == null) {n = this.log.length; this.log[n] = {}}
+    this.log[n].text = text; this.log[n].filteredText = text = this.filterText(text,n);
+    if (typeof(this.log[n].next) === "undefined") {
+      this.log[n].next = this.current;
+      if (this.current != null) {this.log[this.current].prev = n}
+      this.current = n;
+    }
+    if (this.current === n && MathJax.Hub.config.messageStyle !== "none") {
+      if (this.Init()) {
+        if (this.textNodeBug) {this.div.innerHTML = text} else {this.text.nodeValue = text}
+        this.div.style.display = "";
+        if (this.status) {window.status = ""; delete this.status}
+      } else {
+        window.status = text;
+        this.status = true;
+      }
+    }
+    if (clearDelay) {setTimeout(MathJax.Callback(["Clear",this,n]),clearDelay)}
+    else if (clearDelay == 0) {this.Clear(n,0)}
+    return n;
+  },
+  
+  Clear: function (n,delay) {
+    if (this.log[n].prev != null) {this.log[this.log[n].prev].next = this.log[n].next}
+    if (this.log[n].next != null) {this.log[this.log[n].next].prev = this.log[n].prev}
+    if (this.current === n) {
+      this.current = this.log[n].next;
+      if (this.text) {
+        if (this.div.parentNode == null) {this.Init()} // see ASCIIMathML comments above
+        if (this.current == null) {
+	if (this.timer) {clearTimeout(this.timer); delete this.timer}
+          if (delay == null) {delay = 600}
+          if (delay === 0) {this.Remove()}
+	    else {this.timer = setTimeout(MathJax.Callback(["Remove",this]),delay)}
+        } else if (MathJax.Hub.config.messageStyle !== "none") {
+          if (this.textNodeBug) {this.div.innerHTML = this.log[this.current].filteredText}
+                           else {this.text.nodeValue = this.log[this.current].filteredText}
+        }
+        if (this.status) {window.status = ""; delete this.status}
+      } else if (this.status) {
+        window.status = (this.current == null ? "" : this.log[this.current].text);
+      }
+    }
+    delete this.log[n].next; delete this.log[n].prev;
+    delete this.log[n].filteredText;
+  },
+  
+  Remove: function () {
+    // FIXME:  do a fade out or something else interesting?
+    this.text.nodeValue = "";
+    this.div.style.display = "none";
+  },
+  
+  File: function (file) {
+    var root = MathJax.Ajax.config.root;
+    if (file.substr(0,root.length) === root) {file = "[MathJax]"+file.substr(root.length)}
+    return this.Set("Loading "+file);
+  },
+  
+  Log: function () {
+    var strings = [];
+    for (var i = 1, m = this.log.length; i < m; i++) {strings[i] = this.log[i].text}
+    return strings.join("\n");
+  }
+
+};
+
+/**********************************************************/
+
+MathJax.Hub = {
+  config: {
+    root: "",
+    config: [],      // list of configuration files to load
+    styleSheets: [], // list of CSS files to load
+    styles: {        // styles to generate in-line
+      ".MathJax_Preview": {color: "#888"}
+    },
+    jax: [],         // list of input and output jax to load
+    extensions: [],  // list of extensions to load
+    preJax: null,    // pattern to remove from before math script tag
+    postJax: null,   // pattern to remove from after math script tag
+    displayAlign: 'center',       // how to align displayed equations (left, center, right)
+    displayIndent: '0',           // indentation for displayed equations (when not centered)
+    preRemoveClass: 'MathJax_Preview', // class of objects to remove preceeding math script
+    showProcessingMessages: true, // display "Processing math: nn%" messages or not
+    messageStyle: "normal",       // set to "none" or "simple" (for "Loading..." and "Processing...")
+    delayStartupUntil: "none",    // set to "onload" to delay setup until the onload handler runs
+                                  // set to "configured" to delay startup until MathJax.Hub.Configured() is called
+                                  // set to a Callback to wait for before continuing with the startup
+    skipStartupTypeset: false,    // set to true to skip PreProcess and Process during startup
+    "v1.0-compatible": true,  // set to false to prevent message about configuration change
+    elements: [],             // array of elements to process when none is given explicitly
+    positionToHash: true,    // after initial typeset pass, position to #hash location?
+     
+    showMathMenu: true,      // attach math context menu to typeset math?
+    showMathMenuMSIE: true,  // separtely determine if MSIE should have math menu
+                             //  (since the code for that is a bit delicate)
+
+    menuSettings: {
+      zoom: "None",        //  when to do MathZoom
+      CTRL: false,         //    require CTRL for MathZoom?
+      ALT: false,          //    require Alt or Option?
+      CMD: false,          //    require CMD?
+      Shift: false,        //    require Shift?
+      discoverable: false, //  make math menu discoverable on hover?
+      zscale: "200%",      //  the scaling factor for MathZoom
+      renderer: "",        //  set when Jax are loaded
+      font: "Auto",        //  what font HTML-CSS should use
+      context: "MathJax",  //  or "Browser" for pass-through to browser menu
+      mpContext: false,    //  true means pass menu events to MathPlayer in IE
+      mpMouse: false,      //  true means pass mouse events to MathPlayer in IE
+      texHints: true       //  include class names for TeXAtom elements
+    },
+    
+    errorSettings: {
+      message: ["[Math Processing Error]"], // HTML snippet structure for message to use
+      style: {color: "#CC0000", "font-style":"italic"}  // style for message
+    }
+  },
+  
+  preProcessors: MathJax.Callback.Hooks(true), // list of callbacks for preprocessing (initialized by extensions)
+  inputJax: {},          // mime-type mapped to input jax (by registration)
+  outputJax: {order:{}}, // mime-type mapped to output jax list (by registration)
+
+  processUpdateTime: 250, // time between screen updates when processing math (milliseconds)
+  processUpdateDelay: 10, // pause between screen updates to allow other processing (milliseconds)
+
+  signal: MathJax.Callback.Signal("Hub"), // Signal used for Hub events
+
+  Config: function (def) {
+    this.Insert(this.config,def);
+    if (this.config.Augment) {this.Augment(this.config.Augment)}
+  },
+  CombineConfig: function (name,def) {
+    var config = this.config, id, parent; name = name.split(/\./);
+    for (var i = 0, m = name.length; i < m; i++) {
+      id = name[i]; if (!config[id]) {config[id] = {}}
+      parent = config; config = config[id];
+    }
+    parent[id] = config = this.Insert(def,config);
+    return config;
+  },
+  
+  Register: {
+    PreProcessor: function () {MathJax.Hub.preProcessors.Add.apply(MathJax.Hub.preProcessors,arguments)},
+    MessageHook: function () {return MathJax.Hub.signal.MessageHook.apply(MathJax.Hub.signal,arguments)},
+    StartupHook: function () {return MathJax.Hub.Startup.signal.MessageHook.apply(MathJax.Hub.Startup.signal,arguments)},
+    LoadHook: function () {return MathJax.Ajax.LoadHook.apply(MathJax.Ajax,arguments)}
+  },
+  
+  getAllJax: function (element) {
+    var jax = [], scripts = this.elementScripts(element);
+    for (var i = 0, m = scripts.length; i < m; i++) {
+      if (scripts[i].MathJax && scripts[i].MathJax.elementJax)
+        {jax.push(scripts[i].MathJax.elementJax)}
+    }
+    return jax;
+  },
+  
+  getJaxByType: function (type,element) {
+    var jax = [], scripts = this.elementScripts(element);
+    for (var i = 0, m = scripts.length; i < m; i++) {
+      if (scripts[i].MathJax && scripts[i].MathJax.elementJax &&
+          scripts[i].MathJax.elementJax.mimeType === type)
+            {jax.push(scripts[i].MathJax.elementJax)}
+    }
+    return jax;
+  },
+  
+  getJaxByInputType: function (type,element) {
+    var jax = [], scripts = this.elementScripts(element);
+    for (var i = 0, m = scripts.length; i < m; i++) {
+      if (scripts[i].MathJax && scripts[i].MathJax.elementJax &&
+          scripts[i].type && scripts[i].type.replace(/ *;(.|\s)*/,"") === type)
+        {jax.push(scripts[i].MathJax.elementJax)}
+    }
+    return jax;
+  },
+  
+  getJaxFor: function (element) {
+    if (typeof(element) === 'string') {element = document.getElementById(element)}
+    if (element && element.MathJax) {return element.MathJax.elementJax}
+    if (element && element.isMathJax) {
+      while (element && !element.jaxID) {element = element.parentNode}
+      if (element) {return MathJax.OutputJax[element.jaxID].getJaxFromMath(element)}
+    }
+    return null;
+  },
+  
+  isJax: function (element) {
+    if (typeof(element) === 'string') {element = document.getElementById(element)}
+    if (element && element.isMathJax) {return 1}
+    if (element && element.tagName != null && element.tagName.toLowerCase() === 'script') {
+      if (element.MathJax) 
+        {return (element.MathJax.state === MathJax.ElementJax.STATE.PROCESSED ? 1 : -1)}
+      if (element.type && this.inputJax[element.type.replace(/ *;(.|\s)*/,"")]) {return -1}
+    }
+    return 0;
+  },
+  
+  setRenderer: function (renderer,type) {
+    if (!renderer) return;
+    if (!MathJax.OutputJax[renderer]) {
+      this.config.menuSettings.renderer = "";
+      var file = "[MathJax]/jax/output/"+renderer+"/config.js";
+      return MathJax.Ajax.Require(file,["setRenderer",this,renderer,type]);
+    } else {
+      this.config.menuSettings.renderer = renderer;
+      if (type == null) {type = "jax/mml"}
+      var jax = this.outputJax;
+      if (jax[type] && jax[type].length) {
+        if (renderer !== jax[type][0].id) {
+          jax[type].unshift(MathJax.OutputJax[renderer]);
+          return this.signal.Post(["Renderer Selected",renderer]);
+        }
+      }
+      return null;
+    }
+  },
+
+  Queue: function () {
+    return this.queue.Push.apply(this.queue,arguments);
+  },
+  
+  Typeset: function (element,callback) {
+    if (!MathJax.isReady) return null;
+    var ec = this.elementCallback(element,callback);
+    var queue = MathJax.Callback.Queue();
+    for (var i = 0, m = ec.elements.length; i < m; i++) {
+      if (ec.elements[i]) {
+        queue.Push(
+          ["PreProcess",this,ec.elements[i]],
+          ["Process",this,ec.elements[i]]
+        );
+      }
+    }
+    return queue.Push(ec.callback);
+  },
+  
+  PreProcess: function (element,callback) {
+    var ec = this.elementCallback(element,callback);
+    var queue = MathJax.Callback.Queue();
+    for (var i = 0, m = ec.elements.length; i < m; i++) {
+      if (ec.elements[i]) {
+        queue.Push(
+          ["Post",this.signal,["Begin PreProcess",ec.elements[i]]],
+          (arguments.callee.disabled? {} : ["Execute",this.preProcessors,ec.elements[i]]),
+          ["Post",this.signal,["End PreProcess",ec.elements[i]]]
+        );
+      }
+    }
+    return queue.Push(ec.callback);
+  },
+
+  Process:   function (element,callback) {return this.takeAction("Process",element,callback)},
+  Update:    function (element,callback) {return this.takeAction("Update",element,callback)},
+  Reprocess: function (element,callback) {return this.takeAction("Reprocess",element,callback)},
+  Rerender:  function (element,callback) {return this.takeAction("Rerender",element,callback)},
+  
+  takeAction: function (action,element,callback) {
+    var ec = this.elementCallback(element,callback);
+    var queue = MathJax.Callback.Queue(["Clear",this.signal]);
+    for (var i = 0, m = ec.elements.length; i < m; i++) {
+      if (ec.elements[i]) {
+        var state = {
+          scripts: [],                  // filled in by prepareScripts
+          start: new Date().getTime(),  // timer for processing messages
+          i: 0, j: 0,                   // current script, current jax
+          jax: {},                      // scripts grouped by output jax
+          jaxIDs: []                    // id's of jax used
+        };
+        queue.Push(
+          ["Post",this.signal,["Begin "+action,ec.elements[i]]],
+          ["Post",this.signal,["Begin Math",ec.elements[i],action]],
+          ["prepareScripts",this,action,ec.elements[i],state],
+          ["Post",this.signal,["Begin Math Input",ec.elements[i],action]],
+          ["processInput",this,state],
+          ["Post",this.signal,["End Math Input",ec.elements[i],action]],
+          ["prepareOutput",this,state,"preProcess"],
+          ["Post",this.signal,["Begin Math Output",ec.elements[i],action]],
+          ["processOutput",this,state],
+          ["Post",this.signal,["End Math Output",ec.elements[i],action]],
+          ["prepareOutput",this,state,"postProcess"],
+          ["Post",this.signal,["End Math",ec.elements[i],action]],
+          ["Post",this.signal,["End "+action,ec.elements[i]]]
+        );
+      }
+    }
+    return queue.Push(ec.callback);
+  },
+  
+  scriptAction: {
+    Process: function (script) {},
+    Update: function (script) {
+      var jax = script.MathJax.elementJax;
+      if (jax && jax.needsUpdate()) {jax.Remove(true); script.MathJax.state = jax.STATE.UPDATE}
+        else {script.MathJax.state = jax.STATE.PROCESSED}
+    },
+    Reprocess: function (script) {
+      var jax = script.MathJax.elementJax;
+      if (jax) {jax.Remove(true); script.MathJax.state = jax.STATE.UPDATE}
+    },
+    Rerender: function (script) {
+      var jax = script.MathJax.elementJax;
+      if (jax) {jax.Remove(true); script.MathJax.state = jax.STATE.OUTPUT}
+    }
+  },
+  
+  prepareScripts: function (action,element,state) {
+    if (arguments.callee.disabled) return;
+    var scripts = this.elementScripts(element);
+    var STATE = MathJax.ElementJax.STATE;
+    for (var i = 0, m = scripts.length; i < m; i++) {
+      var script = scripts[i];
+      if (script.type && this.inputJax[script.type.replace(/ *;(.|\n)*/,"")]) {
+        if (script.MathJax) {
+          if (script.MathJax.elementJax && script.MathJax.elementJax.hover) {
+            MathJax.Extension.MathEvents.Hover.ClearHover(script.MathJax.elementJax);
+          }
+          if (script.MathJax.state !== STATE.PENDING) {this.scriptAction[action](script)}
+        }
+        if (!script.MathJax) {script.MathJax = {state: STATE.PENDING}}
+        if (script.MathJax.state !== STATE.PROCESSED) {state.scripts.push(script)}
+      }
+    }
+  },
+  
+  checkScriptSiblings: function (script) {
+    if (script.MathJax.checked) return;
+    var config = this.config, pre = script.previousSibling;
+    if (pre && pre.nodeName === "#text") {
+      var preJax,postJax, post = script.nextSibling;
+      if (post && post.nodeName !== "#text") {post = null}
+      if (config.preJax) {
+        if (typeof(config.preJax) === "string") {config.preJax = new RegExp(config.preJax+"$")}
+        preJax = pre.nodeValue.match(config.preJax);
+      }
+      if (config.postJax && post) {
+        if (typeof(config.postJax) === "string") {config.postJax = new RegExp("^"+config.postJax)}
+        postJax = post.nodeValue.match(config.postJax);
+      }
+      if (preJax && (!config.postJax || postJax)) {
+        pre.nodeValue  = pre.nodeValue.replace
+          (config.preJax,(preJax.length > 1? preJax[1] : ""));
+        pre = null;
+      }
+      if (postJax && (!config.preJax || preJax)) {
+        post.nodeValue = post.nodeValue.replace
+          (config.postJax,(postJax.length > 1? postJax[1] : ""));
+      }
+      if (pre && !pre.nodeValue.match(/\S/)) {pre = pre.previousSibling}
+    }
+    if (config.preRemoveClass && pre && pre.className === config.preRemoveClass)
+      {script.MathJax.preview = pre}
+    script.MathJax.checked = 1;
+  },
+  
+  processInput: function (state) {
+    var jax, STATE = MathJax.ElementJax.STATE;
+    var script, prev, m = state.scripts.length;
+    try {
+      //
+      //  Loop through the scripts
+      //
+      while (state.i < m) {
+        script = state.scripts[state.i]; if (!script) {state.i++; continue}
+        //
+        //  Remove previous error marker, if any
+        //
+        prev = script.previousSibling;
+        if (prev && prev.className === "MathJax_Error") {prev.parentNode.removeChild(prev)}
+        //
+        //  Check if already processed or needs processing
+        //
+        if (!script.MathJax || script.MathJax.state === STATE.PROCESSED) {state.i++; continue};
+        if (!script.MathJax.elementJax || script.MathJax.state === STATE.UPDATE) {
+          this.checkScriptSiblings(script);                 // remove preJax/postJax etc.
+          var type = script.type.replace(/ *;(.|\s)*/,"");  // the input jax type
+          jax = this.inputJax[type].Process(script,state);  // run the input jax
+          if (typeof jax === 'function') {                  // if a callback was returned
+            if (jax.called) continue;                       //   go back and call Process() again
+            this.RestartAfter(jax);                         //   wait for the callback
+          }
+          jax.Attach(script,this.inputJax[type].id);        // register the jax on the script
+          this.saveScript(jax,state,script,STATE);          // add script to state
+        } else if (script.MathJax.state === STATE.OUTPUT) {
+          this.saveScript(script.MathJax.elementJax,state,script,STATE); // add script to state
+        }
+        //
+        //  Go on to the next script, and check if we need to update the processing message
+        //
+        state.i++; var now = new Date().getTime();
+        if (now - state.start > this.processUpdateTime && state.i < state.scripts.length)
+          {state.start = now; this.RestartAfter(MathJax.Callback.Delay(1))}
+      }
+    } catch (err) {return this.processError(err,state,"Input")}
+    //
+    //  Put up final message, reset the state and return
+    //
+    if (state.scripts.length && this.config.showProcessingMessages)
+      {MathJax.Message.Set("Processing math: 100%",0)}
+    state.start = new Date().getTime(); state.i = state.j = 0;
+    return null;
+  },
+  saveScript: function (jax,state,script,STATE) {
+    //
+    //  Check that output jax exists
+    //
+    if (!this.outputJax[jax.mimeType]) {
+      script.MathJax.state = STATE.UPDATE;
+      throw Error("No output jax registered for "+jax.mimeType);
+    }
+    //
+    //  Record the output jax
+    //  and put this script in the queue for that jax
+    //
+    jax.outputJax = this.outputJax[jax.mimeType][0].id;
+    if (!state.jax[jax.outputJax]) {
+      if (state.jaxIDs.length === 0) {
+        // use original array until we know there are more (rather than two copies)
+        state.jax[jax.outputJax] = state.scripts;
+      } else {
+        if (state.jaxIDs.length === 1) // get the script so far for the existing jax
+          {state.jax[state.jaxIDs[0]] = state.scripts.slice(0,state.i)}
+        state.jax[jax.outputJax] = []; // start a new array for the new jax
+      }
+      state.jaxIDs.push(jax.outputJax); // save the ID of the jax
+    }
+    if (state.jaxIDs.length > 1) {state.jax[jax.outputJax].push(script)}
+    //
+    //  Mark script as needing output
+    //
+    script.MathJax.state = STATE.OUTPUT;
+  },
+  
+  //
+  //  Pre- and post-process scripts by jax
+  //    (to get scaling factors, hide/show output, and so on)
+  //  Since this can cause the jax to load, we need to trap restarts
+  //
+  prepareOutput: function (state,method) {
+    while (state.j < state.jaxIDs.length) {
+      var id = state.jaxIDs[state.j], JAX = MathJax.OutputJax[id];
+      if (JAX[method]) {
+        try {
+          var result = JAX[method](state);
+          if (typeof result === 'function') {
+            if (result.called) continue;  // go back and try again
+            this.RestartAfter(result);
+          }
+        } catch (err) {
+          if (!err.restart) {
+            MathJax.Message.Set("Error preparing "+id+" output ("+method+")",null,600);
+            MathJax.Hub.lastPrepError = err;
+            state.j++;
+          }
+          return MathJax.Callback.After(["prepareOutput",this,state,method],err.restart);
+        }
+      }
+      state.j++;
+    }
+    return null;
+  },
+
+  processOutput: function (state) {
+    var result, STATE = MathJax.ElementJax.STATE, script, m = state.scripts.length;
+    try {
+      //
+      //  Loop through the scripts
+      //
+      while (state.i < m) {
+        //
+        //  Check that there is an element jax
+        //
+        script = state.scripts[state.i]; if (!script || !script.MathJax) {state.i++; continue}
+        var jax = script.MathJax.elementJax; if (!jax) {state.i++; continue}
+        //
+        //  Call the output Jax's Process method (which will be its Translate()
+        //  method once loaded).  Mark it as complete and remove the preview.
+        //
+        result = MathJax.OutputJax[jax.outputJax].Process(script,state);
+        script.MathJax.state = STATE.PROCESSED; state.i++;
+        if (script.MathJax.preview) {script.MathJax.preview.innerHTML = ""}
+        //
+        //  Signal that new math is available
+        //
+        this.signal.Post(["New Math",jax.inputID]); // FIXME: wait for this?  (i.e., restart if returns uncalled callback)
+        //
+        //  Update the processing message, if needed
+        //
+        var now = new Date().getTime();
+        if (now - state.start > this.processUpdateTime && state.i < state.scripts.length)
+          {state.start = now; this.RestartAfter(MathJax.Callback.Delay(this.processUpdateDelay))}
+      }
+    } catch (err) {return this.processError(err,state,"Output")}
+    //
+    //  Put up the typesetting-complete message
+    //
+    if (state.scripts.length && this.config.showProcessingMessages) {
+      MathJax.Message.Set("Typesetting math: 100%",0);
+      MathJax.Message.Clear(0);
+    }
+    state.i = state.j = 0;
+    return null;
+  },
+  
+  processMessage: function (state,type) {
+    var m = Math.floor(state.i/(state.scripts.length)*100);
+    var message = (type === "Output" ? "Typesetting" : "Processing");
+    if (this.config.showProcessingMessages) {MathJax.Message.Set(message+" math: "+m+"%",0)}
+  },
+
+  processError: function (err,state,type) {
+    if (!err.restart) {
+      if (!this.config.errorSettings.message) {throw err}
+      this.formatError(state.scripts[state.i],err); state.i++;
+    }
+    this.processMessage(state,type);
+    return MathJax.Callback.After(["process"+type,this,state],err.restart);
+  },
+  
+  formatError: function (script,err) {
+    var error = MathJax.HTML.Element("span",{className:"MathJax_Error"},this.config.errorSettings.message);
+    error.jaxID = "Error";
+    if (MathJax.Extension.MathEvents) {
+      error.oncontextmenu = MathJax.Extension.MathEvents.Event.Menu;
+      error.onmousedown = MathJax.Extension.MathEvents.Event.Mousedown;
+    } else {
+      MathJax.Ajax.Require("[MathJax]/extensions/MathEvents.js",function () {
+        error.oncontextmenu = MathJax.Extension.MathEvents.Event.Menu;
+        error.onmousedown = MathJax.Extension.MathEvents.Event.Mousedown;
+      });
+    }
+    script.parentNode.insertBefore(error,script);
+    if (script.MathJax.preview) {script.MathJax.preview.innerHTML = ""}
+    this.lastError = err;
+    this.signal.Post(["Math Processing Error",script,err]);
+  },
+  
+  RestartAfter: function (callback) {
+    throw this.Insert(Error("restart"),{restart: MathJax.Callback(callback)});
+  },
+  
+  elementCallback: function (element,callback) {
+    if (callback == null && (element instanceof Array || typeof element === 'function'))
+      {try {MathJax.Callback(element); callback = element; element = null} catch(e) {}}
+    if (element == null) {element = this.config.elements || []}
+    if (!(element instanceof Array)) {element = [element]}
+    element = [].concat(element); // make a copy so the original isn't changed
+    for (var i = 0, m = element.length; i < m; i++)
+      {if (typeof(element[i]) === 'string') {element[i] = document.getElementById(element[i])}}
+    if (element.length == 0) {element.push(document.body)}
+    if (!callback) {callback = {}}
+    return {elements: element, callback: callback};
+  },
+  
+  elementScripts: function (element) {
+    if (typeof(element) === 'string') {element = document.getElementById(element)}
+    if (element == null) {element = document.body}
+    if (element.tagName != null && element.tagName.toLowerCase() === "script") {return [element]}
+    return element.getElementsByTagName("script");
+  },
+  
+  Insert: function (dst,src) {
+    for (var id in src) {if (src.hasOwnProperty(id)) {
+      // allow for concatenation of arrays?
+      if (typeof src[id] === 'object' && !(src[id] instanceof Array) &&
+         (typeof dst[id] === 'object' || typeof dst[id] === 'function')) {
+        this.Insert(dst[id],src[id]);
+      } else {
+        dst[id] = src[id];
+      }
+    }}
+    return dst;
+  }
+};
+MathJax.Hub.Insert(MathJax.Hub.config.styles,MathJax.Message.styles);
+MathJax.Hub.Insert(MathJax.Hub.config.styles,{".MathJax_Error":MathJax.Hub.config.errorSettings.style});
+
+//
+//  Storage area for extensions and preprocessors
+//
+MathJax.Extension = {};
+
+//
+//  Hub Startup code
+//
+MathJax.Hub.Configured = MathJax.Callback({}); // called when configuration is complete
+MathJax.Hub.Startup = {
+  script: "", // the startup script from the SCRIPT call that loads MathJax.js
+  queue:   MathJax.Callback.Queue(),           // Queue used for startup actions
+  signal:  MathJax.Callback.Signal("Startup"), // Signal used for startup events
+  params:  {},
+
+  //
+  //  Load the configuration files
+  //
+  Config: function () {
+    this.queue.Push(["Post",this.signal,"Begin Config"]);
+    //
+    //  Check for user cookie configuration
+    //
+    var user = MathJax.HTML.Cookie.Get("user");
+    if (user.URL || user.Config) {
+      if (confirm(
+         "MathJax has found a user-configuration cookie that includes code to be run.  " +
+         "Do you want to run it?\n\n"+
+         "(You should press Cancel unless you set up the cookie yourself.)"
+      )) {
+        if (user.URL) {this.queue.Push(["Require",MathJax.Ajax,user.URL])}
+        if (user.Config) {this.queue.Push(new Function(user.Config))}
+      } else {MathJax.HTML.Cookie.Set("user",{})}
+    }
+    //
+    //  Run the config files, if any are given in the parameter list
+    //
+    if (this.params.config) {
+      var files = this.params.config.split(/,/);
+      for (var i = 0, m = files.length; i < m; i++) {
+        if (!files[i].match(/\.js$/)) {files[i] += ".js"}
+        this.queue.Push(["Require",MathJax.Ajax,this.URL("config",files[i])]);
+      }
+    }
+    //
+    //  Run the deprecated configuration script, if any (ignoring return value)
+    //  Wait for the startup delay signal
+    //  Run the mathjax-config blocks
+    //  Handle the default configuration (v1.0 compatible)
+    //  Load the files in the configuration's config array
+    //
+    if (this.script.match(/\S/)) {this.queue.Push(this.script+";\n1;")}
+    this.queue.Push(
+      ["ConfigDelay",this],
+      ["ConfigBlocks",this],
+      ["ConfigDefault",this],
+      [function (THIS) {return THIS.loadArray(MathJax.Hub.config.config,"config",null,true)},this],
+      ["Post",this.signal,"End Config"]
+    );
+  },
+  //
+  //  Return the delay callback
+  //
+  ConfigDelay: function () {
+    var delay = this.params.delayStartupUntil || MathJax.Hub.config.delayStartupUntil;
+    if (delay === "onload") {return this.onload}
+    if (delay === "configured") {return MathJax.Hub.Configured}
+    return delay;
+  },
+  //
+  //  Run the scipts of type=text/x-mathajx-config
+  //
+  ConfigBlocks: function () {
+    var scripts = document.getElementsByTagName("script");
+    var last = null, queue = MathJax.Callback.Queue();
+    for (var i = 0, m = scripts.length; i < m; i++) {
+      var type = String(scripts[i].type).replace(/ /g,"");
+      if (type.match(/^text\/x-mathjax-config(;.*)?$/) && !type.match(/;executed=true/)) {
+        scripts[i].type += ";executed=true";
+        last = queue.Push(scripts[i].innerHTML+";\n1;");
+      }
+    }
+    return last;
+  },
+  //
+  //  Check for v1.0 no-configuration and put up a warning message.
+  //
+  ConfigDefault: function () {
+    var CONFIG = MathJax.Hub.config;
+    if (CONFIG["v1.0-compatible"] && (CONFIG.jax||[]).length === 0 &&
+        !this.params.config && (CONFIG.config||[]).length === 0)
+      {return MathJax.Ajax.Require(this.URL("extensions","v1.0-warning.js"))}
+  },
+
+  //
+  //  Read cookie and set up menu defaults
+  //  (adjust the jax to accommodate renderer preferences)
+  //
+  Cookie: function () {
+    return this.queue.Push(
+      ["Post",this.signal,"Begin Cookie"],
+      ["Get",MathJax.HTML.Cookie,"menu",MathJax.Hub.config.menuSettings],
+      [function (config) {
+        var renderer = config.menuSettings.renderer, jax = config.jax;
+        if (renderer) {
+          var name = "output/"+renderer; jax.sort();
+          for (var i = 0, m = jax.length; i < m; i++) {
+            if (jax[i].substr(0,7) === "output/") break;
+          }
+          if (i == m-1) {jax.pop()} else {
+            while (i < m) {if (jax[i] === name) {jax.splice(i,1); break}; i++}
+          }
+          jax.unshift(name);
+        }
+      },MathJax.Hub.config],
+      ["Post",this.signal,"End Cookie"]
+    );
+  },
+  //
+  //  Setup stylesheets and extra styles
+  //
+  Styles: function () {
+    return this.queue.Push(
+      ["Post",this.signal,"Begin Styles"],
+      ["loadArray",this,MathJax.Hub.config.styleSheets,"config"],
+      ["Styles",MathJax.Ajax,MathJax.Hub.config.styles],
+      ["Post",this.signal,"End Styles"]
+    );
+  },
+  //
+  //  Load the input and output jax
+  //
+  Jax: function () {
+    var config = MathJax.Hub.config, jax = MathJax.Hub.outputJax;
+    //  Save the order of the output jax since they are loading asynchronously
+    for (var i = 0, m = config.jax.length, k = 0; i < m; i++) {
+      var name = config.jax[i].substr(7);
+      if (config.jax[i].substr(0,7) === "output/" && jax.order[name] == null)
+        {jax.order[name] = k; k++}
+    }
+    var queue = MathJax.Callback.Queue();
+    return queue.Push(
+      ["Post",this.signal,"Begin Jax"],
+      ["loadArray",this,config.jax,"jax","config.js"],
+      ["Post",this.signal,"End Jax"]
+    );
+  },
+  //
+  //  Load the extensions
+  //
+  Extensions: function () {
+    var queue = MathJax.Callback.Queue();
+    return queue.Push(
+      ["Post",this.signal,"Begin Extensions"],
+      ["loadArray",this,MathJax.Hub.config.extensions,"extensions"],
+      ["Post",this.signal,"End Extensions"]
+    );
+  },
+  
+  //
+  //  Initialize the Message system
+  //
+  Message: function () {
+    MathJax.Message.Init(true);
+  },
+  
+  //
+  //  Set the math menu renderer, if it isn't already
+  //  (this must come after the jax are loaded)
+  //
+  Menu: function () {
+    var menu = MathJax.Hub.config.menuSettings, jax = MathJax.Hub.outputJax, registered;
+    for (var id in jax) {if (jax.hasOwnProperty(id)) {
+      if (jax[id].length) {registered = jax[id]; break}
+    }}
+    if (registered && registered.length) {
+      if (menu.renderer && menu.renderer !== registered[0].id)
+        {registered.unshift(MathJax.OutputJax[menu.renderer])}
+      menu.renderer = registered[0].id;
+    }
+  },
+  
+  //
+  //  Set the location to the designated hash position
+  //
+  Hash: function () {
+    if (MathJax.Hub.config.positionToHash && document.location.hash &&
+        document.body && document.body.scrollIntoView) {
+      var name = document.location.hash.substr(1);
+      var target = document.getElementById(name);
+      if (!target) {
+        var a = document.getElementsByTagName("a");
+        for (var i = 0, m = a.length; i < m; i++)
+          {if (a[i].name === name) {target = a[i]; break}}
+      }
+      if (target) {
+        while (!target.scrollIntoView) {target = target.parentNode}
+        target = this.HashCheck(target);
+        if (target && target.scrollIntoView)
+          {setTimeout(function () {target.scrollIntoView(true)},1)}
+      }
+    }
+  },
+  HashCheck: function (target) {
+    if (target.isMathJax) {
+      var jax = MathJax.Hub.getJaxFor(target);
+      if (jax && MathJax.OutputJax[jax.outputJax].hashCheck)
+        {target = MathJax.OutputJax[jax.outputJax].hashCheck(target)}
+    }
+    return target;
+  },
+  
+  //
+  //  Load the Menu and Zoom code, if it hasn't already been loaded.
+  //  This is called after the initial typeset, so should no longer be
+  //  competing with other page loads, but will make these available
+  //  if needed later on.
+  //
+  MenuZoom: function () {
+    if (!MathJax.Extension.MathMenu) {
+      setTimeout(
+        MathJax.Callback(["Require",MathJax.Ajax,"[MathJax]/extensions/MathMenu.js",{}]),
+        1000
+      );
+    }
+    if (!MathJax.Extension.MathZoom) {
+      setTimeout(
+        MathJax.Callback(["Require",MathJax.Ajax,"[MathJax]/extensions/MathZoom.js",{}]),
+        2000
+      );
+    }
+  },
+  
+  //
+  //  Setup the onload callback
+  //
+  onLoad: function () {
+    var onload = this.onload =
+      MathJax.Callback(function () {MathJax.Hub.Startup.signal.Post("onLoad")});
+    if (document.body && document.readyState)
+      if (MathJax.Hub.Browser.isMSIE) {
+        // IE can change from loading to interactive before
+        //  full page is ready, so go with complete (even though
+        //  that means we may have to wait longer).
+        if (document.readyState === "complete") {return [onload]}
+      } else if (document.readyState !== "loading") {return [onload]}
+    if (window.addEventListener) {
+      window.addEventListener("load",onload,false);
+      if (!this.params.noDOMContentEvent)
+        {window.addEventListener("DOMContentLoaded",onload,false)}
+    }
+    else if (window.attachEvent) {window.attachEvent("onload",onload)}
+    else {window.onload = onload}
+    return onload;
+  },
+
+  //
+  //  Perform the initial typesetting (or skip if configuration says to)
+  //
+  Typeset: function (element,callback) {
+    if (MathJax.Hub.config.skipStartupTypeset) {return function () {}}
+    return this.queue.Push(
+      ["Post",this.signal,"Begin Typeset"],
+      ["Typeset",MathJax.Hub,element,callback],
+      ["Post",this.signal,"End Typeset"]
+    );
+  },
+
+  //
+  //  Create a URL in the MathJax hierarchy
+  //
+  URL: function (dir,name) {
+    if (!name.match(/^([a-z]+:\/\/|\[|\/)/)) {name = "[MathJax]/"+dir+"/"+name}
+    return name;
+  },
+
+  //
+  //  Load an array of files, waiting for all of them
+  //  to be loaded before going on
+  //
+  loadArray: function (files,dir,name,synchronous) {
+    if (files) {
+      if (!(files instanceof Array)) {files = [files]}
+      if (files.length) {
+        var queue = MathJax.Callback.Queue(), callback = {}, file;
+        for (var i = 0, m = files.length; i < m; i++) {
+          file = this.URL(dir,files[i]);
+          if (name) {file += "/" + name}
+          if (synchronous) {queue.Push(["Require",MathJax.Ajax,file,callback])}
+                      else {queue.Push(MathJax.Ajax.Require(file,callback))}
+        }
+        return queue.Push({}); // wait for everything to finish
+      }
+    }
+    return null;
+  }
+  
+};
+
+
+/**********************************************************/
+
+(function (BASENAME) {
+  var BASE = window[BASENAME], ROOT = "["+BASENAME+"]";
+  var HUB = BASE.Hub, AJAX = BASE.Ajax, CALLBACK = BASE.Callback;
+
+  var JAX = MathJax.Object.Subclass({
+    JAXFILE: "jax.js",
+    require: null, // array of files to load before jax.js is complete
+    config: {},
+    //
+    //  Make a subclass and return an instance of it.
+    //  (FIXME: should we replace config with a copy of the constructor's
+    //   config?  Otherwise all subclasses share the same config structure.)
+    //
+    Init: function (def,cdef) {
+      if (arguments.length === 0) {return this}
+      return (this.constructor.Subclass(def,cdef))();
+    },
+    //
+    //  Augment by merging with class definition (not replacing)
+    //
+    Augment: function (def,cdef) {
+      var cObject = this.constructor, ndef = {};
+      if (def != null) {
+        for (var id in def) {if (def.hasOwnProperty(id)) {
+          if (typeof def[id] === "function")
+            {cObject.protoFunction(id,def[id])} else {ndef[id] = def[id]}
+        }}
+        // MSIE doesn't list toString even if it is not native so handle it separately
+        if (def.toString !== cObject.prototype.toString && def.toString !== {}.toString)
+          {cObject.protoFunction('toString',def.toString)}
+      }
+      HUB.Insert(cObject.prototype,ndef);
+      cObject.Augment(null,cdef);
+      return this;
+    },
+    Translate: function (script,state) {
+      throw Error(this.directory+"/"+this.JAXFILE+" failed to define the Translate() method");
+    },
+    Register: function (mimetype) {},
+    Config: function () {
+      this.config = HUB.CombineConfig(this.id,this.config);
+      if (this.config.Augment) {this.Augment(this.config.Augment)}
+    },
+    Startup: function () {},
+    loadComplete: function (file) {
+      if (file === "config.js") {
+        return AJAX.loadComplete(this.directory+"/"+file);
+      } else {
+        var queue = CALLBACK.Queue();
+        queue.Push(
+          HUB.Register.StartupHook("End Config",{}), // wait until config complete
+          ["Post",HUB.Startup.signal,this.id+" Jax Config"],
+          ["Config",this],
+          ["Post",HUB.Startup.signal,this.id+" Jax Require"],
+          // Config may set the required and extensions array,
+          //  so use functions to delay making the reference until needed
+          [function (THIS) {return MathJax.Hub.Startup.loadArray(THIS.require,this.directory)},this],
+          [function (config,id) {return MathJax.Hub.Startup.loadArray(config.extensions,"extensions/"+id)},this.config||{},this.id],
+          ["Post",HUB.Startup.signal,this.id+" Jax Startup"],
+          ["Startup",this],
+          ["Post",HUB.Startup.signal,this.id+" Jax Ready"]
+        );
+        if (this.copyTranslate) {
+          queue.Push(
+            [function (THIS) {
+              THIS.preProcess  = THIS.preTranslate;
+              THIS.Process     = THIS.Translate;
+              THIS.postProcess = THIS.postTranslate;
+            },this.constructor.prototype]
+          );
+        }
+        return queue.Push(["loadComplete",AJAX,this.directory+"/"+file]);
+      }
+    }
+  },{
+    id: "Jax",
+    version: "2.1",
+    directory: ROOT+"/jax",
+    extensionDir: ROOT+"/extensions"
+  });
+
+  /***********************************/
+
+  BASE.InputJax = JAX.Subclass({
+    elementJax: "mml",  // the element jax to load for this input jax
+    copyTranslate: true,
+    Process: function (script,state) {
+      var queue = CALLBACK.Queue(), file;
+      // Load any needed element jax
+      var jax = this.elementJax; if (!(jax instanceof Array)) {jax = [jax]}
+      for (var i = 0, m = jax.length; i < m; i++) {
+        file = BASE.ElementJax.directory+"/"+jax[i]+"/"+this.JAXFILE;
+        if (!this.require) {this.require = []}
+          else if (!(this.require instanceof Array)) {this.require = [this.require]};
+        this.require.push(file);  // so Startup will wait for it to be loaded
+        queue.Push(AJAX.Require(file));
+      }
+      // Load the input jax
+      file = this.directory+"/"+this.JAXFILE;
+      var load = queue.Push(AJAX.Require(file));
+      if (!load.called) {
+        this.constructor.prototype.Process = function () {
+          if (!load.called) {return load}
+          throw Error(file+" failed to load properly");
+        }
+      }
+      // Load the associated output jax
+      jax = HUB.outputJax["jax/"+jax[0]];
+      if (jax) {queue.Push(AJAX.Require(jax[0].directory+"/"+this.JAXFILE))}
+      return queue.Push({});
+    },
+    needsUpdate: function (jax) {
+      var script = jax.SourceElement();
+      return (jax.originalText !== BASE.HTML.getScript(script));
+    },
+    Register: function (mimetype) {
+      if (!HUB.inputJax) {HUB.inputJax = {}}
+      HUB.inputJax[mimetype] = this;
+    }
+  },{
+    id: "InputJax",
+    version: "2.1",
+    directory: JAX.directory+"/input",
+    extensionDir: JAX.extensionDir
+  });
+
+  /***********************************/
+
+  BASE.OutputJax = JAX.Subclass({
+    copyTranslate: true,
+    preProcess: function (state) {
+      var load, file = this.directory+"/"+this.JAXFILE;
+      this.constructor.prototype.preProcess = function (state) {
+	if (!load.called) {return load}
+        throw Error(file+" failed to load properly");
+      }
+      load = AJAX.Require(file);
+      return load;
+    },
+    Register: function (mimetype) {
+      var jax = HUB.outputJax;
+      if (!jax[mimetype]) {jax[mimetype] = []}
+      //  If the output jax is earlier in the original configuration list, put it first here
+      if (jax[mimetype].length && (this.id === HUB.config.menuSettings.renderer ||
+            (jax.order[this.id]||0) < (jax.order[jax[mimetype][0].id]||0)))
+        {jax[mimetype].unshift(this)} else {jax[mimetype].push(this)}
+      //  Make sure the element jax is loaded before Startup is called
+      if (!this.require) {this.require = []}
+        else if (!(this.require instanceof Array)) {this.require = [this.require]};
+      this.require.push(BASE.ElementJax.directory+"/"+(mimetype.split(/\//)[1])+"/"+this.JAXFILE);
+    },
+    Remove: function (jax) {}
+  },{
+    id: "OutputJax",
+    version: "2.1",
+    directory: JAX.directory+"/output",
+    extensionDir: JAX.extensionDir,
+    fontDir: ROOT+(BASE.isPacked?"":"/..")+"/fonts",
+    imageDir: ROOT+(BASE.isPacked?"":"/..")+"/images"
+  });
+  
+  /***********************************/
+
+  BASE.ElementJax = JAX.Subclass({
+    // make a subclass, not an instance
+    Init: function (def,cdef) {return this.constructor.Subclass(def,cdef)},
+    
+    inputJax: null,
+    outputJax: null,
+    inputID: null,
+    originalText: "",
+    mimeType: "",
+    
+    Text: function (text,callback) {
+      var script = this.SourceElement();
+      BASE.HTML.setScript(script,text);
+      script.MathJax.state = this.STATE.UPDATE;
+      return HUB.Update(script,callback);
+    },
+    Reprocess: function (callback) {
+      var script = this.SourceElement();
+      script.MathJax.state = this.STATE.UPDATE;
+      return HUB.Reprocess(script,callback);
+    },
+    Update: function (callback) {return this.Rerender(callback)},
+    Rerender: function (callback) {
+      var script = this.SourceElement();
+      script.MathJax.state = this.STATE.OUTPUT;
+      return HUB.Process(script,callback);
+    },
+    Remove: function (keep) {
+      if (this.hover) {this.hover.clear(this)}
+      BASE.OutputJax[this.outputJax].Remove(this);
+      if (!keep) {
+        HUB.signal.Post(["Remove Math",this.inputID]); // wait for this to finish?
+        this.Detach();
+      }
+    },
+    needsUpdate: function () {
+      return BASE.InputJax[this.inputJax].needsUpdate(this);
+    },
+
+    SourceElement: function () {return document.getElementById(this.inputID)},
+    
+    Attach: function (script,inputJax) {
+      var jax = script.MathJax.elementJax;
+      if (script.MathJax.state === this.STATE.UPDATE) {
+        jax.Clone(this);
+      } else {
+        jax = script.MathJax.elementJax = this;
+        if (script.id) {this.inputID = script.id}
+          else {script.id = this.inputID = BASE.ElementJax.GetID(); this.newID = 1}
+      }
+      jax.originalText = BASE.HTML.getScript(script);
+      jax.inputJax = inputJax;
+      if (jax.root) {jax.root.inputID = jax.inputID}
+      return jax;
+    },
+    Detach: function () {
+      var script = this.SourceElement(); if (!script) return;
+      try {delete script.MathJax} catch(err) {script.MathJax = null}
+      if (this.newID) {script.id = ""}
+    },
+    Clone: function (jax) {
+      var id;
+      for (id in this) {
+        if (!this.hasOwnProperty(id)) continue;
+        if (typeof(jax[id]) === 'undefined' && id !== 'newID') {delete this[id]}
+      }
+      for (id in jax) {
+        if (!jax.hasOwnProperty(id)) continue;
+        if (typeof(this[id]) === 'undefined' || (this[id] !== jax[id] && id !== 'inputID'))
+          {this[id] = jax[id]}
+      }
+    }
+  },{
+    id: "ElementJax",
+    version: "2.1",
+    directory: JAX.directory+"/element",
+    extensionDir: JAX.extensionDir,
+    ID: 0,  // jax counter (for IDs)
+    STATE: {
+      PENDING: 1,      // script is identified as math but not yet processed
+      PROCESSED: 2,    // script has been processed
+      UPDATE: 3,       // elementJax should be updated
+      OUTPUT: 4        // output should be updated (input is OK)
+    },
+    
+    GetID: function () {this.ID++; return "MathJax-Element-"+this.ID},
+    Subclass: function () {
+      var obj = JAX.Subclass.apply(this,arguments);
+      obj.loadComplete = this.prototype.loadComplete;
+      return obj;
+    }
+  });
+  BASE.ElementJax.prototype.STATE = BASE.ElementJax.STATE;
+
+  //
+  //  Some "Fake" jax used to allow menu access for "Math Processing Error" messages
+  //
+  BASE.OutputJax.Error = {
+    id: "Error", version: "2.1", config: {},
+    ContextMenu: function () {return BASE.Extension.MathEvents.Event.ContextMenu.apply(BASE.Extension.MathEvents.Event,arguments)},
+    Mousedown:   function () {return BASE.Extension.MathEvents.Event.AltContextMenu.apply(BASE.Extension.MathEvents.Event,arguments)},
+    getJaxFromMath: function () {return {inputJax:"Error", outputJax:"Error", originalText:"Math Processing Error"}}
+  };
+  BASE.InputJax.Error = {
+    id: "Error", version: "2.1", config: {},
+    sourceMenuTitle: "Error Message"
+  };
+  
+})("MathJax");
+
+/**********************************************************/
+
+(function (BASENAME) {
+  var BASE = window[BASENAME];
+  if (!BASE) {BASE = window[BASENAME] = {}}
+
+  var HUB = BASE.Hub; var STARTUP = HUB.Startup; var CONFIG = HUB.config;
+  var HEAD = document.getElementsByTagName("head")[0];
+  if (!HEAD) {HEAD = document.childNodes[0]};
+  var scripts = (document.documentElement || document).getElementsByTagName("script");
+  var namePattern = new RegExp("(^|/)"+BASENAME+"\\.js(\\?.*)?$");
+  for (var i = scripts.length-1; i >= 0; i--) {
+    if ((scripts[i].src||"").match(namePattern)) {
+      STARTUP.script = scripts[i].innerHTML;
+      if (RegExp.$2) {
+        var params = RegExp.$2.substr(1).split(/\&/);
+        for (var j = 0, m = params.length; j < m; j++) {
+          var KV = params[j].match(/(.*)=(.*)/);
+          if (KV) {STARTUP.params[unescape(KV[1])] = unescape(KV[2])}
+        }
+      }
+      CONFIG.root = scripts[i].src.replace(/(^|\/)[^\/]*(\?.*)?$/,'');
+      break;
+    }
+  }
+  BASE.Ajax.config = CONFIG;
+
+  var BROWSERS = {
+    isMac:       (navigator.platform.substr(0,3) === "Mac"),
+    isPC:        (navigator.platform.substr(0,3) === "Win"),
+    isMSIE:      (window.ActiveXObject != null && window.clipboardData != null),
+    isFirefox:   ((window.netscape != null || window.mozPaintCount != null) &&
+                     document.ATTRIBUTE_NODE != null && !window.opera),
+    isSafari:    (navigator.userAgent.match(/ (Apple)?WebKit\//) != null &&
+                     (!window.chrome || window.chrome.loadTimes == null)),
+    isChrome:    (window.chrome != null && window.chrome.loadTimes != null),
+    isOpera:     (window.opera != null && window.opera.version != null),
+    isKonqueror: (window.hasOwnProperty && window.hasOwnProperty("konqueror") && navigator.vendor == "KDE"),
+    versionAtLeast: function (v) {
+      var bv = (this.version).split('.'); v = (new String(v)).split('.');
+      for (var i = 0, m = v.length; i < m; i++)
+        {if (bv[i] != v[i]) {return parseInt(bv[i]||"0") >= parseInt(v[i])}}
+      return true;
+    },
+    Select: function (choices) {
+      var browser = choices[HUB.Browser];
+      if (browser) {return browser(HUB.Browser)}
+      return null;
+    }
+  };
+
+  var AGENT = navigator.userAgent
+    .replace(/^Mozilla\/(\d+\.)+\d+ /,"")                                   // remove initial Mozilla, which is never right
+    .replace(/[a-z][-a-z0-9._: ]+\/\d+[^ ]*-[^ ]*\.([a-z][a-z])?\d+ /i,"")  // remove linux version
+    .replace(/Gentoo |Ubuntu\/(\d+\.)*\d+ (\([^)]*\) )?/,"");               // special case for these
+
+  HUB.Browser = HUB.Insert(HUB.Insert(new String("Unknown"),{version: "0.0"}),BROWSERS);
+  for (var browser in BROWSERS) {if (BROWSERS.hasOwnProperty(browser)) {
+    if (BROWSERS[browser] && browser.substr(0,2) === "is") {
+      browser = browser.slice(2);
+      if (browser === "Mac" || browser === "PC") continue;
+      HUB.Browser = HUB.Insert(new String(browser),BROWSERS);
+      var VERSION = new RegExp(
+        ".*(Version)/((?:\\d+\\.)+\\d+)|" +                                       // for Safari and Opera10
+        ".*("+browser+")"+(browser == "MSIE" ? " " : "/")+"((?:\\d+\\.)*\\d+)|"+  // for one of the main browser
+        "(?:^|\\(| )([a-z][-a-z0-9._: ]+|(?:Apple)?WebKit)/((?:\\d+\\.)+\\d+)");  // for unrecognized browser
+      var MATCH = VERSION.exec(AGENT) || ["","","","unknown","0.0"];
+      HUB.Browser.name = (MATCH[1] == "Version" ? browser : (MATCH[3] || MATCH[5]));
+      HUB.Browser.version = MATCH[2] || MATCH[4] || MATCH[6];
+      break;
+    }
+  }};
+  
+  //
+  //  Initial browser-specific info (e.g., touch up version or name)
+  //
+  HUB.Browser.Select({
+    Safari: function (browser) {
+      var v = parseInt((String(browser.version).split("."))[0]);
+      if (v > 85) {browser.webkit = browser.version}
+      if      (v >= 534) {browser.version = "5.1"}
+      else if (v >= 533) {browser.version = "5.0"}
+      else if (v >= 526) {browser.version = "4.0"}
+      else if (v >= 525) {browser.version = "3.1"}
+      else if (v >  500) {browser.version = "3.0"}
+      else if (v >  400) {browser.version = "2.0"}
+      else if (v >   85) {browser.version = "1.0"}
+      browser.isMobile = (navigator.appVersion.match(/Mobile/i) != null);
+      browser.noContextMenu = browser.isMobile;
+    },
+    Firefox: function (browser) {
+      if ((browser.version === "0.0" || navigator.userAgent.match(/Firefox/) == null) &&
+           navigator.product === "Gecko") {
+        var rv = navigator.userAgent.match(/[\/ ]rv:(\d+\.\d.*?)[\) ]/);
+        if (rv) {browser.version = rv[1]}
+        else {
+          var date = (navigator.buildID||navigator.productSub||"0").substr(0,8);
+          if      (date >= "20111220") {browser.version = "9.0"}
+          else if (date >= "20111120") {browser.version = "8.0"}
+          else if (date >= "20110927") {browser.version = "7.0"}
+          else if (date >= "20110816") {browser.version = "6.0"}
+          else if (date >= "20110621") {browser.version = "5.0"}
+          else if (date >= "20110320") {browser.version = "4.0"}
+          else if (date >= "20100121") {browser.version = "3.6"}
+          else if (date >= "20090630") {browser.version = "3.5"}
+          else if (date >= "20080617") {browser.version = "3.0"}
+          else if (date >= "20061024") {browser.version = "2.0"}
+        }
+      }
+      browser.isMobile = (navigator.appVersion.match(/Android/i) != null ||
+                          navigator.userAgent.match(/ Fennec\//) != null);
+    },
+    Opera: function (browser) {browser.version = opera.version()},
+    MSIE: function (browser) {
+      browser.isIE9 = !!(document.documentMode && (window.performance || window.msPerformance));
+      MathJax.HTML.setScriptBug = !browser.isIE9 || document.documentMode < 9;
+      var MathPlayer = false;
+      try {new ActiveXObject("MathPlayer.Factory.1"); browser.hasMathPlayer = MathPlayer = true}
+        catch (err) {}
+      try {
+        if (MathPlayer && !STARTUP.params.NoMathPlayer) {
+          var mathplayer = document.createElement("object");
+          mathplayer.id = "mathplayer"; mathplayer.classid = "clsid:32F66A20-7614-11D4-BD11-00104BD3F987";
+          document.getElementsByTagName("head")[0].appendChild(mathplayer);
+          document.namespaces.add("m","http://www.w3.org/1998/Math/MathML";);
+          browser.mpNamespace = true;
+          if (document.readyState && (document.readyState === "loading" ||
+                                      document.readyState === "interactive")) {
+            document.write('<?import namespace="m" implementation="#MathPlayer">');
+            browser.mpImported = true;
+          }
+        } else {
+          //  Adding any namespace avoids a crash in IE9 in IE9-standards mode
+          //  (any reference to document.namespaces before document.readyState is 
+          //   "complete" causes an "unspecified error" to be thrown)
+          document.namespaces.add("mjx_IE_fix","http://www.w3.org/1999/xlink";);
+        }
+      } catch (err) {}
+    }
+  });
+  HUB.Browser.Select(MathJax.Message.browsers);
+
+  HUB.queue = BASE.Callback.Queue();
+  HUB.queue.Push(
+    ["Post",STARTUP.signal,"Begin"],
+    ["Config",STARTUP],
+    ["Cookie",STARTUP],
+    ["Styles",STARTUP],
+    ["Message",STARTUP],
+    function () {
+      // Do Jax and Extensions in parallel, but wait for them all to complete
+      var queue = BASE.Callback.Queue(
+        STARTUP.Jax(),
+        STARTUP.Extensions()
+      );
+      return queue.Push({});
+    },
+    ["Menu",STARTUP],
+    STARTUP.onLoad(),
+    function () {MathJax.isReady = true}, // indicates that MathJax is ready to process math
+    ["Typeset",STARTUP],
+    ["Hash",STARTUP],
+    ["MenuZoom",STARTUP],
+    ["Post",STARTUP.signal,"End"]
+  );
+  
+})("MathJax");
+
+}}
+
+/**********************************************************/
diff --git a/data/mathjax/unpacked/config/MMLorHTML.js b/data/mathjax/unpacked/config/MMLorHTML.js
new file mode 100644
index 0000000..a0d6028
--- /dev/null
+++ b/data/mathjax/unpacked/config/MMLorHTML.js
@@ -0,0 +1,105 @@
+/*************************************************************
+ *
+ *  MathJax/config/MMLorHTML.js
+ *  
+ *  Chooses between the NativeMML and HTML-CSS output jax depending
+ *  on the capabilities of the browser and configuration settings
+ *  of the page.
+ *  
+ *  This file should be added to the config array when configuring
+ *  MathJax.  Note that if you include this, you should NOT include
+ *  an output jax in the jax array (it will be added for you by
+ *  this file).
+ *  
+ *  You can specify the preferred output jax on a global or
+ *  browser-by-browser basis.  To specify it globally, use
+ *  
+ *      MathJax.Hub.Config({
+ *        MMLorHTML: {prefer: "MML"} // or "HTML"
+ *      });
+ *  
+ *  To specify on a browser-by-borwser basis, use
+ *  
+ *      MathJax.Hub.Config({
+ *        MMLorHTML: {prefer: {
+ *          MSIE:    "MML",
+ *          Firefox: "MML",
+ *          Opera:   "HTML",
+ *          other:   "HTML"
+ *        }}
+ *      });
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2010-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+(function (HUB,BROWSER) {
+  var VERSION = "2.1";
+  
+  var CONFIG = MathJax.Hub.CombineConfig("MMLorHTML",{
+    prefer: {
+      MSIE:"MML",
+      Firefox:"HTML",
+      Opera:"HTML",
+      Chrome:"HTML",
+      Safari:"HTML",
+      other:"HTML"
+    }
+  });
+
+  var MINBROWSERVERSION = {
+    Firefox: 3.0,
+    Opera: 9.52,
+    MSIE: 6.0,
+    Chrome: 0.3,
+    Safari: 2.0,
+    Konqueror: 4.0
+  };
+  
+  var canUseHTML = (BROWSER.version === "0.0" ||
+                    BROWSER.versionAtLeast(MINBROWSERVERSION[BROWSER]||0.0));
+
+  var canUseMML = (BROWSER.isFirefox && BROWSER.versionAtLeast("1.5")) ||
+                  (BROWSER.isMSIE    && BROWSER.hasMathPlayer) ||
+                  (BROWSER.isSafari  && BROWSER.versionAtLeast("5.0")) ||
+                  (BROWSER.isOpera   && BROWSER.versionAtLeast("9.52"));
+
+  HUB.Register.StartupHook("End Config",function () {
+    var prefer = (CONFIG.prefer && typeof(CONFIG.prefer) === "object" ? 
+                  CONFIG.prefer[MathJax.Hub.Browser]||CONFIG.prefer.other||"HTML" :
+                  CONFIG.prefer);
+
+    if (canUseHTML || canUseMML) {
+      if (canUseMML && (prefer === "MML" || !canUseHTML)) {
+        if (MathJax.OutputJax.NativeMML) {MathJax.OutputJax.NativeMML.Register("jax/mml")}
+          else {HUB.config.jax.unshift("output/NativeMML")}
+        HUB.Startup.signal.Post("NativeMML output selected");
+      } else {
+        if (MathJax.OutputJax["HTML-CSS"]) {MathJax.OutputJax["HTML-CSS"].Register("jax/mml")}
+          else {HUB.config.jax.unshift("output/HTML-CSS")}
+        HUB.Startup.signal.Post("HTML-CSS output selected");
+      }
+    } else {
+      HUB.PreProcess.disabled = true;
+      HUB.prepareScripts.disabled = true;
+      MathJax.Message.Set("Your browser does not support MathJax",null,4000);
+      HUB.Startup.signal.Post("MathJax not supported");
+    }
+  });
+
+})(MathJax.Hub,MathJax.Hub.Browser);
+
+MathJax.Ajax.loadComplete("[MathJax]/config/MMLorHTML.js");
diff --git a/data/mathjax/unpacked/extensions/HTML-CSS/handle-floats.js b/data/mathjax/unpacked/extensions/HTML-CSS/handle-floats.js
new file mode 100644
index 0000000..8a84d8d
--- /dev/null
+++ b/data/mathjax/unpacked/extensions/HTML-CSS/handle-floats.js
@@ -0,0 +1,79 @@
+/*************************************************************
+ *
+ *  MathJax/extensions/HTML-CSS/handle-floats.js
+ *
+ *  This extension allows HTML-CSS output to deal with floating elements
+ *  better.  In particular, when there are tags or equation numbers, these
+ *  would overlap floating elements, but with this extension, the width of
+ *  the line should properly correspond to the amount of space remaining.
+ *  
+ *  To load it, include
+ *  
+ *      "HTML-CSS": {
+ *        extensions: ["handle-floats.js"]
+ *      }
+ *  
+ *  in your configuration.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+
+MathJax.Extension["HTML-CSS/handle-floats"] = {
+  version: "2.1"
+};
+
+//
+//  Make the display DIV be a table-cell
+//  Use padding to get the separation, since table cells don't do margin
+//  Make the width large (it will shrink to fit the remaining room)
+//
+MathJax.Hub.Config({
+  "HTML-CSS": {
+    styles: {
+      ".MathJax_Display": {
+        display: "table-cell",
+        padding: "1em 0 ! important",
+        width: (MathJax.Hub.Browser.isMSIE && (document.documentMode||0) < 8 ? "100%" : "1000em")
+      }
+    }
+  }
+});
+
+//
+//  Two consecutive equations would end up side-by-side, so force a separator
+//  (Needed by IE8, IE9, and Firefox, at least).
+//  
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
+  var HTMLCSS = MathJax.OutputJax["HTML-CSS"],
+      TRANSLATE = HTMLCSS.Translate;
+  HTMLCSS.Augment({
+    Translate: function (script,state) {
+      TRANSLATE.call(this,script,state);
+      if (script.MathJax.elementJax.HTMLCSS.display) {
+        var next = script.nextSibling;
+        if (!next || next.className !== "MathJax_MSIE_Separator") {
+          var span = HTMLCSS.Element("span",{className:"MathJax_MSIE_Separator"});
+          script.parentNode.insertBefore(span,next);
+        }
+      }
+    }
+  });
+  MathJax.Hub.Startup.signal.Post("HTML-CSS handle-floats Ready");
+});
+
+MathJax.Ajax.loadComplete("[MathJax]/extensions/HTML-CSS/handle-floats.js");
diff --git a/data/mathjax/unpacked/extensions/MathEvents.js b/data/mathjax/unpacked/extensions/MathEvents.js
new file mode 100644
index 0000000..54b9119
--- /dev/null
+++ b/data/mathjax/unpacked/extensions/MathEvents.js
@@ -0,0 +1,533 @@
+/*************************************************************
+ *
+ *  MathJax/extensions/MathEvents.js
+ *  
+ *  Implements the event handlers needed by the output jax to perform
+ *  menu, hover, and other events.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2011-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+(function (HUB,HTML,AJAX,CALLBACK,OUTPUT,INPUT) {
+  var VERSION = "2.1";
+  
+  var EXTENSION = MathJax.Extension;
+  var ME = EXTENSION.MathEvents = {version: VERSION};
+  
+  var SETTINGS = HUB.config.menuSettings;
+  
+  var CONFIG = {
+    hover: 500,              // time required to be considered a hover
+    frame: {
+      x: 3.5, y: 5,          // frame padding and
+      bwidth: 1,             // frame border width (in pixels)
+      bcolor: "#A6D",        // frame border color
+      hwidth: "15px",        // haze width
+      hcolor: "#83A"         // haze color
+    },       
+    button: {
+      x: -4, y: -3,          // menu button offsets
+      wx: -2,                // button offset for full-width equations
+      src: AJAX.fileURL(OUTPUT.imageDir+"/MenuArrow-15.png")  // button image
+    },
+    fadeinInc: .2,           // increment for fade-in
+    fadeoutInc: .05,         // increment for fade-out
+    fadeDelay: 50,           // delay between fade-in or fade-out steps
+    fadeoutStart: 400,       // delay before fade-out after mouseout
+    fadeoutDelay: 15*1000,   // delay before automatic fade-out
+
+    styles: {
+      ".MathJax_Hover_Frame": {
+        "border-radius": ".25em",                   // Opera 10.5 and IE9
+        "-webkit-border-radius": ".25em",           // Safari and Chrome
+        "-moz-border-radius": ".25em",              // Firefox
+        "-khtml-border-radius": ".25em",            // Konqueror
+
+        "box-shadow": "0px 0px 15px #83A",          // Opera 10.5 and IE9
+        "-webkit-box-shadow": "0px 0px 15px #83A",  // Safari and Chrome
+        "-moz-box-shadow": "0px 0px 15px #83A",     // Forefox
+        "-khtml-box-shadow": "0px 0px 15px #83A",   // Konqueror
+
+        border: "1px solid #A6D ! important",
+        display: "inline-block", position:"absolute"
+      },
+
+      ".MathJax_Hover_Arrow": {
+        position:"absolute",
+        width:"15px", height:"11px",
+        cursor:"pointer"
+      }
+    }
+  };
+
+  
+  //
+  //  Common event-handling code
+  //
+  var EVENT = ME.Event = {
+    
+    LEFTBUTTON: 0,           // the event.button value for left button
+    RIGHTBUTTON: 2,          // the event.button value for right button
+    MENUKEY: "altKey",       // the event value for alternate context menu
+
+    Mousedown: function (event) {return EVENT.Handler(event,"Mousedown",this)},
+    Mouseup:   function (event) {return EVENT.Handler(event,"Mouseup",this)},
+    Mousemove: function (event) {return EVENT.Handler(event,"Mousemove",this)},
+    Mouseover: function (event) {return EVENT.Handler(event,"Mouseover",this)},
+    Mouseout:  function (event) {return EVENT.Handler(event,"Mouseout",this)},
+    Click:     function (event) {return EVENT.Handler(event,"Click",this)},
+    DblClick:  function (event) {return EVENT.Handler(event,"DblClick",this)},
+    Menu:      function (event) {return EVENT.Handler(event,"ContextMenu",this)},
+    
+    //
+    //  Call the output jax's event handler or the zoom handler
+    //
+    Handler: function (event,type,math) {
+      if (AJAX.loadingMathMenu) {return EVENT.False(event)}
+      var jax = OUTPUT[math.jaxID];
+      if (!event) {event = window.event}
+      event.isContextMenu = (type === "ContextMenu");
+      if (jax[type]) {return jax[type](event,math)}
+      if (EXTENSION.MathZoom) {return EXTENSION.MathZoom.HandleEvent(event,type,math)}
+    },
+    
+    //
+    //  Try to cancel the event in every way we can
+    //
+    False: function (event) {
+      if (!event) {event = window.event}
+      if (event) {
+        if (event.preventDefault) {event.preventDefault()}
+        if (event.stopPropagation) {event.stopPropagation()}
+        event.cancelBubble = true;
+        event.returnValue = false;
+      }
+      return false;
+    },
+
+    //
+    //  Load the contextual menu code, if needed, and post the menu
+    //
+    ContextMenu: function (event,math,force) {
+      //
+      //  Check if we are showing menus
+      //
+      var JAX = OUTPUT[math.jaxID], jax = JAX.getJaxFromMath(math);
+      var show = (JAX.config.showMathMenu != null ? JAX : HUB).config.showMathMenu;
+      if (!show || (SETTINGS.context !== "MathJax" && !force)) return;
+
+      //
+      //  Remove selections, remove hover fades
+      //
+      if (ME.msieEventBug) {event = window.event || event}
+      EVENT.ClearSelection(); HOVER.ClearHoverTimer();
+      if (jax.hover) {
+        if (jax.hover.remove) {clearTimeout(jax.hover.remove); delete jax.hover.remove}
+        jax.hover.nofade = true;
+      }
+
+      //
+      //  If the menu code is loaded, post the menu
+      //  Otherwse lad the menu code and try again
+      //
+      var MENU = MathJax.Menu;
+      if (MENU) {
+        MENU.jax = jax;
+        var source = MENU.menu.Find("Show Math As").menu;
+        source.items[1].name = (INPUT[jax.inputJax].sourceMenuTitle||"Original Form");
+        source.items[0].hidden = (jax.inputJax === "Error");  // hide MathML choice for error messages
+        var MathPlayer = MENU.menu.Find("Math Settings","MathPlayer");
+        MathPlayer.hidden = !(jax.outputJax === "NativeMML" && HUB.Browser.hasMathPlayer);
+        return MENU.menu.Post(event);
+      } else {
+        if (!AJAX.loadingMathMenu) {
+          AJAX.loadingMathMenu = true;
+          var ev = {
+            pageX:event.pageX, pageY:event.pageY,
+            clientX:event.clientX, clientY:event.clientY
+          };
+          CALLBACK.Queue(
+            AJAX.Require("[MathJax]/extensions/MathMenu.js"),
+            function () {delete AJAX.loadingMathMenu; if (!MathJax.Menu) {MathJax.Menu = {}}},
+            ["ContextMenu",this,ev,math,force]  // call this function again
+          );
+        }
+        return EVENT.False(event);
+      }
+    },
+    
+    //
+    //  Mousedown handler for alternate means of accessing menu
+    //
+    AltContextMenu: function (event,math) {
+      var JAX = OUTPUT[math.jaxID];
+      var show = (JAX.config.showMathMenu != null ? JAX : HUB).config.showMathMenu;
+      if (show) {
+        show = (JAX.config.showMathMenuMSIE != null ? JAX : HUB).config.showMathMenuMSIE;
+        if (SETTINGS.context === "MathJax" && !SETTINGS.mpContext && show) {
+          if (!ME.noContextMenuBug || event.button !== EVENT.RIGHTBUTTON) return;
+        } else {
+          if (!event[EVENT.MENUKEY] || event.button !== EVENT.LEFTBUTTON) return;
+        }
+        return JAX.ContextMenu(event,math,true);
+      }
+    },
+    
+    ClearSelection: function () {
+      if (ME.safariContextMenuBug) {setTimeout("window.getSelection().empty()",0)}
+      if (document.selection) {setTimeout("document.selection.empty()",0)}
+    },
+    
+    getBBox: function (span) {
+      span.appendChild(ME.topImg);
+      var h = ME.topImg.offsetTop, d = span.offsetHeight-h, w = span.offsetWidth;
+      span.removeChild(ME.topImg);
+      return {w:w, h:h, d:d};
+    }
+    
+  };
+  
+  //
+  //  Handle hover "discoverability"
+  //
+  var HOVER = ME.Hover = {
+    
+    //
+    //  Check if we are moving from a non-MathJax element to a MathJax one
+    //  and either start fading in again (if it is fading out) or start the
+    //  timer for the hover
+    //
+    Mouseover: function (event,math) {
+      if (SETTINGS.discoverable || SETTINGS.zoom === "Hover") {
+        var from = event.fromElement || event.relatedTarget,
+            to   = event.toElement   || event.target;
+        if (from && to && (from.isMathJax != to.isMathJax ||
+                           HUB.getJaxFor(from) !== HUB.getJaxFor(to))) {
+          var jax = this.getJaxFromMath(math);
+          if (jax.hover) {HOVER.ReHover(jax)} else {HOVER.HoverTimer(jax,math)}
+          return EVENT.False(event);
+        }
+      }
+    },
+    //
+    //  Check if we are moving from a MathJax element to a non-MathJax one
+    //  and either start fading out, or clear the timer if we haven't
+    //  hovered yet
+    //
+    Mouseout: function (event,math) {
+      if (SETTINGS.discoverable || SETTINGS.zoom === "Hover") {
+        var from = event.fromElement || event.relatedTarget,
+            to   = event.toElement   || event.target;
+        if (from && to && (from.isMathJax != to.isMathJax ||
+                           HUB.getJaxFor(from) !== HUB.getJaxFor(to))) {
+          var jax = this.getJaxFromMath(math);
+          if (jax.hover) {HOVER.UnHover(jax)} else {HOVER.ClearHoverTimer()}
+          return EVENT.False(event);
+        }
+      }
+    },
+    //
+    //  Restart hover timer if the mouse moves
+    //
+    Mousemove: function (event,math) {
+      if (SETTINGS.discoverable || SETTINGS.zoom === "Hover") {
+        var jax = this.getJaxFromMath(math); if (jax.hover) return;
+        if (HOVER.lastX == event.clientX && HOVER.lastY == event.clientY) return;
+        HOVER.lastX = event.clientX; HOVER.lastY = event.clientY;
+        HOVER.HoverTimer(jax,math);
+        return EVENT.False(event);
+      }
+    },
+    
+    //
+    //  Clear the old timer and start a new one
+    //
+    HoverTimer: function (jax,math) {
+      this.ClearHoverTimer();
+      this.hoverTimer = setTimeout(CALLBACK(["Hover",this,jax,math]),CONFIG.hover);
+    },
+    ClearHoverTimer: function () {
+      if (this.hoverTimer) {clearTimeout(this.hoverTimer); delete this.hoverTimer}
+    },
+    
+    //
+    //  Handle putting up the hover frame
+    //
+    Hover: function (jax,math) {
+      //
+      //  Check if Zoom handles the hover event
+      //
+      if (EXTENSION.MathZoom && EXTENSION.MathZoom.Hover({},math)) return;
+      //
+      //  Get the hover data
+      //
+      var JAX = OUTPUT[jax.outputJax],
+          span = JAX.getHoverSpan(jax,math),
+          bbox = JAX.getHoverBBox(jax,span,math),
+          show = (JAX.config.showMathMenu != null ? JAX : HUB).config.showMathMenu;
+      var dx = CONFIG.frame.x, dy = CONFIG.frame.y, dd = CONFIG.frame.bwidth;  // frame size
+      if (ME.msieBorderWidthBug) {dd = 0}
+      jax.hover = {opacity:0, id:jax.inputID+"-Hover"};
+      //
+      //  The frame and menu button
+      //
+      var frame = HTML.Element("span",{
+         id:jax.hover.id, isMathJax: true,
+         style:{display:"inline-block", width:0, height:0, position:"relative"}
+        },[["span",{
+          className:"MathJax_Hover_Frame", isMathJax: true,
+          style:{
+            display:"inline-block", position:"absolute",
+            top:this.Px(-bbox.h-dy-dd-(bbox.y||0)), left:this.Px(-dx-dd+(bbox.x||0)),
+            width:this.Px(bbox.w+2*dx), height:this.Px(bbox.h+bbox.d+2*dy),
+            opacity:0, filter:"alpha(opacity=0)"
+          }}
+        ]]
+      );
+      var button = HTML.Element("span",{
+         isMathJax: true, id:jax.hover.id+"Menu",
+         style:{display:"inline-block", "z-index": 1, width:0, height:0, position:"relative"}
+        },[["img",{
+            className: "MathJax_Hover_Arrow", isMathJax: true, math: math,
+            src: CONFIG.button.src, onclick: this.HoverMenu, jax:JAX.id,
+            style: {
+              left:this.Px(bbox.w+dx+dd+(bbox.x||0)+CONFIG.button.x),
+              top:this.Px(-bbox.h-dy-dd-(bbox.y||0)-CONFIG.button.y),
+              opacity:0, filter:"alpha(opacity=0)"
+            }
+          }]]
+      );
+      if (bbox.width) {
+        frame.style.width = button.style.width = bbox.width;
+        frame.style.marginRight = button.style.marginRight = "-"+bbox.width;
+        frame.firstChild.style.width = bbox.width;
+        button.firstChild.style.left = "";
+        button.firstChild.style.right = this.Px(CONFIG.button.wx);
+      }
+      //
+      //  Add the frame and button
+      //
+      span.parentNode.insertBefore(frame,span);
+      if (show) {span.parentNode.insertBefore(button,span)}
+      if (span.style) {span.style.position = "relative"} // so math is on top of hover frame
+      //
+      //  Start the hover fade-in
+      //
+      this.ReHover(jax);
+    },
+    //
+    //  Restart the hover fade in and fade-out timers
+    //
+    ReHover: function (jax) {
+      if (jax.hover.remove) {clearTimeout(jax.hover.remove)}
+      jax.hover.remove = setTimeout(CALLBACK(["UnHover",this,jax]),CONFIG.fadeoutDelay);
+      this.HoverFadeTimer(jax,CONFIG.fadeinInc);
+    },
+    //
+    //  Start the fade-out
+    //
+    UnHover: function (jax) {
+      if (!jax.hover.nofade) {this.HoverFadeTimer(jax,-CONFIG.fadeoutInc,CONFIG.fadeoutStart)}
+    },
+    //
+    //  Handle the fade-in and fade-out
+    //
+    HoverFade: function (jax) {
+      delete jax.hover.timer;
+      jax.hover.opacity = Math.max(0,Math.min(1,jax.hover.opacity + jax.hover.inc));
+      jax.hover.opacity = Math.floor(1000*jax.hover.opacity)/1000;
+      var frame = document.getElementById(jax.hover.id),
+          button = document.getElementById(jax.hover.id+"Menu");
+      frame.firstChild.style.opacity = jax.hover.opacity;
+      frame.firstChild.style.filter = "alpha(opacity="+Math.floor(100*jax.hover.opacity)+")";
+      if (button) {
+        button.firstChild.style.opacity = jax.hover.opacity;
+        button.firstChild.style.filter = frame.style.filter;
+      }
+      if (jax.hover.opacity === 1) {return}
+      if (jax.hover.opacity > 0) {this.HoverFadeTimer(jax,jax.hover.inc); return}
+      frame.parentNode.removeChild(frame);
+      if (button) {button.parentNode.removeChild(button)}
+      if (jax.hover.remove) {clearTimeout(jax.hover.remove)}
+      delete jax.hover;
+    },
+    //
+    //  Set the fade to in or out (via inc) and start the timer, if needed
+    //
+    HoverFadeTimer: function (jax,inc,delay) {
+      jax.hover.inc = inc;
+      if (!jax.hover.timer) {
+        jax.hover.timer = setTimeout(CALLBACK(["HoverFade",this,jax]),(delay||CONFIG.fadeDelay));
+      }
+    },
+    
+    //
+    //  Handle a click on the menu button
+    //
+    HoverMenu: function (event) {
+      if (!event) {event = window.event}
+      return OUTPUT[this.jax].ContextMenu(event,this.math,true);
+    },
+    
+    //
+    //  Clear all hover timers
+    //
+    ClearHover: function (jax) {
+      if (jax.hover.remove) {clearTimeout(jax.hover.remove)}
+      if (jax.hover.timer)  {clearTimeout(jax.hover.timer)}
+      HOVER.ClearHoverTimer();
+      delete jax.hover;
+    },
+    
+    //
+    //  Make a measurement in pixels
+    //
+    Px: function (m) {
+      if (Math.abs(m) < .006) {return "0px"}
+      return m.toFixed(2).replace(/\.?0+$/,"") + "px";
+    },
+
+    //
+    //  Preload images so they show up with the menu
+    //
+    getImages: function () {
+      var menu = new Image();
+      menu.src = CONFIG.button.src;
+    }
+
+  };
+  
+  //
+  //  Handle touch events.  
+  //
+  //  Use double-tap-and-hold as a replacement for context menu event.
+  //  Use double-tap as a replacement for double click.
+  //
+  var TOUCH = ME.Touch = {
+
+    last: 0,          // time of last tap event
+    delay: 500,       // delay time for double-click
+    
+    //
+    //  Check if this is a double-tap, and if so, start the timer
+    //  for the double-tap and hold (to trigger the contextual menu)
+    //
+    start: function (event) {
+      var now = new Date().getTime();
+      var dblTap = (now - TOUCH.last < TOUCH.delay && TOUCH.up);
+      TOUCH.last = now; TOUCH.up = false;
+      if (dblTap) {
+        TOUCH.timeout = setTimeout(TOUCH.menu,TOUCH.delay,event,this);
+        event.preventDefault();
+      }
+    },
+          
+    //
+    //  Check if there is a timeout pending, i.e., we have a 
+    //  double-tap and were waiting to see if it is held long
+    //  enough for the menu.  Since we got the end before the
+    //  timeout, it is a double-click, not a double-tap-and-hold.
+    //  Prevent the default action and issue a double click.
+    //
+    end: function (event) {
+      var now = new Date().getTime();
+      TOUCH.up = (now - TOUCH.last < TOUCH.delay);
+      if (TOUCH.timeout) {
+        clearTimeout(TOUCH.timeout);
+        delete TOUCH.timeout; TOUCH.last = 0; TOUCH.up = false;
+        event.preventDefault();
+        return EVENT.Handler((event.touches[0]||event.touch),"DblClick",this);
+      }
+    },
+        
+    //
+    //  If the timeout passes without an end event, we issue
+    //  the contextual menu event.
+    //
+    menu: function (event,math) {
+      delete TOUCH.timeout; TOUCH.last = 0; TOUCH.up = false;
+      return EVENT.Handler((event.touches[0]||event.touch),"ContextMenu",math);
+    }
+    
+  };
+  
+  //
+  //  Mobile screens are small, so use larger version of arrow
+  //
+  if (HUB.Browser.isMobile) {
+    var arrow = CONFIG.styles[".MathJax_Hover_Arrow"];
+    arrow.width = "25px"; arrow.height = "18px";
+    CONFIG.button.x = -6;
+  }
+  
+  //
+  //  Set up browser-specific values
+  //
+  HUB.Browser.Select({
+    MSIE: function (browser) {
+      var mode = (document.documentMode || 0);
+      var isIE8 = browser.versionAtLeast("8.0");
+      ME.msieBorderWidthBug = (document.compatMode === "BackCompat");  // borders are inside offsetWidth/Height
+      ME.msieEventBug = browser.isIE9;           // must get event from window even though event is passed
+      ME.msieAlignBug = (!isIE8 || mode < 8);    // inline-block spans don't rest on baseline
+      if (mode < 9) {EVENT.LEFTBUTTON = 1}       // IE < 9 has wrong event.button values
+    },
+    Safari: function (browser) {
+      ME.safariContextMenuBug = true;  // selection can be started by contextmenu event
+    },
+    Opera: function (browser) {
+      ME.operaPositionBug = true;      // position is wrong unless border is used
+    },
+    Konqueror: function (browser) {
+      ME.noContextMenuBug = true;      // doesn't produce contextmenu event
+    }
+  });
+  
+  //
+  //  Used in measuring zoom and hover positions
+  //
+  ME.topImg = (ME.msieAlignBug ?
+    HTML.Element("img",{style:{width:0,height:0,position:"relative"},src:"about:blank"}) :
+    HTML.Element("span",{style:{width:0,height:0,display:"inline-block"}})
+  );
+  if (ME.operaPositionBug) {ME.topImg.style.border="1px solid"}
+
+  //
+  //  Get configuration from user
+  //
+  ME.config = CONFIG = HUB.CombineConfig("MathEvents",CONFIG);
+  var SETFRAME = function () {
+    var haze = CONFIG.styles[".MathJax_Hover_Frame"];
+    haze.border = CONFIG.frame.bwidth+"px solid "+CONFIG.frame.bcolor+" ! important";
+    haze["box-shadow"] = haze["-webkit-box-shadow"] =
+      haze["-moz-box-shadow"] = haze["-khtml-box-shadow"] =
+        "0px 0px "+CONFIG.frame.hwidth+" "+CONFIG.frame.hcolor;
+  };
+  
+  //
+  //  Queue the events needed for startup
+  //
+  CALLBACK.Queue(
+    HUB.Register.StartupHook("End Config",{}), // wait until config is complete
+    [SETFRAME],
+    ["getImages",HOVER],
+    ["Styles",AJAX,CONFIG.styles],
+    ["Post",HUB.Startup.signal,"MathEvents Ready"],
+    ["loadComplete",AJAX,"[MathJax]/extensions/MathEvents.js"]
+  );
+  
+})(MathJax.Hub,MathJax.HTML,MathJax.Ajax,MathJax.Callback,MathJax.OutputJax,MathJax.InputJax);
diff --git a/data/mathjax/unpacked/extensions/MathMenu.js b/data/mathjax/unpacked/extensions/MathMenu.js
new file mode 100644
index 0000000..8a2075a
--- /dev/null
+++ b/data/mathjax/unpacked/extensions/MathMenu.js
@@ -0,0 +1,1038 @@
+/*************************************************************
+ *
+ *  MathJax/extensions/MathMenu.js
+ *  
+ *  Implements a right-mouse (or CTRL-click) menu over mathematics
+ *  elements that gives the user the ability to copy the source,
+ *  change the math size, and zoom settings.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2010-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+(function (HUB,HTML,AJAX,CALLBACK,OUTPUT) {
+  var VERSION = "2.1";
+
+  var SIGNAL = MathJax.Callback.Signal("menu")  // signal for menu events
+  
+  MathJax.Extension.MathMenu = {
+    version: VERSION,
+    signal: SIGNAL
+  };
+
+  var isPC = HUB.Browser.isPC, isMSIE = HUB.Browser.isMSIE, isIE9 = ((document.documentMode||0) > 8);
+  var ROUND = (isPC ? null : "5px");
+  
+  var CONFIG = HUB.CombineConfig("MathMenu",{
+    delay: 150,                                    // the delay for submenus
+    helpURL: "http://www.mathjax.org/help-v2/user/";,  // the URL for the "MathJax Help" menu
+    closeImg: AJAX.fileURL(OUTPUT.imageDir+"/CloseX-31.png"), // image for close "X" for mobiles
+
+    showRenderer: true,                            //  show the "Math Renderer" menu?
+    showMathPlayer: true,                          //  show the "MathPlayer" menu?
+    showFontMenu: false,                           //  show the "Font Preference" menu?
+    showContext:  false,                           //  show the "Context Menu" menu?
+    showDiscoverable: false,                       //  show the "Discoverable" menu?
+
+    windowSettings: {                              // for source window
+      status: "no", toolbar: "no", locationbar: "no", menubar: "no",
+      directories: "no", personalbar: "no", resizable: "yes", scrollbars: "yes",
+      width: 400, height: 300,
+      left: Math.round((screen.width - 400)/2),
+      top:  Math.round((screen.height - 300)/3)
+    },
+    
+    styles: {
+      "#MathJax_About": {
+        position:"fixed", left:"50%", width:"auto", "text-align":"center",
+        border:"3px outset", padding:"1em 2em", "background-color":"#DDDDDD", color:"black",
+        cursor: "default", "font-family":"message-box", "font-size":"120%",
+        "font-style":"normal", "text-indent":0, "text-transform":"none",
+        "line-height":"normal", "letter-spacing":"normal", "word-spacing":"normal",
+        "word-wrap":"normal", "white-space":"nowrap", "float":"none", "z-index":201,
+
+        "border-radius": "15px",                     // Opera 10.5 and IE9
+        "-webkit-border-radius": "15px",             // Safari and Chrome
+        "-moz-border-radius": "15px",                // Firefox
+        "-khtml-border-radius": "15px",              // Konqueror
+
+        "box-shadow":"0px 10px 20px #808080",         // Opera 10.5 and IE9
+        "-webkit-box-shadow":"0px 10px 20px #808080", // Safari 3 and Chrome
+        "-moz-box-shadow":"0px 10px 20px #808080",    // Forefox 3.5
+        "-khtml-box-shadow":"0px 10px 20px #808080",  // Konqueror
+        filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')" // IE
+      },
+
+      ".MathJax_Menu": {
+        position:"absolute", "background-color":"white", color:"black",
+        width:"auto", padding:(isPC ? "2px" : "5px 0px"),
+        border:"1px solid #CCCCCC", margin:0, cursor:"default",
+        font: "menu", "text-align":"left", "text-indent":0, "text-transform":"none",
+        "line-height":"normal", "letter-spacing":"normal", "word-spacing":"normal",
+        "word-wrap":"normal", "white-space":"nowrap", "float":"none", "z-index":201,
+
+        "border-radius": ROUND,                     // Opera 10.5 and IE9
+        "-webkit-border-radius": ROUND,             // Safari and Chrome
+        "-moz-border-radius": ROUND,                // Firefox
+        "-khtml-border-radius": ROUND,              // Konqueror
+
+        "box-shadow":"0px 10px 20px #808080",         // Opera 10.5 and IE9
+        "-webkit-box-shadow":"0px 10px 20px #808080", // Safari 3 and Chrome
+        "-moz-box-shadow":"0px 10px 20px #808080",    // Forefox 3.5
+        "-khtml-box-shadow":"0px 10px 20px #808080",  // Konqueror
+        filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')" // IE
+      },
+
+      ".MathJax_MenuItem": {
+        padding: (isPC ? "2px 2em" : "1px 2em"),
+        background:"transparent"
+      },
+
+      ".MathJax_MenuTitle": {
+        "background-color":"#CCCCCC",
+        margin: (isPC ? "-1px -1px 1px -1px" : "-5px 0 0 0"),
+        "text-align":"center", "font-style":"italic", "font-size":"80%", color:"#444444",
+        padding:"2px 0", overflow:"hidden"
+      },
+
+      ".MathJax_MenuArrow": {
+        position:"absolute", right:".5em", color:"#666666",
+        "font-family": (isMSIE ? "'Arial unicode MS'" : null)
+      },
+      ".MathJax_MenuActive .MathJax_MenuArrow": {color:"white"},
+
+      ".MathJax_MenuCheck": {
+        position:"absolute", left:".7em",
+        "font-family": (isMSIE ? "'Arial unicode MS'" : null)
+      },
+
+      ".MathJax_MenuRadioCheck": {
+        position:"absolute", left: (isPC ? "1em" : ".7em")
+      },
+
+      ".MathJax_MenuLabel": {
+        padding: (isPC ? "2px 2em 4px 1.33em" : "1px 2em 3px 1.33em"),
+        "font-style":"italic"
+      },
+    
+      ".MathJax_MenuRule": {
+        "border-top": (isPC ? "1px solid #CCCCCC" : "1px solid #DDDDDD"),
+        margin: (isPC ? "4px 1px 0px" : "4px 3px")
+      },
+     
+      ".MathJax_MenuDisabled": {
+        color:"GrayText"
+      },
+     
+      ".MathJax_MenuActive": {
+        "background-color": (isPC ? "Highlight" : "#606872"),
+        color: (isPC ? "HighlightText" : "white")
+      },
+      
+      ".MathJax_Menu_Close": {
+          position:"absolute",
+          width: "31px", height: "31px",
+          top:"-15px", left:"-15px"
+      }
+    }
+  });
+  
+  var FALSE, HOVER;
+  HUB.Register.StartupHook("MathEvents Ready",function () {
+    FALSE = MathJax.Extension.MathEvents.Event.False;
+    HOVER = MathJax.Extension.MathEvents.Hover;
+  });
+  
+  /*************************************************************/
+  /*
+   *  The main menu class
+   */
+  var MENU = MathJax.Menu = MathJax.Object.Subclass({
+    version: VERSION,
+    items: [],
+    posted: false,
+    title: null,
+    margin: 5,
+    
+    Init: function (def) {this.items = [].slice.call(arguments,0)},
+    With: function (def) {if (def) {HUB.Insert(this,def)}; return this},
+
+    /*
+     *  Display the menu
+     */
+    Post: function (event,parent) {
+      if (!event) {event = window.event};
+      var title = (!this.title ? null : [["div",{className: "MathJax_MenuTitle"},[this.title]]]);
+      var div = document.getElementById("MathJax_MenuFrame");
+      if (!div) {
+        div = MENU.Background(this);
+        delete ITEM.lastItem; delete ITEM.lastMenu;
+        delete MENU.skipUp;
+        SIGNAL.Post(["post",MENU.jax]);
+      }
+      var menu = HTML.addElement(div,"div",{
+        onmouseup: MENU.Mouseup, ondblclick: FALSE,
+        ondragstart: FALSE, onselectstart: FALSE, oncontextmenu: FALSE,
+        menuItem: this, className: "MathJax_Menu"
+      },title);
+
+      for (var i = 0, m = this.items.length; i < m; i++) {this.items[i].Create(menu)}
+      if (MENU.isMobile) {
+        HTML.addElement(menu,"span",{
+          className: "MathJax_Menu_Close", menu: parent,
+          ontouchstart: MENU.Close, ontouchend: FALSE, onmousedown: MENU.Close, onmouseup: FALSE
+        },[["img",{src: CONFIG.closeImg, style:{width:"100%",height:"100%"}}]]);
+      }
+      this.posted = true;
+      
+      menu.style.width = (menu.offsetWidth+2) + "px";
+      var x = event.pageX, y = event.pageY;
+      if (!x && !y) {
+        x = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
+        y = event.clientY + document.body.scrollTop  + document.documentElement.scrollTop;
+      }
+      if (!parent) {
+        if (x + menu.offsetWidth > document.body.offsetWidth - this.margin)
+           {x = document.body.offsetWidth - menu.offsetWidth - this.margin}
+        if (MENU.isMobile) {x = Math.max(5,x-Math.floor(menu.offsetWidth/2)); y -= 20}
+        MENU.skipUp = event.isContextMenu;
+      } else {
+        var side = "left", mw = parent.offsetWidth;
+        x = (MENU.isMobile ? 30 : mw - 2); y = 0;
+        while (parent && parent !== div) {
+          x += parent.offsetLeft; y += parent.offsetTop;
+          parent = parent.parentNode;
+        }
+        if (x + menu.offsetWidth > document.body.offsetWidth - this.margin && !MENU.isMobile)
+          {side = "right"; x = Math.max(this.margin,x - mw - menu.offsetWidth + 6)}
+        if (!isPC) {
+          // in case these ever get implemented
+          menu.style["borderRadiusTop"+side] = 0;       // Opera 10.5
+          menu.style["WebkitBorderRadiusTop"+side] = 0; // Safari and Chrome
+          menu.style["MozBorderRadiusTop"+side] = 0;    // Firefox
+          menu.style["KhtmlBorderRadiusTop"+side] = 0;  // Konqueror
+        }
+      }
+      
+      menu.style.left = x+"px"; menu.style.top = y+"px";
+      
+      if (document.selection && document.selection.empty) {document.selection.empty()}
+      return FALSE(event);
+    },
+
+    /*
+     *  Remove the menu from the screen
+     */
+    Remove: function (event,menu) {
+      SIGNAL.Post(["unpost",MENU.jax]);
+      var div = document.getElementById("MathJax_MenuFrame");
+      if (div) {
+        div.parentNode.removeChild(div);
+        if (this.msieFixedPositionBug) {detachEvent("onresize",MENU.Resize)}
+      }
+      if (MENU.jax.hover) {
+        delete MENU.jax.hover.nofade;
+        HOVER.UnHover(MENU.jax);
+      }
+      return FALSE(event);
+    },
+
+    /*
+     *  Find a named item in a menu (or submenu).
+     *  A list of names means descend into submenus.
+     */
+    Find: function (name) {
+      var names = [].slice.call(arguments,1);
+      for (var i = 0, m = this.items.length; i < m; i++) {
+        if (this.items[i].name === name) {
+          if (names.length) {
+            if (!this.items[i].menu) {return null}
+            return this.items[i].menu.Find.apply(this.items[i].menu,names);
+          }
+          return this.items[i];
+        }
+      }
+      return null;
+    },
+    
+    /*
+     *  Find the index of a menu item (so we can insert before or after it)
+     */
+    IndexOf: function (name) {
+      for (var i = 0, m = this.items.length; i < m; i++)
+        {if (this.items[i].name === name) {return i}}
+      return null;
+    }
+    
+  },{
+    
+    config: CONFIG,
+
+    div: null,     // the DOM elements for the menu and submenus
+
+    Close:      function (event)
+      {return MENU.Event(event,this.menu||this.parentNode,(this.menu?"Touchend":"Remove"))},
+    Remove:     function (event) {return MENU.Event(event,this,"Remove")},
+    Mouseover:  function (event) {return MENU.Event(event,this,"Mouseover")},
+    Mouseout:   function (event) {return MENU.Event(event,this,"Mouseout")},
+    Mousedown:  function (event) {return MENU.Event(event,this,"Mousedown")},
+    Mouseup:    function (event) {return MENU.Event(event,this,"Mouseup")},
+    Touchstart: function (event) {return MENU.Event(event,this,"Touchstart")},
+    Touchend:   function (event) {return MENU.Event(event,this,"Touchend")},
+    Event: function (event,menu,type,force) {
+      if (MENU.skipMouseover && type === "Mouseover" && !force) {return FALSE(event)}
+      if (MENU.skipUp) {
+        if (type.match(/Mouseup|Touchend/)) {delete MENU.skipUp; return FALSE(event)}
+        if (type === "Touchstart" ||
+           (type === "Mousedown" && !MENU.skipMousedown)) {delete MENU.skipUp}
+      }
+      if (!event) {event = window.event}
+      var item = menu.menuItem;
+      if (item && item[type]) {return item[type](event,menu)}
+      return null;
+    },
+
+    /*
+     *  Style for the background DIV
+     */
+    BGSTYLE: {
+      position:"absolute", left:0, top:0, "z-index":200,
+      width:"100%", height:"100%", border:0, padding:0, margin:0
+    },
+
+    Background: function (menu) {
+      var div = HTML.addElement(document.body,"div",{style:this.BGSTYLE, id:"MathJax_MenuFrame"},
+                    [["div",{style: this.BGSTYLE, menuItem: menu, onmousedown: this.Remove}]]);
+      var bg = div.firstChild;
+      if (menu.msieBackgroundBug) {
+        //  MSIE doesn't allow transparent background to be hit boxes, so
+        //  fake it using opacity with solid background color
+        bg.style.backgroundColor = "white"; bg.style.filter = "alpha(opacity=0)";
+      }
+      if (menu.msieFixedPositionBug) {
+        //  MSIE can't do fixed position, so use a full-sized background
+        //  and an onresize handler to update it (stupid, but necessary)
+        div.width = div.height = 0; this.Resize();
+        attachEvent("onresize",this.Resize);
+      } else {
+        // otherwise, use a fixed position DIV to cover the viewport
+        bg.style.position = "fixed";
+      }
+      return div;
+    },
+    Resize: function () {setTimeout(MENU.SetWH,0)},
+    SetWH: function () {
+      var bg = document.getElementById("MathJax_MenuFrame");
+      if (bg) {
+        bg = bg.firstChild;
+        bg.style.width = bg.style.height = "1px"; // so scrollWidth/Height will be right below
+        bg.style.width = document.body.scrollWidth + "px";
+        bg.style.height = document.body.scrollHeight + "px";
+      }
+    },
+    
+    saveCookie: function () {HTML.Cookie.Set("menu",this.cookie)},
+    getCookie: function () {this.cookie = HTML.Cookie.Get("menu")},
+    
+    //
+    //  Preload images so they show up with the menu
+    //
+    getImages: function () {
+      if (MENU.isMobile) {var close = new Image(); close.src = CONFIG.closeImg}
+    }
+
+  });
+
+  /*************************************************************/
+  /*
+   *  The menu item root subclass
+   */
+  var ITEM = MENU.ITEM = MathJax.Object.Subclass({
+    name: "", // the menu item's label
+
+    Create: function (menu) {
+      if (!this.hidden) {
+        var def = {
+          onmouseover: MENU.Mouseover, onmouseout: MENU.Mouseout,
+          onmouseup: MENU.Mouseup, onmousedown: MENU.Mousedown,
+          ondragstart: FALSE, onselectstart: FALSE, onselectend: FALSE,
+          ontouchstart: MENU.Touchstart, ontouchend: MENU.Touchend,
+          className: "MathJax_MenuItem", menuItem: this
+        };
+        if (this.disabled) {def.className += " MathJax_MenuDisabled"}
+        HTML.addElement(menu,"div",def,this.Label(def,menu));
+      }
+    },
+
+    Mouseover: function (event,menu) {
+      if (!this.disabled) {this.Activate(menu)}
+      if (!this.menu || !this.menu.posted) {
+        var menus = document.getElementById("MathJax_MenuFrame").childNodes,
+            items = menu.parentNode.childNodes;
+        for (var i = 0, m = items.length; i < m; i++) {
+          var item = items[i].menuItem;
+          if (item && item.menu && item.menu.posted) {item.Deactivate(items[i])}
+        }
+        m = menus.length-1;
+        while (m >= 0 && menu.parentNode.menuItem !== menus[m].menuItem) {
+          menus[m].menuItem.posted = false;
+          menus[m].parentNode.removeChild(menus[m]);
+          m--;
+        }
+        if (this.Timer && !MENU.isMobile) {this.Timer(event,menu)}
+      }
+    },
+    Mouseout: function (event,menu) {
+      if (!this.menu || !this.menu.posted) {this.Deactivate(menu)}
+      if (this.timer) {clearTimeout(this.timer); delete this.timer}
+    },
+    Mouseup: function (event,menu) {return this.Remove(event,menu)},
+    
+    Touchstart: function (event,menu) {return this.TouchEvent(event,menu,"Mousedown")},
+    Touchend: function (event,menu)   {return this.TouchEvent(event,menu,"Mouseup")},
+    TouchEvent: function (event,menu,type) {
+      if (this !== ITEM.lastItem) {
+        if (ITEM.lastMenu) {MENU.Event(event,ITEM.lastMenu,"Mouseout")}
+        MENU.Event(event,menu,"Mouseover",true);
+        ITEM.lastItem = this; ITEM.lastMenu = menu;
+      }
+      if (this.nativeTouch) {return null}
+      MENU.Event(event,menu,type);
+      return false;
+    },
+    
+    Remove: function (event,menu) {
+      menu = menu.parentNode.menuItem;
+      return menu.Remove(event,menu);
+    },
+
+    Activate: function (menu) {this.Deactivate(menu); menu.className += " MathJax_MenuActive"},
+    Deactivate: function (menu) {menu.className = menu.className.replace(/ MathJax_MenuActive/,"")},
+
+    With: function (def) {if (def) {HUB.Insert(this,def)}; return this}
+  });
+
+  /*************************************************************/
+  /*
+   *  A menu item that performs a command when selected
+   */
+  MENU.ITEM.COMMAND = MENU.ITEM.Subclass({
+    action: function () {},
+
+    Init: function (name,action,def) {
+      this.name = name; this.action = action;
+      this.With(def);
+    },
+    
+    Label: function (def,menu) {return [this.name]},
+    Mouseup: function (event,menu) {
+      if (!this.disabled) {
+        this.Remove(event,menu);
+        SIGNAL.Post(["command",this]);
+        this.action.call(this,event);
+      }
+      return FALSE(event);
+    }
+  });
+
+  /*************************************************************/
+  /*
+   *  A menu item that posts a submenu
+   */
+  MENU.ITEM.SUBMENU = MENU.ITEM.Subclass({
+    menu: null,        // the submenu
+    marker: (isPC && !HUB.Browser.isSafari ? "\u25B6" : "\u25B8"),  // the menu arrow
+
+    Init: function (name,def) {
+      this.name = name; var i = 1;
+      if (!(def instanceof MENU.ITEM)) {this.With(def), i++}
+      this.menu = MENU.apply(MENU,[].slice.call(arguments,i));
+    },
+    Label: function (def,menu) {
+      this.menu.posted = false;
+      return [this.name+" ",["span",{className:"MathJax_MenuArrow"},[this.marker]]];
+    },
+    Timer: function (event,menu) {
+      if (this.timer) {clearTimeout(this.timer)}
+      event = {clientX: event.clientX, clientY: event.clientY}; // MSIE can't pass the event below
+      this.timer = setTimeout(CALLBACK(["Mouseup",this,event,menu]),CONFIG.delay);
+    },
+    Touchend: function (event,menu) {
+      var forceout = this.menu.posted;
+      var result = this.SUPER(arguments).Touchend.apply(this,arguments);
+      if (forceout) {this.Deactivate(menu); delete ITEM.lastItem; delete ITEM.lastMenu}
+      return result;
+    },
+    Mouseup: function (event,menu) {
+      if (!this.disabled) {
+        if (!this.menu.posted) {
+          if (this.timer) {clearTimeout(this.timer); delete this.timer}
+          this.menu.Post(event,menu);
+        } else {
+         var menus = document.getElementById("MathJax_MenuFrame").childNodes,
+              m = menus.length-1;
+          while (m >= 0) {
+            var child = menus[m];
+            child.menuItem.posted = false;
+            child.parentNode.removeChild(child);
+            if (child.menuItem === this.menu) {break};
+            m--;
+          }
+        }
+      }
+      return FALSE(event);
+    }
+  });
+
+  /*************************************************************/
+  /*
+   *  A menu item that is one of several radio buttons
+   */
+  MENU.ITEM.RADIO = MENU.ITEM.Subclass({
+    variable: null,     // the variable name
+    marker: (isPC ? "\u25CF" : "\u2713"),   // the checkmark
+
+    Init: function (name,variable,def) {
+      this.name = name; this.variable = variable; this.With(def);
+      if (this.value == null) {this.value = this.name}
+    },
+    Label: function (def,menu) {
+      var span = {className:"MathJax_MenuRadioCheck"};
+      if (CONFIG.settings[this.variable] !== this.value) {span = {style:{display:"none"}}}
+      return [["span",span,[this.marker]]," "+this.name];
+    },
+    Mouseup: function (event,menu) {
+      if (!this.disabled) {
+        var child = menu.parentNode.childNodes;
+        for (var i = 0, m = child.length; i < m; i++) {
+          var item = child[i].menuItem;
+          if (item && item.variable === this.variable)
+            {child[i].firstChild.style.display = "none"}
+        }
+        menu.firstChild.display = ""; 
+        CONFIG.settings[this.variable] = this.value;
+        MENU.cookie[this.variable] = CONFIG.settings[this.variable]; MENU.saveCookie();
+        SIGNAL.Post(["radio button",this]);
+      }
+      this.Remove(event,menu);
+      if (this.action && !this.disabled) {this.action.call(MENU,this)}
+      return FALSE(event);
+    }
+  });
+
+  /*************************************************************/
+  /*
+   *  A menu item that is checkable
+   */
+  MENU.ITEM.CHECKBOX = MENU.ITEM.Subclass({
+    variable: null,     // the variable name
+    marker: "\u2713",   // the checkmark
+
+    Init: function (name,variable,def) {
+      this.name = name; this.variable = variable; this.With(def);
+    },
+    Label: function (def,menu) {
+      var span = {className:"MathJax_MenuCheck"};
+      if (!CONFIG.settings[this.variable]) {span = {style:{display:"none"}}}
+      return [["span",span,[this.marker]]," "+this.name];
+    },
+    Mouseup: function (event,menu) {
+      if (!this.disabled) {
+        menu.firstChild.display = (CONFIG.settings[this.variable] ? "none" : "");
+        CONFIG.settings[this.variable] = !CONFIG.settings[this.variable];
+        MENU.cookie[this.variable] = CONFIG.settings[this.variable]; MENU.saveCookie();
+        SIGNAL.Post(["checkbox",this]);
+      }
+      this.Remove(event,menu);
+      if (this.action && !this.disabled) {this.action.call(MENU,this)}
+      return FALSE(event);
+    }
+  });
+
+  /*************************************************************/
+  /*
+   *  A menu item that is a label
+   */
+  MENU.ITEM.LABEL = MENU.ITEM.Subclass({
+    Init: function (name,def) {this.name = name; this.With(def)},
+    Label: function (def,menu) {
+      delete def.onmouseover, delete def.onmouseout; delete def.onmousedown;
+      def.className += " MathJax_MenuLabel";
+      return [this.name];
+    }
+  });
+
+  /*************************************************************/
+  /*
+   *  A rule in a menu
+   */
+  MENU.ITEM.RULE = MENU.ITEM.Subclass({
+    Label: function (def,menu) {
+      delete def.onmouseover, delete def.onmouseout; delete def.onmousedown;
+      def.className += " MathJax_MenuRule";
+      return null;
+    }
+  });
+  
+  /*************************************************************/
+  /*************************************************************/
+
+  /*
+   *  Handle the ABOUT box
+   */
+  MENU.About = function () {
+    var HTMLCSS = OUTPUT["HTML-CSS"] || {fontInUse: ""};
+    var local = (HTMLCSS.webFonts ? "" : "local "), web = (HTMLCSS.webFonts ? " web" : "");
+    var font = (HTMLCSS.imgFonts ? "Image" : local+HTMLCSS.fontInUse+web) + " fonts";
+    if (font === "local  fonts" && OUTPUT.SVG) {font = "web SVG fonts"}
+    var jax = ["MathJax.js v"+MathJax.fileversion,["br"]];
+    jax.push(["div",{style:{"border-top":"groove 2px",margin:".25em 0"}}]);
+    MENU.About.GetJax(jax,MathJax.InputJax,"Input Jax");
+    MENU.About.GetJax(jax,MathJax.OutputJax,"Output Jax");
+    MENU.About.GetJax(jax,MathJax.ElementJax,"Element Jax");
+    jax.push(["div",{style:{"border-top":"groove 2px",margin:".25em 0"}}]);
+    MENU.About.GetJax(jax,MathJax.Extension,"Extension",true);
+    jax.push(["div",{style:{"border-top":"groove 2px",margin:".25em 0"}}],["center",{},[
+      HUB.Browser + " v"+HUB.Browser.version +
+      (HTMLCSS.webFonts && !HTMLCSS.imgFonts ? " \u2014 " + 
+        HTMLCSS.allowWebFonts.replace(/otf/,"woff or otf") + " fonts" : "")
+    ]]);
+    MENU.About.div = MENU.Background(MENU.About);
+    var about = HTML.addElement(MENU.About.div,"div",{
+      id: "MathJax_About"
+    },[
+      ["b",{style:{fontSize:"120%"}},["MathJax"]]," v"+MathJax.version,["br"],
+      "using "+font,["br"],["br"],
+      ["span",{style:{
+        display:"inline-block", "text-align":"left", "font-size":"80%",
+        "max-height":"20em", overflow:"auto", 
+        "background-color":"#E4E4E4", padding:".4em .6em", border:"1px inset"
+      }},jax],["br"],["br"],
+      ["a",{href:"http://www.mathjax.org/"},["www.mathjax.org";]],
+      ["img", {
+        src: CONFIG.closeImg,
+        style: {width:"21px", height:"21px", position:"absolute", top:".2em", right:".2em"},
+        onclick: MENU.About.Remove
+      }]
+    ]);
+    var doc = (document.documentElement||{});
+    var H = window.innerHeight || doc.clientHeight || doc.scrollHeight || 0;
+    if (MENU.prototype.msieAboutBug) {
+      about.style.width = "20em"; about.style.position = "absolute";
+      about.style.left = Math.floor((document.documentElement.scrollWidth - about.offsetWidth)/2)+"px";
+      about.style.top = (Math.floor((H-about.offsetHeight)/3)+document.body.scrollTop)+"px";
+    } else {
+      about.style.marginLeft = Math.floor(-about.offsetWidth/2)+"px";
+      about.style.top = Math.floor((H-about.offsetHeight)/3)+"px";
+    }
+  };
+  MENU.About.Remove = function (event) {
+    if (MENU.About.div) {document.body.removeChild(MENU.About.div); delete MENU.About.div}
+  };
+  MENU.About.GetJax = function (jax,JAX,type,noTypeCheck) {
+    var info = [];
+    for (var id in JAX) {if (JAX.hasOwnProperty(id) && JAX[id]) {
+      if ((noTypeCheck && JAX[id].version) || (JAX[id].isa && JAX[id].isa(JAX)))
+        {info.push((JAX[id].id||id)+" "+type+" v"+JAX[id].version)}
+    }}
+    info.sort();
+    for (var i = 0, m = info.length; i < m; i++) {jax.push(info[i],["br"])}
+    return jax;
+  };
+
+  
+  /*
+   *  Handle the MathJax HELP menu
+   */
+  MENU.Help = function () {
+    window.open(CONFIG.helpURL,"MathJaxHelp");
+  };
+  
+  /*
+   *  Handle showing of element's source
+   */
+  MENU.ShowSource = function (event) {
+    if (!event) {event = window.event}
+    var EVENT = {screenX:event.screenX, screenY:event.screenY};
+    if (!MENU.jax) return;
+    if (this.format === "MathML") {
+      var MML = MathJax.ElementJax.mml;
+      if (MML && typeof(MML.mbase.prototype.toMathML) !== "undefined") {
+        // toMathML() can call MathJax.Hub.RestartAfter, so trap errors and check
+        try {MENU.ShowSource.Text(MENU.jax.root.toMathML(),event)} catch (err) {
+          if (!err.restart) {throw err}
+          CALLBACK.After([this,MENU.ShowSource,EVENT],err.restart);
+        }
+      } else if (!AJAX.loadingToMathML) {
+        AJAX.loadingToMathML = true;
+        MENU.ShowSource.Window(event); // WeBKit needs to open window on click event
+        CALLBACK.Queue(
+          AJAX.Require("[MathJax]/extensions/toMathML.js"),
+          function () {
+            delete AJAX.loadingToMathML;
+            if (!MML.mbase.prototype.toMathML) {MML.mbase.prototype.toMathML = function () {}}
+          },
+          [this,MENU.ShowSource,EVENT]  // call this function again
+        );
+        return;
+      }
+    } else {
+      if (MENU.jax.originalText == null) {alert("No original form available"); return}
+      MENU.ShowSource.Text(MENU.jax.originalText,event);
+    }
+  };
+  MENU.ShowSource.Window = function (event) {
+    if (!MENU.ShowSource.w) {
+      var def = [], DEF = CONFIG.windowSettings;
+      for (var id in DEF) {if (DEF.hasOwnProperty(id)) {def.push(id+"="+DEF[id])}}
+      MENU.ShowSource.w = window.open("","_blank",def.join(","));
+    }
+    return MENU.ShowSource.w;
+  };
+  MENU.ShowSource.Text = function (text,event) {
+    var w = MENU.ShowSource.Window(event); delete MENU.ShowSource.w;
+    text = text.replace(/^\s*/,"").replace(/\s*$/,"");
+    text = text.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");
+    if (MENU.isMobile) {
+      w.document.open();
+      w.document.write("<html><head><meta name='viewport' content='width=device-width, initial-scale=1.0' /><title>MathJax Equation Source</title></head><body style='font-size:85%'>");
+      w.document.write("<pre>"+text+"</pre>");
+      w.document.write("<hr><input type='button' value='Close' onclick='window.close()' />");
+      w.document.write("</body></html>");
+      w.document.close();
+    } else {
+      w.document.open();
+      w.document.write("<html><head><title>MathJax Equation Source</title></head><body style='font-size:85%'>");
+      w.document.write("<table><tr><td><pre>"+text+"</pre></td></tr></table>");
+      w.document.write("</body></html>");
+      w.document.close();
+      var table = w.document.body.firstChild;
+      setTimeout(function () {
+        var H = (w.outerHeight-w.innerHeight)||30, W = (w.outerWidth-w.innerWidth)||30, x, y;
+        W = Math.max(100,Math.min(Math.floor(.5*screen.width),table.offsetWidth+W+25));
+        H = Math.max(40,Math.min(Math.floor(.5*screen.height),table.offsetHeight+H+25));
+        w.resizeTo(W,H);
+        if (event && event.screenX != null) {
+          x = Math.max(0,Math.min(event.screenX-Math.floor(W/2), screen.width-W-20));
+          y = Math.max(0,Math.min(event.screenY-Math.floor(H/2), screen.height-H-20));
+          w.moveTo(x,y);
+        }
+      },50);
+    }
+  };
+  
+  /*
+   *  Handle rescaling all the math
+   */
+  MENU.Scale = function () {
+    var HTMLCSS = OUTPUT["HTML-CSS"], nMML = OUTPUT.NativeMML, SVG = OUTPUT.SVG;
+    var SCALE = (HTMLCSS||nMML||SVG||{config:{scale:100}}).config.scale;
+    var scale = prompt("Scale all mathematics (compared to surrounding text) by",SCALE+"%");
+    if (scale) {
+      if (scale.match(/^\s*\d+(\.\d*)?\s*%?\s*$/)) {
+        scale = parseFloat(scale);
+        if (scale) {
+          if (scale !== SCALE) {
+            if (HTMLCSS) {HTMLCSS.config.scale = scale}
+            if (nMML)    {nMML.config.scale = scale}
+            if (SVG)     {SVG.config.scale = scale}
+            MENU.cookie.scale = scale;
+            MENU.saveCookie(); HUB.Reprocess();
+          }
+        } else {alert("The scale should not be zero")}
+      } else {alert("The scale should be a percentage (e.g., 120%)")}
+    }
+  };
+  
+  /*
+   *  Handle loading the zoom code
+   */
+  MENU.Zoom = function () {
+    if (!MathJax.Extension.MathZoom) {AJAX.Require("[MathJax]/extensions/MathZoom.js")}
+  };
+  
+  /*
+   *  Handle changing the renderer
+   */
+  MENU.Renderer = function () {
+    var jax = HUB.outputJax["jax/mml"];
+    if (jax[0] !== CONFIG.settings.renderer) {
+      var BROWSER = HUB.Browser, message, MESSAGE = MENU.Renderer.Messages, warned;
+      //
+      //  Check that the new renderer is appropriate for the browser
+      //
+      switch (CONFIG.settings.renderer) {
+        case "NativeMML":
+          if (!CONFIG.settings.warnedMML) {
+            if (BROWSER.isChrome || (BROWSER.isSafari && !BROWSER.versionAtLeast("5.0"))) {message = MESSAGE.MML.WebKit}
+            else if (BROWSER.isMSIE) {if (!BROWSER.hasMathPlayer) {message = MESSAGE.MML.MSIE}}
+            else {message = MESSAGE.MML[BROWSER]}
+            warned = "warnedMML";
+          }
+          break;
+
+        case "SVG":
+          if (!CONFIG.settings.warnedSVG) {
+            if (BROWSER.isMSIE && !isIE9) {message = MESSAGE.SVG.MSIE}
+          }
+          break;  
+      }
+      if (message) {
+        message += "\n\nSwitch the renderer anyway?\n\n" +
+                    "(Press OK to switch, CANCEL to continue with the current renderer)";
+        MENU.cookie.renderer = jax[0].id; MENU.saveCookie(); if (!confirm(message)) {return}
+        if (warned) {MENU.cookie[warned]  = CONFIG.settings[warned] = true}
+        MENU.cookie.renderer = CONFIG.settings.renderer; MENU.saveCookie();
+      }
+      HUB.Queue(
+        ["setRenderer",HUB,CONFIG.settings.renderer,"jax/mml"],
+        ["Rerender",HUB]
+      );
+    }
+  };
+  MENU.Renderer.Messages = {
+    MML: {
+      WebKit:  "Your browser doesn't seem to support MathML natively, " +
+               "so switching to MathML output may cause the mathematics " +
+               "on the page to become unreadable.",
+
+      MSIE:    "Internet Explorer requires the MathPlayer plugin " +
+               "in order to process MathML output.",
+      
+      Opera:   "Opera's support for MathML is limited, so switching to " +
+               "MathML output may cause some expressions to render poorly.",
+
+      Safari: "Your browser's native MathML does not implement all the features " +
+               "used by MathJax, so some expressions may not render properly.",
+
+      Firefox: "Your browser's native MathML does not implement all the features " +
+               "used by MathJax, so some expressions may not render properly."
+    },
+    
+    SVG: {
+      MSIE:    "SVG is not implemented in Internet Explorer prior to " +
+               "IE9, or when the browser is emulating IE8 or below. " +
+               "Switching to SVG output will cause the mathemtics to " +
+               "not display properly."
+    }
+  };
+  
+  /*
+   *  Handle setting the HTMLCSS fonts
+   */
+  MENU.Font = function () {
+    var HTMLCSS = OUTPUT["HTML-CSS"]; if (!HTMLCSS) return;
+    document.location.reload();
+  };
+  
+  /*
+   *  Handle setting MathPlayer events
+   */
+  MENU.MPEvents = function (item) {
+    var discoverable = CONFIG.settings.discoverable,
+        MESSAGE = MENU.MPEvents.Messages;
+    if (!isIE9) {
+      if (CONFIG.settings.mpMouse && !confirm(MESSAGE.IE8warning)) {
+        delete MENU.cookie.mpContext; delete CONFIG.settings.mpContext;
+        delete MENU.cookie.mpMouse; delete CONFIG.settings.mpMouse;
+        MENU.saveCookie();
+        return;
+      }
+      CONFIG.settings.mpContext = CONFIG.settings.mpMouse;
+      MENU.cookie.mpContext = MENU.cookie.mpMouse = CONFIG.settings.mpMouse;
+      MENU.saveCookie();
+      MathJax.Hub.Queue(["Rerender",MathJax.Hub])
+    } else if (!discoverable && item.name === "Menu Events" && CONFIG.settings.mpContext) {
+      alert(MESSAGE.IE9warning);
+    }
+  };
+  MENU.MPEvents.Messages = {
+    IE8warning:
+      "This will disable the MathJax menu and zoom features, " +
+      "but you can Alt-Click on an expression to obtain the MathJax " +
+      "menu instead.\n\nReally change the MathPlayer settings?",
+
+    IE9warning:
+      "The MathJax contextual menu will be disabled, but you can " +
+      "Alt-Click on an expression to obtain the MathJax menu instead."
+  };
+
+  /*************************************************************/
+  /*************************************************************/
+
+  HUB.Browser.Select({
+    MSIE: function (browser) {
+      var quirks = (document.compatMode === "BackCompat");
+      var isIE8 = browser.versionAtLeast("8.0") && document.documentMode > 7;
+      MENU.Augment({
+        margin: 20,
+        msieBackgroundBug: (document.documentMode < 9),
+        msieFixedPositionBug: (quirks || !isIE8),
+        msieAboutBug: quirks
+      });
+      if (isIE9) {
+        delete CONFIG.styles["#MathJax_About"].filter;
+        delete CONFIG.styles[".MathJax_Menu"].filter;
+      }
+    },
+    Firefox: function (browser) {
+      MENU.skipMouseover = browser.isMobile && browser.versionAtLeast("6.0");
+      MENU.skipMousedown = browser.isMobile;
+    }
+  });
+  MENU.isMobile      = HUB.Browser.isMobile;
+  MENU.noContextMenu = HUB.Browser.noContextMenu;
+
+  /*************************************************************/
+
+  HUB.Register.StartupHook("End Config",function () {
+
+    /*
+     *  Get the menu settings from the HUB (which includes the
+     *  data from the cookie already), and add the format, if
+     *  it wasn't set in the cookie.
+     */
+    CONFIG.settings = HUB.config.menuSettings;
+    if (typeof(CONFIG.settings.showRenderer) !== "undefined") {CONFIG.showRenderer = CONFIG.settings.showRenderer}
+    if (typeof(CONFIG.settings.showFontMenu) !== "undefined") {CONFIG.showFontMenu = CONFIG.settings.showFontMenu}
+    if (typeof(CONFIG.settings.showContext)  !== "undefined") {CONFIG.showContext  = CONFIG.settings.showContext}
+    MENU.getCookie();
+
+    /*
+     *  The main menu
+     */
+    MENU.menu = MENU(
+      ITEM.SUBMENU("Show Math As",
+        ITEM.COMMAND("MathML Code",    MENU.ShowSource, {nativeTouch: true, format: "MathML"}),
+        ITEM.COMMAND("Original Form",  MENU.ShowSource, {nativeTouch: true}),
+        ITEM.RULE(),
+        ITEM.CHECKBOX("Show TeX hints in MathML", "texHints")
+      ),
+      ITEM.RULE(),
+      ITEM.SUBMENU("Math Settings",
+        ITEM.SUBMENU("Zoom Trigger",
+          ITEM.RADIO("Hover",         "zoom", {action: MENU.Zoom}),
+          ITEM.RADIO("Click",         "zoom", {action: MENU.Zoom}),
+          ITEM.RADIO("Double-Click",  "zoom", {action: MENU.Zoom}),
+          ITEM.RADIO("No Zoom",       "zoom", {value: "None"}),
+          ITEM.RULE(),
+          ITEM.LABEL("Trigger Requires:"),
+          ITEM.CHECKBOX((HUB.Browser.isMac ? "Option" : "Alt"), "ALT"),
+          ITEM.CHECKBOX("Command",    "CMD",  {hidden: !HUB.Browser.isMac}),
+          ITEM.CHECKBOX("Control",    "CTRL", {hidden:  HUB.Browser.isMac}),
+          ITEM.CHECKBOX("Shift",      "Shift")
+        ),
+        ITEM.SUBMENU("Zoom Factor",
+          ITEM.RADIO("125%", "zscale"),
+          ITEM.RADIO("133%", "zscale"),
+          ITEM.RADIO("150%", "zscale"),
+          ITEM.RADIO("175%", "zscale"),
+          ITEM.RADIO("200%", "zscale"),
+          ITEM.RADIO("250%", "zscale"),
+          ITEM.RADIO("300%", "zscale"),
+          ITEM.RADIO("400%", "zscale")
+        ),
+        ITEM.RULE(),
+        ITEM.SUBMENU("Math Renderer",         {hidden:!CONFIG.showRenderer},
+          ITEM.RADIO("HTML-CSS",  "renderer", {action: MENU.Renderer}),
+          ITEM.RADIO("MathML",    "renderer", {action: MENU.Renderer, value:"NativeMML"}),
+          ITEM.RADIO("SVG",       "renderer", {action: MENU.Renderer})
+        ),
+        ITEM.SUBMENU("MathPlayer",            {hidden:!HUB.Browser.isMSIE ||
+                                                      !CONFIG.showMathPlayer,
+                                               disabled:!HUB.Browser.hasMathPlayer},
+          ITEM.LABEL("Let MathPlayer Handle:"),
+          ITEM.CHECKBOX("Menu Events",    "mpContext", {action: MENU.MPEvents, hidden:!isIE9}),
+          ITEM.CHECKBOX("Mouse Events",   "mpMouse",   {action: MENU.MPEvents, hidden:!isIE9}),
+          ITEM.CHECKBOX("Mouse and Menu Events", "mpMouse", {action: MENU.MPEvents, hidden:isIE9})
+        ),
+        ITEM.SUBMENU("Font Preference",       {hidden:!CONFIG.showFontMenu},
+          ITEM.LABEL("For HTML-CSS:"),
+          ITEM.RADIO("Auto",          "font", {action: MENU.Font}),
+          ITEM.RULE(),
+          ITEM.RADIO("TeX (local)",   "font", {action: MENU.Font}),
+          ITEM.RADIO("TeX (web)",     "font", {action: MENU.Font}),
+          ITEM.RADIO("TeX (image)",   "font", {action: MENU.Font}),
+          ITEM.RULE(),
+          ITEM.RADIO("STIX (local)",  "font", {action: MENU.Font})
+        ),
+        ITEM.SUBMENU("Contextual Menu",       {hidden:!CONFIG.showContext},
+          ITEM.RADIO("MathJax", "context"),
+          ITEM.RADIO("Browser", "context")
+        ),
+        ITEM.COMMAND("Scale All Math ...",MENU.Scale),
+        ITEM.RULE().With({hidden:!CONFIG.showDiscoverable, name:"discover_rule"}),
+        ITEM.CHECKBOX("Highlight on Hover", "discoverable", {hidden:!CONFIG.showDiscoverable})
+      ),
+      ITEM.RULE(),
+      ITEM.COMMAND("About MathJax",MENU.About),
+      ITEM.COMMAND("MathJax Help",MENU.Help)
+    );
+
+    if (MENU.isMobile) {
+      (function () {
+        var settings = CONFIG.settings;
+        var trigger = MENU.menu.Find("Math Settings","Zoom Trigger").menu;
+        trigger.items[0].disabled = trigger.items[1].disabled = true;
+        if (settings.zoom === "Hover" || settings.zoom == "Click") {settings.zoom = "None"}
+        trigger.items = trigger.items.slice(0,4);
+    
+        if (navigator.appVersion.match(/[ (]Android[) ]/)) {
+          MENU.ITEM.SUBMENU.Augment({marker: "\u00BB"});
+        }
+      })();
+    }
+
+  });
+
+  MENU.showRenderer = function (show) {
+    MENU.cookie.showRenderer = CONFIG.showRenderer = show; MENU.saveCookie();
+    MENU.menu.Find("Math Settings","Math Renderer").hidden = !show;
+  };
+  MENU.showMathPlayer = function (show) {
+    MENU.cookie.showMathPlayer = CONFIG.showMathPlayer = show; MENU.saveCookie();
+    MENU.menu.Find("Math Settings","MathPlayer").hidden = !show;
+  };
+  MENU.showFontMenu = function (show) {
+    MENU.cookie.showFontMenu = CONFIG.showFontMenu = show; MENU.saveCookie();
+    MENU.menu.Find("Math Settings","Font Preference").hidden = !show;
+  };
+  MENU.showContext = function (show) {
+    MENU.cookie.showContext = CONFIG.showContext = show; MENU.saveCookie();
+    MENU.menu.Find("Math Settings","Contextual Menu").hidden = !show;
+  };
+  MENU.showDiscoverable = function (show) {
+    MENU.cookie.showContext = CONFIG.showContext = show; MENU.saveCookie();
+    MENU.menu.Find("Math Settings","Highlight on Hover").hidden = !show;
+    MENU.menu.Find("Math Settings","discover_rule").hidden = !show;
+  };
+  
+  MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
+    if (!MathJax.OutputJax["HTML-CSS"].config.imageFont)
+      {MENU.menu.Find("Math Settings","Font Preference","TeX (image)").disabled = true}
+  });
+  
+  /*************************************************************/
+
+  CALLBACK.Queue(
+    HUB.Register.StartupHook("End Config",{}), // wait until config is complete
+    ["getImages",MENU],
+    ["Styles",AJAX,CONFIG.styles],
+    ["Post",HUB.Startup.signal,"MathMenu Ready"],
+    ["loadComplete",AJAX,"[MathJax]/extensions/MathMenu.js"]
+  );
+
+})(MathJax.Hub,MathJax.HTML,MathJax.Ajax,MathJax.CallBack,MathJax.OutputJax);
diff --git a/data/mathjax/unpacked/extensions/MathZoom.js b/data/mathjax/unpacked/extensions/MathZoom.js
new file mode 100644
index 0000000..221361b
--- /dev/null
+++ b/data/mathjax/unpacked/extensions/MathZoom.js
@@ -0,0 +1,316 @@
+/*************************************************************
+ *
+ *  MathJax/extensions/MathZoom.js
+ *  
+ *  Implements the zoom feature for enlarging math expressions.  It is
+ *  loaded automatically when the Zoom menu selection changes from "None".
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2010-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+(function (HUB,HTML,AJAX,HTMLCSS,nMML) {
+  var VERSION = "2.1";
+  
+  var CONFIG = HUB.CombineConfig("MathZoom",{
+    styles: {
+      //
+      //  The styles for the MathZoom display box
+      //
+      "#MathJax_Zoom": {
+        position:"absolute", "background-color":"#F0F0F0", overflow:"auto",
+        display:"block", "z-index":301, padding:".5em", border:"1px solid black", margin:0,
+        "font-weight":"normal", "font-style":"normal",
+        "text-align":"left", "text-indent":0, "text-transform":"none",
+        "line-height":"normal", "letter-spacing":"normal", "word-spacing":"normal",
+        "word-wrap":"normal", "white-space":"nowrap", "float":"none",
+        "box-shadow":"5px 5px 15px #AAAAAA",         // Opera 10.5 and IE9
+        "-webkit-box-shadow":"5px 5px 15px #AAAAAA", // Safari 3 and Chrome
+        "-moz-box-shadow":"5px 5px 15px #AAAAAA",    // Forefox 3.5
+        "-khtml-box-shadow":"5px 5px 15px #AAAAAA",  // Konqueror
+        filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')" // IE
+      },
+      
+      //
+      //  The styles for the hidden overlay (should not need to be adjusted by the page author)
+      //
+      "#MathJax_ZoomOverlay": {
+        position:"absolute", left:0, top:0, "z-index":300, display:"inline-block",
+        width:"100%", height:"100%", border:0, padding:0, margin:0,
+        "background-color":"white", opacity:0, filter:"alpha(opacity=0)"
+      },
+      
+      "#MathJax_ZoomEventTrap": {
+        position:"absolute", left:0, top:0, "z-index":302,
+        display:"inline-block", border:0, padding:0, margin:0,
+        "background-color":"white", opacity:0, filter:"alpha(opacity=0)"
+      }
+    }
+  });
+  
+  var FALSE, HOVER, EVENT;
+  MathJax.Hub.Register.StartupHook("MathEvents Ready",function () {
+    EVENT = MathJax.Extension.MathEvents.Event;
+    FALSE = MathJax.Extension.MathEvents.Event.False;
+    HOVER = MathJax.Extension.MathEvents.Hover;
+  });
+
+  /*************************************************************/
+
+  var ZOOM = MathJax.Extension.MathZoom = {
+    version: VERSION,
+    settings: HUB.config.menuSettings,
+    scrollSize: 18,    // width of scrool bars
+
+    //
+    //  Process events passed from output jax
+    //
+    HandleEvent: function (event,type,math) {
+      if (ZOOM.settings.CTRL  && !event.ctrlKey)  return true;
+      if (ZOOM.settings.ALT   && !event.altKey)   return true;
+      if (ZOOM.settings.CMD   && !event.metaKey)  return true;
+      if (ZOOM.settings.Shift && !event.shiftKey) return true;
+      if (!ZOOM[type]) return true;
+      return ZOOM[type](event,math);
+    },
+    
+    //
+    //  Zoom on click
+    //
+    Click: function (event,math) {
+      if (this.settings.zoom === "Click") {return this.Zoom(event,math)}
+    },
+    
+    //
+    //  Zoom on double click
+    //
+    DblClick: function (event,math) {
+      if (this.settings.zoom === "Double-Click") {return this.Zoom(event,math)}
+    },
+    
+    //
+    //  Zoom on hover (called by MathEvents.Hover)
+    //
+    Hover: function (event,math) {
+      if (this.settings.zoom === "Hover") {this.Zoom(event,math); return true}
+      return false;
+    },
+    
+    
+    //
+    //  Handle the actual zooming
+    //
+    Zoom: function (event,math) {
+      //
+      //  Remove any other zoom and clear timers
+      //
+      this.Remove(); HOVER.ClearHoverTimer(); EVENT.ClearSelection();
+
+      //
+      //  Find the jax
+      //
+      var JAX = MathJax.OutputJax[math.jaxID];
+      var jax = JAX.getJaxFromMath(math);
+      if (jax.hover) {HOVER.UnHover(jax)}
+
+      //
+      //  Create the DOM elements for the zoom box
+      //
+      var Mw = Math.floor(.85*document.body.clientWidth),
+          Mh = Math.floor(.85*Math.max(document.body.clientHeight,document.documentElement.clientHeight));
+      var div = HTML.Element(
+        "span",{
+            style: {position:"relative", display:"inline-block", height:0, width:0},
+            id:"MathJax_ZoomFrame"
+        },[
+          ["span",{id:"MathJax_ZoomOverlay", onmousedown:this.Remove}],
+          ["span",{
+            id:"MathJax_Zoom", onclick:this.Remove,
+            style:{
+              visibility:"hidden", fontSize:this.settings.zscale,
+              "max-width":Mw+"px", "max-height":Mh+"px"
+            }
+          },[["span",{style:{display:"inline-block", "white-space":"nowrap"}}]]
+        ]]
+      );
+      var zoom = div.lastChild, span = zoom.firstChild, overlay = div.firstChild;
+      math.parentNode.insertBefore(div,math); math.parentNode.insertBefore(math,div); // put div after math
+      if (span.addEventListener) {span.addEventListener("mousedown",this.Remove,true)}
+      
+      if (this.msieTrapEventBug) {
+        var trap = HTML.Element("span",{id:"MathJax_ZoomEventTrap", onmousedown:this.Remove});
+        div.insertBefore(trap,zoom);
+      }
+
+      //
+      //  Display the zoomed math
+      //
+      if (this.msieZIndexBug) {
+        //  MSIE doesn't do z-index properly, so move the div to the document.body,
+        //  and use an image as a tracker for the usual position
+        var tracker = HTML.addElement(document.body,"img",{
+          src:"about:blank", id:"MathJax_ZoomTracker", width:0, height:0,
+          style:{width:0, height:0, position:"relative"}
+        });
+        div.style.position = "relative";
+        div.style.zIndex = CONFIG.styles["#MathJax_ZoomOverlay"]["z-index"];
+        div = tracker;
+      }
+
+      var bbox = JAX.Zoom(jax,span,math,Mw,Mh);
+      
+      //
+      //  Fix up size and position for browsers with bugs (IE)
+      //
+      if (this.msiePositionBug) {
+        if (this.msieSizeBug) 
+          {zoom.style.height = bbox.zH+"px"; zoom.style.width = bbox.zW+"px"} // IE8 gets the dimensions completely wrong
+        if (zoom.offsetHeight > Mh) {zoom.style.height = Mh+"px"; zoom.style.width = (bbox.zW+this.scrollSize)+"px"}  // IE doesn't do max-height?
+        if (zoom.offsetWidth  > Mw) {zoom.style.width  = Mw+"px"; zoom.style.height = (bbox.zH+this.scrollSize)+"px"}
+      }
+      if (this.operaPositionBug) {zoom.style.width = Math.min(Mw,bbox.zW)+"px"}  // Opera gets width as 0?
+      if (zoom.offsetWidth < Mw && zoom.offsetHeight < Mh) {zoom.style.overflow = "visible"}
+      this.Position(zoom,bbox);
+      if (this.msieTrapEventBug) {
+        trap.style.height = zoom.clientHeight+"px"; trap.style.width = zoom.clientWidth+"px";
+        trap.style.left = (parseFloat(zoom.style.left)+zoom.clientLeft)+"px";
+        trap.style.top = (parseFloat(zoom.style.top)+zoom.clientTop)+"px";
+      }
+      zoom.style.visibility = "";
+
+      //
+      //  Add event handlers
+      //
+      if (this.settings.zoom === "Hover") {overlay.onmouseover = this.Remove}
+      if (window.addEventListener) {addEventListener("resize",this.Resize,false)}
+      else if (window.attachEvent) {attachEvent("onresize",this.Resize)}
+      else {this.onresize = window.onresize; window.onresize = this.Resize}
+      
+      //
+      //  Let others know about the zoomed math
+      //
+      HUB.signal.Post(["math zoomed",jax]);
+      
+      //
+      //  Canel further actions
+      //
+      return FALSE(event);
+    },
+    
+    //
+    //  Set the position of the zoom box and overlay
+    //
+    Position: function (zoom,bbox) {
+      var XY = this.Resize(), x = XY.x, y = XY.y, W = bbox.mW;
+      var dx = -W-Math.floor((zoom.offsetWidth-W)/2), dy = bbox.Y;
+      zoom.style.left = Math.max(dx,10-x)+"px"; zoom.style.top = Math.max(dy,10-y)+"px";
+      if (!ZOOM.msiePositionBug) {ZOOM.SetWH()} // refigure overlay width/height
+    },
+    
+    //
+    //  Handle resizing of overlay while zoom is displayed
+    //
+    Resize: function (event) {
+      if (ZOOM.onresize) {ZOOM.onresize(event)}
+      var x = 0, y = 0, obj,
+          div = document.getElementById("MathJax_ZoomFrame"),
+          overlay = document.getElementById("MathJax_ZoomOverlay");
+      obj = div; while (obj.offsetParent) {x += obj.offsetLeft; obj = obj.offsetParent}
+      if (ZOOM.operaPositionBug) {div.style.border = "1px solid"}  // to get vertical position right
+      obj = div; while (obj.offsetParent) {y += obj.offsetTop; obj = obj.offsetParent}
+      if (ZOOM.operaPositionBug) {div.style.border = ""}
+      overlay.style.left = (-x)+"px"; overlay.style.top = (-y)+"px";
+      if (ZOOM.msiePositionBug) {setTimeout(ZOOM.SetWH,0)} else {ZOOM.SetWH()}
+      return {x:x, y:y};
+    },
+    SetWH: function () {
+      var overlay = document.getElementById("MathJax_ZoomOverlay");
+      overlay.style.width = overlay.style.height = "1px"; // so scrollWidth/Height will be right below
+      var doc = document.documentElement || document.body;
+      overlay.style.width = doc.scrollWidth + "px";
+      overlay.style.height = Math.max(doc.clientHeight,doc.scrollHeight) + "px";
+    },
+    
+    //
+    //  Remove zoom display and event handlers
+    //
+    Remove: function (event) {
+      var div = document.getElementById("MathJax_ZoomFrame");
+      if (div) {
+        var JAX = MathJax.OutputJax[div.previousSibling.jaxID];
+        var jax = JAX.getJaxFromMath(div.previousSibling);
+        HUB.signal.Post(["math unzoomed",jax]);
+        div.parentNode.removeChild(div);
+        div = document.getElementById("MathJax_ZoomTracker");
+        if (div) {div.parentNode.removeChild(div)}
+        if (ZOOM.operaRefreshBug) {
+	  // force a redisplay of the page
+	  // (Opera doesn't refresh properly after the zoom is removed)
+          var overlay = HTML.addElement(document.body,"div",{
+            style:{position:"fixed", left:0, top:0, width:"100%", height:"100%",
+                   backgroundColor:"white", opacity:0},
+            id: "MathJax_OperaDiv"
+          });
+          document.body.removeChild(overlay);
+        }
+        if (window.removeEventListener) {removeEventListener("resize",ZOOM.Resize,false)}
+        else if (window.detachEvent) {detachEvent("onresize",ZOOM.Resize)}
+        else {window.onresize = ZOOM.onresize; delete ZOOM.onresize}
+      }
+      return FALSE(event);
+    }
+    
+  };
+  
+  
+  /*************************************************************/
+
+  HUB.Browser.Select({
+    MSIE: function (browser) {
+      var mode  = (document.documentMode || 0);
+      var isIE9 = (mode >= 9);
+      ZOOM.msiePositionBug = !isIE9;
+      ZOOM.msieSizeBug = browser.versionAtLeast("7.0") &&
+        (!document.documentMode || mode === 7 || mode === 8);
+      ZOOM.msieZIndexBug = (mode <= 7);
+      ZOOM.msieInlineBlockAlignBug = (mode <= 7);
+      ZOOM.msieTrapEventBug = !window.addEventListener;
+      if (document.compatMode === "BackCompat") {ZOOM.scrollSize = 52} // don't know why this is so far off
+      if (isIE9) {delete CONFIG.styles["#MathJax_Zoom"].filter}
+    },
+    
+    Opera: function (browser) {
+      ZOOM.operaPositionBug = true;
+      ZOOM.operaRefreshBug = true;
+    }
+  });
+  
+  ZOOM.topImg = (ZOOM.msieInlineBlockAlignBug ?
+    HTML.Element("img",{style:{width:0,height:0,position:"relative"},src:"about:blank"}) :
+    HTML.Element("span",{style:{width:0,height:0,display:"inline-block"}})
+  );
+  if (ZOOM.operaPositionBug || ZOOM.msieTopBug) {ZOOM.topImg.style.border="1px solid"}
+
+  /*************************************************************/
+
+  MathJax.Callback.Queue(
+    ["StartupHook",MathJax.Hub.Register,"Begin Styles",{}],
+    ["Styles",AJAX,CONFIG.styles],
+    ["Post",HUB.Startup.signal,"MathZoom Ready"],
+    ["loadComplete",AJAX,"[MathJax]/extensions/MathZoom.js"]
+  );
+
+})(MathJax.Hub,MathJax.HTML,MathJax.Ajax,MathJax.OutputJax["HTML-CSS"],MathJax.OutputJax.NativeMML);
diff --git a/data/mathjax/unpacked/extensions/mml2jax.js b/data/mathjax/unpacked/extensions/mml2jax.js
new file mode 100644
index 0000000..258e214
--- /dev/null
+++ b/data/mathjax/unpacked/extensions/mml2jax.js
@@ -0,0 +1,207 @@
+/*************************************************************
+ *
+ *  MathJax/extensions/mml2jax.js
+ *  
+ *  Implements the MathML to Jax preprocessor that locates <math> nodes
+ *  within the text of a document and replaces them with SCRIPT tags
+ *  for processing by MathJax.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2010-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+MathJax.Extension.mml2jax = {
+  version: "2.1",
+  config: {
+    preview: "alttext"      // Use the <math> element's alttext as the 
+                            //   preview.  Set to "none" for no preview,
+                            //   or set to an array specifying an HTML snippet
+                            //   to use a fixed preview for all math
+
+  },
+  MMLnamespace: "http://www.w3.org/1998/Math/MathML";,
+  
+  PreProcess: function (element) {
+    if (!this.configured) {
+      this.config = MathJax.Hub.CombineConfig("mml2jax",this.config);
+      if (this.config.Augment) {MathJax.Hub.Insert(this,this.config.Augment)}
+      this.InitBrowser();
+      this.configured = true;
+    }
+    if (typeof(element) === "string") {element = document.getElementById(element)}
+    if (!element) {element = document.body}
+    //
+    //  Handle all math tags with no namespaces
+    //
+    this.ProcessMathArray(element.getElementsByTagName("math"));
+    //
+    //  Handle math with namespaces in XHTML
+    //
+    if (element.getElementsByTagNameNS)
+      {this.ProcessMathArray(element.getElementsByTagNameNS(this.MMLnamespace,"math"))}
+    //
+    //  Handle math with namespaces in HTML
+    //
+    var i, m;
+    if (typeof(document.namespaces) !== "undefined") {
+      //
+      // IE namespaces are listed in document.namespaces
+      //
+      try {
+        for (i = 0, m = document.namespaces.length; i < m; i++) {
+          var ns = document.namespaces[i];
+          if (ns.urn === this.MMLnamespace)
+            {this.ProcessMathArray(element.getElementsByTagName(ns.name+":math"))}
+        }
+      } catch (err) {}
+    } else {
+      //
+      //  Everybody else
+      //  
+      var html = document.getElementsByTagName("html")[0];
+      if (html) {
+        for (i = 0, m = html.attributes.length; i < m; i++) {
+          var attr = html.attributes[i];
+          if (attr.nodeName.substr(0,6) === "xmlns:" && attr.nodeValue === this.MMLnamespace)
+            {this.ProcessMathArray(element.getElementsByTagName(attr.nodeName.substr(6)+":math"))}
+        }
+      }
+    }
+  },
+  
+  ProcessMathArray: function (math) {
+    var i;
+    if (math.length) {
+      if (this.MathTagBug) {
+        for (i = math.length-1; i >= 0; i--) {
+          if (math[i].nodeName === "MATH") {this.ProcessMathFlattened(math[i])}
+                                      else {this.ProcessMath(math[i])}
+        }
+      } else {
+        for (i = math.length-1; i >= 0; i--) {this.ProcessMath(math[i])}
+      }
+    }
+  },
+  
+  ProcessMath: function (math) {
+    var parent = math.parentNode;
+    var script = document.createElement("script");
+    script.type = "math/mml";
+    parent.insertBefore(script,math);
+    if (this.AttributeBug) {
+      var html = this.OuterHTML(math);
+      if (this.CleanupHTML) {
+        html = html.replace(/<\?import .*?>/i,"").replace(/<\?xml:namespace .*?\/>/i,"");
+        html = html.replace(/&nbsp;/g,"&#xA0;");
+      }
+      MathJax.HTML.setScript(script,html); parent.removeChild(math);
+    } else {
+      var span = MathJax.HTML.Element("span"); span.appendChild(math);
+      MathJax.HTML.setScript(script,span.innerHTML);
+    }
+    if (this.config.preview !== "none") {this.createPreview(math,script)}
+  },
+  
+  ProcessMathFlattened: function (math) {
+    var parent = math.parentNode;
+    var script = document.createElement("script");
+    script.type = "math/mml";
+    parent.insertBefore(script,math);
+    var mml = "", node, MATH = math;
+    while (math && math.nodeName !== "/MATH") {
+      node = math; math = math.nextSibling;
+      mml += this.NodeHTML(node);
+      node.parentNode.removeChild(node);
+    }
+    if (math && math.nodeName === "/MATH") {math.parentNode.removeChild(math)}
+    script.text = mml + "</math>";
+    if (this.config.preview !== "none") {this.createPreview(MATH,script)}
+  },
+  
+  NodeHTML: function (node) {
+    var html, i, m;
+    if (node.nodeName === "#text") {
+      html = this.quoteHTML(node.nodeValue);
+    } else if (node.nodeName === "#comment") {
+      html = "<!--" + node.nodeValue + "-->"
+    } else {
+      // In IE, outerHTML doesn't properly quote attributes, so quote them by hand
+      // In Opera, HTML special characters aren't quoted in attributes, so quote them
+      html = "<"+node.nodeName.toLowerCase();
+      for (i = 0, m = node.attributes.length; i < m; i++) {
+        var attribute = node.attributes[i];
+        if (attribute.specified) {
+          // Opera 11.5 beta turns xmlns into xmlns:xmlns, so put it back (*** check after 11.5 is out ***)
+          html += " "+attribute.nodeName.toLowerCase().replace(/xmlns:xmlns/,"xmlns")+"=";
+          var value = attribute.nodeValue; // IE < 8 doesn't properly set style by setAttributes
+          if (value == null && attribute.nodeName === "style" && node.style) {value = node.style.cssText}
+          html += '"'+this.quoteHTML(value)+'"';
+        }
+      }
+      html += ">";
+      // Handle internal HTML (possibly due to <semantics> annotation or missing </math>)
+      if (node.outerHTML != null && node.outerHTML.match(/(.<\/[A-Z]+>|\/>)$/)) {
+        for (i = 0, m = node.childNodes.length; i < m; i++)
+          {html += this.OuterHTML(node.childNodes[i])}
+        html += "</"+node.nodeName.toLowerCase()+">";
+      }
+    }
+    return html;
+  },
+  OuterHTML: function (node) {
+    if (node.nodeName.charAt(0) === "#") {return this.NodeHTML(node)}
+    if (!this.AttributeBug) {return node.outerHTML}
+    var html = this.NodeHTML(node);
+    for (var i = 0, m = node.childNodes.length; i < m; i++)
+      {html += this.OuterHTML(node.childNodes[i]);}
+    html += "</"+node.nodeName.toLowerCase()+">";
+    return html;
+  },
+  quoteHTML: function (string) {
+    if (string == null) {string = ""}
+    return string.replace(/&/g,"&#x26;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;");
+  },
+  
+  createPreview: function (math,script) {
+    var preview;
+    if (this.config.preview === "alttext") {
+      var text = math.getAttribute("alttext");
+      if (text != null) {preview = [this.filterPreview(text)]}
+    } else if (this.config.preview instanceof Array) {preview = this.config.preview}
+    if (preview) {
+      preview = MathJax.HTML.Element("span",{className:MathJax.Hub.config.preRemoveClass},preview);
+      script.parentNode.insertBefore(preview,script);
+    }
+  },
+  
+  filterPreview: function (text) {return text},
+  
+  InitBrowser: function () {
+    var test = MathJax.HTML.Element("span",{id:"<", className: "mathjax", innerHTML: "<math><mi>x</mi><mspace /></math>"});
+    var html = test.outerHTML || "";
+    this.AttributeBug = html !== "" && !(
+      html.match(/id="&lt;"/) &&           // "<" should convert to "&lt;"
+      html.match(/class="mathjax"/) &&     // IE leaves out quotes
+      html.match(/<\/math>/)               // Opera 9 drops tags after self-closing tags
+    );
+    this.MathTagBug = test.childNodes.length > 1;    // IE < 9 flattens unknown tags
+    this.CleanupHTML = MathJax.Hub.Browser.isMSIE;   // remove namespace and other added tags
+  }
+
+};
+
+MathJax.Hub.Register.PreProcessor(["PreProcess",MathJax.Extension.mml2jax]);
+MathJax.Ajax.loadComplete("[MathJax]/extensions/mml2jax.js");
diff --git a/data/mathjax/unpacked/jax/element/mml/jax.js b/data/mathjax/unpacked/jax/element/mml/jax.js
new file mode 100644
index 0000000..6ebfd81
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/jax.js
@@ -0,0 +1,1634 @@
+/*************************************************************
+ *
+ *  MathJax/jax/element/mml/jax.js
+ *  
+ *  Implements the MML ElementJax that holds the internal represetation
+ *  of the mathematics on the page.  Various InputJax will produce this
+ *  format, and the OutputJax will display it in various formats.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+MathJax.ElementJax.mml = MathJax.ElementJax({
+  mimeType: "jax/mml"
+},{
+  id: "mml",
+  version: "2.1",
+  directory: MathJax.ElementJax.directory + "/mml",
+  extensionDir: MathJax.ElementJax.extensionDir + "/mml",
+  optableDir: MathJax.ElementJax.directory + "/mml/optable"
+});
+
+MathJax.ElementJax.mml.Augment({
+  Init: function () {
+    if (arguments.length === 1 && arguments[0].type === "math") {this.root = arguments[0]}
+      else {this.root = MathJax.ElementJax.mml.math.apply(this,arguments)}
+    if (this.root.attr && this.root.attr.mode) {
+      if (!this.root.display && this.root.attr.mode === "display") {
+        this.root.display = "block";
+        this.root.attrNames.push("display");
+      }
+      delete this.root.attr.mode;
+      for (var i = 0, m = this.root.attrNames.length; i < m; i++) {
+        if (this.root.attrNames[i] === "mode") {this.root.attrNames.splice(i,1); break}
+      }
+    }
+  }
+},{
+  INHERIT: "_inherit_",
+  AUTO: "_auto_",
+  SIZE: {
+    INFINITY: "infinity",
+    SMALL: "small",
+    NORMAL: "normal",
+    BIG: "big"
+  },
+  COLOR: {
+    TRANSPARENT: "transparent"
+  },
+  VARIANT: {
+    NORMAL: "normal",
+    BOLD: "bold",
+    ITALIC: "italic",
+    BOLDITALIC: "bold-italic",
+    DOUBLESTRUCK: "double-struck",
+    FRAKTUR: "fraktur",
+    BOLDFRAKTUR: "bold-fraktur",
+    SCRIPT: "script",
+    BOLDSCRIPT: "bold-script",
+    SANSSERIF: "sans-serif",
+    BOLDSANSSERIF: "bold-sans-serif",
+    SANSSERIFITALIC: "sans-serif-italic",
+    SANSSERIFBOLDITALIC: "sans-serif-bold-italic",
+    MONOSPACE: "monospace",
+    INITIAL: "inital",
+    TAILED: "tailed",
+    LOOPED: "looped",
+    STRETCHED: "stretched",
+    CALIGRAPHIC: "-tex-caligraphic",
+    OLDSTYLE: "-tex-oldstyle"
+  },
+  FORM: {
+    PREFIX: "prefix",
+    INFIX: "infix",
+    POSTFIX: "postfix"
+  },
+  LINEBREAK: {
+    AUTO: "auto",
+    NEWLINE: "newline",
+    NOBREAK: "nobreak",
+    GOODBREAK: "goodbreak",
+    BADBREAK: "badbreak"
+  },
+  LINEBREAKSTYLE: {
+    BEFORE: "before",
+    AFTER: "after",
+    DUPLICATE: "duplicate",
+    INFIXLINBREAKSTYLE: "infixlinebreakstyle"
+  },
+  INDENTALIGN: {
+    LEFT: "left",
+    CENTER: "center",
+    RIGHT: "right",
+    AUTO: "auto",
+    ID: "id",
+    INDENTALIGN: "indentalign"
+  },
+  INDENTSHIFT: {
+    INDENTSHIFT: "indentshift"
+  },
+  LINETHICKNESS: {
+    THIN: "thin",
+    MEDIUM: "medium",
+    THICK: "thick"
+  },
+  NOTATION: {
+    LONGDIV: "longdiv",
+    ACTUARIAL: "actuarial",
+    RADICAL: "radical",
+    BOX: "box",
+    ROUNDEDBOX: "roundedbox",
+    CIRCLE: "circle",
+    LEFT: "left",
+    RIGHT: "right",
+    TOP: "top",
+    BOTTOM: "bottom",
+    UPDIAGONALSTRIKE: "updiagonalstrike",
+    DOWNDIAGONALSTRIKE: "downdiagonalstrike",
+    VERTICALSTRIKE: "verticalstrike",
+    HORIZONTALSTRIKE: "horizontalstrike",
+    MADRUWB: "madruwb"
+  },
+  ALIGN: {
+    TOP: "top",
+    BOTTOM: "bottom",
+    CENTER: "center",
+    BASELINE: "baseline",
+    AXIS: "axis",
+    LEFT: "left",
+    RIGHT: "right"
+  },
+  LINES: {
+    NONE: "none",
+    SOLID: "solid",
+    DASHED: "dashed"
+  },
+  SIDE: {
+    LEFT: "left",
+    RIGHT: "right",
+    LEFTOVERLAP: "leftoverlap",
+    RIGHTOVERLAP: "rightoverlap"
+  },
+  WIDTH: {
+    AUTO: "auto",
+    FIT: "fit"
+  },
+  ACTIONTYPE: {
+    TOGGLE: "toggle",
+    STATUSLINE: "statusline",
+    TOOLTIP: "tooltip",
+    INPUT: "input"
+  },
+  LENGTH: {
+    VERYVERYTHINMATHSPACE: "veryverythinmathspace",
+    VERYTHINMATHSPACE: "verythinmathspace",
+    THINMATHSPACE: "thinmathspace",
+    MEDIUMMATHSPACE: "mediummathspace",
+    THICKMATHSPACE: "thickmathspace",
+    VERYTHICKMATHSPACE: "verythickmathspace",
+    VERYVERYTHICKMATHSPACE: "veryverythickmathspace",
+    NEGATIVEVERYVERYTHINMATHSPACE: "negativeveryverythinmathspace",
+    NEGATIVEVERYTHINMATHSPACE: "negativeverythinmathspace",
+    NEGATIVETHINMATHSPACE: "negativethinmathspace",
+    NEGATIVEMEDIUMMATHSPACE: "negativemediummathspace",
+    NEGATIVETHICKMATHSPACE: "negativethickmathspace",
+    NEGATIVEVERYTHICKMATHSPACE: "negativeverythickmathspace",
+    NEGATIVEVERYVERYTHICKMATHSPACE: "negativeveryverythickmathspace"
+  },
+  OVERFLOW: {
+    LINBREAK: "linebreak",
+    SCROLL: "scroll",
+    ELIDE: "elide",
+    TRUNCATE: "truncate",
+    SCALE: "scale"
+  },
+  UNIT: {
+    EM: "em",
+    EX: "ex",
+    PX: "px",
+    IN: "in",
+    CM: "cm",
+    MM: "mm",
+    PT: "pt",
+    PC: "pc"
+  },
+  TEXCLASS: {
+    ORD:   0,
+    OP:    1,
+    BIN:   2,
+    REL:   3,
+    OPEN:  4,
+    CLOSE: 5,
+    PUNCT: 6,
+    INNER: 7,
+    VCENTER: 8,
+    NONE:   -1
+  },
+  TEXCLASSNAMES: ["ORD", "OP", "BIN", "REL", "OPEN", "CLOSE", "PUNCT", "INNER", "VCENTER"],
+  copyAttributes: {
+    fontfamily:true, fontsize:true, fontweight:true, fontstyle:true,
+    color:true, background:true,
+    id:true, "class":true, href:true, style:true
+  },
+  skipAttributes: {texClass: true, useHeight: true, texprimestyle: true},
+  copyAttributeNames: [
+    "fontfamily", "fontsize", "fontweight", "fontstyle",
+    "color", "background",
+    "id", "class", "href", "style"
+  ]
+});
+
+(function (MML) {
+
+  MML.mbase = MathJax.Object.Subclass({
+    type: "base", isToken: false,
+    defaults: {
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT
+    },
+    noInherit: {},
+    noInheritAttribute: {
+      texClass: true
+    },
+    linebreakContainer: false,
+    
+    Init: function () {
+      this.data = [];
+      if (this.inferRow && !(arguments.length === 1 && arguments[0].inferred))
+        {this.Append(MML.mrow().With({inferred: true}))}
+      this.Append.apply(this,arguments);
+    },
+    With: function (def) {
+      for (var id in def) {if (def.hasOwnProperty(id)) {this[id] = def[id]}}
+      return this;
+    },
+    Append: function () {
+      if (this.inferRow && this.data.length) {
+        this.data[0].Append.apply(this.data[0],arguments);
+      } else {
+        for (var i = 0, m = arguments.length; i < m; i++)
+          {this.SetData(this.data.length,arguments[i])}
+      }
+    },
+    SetData: function (i,item) {
+      if (item != null) {
+        if (!(item instanceof MML.mbase))
+          {item = (this.isToken ? MML.chars(item) : MML.mtext(item))}
+        item.parent = this;
+        item.setInherit(this.inheritFromMe ? this : this.inherit);
+      }
+      this.data[i] = item;
+    },
+    Parent: function () {
+      var parent = this.parent;
+      while (parent && parent.inferred) {parent = parent.parent}
+      return parent;
+    },
+    Get: function (name,nodefault) {
+      if (this[name] != null) {return this[name]}
+      if (this.attr && this.attr[name] != null) {return this.attr[name]}
+      // FIXME: should cache these values and get from cache
+      // (clear cache when appended to a new object?)
+      var parent = this.Parent();
+      if (parent && parent["adjustChild_"+name] != null)
+        {return (parent["adjustChild_"+name])(parent.childPosition(this))}
+      var obj = this.inherit; var root = obj;
+      while (obj) {
+        var value = obj[name]; if (value == null && obj.attr) {value = obj.attr[name]}
+        if (value != null && !obj.noInheritAttribute[name]) {
+          var noInherit = obj.noInherit[this.type];
+          if (!(noInherit && noInherit[name])) {return value}
+        }
+        root = obj; obj = obj.inherit;
+      }
+      if (!nodefault) {
+        if (this.defaults[name] === MML.AUTO) {return this.autoDefault(name)}
+        if (this.defaults[name] !== MML.INHERIT && this.defaults[name] != null)
+          {return this.defaults[name]}
+        if (root) {return root.defaults[name]}
+      }
+      return null;
+    },
+    hasValue: function (name) {return (this.Get(name,true) != null)},
+    getValues: function () {
+      var values = {};
+      for (var i = 0, m = arguments.length; i < m; i++)
+        {values[arguments[i]] = this.Get(arguments[i])}
+      return values;
+    },
+    adjustChild_scriptlevel:   function (i) {return this.Get("scriptlevel")},   // always inherit from parent
+    adjustChild_displaystyle:  function (i) {return this.Get("displaystyle")},  // always inherit from parent
+    adjustChild_texprimestyle: function (i) {return this.Get("texprimestyle")}, // always inherit from parent
+    childPosition: function (child) {
+      if (child.parent.inferred) {child = child.parent}
+      for (var i = 0, m = this.data.length; i < m; i++) {if (this.data[i] === child) {return i}}
+      return null;
+    },
+    setInherit: function (obj) {
+      if (obj !== this.inherit && this.inherit == null) {
+        this.inherit = obj;
+        for (var i = 0, m = this.data.length; i < m; i++) {
+          if (this.data[i] && this.data[i].setInherit) {this.data[i].setInherit(obj)}
+        }
+      }
+    },
+    setTeXclass: function (prev) {
+      this.getPrevClass(prev);
+      return (typeof(this.texClass) !== "undefined" ? this : prev);
+    },
+    getPrevClass: function (prev) {
+      if (prev) {
+        this.prevClass = prev.Get("texClass");
+        this.prevLevel = prev.Get("scriptlevel");
+      }
+    },
+    updateTeXclass: function (core) {
+      if (core) {
+        this.prevClass = core.prevClass; delete core.prevClass;
+        this.prevLevel = core.prevLevel; delete core.prevLevel;
+        this.texClass = core.Get("texClass");
+      }
+    },
+    texSpacing: function () {
+      var prev = (this.prevClass != null ? this.prevClass : MML.TEXCLASS.NONE);
+      var tex = (this.Get("texClass") || MML.TEXCLASS.ORD);
+      if (prev === MML.TEXCLASS.NONE || tex === MML.TEXCLASS.NONE) {return ""}
+      if (prev === MML.TEXCLASS.VCENTER) {prev = MML.TEXCLASS.ORD}
+      if (tex  === MML.TEXCLASS.VCENTER) {tex  = MML.TEXCLASS.ORD}
+      var space = this.TEXSPACE[prev][tex];
+      if (this.prevLevel > 0 && this.Get("scriptlevel") > 0 && space >= 0) {return ""}
+      return this.TEXSPACELENGTH[Math.abs(space)];
+    },
+    TEXSPACELENGTH:[
+      "",
+      MML.LENGTH.THINMATHSPACE,
+      MML.LENGTH.MEDIUMMATHSPACE,
+      MML.LENGTH.THICKMATHSPACE
+    ],
+    // See TeXBook Chapter 18 (p. 170)
+    TEXSPACE: [
+      [ 0,-1, 2, 3, 0, 0, 0, 1], // ORD
+      [-1,-1, 0, 3, 0, 0, 0, 1], // OP
+      [ 2, 2, 0, 0, 2, 0, 0, 2], // BIN
+      [ 3, 3, 0, 0, 3, 0, 0, 3], // REL
+      [ 0, 0, 0, 0, 0, 0, 0, 0], // OPEN
+      [ 0,-1, 2, 3, 0, 0, 0, 1], // CLOSE
+      [ 1, 1, 0, 1, 1, 1, 1, 1], // PUNCT
+      [ 1,-1, 2, 3, 1, 0, 1, 1]  // INNER
+    ],
+    autoDefault: function (name) {return ""},
+    isSpacelike: function () {return false},
+    isEmbellished: function () {return false},
+    Core: function () {return this},
+    CoreMO: function () {return this},
+    hasNewline: function () {
+      if (this.isEmbellished()) {return this.CoreMO().hasNewline()}
+      if (this.isToken || this.linebreakContainer) {return false}
+      for (var i = 0, m = this.data.length; i < m; i++) {
+        if (this.data[i] && this.data[i].hasNewline()) {return true}
+      }
+      return false;
+    },
+    array: function () {if (this.inferred) {return this.data} else {return [this]}},
+    toString: function () {return this.type+"("+this.data.join(",")+")"}
+  },{
+    childrenSpacelike: function () {
+      for (var i = 0, m = this.data.length; i < m; i++)
+        {if (!this.data[i].isSpacelike()) {return false}}
+      return true;
+    },
+    childEmbellished: function () {
+      return (this.data[0] && this.data[0].isEmbellished());
+    },
+    childCore: function () {return this.data[0]},
+    childCoreMO: function () {return (this.data[0] ? this.data[0].CoreMO() : null)},
+    setChildTeXclass: function (prev) {
+      if (this.data[0]) {
+        prev = this.data[0].setTeXclass(prev);
+        this.updateTeXclass(this.data[0]);
+      }
+      return prev;
+    },
+    setBaseTeXclasses: function (prev) {
+      this.getPrevClass(prev); this.texClass = null;
+      if (this.isEmbellished() || this.data[0].isa(MML.mi)) {
+        prev = this.data[0].setTeXclass(prev);
+        this.updateTeXclass(this.Core());
+      } else {if (this.data[0]) {this.data[0].setTeXclass()}; prev = this}
+      for (var i = 1, m = this.data.length; i < m; i++)
+        {if (this.data[i]) {this.data[i].setTeXclass()}}
+      return prev;
+    },
+    setSeparateTeXclasses: function (prev) {
+      this.getPrevClass(prev);
+      for (var i = 0, m = this.data.length; i < m; i++)
+        {if (this.data[i]) {this.data[i].setTeXclass()}}
+      if (this.isEmbellished()) {this.updateTeXclass(this.Core())}
+      return this;
+    }
+  });
+  
+  MML.mi = MML.mbase.Subclass({
+    type: "mi", isToken: true,
+    texClass: MML.TEXCLASS.ORD,
+    defaults: {
+      mathvariant: MML.AUTO,
+      mathsize: MML.INHERIT,
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT
+    },
+    autoDefault: function (name) {
+      if (name === "mathvariant") {
+        var mi = (this.data[0]||"").toString();
+        return (mi.length === 1 ||
+               (mi.length === 2 && mi.charCodeAt(0) >= 0xD800 && mi.charCodeAt(0) < 0xDC00) ?
+                  MML.VARIANT.ITALIC : MML.VARIANT.NORMAL);
+      }
+      return "";
+    },
+    setTeXclass: function (prev) {
+      this.getPrevClass(prev);
+      var name = this.data.join("");
+      if (name.length > 1 && name.match(/^[a-z][a-z0-9]*$/i) &&
+          this.texClass === MML.TEXCLASS.ORD) {
+        this.texClass = MML.TEXCLASS.OP;
+        this.autoOP = true;
+      }
+      return this;
+    }
+  });
+  
+  MML.mn = MML.mbase.Subclass({
+    type: "mn", isToken: true,
+    texClass: MML.TEXCLASS.ORD,
+    defaults: {
+      mathvariant: MML.INHERIT,
+      mathsize: MML.INHERIT,
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT
+    }
+  });
+  
+  MML.mo = MML.mbase.Subclass({
+    type: "mo", isToken: true,
+    defaults: {
+      mathvariant: MML.INHERIT,
+      mathsize: MML.INHERIT,
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      form: MML.AUTO,
+      fence: MML.AUTO,
+      separator: MML.AUTO,
+      lspace: MML.AUTO,
+      rspace: MML.AUTO,
+      stretchy: MML.AUTO,
+      symmetric: MML.AUTO,
+      maxsize: MML.AUTO,
+      minsize: MML.AUTO,
+      largeop: MML.AUTO,
+      movablelimits: MML.AUTO,
+      accent: MML.AUTO,
+      linebreak: MML.LINEBREAK.AUTO,
+      lineleading: MML.INHERIT,
+      linebreakstyle: MML.AUTO,
+      linebreakmultchar: MML.INHERIT,
+      indentalign: MML.INHERIT,
+      indentshift: MML.INHERIT,
+      indenttarget: MML.INHERIT,
+      indentalignfirst: MML.INHERIT,
+      indentshiftfirst: MML.INHERIT,
+      indentalignlast: MML.INHERIT,
+      indentshiftlast: MML.INHERIT,
+      texClass: MML.AUTO
+    },
+    defaultDef: {
+      form: MML.FORM.INFIX,
+      fence: false,
+      separator: false,
+      lspace: MML.LENGTH.THICKMATHSPACE,
+      rspace: MML.LENGTH.THICKMATHSPACE,
+      stretchy: false,
+      symmetric: true,
+      maxsize: MML.SIZE.INFINITY,
+      minsize: '0em', //'1em',
+      largeop: false,
+      movablelimits: false,
+      accent: false,
+      linebreak: MML.LINEBREAK.AUTO,
+      lineleading: "1ex",
+      linebreakstyle: "before",
+      indentalign: MML.INDENTALIGN.AUTO,
+      indentshift: "0",
+      indenttarget: "",
+      indentalignfirst: MML.INDENTALIGN.INDENTALIGN,
+      indentshiftfirst: MML.INDENTSHIFT.INDENTSHIFT,
+      indentalignlast: MML.INDENTALIGN.INDENTALIGN,
+      indentshiftlast: MML.INDENTSHIFT.INDENTSHIFT,
+      texClass: MML.TEXCLASS.REL // for MML, but TeX sets ORD explicitly
+    },
+    SPACE_ATTR: {lspace: 0x01, rspace: 0x02, form: 0x04},
+    useMMLspacing: 0x07,
+    autoDefault: function (name,nodefault) {
+      var def = this.def;
+      if (!def) {
+        if (name === "form") {this.useMMLspacing &= ~this.SPACE_ATTR.form; return this.getForm()}
+        var mo = this.data.join("");
+        var forms = [this.Get("form"),MML.FORM.INFIX,MML.FORM.POSTFIX,MML.FORM.PREFIX];
+        for (var i = 0, m = forms.length; i < m; i++) {
+          var data = this.OPTABLE[forms[i]][mo];
+          if (data) {def = this.makeDef(data); break}
+        }
+        if (!def) {def = this.CheckRange(mo)}
+        if (!def && nodefault) {def = {}} else {
+          if (!def) {def = MathJax.Hub.Insert({},this.defaultDef)}
+          def.form = forms[0];
+          this.def = def;
+        }
+      }
+      this.useMMLspacing &= ~(this.SPACE_ATTR[name] || 0);
+      if (def[name] != null) {return def[name]}
+      else if (!nodefault) {return this.defaultDef[name]}
+      return "";
+    },
+    CheckRange: function (mo) {
+      var n = mo.charCodeAt(0);
+      if (n >= 0xD800 && n < 0xDC00) {n = (((n-0xD800)<<10)+(mo.charCodeAt(1)-0xDC00))+0x10000}
+      for (var i = 0, m = this.RANGES.length; i < m && this.RANGES[i][0] <= n; i++) {
+        if (n <= this.RANGES[i][1]) {
+          if (this.RANGES[i][3]) {
+            var file = MML.optableDir+"/"+this.RANGES[i][3]+".js";
+            this.RANGES[i][3] = null;
+            MathJax.Hub.RestartAfter(MathJax.Ajax.Require(file));
+          }
+          var data = MML.TEXCLASSNAMES[this.RANGES[i][2]];
+          data = this.OPTABLE.infix[mo] = MML.mo.OPTYPES[data === "BIN" ? "BIN3" : data];
+          return this.makeDef(data);
+        }
+      }
+      return null;
+    },
+    makeDef: function (data) {
+      if (data[2] == null) {data[2] = this.defaultDef.texClass}
+      if (!data[3]) {data[3] = {}}
+      var def = MathJax.Hub.Insert({},data[3]);
+      def.lspace = this.SPACE[data[0]]; def.rspace = this.SPACE[data[1]];
+      def.texClass = data[2];
+      if (def.texClass === MML.TEXCLASS.REL &&
+         (this.movablelimits || this.data.join("").match(/^[a-z]+$/i)))
+             {def.texClass = MML.TEXCLASS.OP} // mark named operators as OP
+      return def;
+    },
+    getForm: function () {
+      var core = this, parent = this.parent, Parent = this.Parent();
+      while (Parent && Parent.isEmbellished())
+        {core = parent; parent = Parent.parent; Parent = Parent.Parent()}
+      if (parent && parent.type === "mrow" && parent.NonSpaceLength() !== 1) {
+        if (parent.FirstNonSpace() === core) {return MML.FORM.PREFIX}
+        if (parent.LastNonSpace() === core) {return MML.FORM.POSTFIX}
+      }
+      return MML.FORM.INFIX;
+    },
+    isEmbellished: function () {return true},
+    hasNewline: function () {return (this.Get("linebreak") === MML.LINEBREAK.NEWLINE)},
+    setTeXclass: function (prev) {
+      this.getValues("lspace","rspace"); // sets useMMLspacing
+      if (this.useMMLspacing) {this.texClass = MML.TEXCLASS.NONE; return this}
+      this.texClass = this.Get("texClass");
+      if (this.data.join("") === "\u2061") {
+        // force previous node to be texClass OP, and skip this node
+        prev.texClass = MML.TEXCLASS.OP;
+        this.texClass = this.prevClass = MML.TEXCLASS.NONE;
+        return prev;
+      }
+      return this.adjustTeXclass(prev);
+    },
+    adjustTeXclass: function (prev) {
+      if (this.texClass === MML.TEXCLASS.NONE) {return prev}
+      if (prev) {
+        if (prev.autoOP && (this.texClass === MML.TEXCLASS.BIN ||
+                            this.texClass === MML.TEXCLASS.REL))
+          {prev.texClass = MML.TEXCLASS.ORD}
+        this.prevClass = prev.texClass || MML.TEXCLASS.ORD;
+        this.prevLevel = prev.Get("scriptlevel")
+      } else {this.prevClass = MML.TEXCLASS.NONE}
+      if (this.texClass === MML.TEXCLASS.BIN &&
+            (this.prevClass === MML.TEXCLASS.NONE ||
+             this.prevClass === MML.TEXCLASS.BIN ||
+             this.prevClass === MML.TEXCLASS.OP ||
+             this.prevClass === MML.TEXCLASS.REL ||
+             this.prevClass === MML.TEXCLASS.OPEN ||
+             this.prevClass === MML.TEXCLASS.PUNCT)) {
+        this.texClass = MML.TEXCLASS.ORD;
+      } else if (this.prevClass === MML.TEXCLASS.BIN &&
+                   (this.texClass === MML.TEXCLASS.REL ||
+                    this.texClass === MML.TEXCLASS.CLOSE ||
+                    this.texClass === MML.TEXCLASS.PUNCT)) {
+        prev.texClass = this.prevClass = MML.TEXCLASS.ORD;
+      }
+      return this;
+    }
+  });
+  
+  MML.mtext = MML.mbase.Subclass({
+    type: "mtext", isToken: true,
+    isSpacelike: function () {return true},
+    texClass: MML.TEXCLASS.ORD,
+    defaults: {
+      mathvariant: MML.INHERIT,
+      mathsize: MML.INHERIT,
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT
+    }
+  });
+
+  MML.mspace = MML.mbase.Subclass({
+    type: "mspace", isToken: true,
+    isSpacelike: function () {return true},
+    defaults: {
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      width: "0em",
+      height: "0ex",
+      depth: "0ex",
+      linebreak: MML.LINEBREAK.AUTO
+    },
+    hasNewline: function () {return (this.Get("linebreak") === MML.LINEBREAK.NEWLINE)}
+  });
+
+  MML.ms = MML.mbase.Subclass({
+    type: "ms", isToken: true,
+    texClass: MML.TEXCLASS.ORD,
+    defaults: {
+      mathvariant: MML.INHERIT,
+      mathsize: MML.INHERIT,
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      lquote: '"',
+      rquote: '"'
+    }
+  });
+
+  MML.mglyph = MML.mbase.Subclass({
+    type: "mglyph", isToken: true,
+    texClass: MML.TEXCLASS.ORD,
+    defaults: {
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      alt: "",
+      src: "",
+      width: MML.AUTO,
+      height: MML.AUTO,
+      valign: "0em"
+    }
+  });
+
+  MML.mrow = MML.mbase.Subclass({
+    type: "mrow",
+    isSpacelike: MML.mbase.childrenSpacelike,
+    inferred: false,
+    isEmbellished: function () {
+      var isEmbellished = false;
+      for (var i = 0, m = this.data.length; i < m; i++) {
+        if (this.data[i] == null) continue;
+        if (this.data[i].isEmbellished()) {
+          if (isEmbellished) {return false}
+          isEmbellished = true; this.core = i;
+        } else if (!this.data[i].isSpacelike()) {return false}
+      }
+      return isEmbellished;
+    },
+    NonSpaceLength: function () {
+      var n = 0;
+      for (var i = 0, m = this.data.length; i < m; i++)
+        {if (this.data[i] && !this.data[i].isSpacelike()) {n++}}
+      return n;
+    },
+    FirstNonSpace: function () {
+      for (var i = 0, m = this.data.length; i < m; i++)
+        {if (this.data[i] && !this.data[i].isSpacelike()) {return this.data[i]}}
+      return null;
+    },
+    LastNonSpace: function () {
+      for (var i = this.data.length-1; i >= 0; i--)
+        {if (this.data[0] && !this.data[i].isSpacelike()) {return this.data[i]}}
+      return null;
+    },
+    Core: function () {
+      if (!(this.isEmbellished()) || typeof(this.core) === "undefined") {return this}
+      return this.data[this.core];
+    },
+    CoreMO: function () {
+      if (!(this.isEmbellished()) || typeof(this.core) === "undefined") {return this}
+      return this.data[this.core].CoreMO();
+    },
+    toString: function () {
+      if (this.inferred) {return '[' + this.data.join(',') + ']'}
+      return this.SUPER(arguments).toString.call(this);
+    },
+    setTeXclass: function (prev) {
+      for (var i = 0, m = this.data.length; i < m; i++)
+        {if (this.data[i]) {prev = this.data[i].setTeXclass(prev)}}
+      if (this.data[0]) {this.updateTeXclass(this.data[0])}
+      return prev;
+    }
+  });
+
+  MML.mfrac = MML.mbase.Subclass({
+    type: "mfrac", num: 0, den: 1,
+    linebreakContainer: true,
+    texClass: MML.TEXCLASS.INNER,
+    isEmbellished: MML.mbase.childEmbellished,
+    Core: MML.mbase.childCore,
+    CoreMO: MML.mbase.childCoreMO,
+    defaults: {
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      linethickness: MML.LINETHICKNESS.MEDIUM,
+      numalign: MML.ALIGN.CENTER,
+      denomalign: MML.ALIGN.CENTER,
+      bevelled: false
+    },
+    adjustChild_displaystyle: function (n) {return false},
+    adjustChild_scriptlevel: function (n) {
+      var level = this.Get("scriptlevel");
+      if (!this.Get("displaystyle") || level > 0) {level++}
+      return level;
+    },
+    adjustChild_texprimestyle: function (n) {
+      if (n == this.den) {return true}
+      return this.Get("texprimestyle");
+    },
+    setTeXclass: MML.mbase.setSeparateTeXclasses
+  });
+
+  MML.msqrt = MML.mbase.Subclass({
+    type: "msqrt",
+    inferRow: true,
+    linebreakContainer: true,
+    texClass: MML.TEXCLASS.ORD,
+    setTeXclass: MML.mbase.setSeparateTeXclasses,
+    adjustChild_texprimestyle: function (n) {return true}
+  });
+
+  MML.mroot = MML.mbase.Subclass({
+    type: "mroot",
+    linebreakContainer: true,
+    texClass: MML.TEXCLASS.ORD,
+    adjustChild_displaystyle: function (n) {
+      if (n === 1) {return false}
+      return this.Get("displaystyle");
+    },
+    adjustChild_scriptlevel: function (n) {
+      var level = this.Get("scriptlevel");
+      if (n === 1) {level += 2}
+      return level;
+    },
+    adjustChild_texprimestyle: function (n) {
+      if (n === 0) {return true};
+      return this.Get("texprimestyle");
+    },
+    setTeXclass: MML.mbase.setSeparateTeXclasses
+  });
+
+  MML.mstyle = MML.mbase.Subclass({
+    type: "mstyle",
+    isSpacelike: MML.mbase.childrenSpacelike,
+    isEmbellished: MML.mbase.childEmbellished,
+    Core: MML.mbase.childCore,
+    CoreMO: MML.mbase.childCoreMO,
+    inferRow: true,
+    defaults: {
+      scriptlevel: MML.INHERIT,
+      displaystyle: MML.INHERIT,
+      scriptsizemultiplier: Math.sqrt(1/2),
+      scriptminsize: "8pt",
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      infixlinebreakstyle: MML.LINEBREAKSTYLE.BEFORE,
+      decimalseparator: "."
+    },
+    adjustChild_scriptlevel: function (n) {
+      var level = this.scriptlevel;
+      if (level == null) {
+        level = this.Get("scriptlevel");
+      } else if (String(level).match(/^ *[-+]/)) {
+        delete this.scriptlevel;
+        var LEVEL = this.Get("scriptlevel");
+        this.scriptlevel = level;
+        level = LEVEL + parseInt(level);
+      }
+      return level;
+    },
+    inheritFromMe: true,
+    noInherit: {
+      mpadded: {width: true, height: true, depth: true, lspace: true, voffset: true},
+      mtable:  {width: true, height: true, depth: true, align: true}
+    },
+    setTeXclass: MML.mbase.setChildTeXclass
+  });
+
+  MML.merror = MML.mbase.Subclass({
+    type: "merror",
+    inferRow: true,
+    linebreakContainer: true,
+    texClass: MML.TEXCLASS.ORD
+  });
+
+  MML.mpadded = MML.mbase.Subclass({
+    type: "mpadded",
+    inferRow: true,
+    isSpacelike: MML.mbase.childrenSpacelike,
+    isEmbellished: MML.mbase.childEmbellished,
+    Core: MML.mbase.childCore,
+    CoreMO: MML.mbase.childCoreMO,
+    defaults: {
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      width: "",
+      height: "",
+      depth: "",
+      lspace: 0,
+      voffset: 0
+    },
+    setTeXclass: MML.mbase.setChildTeXclass
+  });
+
+  MML.mphantom = MML.mbase.Subclass({
+    type: "mphantom",
+    texClass: MML.TEXCLASS.ORD,
+    inferRow: true,
+    isSpacelike: MML.mbase.childrenSpacelike,
+    isEmbellished: MML.mbase.childEmbellished,
+    Core: MML.mbase.childCore,
+    CoreMO: MML.mbase.childCoreMO,
+    setTeXclass: MML.mbase.setChildTeXclass
+  });
+
+  MML.mfenced = MML.mbase.Subclass({
+    type: "mfenced",
+    defaults: {
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      open: '(',
+      close: ')',
+      separators: ','
+    },
+    texClass: MML.TEXCLASS.OPEN,
+    setTeXclass: function (prev) {
+      this.getPrevClass(prev);
+      var values = this.getValues("open","close","separators");
+      values.open = values.open.replace(/[ \t\n\r]/g,"");
+      values.close = values.close.replace(/[ \t\n\r]/g,"");
+      values.separators = values.separators.replace(/[ \t\n\r]/g,"");
+      // create a fake node for the open item
+      if (values.open !== "") {
+        this.SetData("open",MML.mo(values.open).With({stretchy:true, texClass:MML.TEXCLASS.OPEN}));
+        prev = this.data.open.setTeXclass(prev);
+      }
+      // get the separators
+      if (values.separators !== "") {
+        while (values.separators.length < this.data.length)
+          {values.separators += values.separators.charAt(values.separators.length-1)}
+      }
+      // handle the first item, if any
+      if (this.data[0]) {prev = this.data[0].setTeXclass(prev)}
+      // add fake nodes for separators and handle the following item
+      for (var i = 1, m = this.data.length; i < m; i++) {
+        if (this.data[i]) {
+          if (values.separators !== "") {
+            this.SetData("sep"+i,MML.mo(values.separators.charAt(i-1)));
+            prev = this.data["sep"+i].setTeXclass(prev);
+          }
+          prev = this.data[i].setTeXclass(prev);
+        }
+      }
+      // create fake node for the close item
+      if (values.close !== "") {
+        this.SetData("close",MML.mo(values.close).With({stretchy:true, texClass:MML.TEXCLASS.CLOSE}));
+        prev = this.data.close.setTeXclass(prev);
+      }
+      // get the data from the open item
+      this.updateTeXclass(this.data.open);
+      return prev;
+    }
+  });
+
+  MML.menclose = MML.mbase.Subclass({
+    type: "menclose",
+    inferRow: true,
+    linebreakContainer: true,
+    defaults: {
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      notation: MML.NOTATION.LONGDIV,
+      texClass: MML.TEXCLASS.ORD
+    },
+    setTeXclass: MML.mbase.setSeparateTeXclasses
+  });
+
+  MML.msubsup = MML.mbase.Subclass({
+    type: "msubsup", base: 0, sub: 1, sup: 2,
+    isEmbellished: MML.mbase.childEmbellished,
+    Core: MML.mbase.childCore,
+    CoreMO: MML.mbase.childCoreMO,
+    defaults: {
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      subscriptshift: "",
+      superscriptshift: "",
+      texClass: MML.AUTO
+    },
+    autoDefault: function (name) {
+      if (name === "texClass")
+        {return (this.isEmbellished() ? this.CoreMO().Get(name) : MML.TEXCLASS.ORD)}
+      return 0;
+    },
+    adjustChild_displaystyle: function (n) {
+      if (n > 0) {return false}
+      return this.Get("displaystyle");
+    },
+    adjustChild_scriptlevel: function (n) {
+      var level = this.Get("scriptlevel");
+      if (n > 0) {level++}
+      return level;
+    },
+    adjustChild_texprimestyle: function (n) {
+      if (n === this.sub) {return true}
+      return this.Get("texprimestyle");
+    },
+    setTeXclass: MML.mbase.setBaseTeXclasses
+  });
+  
+  MML.msub = MML.msubsup.Subclass({type: "msub"});
+  MML.msup = MML.msubsup.Subclass({type: "msup", sub:2, sup:1});
+  MML.mmultiscripts = MML.msubsup.Subclass({
+    type: "mmultiscripts",
+    adjustChild_texprimestyle: function (n) {
+      if (n % 2 === 1) {return true}
+      return this.Get("texprimestyle");
+    }
+  });
+  MML.mprescripts = MML.mbase.Subclass({type: "mprescripts"});
+  MML.none = MML.mbase.Subclass({type: "none"});
+  
+  MML.munderover = MML.mbase.Subclass({
+    type: "munderover",
+    base: 0, under: 1, over: 2, sub: 1, sup: 2,
+    ACCENTS: ["", "accentunder", "accent"],
+    linebreakContainer: true,
+    isEmbellished: MML.mbase.childEmbellished,
+    Core: MML.mbase.childCore,
+    CoreMO: MML.mbase.childCoreMO,
+    defaults: {
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      accent: MML.AUTO,
+      accentunder: MML.AUTO,
+      align: MML.ALIGN.CENTER,
+      texClass: MML.AUTO,
+      subscriptshift: "",  // when converted to msubsup by moveablelimits
+      superscriptshift: "" // when converted to msubsup by moveablelimits
+    },
+    autoDefault: function (name) {
+      if (name === "texClass")
+        {return (this.isEmbellished() ? this.CoreMO().Get(name) : MML.TEXCLASS.ORD)}
+      if (name === "accent" && this.data[this.over]) {return this.data[this.over].CoreMO().Get("accent")}
+      if (name === "accentunder" && this.data[this.under]) {return this.data[this.under].CoreMO().Get("accent")}
+      return false;
+    },
+    adjustChild_displaystyle: function (n) {
+      if (n > 0) {return false}
+      return this.Get("displaystyle");
+    },
+    adjustChild_scriptlevel: function (n) {
+      var level = this.Get("scriptlevel");
+      var force = (this.data[this.base] && !this.Get("displaystyle") &&
+                   this.data[this.base].CoreMO().Get("movablelimits"));
+      if (n == this.under && (force || !this.Get("accentunder"))) {level++}
+      if (n == this.over  && (force || !this.Get("accent"))) {level++}
+      return level;
+    },
+    adjustChild_texprimestyle: function (n) {
+      if (n === this.base && this.data[this.over]) {return true}
+      return this.Get("texprimestyle");
+    },
+    setTeXclass: MML.mbase.setBaseTeXclasses
+  });
+  
+  MML.munder = MML.munderover.Subclass({type: "munder"});
+  MML.mover = MML.munderover.Subclass({
+    type: "mover", over: 1, under: 2, sup: 1, sub: 2,
+    ACCENTS: ["", "accent", "accentunder"]
+  });
+
+  MML.mtable = MML.mbase.Subclass({
+    type: "mtable",
+    defaults: {
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      align: MML.ALIGN.AXIS,
+      rowalign: MML.ALIGN.BASELINE,
+      columnalign: MML.ALIGN.CENTER,
+      groupalign: "{left}",
+      alignmentscope: true,
+      columnwidth: MML.WIDTH.AUTO,
+      width: MML.WIDTH.AUTO,
+      rowspacing: "1ex",
+      columnspacing: ".8em",
+      rowlines: MML.LINES.NONE,
+      columnlines: MML.LINES.NONE,
+      frame: MML.LINES.NONE,
+      framespacing: "0.4em 0.5ex",
+      equalrows: false,
+      equalcolumns: false,
+      displaystyle: false,
+      side: MML.SIDE.RIGHT,
+      minlabelspacing: "0.8em",
+      texClass: MML.TEXCLASS.ORD,
+      useHeight: 1
+    },
+    inheritFromMe: true,
+    noInherit: {
+      mover: {align: true},
+      munder: {align: true},
+      munderover: {align: true},
+      mtable: {
+        align: true, rowalign: true, columnalign: true, groupalign: true,
+        alignmentscope: true, columnwidth: true, width: true, rowspacing: true,
+        columnspacing: true, rowlines: true, columnlines: true, frame: true,
+        framespacing: true, equalrows: true, equalcolumns: true,
+        side: true, minlabelspacing: true, texClass: true, useHeight: 1
+      }
+    },
+    linebreakContainer: true,
+    Append: function () {
+      for (var i = 0, m = arguments.length; i < m; i++) {
+        if (!((arguments[i] instanceof MML.mtr) ||
+              (arguments[i] instanceof MML.mlabeledtr))) {arguments[i] = MML.mtd(arguments[i])}
+      }
+      this.SUPER(arguments).Append.apply(this,arguments);
+    },
+    setTeXclass: MML.mbase.setSeparateTeXclasses
+  });
+
+  MML.mtr = MML.mbase.Subclass({
+    type: "mtr",
+    defaults: {
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      rowalign: MML.INHERIT,
+      columnalign: MML.INHERIT,
+      groupalign: MML.INHERIT
+    },
+    inheritFromMe: true,
+    noInherit: {
+      mrow: {rowalign: true, columnalign: true, groupalign: true},
+      mtable: {rowalign: true, columnalign: true, groupalign: true}
+    },
+    linebreakContainer: true,
+    Append: function () {
+      for (var i = 0, m = arguments.length; i < m; i++) {
+        if (!(arguments[i] instanceof MML.mtd)) {arguments[i] = MML.mtd(arguments[i])}
+      }
+      this.SUPER(arguments).Append.apply(this,arguments);
+    },
+    setTeXclass: MML.mbase.setSeparateTeXclasses
+  });
+
+  MML.mtd = MML.mbase.Subclass({
+    type: "mtd",
+    inferRow: true,
+    linebreakContainer: true,
+    isEmbellished: MML.mbase.childEmbellished,
+    Core: MML.mbase.childCore,
+    CoreMO: MML.mbase.childCoreMO,
+    defaults: {
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      rowspan: 1,
+      columnspan: 1,
+      rowalign: MML.INHERIT,
+      columnalign: MML.INHERIT,
+      groupalign: MML.INHERIT
+    },
+    setTeXclass: MML.mbase.setSeparateTeXclasses
+  });
+
+  MML.maligngroup = MML.mbase.Subclass({
+    type: "malign",
+    isSpacelike: function () {return true},
+    defaults: {
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      groupalign: MML.INHERIT
+    },
+    inheritFromMe: true,
+    noInherit: {
+      mrow: {groupalign: true},
+      mtable: {groupalign: true}
+    }
+  });
+
+  MML.malignmark = MML.mbase.Subclass({
+    type: "malignmark",
+    defaults: {
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      edge: MML.SIDE.LEFT
+    },
+    isSpacelike: function () {return true}
+  });
+
+  MML.mlabeledtr = MML.mtr.Subclass({
+    type: "mlabeledtr"
+  });
+  
+  MML.maction = MML.mbase.Subclass({
+    type: "maction",
+    defaults: {
+      mathbackground: MML.INHERIT,
+      mathcolor: MML.INHERIT,
+      actiontype: MML.ACTIONTYPE.TOGGLE,
+      selection: 1
+    },
+    selected: function () {return this.data[this.Get("selection")-1] || MML.NULL},
+    isEmbellished: function () {return this.selected().isEmbellished()},
+    isSpacelike: function () {return this.selected().isSpacelike()},
+    Core: function () {return this.selected().Core()},
+    CoreMO: function () {return this.selected().CoreMO()},
+    setTeXclass: function (prev) {return this.selected().setTeXclass(prev)}
+  });
+  
+  MML.semantics = MML.mbase.Subclass({
+    type: "semantics",
+    isEmbellished: MML.mbase.childEmbellished,
+    Core: MML.mbase.childCore,
+    CoreMO: MML.mbase.childCoreMO,
+    defaults: {
+      definitionURL: null,
+      encoding: null
+    },
+    setTeXclass: MML.mbase.setChildTeXclass
+  });
+  MML.annotation = MML.mbase.Subclass({
+    type: "annotation", isToken: true,
+    linebreakContainer: true,
+    defaults: {
+      definitionURL: null,
+      encoding: null,
+      cd: "mathmlkeys",
+      name: "",
+      src: null
+    }
+  });
+  MML["annotation-xml"] = MML.mbase.Subclass({
+    type: "annotation-xml",
+    linebreakContainer: true,
+    defaults: {
+      definitionURL: null,
+      encoding: null,
+      cd: "mathmlkeys",
+      name: "",
+      src: null
+    }
+  });
+
+  MML.math = MML.mstyle.Subclass({
+    type: "math",
+    defaults: {
+      mathvariant: MML.VARIANT.NORMAL,
+      mathsize: MML.SIZE.NORMAL,
+      mathcolor: "", // should be "black", but allow it to inherit from surrounding text
+      mathbackground: MML.COLOR.TRANSPARENT,
+      scriptlevel: 0,
+      displaystyle: MML.AUTO,
+      display: "inline",
+      maxwidth: "",
+      overflow: MML.OVERFLOW.LINEBREAK,
+      altimg: "",
+      'altimg-width': "",
+      'altimg-height': "",
+      'altimg-valign': "",
+      alttext: "",
+      cdgroup: "",
+      scriptsizemultiplier: Math.sqrt(1/2),
+      scriptminsize: "8px",    // should be 8pt, but that's too big
+      infixlinebreakstyle: MML.LINEBREAKSTYLE.BEFORE,
+      lineleading: "1ex",
+      indentshift: "auto",     // use user configuration
+      indentalign: MML.INDENTALIGN.AUTO,
+      indentalignfirst: MML.INDENTALIGN.INDENTALIGN,
+      indentshiftfirst: MML.INDENTSHIFT.INDENTSHIFT,
+      indentalignlast:  MML.INDENTALIGN.INDENTALIGN,
+      indentshiftlast:  MML.INDENTSHIFT.INDENTSHIFT,
+      decimalseparator: ".",
+      texprimestyle: false     // is it in TeX's C' style?
+    },
+    autoDefault: function (name) {
+      if (name === "displaystyle") {return this.Get("display") === "block"}
+      return "";
+    },
+    linebreakContainer: true,
+    setTeXclass: MML.mbase.setChildTeXclass
+  });
+  
+  MML.chars = MML.mbase.Subclass({
+    type: "chars",
+    Append: function () {this.data.push.apply(this.data,arguments)},
+    value: function () {return this.data.join("")},
+    toString: function () {return this.data.join("")}
+  });
+  
+  MML.entity = MML.mbase.Subclass({
+    type: "entity",
+    Append: function () {this.data.push.apply(this.data,arguments)},
+    value: function () {
+      if (this.data[0].substr(0,2) === "#x") {return parseInt(this.data[0].substr(2),16)}
+      else if (this.data[0].substr(0,1) === "#") {return parseInt(this.data[0].substr(1))}
+      else {return 0}  // FIXME: look up named entities from table
+    },
+    toString: function () {
+      var n = this.value();
+      if (n <= 0xFFFF) {return String.fromCharCode(n)}
+      n -= 0x10000;
+      return String.fromCharCode((n>>10)+0xD800)
+           + String.fromCharCode((n&0x3FF)+0xDC00);
+    }
+  });
+  
+  MML.xml = MML.mbase.Subclass({
+    type: "xml",
+    Init: function () {
+      this.div = document.createElement("div");
+      return this.SUPER(arguments).Init.apply(this,arguments);
+    },
+    Append: function () {
+      for (var i = 0, m = arguments.length; i < m; i++) {
+        var node = this.Import(arguments[i]);
+        this.data.push(node);
+        this.div.appendChild(node);
+      }
+    },
+    Import: function (node) {
+      if (document.importNode) {return document.importNode(node,true)}
+      //
+      //  IE < 9 doesn't have importNode, so fake it.
+      //
+      var nNode, i, m;
+      if (node.nodeType === 1) { // ELEMENT_NODE
+        nNode = document.createElement(node.nodeName);
+        for (i = 0, m = node.attributes.length; i < m; i++) {
+          var attribute = node.attributes[i];
+          if (attribute.specified && attribute.nodeValue != null && attribute.nodeValue != '')
+            {nNode.setAttribute(attribute.nodeName,attribute.nodeValue)}
+          if (attribute.nodeName === "style") {nNode.style.cssText = attribute.nodeValue}
+        }
+        if (node.className) {nNode.className = node.className}
+      } else if (node.nodeType === 3 || node.nodeType === 4) { // TEXT_NODE or CDATA_SECTION_NODE
+        nNode = document.createTextNode(node.nodeValue);
+      } else if (node.nodeType === 8) { // COMMENT_NODE
+        nNode = document.createComment(node.nodeValue);
+      } else {
+        return document.createTextNode('');
+      }
+      for (i = 0, m = node.childNodes.length; i < m; i++)
+        {nNode.appendChild(this.Import(node.childNodes[i]))}
+      return nNode;
+    },
+    value: function () {return this.div},
+    toString: function () {return this.div.innerHTML}
+  });
+  
+  MML.TeXAtom = MML.mbase.Subclass({
+    type: "texatom",
+    inferRow: true,
+    texClass: MML.TEXCLASS.ORD,
+    Core: MML.mbase.childCore,
+    CoreMO: MML.mbase.childCoreMO,
+    isEmbellished: MML.mbase.childEmbellished,
+    setTeXclass: function (prev) {
+      this.data[0].setTeXclass();
+      return this.adjustTeXclass(prev);
+    },
+    adjustTeXclass: MML.mo.prototype.adjustTeXclass
+  });
+  
+  MML.NULL = MML.mbase().With({type:"null"});
+
+  var TEXCLASS = MML.TEXCLASS;
+  
+  var MO = {
+    ORD:        [0,0,TEXCLASS.ORD],
+    ORD11:      [1,1,TEXCLASS.ORD],
+    ORD21:      [2,1,TEXCLASS.ORD],
+    ORD02:      [0,2,TEXCLASS.ORD],
+    ORD55:      [5,5,TEXCLASS.ORD],
+    OP:         [1,2,TEXCLASS.OP,{largeop: true, movablelimits: true, symmetric: true}],
+    OPFIXED:    [1,2,TEXCLASS.OP,{largeop: true, movablelimits: true}],
+    INTEGRAL:   [0,1,TEXCLASS.OP,{largeop: true, symmetric: true}],
+    INTEGRAL2:  [1,2,TEXCLASS.OP,{largeop: true, symmetric: true}],
+    BIN3:       [3,3,TEXCLASS.BIN],
+    BIN4:       [4,4,TEXCLASS.BIN],
+    BIN01:      [0,1,TEXCLASS.BIN],
+    BIN5:       [5,5,TEXCLASS.BIN],
+    TALLBIN:    [4,4,TEXCLASS.BIN,{stretchy: true}],
+    BINOP:      [4,4,TEXCLASS.BIN,{largeop: true, movablelimits: true}],
+    REL:        [5,5,TEXCLASS.REL],
+    REL1:       [1,1,TEXCLASS.REL,{stretchy: true}],
+    REL4:       [4,4,TEXCLASS.REL],
+    RELSTRETCH: [5,5,TEXCLASS.REL,{stretchy: true}],
+    RELACCENT:  [5,5,TEXCLASS.REL,{accent: true}],
+    WIDEREL:    [5,5,TEXCLASS.REL,{accent: true, stretchy: true}],
+    OPEN:       [0,0,TEXCLASS.OPEN,{fence: true, stretchy: true, symmetric: true}],
+    CLOSE:      [0,0,TEXCLASS.CLOSE,{fence: true, stretchy: true, symmetric: true}],
+    INNER:      [0,0,TEXCLASS.INNER],
+    PUNCT:      [0,3,TEXCLASS.PUNCT],
+    ACCENT:     [0,0,TEXCLASS.ORD,{accent: true}],
+    WIDEACCENT: [0,0,TEXCLASS.ORD,{accent: true, stretchy: true}]
+  };
+
+  MML.mo.Augment({
+    SPACE: [
+      '0em',
+      '0.1111em',
+      '0.1667em',
+      '0.2222em',
+      '0.2667em',
+      '0.3333em'
+    ],
+    RANGES: [
+      [0x20,0x7F,TEXCLASS.REL,"BasicLatin"],
+      [0xA0,0xFF,TEXCLASS.ORD,"Latin1Supplement"],
+      [0x100,0x17F,TEXCLASS.ORD],
+      [0x180,0x24F,TEXCLASS.ORD],
+      [0x2B0,0x2FF,TEXCLASS.ORD,"SpacingModLetters"],
+      [0x300,0x36F,TEXCLASS.ORD,"CombDiacritMarks"],
+      [0x370,0x3FF,TEXCLASS.ORD,"GreekAndCoptic"],
+      [0x1E00,0x1EFF,TEXCLASS.ORD],
+      [0x2000,0x206F,TEXCLASS.PUNCT,"GeneralPunctuation"],
+      [0x2070,0x209F,TEXCLASS.ORD],
+      [0x20A0,0x20CF,TEXCLASS.ORD],
+      [0x20D0,0x20FF,TEXCLASS.ORD,"CombDiactForSymbols"],
+      [0x2100,0x214F,TEXCLASS.ORD,"LetterlikeSymbols"],
+      [0x2150,0x218F,TEXCLASS.ORD],
+      [0x2190,0x21FF,TEXCLASS.REL,"Arrows"],
+      [0x2200,0x22FF,TEXCLASS.BIN,"MathOperators"],
+      [0x2300,0x23FF,TEXCLASS.ORD,"MiscTechnical"],
+      [0x2460,0x24FF,TEXCLASS.ORD],
+      [0x2500,0x259F,TEXCLASS.ORD],
+      [0x25A0,0x25FF,TEXCLASS.ORD,"GeometricShapes"],
+      [0x2700,0x27BF,TEXCLASS.ORD,"Dingbats"],
+      [0x27C0,0x27EF,TEXCLASS.ORD,"MiscMathSymbolsA"],
+      [0x27F0,0x27FF,TEXCLASS.REL,"SupplementalArrowsA"],
+      [0x2900,0x297F,TEXCLASS.REL,"SupplementalArrowsB"],
+      [0x2980,0x29FF,TEXCLASS.ORD,"MiscMathSymbolsB"],
+      [0x2A00,0x2AFF,TEXCLASS.BIN,"SuppMathOperators"],
+      [0x2B00,0x2BFF,TEXCLASS.ORD,"MiscSymbolsAndArrows"],
+      [0x1D400,0x1D7FF,TEXCLASS.ORD]
+    ],
+    OPTABLE: {
+      prefix: {
+        '\u2200': MO.ORD21,    // for all
+        '\u2202': MO.ORD21,    // partial differential
+        '\u2203': MO.ORD21,    // there exists
+        '\u2207': MO.ORD21,    // nabla
+        '\u220F': MO.OP,       // n-ary product
+        '\u2210': MO.OP,       // n-ary coproduct
+        '\u2211': MO.OP,       // n-ary summation
+        '\u2212': MO.BIN01,    // minus sign
+        '\u2213': MO.BIN01,    // minus-or-plus sign
+        '\u221A': [1,1,TEXCLASS.ORD,{stretchy: true}], // square root
+        '\u2220': MO.ORD,      // angle
+        '\u222B': MO.INTEGRAL, // integral
+        '\u222E': MO.INTEGRAL, // contour integral
+        '\u22C0': MO.OP,       // n-ary logical and
+        '\u22C1': MO.OP,       // n-ary logical or
+        '\u22C2': MO.OP,       // n-ary intersection
+        '\u22C3': MO.OP,       // n-ary union
+        '\u2308': MO.OPEN,     // left ceiling
+        '\u230A': MO.OPEN,     // left floor
+        '\u27E8': MO.OPEN,     // mathematical left angle bracket
+        '\u27EE': MO.OPEN,     // mathematical left flattened parenthesis
+        '\u2A00': MO.OP,       // n-ary circled dot operator
+        '\u2A01': MO.OP,       // n-ary circled plus operator
+        '\u2A02': MO.OP,       // n-ary circled times operator
+        '\u2A04': MO.OP,       // n-ary union operator with plus
+        '\u2A06': MO.OP,       // n-ary square union operator
+        '\u00AC': MO.ORD21,    // not sign
+        '\u00B1': MO.BIN01,    // plus-minus sign
+        '(': MO.OPEN,          // left parenthesis
+        '+': MO.BIN01,         // plus sign
+        '-': MO.BIN01,         // hyphen-minus
+        '[': MO.OPEN,          // left square bracket
+        '{': MO.OPEN,          // left curly bracket
+        '|': MO.OPEN           // vertical line
+      },
+      postfix: {
+        '!': [1,0,TEXCLASS.CLOSE], // exclamation mark
+        '&': MO.ORD,           // ampersand
+        '\u2032': MO.ORD02,    // prime
+        '\u203E': MO.WIDEACCENT, // overline
+        '\u2309': MO.CLOSE,    // right ceiling
+        '\u230B': MO.CLOSE,    // right floor
+        '\u23DE': MO.WIDEACCENT, // top curly bracket
+        '\u23DF': MO.WIDEACCENT, // bottom curly bracket
+        '\u266D': MO.ORD02,    // music flat sign
+        '\u266E': MO.ORD02,    // music natural sign
+        '\u266F': MO.ORD02,    // music sharp sign
+        '\u27E9': MO.CLOSE,    // mathematical right angle bracket
+        '\u27EF': MO.CLOSE,    // mathematical right flattened parenthesis
+        '\u02C6': MO.WIDEACCENT, // modifier letter circumflex accent
+        '\u02C7': MO.WIDEACCENT, // caron
+        '\u02C9': MO.WIDEACCENT, // modifier letter macron
+        '\u02CA': MO.ACCENT,   // modifier letter acute accent
+        '\u02CB': MO.ACCENT,   // modifier letter grave accent
+        '\u02D8': MO.ACCENT,   // breve
+        '\u02D9': MO.ACCENT,   // dot above
+        '\u02DC': MO.WIDEACCENT, // small tilde
+        '\u0302': MO.WIDEACCENT, // combining circumflex accent
+        '\u00A8': MO.ACCENT,   // diaeresis
+        '\u00AF': MO.WIDEACCENT, // macron
+        ')': MO.CLOSE,         // right parenthesis
+        ']': MO.CLOSE,         // right square bracket
+        '^': MO.WIDEACCENT,    // circumflex accent
+        '_': MO.WIDEACCENT,    // low line
+        '`': MO.ACCENT,        // grave accent
+        '|': MO.CLOSE,         // vertical line
+        '}': MO.CLOSE,         // right curly bracket
+        '~': MO.WIDEACCENT     // tilde
+      },
+      infix: {
+        '': MO.ORD,            // empty <mo>
+        '%': [3,3,TEXCLASS.ORD], // percent sign
+        '\u2022': MO.BIN4,     // bullet
+        '\u2026': MO.INNER,    // horizontal ellipsis
+        '\u2044': MO.TALLBIN,  // fraction slash
+        '\u2061': MO.ORD,      // function application
+        '\u2062': MO.ORD,      // invisible times
+        '\u2063': [0,0,TEXCLASS.ORD,{linebreakstyle:"after", separator: true}], // invisible separator
+        '\u2064': MO.ORD,      // invisible plus
+        '\u2190': MO.WIDEREL,  // leftwards arrow
+        '\u2191': MO.RELSTRETCH, // upwards arrow
+        '\u2192': MO.WIDEREL,  // rightwards arrow
+        '\u2193': MO.RELSTRETCH, // downwards arrow
+        '\u2194': MO.WIDEREL,  // left right arrow
+        '\u2195': MO.RELSTRETCH, // up down arrow
+        '\u2196': MO.RELSTRETCH, // north west arrow
+        '\u2197': MO.RELSTRETCH, // north east arrow
+        '\u2198': MO.RELSTRETCH, // south east arrow
+        '\u2199': MO.RELSTRETCH, // south west arrow
+        '\u21A6': MO.WIDEREL,  // rightwards arrow from bar
+        '\u21A9': MO.WIDEREL,  // leftwards arrow with hook
+        '\u21AA': MO.WIDEREL,  // rightwards arrow with hook
+        '\u21BC': MO.WIDEREL,  // leftwards harpoon with barb upwards
+        '\u21BD': MO.WIDEREL,  // leftwards harpoon with barb downwards
+        '\u21C0': MO.WIDEREL,  // rightwards harpoon with barb upwards
+        '\u21C1': MO.WIDEREL,  // rightwards harpoon with barb downwards
+        '\u21CC': MO.WIDEREL,  // rightwards harpoon over leftwards harpoon
+        '\u21D0': MO.WIDEREL,  // leftwards double arrow
+        '\u21D1': MO.RELSTRETCH, // upwards double arrow
+        '\u21D2': MO.WIDEREL,  // rightwards double arrow
+        '\u21D3': MO.RELSTRETCH, // downwards double arrow
+        '\u21D4': MO.WIDEREL,  // left right double arrow
+        '\u21D5': MO.RELSTRETCH, // up down double arrow
+        '\u2208': MO.REL,      // element of
+        '\u2209': MO.REL,      // not an element of
+        '\u220B': MO.REL,      // contains as member
+        '\u2212': MO.BIN4,     // minus sign
+        '\u2213': MO.BIN4,     // minus-or-plus sign
+        '\u2215': MO.TALLBIN,  // division slash
+        '\u2216': MO.BIN4,     // set minus
+        '\u2217': MO.BIN4,     // asterisk operator
+        '\u2218': MO.BIN4,     // ring operator
+        '\u2219': MO.BIN4,     // bullet operator
+        '\u221D': MO.REL,      // proportional to
+        '\u2223': MO.REL,      // divides
+        '\u2225': MO.REL,      // parallel to
+        '\u2227': MO.BIN4,     // logical and
+        '\u2228': MO.BIN4,     // logical or
+        '\u2229': MO.BIN4,     // intersection
+        '\u222A': MO.BIN4,     // union
+        '\u223C': MO.REL,      // tilde operator
+        '\u2240': MO.BIN4,     // wreath product
+        '\u2243': MO.REL,      // asymptotically equal to
+        '\u2245': MO.REL,      // approximately equal to
+        '\u2248': MO.REL,      // almost equal to
+        '\u224D': MO.REL,      // equivalent to
+        '\u2250': MO.REL,      // approaches the limit
+        '\u2260': MO.REL,      // not equal to
+        '\u2261': MO.REL,      // identical to
+        '\u2264': MO.REL,      // less-than or equal to
+        '\u2265': MO.REL,      // greater-than or equal to
+        '\u226A': MO.REL,      // much less-than
+        '\u226B': MO.REL,      // much greater-than
+        '\u227A': MO.REL,      // precedes
+        '\u227B': MO.REL,      // succeeds
+        '\u2282': MO.REL,      // subset of
+        '\u2283': MO.REL,      // superset of
+        '\u2286': MO.REL,      // subset of or equal to
+        '\u2287': MO.REL,      // superset of or equal to
+        '\u228E': MO.BIN4,     // multiset union
+        '\u2291': MO.REL,      // square image of or equal to
+        '\u2292': MO.REL,      // square original of or equal to
+        '\u2293': MO.BIN4,     // square cap
+        '\u2294': MO.BIN4,     // square cup
+        '\u2295': MO.BIN4,     // circled plus
+        '\u2296': MO.BIN4,     // circled minus
+        '\u2297': MO.BIN4,     // circled times
+        '\u2298': MO.BIN4,     // circled division slash
+        '\u2299': MO.BIN4,     // circled dot operator
+        '\u22A2': MO.REL,      // right tack
+        '\u22A3': MO.REL,      // left tack
+        '\u22A4': MO.ORD55,    // down tack
+        '\u22A5': MO.REL,      // up tack
+        '\u22A8': MO.REL,      // true
+        '\u22C4': MO.BIN4,     // diamond operator
+        '\u22C5': MO.BIN4,     // dot operator
+        '\u22C6': MO.BIN4,     // star operator
+        '\u22C8': MO.REL,      // bowtie
+        '\u22EE': MO.ORD55,    // vertical ellipsis
+        '\u22EF': MO.INNER,    // midline horizontal ellipsis
+        '\u22F1': [5,5,TEXCLASS.INNER], // down right diagonal ellipsis
+        '\u25B3': MO.BIN4,     // white up-pointing triangle
+        '\u25B5': MO.BIN4,     // white up-pointing small triangle
+        '\u25B9': MO.BIN4,     // white right-pointing small triangle
+        '\u25BD': MO.BIN4,     // white down-pointing triangle
+        '\u25BF': MO.BIN4,     // white down-pointing small triangle
+        '\u25C3': MO.BIN4,     // white left-pointing small triangle
+        '\u2758': MO.REL,      // light vertical bar
+        '\u27F5': MO.WIDEREL,  // long leftwards arrow
+        '\u27F6': MO.WIDEREL,  // long rightwards arrow
+        '\u27F7': MO.WIDEREL,  // long left right arrow
+        '\u27F8': MO.WIDEREL,  // long leftwards double arrow
+        '\u27F9': MO.WIDEREL,  // long rightwards double arrow
+        '\u27FA': MO.WIDEREL,  // long left right double arrow
+        '\u27FC': MO.WIDEREL,  // long rightwards arrow from bar
+        '\u2A2F': MO.BIN4,     // vector or cross product
+        '\u2A3F': MO.BIN4,     // amalgamation or coproduct
+        '\u2AAF': MO.REL,      // precedes above single-line equals sign
+        '\u2AB0': MO.REL,      // succeeds above single-line equals sign
+        '\u00B1': MO.BIN4,     // plus-minus sign
+        '\u00B7': MO.BIN4,     // middle dot
+        '\u00D7': MO.BIN4,     // multiplication sign
+        '\u00F7': MO.BIN4,     // division sign
+        '*': MO.BIN3,          // asterisk
+        '+': MO.BIN4,          // plus sign
+        ',': [0,3,TEXCLASS.PUNCT,{linebreakstyle:"after", separator: true}], // comma
+        '-': MO.BIN4,          // hyphen-minus
+        '.': [3,3,TEXCLASS.ORD], // full stop
+        '/': MO.ORD11,         // solidus
+        ':': [1,2,TEXCLASS.REL], // colon
+        ';': [0,3,TEXCLASS.PUNCT,{linebreakstyle:"after", separator: true}], // semicolon
+        '<': MO.REL,           // less-than sign
+        '=': MO.REL,           // equals sign
+        '>': MO.REL,           // greater-than sign
+        '?': [1,1,TEXCLASS.CLOSE], // question mark
+        '\\': MO.ORD,          // reverse solidus
+        '^': MO.ORD11,         // circumflex accent
+        '_': MO.ORD11,         // low line
+        '|': [2,2,TEXCLASS.ORD,{fence: true, stretchy: true, symmetric: true}], // vertical line
+        '#': MO.ORD,           // #
+        '$': MO.ORD,           // $
+        '\u002E': [0,3,TEXCLASS.PUNCT,{separator: true}], // \ldotp
+        '\u02B9': MO.ORD,      // prime
+        '\u0300': MO.ACCENT,   // \grave
+        '\u0301': MO.ACCENT,   // \acute
+        '\u0303': MO.WIDEACCENT, // \tilde
+        '\u0304': MO.ACCENT,   // \bar
+        '\u0306': MO.ACCENT,   // \breve
+        '\u0307': MO.ACCENT,   // \dot
+        '\u0308': MO.ACCENT,   // \ddot
+        '\u030C': MO.ACCENT,   // \check
+        '\u0332': MO.WIDEACCENT, // horizontal line
+        '\u0338': MO.REL4,     // \not
+        '\u2015': [0,0,TEXCLASS.ORD,{stretchy: true}], // horizontal line
+        '\u2017': [0,0,TEXCLASS.ORD,{stretchy: true}], // horizontal line
+        '\u2020': MO.BIN3,     // \dagger
+        '\u2021': MO.BIN3,     // \ddagger
+        '\u20D7': MO.ACCENT,   // \vec
+        '\u2111': MO.ORD,      // \Im
+        '\u2113': MO.ORD,      // \ell
+        '\u2118': MO.ORD,      // \wp
+        '\u211C': MO.ORD,      // \Re
+        '\u2205': MO.ORD,      // \emptyset
+        '\u221E': MO.ORD,      // \infty
+        '\u2305': MO.BIN3,     // barwedge
+        '\u2306': MO.BIN3,     // doublebarwedge
+        '\u2322': MO.REL4,     // \frown
+        '\u2323': MO.REL4,     // \smile
+        '\u2329': MO.OPEN,     // langle
+        '\u232A': MO.CLOSE,    // rangle
+        '\u23AA': MO.ORD,      // \bracevert
+        '\u23AF': [0,0,TEXCLASS.ORD,{stretchy: true}], // \underline
+        '\u23B0': MO.OPEN,     // \lmoustache
+        '\u23B1': MO.CLOSE,    // \rmoustache
+        '\u2500': MO.ORD,      // horizontal line
+        '\u25EF': MO.BIN3,     // \bigcirc
+        '\u2660': MO.ORD,      // \spadesuit
+        '\u2661': MO.ORD,      // \heartsuit
+        '\u2662': MO.ORD,      // \diamondsuit
+        '\u2663': MO.ORD,      // \clubsuit
+        '\u3008': MO.OPEN,     // langle
+        '\u3009': MO.CLOSE,    // rangle
+        '\uFE37': MO.WIDEACCENT, // horizontal brace down
+        '\uFE38': MO.WIDEACCENT  // horizontal brace up
+      }
+    }
+  },{
+    OPTYPES: MO
+  });
+  
+  //
+  //  These are not in the W3C table, but FF works this way,
+  //  and it makes sense, so add it here
+  //
+  MML.mo.prototype.OPTABLE.infix["^"] = MO.WIDEREL;
+  MML.mo.prototype.OPTABLE.infix["_"] = MO.WIDEREL;
+  
+})(MathJax.ElementJax.mml);
+
+MathJax.ElementJax.mml.loadComplete("jax.js");
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/Arrows.js b/data/mathjax/unpacked/jax/element/mml/optable/Arrows.js
new file mode 100644
index 0000000..a063c8c
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/Arrows.js
@@ -0,0 +1,122 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/Arrows.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      infix: {
+        '\u219A': MO.RELACCENT, // leftwards arrow with stroke
+        '\u219B': MO.RELACCENT, // rightwards arrow with stroke
+        '\u219C': MO.WIDEREL,  // leftwards wave arrow
+        '\u219D': MO.WIDEREL,  // rightwards wave arrow
+        '\u219E': MO.WIDEREL,  // leftwards two headed arrow
+        '\u219F': MO.WIDEREL,  // upwards two headed arrow
+        '\u21A0': MO.WIDEREL,  // rightwards two headed arrow
+        '\u21A1': MO.RELSTRETCH, // downwards two headed arrow
+        '\u21A2': MO.WIDEREL,  // leftwards arrow with tail
+        '\u21A3': MO.WIDEREL,  // rightwards arrow with tail
+        '\u21A4': MO.WIDEREL,  // leftwards arrow from bar
+        '\u21A5': MO.RELSTRETCH, // upwards arrow from bar
+        '\u21A7': MO.RELSTRETCH, // downwards arrow from bar
+        '\u21A8': MO.RELSTRETCH, // up down arrow with base
+        '\u21AB': MO.WIDEREL,  // leftwards arrow with loop
+        '\u21AC': MO.WIDEREL,  // rightwards arrow with loop
+        '\u21AD': MO.WIDEREL,  // left right wave arrow
+        '\u21AE': MO.RELACCENT, // left right arrow with stroke
+        '\u21AF': MO.RELSTRETCH, // downwards zigzag arrow
+        '\u21B0': MO.RELSTRETCH, // upwards arrow with tip leftwards
+        '\u21B1': MO.RELSTRETCH, // upwards arrow with tip rightwards
+        '\u21B2': MO.RELSTRETCH, // downwards arrow with tip leftwards
+        '\u21B3': MO.RELSTRETCH, // downwards arrow with tip rightwards
+        '\u21B4': MO.RELSTRETCH, // rightwards arrow with corner downwards
+        '\u21B5': MO.RELSTRETCH, // downwards arrow with corner leftwards
+        '\u21B6': MO.RELACCENT, // anticlockwise top semicircle arrow
+        '\u21B7': MO.RELACCENT, // clockwise top semicircle arrow
+        '\u21B8': MO.REL,      // north west arrow to long bar
+        '\u21B9': MO.WIDEREL,  // leftwards arrow to bar over rightwards arrow to bar
+        '\u21BA': MO.REL,      // anticlockwise open circle arrow
+        '\u21BB': MO.REL,      // clockwise open circle arrow
+        '\u21BE': MO.RELSTRETCH, // upwards harpoon with barb rightwards
+        '\u21BF': MO.RELSTRETCH, // upwards harpoon with barb leftwards
+        '\u21C2': MO.RELSTRETCH, // downwards harpoon with barb rightwards
+        '\u21C3': MO.RELSTRETCH, // downwards harpoon with barb leftwards
+        '\u21C4': MO.WIDEREL,  // rightwards arrow over leftwards arrow
+        '\u21C5': MO.RELSTRETCH, // upwards arrow leftwards of downwards arrow
+        '\u21C6': MO.WIDEREL,  // leftwards arrow over rightwards arrow
+        '\u21C7': MO.WIDEREL,  // leftwards paired arrows
+        '\u21C8': MO.RELSTRETCH, // upwards paired arrows
+        '\u21C9': MO.WIDEREL,  // rightwards paired arrows
+        '\u21CA': MO.RELSTRETCH, // downwards paired arrows
+        '\u21CB': MO.WIDEREL,  // leftwards harpoon over rightwards harpoon
+        '\u21CD': MO.RELACCENT, // leftwards double arrow with stroke
+        '\u21CE': MO.RELACCENT, // left right double arrow with stroke
+        '\u21CF': MO.RELACCENT, // rightwards double arrow with stroke
+        '\u21D6': MO.RELSTRETCH, // north west double arrow
+        '\u21D7': MO.RELSTRETCH, // north east double arrow
+        '\u21D8': MO.RELSTRETCH, // south east double arrow
+        '\u21D9': MO.RELSTRETCH, // south west double arrow
+        '\u21DA': MO.WIDEREL,  // leftwards triple arrow
+        '\u21DB': MO.WIDEREL,  // rightwards triple arrow
+        '\u21DC': MO.WIDEREL,  // leftwards squiggle arrow
+        '\u21DD': MO.WIDEREL,  // rightwards squiggle arrow
+        '\u21DE': MO.REL,      // upwards arrow with double stroke
+        '\u21DF': MO.REL,      // downwards arrow with double stroke
+        '\u21E0': MO.WIDEREL,  // leftwards dashed arrow
+        '\u21E1': MO.RELSTRETCH, // upwards dashed arrow
+        '\u21E2': MO.WIDEREL,  // rightwards dashed arrow
+        '\u21E3': MO.RELSTRETCH, // downwards dashed arrow
+        '\u21E4': MO.WIDEREL,  // leftwards arrow to bar
+        '\u21E5': MO.WIDEREL,  // rightwards arrow to bar
+        '\u21E6': MO.WIDEREL,  // leftwards white arrow
+        '\u21E7': MO.RELSTRETCH, // upwards white arrow
+        '\u21E8': MO.WIDEREL,  // rightwards white arrow
+        '\u21E9': MO.RELSTRETCH, // downwards white arrow
+        '\u21EA': MO.RELSTRETCH, // upwards white arrow from bar
+        '\u21EB': MO.RELSTRETCH, // upwards white arrow on pedestal
+        '\u21EC': MO.RELSTRETCH, // upwards white arrow on pedestal with horizontal bar
+        '\u21ED': MO.RELSTRETCH, // upwards white arrow on pedestal with vertical bar
+        '\u21EE': MO.RELSTRETCH, // upwards white double arrow
+        '\u21EF': MO.RELSTRETCH, // upwards white double arrow on pedestal
+        '\u21F0': MO.WIDEREL,  // rightwards white arrow from wall
+        '\u21F1': MO.REL,      // north west arrow to corner
+        '\u21F2': MO.REL,      // south east arrow to corner
+        '\u21F3': MO.RELSTRETCH, // up down white arrow
+        '\u21F4': MO.RELACCENT, // right arrow with small circle
+        '\u21F5': MO.RELSTRETCH, // downwards arrow leftwards of upwards arrow
+        '\u21F6': MO.WIDEREL,  // three rightwards arrows
+        '\u21F7': MO.RELACCENT, // leftwards arrow with vertical stroke
+        '\u21F8': MO.RELACCENT, // rightwards arrow with vertical stroke
+        '\u21F9': MO.RELACCENT, // left right arrow with vertical stroke
+        '\u21FA': MO.RELACCENT, // leftwards arrow with double vertical stroke
+        '\u21FB': MO.RELACCENT, // rightwards arrow with double vertical stroke
+        '\u21FC': MO.RELACCENT, // left right arrow with double vertical stroke
+        '\u21FD': MO.WIDEREL,  // leftwards open-headed arrow
+        '\u21FE': MO.WIDEREL,  // rightwards open-headed arrow
+        '\u21FF': MO.WIDEREL   // left right open-headed arrow
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/Arrows.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/BasicLatin.js b/data/mathjax/unpacked/jax/element/mml/optable/BasicLatin.js
new file mode 100644
index 0000000..5bf2957
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/BasicLatin.js
@@ -0,0 +1,65 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/BasicLatin.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      prefix: {
+        '||': [0,0,TEXCLASS.BIN,{fence: true, stretchy: true, symmetric: true}], // multiple character operator: ||
+        '|||': [0,0,TEXCLASS.ORD,{fence: true, stretchy: true, symmetric: true}]  // multiple character operator: |||
+      },
+      postfix: {
+        '!!': [1,0,TEXCLASS.BIN], // multiple character operator: !!
+        '\'': MO.ACCENT,       // apostrophe
+        '++': [0,0,TEXCLASS.BIN], // multiple character operator: ++
+        '--': [0,0,TEXCLASS.BIN], // multiple character operator: --
+        '..': [0,0,TEXCLASS.BIN], // multiple character operator: ..
+        '...': MO.ORD,         // multiple character operator: ...
+        '||': [0,0,TEXCLASS.BIN,{fence: true, stretchy: true, symmetric: true}], // multiple character operator: ||
+        '|||': [0,0,TEXCLASS.ORD,{fence: true, stretchy: true, symmetric: true}]  // multiple character operator: |||
+      },
+      infix: {
+        '!=': MO.BIN4,         // multiple character operator: !=
+        '&&': MO.BIN4,         // multiple character operator: &&
+        '**': [1,1,TEXCLASS.BIN], // multiple character operator: **
+        '*=': MO.BIN4,         // multiple character operator: *=
+        '+=': MO.BIN4,         // multiple character operator: +=
+        '-=': MO.BIN4,         // multiple character operator: -=
+        '->': MO.BIN5,         // multiple character operator: ->
+        '//': [1,1,TEXCLASS.BIN], // multiple character operator: //
+        '/=': MO.BIN4,         // multiple character operator: /=
+        ':=': MO.BIN4,         // multiple character operator: :=
+        '<=': MO.BIN5,         // multiple character operator: <=
+        '<>': [1,1,TEXCLASS.BIN], // multiple character operator: <>
+        '==': MO.BIN4,         // multiple character operator: ==
+        '>=': MO.BIN5,         // multiple character operator: >=
+        '@': MO.ORD11,         // commercial at
+        '||': [2,2,TEXCLASS.BIN,{fence: true, stretchy: true, symmetric: true}], // multiple character operator: ||
+        '|||': [2,2,TEXCLASS.ORD,{fence: true, stretchy: true, symmetric: true}]  // multiple character operator: |||
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/BasicLatin.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/CombDiacritMarks.js b/data/mathjax/unpacked/jax/element/mml/optable/CombDiacritMarks.js
new file mode 100644
index 0000000..a4675c4
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/CombDiacritMarks.js
@@ -0,0 +1,35 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/CombDiacritMarks.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      postfix: {
+        '\u0311': MO.ACCENT    // combining inverted breve
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/CombDiacritMarks.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/CombDiactForSymbols.js b/data/mathjax/unpacked/jax/element/mml/optable/CombDiactForSymbols.js
new file mode 100644
index 0000000..c26052d
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/CombDiactForSymbols.js
@@ -0,0 +1,36 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/CombDiactForSymbols.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      postfix: {
+        '\u20DB': MO.ACCENT,   // combining three dots above
+        '\u20DC': MO.ACCENT    // combining four dots above
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/CombDiactForSymbols.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/Dingbats.js b/data/mathjax/unpacked/jax/element/mml/optable/Dingbats.js
new file mode 100644
index 0000000..aa24c74
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/Dingbats.js
@@ -0,0 +1,38 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/Dingbats.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      prefix: {
+        '\u2772': MO.OPEN      // light left tortoise shell bracket ornament
+      },
+      postfix: {
+        '\u2773': MO.CLOSE     // light right tortoise shell bracket ornament
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/Dingbats.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/GeneralPunctuation.js b/data/mathjax/unpacked/jax/element/mml/optable/GeneralPunctuation.js
new file mode 100644
index 0000000..4e9e775
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/GeneralPunctuation.js
@@ -0,0 +1,42 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/GeneralPunctuation.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      prefix: {
+        '\u2016': [0,0,TEXCLASS.ORD,{fence: true, stretchy: true}], // double vertical line
+        '\u2018': [0,0,TEXCLASS.OPEN,{fence: true}], // left single quotation mark
+        '\u201C': [0,0,TEXCLASS.OPEN,{fence: true}]  // left double quotation mark
+      },
+      postfix: {
+        '\u2016': [0,0,TEXCLASS.ORD,{fence: true, stretchy: true}], // double vertical line
+        '\u2019': [0,0,TEXCLASS.CLOSE,{fence: true}], // right single quotation mark
+        '\u201D': [0,0,TEXCLASS.CLOSE,{fence: true}]  // right double quotation mark
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/GeneralPunctuation.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/GeometricShapes.js b/data/mathjax/unpacked/jax/element/mml/optable/GeometricShapes.js
new file mode 100644
index 0000000..4f373d0
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/GeometricShapes.js
@@ -0,0 +1,66 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/GeometricShapes.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      infix: {
+        '\u25A0': MO.BIN3,     // black square
+        '\u25A1': MO.BIN3,     // white square
+        '\u25AA': MO.BIN3,     // black small square
+        '\u25AB': MO.BIN3,     // white small square
+        '\u25AD': MO.BIN3,     // white rectangle
+        '\u25AE': MO.BIN3,     // black vertical rectangle
+        '\u25AF': MO.BIN3,     // white vertical rectangle
+        '\u25B0': MO.BIN3,     // black parallelogram
+        '\u25B1': MO.BIN3,     // white parallelogram
+        '\u25B2': MO.BIN4,     // black up-pointing triangle
+        '\u25B4': MO.BIN4,     // black up-pointing small triangle
+        '\u25B6': MO.BIN4,     // black right-pointing triangle
+        '\u25B7': MO.BIN4,     // white right-pointing triangle
+        '\u25B8': MO.BIN4,     // black right-pointing small triangle
+        '\u25BC': MO.BIN4,     // black down-pointing triangle
+        '\u25BE': MO.BIN4,     // black down-pointing small triangle
+        '\u25C0': MO.BIN4,     // black left-pointing triangle
+        '\u25C1': MO.BIN4,     // white left-pointing triangle
+        '\u25C2': MO.BIN4,     // black left-pointing small triangle
+        '\u25C4': MO.BIN4,     // black left-pointing pointer
+        '\u25C5': MO.BIN4,     // white left-pointing pointer
+        '\u25C6': MO.BIN4,     // black diamond
+        '\u25C7': MO.BIN4,     // white diamond
+        '\u25C8': MO.BIN4,     // white diamond containing black small diamond
+        '\u25C9': MO.BIN4,     // fisheye
+        '\u25CC': MO.BIN4,     // dotted circle
+        '\u25CD': MO.BIN4,     // circle with vertical fill
+        '\u25CE': MO.BIN4,     // bullseye
+        '\u25CF': MO.BIN4,     // black circle
+        '\u25D6': MO.BIN4,     // left half black circle
+        '\u25D7': MO.BIN4,     // right half black circle
+        '\u25E6': MO.BIN4      // white bullet
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/GeometricShapes.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/GreekAndCoptic.js b/data/mathjax/unpacked/jax/element/mml/optable/GreekAndCoptic.js
new file mode 100644
index 0000000..e49775e
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/GreekAndCoptic.js
@@ -0,0 +1,35 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/GreekAndCoptic.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      infix: {
+        '\u03F6': MO.REL       // greek reversed lunate epsilon symbol
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/GreekAndCoptic.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/Latin1Supplement.js b/data/mathjax/unpacked/jax/element/mml/optable/Latin1Supplement.js
new file mode 100644
index 0000000..2f426e7
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/Latin1Supplement.js
@@ -0,0 +1,37 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/Latin1Supplement.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      postfix: {
+        '\u00B0': MO.ORD,      // degree sign
+        '\u00B4': MO.ACCENT,   // acute accent
+        '\u00B8': MO.ACCENT    // cedilla
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/Latin1Supplement.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/LetterlikeSymbols.js b/data/mathjax/unpacked/jax/element/mml/optable/LetterlikeSymbols.js
new file mode 100644
index 0000000..345650e
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/LetterlikeSymbols.js
@@ -0,0 +1,36 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/LetterlikeSymbols.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      prefix: {
+        '\u2145': MO.ORD21,    // double-struck italic capital d
+        '\u2146': [2,0,TEXCLASS.ORD]  // double-struck italic small d
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/LetterlikeSymbols.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/MathOperators.js b/data/mathjax/unpacked/jax/element/mml/optable/MathOperators.js
new file mode 100644
index 0000000..02c89be
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/MathOperators.js
@@ -0,0 +1,228 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/MathOperators.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      prefix: {
+        '\u2204': MO.ORD21,    // there does not exist
+        '\u221B': MO.ORD11,    // cube root
+        '\u221C': MO.ORD11,    // fourth root
+        '\u2221': MO.ORD,      // measured angle
+        '\u2222': MO.ORD,      // spherical angle
+        '\u222C': MO.INTEGRAL, // double integral
+        '\u222D': MO.INTEGRAL, // triple integral
+        '\u222F': MO.INTEGRAL, // surface integral
+        '\u2230': MO.INTEGRAL, // volume integral
+        '\u2231': MO.INTEGRAL, // clockwise integral
+        '\u2232': MO.INTEGRAL, // clockwise contour integral
+        '\u2233': MO.INTEGRAL  // anticlockwise contour integral
+      },
+      infix: {
+        '\u2201': [1,2,TEXCLASS.ORD], // complement
+        '\u2206': MO.BIN3,     // increment
+        '\u220A': MO.REL,      // small element of
+        '\u220C': MO.REL,      // does not contain as member
+        '\u220D': MO.REL,      // small contains as member
+        '\u220E': MO.BIN3,     // end of proof
+        '\u2214': MO.BIN4,     // dot plus
+        '\u221F': MO.REL,      // right angle
+        '\u2224': MO.REL,      // does not divide
+        '\u2226': MO.REL,      // not parallel to
+        '\u2234': MO.REL,      // therefore
+        '\u2235': MO.REL,      // because
+        '\u2236': MO.REL,      // ratio
+        '\u2237': MO.REL,      // proportion
+        '\u2238': MO.BIN4,     // dot minus
+        '\u2239': MO.REL,      // excess
+        '\u223A': MO.BIN4,     // geometric proportion
+        '\u223B': MO.REL,      // homothetic
+        '\u223D': MO.REL,      // reversed tilde
+        '\u223D\u0331': MO.BIN3, // reversed tilde with underline
+        '\u223E': MO.REL,      // inverted lazy s
+        '\u223F': MO.BIN3,     // sine wave
+        '\u2241': MO.REL,      // not tilde
+        '\u2242': MO.REL,      // minus tilde
+        '\u2242\u0338': MO.REL, // minus tilde with slash
+        '\u2244': MO.REL,      // not asymptotically equal to
+        '\u2246': MO.REL,      // approximately but not actually equal to
+        '\u2247': MO.REL,      // neither approximately nor actually equal to
+        '\u2249': MO.REL,      // not almost equal to
+        '\u224A': MO.REL,      // almost equal or equal to
+        '\u224B': MO.REL,      // triple tilde
+        '\u224C': MO.REL,      // all equal to
+        '\u224E': MO.REL,      // geometrically equivalent to
+        '\u224E\u0338': MO.REL, // geometrically equivalent to with slash
+        '\u224F': MO.REL,      // difference between
+        '\u224F\u0338': MO.REL, // difference between with slash
+        '\u2251': MO.REL,      // geometrically equal to
+        '\u2252': MO.REL,      // approximately equal to or the image of
+        '\u2253': MO.REL,      // image of or approximately equal to
+        '\u2254': MO.REL,      // colon equals
+        '\u2255': MO.REL,      // equals colon
+        '\u2256': MO.REL,      // ring in equal to
+        '\u2257': MO.REL,      // ring equal to
+        '\u2258': MO.REL,      // corresponds to
+        '\u2259': MO.REL,      // estimates
+        '\u225A': MO.REL,      // equiangular to
+        '\u225C': MO.REL,      // delta equal to
+        '\u225D': MO.REL,      // equal to by definition
+        '\u225E': MO.REL,      // measured by
+        '\u225F': MO.REL,      // questioned equal to
+        '\u2262': MO.REL,      // not identical to
+        '\u2263': MO.REL,      // strictly equivalent to
+        '\u2266': MO.REL,      // less-than over equal to
+        '\u2266\u0338': MO.REL, // less-than over equal to with slash
+        '\u2267': MO.REL,      // greater-than over equal to
+        '\u2268': MO.REL,      // less-than but not equal to
+        '\u2269': MO.REL,      // greater-than but not equal to
+        '\u226A\u0338': MO.REL, // much less than with slash
+        '\u226B\u0338': MO.REL, // much greater than with slash
+        '\u226C': MO.REL,      // between
+        '\u226D': MO.REL,      // not equivalent to
+        '\u226E': MO.REL,      // not less-than
+        '\u226F': MO.REL,      // not greater-than
+        '\u2270': MO.REL,      // neither less-than nor equal to
+        '\u2271': MO.REL,      // neither greater-than nor equal to
+        '\u2272': MO.REL,      // less-than or equivalent to
+        '\u2273': MO.REL,      // greater-than or equivalent to
+        '\u2274': MO.REL,      // neither less-than nor equivalent to
+        '\u2275': MO.REL,      // neither greater-than nor equivalent to
+        '\u2276': MO.REL,      // less-than or greater-than
+        '\u2277': MO.REL,      // greater-than or less-than
+        '\u2278': MO.REL,      // neither less-than nor greater-than
+        '\u2279': MO.REL,      // neither greater-than nor less-than
+        '\u227C': MO.REL,      // precedes or equal to
+        '\u227D': MO.REL,      // succeeds or equal to
+        '\u227E': MO.REL,      // precedes or equivalent to
+        '\u227F': MO.REL,      // succeeds or equivalent to
+        '\u227F\u0338': MO.REL, // succeeds or equivalent to with slash
+        '\u2280': MO.REL,      // does not precede
+        '\u2281': MO.REL,      // does not succeed
+        '\u2282\u20D2': MO.REL, // subset of with vertical line
+        '\u2283\u20D2': MO.REL, // superset of with vertical line
+        '\u2284': MO.REL,      // not a subset of
+        '\u2285': MO.REL,      // not a superset of
+        '\u2288': MO.REL,      // neither a subset of nor equal to
+        '\u2289': MO.REL,      // neither a superset of nor equal to
+        '\u228A': MO.REL,      // subset of with not equal to
+        '\u228B': MO.REL,      // superset of with not equal to
+        '\u228C': MO.BIN4,     // multiset
+        '\u228D': MO.BIN4,     // multiset multiplication
+        '\u228F': MO.REL,      // square image of
+        '\u228F\u0338': MO.REL, // square image of with slash
+        '\u2290': MO.REL,      // square original of
+        '\u2290\u0338': MO.REL, // square original of with slash
+        '\u229A': MO.BIN4,     // circled ring operator
+        '\u229B': MO.BIN4,     // circled asterisk operator
+        '\u229C': MO.BIN4,     // circled equals
+        '\u229D': MO.BIN4,     // circled dash
+        '\u229E': MO.BIN4,     // squared plus
+        '\u229F': MO.BIN4,     // squared minus
+        '\u22A0': MO.BIN4,     // squared times
+        '\u22A1': MO.BIN4,     // squared dot operator
+        '\u22A6': MO.REL,      // assertion
+        '\u22A7': MO.REL,      // models
+        '\u22A9': MO.REL,      // forces
+        '\u22AA': MO.REL,      // triple vertical bar right turnstile
+        '\u22AB': MO.REL,      // double vertical bar double right turnstile
+        '\u22AC': MO.REL,      // does not prove
+        '\u22AD': MO.REL,      // not true
+        '\u22AE': MO.REL,      // does not force
+        '\u22AF': MO.REL,      // negated double vertical bar double right turnstile
+        '\u22B0': MO.REL,      // precedes under relation
+        '\u22B1': MO.REL,      // succeeds under relation
+        '\u22B2': MO.REL,      // normal subgroup of
+        '\u22B3': MO.REL,      // contains as normal subgroup
+        '\u22B4': MO.REL,      // normal subgroup of or equal to
+        '\u22B5': MO.REL,      // contains as normal subgroup or equal to
+        '\u22B6': MO.REL,      // original of
+        '\u22B7': MO.REL,      // image of
+        '\u22B8': MO.REL,      // multimap
+        '\u22B9': MO.REL,      // hermitian conjugate matrix
+        '\u22BA': MO.BIN4,     // intercalate
+        '\u22BB': MO.BIN4,     // xor
+        '\u22BC': MO.BIN4,     // nand
+        '\u22BD': MO.BIN4,     // nor
+        '\u22BE': MO.BIN3,     // right angle with arc
+        '\u22BF': MO.BIN3,     // right triangle
+        '\u22C7': MO.BIN4,     // division times
+        '\u22C9': MO.BIN4,     // left normal factor semidirect product
+        '\u22CA': MO.BIN4,     // right normal factor semidirect product
+        '\u22CB': MO.BIN4,     // left semidirect product
+        '\u22CC': MO.BIN4,     // right semidirect product
+        '\u22CD': MO.REL,      // reversed tilde equals
+        '\u22CE': MO.BIN4,     // curly logical or
+        '\u22CF': MO.BIN4,     // curly logical and
+        '\u22D0': MO.REL,      // double subset
+        '\u22D1': MO.REL,      // double superset
+        '\u22D2': MO.BIN4,     // double intersection
+        '\u22D3': MO.BIN4,     // double union
+        '\u22D4': MO.REL,      // pitchfork
+        '\u22D5': MO.REL,      // equal and parallel to
+        '\u22D6': MO.REL,      // less-than with dot
+        '\u22D7': MO.REL,      // greater-than with dot
+        '\u22D8': MO.REL,      // very much less-than
+        '\u22D9': MO.REL,      // very much greater-than
+        '\u22DA': MO.REL,      // less-than equal to or greater-than
+        '\u22DB': MO.REL,      // greater-than equal to or less-than
+        '\u22DC': MO.REL,      // equal to or less-than
+        '\u22DD': MO.REL,      // equal to or greater-than
+        '\u22DE': MO.REL,      // equal to or precedes
+        '\u22DF': MO.REL,      // equal to or succeeds
+        '\u22E0': MO.REL,      // does not precede or equal
+        '\u22E1': MO.REL,      // does not succeed or equal
+        '\u22E2': MO.REL,      // not square image of or equal to
+        '\u22E3': MO.REL,      // not square original of or equal to
+        '\u22E4': MO.REL,      // square image of or not equal to
+        '\u22E5': MO.REL,      // square original of or not equal to
+        '\u22E6': MO.REL,      // less-than but not equivalent to
+        '\u22E7': MO.REL,      // greater-than but not equivalent to
+        '\u22E8': MO.REL,      // precedes but not equivalent to
+        '\u22E9': MO.REL,      // succeeds but not equivalent to
+        '\u22EA': MO.REL,      // not normal subgroup of
+        '\u22EB': MO.REL,      // does not contain as normal subgroup
+        '\u22EC': MO.REL,      // not normal subgroup of or equal to
+        '\u22ED': MO.REL,      // does not contain as normal subgroup or equal
+        '\u22F0': MO.REL,      // up right diagonal ellipsis
+        '\u22F2': MO.REL,      // element of with long horizontal stroke
+        '\u22F3': MO.REL,      // element of with vertical bar at end of horizontal stroke
+        '\u22F4': MO.REL,      // small element of with vertical bar at end of horizontal stroke
+        '\u22F5': MO.REL,      // element of with dot above
+        '\u22F6': MO.REL,      // element of with overbar
+        '\u22F7': MO.REL,      // small element of with overbar
+        '\u22F8': MO.REL,      // element of with underbar
+        '\u22F9': MO.REL,      // element of with two horizontal strokes
+        '\u22FA': MO.REL,      // contains with long horizontal stroke
+        '\u22FB': MO.REL,      // contains with vertical bar at end of horizontal stroke
+        '\u22FC': MO.REL,      // small contains with vertical bar at end of horizontal stroke
+        '\u22FD': MO.REL,      // contains with overbar
+        '\u22FE': MO.REL,      // small contains with overbar
+        '\u22FF': MO.REL       // z notation bag membership
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/MathOperators.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/MiscMathSymbolsA.js b/data/mathjax/unpacked/jax/element/mml/optable/MiscMathSymbolsA.js
new file mode 100644
index 0000000..83f16a5
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/MiscMathSymbolsA.js
@@ -0,0 +1,42 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/MiscMathSymbolsA.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      prefix: {
+        '\u27E6': MO.OPEN,     // mathematical left white square bracket
+        '\u27EA': MO.OPEN,     // mathematical left double angle bracket
+        '\u27EC': MO.OPEN      // mathematical left white tortoise shell bracket
+      },
+      postfix: {
+        '\u27E7': MO.CLOSE,    // mathematical right white square bracket
+        '\u27EB': MO.CLOSE,    // mathematical right double angle bracket
+        '\u27ED': MO.CLOSE     // mathematical right white tortoise shell bracket
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/MiscMathSymbolsA.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/MiscMathSymbolsB.js b/data/mathjax/unpacked/jax/element/mml/optable/MiscMathSymbolsB.js
new file mode 100644
index 0000000..2117d88
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/MiscMathSymbolsB.js
@@ -0,0 +1,168 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/MiscMathSymbolsB.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      prefix: {
+        '\u2980': [0,0,TEXCLASS.ORD,{fence: true, stretchy: true}], // triple vertical bar delimiter
+        '\u2983': MO.OPEN,     // left white curly bracket
+        '\u2985': MO.OPEN,     // left white parenthesis
+        '\u2987': MO.OPEN,     // z notation left image bracket
+        '\u2989': MO.OPEN,     // z notation left binding bracket
+        '\u298B': MO.OPEN,     // left square bracket with underbar
+        '\u298D': MO.OPEN,     // left square bracket with tick in top corner
+        '\u298F': MO.OPEN,     // left square bracket with tick in bottom corner
+        '\u2991': MO.OPEN,     // left angle bracket with dot
+        '\u2993': MO.OPEN,     // left arc less-than bracket
+        '\u2995': MO.OPEN,     // double left arc greater-than bracket
+        '\u2997': MO.OPEN,     // left black tortoise shell bracket
+        '\u29FC': MO.OPEN      // left-pointing curved angle bracket
+      },
+      postfix: {
+        '\u2980': [0,0,TEXCLASS.ORD,{fence: true, stretchy: true}], // triple vertical bar delimiter
+        '\u2984': MO.CLOSE,    // right white curly bracket
+        '\u2986': MO.CLOSE,    // right white parenthesis
+        '\u2988': MO.CLOSE,    // z notation right image bracket
+        '\u298A': MO.CLOSE,    // z notation right binding bracket
+        '\u298C': MO.CLOSE,    // right square bracket with underbar
+        '\u298E': MO.CLOSE,    // right square bracket with tick in bottom corner
+        '\u2990': MO.CLOSE,    // right square bracket with tick in top corner
+        '\u2992': MO.CLOSE,    // right angle bracket with dot
+        '\u2994': MO.CLOSE,    // right arc greater-than bracket
+        '\u2996': MO.CLOSE,    // double right arc less-than bracket
+        '\u2998': MO.CLOSE,    // right black tortoise shell bracket
+        '\u29FD': MO.CLOSE     // right-pointing curved angle bracket
+      },
+      infix: {
+        '\u2981': MO.BIN3,     // z notation spot
+        '\u2982': MO.BIN3,     // z notation type colon
+        '\u2999': MO.BIN3,     // dotted fence
+        '\u299A': MO.BIN3,     // vertical zigzag line
+        '\u299B': MO.BIN3,     // measured angle opening left
+        '\u299C': MO.BIN3,     // right angle variant with square
+        '\u299D': MO.BIN3,     // measured right angle with dot
+        '\u299E': MO.BIN3,     // angle with s inside
+        '\u299F': MO.BIN3,     // acute angle
+        '\u29A0': MO.BIN3,     // spherical angle opening left
+        '\u29A1': MO.BIN3,     // spherical angle opening up
+        '\u29A2': MO.BIN3,     // turned angle
+        '\u29A3': MO.BIN3,     // reversed angle
+        '\u29A4': MO.BIN3,     // angle with underbar
+        '\u29A5': MO.BIN3,     // reversed angle with underbar
+        '\u29A6': MO.BIN3,     // oblique angle opening up
+        '\u29A7': MO.BIN3,     // oblique angle opening down
+        '\u29A8': MO.BIN3,     // measured angle with open arm ending in arrow pointing up and right
+        '\u29A9': MO.BIN3,     // measured angle with open arm ending in arrow pointing up and left
+        '\u29AA': MO.BIN3,     // measured angle with open arm ending in arrow pointing down and right
+        '\u29AB': MO.BIN3,     // measured angle with open arm ending in arrow pointing down and left
+        '\u29AC': MO.BIN3,     // measured angle with open arm ending in arrow pointing right and up
+        '\u29AD': MO.BIN3,     // measured angle with open arm ending in arrow pointing left and up
+        '\u29AE': MO.BIN3,     // measured angle with open arm ending in arrow pointing right and down
+        '\u29AF': MO.BIN3,     // measured angle with open arm ending in arrow pointing left and down
+        '\u29B0': MO.BIN3,     // reversed empty set
+        '\u29B1': MO.BIN3,     // empty set with overbar
+        '\u29B2': MO.BIN3,     // empty set with small circle above
+        '\u29B3': MO.BIN3,     // empty set with right arrow above
+        '\u29B4': MO.BIN3,     // empty set with left arrow above
+        '\u29B5': MO.BIN3,     // circle with horizontal bar
+        '\u29B6': MO.BIN4,     // circled vertical bar
+        '\u29B7': MO.BIN4,     // circled parallel
+        '\u29B8': MO.BIN4,     // circled reverse solidus
+        '\u29B9': MO.BIN4,     // circled perpendicular
+        '\u29BA': MO.BIN4,     // circle divided by horizontal bar and top half divided by vertical bar
+        '\u29BB': MO.BIN4,     // circle with superimposed x
+        '\u29BC': MO.BIN4,     // circled anticlockwise-rotated division sign
+        '\u29BD': MO.BIN4,     // up arrow through circle
+        '\u29BE': MO.BIN4,     // circled white bullet
+        '\u29BF': MO.BIN4,     // circled bullet
+        '\u29C0': MO.REL,      // circled less-than
+        '\u29C1': MO.REL,      // circled greater-than
+        '\u29C2': MO.BIN3,     // circle with small circle to the right
+        '\u29C3': MO.BIN3,     // circle with two horizontal strokes to the right
+        '\u29C4': MO.BIN4,     // squared rising diagonal slash
+        '\u29C5': MO.BIN4,     // squared falling diagonal slash
+        '\u29C6': MO.BIN4,     // squared asterisk
+        '\u29C7': MO.BIN4,     // squared small circle
+        '\u29C8': MO.BIN4,     // squared square
+        '\u29C9': MO.BIN3,     // two joined squares
+        '\u29CA': MO.BIN3,     // triangle with dot above
+        '\u29CB': MO.BIN3,     // triangle with underbar
+        '\u29CC': MO.BIN3,     // s in triangle
+        '\u29CD': MO.BIN3,     // triangle with serifs at bottom
+        '\u29CE': MO.REL,      // right triangle above left triangle
+        '\u29CF': MO.REL,      // left triangle beside vertical bar
+        '\u29CF\u0338': MO.REL, // left triangle beside vertical bar with slash
+        '\u29D0': MO.REL,      // vertical bar beside right triangle
+        '\u29D0\u0338': MO.REL, // vertical bar beside right triangle with slash
+        '\u29D1': MO.REL,      // bowtie with left half black
+        '\u29D2': MO.REL,      // bowtie with right half black
+        '\u29D3': MO.REL,      // black bowtie
+        '\u29D4': MO.REL,      // times with left half black
+        '\u29D5': MO.REL,      // times with right half black
+        '\u29D6': MO.BIN4,     // white hourglass
+        '\u29D7': MO.BIN4,     // black hourglass
+        '\u29D8': MO.BIN3,     // left wiggly fence
+        '\u29D9': MO.BIN3,     // right wiggly fence
+        '\u29DB': MO.BIN3,     // right double wiggly fence
+        '\u29DC': MO.BIN3,     // incomplete infinity
+        '\u29DD': MO.BIN3,     // tie over infinity
+        '\u29DE': MO.REL,      // infinity negated with vertical bar
+        '\u29DF': MO.BIN3,     // double-ended multimap
+        '\u29E0': MO.BIN3,     // square with contoured outline
+        '\u29E1': MO.REL,      // increases as
+        '\u29E2': MO.BIN4,     // shuffle product
+        '\u29E3': MO.REL,      // equals sign and slanted parallel
+        '\u29E4': MO.REL,      // equals sign and slanted parallel with tilde above
+        '\u29E5': MO.REL,      // identical to and slanted parallel
+        '\u29E6': MO.REL,      // gleich stark
+        '\u29E7': MO.BIN3,     // thermodynamic
+        '\u29E8': MO.BIN3,     // down-pointing triangle with left half black
+        '\u29E9': MO.BIN3,     // down-pointing triangle with right half black
+        '\u29EA': MO.BIN3,     // black diamond with down arrow
+        '\u29EB': MO.BIN3,     // black lozenge
+        '\u29EC': MO.BIN3,     // white circle with down arrow
+        '\u29ED': MO.BIN3,     // black circle with down arrow
+        '\u29EE': MO.BIN3,     // error-barred white square
+        '\u29EF': MO.BIN3,     // error-barred black square
+        '\u29F0': MO.BIN3,     // error-barred white diamond
+        '\u29F1': MO.BIN3,     // error-barred black diamond
+        '\u29F2': MO.BIN3,     // error-barred white circle
+        '\u29F3': MO.BIN3,     // error-barred black circle
+        '\u29F4': MO.REL,      // rule-delayed
+        '\u29F5': MO.BIN4,     // reverse solidus operator
+        '\u29F6': MO.BIN4,     // solidus with overbar
+        '\u29F7': MO.BIN4,     // reverse solidus with horizontal stroke
+        '\u29F8': MO.BIN3,     // big solidus
+        '\u29F9': MO.BIN3,     // big reverse solidus
+        '\u29FA': MO.BIN3,     // double plus
+        '\u29FB': MO.BIN3,     // triple plus
+        '\u29FE': MO.BIN4,     // tiny
+        '\u29FF': MO.BIN4      // miny
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/MiscMathSymbolsB.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/MiscSymbolsAndArrows.js b/data/mathjax/unpacked/jax/element/mml/optable/MiscSymbolsAndArrows.js
new file mode 100644
index 0000000..2609dc1
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/MiscSymbolsAndArrows.js
@@ -0,0 +1,36 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/MiscSymbolsAndArrows.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      infix: {
+        '\u2B45': MO.RELSTRETCH, // leftwards quadruple arrow
+        '\u2B46': MO.RELSTRETCH  // rightwards quadruple arrow
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/MiscSymbolsAndArrows.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/MiscTechnical.js b/data/mathjax/unpacked/jax/element/mml/optable/MiscTechnical.js
new file mode 100644
index 0000000..98b3c4c
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/MiscTechnical.js
@@ -0,0 +1,40 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/MiscTechnical.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      postfix: {
+        '\u23B4': MO.WIDEACCENT, // top square bracket
+        '\u23B5': MO.WIDEACCENT, // bottom square bracket
+        '\u23DC': MO.WIDEACCENT, // top parenthesis
+        '\u23DD': MO.WIDEACCENT, // bottom parenthesis
+        '\u23E0': MO.WIDEACCENT, // top tortoise shell bracket
+        '\u23E1': MO.WIDEACCENT  // bottom tortoise shell bracket
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/MiscTechnical.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/SpacingModLetters.js b/data/mathjax/unpacked/jax/element/mml/optable/SpacingModLetters.js
new file mode 100644
index 0000000..11ffc5d
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/SpacingModLetters.js
@@ -0,0 +1,38 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/SpacingModLetters.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      postfix: {
+        '\u02CD': MO.WIDEACCENT, // modifier letter low macron
+        '\u02DA': MO.ACCENT,   // ring above
+        '\u02DD': MO.ACCENT,   // double acute accent
+        '\u02F7': MO.WIDEACCENT  // modifier letter low tilde
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/SpacingModLetters.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/SuppMathOperators.js b/data/mathjax/unpacked/jax/element/mml/optable/SuppMathOperators.js
new file mode 100644
index 0000000..5e2be20
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/SuppMathOperators.js
@@ -0,0 +1,289 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/SuppMathOperators.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      prefix: {
+        '\u2A03': MO.OP,       // n-ary union operator with dot
+        '\u2A05': MO.OP,       // n-ary square intersection operator
+        '\u2A07': MO.OP,       // two logical and operator
+        '\u2A08': MO.OP,       // two logical or operator
+        '\u2A09': MO.OP,       // n-ary times operator
+        '\u2A0A': MO.OP,       // modulo two sum
+        '\u2A0B': MO.INTEGRAL2, // summation with integral
+        '\u2A0C': MO.INTEGRAL, // quadruple integral operator
+        '\u2A0D': MO.INTEGRAL2, // finite part integral
+        '\u2A0E': MO.INTEGRAL2, // integral with double stroke
+        '\u2A0F': MO.INTEGRAL2, // integral average with slash
+        '\u2A10': MO.OP,       // circulation function
+        '\u2A11': MO.OP,       // anticlockwise integration
+        '\u2A12': MO.OP,       // line integration with rectangular path around pole
+        '\u2A13': MO.OP,       // line integration with semicircular path around pole
+        '\u2A14': MO.OP,       // line integration not including the pole
+        '\u2A15': MO.INTEGRAL2, // integral around a point operator
+        '\u2A16': MO.INTEGRAL2, // quaternion integral operator
+        '\u2A17': MO.INTEGRAL2, // integral with leftwards arrow with hook
+        '\u2A18': MO.INTEGRAL2, // integral with times sign
+        '\u2A19': MO.INTEGRAL2, // integral with intersection
+        '\u2A1A': MO.INTEGRAL2, // integral with union
+        '\u2A1B': MO.INTEGRAL2, // integral with overbar
+        '\u2A1C': MO.INTEGRAL2, // integral with underbar
+        '\u2AFC': MO.OP,       // large triple vertical bar operator
+        '\u2AFF': MO.OP        // n-ary white vertical bar
+      },
+      infix: {
+        '\u2A1D': MO.BIN3,     // join
+        '\u2A1E': MO.BIN3,     // large left triangle operator
+        '\u2A1F': MO.BIN3,     // z notation schema composition
+        '\u2A20': MO.BIN3,     // z notation schema piping
+        '\u2A21': MO.BIN3,     // z notation schema projection
+        '\u2A22': MO.BIN4,     // plus sign with small circle above
+        '\u2A23': MO.BIN4,     // plus sign with circumflex accent above
+        '\u2A24': MO.BIN4,     // plus sign with tilde above
+        '\u2A25': MO.BIN4,     // plus sign with dot below
+        '\u2A26': MO.BIN4,     // plus sign with tilde below
+        '\u2A27': MO.BIN4,     // plus sign with subscript two
+        '\u2A28': MO.BIN4,     // plus sign with black triangle
+        '\u2A29': MO.BIN4,     // minus sign with comma above
+        '\u2A2A': MO.BIN4,     // minus sign with dot below
+        '\u2A2B': MO.BIN4,     // minus sign with falling dots
+        '\u2A2C': MO.BIN4,     // minus sign with rising dots
+        '\u2A2D': MO.BIN4,     // plus sign in left half circle
+        '\u2A2E': MO.BIN4,     // plus sign in right half circle
+        '\u2A30': MO.BIN4,     // multiplication sign with dot above
+        '\u2A31': MO.BIN4,     // multiplication sign with underbar
+        '\u2A32': MO.BIN4,     // semidirect product with bottom closed
+        '\u2A33': MO.BIN4,     // smash product
+        '\u2A34': MO.BIN4,     // multiplication sign in left half circle
+        '\u2A35': MO.BIN4,     // multiplication sign in right half circle
+        '\u2A36': MO.BIN4,     // circled multiplication sign with circumflex accent
+        '\u2A37': MO.BIN4,     // multiplication sign in double circle
+        '\u2A38': MO.BIN4,     // circled division sign
+        '\u2A39': MO.BIN4,     // plus sign in triangle
+        '\u2A3A': MO.BIN4,     // minus sign in triangle
+        '\u2A3B': MO.BIN4,     // multiplication sign in triangle
+        '\u2A3C': MO.BIN4,     // interior product
+        '\u2A3D': MO.BIN4,     // righthand interior product
+        '\u2A3E': MO.BIN4,     // z notation relational composition
+        '\u2A40': MO.BIN4,     // intersection with dot
+        '\u2A41': MO.BIN4,     // union with minus sign
+        '\u2A42': MO.BIN4,     // union with overbar
+        '\u2A43': MO.BIN4,     // intersection with overbar
+        '\u2A44': MO.BIN4,     // intersection with logical and
+        '\u2A45': MO.BIN4,     // union with logical or
+        '\u2A46': MO.BIN4,     // union above intersection
+        '\u2A47': MO.BIN4,     // intersection above union
+        '\u2A48': MO.BIN4,     // union above bar above intersection
+        '\u2A49': MO.BIN4,     // intersection above bar above union
+        '\u2A4A': MO.BIN4,     // union beside and joined with union
+        '\u2A4B': MO.BIN4,     // intersection beside and joined with intersection
+        '\u2A4C': MO.BIN4,     // closed union with serifs
+        '\u2A4D': MO.BIN4,     // closed intersection with serifs
+        '\u2A4E': MO.BIN4,     // double square intersection
+        '\u2A4F': MO.BIN4,     // double square union
+        '\u2A50': MO.BIN4,     // closed union with serifs and smash product
+        '\u2A51': MO.BIN4,     // logical and with dot above
+        '\u2A52': MO.BIN4,     // logical or with dot above
+        '\u2A53': MO.BIN4,     // double logical and
+        '\u2A54': MO.BIN4,     // double logical or
+        '\u2A55': MO.BIN4,     // two intersecting logical and
+        '\u2A56': MO.BIN4,     // two intersecting logical or
+        '\u2A57': MO.BIN4,     // sloping large or
+        '\u2A58': MO.BIN4,     // sloping large and
+        '\u2A59': MO.REL,      // logical or overlapping logical and
+        '\u2A5A': MO.BIN4,     // logical and with middle stem
+        '\u2A5B': MO.BIN4,     // logical or with middle stem
+        '\u2A5C': MO.BIN4,     // logical and with horizontal dash
+        '\u2A5D': MO.BIN4,     // logical or with horizontal dash
+        '\u2A5E': MO.BIN4,     // logical and with double overbar
+        '\u2A5F': MO.BIN4,     // logical and with underbar
+        '\u2A60': MO.BIN4,     // logical and with double underbar
+        '\u2A61': MO.BIN4,     // small vee with underbar
+        '\u2A62': MO.BIN4,     // logical or with double overbar
+        '\u2A63': MO.BIN4,     // logical or with double underbar
+        '\u2A64': MO.BIN4,     // z notation domain antirestriction
+        '\u2A65': MO.BIN4,     // z notation range antirestriction
+        '\u2A66': MO.REL,      // equals sign with dot below
+        '\u2A67': MO.REL,      // identical with dot above
+        '\u2A68': MO.REL,      // triple horizontal bar with double vertical stroke
+        '\u2A69': MO.REL,      // triple horizontal bar with triple vertical stroke
+        '\u2A6A': MO.REL,      // tilde operator with dot above
+        '\u2A6B': MO.REL,      // tilde operator with rising dots
+        '\u2A6C': MO.REL,      // similar minus similar
+        '\u2A6D': MO.REL,      // congruent with dot above
+        '\u2A6E': MO.REL,      // equals with asterisk
+        '\u2A6F': MO.REL,      // almost equal to with circumflex accent
+        '\u2A70': MO.REL,      // approximately equal or equal to
+        '\u2A71': MO.BIN4,     // equals sign above plus sign
+        '\u2A72': MO.BIN4,     // plus sign above equals sign
+        '\u2A73': MO.REL,      // equals sign above tilde operator
+        '\u2A74': MO.REL,      // double colon equal
+        '\u2A75': MO.REL,      // two consecutive equals signs
+        '\u2A76': MO.REL,      // three consecutive equals signs
+        '\u2A77': MO.REL,      // equals sign with two dots above and two dots below
+        '\u2A78': MO.REL,      // equivalent with four dots above
+        '\u2A79': MO.REL,      // less-than with circle inside
+        '\u2A7A': MO.REL,      // greater-than with circle inside
+        '\u2A7B': MO.REL,      // less-than with question mark above
+        '\u2A7C': MO.REL,      // greater-than with question mark above
+        '\u2A7D': MO.REL,      // less-than or slanted equal to
+        '\u2A7D\u0338': MO.REL, // less-than or slanted equal to with slash
+        '\u2A7E': MO.REL,      // greater-than or slanted equal to
+        '\u2A7E\u0338': MO.REL, // greater-than or slanted equal to with slash
+        '\u2A7F': MO.REL,      // less-than or slanted equal to with dot inside
+        '\u2A80': MO.REL,      // greater-than or slanted equal to with dot inside
+        '\u2A81': MO.REL,      // less-than or slanted equal to with dot above
+        '\u2A82': MO.REL,      // greater-than or slanted equal to with dot above
+        '\u2A83': MO.REL,      // less-than or slanted equal to with dot above right
+        '\u2A84': MO.REL,      // greater-than or slanted equal to with dot above left
+        '\u2A85': MO.REL,      // less-than or approximate
+        '\u2A86': MO.REL,      // greater-than or approximate
+        '\u2A87': MO.REL,      // less-than and single-line not equal to
+        '\u2A88': MO.REL,      // greater-than and single-line not equal to
+        '\u2A89': MO.REL,      // less-than and not approximate
+        '\u2A8A': MO.REL,      // greater-than and not approximate
+        '\u2A8B': MO.REL,      // less-than above double-line equal above greater-than
+        '\u2A8C': MO.REL,      // greater-than above double-line equal above less-than
+        '\u2A8D': MO.REL,      // less-than above similar or equal
+        '\u2A8E': MO.REL,      // greater-than above similar or equal
+        '\u2A8F': MO.REL,      // less-than above similar above greater-than
+        '\u2A90': MO.REL,      // greater-than above similar above less-than
+        '\u2A91': MO.REL,      // less-than above greater-than above double-line equal
+        '\u2A92': MO.REL,      // greater-than above less-than above double-line equal
+        '\u2A93': MO.REL,      // less-than above slanted equal above greater-than above slanted equal
+        '\u2A94': MO.REL,      // greater-than above slanted equal above less-than above slanted equal
+        '\u2A95': MO.REL,      // slanted equal to or less-than
+        '\u2A96': MO.REL,      // slanted equal to or greater-than
+        '\u2A97': MO.REL,      // slanted equal to or less-than with dot inside
+        '\u2A98': MO.REL,      // slanted equal to or greater-than with dot inside
+        '\u2A99': MO.REL,      // double-line equal to or less-than
+        '\u2A9A': MO.REL,      // double-line equal to or greater-than
+        '\u2A9B': MO.REL,      // double-line slanted equal to or less-than
+        '\u2A9C': MO.REL,      // double-line slanted equal to or greater-than
+        '\u2A9D': MO.REL,      // similar or less-than
+        '\u2A9E': MO.REL,      // similar or greater-than
+        '\u2A9F': MO.REL,      // similar above less-than above equals sign
+        '\u2AA0': MO.REL,      // similar above greater-than above equals sign
+        '\u2AA1': MO.REL,      // double nested less-than
+        '\u2AA1\u0338': MO.REL, // double nested less-than with slash
+        '\u2AA2': MO.REL,      // double nested greater-than
+        '\u2AA2\u0338': MO.REL, // double nested greater-than with slash
+        '\u2AA3': MO.REL,      // double nested less-than with underbar
+        '\u2AA4': MO.REL,      // greater-than overlapping less-than
+        '\u2AA5': MO.REL,      // greater-than beside less-than
+        '\u2AA6': MO.REL,      // less-than closed by curve
+        '\u2AA7': MO.REL,      // greater-than closed by curve
+        '\u2AA8': MO.REL,      // less-than closed by curve above slanted equal
+        '\u2AA9': MO.REL,      // greater-than closed by curve above slanted equal
+        '\u2AAA': MO.REL,      // smaller than
+        '\u2AAB': MO.REL,      // larger than
+        '\u2AAC': MO.REL,      // smaller than or equal to
+        '\u2AAD': MO.REL,      // larger than or equal to
+        '\u2AAE': MO.REL,      // equals sign with bumpy above
+        '\u2AAF\u0338': MO.REL, // precedes above single-line equals sign with slash
+        '\u2AB0\u0338': MO.REL, // succeeds above single-line equals sign with slash
+        '\u2AB1': MO.REL,      // precedes above single-line not equal to
+        '\u2AB2': MO.REL,      // succeeds above single-line not equal to
+        '\u2AB3': MO.REL,      // precedes above equals sign
+        '\u2AB4': MO.REL,      // succeeds above equals sign
+        '\u2AB5': MO.REL,      // precedes above not equal to
+        '\u2AB6': MO.REL,      // succeeds above not equal to
+        '\u2AB7': MO.REL,      // precedes above almost equal to
+        '\u2AB8': MO.REL,      // succeeds above almost equal to
+        '\u2AB9': MO.REL,      // precedes above not almost equal to
+        '\u2ABA': MO.REL,      // succeeds above not almost equal to
+        '\u2ABB': MO.REL,      // double precedes
+        '\u2ABC': MO.REL,      // double succeeds
+        '\u2ABD': MO.REL,      // subset with dot
+        '\u2ABE': MO.REL,      // superset with dot
+        '\u2ABF': MO.REL,      // subset with plus sign below
+        '\u2AC0': MO.REL,      // superset with plus sign below
+        '\u2AC1': MO.REL,      // subset with multiplication sign below
+        '\u2AC2': MO.REL,      // superset with multiplication sign below
+        '\u2AC3': MO.REL,      // subset of or equal to with dot above
+        '\u2AC4': MO.REL,      // superset of or equal to with dot above
+        '\u2AC5': MO.REL,      // subset of above equals sign
+        '\u2AC6': MO.REL,      // superset of above equals sign
+        '\u2AC7': MO.REL,      // subset of above tilde operator
+        '\u2AC8': MO.REL,      // superset of above tilde operator
+        '\u2AC9': MO.REL,      // subset of above almost equal to
+        '\u2ACA': MO.REL,      // superset of above almost equal to
+        '\u2ACB': MO.REL,      // subset of above not equal to
+        '\u2ACC': MO.REL,      // superset of above not equal to
+        '\u2ACD': MO.REL,      // square left open box operator
+        '\u2ACE': MO.REL,      // square right open box operator
+        '\u2ACF': MO.REL,      // closed subset
+        '\u2AD0': MO.REL,      // closed superset
+        '\u2AD1': MO.REL,      // closed subset or equal to
+        '\u2AD2': MO.REL,      // closed superset or equal to
+        '\u2AD3': MO.REL,      // subset above superset
+        '\u2AD4': MO.REL,      // superset above subset
+        '\u2AD5': MO.REL,      // subset above subset
+        '\u2AD6': MO.REL,      // superset above superset
+        '\u2AD7': MO.REL,      // superset beside subset
+        '\u2AD8': MO.REL,      // superset beside and joined by dash with subset
+        '\u2AD9': MO.REL,      // element of opening downwards
+        '\u2ADA': MO.REL,      // pitchfork with tee top
+        '\u2ADB': MO.REL,      // transversal intersection
+        '\u2ADC': MO.REL,      // forking
+        '\u2ADD': MO.REL,      // nonforking
+        '\u2ADE': MO.REL,      // short left tack
+        '\u2ADF': MO.REL,      // short down tack
+        '\u2AE0': MO.REL,      // short up tack
+        '\u2AE1': MO.REL,      // perpendicular with s
+        '\u2AE2': MO.REL,      // vertical bar triple right turnstile
+        '\u2AE3': MO.REL,      // double vertical bar left turnstile
+        '\u2AE4': MO.REL,      // vertical bar double left turnstile
+        '\u2AE5': MO.REL,      // double vertical bar double left turnstile
+        '\u2AE6': MO.REL,      // long dash from left member of double vertical
+        '\u2AE7': MO.REL,      // short down tack with overbar
+        '\u2AE8': MO.REL,      // short up tack with underbar
+        '\u2AE9': MO.REL,      // short up tack above short down tack
+        '\u2AEA': MO.REL,      // double down tack
+        '\u2AEB': MO.REL,      // double up tack
+        '\u2AEC': MO.REL,      // double stroke not sign
+        '\u2AED': MO.REL,      // reversed double stroke not sign
+        '\u2AEE': MO.REL,      // does not divide with reversed negation slash
+        '\u2AEF': MO.REL,      // vertical line with circle above
+        '\u2AF0': MO.REL,      // vertical line with circle below
+        '\u2AF1': MO.REL,      // down tack with circle below
+        '\u2AF2': MO.REL,      // parallel with horizontal stroke
+        '\u2AF3': MO.REL,      // parallel with tilde operator
+        '\u2AF4': MO.BIN4,     // triple vertical bar binary relation
+        '\u2AF5': MO.BIN4,     // triple vertical bar with horizontal stroke
+        '\u2AF6': MO.BIN4,     // triple colon operator
+        '\u2AF7': MO.REL,      // triple nested less-than
+        '\u2AF8': MO.REL,      // triple nested greater-than
+        '\u2AF9': MO.REL,      // double-line slanted less-than or equal to
+        '\u2AFA': MO.REL,      // double-line slanted greater-than or equal to
+        '\u2AFB': MO.BIN4,     // triple solidus binary relation
+        '\u2AFD': MO.BIN4,     // double solidus operator
+        '\u2AFE': MO.BIN3      // white vertical bar
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/SuppMathOperators.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/SupplementalArrowsA.js b/data/mathjax/unpacked/jax/element/mml/optable/SupplementalArrowsA.js
new file mode 100644
index 0000000..652771a
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/SupplementalArrowsA.js
@@ -0,0 +1,40 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/SupplementalArrowsA.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      infix: {
+        '\u27F0': MO.RELSTRETCH, // upwards quadruple arrow
+        '\u27F1': MO.RELSTRETCH, // downwards quadruple arrow
+        '\u27FB': MO.WIDEREL,  // long leftwards arrow from bar
+        '\u27FD': MO.WIDEREL,  // long leftwards double arrow from bar
+        '\u27FE': MO.WIDEREL,  // long rightwards double arrow from bar
+        '\u27FF': MO.WIDEREL   // long rightwards squiggle arrow
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/SupplementalArrowsA.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/element/mml/optable/SupplementalArrowsB.js b/data/mathjax/unpacked/jax/element/mml/optable/SupplementalArrowsB.js
new file mode 100644
index 0000000..035a31e
--- /dev/null
+++ b/data/mathjax/unpacked/jax/element/mml/optable/SupplementalArrowsB.js
@@ -0,0 +1,162 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/optable/SupplementalArrowsB.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MML) {
+  var MO = MML.mo.OPTYPES;
+  var TEXCLASS = MML.TEXCLASS;
+
+  MathJax.Hub.Insert(MML.mo.prototype,{
+    OPTABLE: {
+      infix: {
+        '\u2900': MO.RELACCENT, // rightwards two-headed arrow with vertical stroke
+        '\u2901': MO.RELACCENT, // rightwards two-headed arrow with double vertical stroke
+        '\u2902': MO.RELACCENT, // leftwards double arrow with vertical stroke
+        '\u2903': MO.RELACCENT, // rightwards double arrow with vertical stroke
+        '\u2904': MO.RELACCENT, // left right double arrow with vertical stroke
+        '\u2905': MO.RELACCENT, // rightwards two-headed arrow from bar
+        '\u2906': MO.RELACCENT, // leftwards double arrow from bar
+        '\u2907': MO.RELACCENT, // rightwards double arrow from bar
+        '\u2908': MO.REL,      // downwards arrow with horizontal stroke
+        '\u2909': MO.REL,      // upwards arrow with horizontal stroke
+        '\u290A': MO.RELSTRETCH, // upwards triple arrow
+        '\u290B': MO.RELSTRETCH, // downwards triple arrow
+        '\u290C': MO.WIDEREL,  // leftwards double dash arrow
+        '\u290D': MO.WIDEREL,  // rightwards double dash arrow
+        '\u290E': MO.WIDEREL,  // leftwards triple dash arrow
+        '\u290F': MO.WIDEREL,  // rightwards triple dash arrow
+        '\u2910': MO.WIDEREL,  // rightwards two-headed triple dash arrow
+        '\u2911': MO.RELACCENT, // rightwards arrow with dotted stem
+        '\u2912': MO.RELSTRETCH, // upwards arrow to bar
+        '\u2913': MO.RELSTRETCH, // downwards arrow to bar
+        '\u2914': MO.RELACCENT, // rightwards arrow with tail with vertical stroke
+        '\u2915': MO.RELACCENT, // rightwards arrow with tail with double vertical stroke
+        '\u2916': MO.RELACCENT, // rightwards two-headed arrow with tail
+        '\u2917': MO.RELACCENT, // rightwards two-headed arrow with tail with vertical stroke
+        '\u2918': MO.RELACCENT, // rightwards two-headed arrow with tail with double vertical stroke
+        '\u2919': MO.RELACCENT, // leftwards arrow-tail
+        '\u291A': MO.RELACCENT, // rightwards arrow-tail
+        '\u291B': MO.RELACCENT, // leftwards double arrow-tail
+        '\u291C': MO.RELACCENT, // rightwards double arrow-tail
+        '\u291D': MO.RELACCENT, // leftwards arrow to black diamond
+        '\u291E': MO.RELACCENT, // rightwards arrow to black diamond
+        '\u291F': MO.RELACCENT, // leftwards arrow from bar to black diamond
+        '\u2920': MO.RELACCENT, // rightwards arrow from bar to black diamond
+        '\u2921': MO.RELSTRETCH, // north west and south east arrow
+        '\u2922': MO.RELSTRETCH, // north east and south west arrow
+        '\u2923': MO.REL,      // north west arrow with hook
+        '\u2924': MO.REL,      // north east arrow with hook
+        '\u2925': MO.REL,      // south east arrow with hook
+        '\u2926': MO.REL,      // south west arrow with hook
+        '\u2927': MO.REL,      // north west arrow and north east arrow
+        '\u2928': MO.REL,      // north east arrow and south east arrow
+        '\u2929': MO.REL,      // south east arrow and south west arrow
+        '\u292A': MO.REL,      // south west arrow and north west arrow
+        '\u292B': MO.REL,      // rising diagonal crossing falling diagonal
+        '\u292C': MO.REL,      // falling diagonal crossing rising diagonal
+        '\u292D': MO.REL,      // south east arrow crossing north east arrow
+        '\u292E': MO.REL,      // north east arrow crossing south east arrow
+        '\u292F': MO.REL,      // falling diagonal crossing north east arrow
+        '\u2930': MO.REL,      // rising diagonal crossing south east arrow
+        '\u2931': MO.REL,      // north east arrow crossing north west arrow
+        '\u2932': MO.REL,      // north west arrow crossing north east arrow
+        '\u2933': MO.RELACCENT, // wave arrow pointing directly right
+        '\u2934': MO.REL,      // arrow pointing rightwards then curving upwards
+        '\u2935': MO.REL,      // arrow pointing rightwards then curving downwards
+        '\u2936': MO.REL,      // arrow pointing downwards then curving leftwards
+        '\u2937': MO.REL,      // arrow pointing downwards then curving rightwards
+        '\u2938': MO.REL,      // right-side arc clockwise arrow
+        '\u2939': MO.REL,      // left-side arc anticlockwise arrow
+        '\u293A': MO.RELACCENT, // top arc anticlockwise arrow
+        '\u293B': MO.RELACCENT, // bottom arc anticlockwise arrow
+        '\u293C': MO.RELACCENT, // top arc clockwise arrow with minus
+        '\u293D': MO.RELACCENT, // top arc anticlockwise arrow with plus
+        '\u293E': MO.REL,      // lower right semicircular clockwise arrow
+        '\u293F': MO.REL,      // lower left semicircular anticlockwise arrow
+        '\u2940': MO.REL,      // anticlockwise closed circle arrow
+        '\u2941': MO.REL,      // clockwise closed circle arrow
+        '\u2942': MO.RELACCENT, // rightwards arrow above short leftwards arrow
+        '\u2943': MO.RELACCENT, // leftwards arrow above short rightwards arrow
+        '\u2944': MO.RELACCENT, // short rightwards arrow above leftwards arrow
+        '\u2945': MO.RELACCENT, // rightwards arrow with plus below
+        '\u2946': MO.RELACCENT, // leftwards arrow with plus below
+        '\u2947': MO.RELACCENT, // rightwards arrow through x
+        '\u2948': MO.RELACCENT, // left right arrow through small circle
+        '\u2949': MO.REL,      // upwards two-headed arrow from small circle
+        '\u294A': MO.RELACCENT, // left barb up right barb down harpoon
+        '\u294B': MO.RELACCENT, // left barb down right barb up harpoon
+        '\u294C': MO.REL,      // up barb right down barb left harpoon
+        '\u294D': MO.REL,      // up barb left down barb right harpoon
+        '\u294E': MO.WIDEREL,  // left barb up right barb up harpoon
+        '\u294F': MO.RELSTRETCH, // up barb right down barb right harpoon
+        '\u2950': MO.WIDEREL,  // left barb down right barb down harpoon
+        '\u2951': MO.RELSTRETCH, // up barb left down barb left harpoon
+        '\u2952': MO.WIDEREL,  // leftwards harpoon with barb up to bar
+        '\u2953': MO.WIDEREL,  // rightwards harpoon with barb up to bar
+        '\u2954': MO.RELSTRETCH, // upwards harpoon with barb right to bar
+        '\u2955': MO.RELSTRETCH, // downwards harpoon with barb right to bar
+        '\u2956': MO.RELSTRETCH, // leftwards harpoon with barb down to bar
+        '\u2957': MO.RELSTRETCH, // rightwards harpoon with barb down to bar
+        '\u2958': MO.RELSTRETCH, // upwards harpoon with barb left to bar
+        '\u2959': MO.RELSTRETCH, // downwards harpoon with barb left to bar
+        '\u295A': MO.WIDEREL,  // leftwards harpoon with barb up from bar
+        '\u295B': MO.WIDEREL,  // rightwards harpoon with barb up from bar
+        '\u295C': MO.RELSTRETCH, // upwards harpoon with barb right from bar
+        '\u295D': MO.RELSTRETCH, // downwards harpoon with barb right from bar
+        '\u295E': MO.WIDEREL,  // leftwards harpoon with barb down from bar
+        '\u295F': MO.WIDEREL,  // rightwards harpoon with barb down from bar
+        '\u2960': MO.RELSTRETCH, // upwards harpoon with barb left from bar
+        '\u2961': MO.RELSTRETCH, // downwards harpoon with barb left from bar
+        '\u2962': MO.RELACCENT, // leftwards harpoon with barb up above leftwards harpoon with barb down
+        '\u2963': MO.REL,      // upwards harpoon with barb left beside upwards harpoon with barb right
+        '\u2964': MO.RELACCENT, // rightwards harpoon with barb up above rightwards harpoon with barb down
+        '\u2965': MO.REL,      // downwards harpoon with barb left beside downwards harpoon with barb right
+        '\u2966': MO.RELACCENT, // leftwards harpoon with barb up above rightwards harpoon with barb up
+        '\u2967': MO.RELACCENT, // leftwards harpoon with barb down above rightwards harpoon with barb down
+        '\u2968': MO.RELACCENT, // rightwards harpoon with barb up above leftwards harpoon with barb up
+        '\u2969': MO.RELACCENT, // rightwards harpoon with barb down above leftwards harpoon with barb down
+        '\u296A': MO.RELACCENT, // leftwards harpoon with barb up above long dash
+        '\u296B': MO.RELACCENT, // leftwards harpoon with barb down below long dash
+        '\u296C': MO.RELACCENT, // rightwards harpoon with barb up above long dash
+        '\u296D': MO.RELACCENT, // rightwards harpoon with barb down below long dash
+        '\u296E': MO.RELSTRETCH, // upwards harpoon with barb left beside downwards harpoon with barb right
+        '\u296F': MO.RELSTRETCH, // downwards harpoon with barb left beside upwards harpoon with barb right
+        '\u2970': MO.RELACCENT, // right double arrow with rounded head
+        '\u2971': MO.RELACCENT, // equals sign above rightwards arrow
+        '\u2972': MO.RELACCENT, // tilde operator above rightwards arrow
+        '\u2973': MO.RELACCENT, // leftwards arrow above tilde operator
+        '\u2974': MO.RELACCENT, // rightwards arrow above tilde operator
+        '\u2975': MO.RELACCENT, // rightwards arrow above almost equal to
+        '\u2976': MO.RELACCENT, // less-than above leftwards arrow
+        '\u2977': MO.RELACCENT, // leftwards arrow through less-than
+        '\u2978': MO.RELACCENT, // greater-than above rightwards arrow
+        '\u2979': MO.RELACCENT, // subset above rightwards arrow
+        '\u297A': MO.RELACCENT, // leftwards arrow through subset
+        '\u297B': MO.RELACCENT, // superset above leftwards arrow
+        '\u297C': MO.RELACCENT, // left fish tail
+        '\u297D': MO.RELACCENT, // right fish tail
+        '\u297E': MO.REL,      // up fish tail
+        '\u297F': MO.REL       // down fish tail
+      }
+    }
+  });
+
+  MathJax.Ajax.loadComplete(MML.optableDir+"/SupplementalArrowsB.js");
+
+})(MathJax.ElementJax.mml);
diff --git a/data/mathjax/unpacked/jax/input/MathML/config.js b/data/mathjax/unpacked/jax/input/MathML/config.js
new file mode 100644
index 0000000..77d7e02
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/config.js
@@ -0,0 +1,38 @@
+/*************************************************************
+ *
+ *  MathJax/jax/input/MathML/config.js
+ *
+ *  Initializes the MathML InputJax (the main definition is in
+ *  MathJax/jax/input/MathML/jax.js, which is loaded when needed).
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+MathJax.InputJax.MathML = MathJax.InputJax({
+  id: "MathML",
+  version: "2.1",
+  directory: MathJax.InputJax.directory + "/MathML",
+  extensionDir: MathJax.InputJax.extensionDir + "/MathML",
+  entityDir: MathJax.InputJax.directory + "/MathML/entities",
+  
+  config: {
+    useMathMLspacing: false         // false means use TeX spacing, true means MML spacing
+  }
+});
+MathJax.InputJax.MathML.Register("math/mml");
+
+MathJax.InputJax.MathML.loadComplete("config.js");
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/a.js b/data/mathjax/unpacked/jax/input/MathML/entities/a.js
new file mode 100644
index 0000000..3b14cdc
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/a.js
@@ -0,0 +1,90 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/a.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'AElig': '\u00C6',
+    'AMP': '\u0026',
+    'Aacute': '\u00C1',
+    'Abreve': '\u0102',
+    'Acirc': '\u00C2',
+    'Acy': '\u0410',
+    'Agrave': '\u00C0',
+    'Alpha': '\u0391',
+    'Amacr': '\u0100',
+    'And': '\u2A53',
+    'Aogon': '\u0104',
+    'Aring': '\u00C5',
+    'Assign': '\u2254',
+    'Atilde': '\u00C3',
+    'Auml': '\u00C4',
+    'aacute': '\u00E1',
+    'abreve': '\u0103',
+    'ac': '\u223E',
+    'acE': '\u223E\u0333',
+    'acd': '\u223F',
+    'acirc': '\u00E2',
+    'acy': '\u0430',
+    'aelig': '\u00E6',
+    'af': '\u2061',
+    'agrave': '\u00E0',
+    'alefsym': '\u2135',
+    'amacr': '\u0101',
+    'amp': '\u0026',
+    'andand': '\u2A55',
+    'andd': '\u2A5C',
+    'andslope': '\u2A58',
+    'andv': '\u2A5A',
+    'ange': '\u29A4',
+    'angle': '\u2220',
+    'angmsdaa': '\u29A8',
+    'angmsdab': '\u29A9',
+    'angmsdac': '\u29AA',
+    'angmsdad': '\u29AB',
+    'angmsdae': '\u29AC',
+    'angmsdaf': '\u29AD',
+    'angmsdag': '\u29AE',
+    'angmsdah': '\u29AF',
+    'angrt': '\u221F',
+    'angrtvb': '\u22BE',
+    'angrtvbd': '\u299D',
+    'angst': '\u00C5',
+    'angzarr': '\u237C',
+    'aogon': '\u0105',
+    'ap': '\u2248',
+    'apE': '\u2A70',
+    'apacir': '\u2A6F',
+    'apid': '\u224B',
+    'apos': '\u0027',
+    'approx': '\u2248',
+    'approxeq': '\u224A',
+    'aring': '\u00E5',
+    'ast': '\u002A',
+    'asymp': '\u2248',
+    'asympeq': '\u224D',
+    'atilde': '\u00E3',
+    'auml': '\u00E4',
+    'awconint': '\u2233',
+    'awint': '\u2A11'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/a.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/b.js b/data/mathjax/unpacked/jax/input/MathML/entities/b.js
new file mode 100644
index 0000000..c7c1040
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/b.js
@@ -0,0 +1,116 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/b.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'Barv': '\u2AE7',
+    'Barwed': '\u2306',
+    'Bcy': '\u0411',
+    'Bernoullis': '\u212C',
+    'Beta': '\u0392',
+    'Bumpeq': '\u224E',
+    'bNot': '\u2AED',
+    'backcong': '\u224C',
+    'backepsilon': '\u03F6',
+    'barvee': '\u22BD',
+    'barwed': '\u2305',
+    'barwedge': '\u2305',
+    'bbrk': '\u23B5',
+    'bbrktbrk': '\u23B6',
+    'bcong': '\u224C',
+    'bcy': '\u0431',
+    'bdquo': '\u201E',
+    'becaus': '\u2235',
+    'because': '\u2235',
+    'bemptyv': '\u29B0',
+    'bepsi': '\u03F6',
+    'bernou': '\u212C',
+    'bigcap': '\u22C2',
+    'bigcup': '\u22C3',
+    'bigvee': '\u22C1',
+    'bigwedge': '\u22C0',
+    'bkarow': '\u290D',
+    'blacksquare': '\u25AA',
+    'blacktriangleright': '\u25B8',
+    'blank': '\u2423',
+    'blk12': '\u2592',
+    'blk14': '\u2591',
+    'blk34': '\u2593',
+    'block': '\u2588',
+    'bne': '\u003D\u20E5',
+    'bnequiv': '\u2261\u20E5',
+    'bnot': '\u2310',
+    'bot': '\u22A5',
+    'bottom': '\u22A5',
+    'boxDL': '\u2557',
+    'boxDR': '\u2554',
+    'boxDl': '\u2556',
+    'boxDr': '\u2553',
+    'boxH': '\u2550',
+    'boxHD': '\u2566',
+    'boxHU': '\u2569',
+    'boxHd': '\u2564',
+    'boxHu': '\u2567',
+    'boxUL': '\u255D',
+    'boxUR': '\u255A',
+    'boxUl': '\u255C',
+    'boxUr': '\u2559',
+    'boxV': '\u2551',
+    'boxVH': '\u256C',
+    'boxVL': '\u2563',
+    'boxVR': '\u2560',
+    'boxVh': '\u256B',
+    'boxVl': '\u2562',
+    'boxVr': '\u255F',
+    'boxbox': '\u29C9',
+    'boxdL': '\u2555',
+    'boxdR': '\u2552',
+    'boxh': '\u2500',
+    'boxhD': '\u2565',
+    'boxhU': '\u2568',
+    'boxhd': '\u252C',
+    'boxhu': '\u2534',
+    'boxuL': '\u255B',
+    'boxuR': '\u2558',
+    'boxv': '\u2502',
+    'boxvH': '\u256A',
+    'boxvL': '\u2561',
+    'boxvR': '\u255E',
+    'boxvh': '\u253C',
+    'boxvl': '\u2524',
+    'boxvr': '\u251C',
+    'bprime': '\u2035',
+    'breve': '\u02D8',
+    'brvbar': '\u00A6',
+    'bsemi': '\u204F',
+    'bsim': '\u223D',
+    'bsime': '\u22CD',
+    'bsolb': '\u29C5',
+    'bsolhsub': '\u27C8',
+    'bullet': '\u2022',
+    'bump': '\u224E',
+    'bumpE': '\u2AAE',
+    'bumpe': '\u224F',
+    'bumpeq': '\u224F'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/b.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/c.js b/data/mathjax/unpacked/jax/input/MathML/entities/c.js
new file mode 100644
index 0000000..197140b
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/c.js
@@ -0,0 +1,114 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/c.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'CHcy': '\u0427',
+    'COPY': '\u00A9',
+    'Cacute': '\u0106',
+    'CapitalDifferentialD': '\u2145',
+    'Cayleys': '\u212D',
+    'Ccaron': '\u010C',
+    'Ccedil': '\u00C7',
+    'Ccirc': '\u0108',
+    'Cconint': '\u2230',
+    'Cdot': '\u010A',
+    'Cedilla': '\u00B8',
+    'Chi': '\u03A7',
+    'ClockwiseContourIntegral': '\u2232',
+    'CloseCurlyDoubleQuote': '\u201D',
+    'CloseCurlyQuote': '\u2019',
+    'Colon': '\u2237',
+    'Colone': '\u2A74',
+    'Conint': '\u222F',
+    'CounterClockwiseContourIntegral': '\u2233',
+    'cacute': '\u0107',
+    'capand': '\u2A44',
+    'capbrcup': '\u2A49',
+    'capcap': '\u2A4B',
+    'capcup': '\u2A47',
+    'capdot': '\u2A40',
+    'caps': '\u2229\uFE00',
+    'caret': '\u2041',
+    'caron': '\u02C7',
+    'ccaps': '\u2A4D',
+    'ccaron': '\u010D',
+    'ccedil': '\u00E7',
+    'ccirc': '\u0109',
+    'ccups': '\u2A4C',
+    'ccupssm': '\u2A50',
+    'cdot': '\u010B',
+    'cedil': '\u00B8',
+    'cemptyv': '\u29B2',
+    'cent': '\u00A2',
+    'centerdot': '\u00B7',
+    'chcy': '\u0447',
+    'checkmark': '\u2713',
+    'cir': '\u25CB',
+    'cirE': '\u29C3',
+    'cire': '\u2257',
+    'cirfnint': '\u2A10',
+    'cirmid': '\u2AEF',
+    'cirscir': '\u29C2',
+    'clubsuit': '\u2663',
+    'colone': '\u2254',
+    'coloneq': '\u2254',
+    'comma': '\u002C',
+    'commat': '\u0040',
+    'compfn': '\u2218',
+    'complement': '\u2201',
+    'complexes': '\u2102',
+    'cong': '\u2245',
+    'congdot': '\u2A6D',
+    'conint': '\u222E',
+    'coprod': '\u2210',
+    'copy': '\u00A9',
+    'copysr': '\u2117',
+    'crarr': '\u21B5',
+    'cross': '\u2717',
+    'csub': '\u2ACF',
+    'csube': '\u2AD1',
+    'csup': '\u2AD0',
+    'csupe': '\u2AD2',
+    'cudarrl': '\u2938',
+    'cudarrr': '\u2935',
+    'cularrp': '\u293D',
+    'cupbrcap': '\u2A48',
+    'cupcap': '\u2A46',
+    'cupcup': '\u2A4A',
+    'cupdot': '\u228D',
+    'cupor': '\u2A45',
+    'cups': '\u222A\uFE00',
+    'curarrm': '\u293C',
+    'curlyeqprec': '\u22DE',
+    'curlyeqsucc': '\u22DF',
+    'curren': '\u00A4',
+    'curvearrowleft': '\u21B6',
+    'curvearrowright': '\u21B7',
+    'cuvee': '\u22CE',
+    'cuwed': '\u22CF',
+    'cwconint': '\u2232',
+    'cwint': '\u2231',
+    'cylcty': '\u232D'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/c.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/d.js b/data/mathjax/unpacked/jax/input/MathML/entities/d.js
new file mode 100644
index 0000000..1722dfb
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/d.js
@@ -0,0 +1,112 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/d.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'DD': '\u2145',
+    'DDotrahd': '\u2911',
+    'DJcy': '\u0402',
+    'DScy': '\u0405',
+    'DZcy': '\u040F',
+    'Darr': '\u21A1',
+    'Dashv': '\u2AE4',
+    'Dcaron': '\u010E',
+    'Dcy': '\u0414',
+    'DiacriticalAcute': '\u00B4',
+    'DiacriticalDot': '\u02D9',
+    'DiacriticalDoubleAcute': '\u02DD',
+    'DiacriticalGrave': '\u0060',
+    'DiacriticalTilde': '\u02DC',
+    'Dot': '\u00A8',
+    'DotDot': '\u20DC',
+    'DoubleContourIntegral': '\u222F',
+    'DoubleDownArrow': '\u21D3',
+    'DoubleLeftArrow': '\u21D0',
+    'DoubleLeftRightArrow': '\u21D4',
+    'DoubleLeftTee': '\u2AE4',
+    'DoubleLongLeftArrow': '\u27F8',
+    'DoubleLongLeftRightArrow': '\u27FA',
+    'DoubleLongRightArrow': '\u27F9',
+    'DoubleRightArrow': '\u21D2',
+    'DoubleUpArrow': '\u21D1',
+    'DoubleUpDownArrow': '\u21D5',
+    'DownArrowBar': '\u2913',
+    'DownArrowUpArrow': '\u21F5',
+    'DownBreve': '\u0311',
+    'DownLeftRightVector': '\u2950',
+    'DownLeftTeeVector': '\u295E',
+    'DownLeftVectorBar': '\u2956',
+    'DownRightTeeVector': '\u295F',
+    'DownRightVectorBar': '\u2957',
+    'DownTeeArrow': '\u21A7',
+    'Dstrok': '\u0110',
+    'dArr': '\u21D3',
+    'dHar': '\u2965',
+    'darr': '\u2193',
+    'dash': '\u2010',
+    'dashv': '\u22A3',
+    'dbkarow': '\u290F',
+    'dblac': '\u02DD',
+    'dcaron': '\u010F',
+    'dcy': '\u0434',
+    'dd': '\u2146',
+    'ddagger': '\u2021',
+    'ddotseq': '\u2A77',
+    'demptyv': '\u29B1',
+    'dfisht': '\u297F',
+    'dharl': '\u21C3',
+    'dharr': '\u21C2',
+    'diam': '\u22C4',
+    'diamond': '\u22C4',
+    'diamondsuit': '\u2666',
+    'diams': '\u2666',
+    'die': '\u00A8',
+    'disin': '\u22F2',
+    'divide': '\u00F7',
+    'divonx': '\u22C7',
+    'djcy': '\u0452',
+    'dlcorn': '\u231E',
+    'dlcrop': '\u230D',
+    'dollar': '\u0024',
+    'doteq': '\u2250',
+    'dotminus': '\u2238',
+    'doublebarwedge': '\u2306',
+    'downarrow': '\u2193',
+    'downdownarrows': '\u21CA',
+    'downharpoonleft': '\u21C3',
+    'downharpoonright': '\u21C2',
+    'drbkarow': '\u2910',
+    'drcorn': '\u231F',
+    'drcrop': '\u230C',
+    'dscy': '\u0455',
+    'dsol': '\u29F6',
+    'dstrok': '\u0111',
+    'dtri': '\u25BF',
+    'dtrif': '\u25BE',
+    'duarr': '\u21F5',
+    'duhar': '\u296F',
+    'dwangle': '\u29A6',
+    'dzcy': '\u045F',
+    'dzigrarr': '\u27FF'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/d.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/e.js b/data/mathjax/unpacked/jax/input/MathML/entities/e.js
new file mode 100644
index 0000000..45475f1
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/e.js
@@ -0,0 +1,92 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/e.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'ENG': '\u014A',
+    'ETH': '\u00D0',
+    'Eacute': '\u00C9',
+    'Ecaron': '\u011A',
+    'Ecirc': '\u00CA',
+    'Ecy': '\u042D',
+    'Edot': '\u0116',
+    'Egrave': '\u00C8',
+    'Emacr': '\u0112',
+    'EmptySmallSquare': '\u25FB',
+    'EmptyVerySmallSquare': '\u25AB',
+    'Eogon': '\u0118',
+    'Epsilon': '\u0395',
+    'Equal': '\u2A75',
+    'Esim': '\u2A73',
+    'Eta': '\u0397',
+    'Euml': '\u00CB',
+    'eDDot': '\u2A77',
+    'eDot': '\u2251',
+    'eacute': '\u00E9',
+    'easter': '\u2A6E',
+    'ecaron': '\u011B',
+    'ecirc': '\u00EA',
+    'ecolon': '\u2255',
+    'ecy': '\u044D',
+    'edot': '\u0117',
+    'ee': '\u2147',
+    'eg': '\u2A9A',
+    'egrave': '\u00E8',
+    'egsdot': '\u2A98',
+    'el': '\u2A99',
+    'elinters': '\u23E7',
+    'elsdot': '\u2A97',
+    'emacr': '\u0113',
+    'emptyset': '\u2205',
+    'emptyv': '\u2205',
+    'emsp': '\u2003',
+    'emsp13': '\u2004',
+    'emsp14': '\u2005',
+    'eng': '\u014B',
+    'ensp': '\u2002',
+    'eogon': '\u0119',
+    'epar': '\u22D5',
+    'eparsl': '\u29E3',
+    'eplus': '\u2A71',
+    'epsilon': '\u03B5',
+    'eqcirc': '\u2256',
+    'eqcolon': '\u2255',
+    'eqsim': '\u2242',
+    'eqslantgtr': '\u2A96',
+    'eqslantless': '\u2A95',
+    'equals': '\u003D',
+    'equest': '\u225F',
+    'equiv': '\u2261',
+    'equivDD': '\u2A78',
+    'eqvparsl': '\u29E5',
+    'erarr': '\u2971',
+    'esdot': '\u2250',
+    'esim': '\u2242',
+    'euml': '\u00EB',
+    'euro': '\u20AC',
+    'excl': '\u0021',
+    'exist': '\u2203',
+    'expectation': '\u2130',
+    'exponentiale': '\u2147'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/e.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/f.js b/data/mathjax/unpacked/jax/input/MathML/entities/f.js
new file mode 100644
index 0000000..5d5348a
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/f.js
@@ -0,0 +1,60 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/f.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'Fcy': '\u0424',
+    'FilledSmallSquare': '\u25FC',
+    'Fouriertrf': '\u2131',
+    'fallingdotseq': '\u2252',
+    'fcy': '\u0444',
+    'female': '\u2640',
+    'ffilig': '\uFB03',
+    'fflig': '\uFB00',
+    'ffllig': '\uFB04',
+    'filig': '\uFB01',
+    'fjlig': '\u0066\u006A',
+    'fllig': '\uFB02',
+    'fltns': '\u25B1',
+    'fnof': '\u0192',
+    'forall': '\u2200',
+    'forkv': '\u2AD9',
+    'fpartint': '\u2A0D',
+    'frac12': '\u00BD',
+    'frac13': '\u2153',
+    'frac14': '\u00BC',
+    'frac15': '\u2155',
+    'frac16': '\u2159',
+    'frac18': '\u215B',
+    'frac23': '\u2154',
+    'frac25': '\u2156',
+    'frac34': '\u00BE',
+    'frac35': '\u2157',
+    'frac38': '\u215C',
+    'frac45': '\u2158',
+    'frac56': '\u215A',
+    'frac58': '\u215D',
+    'frac78': '\u215E',
+    'frasl': '\u2044'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/f.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/fr.js b/data/mathjax/unpacked/jax/input/MathML/entities/fr.js
new file mode 100644
index 0000000..d6b2e12
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/fr.js
@@ -0,0 +1,79 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/fr.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'Afr': '\uD835\uDD04',
+    'Bfr': '\uD835\uDD05',
+    'Cfr': '\u212D',
+    'Dfr': '\uD835\uDD07',
+    'Efr': '\uD835\uDD08',
+    'Ffr': '\uD835\uDD09',
+    'Gfr': '\uD835\uDD0A',
+    'Hfr': '\u210C',
+    'Ifr': '\u2111',
+    'Jfr': '\uD835\uDD0D',
+    'Kfr': '\uD835\uDD0E',
+    'Lfr': '\uD835\uDD0F',
+    'Mfr': '\uD835\uDD10',
+    'Nfr': '\uD835\uDD11',
+    'Ofr': '\uD835\uDD12',
+    'Pfr': '\uD835\uDD13',
+    'Qfr': '\uD835\uDD14',
+    'Rfr': '\u211C',
+    'Sfr': '\uD835\uDD16',
+    'Tfr': '\uD835\uDD17',
+    'Ufr': '\uD835\uDD18',
+    'Vfr': '\uD835\uDD19',
+    'Wfr': '\uD835\uDD1A',
+    'Xfr': '\uD835\uDD1B',
+    'Yfr': '\uD835\uDD1C',
+    'Zfr': '\u2128',
+    'afr': '\uD835\uDD1E',
+    'bfr': '\uD835\uDD1F',
+    'cfr': '\uD835\uDD20',
+    'dfr': '\uD835\uDD21',
+    'efr': '\uD835\uDD22',
+    'ffr': '\uD835\uDD23',
+    'gfr': '\uD835\uDD24',
+    'hfr': '\uD835\uDD25',
+    'ifr': '\uD835\uDD26',
+    'jfr': '\uD835\uDD27',
+    'kfr': '\uD835\uDD28',
+    'lfr': '\uD835\uDD29',
+    'mfr': '\uD835\uDD2A',
+    'nfr': '\uD835\uDD2B',
+    'ofr': '\uD835\uDD2C',
+    'pfr': '\uD835\uDD2D',
+    'qfr': '\uD835\uDD2E',
+    'rfr': '\uD835\uDD2F',
+    'sfr': '\uD835\uDD30',
+    'tfr': '\uD835\uDD31',
+    'ufr': '\uD835\uDD32',
+    'vfr': '\uD835\uDD33',
+    'wfr': '\uD835\uDD34',
+    'xfr': '\uD835\uDD35',
+    'yfr': '\uD835\uDD36',
+    'zfr': '\uD835\uDD37'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/fr.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/g.js b/data/mathjax/unpacked/jax/input/MathML/entities/g.js
new file mode 100644
index 0000000..dad288e
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/g.js
@@ -0,0 +1,83 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/g.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'GJcy': '\u0403',
+    'GT': '\u003E',
+    'Gammad': '\u03DC',
+    'Gbreve': '\u011E',
+    'Gcedil': '\u0122',
+    'Gcirc': '\u011C',
+    'Gcy': '\u0413',
+    'Gdot': '\u0120',
+    'GreaterGreater': '\u2AA2',
+    'Gt': '\u226B',
+    'gE': '\u2267',
+    'gacute': '\u01F5',
+    'gammad': '\u03DD',
+    'gbreve': '\u011F',
+    'gcirc': '\u011D',
+    'gcy': '\u0433',
+    'gdot': '\u0121',
+    'ge': '\u2265',
+    'gel': '\u22DB',
+    'geq': '\u2265',
+    'geqq': '\u2267',
+    'geqslant': '\u2A7E',
+    'ges': '\u2A7E',
+    'gescc': '\u2AA9',
+    'gesdot': '\u2A80',
+    'gesdoto': '\u2A82',
+    'gesdotol': '\u2A84',
+    'gesl': '\u22DB\uFE00',
+    'gesles': '\u2A94',
+    'gg': '\u226B',
+    'ggg': '\u22D9',
+    'gjcy': '\u0453',
+    'gl': '\u2277',
+    'glE': '\u2A92',
+    'gla': '\u2AA5',
+    'glj': '\u2AA4',
+    'gnapprox': '\u2A8A',
+    'gneq': '\u2A88',
+    'gneqq': '\u2269',
+    'grave': '\u0060',
+    'gsim': '\u2273',
+    'gsime': '\u2A8E',
+    'gsiml': '\u2A90',
+    'gtcc': '\u2AA7',
+    'gtcir': '\u2A7A',
+    'gtlPar': '\u2995',
+    'gtquest': '\u2A7C',
+    'gtrapprox': '\u2A86',
+    'gtrarr': '\u2978',
+    'gtrdot': '\u22D7',
+    'gtreqless': '\u22DB',
+    'gtreqqless': '\u2A8C',
+    'gtrless': '\u2277',
+    'gtrsim': '\u2273',
+    'gvertneqq': '\u2269\uFE00',
+    'gvnE': '\u2269\uFE00'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/g.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/h.js b/data/mathjax/unpacked/jax/input/MathML/entities/h.js
new file mode 100644
index 0000000..bf1ad4f
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/h.js
@@ -0,0 +1,52 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/h.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'HARDcy': '\u042A',
+    'Hcirc': '\u0124',
+    'HilbertSpace': '\u210B',
+    'HorizontalLine': '\u2500',
+    'Hstrok': '\u0126',
+    'hArr': '\u21D4',
+    'hairsp': '\u200A',
+    'half': '\u00BD',
+    'hamilt': '\u210B',
+    'hardcy': '\u044A',
+    'harr': '\u2194',
+    'harrcir': '\u2948',
+    'hcirc': '\u0125',
+    'hearts': '\u2665',
+    'heartsuit': '\u2665',
+    'hercon': '\u22B9',
+    'hksearow': '\u2925',
+    'hkswarow': '\u2926',
+    'hoarr': '\u21FF',
+    'homtht': '\u223B',
+    'horbar': '\u2015',
+    'hslash': '\u210F',
+    'hstrok': '\u0127',
+    'hybull': '\u2043',
+    'hyphen': '\u2010'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/h.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/i.js b/data/mathjax/unpacked/jax/input/MathML/entities/i.js
new file mode 100644
index 0000000..059928b
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/i.js
@@ -0,0 +1,86 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/i.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'IEcy': '\u0415',
+    'IJlig': '\u0132',
+    'IOcy': '\u0401',
+    'Iacute': '\u00CD',
+    'Icirc': '\u00CE',
+    'Icy': '\u0418',
+    'Idot': '\u0130',
+    'Igrave': '\u00CC',
+    'Imacr': '\u012A',
+    'Implies': '\u21D2',
+    'Int': '\u222C',
+    'Iogon': '\u012E',
+    'Iota': '\u0399',
+    'Itilde': '\u0128',
+    'Iukcy': '\u0406',
+    'Iuml': '\u00CF',
+    'iacute': '\u00ED',
+    'ic': '\u2063',
+    'icirc': '\u00EE',
+    'icy': '\u0438',
+    'iecy': '\u0435',
+    'iexcl': '\u00A1',
+    'iff': '\u21D4',
+    'igrave': '\u00EC',
+    'ii': '\u2148',
+    'iiiint': '\u2A0C',
+    'iiint': '\u222D',
+    'iinfin': '\u29DC',
+    'iiota': '\u2129',
+    'ijlig': '\u0133',
+    'imacr': '\u012B',
+    'image': '\u2111',
+    'imagline': '\u2110',
+    'imagpart': '\u2111',
+    'imof': '\u22B7',
+    'imped': '\u01B5',
+    'in': '\u2208',
+    'incare': '\u2105',
+    'infintie': '\u29DD',
+    'inodot': '\u0131',
+    'int': '\u222B',
+    'integers': '\u2124',
+    'intercal': '\u22BA',
+    'intlarhk': '\u2A17',
+    'intprod': '\u2A3C',
+    'iocy': '\u0451',
+    'iogon': '\u012F',
+    'iprod': '\u2A3C',
+    'iquest': '\u00BF',
+    'isin': '\u2208',
+    'isinE': '\u22F9',
+    'isindot': '\u22F5',
+    'isins': '\u22F4',
+    'isinsv': '\u22F3',
+    'isinv': '\u2208',
+    'it': '\u2062',
+    'itilde': '\u0129',
+    'iukcy': '\u0456',
+    'iuml': '\u00EF'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/i.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/j.js b/data/mathjax/unpacked/jax/input/MathML/entities/j.js
new file mode 100644
index 0000000..5147e2d
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/j.js
@@ -0,0 +1,35 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/j.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'Jcirc': '\u0134',
+    'Jcy': '\u0419',
+    'Jsercy': '\u0408',
+    'Jukcy': '\u0404',
+    'jcirc': '\u0135',
+    'jcy': '\u0439',
+    'jsercy': '\u0458',
+    'jukcy': '\u0454'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/j.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/k.js b/data/mathjax/unpacked/jax/input/MathML/entities/k.js
new file mode 100644
index 0000000..2342a8c
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/k.js
@@ -0,0 +1,37 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/k.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'KHcy': '\u0425',
+    'KJcy': '\u040C',
+    'Kappa': '\u039A',
+    'Kcedil': '\u0136',
+    'Kcy': '\u041A',
+    'kcedil': '\u0137',
+    'kcy': '\u043A',
+    'kgreen': '\u0138',
+    'khcy': '\u0445',
+    'kjcy': '\u045C'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/k.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/l.js b/data/mathjax/unpacked/jax/input/MathML/entities/l.js
new file mode 100644
index 0000000..2615de2
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/l.js
@@ -0,0 +1,179 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/l.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'LJcy': '\u0409',
+    'LT': '\u003C',
+    'Lacute': '\u0139',
+    'Lang': '\u27EA',
+    'Laplacetrf': '\u2112',
+    'Lcaron': '\u013D',
+    'Lcedil': '\u013B',
+    'Lcy': '\u041B',
+    'LeftArrowBar': '\u21E4',
+    'LeftDoubleBracket': '\u27E6',
+    'LeftDownTeeVector': '\u2961',
+    'LeftDownVectorBar': '\u2959',
+    'LeftRightVector': '\u294E',
+    'LeftTeeArrow': '\u21A4',
+    'LeftTeeVector': '\u295A',
+    'LeftTriangleBar': '\u29CF',
+    'LeftUpDownVector': '\u2951',
+    'LeftUpTeeVector': '\u2960',
+    'LeftUpVectorBar': '\u2958',
+    'LeftVectorBar': '\u2952',
+    'LessLess': '\u2AA1',
+    'Lmidot': '\u013F',
+    'LowerLeftArrow': '\u2199',
+    'LowerRightArrow': '\u2198',
+    'Lstrok': '\u0141',
+    'Lt': '\u226A',
+    'lAarr': '\u21DA',
+    'lArr': '\u21D0',
+    'lAtail': '\u291B',
+    'lBarr': '\u290E',
+    'lE': '\u2266',
+    'lHar': '\u2962',
+    'lacute': '\u013A',
+    'laemptyv': '\u29B4',
+    'lagran': '\u2112',
+    'lang': '\u27E8',
+    'langd': '\u2991',
+    'langle': '\u27E8',
+    'laquo': '\u00AB',
+    'larr': '\u2190',
+    'larrb': '\u21E4',
+    'larrbfs': '\u291F',
+    'larrfs': '\u291D',
+    'larrhk': '\u21A9',
+    'larrpl': '\u2939',
+    'larrsim': '\u2973',
+    'lat': '\u2AAB',
+    'latail': '\u2919',
+    'late': '\u2AAD',
+    'lates': '\u2AAD\uFE00',
+    'lbarr': '\u290C',
+    'lbbrk': '\u2772',
+    'lbrke': '\u298B',
+    'lbrksld': '\u298F',
+    'lbrkslu': '\u298D',
+    'lcaron': '\u013E',
+    'lcedil': '\u013C',
+    'lceil': '\u2308',
+    'lcub': '\u007B',
+    'lcy': '\u043B',
+    'ldca': '\u2936',
+    'ldquo': '\u201C',
+    'ldquor': '\u201E',
+    'ldrdhar': '\u2967',
+    'ldrushar': '\u294B',
+    'ldsh': '\u21B2',
+    'leftarrow': '\u2190',
+    'leftarrowtail': '\u21A2',
+    'leftharpoondown': '\u21BD',
+    'leftharpoonup': '\u21BC',
+    'leftrightarrow': '\u2194',
+    'leftrightarrows': '\u21C6',
+    'leftrightharpoons': '\u21CB',
+    'leftrightsquigarrow': '\u21AD',
+    'leg': '\u22DA',
+    'leq': '\u2264',
+    'leqq': '\u2266',
+    'leqslant': '\u2A7D',
+    'les': '\u2A7D',
+    'lescc': '\u2AA8',
+    'lesdot': '\u2A7F',
+    'lesdoto': '\u2A81',
+    'lesdotor': '\u2A83',
+    'lesg': '\u22DA\uFE00',
+    'lesges': '\u2A93',
+    'lessapprox': '\u2A85',
+    'lesseqgtr': '\u22DA',
+    'lesseqqgtr': '\u2A8B',
+    'lessgtr': '\u2276',
+    'lesssim': '\u2272',
+    'lfisht': '\u297C',
+    'lfloor': '\u230A',
+    'lg': '\u2276',
+    'lgE': '\u2A91',
+    'lhard': '\u21BD',
+    'lharu': '\u21BC',
+    'lharul': '\u296A',
+    'lhblk': '\u2584',
+    'ljcy': '\u0459',
+    'll': '\u226A',
+    'llarr': '\u21C7',
+    'llcorner': '\u231E',
+    'llhard': '\u296B',
+    'lltri': '\u25FA',
+    'lmidot': '\u0140',
+    'lmoustache': '\u23B0',
+    'lnapprox': '\u2A89',
+    'lneq': '\u2A87',
+    'lneqq': '\u2268',
+    'loang': '\u27EC',
+    'loarr': '\u21FD',
+    'lobrk': '\u27E6',
+    'longleftarrow': '\u27F5',
+    'longleftrightarrow': '\u27F7',
+    'longrightarrow': '\u27F6',
+    'looparrowleft': '\u21AB',
+    'lopar': '\u2985',
+    'loplus': '\u2A2D',
+    'lotimes': '\u2A34',
+    'lowbar': '\u005F',
+    'lozenge': '\u25CA',
+    'lozf': '\u29EB',
+    'lpar': '\u0028',
+    'lparlt': '\u2993',
+    'lrarr': '\u21C6',
+    'lrcorner': '\u231F',
+    'lrhar': '\u21CB',
+    'lrhard': '\u296D',
+    'lrm': '\u200E',
+    'lrtri': '\u22BF',
+    'lsaquo': '\u2039',
+    'lsh': '\u21B0',
+    'lsim': '\u2272',
+    'lsime': '\u2A8D',
+    'lsimg': '\u2A8F',
+    'lsqb': '\u005B',
+    'lsquo': '\u2018',
+    'lsquor': '\u201A',
+    'lstrok': '\u0142',
+    'ltcc': '\u2AA6',
+    'ltcir': '\u2A79',
+    'ltdot': '\u22D6',
+    'lthree': '\u22CB',
+    'ltlarr': '\u2976',
+    'ltquest': '\u2A7B',
+    'ltrPar': '\u2996',
+    'ltrie': '\u22B4',
+    'ltrif': '\u25C2',
+    'lurdshar': '\u294A',
+    'luruhar': '\u2966',
+    'lvertneqq': '\u2268\uFE00',
+    'lvnE': '\u2268\uFE00'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/l.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/m.js b/data/mathjax/unpacked/jax/input/MathML/entities/m.js
new file mode 100644
index 0000000..4a5ed5e
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/m.js
@@ -0,0 +1,61 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/m.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'Map': '\u2905',
+    'Mcy': '\u041C',
+    'MediumSpace': '\u205F',
+    'Mellintrf': '\u2133',
+    'Mu': '\u039C',
+    'mDDot': '\u223A',
+    'male': '\u2642',
+    'maltese': '\u2720',
+    'map': '\u21A6',
+    'mapsto': '\u21A6',
+    'mapstodown': '\u21A7',
+    'mapstoleft': '\u21A4',
+    'mapstoup': '\u21A5',
+    'marker': '\u25AE',
+    'mcomma': '\u2A29',
+    'mcy': '\u043C',
+    'mdash': '\u2014',
+    'measuredangle': '\u2221',
+    'micro': '\u00B5',
+    'mid': '\u2223',
+    'midast': '\u002A',
+    'midcir': '\u2AF0',
+    'middot': '\u00B7',
+    'minus': '\u2212',
+    'minusb': '\u229F',
+    'minusd': '\u2238',
+    'minusdu': '\u2A2A',
+    'mlcp': '\u2ADB',
+    'mldr': '\u2026',
+    'mnplus': '\u2213',
+    'models': '\u22A7',
+    'mp': '\u2213',
+    'mstpos': '\u223E',
+    'mumap': '\u22B8'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/m.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/n.js b/data/mathjax/unpacked/jax/input/MathML/entities/n.js
new file mode 100644
index 0000000..4649549
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/n.js
@@ -0,0 +1,220 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/n.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'NJcy': '\u040A',
+    'Nacute': '\u0143',
+    'Ncaron': '\u0147',
+    'Ncedil': '\u0145',
+    'Ncy': '\u041D',
+    'NegativeMediumSpace': '\u200B',
+    'NegativeThickSpace': '\u200B',
+    'NegativeThinSpace': '\u200B',
+    'NegativeVeryThinSpace': '\u200B',
+    'NewLine': '\u000A',
+    'NoBreak': '\u2060',
+    'NonBreakingSpace': '\u00A0',
+    'Not': '\u2AEC',
+    'NotCongruent': '\u2262',
+    'NotCupCap': '\u226D',
+    'NotEqualTilde': '\u2242\u0338',
+    'NotGreaterFullEqual': '\u2267\u0338',
+    'NotGreaterGreater': '\u226B\u0338',
+    'NotGreaterLess': '\u2279',
+    'NotGreaterSlantEqual': '\u2A7E\u0338',
+    'NotGreaterTilde': '\u2275',
+    'NotHumpDownHump': '\u224E\u0338',
+    'NotHumpEqual': '\u224F\u0338',
+    'NotLeftTriangleBar': '\u29CF\u0338',
+    'NotLessGreater': '\u2278',
+    'NotLessLess': '\u226A\u0338',
+    'NotLessSlantEqual': '\u2A7D\u0338',
+    'NotLessTilde': '\u2274',
+    'NotNestedGreaterGreater': '\u2AA2\u0338',
+    'NotNestedLessLess': '\u2AA1\u0338',
+    'NotPrecedesEqual': '\u2AAF\u0338',
+    'NotReverseElement': '\u220C',
+    'NotRightTriangleBar': '\u29D0\u0338',
+    'NotSquareSubset': '\u228F\u0338',
+    'NotSquareSubsetEqual': '\u22E2',
+    'NotSquareSuperset': '\u2290\u0338',
+    'NotSquareSupersetEqual': '\u22E3',
+    'NotSubset': '\u2282\u20D2',
+    'NotSucceedsEqual': '\u2AB0\u0338',
+    'NotSucceedsTilde': '\u227F\u0338',
+    'NotSuperset': '\u2283\u20D2',
+    'NotTildeEqual': '\u2244',
+    'NotTildeFullEqual': '\u2247',
+    'NotTildeTilde': '\u2249',
+    'Ntilde': '\u00D1',
+    'Nu': '\u039D',
+    'nGg': '\u22D9\u0338',
+    'nGt': '\u226B\u20D2',
+    'nGtv': '\u226B\u0338',
+    'nLl': '\u22D8\u0338',
+    'nLt': '\u226A\u20D2',
+    'nLtv': '\u226A\u0338',
+    'nabla': '\u2207',
+    'nacute': '\u0144',
+    'nang': '\u2220\u20D2',
+    'nap': '\u2249',
+    'napE': '\u2A70\u0338',
+    'napid': '\u224B\u0338',
+    'napos': '\u0149',
+    'napprox': '\u2249',
+    'natural': '\u266E',
+    'naturals': '\u2115',
+    'nbsp': '\u00A0',
+    'nbump': '\u224E\u0338',
+    'nbumpe': '\u224F\u0338',
+    'ncap': '\u2A43',
+    'ncaron': '\u0148',
+    'ncedil': '\u0146',
+    'ncong': '\u2247',
+    'ncongdot': '\u2A6D\u0338',
+    'ncup': '\u2A42',
+    'ncy': '\u043D',
+    'ndash': '\u2013',
+    'ne': '\u2260',
+    'neArr': '\u21D7',
+    'nearhk': '\u2924',
+    'nearrow': '\u2197',
+    'nedot': '\u2250\u0338',
+    'nequiv': '\u2262',
+    'nesear': '\u2928',
+    'nesim': '\u2242\u0338',
+    'nexist': '\u2204',
+    'nexists': '\u2204',
+    'ngE': '\u2267\u0338',
+    'nge': '\u2271',
+    'ngeq': '\u2271',
+    'ngeqq': '\u2267\u0338',
+    'ngeqslant': '\u2A7E\u0338',
+    'nges': '\u2A7E\u0338',
+    'ngsim': '\u2275',
+    'ngt': '\u226F',
+    'ngtr': '\u226F',
+    'nhArr': '\u21CE',
+    'nhpar': '\u2AF2',
+    'ni': '\u220B',
+    'nis': '\u22FC',
+    'nisd': '\u22FA',
+    'niv': '\u220B',
+    'njcy': '\u045A',
+    'nlArr': '\u21CD',
+    'nlE': '\u2266\u0338',
+    'nldr': '\u2025',
+    'nle': '\u2270',
+    'nleftarrow': '\u219A',
+    'nleftrightarrow': '\u21AE',
+    'nleq': '\u2270',
+    'nleqq': '\u2266\u0338',
+    'nleqslant': '\u2A7D\u0338',
+    'nles': '\u2A7D\u0338',
+    'nless': '\u226E',
+    'nlsim': '\u2274',
+    'nlt': '\u226E',
+    'nltri': '\u22EA',
+    'nltrie': '\u22EC',
+    'nmid': '\u2224',
+    'notin': '\u2209',
+    'notinE': '\u22F9\u0338',
+    'notindot': '\u22F5\u0338',
+    'notinva': '\u2209',
+    'notinvb': '\u22F7',
+    'notinvc': '\u22F6',
+    'notni': '\u220C',
+    'notniva': '\u220C',
+    'notnivb': '\u22FE',
+    'notnivc': '\u22FD',
+    'npar': '\u2226',
+    'nparallel': '\u2226',
+    'nparsl': '\u2AFD\u20E5',
+    'npart': '\u2202\u0338',
+    'npolint': '\u2A14',
+    'npr': '\u2280',
+    'nprcue': '\u22E0',
+    'npre': '\u2AAF\u0338',
+    'nprec': '\u2280',
+    'npreceq': '\u2AAF\u0338',
+    'nrArr': '\u21CF',
+    'nrarrc': '\u2933\u0338',
+    'nrarrw': '\u219D\u0338',
+    'nrightarrow': '\u219B',
+    'nrtri': '\u22EB',
+    'nrtrie': '\u22ED',
+    'nsc': '\u2281',
+    'nsccue': '\u22E1',
+    'nsce': '\u2AB0\u0338',
+    'nshortmid': '\u2224',
+    'nshortparallel': '\u2226',
+    'nsim': '\u2241',
+    'nsime': '\u2244',
+    'nsimeq': '\u2244',
+    'nsmid': '\u2224',
+    'nspar': '\u2226',
+    'nsqsube': '\u22E2',
+    'nsqsupe': '\u22E3',
+    'nsub': '\u2284',
+    'nsubE': '\u2AC5\u0338',
+    'nsube': '\u2288',
+    'nsubset': '\u2282\u20D2',
+    'nsubseteq': '\u2288',
+    'nsubseteqq': '\u2AC5\u0338',
+    'nsucc': '\u2281',
+    'nsucceq': '\u2AB0\u0338',
+    'nsup': '\u2285',
+    'nsupE': '\u2AC6\u0338',
+    'nsupe': '\u2289',
+    'nsupset': '\u2283\u20D2',
+    'nsupseteq': '\u2289',
+    'nsupseteqq': '\u2AC6\u0338',
+    'ntgl': '\u2279',
+    'ntilde': '\u00F1',
+    'ntlg': '\u2278',
+    'ntriangleleft': '\u22EA',
+    'ntrianglelefteq': '\u22EC',
+    'ntriangleright': '\u22EB',
+    'ntrianglerighteq': '\u22ED',
+    'num': '\u0023',
+    'numero': '\u2116',
+    'numsp': '\u2007',
+    'nvHarr': '\u2904',
+    'nvap': '\u224D\u20D2',
+    'nvge': '\u2265\u20D2',
+    'nvgt': '\u003E\u20D2',
+    'nvinfin': '\u29DE',
+    'nvlArr': '\u2902',
+    'nvle': '\u2264\u20D2',
+    'nvlt': '\u003C\u20D2',
+    'nvltrie': '\u22B4\u20D2',
+    'nvrArr': '\u2903',
+    'nvrtrie': '\u22B5\u20D2',
+    'nvsim': '\u223C\u20D2',
+    'nwArr': '\u21D6',
+    'nwarhk': '\u2923',
+    'nwarrow': '\u2196',
+    'nwnear': '\u2927'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/n.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/o.js b/data/mathjax/unpacked/jax/input/MathML/entities/o.js
new file mode 100644
index 0000000..d15a960
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/o.js
@@ -0,0 +1,90 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/o.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'OElig': '\u0152',
+    'Oacute': '\u00D3',
+    'Ocirc': '\u00D4',
+    'Ocy': '\u041E',
+    'Odblac': '\u0150',
+    'Ograve': '\u00D2',
+    'Omacr': '\u014C',
+    'Omicron': '\u039F',
+    'OpenCurlyDoubleQuote': '\u201C',
+    'OpenCurlyQuote': '\u2018',
+    'Or': '\u2A54',
+    'Oslash': '\u00D8',
+    'Otilde': '\u00D5',
+    'Otimes': '\u2A37',
+    'Ouml': '\u00D6',
+    'OverBracket': '\u23B4',
+    'OverParenthesis': '\u23DC',
+    'oS': '\u24C8',
+    'oacute': '\u00F3',
+    'oast': '\u229B',
+    'ocir': '\u229A',
+    'ocirc': '\u00F4',
+    'ocy': '\u043E',
+    'odash': '\u229D',
+    'odblac': '\u0151',
+    'odiv': '\u2A38',
+    'odot': '\u2299',
+    'odsold': '\u29BC',
+    'oelig': '\u0153',
+    'ofcir': '\u29BF',
+    'ogon': '\u02DB',
+    'ograve': '\u00F2',
+    'ogt': '\u29C1',
+    'ohbar': '\u29B5',
+    'ohm': '\u03A9',
+    'oint': '\u222E',
+    'olarr': '\u21BA',
+    'olcir': '\u29BE',
+    'olcross': '\u29BB',
+    'oline': '\u203E',
+    'olt': '\u29C0',
+    'omacr': '\u014D',
+    'omid': '\u29B6',
+    'ominus': '\u2296',
+    'opar': '\u29B7',
+    'operp': '\u29B9',
+    'oplus': '\u2295',
+    'orarr': '\u21BB',
+    'ord': '\u2A5D',
+    'order': '\u2134',
+    'orderof': '\u2134',
+    'ordf': '\u00AA',
+    'ordm': '\u00BA',
+    'origof': '\u22B6',
+    'oror': '\u2A56',
+    'orslope': '\u2A57',
+    'orv': '\u2A5B',
+    'oslash': '\u00F8',
+    'otilde': '\u00F5',
+    'otimes': '\u2297',
+    'otimesas': '\u2A36',
+    'ouml': '\u00F6',
+    'ovbar': '\u233D'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/o.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/opf.js b/data/mathjax/unpacked/jax/input/MathML/entities/opf.js
new file mode 100644
index 0000000..cc8c552
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/opf.js
@@ -0,0 +1,79 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/opf.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'Aopf': '\uD835\uDD38',
+    'Bopf': '\uD835\uDD39',
+    'Copf': '\u2102',
+    'Dopf': '\uD835\uDD3B',
+    'Eopf': '\uD835\uDD3C',
+    'Fopf': '\uD835\uDD3D',
+    'Gopf': '\uD835\uDD3E',
+    'Hopf': '\u210D',
+    'Iopf': '\uD835\uDD40',
+    'Jopf': '\uD835\uDD41',
+    'Kopf': '\uD835\uDD42',
+    'Lopf': '\uD835\uDD43',
+    'Mopf': '\uD835\uDD44',
+    'Nopf': '\u2115',
+    'Oopf': '\uD835\uDD46',
+    'Popf': '\u2119',
+    'Qopf': '\u211A',
+    'Ropf': '\u211D',
+    'Sopf': '\uD835\uDD4A',
+    'Topf': '\uD835\uDD4B',
+    'Uopf': '\uD835\uDD4C',
+    'Vopf': '\uD835\uDD4D',
+    'Wopf': '\uD835\uDD4E',
+    'Xopf': '\uD835\uDD4F',
+    'Yopf': '\uD835\uDD50',
+    'Zopf': '\u2124',
+    'aopf': '\uD835\uDD52',
+    'bopf': '\uD835\uDD53',
+    'copf': '\uD835\uDD54',
+    'dopf': '\uD835\uDD55',
+    'eopf': '\uD835\uDD56',
+    'fopf': '\uD835\uDD57',
+    'gopf': '\uD835\uDD58',
+    'hopf': '\uD835\uDD59',
+    'iopf': '\uD835\uDD5A',
+    'jopf': '\uD835\uDD5B',
+    'kopf': '\uD835\uDD5C',
+    'lopf': '\uD835\uDD5D',
+    'mopf': '\uD835\uDD5E',
+    'nopf': '\uD835\uDD5F',
+    'oopf': '\uD835\uDD60',
+    'popf': '\uD835\uDD61',
+    'qopf': '\uD835\uDD62',
+    'ropf': '\uD835\uDD63',
+    'sopf': '\uD835\uDD64',
+    'topf': '\uD835\uDD65',
+    'uopf': '\uD835\uDD66',
+    'vopf': '\uD835\uDD67',
+    'wopf': '\uD835\uDD68',
+    'xopf': '\uD835\uDD69',
+    'yopf': '\uD835\uDD6A',
+    'zopf': '\uD835\uDD6B'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/opf.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/p.js b/data/mathjax/unpacked/jax/input/MathML/entities/p.js
new file mode 100644
index 0000000..e8ee2c3
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/p.js
@@ -0,0 +1,84 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/p.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'Pcy': '\u041F',
+    'Poincareplane': '\u210C',
+    'Pr': '\u2ABB',
+    'Prime': '\u2033',
+    'Proportion': '\u2237',
+    'par': '\u2225',
+    'para': '\u00B6',
+    'parallel': '\u2225',
+    'parsim': '\u2AF3',
+    'parsl': '\u2AFD',
+    'part': '\u2202',
+    'pcy': '\u043F',
+    'percnt': '\u0025',
+    'permil': '\u2030',
+    'perp': '\u22A5',
+    'pertenk': '\u2031',
+    'phmmat': '\u2133',
+    'phone': '\u260E',
+    'pitchfork': '\u22D4',
+    'planck': '\u210F',
+    'planckh': '\u210E',
+    'plankv': '\u210F',
+    'plus': '\u002B',
+    'plusacir': '\u2A23',
+    'plusb': '\u229E',
+    'pluscir': '\u2A22',
+    'plusdo': '\u2214',
+    'plusdu': '\u2A25',
+    'pluse': '\u2A72',
+    'plusmn': '\u00B1',
+    'plussim': '\u2A26',
+    'plustwo': '\u2A27',
+    'pm': '\u00B1',
+    'pointint': '\u2A15',
+    'pound': '\u00A3',
+    'pr': '\u227A',
+    'prE': '\u2AB3',
+    'prcue': '\u227C',
+    'pre': '\u2AAF',
+    'prec': '\u227A',
+    'precapprox': '\u2AB7',
+    'preccurlyeq': '\u227C',
+    'preceq': '\u2AAF',
+    'precsim': '\u227E',
+    'primes': '\u2119',
+    'prnE': '\u2AB5',
+    'prnap': '\u2AB9',
+    'prnsim': '\u22E8',
+    'prod': '\u220F',
+    'profalar': '\u232E',
+    'profline': '\u2312',
+    'profsurf': '\u2313',
+    'prop': '\u221D',
+    'propto': '\u221D',
+    'prsim': '\u227E',
+    'prurel': '\u22B0',
+    'puncsp': '\u2008'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/p.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/q.js b/data/mathjax/unpacked/jax/input/MathML/entities/q.js
new file mode 100644
index 0000000..e2773ea
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/q.js
@@ -0,0 +1,35 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/q.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'QUOT': '\u0022',
+    'qint': '\u2A0C',
+    'qprime': '\u2057',
+    'quaternions': '\u210D',
+    'quatint': '\u2A16',
+    'quest': '\u003F',
+    'questeq': '\u225F',
+    'quot': '\u0022'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/q.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/r.js b/data/mathjax/unpacked/jax/input/MathML/entities/r.js
new file mode 100644
index 0000000..9a25327
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/r.js
@@ -0,0 +1,138 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/r.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'RBarr': '\u2910',
+    'REG': '\u00AE',
+    'Racute': '\u0154',
+    'Rang': '\u27EB',
+    'Rarrtl': '\u2916',
+    'Rcaron': '\u0158',
+    'Rcedil': '\u0156',
+    'Rcy': '\u0420',
+    'ReverseElement': '\u220B',
+    'ReverseUpEquilibrium': '\u296F',
+    'Rho': '\u03A1',
+    'RightArrowBar': '\u21E5',
+    'RightDoubleBracket': '\u27E7',
+    'RightDownTeeVector': '\u295D',
+    'RightDownVectorBar': '\u2955',
+    'RightTeeVector': '\u295B',
+    'RightTriangleBar': '\u29D0',
+    'RightUpDownVector': '\u294F',
+    'RightUpTeeVector': '\u295C',
+    'RightUpVectorBar': '\u2954',
+    'RightVectorBar': '\u2953',
+    'RoundImplies': '\u2970',
+    'RuleDelayed': '\u29F4',
+    'rAarr': '\u21DB',
+    'rArr': '\u21D2',
+    'rAtail': '\u291C',
+    'rBarr': '\u290F',
+    'rHar': '\u2964',
+    'race': '\u223D\u0331',
+    'racute': '\u0155',
+    'radic': '\u221A',
+    'raemptyv': '\u29B3',
+    'rang': '\u27E9',
+    'rangd': '\u2992',
+    'range': '\u29A5',
+    'rangle': '\u27E9',
+    'raquo': '\u00BB',
+    'rarr': '\u2192',
+    'rarrap': '\u2975',
+    'rarrb': '\u21E5',
+    'rarrbfs': '\u2920',
+    'rarrc': '\u2933',
+    'rarrfs': '\u291E',
+    'rarrhk': '\u21AA',
+    'rarrlp': '\u21AC',
+    'rarrpl': '\u2945',
+    'rarrsim': '\u2974',
+    'rarrw': '\u219D',
+    'ratail': '\u291A',
+    'ratio': '\u2236',
+    'rationals': '\u211A',
+    'rbarr': '\u290D',
+    'rbbrk': '\u2773',
+    'rbrke': '\u298C',
+    'rbrksld': '\u298E',
+    'rbrkslu': '\u2990',
+    'rcaron': '\u0159',
+    'rcedil': '\u0157',
+    'rceil': '\u2309',
+    'rcub': '\u007D',
+    'rcy': '\u0440',
+    'rdca': '\u2937',
+    'rdldhar': '\u2969',
+    'rdquo': '\u201D',
+    'rdquor': '\u201D',
+    'rdsh': '\u21B3',
+    'real': '\u211C',
+    'realine': '\u211B',
+    'realpart': '\u211C',
+    'reals': '\u211D',
+    'rect': '\u25AD',
+    'reg': '\u00AE',
+    'rfisht': '\u297D',
+    'rfloor': '\u230B',
+    'rhard': '\u21C1',
+    'rharu': '\u21C0',
+    'rharul': '\u296C',
+    'rightarrow': '\u2192',
+    'rightarrowtail': '\u21A3',
+    'rightharpoondown': '\u21C1',
+    'rightharpoonup': '\u21C0',
+    'rightleftarrows': '\u21C4',
+    'rightleftharpoons': '\u21CC',
+    'rightsquigarrow': '\u219D',
+    'risingdotseq': '\u2253',
+    'rlarr': '\u21C4',
+    'rlhar': '\u21CC',
+    'rlm': '\u200F',
+    'rmoustache': '\u23B1',
+    'rnmid': '\u2AEE',
+    'roang': '\u27ED',
+    'roarr': '\u21FE',
+    'robrk': '\u27E7',
+    'ropar': '\u2986',
+    'roplus': '\u2A2E',
+    'rotimes': '\u2A35',
+    'rpar': '\u0029',
+    'rpargt': '\u2994',
+    'rppolint': '\u2A12',
+    'rrarr': '\u21C9',
+    'rsaquo': '\u203A',
+    'rsh': '\u21B1',
+    'rsqb': '\u005D',
+    'rsquo': '\u2019',
+    'rsquor': '\u2019',
+    'rthree': '\u22CC',
+    'rtrie': '\u22B5',
+    'rtrif': '\u25B8',
+    'rtriltri': '\u29CE',
+    'ruluhar': '\u2968',
+    'rx': '\u211E'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/r.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/s.js b/data/mathjax/unpacked/jax/input/MathML/entities/s.js
new file mode 100644
index 0000000..8c26da8
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/s.js
@@ -0,0 +1,170 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/s.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'SHCHcy': '\u0429',
+    'SHcy': '\u0428',
+    'SOFTcy': '\u042C',
+    'Sacute': '\u015A',
+    'Sc': '\u2ABC',
+    'Scaron': '\u0160',
+    'Scedil': '\u015E',
+    'Scirc': '\u015C',
+    'Scy': '\u0421',
+    'ShortDownArrow': '\u2193',
+    'ShortLeftArrow': '\u2190',
+    'ShortRightArrow': '\u2192',
+    'ShortUpArrow': '\u2191',
+    'Sub': '\u22D0',
+    'Sup': '\u22D1',
+    'sacute': '\u015B',
+    'sbquo': '\u201A',
+    'sc': '\u227B',
+    'scE': '\u2AB4',
+    'scaron': '\u0161',
+    'sccue': '\u227D',
+    'sce': '\u2AB0',
+    'scedil': '\u015F',
+    'scirc': '\u015D',
+    'scpolint': '\u2A13',
+    'scsim': '\u227F',
+    'scy': '\u0441',
+    'sdotb': '\u22A1',
+    'sdote': '\u2A66',
+    'seArr': '\u21D8',
+    'searhk': '\u2925',
+    'searrow': '\u2198',
+    'semi': '\u003B',
+    'seswar': '\u2929',
+    'setminus': '\u2216',
+    'setmn': '\u2216',
+    'sext': '\u2736',
+    'sfrown': '\u2322',
+    'shchcy': '\u0449',
+    'shcy': '\u0448',
+    'shortmid': '\u2223',
+    'shortparallel': '\u2225',
+    'shy': '\u00AD',
+    'sigmaf': '\u03C2',
+    'sim': '\u223C',
+    'simdot': '\u2A6A',
+    'sime': '\u2243',
+    'simeq': '\u2243',
+    'simg': '\u2A9E',
+    'simgE': '\u2AA0',
+    'siml': '\u2A9D',
+    'simlE': '\u2A9F',
+    'simplus': '\u2A24',
+    'simrarr': '\u2972',
+    'slarr': '\u2190',
+    'smallsetminus': '\u2216',
+    'smashp': '\u2A33',
+    'smeparsl': '\u29E4',
+    'smid': '\u2223',
+    'smt': '\u2AAA',
+    'smte': '\u2AAC',
+    'smtes': '\u2AAC\uFE00',
+    'softcy': '\u044C',
+    'sol': '\u002F',
+    'solb': '\u29C4',
+    'solbar': '\u233F',
+    'spadesuit': '\u2660',
+    'spar': '\u2225',
+    'sqcap': '\u2293',
+    'sqcaps': '\u2293\uFE00',
+    'sqcup': '\u2294',
+    'sqcups': '\u2294\uFE00',
+    'sqsub': '\u228F',
+    'sqsube': '\u2291',
+    'sqsubset': '\u228F',
+    'sqsubseteq': '\u2291',
+    'sqsup': '\u2290',
+    'sqsupe': '\u2292',
+    'sqsupset': '\u2290',
+    'sqsupseteq': '\u2292',
+    'squ': '\u25A1',
+    'square': '\u25A1',
+    'squarf': '\u25AA',
+    'squf': '\u25AA',
+    'srarr': '\u2192',
+    'ssetmn': '\u2216',
+    'ssmile': '\u2323',
+    'sstarf': '\u22C6',
+    'star': '\u2606',
+    'starf': '\u2605',
+    'straightepsilon': '\u03F5',
+    'straightphi': '\u03D5',
+    'strns': '\u00AF',
+    'subdot': '\u2ABD',
+    'sube': '\u2286',
+    'subedot': '\u2AC3',
+    'submult': '\u2AC1',
+    'subplus': '\u2ABF',
+    'subrarr': '\u2979',
+    'subset': '\u2282',
+    'subseteq': '\u2286',
+    'subseteqq': '\u2AC5',
+    'subsetneq': '\u228A',
+    'subsetneqq': '\u2ACB',
+    'subsim': '\u2AC7',
+    'subsub': '\u2AD5',
+    'subsup': '\u2AD3',
+    'succ': '\u227B',
+    'succapprox': '\u2AB8',
+    'succcurlyeq': '\u227D',
+    'succeq': '\u2AB0',
+    'succnapprox': '\u2ABA',
+    'succneqq': '\u2AB6',
+    'succnsim': '\u22E9',
+    'succsim': '\u227F',
+    'sum': '\u2211',
+    'sung': '\u266A',
+    'sup': '\u2283',
+    'sup1': '\u00B9',
+    'sup2': '\u00B2',
+    'sup3': '\u00B3',
+    'supdot': '\u2ABE',
+    'supdsub': '\u2AD8',
+    'supe': '\u2287',
+    'supedot': '\u2AC4',
+    'suphsol': '\u27C9',
+    'suphsub': '\u2AD7',
+    'suplarr': '\u297B',
+    'supmult': '\u2AC2',
+    'supplus': '\u2AC0',
+    'supset': '\u2283',
+    'supseteq': '\u2287',
+    'supseteqq': '\u2AC6',
+    'supsetneq': '\u228B',
+    'supsetneqq': '\u2ACC',
+    'supsim': '\u2AC8',
+    'supsub': '\u2AD4',
+    'supsup': '\u2AD6',
+    'swArr': '\u21D9',
+    'swarhk': '\u2926',
+    'swarrow': '\u2199',
+    'swnwar': '\u292A',
+    'szlig': '\u00DF'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/s.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/scr.js b/data/mathjax/unpacked/jax/input/MathML/entities/scr.js
new file mode 100644
index 0000000..062968b
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/scr.js
@@ -0,0 +1,79 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/scr.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'Ascr': '\uD835\uDC9C',
+    'Bscr': '\u212C',
+    'Cscr': '\uD835\uDC9E',
+    'Dscr': '\uD835\uDC9F',
+    'Escr': '\u2130',
+    'Fscr': '\u2131',
+    'Gscr': '\uD835\uDCA2',
+    'Hscr': '\u210B',
+    'Iscr': '\u2110',
+    'Jscr': '\uD835\uDCA5',
+    'Kscr': '\uD835\uDCA6',
+    'Lscr': '\u2112',
+    'Mscr': '\u2133',
+    'Nscr': '\uD835\uDCA9',
+    'Oscr': '\uD835\uDCAA',
+    'Pscr': '\uD835\uDCAB',
+    'Qscr': '\uD835\uDCAC',
+    'Rscr': '\u211B',
+    'Sscr': '\uD835\uDCAE',
+    'Tscr': '\uD835\uDCAF',
+    'Uscr': '\uD835\uDCB0',
+    'Vscr': '\uD835\uDCB1',
+    'Wscr': '\uD835\uDCB2',
+    'Xscr': '\uD835\uDCB3',
+    'Yscr': '\uD835\uDCB4',
+    'Zscr': '\uD835\uDCB5',
+    'ascr': '\uD835\uDCB6',
+    'bscr': '\uD835\uDCB7',
+    'cscr': '\uD835\uDCB8',
+    'dscr': '\uD835\uDCB9',
+    'escr': '\u212F',
+    'fscr': '\uD835\uDCBB',
+    'gscr': '\u210A',
+    'hscr': '\uD835\uDCBD',
+    'iscr': '\uD835\uDCBE',
+    'jscr': '\uD835\uDCBF',
+    'kscr': '\uD835\uDCC0',
+    'lscr': '\uD835\uDCC1',
+    'mscr': '\uD835\uDCC2',
+    'nscr': '\uD835\uDCC3',
+    'oscr': '\u2134',
+    'pscr': '\uD835\uDCC5',
+    'qscr': '\uD835\uDCC6',
+    'rscr': '\uD835\uDCC7',
+    'sscr': '\uD835\uDCC8',
+    'tscr': '\uD835\uDCC9',
+    'uscr': '\uD835\uDCCA',
+    'vscr': '\uD835\uDCCB',
+    'wscr': '\uD835\uDCCC',
+    'xscr': '\uD835\uDCCD',
+    'yscr': '\uD835\uDCCE',
+    'zscr': '\uD835\uDCCF'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/scr.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/t.js b/data/mathjax/unpacked/jax/input/MathML/entities/t.js
new file mode 100644
index 0000000..8b2746e
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/t.js
@@ -0,0 +1,86 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/t.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'THORN': '\u00DE',
+    'TRADE': '\u2122',
+    'TSHcy': '\u040B',
+    'TScy': '\u0426',
+    'Tab': '\u0009',
+    'Tau': '\u03A4',
+    'Tcaron': '\u0164',
+    'Tcedil': '\u0162',
+    'Tcy': '\u0422',
+    'ThickSpace': '\u205F\u200A',
+    'ThinSpace': '\u2009',
+    'TripleDot': '\u20DB',
+    'Tstrok': '\u0166',
+    'target': '\u2316',
+    'tbrk': '\u23B4',
+    'tcaron': '\u0165',
+    'tcedil': '\u0163',
+    'tcy': '\u0442',
+    'tdot': '\u20DB',
+    'telrec': '\u2315',
+    'there4': '\u2234',
+    'therefore': '\u2234',
+    'thetasym': '\u03D1',
+    'thickapprox': '\u2248',
+    'thicksim': '\u223C',
+    'thinsp': '\u2009',
+    'thkap': '\u2248',
+    'thksim': '\u223C',
+    'thorn': '\u00FE',
+    'timesb': '\u22A0',
+    'timesbar': '\u2A31',
+    'timesd': '\u2A30',
+    'tint': '\u222D',
+    'toea': '\u2928',
+    'top': '\u22A4',
+    'topbot': '\u2336',
+    'topcir': '\u2AF1',
+    'topfork': '\u2ADA',
+    'tosa': '\u2929',
+    'tprime': '\u2034',
+    'trade': '\u2122',
+    'triangledown': '\u25BF',
+    'triangleleft': '\u25C3',
+    'trianglelefteq': '\u22B4',
+    'triangleright': '\u25B9',
+    'trianglerighteq': '\u22B5',
+    'tridot': '\u25EC',
+    'trie': '\u225C',
+    'triminus': '\u2A3A',
+    'triplus': '\u2A39',
+    'trisb': '\u29CD',
+    'tritime': '\u2A3B',
+    'trpezium': '\u23E2',
+    'tscy': '\u0446',
+    'tshcy': '\u045B',
+    'tstrok': '\u0167',
+    'twixt': '\u226C',
+    'twoheadleftarrow': '\u219E',
+    'twoheadrightarrow': '\u21A0'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/t.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/u.js b/data/mathjax/unpacked/jax/input/MathML/entities/u.js
new file mode 100644
index 0000000..e4c9f38
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/u.js
@@ -0,0 +1,92 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/u.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'Uacute': '\u00DA',
+    'Uarr': '\u219F',
+    'Uarrocir': '\u2949',
+    'Ubrcy': '\u040E',
+    'Ubreve': '\u016C',
+    'Ucirc': '\u00DB',
+    'Ucy': '\u0423',
+    'Udblac': '\u0170',
+    'Ugrave': '\u00D9',
+    'Umacr': '\u016A',
+    'UnderBracket': '\u23B5',
+    'UnderParenthesis': '\u23DD',
+    'Uogon': '\u0172',
+    'UpArrowBar': '\u2912',
+    'UpArrowDownArrow': '\u21C5',
+    'UpEquilibrium': '\u296E',
+    'UpTeeArrow': '\u21A5',
+    'UpperLeftArrow': '\u2196',
+    'UpperRightArrow': '\u2197',
+    'Upsi': '\u03D2',
+    'Uring': '\u016E',
+    'Utilde': '\u0168',
+    'Uuml': '\u00DC',
+    'uArr': '\u21D1',
+    'uHar': '\u2963',
+    'uacute': '\u00FA',
+    'uarr': '\u2191',
+    'ubrcy': '\u045E',
+    'ubreve': '\u016D',
+    'ucirc': '\u00FB',
+    'ucy': '\u0443',
+    'udarr': '\u21C5',
+    'udblac': '\u0171',
+    'udhar': '\u296E',
+    'ufisht': '\u297E',
+    'ugrave': '\u00F9',
+    'uharl': '\u21BF',
+    'uharr': '\u21BE',
+    'uhblk': '\u2580',
+    'ulcorn': '\u231C',
+    'ulcorner': '\u231C',
+    'ulcrop': '\u230F',
+    'ultri': '\u25F8',
+    'umacr': '\u016B',
+    'uml': '\u00A8',
+    'uogon': '\u0173',
+    'uparrow': '\u2191',
+    'updownarrow': '\u2195',
+    'upharpoonleft': '\u21BF',
+    'upharpoonright': '\u21BE',
+    'uplus': '\u228E',
+    'upsih': '\u03D2',
+    'upsilon': '\u03C5',
+    'urcorn': '\u231D',
+    'urcorner': '\u231D',
+    'urcrop': '\u230E',
+    'uring': '\u016F',
+    'urtri': '\u25F9',
+    'utdot': '\u22F0',
+    'utilde': '\u0169',
+    'utri': '\u25B5',
+    'utrif': '\u25B4',
+    'uuarr': '\u21C8',
+    'uuml': '\u00FC',
+    'uwangle': '\u29A7'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/u.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/v.js b/data/mathjax/unpacked/jax/input/MathML/entities/v.js
new file mode 100644
index 0000000..b76e16d
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/v.js
@@ -0,0 +1,73 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/v.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'VDash': '\u22AB',
+    'Vbar': '\u2AEB',
+    'Vcy': '\u0412',
+    'Vdashl': '\u2AE6',
+    'Verbar': '\u2016',
+    'Vert': '\u2016',
+    'VerticalLine': '\u007C',
+    'VerticalSeparator': '\u2758',
+    'VeryThinSpace': '\u200A',
+    'vArr': '\u21D5',
+    'vBar': '\u2AE8',
+    'vBarv': '\u2AE9',
+    'vDash': '\u22A8',
+    'vangrt': '\u299C',
+    'varepsilon': '\u03F5',
+    'varkappa': '\u03F0',
+    'varnothing': '\u2205',
+    'varphi': '\u03D5',
+    'varpi': '\u03D6',
+    'varpropto': '\u221D',
+    'varr': '\u2195',
+    'varrho': '\u03F1',
+    'varsigma': '\u03C2',
+    'varsubsetneq': '\u228A\uFE00',
+    'varsubsetneqq': '\u2ACB\uFE00',
+    'varsupsetneq': '\u228B\uFE00',
+    'varsupsetneqq': '\u2ACC\uFE00',
+    'vartheta': '\u03D1',
+    'vartriangleleft': '\u22B2',
+    'vartriangleright': '\u22B3',
+    'vcy': '\u0432',
+    'vdash': '\u22A2',
+    'vee': '\u2228',
+    'veeeq': '\u225A',
+    'verbar': '\u007C',
+    'vert': '\u007C',
+    'vltri': '\u22B2',
+    'vnsub': '\u2282\u20D2',
+    'vnsup': '\u2283\u20D2',
+    'vprop': '\u221D',
+    'vrtri': '\u22B3',
+    'vsubnE': '\u2ACB\uFE00',
+    'vsubne': '\u228A\uFE00',
+    'vsupnE': '\u2ACC\uFE00',
+    'vsupne': '\u228B\uFE00',
+    'vzigzag': '\u299A'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/v.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/w.js b/data/mathjax/unpacked/jax/input/MathML/entities/w.js
new file mode 100644
index 0000000..73186ee
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/w.js
@@ -0,0 +1,35 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/w.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'Wcirc': '\u0174',
+    'wcirc': '\u0175',
+    'wedbar': '\u2A5F',
+    'wedge': '\u2227',
+    'wedgeq': '\u2259',
+    'wp': '\u2118',
+    'wr': '\u2240',
+    'wreath': '\u2240'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/w.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/x.js b/data/mathjax/unpacked/jax/input/MathML/entities/x.js
new file mode 100644
index 0000000..f6bb122
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/x.js
@@ -0,0 +1,47 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/x.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'xcap': '\u22C2',
+    'xcirc': '\u25EF',
+    'xcup': '\u22C3',
+    'xdtri': '\u25BD',
+    'xhArr': '\u27FA',
+    'xharr': '\u27F7',
+    'xlArr': '\u27F8',
+    'xlarr': '\u27F5',
+    'xmap': '\u27FC',
+    'xnis': '\u22FB',
+    'xodot': '\u2A00',
+    'xoplus': '\u2A01',
+    'xotime': '\u2A02',
+    'xrArr': '\u27F9',
+    'xrarr': '\u27F6',
+    'xsqcup': '\u2A06',
+    'xuplus': '\u2A04',
+    'xutri': '\u25B3',
+    'xvee': '\u22C1',
+    'xwedge': '\u22C0'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/x.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/y.js b/data/mathjax/unpacked/jax/input/MathML/entities/y.js
new file mode 100644
index 0000000..913d61d
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/y.js
@@ -0,0 +1,41 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/y.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'YAcy': '\u042F',
+    'YIcy': '\u0407',
+    'YUcy': '\u042E',
+    'Yacute': '\u00DD',
+    'Ycirc': '\u0176',
+    'Ycy': '\u042B',
+    'Yuml': '\u0178',
+    'yacute': '\u00FD',
+    'yacy': '\u044F',
+    'ycirc': '\u0177',
+    'ycy': '\u044B',
+    'yicy': '\u0457',
+    'yucy': '\u044E',
+    'yuml': '\u00FF'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/y.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/entities/z.js b/data/mathjax/unpacked/jax/input/MathML/entities/z.js
new file mode 100644
index 0000000..385b9ff
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/entities/z.js
@@ -0,0 +1,42 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/entities/z.js
+ *
+ *  Copyright (c) 2010 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+(function (MATHML) {
+  MathJax.Hub.Insert(MATHML.Parse.Entity,{
+    'ZHcy': '\u0416',
+    'Zacute': '\u0179',
+    'Zcaron': '\u017D',
+    'Zcy': '\u0417',
+    'Zdot': '\u017B',
+    'ZeroWidthSpace': '\u200B',
+    'Zeta': '\u0396',
+    'zacute': '\u017A',
+    'zcaron': '\u017E',
+    'zcy': '\u0437',
+    'zdot': '\u017C',
+    'zeetrf': '\u2128',
+    'zhcy': '\u0436',
+    'zwj': '\u200D',
+    'zwnj': '\u200C'
+  });
+
+  MathJax.Ajax.loadComplete(MATHML.entityDir+"/z.js");
+
+})(MathJax.InputJax.MathML);
diff --git a/data/mathjax/unpacked/jax/input/MathML/jax.js b/data/mathjax/unpacked/jax/input/MathML/jax.js
new file mode 100644
index 0000000..1270eef
--- /dev/null
+++ b/data/mathjax/unpacked/jax/input/MathML/jax.js
@@ -0,0 +1,700 @@
+/*************************************************************
+ *
+ *  MathJax/jax/input/MathML/jax.js
+ *  
+ *  Implements the MathML InputJax that reads mathematics in
+ *  MathML format and converts it to the MML ElementJax
+ *  internal format.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2010-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+(function (MATHML,BROWSER) {
+  var MML;
+  
+  MATHML.Parse = MathJax.Object.Subclass({
+
+    Init: function (string) {this.Parse(string)},
+    
+    //
+    //  Parse the MathML and check for errors
+    //
+    Parse: function (math) {
+      var doc;
+      if (typeof math !== "string") {doc = math.parentNode} else {
+        if (math.match(/^<[a-z]+:/i) && !math.match(/^<[^<>]* xmlns:/))
+          {math = math.replace(/^<([a-z]+)(:math)/i,'<$1$2 xmlns:$1="http://www.w3.org/1998/Math/MathML";')}
+        // HTML5 removes xmlns: namespaces, so put them back for XML
+        var match = math.match(/^(<math( ('.*?'|".*?"|[^>])+)>)/i);
+        if (match && match[2].match(/ (?!xmlns=)[a-z]+=\"http:/i)) {
+	  math = match[1].replace(/ (?!xmlns=)([a-z]+=(['"])http:.*?\2)/ig," xmlns:$1 $1") +
+	         math.substr(match[0].length);
+        }
+        math = math.replace(/^\s*(?:\/\/)?<!(--)?\[CDATA\[((.|\n)*)(\/\/)?\]\]\1>\s*$/,"$2");
+        math = math.replace(/&([a-z][a-z0-9]*);/ig,this.replaceEntity);
+        doc = MATHML.ParseXML(math); if (doc == null) {MATHML.Error("Error parsing MathML")}
+      }
+      var err = doc.getElementsByTagName("parsererror")[0];
+      if (err) MATHML.Error("Error parsing MathML: "+err.textContent.replace(/This page.*?errors:|XML Parsing Error: |Below is a rendering of the page.*/g,""));
+      if (doc.childNodes.length !== 1) MATHML.Error("MathML must be formed by a single element");
+      if (doc.firstChild.nodeName.toLowerCase() === "html") {
+        var h1 = doc.getElementsByTagName("h1")[0];
+        if (h1 && h1.textContent === "XML parsing error" && h1.nextSibling)
+          MATHML.Error("Error parsing MathML: "+String(h1.nextSibling.nodeValue).replace(/fatal parsing error: /,""));
+      }
+      if (doc.firstChild.nodeName.toLowerCase().replace(/^[a-z]+:/,"") !== "math")
+        MATHML.Error("MathML must be formed by a <math> element, not <"+doc.firstChild.nodeName+">");
+      this.mml = this.MakeMML(doc.firstChild);
+    },
+    
+    //
+    //  Convert the MathML structure to the MathJax Element jax structure
+    //
+    MakeMML: function (node) {
+      var CLASS = String(node.getAttribute("class")||""); // make sure CLASS is a string
+      var mml, type = node.nodeName.toLowerCase().replace(/^[a-z]+:/,"");
+      var match = (CLASS.match(/(^| )MJX-TeXAtom-([^ ]*)/));
+      if (match) {
+        mml = this.TeXAtom(match[2]);
+      } else if (!(MML[type] && MML[type].isa && MML[type].isa(MML.mbase))) {
+        MathJax.Hub.signal.Post(["MathML Jax - unknown node type",type]);
+        return MML.merror("Unknown node type: "+type);
+      } else {
+        mml = MML[type]();
+      }
+      this.AddAttributes(mml,node); this.CheckClass(mml,CLASS);
+      this.AddChildren(mml,node);
+      if (MATHML.config.useMathMLspacing) {mml.useMMLspacing = 0x08}
+      return mml;
+    },
+    TeXAtom: function (mclass) {
+      var mml = MML.TeXAtom().With({texClass:MML.TEXCLASS[mclass]});
+      if (mml.texClass === MML.TEXCLASS.OP) {mml.movesupsub = mml.movablelimits = true}
+      return mml;
+    },
+    CheckClass: function (mml,CLASS) {
+      CLASS = CLASS.split(/ /); var NCLASS = [];
+      for (var i = 0, m = CLASS.length; i < m; i++) {
+        if (CLASS[i].substr(0,4) === "MJX-") {
+          if (CLASS[i] === "MJX-arrow") {
+            mml.arrow = true;
+          } else if (CLASS[i] === "MJX-variant") {
+            mml.variantForm = true;
+            //
+            //  Variant forms come from AMSsymbols, and it sets up the
+            //  character mappings, so load that if needed.
+            //
+            if (!MathJax.Extension["TeX/AMSsymbols"])
+              {MathJax.Hub.RestartAfter(MathJax.Ajax.Require("[MathJax]/extensions/TeX/AMSsymbols.js"))}
+          } else if (CLASS[i].substr(0,11) !== "MJX-TeXAtom") {
+            mml.mathvariant = CLASS[i].substr(3);
+            //
+            //  Caligraphic and oldstyle bold are set up in the boldsymbol
+            //  extension, so load it if it isn't already loaded.
+            //  
+            if (mml.mathvariant === "-tex-caligraphic-bold" ||
+                mml.mathvariant === "-tex-oldstyle-bold") {
+              if (!MathJax.Extension["TeX/boldsymbol"])
+                {MathJax.Hub.RestartAfter(MathJax.Ajax.Require("[MathJax]/extensions/TeX/boldsymbol.js"))}
+            }
+          }
+        } else {NCLASS.push(CLASS[i])}
+      }
+      if (NCLASS.length) {mml["class"] = NCLASS.join(" ")} else {delete mml["class"]}
+    },
+    
+    //
+    //  Add the attributes to the mml node
+    //
+    AddAttributes: function (mml,node) {
+      mml.attr = {}; mml.attrNames = [];
+      for (var i = 0, m = node.attributes.length; i < m; i++) {
+        var name = node.attributes[i].name;
+        if (name == "xlink:href") {name = "href"}
+        if (name.match(/:/)) continue;
+        if (name.match(/^_moz-math-((column|row)(align|line)|font-style)$/)) continue;
+        var value = node.attributes[i].value;
+        if (value.toLowerCase() === "true") {value = true}
+          else if (value.toLowerCase() === "false") {value = false}
+        if (mml.defaults[name] != null || MML.copyAttributes[name])
+          {mml[name] = value} else {mml.attr[name] = value}
+        mml.attrNames.push(name);
+      }
+    },
+    
+    //
+    //  Create the children for the mml node
+    //
+    AddChildren: function (mml,node) {
+      for (var i = 0, m = node.childNodes.length; i < m; i++) {
+        var child = node.childNodes[i];
+        if (child.nodeName === "#comment") continue;
+        if (child.nodeName === "#text") {
+          if (mml.isToken && !mml.mmlSelfClosing) {
+            var text = child.nodeValue.replace(/&([a-z][a-z0-9]*);/ig,this.replaceEntity);
+            mml.Append(MML.chars(this.trimSpace(text)));
+          } else if (child.nodeValue.match(/\S/)) {
+            MATHML.Error("Unexpected text node: '"+child.nodeValue+"'");
+          }
+        } else if (mml.type === "annotation-xml") {
+          mml.Append(MML.xml(child));
+        } else {
+          var cmml = this.MakeMML(child); mml.Append(cmml);
+          if (cmml.mmlSelfClosing && cmml.data.length)
+            {mml.Append.apply(mml,cmml.data); cmml.data = []}
+        }
+      }
+    },
+    
+    //
+    //  Remove attribute whitespace
+    //
+    trimSpace: function (string) {
+      return string.replace(/[\t\n\r]/g," ")    // whitespace to spaces
+                   .replace(/^ +/,"")           // initial whitespace
+                   .replace(/ +$/,"")           // trailing whitespace
+                   .replace(/  +/g," ");        // internal multiple whitespace
+    },
+    
+    //
+    //  Replace a named entity by its value
+    //  (look up from external files if necessary)
+    //
+    replaceEntity: function (match,entity) {
+      if (entity.match(/^(lt|amp|quot)$/)) {return match} // these mess up attribute parsing
+      if (MATHML.Parse.Entity[entity]) {return MATHML.Parse.Entity[entity]}
+      var file = entity.charAt(0).toLowerCase();
+      var font = entity.match(/^[a-zA-Z](fr|scr|opf)$/);
+      if (font) {file = font[1]}
+      if (!MATHML.Parse.loaded[file]) {
+        MATHML.Parse.loaded[file] = true;
+        MathJax.Hub.RestartAfter(MathJax.Ajax.Require(MATHML.entityDir+"/"+file+".js"));
+      }
+      return match;
+    }
+  }, {
+    loaded: []    // the entity files that are loaded
+  });
+  
+  /************************************************************************/
+
+  MATHML.Augment({
+    sourceMenuTitle: "Original MathML",
+    
+    prefilterHooks:    MathJax.Callback.Hooks(true),   // hooks to run before processing MathML
+    postfilterHooks:   MathJax.Callback.Hooks(true),   // hooks to run after processing MathML
+
+    Translate: function (script) {
+      if (!this.ParseXML) {this.ParseXML = this.createParser()}
+      var mml, math, data = {script:script};
+      if (script.firstChild &&
+          script.firstChild.nodeName.toLowerCase().replace(/^[a-z]+:/,"") === "math") {
+        data.math = script.firstChild;
+        this.prefilterHooks.Execute(data); math = data.math;
+      } else {
+        math = MathJax.HTML.getScript(script);
+        if (BROWSER.isMSIE) {math = math.replace(/(&nbsp;)+$/,"")}
+        data.math = math; this.prefilterHooks.Execute(data); math = data.math;
+      }
+      try {
+        mml = MATHML.Parse(math).mml;
+      } catch(err) {
+        if (!err.mathmlError) {throw err}
+        mml = this.formatError(err,math,script);
+      }
+      data.math = MML(mml); this.postfilterHooks.Execute(data);
+      return data.math;
+    },
+    prefilterMath: function (math,script) {return math},
+    prefilterMathML: function (math,script) {return math},
+    formatError: function (err,math,script) {
+      var message = err.message.replace(/\n.*/,"");
+      MathJax.Hub.signal.Post(["MathML Jax - parse error",message,math,script]);
+      return MML.merror(message);
+    },
+    Error: function (message) {
+      throw MathJax.Hub.Insert(Error(message),{mathmlError: true});
+    },
+    //
+    //  Parsers for various forms (DOMParser, Windows ActiveX object, other)
+    //
+    parseDOM: function (string) {return this.parser.parseFromString(string,"text/xml")},
+    parseMS: function (string) {return (this.parser.loadXML(string) ? this.parser : null)},
+    parseDIV: function (string) {
+      this.div.innerHTML = string.replace(/<([a-z]+)([^>]*)\/>/g,"<$1$2></$1>");
+      return this.div;
+    },
+    parseError: function (string) {return null},
+    //
+    //  Create the parser using a DOMParser, or other fallback method
+    //
+    createParser: function () {
+      if (window.DOMParser) {
+        this.parser = new DOMParser();
+        return(this.parseDOM);
+      } else if (window.ActiveXObject) {
+        var xml = ["MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0",
+                   "MSXML2.DOMDocument.3.0","MSXML2.DOMDocument.2.0","Microsoft.XMLDOM"];
+        for (var i = 0, m = xml.length; i < m && !this.parser; i++)
+          {try {this.parser = new ActiveXObject(xml[i])} catch (err) {}}
+        if (!this.parser) {
+          alert("MathJax can't create an XML parser for MathML.  Check that\n"+
+                "the 'Script ActiveX controls marked safe for scripting' security\n"+
+                "setting is enabled (use the Internet Options item in the Tools\n"+
+                "menu, and select the Security panel, then press the Custom Level\n"+
+                "button to check this).\n\n"+
+                "MathML equations will not be able to be processed by MathJax.");
+          return(this.parseError);
+        }
+        this.parser.async = false;
+        return(this.parseMS);
+      }
+      this.div = MathJax.Hub.Insert(document.createElement("div"),{
+           style:{visibility:"hidden", overflow:"hidden", height:"1px",
+                  position:"absolute", top:0}
+      });
+      if (!document.body.firstChild) {document.body.appendChild(this.div)}
+        else {document.body.insertBefore(this.div,document.body.firstChild)}
+      return(this.parseDIV);
+    },
+    //
+    //  Initialize the parser object (whichever type is used)
+    //
+    Startup: function () {
+      MML = MathJax.ElementJax.mml;
+      MML.mspace.Augment({mmlSelfClosing: true});
+      MML.none.Augment({mmlSelfClosing: true});
+      MML.mprescripts.Augment({mmlSelfClosing:true});
+    }
+  });
+  
+  //
+  //  Add the default pre-filter (for backward compatibility)
+  //
+  MATHML.prefilterHooks.Add(function (data) {
+    data.math = (typeof(data.math) === "string" ?
+      MATHML.prefilterMath(data.math,data.script) :
+      MATHML.prefilterMathML(data.math,data.script));
+  });
+
+  MATHML.Parse.Entity = {
+    ApplyFunction: '\u2061',
+    Backslash: '\u2216',
+    Because: '\u2235',
+    Breve: '\u02D8',
+    Cap: '\u22D2',
+    CenterDot: '\u00B7',
+    CircleDot: '\u2299',
+    CircleMinus: '\u2296',
+    CirclePlus: '\u2295',
+    CircleTimes: '\u2297',
+    Congruent: '\u2261',
+    ContourIntegral: '\u222E',
+    Coproduct: '\u2210',
+    Cross: '\u2A2F',
+    Cup: '\u22D3',
+    CupCap: '\u224D',
+    Dagger: '\u2021',
+    Del: '\u2207',
+    Delta: '\u0394',
+    Diamond: '\u22C4',
+    DifferentialD: '\u2146',
+    DotEqual: '\u2250',
+    DoubleDot: '\u00A8',
+    DoubleRightTee: '\u22A8',
+    DoubleVerticalBar: '\u2225',
+    DownArrow: '\u2193',
+    DownLeftVector: '\u21BD',
+    DownRightVector: '\u21C1',
+    DownTee: '\u22A4',
+    Downarrow: '\u21D3',
+    Element: '\u2208',
+    EqualTilde: '\u2242',
+    Equilibrium: '\u21CC',
+    Exists: '\u2203',
+    ExponentialE: '\u2147',
+    FilledVerySmallSquare: '\u25AA',
+    ForAll: '\u2200',
+    Gamma: '\u0393',
+    Gg: '\u22D9',
+    GreaterEqual: '\u2265',
+    GreaterEqualLess: '\u22DB',
+    GreaterFullEqual: '\u2267',
+    GreaterLess: '\u2277',
+    GreaterSlantEqual: '\u2A7E',
+    GreaterTilde: '\u2273',
+    Hacek: '\u02C7',
+    Hat: '\u005E',
+    HumpDownHump: '\u224E',
+    HumpEqual: '\u224F',
+    Im: '\u2111',
+    ImaginaryI: '\u2148',
+    Integral: '\u222B',
+    Intersection: '\u22C2',
+    InvisibleComma: '\u2063',
+    InvisibleTimes: '\u2062',
+    Lambda: '\u039B',
+    Larr: '\u219E',
+    LeftAngleBracket: '\u27E8',
+    LeftArrow: '\u2190',
+    LeftArrowRightArrow: '\u21C6',
+    LeftCeiling: '\u2308',
+    LeftDownVector: '\u21C3',
+    LeftFloor: '\u230A',
+    LeftRightArrow: '\u2194',
+    LeftTee: '\u22A3',
+    LeftTriangle: '\u22B2',
+    LeftTriangleEqual: '\u22B4',
+    LeftUpVector: '\u21BF',
+    LeftVector: '\u21BC',
+    Leftarrow: '\u21D0',
+    Leftrightarrow: '\u21D4',
+    LessEqualGreater: '\u22DA',
+    LessFullEqual: '\u2266',
+    LessGreater: '\u2276',
+    LessSlantEqual: '\u2A7D',
+    LessTilde: '\u2272',
+    Ll: '\u22D8',
+    Lleftarrow: '\u21DA',
+    LongLeftArrow: '\u27F5',
+    LongLeftRightArrow: '\u27F7',
+    LongRightArrow: '\u27F6',
+    Longleftarrow: '\u27F8',
+    Longleftrightarrow: '\u27FA',
+    Longrightarrow: '\u27F9',
+    Lsh: '\u21B0',
+    MinusPlus: '\u2213',
+    NestedGreaterGreater: '\u226B',
+    NestedLessLess: '\u226A',
+    NotDoubleVerticalBar: '\u2226',
+    NotElement: '\u2209',
+    NotEqual: '\u2260',
+    NotExists: '\u2204',
+    NotGreater: '\u226F',
+    NotGreaterEqual: '\u2271',
+    NotLeftTriangle: '\u22EA',
+    NotLeftTriangleEqual: '\u22EC',
+    NotLess: '\u226E',
+    NotLessEqual: '\u2270',
+    NotPrecedes: '\u2280',
+    NotPrecedesSlantEqual: '\u22E0',
+    NotRightTriangle: '\u22EB',
+    NotRightTriangleEqual: '\u22ED',
+    NotSubsetEqual: '\u2288',
+    NotSucceeds: '\u2281',
+    NotSucceedsSlantEqual: '\u22E1',
+    NotSupersetEqual: '\u2289',
+    NotTilde: '\u2241',
+    NotVerticalBar: '\u2224',
+    Omega: '\u03A9',
+    OverBar: '\u203E',
+    OverBrace: '\u23DE',
+    PartialD: '\u2202',
+    Phi: '\u03A6',
+    Pi: '\u03A0',
+    PlusMinus: '\u00B1',
+    Precedes: '\u227A',
+    PrecedesEqual: '\u2AAF',
+    PrecedesSlantEqual: '\u227C',
+    PrecedesTilde: '\u227E',
+    Product: '\u220F',
+    Proportional: '\u221D',
+    Psi: '\u03A8',
+    Rarr: '\u21A0',
+    Re: '\u211C',
+    ReverseEquilibrium: '\u21CB',
+    RightAngleBracket: '\u27E9',
+    RightArrow: '\u2192',
+    RightArrowLeftArrow: '\u21C4',
+    RightCeiling: '\u2309',
+    RightDownVector: '\u21C2',
+    RightFloor: '\u230B',
+    RightTee: '\u22A2',
+    RightTeeArrow: '\u21A6',
+    RightTriangle: '\u22B3',
+    RightTriangleEqual: '\u22B5',
+    RightUpVector: '\u21BE',
+    RightVector: '\u21C0',
+    Rightarrow: '\u21D2',
+    Rrightarrow: '\u21DB',
+    Rsh: '\u21B1',
+    Sigma: '\u03A3',
+    SmallCircle: '\u2218',
+    Sqrt: '\u221A',
+    Square: '\u25A1',
+    SquareIntersection: '\u2293',
+    SquareSubset: '\u228F',
+    SquareSubsetEqual: '\u2291',
+    SquareSuperset: '\u2290',
+    SquareSupersetEqual: '\u2292',
+    SquareUnion: '\u2294',
+    Star: '\u22C6',
+    Subset: '\u22D0',
+    SubsetEqual: '\u2286',
+    Succeeds: '\u227B',
+    SucceedsEqual: '\u2AB0',
+    SucceedsSlantEqual: '\u227D',
+    SucceedsTilde: '\u227F',
+    SuchThat: '\u220B',
+    Sum: '\u2211',
+    Superset: '\u2283',
+    SupersetEqual: '\u2287',
+    Supset: '\u22D1',
+    Therefore: '\u2234',
+    Theta: '\u0398',
+    Tilde: '\u223C',
+    TildeEqual: '\u2243',
+    TildeFullEqual: '\u2245',
+    TildeTilde: '\u2248',
+    UnderBar: '\u005F',
+    UnderBrace: '\u23DF',
+    Union: '\u22C3',
+    UnionPlus: '\u228E',
+    UpArrow: '\u2191',
+    UpDownArrow: '\u2195',
+    UpTee: '\u22A5',
+    Uparrow: '\u21D1',
+    Updownarrow: '\u21D5',
+    Upsilon: '\u03A5',
+    Vdash: '\u22A9',
+    Vee: '\u22C1',
+    VerticalBar: '\u2223',
+    VerticalTilde: '\u2240',
+    Vvdash: '\u22AA',
+    Wedge: '\u22C0',
+    Xi: '\u039E',
+    acute: '\u00B4',
+    aleph: '\u2135',
+    alpha: '\u03B1',
+    amalg: '\u2A3F',
+    and: '\u2227',
+    ang: '\u2220',
+    angmsd: '\u2221',
+    angsph: '\u2222',
+    ape: '\u224A',
+    backprime: '\u2035',
+    backsim: '\u223D',
+    backsimeq: '\u22CD',
+    beta: '\u03B2',
+    beth: '\u2136',
+    between: '\u226C',
+    bigcirc: '\u25EF',
+    bigodot: '\u2A00',
+    bigoplus: '\u2A01',
+    bigotimes: '\u2A02',
+    bigsqcup: '\u2A06',
+    bigstar: '\u2605',
+    bigtriangledown: '\u25BD',
+    bigtriangleup: '\u25B3',
+    biguplus: '\u2A04',
+    blacklozenge: '\u29EB',
+    blacktriangle: '\u25B4',
+    blacktriangledown: '\u25BE',
+    blacktriangleleft: '\u25C2',
+    bowtie: '\u22C8',
+    boxdl: '\u2510',
+    boxdr: '\u250C',
+    boxminus: '\u229F',
+    boxplus: '\u229E',
+    boxtimes: '\u22A0',
+    boxul: '\u2518',
+    boxur: '\u2514',
+    bsol: '\u005C',
+    bull: '\u2022',
+    cap: '\u2229',
+    check: '\u2713',
+    chi: '\u03C7',
+    circ: '\u02C6',
+    circeq: '\u2257',
+    circlearrowleft: '\u21BA',
+    circlearrowright: '\u21BB',
+    circledR: '\u00AE',
+    circledS: '\u24C8',
+    circledast: '\u229B',
+    circledcirc: '\u229A',
+    circleddash: '\u229D',
+    clubs: '\u2663',
+    colon: '\u003A',
+    comp: '\u2201',
+    ctdot: '\u22EF',
+    cuepr: '\u22DE',
+    cuesc: '\u22DF',
+    cularr: '\u21B6',
+    cup: '\u222A',
+    curarr: '\u21B7',
+    curlyvee: '\u22CE',
+    curlywedge: '\u22CF',
+    dagger: '\u2020',
+    daleth: '\u2138',
+    ddarr: '\u21CA',
+    deg: '\u00B0',
+    delta: '\u03B4',
+    digamma: '\u03DD',
+    div: '\u00F7',
+    divideontimes: '\u22C7',
+    dot: '\u02D9',
+    doteqdot: '\u2251',
+    dotplus: '\u2214',
+    dotsquare: '\u22A1',
+    dtdot: '\u22F1',
+    ecir: '\u2256',
+    efDot: '\u2252',
+    egs: '\u2A96',
+    ell: '\u2113',
+    els: '\u2A95',
+    empty: '\u2205',
+    epsi: '\u03B5',
+    epsiv: '\u03F5',
+    erDot: '\u2253',
+    eta: '\u03B7',
+    eth: '\u00F0',
+    flat: '\u266D',
+    fork: '\u22D4',
+    frown: '\u2322',
+    gEl: '\u2A8C',
+    gamma: '\u03B3',
+    gap: '\u2A86',
+    gimel: '\u2137',
+    gnE: '\u2269',
+    gnap: '\u2A8A',
+    gne: '\u2A88',
+    gnsim: '\u22E7',
+    gt: '\u003E',
+    gtdot: '\u22D7',
+    harrw: '\u21AD',
+    hbar: '\u210F',
+    hellip: '\u2026',
+    hookleftarrow: '\u21A9',
+    hookrightarrow: '\u21AA',
+    imath: '\u0131',
+    infin: '\u221E',
+    intcal: '\u22BA',
+    iota: '\u03B9',
+    jmath: '\u0237',
+    kappa: '\u03BA',
+    kappav: '\u03F0',
+    lEg: '\u2A8B',
+    lambda: '\u03BB',
+    lap: '\u2A85',
+    larrlp: '\u21AB',
+    larrtl: '\u21A2',
+    lbrace: '\u007B',
+    lbrack: '\u005B',
+    le: '\u2264',
+    leftleftarrows: '\u21C7',
+    leftthreetimes: '\u22CB',
+    lessdot: '\u22D6',
+    lmoust: '\u23B0',
+    lnE: '\u2268',
+    lnap: '\u2A89',
+    lne: '\u2A87',
+    lnsim: '\u22E6',
+    longmapsto: '\u27FC',
+    looparrowright: '\u21AC',
+    lowast: '\u2217',
+    loz: '\u25CA',
+    lt: '\u003C',
+    ltimes: '\u22C9',
+    ltri: '\u25C3',
+    macr: '\u00AF',
+    malt: '\u2720',
+    mho: '\u2127',
+    mu: '\u03BC',
+    multimap: '\u22B8',
+    nLeftarrow: '\u21CD',
+    nLeftrightarrow: '\u21CE',
+    nRightarrow: '\u21CF',
+    nVDash: '\u22AF',
+    nVdash: '\u22AE',
+    natur: '\u266E',
+    nearr: '\u2197',
+    nharr: '\u21AE',
+    nlarr: '\u219A',
+    not: '\u00AC',
+    nrarr: '\u219B',
+    nu: '\u03BD',
+    nvDash: '\u22AD',
+    nvdash: '\u22AC',
+    nwarr: '\u2196',
+    omega: '\u03C9',
+    omicron: '\u03BF',
+    or: '\u2228',
+    osol: '\u2298',
+    period: '\u002E',
+    phi: '\u03C6',
+    phiv: '\u03D5',
+    pi: '\u03C0',
+    piv: '\u03D6',
+    prap: '\u2AB7',
+    precnapprox: '\u2AB9',
+    precneqq: '\u2AB5',
+    precnsim: '\u22E8',
+    prime: '\u2032',
+    psi: '\u03C8',
+    rarrtl: '\u21A3',
+    rbrace: '\u007D',
+    rbrack: '\u005D',
+    rho: '\u03C1',
+    rhov: '\u03F1',
+    rightrightarrows: '\u21C9',
+    rightthreetimes: '\u22CC',
+    ring: '\u02DA',
+    rmoust: '\u23B1',
+    rtimes: '\u22CA',
+    rtri: '\u25B9',
+    scap: '\u2AB8',
+    scnE: '\u2AB6',
+    scnap: '\u2ABA',
+    scnsim: '\u22E9',
+    sdot: '\u22C5',
+    searr: '\u2198',
+    sect: '\u00A7',
+    sharp: '\u266F',
+    sigma: '\u03C3',
+    sigmav: '\u03C2',
+    simne: '\u2246',
+    smile: '\u2323',
+    spades: '\u2660',
+    sub: '\u2282',
+    subE: '\u2AC5',
+    subnE: '\u2ACB',
+    subne: '\u228A',
+    supE: '\u2AC6',
+    supnE: '\u2ACC',
+    supne: '\u228B',
+    swarr: '\u2199',
+    tau: '\u03C4',
+    theta: '\u03B8',
+    thetav: '\u03D1',
+    tilde: '\u02DC',
+    times: '\u00D7',
+    triangle: '\u25B5',
+    triangleq: '\u225C',
+    upsi: '\u03C5',
+    upuparrows: '\u21C8',
+    veebar: '\u22BB',
+    vellip: '\u22EE',
+    weierp: '\u2118',
+    xi: '\u03BE',
+    yen: '\u00A5',
+    zeta: '\u03B6',
+    zigrarr: '\u21DD'
+  };
+  
+  MATHML.loadComplete("jax.js");
+  
+})(MathJax.InputJax.MathML,MathJax.Hub.Browser);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/annotation-xml.js b/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/annotation-xml.js
new file mode 100644
index 0000000..f5c7b37
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/annotation-xml.js
@@ -0,0 +1,58 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/autoload/annotation-xm;l.js
+ *  
+ *  Implements the HTML-CSS output for <annotation-xml> elements.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2011-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
+  var VERSION = "2.1";
+  var MML = MathJax.ElementJax.mml,
+      HTMLCSS = MathJax.OutputJax["HTML-CSS"];
+
+  MML["annotation-xml"].Augment({
+    toHTML: function (span) {
+      span = this.HTMLhandleSize(this.HTMLcreateSpan(span));
+      var encoding = this.Get("encoding");
+      for (var i = 0, m = this.data.length; i < m; i++)
+        {this.data[i].toHTML(span,encoding)}
+      this.HTMLhandleSpace(span);
+      this.HTMLhandleColor(span);
+      return span;
+    },
+    HTMLgetScale: function () {
+      return this.SUPER(arguments).HTMLgetScale.call(this) / HTMLCSS.scale;
+    }
+  });
+  
+  MML.xml.Augment({
+    toHTML: function (span,encoding) {
+      for (var i = 0, m = this.data.length; i < m; i++) 
+        {span.appendChild(this.data[i].cloneNode(true))}
+      span.bbox.w = HTMLCSS.getW(span); span.bbox.rw = span.bbox.w;
+      var HD = HTMLCSS.getHD(span);
+      span.bbox.h = HD.h; span.bbox.d = HD.d;
+    }
+  });
+  
+  MathJax.Hub.Startup.signal.Post("HTML-CSS annotation-xml Ready");
+  MathJax.Ajax.loadComplete(HTMLCSS.autoloadDir+"/annotation-xml.js");
+
+});
+
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/maction.js b/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/maction.js
new file mode 100644
index 0000000..02bb97b
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/maction.js
@@ -0,0 +1,220 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/autoload/maction.js
+ *  
+ *  Implements the HTML-CSS output for <maction> elements.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2010-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
+  var VERSION = "2.1";
+  var MML = MathJax.ElementJax.mml,
+      HTMLCSS = MathJax.OutputJax["HTML-CSS"];
+  
+  var currentTip, hover, clear;
+
+  //
+  //  Add configuration for tooltips
+  //
+  var CONFIG = HTMLCSS.config.tooltip = MathJax.Hub.Insert({
+    delayPost: 600, delayClear: 600,
+    offsetX: 10, offsetY: 5
+  },HTMLCSS.config.tooltip||{});
+  
+  
+  MML.maction.Augment({
+    HTMLtooltip: HTMLCSS.addElement(document.body,"div",{id:"MathJax_Tooltip"}),
+    
+    toHTML: function (span,HW,D) {
+      span = this.HTMLhandleSize(this.HTMLcreateSpan(span)); span.bbox = null;
+      var selected = this.selected();
+      if (selected) {
+        var box = selected.toHTML(span);
+        if (D != null) {HTMLCSS.Remeasured(selected.HTMLstretchV(span,HW,D),span)}
+        else if (HW != null) {HTMLCSS.Remeasured(selected.HTMLstretchH(span,HW),span)}
+	else {HTMLCSS.Measured(box,span)}
+        this.HTMLhandleHitBox(span);
+      }
+      this.HTMLhandleSpace(span);
+      this.HTMLhandleColor(span);
+      return span;
+    },
+    HTMLhandleHitBox: function (span,postfix) {
+      var frame;
+      if (HTMLCSS.msieHitBoxBug) {
+        // margin-left doesn't work on inline-block elements in IE, so put it in a SPAN
+	  var box = HTMLCSS.addElement(span,"span",{isMathJax:true});
+        frame = HTMLCSS.createFrame(box,span.bbox.h,span.bbox.d,span.bbox.w,0,"none");
+        span.insertBefore(box,span.firstChild); // move below the content
+        box.style.marginRight = HTMLCSS.Em(-span.bbox.w);
+        if (HTMLCSS.msieInlineBlockAlignBug)
+          {frame.style.verticalAlign = HTMLCSS.Em(HTMLCSS.getHD(span).d-span.bbox.d)}
+      } else {
+        frame = HTMLCSS.createFrame(span,span.bbox.h,span.bbox.d,span.bbox.w,0,"none");
+        span.insertBefore(frame,span.firstChild); // move below the content
+        frame.style.marginRight = HTMLCSS.Em(-span.bbox.w);
+      }
+      frame.className = "MathJax_HitBox";
+      frame.id = "MathJax-HitBox-" + this.spanID + (postfix||"") + HTMLCSS.idPostfix;
+      
+      var type = this.Get("actiontype");
+      if (this.HTMLaction[type]) {this.HTMLaction[type].call(this,span,frame,this.Get("selection"))}
+    },
+    HTMLstretchH: MML.mbase.HTMLstretchH,
+    HTMLstretchV: MML.mbase.HTMLstretchV,
+    
+    //
+    //  Implementations for the various actions
+    //
+    HTMLaction: {
+      toggle: function (span,frame,selection) {
+        this.selection = selection;
+        frame.onclick = span.childNodes[1].onclick = MathJax.Callback(["HTMLclick",this]);
+        frame.style.cursor = span.childNodes[1].style.cursor="pointer";
+      },
+      
+      statusline: function (span,frame,selection) {
+        frame.onmouseover = span.childNodes[1].onmouseover = MathJax.Callback(["HTMLsetStatus",this]);
+        frame.onmouseout  = span.childNodes[1].onmouseout  = MathJax.Callback(["HTMLclearStatus",this]);
+        frame.onmouseover.autoReset = frame.onmouseout.autoReset = true;
+      },
+      
+      tooltip: function(span,frame,selection) {
+        if (this.data[1] && this.data[1].isToken) {
+          frame.title = frame.alt = span.childNodes[1].title =
+            span.childNodes[1].alt = this.data[1].data.join("");
+        } else {
+          frame.onmouseover = span.childNodes[1].onmouseover = MathJax.Callback(["HTMLtooltipOver",this]);
+          frame.onmouseout  = span.childNodes[1].onmouseout  = MathJax.Callback(["HTMLtooltipOut",this]);
+          frame.onmouseover.autoReset = frame.onmouseout.autoReset = true;
+        }
+      }
+    },
+    
+    //
+    //  Handle a click on the maction element
+    //    (remove the original rendering and rerender)
+    //
+    HTMLclick: function (event) {
+      this.selection++;
+      if (this.selection > this.data.length) {this.selection = 1}
+      var math = this; while (math.type !== "math") {math = math.inherit}
+      var jax = MathJax.Hub.getJaxFor(math.inputID), hover = !!jax.hover;
+      jax.Update();
+      if (hover) {
+        var span = document.getElementById(jax.inputID+"-Span");
+        MathJax.Extension.MathEvents.Hover.Hover(jax,span);
+      }
+      return MathJax.Extension.MathEvents.Event.False(event);
+    },
+    
+    //
+    //  Set/Clear the window status message
+    //
+    HTMLsetStatus: function (event) {
+      // FIXME:  Do something better with non-token elements
+      this.messageID = MathJax.Message.Set
+        ((this.data[1] && this.data[1].isToken) ?
+             this.data[1].data.join("") : this.data[1].toString());
+    },
+    HTMLclearStatus: function (event) {
+      if (this.messageID) {MathJax.Message.Clear(this.messageID,0)}
+      delete this.messageID;
+    },
+    
+    //
+    //  Handle tooltips
+    //
+    HTMLtooltipOver: function (event) {
+      if (!event) {event = window.event}
+      if (clear) {clearTimeout(clear); clear = null}
+      if (hover) {clearTimeout(hover)}
+      var x = event.pageX; var y = event.pageY;
+      if (x == null) {
+        x = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
+        y = event.clientY + document.body.scrollTop + document.documentElement.scrollTop;
+      }
+      var callback = MathJax.Callback(["HTMLtooltipPost",this,x+CONFIG.offsetX,y+CONFIG.offsetY])
+      hover = setTimeout(callback,CONFIG.delayPost);
+    },
+    HTMLtooltipOut: function (event) {
+      if (hover) {clearTimeout(hover); hover = null}
+      if (clear) {clearTimeout(clear)}
+      var callback = MathJax.Callback(["HTMLtooltipClear",this,80]);
+      clear = setTimeout(callback,CONFIG.delayClear);
+    },
+    HTMLtooltipPost: function (x,y) {
+      hover = null; if (clear) {clearTimeout(clear); clear = null}
+      var tip = this.HTMLtooltip;
+      tip.style.display = "block"; tip.style.opacity = "";
+      tip.style.filter = HTMLCSS.config.styles["#MathJax_Tooltip"].filter;
+      if (this === currentTip) return;
+      tip.style.left = x+"px"; tip.style.top = y+"px";
+      tip.innerHTML = '<span class="MathJax"><nobr></nobr></span>';
+      //
+      //  get em sizes (taken from HTMLCSS.preTranslate)
+      //
+      var emex = tip.insertBefore(HTMLCSS.EmExSpan.cloneNode(true),tip.firstChild);
+      var ex = emex.firstChild.offsetHeight/60,
+          em = emex.lastChild.firstChild.offsetHeight/60;
+      HTMLCSS.em = HTMLCSS.outerEm = MML.mbase.prototype.em = em;
+      var scale = Math.floor(Math.max(HTMLCSS.config.minScaleAdjust/100,(ex/HTMLCSS.TeX.x_height)/em) * HTMLCSS.config.scale);
+      tip.firstChild.style.fontSize = scale+"%";
+      emex.parentNode.removeChild(emex);
+
+      var stack = HTMLCSS.createStack(tip.firstChild.firstChild);
+      var box = HTMLCSS.createBox(stack);
+      try {HTMLCSS.Measured(this.data[1].toHTML(box),box)} catch(err) {
+        if (!err.restart) {throw err}
+        tip.style.display = "none";
+        MathJax.Callback.After(["HTMLtooltipPost",this,x,y],err.restart);
+        return;
+      }
+      HTMLCSS.placeBox(box,0,0);
+      HTMLCSS.createRule(tip.firstChild.firstChild,box.bbox.h,box.bbox.d,0);
+      currentTip = this;
+    },
+    HTMLtooltipClear: function (n) {
+      var tip = this.HTMLtooltip;
+      if (n <= 0) {
+        tip.style.display = "none";
+        tip.style.opacity = tip.style.filter = "";
+        clear = null;
+      } else {
+        tip.style.opacity = n/100;
+        tip.style.filter = "alpha(opacity="+n+")";
+        clear = setTimeout(MathJax.Callback(["HTMLtooltipClear",this,n-20]),50);
+      }
+    }
+  });
+
+  //
+  //  Do browser-specific setup
+  //
+  MathJax.Hub.Browser.Select({
+    MSIE: function (browser) {
+      HTMLCSS.msieHitBoxBug = true;
+    }
+  });
+
+
+  MathJax.Hub.Startup.signal.Post("HTML-CSS maction Ready");
+  MathJax.Ajax.loadComplete(HTMLCSS.autoloadDir+"/maction.js");
+  
+});
+
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/menclose.js b/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/menclose.js
new file mode 100644
index 0000000..961efb3
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/menclose.js
@@ -0,0 +1,305 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/autoload/menclose.js
+ *  
+ *  Implements the HTML-CSS output for <menclose> elements.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2010-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
+  var VERSION = "2.1";
+  var MML = MathJax.ElementJax.mml,
+      HTMLCSS = MathJax.OutputJax["HTML-CSS"];
+  
+  var SVGNS = "http://www.w3.org/2000/svg";;
+  var VMLNS = "urn:schemas-microsoft-com:vml";
+  var vmlns = "mjxvml";
+
+  MML.menclose.Augment({
+    toHTML: function (span) {
+      var values = this.getValues("notation","thickness","padding","mathcolor","color");
+      if (values.color && !this.mathcolor) {values.mathcolor = values.color}
+      if (values.thickness == null) {values.thickness = ".075em"}
+      if (values.padding == null)   {values.padding   = ".2em"}
+      var mu = this.HTMLgetMu(span), scale = this.HTMLgetScale();
+      var p = HTMLCSS.length2em(values.padding,mu,1/HTMLCSS.em) * scale;
+      var t = HTMLCSS.length2em(values.thickness,mu,1/HTMLCSS.em) * scale;
+      var SOLID = HTMLCSS.Em(t)+" solid";
+
+      span = this.HTMLcreateSpan(span);
+      var stack = HTMLCSS.createStack(span);
+      var base = HTMLCSS.createBox(stack);
+      this.HTMLmeasureChild(0,base);
+      var H = base.bbox.h+p+t, D = base.bbox.d+p+t, W = base.bbox.w+2*(p+t);
+      var frame = HTMLCSS.createFrame(stack,H+D,0,W,t,"none");
+      frame.id = "MathJax-frame-"+this.spanID;
+      HTMLCSS.addBox(stack,frame); stack.insertBefore(frame,base); // move base to above background
+      var notation = values.notation.split(/ /);
+      var T = 0, B = 0, R = 0, L = 0, dx = 0, dy = 0; var svg, vml;
+      var w, h, r;
+      if (!values.mathcolor) {values.mathcolor = "black"} else {span.style.color = values.mathcolor}
+      
+      for (var i = 0, m = notation.length; i < m; i++) {
+        switch (notation[i]) {
+         case MML.NOTATION.BOX:
+           frame.style.border = SOLID; if (!HTMLCSS.msieBorderWidthBug) {T = B = L = R = t}
+           break;
+
+          case MML.NOTATION.ROUNDEDBOX:
+            if (HTMLCSS.useVML) {
+              if (!vml) {vml = this.HTMLvml(stack,H,D,W,t,values.mathcolor)}
+              // roundrect.arcsize can't be set in IE8 standards mode, so use a path
+              r = Math.floor(1000*Math.min(W,H+D)-2*t);
+              w = Math.floor(4000*(W-2*t)), h = Math.floor(4000*(H+D-2*t));
+              this.HTMLvmlElement(vml,"shape",{
+                style: {width:this.HTMLpx(W-2*t),height:this.HTMLpx(H+D-2*t),
+                        left:this.HTMLpx(t,.5),top:this.HTMLpx(t,.5)},
+                path: "m "+r+",0 qx 0,"+r+" l 0,"+(h-r)+" qy "+r+","+h+" "+
+                      "l "+(w-r)+","+h+" qx "+w+","+(h-r)+" l "+w+","+r+" qy "+(w-r)+",0 x e",
+                coordsize: w+","+h
+              });
+            } else {
+              if (!svg) {svg = this.HTMLsvg(stack,H,D,W,t,values.mathcolor)}
+              this.HTMLsvgElement(svg.firstChild,"rect",{
+                x:1, y:1, width:this.HTMLpx(W-t)-1,
+                height:this.HTMLpx(H+D-t)-1, rx:this.HTMLpx(Math.min(H+D,W)/4)
+              });
+            }
+            break;
+            
+          case MML.NOTATION.CIRCLE:
+            if (HTMLCSS.useVML) {
+              if (!vml) {vml = this.HTMLvml(stack,H,D,W,t,values.mathcolor)}
+              this.HTMLvmlElement(vml,"oval",{
+                style: {width:this.HTMLpx(W-2*t),height:this.HTMLpx(H+D-2*t),
+                        left:this.HTMLpx(t,.5),top:this.HTMLpx(t,.5)}
+              });
+            } else {
+              if (!svg) {svg = this.HTMLsvg(stack,H,D,W,t,values.mathcolor)}
+              this.HTMLsvgElement(svg.firstChild,"ellipse",{
+                rx:this.HTMLpx(W/2-t), ry:this.HTMLpx((H+D)/2-t),
+                cx:this.HTMLpx(W/2), cy:this.HTMLpx((H+D)/2)
+              });
+            }
+            break;
+
+          case MML.NOTATION.LEFT:
+            frame.style.borderLeft = SOLID; if (!HTMLCSS.msieBorderWidthBug) {L = t}
+            break;
+            
+          case MML.NOTATION.ACTUARIAL:
+            frame.style.borderTop = SOLID; if (!HTMLCSS.msieBorderWidthBug) {T = t; frame.bbox.w += p-t}
+          case MML.NOTATION.RIGHT:
+            frame.style.borderRight = SOLID; if (!HTMLCSS.msieBorderWidthBug) {R = t}
+            break;
+
+          case MML.NOTATION.VERTICALSTRIKE:
+            var vline = HTMLCSS.createRule(stack,H+D-t/2,0,t);
+            HTMLCSS.addBox(stack,vline); HTMLCSS.placeBox(vline,p+t+base.bbox.w/2,-D,true);
+            break;
+            
+          case MML.NOTATION.TOP:
+            frame.style.borderTop = SOLID; if (!HTMLCSS.msieBorderWidthBug) {T = t}
+            break;
+            
+          case MML.NOTATION.BOTTOM:
+            frame.style.borderBottom = SOLID; if (!HTMLCSS.msieBorderWidthBug) {B = t}
+            break;
+            
+          case MML.NOTATION.HORIZONTALSTRIKE:
+            var hline = HTMLCSS.createRule(stack,t,0,W-t/2);
+            HTMLCSS.addBox(stack,hline); HTMLCSS.placeBox(hline,0,(H+D)/2-D,true);
+            break;
+
+          case MML.NOTATION.UPDIAGONALSTRIKE:
+            if (HTMLCSS.useVML) {
+              if (!vml) {vml = this.HTMLvml(stack,H,D,W,t,values.mathcolor)}
+              var line = this.HTMLvmlElement(vml,"line",{from: "0,"+this.HTMLpx(H+D-t), to: this.HTMLpx(W)+",0"});
+              if (this.arrow) {
+                this.HTMLvmlElement(line,"stroke",{endarrow:"classic"});
+                line.to = this.HTMLpx(W)+","+this.HTMLpx(t);
+              }
+            } else {
+              if (!svg) {svg = this.HTMLsvg(stack,H,D,W,t,values.mathcolor)}
+              if (this.arrow) {
+                var l = Math.sqrt(W*W + (H+D)*(H+D)), f = 1/l * 10*scale/HTMLCSS.em * t/.075;
+                w = W * f; h = (H+D) * f; var x = W - t/2, y = t/2;
+                if (y+h-.4*w < 0) {y = .4*w-h}
+                this.HTMLsvgElement(svg.firstChild,"line",{
+                  x1:1, y1:this.HTMLpx(H+D-t), x2:this.HTMLpx(x-.7*w), y2:this.HTMLpx(y+.7*h)
+                });
+                this.HTMLsvgElement(svg.firstChild,"polygon",{
+                  points: this.HTMLpx(x)+","+this.HTMLpx(y)+" "
+                         +this.HTMLpx(x-w-.4*h)+","+this.HTMLpx(y+h-.4*w)+" "
+                         +this.HTMLpx(x-.7*w)+","+this.HTMLpx(y+.7*h)+" "
+                         +this.HTMLpx(x-w+.4*h)+","+this.HTMLpx(y+h+.4*w)+" "
+                         +this.HTMLpx(x)+","+this.HTMLpx(y),
+                   fill:values.mathcolor, stroke:"none"
+                });
+              } else {
+                this.HTMLsvgElement(svg.firstChild,"line",{
+                  x1:1, y1:this.HTMLpx(H+D-t), x2:this.HTMLpx(W-t), y2:this.HTMLpx(t)
+                });
+              }
+            }
+            break;
+
+          case MML.NOTATION.DOWNDIAGONALSTRIKE:
+            if (HTMLCSS.useVML) {
+              if (!vml) {vml = this.HTMLvml(stack,H,D,W,t,values.mathcolor)}
+              this.HTMLvmlElement(vml,"line",{from: "0,0", to: this.HTMLpx(W)+","+this.HTMLpx(H+D-t)});
+            } else {
+              if (!svg) {svg = this.HTMLsvg(stack,H,D,W,t,values.mathcolor)}
+              this.HTMLsvgElement(svg.firstChild,"line",{
+                x1:1, y1:this.HTMLpx(t), x2:this.HTMLpx(W-t), y2:this.HTMLpx(H+D-t)
+              });
+            }
+            break;
+
+          case MML.NOTATION.MADRUWB:
+            frame.style.borderBottom = SOLID;
+            frame.style.borderRight = SOLID; if (!HTMLCSS.msieBorderWidthBug) {B = R = t}
+            break;
+
+          case MML.NOTATION.RADICAL:
+            if (HTMLCSS.useVML) {
+              if (!vml) {vml = this.HTMLvml(stack,H,D,W,t,values.mathcolor)}
+              this.HTMLvmlElement(vml,"shape",{
+                style: {width:this.HTMLpx(W), height:this.HTMLpx(H+D)},
+                path: "m "+this.HTMLpt(t/2,.6*(H+D))+" l "+this.HTMLpt(p,H+D-t)+" "+
+                           this.HTMLpt(2*p,t/2)+" "+this.HTMLpt(W,t/2)+" e",
+                coordsize: this.HTMLpt(W,H+D)
+              });
+              dx = p;
+            } else {
+              if (!svg) {svg = this.HTMLsvg(stack,H,D,W,t,values.mathcolor)}
+              this.HTMLsvgElement(svg.firstChild,"path",{
+                d: "M 1,"+this.HTMLpx(.6*(H+D)) +
+                  " L "+this.HTMLpx(p)+","+this.HTMLpx(H+D) +
+                  " L "+this.HTMLpx(2*p)+",1 L "+this.HTMLpx(W)+",1"
+              });
+              HTMLCSS.placeBox(svg.parentNode,0,p/2-D,true);
+              dx = p; dy = t;
+            }
+            break;
+            
+          case MML.NOTATION.LONGDIV:
+            if (HTMLCSS.useVML) {
+              if (!vml) {vml = this.HTMLvml(stack,H,D,W,t,values.mathcolor)}
+              this.HTMLvmlElement(vml,"line",{from: "0,"+this.HTMLpx(t/2), to: this.HTMLpx(W-t)+","+this.HTMLpx(t/2)});
+              this.HTMLvmlElement(vml,"arc",{
+                style: {width:this.HTMLpx(2*p),height:this.HTMLpx(H+D-2*t),
+                        left:this.HTMLpx(-p),top:this.HTMLpx(t)},
+                startangle:"10", endangle:"170"
+              });
+              dx = p;
+            } else {
+              if (!svg) {svg = this.HTMLsvg(stack,H,D,W,t,values.mathcolor)}
+              this.HTMLsvgElement(svg.firstChild,"path",{
+                d: "M "+this.HTMLpx(W)+",1 L 1,1 "+
+                   "a"+this.HTMLpx(p)+","+this.HTMLpx((H+D)/2-t)+" 0 0,1 1,"+this.HTMLpx(H+D-2*t)
+              });
+              HTMLCSS.placeBox(svg.parentNode,0,t-D,true);
+              dx = p; dy = t;
+            }
+            break;
+        }
+      }
+      frame.style.width = HTMLCSS.Em(W-L-R); frame.style.height = HTMLCSS.Em(H+D-T-B);
+      HTMLCSS.placeBox(frame,0,dy-D,true);
+      HTMLCSS.placeBox(base,dx+p+t,0);
+      this.HTMLhandleSpace(span);
+      this.HTMLhandleColor(span);
+      return span;
+    },
+    
+    HTMLpx: function (n) {return (n*HTMLCSS.em)},
+    HTMLpt: function (x,y) {return Math.floor(1000*x)+','+Math.floor(1000*y)},
+    
+    HTMLhandleColor: function (span) {
+      var frame = document.getElementById("MathJax-frame-"+this.spanID);
+      if (frame) {
+        // mathcolor is handled in toHTML above
+        var values = this.getValues("mathbackground","background");
+        if (this.style && span.style.backgroundColor) {
+          values.mathbackground = span.style.backgroundColor;
+          span.style.backgroundColor = "";
+        }
+        if (values.background && !this.mathbackground) {values.mathbackground = values.background}
+        if (values.mathbackground && values.mathbackground !== MML.COLOR.TRANSPARENT)
+          {frame.style.backgroundColor = values.mathbackground}
+      } else {this.SUPER(arguments).HTMLhandleColor.call(this,span)}
+    },
+    
+    HTMLsvg: function (stack,H,D,W,t,color) {
+      var svg = document.createElementNS(SVGNS,"svg");
+      if (svg.style) {svg.style.width = HTMLCSS.Em(W); svg.style.height = HTMLCSS.Em(H+D)}
+      var scale = HTMLCSS.createBox(stack); scale.appendChild(svg);
+      HTMLCSS.placeBox(scale,0,-D,true);
+      this.HTMLsvgElement(svg,"g",{fill:"none", stroke:color, "stroke-width":t*HTMLCSS.em});
+      return svg;
+    },
+    HTMLsvgElement: function (svg,type,def) {
+      var obj = document.createElementNS(SVGNS,type); obj.isMathJax = true;
+      if (def) {for (var id in def) {if (def.hasOwnProperty(id)) {obj.setAttributeNS(null,id,def[id].toString())}}}
+      svg.appendChild(obj);
+      return obj;
+    },
+    HTMLvml: function (stack,H,D,W,t,color) {
+      var vml = HTMLCSS.createFrame(stack,H+D,0,W,0,"none");
+      HTMLCSS.addBox(stack,vml); HTMLCSS.placeBox(vml,0,-D,true);
+      this.constructor.VMLcolor = color; this.constructor.VMLthickness = this.HTMLpx(t);
+      return vml;
+    },
+    HTMLvmlElement: function (vml,type,def) {
+      var obj = HTMLCSS.addElement(vml,vmlns+":"+type,{isMathJax:true});
+      obj.style.position = "absolute"; obj.style.left = obj.style.top = 0;
+      MathJax.Hub.Insert(obj,def); // IE8 needs to do this after obj is added to the page
+      if (!def.fillcolor) {obj.fillcolor = "none"}
+      if (!def.strokecolor) {obj.strokecolor = this.constructor.VMLcolor}
+      if (!def.strokeweight) {obj.strokeweight =this.constructor.VMLthickness}
+      return obj;
+    }
+  });
+  
+  MathJax.Hub.Browser.Select({
+    MSIE: function (browser) {
+      //
+      //  IE8 and below doesn't have SVG, so use VML
+      //
+      if ((document.documentMode||0) < 9) {
+        MML.menclose.Augment({HTMLpx: function (n,d) {return (n*HTMLCSS.em+(d||0))+"px"}});
+        HTMLCSS.useVML = true;
+        if (!document.namespaces[vmlns]) {
+          if (document.documentMode && document.documentMode === 8) {
+            document.namespaces.add(vmlns,VMLNS,"#default#VML");
+          } else {
+            document.namespaces.add(vmlns,VMLNS);
+            document.createStyleSheet().addRule(vmlns+"\\: *","{behavior: url(#default#VML)}");
+          }
+        }
+      }
+    }
+  });
+
+  
+  MathJax.Hub.Startup.signal.Post("HTML-CSS menclose Ready");
+  MathJax.Ajax.loadComplete(HTMLCSS.autoloadDir+"/menclose.js");
+  
+});
+
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/mglyph.js b/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/mglyph.js
new file mode 100644
index 0000000..34cf761
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/mglyph.js
@@ -0,0 +1,110 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/autoload/mglyph.js
+ *  
+ *  Implements the HTML-CSS output for <mglyph> elements.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2010-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
+  var VERSION = "2.1";
+  var MML = MathJax.ElementJax.mml,
+      HTMLCSS = MathJax.OutputJax["HTML-CSS"];
+  
+  MML.mglyph.Augment({
+    toHTML: function (span,variant) {
+      var SPAN = span, values = this.getValues("src","width","height","valign","alt"), err;
+      span = this.HTMLcreateSpan(span);
+      if (values.src === "") {
+        var index = this.Get("index");
+        if (index) {
+          variant = this.HTMLgetVariant(); var font = variant.defaultFont;
+          if (font) {
+            font.noStyleChar = true; font.testString = String.fromCharCode(index) + 'ABCabc';
+            if (HTMLCSS.Font.testFont(font)) {
+              this.HTMLhandleVariant(span,variant,String.fromCharCode(index));
+            } else {
+              if (values.alt === "") {values.alt = "Bad font: "+font.family}
+              err = MML.merror(values.alt).With({mathsize:"75%"});
+              this.Append(err); err.toHTML(span); this.data.pop();
+              span.bbox = err.HTMLspanElement().bbox;
+            }
+          }
+        }
+      } else {
+        if (!this.img) {this.img = MML.mglyph.GLYPH[values.src]}
+        if (!this.img) {
+          this.img = MML.mglyph.GLYPH[values.src] = {img: new Image(), status: "pending"};
+          var img = this.img.img;
+          img.onload = MathJax.Callback(["HTMLimgLoaded",this]);
+          img.onerror = MathJax.Callback(["HTMLimgError",this]);
+          img.src = values.src;
+          MathJax.Hub.RestartAfter(img.onload);
+        }
+        if (this.img.status !== "OK") {
+          err = MML.merror("Bad mglyph: "+values.src).With({mathsize:"75%"});
+          this.Append(err); err.toHTML(span); this.data.pop();
+          span.bbox = err.HTMLspanElement().bbox;
+        } else {
+          var mu = this.HTMLgetMu(span);
+          img = HTMLCSS.addElement(span,"img",{isMathJax:true, src:values.src, alt:values.alt, title:values.alt});
+          if (values.width)  {
+            if (String(values.width).match(/^\s*-?\d+\s*$/)) {values.width += "px"}
+            img.style.width = HTMLCSS.Em(HTMLCSS.length2em(values.width,mu,this.img.img.width/HTMLCSS.em));
+          }
+          if (values.height) {
+            if (String(values.height).match(/^\s*-?\d+\s*$/)) {values.height += "px"}
+            img.style.height = HTMLCSS.Em(HTMLCSS.length2em(values.height,mu,this.img.img.height/HTMLCSS.em));
+          }
+          span.bbox.w = span.bbox.rw = img.offsetWidth/HTMLCSS.em;
+          span.bbox.h = img.offsetHeight/HTMLCSS.em;
+          if (values.valign) {
+            if (String(values.valign).match(/^\s*-?\d+\s*$/)) {values.valign += "px"}
+            span.bbox.d = -HTMLCSS.length2em(values.valign,mu,this.img.img.height/HTMLCSS.em);
+            img.style.verticalAlign = HTMLCSS.Em(-span.bbox.d);
+            span.bbox.h -= span.bbox.d;
+          }
+        }
+      }
+      if (!SPAN.bbox) {
+        SPAN.bbox = {w: span.bbox.w, h: span.bbox.h, d: span.bbox.d,
+                     rw: span.bbox.rw, lw: span.bbox.lw};
+      } else if (span.bbox) {
+        SPAN.bbox.w += span.bbox.w;
+        if (SPAN.bbox.w > SPAN.bbox.rw) {SPAN.bbox.rw = SPAN.bbox.w}
+        if (span.bbox.h > SPAN.bbox.h) {SPAN.bbox.h = span.bbox.h}
+        if (span.bbox.d > SPAN.bbox.d) {SPAN.bbox.d = span.bbox.d}
+      }
+      this.HTMLhandleSpace(span);
+      this.HTMLhandleColor(span);
+      return span;
+    },
+    HTMLimgLoaded: function (event,status) {
+      if (typeof(event) === "string") {status = event}
+      this.img.status = (status || "OK")
+    },
+    HTMLimgError: function () {this.img.img.onload("error")}
+  },{
+    GLYPH: {}    // global list of all loaded glyphs
+  });
+  
+  MathJax.Hub.Startup.signal.Post("HTML-CSS mglyph Ready");
+  MathJax.Ajax.loadComplete(HTMLCSS.autoloadDir+"/mglyph.js");
+  
+});
+
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/mmultiscripts.js b/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/mmultiscripts.js
new file mode 100644
index 0000000..3c3bd45
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/mmultiscripts.js
@@ -0,0 +1,146 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/autoload/mmultiscripts.js
+ *  
+ *  Implements the HTML-CSS output for <mmultiscripts> elements.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2010-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
+  var VERSION = "2.1";
+  var MML = MathJax.ElementJax.mml,
+      HTMLCSS = MathJax.OutputJax["HTML-CSS"];
+  
+  MML.mmultiscripts.Augment({
+    toHTML: function (span,HW,D) {
+      span = this.HTMLcreateSpan(span); var scale = this.HTMLgetScale();
+      var stack = HTMLCSS.createStack(span), values;
+      var base = HTMLCSS.createBox(stack);
+      if (this.data[this.base]) {
+        var child = this.data[this.base].toHTML(base);
+        if (D != null) {this.data[this.base].HTMLstretchV(base,HW,D)}
+        else if (HW != null) {this.data[this.base].HTMLstretchH(base,HW)}
+        HTMLCSS.Measured(child,base);
+      } else {base.bbox = this.HTMLzeroBBox()}
+      var x_height = HTMLCSS.TeX.x_height * scale,
+          s = HTMLCSS.TeX.scriptspace * scale * .75;  // FIXME: .75 can be removed when IC is right?
+
+      var BOX = this.HTMLgetScripts(stack,s);
+      var sub = BOX[0], sup = BOX[1], presub = BOX[2], presup = BOX[3];
+
+      var sscale = (this.data[1]||this).HTMLgetScale();
+      var q = HTMLCSS.TeX.sup_drop * sscale, r = HTMLCSS.TeX.sub_drop * sscale;
+      var u = base.bbox.h - q, v = base.bbox.d + r, delta = 0, p;
+      if (base.bbox.ic) {delta = base.bbox.ic}
+      if (this.data[this.base] &&
+         (this.data[this.base].type === "mi" || this.data[this.base].type === "mo")) {
+        if (this.data[this.base].data.join("").length === 1 && base.bbox.scale === 1 &&
+            !this.data[this.base].Get("largeop")) {u = v = 0}
+      }
+      var min = this.getValues("subscriptshift","superscriptshift"), mu = this.HTMLgetMu(span);
+      min.subscriptshift   = (min.subscriptshift === ""   ? 0 : HTMLCSS.length2em(min.subscriptshift,mu));
+      min.superscriptshift = (min.superscriptshift === "" ? 0 : HTMLCSS.length2em(min.superscriptshift,mu));
+
+      var dx = 0;
+      if (presub) {dx = presub.bbox.w+delta} else if (presup) {dx = presup.bbox.w-delta}
+      if (dx < 0) {dx = 0};
+      HTMLCSS.placeBox(base,dx,0);
+
+      if (!sup && !presup) {
+        v = Math.max(v,HTMLCSS.TeX.sub1*scale,min.subscriptshift);
+        if (sub)    {v = Math.max(v,sub.bbox.h-(4/5)*x_height)}
+        if (presub) {v = Math.max(v,presub.bbox.h-(4/5)*x_height)}
+        if (sub)    {HTMLCSS.placeBox(sub,dx+base.bbox.w+s-delta,-v)}
+        if (presub) {HTMLCSS.placeBox(presub,0,-v)}
+      } else {
+        if (!sub && !presub) {
+          values = this.getValues("displaystyle","texprimestyle");
+          p = HTMLCSS.TeX[(values.displaystyle ? "sup1" : (values.texprimestyle ? "sup3" : "sup2"))];
+          u = Math.max(u,p*scale,min.superscriptshift);
+          if (sup)    {u = Math.max(u,sup.bbox.d+(1/4)*x_height)}
+          if (presup) {u = Math.max(u,presup.bbox.d+(1/4)*x_height)}
+          if (sup)    {HTMLCSS.placeBox(sup,dx+base.bbox.w+s,u)}
+          if (presup) {HTMLCSS.placeBox(presup,0,u)}
+        } else {
+          v = Math.max(v,HTMLCSS.TeX.sub2*scale);
+          var t = HTMLCSS.TeX.rule_thickness * scale;
+          var h = (sub||presub).bbox.h, d = (sup||presup).bbox.d;
+          if (presub) {h = Math.max(h,presub.bbox.h)}
+          if (presup) {d = Math.max(d,presup.bbox.d)}
+          if ((u - d) - (h - v) < 3*t) {
+            v = 3*t - u + d + h; q = (4/5)*x_height - (u - d);
+            if (q > 0) {u += q; v -= q}
+          }
+          u = Math.max(u,min.superscriptshift); v = Math.max(v,min.subscriptshift);
+          if (sup)    {HTMLCSS.placeBox(sup,dx+base.bbox.w+s,u)}
+          if (presup) {HTMLCSS.placeBox(presup,dx+delta-presup.bbox.w,u)}
+          if (sub)    {HTMLCSS.placeBox(sub,dx+base.bbox.w+s-delta,-v)}
+          if (presub) {HTMLCSS.placeBox(presub,dx-presub.bbox.w,-v)}
+        }
+      }
+      this.HTMLhandleSpace(span);
+      this.HTMLhandleColor(span);
+      return span;
+    },
+    HTMLgetScripts: function (stack,s) {
+      var sup, sub, BOX = [];
+      var i = 1, m = this.data.length, W = 0;
+      for (var k = 0; k < 4; k += 2) {
+        while (i < m && this.data[i].type !== "mprescripts") {
+          for (var j = k; j < k+2; j++) {
+            if (this.data[i] && this.data[i].type !== "none") {
+              if (!BOX[j]) {
+                BOX[j] = HTMLCSS.createBox(stack); BOX[j].bbox = this.HTMLemptyBBox({});
+                if (W) {HTMLCSS.createBlank(BOX[j],W); BOX[j].bbox.w = BOX[j].bbox.rw = W}
+              }
+              this.data[i].toHTML(BOX[j]); this.HTMLcombineBBoxes(this.data[i],BOX[j].bbox);
+            }
+            i++;
+          }
+          sub = BOX[k]; sup = BOX[k+1];
+          if (sub && sup) {
+            if (sub.bbox.w < sup.bbox.w) {
+              HTMLCSS.createBlank(sub,sup.bbox.w-sub.bbox.w);
+              sub.bbox.w = sup.bbox.w; sub.bbox.rw = Math.max(sub.bbox.w,sub.bbox.rw);
+            } else if (sub.bbox.w > sup.bbox.w) {
+              HTMLCSS.createBlank(sup,sub.bbox.w-sup.bbox.w);
+              sup.bbox.w = sub.bbox.w; sup.bbox.rw = Math.max(sup.bbox.w,sup.bbox.rw);
+            }
+          }
+          if (sub) {W = sub.bbox.w} else if (sup) {W = sup.bbox.w}
+        }
+        i++; W = 0;
+      }
+      for (j = 0; j < 4; j++) {
+        if (BOX[j]) {
+          BOX[j].bbox.w += s;
+          BOX[j].bbox.rw = Math.max(BOX[j].bbox.w,BOX[j].bbox.rw);
+          this.HTMLcleanBBox(BOX[j].bbox);
+        }
+      }
+      return BOX;
+    },
+    HTMLstretchH: MML.mbase.HTMLstretchH,
+    HTMLstretchV: MML.mbase.HTMLstretchV
+  });
+  
+  MathJax.Hub.Startup.signal.Post("HTML-CSS mmultiscripts Ready");
+  MathJax.Ajax.loadComplete(HTMLCSS.autoloadDir+"/mmultiscripts.js");
+
+});
+
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/ms.js b/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/ms.js
new file mode 100644
index 0000000..385f31d
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/ms.js
@@ -0,0 +1,53 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/autoload/ms.js
+ *  
+ *  Implements the HTML-CSS output for <ms> elements.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2010-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
+  var VERSION = "2.1";
+  var MML = MathJax.ElementJax.mml,
+      HTMLCSS = MathJax.OutputJax["HTML-CSS"];
+  
+  MML.ms.Augment({
+    toHTML: function (span) {
+      span = this.HTMLhandleSize(this.HTMLcreateSpan(span));
+      var values = this.getValues("lquote","rquote");
+      var text = this.data.join("");  // FIXME:  handle mglyph?
+      var pattern = [];
+      if (values.lquote.length === 1) {pattern.push(this.HTMLquoteRegExp(values.lquote))}
+      if (values.rquote.length === 1) {pattern.push(this.HTMLquoteRegExp(values.rquote))}
+      if (pattern.length) {text = text.replace(RegExp("("+pattern.join("|")+")","g"),"\\$1")}
+      this.HTMLhandleVariant(span,this.HTMLgetVariant(),values.lquote+text+values.rquote);
+      this.HTMLhandleSpace(span);
+      this.HTMLhandleColor(span);
+      return span;
+    },
+    HTMLquoteRegExp: function (string) {
+      return string.replace(/([.*+?|{}()\[\]\\])/g,"\\$1");
+    }
+  });
+  MML.ms.prototype.defaults.mathvariant = 'monospace';
+  
+  MathJax.Hub.Startup.signal.Post("HTML-CSS ms Ready");
+  MathJax.Ajax.loadComplete(HTMLCSS.autoloadDir+"/ms.js");
+
+});
+
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/mtable.js b/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/mtable.js
new file mode 100644
index 0000000..2e8b2dc
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/mtable.js
@@ -0,0 +1,479 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/autoload/mtable.js
+ *  
+ *  Implements the HTML-CSS output for <mtable> elements.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2010-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
+  var VERSION = "2.1";
+  var MML = MathJax.ElementJax.mml,
+      HTMLCSS = MathJax.OutputJax["HTML-CSS"];
+  
+  MML.mtable.Augment({
+    toHTML: function (span) {
+      span = this.HTMLcreateSpan(span);
+      if (this.data.length === 0) {return span}
+      var values = this.getValues("columnalign","rowalign","columnspacing","rowspacing",
+                                  "columnwidth","equalcolumns","equalrows",
+                                  "columnlines","rowlines","frame","framespacing",
+                                  "align","useHeight","width","side","minlabelspacing");
+      var hasRelativeWidth = values.width.match(/%$/);
+      var stack = HTMLCSS.createStack(span);
+      var scale = this.HTMLgetScale(), mu = this.HTMLgetMu(span), LABEL = -1;
+
+      var H = [], D = [], W = [], A = [], C = [], i, j, J = -1, m, M, s, row, cell, mo, entries = [];
+      var LHD = HTMLCSS.FONTDATA.baselineskip * scale * values.useHeight, HD,
+          LH = HTMLCSS.FONTDATA.lineH * scale, LD = HTMLCSS.FONTDATA.lineD * scale;
+
+      //
+      //  Create cells and measure columns and rows
+      //
+      for (i = 0, m = this.data.length; i < m; i++) {
+        row = this.data[i]; s = (row.type === "mlabeledtr" ? LABEL : 0);
+        A[i] = []; H[i] = D[i] = 0;
+        for (j = s, M = row.data.length + s; j < M; j++) {
+          if (W[j] == null) {
+            if (j > J) {J = j}
+            C[j] = HTMLCSS.createStack(HTMLCSS.createBox(stack));
+            W[j] = -HTMLCSS.BIGDIMEN;
+          }
+          A[i][j] = HTMLCSS.createBox(C[j]);
+          entries.push(row.data[j-s].toHTML(A[i][j]));
+        }
+      }
+      HTMLCSS.MeasureSpans(entries);
+      for (i = 0, m = this.data.length; i < m; i++) {
+        row = this.data[i]; s = (row.type === "mlabeledtr" ? LABEL : 0);
+        for (j = s, M = row.data.length + s; j < M; j++) {
+          cell = row.data[j-s];
+          if (cell.isMultiline) {A[i][j].style.width = "100%"}
+          if (cell.isEmbellished()) {
+            mo = cell.CoreMO();
+            var min = mo.Get("minsize",true);
+            if (min) {
+              var bbox = mo.HTMLspanElement().bbox;
+              if (mo.HTMLcanStretch("Vertical")) {
+                HD = bbox.h + bbox.d;
+                if (HD) {
+                  min = HTMLCSS.length2em(min,mu,HD);
+                  if (min*bbox.h/HD > H[j]) {H[j] = min*bbox.h/HD}
+                  if (min*bbox.d/HD > D[j]) {D[j] = min*bbox.d/HD}
+                }
+              } else if (mo.HTMLcanStretch("Horizontal")) {
+                min = HTMLCSS.length2em(min,mu,bbox.w);
+                if (min > W[j]) {W[j] = min}
+              }
+            }
+          }
+          if (A[i][j].bbox.h > H[i]) {H[i] = A[i][j].bbox.h}
+          if (A[i][j].bbox.d > D[i]) {D[i] = A[i][j].bbox.d}
+          if (A[i][j].bbox.w > W[j]) {W[j] = A[i][j].bbox.w}
+        }
+      }
+      if (H[0]+D[0]) {H[0] = Math.max(H[0],LH)}
+      if (H[A.length-1]+D[A.length-1]) {D[A.length-1] = Math.max(D[A.length-1],LD)}
+
+      //
+      //  Determine spacing and alignment
+      //
+      var CSPACE = values.columnspacing.split(/ /),
+          RSPACE = values.rowspacing.split(/ /),
+          CALIGN = values.columnalign.split(/ /),
+          RALIGN = values.rowalign.split(/ /),
+          CLINES = values.columnlines.split(/ /),
+          RLINES = values.rowlines.split(/ /),
+          CWIDTH = values.columnwidth.split(/ /),
+          RCALIGN = [];
+      for (i = 0, m = CSPACE.length; i < m; i++) {CSPACE[i] = HTMLCSS.length2em(CSPACE[i],mu)}
+      for (i = 0, m = RSPACE.length; i < m; i++) {RSPACE[i] = HTMLCSS.length2em(RSPACE[i],mu)}
+      while (CSPACE.length <  J) {CSPACE.push(CSPACE[CSPACE.length-1])}
+      while (CALIGN.length <= J) {CALIGN.push(CALIGN[CALIGN.length-1])}
+      while (CLINES.length <  J) {CLINES.push(CLINES[CLINES.length-1])}
+      while (CWIDTH.length <= J) {CWIDTH.push(CWIDTH[CWIDTH.length-1])}
+      while (RSPACE.length <  A.length) {RSPACE.push(RSPACE[RSPACE.length-1])}
+      while (RALIGN.length <= A.length) {RALIGN.push(RALIGN[RALIGN.length-1])}
+      while (RLINES.length <  A.length) {RLINES.push(RLINES[RLINES.length-1])}
+      if (C[LABEL]) {
+        CALIGN[LABEL] = (values.side.substr(0,1) === "l" ? "left" : "right");
+        CSPACE[LABEL] = -W[LABEL];
+      }
+      //
+      //  Override row data
+      //
+      for (i = 0, m = A.length; i < m; i++) {
+        row = this.data[i]; RCALIGN[i] = [];
+        if (row.rowalign) {RALIGN[i] = row.rowalign}
+        if (row.columnalign) {
+          RCALIGN[i] = row.columnalign.split(/ /);
+          while (RCALIGN[i].length <= J) {RCALIGN[i].push(RCALIGN[i][RCALIGN[i].length-1])}
+        }
+      }
+
+      //
+      //  Handle equal heights
+      //
+      if (values.equalrows) {
+        // FIXME:  should really be based on row align (below is for baseline)
+        var Hm = Math.max.apply(Math,H), Dm = Math.max.apply(Math,D);
+        for (i = 0, m = A.length; i < m; i++)
+          {s = ((Hm + Dm) - (H[i] + D[i])) / 2;  H[i] += s; D[i] += s}
+      }
+
+      //  FIXME:  do background colors for entire cell (include half the intercolumn space?)
+      
+      //
+      //  Determine array total height
+      //
+      HD = H[0] + D[A.length-1];
+      for (i = 0, m = A.length-1; i < m; i++) {HD += Math.max((H[i]+D[i] ? LHD : 0),D[i]+H[i+1]+RSPACE[i])}
+      //
+      //  Determine frame and line sizes
+      //
+      var fx = 0, fy = 0, fW, fH = HD;
+      if (values.frame !== "none" ||
+         (values.columnlines+values.rowlines).match(/solid|dashed/)) {
+        fx = HTMLCSS.length2em(values.framespacing.split(/[, ]+/)[0],mu);
+        fy = HTMLCSS.length2em(values.framespacing.split(/[, ]+/)[1],mu);
+        fH = HD + 2*fy; // fW waits until stack.bbox.w is determined
+      }
+      //
+      //  Compute alignment
+      //
+      var Y, fY, n = "";
+      if (typeof(values.align) !== "string") {values.align = String(values.align)}
+      if (values.align.match(/(top|bottom|center|baseline|axis)( +(-?\d+))?/))
+        {n = RegExp.$3; values.align = RegExp.$1} else {values.align = this.defaults.align}
+      if (n !== "") {
+        //
+        //  Find the height of the given row
+        //
+        n = parseInt(n);
+        if (n < 0) {n = A.length + 1 + n}
+        if (n < 1) {n = 1} else if (n > A.length) {n = A.length}
+        Y = 0; fY = -(HD + fy) + H[0];
+        for (i = 0, m = n-1; i < m; i++) {
+          // FIXME:  Should handle values.align for final row
+          var dY = Math.max((H[i]+D[i] ? LHD : 0),D[i]+H[i+1]+RSPACE[i]);
+          Y += dY; fY += dY;
+        }
+      } else {
+        Y = ({
+          top:    -(H[0] + fy),
+          bottom:   HD + fy - H[0],
+          center:   HD/2 - H[0],
+          baseline: HD/2 - H[0],
+          axis:     HD/2 + HTMLCSS.TeX.axis_height*scale - H[0]
+        })[values.align];
+        fY = ({
+          top:      -(HD + 2*fy),
+          bottom:   0,
+          center:   -(HD/2 + fy),
+          baseline: -(HD/2 + fy),
+          axis:     HTMLCSS.TeX.axis_height*scale - HD/2 - fy
+        })[values.align];
+      }
+            
+      var WW, WP = 0, Wt = 0, Wp = 0, p = 0, f = 0, P = [], F = [], Wf = 1;
+      //
+      if (values.equalcolumns && values.width !== "auto") {
+        //
+        //  Handle equalcolumns for percent-width and fixed-width tables
+        //
+        if (hasRelativeWidth) {
+          //  Set widths to percentages
+          WW = (100/(J+1)).toFixed(2).replace(/\.?0+$/,"")+"%";
+          for (i = 0, m = Math.min(J+1,CWIDTH.length); i < m; i++) {CWIDTH[i] = WW}
+          //  Get total column spacing
+          WW = 0; WP = 1; f = J+1;
+          for (i = 0, m = Math.min(J+1,CSPACE.length); i < m; i++) {WW += CSPACE[i]}
+        } else {
+          //  Get total width minus column spacing
+          WW = HTMLCSS.length2em(values.width,mu);
+          for (i = 0, m = Math.min(J+1,CSPACE.length); i < m; i++) {WW -= CSPACE[i]}
+          //  Determine individual column widths
+          WW /= J+1;
+          for (i = 0, m = Math.min(J+1,CWIDTH.length); i < m; i++) {W[i] = WW}
+        }
+      } else {
+        //
+        //  Get column widths for fit and percentage columns
+        //
+        //  Calculate the natural widths and percentage widths,
+        //    while keeping track of the fit and percentage columns
+        for(i = 0, m = Math.min(J+1,CWIDTH.length); i < m; i++) {
+          if (CWIDTH[i] === "auto") {Wt += W[i]}
+          else if (CWIDTH[i] === "fit") {F[f] = i; f++; Wt += W[i]}
+          else if (CWIDTH[i].match(/%$/))
+            {P[p] = i; p++; Wp += W[i]; WP += HTMLCSS.length2em(CWIDTH[i],mu,1)}
+          else {W[i] = HTMLCSS.length2em(CWIDTH[i],mu); Wt += W[i]}
+        }
+        if (hasRelativeWidth) {
+          // Get separation width and check percentages
+          WW = 0; for (i = 0, m = Math.min(J,CSPACE.length); i < m; i++) {WW += CSPACE[i]}
+          if (WP > .98) {Wf = .98/WP; WP = .98}
+        } else {
+          // Get the full width (excluding inter-column spacing)
+          if (values.width === "auto") {
+            if (WP > .98) {Wf = Wp/(Wt+Wp); WW = Wt + Wp} else {WW = Wt / (1-WP)}
+          } else {
+            WW = HTMLCSS.length2em(values.width,mu);
+            for (i = 0, m = Math.min(J+1,CSPACE.length); i < m; i++) {WW -= CSPACE[i]}
+          }
+          //  Determine the relative column widths
+          for (i = 0, m = P.length; i < m; i++) {
+            W[P[i]] = HTMLCSS.length2em(CWIDTH[P[i]],mu,WW*Wf); Wt += W[P[i]];
+          }
+          //  Stretch fit columns, if any, otherwise stretch (or shrink) everything
+          if (Math.abs(WW - Wt) > .01) {
+            if (f && WW > Wt) {
+              WW = (WW - Wt) / f; for (i = 0, m = F.length; i < m; i++) {W[F[i]] += WW}
+            } else {WW = WW/Wt; for (j = 0; j <= J; j++) {W[j] *= WW}}
+          }
+          //
+          //  Handle equal columns
+          //
+          if (values.equalcolumns) {
+            var Wm = Math.max.apply(Math,W);
+            for (j = 0; j <= J; j++) {W[j] = Wm}
+          }
+        }
+      }
+      
+      //
+      //  Lay out array columns
+      //
+      var y = Y, dy, line, align; s = (C[LABEL] ? LABEL : 0);
+      for (j = s; j <= J; j++) {
+        for (i = 0, m = A.length; i < m; i++) {
+          if (A[i][j]) {
+            s = (this.data[i].type === "mlabeledtr" ? LABEL : 0);
+            cell = this.data[i].data[j-s];
+            if (cell.HTMLcanStretch("Horizontal")) {
+              A[i][j].bbox = cell.HTMLstretchH(C[j],W[j]).bbox;
+            } else if (cell.HTMLcanStretch("Vertical")) {
+              mo = cell.CoreMO();
+              var symmetric = mo.symmetric; mo.symmetric = false;
+              A[i][j].bbox = cell.HTMLstretchV(C[j],H[i],D[i]).bbox; A[i][j].HH = null;
+              mo.symmetric = symmetric;
+            }
+            align = cell.rowalign||this.data[i].rowalign||RALIGN[i];
+            dy = ({top:    H[i] - A[i][j].bbox.h,
+                   bottom: A[i][j].bbox.d - D[i],
+                   center: ((H[i]-D[i]) - (A[i][j].bbox.h-A[i][j].bbox.d))/2,
+                   baseline: 0, axis: 0})[align] || 0; // FIXME:  handle axis better?
+            align = (cell.columnalign||RCALIGN[i][j]||CALIGN[j]);
+            HTMLCSS.alignBox(A[i][j],align,y+dy);
+          }
+          if (i < A.length-1) {y -= Math.max((H[i]+D[i] ? LHD : 0),D[i]+H[i+1]+RSPACE[i])}
+        }
+        y = Y;
+      }
+
+      //
+      //  Set column widths and placement
+      //
+      if (hasRelativeWidth) {
+        //
+        //  Remove column spacing to get width available for columns
+        //
+        var box = HTMLCSS.createBox(stack); box.style.left = box.style.top = 0;
+        box.style.right = HTMLCSS.Em(WW+2*fx); box.style.display = "inline-block";
+        box.style.height = "0px";
+        if (HTMLCSS.msieRelativeWidthBug) {
+          box = HTMLCSS.createBox(box); box.style.position = "relative";
+          box.style.height = "1em"; box.style.width = "100%"; box.bbox = stack.bbox;
+        }
+        //
+        //  wp = remaining width (%) divided by the number of columns it is split over
+        //  wm = remaining width (fixed) divided by the number of columns it is split over
+        //
+        var xp = 0, xf = fx, wp, wm;
+        if (f) {wp = 100*(1-WP)/f, wm = Wt/f} else {wp = 100*(1-WP)/(J+1); wm = Wt/(J+1)}
+        for (j = 0; j <= J; j++) {
+          HTMLCSS.placeBox(C[j].parentNode,0,0); // sets the bbox
+          //
+          //  Convert original column to the innermost span in the mobile column
+          //
+          C[j].style.position = "relative";
+          C[j].style.left = HTMLCSS.Em(xf);
+          C[j].style.width = "100%";
+          C[j].parentNode.parentNode.removeChild(C[j].parentNode);
+          var Cj = HTMLCSS.createBox(box); HTMLCSS.addBox(Cj,C[j]); C[j] = Cj;
+          var CjStyle = Cj.style; CjStyle.display = "inline-block"; CjStyle.left = xp + "%";
+          //
+          //  Set width/position based on the type of column
+          //
+          if (CWIDTH[j].match(/%$/)) {
+            var pp = parseFloat(CWIDTH[j]) * Wf;
+            if (f === 0) {
+              CjStyle.width = (wp + pp) + "%"; xp += wp + pp;
+              Cj = HTMLCSS.createBox(Cj); HTMLCSS.addBox(Cj,C[j].firstChild);
+              Cj.style.left = 0; Cj.style.right = HTMLCSS.Em(wm); xf -= wm;
+            } else {
+              CjStyle.width = pp + "%"; xp += pp;
+            }
+          } else if (CWIDTH[j] === "fit" || f === 0) {
+            CjStyle.width = wp + "%";
+            Cj = HTMLCSS.createBox(Cj); HTMLCSS.addBox(Cj,C[j].firstChild);
+            Cj.style.left = 0; Cj.style.right = HTMLCSS.Em(wm-W[j]);
+            xf += W[j] - wm; xp += wp;
+          } else {
+            CjStyle.width = HTMLCSS.Em(W[j]); xf += W[j];
+          }
+	  if (HTMLCSS.msieRelativeWidthBug) {
+            HTMLCSS.addText(Cj.firstChild,HTMLCSS.NBSP); // gets correct baseline
+            Cj.firstChild.style.position = "relative";
+          }
+          xf += CSPACE[j];
+          //
+          //  Add column lines
+          //
+          if (CLINES[j] !== "none" && j < J && j !== LABEL) {
+            line = HTMLCSS.createBox(box); line.style.left = xp+"%";
+            line = HTMLCSS.createRule(line,fH,0,1.25/HTMLCSS.em); line.style.position = "absolute";
+            line.bbox = {h:fH, d:0, w:0, rw:1.25/HTMLCSS.em, lw:0};
+            line.parentNode.bbox = stack.bbox; // make sure stack size is updated
+            HTMLCSS.placeBox(line,xf-CSPACE[j]/2,fY,true); line.style.borderStyle = CLINES[j];
+          }
+        }
+      } else {
+        //
+        //  Set the column box widths and place them
+        //
+        var x = fx;
+        for (j = 0; j <= J; j++) {
+          if (!C[j].bbox.width) {HTMLCSS.setStackWidth(C[j],W[j])}
+          if (CWIDTH[j] !== "auto" && CWIDTH[j] !== "fit")
+            {C[j].bbox.width = W[j]; C[j].bbox.isFixed = true}
+          HTMLCSS.placeBox(C[j].parentNode,x,0); x += W[j] + CSPACE[j];
+          //
+          //  Add column lines
+          //
+          if (CLINES[j] !== "none" && j < J && j !== LABEL) {
+            line = HTMLCSS.createRule(stack,fH,0,1.25/HTMLCSS.em); HTMLCSS.addBox(stack,line);
+            line.bbox = {h:fH, d:0, w:0, rw:1.25/HTMLCSS.em, lw:0};
+            HTMLCSS.placeBox(line,x-CSPACE[j]/2,fY,true); line.style.borderStyle = CLINES[j];
+          }
+        }
+      }
+      stack.bbox.d = -fY; stack.bbox.h = fH+fY;
+      HTMLCSS.setStackWidth(stack,stack.bbox.w + fx);
+
+      //
+      //  Add frame
+      //
+      fW = stack.bbox.w; var frame;
+      if (values.frame !== "none") {
+        frame = HTMLCSS.createFrame(stack,fH,0,fW,1.25/HTMLCSS.em,values.frame);
+        HTMLCSS.addBox(stack,frame); HTMLCSS.placeBox(frame,0,fY,true);
+        if (hasRelativeWidth) {frame.style.width = "100%"}
+      }
+      //
+      //  Add row lines
+      //
+      y = Y;
+      for (i = 0, m = A.length-1; i < m; i++) {
+        dy = Math.max(LHD,D[i]+H[i+1]+RSPACE[i]);
+        if (RLINES[i] !== "none") {
+          line = HTMLCSS.createRule(stack,1.25/HTMLCSS.em,0,fW); HTMLCSS.addBox(stack,line);
+          line.bbox = {h:1.25/HTMLCSS.em, d:0, w:fW, rw:fW, lw:0};
+          HTMLCSS.placeBox(line,0,y - D[i] - (dy-D[i]-H[i+1])/2,true);
+          if (RLINES[i] === "dashed" || hasRelativeWidth) {
+            line.style.borderTop = line.style.height+" "+RLINES[i]; line.style.height = 0;
+            line.style.width = line.style.borderLeftWidth; line.style.borderLeft = "";
+            if (hasRelativeWidth) {line.style.width = "100%"}
+          }
+        }
+        y -= dy;
+      }
+      //
+      //  Set relative width
+      //
+      if (hasRelativeWidth) {span.bbox.width = values.width; stack.style.width = "100%"}
+      //
+      //  Place the labels, if any
+      //
+      if (C[LABEL]) {
+        var indent = this.getValues("indentalignfirst","indentshiftfirst","indentalign","indentshift");
+        if (indent.indentalignfirst !== MML.INDENTALIGN.INDENTALIGN) {indent.indentalign = indent.indentalignfirst}
+        if (indent.indentalign === MML.INDENTALIGN.AUTO) {indent.indentalign = this.displayAlign}
+        if (indent.indentshiftfirst !== MML.INDENTSHIFT.INDENTSHIFT) {indent.indentshift = indent.indentshiftfirst}
+        if (indent.indentshift === "auto") {indent.indentshift = this.displayIndent}
+        var eqn = HTMLCSS.createStack(span,false,"100%");
+        HTMLCSS.addBox(eqn,stack); HTMLCSS.alignBox(stack,indent.indentalign,0);
+	if (indent.indentshift && indent.indentalign !== MML.INDENTALIGN.CENTER) {
+	  stack.style[indent.indentalign] = HTMLCSS.Em(HTMLCSS.length2em(indent.indentshift,mu));
+	}
+        C[LABEL].parentNode.parentNode.removeChild(C[LABEL].parentNode);
+        HTMLCSS.addBox(eqn,C[LABEL]); HTMLCSS.alignBox(C[LABEL],CALIGN[LABEL],0);
+        if (HTMLCSS.msieRelativeWidthBug) {stack.style.top = C[LABEL].style.top = ""}
+        if (hasRelativeWidth) {stack.style.width = values.width; span.bbox.width = "100%"}
+        C[LABEL].style.marginRight = C[LABEL].style.marginLeft =
+          HTMLCSS.Em(HTMLCSS.length2em(values.minlabelspacing,mu));
+      }
+      //
+      //  Finish the table
+      //
+      if (!hasRelativeWidth) {this.HTMLhandleSpace(span)}
+      var color = this.HTMLhandleColor(span);
+      //
+      //  Handle relative-sized background color
+      //
+      if (color && hasRelativeWidth) {
+        if (!frame) {
+          frame = HTMLCSS.createFrame(stack,fH,0,fW,0,"none");
+          HTMLCSS.addBox(stack,frame); HTMLCSS.placeBox(frame,0,fY,true);
+          frame.style.width = "100%";
+        }
+        frame.style.backgroundColor = color.style.backgroundColor;
+        frame.parentNode.insertBefore(frame,frame.parentNode.firstChild);
+        color.parentNode.removeChild(color);
+      }
+      return span;
+    },
+    HTMLhandleSpace: function (span) {
+      span.bbox.keepPadding = true; span.bbox.exact = true;
+      if (!this.hasFrame) {span.style.paddingLeft = span.style.paddingRight = HTMLCSS.Em(1/6)}
+      this.SUPER(arguments).HTMLhandleSpace.call(this,span);
+    }
+  });
+  
+  MML.mtd.Augment({
+    toHTML: function (span,HW,D) {
+      span = this.HTMLcreateSpan(span);
+      if (this.data[0]) {
+        var box = this.data[0].toHTML(span);
+        if (D != null) {box = this.data[0].HTMLstretchV(span,HW,D)}
+        else if (HW != null) {box = this.data[0].HTMLstretchH(span,HW)}
+        span.bbox = box.bbox;
+      }
+      this.HTMLhandleSpace(span);
+      this.HTMLhandleColor(span);
+      return span;
+    },
+    HTMLstretchH: MML.mbase.HTMLstretchH,
+    HTMLstretchV: MML.mbase.HTMLstretchV
+  });
+
+  MathJax.Hub.Startup.signal.Post("HTML-CSS mtable Ready");
+  MathJax.Ajax.loadComplete(HTMLCSS.autoloadDir+"/mtable.js");
+  
+});
+
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/multiline.js b/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/multiline.js
new file mode 100644
index 0000000..639d0b3
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/autoload/multiline.js
@@ -0,0 +1,692 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/autoload/multiline.js
+ *  
+ *  Implements the HTML-CSS output for <mrow>'s that contain line breaks.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2010-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
+  var VERSION = "2.1";
+  var MML = MathJax.ElementJax.mml,
+      HTMLCSS = MathJax.OutputJax["HTML-CSS"];
+      
+  //
+  //  Penalties for the various line breaks
+  //
+  var PENALTY = {
+    newline:         0,
+    nobreak:   1000000,
+    goodbreak:   [-200],
+    badbreak:    [+200],
+    auto:           [0],
+    
+    toobig:        800,
+    nestfactor:    400,
+    spacefactor:  -100,
+    spaceoffset:     2,
+    spacelimit:      1,  // spaces larger than this get a penalty boost
+    fence:         500,
+    close:         500
+  };
+  
+  var ENDVALUES = {linebreakstyle: "after"};
+
+  
+  /**************************************************************************/
+  
+  MML.mbase.Augment({
+    HTMLlinebreakPenalty: PENALTY,
+    
+    /****************************************************************/
+    //
+    // Handle breaking an mrow into separate lines
+    //
+    HTMLmultiline: function (span) {
+
+      //
+      //  Find the parent element and mark it as multiline
+      //
+      var parent = this;
+      while (parent.inferred || (parent.parent && parent.parent.type === "mrow" &&
+             parent.parent.data.length === 1)) {parent = parent.parent}
+      var isTop = ((parent.type === "math" && parent.Get("display") === "block") ||
+                    parent.type === "mtd");
+      parent.isMultiline = true;
+      
+      //
+      //  Default values for the line-breaking parameters
+      //
+      var VALUES = this.getValues(
+        "linebreak","linebreakstyle","lineleading","linebreakmultchar",
+        "indentalign","indentshift",
+        "indentalignfirst","indentshiftfirst",
+        "indentalignlast","indentshiftlast"
+      );
+      if (VALUES.linebreakstyle === MML.LINEBREAKSTYLE.INFIXLINEBREAKSTYLE) 
+        {VALUES.linebreakstyle = this.Get("infixlinebreakstyle")}
+      VALUES.lineleading = HTMLCSS.length2em(VALUES.lineleading,1,0.5);
+
+      //
+      //  Remove old color and break the span at its best line breaks
+      //
+      this.HTMLremoveColor(span);
+      var stack = HTMLCSS.createStack(span);
+      var state = {
+            n: 0, Y: 0,
+            scale: this.HTMLgetScale(),
+            isTop: isTop,
+            values: {},
+            VALUES: VALUES
+          },
+          align = this.HTMLgetAlign(state,{}),
+          shift = this.HTMLgetShift(state,{},align),
+          start = [],
+          end = {
+            index:[], penalty:PENALTY.nobreak,
+            w:0, W:shift, shift:shift, scanW:shift,
+            nest: 0
+          },
+          broken = false;
+          
+      while (this.HTMLbetterBreak(end,state) && 
+             (end.scanW >= HTMLCSS.linebreakWidth || end.penalty == PENALTY.newline)) {
+        this.HTMLaddLine(stack,start,end.index,state,end.values,broken);
+        start = end.index.slice(0); broken = true;
+        align = this.HTMLgetAlign(state,end.values);
+        shift = this.HTMLgetShift(state,end.values,align);
+        if (align === MML.INDENTALIGN.CENTER) {shift = 0}
+        end.W = end.shift = end.scanW = shift; end.penalty = PENALTY.nobreak;
+      }
+      state.isLast = true;
+      this.HTMLaddLine(stack,start,[],state,ENDVALUES,broken);
+
+      //
+      //  Make top-level spans 100% wide.
+      //  Finish up the space and add the color again
+      //
+      if (isTop) {
+        stack.style.width = "100%";
+        if (parent.type === "math") {span.bbox.width = "100%"}
+      }
+      this.HTMLhandleSpace(span);
+      this.HTMLhandleColor(span);
+      span.bbox.isMultiline = true;
+
+      return span;
+    },
+
+    /****************************************************************/
+    //
+    //  Locate the next linebreak that is better than the current one
+    //
+    HTMLbetterBreak: function (info,state) {
+      if (this.isToken) {return false}  // FIXME: handle breaking of token elements
+      if (this.isEmbellished()) {
+        info.embellished = this;
+        return this.CoreMO().HTMLbetterBreak(info,state);
+      }
+      if (this.linebreakContainer) {return false}
+      //
+      //  Get the current breakpoint position and other data
+      //
+      var index = info.index.slice(0), i = info.index.shift(),
+          m = this.data.length, W, w, scanW, broken = (info.index.length > 0), better = false;
+      if (i == null) {i = -1}; if (!broken) {i++; info.W += info.w; info.w = 0}
+      scanW = info.scanW = info.W; info.nest++;
+      //
+      //  Look through the line for breakpoints,
+      //    (as long as we are not too far past the breaking width)
+      //
+      while (i < m && info.scanW < 1.33*HTMLCSS.linebreakWidth) {
+        if (this.data[i]) {
+          if (this.data[i].HTMLbetterBreak(info,state)) {
+            better = true; index = [i].concat(info.index); W = info.W; w = info.w;
+            if (info.penalty === PENALTY.newline) {info.index = index; info.nest--; return true}
+          }
+          scanW = (broken ? info.scanW : this.HTMLaddWidth(i,info,scanW));
+        }
+        info.index = []; i++; broken = false;
+      }
+      info.nest--; info.index = index;
+      if (better) {info.W = W; info.w = w}
+      return better;
+    },
+    HTMLaddWidth: function (i,info,scanW) {
+      if (this.data[i]) {
+        var span = this.data[i].HTMLspanElement();
+        scanW += span.bbox.w;
+        if (span.style.paddingLeft)  {scanW += HTMLCSS.unEm(span.style.paddingLeft)}
+        if (span.style.paddingRight) {scanW += HTMLCSS.unEm(span.style.paddingRight)}
+        info.W = info.scanW = scanW; info.w = 0;
+      }
+      return scanW;
+    },
+    
+    /****************************************************************/
+    //
+    //  Create a new line and move the required elements into it
+    //  Position it using proper alignment and indenting
+    //
+    HTMLaddLine: function (stack,start,end,state,values,broken) {
+      //
+      //  Create a box for the line, with empty BBox
+      //    fill it with the proper elements,
+      //    and clean up the bbox
+      //
+      line = HTMLCSS.createBox(stack);
+      line.bbox = this.HTMLemptyBBox({});
+      state.first = broken; state.last = true;
+      this.HTMLmoveLine(start,end,line,state,values);
+      this.HTMLcleanBBox(line.bbox);
+      //
+      //  Get the alignment and shift values
+      //
+      var align = this.HTMLgetAlign(state,values),
+          shift = this.HTMLgetShift(state,values,align);
+      //
+      //  Add in space for the shift
+      //
+      if (shift) {
+        HTMLCSS.createBlank(line,shift,(align !== MML.INDENTALIGN.RIGHT));
+        line.bbox.w += shift; line.bbox.rw += shift;
+      }
+      //
+      //  Set the Y offset based on previous depth, leading, and current height
+      //
+      if (state.n > 0) {
+        var LHD = HTMLCSS.FONTDATA.baselineskip * state.scale;
+        var leading = (state.values.lineleading == null ? state.VALUES : state.values).lineleading;
+        state.Y -= Math.max(LHD,state.d + line.bbox.h + leading);
+      }
+      //
+      //  Place the new line
+      //
+      HTMLCSS.alignBox(line,align,state.Y);
+      //
+      //  Save the values needed for the future
+      //
+      state.d = line.bbox.d; state.values = values; state.n++;
+    },
+    
+    /****************************************************************/
+    //
+    //  Get alignment and shift values from the given data
+    //
+    HTMLgetAlign: function (state,values) {
+      var cur = values, prev = state.values, def = state.VALUES, align;
+      if (state.n === 0)     {align = cur.indentalignfirst || prev.indentalignfirst || def.indentalignfirst}
+      else if (state.isLast) {align = prev.indentalignlast || def.indentalignlast}
+      else                   {align = prev.indentalign || def.indentalign}
+      if (align === MML.INDENTALIGN.INDENTALIGN) {align = prev.indentalign || def.indentalign}
+      if (align === MML.INDENTALIGN.AUTO) {align = (state.isTop ? this.displayAlign : MML.INDENTALIGN.LEFT)}
+      return align;
+    },
+    HTMLgetShift: function (state,values,align) {
+      if (align === MML.INDENTALIGN.CENTER) {return 0}
+      var cur = values, prev = state.values, def = state.VALUES, shift;
+      if (state.n === 0)     {shift = cur.indentshiftfirst || prev.indentshiftfirst || def.indentshiftfirst}
+      else if (state.isLast) {shift = prev.indentshiftlast || def.indentshiftlast}
+      else                   {shift = prev.indentshift || def.indentshift}
+      if (shift === MML.INDENTSHIFT.INDENTSHIFT) {shift = prev.indentshift || def.indentshift}
+      if (shift === "auto" || shift === "") {shift = (state.isTSop ? this.displayIndent : "0")}
+      return HTMLCSS.length2em(shift,0);
+    },
+    
+    /****************************************************************/
+    //
+    //  Move the selected elements into the new line's span,
+    //    moving whole items when possible, and parts of ones
+    //    that are split by a line break.
+    //  
+    HTMLmoveLine: function (start,end,span,state,values) {
+      var i = start[0], j = end[0];
+      if (i == null) {i = -1}; if (j == null) {j = this.data.length-1}
+      if (i === j && start.length > 1) {
+        //
+        //  If starting and ending in the same element move the subpiece to the new line
+        //
+        this.data[i].HTMLmoveSlice(start.slice(1),end.slice(1),span,state,values,"paddingLeft");
+      } else {
+        //
+        //  Otherwise, move the remainder of the initial item
+        //  and any others up to the last one
+        //
+        var last = state.last; state.last = false;
+        while (i < j) {
+          if (this.data[i]) {
+            if (start.length <= 1) {this.data[i].HTMLmoveSpan(span,state,values)}
+              else {this.data[i].HTMLmoveSlice(start.slice(1),[],span,state,values,"paddingLeft")}
+          }
+          i++; state.first = false; start = [];
+        }
+        //
+        //  If the last item is complete, move it,
+        //    otherwise move the first part of it up to the split
+        //
+        state.last = last;
+        if (this.data[i]) {
+          if (end.length <= 1) {this.data[i].HTMLmoveSpan(span,state,values)}
+            else {this.data[i].HTMLmoveSlice([],end.slice(1),span,state,values,"paddingRight")}
+        }
+      }
+    },
+    
+    /****************************************************************/
+    //
+    //  Split an element and copy the selected items into the new part
+    //
+    HTMLmoveSlice: function (start,end,span,state,values,padding) {
+      //
+      //  Get rid of color, if any (added back in later)
+      //  Create a new span for the slice of the element
+      //  Move the selected portion into the slice
+      //  If it is the last slice
+      //    Remove the original (now empty) span
+      //    Rename the Continue-0 span with the original name (for HTMLspanElement)
+      //    Add back the color
+      //
+      this.HTMLremoveColor();
+      var slice = this.HTMLcreateSliceSpan(span);
+      this.HTMLmoveLine(start,end,slice,state,values);
+      slice.style[padding] = "";
+      this.HTMLcombineBBoxes(slice,span.bbox);
+      this.HTMLcleanBBox(slice.bbox);
+      if (end.length === 0) {
+        span = this.HTMLspanElement();
+        span.parentNode.removeChild(span);
+        span.nextMathJaxSpan.id = span.id; var n = 0;
+        while (span = span.nextMathJaxSpan) {
+          var color = this.HTMLhandleColor(span);
+          if (color) {color.id += "-MathJax-Continue-"+n; n++}
+        }
+      }
+      return slice;
+    },
+
+    /****************************************************************/
+    //
+    //  Create a new span for an element that is split in two
+    //    Clone the original and update its ID.
+    //    Link the old span to the new one so we can find it later
+    //
+    HTMLcreateSliceSpan: function (span) {
+      var SPAN = this.HTMLspanElement(), n = 0;
+      var LAST = SPAN; while (LAST.nextMathJaxSpan) {LAST = LAST.nextMathJaxSpan; n++}
+      var SLICE = SPAN.cloneNode(false); LAST.nextMathJaxSpan = SLICE; SLICE.nextMathJaxSpan = null;
+      SLICE.id += "-MathJax-Continue-"+n;
+      SLICE.bbox = this.HTMLemptyBBox({});
+      return span.appendChild(SLICE);
+    },
+    
+    /****************************************************************/
+    //
+    //  Move an element from its original span to its new location in
+    //    a split element or the new line's span
+    //
+    HTMLmoveSpan: function (line,state,values) {
+      // FIXME:  handle linebreakstyle === "duplicate"
+      // FIXME:  handle linebreakmultchar
+      if (!(state.first || state.last) ||
+           (state.first && state.values.linebreakstyle === MML.LINEBREAKSTYLE.BEFORE) ||
+           (state.last && values.linebreakstyle === MML.LINEBREAKSTYLE.AFTER)) {
+        //
+        //  Move color and span
+        //
+	var color = document.getElementById("MathJax-Color-"+this.spanID+HTMLCSS.idPostfix);
+        if (color) {line.appendChild(color)}
+        var span = this.HTMLspanElement();
+        line.appendChild(span);
+        //
+        //  If it is last, remove right padding
+        //  If it is first, remove left padding and recolor
+        //
+        if (state.last) {span.style.paddingRight = ""}
+        if (state.first || state.nextIsFirst) {
+          delete state.nextIsFirst;
+          span.style.paddingLeft = "";
+          if (color) {this.HTMLremoveColor(span); this.HTMLhandleColor(span)}
+        }
+        //
+        //  Update bounding box
+        //
+        this.HTMLcombineBBoxes(this,line.bbox);
+      } else if (state.first) {state.nextIsFirst = true} else {delete state.nextIsFirst}
+    }
+  });
+
+  /**************************************************************************/
+
+  MML.mfenced.Augment({
+    HTMLbetterBreak: function (info,state) {
+      //
+      //  Get the current breakpoint position and other data
+      //
+      var index = info.index.slice(0), i = info.index.shift(),
+          m = this.data.length, W, w, scanW, broken = (info.index.length > 0), better = false;
+      if (i == null) {i = -1}; if (!broken) {i++; info.W += info.w; info.w = 0}
+      scanW = info.scanW = info.W; info.nest++;
+      //
+      //  Create indices that include the delimiters and separators
+      //
+      if (!this.dataI) {
+        this.dataI = [];
+        if (this.data.open) {this.dataI.push("open")}
+        if (m) {this.dataI.push(0)}
+        for (var j = 1; j < m; j++) {
+          if (this.data["sep"+j]) {this.dataI.push("sep"+j)}
+          this.dataI.push(j);
+        }
+        if (this.data.close) {this.dataI.push("close")}
+      }
+      m = this.dataI.length;
+      //
+      //  Look through the line for breakpoints, including the open, close, and separators
+      //    (as long as we are not too far past the breaking width)
+      //
+      while (i < m && info.scanW < 1.33*HTMLCSS.linebreakWidth) {
+        var k = this.dataI[i];
+        if (this.data[k]) {
+          if (this.data[k].HTMLbetterBreak(info,state)) {
+            better = true; index = [i].concat(info.index); W = info.W; w = info.w;
+            if (info.penalty === PENALTY.newline) {info.index = index; info.nest--; return true}
+          }
+          scanW = (broken ? info.scanW : this.HTMLaddWidth(i,info,scanW));
+        }
+        info.index = []; i++; broken = false;
+      }
+      info.nest--; info.index = index;
+      if (better) {info.W = W; info.w = w}
+      return better;
+    },
+    
+    HTMLmoveLine: function (start,end,span,state,values) {
+      var i = start[0], j = end[0];
+      if (i == null) {i = -1}; if (j == null) {j = this.dataI.length-1}
+      if (i === j && start.length > 1) {
+        //
+        //  If starting and ending in the same element move the subpiece to the new line
+        //
+        this.data[this.dataI[i]].HTMLmoveSlice(start.slice(1),end.slice(1),span,state,values,"paddingLeft");
+      } else {
+        //
+        //  Otherwise, move the remainder of the initial item
+        //  and any others (including open and separators) up to the last one
+        //
+        var last = state.last; state.last = false; var k = this.dataI[i];
+        while (i < j) {
+          if (this.data[k]) {
+            if (start.length <= 1) {this.data[k].HTMLmoveSpan(span,state,values)}
+              else {this.data[k].HTMLmoveSlice(start.slice(1),[],span,state,values,"paddingLeft")}
+          }
+          i++; k = this.dataI[i]; state.first = false; start = [];
+        }
+        //
+        //  If the last item is complete, move it
+        //
+        state.last = last;
+        if (this.data[k]) {
+          if (end.length <= 1) {this.data[k].HTMLmoveSpan(span,state,values)}
+            else {this.data[k].HTMLmoveSlice([],end.slice(1),span,state,values,"paddingRight")}
+        }
+      }
+    }
+
+  });
+  
+  /**************************************************************************/
+
+  MML.msubsup.Augment({
+    HTMLbetterBreak: function (info,state) {
+      if (!this.data[this.base]) {return false}
+      //
+      //  Get the current breakpoint position and other data
+      //
+      var index = info.index.slice(0), i = info.index.shift(),
+          W, w, scanW, broken = (info.index.length > 0), better = false;
+      if (!broken) {info.W += info.w; info.w = 0}
+      scanW = info.scanW = info.W;
+      //
+      //  Record the width of the base and the super- and subscripts
+      //
+      if (i == null) {
+        this.HTMLbaseW = this.data[this.base].HTMLspanElement().bbox.w;
+        this.HTMLdw = this.HTMLspanElement().bbox.w - this.HTMLbaseW;
+      }
+      //
+      //  Check if the base can be broken
+      //
+      if (this.data[this.base].HTMLbetterBreak(info,state)) {
+        better = true; index = [this.base].concat(info.index); W = info.W; w = info.w;
+        if (info.penalty === PENALTY.newline) {better = broken = true}
+      }
+      //
+      //  Add in the base if it is unbroken, and add the scripts
+      //
+      if (!broken) {this.HTMLaddWidth(this.base,info,scanW)}
+      info.scanW += this.HTMLdw; info.W = info.scanW;
+      info.index = []; if (better) {info.W = W; info.w = w; info.index = index}
+      return better;
+    },
+    
+    HTMLmoveLine: function (start,end,span,state,values) {
+      //
+      //  Move the proper part of the base
+      //
+      if (this.data[this.base]) {
+        if (start.length > 1) {
+          this.data[this.base].HTMLmoveSlice(start.slice(1),end.slice(1),span,state,values,"paddingLeft");
+        } else {
+          if (end.length <= 1) {this.data[this.base].HTMLmoveSpan(span,state,values)}
+            else {this.data[this.base].HTMLmoveSlice([],end.slice(1),span,state,values,"paddingRight")}
+        }
+      }
+      //
+      //  If this is the end, check for super and subscripts, and move those
+      //  by moving the stack tht contains them, and shifting by the amount of the
+      //  base that has been removed.  Remove the empty base box from the stack.
+      //
+      if (end.length === 0) {
+        var s = this.data[this.sup] || this.data[this.sub];
+        if (s) {
+          var box = s.HTMLspanElement().parentNode, stack = box.parentNode;
+          if (this.data[this.base]) {stack.removeChild(stack.firstChild)}
+	  for (box = stack.firstChild; box; box = box.nextSibling)
+	    {box.style.left = HTMLCSS.Em(HTMLCSS.unEm(box.style.left)-this.HTMLbaseW)}
+          stack.bbox.w -= this.HTMLbaseW; stack.style.width = HTMLCSS.Em(stack.bbox.w);
+          this.HTMLcombineBBoxes(stack,span.bbox);
+          span.appendChild(stack);
+        }
+      }
+    }
+
+  });
+  
+  /**************************************************************************/
+
+  MML.mo.Augment({
+    //
+    //  Override the method for checking line breaks to properly handle <mo>
+    //
+    HTMLbetterBreak: function (info,state) {
+      if (info.values && info.values.id === this.spanID) {return false}
+      var values = this.getValues(
+        "linebreak","linebreakstyle","lineleading","linebreakmultchar",
+        "indentalign","indentshift",
+        "indentalignfirst","indentshiftfirst",
+        "indentalignlast","indentshiftlast",
+        "texClass", "fence"
+      );
+      if (values.linebreakstyle === MML.LINEBREAKSTYLE.INFIXLINEBREAKSTYLE) 
+        {values.linebreakstyle = this.Get("infixlinebreakstyle")}
+      //
+      //  Adjust nesting by TeX class (helps output that does not include
+      //  mrows for nesting, but can leave these unbalanced.
+      //
+      if (values.texClass === MML.TEXCLASS.OPEN) {info.nest++}
+      if (values.texClass === MML.TEXCLASS.CLOSE) {info.nest--}
+      //
+      //  Get the default penalty for this location
+      //
+      var W = info.scanW, mo = (info.embellished||this); delete info.embellished;
+      var span = mo.HTMLspanElement(), w = span.bbox.w;
+      if (span.style.paddingLeft) {w += HTMLCSS.unEm(span.style.paddingLeft)}
+      if (values.linebreakstyle === MML.LINEBREAKSTYLE.AFTER) {W += w; w = 0}
+      if (W - info.shift === 0) {return false} // don't break at zero width (FIXME?)
+      var offset = HTMLCSS.linebreakWidth - W;
+      // Adjust offest for explicit first-line indent and align
+      if (state.n === 0 && (values.indentshiftfirst !== state.VALUES.indentshiftfirst ||
+          values.indentalignfirst !== state.VALUES.indentalignfirst)) {
+        var align = this.HTMLgetAlign(state,values),
+            shift = this.HTMLgetShift(state,values,align);
+        offset += (info.shift - shift);
+      }
+      //
+      var penalty = Math.floor(offset / HTMLCSS.linebreakWidth * 1000);
+      if (penalty < 0) {penalty = PENALTY.toobig - 3*penalty}
+      if (values.fence) {penalty += PENALTY.fence}
+      if ((values.linebreakstyle === MML.LINEBREAKSTYLE.AFTER &&
+          values.texClass === MML.TEXCLASS.OPEN) ||
+          values.texClass === MML.TEXCLASS.CLOSE) {penalty += PENALTY.close}
+      penalty += info.nest * PENALTY.nestfactor;
+      //
+      //  Get the penalty for this type of break and
+      //    use it to modify the default penalty
+      //
+      var linebreak = PENALTY[values.linebreak||MML.LINEBREAK.AUTO];
+      if (!(linebreak instanceof Array)) {
+        //  for breaks past the width, don't modify penalty
+        if (offset >= 0) {penalty = linebreak * info.nest}
+      } else {penalty = Math.max(1,penalty + linebreak[0] * info.nest)}
+      //
+      //  If the penalty is no better than the current one, return false
+      //  Otherwise save the data for this breakpoint and return true
+      //
+      if (penalty >= info.penalty) {return false}
+      info.penalty = penalty; info.values = values; info.W = W; info.w = w;
+      values.lineleading = HTMLCSS.length2em(values.lineleading,state.VALUES.lineleading);
+      values.id = this.spanID;
+      return true;
+    }
+  });
+  
+  /**************************************************************************/
+
+  MML.mspace.Augment({
+    //
+    //  Override the method for checking line breaks to properly handle <mspace>
+    //
+    HTMLbetterBreak: function (info,state) {
+      if (info.values && info.values.id === this.spanID) {return false}
+      var values = this.getValues("linebreak");
+      //
+      //  Get the default penalty for this location
+      //
+      var W = info.scanW, span = this.HTMLspanElement(), w = span.bbox.w;
+      if (span.style.paddingLeft) {w += HTMLCSS.unEm(span.style.paddingLeft)}
+      if (W - info.shift === 0) {return false} // don't break at zero width (FIXME?)
+      var offset = HTMLCSS.linebreakWidth - W;
+      //
+      var penalty = Math.floor(offset / HTMLCSS.linebreakWidth * 1000);
+      if (penalty < 0) {penalty = PENALTY.toobig - 3*penalty}
+      penalty += info.nest * PENALTY.nestfactor;
+      //
+      //  Get the penalty for this type of break and
+      //    use it to modify the default penalty
+      //
+      var linebreak = PENALTY[values.linebreak||MML.LINEBREAK.AUTO];
+      if (values.linebreak === MML.LINEBREAK.AUTO && w >= PENALTY.spacelimit)
+        {linebreak = [(w+PENALTY.spaceoffset)*PENALTY.spacefactor]}
+      if (!(linebreak instanceof Array)) {
+        //  for breaks past the width, don't modify penalty
+        if (offset >= 0) {penalty = linebreak * info.nest}
+      } else {penalty = Math.max(1,penalty + linebreak[0] * info.nest)}
+      //
+      //  If the penalty is no better than the current one, return false
+      //  Otherwise save the data for this breakpoint and return true
+      //
+      if (penalty >= info.penalty) {return false}
+      info.penalty = penalty; info.values = values; info.W = W; info.w = w;
+      values.lineleading = state.VALUES.lineleading;
+      values.linebreakstyle = "before"; values.id = this.spanID;
+      return true;
+    }
+  });
+  
+  //
+  //  Hook into the mathchoice extension
+  //
+  MathJax.Hub.Register.StartupHook("TeX mathchoice Ready",function () {
+    MML.TeXmathchoice.Augment({
+      HTMLbetterBreak: function (info,state) {
+        return this.Core().HTMLbetterBreak(info,state);
+      },
+      HTMLmoveLine: function (start,end,span,state,values) {
+        return this.Core().HTMLmoveSlice(start,end,span,state,values);
+      }
+    });
+  });
+  
+  //
+  //  Have maction process only the selected item
+  //
+  MML.maction.Augment({
+    HTMLbetterBreak: function (info,state) {
+      return this.Core().HTMLbetterBreak(info,state);
+    },
+    HTMLmoveLine: function (start,end,span,state,values) {
+      return this.Core().HTMLmoveSlice(start,end,span,state,values);
+    },
+    //
+    //  Split and move the hit boxes as well
+    //
+    HTMLmoveSlice: function (start,end,span,state,values,padding) {
+      var hitbox = document.getElementById("MathJax-HitBox-"+this.spanID+HTMLCSS.idPostfix);
+      if (hitbox) {hitbox.parentNode.removeChild(hitbox)}
+      var slice = this.SUPER(arguments).HTMLmoveSlice.apply(this,arguments);
+      if (end.length === 0) {
+        span = this.HTMLspanElement(); var n = 0;
+        while (span) {
+          hitbox = this.HTMLhandleHitBox(span,"-Continue-"+n);
+          span = span.nextMathJaxSpan; n++;
+        }
+      }
+      return slice;
+    }
+  });
+  
+  //
+  //  Have semantics only do the first element
+  //  (FIXME:  do we need to do anything special about annotation-xml?)
+  //
+  MML.semantics.Augment({
+    HTMLbetterBreak: function (info,state) {
+      return (this.data[0] ? this.data[0].HTMLbetterBreak(info,state) : false);
+    },
+    HTMLmoveLine: function (start,end,span,state,values) {
+      return (this.data[0] ? this.data[0].HTMLmoveSlice(start,end,span,state,values) : null);
+    }
+  });
+  
+  /**************************************************************************/
+
+  MathJax.Hub.Startup.signal.Post("HTML-CSS multiline Ready");
+  MathJax.Ajax.loadComplete(HTMLCSS.autoloadDir+"/multiline.js");
+  
+});
+
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/config.js b/data/mathjax/unpacked/jax/output/HTML-CSS/config.js
new file mode 100644
index 0000000..b37bec8
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/config.js
@@ -0,0 +1,155 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/config.js
+ *  
+ *  Initializes the HTML-CCS OutputJax  (the main definition is in
+ *  MathJax/jax/input/HTML-CSS/jax.js, which is loaded when needed).
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+MathJax.OutputJax["HTML-CSS"] = MathJax.OutputJax({
+  id: "HTML-CSS",
+  version: "2.1",
+  directory: MathJax.OutputJax.directory + "/HTML-CSS",
+  extensionDir: MathJax.OutputJax.extensionDir + "/HTML-CSS",
+  autoloadDir: MathJax.OutputJax.directory + "/HTML-CSS/autoload",
+  fontDir: MathJax.OutputJax.directory + "/HTML-CSS/fonts", // font name added later
+  webfontDir: MathJax.OutputJax.fontDir + "/HTML-CSS",      // font name added later
+  
+  config: {
+    scale: 100, minScaleAdjust: 50, // global math scaling factor, and minimum adjusted scale factor
+    availableFonts: ["STIX","TeX"], // list of local fonts to check for
+    preferredFont: "TeX",           // preferred local font (TeX or STIX)
+    webFont: "TeX",                 // web-based font to use when no local fonts found (TeX is only choice)
+    imageFont: "TeX",               // font to use for image fallback mode (TeX is only choice)
+    undefinedFamily: "STIXGeneral,'Arial Unicode MS',serif", // fonts to use for unknown unicode characters
+    mtextFontInherit: false,        // to make <mtext> be in page font rather than MathJax font
+
+    EqnChunk: (MathJax.Hub.Browser.isMobile ? 10: 50),
+                                    // number of equations to process before showing them
+    EqnChunkFactor: 1.5,            // chunk size is multiplied by this after each chunk
+    EqnChunkDelay: 100,             // milliseconds to delay between chunks (to let browser
+                                    //   respond to other events)
+
+    linebreaks: {
+      automatic: false,   // when false, only process linebreak="newline",
+                          // when true, insert line breaks automatically in long expressions.
+
+      width: "container" // maximum width of a line for automatic line breaks (e.g. "30em").
+                         // use "container" to compute size from containing element,
+                         // use "nn% container" for a portion of the container,
+                         // use "nn%" for a portion of the window size
+    },
+    
+    styles: {
+      ".MathJax_Display": {
+        "text-align": "center",
+        margin:       "1em 0em"
+      },
+      
+      ".MathJax .merror": {
+        "background-color": "#FFFF88",
+        color:   "#CC0000",
+        border:  "1px solid #CC0000",
+        padding: "1px 3px",
+        "font-style": "normal",
+        "font-size":  "90%"
+      },
+      
+      "#MathJax_Tooltip": {
+        "background-color": "InfoBackground", color: "InfoText",
+        border: "1px solid black",
+        "box-shadow": "2px 2px 5px #AAAAAA",         // Opera 10.5
+        "-webkit-box-shadow": "2px 2px 5px #AAAAAA", // Safari 3 and Chrome
+        "-moz-box-shadow": "2px 2px 5px #AAAAAA",    // Forefox 3.5
+        "-khtml-box-shadow": "2px 2px 5px #AAAAAA",  // Konqueror
+        filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')", // IE
+        padding: "3px 4px"
+      }
+    }
+    
+  }
+});
+if (MathJax.Hub.Browser.isMSIE && document.documentMode >= 9)
+  {delete MathJax.OutputJax["HTML-CSS"].config.styles["#MathJax_Tooltip"].filter}
+
+if (!MathJax.Hub.config.delayJaxRegistration)
+  {MathJax.OutputJax["HTML-CSS"].Register("jax/mml")}
+
+MathJax.Hub.Register.StartupHook("End Config",[function (HUB,HTMLCSS) {
+  var CONFIG = HUB.Insert({
+
+    //
+    //  The minimum versions that HTML-CSS supports
+    //
+    minBrowserVersion: {
+      Firefox: 3.0,
+      Opera: 9.52,
+      MSIE: 6.0,
+      Chrome: 0.3,
+      Safari: 2.0,
+      Konqueror: 4.0
+    },
+    
+    //
+    //  For unsupported browsers, put back these delimiters for the preview
+    //
+    inlineMathDelimiters:  ['$','$'],    // or ["",""] or ["\\(","\\)"]
+    displayMathDelimiters: ['$$','$$'],  // or ["",""] or ["\\[","\\]"]
+    //
+    //  For displayed math, insert <BR> for \n?
+    //
+    multilineDisplay: true,
+
+    //
+    //  The function to call to display the math for unsupported browsers
+    //
+    minBrowserTranslate: function (script) {
+      var MJ = HUB.getJaxFor(script), text = ["[Math]"], delim;
+      var span = document.createElement("span",{className: "MathJax_Preview"});
+      if (MJ.inputJax === "TeX") {
+        if (MJ.root.Get("displaystyle")) {
+          delim = CONFIG.displayMathDelimiters;
+          text = [delim[0]+MJ.originalText+delim[1]];
+          if (CONFIG.multilineDisplay) text = text[0].split(/\n/);
+        } else {
+          delim = CONFIG.inlineMathDelimiters;
+          text = [delim[0]+MJ.originalText.replace(/^\s+/,"").replace(/\s+$/,"")+delim[1]];
+        }
+      }
+      for (var i = 0, m = text.length; i < m; i++) {
+        span.appendChild(document.createTextNode(text[i]));
+        if (i < m-1) {span.appendChild(document.createElement("br"))}
+      }
+      script.parentNode.insertBefore(span,script);
+    }
+
+  },(HUB.config["HTML-CSS"]||{}));
+
+  if (HUB.Browser.version !== "0.0" &&
+     !HUB.Browser.versionAtLeast(CONFIG.minBrowserVersion[HUB.Browser]||0.0)) {
+       HTMLCSS.Translate = CONFIG.minBrowserTranslate;
+       HUB.Config({showProcessingMessages: false});
+       MathJax.Message.Set("Your browser does not support MathJax",null,4000);
+       HUB.Startup.signal.Post("MathJax not supported");
+  }
+
+},MathJax.Hub,MathJax.OutputJax["HTML-CSS"]]);
+
+
+MathJax.OutputJax["HTML-CSS"].loadComplete("config.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Arrows.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Arrows.js
new file mode 100644
index 0000000..03b9596
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Arrows.js
@@ -0,0 +1,65 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Arrows.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x2190: [437,-64,500,64,422],      // LEFTWARDS ARROW
+    0x2192: [437,-64,500,58,417],      // RIGHTWARDS ARROW
+    0x219A: [437,-60,1000,56,942],     // LEFTWARDS ARROW WITH STROKE
+    0x219B: [437,-60,1000,54,942],     // RIGHTWARDS ARROW WITH STROKE
+    0x219E: [417,-83,1000,56,944],     // LEFTWARDS TWO HEADED ARROW
+    0x21A0: [417,-83,1000,55,943],     // RIGHTWARDS TWO HEADED ARROW
+    0x21A2: [417,-83,1111,56,1031],    // LEFTWARDS ARROW WITH TAIL
+    0x21A3: [417,-83,1111,79,1054],    // RIGHTWARDS ARROW WITH TAIL
+    0x21AB: [575,41,1000,56,964],      // LEFTWARDS ARROW WITH LOOP
+    0x21AC: [575,41,1000,35,943],      // RIGHTWARDS ARROW WITH LOOP
+    0x21AD: [417,-83,1389,57,1331],    // LEFT RIGHT WAVE ARROW
+    0x21AE: [437,-60,1000,56,942],     // LEFT RIGHT ARROW WITH STROKE
+    0x21B0: [722,0,500,56,444],        // UPWARDS ARROW WITH TIP LEFTWARDS
+    0x21B1: [722,0,500,55,443],        // UPWARDS ARROW WITH TIP RIGHTWARDS
+    0x21B6: [461,1,1000,17,950],       // ANTICLOCKWISE TOP SEMICIRCLE ARROW
+    0x21B7: [460,1,1000,46,982],       // CLOCKWISE TOP SEMICIRCLE ARROW
+    0x21BA: [650,83,778,56,722],       // ANTICLOCKWISE OPEN CIRCLE ARROW
+    0x21BB: [650,83,778,56,721],       // CLOCKWISE OPEN CIRCLE ARROW
+    0x21BE: [694,194,417,188,375],     // UPWARDS HARPOON WITH BARB RIGHTWARDS
+    0x21BF: [694,194,417,41,228],      // UPWARDS HARPOON WITH BARB LEFTWARDS
+    0x21C2: [694,194,417,188,375],     // DOWNWARDS HARPOON WITH BARB RIGHTWARDS
+    0x21C3: [694,194,417,41,228],      // DOWNWARDS HARPOON WITH BARB LEFTWARDS
+    0x21C4: [667,0,1000,55,944],       // RIGHTWARDS ARROW OVER LEFTWARDS ARROW
+    0x21C6: [667,0,1000,55,944],       // LEFTWARDS ARROW OVER RIGHTWARDS ARROW
+    0x21C7: [583,83,1000,55,944],      // LEFTWARDS PAIRED ARROWS
+    0x21C8: [694,193,833,83,749],      // UPWARDS PAIRED ARROWS
+    0x21C9: [583,83,1000,55,944],      // RIGHTWARDS PAIRED ARROWS
+    0x21CA: [694,194,833,83,749],      // DOWNWARDS PAIRED ARROWS
+    0x21CB: [514,14,1000,55,944],      // LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+    0x21CC: [514,14,1000,55,944],      // RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+    0x21CD: [534,35,1000,54,942],      // LEFTWARDS DOUBLE ARROW WITH STROKE
+    0x21CE: [534,37,1000,32,965],      // LEFT RIGHT DOUBLE ARROW WITH STROKE
+    0x21CF: [534,35,1000,55,943],      // RIGHTWARDS DOUBLE ARROW WITH STROKE
+    0x21DA: [611,111,1000,76,944],     // LEFTWARDS TRIPLE ARROW
+    0x21DB: [611,111,1000,55,923],     // RIGHTWARDS TRIPLE ARROW
+    0x21DD: [417,-83,1000,56,943],     // RIGHTWARDS SQUIGGLE ARROW
+    0x21E0: [437,-64,1334,64,1251],    // LEFTWARDS DASHED ARROW
+    0x21E2: [437,-64,1334,84,1251]     // RIGHTWARDS DASHED ARROW
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/Arrows.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BBBold.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BBBold.js
new file mode 100644
index 0000000..3a2edd1
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BBBold.js
@@ -0,0 +1,55 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BBBold.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x20: [0,0,250,0,0],               // SPACE
+    0x41: [701,1,722,17,703],          // LATIN CAPITAL LETTER A
+    0x42: [683,1,667,11,620],          // LATIN CAPITAL LETTER B
+    0x43: [702,19,722,39,684],         // LATIN CAPITAL LETTER C
+    0x44: [683,1,722,16,688],          // LATIN CAPITAL LETTER D
+    0x45: [683,1,667,12,640],          // LATIN CAPITAL LETTER E
+    0x46: [683,1,611,12,584],          // LATIN CAPITAL LETTER F
+    0x47: [702,19,778,39,749],         // LATIN CAPITAL LETTER G
+    0x48: [683,1,778,14,762],          // LATIN CAPITAL LETTER H
+    0x49: [683,1,389,20,369],          // LATIN CAPITAL LETTER I
+    0x4A: [683,77,500,6,478],          // LATIN CAPITAL LETTER J
+    0x4B: [683,1,778,22,768],          // LATIN CAPITAL LETTER K
+    0x4C: [683,1,667,12,640],          // LATIN CAPITAL LETTER L
+    0x4D: [683,1,944,17,926],          // LATIN CAPITAL LETTER M
+    0x4E: [683,20,722,20,702],         // LATIN CAPITAL LETTER N
+    0x4F: [701,19,778,34,742],         // LATIN CAPITAL LETTER O
+    0x50: [683,1,611,16,597],          // LATIN CAPITAL LETTER P
+    0x51: [701,181,778,34,742],        // LATIN CAPITAL LETTER Q
+    0x52: [683,1,722,16,705],          // LATIN CAPITAL LETTER R
+    0x53: [702,12,556,28,528],         // LATIN CAPITAL LETTER S
+    0x54: [683,1,667,33,635],          // LATIN CAPITAL LETTER T
+    0x55: [683,19,722,16,709],         // LATIN CAPITAL LETTER U
+    0x56: [683,20,722,0,719],          // LATIN CAPITAL LETTER V
+    0x57: [683,19,1000,5,994],         // LATIN CAPITAL LETTER W
+    0x58: [683,1,722,16,705],          // LATIN CAPITAL LETTER X
+    0x59: [683,1,722,16,704],          // LATIN CAPITAL LETTER Y
+    0x5A: [683,1,667,29,635],          // LATIN CAPITAL LETTER Z
+    0x6B: [683,1,556,17,534]           // LATIN SMALL LETTER K
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/BBBold.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js
new file mode 100644
index 0000000..e203c2c
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js
@@ -0,0 +1,33 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x250C: [694,-306,500,55,444],     // BOX DRAWINGS LIGHT DOWN AND RIGHT
+    0x2510: [694,-306,500,55,444],     // BOX DRAWINGS LIGHT DOWN AND LEFT
+    0x2514: [366,22,500,55,444],       // BOX DRAWINGS LIGHT UP AND RIGHT
+    0x2518: [366,22,500,55,444],       // BOX DRAWINGS LIGHT UP AND LEFT
+    0x2571: [694,195,889,0,860],       // BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+    0x2572: [694,195,889,0,860]        // BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/BoxDrawing.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/CombDiacritMarks.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/CombDiacritMarks.js
new file mode 100644
index 0000000..7ea05bc
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/CombDiacritMarks.js
@@ -0,0 +1,29 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/CombDiacritMarks.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x302: [845,-561,0,-2347,13],      // COMBINING CIRCUMFLEX ACCENT
+    0x303: [899,-628,0,-2332,-3]       // COMBINING TILDE
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/CombDiacritMarks.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js
new file mode 100644
index 0000000..2b78953
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js
@@ -0,0 +1,29 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x2713: [706,34,833,84,749],       // CHECK MARK
+    0x2720: [716,22,833,48,786]        // MALTESE CROSS
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/Dingbats.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/EnclosedAlphanum.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/EnclosedAlphanum.js
new file mode 100644
index 0000000..61d6909
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/EnclosedAlphanum.js
@@ -0,0 +1,28 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/EnclosedAlphanum.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x24C8: [709,175,902,8,894]        // CIRCLED LATIN CAPITAL LETTER S
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/EnclosedAlphanum.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeneralPunctuation.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeneralPunctuation.js
new file mode 100644
index 0000000..620ed02
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeneralPunctuation.js
@@ -0,0 +1,28 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeneralPunctuation.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x2035: [560,-43,275,12,244]       // REVERSED PRIME
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/GeneralPunctuation.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeometricShapes.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeometricShapes.js
new file mode 100644
index 0000000..97cbabc
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeometricShapes.js
@@ -0,0 +1,36 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeometricShapes.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x25A0: [689,0,778,55,722],        // BLACK SQUARE
+    0x25A1: [689,0,778,55,722],        // WHITE SQUARE
+    0x25B2: [575,20,722,84,637],       // BLACK UP-POINTING TRIANGLE
+    0x25B3: [575,20,722,84,637],       // WHITE UP-POINTING TRIANGLE
+    0x25B6: [539,41,778,83,694],       // BLACK RIGHT-POINTING TRIANGLE
+    0x25BC: [576,19,722,84,637],       // BLACK DOWN-POINTING TRIANGLE
+    0x25BD: [576,19,722,84,637],       // WHITE DOWN-POINTING TRIANGLE
+    0x25C0: [539,41,778,83,694],       // BLACK LEFT-POINTING TRIANGLE
+    0x25CA: [716,132,667,56,611]       // LOZENGE
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/GeometricShapes.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GreekAndCoptic.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GreekAndCoptic.js
new file mode 100644
index 0000000..e3c36eb
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GreekAndCoptic.js
@@ -0,0 +1,29 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GreekAndCoptic.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x3DD: [605,85,778,55,719],        // GREEK SMALL LETTER DIGAMMA
+    0x3F0: [434,6,667,37,734]          // GREEK KAPPA SYMBOL
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/GreekAndCoptic.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Latin1Supplement.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Latin1Supplement.js
new file mode 100644
index 0000000..1a11a2f
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Latin1Supplement.js
@@ -0,0 +1,31 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Latin1Supplement.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+    0xA5: [683,0,750,11,738],          // YEN SIGN
+    0xAE: [709,175,947,32,915],        // REGISTERED SIGN
+    0xF0: [749,21,556,42,509]          // LATIN SMALL LETTER ETH
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/Latin1Supplement.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LatinExtendedA.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LatinExtendedA.js
new file mode 100644
index 0000000..30d4346
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LatinExtendedA.js
@@ -0,0 +1,28 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LatinExtendedA.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x127: [695,13,540,42,562]         // LATIN SMALL LETTER H WITH STROKE
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/LatinExtendedA.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LetterlikeSymbols.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LetterlikeSymbols.js
new file mode 100644
index 0000000..5796c15
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LetterlikeSymbols.js
@@ -0,0 +1,34 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LetterlikeSymbols.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x210F: [695,13,540,42,562],       // stix-/hbar - Planck's over 2pi
+    0x2127: [684,22,722,44,675],       // INVERTED OHM SIGN
+    0x2132: [695,1,556,55,497],        // TURNED CAPITAL F
+    0x2136: [763,21,667,-22,687],      // BET SYMBOL
+    0x2137: [764,43,444,-22,421],      // GIMEL SYMBOL
+    0x2138: [764,43,667,54,640],       // DALET SYMBOL
+    0x2141: [705,23,639,37,577]        // TURNED SANS-SERIF CAPITAL G
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/LetterlikeSymbols.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Main.js
new file mode 100644
index 0000000..d35d0ce
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Main.js
@@ -0,0 +1,52 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'] = {
+  directory: 'AMS/Regular',
+  family: 'MathJax_AMS',
+  testString: "MATHJAX AMS \u02C6",
+  Ranges: [
+    [0x0,0x7F,"BBBold"],
+    [0x80,0xFF,"Latin1Supplement"],
+    [0x100,0x17F,"LatinExtendedA"],
+    [0x2B0,0x2FF,"SpacingModLetters"],
+    [0x300,0x36F,"CombDiacritMarks"],
+    [0x370,0x3FF,"GreekAndCoptic"],
+    [0x2000,0x206F,"GeneralPunctuation"],
+    [0x2100,0x214F,"LetterlikeSymbols"],
+    [0x2190,0x21FF,"Arrows"],
+    [0x2200,0x22FF,"MathOperators"],
+    [0x2300,0x23FF,"MiscTechnical"],
+    [0x2460,0x24FF,"EnclosedAlphanum"],
+    [0x2500,0x257F,"BoxDrawing"],
+    [0x25A0,0x25FF,"GeometricShapes"],
+    [0x2600,0x26FF,"MiscSymbols"],
+    [0x2700,0x27BF,"Dingbats"],
+    [0x2980,0x29FF,"MiscMathSymbolsB"],
+    [0x2A00,0x2AFF,"SuppMathOperators"],
+    [0xE000,0xF8FF,"PUA"]
+  ]
+
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_AMS"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/AMS/Regular/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MathOperators.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MathOperators.js
new file mode 100644
index 0000000..2ec985d
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MathOperators.js
@@ -0,0 +1,138 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MathOperators.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x2201: [846,21,500,56,444],       // COMPLEMENT
+    0x2204: [860,166,556,55,497],      // THERE DOES NOT EXIST
+    0x2205: [587,3,778,54,720],        // EMPTY SET
+    0x220D: [440,1,429,102,456],       // SMALL CONTAINS AS MEMBER
+    0x2212: [270,-230,500,84,417],     // MINUS SIGN
+    0x2214: [766,93,778,57,722],       // DOT PLUS
+    0x2216: [430,23,778,91,685],       // SET MINUS
+    0x221D: [472,-28,778,56,722],      // PROPORTIONAL TO
+    0x2220: [694,0,722,55,666],        // ANGLE
+    0x2221: [714,20,722,55,666],       // MEASURED ANGLE
+    0x2222: [551,51,722,55,666],       // SPHERICAL ANGLE
+    0x2223: [430,23,222,91,131],       // DIVIDES
+    0x2224: [750,252,278,-21,297],     // DOES NOT DIVIDE
+    0x2225: [431,23,389,55,331],       // PARALLEL TO
+    0x2226: [750,250,500,-20,518],     // NOT PARALLEL TO
+    0x2234: [471,82,667,24,643],       // THEREFORE
+    0x2235: [471,82,667,23,643],       // BECAUSE
+    0x223C: [365,-132,778,55,719],     // TILDE OPERATOR
+    0x223D: [367,-133,778,56,722],     // REVERSED TILDE
+    0x2241: [467,-32,778,55,719],      // stix-not, vert, similar
+    0x2242: [463,-34,778,55,720],      // MINUS TILDE
+    0x2246: [652,155,778,54,720],      // APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
+    0x2248: [481,-50,778,55,719],      // ALMOST EQUAL TO
+    0x224A: [579,39,778,51,725],       // ALMOST EQUAL OR EQUAL TO
+    0x224E: [492,-8,778,56,722],       // GEOMETRICALLY EQUIVALENT TO
+    0x224F: [492,-133,778,56,722],     // DIFFERENCE BETWEEN
+    0x2251: [609,108,778,56,722],      // GEOMETRICALLY EQUAL TO
+    0x2252: [601,101,778,15,762],      // APPROXIMATELY EQUAL TO OR THE IMAGE OF
+    0x2253: [601,102,778,14,762],      // IMAGE OF OR APPROXIMATELY EQUAL TO
+    0x2256: [367,-133,778,56,722],     // RING IN EQUAL TO
+    0x2257: [721,-133,778,56,722],     // RING EQUAL TO
+    0x225C: [859,-133,778,56,723],     // DELTA EQUAL TO
+    0x2266: [753,175,778,83,694],      // LESS-THAN OVER EQUAL TO
+    0x2267: [753,175,778,83,694],      // GREATER-THAN OVER EQUAL TO
+    0x2268: [752,286,778,82,693],      // stix-less, vert, not double equals
+    0x2269: [752,286,778,82,693],      // stix-gt, vert, not double equals
+    0x226C: [750,250,500,74,425],      // BETWEEN
+    0x226E: [708,209,778,82,693],      // stix-not, vert, less-than
+    0x226F: [708,209,778,82,693],      // stix-not, vert, greater-than
+    0x2270: [801,303,778,82,694],      // stix-not, vert, less-than-or-equal
+    0x2271: [801,303,778,82,694],      // stix-not, vert, greater-than-or-equal
+    0x2272: [732,228,778,56,722],      // stix-less-than or (contour) similar
+    0x2273: [732,228,778,56,722],      // stix-greater-than or (contour) similar
+    0x2276: [681,253,778,44,734],      // LESS-THAN OR GREATER-THAN
+    0x2277: [681,253,778,83,694],      // GREATER-THAN OR LESS-THAN
+    0x227C: [580,153,778,83,694],      // PRECEDES OR EQUAL TO
+    0x227D: [580,154,778,82,694],      // SUCCEEDS OR EQUAL TO
+    0x227E: [732,228,778,56,722],      // PRECEDES OR EQUIVALENT TO
+    0x227F: [732,228,778,56,722],      // SUCCEEDS OR EQUIVALENT TO
+    0x2280: [705,208,778,82,693],      // DOES NOT PRECEDE
+    0x2281: [705,208,778,82,693],      // stix-not (vert) succeeds
+    0x2288: [801,303,778,83,693],      // stix-/nsubseteq N: not (vert) subset, equals
+    0x2289: [801,303,778,82,691],      // stix-/nsupseteq N: not (vert) superset, equals
+    0x228A: [635,241,778,84,693],      // stix-subset, not equals, variant
+    0x228B: [635,241,778,82,691],      // stix-superset, not equals, variant
+    0x228F: [539,41,778,83,694],       // SQUARE IMAGE OF
+    0x2290: [539,41,778,64,714],       // SQUARE ORIGINAL OF
+    0x229A: [582,82,778,57,721],       // CIRCLED RING OPERATOR
+    0x229B: [582,82,778,57,721],       // CIRCLED ASTERISK OPERATOR
+    0x229D: [582,82,778,57,721],       // CIRCLED DASH
+    0x229E: [689,0,778,55,722],        // SQUARED PLUS
+    0x229F: [689,0,778,55,722],        // SQUARED MINUS
+    0x22A0: [689,0,778,55,722],        // SQUARED TIMES
+    0x22A1: [689,0,778,55,722],        // SQUARED DOT OPERATOR
+    0x22A8: [694,0,611,55,555],        // TRUE
+    0x22A9: [694,0,722,55,666],        // FORCES
+    0x22AA: [694,0,889,55,833],        // TRIPLE VERTICAL BAR RIGHT TURNSTILE
+    0x22AC: [695,1,611,-55,554],       // DOES NOT PROVE
+    0x22AD: [695,1,611,-55,554],       // NOT TRUE
+    0x22AE: [695,1,722,-55,665],       // DOES NOT FORCE
+    0x22AF: [695,1,722,-55,665],       // NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+    0x22B2: [539,41,778,83,694],       // NORMAL SUBGROUP OF
+    0x22B3: [539,41,778,83,694],       // CONTAINS AS NORMAL SUBGROUP
+    0x22B4: [636,138,778,83,694],      // NORMAL SUBGROUP OF OR EQUAL TO
+    0x22B5: [636,138,778,83,694],      // CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
+    0x22B8: [408,-92,1111,55,1055],    // MULTIMAP
+    0x22BA: [431,212,556,57,500],      // INTERCALATE
+    0x22BB: [716,0,611,55,555],        // XOR
+    0x22BC: [716,0,611,55,555],        // NAND
+    0x22C5: [189,0,278,55,222],        // DOT OPERATOR
+    0x22C7: [545,44,778,55,720],       // DIVISION TIMES
+    0x22C9: [492,-8,778,146,628],      // LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
+    0x22CA: [492,-8,778,146,628],      // RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
+    0x22CB: [694,22,778,55,722],       // LEFT SEMIDIRECT PRODUCT
+    0x22CC: [694,22,778,55,722],       // RIGHT SEMIDIRECT PRODUCT
+    0x22CD: [464,-36,778,56,722],      // REVERSED TILDE EQUALS
+    0x22CE: [578,21,760,83,676],       // CURLY LOGICAL OR
+    0x22CF: [578,22,760,83,676],       // CURLY LOGICAL AND
+    0x22D0: [540,40,778,84,694],       // DOUBLE SUBSET
+    0x22D1: [540,40,778,83,693],       // DOUBLE SUPERSET
+    0x22D2: [598,22,667,55,611],       // DOUBLE INTERSECTION
+    0x22D3: [598,22,667,55,611],       // DOUBLE UNION
+    0x22D4: [736,22,667,56,611],       // PITCHFORK
+    0x22D6: [541,41,778,82,693],       // LESS-THAN WITH DOT
+    0x22D7: [541,41,778,82,693],       // GREATER-THAN WITH DOT
+    0x22D8: [568,67,1333,56,1277],     // VERY MUCH LESS-THAN
+    0x22D9: [568,67,1333,55,1277],     // VERY MUCH GREATER-THAN
+    0x22DA: [886,386,778,83,674],      // stix-less, equal, slanted, greater
+    0x22DB: [886,386,778,83,674],      // stix-greater, equal, slanted, less
+    0x22DE: [734,0,778,83,694],        // EQUAL TO OR PRECEDES
+    0x22DF: [734,0,778,82,694],        // EQUAL TO OR SUCCEEDS
+    0x22E0: [801,303,778,82,693],      // stix-not (vert) precedes or contour equals
+    0x22E1: [801,303,778,82,694],      // stix-not (vert) succeeds or contour equals
+    0x22E6: [730,359,778,55,719],      // LESS-THAN BUT NOT EQUIVALENT TO
+    0x22E7: [730,359,778,55,719],      // GREATER-THAN BUT NOT EQUIVALENT TO
+    0x22E8: [730,359,778,55,719],      // PRECEDES BUT NOT EQUIVALENT TO
+    0x22E9: [730,359,778,55,719],      // SUCCEEDS BUT NOT EQUIVALENT TO
+    0x22EA: [706,208,778,82,693],      // NOT NORMAL SUBGROUP OF
+    0x22EB: [706,208,778,82,693],      // DOES NOT CONTAIN AS NORMAL SUBGROUP
+    0x22EC: [802,303,778,82,693],      // stix-not, vert, left triangle, equals
+    0x22ED: [801,303,778,82,693]       // stix-not, vert, right triangle, equals
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/MathOperators.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js
new file mode 100644
index 0000000..045e97d
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js
@@ -0,0 +1,28 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x29EB: [716,132,667,56,611]       // BLACK LOZENGE
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/MiscMathSymbolsB.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js
new file mode 100644
index 0000000..7d3ae07
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js
@@ -0,0 +1,28 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x2605: [694,111,944,49,895]       // BLACK STAR
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/MiscSymbols.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscTechnical.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscTechnical.js
new file mode 100644
index 0000000..164d8bb
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscTechnical.js
@@ -0,0 +1,29 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscTechnical.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x2322: [378,-122,778,55,722],     // stix-small down curve
+    0x2323: [378,-143,778,55,722]      // stix-small up curve
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/MiscTechnical.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js
new file mode 100644
index 0000000..71ba3bc
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js
@@ -0,0 +1,43 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0xE006: [430,23,222,-20,240],      // ??
+    0xE007: [431,24,389,-20,407],      // ??
+    0xE008: [605,85,778,55,719],       // ??
+    0xE009: [434,6,667,37,734],        // ??
+    0xE00C: [752,284,778,82,693],      // ??
+    0xE00D: [752,284,778,82,693],      // ??
+    0xE00E: [919,421,778,82,694],      // stix-not greater, double equals
+    0xE00F: [801,303,778,82,694],      // stix-not greater-or-equal, slanted
+    0xE010: [801,303,778,82,694],      // stix-not less-or-equal, slanted
+    0xE011: [919,421,778,82,694],      // stix-not less, double equals
+    0xE016: [828,330,778,82,694],      // stix-not subset, double equals
+    0xE017: [752,332,778,82,694],      // ??
+    0xE018: [828,330,778,82,694],      // stix-not superset, double equals
+    0xE019: [752,333,778,82,693],      // ??
+    0xE01A: [634,255,778,84,693],      // ??
+    0xE01B: [634,254,778,82,691]       // ??
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/PUA.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SpacingModLetters.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SpacingModLetters.js
new file mode 100644
index 0000000..dda769b
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SpacingModLetters.js
@@ -0,0 +1,29 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SpacingModLetters.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x2C6: [845,-561,2333,-14,2346],   // MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x2DC: [899,-628,2333,1,2330]      // SMALL TILDE
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/SpacingModLetters.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SuppMathOperators.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SuppMathOperators.js
new file mode 100644
index 0000000..792e322
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SuppMathOperators.js
@@ -0,0 +1,50 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SuppMathOperators.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_AMS'],
+  {
+    0x2A5E: [813,97,611,55,555],       // LOGICAL AND WITH DOUBLE OVERBAR
+    0x2A7D: [636,138,778,83,694],      // LESS-THAN OR SLANTED EQUAL TO
+    0x2A7E: [636,138,778,83,694],      // GREATER-THAN OR SLANTED EQUAL TO
+    0x2A85: [762,290,778,55,722],      // LESS-THAN OR APPROXIMATE
+    0x2A86: [762,290,778,55,722],      // GREATER-THAN OR APPROXIMATE
+    0x2A87: [635,241,778,82,693],      // LESS-THAN AND SINGLE-LINE NOT EQUAL TO
+    0x2A88: [635,241,778,82,693],      // GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
+    0x2A89: [761,387,778,57,718],      // LESS-THAN AND NOT APPROXIMATE
+    0x2A8A: [761,387,778,57,718],      // GREATER-THAN AND NOT APPROXIMATE
+    0x2A8B: [1003,463,778,83,694],     // LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
+    0x2A8C: [1003,463,778,83,694],     // GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
+    0x2A95: [636,138,778,83,694],      // SLANTED EQUAL TO OR LESS-THAN
+    0x2A96: [636,138,778,83,694],      // SLANTED EQUAL TO OR GREATER-THAN
+    0x2AB5: [752,286,778,82,693],      // PRECEDES ABOVE NOT EQUAL TO
+    0x2AB6: [752,286,778,82,693],      // SUCCEEDS ABOVE NOT EQUAL TO
+    0x2AB7: [761,294,778,57,717],      // PRECEDES ABOVE ALMOST EQUAL TO
+    0x2AB8: [761,294,778,57,717],      // SUCCEEDS ABOVE ALMOST EQUAL TO
+    0x2AB9: [761,337,778,57,718],      // PRECEDES ABOVE NOT ALMOST EQUAL TO
+    0x2ABA: [761,337,778,57,718],      // SUCCEEDS ABOVE NOT ALMOST EQUAL TO
+    0x2AC5: [753,215,778,84,694],      // SUBSET OF ABOVE EQUALS SIGN
+    0x2AC6: [753,215,778,83,694],      // SUPERSET OF ABOVE EQUALS SIGN
+    0x2ACB: [783,385,778,82,693],      // stix-subset not double equals, variant
+    0x2ACC: [783,385,778,82,693]       // SUPERSET OF ABOVE NOT EQUAL TO
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/AMS/Regular/SuppMathOperators.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Main.js
new file mode 100644
index 0000000..af17230
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Main.js
@@ -0,0 +1,97 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Caligraphic-bold'] = {
+  directory: 'Caligraphic/Bold',
+  family: 'MathJax_Caligraphic',
+  weight: 'bold',
+  testString: "MATHJAX CALIGRAPHIC",
+  skew: {
+    0x41: 0.224,
+    0x42: 0.16,
+    0x43: 0.16,
+    0x44: 0.0958,
+    0x45: 0.128,
+    0x46: 0.128,
+    0x47: 0.128,
+    0x48: 0.128,
+    0x49: 0.0319,
+    0x4A: 0.192,
+    0x4B: 0.0639,
+    0x4C: 0.16,
+    0x4D: 0.16,
+    0x4E: 0.0958,
+    0x4F: 0.128,
+    0x50: 0.0958,
+    0x51: 0.128,
+    0x52: 0.0958,
+    0x53: 0.16,
+    0x54: 0.0319,
+    0x55: 0.0958,
+    0x56: 0.0319,
+    0x57: 0.0958,
+    0x58: 0.16,
+    0x59: 0.0958,
+    0x5A: 0.16
+  },
+  0x20: [0,0,250,0,0],               // SPACE
+  0x30: [460,17,575,46,528],         // DIGIT ZERO
+  0x31: [461,0,575,80,494],          // DIGIT ONE
+  0x32: [460,0,575,51,517],          // DIGIT TWO
+  0x33: [461,211,575,48,525],        // DIGIT THREE
+  0x34: [469,194,575,32,542],        // DIGIT FOUR
+  0x35: [461,211,575,57,517],        // DIGIT FIVE
+  0x36: [660,17,575,48,526],         // DIGIT SIX
+  0x37: [476,211,575,64,558],        // DIGIT SEVEN
+  0x38: [661,17,575,48,526],         // DIGIT EIGHT
+  0x39: [461,210,575,48,526],        // DIGIT NINE
+  0x41: [751,49,921,39,989],         // LATIN CAPITAL LETTER A
+  0x42: [705,17,748,40,740],         // LATIN CAPITAL LETTER B
+  0x43: [703,20,613,20,599],         // LATIN CAPITAL LETTER C
+  0x44: [686,0,892,20,885],          // LATIN CAPITAL LETTER D
+  0x45: [703,16,607,37,627],         // LATIN CAPITAL LETTER E
+  0x46: [686,30,814,17,930],         // LATIN CAPITAL LETTER F
+  0x47: [703,113,682,50,671],        // LATIN CAPITAL LETTER G
+  0x48: [686,48,987,20,946],         // LATIN CAPITAL LETTER H
+  0x49: [686,0,642,-27,746],         // LATIN CAPITAL LETTER I
+  0x4A: [686,114,779,53,937],        // LATIN CAPITAL LETTER J
+  0x4B: [703,17,871,40,834],         // LATIN CAPITAL LETTER K
+  0x4C: [703,17,788,41,751],         // LATIN CAPITAL LETTER L
+  0x4D: [703,49,1378,38,1353],       // LATIN CAPITAL LETTER M
+  0x4E: [840,49,937,-24,1105],       // LATIN CAPITAL LETTER N
+  0x4F: [703,17,906,63,882],         // LATIN CAPITAL LETTER O
+  0x50: [686,67,810,20,846],         // LATIN CAPITAL LETTER P
+  0x51: [703,146,939,120,905],       // LATIN CAPITAL LETTER Q
+  0x52: [686,17,990,20,981],         // LATIN CAPITAL LETTER R
+  0x53: [703,16,696,25,721],         // LATIN CAPITAL LETTER S
+  0x54: [720,69,644,38,947],         // LATIN CAPITAL LETTER T
+  0x55: [686,24,715,-10,771],        // LATIN CAPITAL LETTER U
+  0x56: [686,77,737,25,774],         // LATIN CAPITAL LETTER V
+  0x57: [686,77,1169,25,1206],       // LATIN CAPITAL LETTER W
+  0x58: [686,-1,817,56,906],         // LATIN CAPITAL LETTER X
+  0x59: [686,164,759,36,797],        // LATIN CAPITAL LETTER Y
+  0x5A: [686,0,818,46,853],          // LATIN CAPITAL LETTER Z
+  0xA0: [0,0,250,0,0]                // NO-BREAK SPACE
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Caligraphic-bold"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Caligraphic/Bold/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Main.js
new file mode 100644
index 0000000..ae992fc
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Main.js
@@ -0,0 +1,96 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Caligraphic'] = {
+  directory: 'Caligraphic/Regular',
+  family: 'MathJax_Caligraphic',
+  testString: "MATHJAX CALIGRAPHIC",
+  skew: {
+    0x41: 0.194,
+    0x42: 0.139,
+    0x43: 0.139,
+    0x44: 0.0833,
+    0x45: 0.111,
+    0x46: 0.111,
+    0x47: 0.111,
+    0x48: 0.111,
+    0x49: 0.0278,
+    0x4A: 0.167,
+    0x4B: 0.0556,
+    0x4C: 0.139,
+    0x4D: 0.139,
+    0x4E: 0.0833,
+    0x4F: 0.111,
+    0x50: 0.0833,
+    0x51: 0.111,
+    0x52: 0.0833,
+    0x53: 0.139,
+    0x54: 0.0278,
+    0x55: 0.0833,
+    0x56: 0.0278,
+    0x57: 0.0833,
+    0x58: 0.139,
+    0x59: 0.0833,
+    0x5A: 0.139
+  },
+  0x20: [0,0,250,0,0],               // SPACE
+  0x30: [452,22,500,39,460],         // DIGIT ZERO
+  0x31: [453,0,500,86,426],          // DIGIT ONE
+  0x32: [453,0,500,44,449],          // DIGIT TWO
+  0x33: [452,216,500,42,456],        // DIGIT THREE
+  0x34: [464,194,500,28,471],        // DIGIT FOUR
+  0x35: [453,216,500,50,448],        // DIGIT FIVE
+  0x36: [665,22,500,42,456],         // DIGIT SIX
+  0x37: [463,216,500,55,485],        // DIGIT SEVEN
+  0x38: [666,21,500,43,456],         // DIGIT EIGHT
+  0x39: [453,216,500,42,457],        // DIGIT NINE
+  0x41: [728,50,798,30,819],         // LATIN CAPITAL LETTER A
+  0x42: [705,22,657,32,664],         // LATIN CAPITAL LETTER B
+  0x43: [705,25,527,12,533],         // LATIN CAPITAL LETTER C
+  0x44: [683,0,771,19,766],          // LATIN CAPITAL LETTER D
+  0x45: [705,22,528,30,564],         // LATIN CAPITAL LETTER E
+  0x46: [683,32,719,18,829],         // LATIN CAPITAL LETTER F
+  0x47: [704,119,595,44,599],        // LATIN CAPITAL LETTER G
+  0x48: [683,48,845,18,803],         // LATIN CAPITAL LETTER H
+  0x49: [683,0,545,-30,642],         // LATIN CAPITAL LETTER I
+  0x4A: [683,119,678,47,839],        // LATIN CAPITAL LETTER J
+  0x4B: [705,22,762,32,732],         // LATIN CAPITAL LETTER K
+  0x4C: [705,22,690,32,656],         // LATIN CAPITAL LETTER L
+  0x4D: [705,50,1201,28,1137],       // LATIN CAPITAL LETTER M
+  0x4E: [789,50,820,-27,979],        // LATIN CAPITAL LETTER N
+  0x4F: [705,22,796,58,777],         // LATIN CAPITAL LETTER O
+  0x50: [683,57,696,19,733],         // LATIN CAPITAL LETTER P
+  0x51: [705,131,817,114,787],       // LATIN CAPITAL LETTER Q
+  0x52: [682,22,848,19,837],         // LATIN CAPITAL LETTER R
+  0x53: [705,22,606,18,642],         // LATIN CAPITAL LETTER S
+  0x54: [717,68,545,34,833],         // LATIN CAPITAL LETTER T
+  0x55: [683,28,626,-17,687],        // LATIN CAPITAL LETTER U
+  0x56: [683,52,613,25,658],         // LATIN CAPITAL LETTER V
+  0x57: [683,53,988,25,1034],        // LATIN CAPITAL LETTER W
+  0x58: [683,0,713,52,807],          // LATIN CAPITAL LETTER X
+  0x59: [683,143,668,31,714],        // LATIN CAPITAL LETTER Y
+  0x5A: [683,0,725,37,767],          // LATIN CAPITAL LETTER Z
+  0xA0: [0,0,250,0,0]                // NO-BREAK SPACE
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Caligraphic"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Caligraphic/Regular/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/BasicLatin.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/BasicLatin.js
new file mode 100644
index 0000000..aec99bc
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/BasicLatin.js
@@ -0,0 +1,109 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/BasicLatin.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Fraktur-bold'],
+  {
+    0x20: [0,0,250,0,0],               // SPACE
+    0x21: [689,12,349,107,241],        // EXCLAMATION MARK
+    0x22: [695,-432,254,10,231],       // QUOTATION MARK
+    0x26: [696,16,871,44,839],         // AMPERSAND
+    0x27: [695,-436,250,80,158],       // APOSTROPHE
+    0x28: [737,186,459,134,347],       // LEFT PARENTHESIS
+    0x29: [735,187,459,105,326],       // RIGHT PARENTHESIS
+    0x2A: [692,-449,328,40,277],       // ASTERISK
+    0x2B: [598,82,893,56,837],         // PLUS SIGN
+    0x2C: [107,191,328,118,253],       // COMMA
+    0x2D: [275,-236,893,54,833],       // HYPHEN-MINUS
+    0x2E: [102,15,328,103,237],        // FULL STOP
+    0x2F: [721,182,593,41,550],        // SOLIDUS
+    0x30: [501,12,593,42,533],         // DIGIT ZERO
+    0x31: [489,0,593,54,548],          // DIGIT ONE
+    0x32: [491,-2,593,44,563],         // DIGIT TWO
+    0x33: [487,193,593,31,523],        // DIGIT THREE
+    0x34: [495,196,593,13,565],        // DIGIT FOUR
+    0x35: [481,190,593,19,518],        // DIGIT FIVE
+    0x36: [704,12,593,48,547],         // DIGIT SIX
+    0x37: [479,197,593,54,591],        // DIGIT SEVEN
+    0x38: [714,5,593,45,542],          // DIGIT EIGHT
+    0x39: [487,195,593,29,549],        // DIGIT NINE
+    0x3A: [457,12,255,57,197],         // COLON
+    0x3B: [458,190,255,56,211],        // SEMICOLON
+    0x3D: [343,-168,582,22,559],       // EQUALS SIGN
+    0x3F: [697,14,428,40,422],         // QUESTION MARK
+    0x41: [686,31,847,29,827],         // LATIN CAPITAL LETTER A
+    0x42: [684,31,1044,57,965],        // LATIN CAPITAL LETTER B
+    0x43: [676,32,723,72,726],         // LATIN CAPITAL LETTER C
+    0x44: [683,29,982,31,896],         // LATIN CAPITAL LETTER D
+    0x45: [686,29,783,74,728],         // LATIN CAPITAL LETTER E
+    0x46: [684,146,722,17,727],        // LATIN CAPITAL LETTER F
+    0x47: [687,29,927,74,844],         // LATIN CAPITAL LETTER G
+    0x48: [683,126,851,6,752],         // LATIN CAPITAL LETTER H
+    0x49: [681,25,655,32,623],         // LATIN CAPITAL LETTER I
+    0x4A: [680,141,652,-8,616],        // LATIN CAPITAL LETTER J
+    0x4B: [681,26,789,20,806],         // LATIN CAPITAL LETTER K
+    0x4C: [683,28,786,30,764],         // LATIN CAPITAL LETTER L
+    0x4D: [683,32,1239,27,1232],       // LATIN CAPITAL LETTER M
+    0x4E: [679,30,983,26,973],         // LATIN CAPITAL LETTER N
+    0x4F: [726,30,976,12,881],         // LATIN CAPITAL LETTER O
+    0x50: [688,223,977,33,943],        // LATIN CAPITAL LETTER P
+    0x51: [726,83,976,12,918],         // LATIN CAPITAL LETTER Q
+    0x52: [688,28,978,31,978],         // LATIN CAPITAL LETTER R
+    0x53: [685,31,978,82,905],         // LATIN CAPITAL LETTER S
+    0x54: [686,30,790,31,802],         // LATIN CAPITAL LETTER T
+    0x55: [688,39,851,18,871],         // LATIN CAPITAL LETTER U
+    0x56: [685,29,982,25,966],         // LATIN CAPITAL LETTER V
+    0x57: [683,30,1235,26,1240],       // LATIN CAPITAL LETTER W
+    0x58: [681,35,849,32,835],         // LATIN CAPITAL LETTER X
+    0x59: [688,214,984,34,878],        // LATIN CAPITAL LETTER Y
+    0x5A: [677,148,711,-4,624],        // LATIN CAPITAL LETTER Z
+    0x5B: [740,130,257,36,226],        // LEFT SQUARE BRACKET
+    0x5D: [738,132,257,14,208],        // RIGHT SQUARE BRACKET
+    0x5E: [734,-452,590,1,584],        // CIRCUMFLEX ACCENT
+    0x61: [472,32,603,80,586],         // LATIN SMALL LETTER A
+    0x62: [690,32,590,86,504],         // LATIN SMALL LETTER B
+    0x63: [473,26,464,87,424],         // LATIN SMALL LETTER C
+    0x64: [632,28,589,-1,511],         // LATIN SMALL LETTER D
+    0x65: [471,27,472,81,428],         // LATIN SMALL LETTER E
+    0x66: [687,222,388,35,372],        // LATIN SMALL LETTER F
+    0x67: [472,208,595,17,541],        // LATIN SMALL LETTER G
+    0x68: [687,207,615,89,507],        // LATIN SMALL LETTER H
+    0x69: [686,25,331,3,327],          // LATIN SMALL LETTER I
+    0x6A: [682,203,332,-19,238],       // LATIN SMALL LETTER J
+    0x6B: [682,25,464,34,432],         // LATIN SMALL LETTER K
+    0x6C: [681,24,337,100,312],        // LATIN SMALL LETTER L
+    0x6D: [476,31,921,16,900],         // LATIN SMALL LETTER M
+    0x6E: [473,28,654,5,608],          // LATIN SMALL LETTER N
+    0x6F: [482,34,609,107,515],        // LATIN SMALL LETTER O
+    0x70: [557,207,604,-1,519],        // LATIN SMALL LETTER P
+    0x71: [485,211,596,87,515],        // LATIN SMALL LETTER Q
+    0x72: [472,26,460,13,453],         // LATIN SMALL LETTER R
+    0x73: [479,34,523,-23,481],        // LATIN SMALL LETTER S
+    0x74: [648,27,393,43,407],         // LATIN SMALL LETTER T
+    0x75: [472,32,589,9,603],          // LATIN SMALL LETTER U
+    0x76: [546,27,604,56,507],         // LATIN SMALL LETTER V
+    0x77: [549,32,918,55,815],         // LATIN SMALL LETTER W
+    0x78: [471,188,459,8,441],         // LATIN SMALL LETTER X
+    0x79: [557,221,589,60,512],        // LATIN SMALL LETTER Y
+    0x7A: [471,214,461,-7,378]         // LATIN SMALL LETTER Z
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Fraktur/Bold/BasicLatin.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js
new file mode 100644
index 0000000..fe41124
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js
@@ -0,0 +1,37 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Fraktur-bold'] = {
+  directory: 'Fraktur/Bold',
+  family: 'MathJax_Fraktur',
+  weight: 'bold',
+  testString: "MathJax Fraktur",
+  Ranges: [
+    [0x0,0x7F,"BasicLatin"],
+    [0x80,0xDFFF,"Other"],
+    [0xE300,0xE310,"PUA"]
+  ]
+
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Fraktur-bold"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Fraktur/Bold/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js
new file mode 100644
index 0000000..7c43d4f
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js
@@ -0,0 +1,30 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Fraktur-bold'],
+  {
+    0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+    0x2018: [708,-411,254,53,187],     // LEFT SINGLE QUOTATION MARK
+    0x2019: [692,-394,254,58,193]      // RIGHT SINGLE QUOTATION MARK
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Fraktur/Bold/Other.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js
new file mode 100644
index 0000000..27585df
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js
@@ -0,0 +1,34 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Fraktur-bold'],
+  {
+    0xE301: [630,27,587,64,512],       // stix-MATHEMATICAL BOLD CAPITAL GAMMA SLASHED
+    0xE302: [693,212,394,37,408],      // stix-capital Delta, Greek slashed
+    0xE303: [681,219,387,36,384],      // stix-MATHEMATICAL BOLD CAPITAL DELTA SLASHED
+    0xE304: [473,212,593,67,531],      // stix-capital Epsilon, Greek slashed
+    0xE305: [684,27,393,33,387],       // stix-MATHEMATICAL BOLD CAPITAL EPSILON SLASHED
+    0xE308: [679,220,981,32,875],      // stix-capital Eta, Greek slashed
+    0xE309: [717,137,727,17,633]       // stix-MATHEMATICAL BOLD CAPITAL ETA SLASHED
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Fraktur/Bold/PUA.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/BasicLatin.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/BasicLatin.js
new file mode 100644
index 0000000..26fd7a2
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/BasicLatin.js
@@ -0,0 +1,109 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/BasicLatin.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Fraktur'],
+  {
+    0x20: [0,0,250,0,0],               // SPACE
+    0x21: [689,12,296,91,204],         // EXCLAMATION MARK
+    0x22: [695,-432,215,8,196],        // QUOTATION MARK
+    0x26: [698,11,738,49,733],         // AMPERSAND
+    0x27: [695,-436,212,69,134],       // APOSTROPHE
+    0x28: [737,186,389,114,293],       // LEFT PARENTHESIS
+    0x29: [735,187,389,89,276],        // RIGHT PARENTHESIS
+    0x2A: [692,-449,278,33,234],       // ASTERISK
+    0x2B: [598,82,756,47,709],         // PLUS SIGN
+    0x2C: [107,191,278,99,213],        // COMMA
+    0x2D: [275,-236,756,46,706],       // HYPHEN-MINUS
+    0x2E: [102,15,278,87,200],         // FULL STOP
+    0x2F: [721,182,502,34,466],        // SOLIDUS
+    0x30: [492,13,502,42,456],         // DIGIT ZERO
+    0x31: [468,2,502,47,460],          // DIGIT ONE
+    0x32: [474,-1,502,60,484],         // DIGIT TWO
+    0x33: [473,182,502,39,429],        // DIGIT THREE
+    0x34: [476,191,502,10,481],        // DIGIT FOUR
+    0x35: [458,184,502,47,440],        // DIGIT FIVE
+    0x36: [700,13,502,45,471],         // DIGIT SIX
+    0x37: [468,181,502,37,498],        // DIGIT SEVEN
+    0x38: [705,10,502,40,461],         // DIGIT EIGHT
+    0x39: [469,182,502,28,466],        // DIGIT NINE
+    0x3A: [457,12,216,50,168],         // COLON
+    0x3B: [458,189,216,47,179],        // SEMICOLON
+    0x3D: [368,-132,756,54,725],       // EQUALS SIGN
+    0x3F: [693,11,362,46,357],         // QUESTION MARK
+    0x41: [696,26,718,22,708],         // LATIN CAPITAL LETTER A
+    0x42: [691,27,884,48,820],         // LATIN CAPITAL LETTER B
+    0x43: [685,24,613,59,607],         // LATIN CAPITAL LETTER C
+    0x44: [685,27,832,27,745],         // LATIN CAPITAL LETTER D
+    0x45: [685,24,663,86,634],         // LATIN CAPITAL LETTER E
+    0x46: [686,153,611,11,612],        // LATIN CAPITAL LETTER F
+    0x47: [690,26,785,66,710],         // LATIN CAPITAL LETTER G
+    0x48: [666,133,720,1,644],         // LATIN CAPITAL LETTER H
+    0x49: [686,26,554,30,532],         // LATIN CAPITAL LETTER I
+    0x4A: [686,139,552,-10,522],       // LATIN CAPITAL LETTER J
+    0x4B: [680,27,668,17,682],         // LATIN CAPITAL LETTER K
+    0x4C: [686,26,666,33,644],         // LATIN CAPITAL LETTER L
+    0x4D: [692,27,1050,27,1048],       // LATIN CAPITAL LETTER M
+    0x4E: [686,25,832,27,825],         // LATIN CAPITAL LETTER N
+    0x4F: [729,27,827,12,744],         // LATIN CAPITAL LETTER O
+    0x50: [692,218,828,28,804],        // LATIN CAPITAL LETTER P
+    0x51: [729,69,827,11,782],         // LATIN CAPITAL LETTER Q
+    0x52: [686,26,828,27,824],         // LATIN CAPITAL LETTER R
+    0x53: [692,27,829,66,756],         // LATIN CAPITAL LETTER S
+    0x54: [701,27,669,34,676],         // LATIN CAPITAL LETTER T
+    0x55: [697,27,646,-25,665],        // LATIN CAPITAL LETTER U
+    0x56: [686,26,831,26,825],         // LATIN CAPITAL LETTER V
+    0x57: [686,27,1046,32,1054],       // LATIN CAPITAL LETTER W
+    0x58: [688,27,719,28,709],         // LATIN CAPITAL LETTER X
+    0x59: [686,218,833,27,740],        // LATIN CAPITAL LETTER Y
+    0x5A: [729,139,602,11,532],        // LATIN CAPITAL LETTER Z
+    0x5B: [740,130,278,117,278],       // LEFT SQUARE BRACKET
+    0x5D: [738,131,278,-4,160],        // RIGHT SQUARE BRACKET
+    0x5E: [734,-452,500,0,495],        // CIRCUMFLEX ACCENT
+    0x61: [470,35,500,66,497],         // LATIN SMALL LETTER A
+    0x62: [685,31,513,87,442],         // LATIN SMALL LETTER B
+    0x63: [466,29,389,72,359],         // LATIN SMALL LETTER C
+    0x64: [609,33,499,13,428],         // LATIN SMALL LETTER D
+    0x65: [467,30,401,70,364],         // LATIN SMALL LETTER E
+    0x66: [681,221,326,30,323],        // LATIN SMALL LETTER F
+    0x67: [470,209,504,17,455],        // LATIN SMALL LETTER G
+    0x68: [688,205,521,77,434],        // LATIN SMALL LETTER H
+    0x69: [673,20,279,14,267],         // LATIN SMALL LETTER I
+    0x6A: [672,208,281,-9,196],        // LATIN SMALL LETTER J
+    0x6B: [689,25,389,24,362],         // LATIN SMALL LETTER K
+    0x6C: [685,20,280,98,276],         // LATIN SMALL LETTER L
+    0x6D: [475,26,767,8,753],          // LATIN SMALL LETTER M
+    0x6E: [475,22,527,20,514],         // LATIN SMALL LETTER N
+    0x6F: [480,28,489,67,412],         // LATIN SMALL LETTER O
+    0x70: [541,212,500,12,430],        // LATIN SMALL LETTER P
+    0x71: [479,219,489,60,419],        // LATIN SMALL LETTER Q
+    0x72: [474,21,389,17,387],         // LATIN SMALL LETTER R
+    0x73: [478,29,443,-18,406],        // LATIN SMALL LETTER S
+    0x74: [640,20,333,27,348],         // LATIN SMALL LETTER T
+    0x75: [474,23,517,9,513],          // LATIN SMALL LETTER U
+    0x76: [530,28,512,55,434],         // LATIN SMALL LETTER V
+    0x77: [532,28,774,45,688],         // LATIN SMALL LETTER W
+    0x78: [472,188,389,10,363],        // LATIN SMALL LETTER X
+    0x79: [528,218,499,45,431],        // LATIN SMALL LETTER Y
+    0x7A: [471,214,391,-7,314]         // LATIN SMALL LETTER Z
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Fraktur/Regular/BasicLatin.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js
new file mode 100644
index 0000000..05b6e3f
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js
@@ -0,0 +1,36 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Fraktur'] = {
+  directory: 'Fraktur/Regular',
+  family: 'MathJax_Fraktur',
+  testString: "MathJax Fraktur",
+  Ranges: [
+    [0x0,0x7F,"BasicLatin"],
+    [0x80,0xDFFF,"Other"],
+    [0xE300,0xE310,"PUA"]
+  ]
+
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Fraktur"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Fraktur/Regular/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js
new file mode 100644
index 0000000..51f3e19
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js
@@ -0,0 +1,30 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Fraktur'],
+  {
+    0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+    0x2018: [708,-410,215,45,158],     // LEFT SINGLE QUOTATION MARK
+    0x2019: [692,-395,215,49,163]      // RIGHT SINGLE QUOTATION MARK
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Fraktur/Regular/Other.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js
new file mode 100644
index 0000000..cbfd3db
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js
@@ -0,0 +1,35 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Fraktur'],
+  {
+    0xE300: [683,32,497,75,430],       // stix-capital Gamma, Greek slashed
+    0xE301: [616,30,498,35,432],       // stix-MATHEMATICAL BOLD CAPITAL GAMMA SLASHED
+    0xE302: [680,215,333,29,339],      // stix-capital Delta, Greek slashed
+    0xE303: [679,224,329,28,318],      // stix-MATHEMATICAL BOLD CAPITAL DELTA SLASHED
+    0xE304: [471,214,503,52,449],      // stix-capital Epsilon, Greek slashed
+    0xE305: [686,20,333,26,315],       // stix-MATHEMATICAL BOLD CAPITAL EPSILON SLASHED
+    0xE306: [577,21,334,29,347],       // stix-capital Zeta, Greek slashed
+    0xE307: [475,22,501,10,514]        // stix-MATHEMATICAL BOLD CAPITAL ZETA SLASHED
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Fraktur/Regular/PUA.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js
new file mode 100644
index 0000000..27ba566
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js
@@ -0,0 +1,44 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Greek-bold'] = {
+  directory: 'Greek/Bold',
+  family: 'MathJax_Greek',
+  weight: 'bold',
+  testString: "\u0393 \u03A5 \u039B",
+  0x20: [0,0,250,0,0],               // SPACE
+  0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+  0x393: [680,0,692,39,643],         // GREEK CAPITAL LETTER GAMMA
+  0x394: [698,0,958,56,901],         // GREEK CAPITAL LETTER DELTA
+  0x398: [696,10,894,64,829],        // GREEK CAPITAL LETTER THETA
+  0x39B: [698,0,806,40,765],         // GREEK CAPITAL LETTER LAMDA
+  0x39E: [675,0,767,48,718],         // GREEK CAPITAL LETTER XI
+  0x3A0: [680,0,900,39,860],         // GREEK CAPITAL LETTER PI
+  0x3A3: [686,0,831,64,766],         // GREEK CAPITAL LETTER SIGMA
+  0x3A5: [697,0,894,64,829],         // GREEK CAPITAL LETTER UPSILON
+  0x3A6: [686,0,831,64,766],         // GREEK CAPITAL LETTER PHI
+  0x3A8: [686,0,894,64,829],         // GREEK CAPITAL LETTER PSI
+  0x3A9: [696,1,831,51,779]          // GREEK CAPITAL LETTER OMEGA
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Greek-bold"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Greek/Bold/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Main.js
new file mode 100644
index 0000000..c52d7e4
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Main.js
@@ -0,0 +1,111 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Greek-bold-italic'] = {
+  directory: 'Greek/BoldItalic',
+  family: 'MathJax_Greek',
+  weight: 'bold',
+  style: 'italic',
+  testString: "\u0393 \u03A5 \u039B",
+  skew: {
+    0x393: 0.0958,
+    0x394: 0.192,
+    0x398: 0.0958,
+    0x39B: 0.192,
+    0x39E: 0.0958,
+    0x3A0: 0.0639,
+    0x3A3: 0.0958,
+    0x3A5: 0.0639,
+    0x3A6: 0.0958,
+    0x3A8: 0.0639,
+    0x3A9: 0.0958,
+    0x3B1: 0.0319,
+    0x3B2: 0.0958,
+    0x3B4: 0.0639,
+    0x3B5: 0.0958,
+    0x3B6: 0.0958,
+    0x3B7: 0.0639,
+    0x3B8: 0.0958,
+    0x3B9: 0.0639,
+    0x3BC: 0.0319,
+    0x3BD: 0.0319,
+    0x3BE: 0.128,
+    0x3BF: 0.0639,
+    0x3C1: 0.0958,
+    0x3C2: 0.0958,
+    0x3C4: 0.0319,
+    0x3C5: 0.0319,
+    0x3C6: 0.0958,
+    0x3C7: 0.0639,
+    0x3C8: 0.128,
+    0x3D1: 0.0958,
+    0x3D5: 0.0958,
+    0x3F1: 0.0958,
+    0x3F5: 0.0639
+  },
+  0x20: [0,0,250,0,0],               // SPACE
+  0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+  0x393: [680,0,657,43,777],         // GREEK CAPITAL LETTER GAMMA
+  0x394: [711,0,958,59,904],         // GREEK CAPITAL LETTER DELTA
+  0x398: [702,17,867,54,844],        // GREEK CAPITAL LETTER THETA
+  0x39B: [711,0,806,44,776],         // GREEK CAPITAL LETTER LAMDA
+  0x39E: [675,0,841,62,867],         // GREEK CAPITAL LETTER XI
+  0x3A0: [680,0,982,43,1026],        // GREEK CAPITAL LETTER PI
+  0x3A3: [686,0,885,69,902],         // GREEK CAPITAL LETTER SIGMA
+  0x3A5: [703,0,671,32,802],         // GREEK CAPITAL LETTER UPSILON
+  0x3A6: [686,0,767,29,737],         // GREEK CAPITAL LETTER PHI
+  0x3A8: [686,0,714,22,790],         // GREEK CAPITAL LETTER PSI
+  0x3A9: [703,0,879,93,886],         // GREEK CAPITAL LETTER OMEGA
+  0x3B1: [452,8,761,39,712],         // GREEK SMALL LETTER ALPHA
+  0x3B2: [701,194,660,28,637],       // GREEK SMALL LETTER BETA
+  0x3B3: [451,211,590,5,617],        // GREEK SMALL LETTER GAMMA
+  0x3B4: [725,8,522,39,513],         // GREEK SMALL LETTER DELTA
+  0x3B5: [461,17,529,36,481],        // GREEK SMALL LETTER EPSILON
+  0x3B6: [711,202,508,48,521],       // GREEK SMALL LETTER ZETA
+  0x3B7: [452,211,600,24,600],       // GREEK SMALL LETTER ETA
+  0x3B8: [702,8,562,40,554],         // GREEK SMALL LETTER THETA
+  0x3B9: [452,8,412,38,386],         // GREEK SMALL LETTER IOTA
+  0x3BA: [452,8,668,45,642],         // GREEK SMALL LETTER KAPPA
+  0x3BB: [694,13,671,40,652],        // GREEK SMALL LETTER LAMDA
+  0x3BC: [452,211,708,33,682],       // GREEK SMALL LETTER MU
+  0x3BD: [452,2,577,38,608],         // GREEK SMALL LETTER NU
+  0x3BE: [711,201,508,23,490],       // GREEK SMALL LETTER XI
+  0x3BF: [452,8,585,39,576],         // GREEK SMALL LETTER OMICRON
+  0x3C0: [444,8,682,23,674],         // GREEK SMALL LETTER PI
+  0x3C1: [451,211,612,34,603],       // GREEK SMALL LETTER RHO
+  0x3C2: [451,105,424,33,457],       // GREEK SMALL LETTER FINAL SIGMA
+  0x3C3: [444,8,686,35,677],         // GREEK SMALL LETTER SIGMA
+  0x3C4: [444,13,521,23,610],        // GREEK SMALL LETTER TAU
+  0x3C5: [453,8,631,24,604],         // GREEK SMALL LETTER UPSILON
+  0x3C6: [452,216,747,53,703],       // GREEK SMALL LETTER PHI
+  0x3C7: [452,201,718,32,685],       // GREEK SMALL LETTER CHI
+  0x3C8: [694,202,758,24,732],       // GREEK SMALL LETTER PSI
+  0x3C9: [453,8,718,24,691],         // GREEK SMALL LETTER OMEGA
+  0x3D1: [701,8,692,24,656],         // GREEK THETA SYMBOL
+  0x3D5: [694,202,712,51,693],       // GREEK PHI SYMBOL
+  0x3D6: [444,8,975,23,961],         // GREEK PI SYMBOL
+  0x3F1: [451,194,612,75,603],       // GREEK RHO SYMBOL
+  0x3F5: [444,7,483,44,450]          // GREEK LUNATE EPSILON SYMBOL
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Greek-bold-italic"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Greek/BoldItalic/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Main.js
new file mode 100644
index 0000000..e670345
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Main.js
@@ -0,0 +1,110 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Greek-italic'] = {
+  directory: 'Greek/Italic',
+  family: 'MathJax_Greek',
+  style: 'italic',
+  testString: "\u0393 \u03A5 \u039B",
+  skew: {
+    0x393: 0.0833,
+    0x394: 0.167,
+    0x398: 0.0833,
+    0x39B: 0.167,
+    0x39E: 0.0833,
+    0x3A0: 0.0556,
+    0x3A3: 0.0833,
+    0x3A5: 0.0556,
+    0x3A6: 0.0833,
+    0x3A8: 0.0556,
+    0x3A9: 0.0833,
+    0x3B1: 0.0278,
+    0x3B2: 0.0833,
+    0x3B4: 0.0556,
+    0x3B5: 0.0833,
+    0x3B6: 0.0833,
+    0x3B7: 0.0556,
+    0x3B8: 0.0833,
+    0x3B9: 0.0556,
+    0x3BC: 0.0278,
+    0x3BD: 0.0278,
+    0x3BE: 0.111,
+    0x3BF: 0.0556,
+    0x3C1: 0.0833,
+    0x3C2: 0.0833,
+    0x3C4: 0.0278,
+    0x3C5: 0.0278,
+    0x3C6: 0.0833,
+    0x3C7: 0.0556,
+    0x3C8: 0.111,
+    0x3D1: 0.0833,
+    0x3D5: 0.0833,
+    0x3F1: 0.0833,
+    0x3F5: 0.0556
+  },
+  0x20: [0,0,250,0,0],               // SPACE
+  0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+  0x393: [680,-1,615,31,721],        // GREEK CAPITAL LETTER GAMMA
+  0x394: [716,0,833,48,788],         // GREEK CAPITAL LETTER DELTA
+  0x398: [704,22,763,50,740],        // GREEK CAPITAL LETTER THETA
+  0x39B: [716,0,694,35,670],         // GREEK CAPITAL LETTER LAMDA
+  0x39E: [678,0,742,53,777],         // GREEK CAPITAL LETTER XI
+  0x3A0: [681,0,831,31,887],         // GREEK CAPITAL LETTER PI
+  0x3A3: [683,0,780,58,806],         // GREEK CAPITAL LETTER SIGMA
+  0x3A5: [705,0,583,28,700],         // GREEK CAPITAL LETTER UPSILON
+  0x3A6: [683,0,667,24,642],         // GREEK CAPITAL LETTER PHI
+  0x3A8: [683,0,612,21,692],         // GREEK CAPITAL LETTER PSI
+  0x3A9: [704,0,772,80,786],         // GREEK CAPITAL LETTER OMEGA
+  0x3B1: [442,11,640,34,603],        // GREEK SMALL LETTER ALPHA
+  0x3B2: [705,194,566,23,573],       // GREEK SMALL LETTER BETA
+  0x3B3: [441,216,518,11,543],       // GREEK SMALL LETTER GAMMA
+  0x3B4: [717,10,444,36,451],        // GREEK SMALL LETTER DELTA
+  0x3B5: [452,22,466,27,428],        // GREEK SMALL LETTER EPSILON
+  0x3B6: [704,204,438,44,471],       // GREEK SMALL LETTER ZETA
+  0x3B7: [442,216,497,21,503],       // GREEK SMALL LETTER ETA
+  0x3B8: [705,10,469,35,462],        // GREEK SMALL LETTER THETA
+  0x3B9: [442,10,354,48,332],        // GREEK SMALL LETTER IOTA
+  0x3BA: [442,11,576,49,554],        // GREEK SMALL LETTER KAPPA
+  0x3BB: [694,12,583,47,556],        // GREEK SMALL LETTER LAMDA
+  0x3BC: [442,216,603,23,580],       // GREEK SMALL LETTER MU
+  0x3BD: [442,2,494,45,530],         // GREEK SMALL LETTER NU
+  0x3BE: [704,205,438,21,443],       // GREEK SMALL LETTER XI
+  0x3BF: [441,11,485,34,476],        // GREEK SMALL LETTER OMICRON
+  0x3C0: [431,11,570,19,573],        // GREEK SMALL LETTER PI
+  0x3C1: [442,216,517,23,510],       // GREEK SMALL LETTER RHO
+  0x3C2: [442,107,363,31,405],       // GREEK SMALL LETTER FINAL SIGMA
+  0x3C3: [431,11,571,31,572],        // GREEK SMALL LETTER SIGMA
+  0x3C4: [431,13,437,18,517],        // GREEK SMALL LETTER TAU
+  0x3C5: [443,10,540,21,523],        // GREEK SMALL LETTER UPSILON
+  0x3C6: [442,218,654,50,618],       // GREEK SMALL LETTER PHI
+  0x3C7: [442,204,626,25,600],       // GREEK SMALL LETTER CHI
+  0x3C8: [694,205,651,21,634],       // GREEK SMALL LETTER PSI
+  0x3C9: [443,11,622,15,604],        // GREEK SMALL LETTER OMEGA
+  0x3D1: [705,11,591,21,563],        // GREEK THETA SYMBOL
+  0x3D5: [694,205,596,43,579],       // GREEK PHI SYMBOL
+  0x3D6: [431,10,828,19,823],        // GREEK PI SYMBOL
+  0x3F1: [442,194,517,67,510],       // GREEK RHO SYMBOL
+  0x3F5: [431,11,406,40,382]         // GREEK LUNATE EPSILON SYMBOL
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Greek-italic"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Greek/Italic/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Main.js
new file mode 100644
index 0000000..280fdf0
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Main.js
@@ -0,0 +1,43 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Greek'] = {
+  directory: 'Greek/Regular',
+  family: 'MathJax_Greek',
+  testString: "\u0393 \u03A5 \u039B",
+  0x20: [0,0,250,0,0],               // SPACE
+  0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+  0x393: [680,0,625,25,582],         // GREEK CAPITAL LETTER GAMMA
+  0x394: [716,0,833,46,786],         // GREEK CAPITAL LETTER DELTA
+  0x398: [705,22,778,56,722],        // GREEK CAPITAL LETTER THETA
+  0x39B: [716,0,694,32,661],         // GREEK CAPITAL LETTER LAMDA
+  0x39E: [677,0,667,42,624],         // GREEK CAPITAL LETTER XI
+  0x3A0: [680,0,750,25,724],         // GREEK CAPITAL LETTER PI
+  0x3A3: [683,0,722,55,666],         // GREEK CAPITAL LETTER SIGMA
+  0x3A5: [705,0,778,55,722],         // GREEK CAPITAL LETTER UPSILON
+  0x3A6: [683,0,722,56,665],         // GREEK CAPITAL LETTER PHI
+  0x3A8: [683,0,778,55,722],         // GREEK CAPITAL LETTER PSI
+  0x3A9: [704,0,722,44,677]          // GREEK CAPITAL LETTER OMEGA
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Greek"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Greek/Regular/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Arrows.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Arrows.js
new file mode 100644
index 0000000..e31efdf
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Arrows.js
@@ -0,0 +1,51 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Arrows.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'],
+  {
+    0x2190: [518,17,1150,64,1084],     // LEFTWARDS ARROW
+    0x2191: [694,193,575,14,561],      // UPWARDS ARROW
+    0x2192: [518,17,1150,65,1085],     // RIGHTWARDS ARROW
+    0x2193: [694,194,575,14,561],      // DOWNWARDS ARROW
+    0x2194: [518,17,1150,64,1085],     // LEFT RIGHT ARROW
+    0x2195: [767,267,575,14,561],      // UP DOWN ARROW
+    0x2196: [724,194,1150,64,1084],    // NORTH WEST ARROW
+    0x2197: [724,193,1150,64,1085],    // NORTH EAST ARROW
+    0x2198: [694,224,1150,65,1085],    // SOUTH EAST ARROW
+    0x2199: [694,224,1150,64,1085],    // SOUTH WEST ARROW
+    0x21A6: [518,17,1150,65,1085],     // RIGHTWARDS ARROW FROM BAR
+    0x21A9: [518,17,1282,64,1218],     // LEFTWARDS ARROW WITH HOOK
+    0x21AA: [518,17,1282,65,1217],     // RIGHTWARDS ARROW WITH HOOK
+    0x21BC: [518,-220,1150,64,1084],   // LEFTWARDS HARPOON WITH BARB UPWARDS
+    0x21BD: [281,17,1150,64,1084],     // LEFTWARDS HARPOON WITH BARB DOWNWARDS
+    0x21C0: [518,-220,1150,65,1085],   // RIGHTWARDS HARPOON WITH BARB UPWARDS
+    0x21C1: [281,17,1150,64,1085],     // RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+    0x21CC: [718,17,1150,64,1085],     // RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+    0x21D0: [547,46,1150,64,1085],     // LEFTWARDS DOUBLE ARROW
+    0x21D1: [694,193,703,30,672],      // UPWARDS DOUBLE ARROW
+    0x21D2: [547,46,1150,64,1084],     // RIGHTWARDS DOUBLE ARROW
+    0x21D3: [694,194,703,30,672],      // DOWNWARDS DOUBLE ARROW
+    0x21D4: [547,46,1150,47,1102],     // LEFT RIGHT DOUBLE ARROW
+    0x21D5: [767,267,703,30,672]       // UP DOWN DOUBLE ARROW
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Bold/Arrows.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiacritMarks.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiacritMarks.js
new file mode 100644
index 0000000..46ec678
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiacritMarks.js
@@ -0,0 +1,39 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiacritMarks.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'],
+  {
+    0x300: [706,-503,0,-461,-237],     // COMBINING GRAVE ACCENT
+    0x301: [706,-503,0,-339,-115],     // COMBINING ACUTE ACCENT
+    0x302: [694,-520,0,-449,-127],     // COMBINING CIRCUMFLEX ACCENT
+    0x303: [694,-552,0,-479,-97],      // COMBINING TILDE
+    0x304: [607,-540,0,-495,-81],      // COMBINING MACRON
+    0x306: [694,-500,0,-473,-103],     // COMBINING BREVE
+    0x307: [695,-525,0,-373,-203],     // COMBINING DOT ABOVE
+    0x308: [695,-535,0,-479,-97],      // COMBINING DIAERESIS
+    0x30A: [702,-536,0,-415,-161],     // COMBINING RING ABOVE
+    0x30B: [714,-511,0,-442,-82],      // COMBINING DOUBLE ACUTE ACCENT
+    0x30C: [660,-515,0,-445,-131],     // COMBINING CARON
+    0x338: [711,210,0,-734,-161]       // COMBINING LONG SOLIDUS OVERLAY
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Bold/CombDiacritMarks.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiactForSymbols.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiactForSymbols.js
new file mode 100644
index 0000000..73f03f4
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiactForSymbols.js
@@ -0,0 +1,28 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiactForSymbols.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'],
+  {
+    0x20D7: [723,-513,0,-542,-33]      // COMBINING RIGHT ARROW ABOVE
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Bold/CombDiactForSymbols.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeneralPunctuation.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeneralPunctuation.js
new file mode 100644
index 0000000..f849945
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeneralPunctuation.js
@@ -0,0 +1,44 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeneralPunctuation.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'],
+  {
+    0x2002: [0,0,500,0,0],             // ??
+    0x2003: [0,0,999,0,0],             // ??
+    0x2004: [0,0,333,0,0],             // ??
+    0x2005: [0,0,250,0,0],             // ??
+    0x2006: [0,0,167,0,0],             // ??
+    0x2009: [0,0,167,0,0],             // ??
+    0x200A: [0,0,83,0,0],              // ??
+    0x2013: [300,-249,575,0,574],      // EN DASH
+    0x2014: [300,-249,1150,0,1149],    // EM DASH
+    0x2018: [694,-329,319,58,245],     // LEFT SINGLE QUOTATION MARK
+    0x2019: [694,-329,319,74,261],     // RIGHT SINGLE QUOTATION MARK
+    0x201C: [694,-329,603,110,564],    // LEFT DOUBLE QUOTATION MARK
+    0x201D: [694,-329,603,38,492],     // RIGHT DOUBLE QUOTATION MARK
+    0x2020: [702,211,511,64,446],      // DAGGER
+    0x2021: [702,202,511,64,446],      // DOUBLE DAGGER
+    0x2026: [171,-1,1295,74,1221],     // HORIZONTAL ELLIPSIS
+    0x2032: [563,-33,344,35,331]       // PRIME
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Bold/GeneralPunctuation.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeometricShapes.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeometricShapes.js
new file mode 100644
index 0000000..1addf35
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeometricShapes.js
@@ -0,0 +1,32 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeometricShapes.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'],
+  {
+    0x25B3: [711,-1,1022,69,953],      // WHITE UP-POINTING TRIANGLE
+    0x25B9: [540,39,575,33,542],       // WHITE RIGHT-POINTING SMALL TRIANGLE
+    0x25BD: [500,210,1022,68,953],     // WHITE DOWN-POINTING TRIANGLE
+    0x25C3: [539,38,575,33,542],       // WHITE LEFT-POINTING SMALL TRIANGLE
+    0x25EF: [711,211,1150,65,1084]     // LARGE CIRCLE
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Bold/GeometricShapes.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Latin1Supplement.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Latin1Supplement.js
new file mode 100644
index 0000000..f7017d0
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Latin1Supplement.js
@@ -0,0 +1,36 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Latin1Supplement.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'],
+  {
+    0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+    0xA8: [695,-535,575,96,478],       // DIAERESIS
+    0xAC: [371,-61,767,64,702],        // NOT SIGN
+    0xAF: [607,-540,575,80,494],       // MACRON
+    0xB0: [702,-536,575,160,414],      // DEGREE SIGN
+    0xB1: [728,35,894,64,829],         // PLUS-MINUS SIGN
+    0xB4: [706,-503,575,236,460],      // ACUTE ACCENT
+    0xD7: [530,28,894,168,726],        // MULTIPLICATION SIGN
+    0xF7: [597,96,894,64,828]          // DIVISION SIGN
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Bold/Latin1Supplement.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js
new file mode 100644
index 0000000..ae61556
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js
@@ -0,0 +1,28 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'],
+  {
+    0x131: [452,8,394,24,367]          // LATIN SMALL LETTER DOTLESS I
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Bold/LatinExtendedA.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js
new file mode 100644
index 0000000..7960a3e
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js
@@ -0,0 +1,28 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'],
+  {
+    0x237: [451,201,439,-12,420]       // LATIN SMALL LETTER DOTLESS J
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Bold/LatinExtendedB.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LetterlikeSymbols.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LetterlikeSymbols.js
new file mode 100644
index 0000000..4d048f9
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LetterlikeSymbols.js
@@ -0,0 +1,33 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LetterlikeSymbols.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'],
+  {
+    0x210F: [694,8,668,45,642],        // stix-/hbar - Planck's over 2pi
+    0x2111: [702,8,831,64,798],        // BLACK-LETTER CAPITAL I
+    0x2113: [702,19,474,-1,446],       // SCRIPT SMALL L
+    0x2118: [461,210,740,72,726],      // SCRIPT CAPITAL P
+    0x211C: [711,16,831,42,824],       // BLACK-LETTER CAPITAL R
+    0x2135: [694,0,703,64,638]         // ALEF SYMBOL
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Bold/LetterlikeSymbols.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Main.js
new file mode 100644
index 0000000..b6b0012
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Main.js
@@ -0,0 +1,162 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'] = {
+  directory: 'Main/Bold',
+  family: 'MathJax_Main',
+  weight: 'bold',
+  testString: "MathJax Main ^ \u210F \u2223",
+  skew: {
+    0x131: 0.0319,
+    0x237: 0.0958,
+    0x210F: -0.0319,
+    0x2113: 0.128,
+    0x2202: 0.0958
+  },
+  Ranges: [
+    [0xA0,0xFF,"Latin1Supplement"],
+    [0x100,0x17F,"LatinExtendedA"],
+    [0x180,0x24F,"LatinExtendedB"],
+    [0x2B0,0x2FF,"SpacingModLetters"],
+    [0x300,0x36F,"CombDiacritMarks"],
+    [0x2000,0x206F,"GeneralPunctuation"],
+    [0x20D0,0x20FF,"CombDiactForSymbols"],
+    [0x2100,0x214F,"LetterlikeSymbols"],
+    [0x2190,0x21FF,"Arrows"],
+    [0x2200,0x22FF,"MathOperators"],
+    [0x2300,0x23FF,"MiscTechnical"],
+    [0x25A0,0x25FF,"GeometricShapes"],
+    [0x2600,0x26FF,"MiscSymbols"],
+    [0x27C0,0x27EF,"MiscMathSymbolsA"],
+    [0x27F0,0x27FF,"SupplementalArrowsA"],
+    [0x2A00,0x2AFF,"SuppMathOperators"]
+  ],
+  0x20: [0,0,250,0,0],               // SPACE
+  0x21: [705,-1,350,89,260],         // EXCLAMATION MARK
+  0x22: [694,-329,603,38,492],       // QUOTATION MARK
+  0x23: [694,193,958,64,893],        // NUMBER SIGN
+  0x24: [750,56,575,64,510],         // DOLLAR SIGN
+  0x25: [750,56,958,65,893],         // PERCENT SIGN
+  0x26: [705,11,894,48,836],         // AMPERSAND
+  0x27: [694,-329,319,74,261],       // APOSTROPHE
+  0x28: [750,249,447,103,382],       // LEFT PARENTHESIS
+  0x29: [750,249,447,64,343],        // RIGHT PARENTHESIS
+  0x2A: [750,-306,575,73,501],       // ASTERISK
+  0x2B: [633,131,894,64,829],        // PLUS SIGN
+  0x2C: [171,194,319,74,258],        // COMMA
+  0x2D: [278,-166,383,13,318],       // HYPHEN-MINUS
+  0x2E: [171,-1,319,74,245],         // FULL STOP
+  0x2F: [750,250,575,63,511],        // SOLIDUS
+  0x30: [654,10,575,45,529],         // DIGIT ZERO
+  0x31: [655,0,575,80,494],          // DIGIT ONE
+  0x32: [654,0,575,57,517],          // DIGIT TWO
+  0x33: [655,11,575,47,526],         // DIGIT THREE
+  0x34: [656,0,575,32,542],          // DIGIT FOUR
+  0x35: [655,11,575,57,517],         // DIGIT FIVE
+  0x36: [655,11,575,48,526],         // DIGIT SIX
+  0x37: [676,11,575,64,558],         // DIGIT SEVEN
+  0x38: [654,11,575,48,526],         // DIGIT EIGHT
+  0x39: [654,11,575,48,526],         // DIGIT NINE
+  0x3A: [444,-1,319,74,245],         // COLON
+  0x3B: [444,194,319,74,248],        // SEMICOLON
+  0x3C: [587,85,894,96,797],         // LESS-THAN SIGN
+  0x3D: [393,-109,894,64,829],       // EQUALS SIGN
+  0x3E: [587,85,894,96,797],         // GREATER-THAN SIGN
+  0x3F: [700,-1,543,65,478],         // QUESTION MARK
+  0x40: [699,6,894,64,829],          // COMMERCIAL AT
+  0x41: [698,0,869,40,828],          // LATIN CAPITAL LETTER A
+  0x42: [686,0,818,39,752],          // LATIN CAPITAL LETTER B
+  0x43: [697,11,831,64,766],         // LATIN CAPITAL LETTER C
+  0x44: [686,0,882,39,817],          // LATIN CAPITAL LETTER D
+  0x45: [680,0,756,39,723],          // LATIN CAPITAL LETTER E
+  0x46: [680,0,724,39,675],          // LATIN CAPITAL LETTER F
+  0x47: [697,10,904,64,845],         // LATIN CAPITAL LETTER G
+  0x48: [686,0,900,39,860],          // LATIN CAPITAL LETTER H
+  0x49: [686,0,436,25,410],          // LATIN CAPITAL LETTER I
+  0x4A: [686,11,594,8,527],          // LATIN CAPITAL LETTER J
+  0x4B: [686,0,901,39,852],          // LATIN CAPITAL LETTER K
+  0x4C: [686,0,692,39,643],          // LATIN CAPITAL LETTER L
+  0x4D: [686,0,1092,39,1052],        // LATIN CAPITAL LETTER M
+  0x4E: [686,0,900,39,860],          // LATIN CAPITAL LETTER N
+  0x4F: [696,10,864,64,798],         // LATIN CAPITAL LETTER O
+  0x50: [686,0,786,39,721],          // LATIN CAPITAL LETTER P
+  0x51: [696,193,864,64,805],        // LATIN CAPITAL LETTER Q
+  0x52: [686,11,862,39,858],         // LATIN CAPITAL LETTER R
+  0x53: [697,11,639,64,574],         // LATIN CAPITAL LETTER S
+  0x54: [675,0,800,41,758],          // LATIN CAPITAL LETTER T
+  0x55: [686,11,885,39,845],         // LATIN CAPITAL LETTER U
+  0x56: [686,7,869,25,843],          // LATIN CAPITAL LETTER V
+  0x57: [686,7,1189,24,1164],        // LATIN CAPITAL LETTER W
+  0x58: [686,0,869,33,835],          // LATIN CAPITAL LETTER X
+  0x59: [686,0,869,19,849],          // LATIN CAPITAL LETTER Y
+  0x5A: [686,0,703,64,645],          // LATIN CAPITAL LETTER Z
+  0x5B: [750,250,319,128,293],       // LEFT SQUARE BRACKET
+  0x5C: [750,250,575,63,511],        // REVERSE SOLIDUS
+  0x5D: [750,250,319,25,190],        // RIGHT SQUARE BRACKET
+  0x5E: [694,-520,575,126,448],      // CIRCUMFLEX ACCENT
+  0x5F: [-10,61,575,0,574],          // LOW LINE
+  0x60: [706,-503,575,114,338],      // GRAVE ACCENT
+  0x61: [453,6,559,32,558],          // LATIN SMALL LETTER A
+  0x62: [694,6,639,29,600],          // LATIN SMALL LETTER B
+  0x63: [453,6,511,39,478],          // LATIN SMALL LETTER C
+  0x64: [694,6,639,38,609],          // LATIN SMALL LETTER D
+  0x65: [452,6,527,32,494],          // LATIN SMALL LETTER E
+  0x66: [700,0,351,40,452],          // LATIN SMALL LETTER F
+  0x67: [455,201,575,30,558],        // LATIN SMALL LETTER G
+  0x68: [694,0,639,37,623],          // LATIN SMALL LETTER H
+  0x69: [695,0,319,40,294],          // LATIN SMALL LETTER I
+  0x6A: [695,200,351,-71,274],       // LATIN SMALL LETTER J
+  0x6B: [694,0,607,29,587],          // LATIN SMALL LETTER K
+  0x6C: [694,0,319,40,301],          // LATIN SMALL LETTER L
+  0x6D: [450,0,958,37,942],          // LATIN SMALL LETTER M
+  0x6E: [450,0,639,37,623],          // LATIN SMALL LETTER N
+  0x6F: [452,5,575,32,542],          // LATIN SMALL LETTER O
+  0x70: [450,194,639,29,600],        // LATIN SMALL LETTER P
+  0x71: [450,194,607,38,609],        // LATIN SMALL LETTER Q
+  0x72: [450,0,474,29,442],          // LATIN SMALL LETTER R
+  0x73: [453,6,454,38,414],          // LATIN SMALL LETTER S
+  0x74: [635,5,447,21,382],          // LATIN SMALL LETTER T
+  0x75: [450,6,639,37,623],          // LATIN SMALL LETTER U
+  0x76: [444,3,607,26,580],          // LATIN SMALL LETTER V
+  0x77: [444,4,831,25,805],          // LATIN SMALL LETTER W
+  0x78: [444,0,607,21,586],          // LATIN SMALL LETTER X
+  0x79: [444,200,607,23,580],        // LATIN SMALL LETTER Y
+  0x7A: [444,0,511,32,462],          // LATIN SMALL LETTER Z
+  0x7B: [750,250,575,70,504],        // LEFT CURLY BRACKET
+  0x7C: [750,249,319,129,190],       // VERTICAL LINE
+  0x7D: [750,250,575,70,504],        // RIGHT CURLY BRACKET
+  0x7E: [344,-202,575,96,478],       // TILDE
+  0x393: [680,0,692,39,643],         // GREEK CAPITAL LETTER GAMMA
+  0x394: [698,0,958,56,901],         // GREEK CAPITAL LETTER DELTA
+  0x398: [696,10,894,64,829],        // GREEK CAPITAL LETTER THETA
+  0x39B: [698,0,806,40,765],         // GREEK CAPITAL LETTER LAMDA
+  0x39E: [675,0,767,48,718],         // GREEK CAPITAL LETTER XI
+  0x3A0: [680,0,900,39,860],         // GREEK CAPITAL LETTER PI
+  0x3A3: [686,0,831,63,766],         // GREEK CAPITAL LETTER SIGMA
+  0x3A5: [697,0,894,64,829],         // GREEK CAPITAL LETTER UPSILON
+  0x3A6: [686,0,831,64,766],         // GREEK CAPITAL LETTER PHI
+  0x3A8: [686,0,894,64,829],         // GREEK CAPITAL LETTER PSI
+  0x3A9: [696,0,831,51,779]          // GREEK CAPITAL LETTER OMEGA
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Main-bold"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Bold/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MathOperators.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MathOperators.js
new file mode 100644
index 0000000..af41e1f
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MathOperators.js
@@ -0,0 +1,94 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MathOperators.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'],
+  {
+    0x2200: [694,16,639,1,640],        // FOR ALL
+    0x2202: [710,17,628,60,657],       // PARTIAL DIFFERENTIAL
+    0x2203: [694,-1,639,64,574],       // THERE EXISTS
+    0x2205: [767,73,575,46,528],       // EMPTY SET
+    0x2207: [686,24,958,56,901],       // NABLA
+    0x2208: [587,86,767,97,670],       // ELEMENT OF
+    0x2209: [711,210,767,97,670],      // stix-negated (vert) set membership, variant
+    0x220B: [587,86,767,96,670],       // CONTAINS AS MEMBER
+    0x2212: [281,-221,894,96,797],     // MINUS SIGN
+    0x2213: [537,227,894,64,829],      // MINUS-OR-PLUS SIGN
+    0x2215: [750,250,575,63,511],      // DIVISION SLASH
+    0x2216: [750,250,575,63,511],      // SET MINUS
+    0x2217: [472,-28,575,73,501],      // ASTERISK OPERATOR
+    0x2218: [474,-28,575,64,510],      // RING OPERATOR
+    0x2219: [474,-28,575,64,510],      // BULLET OPERATOR
+    0x221A: [820,180,958,78,988],      // SQUARE ROOT
+    0x221D: [451,8,894,65,830],        // PROPORTIONAL TO
+    0x221E: [452,8,1150,65,1084],      // INFINITY
+    0x2220: [714,0,722,55,676],        // ANGLE
+    0x2223: [750,249,319,129,190],     // DIVIDES
+    0x2225: [750,248,575,145,430],     // PARALLEL TO
+    0x2227: [604,17,767,64,702],       // LOGICAL AND
+    0x2228: [604,16,767,64,702],       // LOGICAL OR
+    0x2229: [603,16,767,64,702],       // stix-intersection, serifs
+    0x222A: [604,16,767,64,702],       // stix-union, serifs
+    0x222B: [711,211,569,64,632],      // INTEGRAL
+    0x223C: [391,-109,894,64,828],     // TILDE OPERATOR
+    0x2240: [583,82,319,64,254],       // WREATH PRODUCT
+    0x2243: [502,3,894,64,829],        // ASYMPTOTICALLY EQUAL TO
+    0x2245: [638,27,1000,64,829],      // APPROXIMATELY EQUAL TO
+    0x2248: [524,-32,894,64,829],      // ALMOST EQUAL TO
+    0x224D: [533,32,894,64,829],       // EQUIVALENT TO
+    0x2250: [721,-109,894,64,829],     // APPROACHES THE LIMIT
+    0x2260: [711,210,894,64,829],      // stix-not (vert) equals
+    0x2261: [505,3,894,64,829],        // IDENTICAL TO
+    0x2264: [697,199,894,96,797],      // LESS-THAN OR EQUAL TO
+    0x2265: [697,199,894,96,797],      // GREATER-THAN OR EQUAL TO
+    0x226A: [617,116,1150,64,1085],    // MUCH LESS-THAN
+    0x226B: [618,116,1150,64,1085],    // MUCH GREATER-THAN
+    0x227A: [585,86,894,96,797],       // PRECEDES
+    0x227B: [586,86,894,96,797],       // SUCCEEDS
+    0x2282: [587,85,894,96,797],       // SUBSET OF
+    0x2283: [587,86,894,96,796],       // SUPERSET OF
+    0x2286: [697,199,894,96,797],      // SUBSET OF OR EQUAL TO
+    0x2287: [697,199,894,96,796],      // SUPERSET OF OR EQUAL TO
+    0x228E: [604,16,767,64,702],       // MULTISET UNION
+    0x2291: [697,199,894,96,828],      // SQUARE IMAGE OF OR EQUAL TO
+    0x2292: [697,199,894,66,797],      // SQUARE ORIGINAL OF OR EQUAL TO
+    0x2293: [604,-1,767,70,696],       // stix-square intersection, serifs
+    0x2294: [604,-1,767,70,696],       // stix-square union, serifs
+    0x2295: [632,132,894,64,828],      // stix-circled plus (with rim)
+    0x2296: [632,132,894,64,828],      // CIRCLED MINUS
+    0x2297: [632,132,894,64,828],      // stix-circled times (with rim)
+    0x2298: [632,132,894,64,828],      // CIRCLED DIVISION SLASH
+    0x2299: [632,132,894,64,828],      // CIRCLED DOT OPERATOR
+    0x22A2: [693,-1,703,65,637],       // RIGHT TACK
+    0x22A3: [693,-1,703,64,638],       // LEFT TACK
+    0x22A4: [694,-1,894,64,829],       // DOWN TACK
+    0x22A5: [693,-1,894,65,829],       // UP TACK
+    0x22A8: [750,249,974,129,918],     // TRUE
+    0x22C4: [523,21,575,15,560],       // DIAMOND OPERATOR
+    0x22C5: [336,-166,319,74,245],     // DOT OPERATOR
+    0x22C6: [502,0,575,24,550],        // STAR OPERATOR
+    0x22C8: [540,39,1000,33,967],      // BOWTIE
+    0x22EE: [951,29,319,74,245],       // VERTICAL ELLIPSIS
+    0x22EF: [336,-166,1295,74,1221],   // MIDLINE HORIZONTAL ELLIPSIS
+    0x22F1: [871,-101,1323,129,1194]   // DOWN RIGHT DIAGONAL ELLIPSIS
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Bold/MathOperators.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscMathSymbolsA.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscMathSymbolsA.js
new file mode 100644
index 0000000..2634de4
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscMathSymbolsA.js
@@ -0,0 +1,29 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscMathSymbolsA.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'],
+  {
+    0x27E8: [750,249,447,127,382],     // MATHEMATICAL LEFT ANGLE BRACKET
+    0x27E9: [750,249,447,64,319]       // MATHEMATICAL RIGHT ANGLE BRACKET
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Bold/MiscMathSymbolsA.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js
new file mode 100644
index 0000000..fc8aac1
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js
@@ -0,0 +1,34 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'],
+  {
+    0x2660: [719,129,894,64,829],      // BLACK SPADE SUIT
+    0x2661: [711,24,894,65,828],       // WHITE HEART SUIT
+    0x2662: [719,154,894,64,828],      // WHITE DIAMOND SUIT
+    0x2663: [719,129,894,32,861],      // BLACK CLUB SUIT
+    0x266D: [750,17,447,64,381],       // MUSIC FLAT SIGN
+    0x266E: [741,223,447,57,389],      // MUSIC NATURAL SIGN
+    0x266F: [724,224,447,63,382]       // MUSIC SHARP SIGN
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Bold/MiscSymbols.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js
new file mode 100644
index 0000000..f83218a
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js
@@ -0,0 +1,33 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'],
+  {
+    0x2308: [750,248,511,194,493],     // LEFT CEILING
+    0x2309: [750,248,511,17,317],      // RIGHT CEILING
+    0x230A: [749,248,511,194,493],     // LEFT FLOOR
+    0x230B: [749,248,511,17,317],      // RIGHT FLOOR
+    0x2322: [405,-108,1150,65,1084],   // stix-small down curve
+    0x2323: [392,-126,1150,64,1085]    // stix-small up curve
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Bold/MiscTechnical.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SpacingModLetters.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SpacingModLetters.js
new file mode 100644
index 0000000..1fb362b
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SpacingModLetters.js
@@ -0,0 +1,36 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SpacingModLetters.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'],
+  {
+    0x2C6: [694,-520,575,126,448],     // MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x2C7: [660,-515,575,130,444],     // CARON
+    0x2C9: [607,-540,575,80,494],      // MODIFIER LETTER MACRON
+    0x2CA: [706,-503,575,236,460],     // MODIFIER LETTER ACUTE ACCENT
+    0x2CB: [706,-503,575,114,338],     // MODIFIER LETTER GRAVE ACCENT
+    0x2D8: [694,-500,575,102,472],     // BREVE
+    0x2D9: [695,-525,575,202,372],     // DOT ABOVE
+    0x2DA: [702,-536,575,160,414],     // RING ABOVE
+    0x2DC: [694,-552,575,96,478]       // SMALL TILDE
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Bold/SpacingModLetters.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SuppMathOperators.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SuppMathOperators.js
new file mode 100644
index 0000000..ea06bf3
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SuppMathOperators.js
@@ -0,0 +1,30 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SuppMathOperators.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'],
+  {
+    0x2A3F: [686,0,900,39,860],        // AMALGAMATION OR COPRODUCT
+    0x2AAF: [696,199,894,96,797],      // PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
+    0x2AB0: [697,199,894,96,797]       // SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Bold/SuppMathOperators.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SupplementalArrowsA.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SupplementalArrowsA.js
new file mode 100644
index 0000000..f56ad49
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SupplementalArrowsA.js
@@ -0,0 +1,34 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SupplementalArrowsA.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-bold'],
+  {
+    0x27F5: [518,17,1805,64,1741],     // LONG LEFTWARDS ARROW
+    0x27F6: [518,17,1833,96,1773],     // LONG RIGHTWARDS ARROW
+    0x27F7: [518,17,2126,64,2061],     // LONG LEFT RIGHT ARROW
+    0x27F8: [547,46,1868,64,1804],     // LONG LEFTWARDS DOUBLE ARROW
+    0x27F9: [547,46,1870,64,1804],     // LONG RIGHTWARDS DOUBLE ARROW
+    0x27FA: [547,46,2126,64,2060],     // LONG LEFT RIGHT DOUBLE ARROW
+    0x27FC: [518,17,1833,65,1773]      // LONG RIGHTWARDS ARROW FROM BAR
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Bold/SupplementalArrowsA.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Italic/CombDiacritMarks.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Italic/CombDiacritMarks.js
new file mode 100644
index 0000000..f6548cd
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Italic/CombDiacritMarks.js
@@ -0,0 +1,38 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/CombDiacritMarks.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-italic'],
+  {
+    0x300: [697,-500,0,-222,-74],      // COMBINING GRAVE ACCENT
+    0x301: [697,-500,0,-173,39],       // COMBINING ACUTE ACCENT
+    0x302: [694,-527,0,-251,17],       // COMBINING CIRCUMFLEX ACCENT
+    0x303: [668,-558,0,-265,60],       // COMBINING TILDE
+    0x304: [589,-544,0,-282,54],       // COMBINING MACRON
+    0x306: [694,-515,0,-237,62],       // COMBINING BREVE
+    0x307: [669,-548,0,-165,-41],      // COMBINING DOT ABOVE
+    0x308: [669,-554,0,-251,45],       // COMBINING DIAERESIS
+    0x30A: [716,-542,0,-199,3],        // COMBINING RING ABOVE
+    0x30B: [697,-503,0,-248,65],       // COMBINING DOUBLE ACUTE ACCENT
+    0x30C: [638,-502,0,-236,29]        // COMBINING CARON
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Italic/CombDiacritMarks.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Italic/GeneralPunctuation.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Italic/GeneralPunctuation.js
new file mode 100644
index 0000000..977bda7
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Italic/GeneralPunctuation.js
@@ -0,0 +1,33 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/GeneralPunctuation.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-italic'],
+  {
+    0x2013: [285,-248,511,91,554],     // EN DASH
+    0x2014: [285,-248,1022,117,1038],  // EM DASH
+    0x2018: [694,-379,307,197,362],    // LEFT SINGLE QUOTATION MARK
+    0x2019: [694,-379,307,213,377],    // RIGHT SINGLE QUOTATION MARK
+    0x201C: [694,-379,514,243,606],    // LEFT DOUBLE QUOTATION MARK
+    0x201D: [694,-379,514,176,538]     // RIGHT DOUBLE QUOTATION MARK
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Italic/GeneralPunctuation.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Latin1Supplement.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Latin1Supplement.js
new file mode 100644
index 0000000..e605464
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Latin1Supplement.js
@@ -0,0 +1,28 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Latin1Supplement.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-italic'],
+  {
+    0xA0: [0,0,250,0,0]                // NO-BREAK SPACE
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Italic/Latin1Supplement.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Italic/LetterlikeSymbols.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Italic/LetterlikeSymbols.js
new file mode 100644
index 0000000..3add7ff
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Italic/LetterlikeSymbols.js
@@ -0,0 +1,28 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/LetterlikeSymbols.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-italic'],
+  {
+    0x210F: [695,13,540,42,562]        // stix-/hbar - Planck's over 2pi
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Italic/LetterlikeSymbols.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Main.js
new file mode 100644
index 0000000..b95e791
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Main.js
@@ -0,0 +1,138 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main-italic'] = {
+  directory: 'Main/Italic',
+  family: 'MathJax_Main',
+  style: 'italic',
+  testString: "MathJax Main ^ \u210F \u2223",
+  Ranges: [
+    [0xA0,0xFF,"Latin1Supplement"],
+    [0x300,0x36F,"CombDiacritMarks"],
+    [0x2000,0x206F,"GeneralPunctuation"],
+    [0x2100,0x214F,"LetterlikeSymbols"]
+  ],
+  0x20: [0,0,250,0,0],               // SPACE
+  0x21: [716,0,307,107,380],         // EXCLAMATION MARK
+  0x22: [694,-379,514,176,538],      // QUOTATION MARK
+  0x23: [694,194,818,115,828],       // NUMBER SIGN
+  0x25: [750,56,818,145,847],        // PERCENT SIGN
+  0x26: [716,22,767,127,802],        // AMPERSAND
+  0x27: [694,-379,307,213,377],      // APOSTROPHE
+  0x28: [750,250,409,144,517],       // LEFT PARENTHESIS
+  0x29: [750,250,409,17,390],        // RIGHT PARENTHESIS
+  0x2A: [750,-320,511,195,584],      // ASTERISK
+  0x2B: [557,57,767,139,753],        // PLUS SIGN
+  0x2C: [121,194,307,69,232],        // COMMA
+  0x2D: [251,-180,358,84,341],       // HYPHEN-MINUS
+  0x2E: [121,0,307,107,231],         // FULL STOP
+  0x2F: [750,250,511,19,617],        // SOLIDUS
+  0x30: [665,21,511,110,562],        // DIGIT ZERO
+  0x31: [666,0,511,110,468],         // DIGIT ONE
+  0x32: [666,22,511,76,551],         // DIGIT TWO
+  0x33: [666,22,511,96,562],         // DIGIT THREE
+  0x34: [666,194,511,46,478],        // DIGIT FOUR
+  0x35: [666,22,511,106,567],        // DIGIT FIVE
+  0x36: [665,22,511,120,565],        // DIGIT SIX
+  0x37: [666,22,511,136,634],        // DIGIT SEVEN
+  0x38: [666,21,511,99,553],         // DIGIT EIGHT
+  0x39: [666,22,511,107,553],        // DIGIT NINE
+  0x3A: [431,0,307,107,308],         // COLON
+  0x3B: [431,194,307,70,308],        // SEMICOLON
+  0x3D: [367,-133,767,116,776],      // EQUALS SIGN
+  0x3F: [716,0,511,195,551],         // QUESTION MARK
+  0x40: [705,11,767,152,789],        // COMMERCIAL AT
+  0x41: [716,0,743,58,696],          // LATIN CAPITAL LETTER A
+  0x42: [683,0,704,57,732],          // LATIN CAPITAL LETTER B
+  0x43: [705,21,716,150,812],        // LATIN CAPITAL LETTER C
+  0x44: [683,0,755,56,775],          // LATIN CAPITAL LETTER D
+  0x45: [680,0,678,54,743],          // LATIN CAPITAL LETTER E
+  0x46: [680,-1,653,54,731],         // LATIN CAPITAL LETTER F
+  0x47: [705,22,774,150,812],        // LATIN CAPITAL LETTER G
+  0x48: [683,0,743,54,860],          // LATIN CAPITAL LETTER H
+  0x49: [683,0,386,49,508],          // LATIN CAPITAL LETTER I
+  0x4A: [683,21,525,78,622],         // LATIN CAPITAL LETTER J
+  0x4B: [683,0,769,54,859],          // LATIN CAPITAL LETTER K
+  0x4C: [683,0,627,54,628],          // LATIN CAPITAL LETTER L
+  0x4D: [683,0,897,58,1010],         // LATIN CAPITAL LETTER M
+  0x4E: [683,0,743,54,860],          // LATIN CAPITAL LETTER N
+  0x4F: [704,22,767,149,788],        // LATIN CAPITAL LETTER O
+  0x50: [683,0,678,55,729],          // LATIN CAPITAL LETTER P
+  0x51: [704,194,767,149,788],       // LATIN CAPITAL LETTER Q
+  0x52: [683,22,729,55,723],         // LATIN CAPITAL LETTER R
+  0x53: [705,22,562,74,633],         // LATIN CAPITAL LETTER S
+  0x54: [677,0,716,171,806],         // LATIN CAPITAL LETTER T
+  0x55: [683,22,743,194,860],        // LATIN CAPITAL LETTER U
+  0x56: [683,22,743,205,868],        // LATIN CAPITAL LETTER V
+  0x57: [683,22,999,205,1124],       // LATIN CAPITAL LETTER W
+  0x58: [683,0,743,50,825],          // LATIN CAPITAL LETTER X
+  0x59: [683,0,743,198,875],         // LATIN CAPITAL LETTER Y
+  0x5A: [683,0,613,80,704],          // LATIN CAPITAL LETTER Z
+  0x5B: [750,250,307,73,446],        // LEFT SQUARE BRACKET
+  0x5D: [750,250,307,-14,359],       // RIGHT SQUARE BRACKET
+  0x5E: [694,-527,511,260,528],      // CIRCUMFLEX ACCENT
+  0x5F: [-25,62,511,91,554],         // LOW LINE
+  0x61: [442,11,511,101,543],        // LATIN SMALL LETTER A
+  0x62: [694,11,460,108,467],        // LATIN SMALL LETTER B
+  0x63: [441,10,460,103,469],        // LATIN SMALL LETTER C
+  0x64: [694,11,511,101,567],        // LATIN SMALL LETTER D
+  0x65: [442,10,460,107,470],        // LATIN SMALL LETTER E
+  0x66: [705,204,307,-23,450],       // LATIN SMALL LETTER F
+  0x67: [442,205,460,46,494],        // LATIN SMALL LETTER G
+  0x68: [694,11,511,69,544],         // LATIN SMALL LETTER H
+  0x69: [656,10,307,75,340],         // LATIN SMALL LETTER I
+  0x6A: [656,204,307,-32,364],       // LATIN SMALL LETTER J
+  0x6B: [694,11,460,69,498],         // LATIN SMALL LETTER K
+  0x6C: [694,11,256,87,312],         // LATIN SMALL LETTER L
+  0x6D: [442,11,818,75,851],         // LATIN SMALL LETTER M
+  0x6E: [442,11,562,75,595],         // LATIN SMALL LETTER N
+  0x6F: [442,11,511,103,517],        // LATIN SMALL LETTER O
+  0x70: [442,194,511,6,518],         // LATIN SMALL LETTER P
+  0x71: [442,194,460,101,504],       // LATIN SMALL LETTER Q
+  0x72: [442,11,422,75,484],         // LATIN SMALL LETTER R
+  0x73: [442,11,409,76,418],         // LATIN SMALL LETTER S
+  0x74: [626,11,332,87,373],         // LATIN SMALL LETTER T
+  0x75: [441,11,537,75,570],         // LATIN SMALL LETTER U
+  0x76: [443,10,460,75,492],         // LATIN SMALL LETTER V
+  0x77: [443,11,664,75,696],         // LATIN SMALL LETTER W
+  0x78: [442,11,464,58,513],         // LATIN SMALL LETTER X
+  0x79: [441,205,486,75,522],        // LATIN SMALL LETTER Y
+  0x7A: [442,11,409,54,466],         // LATIN SMALL LETTER Z
+  0x7E: [318,-208,511,246,571],      // TILDE
+  0xA3: [714,11,769,88,699],         // POUND SIGN
+  0x131: [441,10,307,75,340],        // LATIN SMALL LETTER DOTLESS I
+  0x237: [442,204,332,-32,327],      // LATIN SMALL LETTER DOTLESS J
+  0x393: [680,0,627,54,705],         // GREEK CAPITAL LETTER GAMMA
+  0x394: [716,0,818,70,751],         // GREEK CAPITAL LETTER DELTA
+  0x398: [704,22,767,149,788],       // GREEK CAPITAL LETTER THETA
+  0x39B: [716,0,692,58,646],         // GREEK CAPITAL LETTER LAMDA
+  0x39E: [677,0,664,74,754],         // GREEK CAPITAL LETTER XI
+  0x3A0: [680,0,743,54,859],         // GREEK CAPITAL LETTER PI
+  0x3A3: [683,0,716,80,782],         // GREEK CAPITAL LETTER SIGMA
+  0x3A5: [705,0,767,213,832],        // GREEK CAPITAL LETTER UPSILON
+  0x3A6: [683,0,716,159,728],        // GREEK CAPITAL LETTER PHI
+  0x3A8: [683,0,767,207,824],        // GREEK CAPITAL LETTER PSI
+  0x3A9: [705,0,716,100,759]         // GREEK CAPITAL LETTER OMEGA
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Main-italic"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Italic/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Regular/CombDiacritMarks.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Regular/CombDiacritMarks.js
new file mode 100644
index 0000000..ac21556
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Regular/CombDiacritMarks.js
@@ -0,0 +1,39 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/CombDiacritMarks.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main'],
+  {
+    0x300: [699,-505,0,-394,-205],     // COMBINING GRAVE ACCENT
+    0x301: [699,-505,0,-297,-107],     // COMBINING ACUTE ACCENT
+    0x302: [694,-531,0,-388,-113],     // COMBINING CIRCUMFLEX ACCENT
+    0x303: [668,-565,0,-417,-84],      // COMBINING TILDE
+    0x304: [590,-544,0,-431,-70],      // COMBINING MACRON
+    0x306: [694,-515,0,-408,-93],      // COMBINING BREVE
+    0x307: [669,-549,0,-310,-191],     // COMBINING DOT ABOVE
+    0x308: [669,-554,0,-405,-96],      // COMBINING DIAERESIS
+    0x30A: [715,-542,0,-353,-148],     // COMBINING RING ABOVE
+    0x30B: [701,-510,0,-378,-80],      // COMBINING DOUBLE ACUTE ACCENT
+    0x30C: [644,-513,0,-386,-115],     // COMBINING CARON
+    0x338: [716,215,0,-639,-140]       // COMBINING LONG SOLIDUS OVERLAY
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Regular/CombDiacritMarks.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Regular/GeometricShapes.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Regular/GeometricShapes.js
new file mode 100644
index 0000000..b7c72e7
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Regular/GeometricShapes.js
@@ -0,0 +1,32 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/GeometricShapes.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main'],
+  {
+    0x25B3: [716,0,889,59,828],        // WHITE UP-POINTING TRIANGLE
+    0x25B9: [505,5,500,26,474],        // WHITE RIGHT-POINTING SMALL TRIANGLE
+    0x25BD: [500,215,889,59,828],      // WHITE DOWN-POINTING TRIANGLE
+    0x25C3: [505,5,500,26,473],        // WHITE LEFT-POINTING SMALL TRIANGLE
+    0x25EF: [715,215,1000,56,944]      // LARGE CIRCLE
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Regular/GeometricShapes.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Regular/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Regular/Main.js
new file mode 100644
index 0000000..849992d
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Regular/Main.js
@@ -0,0 +1,305 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main'] = {
+  directory: 'Main/Regular',
+  family: 'MathJax_Main',
+  testString: "MathJax Main ^ \u210F \u2223",
+  skew: {
+    0x131: 0.0278,
+    0x237: 0.0833,
+    0x2113: 0.111,
+    0x2118: 0.111,
+    0x2202: 0.0833
+  },
+  Ranges: [
+    [0x2B0,0x2FF,"SpacingModLetters"],
+    [0x300,0x36F,"CombDiacritMarks"],
+    [0x25A0,0x25FF,"GeometricShapes"],
+    [0x2600,0x26FF,"MiscSymbols"]
+  ],
+  0x20: [0,0,250,0,0],               // SPACE
+  0x21: [716,-1,278,78,199],         // EXCLAMATION MARK
+  0x22: [694,-379,500,34,372],       // QUOTATION MARK
+  0x23: [694,194,833,56,777],        // NUMBER SIGN
+  0x24: [750,56,500,55,444],         // DOLLAR SIGN
+  0x25: [750,56,833,56,776],         // PERCENT SIGN
+  0x26: [716,22,778,42,727],         // AMPERSAND
+  0x27: [694,-379,278,78,212],       // APOSTROPHE
+  0x28: [750,250,389,94,333],        // LEFT PARENTHESIS
+  0x29: [750,250,389,55,294],        // RIGHT PARENTHESIS
+  0x2A: [750,-320,500,64,435],       // ASTERISK
+  0x2B: [583,82,778,56,722],         // PLUS SIGN
+  0x2C: [121,194,278,78,210],        // COMMA
+  0x2D: [252,-179,333,11,277],       // HYPHEN-MINUS
+  0x2E: [120,0,278,78,199],          // FULL STOP
+  0x2F: [750,250,500,56,445],        // SOLIDUS
+  0x30: [666,22,500,39,460],         // DIGIT ZERO
+  0x31: [666,0,500,83,427],          // DIGIT ONE
+  0x32: [666,0,500,50,449],          // DIGIT TWO
+  0x33: [665,22,500,42,457],         // DIGIT THREE
+  0x34: [677,0,500,28,471],          // DIGIT FOUR
+  0x35: [666,22,500,50,449],         // DIGIT FIVE
+  0x36: [666,22,500,42,456],         // DIGIT SIX
+  0x37: [676,22,500,55,485],         // DIGIT SEVEN
+  0x38: [666,22,500,43,457],         // DIGIT EIGHT
+  0x39: [666,22,500,42,456],         // DIGIT NINE
+  0x3A: [430,0,278,78,199],          // COLON
+  0x3B: [430,194,278,78,202],        // SEMICOLON
+  0x3C: [540,40,778,83,694],         // LESS-THAN SIGN
+  0x3D: [367,-133,778,56,722],       // EQUALS SIGN
+  0x3E: [540,40,778,83,694],         // GREATER-THAN SIGN
+  0x3F: [705,-1,472,55,416],         // QUESTION MARK
+  0x40: [705,11,778,56,722],         // COMMERCIAL AT
+  0x41: [716,0,750,32,717],          // LATIN CAPITAL LETTER A
+  0x42: [683,0,708,28,651],          // LATIN CAPITAL LETTER B
+  0x43: [705,21,722,56,666],         // LATIN CAPITAL LETTER C
+  0x44: [683,0,764,27,708],          // LATIN CAPITAL LETTER D
+  0x45: [680,0,681,25,652],          // LATIN CAPITAL LETTER E
+  0x46: [680,0,653,25,610],          // LATIN CAPITAL LETTER F
+  0x47: [705,22,785,56,735],         // LATIN CAPITAL LETTER G
+  0x48: [683,0,750,25,724],          // LATIN CAPITAL LETTER H
+  0x49: [683,0,361,21,339],          // LATIN CAPITAL LETTER I
+  0x4A: [683,22,514,25,465],         // LATIN CAPITAL LETTER J
+  0x4B: [683,0,778,25,736],          // LATIN CAPITAL LETTER K
+  0x4C: [683,0,625,25,582],          // LATIN CAPITAL LETTER L
+  0x4D: [683,0,917,29,887],          // LATIN CAPITAL LETTER M
+  0x4E: [683,0,750,25,724],          // LATIN CAPITAL LETTER N
+  0x4F: [705,22,778,56,722],         // LATIN CAPITAL LETTER O
+  0x50: [683,0,681,27,624],          // LATIN CAPITAL LETTER P
+  0x51: [705,193,778,56,728],        // LATIN CAPITAL LETTER Q
+  0x52: [683,22,736,27,732],         // LATIN CAPITAL LETTER R
+  0x53: [705,22,556,55,500],         // LATIN CAPITAL LETTER S
+  0x54: [677,0,722,36,685],          // LATIN CAPITAL LETTER T
+  0x55: [683,22,750,25,724],         // LATIN CAPITAL LETTER U
+  0x56: [683,22,750,19,730],         // LATIN CAPITAL LETTER V
+  0x57: [683,22,1028,18,1009],       // LATIN CAPITAL LETTER W
+  0x58: [683,0,750,23,726],          // LATIN CAPITAL LETTER X
+  0x59: [683,0,750,11,738],          // LATIN CAPITAL LETTER Y
+  0x5A: [683,0,611,55,560],          // LATIN CAPITAL LETTER Z
+  0x5B: [750,250,278,118,255],       // LEFT SQUARE BRACKET
+  0x5C: [750,250,500,56,444],        // REVERSE SOLIDUS
+  0x5D: [750,250,278,22,159],        // RIGHT SQUARE BRACKET
+  0x5E: [694,-531,500,112,387],      // CIRCUMFLEX ACCENT
+  0x5F: [-25,62,500,0,499],          // LOW LINE
+  0x60: [699,-505,500,106,295],      // GRAVE ACCENT
+  0x61: [448,11,500,34,493],         // LATIN SMALL LETTER A
+  0x62: [694,11,556,20,522],         // LATIN SMALL LETTER B
+  0x63: [448,11,444,34,415],         // LATIN SMALL LETTER C
+  0x64: [694,11,556,34,535],         // LATIN SMALL LETTER D
+  0x65: [448,11,444,28,415],         // LATIN SMALL LETTER E
+  0x66: [705,0,306,26,372],          // LATIN SMALL LETTER F
+  0x67: [453,206,500,29,485],        // LATIN SMALL LETTER G
+  0x68: [694,0,556,25,542],          // LATIN SMALL LETTER H
+  0x69: [669,0,278,26,255],          // LATIN SMALL LETTER I
+  0x6A: [669,205,306,-55,218],       // LATIN SMALL LETTER J
+  0x6B: [694,0,528,20,511],          // LATIN SMALL LETTER K
+  0x6C: [694,0,278,26,263],          // LATIN SMALL LETTER L
+  0x6D: [442,0,833,25,819],          // LATIN SMALL LETTER M
+  0x6E: [442,0,556,25,542],          // LATIN SMALL LETTER N
+  0x6F: [448,10,500,28,471],         // LATIN SMALL LETTER O
+  0x70: [442,194,556,20,522],        // LATIN SMALL LETTER P
+  0x71: [442,194,528,33,535],        // LATIN SMALL LETTER Q
+  0x72: [442,0,392,20,364],          // LATIN SMALL LETTER R
+  0x73: [448,11,394,33,359],         // LATIN SMALL LETTER S
+  0x74: [615,10,389,18,333],         // LATIN SMALL LETTER T
+  0x75: [442,11,556,25,542],         // LATIN SMALL LETTER U
+  0x76: [431,11,528,19,508],         // LATIN SMALL LETTER V
+  0x77: [431,11,722,18,703],         // LATIN SMALL LETTER W
+  0x78: [431,0,528,11,516],          // LATIN SMALL LETTER X
+  0x79: [431,204,528,19,508],        // LATIN SMALL LETTER Y
+  0x7A: [431,0,444,28,401],          // LATIN SMALL LETTER Z
+  0x7B: [750,250,500,65,434],        // LEFT CURLY BRACKET
+  0x7C: [750,249,278,119,159],       // VERTICAL LINE
+  0x7D: [750,250,500,65,434],        // RIGHT CURLY BRACKET
+  0x7E: [318,-215,500,83,416],       // TILDE
+  0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+  0xA8: [669,-554,500,95,404],       // DIAERESIS
+  0xAC: [356,-89,667,56,611],        // NOT SIGN
+  0xAF: [590,-544,500,69,430],       // MACRON
+  0xB0: [715,-542,500,147,352],      // DEGREE SIGN
+  0xB1: [666,0,778,56,722],          // PLUS-MINUS SIGN
+  0xB4: [699,-505,500,203,393],      // ACUTE ACCENT
+  0xD7: [491,-9,778,147,630],        // MULTIPLICATION SIGN
+  0xF7: [537,36,778,56,721],         // DIVISION SIGN
+  0x131: [442,0,278,26,255],         // LATIN SMALL LETTER DOTLESS I
+  0x237: [442,205,306,-55,218],      // LATIN SMALL LETTER DOTLESS J
+  0x2C6: [694,-531,500,112,387],     // MODIFIER LETTER CIRCUMFLEX ACCENT
+  0x2C7: [644,-513,500,114,385],     // CARON
+  0x2C9: [590,-544,500,69,430],      // MODIFIER LETTER MACRON
+  0x2CA: [699,-505,500,203,393],     // MODIFIER LETTER ACUTE ACCENT
+  0x2CB: [699,-505,500,106,295],     // MODIFIER LETTER GRAVE ACCENT
+  0x2D8: [694,-515,500,92,407],      // BREVE
+  0x2D9: [669,-549,500,190,309],     // DOT ABOVE
+  0x2DC: [668,-565,500,83,416],      // SMALL TILDE
+  0x393: [680,0,625,25,582],         // GREEK CAPITAL LETTER GAMMA
+  0x394: [716,0,833,46,786],         // GREEK CAPITAL LETTER DELTA
+  0x398: [705,22,778,56,722],        // GREEK CAPITAL LETTER THETA
+  0x39B: [716,0,694,32,661],         // GREEK CAPITAL LETTER LAMDA
+  0x39E: [677,0,667,42,624],         // GREEK CAPITAL LETTER XI
+  0x3A0: [680,0,750,25,724],         // GREEK CAPITAL LETTER PI
+  0x3A3: [683,0,722,55,666],         // GREEK CAPITAL LETTER SIGMA
+  0x3A5: [705,0,778,55,722],         // GREEK CAPITAL LETTER UPSILON
+  0x3A6: [683,0,722,56,665],         // GREEK CAPITAL LETTER PHI
+  0x3A8: [683,0,778,55,722],         // GREEK CAPITAL LETTER PSI
+  0x3A9: [704,0,722,44,677],         // GREEK CAPITAL LETTER OMEGA
+  0x2002: [0,0,500,0,0],             // ??
+  0x2003: [0,0,999,0,0],             // ??
+  0x2004: [0,0,333,0,0],             // ??
+  0x2005: [0,0,250,0,0],             // ??
+  0x2006: [0,0,167,0,0],             // ??
+  0x2009: [0,0,167,0,0],             // ??
+  0x200A: [0,0,83,0,0],              // ??
+  0x2013: [285,-248,500,0,499],      // EN DASH
+  0x2014: [285,-248,1000,0,999],     // EM DASH
+  0x2018: [694,-379,278,64,198],     // LEFT SINGLE QUOTATION MARK
+  0x2019: [694,-379,278,78,212],     // RIGHT SINGLE QUOTATION MARK
+  0x201C: [694,-379,500,128,466],    // LEFT DOUBLE QUOTATION MARK
+  0x201D: [694,-379,500,34,372],     // RIGHT DOUBLE QUOTATION MARK
+  0x2020: [705,216,444,55,389],      // DAGGER
+  0x2021: [705,205,444,55,389],      // DOUBLE DAGGER
+  0x2026: [120,0,1172,78,1093],      // HORIZONTAL ELLIPSIS
+  0x2032: [560,-43,275,30,262],      // PRIME
+  0x20D7: [714,-516,0,-471,-29],     // COMBINING RIGHT ARROW ABOVE
+  0x210F: [695,13,540,42,562],       // stix-/hbar - Planck's over 2pi
+  0x2111: [705,10,722,55,693],       // BLACK-LETTER CAPITAL I
+  0x2113: [705,20,417,6,397],        // SCRIPT SMALL L
+  0x2118: [453,216,636,67,625],      // SCRIPT CAPITAL P
+  0x211C: [716,22,722,40,715],       // BLACK-LETTER CAPITAL R
+  0x2135: [694,0,611,55,555],        // ALEF SYMBOL
+  0x2190: [511,11,1000,55,944],      // LEFTWARDS ARROW
+  0x2191: [694,193,500,17,483],      // UPWARDS ARROW
+  0x2192: [511,11,1000,56,944],      // RIGHTWARDS ARROW
+  0x2193: [694,194,500,17,483],      // DOWNWARDS ARROW
+  0x2194: [511,11,1000,55,944],      // LEFT RIGHT ARROW
+  0x2195: [772,272,500,17,483],      // UP DOWN ARROW
+  0x2196: [720,195,1000,29,944],     // NORTH WEST ARROW
+  0x2197: [720,195,1000,55,970],     // NORTH EAST ARROW
+  0x2198: [695,220,1000,55,970],     // SOUTH EAST ARROW
+  0x2199: [695,220,1000,29,944],     // SOUTH WEST ARROW
+  0x21A6: [511,11,1000,55,944],      // RIGHTWARDS ARROW FROM BAR
+  0x21A9: [511,11,1126,55,1070],     // LEFTWARDS ARROW WITH HOOK
+  0x21AA: [511,11,1126,55,1070],     // RIGHTWARDS ARROW WITH HOOK
+  0x21BC: [511,-230,1000,55,944],    // LEFTWARDS HARPOON WITH BARB UPWARDS
+  0x21BD: [270,11,1000,55,944],      // LEFTWARDS HARPOON WITH BARB DOWNWARDS
+  0x21C0: [511,-230,1000,56,944],    // RIGHTWARDS HARPOON WITH BARB UPWARDS
+  0x21C1: [270,11,1000,56,944],      // RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+  0x21CC: [671,11,1000,55,944],      // RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+  0x21D0: [525,24,1000,56,944],      // LEFTWARDS DOUBLE ARROW
+  0x21D1: [694,194,611,31,579],      // UPWARDS DOUBLE ARROW
+  0x21D2: [525,24,1000,56,944],      // RIGHTWARDS DOUBLE ARROW
+  0x21D3: [694,194,611,31,579],      // DOWNWARDS DOUBLE ARROW
+  0x21D4: [526,25,1000,34,966],      // LEFT RIGHT DOUBLE ARROW
+  0x21D5: [772,272,611,31,579],      // UP DOWN DOUBLE ARROW
+  0x2200: [694,22,556,0,556],        // FOR ALL
+  0x2202: [715,22,531,42,566],       // PARTIAL DIFFERENTIAL
+  0x2203: [694,0,556,56,500],        // THERE EXISTS
+  0x2205: [772,78,500,39,460],       // EMPTY SET
+  0x2207: [683,33,833,46,786],       // NABLA
+  0x2208: [540,40,667,84,583],       // ELEMENT OF
+  0x2209: [716,215,667,84,583],      // stix-negated (vert) set membership, variant
+  0x220B: [540,40,667,83,582],       // CONTAINS AS MEMBER
+  0x2212: [270,-230,778,84,694],     // MINUS SIGN
+  0x2213: [500,166,778,56,722],      // MINUS-OR-PLUS SIGN
+  0x2215: [750,250,500,56,445],      // DIVISION SLASH
+  0x2216: [750,250,500,56,444],      // SET MINUS
+  0x2217: [465,-35,500,64,435],      // ASTERISK OPERATOR
+  0x2218: [444,-55,500,55,444],      // RING OPERATOR
+  0x2219: [444,-55,500,55,444],      // BULLET OPERATOR
+  0x221A: [800,200,833,72,853],      // SQUARE ROOT
+  0x221D: [442,11,778,56,722],       // PROPORTIONAL TO
+  0x221E: [442,11,1000,55,944],      // INFINITY
+  0x2220: [694,0,722,55,666],        // ANGLE
+  0x2223: [750,249,278,119,159],     // DIVIDES
+  0x2225: [750,250,500,132,367],     // PARALLEL TO
+  0x2227: [598,22,667,55,611],       // LOGICAL AND
+  0x2228: [598,22,667,55,611],       // LOGICAL OR
+  0x2229: [598,22,667,55,611],       // stix-intersection, serifs
+  0x222A: [598,22,667,55,611],       // stix-union, serifs
+  0x222B: [716,216,417,55,472],      // INTEGRAL
+  0x223C: [367,-133,778,55,722],     // TILDE OPERATOR
+  0x2240: [583,83,278,55,222],       // WREATH PRODUCT
+  0x2243: [464,-36,778,55,722],      // ASYMPTOTICALLY EQUAL TO
+  0x2245: [589,-22,1000,55,722],     // APPROXIMATELY EQUAL TO
+  0x2248: [483,-55,778,55,722],      // ALMOST EQUAL TO
+  0x224D: [484,-16,778,55,722],      // EQUIVALENT TO
+  0x2250: [670,-133,778,56,722],     // APPROACHES THE LIMIT
+  0x2260: [716,215,778,56,722],      // stix-not (vert) equals
+  0x2261: [464,-36,778,56,722],      // IDENTICAL TO
+  0x2264: [636,138,778,83,694],      // LESS-THAN OR EQUAL TO
+  0x2265: [636,138,778,83,694],      // GREATER-THAN OR EQUAL TO
+  0x226A: [568,67,1000,56,944],      // MUCH LESS-THAN
+  0x226B: [567,67,1000,55,944],      // MUCH GREATER-THAN
+  0x227A: [539,41,778,84,694],       // PRECEDES
+  0x227B: [539,41,778,83,694],       // SUCCEEDS
+  0x2282: [540,40,778,84,694],       // SUBSET OF
+  0x2283: [540,40,778,83,693],       // SUPERSET OF
+  0x2286: [636,138,778,84,694],      // SUBSET OF OR EQUAL TO
+  0x2287: [636,138,778,83,693],      // SUPERSET OF OR EQUAL TO
+  0x228E: [598,22,667,55,611],       // MULTISET UNION
+  0x2291: [636,138,778,84,714],      // SQUARE IMAGE OF OR EQUAL TO
+  0x2292: [636,138,778,64,694],      // SQUARE ORIGINAL OF OR EQUAL TO
+  0x2293: [598,0,667,61,605],        // stix-square intersection, serifs
+  0x2294: [598,0,667,61,605],        // stix-square union, serifs
+  0x2295: [583,83,778,56,722],       // stix-circled plus (with rim)
+  0x2296: [583,83,778,56,722],       // CIRCLED MINUS
+  0x2297: [583,83,778,56,722],       // stix-circled times (with rim)
+  0x2298: [583,83,778,56,722],       // CIRCLED DIVISION SLASH
+  0x2299: [583,83,778,56,722],       // CIRCLED DOT OPERATOR
+  0x22A2: [694,0,611,55,555],        // RIGHT TACK
+  0x22A3: [694,0,611,55,555],        // LEFT TACK
+  0x22A4: [668,0,778,55,723],        // DOWN TACK
+  0x22A5: [668,0,778,55,723],        // UP TACK
+  0x22A8: [750,249,867,119,811],     // TRUE
+  0x22C4: [488,-12,500,12,488],      // DIAMOND OPERATOR
+  0x22C5: [310,-190,278,78,199],     // DOT OPERATOR
+  0x22C6: [486,-16,500,3,497],       // STAR OPERATOR
+  0x22C8: [505,5,900,26,873],        // BOWTIE
+  0x22EE: [900,30,278,78,199],       // VERTICAL ELLIPSIS
+  0x22EF: [310,-190,1172,78,1093],   // MIDLINE HORIZONTAL ELLIPSIS
+  0x22F1: [820,-100,1282,133,1148],  // DOWN RIGHT DIAGONAL ELLIPSIS
+  0x2308: [750,250,444,174,422],     // LEFT CEILING
+  0x2309: [750,250,444,21,269],      // RIGHT CEILING
+  0x230A: [750,250,444,174,422],     // LEFT FLOOR
+  0x230B: [750,250,444,21,269],      // RIGHT FLOOR
+  0x2322: [388,-122,1000,55,944],    // stix-small down curve
+  0x2323: [378,-134,1000,55,944],    // stix-small up curve
+  0x23B0: [744,244,412,55,357],      // UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION
+  0x23B1: [744,244,412,56,357],      // UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION
+  0x27E8: [750,250,389,110,333],     // MATHEMATICAL LEFT ANGLE BRACKET
+  0x27E9: [750,250,389,55,278],      // MATHEMATICAL RIGHT ANGLE BRACKET
+  0x27EE: [744,244,412,173,357],     // MATHEMATICAL LEFT FLATTENED PARENTHESIS
+  0x27EF: [744,244,412,56,240],      // MATHEMATICAL RIGHT FLATTENED PARENTHESIS
+  0x27F5: [511,11,1609,55,1525],     // LONG LEFTWARDS ARROW
+  0x27F6: [511,11,1638,84,1553],     // LONG RIGHTWARDS ARROW
+  0x27F7: [511,11,1859,55,1803],     // LONG LEFT RIGHT ARROW
+  0x27F8: [525,24,1609,56,1553],     // LONG LEFTWARDS DOUBLE ARROW
+  0x27F9: [525,24,1638,56,1582],     // LONG RIGHTWARDS DOUBLE ARROW
+  0x27FA: [525,24,1858,56,1802],     // LONG LEFT RIGHT DOUBLE ARROW
+  0x27FC: [511,11,1638,55,1553],     // LONG RIGHTWARDS ARROW FROM BAR
+  0x2A3F: [683,0,750,28,721],        // AMALGAMATION OR COPRODUCT
+  0x2AAF: [636,138,778,84,694],      // PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
+  0x2AB0: [636,138,778,83,694]       // SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Main"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Main/Regular/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js
new file mode 100644
index 0000000..f9e40af
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js
@@ -0,0 +1,34 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main'],
+  {
+    0x2660: [727,130,778,55,723],      // BLACK SPADE SUIT
+    0x2661: [716,33,778,55,723],       // WHITE HEART SUIT
+    0x2662: [727,162,778,55,723],      // WHITE DIAMOND SUIT
+    0x2663: [726,130,778,28,750],      // BLACK CLUB SUIT
+    0x266D: [750,22,389,55,332],       // MUSIC FLAT SIGN
+    0x266E: [734,223,389,65,324],      // MUSIC NATURAL SIGN
+    0x266F: [723,223,389,55,333]       // MUSIC SHARP SIGN
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Regular/MiscSymbols.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Regular/SpacingModLetters.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Regular/SpacingModLetters.js
new file mode 100644
index 0000000..0201683
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Main/Regular/SpacingModLetters.js
@@ -0,0 +1,28 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Main/Regular/SpacingModLetters.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Main'],
+  {
+    0x2DA: [715,-542,500,147,352]      // RING ABOVE
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Main/Regular/SpacingModLetters.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Main.js
new file mode 100644
index 0000000..a70de86
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Main.js
@@ -0,0 +1,206 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Math-bold-italic'] = {
+  directory: 'Math/BoldItalic',
+  family: 'MathJax_Math',
+  weight: 'bold',
+  style: 'italic',
+  testString: "MathJax Math \u03A5",
+  skew: {
+    0x41: 0.16,
+    0x42: 0.0958,
+    0x43: 0.0958,
+    0x44: 0.0639,
+    0x45: 0.0958,
+    0x46: 0.0958,
+    0x47: 0.0958,
+    0x48: 0.0639,
+    0x49: 0.128,
+    0x4A: 0.192,
+    0x4B: 0.0639,
+    0x4C: 0.0319,
+    0x4D: 0.0958,
+    0x4E: 0.0958,
+    0x4F: 0.0958,
+    0x50: 0.0958,
+    0x51: 0.0958,
+    0x52: 0.0958,
+    0x53: 0.0958,
+    0x54: 0.0958,
+    0x55: 0.0319,
+    0x58: 0.0958,
+    0x5A: 0.0958,
+    0x63: 0.0639,
+    0x64: 0.192,
+    0x65: 0.0639,
+    0x66: 0.192,
+    0x67: 0.0319,
+    0x68: -0.0319,
+    0x6C: 0.0958,
+    0x6F: 0.0639,
+    0x70: 0.0958,
+    0x71: 0.0958,
+    0x72: 0.0639,
+    0x73: 0.0639,
+    0x74: 0.0958,
+    0x75: 0.0319,
+    0x76: 0.0319,
+    0x77: 0.0958,
+    0x78: 0.0319,
+    0x79: 0.0639,
+    0x7A: 0.0639,
+    0x393: 0.0958,
+    0x394: 0.192,
+    0x398: 0.0958,
+    0x39B: 0.192,
+    0x39E: 0.0958,
+    0x3A0: 0.0639,
+    0x3A3: 0.0958,
+    0x3A5: 0.0639,
+    0x3A6: 0.0958,
+    0x3A8: 0.0639,
+    0x3A9: 0.0958,
+    0x3B1: 0.0319,
+    0x3B2: 0.0958,
+    0x3B4: 0.0639,
+    0x3B5: 0.0958,
+    0x3B6: 0.0958,
+    0x3B7: 0.0639,
+    0x3B8: 0.0958,
+    0x3B9: 0.0639,
+    0x3BC: 0.0319,
+    0x3BD: 0.0319,
+    0x3BE: 0.128,
+    0x3BF: 0.0639,
+    0x3C1: 0.0958,
+    0x3C2: 0.0958,
+    0x3C4: 0.0319,
+    0x3C5: 0.0319,
+    0x3C6: 0.0958,
+    0x3C7: 0.0639,
+    0x3C8: 0.128,
+    0x3D1: 0.0958,
+    0x3D5: 0.0958,
+    0x3F1: 0.0958,
+    0x3F5: 0.0639
+  },
+  0x20: [0,0,250,0,0],               // SPACE
+  0x2F: [711,210,894,160,733],       // SOLIDUS
+  0x41: [711,0,869,45,839],          // LATIN CAPITAL LETTER A
+  0x42: [686,0,866,43,853],          // LATIN CAPITAL LETTER B
+  0x43: [703,17,817,55,855],         // LATIN CAPITAL LETTER C
+  0x44: [686,0,938,43,914],          // LATIN CAPITAL LETTER D
+  0x45: [680,0,810,43,825],          // LATIN CAPITAL LETTER E
+  0x46: [680,0,689,43,809],          // LATIN CAPITAL LETTER F
+  0x47: [703,16,887,56,854],         // LATIN CAPITAL LETTER G
+  0x48: [686,0,982,43,1027],         // LATIN CAPITAL LETTER H
+  0x49: [686,0,511,30,573],          // LATIN CAPITAL LETTER I
+  0x4A: [686,17,631,42,694],         // LATIN CAPITAL LETTER J
+  0x4B: [686,0,971,43,1003],         // LATIN CAPITAL LETTER K
+  0x4C: [686,0,756,43,711],          // LATIN CAPITAL LETTER L
+  0x4D: [686,0,1142,43,1219],        // LATIN CAPITAL LETTER M
+  0x4E: [686,0,950,43,1027],         // LATIN CAPITAL LETTER N
+  0x4F: [703,17,837,53,815],         // LATIN CAPITAL LETTER O
+  0x50: [686,0,723,43,847],          // LATIN CAPITAL LETTER P
+  0x51: [703,194,869,53,815],        // LATIN CAPITAL LETTER Q
+  0x52: [686,17,872,43,881],         // LATIN CAPITAL LETTER R
+  0x53: [703,17,693,63,714],         // LATIN CAPITAL LETTER S
+  0x54: [675,0,637,22,772],          // LATIN CAPITAL LETTER T
+  0x55: [686,16,800,63,877],         // LATIN CAPITAL LETTER U
+  0x56: [686,16,678,62,886],         // LATIN CAPITAL LETTER V
+  0x57: [686,17,1093,61,1207],       // LATIN CAPITAL LETTER W
+  0x58: [686,0,947,38,953],          // LATIN CAPITAL LETTER X
+  0x59: [686,0,675,40,876],          // LATIN CAPITAL LETTER Y
+  0x5A: [686,0,773,68,805],          // LATIN CAPITAL LETTER Z
+  0x61: [452,8,633,38,607],          // LATIN SMALL LETTER A
+  0x62: [694,8,521,45,513],          // LATIN SMALL LETTER B
+  0x63: [451,8,513,40,509],          // LATIN SMALL LETTER C
+  0x64: [694,8,610,38,612],          // LATIN SMALL LETTER D
+  0x65: [452,8,554,42,509],          // LATIN SMALL LETTER E
+  0x66: [701,201,568,64,624],        // LATIN SMALL LETTER F
+  0x67: [452,202,545,0,540],         // LATIN SMALL LETTER G
+  0x68: [694,8,668,45,642],          // LATIN SMALL LETTER H
+  0x69: [694,8,405,24,367],          // LATIN SMALL LETTER I
+  0x6A: [694,202,471,-12,456],       // LATIN SMALL LETTER J
+  0x6B: [694,8,604,45,578],          // LATIN SMALL LETTER K
+  0x6C: [694,8,348,27,296],          // LATIN SMALL LETTER L
+  0x6D: [452,8,1032,24,1006],        // LATIN SMALL LETTER M
+  0x6E: [452,8,713,24,687],          // LATIN SMALL LETTER N
+  0x6F: [452,8,585,39,576],          // LATIN SMALL LETTER O
+  0x70: [452,194,601,-23,593],       // LATIN SMALL LETTER P
+  0x71: [452,194,542,38,550],        // LATIN SMALL LETTER Q
+  0x72: [452,8,529,24,500],          // LATIN SMALL LETTER R
+  0x73: [451,8,531,57,476],          // LATIN SMALL LETTER S
+  0x74: [643,7,415,21,387],          // LATIN SMALL LETTER T
+  0x75: [452,8,681,24,655],          // LATIN SMALL LETTER U
+  0x76: [453,8,567,24,540],          // LATIN SMALL LETTER V
+  0x77: [453,8,831,24,796],          // LATIN SMALL LETTER W
+  0x78: [452,8,659,43,599],          // LATIN SMALL LETTER X
+  0x79: [452,202,590,24,587],        // LATIN SMALL LETTER Y
+  0x7A: [452,8,555,34,539],          // LATIN SMALL LETTER Z
+  0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+  0x393: [680,0,657,43,777],         // GREEK CAPITAL LETTER GAMMA
+  0x394: [711,0,958,59,904],         // GREEK CAPITAL LETTER DELTA
+  0x398: [702,17,867,54,844],        // GREEK CAPITAL LETTER THETA
+  0x39B: [711,0,806,44,776],         // GREEK CAPITAL LETTER LAMDA
+  0x39E: [675,0,841,62,867],         // GREEK CAPITAL LETTER XI
+  0x3A0: [680,0,982,43,1026],        // GREEK CAPITAL LETTER PI
+  0x3A3: [686,0,885,69,902],         // GREEK CAPITAL LETTER SIGMA
+  0x3A5: [703,0,671,32,802],         // GREEK CAPITAL LETTER UPSILON
+  0x3A6: [686,0,767,29,737],         // GREEK CAPITAL LETTER PHI
+  0x3A8: [686,0,714,22,790],         // GREEK CAPITAL LETTER PSI
+  0x3A9: [703,0,879,93,886],         // GREEK CAPITAL LETTER OMEGA
+  0x3B1: [452,8,761,39,712],         // GREEK SMALL LETTER ALPHA
+  0x3B2: [701,194,660,28,637],       // GREEK SMALL LETTER BETA
+  0x3B3: [451,211,590,5,617],        // GREEK SMALL LETTER GAMMA
+  0x3B4: [725,8,522,39,513],         // GREEK SMALL LETTER DELTA
+  0x3B5: [461,17,529,36,481],        // GREEK SMALL LETTER EPSILON
+  0x3B6: [711,202,508,48,521],       // GREEK SMALL LETTER ZETA
+  0x3B7: [452,211,600,24,600],       // GREEK SMALL LETTER ETA
+  0x3B8: [702,8,562,40,554],         // GREEK SMALL LETTER THETA
+  0x3B9: [452,8,412,38,386],         // GREEK SMALL LETTER IOTA
+  0x3BA: [452,8,668,45,642],         // GREEK SMALL LETTER KAPPA
+  0x3BB: [694,13,671,40,652],        // GREEK SMALL LETTER LAMDA
+  0x3BC: [452,211,708,33,682],       // GREEK SMALL LETTER MU
+  0x3BD: [452,2,577,38,608],         // GREEK SMALL LETTER NU
+  0x3BE: [711,201,508,23,490],       // GREEK SMALL LETTER XI
+  0x3BF: [452,8,585,39,576],         // GREEK SMALL LETTER OMICRON
+  0x3C0: [444,8,682,23,674],         // GREEK SMALL LETTER PI
+  0x3C1: [451,211,612,34,603],       // GREEK SMALL LETTER RHO
+  0x3C2: [451,105,424,33,457],       // GREEK SMALL LETTER FINAL SIGMA
+  0x3C3: [444,8,686,35,677],         // GREEK SMALL LETTER SIGMA
+  0x3C4: [444,13,521,23,610],        // GREEK SMALL LETTER TAU
+  0x3C5: [453,8,631,24,604],         // GREEK SMALL LETTER UPSILON
+  0x3C6: [452,216,747,53,703],       // GREEK SMALL LETTER PHI
+  0x3C7: [452,201,718,32,685],       // GREEK SMALL LETTER CHI
+  0x3C8: [694,202,758,24,732],       // GREEK SMALL LETTER PSI
+  0x3C9: [453,8,718,24,691],         // GREEK SMALL LETTER OMEGA
+  0x3D1: [701,8,692,24,656],         // GREEK THETA SYMBOL
+  0x3D5: [694,202,712,51,693],       // GREEK PHI SYMBOL
+  0x3D6: [444,8,975,23,961],         // GREEK PI SYMBOL
+  0x3F1: [451,194,612,75,603],       // GREEK RHO SYMBOL
+  0x3F5: [444,7,483,44,450]          // GREEK LUNATE EPSILON SYMBOL
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Math-bold-italic"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Math/BoldItalic/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Math/Italic/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Math/Italic/Main.js
new file mode 100644
index 0000000..d4ff837
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Math/Italic/Main.js
@@ -0,0 +1,205 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Math/Italic/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Math-italic'] = {
+  directory: 'Math/Italic',
+  family: 'MathJax_Math',
+  style: 'italic',
+  testString: "MathJax Math \u03A5",
+  skew: {
+    0x41: 0.139,
+    0x42: 0.0833,
+    0x43: 0.0833,
+    0x44: 0.0556,
+    0x45: 0.0833,
+    0x46: 0.0833,
+    0x47: 0.0833,
+    0x48: 0.0556,
+    0x49: 0.111,
+    0x4A: 0.167,
+    0x4B: 0.0556,
+    0x4C: 0.0278,
+    0x4D: 0.0833,
+    0x4E: 0.0833,
+    0x4F: 0.0833,
+    0x50: 0.0833,
+    0x51: 0.0833,
+    0x52: 0.0833,
+    0x53: 0.0833,
+    0x54: 0.0833,
+    0x55: 0.0278,
+    0x58: 0.0833,
+    0x5A: 0.0833,
+    0x63: 0.0556,
+    0x64: 0.167,
+    0x65: 0.0556,
+    0x66: 0.167,
+    0x67: 0.0278,
+    0x68: -0.0278,
+    0x6C: 0.0833,
+    0x6F: 0.0556,
+    0x70: 0.0833,
+    0x71: 0.0833,
+    0x72: 0.0556,
+    0x73: 0.0556,
+    0x74: 0.0833,
+    0x75: 0.0278,
+    0x76: 0.0278,
+    0x77: 0.0833,
+    0x78: 0.0278,
+    0x79: 0.0556,
+    0x7A: 0.0556,
+    0x393: 0.0833,
+    0x394: 0.167,
+    0x398: 0.0833,
+    0x39B: 0.167,
+    0x39E: 0.0833,
+    0x3A0: 0.0556,
+    0x3A3: 0.0833,
+    0x3A5: 0.0556,
+    0x3A6: 0.0833,
+    0x3A8: 0.0556,
+    0x3A9: 0.0833,
+    0x3B1: 0.0278,
+    0x3B2: 0.0833,
+    0x3B4: 0.0556,
+    0x3B5: 0.0833,
+    0x3B6: 0.0833,
+    0x3B7: 0.0556,
+    0x3B8: 0.0833,
+    0x3B9: 0.0556,
+    0x3BC: 0.0278,
+    0x3BD: 0.0278,
+    0x3BE: 0.111,
+    0x3BF: 0.0556,
+    0x3C1: 0.0833,
+    0x3C2: 0.0833,
+    0x3C4: 0.0278,
+    0x3C5: 0.0278,
+    0x3C6: 0.0833,
+    0x3C7: 0.0556,
+    0x3C8: 0.111,
+    0x3D1: 0.0833,
+    0x3D5: 0.0833,
+    0x3F1: 0.0833,
+    0x3F5: 0.0556
+  },
+  0x20: [0,0,250,0,0],               // SPACE
+  0x2F: [716,215,778,139,638],       // SOLIDUS
+  0x41: [716,0,750,35,726],          // LATIN CAPITAL LETTER A
+  0x42: [683,0,759,35,756],          // LATIN CAPITAL LETTER B
+  0x43: [705,22,715,50,760],         // LATIN CAPITAL LETTER C
+  0x44: [683,0,828,33,803],          // LATIN CAPITAL LETTER D
+  0x45: [680,0,738,31,764],          // LATIN CAPITAL LETTER E
+  0x46: [680,0,643,31,749],          // LATIN CAPITAL LETTER F
+  0x47: [705,22,786,50,760],         // LATIN CAPITAL LETTER G
+  0x48: [683,0,831,31,888],          // LATIN CAPITAL LETTER H
+  0x49: [683,0,440,26,504],          // LATIN CAPITAL LETTER I
+  0x4A: [683,22,555,57,633],         // LATIN CAPITAL LETTER J
+  0x4B: [683,0,849,31,889],          // LATIN CAPITAL LETTER K
+  0x4C: [683,0,681,32,647],          // LATIN CAPITAL LETTER L
+  0x4D: [683,0,970,35,1051],         // LATIN CAPITAL LETTER M
+  0x4E: [683,0,803,31,888],          // LATIN CAPITAL LETTER N
+  0x4F: [704,22,763,50,740],         // LATIN CAPITAL LETTER O
+  0x50: [683,0,642,33,751],          // LATIN CAPITAL LETTER P
+  0x51: [704,194,791,50,740],        // LATIN CAPITAL LETTER Q
+  0x52: [683,21,759,33,755],         // LATIN CAPITAL LETTER R
+  0x53: [705,22,613,52,645],         // LATIN CAPITAL LETTER S
+  0x54: [677,0,584,21,704],          // LATIN CAPITAL LETTER T
+  0x55: [683,22,683,60,767],         // LATIN CAPITAL LETTER U
+  0x56: [683,22,583,52,769],         // LATIN CAPITAL LETTER V
+  0x57: [683,22,944,51,1048],        // LATIN CAPITAL LETTER W
+  0x58: [683,0,828,26,852],          // LATIN CAPITAL LETTER X
+  0x59: [683,-1,581,30,763],         // LATIN CAPITAL LETTER Y
+  0x5A: [683,0,683,58,723],          // LATIN CAPITAL LETTER Z
+  0x61: [441,10,529,33,506],         // LATIN SMALL LETTER A
+  0x62: [694,11,429,40,422],         // LATIN SMALL LETTER B
+  0x63: [442,11,433,34,429],         // LATIN SMALL LETTER C
+  0x64: [694,10,520,33,523],         // LATIN SMALL LETTER D
+  0x65: [442,11,466,39,429],         // LATIN SMALL LETTER E
+  0x66: [705,205,490,55,550],        // LATIN SMALL LETTER F
+  0x67: [442,205,477,10,480],        // LATIN SMALL LETTER G
+  0x68: [694,11,576,48,555],         // LATIN SMALL LETTER H
+  0x69: [661,11,345,21,302],         // LATIN SMALL LETTER I
+  0x6A: [661,204,412,-12,403],       // LATIN SMALL LETTER J
+  0x6B: [694,11,521,48,503],         // LATIN SMALL LETTER K
+  0x6C: [694,11,298,38,266],         // LATIN SMALL LETTER L
+  0x6D: [442,11,878,21,857],         // LATIN SMALL LETTER M
+  0x6E: [442,11,600,21,580],         // LATIN SMALL LETTER N
+  0x6F: [441,11,485,34,476],         // LATIN SMALL LETTER O
+  0x70: [442,194,503,-39,497],       // LATIN SMALL LETTER P
+  0x71: [442,194,446,33,460],        // LATIN SMALL LETTER Q
+  0x72: [442,11,451,21,430],         // LATIN SMALL LETTER R
+  0x73: [442,10,469,53,419],         // LATIN SMALL LETTER S
+  0x74: [626,11,361,19,330],         // LATIN SMALL LETTER T
+  0x75: [442,11,572,21,551],         // LATIN SMALL LETTER U
+  0x76: [443,11,485,21,467],         // LATIN SMALL LETTER V
+  0x77: [443,11,716,21,690],         // LATIN SMALL LETTER W
+  0x78: [442,11,572,35,522],         // LATIN SMALL LETTER X
+  0x79: [442,205,490,21,496],        // LATIN SMALL LETTER Y
+  0x7A: [442,11,465,35,468],         // LATIN SMALL LETTER Z
+  0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+  0x393: [680,-1,615,31,721],        // GREEK CAPITAL LETTER GAMMA
+  0x394: [716,0,833,48,788],         // GREEK CAPITAL LETTER DELTA
+  0x398: [704,22,763,50,740],        // GREEK CAPITAL LETTER THETA
+  0x39B: [716,0,694,35,670],         // GREEK CAPITAL LETTER LAMDA
+  0x39E: [677,0,742,53,777],         // GREEK CAPITAL LETTER XI
+  0x3A0: [680,0,831,31,887],         // GREEK CAPITAL LETTER PI
+  0x3A3: [683,0,780,58,806],         // GREEK CAPITAL LETTER SIGMA
+  0x3A5: [705,0,583,28,700],         // GREEK CAPITAL LETTER UPSILON
+  0x3A6: [683,0,667,24,642],         // GREEK CAPITAL LETTER PHI
+  0x3A8: [683,0,612,21,692],         // GREEK CAPITAL LETTER PSI
+  0x3A9: [704,0,772,80,786],         // GREEK CAPITAL LETTER OMEGA
+  0x3B1: [442,11,640,34,603],        // GREEK SMALL LETTER ALPHA
+  0x3B2: [705,194,566,23,573],       // GREEK SMALL LETTER BETA
+  0x3B3: [441,216,518,11,543],       // GREEK SMALL LETTER GAMMA
+  0x3B4: [717,10,444,36,451],        // GREEK SMALL LETTER DELTA
+  0x3B5: [452,22,466,27,428],        // GREEK SMALL LETTER EPSILON
+  0x3B6: [704,204,438,44,471],       // GREEK SMALL LETTER ZETA
+  0x3B7: [442,216,497,21,503],       // GREEK SMALL LETTER ETA
+  0x3B8: [705,10,469,35,462],        // GREEK SMALL LETTER THETA
+  0x3B9: [442,10,354,48,332],        // GREEK SMALL LETTER IOTA
+  0x3BA: [442,11,576,49,554],        // GREEK SMALL LETTER KAPPA
+  0x3BB: [694,12,583,47,556],        // GREEK SMALL LETTER LAMDA
+  0x3BC: [442,216,603,23,580],       // GREEK SMALL LETTER MU
+  0x3BD: [442,2,494,45,530],         // GREEK SMALL LETTER NU
+  0x3BE: [704,205,438,21,443],       // GREEK SMALL LETTER XI
+  0x3BF: [441,11,485,34,476],        // GREEK SMALL LETTER OMICRON
+  0x3C0: [431,11,570,19,573],        // GREEK SMALL LETTER PI
+  0x3C1: [442,216,517,23,510],       // GREEK SMALL LETTER RHO
+  0x3C2: [442,107,363,31,405],       // GREEK SMALL LETTER FINAL SIGMA
+  0x3C3: [431,11,571,31,572],        // GREEK SMALL LETTER SIGMA
+  0x3C4: [431,13,437,18,517],        // GREEK SMALL LETTER TAU
+  0x3C5: [443,10,540,21,523],        // GREEK SMALL LETTER UPSILON
+  0x3C6: [442,218,654,50,618],       // GREEK SMALL LETTER PHI
+  0x3C7: [442,204,626,25,600],       // GREEK SMALL LETTER CHI
+  0x3C8: [694,205,651,21,634],       // GREEK SMALL LETTER PSI
+  0x3C9: [443,11,622,15,604],        // GREEK SMALL LETTER OMEGA
+  0x3D1: [705,11,591,21,563],        // GREEK THETA SYMBOL
+  0x3D5: [694,205,596,43,579],       // GREEK PHI SYMBOL
+  0x3D6: [431,10,828,19,823],        // GREEK PI SYMBOL
+  0x3F1: [442,194,517,67,510],       // GREEK RHO SYMBOL
+  0x3F5: [431,11,406,40,382]         // GREEK LUNATE EPSILON SYMBOL
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Math-italic"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Math/Italic/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/BasicLatin.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/BasicLatin.js
new file mode 100644
index 0000000..8d51609
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/BasicLatin.js
@@ -0,0 +1,115 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/BasicLatin.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_SansSerif-bold'],
+  {
+    0x20: [0,0,250,0,0],               // SPACE
+    0x21: [694,0,367,110,256],         // EXCLAMATION MARK
+    0x22: [694,-442,558,37,420],       // QUOTATION MARK
+    0x23: [694,193,917,61,855],        // NUMBER SIGN
+    0x24: [750,56,550,49,488],         // DOLLAR SIGN
+    0x25: [750,56,1029,61,966],        // PERCENT SIGN
+    0x26: [716,22,831,47,769],         // AMPERSAND
+    0x27: [694,-442,306,80,226],       // APOSTROPHE
+    0x28: [750,249,428,79,366],        // LEFT PARENTHESIS
+    0x29: [750,250,428,61,348],        // RIGHT PARENTHESIS
+    0x2A: [750,-293,550,67,482],       // ASTERISK
+    0x2B: [617,116,856,61,794],        // PLUS SIGN
+    0x2C: [146,106,306,80,226],        // COMMA
+    0x2D: [273,-186,367,12,305],       // HYPHEN-MINUS
+    0x2E: [146,0,306,80,226],          // FULL STOP
+    0x2F: [750,249,550,61,488],        // SOLIDUS
+    0x30: [715,22,550,43,506],         // DIGIT ZERO
+    0x31: [716,-1,550,76,473],         // DIGIT ONE
+    0x32: [716,0,550,46,495],          // DIGIT TWO
+    0x33: [716,22,550,46,503],         // DIGIT THREE
+    0x34: [694,0,550,31,518],          // DIGIT FOUR
+    0x35: [694,22,550,37,494],         // DIGIT FIVE
+    0x36: [716,22,550,46,503],         // DIGIT SIX
+    0x37: [695,11,550,46,503],         // DIGIT SEVEN
+    0x38: [715,22,550,46,503],         // DIGIT EIGHT
+    0x39: [716,22,550,46,503],         // DIGIT NINE
+    0x3A: [458,0,306,80,226],          // COLON
+    0x3B: [458,106,306,80,226],        // SEMICOLON
+    0x3D: [407,-94,856,61,794],        // EQUALS SIGN
+    0x3F: [705,0,519,61,457],          // QUESTION MARK
+    0x40: [704,11,733,61,671],         // COMMERCIAL AT
+    0x41: [694,0,733,42,690],          // LATIN CAPITAL LETTER A
+    0x42: [694,-1,733,92,671],         // LATIN CAPITAL LETTER B
+    0x43: [704,11,703,61,647],         // LATIN CAPITAL LETTER C
+    0x44: [694,-1,794,92,732],         // LATIN CAPITAL LETTER D
+    0x45: [691,0,642,92,595],          // LATIN CAPITAL LETTER E
+    0x46: [691,0,611,92,564],          // LATIN CAPITAL LETTER F
+    0x47: [705,11,733,61,659],         // LATIN CAPITAL LETTER G
+    0x48: [694,0,794,92,702],          // LATIN CAPITAL LETTER H
+    0x49: [694,0,331,85,246],          // LATIN CAPITAL LETTER I
+    0x4A: [694,22,519,46,427],         // LATIN CAPITAL LETTER J
+    0x4B: [694,0,764,92,701],          // LATIN CAPITAL LETTER K
+    0x4C: [694,0,581,92,534],          // LATIN CAPITAL LETTER L
+    0x4D: [694,0,978,92,886],          // LATIN CAPITAL LETTER M
+    0x4E: [694,0,794,92,702],          // LATIN CAPITAL LETTER N
+    0x4F: [716,22,794,62,731],         // LATIN CAPITAL LETTER O
+    0x50: [694,0,703,92,641],          // LATIN CAPITAL LETTER P
+    0x51: [716,106,794,62,732],        // LATIN CAPITAL LETTER Q
+    0x52: [694,0,703,92,654],          // LATIN CAPITAL LETTER R
+    0x53: [716,22,611,49,549],         // LATIN CAPITAL LETTER S
+    0x54: [688,0,733,40,692],          // LATIN CAPITAL LETTER T
+    0x55: [694,22,764,92,672],         // LATIN CAPITAL LETTER U
+    0x56: [694,-1,733,27,705],         // LATIN CAPITAL LETTER V
+    0x57: [694,0,1039,24,1014],        // LATIN CAPITAL LETTER W
+    0x58: [694,0,733,37,694],          // LATIN CAPITAL LETTER X
+    0x59: [694,0,733,24,708],          // LATIN CAPITAL LETTER Y
+    0x5A: [694,0,672,61,616],          // LATIN CAPITAL LETTER Z
+    0x5B: [750,250,343,79,318],        // LEFT SQUARE BRACKET
+    0x5D: [750,250,343,24,263],        // RIGHT SQUARE BRACKET
+    0x5E: [694,-537,550,108,441],      // CIRCUMFLEX ACCENT
+    0x5F: [-23,110,550,0,549],         // LOW LINE
+    0x61: [475,11,525,31,472],         // LATIN SMALL LETTER A
+    0x62: [694,10,561,54,523],         // LATIN SMALL LETTER B
+    0x63: [475,11,489,37,457],         // LATIN SMALL LETTER C
+    0x64: [694,11,561,37,507],         // LATIN SMALL LETTER D
+    0x65: [474,10,511,30,480],         // LATIN SMALL LETTER E
+    0x66: [705,0,336,29,381],          // LATIN SMALL LETTER F
+    0x67: [469,206,550,17,534],        // LATIN SMALL LETTER G
+    0x68: [694,0,561,53,508],          // LATIN SMALL LETTER H
+    0x69: [695,0,256,46,208],          // LATIN SMALL LETTER I
+    0x6A: [695,205,286,-71,232],       // LATIN SMALL LETTER J
+    0x6B: [694,0,531,63,496],          // LATIN SMALL LETTER K
+    0x6C: [694,0,256,54,201],          // LATIN SMALL LETTER L
+    0x6D: [469,0,867,53,815],          // LATIN SMALL LETTER M
+    0x6E: [468,0,561,53,508],          // LATIN SMALL LETTER N
+    0x6F: [474,11,550,32,518],         // LATIN SMALL LETTER O
+    0x70: [469,194,561,54,523],        // LATIN SMALL LETTER P
+    0x71: [469,194,561,37,507],        // LATIN SMALL LETTER Q
+    0x72: [469,0,372,54,356],          // LATIN SMALL LETTER R
+    0x73: [474,10,422,30,396],         // LATIN SMALL LETTER S
+    0x74: [589,10,404,20,373],         // LATIN SMALL LETTER T
+    0x75: [458,11,561,52,508],         // LATIN SMALL LETTER U
+    0x76: [458,0,500,26,473],          // LATIN SMALL LETTER V
+    0x77: [458,0,744,24,719],          // LATIN SMALL LETTER W
+    0x78: [458,0,500,24,475],          // LATIN SMALL LETTER X
+    0x79: [458,205,500,29,473],        // LATIN SMALL LETTER Y
+    0x7A: [458,0,476,31,442],          // LATIN SMALL LETTER Z
+    0x7E: [344,-198,550,92,457]        // TILDE
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/SansSerif/Bold/BasicLatin.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/CombDiacritMarks.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/CombDiacritMarks.js
new file mode 100644
index 0000000..100871f
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/CombDiacritMarks.js
@@ -0,0 +1,38 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/CombDiacritMarks.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_SansSerif-bold'],
+  {
+    0x300: [694,-537,0,-458,-218],     // COMBINING GRAVE ACCENT
+    0x301: [694,-537,0,-334,-93],      // COMBINING ACUTE ACCENT
+    0x302: [694,-537,0,-442,-109],     // COMBINING CIRCUMFLEX ACCENT
+    0x303: [694,-548,0,-458,-93],      // COMBINING TILDE
+    0x304: [660,-560,0,-474,-77],      // COMBINING MACRON
+    0x306: [694,-552,0,-470,-80],      // COMBINING BREVE
+    0x307: [695,-596,0,-356,-194],     // COMBINING DOT ABOVE
+    0x308: [695,-595,0,-459,-91],      // COMBINING DIAERESIS
+    0x30A: [694,-538,0,-365,-119],     // COMBINING RING ABOVE
+    0x30B: [694,-537,0,-440,-94],      // COMBINING DOUBLE ACUTE ACCENT
+    0x30C: [657,-500,0,-442,-109]      // COMBINING CARON
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/SansSerif/Bold/CombDiacritMarks.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js
new file mode 100644
index 0000000..b47574e
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js
@@ -0,0 +1,37 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_SansSerif-bold'] = {
+  directory: 'SansSerif/Bold',
+  family: 'MathJax_SansSerif',
+  weight: 'bold',
+  testString: "MathJax SansSerif ^ _",
+  Ranges: [
+    [0x0,0x7F,"BasicLatin"],
+    [0x80,0xFFFF,"Other"],
+    [0x300,0x36F,"CombDiacritMarks"]
+  ]
+
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_SansSerif-bold"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Bold/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Other.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Other.js
new file mode 100644
index 0000000..e139fab
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Other.js
@@ -0,0 +1,47 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Other.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_SansSerif-bold'],
+  {
+    0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+    0x131: [458,0,256,54,201],         // LATIN SMALL LETTER DOTLESS I
+    0x237: [458,205,286,-71,232],      // LATIN SMALL LETTER DOTLESS J
+    0x393: [691,0,581,92,534],         // GREEK CAPITAL LETTER GAMMA
+    0x394: [694,0,917,60,856],         // GREEK CAPITAL LETTER DELTA
+    0x398: [716,22,856,62,793],        // GREEK CAPITAL LETTER THETA
+    0x39B: [694,0,672,41,630],         // GREEK CAPITAL LETTER LAMDA
+    0x39E: [688,0,733,46,686],         // GREEK CAPITAL LETTER XI
+    0x3A0: [691,0,794,92,702],         // GREEK CAPITAL LETTER PI
+    0x3A3: [694,0,794,61,732],         // GREEK CAPITAL LETTER SIGMA
+    0x3A5: [715,0,856,62,793],         // GREEK CAPITAL LETTER UPSILON
+    0x3A6: [694,0,794,62,732],         // GREEK CAPITAL LETTER PHI
+    0x3A8: [694,0,856,61,794],         // GREEK CAPITAL LETTER PSI
+    0x3A9: [716,0,794,49,744],         // GREEK CAPITAL LETTER OMEGA
+    0x2013: [327,-240,550,0,549],      // EN DASH
+    0x2014: [327,-240,1100,0,1099],    // EM DASH
+    0x2018: [694,-443,306,81,226],     // LEFT SINGLE QUOTATION MARK
+    0x2019: [694,-442,306,80,226],     // RIGHT SINGLE QUOTATION MARK
+    0x201C: [694,-443,558,138,520],    // LEFT DOUBLE QUOTATION MARK
+    0x201D: [694,-442,558,37,420]      // RIGHT DOUBLE QUOTATION MARK
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/SansSerif/Bold/Other.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/BasicLatin.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/BasicLatin.js
new file mode 100644
index 0000000..5c9e3dd
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/BasicLatin.js
@@ -0,0 +1,115 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/BasicLatin.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_SansSerif-italic'],
+  {
+    0x20: [0,0,250,0,0],               // SPACE
+    0x21: [694,0,319,110,355],         // EXCLAMATION MARK
+    0x22: [694,-471,500,133,472],      // QUOTATION MARK
+    0x23: [694,194,833,87,851],        // NUMBER SIGN
+    0x24: [750,56,500,56,565],         // DOLLAR SIGN
+    0x25: [750,56,833,165,815],        // PERCENT SIGN
+    0x26: [716,22,758,71,747],         // AMPERSAND
+    0x27: [694,-471,278,190,335],      // APOSTROPHE
+    0x28: [750,250,389,104,491],       // LEFT PARENTHESIS
+    0x29: [750,250,389,2,390],         // RIGHT PARENTHESIS
+    0x2A: [750,-306,500,156,568],      // ASTERISK
+    0x2B: [583,83,778,108,775],        // PLUS SIGN
+    0x2C: [98,125,278,63,209],         // COMMA
+    0x2D: [259,-186,333,51,332],       // HYPHEN-MINUS
+    0x2E: [98,0,278,90,209],           // FULL STOP
+    0x2F: [750,250,500,6,600],         // SOLIDUS
+    0x30: [678,22,500,88,549],         // DIGIT ZERO
+    0x31: [678,0,500,88,451],          // DIGIT ONE
+    0x32: [678,0,500,50,551],          // DIGIT TWO
+    0x33: [678,22,500,56,544],         // DIGIT THREE
+    0x34: [656,0,500,62,521],          // DIGIT FOUR
+    0x35: [656,22,500,50,555],         // DIGIT FIVE
+    0x36: [678,22,500,94,548],         // DIGIT SIX
+    0x37: [656,11,500,143,596],        // DIGIT SEVEN
+    0x38: [678,22,500,77,554],         // DIGIT EIGHT
+    0x39: [677,22,500,77,545],         // DIGIT NINE
+    0x3A: [444,0,278,90,282],          // COLON
+    0x3B: [444,125,278,63,282],        // SEMICOLON
+    0x3D: [370,-130,778,88,796],       // EQUALS SIGN
+    0x3F: [704,0,472,173,536],         // QUESTION MARK
+    0x40: [705,10,667,120,707],        // COMMERCIAL AT
+    0x41: [694,0,667,28,638],          // LATIN CAPITAL LETTER A
+    0x42: [694,0,667,90,696],          // LATIN CAPITAL LETTER B
+    0x43: [705,10,639,124,719],        // LATIN CAPITAL LETTER C
+    0x44: [694,0,722,88,747],          // LATIN CAPITAL LETTER D
+    0x45: [691,0,597,86,688],          // LATIN CAPITAL LETTER E
+    0x46: [691,0,569,86,673],          // LATIN CAPITAL LETTER F
+    0x47: [705,11,667,125,730],        // LATIN CAPITAL LETTER G
+    0x48: [694,0,708,86,768],          // LATIN CAPITAL LETTER H
+    0x49: [694,0,278,87,338],          // LATIN CAPITAL LETTER I
+    0x4A: [694,22,472,46,535],         // LATIN CAPITAL LETTER J
+    0x4B: [694,0,694,88,785],          // LATIN CAPITAL LETTER K
+    0x4C: [694,0,542,87,516],          // LATIN CAPITAL LETTER L
+    0x4D: [694,0,875,92,929],          // LATIN CAPITAL LETTER M
+    0x4E: [694,0,708,88,766],          // LATIN CAPITAL LETTER N
+    0x4F: [716,22,736,118,763],        // LATIN CAPITAL LETTER O
+    0x50: [694,0,639,88,690],          // LATIN CAPITAL LETTER P
+    0x51: [716,125,736,118,763],       // LATIN CAPITAL LETTER Q
+    0x52: [694,0,646,88,698],          // LATIN CAPITAL LETTER R
+    0x53: [716,22,556,54,609],         // LATIN CAPITAL LETTER S
+    0x54: [688,0,681,165,790],         // LATIN CAPITAL LETTER T
+    0x55: [694,22,688,131,747],        // LATIN CAPITAL LETTER U
+    0x56: [694,0,667,161,799],         // LATIN CAPITAL LETTER V
+    0x57: [694,0,944,161,1076],        // LATIN CAPITAL LETTER W
+    0x58: [694,0,667,14,758],          // LATIN CAPITAL LETTER X
+    0x59: [694,0,667,151,810],         // LATIN CAPITAL LETTER Y
+    0x5A: [694,0,611,55,702],          // LATIN CAPITAL LETTER Z
+    0x5B: [750,250,289,41,425],        // LEFT SQUARE BRACKET
+    0x5D: [750,250,289,-31,353],       // RIGHT SQUARE BRACKET
+    0x5E: [694,-527,500,190,533],      // CIRCUMFLEX ACCENT
+    0x5F: [-38,114,500,50,565],        // LOW LINE
+    0x61: [461,10,481,61,473],         // LATIN SMALL LETTER A
+    0x62: [694,11,517,75,539],         // LATIN SMALL LETTER B
+    0x63: [460,11,444,75,499],         // LATIN SMALL LETTER C
+    0x64: [694,10,517,73,588],         // LATIN SMALL LETTER D
+    0x65: [460,11,444,71,472],         // LATIN SMALL LETTER E
+    0x66: [705,0,306,94,494],          // LATIN SMALL LETTER F
+    0x67: [455,206,500,12,568],        // LATIN SMALL LETTER G
+    0x68: [694,0,517,73,513],          // LATIN SMALL LETTER H
+    0x69: [680,0,239,74,315],          // LATIN SMALL LETTER I
+    0x6A: [680,204,267,-96,336],       // LATIN SMALL LETTER J
+    0x6B: [694,0,489,76,543],          // LATIN SMALL LETTER K
+    0x6C: [694,0,239,74,311],          // LATIN SMALL LETTER L
+    0x6D: [455,0,794,73,790],          // LATIN SMALL LETTER M
+    0x6E: [454,0,517,73,513],          // LATIN SMALL LETTER N
+    0x6F: [461,11,500,69,523],         // LATIN SMALL LETTER O
+    0x70: [455,194,517,34,538],        // LATIN SMALL LETTER P
+    0x71: [455,194,517,72,538],        // LATIN SMALL LETTER Q
+    0x72: [455,0,342,74,424],          // LATIN SMALL LETTER R
+    0x73: [461,11,383,35,436],         // LATIN SMALL LETTER S
+    0x74: [571,11,361,97,410],         // LATIN SMALL LETTER T
+    0x75: [444,10,517,90,537],         // LATIN SMALL LETTER U
+    0x76: [444,0,461,108,540],         // LATIN SMALL LETTER V
+    0x77: [444,0,683,108,762],         // LATIN SMALL LETTER W
+    0x78: [444,0,461,1,537],           // LATIN SMALL LETTER X
+    0x79: [444,205,461,1,540],         // LATIN SMALL LETTER Y
+    0x7A: [444,0,435,28,494],          // LATIN SMALL LETTER Z
+    0x7E: [327,-193,500,199,560]       // TILDE
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/SansSerif/Italic/BasicLatin.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js
new file mode 100644
index 0000000..04ba86f
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js
@@ -0,0 +1,38 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_SansSerif-italic'],
+  {
+    0x300: [694,-527,0,-270,-87],      // COMBINING GRAVE ACCENT
+    0x301: [694,-527,0,-190,63],       // COMBINING ACUTE ACCENT
+    0x302: [694,-527,0,-310,33],       // COMBINING CIRCUMFLEX ACCENT
+    0x303: [677,-543,0,-301,60],       // COMBINING TILDE
+    0x304: [631,-552,0,-314,64],       // COMBINING MACRON
+    0x306: [694,-508,0,-284,73],       // COMBINING BREVE
+    0x307: [680,-576,0,-180,-54],      // COMBINING DOT ABOVE
+    0x308: [680,-582,0,-273,40],       // COMBINING DIAERESIS
+    0x30A: [693,-527,0,-227,-2],       // COMBINING RING ABOVE
+    0x30B: [694,-527,0,-287,63],       // COMBINING DOUBLE ACUTE ACCENT
+    0x30C: [654,-487,0,-283,60]        // COMBINING CARON
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/SansSerif/Italic/CombDiacritMarks.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js
new file mode 100644
index 0000000..d263077
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js
@@ -0,0 +1,37 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_SansSerif-italic'] = {
+  directory: 'SansSerif/Italic',
+  family: 'MathJax_SansSerif',
+  style: 'italic',
+  testString: "MathJax SansSerif ^ _",
+  Ranges: [
+    [0x0,0x7F,"BasicLatin"],
+    [0x80,0xFFFF,"Other"],
+    [0x300,0x36F,"CombDiacritMarks"]
+  ]
+
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_SansSerif-italic"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Italic/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Other.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Other.js
new file mode 100644
index 0000000..93e9a3c
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Other.js
@@ -0,0 +1,47 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Other.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_SansSerif-italic'],
+  {
+    0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+    0x131: [444,0,239,74,258],         // LATIN SMALL LETTER DOTLESS I
+    0x237: [444,204,267,-96,286],      // LATIN SMALL LETTER DOTLESS J
+    0x393: [691,0,542,87,646],         // GREEK CAPITAL LETTER GAMMA
+    0x394: [694,0,833,42,790],         // GREEK CAPITAL LETTER DELTA
+    0x398: [715,22,778,119,804],       // GREEK CAPITAL LETTER THETA
+    0x39B: [694,0,611,28,582],         // GREEK CAPITAL LETTER LAMDA
+    0x39E: [688,0,667,42,765],         // GREEK CAPITAL LETTER XI
+    0x3A0: [691,0,708,86,768],         // GREEK CAPITAL LETTER PI
+    0x3A3: [694,0,722,55,813],         // GREEK CAPITAL LETTER SIGMA
+    0x3A5: [716,0,778,173,843],        // GREEK CAPITAL LETTER UPSILON
+    0x3A6: [694,0,722,124,743],        // GREEK CAPITAL LETTER PHI
+    0x3A8: [694,0,778,171,854],        // GREEK CAPITAL LETTER PSI
+    0x3A9: [716,0,722,44,769],         // GREEK CAPITAL LETTER OMEGA
+    0x2013: [312,-236,500,50,565],     // EN DASH
+    0x2014: [312,-236,1000,50,1065],   // EM DASH
+    0x2018: [694,-471,278,190,336],    // LEFT SINGLE QUOTATION MARK
+    0x2019: [694,-471,278,190,335],    // RIGHT SINGLE QUOTATION MARK
+    0x201C: [694,-471,500,274,614],    // LEFT DOUBLE QUOTATION MARK
+    0x201D: [694,-471,500,133,472]     // RIGHT DOUBLE QUOTATION MARK
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/SansSerif/Italic/Other.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/BasicLatin.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/BasicLatin.js
new file mode 100644
index 0000000..31828ac
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/BasicLatin.js
@@ -0,0 +1,115 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/BasicLatin.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_SansSerif'],
+  {
+    0x20: [0,0,250,0,0],               // SPACE
+    0x21: [694,0,319,110,208],         // EXCLAMATION MARK
+    0x22: [694,-471,500,32,325],       // QUOTATION MARK
+    0x23: [694,194,833,56,777],        // NUMBER SIGN
+    0x24: [750,56,500,44,444],         // DOLLAR SIGN
+    0x25: [750,56,833,56,776],         // PERCENT SIGN
+    0x26: [716,22,758,42,702],         // AMPERSAND
+    0x27: [694,-471,278,89,188],       // APOSTROPHE
+    0x28: [750,250,389,74,333],        // LEFT PARENTHESIS
+    0x29: [750,250,389,55,314],        // RIGHT PARENTHESIS
+    0x2A: [750,-306,500,63,436],       // ASTERISK
+    0x2B: [583,82,778,56,722],         // PLUS SIGN
+    0x2C: [98,125,278,89,188],         // COMMA
+    0x2D: [259,-186,333,11,277],       // HYPHEN-MINUS
+    0x2E: [98,0,278,90,188],           // FULL STOP
+    0x2F: [750,250,500,56,445],        // SOLIDUS
+    0x30: [678,22,500,39,460],         // DIGIT ZERO
+    0x31: [678,0,500,83,430],          // DIGIT ONE
+    0x32: [677,0,500,42,449],          // DIGIT TWO
+    0x33: [678,22,500,42,457],         // DIGIT THREE
+    0x34: [656,0,500,28,471],          // DIGIT FOUR
+    0x35: [656,21,500,33,449],         // DIGIT FIVE
+    0x36: [677,22,500,42,457],         // DIGIT SIX
+    0x37: [656,11,500,42,457],         // DIGIT SEVEN
+    0x38: [678,22,500,43,456],         // DIGIT EIGHT
+    0x39: [677,22,500,42,457],         // DIGIT NINE
+    0x3A: [444,0,278,90,188],          // COLON
+    0x3B: [444,125,278,89,188],        // SEMICOLON
+    0x3D: [370,-130,778,56,722],       // EQUALS SIGN
+    0x3F: [704,0,472,55,416],          // QUESTION MARK
+    0x40: [704,11,667,56,612],         // COMMERCIAL AT
+    0x41: [694,0,667,28,638],          // LATIN CAPITAL LETTER A
+    0x42: [694,0,667,90,610],          // LATIN CAPITAL LETTER B
+    0x43: [705,11,639,59,587],         // LATIN CAPITAL LETTER C
+    0x44: [694,0,722,88,666],          // LATIN CAPITAL LETTER D
+    0x45: [691,0,597,86,554],          // LATIN CAPITAL LETTER E
+    0x46: [691,0,569,86,526],          // LATIN CAPITAL LETTER F
+    0x47: [704,11,667,59,599],         // LATIN CAPITAL LETTER G
+    0x48: [694,0,708,86,621],          // LATIN CAPITAL LETTER H
+    0x49: [694,0,278,87,191],          // LATIN CAPITAL LETTER I
+    0x4A: [694,22,472,42,388],         // LATIN CAPITAL LETTER J
+    0x4B: [694,0,694,88,651],          // LATIN CAPITAL LETTER K
+    0x4C: [694,0,542,87,499],          // LATIN CAPITAL LETTER L
+    0x4D: [694,0,875,92,782],          // LATIN CAPITAL LETTER M
+    0x4E: [694,0,708,88,619],          // LATIN CAPITAL LETTER N
+    0x4F: [715,22,736,55,680],         // LATIN CAPITAL LETTER O
+    0x50: [694,0,639,88,583],          // LATIN CAPITAL LETTER P
+    0x51: [715,125,736,55,680],        // LATIN CAPITAL LETTER Q
+    0x52: [694,0,646,88,617],          // LATIN CAPITAL LETTER R
+    0x53: [716,22,556,44,500],         // LATIN CAPITAL LETTER S
+    0x54: [688,0,681,36,644],          // LATIN CAPITAL LETTER T
+    0x55: [694,22,688,87,600],         // LATIN CAPITAL LETTER U
+    0x56: [694,0,667,14,652],          // LATIN CAPITAL LETTER V
+    0x57: [694,0,944,14,929],          // LATIN CAPITAL LETTER W
+    0x58: [694,0,667,14,652],          // LATIN CAPITAL LETTER X
+    0x59: [694,0,667,3,663],           // LATIN CAPITAL LETTER Y
+    0x5A: [694,0,611,55,560],          // LATIN CAPITAL LETTER Z
+    0x5B: [750,250,289,94,266],        // LEFT SQUARE BRACKET
+    0x5D: [750,250,289,22,194],        // RIGHT SQUARE BRACKET
+    0x5E: [694,-527,500,78,421],       // CIRCUMFLEX ACCENT
+    0x5F: [-38,114,500,0,499],         // LOW LINE
+    0x61: [460,10,481,38,407],         // LATIN SMALL LETTER A
+    0x62: [694,11,517,75,482],         // LATIN SMALL LETTER B
+    0x63: [460,10,444,34,415],         // LATIN SMALL LETTER C
+    0x64: [694,10,517,33,441],         // LATIN SMALL LETTER D
+    0x65: [461,10,444,28,415],         // LATIN SMALL LETTER E
+    0x66: [705,0,306,27,347],          // LATIN SMALL LETTER F
+    0x67: [455,206,500,28,485],        // LATIN SMALL LETTER G
+    0x68: [694,0,517,73,443],          // LATIN SMALL LETTER H
+    0x69: [680,0,239,67,171],          // LATIN SMALL LETTER I
+    0x6A: [680,205,267,-59,192],       // LATIN SMALL LETTER J
+    0x6B: [694,0,489,76,471],          // LATIN SMALL LETTER K
+    0x6C: [694,0,239,74,164],          // LATIN SMALL LETTER L
+    0x6D: [455,0,794,73,720],          // LATIN SMALL LETTER M
+    0x6E: [455,0,517,73,443],          // LATIN SMALL LETTER N
+    0x6F: [460,10,500,28,471],         // LATIN SMALL LETTER O
+    0x70: [455,194,517,75,483],        // LATIN SMALL LETTER P
+    0x71: [455,194,517,33,441],        // LATIN SMALL LETTER Q
+    0x72: [455,0,342,74,327],          // LATIN SMALL LETTER R
+    0x73: [460,10,383,28,360],         // LATIN SMALL LETTER S
+    0x74: [571,10,361,18,333],         // LATIN SMALL LETTER T
+    0x75: [444,10,517,73,443],         // LATIN SMALL LETTER U
+    0x76: [444,0,461,14,446],          // LATIN SMALL LETTER V
+    0x77: [444,0,683,14,668],          // LATIN SMALL LETTER W
+    0x78: [444,0,461,0,460],           // LATIN SMALL LETTER X
+    0x79: [444,204,461,14,446],        // LATIN SMALL LETTER Y
+    0x7A: [444,0,435,28,402],          // LATIN SMALL LETTER Z
+    0x7E: [327,-193,500,83,416]        // TILDE
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/SansSerif/Regular/BasicLatin.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js
new file mode 100644
index 0000000..0edd069
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js
@@ -0,0 +1,38 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_SansSerif'],
+  {
+    0x300: [694,-527,0,-417,-199],     // COMBINING GRAVE ACCENT
+    0x301: [694,-527,0,-302,-84],      // COMBINING ACUTE ACCENT
+    0x302: [694,-527,0,-422,-79],      // COMBINING CIRCUMFLEX ACCENT
+    0x303: [677,-543,0,-417,-84],      // COMBINING TILDE
+    0x304: [631,-552,0,-431,-70],      // COMBINING MACRON
+    0x306: [694,-508,0,-427,-74],      // COMBINING BREVE
+    0x307: [680,-576,0,-302,-198],     // COMBINING DOT ABOVE
+    0x308: [680,-582,0,-397,-104],     // COMBINING DIAERESIS
+    0x30A: [694,-527,0,-319,-99],      // COMBINING RING ABOVE
+    0x30B: [694,-527,0,-399,-84],      // COMBINING DOUBLE ACUTE ACCENT
+    0x30C: [654,-487,0,-422,-79]       // COMBINING CARON
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/SansSerif/Regular/CombDiacritMarks.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js
new file mode 100644
index 0000000..5932015
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js
@@ -0,0 +1,36 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_SansSerif'] = {
+  directory: 'SansSerif/Regular',
+  family: 'MathJax_SansSerif',
+  testString: "MathJax SansSerif ^ _",
+  Ranges: [
+    [0x0,0x7F,"BasicLatin"],
+    [0x80,0xFFFF,"Other"],
+    [0x300,0x36F,"CombDiacritMarks"]
+  ]
+
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_SansSerif"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/SansSerif/Regular/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Other.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Other.js
new file mode 100644
index 0000000..8dc6283
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Other.js
@@ -0,0 +1,47 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Other.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_SansSerif'],
+  {
+    0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+    0x131: [444,0,239,74,164],         // LATIN SMALL LETTER DOTLESS I
+    0x237: [444,205,267,-59,192],      // LATIN SMALL LETTER DOTLESS J
+    0x393: [691,0,542,87,499],         // GREEK CAPITAL LETTER GAMMA
+    0x394: [694,0,833,42,790],         // GREEK CAPITAL LETTER DELTA
+    0x398: [716,21,778,56,722],        // GREEK CAPITAL LETTER THETA
+    0x39B: [694,0,611,28,582],         // GREEK CAPITAL LETTER LAMDA
+    0x39E: [688,0,667,42,624],         // GREEK CAPITAL LETTER XI
+    0x3A0: [691,0,708,86,621],         // GREEK CAPITAL LETTER PI
+    0x3A3: [694,0,722,55,666],         // GREEK CAPITAL LETTER SIGMA
+    0x3A5: [716,0,778,55,722],         // GREEK CAPITAL LETTER UPSILON
+    0x3A6: [694,0,722,55,666],         // GREEK CAPITAL LETTER PHI
+    0x3A8: [694,0,778,55,722],         // GREEK CAPITAL LETTER PSI
+    0x3A9: [716,0,722,44,677],         // GREEK CAPITAL LETTER OMEGA
+    0x2013: [312,-236,500,0,499],      // EN DASH
+    0x2014: [312,-236,1000,0,999],     // EM DASH
+    0x2018: [694,-471,278,90,189],     // LEFT SINGLE QUOTATION MARK
+    0x2019: [694,-471,278,89,188],     // RIGHT SINGLE QUOTATION MARK
+    0x201C: [694,-471,500,174,467],    // LEFT DOUBLE QUOTATION MARK
+    0x201D: [694,-471,500,32,325]      // RIGHT DOUBLE QUOTATION MARK
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/SansSerif/Regular/Other.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Script/Regular/BasicLatin.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Script/Regular/BasicLatin.js
new file mode 100644
index 0000000..386318b
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Script/Regular/BasicLatin.js
@@ -0,0 +1,54 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/BasicLatin.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Script'],
+  {
+    0x20: [0,0,250,0,0],               // SPACE
+    0x41: [717,8,803,35,1016],         // LATIN CAPITAL LETTER A
+    0x42: [708,28,908,31,928],         // LATIN CAPITAL LETTER B
+    0x43: [728,26,666,26,819],         // LATIN CAPITAL LETTER C
+    0x44: [708,31,774,68,855],         // LATIN CAPITAL LETTER D
+    0x45: [707,8,562,46,718],          // LATIN CAPITAL LETTER E
+    0x46: [735,36,895,39,990],         // LATIN CAPITAL LETTER F
+    0x47: [717,37,610,12,738],         // LATIN CAPITAL LETTER G
+    0x48: [717,36,969,29,1241],        // LATIN CAPITAL LETTER H
+    0x49: [717,17,809,59,946],         // LATIN CAPITAL LETTER I
+    0x4A: [717,314,1052,92,1133],      // LATIN CAPITAL LETTER J
+    0x4B: [717,37,914,29,1204],        // LATIN CAPITAL LETTER K
+    0x4C: [717,17,874,14,1035],        // LATIN CAPITAL LETTER L
+    0x4D: [721,50,1080,30,1216],       // LATIN CAPITAL LETTER M
+    0x4E: [726,36,902,29,1208],        // LATIN CAPITAL LETTER N
+    0x4F: [707,8,738,96,805],          // LATIN CAPITAL LETTER O
+    0x50: [716,37,1013,90,1031],       // LATIN CAPITAL LETTER P
+    0x51: [717,17,883,54,885],         // LATIN CAPITAL LETTER Q
+    0x52: [717,17,850,-2,887],         // LATIN CAPITAL LETTER R
+    0x53: [708,36,868,29,1016],        // LATIN CAPITAL LETTER S
+    0x54: [735,37,747,92,996],         // LATIN CAPITAL LETTER T
+    0x55: [717,17,800,55,960],         // LATIN CAPITAL LETTER U
+    0x56: [717,17,622,56,850],         // LATIN CAPITAL LETTER V
+    0x57: [717,17,805,46,1026],        // LATIN CAPITAL LETTER W
+    0x58: [717,17,944,103,1131],       // LATIN CAPITAL LETTER X
+    0x59: [716,17,710,57,959],         // LATIN CAPITAL LETTER Y
+    0x5A: [717,16,821,83,1032]         // LATIN CAPITAL LETTER Z
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Script/Regular/BasicLatin.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Main.js
new file mode 100644
index 0000000..25e3873
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Main.js
@@ -0,0 +1,63 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Script'] = {
+  directory: 'Script/Regular',
+  family: 'MathJax_Script',
+  testString: "MATHJAX SCRIPT",
+  skew: {
+    0x41: 0.389,
+    0x42: 0.194,
+    0x43: 0.278,
+    0x44: 0.111,
+    0x45: 0.139,
+    0x46: 0.222,
+    0x47: 0.25,
+    0x48: 0.333,
+    0x49: 0.333,
+    0x4A: 0.417,
+    0x4B: 0.361,
+    0x4C: 0.306,
+    0x4D: 0.444,
+    0x4E: 0.389,
+    0x4F: 0.167,
+    0x50: 0.222,
+    0x51: 0.278,
+    0x52: 0.194,
+    0x53: 0.333,
+    0x54: 0.222,
+    0x55: 0.25,
+    0x56: 0.222,
+    0x57: 0.25,
+    0x58: 0.278,
+    0x59: 0.194,
+    0x5A: 0.306
+  },
+  Ranges: [
+    [0x0,0x7F,"BasicLatin"],
+    [0x80,0xFFFF,"Other"]
+  ]
+
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Script"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Script/Regular/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Other.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Other.js
new file mode 100644
index 0000000..65bc732
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Other.js
@@ -0,0 +1,28 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Other.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Script'],
+  {
+    0xA0: [0,0,250,0,0]                // NO-BREAK SPACE
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Script/Regular/Other.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Main.js
new file mode 100644
index 0000000..09a98a7
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Main.js
@@ -0,0 +1,75 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Size1'] = {
+  directory: 'Size1/Regular',
+  family: 'MathJax_Size1',
+  testString: "() [] {}",
+  0x20: [0,0,250,0,0],               // SPACE
+  0x28: [850,349,458,152,422],       // LEFT PARENTHESIS
+  0x29: [850,349,458,35,305],        // RIGHT PARENTHESIS
+  0x2F: [850,349,578,55,522],        // SOLIDUS
+  0x5B: [850,349,417,202,394],       // LEFT SQUARE BRACKET
+  0x5C: [850,349,578,54,522],        // REVERSE SOLIDUS
+  0x5D: [850,349,417,22,214],        // RIGHT SQUARE BRACKET
+  0x7B: [850,349,583,105,477],       // LEFT CURLY BRACKET
+  0x7D: [850,349,583,105,477],       // RIGHT CURLY BRACKET
+  0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+  0x2C6: [744,-551,556,-8,564],      // MODIFIER LETTER CIRCUMFLEX ACCENT
+  0x2DC: [722,-597,556,1,554],       // SMALL TILDE
+  0x302: [744,-551,0,-564,8],        // COMBINING CIRCUMFLEX ACCENT
+  0x303: [722,-597,0,-555,-2],       // COMBINING TILDE
+  0x2016: [602,0,778,257,521],       // DOUBLE VERTICAL LINE
+  0x2191: [600,0,667,112,555],       // UPWARDS ARROW
+  0x2193: [600,0,667,112,555],       // DOWNWARDS ARROW
+  0x21D1: [599,0,778,57,721],        // UPWARDS DOUBLE ARROW
+  0x21D3: [600,-1,778,57,721],       // DOWNWARDS DOUBLE ARROW
+  0x220F: [750,250,944,55,888],      // N-ARY PRODUCT
+  0x2210: [750,250,944,55,888],      // N-ARY COPRODUCT
+  0x2211: [750,250,1056,56,999],     // N-ARY SUMMATION
+  0x221A: [850,350,1000,111,1020],   // SQUARE ROOT
+  0x2223: [627,15,333,145,188],      // DIVIDES
+  0x2225: [627,15,556,145,410],      // PARALLEL TO
+  0x222B: [805,306,472,55,610],      // INTEGRAL
+  0x222C: [805,306,819,55,957],      // DOUBLE INTEGRAL
+  0x222D: [805,306,1166,55,1304],    // TRIPLE INTEGRAL
+  0x222E: [805,306,472,55,610],      // CONTOUR INTEGRAL
+  0x22C0: [750,249,833,55,777],      // N-ARY LOGICAL AND
+  0x22C1: [750,249,833,55,777],      // N-ARY LOGICAL OR
+  0x22C2: [750,249,833,55,777],      // N-ARY INTERSECTION
+  0x22C3: [750,249,833,55,777],      // N-ARY UNION
+  0x2308: [850,349,472,202,449],     // LEFT CEILING
+  0x2309: [850,349,472,22,269],      // RIGHT CEILING
+  0x230A: [850,349,472,202,449],     // LEFT FLOOR
+  0x230B: [850,349,472,22,269],      // RIGHT FLOOR
+  0x23D0: [602,0,667,312,355],       // VERTICAL LINE EXTENSION (used to extend arrows)
+  0x27E8: [850,350,472,97,394],      // MATHEMATICAL LEFT ANGLE BRACKET
+  0x27E9: [850,350,472,77,374],      // MATHEMATICAL RIGHT ANGLE BRACKET
+  0x2A00: [750,250,1111,56,1054],    // N-ARY CIRCLED DOT OPERATOR
+  0x2A01: [750,250,1111,56,1054],    // N-ARY CIRCLED PLUS OPERATOR
+  0x2A02: [750,250,1111,56,1054],    // N-ARY CIRCLED TIMES OPERATOR
+  0x2A04: [750,249,833,55,777],      // N-ARY UNION OPERATOR WITH PLUS
+  0x2A06: [750,249,833,55,777]       // N-ARY SQUARE UNION OPERATOR
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Size1"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Size1/Regular/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Main.js
new file mode 100644
index 0000000..140a5a9
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Main.js
@@ -0,0 +1,67 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Size2'] = {
+  directory: 'Size2/Regular',
+  family: 'MathJax_Size2',
+  testString: "() [] {}",
+  0x20: [0,0,250,0,0],               // SPACE
+  0x28: [1150,649,597,180,561],      // LEFT PARENTHESIS
+  0x29: [1150,649,597,35,416],       // RIGHT PARENTHESIS
+  0x2F: [1150,649,811,56,754],       // SOLIDUS
+  0x5B: [1150,649,472,224,455],      // LEFT SQUARE BRACKET
+  0x5C: [1150,649,811,54,754],       // REVERSE SOLIDUS
+  0x5D: [1150,649,472,16,247],       // RIGHT SQUARE BRACKET
+  0x7B: [1150,649,667,119,547],      // LEFT CURLY BRACKET
+  0x7D: [1150,649,667,119,547],      // RIGHT CURLY BRACKET
+  0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+  0x2C6: [772,-565,1000,-5,1004],    // MODIFIER LETTER CIRCUMFLEX ACCENT
+  0x2DC: [750,-611,1000,0,999],      // SMALL TILDE
+  0x302: [772,-565,0,-1005,4],       // COMBINING CIRCUMFLEX ACCENT
+  0x303: [750,-611,0,-1000,-1],      // COMBINING TILDE
+  0x220F: [950,450,1278,56,1221],    // N-ARY PRODUCT
+  0x2210: [950,450,1278,56,1221],    // N-ARY COPRODUCT
+  0x2211: [950,450,1444,55,1388],    // N-ARY SUMMATION
+  0x221A: [1150,650,1000,111,1020],  // SQUARE ROOT
+  0x222B: [1360,862,556,55,944],     // INTEGRAL
+  0x222C: [1360,862,1084,55,1472],   // DOUBLE INTEGRAL
+  0x222D: [1360,862,1592,55,1980],   // TRIPLE INTEGRAL
+  0x222E: [1360,862,556,55,944],     // CONTOUR INTEGRAL
+  0x22C0: [950,450,1111,55,1055],    // N-ARY LOGICAL AND
+  0x22C1: [950,450,1111,55,1055],    // N-ARY LOGICAL OR
+  0x22C2: [949,450,1111,55,1055],    // N-ARY INTERSECTION
+  0x22C3: [950,449,1111,55,1055],    // N-ARY UNION
+  0x2308: [1150,649,528,224,511],    // LEFT CEILING
+  0x2309: [1150,649,528,16,303],     // RIGHT CEILING
+  0x230A: [1150,649,528,224,511],    // LEFT FLOOR
+  0x230B: [1150,649,528,16,303],     // RIGHT FLOOR
+  0x27E8: [1150,649,611,112,524],    // MATHEMATICAL LEFT ANGLE BRACKET
+  0x27E9: [1150,649,611,85,498],     // MATHEMATICAL RIGHT ANGLE BRACKET
+  0x2A00: [949,449,1511,56,1454],    // N-ARY CIRCLED DOT OPERATOR
+  0x2A01: [949,449,1511,56,1454],    // N-ARY CIRCLED PLUS OPERATOR
+  0x2A02: [949,449,1511,56,1454],    // N-ARY CIRCLED TIMES OPERATOR
+  0x2A04: [950,449,1111,55,1055],    // N-ARY UNION OPERATOR WITH PLUS
+  0x2A06: [950,450,1111,55,1055]     // N-ARY SQUARE UNION OPERATOR
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Size2"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Size2/Regular/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Main.js
new file mode 100644
index 0000000..c72dfba
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Main.js
@@ -0,0 +1,51 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Size3'] = {
+  directory: 'Size3/Regular',
+  family: 'MathJax_Size3',
+  testString: "() [] {}",
+  0x20: [0,0,250,0,0],               // SPACE
+  0x28: [1450,949,736,209,701],      // LEFT PARENTHESIS
+  0x29: [1450,949,736,34,526],       // RIGHT PARENTHESIS
+  0x2F: [1450,949,1044,55,989],      // SOLIDUS
+  0x5B: [1450,949,528,247,516],      // LEFT SQUARE BRACKET
+  0x5C: [1450,949,1044,56,988],      // REVERSE SOLIDUS
+  0x5D: [1450,949,528,11,280],       // RIGHT SQUARE BRACKET
+  0x7B: [1450,949,750,130,618],      // LEFT CURLY BRACKET
+  0x7D: [1450,949,750,131,618],      // RIGHT CURLY BRACKET
+  0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+  0x2C6: [772,-564,1444,-4,1447],    // MODIFIER LETTER CIRCUMFLEX ACCENT
+  0x2DC: [749,-610,1444,1,1442],     // SMALL TILDE
+  0x302: [772,-564,0,-1448,3],       // COMBINING CIRCUMFLEX ACCENT
+  0x303: [749,-610,0,-1443,-2],      // COMBINING TILDE
+  0x221A: [1450,950,1000,111,1020],  // SQUARE ROOT
+  0x2308: [1450,949,583,246,571],    // LEFT CEILING
+  0x2309: [1450,949,583,11,336],     // RIGHT CEILING
+  0x230A: [1450,949,583,246,571],    // LEFT FLOOR
+  0x230B: [1450,949,583,11,336],     // RIGHT FLOOR
+  0x27E8: [1450,950,750,126,654],    // MATHEMATICAL LEFT ANGLE BRACKET
+  0x27E9: [1450,949,750,94,623]      // MATHEMATICAL RIGHT ANGLE BRACKET
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Size3"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Size3/Regular/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Main.js
new file mode 100644
index 0000000..cd0aef7
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Main.js
@@ -0,0 +1,78 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Size4'] = {
+  directory: 'Size4/Regular',
+  family: 'MathJax_Size4',
+  testString: "() [] {}",
+  0x20: [0,0,250,0,0],               // SPACE
+  0x28: [1750,1249,792,237,758],     // LEFT PARENTHESIS
+  0x29: [1750,1249,792,33,554],      // RIGHT PARENTHESIS
+  0x2F: [1750,1249,1278,56,1221],    // SOLIDUS
+  0x5B: [1750,1249,583,269,577],     // LEFT SQUARE BRACKET
+  0x5C: [1750,1249,1278,56,1221],    // REVERSE SOLIDUS
+  0x5D: [1750,1249,583,5,313],       // RIGHT SQUARE BRACKET
+  0x7B: [1750,1249,806,144,661],     // LEFT CURLY BRACKET
+  0x7D: [1750,1249,806,144,661],     // RIGHT CURLY BRACKET
+  0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+  0x2C6: [845,-561,1889,-14,1902],   // MODIFIER LETTER CIRCUMFLEX ACCENT
+  0x2DC: [823,-583,1889,1,1885],     // SMALL TILDE
+  0x302: [845,-561,0,-1903,13],      // COMBINING CIRCUMFLEX ACCENT
+  0x303: [823,-583,0,-1888,-4],      // COMBINING TILDE
+  0x221A: [1750,1250,1000,111,1020], // SQUARE ROOT
+  0x2308: [1750,1249,639,269,633],   // LEFT CEILING
+  0x2309: [1750,1249,639,5,369],     // RIGHT CEILING
+  0x230A: [1750,1249,639,269,633],   // LEFT FLOOR
+  0x230B: [1750,1249,639,5,369],     // RIGHT FLOOR
+  0x239B: [1154,655,875,291,843],    // LEFT PARENTHESIS UPPER HOOK
+  0x239C: [610,10,875,291,417],      // LEFT PARENTHESIS EXTENSION
+  0x239D: [1165,644,875,291,843],    // LEFT PARENTHESIS LOWER HOOK
+  0x239E: [1154,655,875,31,583],     // RIGHT PARENTHESIS UPPER HOOK
+  0x239F: [610,10,875,457,583],      // RIGHT PARENTHESIS EXTENSION
+  0x23A0: [1165,644,875,31,583],     // RIGHT PARENTHESIS LOWER HOOK
+  0x23A1: [1154,645,667,319,666],    // LEFT SQUARE BRACKET UPPER CORNER
+  0x23A2: [602,0,667,319,403],       // LEFT SQUARE BRACKET EXTENSION
+  0x23A3: [1155,644,667,319,666],    // LEFT SQUARE BRACKET LOWER CORNER
+  0x23A4: [1154,645,667,0,347],      // RIGHT SQUARE BRACKET UPPER CORNER
+  0x23A5: [602,0,667,263,347],       // RIGHT SQUARE BRACKET EXTENSION
+  0x23A6: [1155,644,667,0,347],      // RIGHT SQUARE BRACKET LOWER CORNER
+  0x23A7: [899,10,889,384,718],      // LEFT CURLY BRACKET UPPER HOOK
+  0x23A8: [1160,660,889,170,504],    // LEFT CURLY BRACKET MIDDLE PIECE
+  0x23A9: [10,899,889,384,718],      // LEFT CURLY BRACKET LOWER HOOK
+  0x23AA: [310,10,889,384,504],      // CURLY BRACKET EXTENSION
+  0x23AB: [899,10,889,170,504],      // RIGHT CURLY BRACKET UPPER HOOK
+  0x23AC: [1160,660,889,384,718],    // RIGHT CURLY BRACKET MIDDLE PIECE
+  0x23AD: [10,899,889,170,504],      // RIGHT CURLY BRACKET LOWER HOOK
+  0x23B7: [935,885,1056,111,742],    // RADICAL SYMBOL BOTTOM
+  0x27E8: [1750,1248,806,140,703],   // MATHEMATICAL LEFT ANGLE BRACKET
+  0x27E9: [1750,1248,806,103,665],   // MATHEMATICAL RIGHT ANGLE BRACKET
+  0xE000: [625,14,1056,702,742],     // stix-radical symbol vertical extender
+  0xE001: [605,14,1056,702,1076],    // stix-radical symbol top corner piece
+  0xE150: [120,213,450,-24,460],     // stix-horizontal brace, down left piece
+  0xE151: [120,213,450,-10,474],     // stix-horizontal brace, down right piece
+  0xE152: [333,0,450,-24,460],       // stix-horizontal brace, upper left piece
+  0xE153: [333,0,450,-10,474],       // stix-horizontal brace, upper right piece
+  0xE154: [120,0,400,-10,410]        // stix-oblique open face capital letter A
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Size4"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Size4/Regular/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/BasicLatin.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/BasicLatin.js
new file mode 100644
index 0000000..90431b2
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/BasicLatin.js
@@ -0,0 +1,123 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/BasicLatin.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Typewriter'],
+  {
+    0x20: [0,0,250,0,0],               // SPACE
+    0x21: [622,0,525,206,320],         // EXCLAMATION MARK
+    0x22: [623,-333,525,122,402],      // QUOTATION MARK
+    0x23: [611,0,525,36,489],          // NUMBER SIGN
+    0x24: [694,82,525,58,466],         // DOLLAR SIGN
+    0x25: [694,83,525,35,489],         // PERCENT SIGN
+    0x26: [622,11,525,28,490],         // AMPERSAND
+    0x27: [611,-287,525,175,349],      // APOSTROPHE
+    0x28: [694,82,525,166,437],        // LEFT PARENTHESIS
+    0x29: [694,82,525,87,358],         // RIGHT PARENTHESIS
+    0x2A: [520,-90,525,68,456],        // ASTERISK
+    0x2B: [531,-81,525,38,487],        // PLUS SIGN
+    0x2C: [140,139,525,173,353],       // COMMA
+    0x2D: [341,-271,525,57,468],       // HYPHEN-MINUS
+    0x2E: [140,-1,525,193,332],        // FULL STOP
+    0x2F: [694,83,525,58,466],         // SOLIDUS
+    0x30: [621,10,525,42,482],         // DIGIT ZERO
+    0x31: [622,-1,525,99,450],         // DIGIT ONE
+    0x32: [622,-1,525,52,472],         // DIGIT TWO
+    0x33: [622,11,525,44,479],         // DIGIT THREE
+    0x34: [624,-1,525,29,495],         // DIGIT FOUR
+    0x35: [611,10,525,52,472],         // DIGIT FIVE
+    0x36: [622,11,525,45,479],         // DIGIT SIX
+    0x37: [627,10,525,44,480],         // DIGIT SEVEN
+    0x38: [621,10,525,45,479],         // DIGIT EIGHT
+    0x39: [622,11,525,46,479],         // DIGIT NINE
+    0x3A: [431,-1,525,193,332],        // COLON
+    0x3B: [431,139,525,175,337],       // SEMICOLON
+    0x3C: [557,-55,525,57,468],        // LESS-THAN SIGN
+    0x3D: [417,-195,525,38,487],       // EQUALS SIGN
+    0x3E: [557,-55,525,57,468],        // GREATER-THAN SIGN
+    0x3F: [617,0,525,62,462],          // QUESTION MARK
+    0x40: [617,6,525,44,481],          // COMMERCIAL AT
+    0x41: [623,-1,525,28,496],         // LATIN CAPITAL LETTER A
+    0x42: [611,-1,525,17,482],         // LATIN CAPITAL LETTER B
+    0x43: [622,11,525,40,484],         // LATIN CAPITAL LETTER C
+    0x44: [611,-1,525,16,485],         // LATIN CAPITAL LETTER D
+    0x45: [611,-1,525,19,502],         // LATIN CAPITAL LETTER E
+    0x46: [611,-1,525,22,490],         // LATIN CAPITAL LETTER F
+    0x47: [622,11,525,38,496],         // LATIN CAPITAL LETTER G
+    0x48: [611,-1,525,16,508],         // LATIN CAPITAL LETTER H
+    0x49: [611,-1,525,72,452],         // LATIN CAPITAL LETTER I
+    0x4A: [611,11,525,57,479],         // LATIN CAPITAL LETTER J
+    0x4B: [611,-1,525,18,495],         // LATIN CAPITAL LETTER K
+    0x4C: [611,0,525,25,488],          // LATIN CAPITAL LETTER L
+    0x4D: [611,-1,525,12,512],         // LATIN CAPITAL LETTER M
+    0x4E: [611,0,525,20,504],          // LATIN CAPITAL LETTER N
+    0x4F: [621,10,525,56,468],         // LATIN CAPITAL LETTER O
+    0x50: [611,-1,525,19,480],         // LATIN CAPITAL LETTER P
+    0x51: [621,138,525,56,468],        // LATIN CAPITAL LETTER Q
+    0x52: [611,11,525,16,522],         // LATIN CAPITAL LETTER R
+    0x53: [622,11,525,52,472],         // LATIN CAPITAL LETTER S
+    0x54: [611,-1,525,26,498],         // LATIN CAPITAL LETTER T
+    0x55: [611,11,525,-3,528],         // LATIN CAPITAL LETTER U
+    0x56: [611,7,525,19,505],          // LATIN CAPITAL LETTER V
+    0x57: [611,7,525,12,512],          // LATIN CAPITAL LETTER W
+    0x58: [611,-1,525,28,495],         // LATIN CAPITAL LETTER X
+    0x59: [611,-1,525,20,505],         // LATIN CAPITAL LETTER Y
+    0x5A: [611,-1,525,48,481],         // LATIN CAPITAL LETTER Z
+    0x5B: [694,82,525,214,483],        // LEFT SQUARE BRACKET
+    0x5C: [694,83,525,58,466],         // REVERSE SOLIDUS
+    0x5D: [694,82,525,41,310],         // RIGHT SQUARE BRACKET
+    0x5E: [611,-460,525,96,428],       // CIRCUMFLEX ACCENT
+    0x5F: [-25,95,525,57,468],         // LOW LINE
+    0x60: [681,-357,525,176,350],      // GRAVE ACCENT
+    0x61: [439,6,525,48,524],          // LATIN SMALL LETTER A
+    0x62: [611,6,525,4,492],           // LATIN SMALL LETTER B
+    0x63: [440,6,525,66,466],          // LATIN SMALL LETTER C
+    0x64: [611,6,525,31,520],          // LATIN SMALL LETTER D
+    0x65: [440,6,525,48,464],          // LATIN SMALL LETTER E
+    0x66: [617,-1,525,35,437],         // LATIN SMALL LETTER F
+    0x67: [442,229,525,28,509],        // LATIN SMALL LETTER G
+    0x68: [611,-1,525,4,520],          // LATIN SMALL LETTER H
+    0x69: [612,-1,525,72,462],         // LATIN SMALL LETTER I
+    0x6A: [612,228,525,48,376],        // LATIN SMALL LETTER J
+    0x6B: [611,-1,525,13,507],         // LATIN SMALL LETTER K
+    0x6C: [611,-1,525,51,474],         // LATIN SMALL LETTER L
+    0x6D: [436,-1,525,-12,536],        // LATIN SMALL LETTER M
+    0x6E: [436,-1,525,4,520],          // LATIN SMALL LETTER N
+    0x6F: [440,6,525,52,472],          // LATIN SMALL LETTER O
+    0x70: [437,221,525,4,492],         // LATIN SMALL LETTER P
+    0x71: [437,221,525,34,545],        // LATIN SMALL LETTER Q
+    0x72: [437,-1,525,24,487],         // LATIN SMALL LETTER R
+    0x73: [440,6,525,72,458],          // LATIN SMALL LETTER S
+    0x74: [554,6,525,25,448],          // LATIN SMALL LETTER T
+    0x75: [431,5,525,4,520],           // LATIN SMALL LETTER U
+    0x76: [431,4,525,24,500],          // LATIN SMALL LETTER V
+    0x77: [431,4,525,16,508],          // LATIN SMALL LETTER W
+    0x78: [431,-1,525,29,495],         // LATIN SMALL LETTER X
+    0x79: [431,228,525,26,500],        // LATIN SMALL LETTER Y
+    0x7A: [431,-1,525,34,475],         // LATIN SMALL LETTER Z
+    0x7B: [694,83,525,50,475],         // LEFT CURLY BRACKET
+    0x7C: [694,82,525,228,297],        // VERTICAL LINE
+    0x7D: [694,83,525,49,475],         // RIGHT CURLY BRACKET
+    0x7E: [611,-466,525,87,437],       // TILDE
+    0x7F: [612,-519,525,104,421]       // ??
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Typewriter/Regular/BasicLatin.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js
new file mode 100644
index 0000000..530a6cd
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js
@@ -0,0 +1,36 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Typewriter'],
+  {
+    0x300: [611,-485,0,-409,-195],     // COMBINING GRAVE ACCENT
+    0x301: [611,-485,0,-331,-117],     // COMBINING ACUTE ACCENT
+    0x302: [611,-460,0,-429,-97],      // COMBINING CIRCUMFLEX ACCENT
+    0x303: [611,-466,0,-438,-88],      // COMBINING TILDE
+    0x304: [577,-500,0,-452,-74],      // COMBINING MACRON
+    0x306: [611,-504,0,-446,-79],      // COMBINING BREVE
+    0x308: [612,-519,0,-421,-104],     // COMBINING DIAERESIS
+    0x30A: [619,-499,0,-344,-182],     // COMBINING RING ABOVE
+    0x30C: [577,-449,0,-427,-99]       // COMBINING CARON
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Typewriter/Regular/CombDiacritMarks.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js
new file mode 100644
index 0000000..b7628bd
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js
@@ -0,0 +1,36 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Typewriter'] = {
+  directory: 'Typewriter/Regular',
+  family: 'MathJax_Typewriter',
+  testString: "MathJax Typewriter |",
+  Ranges: [
+    [0x0,0x7F,"BasicLatin"],
+    [0x80,0xFFFF,"Other"],
+    [0x300,0x36F,"CombDiacritMarks"]
+  ]
+
+};
+
+MathJax.Callback.Queue(
+  ["initFont",MathJax.OutputJax["HTML-CSS"],"MathJax_Typewriter"],
+  ["loadComplete",MathJax.Ajax,MathJax.OutputJax["HTML-CSS"].fontDir+"/Typewriter/Regular/Main.js"]
+);
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js
new file mode 100644
index 0000000..b64657d
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js
@@ -0,0 +1,44 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js
+ *
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+MathJax.Hub.Insert(
+  MathJax.OutputJax['HTML-CSS'].FONTDATA.FONTS['MathJax_Typewriter'],
+  {
+    0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+    0x131: [431,-1,525,72,462],        // LATIN SMALL LETTER DOTLESS I
+    0x237: [431,228,525,48,376],       // LATIN SMALL LETTER DOTLESS J
+    0x393: [611,0,525,25,488],         // GREEK CAPITAL LETTER GAMMA
+    0x394: [623,0,525,35,489],         // GREEK CAPITAL LETTER DELTA
+    0x398: [621,10,525,56,468],        // GREEK CAPITAL LETTER THETA
+    0x39B: [623,-1,525,30,495],        // GREEK CAPITAL LETTER LAMDA
+    0x39E: [611,-1,525,33,491],        // GREEK CAPITAL LETTER XI
+    0x3A0: [611,-1,525,16,508],        // GREEK CAPITAL LETTER PI
+    0x3A3: [611,-1,525,40,484],        // GREEK CAPITAL LETTER SIGMA
+    0x3A5: [622,-1,525,38,486],        // GREEK CAPITAL LETTER UPSILON
+    0x3A6: [611,-1,525,41,483],        // GREEK CAPITAL LETTER PHI
+    0x3A8: [611,-1,525,37,487],        // GREEK CAPITAL LETTER PSI
+    0x3A9: [622,-1,525,32,492],        // GREEK CAPITAL LETTER OMEGA
+    0x7E2: [611,-287,525,175,349],     // ??
+    0x7E3: [681,-357,525,176,350],     // ??
+    0x2032: [623,-334,525,211,313]     // PRIME
+  }
+);
+
+MathJax.Ajax.loadComplete(MathJax.OutputJax["HTML-CSS"].fontDir + "/Typewriter/Regular/Other.js");
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/fontdata-extra.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/fontdata-extra.js
new file mode 100644
index 0000000..301b61a
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/fontdata-extra.js
@@ -0,0 +1,236 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/fontdata-extra.js
+ *  
+ *  Adds extra stretchy characters to the TeX font data.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2011-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+(function (HTMLCSS) {
+  var VERSION = "2.1";
+  
+  var DELIMITERS = HTMLCSS.FONTDATA.DELIMITERS;
+
+  var MAIN   = "MathJax_Main",
+      BOLD   = "MathJax_Main-bold",
+      AMS    = "MathJax_AMS",
+      SIZE1  = "MathJax_Size1",
+      SIZE4  = "MathJax_Size4";
+  var H = "H", V = "V";
+  
+  var delim = {
+    0x003D: // equal sign
+    {
+      dir: H, HW: [[.767,MAIN]], stretch: {rep:[0x003D,MAIN]}
+    },
+    0x219E: // left two-headed arrow
+    {
+      dir: H, HW: [[1,AMS]], stretch: {left:[0x219E,AMS], rep:[0x2212,MAIN]}
+    },
+    0x21A0: // right two-headed arrow
+    {
+      dir: H, HW: [[1,AMS]], stretch: {right:[0x21A0,AMS], rep:[0x2212,MAIN]}
+    },
+    0x21A4: // left arrow from bar
+    {
+      dir: H, HW: [],
+      stretch: {min:1, left:[0x2190,MAIN], rep:[0x2212,MAIN], right:[0x2223,SIZE1,0,-.05,.9]}
+    },
+    0x21A5: // up arrow from bar
+    {
+      dir: V, HW: [],
+      stretch: {min:.6, bot:[0x22A5,BOLD,0,0,.75], ext:[0x23D0,SIZE1], top:[0x2191,SIZE1]}
+    },
+    0x21A6: // right arrow from bar
+    {
+      dir: H, HW: [[1,MAIN]],
+      stretch: {left:[0x2223,SIZE1,-.09,-.05,.9], rep:[0x2212,MAIN], right:[0x2192,MAIN]}
+    },
+    0x21A7: // down arrow from bar
+    {
+      dir: V, HW: [],
+      stretch: {min:.6, top:[0x22A4,BOLD,0,0,.75], ext:[0x23D0,SIZE1], bot:[0x2193,SIZE1]}
+    },
+    0x21B0: // up arrow with top leftwards
+    {
+      dir: V, HW: [[.722,AMS]],
+      stretch: {top:[0x21B0,AMS], ext:[0x23D0,SIZE1,.097]}
+    },
+    0x21B1: // up arrow with top right
+    {
+      dir: V, HW: [[.722,AMS]],
+      stretch: {top:[0x21B1,AMS,.27], ext:[0x23D0,SIZE1]}
+    },
+    0x21BC: // left harpoon with barb up
+    {
+      dir: H, HW: [[1,MAIN]],
+      stretch: {left:[0x21BC,MAIN], rep:[0x2212,MAIN]}
+    },
+    0x21BD: // left harpoon with barb down
+    {
+      dir: H, HW: [[1,MAIN]],
+      stretch: {left:[0x21BD,MAIN], rep:[0x2212,MAIN]}
+    },
+    0x21BE: // up harpoon with barb right
+    {
+      dir: V, HW: [[.888,AMS]],
+      stretch: {top:[0x21BE,AMS,.12,0,1.1], ext:[0x23D0,SIZE1]}
+    },
+    0x21BF: // up harpoon with barb left
+    {
+      dir: V, HW: [[.888,AMS]],
+      stretch: {top:[0x21BF,AMS,.12,0,1.1], ext:[0x23D0,SIZE1]}
+    },
+    0x21C0: // right harpoon with barb up
+    {
+      dir: H, HW: [[1,MAIN]],
+      stretch: {right:[0x21C0,MAIN], rep:[0x2212,MAIN]}
+    },
+    0x21C1: // right harpoon with barb down
+    {
+      dir: H, HW: [[1,MAIN]],
+      stretch: {right:[0x21C1,MAIN], rep:[0x2212,MAIN]}
+    },
+    0x21C2: // down harpoon with barb right
+    {
+      dir: V, HW: [[.888,AMS]],
+      stretch: {bot:[0x21C2,AMS,.12,0,1.1], ext:[0x23D0,SIZE1]}
+    },
+    0x21C3: // down harpoon with barb left
+    {
+      dir: V, HW: [[.888,AMS]],
+      stretch: {bot:[0x21C3,AMS,.12,0,1.1], ext:[0x23D0,SIZE1]}
+    },
+    0x21DA: // left triple arrow
+    {
+      dir: H, HW: [[1,AMS]],
+      stretch: {left:[0x21DA,AMS], rep:[0x2261,MAIN]}
+    },
+    0x21DB: // right triple arrow
+    {
+      dir: H, HW: [[1,AMS]],
+      stretch: {right:[0x21DB,AMS], rep:[0x2261,MAIN]}
+    },
+    0x23B4: // top square bracket
+    {
+      dir: H, HW: [],
+      stretch: {min:.5, left:[0x250C,AMS,0,-.1], rep:[0x2212,MAIN,0,.35], right:[0x2510,AMS,0,-.1]}
+    },
+    0x23B5: // bottom square bracket
+    {
+      dir: H, HW: [],
+      stretch: {min:.5, left:[0x2514,AMS,0,.26], rep:[0x2212,MAIN,0,0,0,.25], right:[0x2518,AMS,0,.26]}
+    },
+    0x23DC: // top paren
+    {
+      dir: H, HW: [[.778,AMS,0,0x2322],[1,MAIN,0,0x2322]],
+      stretch: {left:[0xE150,SIZE4], rep:[0xE154,SIZE4], right:[0xE151,SIZE4]}
+    },
+    0x23DD: // bottom paren
+    {
+      dir: H, HW: [[.778,AMS,0,0x2323],[1,MAIN,0,0x2323]],
+      stretch: {left:[0xE152,SIZE4], rep:[0xE154,SIZE4], right:[0xE153,SIZE4]}
+    },
+    0x23E0: // top tortoise shell
+    {
+      dir: H, HW: [],
+      stretch: {min:1.25, left:[0x2CA,MAIN,-.1], rep:[0x2C9,MAIN,0,.13], right:[0x2CB,MAIN], fullExtenders:true}
+    },
+    0x23E1: // bottom tortoise shell
+    {
+      dir: H, HW: [],
+      stretch: {min:1.5, left:[0x2CB,MAIN,-.1,.1], rep:[0x2C9,MAIN], right:[0x2CA,MAIN,-.1,.1], fullExtenders:true}
+    },
+    0x2906: // leftwards double arrow from bar
+    {
+      dir: H, HW: [],
+      stretch: {min:1, left:[0x21D0,MAIN], rep:[0x3D,MAIN], right:[0x2223,SIZE1,0,-.1]}
+    },
+    0x2907: // rightwards double arrow from bar
+    {
+      dir: H, HW: [],
+      stretch: {min:.7, left:[0x22A8,AMS,0,-.12], rep:[0x3D,MAIN], right:[0x21D2,MAIN]}
+    },
+    0x294E: // left barb up right barb up harpoon
+    {
+      dir: H, HW: [],
+      stretch: {min:.5, left:[0x21BC,MAIN], rep:[0x2212,MAIN], right:[0x21C0,MAIN]}
+    },
+    0x294F: // up barb right down barb right harpoon
+    {
+      dir: V, HW: [],
+      stretch: {min:.5, top:[0x21BE,AMS,.12,0,1.1], ext:[0x23D0,SIZE1], bot:[0x21C2,AMS,.12,0,1.1]}
+    },
+    0x2950: // left barb dow right barb down harpoon
+    {
+      dir: H, HW: [],
+      stretch: {min:.5, left:[0x21BD,MAIN], rep:[0x2212,MAIN], right:[0x21C1,MAIN]}
+    },
+    0x2951: // up barb left down barb left harpoon
+    {
+      dir: V, HW: [],
+      stretch: {min:.5, top:[0x21BF,AMS,.12,0,1.1], ext:[0x23D0,SIZE1], bot:[0x21C3,AMS,.12,0,1.1]}
+    },
+    0x295A: // leftwards harpoon with barb up from bar
+    {
+      dir: H, HW: [],
+      stretch: {min:1, left:[0x21BC,MAIN], rep:[0x2212,MAIN], right:[0x2223,SIZE1,0,-.05,.9]}
+    },
+    0x295B: // rightwards harpoon with barb up from bar
+    {
+      dir: H, HW: [],
+      stretch: {min:1, left:[0x2223,SIZE1,-.05,-.05,.9], rep:[0x2212,MAIN], right:[0x21C0,MAIN]}
+    },
+    0x295C: // up harpoon with barb right from bar
+    {
+      dir: V, HW: [],
+      stretch: {min:.7, bot:[0x22A5,BOLD,0,0,.75], ext:[0x23D0,SIZE1], top:[0x21BE,AMS,.12,0,1.1]}
+    },
+    0x295D: // down harpoon with barb right from bar
+    {
+      dir: V, HW: [],
+      stretch: {min:.7, top:[0x22A4,BOLD,0,0,.75], ext:[0x23D0,SIZE1], bot:[0x21C2,AMS,.12,0,1.1]}
+    },
+    0x295E: // leftwards harpoon with barb down from bar
+    {
+      dir: H, HW: [],
+      stretch: {min:1, left:[0x21BD,MAIN], rep:[0x2212,MAIN], right:[0x2223,SIZE1,0,-.05,.9]}
+    },
+    0x295F: // rightwards harpoon with barb down from bar
+    {
+      dir: H, HW: [],
+      stretch: {min:1, left:[0x2223,SIZE1,-.05,-.05,.9], rep:[0x2212,MAIN], right:[0x21C1,MAIN]}
+    },
+    0x2960: // up harpoon with barb left from bar
+    {
+      dir: V, HW: [],
+      stretch: {min:.7, bot:[0x22A5,BOLD,0,0,.75], ext:[0x23D0,SIZE1], top:[0x21BF,AMS,.12,0,1.1]}
+    },
+    0x2961: // down harpoon with barb left from bar
+    {
+      dir: V, HW: [],
+      stretch: {min:.7, top:[0x22A4,BOLD,0,0,.75], ext:[0x23D0,SIZE1], bot:[0x21C3,AMS,.12,0,1.1]}
+    }
+  };
+  
+  for (var id in delim) {if (delim.hasOwnProperty(id)) {DELIMITERS[id] = delim[id]}};
+
+  MathJax.Ajax.loadComplete(HTMLCSS.fontDir + "/fontdata-extra.js");
+
+})(MathJax.OutputJax["HTML-CSS"]);
+
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/fontdata.js b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/fontdata.js
new file mode 100644
index 0000000..7213d37
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/fonts/TeX/fontdata.js
@@ -0,0 +1,1956 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/fonts/TeX/fontdata.js
+ *  
+ *  Initializes the HTML-CSS OutputJax to use the MathJax TeX fonts
+ *  for displaying mathematics.
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+(function (HTMLCSS,MML,AJAX) {
+  var VERSION = "2.1";
+  
+  var MAIN   = "MathJax_Main",
+      BOLD   = "MathJax_Main-bold",
+      ITALIC = "MathJax_Math-italic",
+      AMS    = "MathJax_AMS",
+      SIZE1  = "MathJax_Size1",
+      SIZE2  = "MathJax_Size2",
+      SIZE3  = "MathJax_Size3",
+      SIZE4  = "MathJax_Size4";
+  var H = "H", V = "V", EXTRAH = {load:"extra", dir:H}, EXTRAV = {load:"extra", dir:V};
+
+  HTMLCSS.Augment({
+    FONTDATA: {
+      version: VERSION,
+      
+      TeX_factor: 1,    // TeX em's to font em's
+      baselineskip: 1.2,
+      lineH: .8, lineD: .2,
+      
+      hasStyleChar: true,  // char 0xEFFD encodes font style
+ 
+      FONTS: {
+        "MathJax_Main":             "Main/Regular/Main.js",
+        "MathJax_Main-bold":        "Main/Bold/Main.js",
+        "MathJax_Main-italic":      "Main/Italic/Main.js",
+        "MathJax_Math-italic":      "Math/Italic/Main.js",
+        "MathJax_Math-bold-italic": "Math/BoldItalic/Main.js",
+        "MathJax_Caligraphic":      "Caligraphic/Regular/Main.js",
+        "MathJax_Size1":            "Size1/Regular/Main.js",
+        "MathJax_Size2":            "Size2/Regular/Main.js",
+        "MathJax_Size3":            "Size3/Regular/Main.js",
+        "MathJax_Size4":            "Size4/Regular/Main.js",
+        "MathJax_AMS":              "AMS/Regular/Main.js",
+        "MathJax_Fraktur":          "Fraktur/Regular/Main.js",
+        "MathJax_Fraktur-bold":     "Fraktur/Bold/Main.js",
+        "MathJax_SansSerif":        "SansSerif/Regular/Main.js",
+        "MathJax_SansSerif-bold":   "SansSerif/Bold/Main.js",
+        "MathJax_SansSerif-italic": "SansSerif/Italic/Main.js",
+        "MathJax_Script":           "Script/Regular/Main.js",
+        "MathJax_Typewriter":       "Typewriter/Regular/Main.js"
+      },
+      
+      VARIANT: {
+        "normal": {fonts:[MAIN,SIZE1,AMS],
+                   offsetG: 0x03B1, variantG: "italic",
+                   remap: {0x391:0x41, 0x392:0x42, 0x395:0x45, 0x396:0x5A, 0x397:0x48,
+                           0x399:0x49, 0x39A:0x4B, 0x39C:0x4D, 0x39D:0x4E, 0x39F:0x4F,
+                           0x3A1:0x50, 0x3A4:0x54, 0x3A7:0x58,
+                           0x2216:[0x2216,"-TeX-variant"],  // \smallsetminus
+                           0x210F:[0x210F,"-TeX-variant"],  // \hbar
+                           0x2032:[0x27,"sans-serif-italic"],  // HACK: a smaller prime
+                           0x29F8:[0x002F,MML.VARIANT.ITALIC]}},
+        "bold":   {fonts:[BOLD,SIZE1,AMS], bold:true,
+                   offsetG: 0x03B1, variantG: "bold-italic",
+                   remap: {0x391:0x41, 0x392:0x42, 0x395:0x45, 0x396:0x5A, 0x397:0x48,
+                           0x399:0x49, 0x39A:0x4B, 0x39C:0x4D, 0x39D:0x4E, 0x39F:0x4F,
+                           0x3A1:0x50, 0x3A4:0x54, 0x3A7:0x58, 0x29F8:[0x002F,"bold-italic"],
+                           0x219A:"\u2190\u0338", 0x219B:"\u2192\u0338", 0x21AE:"\u2194\u0338",
+                           0x21CD:"\u21D0\u0338", 0x21CE:"\u21D4\u0338", 0x21CF:"\u21D2\u0338",
+                           0x2204:"\u2203\u0338", 0x2224:"\u2223\u0338", 0x2226:"\u2225\u0338",
+                           0x2241:"\u223C\u0338", 0x2247:"\u2245\u0338", 
+                           0x226E:"<\u0338", 0x226F:">\u0338",
+                           0x2270:"\u2264\u0338", 0x2271:"\u2265\u0338",
+                           0x2280:"\u227A\u0338", 0x2281:"\u227B\u0338",
+                           0x2288:"\u2286\u0338", 0x2289:"\u2287\u0338",
+                           0x22AC:"\u22A2\u0338", 0x22AD:"\u22A8\u0338",
+//                         0x22AE:"\u22A9\u0338", 0x22AF:"\u22AB\u0338",
+                           0x22E0:"\u227C\u0338", 0x22E1:"\u227D\u0338"//,
+//                         0x22EA:"\u22B2\u0338", 0x22EB:"\u22B3\u0338",
+//                         0x22EC:"\u22B4\u0338", 0x22ED:"\u22B5\u0338"
+                  }},
+        "italic": {fonts:[ITALIC,"MathJax_Main-italic",MAIN,SIZE1,AMS], italic:true,
+                   remap: {0x391:0x41, 0x392:0x42, 0x395:0x45, 0x396:0x5A, 0x397:0x48,
+                           0x399:0x49, 0x39A:0x4B, 0x39C:0x4D, 0x39D:0x4E, 0x39F:0x4F,
+                           0x3A1:0x50, 0x3A4:0x54, 0x3A7:0x58}},
+        "bold-italic": {fonts:["MathJax_Math-bold-italic",BOLD,SIZE1,AMS], bold:true, italic:true,
+                   remap: {0x391:0x41, 0x392:0x42, 0x395:0x45, 0x396:0x5A, 0x397:0x48,
+                           0x399:0x49, 0x39A:0x4B, 0x39C:0x4D, 0x39D:0x4E, 0x39F:0x4F,
+                           0x3A1:0x50, 0x3A4:0x54, 0x3A7:0x58}},
+        "double-struck": {fonts:[AMS, MAIN]},
+        "fraktur": {fonts:["MathJax_Fraktur",MAIN,SIZE1,AMS]},
+        "bold-fraktur": {fonts:["MathJax_Fraktur-bold",BOLD,SIZE1,AMS], bold:true},
+        "script": {fonts:["MathJax_Script",MAIN,SIZE1,AMS]},
+        "bold-script": {fonts:["MathJax_Script",BOLD,SIZE1,AMS], bold:true},
+        "sans-serif": {fonts:["MathJax_SansSerif",MAIN,SIZE1,AMS]},
+        "bold-sans-serif": {fonts:["MathJax_SansSerif-bold",BOLD,SIZE1,AMS], bold:true},
+        "sans-serif-italic": {fonts:["MathJax_SansSerif-italic","MathJax_Main-italic",SIZE1,AMS], italic:true},
+        "sans-serif-bold-italic": {fonts:["MathJax_SansSerif-italic","MathJax_Main-italic",SIZE1,AMS], bold:true, italic:true},
+        "monospace": {fonts:["MathJax_Typewriter",MAIN,SIZE1,AMS]},
+        "-tex-caligraphic": {fonts:["MathJax_Caligraphic",MAIN], offsetA: 0x41, variantA: "italic"},
+        "-tex-oldstyle": {fonts:["MathJax_Caligraphic",MAIN]},
+        "-tex-mathit": {fonts:["MathJax_Main-italic",ITALIC,MAIN,SIZE1,AMS], italic:true, noIC: true,
+                   remap: {0x391:0x41, 0x392:0x42, 0x395:0x45, 0x396:0x5A, 0x397:0x48,
+                           0x399:0x49, 0x39A:0x4B, 0x39C:0x4D, 0x39D:0x4E, 0x39F:0x4F,
+                           0x3A1:0x50, 0x3A4:0x54, 0x3A7:0x58}},
+        "-TeX-variant": {fonts:[AMS,MAIN,SIZE1],   // HACK: to get larger prime for \prime
+                   remap: {
+                     0x2268: 0xE00C, 0x2269: 0xE00D, 0x2270: 0xE011, 0x2271: 0xE00E,
+                     0x2A87: 0xE010, 0x2A88: 0xE00F, 0x2224: 0xE006, 0x2226: 0xE007,
+                     0x2288: 0xE016, 0x2289: 0xE018, 0x228A: 0xE01A, 0x228B: 0xE01B,
+                     0x2ACB: 0xE017, 0x2ACC: 0xE019, 0x03DC: 0xE008, 0x03F0: 0xE009,
+                     0x2216:[0x2216,MML.VARIANT.NORMAL], // \setminus
+                     0x210F:[0x210F,MML.VARIANT.NORMAL]  // \hslash
+                   }},
+        "-largeOp": {fonts:[SIZE2,SIZE1,MAIN]},
+        "-smallOp": {fonts:[SIZE1,MAIN]}
+      },
+      
+      RANGES: [
+        {name: "alpha", low: 0x61, high: 0x7A, offset: "A", add: 32},
+        {name: "number", low: 0x30, high: 0x39, offset: "N"},
+        {name: "greek", low: 0x03B1, high: 0x03F6, offset: "G"}
+      ],
+      
+      RULECHAR: 0x2212,
+      
+      REMAP: {
+        0x203E: 0x2C9,                  // overline
+        0x20D0: 0x21BC, 0x20D1: 0x21C0, // combining left and right harpoons
+        0x20D6: 0x2190, 0x20E1: 0x2194, // combining left arrow and lef-right arrow
+        0x20EC: 0x21C1, 0x20ED: 0x21BD, // combining low right and left harpoons
+        0x20EE: 0x2190, 0x20EF: 0x2192, // combining low left and right arrows
+        0x20F0: 0x2A,                   // combining asterisk
+        0xFE37: 0x23DE, 0xFE38: 0x23DF, // OverBrace, UnderBrace
+
+        0xB7: 0x22C5,                   // center dot
+        0x2B9: 0x2032,                  // prime,
+        0x3D2: 0x3A5,                   // Upsilon
+        0x2015: 0x2014, 0x2017: 0x5F,   // horizontal bars
+        0x2022: 0x2219, 0x2044: 0x2F,   // bullet, fraction slash
+        0x2305: 0x22BC, 0x2306: 0x2A5E, // barwedge, doublebarwedge
+        0x25AA: 0x25A0, 0x25B4: 0x25B2, // blacksquare, blacktriangle
+        0x25B5: 0x25B3, 0x25B8: 0x25B6, // triangle, blacktriangleright
+        0x25BE: 0x25BC, 0x25BF: 0x25BD, // blacktriangledown, triangledown
+        0x25C2: 0x25C0,                 // blacktriangleleft
+        0x2329: 0x27E8, 0x232A: 0x27E9, // langle, rangle
+        0x3008: 0x27E8, 0x3009: 0x27E9, // langle, rangle
+        0x2758: 0x2223,                 // VerticalSeparator
+        0x2A2F: 0xD7,                   // cross product
+
+        0x25FB: 0x25A1, 0x25FC: 0x25A0, // square, blacksquare
+
+        //
+        //  Letter-like symbols (that appear elsewhere)
+        //
+        0x2102: [0x0043,MML.VARIANT.DOUBLESTRUCK],
+//      0x210A: [0x0067,MML.VARIANT.SCRIPT],
+        0x210B: [0x0048,MML.VARIANT.SCRIPT],
+        0x210C: [0x0048,MML.VARIANT.FRAKTUR],
+        0x210D: [0x0048,MML.VARIANT.DOUBLESTRUCK],
+        0x210E: [0x0068,MML.VARIANT.ITALIC],
+        0x2110: [0x004A,MML.VARIANT.SCRIPT],
+        0x2111: [0x004A,MML.VARIANT.FRAKTUR],
+        0x2112: [0x004C,MML.VARIANT.SCRIPT],
+        0x2115: [0x004E,MML.VARIANT.DOUBLESTRUCK],
+        0x2119: [0x0050,MML.VARIANT.DOUBLESTRUCK],
+        0x211A: [0x0051,MML.VARIANT.DOUBLESTRUCK],
+        0x211B: [0x0052,MML.VARIANT.SCRIPT],
+        0x211C: [0x0052,MML.VARIANT.FRAKTUR],
+        0x211D: [0x0052,MML.VARIANT.DOUBLESTRUCK],
+        0x2124: [0x005A,MML.VARIANT.DOUBLESTRUCK],
+        0x2126: [0x03A9,MML.VARIANT.NORMAL],
+        0x2128: [0x005A,MML.VARIANT.FRAKTUR],
+        0x212C: [0x0042,MML.VARIANT.SCRIPT],
+        0x212D: [0x0043,MML.VARIANT.FRAKTUR],
+//      0x212F: [0x0065,MML.VARIANT.SCRIPT],
+        0x2130: [0x0045,MML.VARIANT.SCRIPT],
+        0x2131: [0x0046,MML.VARIANT.SCRIPT],
+        0x2133: [0x004D,MML.VARIANT.SCRIPT],
+//      0x2134: [0x006F,MML.VARIANT.SCRIPT],
+
+        0x2247: 0x2246,                 // wrong placement of this character
+        0x231C: 0x250C, 0x231D:0x2510,  // wrong placement of \ulcorner, \urcorner
+        0x231E: 0x2514, 0x231F:0x2518,  // wrong placement of \llcorner, \lrcorner
+
+        //
+        //  compound symbols not in these fonts
+        //  
+        0x2204: "\u2203\u0338",    // \not\exists
+        0x220C: "\u220B\u0338",    // \not\ni
+        0x2244: "\u2243\u0338",    // \not\simeq
+        0x2249: "\u2248\u0338",    // \not\approx
+        0x2262: "\u2261\u0338",    // \not\equiv
+        0x226D: "\u224D\u0338",    // \not\asymp
+        0x2274: "\u2272\u0338",    // \not\lesssim
+        0x2275: "\u2273\u0338",    // \not\gtrsim
+        0x2278: "\u2276\u0338",    // \not\lessgtr
+        0x2279: "\u2277\u0338",    // \not\gtrless
+        0x2284: "\u2282\u0338",    // \not\subset
+        0x2285: "\u2283\u0338",    // \not\supset
+        0x22E2: "\u2291\u0338",    // \not\sqsubseteq
+        0x22E3: "\u2292\u0338",    // \not\sqsupseteq
+
+        0x2A0C: "\u222C\u222C",    // quadruple integral
+
+        0x2033: "\u2032\u2032",        // double prime
+        0x2034: "\u2032\u2032\u2032",  // triple prime
+        0x2036: "\u2035\u2035",        // double back prime
+        0x2037: "\u2035\u2035\u2035",  // trile back prime
+        0x2057: "\u2032\u2032\u2032\u2032",  // quadruple prime
+        0x20DB: "...",                 // combining three dots above (only works with mover/under)
+        0x20DC: "...."                 // combining four dots above (only works with mover/under)
+      },
+      
+      REMAPACCENT: {
+        "\u2192":"\u20D7",
+        "\u2032":"'",
+        "\u2035":"`"
+      },
+      REMAPACCENTUNDER: {
+      },
+      
+      PLANE1MAP: [
+        [0x1D400,0x1D419, 0x41, MML.VARIANT.BOLD],
+        [0x1D41A,0x1D433, 0x61, MML.VARIANT.BOLD],
+        [0x1D434,0x1D44D, 0x41, MML.VARIANT.ITALIC],
+        [0x1D44E,0x1D467, 0x61, MML.VARIANT.ITALIC],
+        [0x1D468,0x1D481, 0x41, MML.VARIANT.BOLDITALIC],
+        [0x1D482,0x1D49B, 0x61, MML.VARIANT.BOLDITALIC],
+        [0x1D49C,0x1D4B5, 0x41, MML.VARIANT.SCRIPT],
+//      [0x1D4B6,0x1D4CF, 0x61, MML.VARIANT.SCRIPT],
+//      [0x1D4D0,0x1D4E9, 0x41, MML.VARIANT.BOLDSCRIPT],
+//      [0x1D4EA,0x1D503, 0x61, MML.VARIANT.BOLDSCRIPT],
+        [0x1D504,0x1D51D, 0x41, MML.VARIANT.FRAKTUR],
+        [0x1D51E,0x1D537, 0x61, MML.VARIANT.FRAKTUR],
+        [0x1D538,0x1D551, 0x41, MML.VARIANT.DOUBLESTRUCK],
+//      [0x1D552,0x1D56B, 0x61, MML.VARIANT.DOUBLESTRUCK],
+        [0x1D56C,0x1D585, 0x41, MML.VARIANT.BOLDFRAKTUR],
+        [0x1D586,0x1D59F, 0x61, MML.VARIANT.BOLDFRAKTUR],
+        [0x1D5A0,0x1D5B9, 0x41, MML.VARIANT.SANSSERIF],
+        [0x1D5BA,0x1D5D3, 0x61, MML.VARIANT.SANSSERIF],
+        [0x1D5D4,0x1D5ED, 0x41, MML.VARIANT.BOLDSANSSERIF],
+        [0x1D5EE,0x1D607, 0x61, MML.VARIANT.BOLDSANSSERIF],
+        [0x1D608,0x1D621, 0x41, MML.VARIANT.SANSSERIFITALIC],
+        [0x1D622,0x1D63B, 0x61, MML.VARIANT.SANSSERIFITALIC],
+//      [0x1D63C,0x1D655, 0x41, MML.VARIANT.SANSSERIFBOLDITALIC],
+//      [0x1D656,0x1D66F, 0x61, MML.VARIANT.SANSSERIFBOLDITALIC],
+        [0x1D670,0x1D689, 0x41, MML.VARIANT.MONOSPACE],
+        [0x1D68A,0x1D6A3, 0x61, MML.VARIANT.MONOSPACE],
+        
+        [0x1D6A8,0x1D6C1, 0x391, MML.VARIANT.BOLD],
+//      [0x1D6C2,0x1D6E1, 0x3B1, MML.VARIANT.BOLD],
+        [0x1D6E2,0x1D6FA, 0x391, MML.VARIANT.ITALIC],
+        [0x1D6FC,0x1D71B, 0x3B1, MML.VARIANT.ITALIC],
+        [0x1D71C,0x1D734, 0x391, MML.VARIANT.BOLDITALIC],
+        [0x1D736,0x1D755, 0x3B1, MML.VARIANT.BOLDITALIC],
+        [0x1D756,0x1D76E, 0x391, MML.VARIANT.BOLDSANSSERIF],
+//      [0x1D770,0x1D78F, 0x3B1, MML.VARIANT.BOLDSANSSERIF],
+        [0x1D790,0x1D7A8, 0x391, MML.VARIANT.SANSSERIFBOLDITALIC],
+//      [0x1D7AA,0x1D7C9, 0x3B1, MML.VARIANT.SANSSERIFBOLDITALIC],
+        
+        [0x1D7CE,0x1D7D7, 0x30, MML.VARIANT.BOLD],
+//      [0x1D7D8,0x1D7E1, 0x30, MML.VARIANT.DOUBLESTRUCK],
+        [0x1D7E2,0x1D7EB, 0x30, MML.VARIANT.SANSSERIF],
+        [0x1D7EC,0x1D7F5, 0x30, MML.VARIANT.BOLDSANSSERIF],
+        [0x1D7F6,0x1D7FF, 0x30, MML.VARIANT.MONOSPACE]
+      ],
+
+      REMAPGREEK: {
+        0x391: 0x41, 0x392: 0x42, 0x395: 0x45, 0x396: 0x5A,
+        0x397: 0x48, 0x399: 0x49, 0x39A: 0x4B, 0x39C: 0x4D,
+        0x39D: 0x4E, 0x39F: 0x4F, 0x3A1: 0x50, 0x3A2: 0x398,
+        0x3A4: 0x54, 0x3A7: 0x58, 0x3AA: 0x2207,
+        0x3CA: 0x2202, 0x3CB: 0x3F5, 0x3CC: 0x3D1, 0x3CD: 0x3F0,
+        0x3CE: 0x3D5, 0x3CF: 0x3F1, 0x3D0: 0x3D6
+      },
+      
+      RemapPlane1: function (n,variant) {
+        for (var i = 0, m = this.PLANE1MAP.length; i < m; i++) {
+          if (n < this.PLANE1MAP[i][0]) break;
+          if (n <= this.PLANE1MAP[i][1]) {
+            n = n - this.PLANE1MAP[i][0] + this.PLANE1MAP[i][2];
+            if (this.REMAPGREEK[n]) {n = this.REMAPGREEK[n]}
+            variant = this.VARIANT[this.PLANE1MAP[i][3]];
+            break;
+          }
+        }
+        return {n: n, variant: variant};
+      },
+      
+      DELIMITERS: {
+        0x0028: // (
+        {
+          dir: V, HW: [[1,MAIN],[1.2,SIZE1],[1.8,SIZE2],[2.4,SIZE3],[3.0,SIZE4]],
+          stretch: {top: [0x239B,SIZE4], ext: [0x239C,SIZE4], bot: [0x239D,SIZE4]}
+        },
+        0x0029: // )
+        {
+          dir: V, HW: [[1,MAIN],[1.2,SIZE1],[1.8,SIZE2],[2.4,SIZE3],[3.0,SIZE4]],
+          stretch: {top:[0x239E,SIZE4], ext:[0x239F,SIZE4], bot:[0x23A0,SIZE4]}
+        },
+        0x002F: // /
+        {
+          dir: V, HW: [[1,MAIN],[1.2,SIZE1],[1.8,SIZE2],[2.4,SIZE3],[3.0,SIZE4]]
+        },
+        0x005B: // [
+        {
+          dir: V, HW: [[1,MAIN],[1.2,SIZE1],[1.8,SIZE2],[2.4,SIZE3],[3.0,SIZE4]],
+          stretch: {top:[0x23A1,SIZE4], ext:[0x23A2,SIZE4], bot:[0x23A3,SIZE4]}
+        },
+        0x005C: // \
+        {
+          dir: V, HW: [[1,MAIN],[1.2,SIZE1],[1.8,SIZE2],[2.4,SIZE3],[3.0,SIZE4]]
+        },
+        0x005D: // ]
+        {
+          dir: V, HW: [[1,MAIN],[1.2,SIZE1],[1.8,SIZE2],[2.4,SIZE3],[3.0,SIZE4]],
+          stretch: {top:[0x23A4,SIZE4], ext:[0x23A5,SIZE4], bot:[0x23A6,SIZE4]}
+        },
+        0x007B: // {
+        {
+          dir: V, HW: [[1,MAIN],[1.2,SIZE1],[1.8,SIZE2],[2.4,SIZE3],[3.0,SIZE4]],
+          stretch: {top:[0x23A7,SIZE4], mid:[0x23A8,SIZE4], bot:[0x23A9,SIZE4], ext:[0x23AA,SIZE4]}
+        },
+        0x007C: // |
+        {
+          dir: V, HW: [[1,MAIN]], stretch: {ext:[0x2223,MAIN]}
+        },
+        0x007D: // }
+        {
+          dir: V, HW: [[1,MAIN],[1.2,SIZE1],[1.8,SIZE2],[2.4,SIZE3],[3.0,SIZE4]],
+          stretch: {top: [0x23AB,SIZE4], mid:[0x23AC,SIZE4], bot: [0x23AD,SIZE4], ext: [0x23AA,SIZE4]}
+        },
+        0x00AF: // macron
+        {
+          dir: H, HW: [[.59,MAIN]], stretch: {rep:[0xAF,MAIN]}
+        },
+        0x02C6: // wide hat
+        {
+          dir: H, HW: [[.267+.25,MAIN],[.567+.25,SIZE1],[1.005+.33,SIZE2],[1.447+.33,SIZE3],[1.909,SIZE4]]
+        },
+        0x02DC: // wide tilde
+        {
+          dir: H, HW: [[.333+.25,MAIN],[.555+.25,SIZE1],[1+.33,SIZE2],[1.443+.33,SIZE3],[1.887,SIZE4]]
+        },
+        0x2016: // vertical arrow extension
+        {
+          dir: V, HW: [[.602,SIZE1],[1,MAIN,null,0x2225]], stretch: {ext:[0x2225,MAIN]}
+        },
+        0x2190: // left arrow
+        {
+          dir: H, HW: [[1,MAIN]], stretch: {left:[0x2190,MAIN],rep:[0x2212,MAIN]}
+        },
+        0x2191: // \uparrow
+        {
+          dir: V, HW: [[.888,MAIN]], stretch: {top:[0x2191,SIZE1], ext:[0x23D0,SIZE1]}
+        },
+        0x2192: // right arrow
+        {
+          dir: H, HW: [[1,MAIN]], stretch: {rep:[0x2212,MAIN], right:[0x2192,MAIN]}
+        },
+        0x2193: // \downarrow
+        {
+          dir: V, HW: [[.888,MAIN]], stretch: {ext:[0x23D0,SIZE1], bot:[0x2193,SIZE1]}
+        },
+        0x2194: // left-right arrow
+        {
+          dir: H, HW: [[1,MAIN]],
+          stretch: {left:[0x2190,MAIN],rep:[0x2212,MAIN], right:[0x2192,MAIN]}
+        },
+        0x2195: // \updownarrow
+        {
+          dir: V, HW: [[1.044,MAIN]],
+          stretch: {top:[0x2191,SIZE1], ext:[0x23D0,SIZE1], bot:[0x2193,SIZE1]}
+        },
+        0x21D0: // left double arrow
+        {
+          dir: H, HW: [[1,MAIN]], stretch: {left:[0x21D0,MAIN],rep:[0x3D,MAIN]}
+        },
+        0x21D1: // \Uparrow
+        {
+          dir: V, HW: [[.888,MAIN]], stretch: {top:[0x21D1,SIZE1], ext:[0x2016,SIZE1]}
+        },
+        0x21D2: // right double arrow
+        {
+          dir: H, HW: [[1,MAIN]], stretch: {rep:[0x3D,MAIN], right:[0x21D2,MAIN]}
+        },
+        0x21D3: // \Downarrow
+        {
+          dir: V, HW: [[.888,MAIN]], stretch: {ext:[0x2016,SIZE1], bot:[0x21D3,SIZE1]}
+        },
+        0x21D4: // left-right double arrow
+        {
+          dir: H, HW: [[1,MAIN]],
+          stretch: {left:[0x21D0,MAIN],rep:[0x3D,MAIN], right:[0x21D2,MAIN]}
+        },
+        0x21D5: // \Updownarrow
+        {
+          dir: V, HW: [[1.044,MAIN]],
+          stretch: {top:[0x21D1,SIZE1], ext:[0x2016,SIZE1], bot:[0x21D3,SIZE1]}
+        },
+        0x2212: // horizontal line
+        {
+          dir: H, HW: [[.611,MAIN]], stretch: {rep:[0x2212,MAIN]}
+        },
+        0x221A: // \surd
+        {
+          dir: V, HW: [[1,MAIN],[1.2,SIZE1],[1.8,SIZE2],[2.4,SIZE3],[3,SIZE4]],
+          stretch: {top:[0xE001,SIZE4], ext:[0xE000,SIZE4], bot:[0x23B7,SIZE4], fullExtenders:true}
+        },
+        0x2223: // \vert
+        {
+          dir: V, HW: [[1,MAIN]], stretch: {ext:[0x2223,MAIN]}
+        },
+        0x2225: // \Vert
+        {
+          dir: V, HW: [[1,MAIN]], stretch: {ext:[0x2225,MAIN]}
+        },
+        0x2308: // \lceil
+        {
+          dir: V, HW: [[1,MAIN],[1.2,SIZE1],[1.8,SIZE2],[2.4,SIZE3],[3.0,SIZE4]],
+          stretch: {top:[0x23A1,SIZE4], ext:[0x23A2,SIZE4]}
+        },
+        0x2309: // \rceil
+        {
+          dir: V, HW: [[1,MAIN],[1.2,SIZE1],[1.8,SIZE2],[2.4,SIZE3],[3.0,SIZE4]],
+          stretch: {top:[0x23A4,SIZE4], ext:[0x23A5,SIZE4]}
+        },
+        0x230A: // \lfloor
+        {
+          dir: V, HW: [[1,MAIN],[1.2,SIZE1],[1.8,SIZE2],[2.4,SIZE3],[3.0,SIZE4]],
+          stretch: {ext:[0x23A2,SIZE4], bot:[0x23A3,SIZE4]}
+        },
+        0x230B: // \rfloor
+        {
+          dir: V, HW: [[1,MAIN],[1.2,SIZE1],[1.8,SIZE2],[2.4,SIZE3],[3.0,SIZE4]],
+          stretch: {ext:[0x23A5,SIZE4], bot:[0x23A6,SIZE4]}
+        },
+        0x23AA: // \bracevert
+        {
+          dir: V, HW: [[.32,SIZE4]],
+          stretch: {top:[0x23AA,SIZE4], ext:[0x23AA,SIZE4], bot:[0x23AA,SIZE4]}
+        },
+        0x23B0: // \lmoustache
+        {
+          dir: V, HW: [[.989,MAIN]],
+          stretch: {top:[0x23A7,SIZE4], ext:[0x23AA,SIZE4], bot:[0x23AD,SIZE4]}
+        },
+        0x23B1: // \rmoustache
+        {
+          dir: V, HW: [[.989,MAIN]],
+          stretch: {top:[0x23AB,SIZE4], ext:[0x23AA,SIZE4], bot:[0x23A9,SIZE4]}
+        },
+        0x23D0: // vertical line extension
+        {
+          dir: V, HW: [[.602,SIZE1],[1,MAIN,null,0x2223]], stretch: {ext:[0x2223,MAIN]}
+        },
+        0x23DE: // horizontal brace down
+        {
+          dir: H, HW: [],
+          stretch: {min:.9, left:[0xE150,SIZE4], mid:[[0xE153,0xE152],SIZE4], right:[0xE151,SIZE4], rep:[0xE154,SIZE4]}
+        },
+        0x23DF: // horizontal brace up
+        {
+          dir: H, HW: [],
+          stretch: {min:.9, left:[0xE152,SIZE4], mid:[[0xE151,0xE150],SIZE4], right:[0xE153,SIZE4], rep:[0xE154,SIZE4]}
+        },
+        0x27E8: // \langle
+        {
+          dir: V, HW: [[1,MAIN],[1.2,SIZE1],[1.8,SIZE2],[2.4,SIZE3],[3.0,SIZE4]]
+        },
+        0x27E9: // \rangle
+        {
+          dir: V, HW: [[1,MAIN],[1.2,SIZE1],[1.8,SIZE2],[2.4,SIZE3],[3.0,SIZE4]]
+        },
+        0x27EE: // \lgroup
+        {
+          dir: V, HW: [[.989,MAIN]],
+          stretch: {top:[0x23A7,SIZE4], ext:[0x23AA,SIZE4], bot:[0x23A9,SIZE4]}
+        },
+        0x27EF: // \rgroup
+        {
+          dir: V, HW: [[.989,MAIN]],
+          stretch: {top:[0x23AB,SIZE4], ext:[0x23AA,SIZE4], bot:[0x23AD,SIZE4]}
+        },
+        0x002D: {alias: 0x2212, dir:H}, // minus
+        0x005E: {alias: 0x02C6, dir:H}, // wide hat
+        0x005F: {alias: 0x2212, dir:H}, // low line
+        0x007E: {alias: 0x02DC, dir:H}, // wide tilde
+        0x02C9: {alias: 0x00AF, dir:H}, // macron
+        0x0302: {alias: 0x02C6, dir:H}, // wide hat
+        0x0303: {alias: 0x02DC, dir:H}, // wide tilde
+        0x030C: {alias: 0x02C7, dir:H}, // wide caron
+        0x0332: {alias: 0x2212, dir:H}, // combining low line
+        0x2015: {alias: 0x2212, dir:H}, // horizontal line
+        0x2017: {alias: 0x2212, dir:H}, // horizontal line
+        0x203E: {alias: 0x00AF, dir:H}, // overline
+        0x2215: {alias: 0x002F, dir:V}, // division slash
+        0x2329: {alias: 0x27E8, dir:V}, // langle
+        0x232A: {alias: 0x27E9, dir:V}, // rangle
+        0x23AF: {alias: 0x2212, dir:H}, // horizontal line extension
+        0x2500: {alias: 0x2212, dir:H}, // horizontal line
+        0x2758: {alias: 0x2223, dir:V}, // vertical separator
+        0x3008: {alias: 0x27E8, dir:V}, // langle
+        0x3009: {alias: 0x27E9, dir:V}, // rangle
+        0xFE37: {alias: 0x23DE, dir:H}, // horizontal brace down
+        0xFE38: {alias: 0x23DF, dir:H}, // horizontal brace up
+
+        0x003D: EXTRAH, // equal sign
+        0x219E: EXTRAH, // left two-headed arrow
+        0x21A0: EXTRAH, // right two-headed arrow
+        0x21A4: EXTRAH, // left arrow from bar
+        0x21A5: EXTRAV, // up arrow from bar
+        0x21A6: EXTRAH, // right arrow from bar
+        0x21A7: EXTRAV, // down arrow from bar
+        0x21B0: EXTRAV, // up arrow with top leftwards
+        0x21B1: EXTRAV, // up arrow with top right
+        0x21BC: EXTRAH, // left harpoon with barb up
+        0x21BD: EXTRAH, // left harpoon with barb down
+        0x21BE: EXTRAV, // up harpoon with barb right
+        0x21BF: EXTRAV, // up harpoon with barb left
+        0x21C0: EXTRAH, // right harpoon with barb up
+        0x21C1: EXTRAH, // right harpoon with barb down
+        0x21C2: EXTRAV, // down harpoon with barb right
+        0x21C3: EXTRAV, // down harpoon with barb left
+        0x21DA: EXTRAH, // left triple arrow
+        0x21DB: EXTRAH, // right triple arrow
+        0x23B4: EXTRAH, // top square bracket
+        0x23B5: EXTRAH, // bottom square bracket
+        0x23DC: EXTRAH, // top paren
+        0x23DD: EXTRAH, // bottom paren
+        0x23E0: EXTRAH, // top tortoise shell
+        0x23E1: EXTRAH, // bottom tortoise shell
+        0x2906: EXTRAH, // leftwards double arrow from bar
+        0x2907: EXTRAH, // rightwards double arrow from bar
+        0x294E: EXTRAH, // left barb up right barb up harpoon
+        0x294F: EXTRAV, // up barb right down barb right harpoon
+        0x2950: EXTRAH, // left barb dow right barb down harpoon
+        0x2951: EXTRAV, // up barb left down barb left harpoon
+        0x295A: EXTRAH, // leftwards harpoon with barb up from bar
+        0x295B: EXTRAH, // rightwards harpoon with barb up from bar
+        0x295C: EXTRAV, // up harpoon with barb right from bar
+        0x295D: EXTRAV, // down harpoon with barb right from bar
+        0x295E: EXTRAH, // leftwards harpoon with barb down from bar
+        0x295F: EXTRAH, // rightwards harpoon with barb down from bar
+        0x2960: EXTRAV, // up harpoon with barb left from bar
+        0x2961: EXTRAV, // down harpoon with barb left from bar
+        0x27F5: {alias: 0x2190, dir:H}, // long left arrow
+        0x27F6: {alias: 0x2192, dir:H}, // long right arrow
+        0x27F7: {alias: 0x2194, dir:H}, // long left-right arrow
+        0x27F8: {alias: 0x21D0, dir:H}, // long left double arrow
+        0x27F9: {alias: 0x21D2, dir:H}, // long right double arrow
+        0x27FA: {alias: 0x21D4, dir:H}, // long left-right double arrow
+        0x27FB: {alias: 0x21A4, dir:H}, // long left arrow from bar
+        0x27FC: {alias: 0x21A6, dir:H}, // long right arrow from bar
+        0x27FD: {alias: 0x2906, dir:H}, // long left double arrow from bar
+        0x27FE: {alias: 0x2907, dir:H}  // long right double arrow from bar
+      }
+    }
+  });
+
+  //
+  //  Handle error with reversed glyphs for \bigcap and \bigcup in version 1 of fonts
+  //
+  HTMLCSS.Font.oldLoadComplete = HTMLCSS.Font.loadComplete;
+  HTMLCSS.Font.loadComplete = function (font,n,done,status) {
+    if (n != null) {this.oldLoadComplete(font,n,done,status)}
+    if (font.family === SIZE1 || font.family === SIZE2) {
+      if (font.version === 1) {
+        HTMLCSS.FONTDATA.VARIANT["-largeOp"].remap = {0x22C2: 0x22C3, 0x22C3: 0x22C2};
+        HTMLCSS.FONTDATA.VARIANT["-smallOp"].remap = {0x22C2: 0x22C3, 0x22C3: 0x22C2};
+      }
+    }
+  };
+  
+  HTMLCSS.FONTDATA.FONTS['MathJax_Caligraphic'] = {
+    directory: 'Caligraphic/Regular',
+    family: 'MathJax_Caligraphic',
+    testString: "MATHJAX CALIGRAPHIC",
+    skew: {
+      0x41: 0.194,
+      0x42: 0.139,
+      0x43: 0.139,
+      0x44: 0.0833,
+      0x45: 0.111,
+      0x46: 0.111,
+      0x47: 0.111,
+      0x48: 0.111,
+      0x49: 0.0278,
+      0x4A: 0.167,
+      0x4B: 0.0556,
+      0x4C: 0.139,
+      0x4D: 0.139,
+      0x4E: 0.0833,
+      0x4F: 0.111,
+      0x50: 0.0833,
+      0x51: 0.111,
+      0x52: 0.0833,
+      0x53: 0.139,
+      0x54: 0.0278,
+      0x55: 0.0833,
+      0x56: 0.0278,
+      0x57: 0.0833,
+      0x58: 0.139,
+      0x59: 0.0833,
+      0x5A: 0.139
+    },
+    0x20: [0,0,250,0,0],               // SPACE
+    0x30: [452,22,500,39,460],         // DIGIT ZERO
+    0x31: [453,0,500,86,426],          // DIGIT ONE
+    0x32: [453,0,500,44,449],          // DIGIT TWO
+    0x33: [452,216,500,42,456],        // DIGIT THREE
+    0x34: [464,194,500,28,471],        // DIGIT FOUR
+    0x35: [453,216,500,50,448],        // DIGIT FIVE
+    0x36: [665,22,500,42,456],         // DIGIT SIX
+    0x37: [463,216,500,55,485],        // DIGIT SEVEN
+    0x38: [666,21,500,43,456],         // DIGIT EIGHT
+    0x39: [453,216,500,42,457],        // DIGIT NINE
+    0x41: [728,50,798,30,819],         // LATIN CAPITAL LETTER A
+    0x42: [705,22,657,32,664],         // LATIN CAPITAL LETTER B
+    0x43: [705,25,527,12,533],         // LATIN CAPITAL LETTER C
+    0x44: [683,0,771,19,766],          // LATIN CAPITAL LETTER D
+    0x45: [705,22,528,30,564],         // LATIN CAPITAL LETTER E
+    0x46: [683,32,719,18,829],         // LATIN CAPITAL LETTER F
+    0x47: [704,119,595,44,599],        // LATIN CAPITAL LETTER G
+    0x48: [683,48,845,18,803],         // LATIN CAPITAL LETTER H
+    0x49: [683,0,545,-30,642],         // LATIN CAPITAL LETTER I
+    0x4A: [683,119,678,47,839],        // LATIN CAPITAL LETTER J
+    0x4B: [705,22,762,32,732],         // LATIN CAPITAL LETTER K
+    0x4C: [705,22,690,32,656],         // LATIN CAPITAL LETTER L
+    0x4D: [705,50,1201,28,1137],       // LATIN CAPITAL LETTER M
+    0x4E: [789,50,820,-27,979],        // LATIN CAPITAL LETTER N
+    0x4F: [705,22,796,58,777],         // LATIN CAPITAL LETTER O
+    0x50: [683,57,696,19,733],         // LATIN CAPITAL LETTER P
+    0x51: [705,131,817,114,787],       // LATIN CAPITAL LETTER Q
+    0x52: [682,22,848,19,837],         // LATIN CAPITAL LETTER R
+    0x53: [705,22,606,18,642],         // LATIN CAPITAL LETTER S
+    0x54: [717,68,545,34,833],         // LATIN CAPITAL LETTER T
+    0x55: [683,28,626,-17,687],        // LATIN CAPITAL LETTER U
+    0x56: [683,52,613,25,658],         // LATIN CAPITAL LETTER V
+    0x57: [683,53,988,25,1034],        // LATIN CAPITAL LETTER W
+    0x58: [683,0,713,52,807],          // LATIN CAPITAL LETTER X
+    0x59: [683,143,668,31,714],        // LATIN CAPITAL LETTER Y
+    0x5A: [683,0,725,37,767],          // LATIN CAPITAL LETTER Z
+    0xA0: [0,0,250,0,0]                // NO-BREAK SPACE
+  };
+
+  HTMLCSS.FONTDATA.FONTS['MathJax_Main-bold'] = {
+    directory: 'Main/Bold',
+    family: 'MathJax_Main',
+    weight: 'bold',
+    testString: "MathJax Main ^ \u210F \u2223",
+    skew: {
+      0x131: 0.0319,
+      0x237: 0.0958,
+      0x210F: -0.0319,
+      0x2113: 0.128,
+      0x2202: 0.0958
+    },
+    Ranges: [
+      [0xA0,0xFF,"Latin1Supplement"],
+      [0x100,0x17F,"LatinExtendedA"],
+      [0x180,0x24F,"LatinExtendedB"],
+      [0x2B0,0x2FF,"SpacingModLetters"],
+      [0x300,0x36F,"CombDiacritMarks"],
+      [0x2000,0x206F,"GeneralPunctuation"],
+      [0x20D0,0x20FF,"CombDiactForSymbols"],
+      [0x2100,0x214F,"LetterlikeSymbols"],
+      [0x2190,0x21FF,"Arrows"],
+      [0x2200,0x22FF,"MathOperators"],
+      [0x2300,0x23FF,"MiscTechnical"],
+      [0x25A0,0x25FF,"GeometricShapes"],
+      [0x2600,0x26FF,"MiscSymbols"],
+      [0x27C0,0x27EF,"MiscMathSymbolsA"],
+      [0x27F0,0x27FF,"SupplementalArrowsA"],
+      [0x2A00,0x2AFF,"SuppMathOperators"]
+    ],
+    0x20: [0,0,250,0,0],               // SPACE
+    0x21: [705,-1,350,89,260],         // EXCLAMATION MARK
+    0x22: [694,-329,603,38,492],       // QUOTATION MARK
+    0x23: [694,193,958,64,893],        // NUMBER SIGN
+    0x24: [750,56,575,64,510],         // DOLLAR SIGN
+    0x25: [750,56,958,65,893],         // PERCENT SIGN
+    0x26: [705,11,894,48,836],         // AMPERSAND
+    0x27: [694,-329,319,74,261],       // APOSTROPHE
+    0x28: [750,249,447,103,382],       // LEFT PARENTHESIS
+    0x29: [750,249,447,64,343],        // RIGHT PARENTHESIS
+    0x2A: [750,-306,575,73,501],       // ASTERISK
+    0x2B: [633,131,894,64,829],        // PLUS SIGN
+    0x2C: [171,194,319,74,258],        // COMMA
+    0x2D: [278,-166,383,13,318],       // HYPHEN-MINUS
+    0x2E: [171,-1,319,74,245],         // FULL STOP
+    0x2F: [750,250,575,63,511],        // SOLIDUS
+    0x30: [654,10,575,45,529],         // DIGIT ZERO
+    0x31: [655,0,575,80,494],          // DIGIT ONE
+    0x32: [654,0,575,57,517],          // DIGIT TWO
+    0x33: [655,11,575,47,526],         // DIGIT THREE
+    0x34: [656,0,575,32,542],          // DIGIT FOUR
+    0x35: [655,11,575,57,517],         // DIGIT FIVE
+    0x36: [655,11,575,48,526],         // DIGIT SIX
+    0x37: [676,11,575,64,558],         // DIGIT SEVEN
+    0x38: [654,11,575,48,526],         // DIGIT EIGHT
+    0x39: [654,11,575,48,526],         // DIGIT NINE
+    0x3A: [444,-1,319,74,245],         // COLON
+    0x3B: [444,194,319,74,248],        // SEMICOLON
+    0x3C: [587,85,894,96,797],         // LESS-THAN SIGN
+    0x3D: [393,-109,894,64,829],       // EQUALS SIGN
+    0x3E: [587,85,894,96,797],         // GREATER-THAN SIGN
+    0x3F: [700,-1,543,65,478],         // QUESTION MARK
+    0x40: [699,6,894,64,829],          // COMMERCIAL AT
+    0x41: [698,0,869,40,828],          // LATIN CAPITAL LETTER A
+    0x42: [686,0,818,39,752],          // LATIN CAPITAL LETTER B
+    0x43: [697,11,831,64,766],         // LATIN CAPITAL LETTER C
+    0x44: [686,0,882,39,817],          // LATIN CAPITAL LETTER D
+    0x45: [680,0,756,39,723],          // LATIN CAPITAL LETTER E
+    0x46: [680,0,724,39,675],          // LATIN CAPITAL LETTER F
+    0x47: [697,10,904,64,845],         // LATIN CAPITAL LETTER G
+    0x48: [686,0,900,39,860],          // LATIN CAPITAL LETTER H
+    0x49: [686,0,436,25,410],          // LATIN CAPITAL LETTER I
+    0x4A: [686,11,594,8,527],          // LATIN CAPITAL LETTER J
+    0x4B: [686,0,901,39,852],          // LATIN CAPITAL LETTER K
+    0x4C: [686,0,692,39,643],          // LATIN CAPITAL LETTER L
+    0x4D: [686,0,1092,39,1052],        // LATIN CAPITAL LETTER M
+    0x4E: [686,0,900,39,860],          // LATIN CAPITAL LETTER N
+    0x4F: [696,10,864,64,798],         // LATIN CAPITAL LETTER O
+    0x50: [686,0,786,39,721],          // LATIN CAPITAL LETTER P
+    0x51: [696,193,864,64,805],        // LATIN CAPITAL LETTER Q
+    0x52: [686,11,862,39,858],         // LATIN CAPITAL LETTER R
+    0x53: [697,11,639,64,574],         // LATIN CAPITAL LETTER S
+    0x54: [675,0,800,41,758],          // LATIN CAPITAL LETTER T
+    0x55: [686,11,885,39,845],         // LATIN CAPITAL LETTER U
+    0x56: [686,7,869,25,843],          // LATIN CAPITAL LETTER V
+    0x57: [686,7,1189,24,1164],        // LATIN CAPITAL LETTER W
+    0x58: [686,0,869,33,835],          // LATIN CAPITAL LETTER X
+    0x59: [686,0,869,19,849],          // LATIN CAPITAL LETTER Y
+    0x5A: [686,0,703,64,645],          // LATIN CAPITAL LETTER Z
+    0x5B: [750,250,319,128,293],       // LEFT SQUARE BRACKET
+    0x5C: [750,250,575,63,511],        // REVERSE SOLIDUS
+    0x5D: [750,250,319,25,190],        // RIGHT SQUARE BRACKET
+    0x5E: [694,-520,575,126,448],      // CIRCUMFLEX ACCENT
+    0x5F: [-10,61,575,0,574],          // LOW LINE
+    0x60: [706,-503,575,114,338],      // GRAVE ACCENT
+    0x61: [453,6,559,32,558],          // LATIN SMALL LETTER A
+    0x62: [694,6,639,29,600],          // LATIN SMALL LETTER B
+    0x63: [453,6,511,39,478],          // LATIN SMALL LETTER C
+    0x64: [694,6,639,38,609],          // LATIN SMALL LETTER D
+    0x65: [452,6,527,32,494],          // LATIN SMALL LETTER E
+    0x66: [700,0,351,40,452],          // LATIN SMALL LETTER F
+    0x67: [455,201,575,30,558],        // LATIN SMALL LETTER G
+    0x68: [694,0,639,37,623],          // LATIN SMALL LETTER H
+    0x69: [695,0,319,40,294],          // LATIN SMALL LETTER I
+    0x6A: [695,200,351,-71,274],       // LATIN SMALL LETTER J
+    0x6B: [694,0,607,29,587],          // LATIN SMALL LETTER K
+    0x6C: [694,0,319,40,301],          // LATIN SMALL LETTER L
+    0x6D: [450,0,958,37,942],          // LATIN SMALL LETTER M
+    0x6E: [450,0,639,37,623],          // LATIN SMALL LETTER N
+    0x6F: [452,5,575,32,542],          // LATIN SMALL LETTER O
+    0x70: [450,194,639,29,600],        // LATIN SMALL LETTER P
+    0x71: [450,194,607,38,609],        // LATIN SMALL LETTER Q
+    0x72: [450,0,474,29,442],          // LATIN SMALL LETTER R
+    0x73: [453,6,454,38,414],          // LATIN SMALL LETTER S
+    0x74: [635,5,447,21,382],          // LATIN SMALL LETTER T
+    0x75: [450,6,639,37,623],          // LATIN SMALL LETTER U
+    0x76: [444,3,607,26,580],          // LATIN SMALL LETTER V
+    0x77: [444,4,831,25,805],          // LATIN SMALL LETTER W
+    0x78: [444,0,607,21,586],          // LATIN SMALL LETTER X
+    0x79: [444,200,607,23,580],        // LATIN SMALL LETTER Y
+    0x7A: [444,0,511,32,462],          // LATIN SMALL LETTER Z
+    0x7B: [750,250,575,70,504],        // LEFT CURLY BRACKET
+    0x7C: [750,249,319,129,190],       // VERTICAL LINE
+    0x7D: [750,250,575,70,504],        // RIGHT CURLY BRACKET
+    0x7E: [344,-202,575,96,478],       // TILDE
+    0x393: [680,0,692,39,643],         // GREEK CAPITAL LETTER GAMMA
+    0x394: [698,0,958,56,901],         // GREEK CAPITAL LETTER DELTA
+    0x398: [696,10,894,64,829],        // GREEK CAPITAL LETTER THETA
+    0x39B: [698,0,806,40,765],         // GREEK CAPITAL LETTER LAMDA
+    0x39E: [675,0,767,48,718],         // GREEK CAPITAL LETTER XI
+    0x3A0: [680,0,900,39,860],         // GREEK CAPITAL LETTER PI
+    0x3A3: [686,0,831,63,766],         // GREEK CAPITAL LETTER SIGMA
+    0x3A5: [697,0,894,64,829],         // GREEK CAPITAL LETTER UPSILON
+    0x3A6: [686,0,831,64,766],         // GREEK CAPITAL LETTER PHI
+    0x3A8: [686,0,894,64,829],         // GREEK CAPITAL LETTER PSI
+    0x3A9: [696,0,831,51,779]          // GREEK CAPITAL LETTER OMEGA
+  };
+
+  HTMLCSS.FONTDATA.FONTS['MathJax_Main-italic'] = {
+    directory: 'Main/Italic',
+    family: 'MathJax_Main',
+    style: 'italic',
+    testString: "MathJax Main ^ \u210F \u2223",
+    Ranges: [
+      [0xA0,0xFF,"Latin1Supplement"],
+      [0x300,0x36F,"CombDiacritMarks"],
+      [0x2000,0x206F,"GeneralPunctuation"],
+      [0x2100,0x214F,"LetterlikeSymbols"]
+    ],
+    0x20: [0,0,250,0,0],               // SPACE
+    0x21: [716,0,307,107,380],         // EXCLAMATION MARK
+    0x22: [694,-379,514,176,538],      // QUOTATION MARK
+    0x23: [694,194,818,115,828],       // NUMBER SIGN
+    0x25: [750,56,818,145,847],        // PERCENT SIGN
+    0x26: [716,22,767,127,802],        // AMPERSAND
+    0x27: [694,-379,307,213,377],      // APOSTROPHE
+    0x28: [750,250,409,144,517],       // LEFT PARENTHESIS
+    0x29: [750,250,409,17,390],        // RIGHT PARENTHESIS
+    0x2A: [750,-320,511,195,584],      // ASTERISK
+    0x2B: [557,57,767,139,753],        // PLUS SIGN
+    0x2C: [121,194,307,69,232],        // COMMA
+    0x2D: [251,-180,358,84,341],       // HYPHEN-MINUS
+    0x2E: [121,0,307,107,231],         // FULL STOP
+    0x2F: [750,250,511,19,617],        // SOLIDUS
+    0x30: [665,21,511,110,562],        // DIGIT ZERO
+    0x31: [666,0,511,110,468],         // DIGIT ONE
+    0x32: [666,22,511,76,551],         // DIGIT TWO
+    0x33: [666,22,511,96,562],         // DIGIT THREE
+    0x34: [666,194,511,46,478],        // DIGIT FOUR
+    0x35: [666,22,511,106,567],        // DIGIT FIVE
+    0x36: [665,22,511,120,565],        // DIGIT SIX
+    0x37: [666,22,511,136,634],        // DIGIT SEVEN
+    0x38: [666,21,511,99,553],         // DIGIT EIGHT
+    0x39: [666,22,511,107,553],        // DIGIT NINE
+    0x3A: [431,0,307,107,308],         // COLON
+    0x3B: [431,194,307,70,308],        // SEMICOLON
+    0x3D: [367,-133,767,116,776],      // EQUALS SIGN
+    0x3F: [716,0,511,195,551],         // QUESTION MARK
+    0x40: [705,11,767,152,789],        // COMMERCIAL AT
+    0x41: [716,0,743,58,696],          // LATIN CAPITAL LETTER A
+    0x42: [683,0,704,57,732],          // LATIN CAPITAL LETTER B
+    0x43: [705,21,716,150,812],        // LATIN CAPITAL LETTER C
+    0x44: [683,0,755,56,775],          // LATIN CAPITAL LETTER D
+    0x45: [680,0,678,54,743],          // LATIN CAPITAL LETTER E
+    0x46: [680,-1,653,54,731],         // LATIN CAPITAL LETTER F
+    0x47: [705,22,774,150,812],        // LATIN CAPITAL LETTER G
+    0x48: [683,0,743,54,860],          // LATIN CAPITAL LETTER H
+    0x49: [683,0,386,49,508],          // LATIN CAPITAL LETTER I
+    0x4A: [683,21,525,78,622],         // LATIN CAPITAL LETTER J
+    0x4B: [683,0,769,54,859],          // LATIN CAPITAL LETTER K
+    0x4C: [683,0,627,54,628],          // LATIN CAPITAL LETTER L
+    0x4D: [683,0,897,58,1010],         // LATIN CAPITAL LETTER M
+    0x4E: [683,0,743,54,860],          // LATIN CAPITAL LETTER N
+    0x4F: [704,22,767,149,788],        // LATIN CAPITAL LETTER O
+    0x50: [683,0,678,55,729],          // LATIN CAPITAL LETTER P
+    0x51: [704,194,767,149,788],       // LATIN CAPITAL LETTER Q
+    0x52: [683,22,729,55,723],         // LATIN CAPITAL LETTER R
+    0x53: [705,22,562,74,633],         // LATIN CAPITAL LETTER S
+    0x54: [677,0,716,171,806],         // LATIN CAPITAL LETTER T
+    0x55: [683,22,743,194,860],        // LATIN CAPITAL LETTER U
+    0x56: [683,22,743,205,868],        // LATIN CAPITAL LETTER V
+    0x57: [683,22,999,205,1124],       // LATIN CAPITAL LETTER W
+    0x58: [683,0,743,50,825],          // LATIN CAPITAL LETTER X
+    0x59: [683,0,743,198,875],         // LATIN CAPITAL LETTER Y
+    0x5A: [683,0,613,80,704],          // LATIN CAPITAL LETTER Z
+    0x5B: [750,250,307,73,446],        // LEFT SQUARE BRACKET
+    0x5D: [750,250,307,-14,359],       // RIGHT SQUARE BRACKET
+    0x5E: [694,-527,511,260,528],      // CIRCUMFLEX ACCENT
+    0x5F: [-25,62,511,91,554],         // LOW LINE
+    0x61: [442,11,511,101,543],        // LATIN SMALL LETTER A
+    0x62: [694,11,460,108,467],        // LATIN SMALL LETTER B
+    0x63: [441,10,460,103,469],        // LATIN SMALL LETTER C
+    0x64: [694,11,511,101,567],        // LATIN SMALL LETTER D
+    0x65: [442,10,460,107,470],        // LATIN SMALL LETTER E
+    0x66: [705,204,307,-23,450],       // LATIN SMALL LETTER F
+    0x67: [442,205,460,46,494],        // LATIN SMALL LETTER G
+    0x68: [694,11,511,69,544],         // LATIN SMALL LETTER H
+    0x69: [656,10,307,75,340],         // LATIN SMALL LETTER I
+    0x6A: [656,204,307,-32,364],       // LATIN SMALL LETTER J
+    0x6B: [694,11,460,69,498],         // LATIN SMALL LETTER K
+    0x6C: [694,11,256,87,312],         // LATIN SMALL LETTER L
+    0x6D: [442,11,818,75,851],         // LATIN SMALL LETTER M
+    0x6E: [442,11,562,75,595],         // LATIN SMALL LETTER N
+    0x6F: [442,11,511,103,517],        // LATIN SMALL LETTER O
+    0x70: [442,194,511,6,518],         // LATIN SMALL LETTER P
+    0x71: [442,194,460,101,504],       // LATIN SMALL LETTER Q
+    0x72: [442,11,422,75,484],         // LATIN SMALL LETTER R
+    0x73: [442,11,409,76,418],         // LATIN SMALL LETTER S
+    0x74: [626,11,332,87,373],         // LATIN SMALL LETTER T
+    0x75: [441,11,537,75,570],         // LATIN SMALL LETTER U
+    0x76: [443,10,460,75,492],         // LATIN SMALL LETTER V
+    0x77: [443,11,664,75,696],         // LATIN SMALL LETTER W
+    0x78: [442,11,464,58,513],         // LATIN SMALL LETTER X
+    0x79: [441,205,486,75,522],        // LATIN SMALL LETTER Y
+    0x7A: [442,11,409,54,466],         // LATIN SMALL LETTER Z
+    0x7E: [318,-208,511,246,571],      // TILDE
+    0xA3: [714,11,769,88,699],         // POUND SIGN
+    0x131: [441,10,307,75,340],        // LATIN SMALL LETTER DOTLESS I
+    0x237: [442,204,332,-32,327],      // LATIN SMALL LETTER DOTLESS J
+    0x393: [680,0,627,54,705],         // GREEK CAPITAL LETTER GAMMA
+    0x394: [716,0,818,70,751],         // GREEK CAPITAL LETTER DELTA
+    0x398: [704,22,767,149,788],       // GREEK CAPITAL LETTER THETA
+    0x39B: [716,0,692,58,646],         // GREEK CAPITAL LETTER LAMDA
+    0x39E: [677,0,664,74,754],         // GREEK CAPITAL LETTER XI
+    0x3A0: [680,0,743,54,859],         // GREEK CAPITAL LETTER PI
+    0x3A3: [683,0,716,80,782],         // GREEK CAPITAL LETTER SIGMA
+    0x3A5: [705,0,767,213,832],        // GREEK CAPITAL LETTER UPSILON
+    0x3A6: [683,0,716,159,728],        // GREEK CAPITAL LETTER PHI
+    0x3A8: [683,0,767,207,824],        // GREEK CAPITAL LETTER PSI
+    0x3A9: [705,0,716,100,759]         // GREEK CAPITAL LETTER OMEGA
+  };
+
+  HTMLCSS.FONTDATA.FONTS['MathJax_Main'] = {
+    directory: 'Main/Regular',
+    family: 'MathJax_Main',
+    testString: "MathJax Main ^ \u210F \u2223",
+    skew: {
+      0x131: 0.0278,
+      0x237: 0.0833,
+      0x2113: 0.111,
+      0x2118: 0.111,
+      0x2202: 0.0833
+    },
+    Ranges: [
+      [0x2B0,0x2FF,"SpacingModLetters"],
+      [0x300,0x36F,"CombDiacritMarks"],
+      [0x25A0,0x25FF,"GeometricShapes"],
+      [0x2600,0x26FF,"MiscSymbols"]
+    ],
+    0x20: [0,0,250,0,0],               // SPACE
+    0x21: [716,-1,278,78,199],         // EXCLAMATION MARK
+    0x22: [694,-379,500,34,372],       // QUOTATION MARK
+    0x23: [694,194,833,56,777],        // NUMBER SIGN
+    0x24: [750,56,500,55,444],         // DOLLAR SIGN
+    0x25: [750,56,833,56,776],         // PERCENT SIGN
+    0x26: [716,22,778,42,727],         // AMPERSAND
+    0x27: [694,-379,278,78,212],       // APOSTROPHE
+    0x28: [750,250,389,94,333],        // LEFT PARENTHESIS
+    0x29: [750,250,389,55,294],        // RIGHT PARENTHESIS
+    0x2A: [750,-320,500,64,435],       // ASTERISK
+    0x2B: [583,82,778,56,722],         // PLUS SIGN
+    0x2C: [121,194,278,78,210],        // COMMA
+    0x2D: [252,-179,333,11,277],       // HYPHEN-MINUS
+    0x2E: [120,0,278,78,199],          // FULL STOP
+    0x2F: [750,250,500,56,445],        // SOLIDUS
+    0x30: [666,22,500,39,460],         // DIGIT ZERO
+    0x31: [666,0,500,83,427],          // DIGIT ONE
+    0x32: [666,0,500,50,449],          // DIGIT TWO
+    0x33: [665,22,500,42,457],         // DIGIT THREE
+    0x34: [677,0,500,28,471],          // DIGIT FOUR
+    0x35: [666,22,500,50,449],         // DIGIT FIVE
+    0x36: [666,22,500,42,456],         // DIGIT SIX
+    0x37: [676,22,500,55,485],         // DIGIT SEVEN
+    0x38: [666,22,500,43,457],         // DIGIT EIGHT
+    0x39: [666,22,500,42,456],         // DIGIT NINE
+    0x3A: [430,0,278,78,199],          // COLON
+    0x3B: [430,194,278,78,202],        // SEMICOLON
+    0x3C: [540,40,778,83,694],         // LESS-THAN SIGN
+    0x3D: [367,-133,778,56,722],       // EQUALS SIGN
+    0x3E: [540,40,778,83,694],         // GREATER-THAN SIGN
+    0x3F: [705,-1,472,55,416],         // QUESTION MARK
+    0x40: [705,11,778,56,722],         // COMMERCIAL AT
+    0x41: [716,0,750,32,717],          // LATIN CAPITAL LETTER A
+    0x42: [683,0,708,28,651],          // LATIN CAPITAL LETTER B
+    0x43: [705,21,722,56,666],         // LATIN CAPITAL LETTER C
+    0x44: [683,0,764,27,708],          // LATIN CAPITAL LETTER D
+    0x45: [680,0,681,25,652],          // LATIN CAPITAL LETTER E
+    0x46: [680,0,653,25,610],          // LATIN CAPITAL LETTER F
+    0x47: [705,22,785,56,735],         // LATIN CAPITAL LETTER G
+    0x48: [683,0,750,25,724],          // LATIN CAPITAL LETTER H
+    0x49: [683,0,361,21,339],          // LATIN CAPITAL LETTER I
+    0x4A: [683,22,514,25,465],         // LATIN CAPITAL LETTER J
+    0x4B: [683,0,778,25,736],          // LATIN CAPITAL LETTER K
+    0x4C: [683,0,625,25,582],          // LATIN CAPITAL LETTER L
+    0x4D: [683,0,917,29,887],          // LATIN CAPITAL LETTER M
+    0x4E: [683,0,750,25,724],          // LATIN CAPITAL LETTER N
+    0x4F: [705,22,778,56,722],         // LATIN CAPITAL LETTER O
+    0x50: [683,0,681,27,624],          // LATIN CAPITAL LETTER P
+    0x51: [705,193,778,56,728],        // LATIN CAPITAL LETTER Q
+    0x52: [683,22,736,27,732],         // LATIN CAPITAL LETTER R
+    0x53: [705,22,556,55,500],         // LATIN CAPITAL LETTER S
+    0x54: [677,0,722,36,685],          // LATIN CAPITAL LETTER T
+    0x55: [683,22,750,25,724],         // LATIN CAPITAL LETTER U
+    0x56: [683,22,750,19,730],         // LATIN CAPITAL LETTER V
+    0x57: [683,22,1028,18,1009],       // LATIN CAPITAL LETTER W
+    0x58: [683,0,750,23,726],          // LATIN CAPITAL LETTER X
+    0x59: [683,0,750,11,738],          // LATIN CAPITAL LETTER Y
+    0x5A: [683,0,611,55,560],          // LATIN CAPITAL LETTER Z
+    0x5B: [750,250,278,118,255],       // LEFT SQUARE BRACKET
+    0x5C: [750,250,500,56,444],        // REVERSE SOLIDUS
+    0x5D: [750,250,278,22,159],        // RIGHT SQUARE BRACKET
+    0x5E: [694,-531,500,112,387],      // CIRCUMFLEX ACCENT
+    0x5F: [-25,62,500,0,499],          // LOW LINE
+    0x60: [699,-505,500,106,295],      // GRAVE ACCENT
+    0x61: [448,11,500,34,493],         // LATIN SMALL LETTER A
+    0x62: [694,11,556,20,522],         // LATIN SMALL LETTER B
+    0x63: [448,11,444,34,415],         // LATIN SMALL LETTER C
+    0x64: [694,11,556,34,535],         // LATIN SMALL LETTER D
+    0x65: [448,11,444,28,415],         // LATIN SMALL LETTER E
+    0x66: [705,0,306,26,372],          // LATIN SMALL LETTER F
+    0x67: [453,206,500,29,485],        // LATIN SMALL LETTER G
+    0x68: [694,0,556,25,542],          // LATIN SMALL LETTER H
+    0x69: [669,0,278,26,255],          // LATIN SMALL LETTER I
+    0x6A: [669,205,306,-55,218],       // LATIN SMALL LETTER J
+    0x6B: [694,0,528,20,511],          // LATIN SMALL LETTER K
+    0x6C: [694,0,278,26,263],          // LATIN SMALL LETTER L
+    0x6D: [442,0,833,25,819],          // LATIN SMALL LETTER M
+    0x6E: [442,0,556,25,542],          // LATIN SMALL LETTER N
+    0x6F: [448,10,500,28,471],         // LATIN SMALL LETTER O
+    0x70: [442,194,556,20,522],        // LATIN SMALL LETTER P
+    0x71: [442,194,528,33,535],        // LATIN SMALL LETTER Q
+    0x72: [442,0,392,20,364],          // LATIN SMALL LETTER R
+    0x73: [448,11,394,33,359],         // LATIN SMALL LETTER S
+    0x74: [615,10,389,18,333],         // LATIN SMALL LETTER T
+    0x75: [442,11,556,25,542],         // LATIN SMALL LETTER U
+    0x76: [431,11,528,19,508],         // LATIN SMALL LETTER V
+    0x77: [431,11,722,18,703],         // LATIN SMALL LETTER W
+    0x78: [431,0,528,11,516],          // LATIN SMALL LETTER X
+    0x79: [431,204,528,19,508],        // LATIN SMALL LETTER Y
+    0x7A: [431,0,444,28,401],          // LATIN SMALL LETTER Z
+    0x7B: [750,250,500,65,434],        // LEFT CURLY BRACKET
+    0x7C: [750,249,278,119,159],       // VERTICAL LINE
+    0x7D: [750,250,500,65,434],        // RIGHT CURLY BRACKET
+    0x7E: [318,-215,500,83,416],       // TILDE
+    0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+    0xA8: [669,-554,500,95,404],       // DIAERESIS
+    0xAC: [356,-89,667,56,611],        // NOT SIGN
+    0xAF: [590,-544,500,69,430],       // MACRON
+    0xB0: [715,-542,500,147,352],      // DEGREE SIGN
+    0xB1: [666,0,778,56,722],          // PLUS-MINUS SIGN
+    0xB4: [699,-505,500,203,393],      // ACUTE ACCENT
+    0xD7: [491,-9,778,147,630],        // MULTIPLICATION SIGN
+    0xF7: [537,36,778,56,721],         // DIVISION SIGN
+    0x131: [442,0,278,26,255],         // LATIN SMALL LETTER DOTLESS I
+    0x237: [442,205,306,-55,218],      // LATIN SMALL LETTER DOTLESS J
+    0x2C6: [694,-531,500,112,387],     // MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x2C7: [644,-513,500,114,385],     // CARON
+    0x2C9: [590,-544,500,69,430],      // MODIFIER LETTER MACRON
+    0x2CA: [699,-505,500,203,393],     // MODIFIER LETTER ACUTE ACCENT
+    0x2CB: [699,-505,500,106,295],     // MODIFIER LETTER GRAVE ACCENT
+    0x2D8: [694,-515,500,92,407],      // BREVE
+    0x2D9: [669,-549,500,190,309],     // DOT ABOVE
+    0x2DC: [668,-565,500,83,416],      // SMALL TILDE
+    0x393: [680,0,625,25,582],         // GREEK CAPITAL LETTER GAMMA
+    0x394: [716,0,833,46,786],         // GREEK CAPITAL LETTER DELTA
+    0x398: [705,22,778,56,722],        // GREEK CAPITAL LETTER THETA
+    0x39B: [716,0,694,32,661],         // GREEK CAPITAL LETTER LAMDA
+    0x39E: [677,0,667,42,624],         // GREEK CAPITAL LETTER XI
+    0x3A0: [680,0,750,25,724],         // GREEK CAPITAL LETTER PI
+    0x3A3: [683,0,722,55,666],         // GREEK CAPITAL LETTER SIGMA
+    0x3A5: [705,0,778,55,722],         // GREEK CAPITAL LETTER UPSILON
+    0x3A6: [683,0,722,56,665],         // GREEK CAPITAL LETTER PHI
+    0x3A8: [683,0,778,55,722],         // GREEK CAPITAL LETTER PSI
+    0x3A9: [704,0,722,44,677],         // GREEK CAPITAL LETTER OMEGA
+    0x2002: [0,0,500,0,0],             // ??
+    0x2003: [0,0,999,0,0],             // ??
+    0x2004: [0,0,333,0,0],             // ??
+    0x2005: [0,0,250,0,0],             // ??
+    0x2006: [0,0,167,0,0],             // ??
+    0x2009: [0,0,167,0,0],             // ??
+    0x200A: [0,0,83,0,0],              // ??
+    0x2013: [285,-248,500,0,499],      // EN DASH
+    0x2014: [285,-248,1000,0,999],     // EM DASH
+    0x2018: [694,-379,278,64,198],     // LEFT SINGLE QUOTATION MARK
+    0x2019: [694,-379,278,78,212],     // RIGHT SINGLE QUOTATION MARK
+    0x201C: [694,-379,500,128,466],    // LEFT DOUBLE QUOTATION MARK
+    0x201D: [694,-379,500,34,372],     // RIGHT DOUBLE QUOTATION MARK
+    0x2020: [705,216,444,55,389],      // DAGGER
+    0x2021: [705,205,444,55,389],      // DOUBLE DAGGER
+    0x2026: [120,0,1172,78,1093],      // HORIZONTAL ELLIPSIS
+    0x2032: [560,-43,275,30,262],      // PRIME
+    0x20D7: [714,-516,0,-471,-29],     // COMBINING RIGHT ARROW ABOVE
+    0x210F: [695,13,540,42,562],       // stix-/hbar - Planck's over 2pi
+    0x2111: [705,10,722,55,693],       // BLACK-LETTER CAPITAL I
+    0x2113: [705,20,417,6,397],        // SCRIPT SMALL L
+    0x2118: [453,216,636,67,625],      // SCRIPT CAPITAL P
+    0x211C: [716,22,722,40,715],       // BLACK-LETTER CAPITAL R
+    0x2135: [694,0,611,55,555],        // ALEF SYMBOL
+    0x2190: [511,11,1000,55,944],      // LEFTWARDS ARROW
+    0x2191: [694,193,500,17,483],      // UPWARDS ARROW
+    0x2192: [511,11,1000,56,944],      // RIGHTWARDS ARROW
+    0x2193: [694,194,500,17,483],      // DOWNWARDS ARROW
+    0x2194: [511,11,1000,55,944],      // LEFT RIGHT ARROW
+    0x2195: [772,272,500,17,483],      // UP DOWN ARROW
+    0x2196: [720,195,1000,29,944],     // NORTH WEST ARROW
+    0x2197: [720,195,1000,55,970],     // NORTH EAST ARROW
+    0x2198: [695,220,1000,55,970],     // SOUTH EAST ARROW
+    0x2199: [695,220,1000,29,944],     // SOUTH WEST ARROW
+    0x21A6: [511,11,1000,55,944],      // RIGHTWARDS ARROW FROM BAR
+    0x21A9: [511,11,1126,55,1070],     // LEFTWARDS ARROW WITH HOOK
+    0x21AA: [511,11,1126,55,1070],     // RIGHTWARDS ARROW WITH HOOK
+    0x21BC: [511,-230,1000,55,944],    // LEFTWARDS HARPOON WITH BARB UPWARDS
+    0x21BD: [270,11,1000,55,944],      // LEFTWARDS HARPOON WITH BARB DOWNWARDS
+    0x21C0: [511,-230,1000,56,944],    // RIGHTWARDS HARPOON WITH BARB UPWARDS
+    0x21C1: [270,11,1000,56,944],      // RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+    0x21CC: [671,11,1000,55,944],      // RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+    0x21D0: [525,24,1000,56,944],      // LEFTWARDS DOUBLE ARROW
+    0x21D1: [694,194,611,31,579],      // UPWARDS DOUBLE ARROW
+    0x21D2: [525,24,1000,56,944],      // RIGHTWARDS DOUBLE ARROW
+    0x21D3: [694,194,611,31,579],      // DOWNWARDS DOUBLE ARROW
+    0x21D4: [526,25,1000,34,966],      // LEFT RIGHT DOUBLE ARROW
+    0x21D5: [772,272,611,31,579],      // UP DOWN DOUBLE ARROW
+    0x2200: [694,22,556,0,556],        // FOR ALL
+    0x2202: [715,22,531,42,566],       // PARTIAL DIFFERENTIAL
+    0x2203: [694,0,556,56,500],        // THERE EXISTS
+    0x2205: [772,78,500,39,460],       // EMPTY SET
+    0x2207: [683,33,833,46,786],       // NABLA
+    0x2208: [540,40,667,84,583],       // ELEMENT OF
+    0x2209: [716,215,667,84,583],      // stix-negated (vert) set membership, variant
+    0x220B: [540,40,667,83,582],       // CONTAINS AS MEMBER
+    0x2212: [270,-230,778,84,694],     // MINUS SIGN
+    0x2213: [500,166,778,56,722],      // MINUS-OR-PLUS SIGN
+    0x2215: [750,250,500,56,445],      // DIVISION SLASH
+    0x2216: [750,250,500,56,444],      // SET MINUS
+    0x2217: [465,-35,500,64,435],      // ASTERISK OPERATOR
+    0x2218: [444,-55,500,55,444],      // RING OPERATOR
+    0x2219: [444,-55,500,55,444],      // BULLET OPERATOR
+    0x221A: [800,200,833,72,853],      // SQUARE ROOT
+    0x221D: [442,11,778,56,722],       // PROPORTIONAL TO
+    0x221E: [442,11,1000,55,944],      // INFINITY
+    0x2220: [694,0,722,55,666],        // ANGLE
+    0x2223: [750,249,278,119,159],     // DIVIDES
+    0x2225: [750,250,500,132,367],     // PARALLEL TO
+    0x2227: [598,22,667,55,611],       // LOGICAL AND
+    0x2228: [598,22,667,55,611],       // LOGICAL OR
+    0x2229: [598,22,667,55,611],       // stix-intersection, serifs
+    0x222A: [598,22,667,55,611],       // stix-union, serifs
+    0x222B: [716,216,417,55,472],      // INTEGRAL
+    0x223C: [367,-133,778,55,722],     // TILDE OPERATOR
+    0x2240: [583,83,278,55,222],       // WREATH PRODUCT
+    0x2243: [464,-36,778,55,722],      // ASYMPTOTICALLY EQUAL TO
+    0x2245: [589,-22,1000,55,722],     // APPROXIMATELY EQUAL TO
+    0x2248: [483,-55,778,55,722],      // ALMOST EQUAL TO
+    0x224D: [484,-16,778,55,722],      // EQUIVALENT TO
+    0x2250: [670,-133,778,56,722],     // APPROACHES THE LIMIT
+    0x2260: [716,215,778,56,722],      // stix-not (vert) equals
+    0x2261: [464,-36,778,56,722],      // IDENTICAL TO
+    0x2264: [636,138,778,83,694],      // LESS-THAN OR EQUAL TO
+    0x2265: [636,138,778,83,694],      // GREATER-THAN OR EQUAL TO
+    0x226A: [568,67,1000,56,944],      // MUCH LESS-THAN
+    0x226B: [567,67,1000,55,944],      // MUCH GREATER-THAN
+    0x227A: [539,41,778,84,694],       // PRECEDES
+    0x227B: [539,41,778,83,694],       // SUCCEEDS
+    0x2282: [540,40,778,84,694],       // SUBSET OF
+    0x2283: [540,40,778,83,693],       // SUPERSET OF
+    0x2286: [636,138,778,84,694],      // SUBSET OF OR EQUAL TO
+    0x2287: [636,138,778,83,693],      // SUPERSET OF OR EQUAL TO
+    0x228E: [598,22,667,55,611],       // MULTISET UNION
+    0x2291: [636,138,778,84,714],      // SQUARE IMAGE OF OR EQUAL TO
+    0x2292: [636,138,778,64,694],      // SQUARE ORIGINAL OF OR EQUAL TO
+    0x2293: [598,0,667,61,605],        // stix-square intersection, serifs
+    0x2294: [598,0,667,61,605],        // stix-square union, serifs
+    0x2295: [583,83,778,56,722],       // stix-circled plus (with rim)
+    0x2296: [583,83,778,56,722],       // CIRCLED MINUS
+    0x2297: [583,83,778,56,722],       // stix-circled times (with rim)
+    0x2298: [583,83,778,56,722],       // CIRCLED DIVISION SLASH
+    0x2299: [583,83,778,56,722],       // CIRCLED DOT OPERATOR
+    0x22A2: [694,0,611,55,555],        // RIGHT TACK
+    0x22A3: [694,0,611,55,555],        // LEFT TACK
+    0x22A4: [668,0,778,55,723],        // DOWN TACK
+    0x22A5: [668,0,778,55,723],        // UP TACK
+    0x22A8: [750,249,867,119,811],     // TRUE
+    0x22C4: [488,-12,500,12,488],      // DIAMOND OPERATOR
+    0x22C5: [310,-190,278,78,199],     // DOT OPERATOR
+    0x22C6: [486,-16,500,3,497],       // STAR OPERATOR
+    0x22C8: [505,5,900,26,873],        // BOWTIE
+    0x22EE: [900,30,278,78,199],       // VERTICAL ELLIPSIS
+    0x22EF: [310,-190,1172,78,1093],   // MIDLINE HORIZONTAL ELLIPSIS
+    0x22F1: [820,-100,1282,133,1148],  // DOWN RIGHT DIAGONAL ELLIPSIS
+    0x2308: [750,250,444,174,422],     // LEFT CEILING
+    0x2309: [750,250,444,21,269],      // RIGHT CEILING
+    0x230A: [750,250,444,174,422],     // LEFT FLOOR
+    0x230B: [750,250,444,21,269],      // RIGHT FLOOR
+    0x2322: [388,-122,1000,55,944],    // stix-small down curve
+    0x2323: [378,-134,1000,55,944],    // stix-small up curve
+    0x23B0: [744,244,412,55,357],      // UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION
+    0x23B1: [744,244,412,56,357],      // UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION
+    0x27E8: [750,250,389,110,333],     // MATHEMATICAL LEFT ANGLE BRACKET
+    0x27E9: [750,250,389,55,278],      // MATHEMATICAL RIGHT ANGLE BRACKET
+    0x27EE: [744,244,412,173,357],     // MATHEMATICAL LEFT FLATTENED PARENTHESIS
+    0x27EF: [744,244,412,56,240],      // MATHEMATICAL RIGHT FLATTENED PARENTHESIS
+    0x27F5: [511,11,1609,55,1525],     // LONG LEFTWARDS ARROW
+    0x27F6: [511,11,1638,84,1553],     // LONG RIGHTWARDS ARROW
+    0x27F7: [511,11,1859,55,1803],     // LONG LEFT RIGHT ARROW
+    0x27F8: [525,24,1609,56,1553],     // LONG LEFTWARDS DOUBLE ARROW
+    0x27F9: [525,24,1638,56,1582],     // LONG RIGHTWARDS DOUBLE ARROW
+    0x27FA: [525,24,1858,56,1802],     // LONG LEFT RIGHT DOUBLE ARROW
+    0x27FC: [511,11,1638,55,1553],     // LONG RIGHTWARDS ARROW FROM BAR
+    0x2A3F: [683,0,750,28,721],        // AMALGAMATION OR COPRODUCT
+    0x2AAF: [636,138,778,84,694],      // PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
+    0x2AB0: [636,138,778,83,694]       // SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
+  };
+
+  HTMLCSS.FONTDATA.FONTS['MathJax_Math-italic'] = {
+    directory: 'Math/Italic',
+    family: 'MathJax_Math',
+    style: 'italic',
+    testString: "MathJax Math \u03A5",
+    skew: {
+      0x41: 0.139,
+      0x42: 0.0833,
+      0x43: 0.0833,
+      0x44: 0.0556,
+      0x45: 0.0833,
+      0x46: 0.0833,
+      0x47: 0.0833,
+      0x48: 0.0556,
+      0x49: 0.111,
+      0x4A: 0.167,
+      0x4B: 0.0556,
+      0x4C: 0.0278,
+      0x4D: 0.0833,
+      0x4E: 0.0833,
+      0x4F: 0.0833,
+      0x50: 0.0833,
+      0x51: 0.0833,
+      0x52: 0.0833,
+      0x53: 0.0833,
+      0x54: 0.0833,
+      0x55: 0.0278,
+      0x58: 0.0833,
+      0x5A: 0.0833,
+      0x63: 0.0556,
+      0x64: 0.167,
+      0x65: 0.0556,
+      0x66: 0.167,
+      0x67: 0.0278,
+      0x68: -0.0278,
+      0x6C: 0.0833,
+      0x6F: 0.0556,
+      0x70: 0.0833,
+      0x71: 0.0833,
+      0x72: 0.0556,
+      0x73: 0.0556,
+      0x74: 0.0833,
+      0x75: 0.0278,
+      0x76: 0.0278,
+      0x77: 0.0833,
+      0x78: 0.0278,
+      0x79: 0.0556,
+      0x7A: 0.0556,
+      0x393: 0.0833,
+      0x394: 0.167,
+      0x398: 0.0833,
+      0x39B: 0.167,
+      0x39E: 0.0833,
+      0x3A0: 0.0556,
+      0x3A3: 0.0833,
+      0x3A5: 0.0556,
+      0x3A6: 0.0833,
+      0x3A8: 0.0556,
+      0x3A9: 0.0833,
+      0x3B1: 0.0278,
+      0x3B2: 0.0833,
+      0x3B4: 0.0556,
+      0x3B5: 0.0833,
+      0x3B6: 0.0833,
+      0x3B7: 0.0556,
+      0x3B8: 0.0833,
+      0x3B9: 0.0556,
+      0x3BC: 0.0278,
+      0x3BD: 0.0278,
+      0x3BE: 0.111,
+      0x3BF: 0.0556,
+      0x3C1: 0.0833,
+      0x3C2: 0.0833,
+      0x3C4: 0.0278,
+      0x3C5: 0.0278,
+      0x3C6: 0.0833,
+      0x3C7: 0.0556,
+      0x3C8: 0.111,
+      0x3D1: 0.0833,
+      0x3D5: 0.0833,
+      0x3F1: 0.0833,
+      0x3F5: 0.0556
+    },
+    0x20: [0,0,250,0,0],               // SPACE
+    0x2F: [716,215,778,139,638],       // SOLIDUS
+    0x41: [716,0,750,35,726],          // LATIN CAPITAL LETTER A
+    0x42: [683,0,759,35,756],          // LATIN CAPITAL LETTER B
+    0x43: [705,22,715,50,760],         // LATIN CAPITAL LETTER C
+    0x44: [683,0,828,33,803],          // LATIN CAPITAL LETTER D
+    0x45: [680,0,738,31,764],          // LATIN CAPITAL LETTER E
+    0x46: [680,0,643,31,749],          // LATIN CAPITAL LETTER F
+    0x47: [705,22,786,50,760],         // LATIN CAPITAL LETTER G
+    0x48: [683,0,831,31,888],          // LATIN CAPITAL LETTER H
+    0x49: [683,0,440,26,504],          // LATIN CAPITAL LETTER I
+    0x4A: [683,22,555,57,633],         // LATIN CAPITAL LETTER J
+    0x4B: [683,0,849,31,889],          // LATIN CAPITAL LETTER K
+    0x4C: [683,0,681,32,647],          // LATIN CAPITAL LETTER L
+    0x4D: [683,0,970,35,1051],         // LATIN CAPITAL LETTER M
+    0x4E: [683,0,803,31,888],          // LATIN CAPITAL LETTER N
+    0x4F: [704,22,763,50,740],         // LATIN CAPITAL LETTER O
+    0x50: [683,0,642,33,751],          // LATIN CAPITAL LETTER P
+    0x51: [704,194,791,50,740],        // LATIN CAPITAL LETTER Q
+    0x52: [683,21,759,33,755],         // LATIN CAPITAL LETTER R
+    0x53: [705,22,613,52,645],         // LATIN CAPITAL LETTER S
+    0x54: [677,0,584,21,704],          // LATIN CAPITAL LETTER T
+    0x55: [683,22,683,60,767],         // LATIN CAPITAL LETTER U
+    0x56: [683,22,583,52,769],         // LATIN CAPITAL LETTER V
+    0x57: [683,22,944,51,1048],        // LATIN CAPITAL LETTER W
+    0x58: [683,0,828,26,852],          // LATIN CAPITAL LETTER X
+    0x59: [683,-1,581,30,763],         // LATIN CAPITAL LETTER Y
+    0x5A: [683,0,683,58,723],          // LATIN CAPITAL LETTER Z
+    0x61: [441,10,529,33,506],         // LATIN SMALL LETTER A
+    0x62: [694,11,429,40,422],         // LATIN SMALL LETTER B
+    0x63: [442,11,433,34,429],         // LATIN SMALL LETTER C
+    0x64: [694,10,520,33,523],         // LATIN SMALL LETTER D
+    0x65: [442,11,466,39,429],         // LATIN SMALL LETTER E
+    0x66: [705,205,490,55,550],        // LATIN SMALL LETTER F
+    0x67: [442,205,477,10,480],        // LATIN SMALL LETTER G
+    0x68: [694,11,576,48,555],         // LATIN SMALL LETTER H
+    0x69: [661,11,345,21,302],         // LATIN SMALL LETTER I
+    0x6A: [661,204,412,-12,403],       // LATIN SMALL LETTER J
+    0x6B: [694,11,521,48,503],         // LATIN SMALL LETTER K
+    0x6C: [694,11,298,38,266],         // LATIN SMALL LETTER L
+    0x6D: [442,11,878,21,857],         // LATIN SMALL LETTER M
+    0x6E: [442,11,600,21,580],         // LATIN SMALL LETTER N
+    0x6F: [441,11,485,34,476],         // LATIN SMALL LETTER O
+    0x70: [442,194,503,-39,497],       // LATIN SMALL LETTER P
+    0x71: [442,194,446,33,460],        // LATIN SMALL LETTER Q
+    0x72: [442,11,451,21,430],         // LATIN SMALL LETTER R
+    0x73: [442,10,469,53,419],         // LATIN SMALL LETTER S
+    0x74: [626,11,361,19,330],         // LATIN SMALL LETTER T
+    0x75: [442,11,572,21,551],         // LATIN SMALL LETTER U
+    0x76: [443,11,485,21,467],         // LATIN SMALL LETTER V
+    0x77: [443,11,716,21,690],         // LATIN SMALL LETTER W
+    0x78: [442,11,572,35,522],         // LATIN SMALL LETTER X
+    0x79: [442,205,490,21,496],        // LATIN SMALL LETTER Y
+    0x7A: [442,11,465,35,468],         // LATIN SMALL LETTER Z
+    0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+    0x393: [680,-1,615,31,721],        // GREEK CAPITAL LETTER GAMMA
+    0x394: [716,0,833,48,788],         // GREEK CAPITAL LETTER DELTA
+    0x398: [704,22,763,50,740],        // GREEK CAPITAL LETTER THETA
+    0x39B: [716,0,694,35,670],         // GREEK CAPITAL LETTER LAMDA
+    0x39E: [677,0,742,53,777],         // GREEK CAPITAL LETTER XI
+    0x3A0: [680,0,831,31,887],         // GREEK CAPITAL LETTER PI
+    0x3A3: [683,0,780,58,806],         // GREEK CAPITAL LETTER SIGMA
+    0x3A5: [705,0,583,28,700],         // GREEK CAPITAL LETTER UPSILON
+    0x3A6: [683,0,667,24,642],         // GREEK CAPITAL LETTER PHI
+    0x3A8: [683,0,612,21,692],         // GREEK CAPITAL LETTER PSI
+    0x3A9: [704,0,772,80,786],         // GREEK CAPITAL LETTER OMEGA
+    0x3B1: [442,11,640,34,603],        // GREEK SMALL LETTER ALPHA
+    0x3B2: [705,194,566,23,573],       // GREEK SMALL LETTER BETA
+    0x3B3: [441,216,518,11,543],       // GREEK SMALL LETTER GAMMA
+    0x3B4: [717,10,444,36,451],        // GREEK SMALL LETTER DELTA
+    0x3B5: [452,22,466,27,428],        // GREEK SMALL LETTER EPSILON
+    0x3B6: [704,204,438,44,471],       // GREEK SMALL LETTER ZETA
+    0x3B7: [442,216,497,21,503],       // GREEK SMALL LETTER ETA
+    0x3B8: [705,10,469,35,462],        // GREEK SMALL LETTER THETA
+    0x3B9: [442,10,354,48,332],        // GREEK SMALL LETTER IOTA
+    0x3BA: [442,11,576,49,554],        // GREEK SMALL LETTER KAPPA
+    0x3BB: [694,12,583,47,556],        // GREEK SMALL LETTER LAMDA
+    0x3BC: [442,216,603,23,580],       // GREEK SMALL LETTER MU
+    0x3BD: [442,2,494,45,530],         // GREEK SMALL LETTER NU
+    0x3BE: [704,205,438,21,443],       // GREEK SMALL LETTER XI
+    0x3BF: [441,11,485,34,476],        // GREEK SMALL LETTER OMICRON
+    0x3C0: [431,11,570,19,573],        // GREEK SMALL LETTER PI
+    0x3C1: [442,216,517,23,510],       // GREEK SMALL LETTER RHO
+    0x3C2: [442,107,363,31,405],       // GREEK SMALL LETTER FINAL SIGMA
+    0x3C3: [431,11,571,31,572],        // GREEK SMALL LETTER SIGMA
+    0x3C4: [431,13,437,18,517],        // GREEK SMALL LETTER TAU
+    0x3C5: [443,10,540,21,523],        // GREEK SMALL LETTER UPSILON
+    0x3C6: [442,218,654,50,618],       // GREEK SMALL LETTER PHI
+    0x3C7: [442,204,626,25,600],       // GREEK SMALL LETTER CHI
+    0x3C8: [694,205,651,21,634],       // GREEK SMALL LETTER PSI
+    0x3C9: [443,11,622,15,604],        // GREEK SMALL LETTER OMEGA
+    0x3D1: [705,11,591,21,563],        // GREEK THETA SYMBOL
+    0x3D5: [694,205,596,43,579],       // GREEK PHI SYMBOL
+    0x3D6: [431,10,828,19,823],        // GREEK PI SYMBOL
+    0x3F1: [442,194,517,67,510],       // GREEK RHO SYMBOL
+    0x3F5: [431,11,406,40,382]         // GREEK LUNATE EPSILON SYMBOL
+  };
+
+  HTMLCSS.FONTDATA.FONTS['MathJax_Size1'] = {
+    directory: 'Size1/Regular',
+    family: 'MathJax_Size1',
+    testString: "() [] {}",
+    0x20: [0,0,250,0,0],               // SPACE
+    0x28: [850,349,458,152,422],       // LEFT PARENTHESIS
+    0x29: [850,349,458,35,305],        // RIGHT PARENTHESIS
+    0x2F: [850,349,578,55,522],        // SOLIDUS
+    0x5B: [850,349,417,202,394],       // LEFT SQUARE BRACKET
+    0x5C: [850,349,578,54,522],        // REVERSE SOLIDUS
+    0x5D: [850,349,417,22,214],        // RIGHT SQUARE BRACKET
+    0x7B: [850,349,583,105,477],       // LEFT CURLY BRACKET
+    0x7D: [850,349,583,105,477],       // RIGHT CURLY BRACKET
+    0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+    0x2C6: [744,-551,556,-8,564],      // MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x2DC: [722,-597,556,1,554],       // SMALL TILDE
+    0x302: [744,-551,0,-564,8],        // COMBINING CIRCUMFLEX ACCENT
+    0x303: [722,-597,0,-555,-2],       // COMBINING TILDE
+    0x2016: [602,0,778,257,521],       // DOUBLE VERTICAL LINE
+    0x2191: [600,0,667,112,555],       // UPWARDS ARROW
+    0x2193: [600,0,667,112,555],       // DOWNWARDS ARROW
+    0x21D1: [599,0,778,57,721],        // UPWARDS DOUBLE ARROW
+    0x21D3: [600,-1,778,57,721],       // DOWNWARDS DOUBLE ARROW
+    0x220F: [750,250,944,55,888],      // N-ARY PRODUCT
+    0x2210: [750,250,944,55,888],      // N-ARY COPRODUCT
+    0x2211: [750,250,1056,56,999],     // N-ARY SUMMATION
+    0x221A: [850,350,1000,111,1020],   // SQUARE ROOT
+    0x2223: [627,15,333,145,188],      // DIVIDES
+    0x2225: [627,15,556,145,410],      // PARALLEL TO
+    0x222B: [805,306,472,55,610],      // INTEGRAL
+    0x222C: [805,306,819,55,957],      // DOUBLE INTEGRAL
+    0x222D: [805,306,1166,55,1304],    // TRIPLE INTEGRAL
+    0x222E: [805,306,472,55,610],      // CONTOUR INTEGRAL
+    0x22C0: [750,249,833,55,777],      // N-ARY LOGICAL AND
+    0x22C1: [750,249,833,55,777],      // N-ARY LOGICAL OR
+    0x22C2: [750,249,833,55,777],      // N-ARY INTERSECTION
+    0x22C3: [750,249,833,55,777],      // N-ARY UNION
+    0x2308: [850,349,472,202,449],     // LEFT CEILING
+    0x2309: [850,349,472,22,269],      // RIGHT CEILING
+    0x230A: [850,349,472,202,449],     // LEFT FLOOR
+    0x230B: [850,349,472,22,269],      // RIGHT FLOOR
+    0x23D0: [602,0,667,312,355],       // VERTICAL LINE EXTENSION (used to extend arrows)
+    0x27E8: [850,350,472,97,394],      // MATHEMATICAL LEFT ANGLE BRACKET
+    0x27E9: [850,350,472,77,374],      // MATHEMATICAL RIGHT ANGLE BRACKET
+    0x2A00: [750,250,1111,56,1054],    // N-ARY CIRCLED DOT OPERATOR
+    0x2A01: [750,250,1111,56,1054],    // N-ARY CIRCLED PLUS OPERATOR
+    0x2A02: [750,250,1111,56,1054],    // N-ARY CIRCLED TIMES OPERATOR
+    0x2A04: [750,249,833,55,777],      // N-ARY UNION OPERATOR WITH PLUS
+    0x2A06: [750,249,833,55,777]       // N-ARY SQUARE UNION OPERATOR
+  };
+
+  HTMLCSS.FONTDATA.FONTS['MathJax_Size2'] = {
+    directory: 'Size2/Regular',
+    family: 'MathJax_Size2',
+    testString: "() [] {}",
+    0x20: [0,0,250,0,0],               // SPACE
+    0x28: [1150,649,597,180,561],      // LEFT PARENTHESIS
+    0x29: [1150,649,597,35,416],       // RIGHT PARENTHESIS
+    0x2F: [1150,649,811,56,754],       // SOLIDUS
+    0x5B: [1150,649,472,224,455],      // LEFT SQUARE BRACKET
+    0x5C: [1150,649,811,54,754],       // REVERSE SOLIDUS
+    0x5D: [1150,649,472,16,247],       // RIGHT SQUARE BRACKET
+    0x7B: [1150,649,667,119,547],      // LEFT CURLY BRACKET
+    0x7D: [1150,649,667,119,547],      // RIGHT CURLY BRACKET
+    0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+    0x2C6: [772,-565,1000,-5,1004],    // MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x2DC: [750,-611,1000,0,999],      // SMALL TILDE
+    0x302: [772,-565,0,-1005,4],       // COMBINING CIRCUMFLEX ACCENT
+    0x303: [750,-611,0,-1000,-1],      // COMBINING TILDE
+    0x220F: [950,450,1278,56,1221],    // N-ARY PRODUCT
+    0x2210: [950,450,1278,56,1221],    // N-ARY COPRODUCT
+    0x2211: [950,450,1444,55,1388],    // N-ARY SUMMATION
+    0x221A: [1150,650,1000,111,1020],  // SQUARE ROOT
+    0x222B: [1360,862,556,55,944],     // INTEGRAL
+    0x222C: [1360,862,1084,55,1472],   // DOUBLE INTEGRAL
+    0x222D: [1360,862,1592,55,1980],   // TRIPLE INTEGRAL
+    0x222E: [1360,862,556,55,944],     // CONTOUR INTEGRAL
+    0x22C0: [950,450,1111,55,1055],    // N-ARY LOGICAL AND
+    0x22C1: [950,450,1111,55,1055],    // N-ARY LOGICAL OR
+    0x22C2: [949,450,1111,55,1055],    // N-ARY INTERSECTION
+    0x22C3: [950,449,1111,55,1055],    // N-ARY UNION
+    0x2308: [1150,649,528,224,511],    // LEFT CEILING
+    0x2309: [1150,649,528,16,303],     // RIGHT CEILING
+    0x230A: [1150,649,528,224,511],    // LEFT FLOOR
+    0x230B: [1150,649,528,16,303],     // RIGHT FLOOR
+    0x27E8: [1150,649,611,112,524],    // MATHEMATICAL LEFT ANGLE BRACKET
+    0x27E9: [1150,649,611,85,498],     // MATHEMATICAL RIGHT ANGLE BRACKET
+    0x2A00: [949,449,1511,56,1454],    // N-ARY CIRCLED DOT OPERATOR
+    0x2A01: [949,449,1511,56,1454],    // N-ARY CIRCLED PLUS OPERATOR
+    0x2A02: [949,449,1511,56,1454],    // N-ARY CIRCLED TIMES OPERATOR
+    0x2A04: [950,449,1111,55,1055],    // N-ARY UNION OPERATOR WITH PLUS
+    0x2A06: [950,450,1111,55,1055]     // N-ARY SQUARE UNION OPERATOR
+  };
+
+  HTMLCSS.FONTDATA.FONTS['MathJax_Size3'] = {
+    directory: 'Size3/Regular',
+    family: 'MathJax_Size3',
+    testString: "() [] {}",
+    0x20: [0,0,250,0,0],               // SPACE
+    0x28: [1450,949,736,209,701],      // LEFT PARENTHESIS
+    0x29: [1450,949,736,34,526],       // RIGHT PARENTHESIS
+    0x2F: [1450,949,1044,55,989],      // SOLIDUS
+    0x5B: [1450,949,528,247,516],      // LEFT SQUARE BRACKET
+    0x5C: [1450,949,1044,56,988],      // REVERSE SOLIDUS
+    0x5D: [1450,949,528,11,280],       // RIGHT SQUARE BRACKET
+    0x7B: [1450,949,750,130,618],      // LEFT CURLY BRACKET
+    0x7D: [1450,949,750,131,618],      // RIGHT CURLY BRACKET
+    0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+    0x2C6: [772,-564,1444,-4,1447],    // MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x2DC: [749,-610,1444,1,1442],     // SMALL TILDE
+    0x302: [772,-564,0,-1448,3],       // COMBINING CIRCUMFLEX ACCENT
+    0x303: [749,-610,0,-1443,-2],      // COMBINING TILDE
+    0x221A: [1450,950,1000,111,1020],  // SQUARE ROOT
+    0x2308: [1450,949,583,246,571],    // LEFT CEILING
+    0x2309: [1450,949,583,11,336],     // RIGHT CEILING
+    0x230A: [1450,949,583,246,571],    // LEFT FLOOR
+    0x230B: [1450,949,583,11,336],     // RIGHT FLOOR
+    0x27E8: [1450,950,750,126,654],    // MATHEMATICAL LEFT ANGLE BRACKET
+    0x27E9: [1450,949,750,94,623]      // MATHEMATICAL RIGHT ANGLE BRACKET
+  };
+
+  HTMLCSS.FONTDATA.FONTS['MathJax_Size4'] = {
+    directory: 'Size4/Regular',
+    family: 'MathJax_Size4',
+    testString: "() [] {}",
+    0x20: [0,0,250,0,0],               // SPACE
+    0x28: [1750,1249,792,237,758],     // LEFT PARENTHESIS
+    0x29: [1750,1249,792,33,554],      // RIGHT PARENTHESIS
+    0x2F: [1750,1249,1278,56,1221],    // SOLIDUS
+    0x5B: [1750,1249,583,269,577],     // LEFT SQUARE BRACKET
+    0x5C: [1750,1249,1278,56,1221],    // REVERSE SOLIDUS
+    0x5D: [1750,1249,583,5,313],       // RIGHT SQUARE BRACKET
+    0x7B: [1750,1249,806,144,661],     // LEFT CURLY BRACKET
+    0x7D: [1750,1249,806,144,661],     // RIGHT CURLY BRACKET
+    0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+    0x2C6: [845,-561,1889,-14,1902],   // MODIFIER LETTER CIRCUMFLEX ACCENT
+    0x2DC: [823,-583,1889,1,1885],     // SMALL TILDE
+    0x302: [845,-561,0,-1903,13],      // COMBINING CIRCUMFLEX ACCENT
+    0x303: [823,-583,0,-1888,-4],      // COMBINING TILDE
+    0x221A: [1750,1250,1000,111,1020], // SQUARE ROOT
+    0x2308: [1750,1249,639,269,633],   // LEFT CEILING
+    0x2309: [1750,1249,639,5,369],     // RIGHT CEILING
+    0x230A: [1750,1249,639,269,633],   // LEFT FLOOR
+    0x230B: [1750,1249,639,5,369],     // RIGHT FLOOR
+    0x239B: [1154,655,875,291,843],    // LEFT PARENTHESIS UPPER HOOK
+    0x239C: [610,10,875,291,417],      // LEFT PARENTHESIS EXTENSION
+    0x239D: [1165,644,875,291,843],    // LEFT PARENTHESIS LOWER HOOK
+    0x239E: [1154,655,875,31,583],     // RIGHT PARENTHESIS UPPER HOOK
+    0x239F: [610,10,875,457,583],      // RIGHT PARENTHESIS EXTENSION
+    0x23A0: [1165,644,875,31,583],     // RIGHT PARENTHESIS LOWER HOOK
+    0x23A1: [1154,645,667,319,666],    // LEFT SQUARE BRACKET UPPER CORNER
+    0x23A2: [602,0,667,319,403],       // LEFT SQUARE BRACKET EXTENSION
+    0x23A3: [1155,644,667,319,666],    // LEFT SQUARE BRACKET LOWER CORNER
+    0x23A4: [1154,645,667,0,347],      // RIGHT SQUARE BRACKET UPPER CORNER
+    0x23A5: [602,0,667,263,347],       // RIGHT SQUARE BRACKET EXTENSION
+    0x23A6: [1155,644,667,0,347],      // RIGHT SQUARE BRACKET LOWER CORNER
+    0x23A7: [899,10,889,384,718],      // LEFT CURLY BRACKET UPPER HOOK
+    0x23A8: [1160,660,889,170,504],    // LEFT CURLY BRACKET MIDDLE PIECE
+    0x23A9: [10,899,889,384,718],      // LEFT CURLY BRACKET LOWER HOOK
+    0x23AA: [310,10,889,384,504],      // CURLY BRACKET EXTENSION
+    0x23AB: [899,10,889,170,504],      // RIGHT CURLY BRACKET UPPER HOOK
+    0x23AC: [1160,660,889,384,718],    // RIGHT CURLY BRACKET MIDDLE PIECE
+    0x23AD: [10,899,889,170,504],      // RIGHT CURLY BRACKET LOWER HOOK
+    0x23B7: [935,885,1056,111,742],    // RADICAL SYMBOL BOTTOM
+    0x27E8: [1750,1248,806,140,703],   // MATHEMATICAL LEFT ANGLE BRACKET
+    0x27E9: [1750,1248,806,103,665],   // MATHEMATICAL RIGHT ANGLE BRACKET
+    0xE000: [625,14,1056,702,742],     // stix-radical symbol vertical extender
+    0xE001: [605,14,1056,702,1076],    // stix-radical symbol top corner piece
+    0xE150: [120,213,450,-24,460],     // stix-horizontal brace, down left piece
+    0xE151: [120,213,450,-10,474],     // stix-horizontal brace, down right piece
+    0xE152: [333,0,450,-24,460],       // stix-horizontal brace, upper left piece
+    0xE153: [333,0,450,-10,474],       // stix-horizontal brace, upper right piece
+    0xE154: [120,0,400,-10,410]        // stix-oblique open face capital letter A
+  };
+
+  HTMLCSS.FONTDATA.FONTS['MathJax_Main'][0x22EE][0] += 400;  // adjust height for \vdots
+  HTMLCSS.FONTDATA.FONTS['MathJax_Main'][0x22F1][0] += 700;  // adjust height for \ddots
+  HTMLCSS.FONTDATA.FONTS['MathJax_Size4'][0xE154][0] += 200;  // adjust height for brace extender
+  HTMLCSS.FONTDATA.FONTS['MathJax_Size4'][0xE154][1] += 200;  // adjust depth for brace extender
+  HTMLCSS.FONTDATA.FONTS['MathJax_Main'][0x2212][1] += 100; // adjust depth of minus (used as arrow extender)
+  HTMLCSS.FONTDATA.FONTS['MathJax_Main'][0x003D][1] += 100; // adjust depth of = (used as arrow extender)
+  HTMLCSS.FONTDATA.FONTS['MathJax_Main'][0x2245][2] -= 222; // fix error in character's right bearing
+  HTMLCSS.FONTDATA.FONTS['MathJax_Main'][0x2245][5] = {rfix:-222}; // fix error in character's right bearing
+  MathJax.Hub.Register.LoadHook(HTMLCSS.fontDir+"/Main/Bold/MathOperators.js",function () {
+    HTMLCSS.FONTDATA.FONTS['MathJax_Main-bold'][0x2245][2] -= 106; // fix error in character's right bearing
+    HTMLCSS.FONTDATA.FONTS['MathJax_Main-bold'][0x2245][5] = {rfix:-106}; // fix error in character's right bearing
+  });
+  
+  //
+  //  Add some spacing characters (more will come later)
+  //
+  MathJax.Hub.Insert(HTMLCSS.FONTDATA.FONTS['MathJax_Main'],{
+    0xEEE0: [0,0,-575,0,0,{space:1}],
+    0xEEE1: [0,0,-300,0,0,{space:1}],
+    0xEEE8: [0,0,25,0,0,{space:1}]
+  });
+
+  if (!HTMLCSS.imgFonts) {
+    MathJax.Hub.Browser.Select({
+      MSIE: function (browser) {
+        
+        if (HTMLCSS.config.availableFonts && HTMLCSS.config.availableFonts.length) {
+          
+          HTMLCSS.FONTDATA.REMAP[0x2C9] = 0xAF; // macron
+          HTMLCSS.FONTDATA.REMAP[0x2CA] = 0xB4; // acute
+          HTMLCSS.FONTDATA.REMAP[0x2CB] = 0x60; // grave
+          HTMLCSS.FONTDATA.REMAP[0x2DA] = 0xB0; // ring above
+          
+          var testString = HTMLCSS.msieCheckGreek =
+            String.fromCharCode(0x393)+" "+String.fromCharCode(0x3A5)+" "+String.fromCharCode(0x39B);
+
+          HTMLCSS.FONTDATA.RANGES.push({name: "IEgreek", low: 0x03B1, high: 0x03C9, offset: "IEG", add: 32});
+          HTMLCSS.FONTDATA.RANGES.push({name: "IEGreek", low: 0x0391, high: 0x03F6, offset: "IEG"});
+          
+          if (HTMLCSS.Font.testFont({family:"MathJax_Greek", testString: testString})) {
+            HTMLCSS.Augment({
+              FONTDATA: {
+                VARIANT: {
+                  normal:             {offsetIEG: 0x391, variantIEG: "-Greek"},
+                  "fraktur":          {offsetIEG: 0x391, variantIEG: "-Greek"},
+                  "script":           {offsetIEG: 0x391, variantIEG: "-Greek"},
+                  "-tex-caligraphic": {offsetIEG: 0x391, variantIEG: "-Greek"},
+                  "-tex-oldstyle":    {offsetIEG: 0x391, variantIEG: "-Greek"},
+                  "-Greek":           {fonts:["MathJax_Greek"]}
+                }
+              }
+            });
+
+            HTMLCSS.FONTDATA.FONTS['MathJax_Greek'] = {
+              directory: 'Greek/Regular',
+              family: 'MathJax_Greek',
+              testString: "\u0393 \u03A5 \u039B",
+              0x20: [0,0,250,0,0],               // SPACE
+              0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+              0x393: [680,0,625,25,582],         // GREEK CAPITAL LETTER GAMMA
+              0x394: [716,0,833,46,786],         // GREEK CAPITAL LETTER DELTA
+              0x398: [705,22,778,56,722],        // GREEK CAPITAL LETTER THETA
+              0x39B: [716,0,694,32,661],         // GREEK CAPITAL LETTER LAMDA
+              0x39E: [677,0,667,42,624],         // GREEK CAPITAL LETTER XI
+              0x3A0: [680,0,750,25,724],         // GREEK CAPITAL LETTER PI
+              0x3A3: [683,0,722,55,666],         // GREEK CAPITAL LETTER SIGMA
+              0x3A5: [705,0,778,55,722],         // GREEK CAPITAL LETTER UPSILON
+              0x3A6: [683,0,722,56,665],         // GREEK CAPITAL LETTER PHI
+              0x3A8: [683,0,778,55,722],         // GREEK CAPITAL LETTER PSI
+              0x3A9: [704,0,722,44,677]          // GREEK CAPITAL LETTER OMEGA
+            };
+            
+          }
+          
+          if (HTMLCSS.Font.testFont({family:"MathJax_Greek", weight:"bold", testString: testString})) {
+            HTMLCSS.Augment({
+              FONTDATA: {
+                VARIANT: {
+                  bold:               {offsetIEG: 0x391, variantIEG: "-Greek-Bold"},
+                  "bold-fraktur":     {offsetIEG: 0x391, variantIEG: "-Greek-Bold"},
+                  "bold-script":      {offsetIEG: 0x391, variantIEG: "-Greek-Bold"},
+                  "-Greek-Bold":      {fonts:["MathJax_Greek-bold"]}
+                }
+              }
+            });
+
+            HTMLCSS.FONTDATA.FONTS['MathJax_Greek-bold'] = {
+              directory: 'Greek/Bold',
+              family: 'MathJax_Greek',
+              weight: 'bold',
+              testString: "\u0393 \u03A5 \u039B",
+              0x20: [0,0,250,0,0],               // SPACE
+              0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+              0x393: [680,0,692,39,643],         // GREEK CAPITAL LETTER GAMMA
+              0x394: [698,0,958,56,901],         // GREEK CAPITAL LETTER DELTA
+              0x398: [696,10,894,64,829],        // GREEK CAPITAL LETTER THETA
+              0x39B: [698,0,806,40,765],         // GREEK CAPITAL LETTER LAMDA
+              0x39E: [675,0,767,48,718],         // GREEK CAPITAL LETTER XI
+              0x3A0: [680,0,900,39,860],         // GREEK CAPITAL LETTER PI
+              0x3A3: [686,0,831,64,766],         // GREEK CAPITAL LETTER SIGMA
+              0x3A5: [697,0,894,64,829],         // GREEK CAPITAL LETTER UPSILON
+              0x3A6: [686,0,831,64,766],         // GREEK CAPITAL LETTER PHI
+              0x3A8: [686,0,894,64,829],         // GREEK CAPITAL LETTER PSI
+              0x3A9: [696,1,831,51,779]          // GREEK CAPITAL LETTER OMEGA
+            };
+            
+          }
+          
+          if (HTMLCSS.Font.testFont({family:"MathJax_Greek", style:"italic", testString: testString})) {
+            HTMLCSS.Augment({
+              FONTDATA: {
+                VARIANT: {
+                  italic:  {offsetIEG: 0x391, variantIEG: "-Greek-Italic"},
+                  "-Greek-Italic": {fonts:["MathJax_Greek-italic"]}
+                }
+              }
+            });
+
+            HTMLCSS.FONTDATA.FONTS['MathJax_Greek-italic'] = {
+              directory: 'Greek/Italic',
+              family: 'MathJax_Greek',
+              style: 'italic',
+              testString: "\u0393 \u03A5 \u039B",
+              skew: {
+                0x393: 0.0833,
+                0x394: 0.167,
+                0x398: 0.0833,
+                0x39B: 0.167,
+                0x39E: 0.0833,
+                0x3A0: 0.0556,
+                0x3A3: 0.0833,
+                0x3A5: 0.0556,
+                0x3A6: 0.0833,
+                0x3A8: 0.0556,
+                0x3A9: 0.0833,
+                0x3B1: 0.0278,
+                0x3B2: 0.0833,
+                0x3B4: 0.0556,
+                0x3B5: 0.0833,
+                0x3B6: 0.0833,
+                0x3B7: 0.0556,
+                0x3B8: 0.0833,
+                0x3B9: 0.0556,
+                0x3BC: 0.0278,
+                0x3BD: 0.0278,
+                0x3BE: 0.111,
+                0x3BF: 0.0556,
+                0x3C1: 0.0833,
+                0x3C2: 0.0833,
+                0x3C4: 0.0278,
+                0x3C5: 0.0278,
+                0x3C6: 0.0833,
+                0x3C7: 0.0556,
+                0x3C8: 0.111,
+                0x3D1: 0.0833,
+                0x3D5: 0.0833,
+                0x3F1: 0.0833,
+                0x3F5: 0.0556
+              },
+              0x20: [0,0,250,0,0],               // SPACE
+              0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+              0x393: [680,-1,615,31,721],        // GREEK CAPITAL LETTER GAMMA
+              0x394: [716,0,833,48,788],         // GREEK CAPITAL LETTER DELTA
+              0x398: [704,22,763,50,740],        // GREEK CAPITAL LETTER THETA
+              0x39B: [716,0,694,35,670],         // GREEK CAPITAL LETTER LAMDA
+              0x39E: [678,0,742,53,777],         // GREEK CAPITAL LETTER XI
+              0x3A0: [681,0,831,31,887],         // GREEK CAPITAL LETTER PI
+              0x3A3: [683,0,780,58,806],         // GREEK CAPITAL LETTER SIGMA
+              0x3A5: [705,0,583,28,700],         // GREEK CAPITAL LETTER UPSILON
+              0x3A6: [683,0,667,24,642],         // GREEK CAPITAL LETTER PHI
+              0x3A8: [683,0,612,21,692],         // GREEK CAPITAL LETTER PSI
+              0x3A9: [704,0,772,80,786],         // GREEK CAPITAL LETTER OMEGA
+              0x3B1: [442,11,640,34,603],        // GREEK SMALL LETTER ALPHA
+              0x3B2: [705,194,566,23,573],       // GREEK SMALL LETTER BETA
+              0x3B3: [441,216,518,11,543],       // GREEK SMALL LETTER GAMMA
+              0x3B4: [717,10,444,36,451],        // GREEK SMALL LETTER DELTA
+              0x3B5: [452,22,466,27,428],        // GREEK SMALL LETTER EPSILON
+              0x3B6: [704,204,438,44,471],       // GREEK SMALL LETTER ZETA
+              0x3B7: [442,216,497,21,503],       // GREEK SMALL LETTER ETA
+              0x3B8: [705,10,469,35,462],        // GREEK SMALL LETTER THETA
+              0x3B9: [442,10,354,48,332],        // GREEK SMALL LETTER IOTA
+              0x3BA: [442,11,576,49,554],        // GREEK SMALL LETTER KAPPA
+              0x3BB: [694,12,583,47,556],        // GREEK SMALL LETTER LAMDA
+              0x3BC: [442,216,603,23,580],       // GREEK SMALL LETTER MU
+              0x3BD: [442,2,494,45,530],         // GREEK SMALL LETTER NU
+              0x3BE: [704,205,438,21,443],       // GREEK SMALL LETTER XI
+              0x3BF: [441,11,485,34,476],        // GREEK SMALL LETTER OMICRON
+              0x3C0: [431,11,570,19,573],        // GREEK SMALL LETTER PI
+              0x3C1: [442,216,517,23,510],       // GREEK SMALL LETTER RHO
+              0x3C2: [442,107,363,31,405],       // GREEK SMALL LETTER FINAL SIGMA
+              0x3C3: [431,11,571,31,572],        // GREEK SMALL LETTER SIGMA
+              0x3C4: [431,13,437,18,517],        // GREEK SMALL LETTER TAU
+              0x3C5: [443,10,540,21,523],        // GREEK SMALL LETTER UPSILON
+              0x3C6: [442,218,654,50,618],       // GREEK SMALL LETTER PHI
+              0x3C7: [442,204,626,25,600],       // GREEK SMALL LETTER CHI
+              0x3C8: [694,205,651,21,634],       // GREEK SMALL LETTER PSI
+              0x3C9: [443,11,622,15,604],        // GREEK SMALL LETTER OMEGA
+              0x3D1: [705,11,591,21,563],        // GREEK THETA SYMBOL
+              0x3D5: [694,205,596,43,579],       // GREEK PHI SYMBOL
+              0x3D6: [431,10,828,19,823],        // GREEK PI SYMBOL
+              0x3F1: [442,194,517,67,510],       // GREEK RHO SYMBOL
+              0x3F5: [431,11,406,40,382]         // GREEK LUNATE EPSILON SYMBOL
+            };
+            
+          }
+        }
+
+        if (HTMLCSS.msieIE6) {
+          
+          var WinIE6 = "MathJax_WinIE6";
+          HTMLCSS.FONTDATA.FONTS[WinIE6] = "WinIE6/Regular/Main.js";
+          HTMLCSS.FONTDATA.RANGES.push({name: "arrows", low: 0x2190, high: 0x2199, offset: "AR"});
+
+          var REMAP = {variant:"-WinIE6",
+            0x21D2:0xE20A, 0x21D4:0xE20B,                               // \Rightarrow, \Leftrightarrow
+            0x2200:0xE20C, 0x2202:0xE20D, 0x2203:0xE20E, 0x2207:0xE20F, // \forall, \partial, \exists, \nabla
+            0x2208:0xE210, 0x220B:0xE211, 0x2215:0xE212, 0x221A:0xE213, // \in, \ni, /, \surd
+            0x221D:0xE214, 0x221E:0xE215, 0x2220:0xE216, 0x2223:0xE217, // \propto, \infty, \angle, \vert
+            0x2225:0xE218, 0x2227:0xE219, 0x2228:0xE21A, 0x2229:0xE21B, // \Vert, \wedge, \vee, \cap
+            0x222A:0xE21C, 0x222B:0xE21D, 0x223C:0xE21E, 0x2248:0xE21F, // \cup, \int, \sim, \approx
+            0x2260:0xE220, 0x2261:0xE221, 0x2264:0xE222, 0x2265:0xE223, // \ne, \equiv, \le, \ge
+            0x226A:0xE224, 0x226B:0xE225, 0x2282:0xE226, 0x2283:0xE227, // \ll, \gg, \subset, \supset
+            0x2286:0xE228, 0x2287:0xE229, 0x2295:0xE22A, 0x2299:0xE22B, // \subseteq, \supseteq, \oplus, \odot
+            0x22A5:0xE22C, 0x25B3:0xE22D, 0x25BD:0xE22E, 0x25EF:0xE22F, // \bot, \bigtriangleup, \bigtriangledown, \bigcirc
+            0x2660:0xE230, 0x2661:0xE231, 0x2662:0xE232, 0x2663:0xE233, // \spadesuit, \heartsuit, \diamondsuit, \clubsuit
+            0x266D:0xE234, 0x266E:0xE235, 0x266F:0xE236,                // \flat, \naturl, \sharp
+            0x2266:0xE2C5, 0x2267:0xE2C6, 0x226E:0xE2C7, 0x226F:0xE2C8, // \leqq, \geqq, \nless, \ngtr
+            0x231C:0xE2CA, 0x231D:0xE2CB, 0x231E:0xE2CC, 0x231F:0xE2CD, // corners
+            0x250C:0xE2CA, 0x2510:0xE2CB, 0x2514:0xE2CC, 0x2518:0xE2CD, // corners (wrong positions)
+            0x2571:0xE2CE, 0x2572:0xE2CF, 0x25A0:0xE2D0, 0x25A1:0xE2D1, // \diagup, \diagdown, \blacksquare, \square
+            0x25B2:0xE2D2, 0x25B6:0xE2D4, 0x25BC:0xE2D5,                // \blacktriangle, \blacktriangleright, \blacktriangledown
+            0x25BD:0xE2D6, 0x25C0:0xE2D7, 0x25CA:0xE2D8,                // \vartriangledown, \blacktriangleleft, \lozenge
+            0x2234:0xE2D9, 0x2235:0xE2DA, 0x2252:0xE2DB, 0x2605:0xE2DC, // \therefor, \because, \fallingdotseq, \bigstar
+            0x223D:0xE2DD                                               // \backsim
+          };
+          var REMAPBOLD = {variant:"-WinIE6",
+            0x21D2:0xE24A, 0x21D4:0xE24B,                               // \Rightarrow, \Leftrightarrow
+            0x2200:0xE24C, 0x2202:0xE24D, 0x2203:0xE24E, 0x2207:0xE24F, // \forall, \partial, \exists, \nabla
+            0x2208:0xE250, 0x220B:0xE251, 0x2215:0xE252, 0x221A:0xE253, // \in, \ni, /, \surd
+            0x221D:0xE254, 0x221E:0xE255, 0x2220:0xE256, 0x2223:0xE257, // \propto, \infty, \angle, \vert
+            0x2225:0xE258, 0x2227:0xE259, 0x2228:0xE25A, 0x2229:0xE25B, // \Vert, \wedge, \vee, \cap
+            0x222A:0xE25C, 0x222B:0xE25D, 0x223C:0xE25E, 0x2248:0xE25F, // \cup, \int, \sim, \approx
+            0x2260:0xE260, 0x2261:0xE261, 0x2264:0xE262, 0x2265:0xE263, // \ne, \equiv, \le, \ge
+            0x226A:0xE264, 0x226B:0xE265, 0x2282:0xE266, 0x2283:0xE267, // \ll, \gg, \subset, \supset
+            0x2286:0xE268, 0x2287:0xE269, 0x2295:0xE26A, 0x2299:0xE26B, // \subseteq, \supseteq, \oplus, \odot
+            0x22A5:0xE26C, 0x25B3:0xE26D, 0x25BD:0xE26E, 0x25EF:0xE26F, // \bot, \bigtriangleup, \bigtriangledown, \bigcirc
+            0x2660:0xE270, 0x2661:0xE271, 0x2662:0xE272, 0x2663:0xE273, // \spadesuit, \heartsuit, \diamondsuit, \clubsuit
+            0x266D:0xE274, 0x266E:0xE275, 0x266F:0xE276,                // \flat, \naturl, \sharp
+            0x2266:0xE2C5, 0x2267:0xE2C6, 0x226E:0xE2C7, 0x226F:0xE2C8, // \leqq, \geqq, \nless, \ngtr
+            0x231C:0xE2CA, 0x231D:0xE2CB, 0x231E:0xE2CC, 0x231F:0xE2CD, // corners
+            0x250C:0xE2CA, 0x2510:0xE2CB, 0x2514:0xE2CC, 0x2518:0xE2CD, // corners (wrong positions)
+            0x2571:0xE2CE, 0x2572:0xE2CF, 0x25A0:0xE2D0, 0x25A1:0xE2D1, // \diagup, \diagdown, \blacksquare, \square
+            0x25B2:0xE2D2, 0x25B6:0xE2D4, 0x25BC:0xE2D5,                // \blacktriangle, \blacktriangleright, \blacktriangledown
+            0x25BD:0xE2D6, 0x25C0:0xE2D7, 0x25CA:0xE2D8,                // \vartriangledown, \blacktriangleleft, \lozenge
+            0x2234:0xE2D9, 0x2235:0xE2DA, 0x2252:0xE2DB, 0x2605:0xE2DC, // \therefor, \because, \fallingdotseq, \bigstar
+            0x223D:0xE2DD                                               // \backsim
+          };
+          var VARNORMAL = {offsetAR:0xE200, variantAR:"-WinIE6", remap: REMAP};
+          var VARBOLD   = {offsetAR:0xE240, variantAR:"-WinIE6", remap: REMAPBOLD};
+
+          HTMLCSS.Augment({
+            FONTDATA: {
+              VARIANT: {
+                "normal": VARNORMAL,
+                "bold":   VARBOLD,
+                "italic": VARNORMAL,
+                "bold-italic": VARBOLD,
+                "-TeX-variant": {remap:{
+                                   0x2190:[0xE2C1,"-WinIE6"], 0x2192:[0xE2C0,"-WinIE6"],
+                                   0x2223:[0xE2C2,"-WinIE6"], 0x2225:[0xE2C3,"-WinIE6"],
+                                   0x223C:[0xE2C4,"-WinIE6"], 0x25B3:[0xE2D3,"-WinIE6"]
+                                 }},
+                "-largeOp": {fonts:[WinIE6,SIZE2,SIZE1,MAIN],
+                             remap: {0x220F:0xE290, 0x2211:0xE291, 0x222B:0xE295, 0x222E:0xE296}},
+                "-smallOp": {fonts:[WinIE6,SIZE1,MAIN],
+                             remap: {0x220F:0xE280, 0x2211:0xE281, 0x222B:0xE285, 0x222E:0xE286}},
+                "-WinIE6":  {fonts:[WinIE6]}
+	      },
+	      DELIMITERS: {
+	        0x221A: {
+	          HW:{
+                    0:[1,WinIE6,null,0xE213], 1:[1.2,WinIE6,null,0xE282], 2:[1.8,WinIE6,null,0xE292],
+                    3:[2.4,WinIE6,null,0xE2A2], 4:[3,WinIE6,null,0xE2B2]
+                  }
+	        },
+                0x007C: {stretch:{ext:[0xE217,WinIE6]}},
+                0x2223: {HW:{0:[1,WinIE6,null,0xE217]}, stretch:{ext:[0xE217,WinIE6]}},
+                0x23D0: {HW:{1:[1,WinIE6,null,0xE217]}, stretch:{ext:[0xE217,WinIE6]}},
+                0x2225: {HW:{0:[1,WinIE6,null,0xE218]}, stretch:{ext:[0xE218,WinIE6]}},
+                0x2190: {HW:{0:[.889,WinIE6,null,0xE200]}, stretch:{left:[0xE200,WinIE6]}},
+                0x2191: {HW:{0:[.888,WinIE6,null,0xE201]}, stretch:{top:[0xE287,WinIE6],ext:[0xE289,WinIE6]}},
+                0x2192: {HW:{0:[.889,WinIE6,null,0xE202]}, stretch:{right:[0xE202,WinIE6]}},
+                0x2193: {HW:{0:[.888,WinIE6,null,0xE203]}, stretch:{bot:[0xE288,WinIE6],ext:[0xE289,WinIE6]}},
+                0x2194: {HW:{0:[1,WinIE6,null,0xE204]}, stretch:{left:[0xE200,WinIE6],right:[0xE202,WinIE6]}},
+                0x2195: {HW:{0:[1.044,WinIE6,null,0xE203]}, stretch:{top:[0xE287,WinIE6],bot:[0xE288,WinIE6], ext:[0xE289,WinIE6]}}
+              }
+            }
+          });
+          
+        }
+        
+      },
+      
+      Chrome: function (browser) {
+        if (browser.isPC && navigator.userAgent.match(/Windows NT (5|6.0)/)) {
+          //
+          //  Chrome on XP and Vista don't seem to handle four combining characters,
+          //  so work around them as best we can.
+          //
+          HTMLCSS.Augment({
+            FONTDATA: {
+              REMAP: {0x338: "\uEEE0/\uEEE8"}, // combining long solidas
+              REMAPACCENT: {
+                "\u0307":".",                  // combining dot above
+                "\u030B":"\u00B4\uEEE1\u00B4", // combining double acute accent
+                "\u20D7":"\u2192"              // combining arrow above
+              }
+            }
+          });
+          delete HTMLCSS.FONTDATA.REMAPACCENT["\u2192"];
+        }
+        if (browser.isPC && !MathJax.Hub.Browser.versionAtLeast("5.0")) {
+          // FIXME:  patch caligraphic bold, too
+          var WinChrome = "-WinChrome";
+          HTMLCSS.Augment({
+            FONTDATA: {
+              VARIANT: {
+                normal: {remap: {0x3E:   [0x3E,WinChrome]}},
+                bold:   {remap: {0xE2F1: [0x3E,WinChrome]}},
+                italic: {remap: {0x64:   [0x64,WinChrome]}},
+                "-tex-caligraphic": {remap: {0x54: [0x54,WinChrome]}},
+                "-largeOp": {remap: {0x2A00: [0x2A00,WinChrome]}},
+                "-smallOp": {remap: {0x22C3: [0x22C3,WinChrome]}},
+                "-WinChrome": {fonts:["MathJax_WinChrome"]}
+              },
+              DELIMITERS: {
+                0x005D: {stretch:{bot:[0x23A6,"MathJax_WinChrome"]}},
+                0x230B: {stretch:{bot:[0x23A6,"MathJax_WinChrome"]}}
+              }
+            }
+          });
+
+          HTMLCSS.FONTDATA.FONTS['MathJax_WinChrome'] = {
+            directory: 'WinChrome/Regular',
+            family: 'MathJax_WinChrome',
+            testString: "> T d \u23A6 \u2A00",
+            skew: {
+              0x54: 0.0278,
+              0xE2F0: 0.0319
+            },
+            0x20: [0,0,250,0,0],               // SPACE
+            0x3E: [540,40,778,83,694],         // GREATER-THAN SIGN
+            0x54: [717,68,545,34,833],         // LATIN CAPITAL LETTER T
+            0x64: [694,11,511,101,567],        // LATIN SMALL LETTER D
+            0xA0: [0,0,250,0,0],               // NO-BREAK SPACE
+            0x22C3: [750,249,833,55,777],      // N-ARY UNION
+            0x23A6: [1155,644,667,0,347],      // RIGHT SQUARE BRACKET LOWER CORNER
+            0x2A00: [949,449,1511,56,1454],    // N-ARY CIRCLED DOT OPERATOR
+            0xE2F0: [720,69,644,38,947],       // stix-lowercase u italic slashed
+            0xE2F1: [587,85,894,96,797]        // stix-lowercase u bold italic slashed
+          };
+          
+        }
+      }
+
+    });
+  }
+      
+  //
+  //  Create @font-face stylesheet for the declared fonts
+  //
+  (function () {
+    var FONTS = HTMLCSS.FONTDATA.FONTS, AVAIL = HTMLCSS.config.availableFonts;
+    var name, faces = [];
+    if (HTMLCSS.allowWebFonts) {
+      for (name in FONTS) {
+        if (FONTS[name].family) {
+          if (AVAIL && AVAIL.length && HTMLCSS.Font.testFont(FONTS[name])) {
+            FONTS[name].available = true;
+            HTMLCSS.Font.loadComplete(FONTS[name]);
+          } else {
+            FONTS[name].isWebFont = true;
+            if (HTMLCSS.FontFaceBug) {FONTS[name].family = name}
+            faces.push(HTMLCSS.Font.fontFace(name));
+          }
+        }
+      }
+      if (!HTMLCSS.config.preloadWebFonts) {HTMLCSS.config.preloadWebFonts = []}
+      HTMLCSS.config.preloadWebFonts.push(MAIN,ITALIC,SIZE1);
+      if (faces.length) {HTMLCSS.config.styles["@font-face"] = faces}
+    } else if (AVAIL && AVAIL.length) {
+      for (name in FONTS) {
+        if (FONTS[name].family && HTMLCSS.Font.testFont(FONTS[name])) {
+          FONTS[name].available = true;
+          HTMLCSS.Font.loadComplete(FONTS[name]);
+        }
+      }
+    }
+  })();
+
+  AJAX.loadComplete(HTMLCSS.fontDir + "/fontdata.js");
+  
+})(MathJax.OutputJax["HTML-CSS"],MathJax.ElementJax.mml,MathJax.Ajax);
+
diff --git a/data/mathjax/unpacked/jax/output/HTML-CSS/jax.js b/data/mathjax/unpacked/jax/output/HTML-CSS/jax.js
new file mode 100644
index 0000000..4517dc3
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/HTML-CSS/jax.js
@@ -0,0 +1,2835 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/HTML-CSS/jax.js
+ *
+ *  Implements the HTML-CSS OutputJax that displays mathematics
+ *  using HTML and CSS to position the characters from math fonts
+ *  in their proper locations.
+ *  
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+
+(function (AJAX,HUB,HTMLCSS) {
+  var MML, isMobile = HUB.Browser.isMobile;
+   
+  var FONTTEST = MathJax.Object.Subclass({
+    timeout:  (isMobile? 15:8)*1000,   // timeout for loading web fonts
+
+    FontInfo: {
+      STIX: {family: "STIXSizeOneSym", testString: "() {} []"},
+      TeX:  {family: "MathJax_Size1",  testString: "() {} []"}
+    },
+    comparisonFont: ["sans-serif","monospace","script","Times","Courier","Arial","Helvetica"],
+    testSize: ["40px","50px","60px","30px","20px"],
+
+    Init: function () {
+      this.div = MathJax.HTML.addElement(document.body,"div",{
+        id: "MathJax_Font_Test",
+        style: {position:"absolute", visibility:"hidden", top:0, left:0, width: "auto",
+                padding:0, border:0, margin:0, whiteSpace:"nowrap",
+                textAlign:"left", textIndent:0, textTransform:"none",
+                lineHeight:"normal", letterSpacing:"normal", wordSpacing:"normal",
+                fontSize:this.testSize[0], fontWeight:"normal", fontStyle:"normal",
+                fontSizeAdjust:"none"}
+      },[""]);
+      this.text = this.div.firstChild;
+    },
+
+    findFont: function (fonts,pref) {
+      if (pref && this.testCollection(pref)) {return pref}
+      for (var i = 0, m = fonts.length; i < m; i++) {
+        if (fonts[i] === pref) continue;
+        if (this.testCollection(fonts[i])) {return fonts[i]}
+      }
+      return null;
+    },
+
+    testCollection: function (name) {return this.testFont(this.FontInfo[name])},
+
+    testFont: function (font) {
+      if (font.isWebFont && HTMLCSS.FontFaceBug) {
+        this.div.style.fontWeight = this.div.style.fontStyle = "normal";
+      } else {
+        this.div.style.fontWeight = (font.weight||"normal");
+        this.div.style.fontStyle  = (font.style||"normal");
+      }
+      var W = this.getComparisonWidths(font.testString,font.noStyleChar);
+      if (W) {
+        this.div.style.fontFamily = "'"+font.family+"',"+this.comparisonFont[0];
+        if (this.div.offsetWidth == W[0]) {
+          this.div.style.fontFamily = "'"+font.family+"',"+this.comparisonFont[W[2]];
+          if (this.div.offsetWidth == W[1]) {return false}
+        }
+        if (this.div.offsetWidth != W[3] || this.div.offsetHeight != W[4]) {
+          if (font.noStyleChar || !HTMLCSS.FONTDATA || !HTMLCSS.FONTDATA.hasStyleChar) {return true}
+          for (var i = 0, m = this.testSize.length; i < m; i++)
+            {if (this.testStyleChar(font,this.testSize[i])) {return true}}
+        }
+      }
+      return false;
+    },
+
+    styleChar:   "\uEFFD", // width encodes style
+    versionChar: "\uEFFE", // width encodes version
+    compChar:    "\uEFFF", // "standard" width to compare to
+
+    testStyleChar: function (font,size) {
+      var n = 3 + (font.weight ? 2 : 0) + (font.style ? 4 : 0);
+      var extra = "", dw = 0;
+      var SIZE = this.div.style.fontSize; this.div.style.fontSize = size;
+      if (HTMLCSS.msieItalicWidthBug && font.style === "italic") {
+        this.text.nodeValue = extra = this.compChar;
+        dw = this.div.offsetWidth;
+      }
+      if (HTMLCSS.safariTextNodeBug) {this.div.innerHTML = this.compChar+extra}
+        else {this.text.nodeValue = this.compChar+extra}
+      var W = this.div.offsetWidth-dw;
+      if (HTMLCSS.safariTextNodeBug) {this.div.innerHTML = this.styleChar+extra}
+        else {this.text.nodeValue = this.styleChar+extra}
+      var N = Math.floor((this.div.offsetWidth-dw)/W+.5);
+      if (N === n) {
+        if (HTMLCSS.safariTextNodeBug) {this.div.innerHTML = this.versionChar+extra}
+          else {this.text.nodeValue = this.versionChar+extra}
+        font.version = Math.floor((this.div.offsetWidth-dw)/W+1.5)/2;
+      }
+      this.div.style.fontSize = SIZE;
+      return (N === n);
+    },
+
+    getComparisonWidths: function (string,noStyleChar) {
+      if (HTMLCSS.FONTDATA && HTMLCSS.FONTDATA.hasStyleChar && !noStyleChar)
+        {string += this.styleChar + " " + this.compChar}
+      if (HTMLCSS.safariTextNodeBug) {this.div.innerHTML = string}
+        else {this.text.nodeValue = string}
+      this.div.style.fontFamily = this.comparisonFont[0];
+      var W = this.div.offsetWidth;
+      this.div.style.fontFamily = HTMLCSS.webFontDefault;
+      var sW = this.div.offsetWidth, sH = this.div.offsetHeight;
+      for (var i = 1, m = this.comparisonFont.length; i < m; i++) {
+        this.div.style.fontFamily = this.comparisonFont[i];
+        if (this.div.offsetWidth != W) {return [W,this.div.offsetWidth,i,sW,sH]}
+      }
+      return null;
+    },
+
+    loadWebFont: function (font) {
+      HUB.Startup.signal.Post("HTML-CSS Jax - Web-Font "+HTMLCSS.fontInUse+"/"+font.directory);
+      var n = MathJax.Message.File("Web-Font "+HTMLCSS.fontInUse+"/"+font.directory);
+      var done = MathJax.Callback({}); // called when font is loaded
+      var callback = MathJax.Callback(["loadComplete",this,font,n,done]);
+      AJAX.timer.start(AJAX,[this.checkWebFont,font,callback],0,this.timeout);
+      return done;
+    },
+    loadComplete: function (font,n,done,status) {
+      MathJax.Message.Clear(n);
+      if (status === AJAX.STATUS.OK) {this.webFontLoaded = true; done(); return}
+      this.loadError(font);
+      if (HUB.Browser.isFirefox && HTMLCSS.allowWebFonts) {
+        var host = document.location.protocol + "//" + document.location.hostname;
+        if (document.location.port != "") {host += ":" + document.location.port}
+        host += "/";
+        if (AJAX.fileURL(HTMLCSS.webfontDir).substr(0,host.length) !== host)
+          {this.firefoxFontError(font)}
+      }
+      if (!this.webFontLoaded) {HTMLCSS.loadWebFontError(font,done)} else {done()}
+    },
+    loadError: function (font) {
+      MathJax.Message.Set("Can't load web font "+HTMLCSS.fontInUse+"/"+font.directory,null,2000);
+      HUB.Startup.signal.Post(["HTML-CSS Jax - web font error",HTMLCSS.fontInUse+"/"+font.directory,font]);
+    },
+    firefoxFontError: function (font) {
+      MathJax.Message.Set("Firefox can't load web fonts from a remote host",null,3000);
+      HUB.Startup.signal.Post("HTML-CSS Jax - Firefox web fonts on remote host error");
+    },
+
+    checkWebFont: function (check,font,callback) {
+      if (check.time(callback)) return;
+      if (HTMLCSS.Font.testFont(font)) {callback(check.STATUS.OK)}
+        else {setTimeout(check,check.delay)}
+    },
+
+    fontFace: function (name) {
+      var type = HTMLCSS.allowWebFonts;
+      var FONT = HTMLCSS.FONTDATA.FONTS[name];
+      if (HTMLCSS.msieFontCSSBug && !FONT.family.match(/-Web$/)) {FONT.family += "-Web"}
+      var dir = AJAX.fileURL(HTMLCSS.webfontDir+"/"+type);
+      var fullname = name.replace(/-b/,"-B").replace(/-i/,"-I").replace(/-Bold-/,"-Bold");
+      if (!fullname.match(/-/)) {fullname += "-Regular"}
+      if (type === "svg") {fullname += ".svg#"+fullname} else {fullname += "."+type}
+      var def = {
+        "font-family": FONT.family,
+        src: "url('"+dir+"/"+fullname+"')"
+      };
+      if (type === "otf") {
+        def.src += " format('opentype')";
+        dir = AJAX.fileURL(HTMLCSS.webfontDir+"/woff");  // add woff fonts as well
+        def.src = "url('"+dir+"/"+fullname.replace(/otf$/,"woff")+"') format('woff'), "+def.src;
+      } else if (type !== "eot") {def.src += " format('"+type+"')"}
+      if (!(HTMLCSS.FontFaceBug && FONT.isWebFont)) {
+        if (name.match(/-bold/)) {def["font-weight"] = "bold"}
+        if (name.match(/-italic/)) {def["font-style"] = "italic"}
+      }
+      return def;
+    }
+  });
+  
+  var EVENT, TOUCH, HOVER; // filled in later
+  
+  HTMLCSS.Augment({
+    config: {
+      styles: {
+        ".MathJax": {
+          "display":         "inline",
+          "font-style":      "normal",
+          "font-weight":     "normal",
+          "line-height":     "normal",
+          "font-size":       "100%",
+          "font-size-adjust":"none",
+          "text-indent":     0,
+          "text-align":      "left",
+          "text-transform":  "none",
+          "letter-spacing":  "normal",
+          "word-spacing":    "normal",
+          "word-wrap":       "normal",
+          "white-space":     "nowrap",
+          "float":           "none",
+          "direction":       "ltr",
+          border: 0, padding: 0, margin: 0
+        },
+
+        ".MathJax_Display": {
+          position: "relative",
+          display: "block",
+          width: "100%"
+        },
+
+        ".MathJax img, .MathJax nobr, .MathJax a": {
+          border: 0, padding: 0, margin: 0, "max-width": "none", "max-height": "none",
+          "vertical-align": 0, "line-height": "normal",
+          "text-decoration": "none"
+        },
+        "img.MathJax_strut": {
+          border:"0 !important", padding:"0 !important", margin: "0 !important",
+          "vertical-align": "0 !important"
+        },
+        
+	".MathJax span": {
+	  display: "inline", position: "static",
+	  border: 0, padding: 0, margin: 0,
+	  "vertical-align": 0, "line-height": "normal",
+	  "text-decoration": "none"
+	},
+
+        ".MathJax nobr": {
+          "white-space": "nowrap ! important"
+        },
+        
+        ".MathJax img": {
+          display: "inline ! important",
+          "float": "none ! important"
+        },
+
+        ".MathJax_Processing": {
+          visibility: "hidden", position:"fixed",
+          width: 0, height: 0, overflow:"hidden"
+        },
+        ".MathJax_Processed": {display:"none!important"},
+        
+        ".MathJax_ExBox": {
+          display:"block", overflow:"hidden",
+          width:"1px", height:"60ex"
+        },
+        ".MathJax .MathJax_EmBox": {
+          display:"block", overflow:"hidden",
+          width:"1px", height:"60em"
+        },
+        
+        ".MathJax .MathJax_HitBox": {
+          cursor: "text",
+          background: "white",
+          opacity:0, filter:"alpha(opacity=0)"
+        },
+        ".MathJax .MathJax_HitBox *": {
+          filter: "none", opacity:1, background:"transparent" // for IE
+        },
+        
+        "#MathJax_Tooltip": {
+          position: "absolute", left: 0, top: 0,
+          width: "auto", height: "auto",
+          display: "none"
+        },
+        "#MathJax_Tooltip *": {
+          filter: "none", opacity:1, background:"transparent" // for IE
+        },
+        
+        //
+        //  Used for testing web fonts against the default font used while
+        //  web fonts are loading
+        //
+        "@font-face": {
+          "font-family": "MathJax_Blank",
+          "src": "url('about:blank')"
+        }
+
+      }
+    },
+    settings: HUB.config.menuSettings,
+
+    hideProcessedMath: true,           // use display:none until all math is processed
+
+    Font: null,                        // created by Config() below
+    webFontDefault: "MathJax_Blank",
+    allowWebFonts: "otf",              // assume browser can use OTF web fonts
+
+    Config: function () {
+      if (!this.require) {this.require = []}
+      this.Font = FONTTEST();
+      this.SUPER(arguments).Config.call(this); var settings = this.settings;
+      if (this.adjustAvailableFonts) {this.adjustAvailableFonts(this.config.availableFonts)}
+      if (settings.scale) {this.config.scale = settings.scale}
+      if (settings.font && settings.font !== "Auto") {
+        if (settings.font === "TeX (local)")
+          {this.config.availableFonts = ["TeX"]; this.config.preferredFont = "TeX"; this.config.webFont = "TeX"}
+        else if (settings.font === "STIX (local)")
+          {this.config.availableFonts = ["STIX"]; this.config.preferredFont = "STIX"; this.config.webFont = "TeX"}
+        else if (settings.font === "TeX (web)") {this.config.availableFonts = []; this.config.preferredFont = ""; this.config.webFont = "TeX"}
+        else if (settings.font === "TeX (image)") {this.config.availableFonts = []; this.config.preferredFont = ""; this.config.webFont = ""}
+      }
+      var font = this.Font.findFont(this.config.availableFonts,this.config.preferredFont);
+      if (!font && this.allowWebFonts) {font = this.config.webFont; if (font) {this.webFonts = true}}
+      if (!font && this.config.imageFont) {font = this.config.imageFont; this.imgFonts = true}
+      if (font) {
+        this.fontInUse = font; this.fontDir += "/" + font; this.webfontDir += "/" + font;
+        this.require.push(this.fontDir+"/fontdata.js");
+        if (this.imgFonts) {
+          this.require.push(this.directory+"/imageFonts.js");
+          HUB.Startup.signal.Post("HTML-CSS Jax - using image fonts");
+        }
+      } else {
+        MathJax.Message.Set("Can't find a valid font using ["+this.config.availableFonts.join(", ")+"]",null,3000);
+        this.FONTDATA = {
+          TeX_factor: 1, baselineskip: 1.2, lineH: .8, lineD: .2, ffLineH: .8,
+          FONTS: {}, VARIANT: {normal: {fonts:[]}}, RANGES: [],
+          DELIMITERS: {}, RULECHAR: 0x2D, REMAP: {}
+        };
+        if (MathJax.InputJax.TeX && MathJax.InputJax.TeX.Definitions) {
+          MathJax.InputJax.TeX.Definitions.macros.overline[1]  = "002D";
+          MathJax.InputJax.TeX.Definitions.macros.underline[1] = "002D";
+        }
+        HUB.Startup.signal.Post("HTML-CSS Jax - no valid font");
+      }
+      this.require.push(MathJax.OutputJax.extensionDir+"/MathEvents.js");
+    },
+
+    Startup: function () {
+      //  Set up event handling
+      EVENT = MathJax.Extension.MathEvents.Event;
+      TOUCH = MathJax.Extension.MathEvents.Touch;
+      HOVER = MathJax.Extension.MathEvents.Hover;
+      this.ContextMenu = EVENT.ContextMenu;
+      this.Mousedown   = EVENT.AltContextMenu;
+      this.Mouseover   = HOVER.Mouseover;
+      this.Mouseout    = HOVER.Mouseout;
+      this.Mousemove   = HOVER.Mousemove;
+
+      // Make hidden div for when math is in a display:none block
+      this.hiddenDiv = this.Element("div",{
+        style:{visibility:"hidden", overflow:"hidden", position:"absolute", top:0,
+               height:"1px", width: "auto", padding:0, border:0, margin:0,
+               textAlign:"left", textIndent:0, textTransform:"none",
+               lineHeight:"normal", letterSpacing:"normal", wordSpacing:"normal"}
+      });
+      if (!document.body.firstChild) {document.body.appendChild(this.hiddenDiv)}
+        else {document.body.insertBefore(this.hiddenDiv,document.body.firstChild)}
+      this.hiddenDiv = this.addElement(this.hiddenDiv,"div",{id:"MathJax_Hidden"});
+
+      // Determine pixels per inch
+      var div = this.addElement(this.hiddenDiv,"div",{style:{width:"5in"}});
+      this.pxPerInch = div.offsetWidth/5; this.hiddenDiv.removeChild(div);
+
+      // Markers used by getW
+      this.startMarker = this.createStrut(this.Element("span"),10,true);
+      this.endMarker = this.addText(this.Element("span"),"x").parentNode;
+
+      // Used in getHD
+      this.HDspan = this.Element("span");
+      if (this.operaHeightBug) {this.createStrut(this.HDspan,0)}
+      if (this.msieInlineBlockAlignBug) {
+        this.HDimg = this.addElement(this.HDspan,"img",{style:{height:"0px", width:"1px"}});
+        try {this.HDimg.src = "about:blank"} catch(err) {}
+      } else {
+        this.HDimg = this.createStrut(this.HDspan,0);
+      }
+
+      // Used in preTranslate to get scaling factors
+      this.EmExSpan = this.Element("span",
+        {style:{position:"absolute","font-size-adjust":"none"}},
+        [
+          ["span",{className:"MathJax_ExBox"}],
+          ["span",{className:"MathJax"},
+            [["span",{className:"MathJax_EmBox"}]]
+          ]
+        ]
+      );
+
+      // Used in preTranslate to get linebreak width
+      this.linebreakSpan = this.Element("span",null,
+        [["hr",{style: {width:"100%", size:1, padding:0, border:0, margin:0}}]]);
+
+      // Set up styles and preload web fonts
+      return AJAX.Styles(this.config.styles,["InitializeHTML",this]);
+    },
+    
+    removeSTIXfonts: function (fonts) {
+      //
+      //  Opera doesn't display large chunks of the STIX fonts, and
+      //  Safari/Windows doesn't display Plane1,
+      //  so disable STIX for these browsers.
+      //
+      for (var i = 0, m = fonts.length; i < m; i++)
+        {if (fonts[i] === "STIX") {fonts.splice(i,1); m--; i--;}}
+      if (this.config.preferredFont === "STIX") {this.config.preferredFont = fonts[0]}
+    },
+
+    PreloadWebFonts: function () {
+      if (!HTMLCSS.allowWebFonts || !HTMLCSS.config.preloadWebFonts) return;
+      for (var i = 0, m = HTMLCSS.config.preloadWebFonts.length; i < m; i++) {
+        var FONT = HTMLCSS.FONTDATA.FONTS[HTMLCSS.config.preloadWebFonts[i]];
+        if (!FONT.available) {HTMLCSS.Font.testFont(FONT)}
+      }
+    },
+    
+    //
+    //  Handle initialization that requires styles to be set up
+    //
+    InitializeHTML: function () {
+      this.PreloadWebFonts();
+      //
+      //  Get the default sizes (need styles in place to do this)
+      //
+      document.body.appendChild(this.EmExSpan);
+      document.body.appendChild(this.linebreakSpan);
+      this.defaultEx    = this.EmExSpan.firstChild.offsetHeight/60;
+      this.defaultEm    = this.EmExSpan.lastChild.firstChild.offsetHeight/60;
+      this.defaultWidth = this.linebreakSpan.firstChild.offsetWidth;
+      document.body.removeChild(this.linebreakSpan);
+      document.body.removeChild(this.EmExSpan);
+    },
+    
+    preTranslate: function (state) {
+      var scripts = state.jax[this.id], i, m = scripts.length,
+          script, prev, span, div, test, jax, ex, em, scale, maxwidth, relwidth = false,
+          linebreak = this.config.linebreaks.automatic, width = this.config.linebreaks.width;
+      if (linebreak) {
+        relwidth = (width.match(/^\s*(\d+(\.\d*)?%\s*)?container\s*$/) != null);
+        if (relwidth) {width = width.replace(/\s*container\s*/,"")}
+          else {maxwidth = this.defaultWidth}
+        if (width === "") {width = "100%"}
+      } else {maxwidth = 100000} // a big width, so no implicit line breaks
+      //
+      //  Loop through the scripts
+      //
+      for (i = 0; i < m; i++) {
+        script = scripts[i]; if (!script.parentNode) continue;
+        //
+        //  Remove any existing output
+        //
+        prev = script.previousSibling;
+        if (prev && String(prev.className).match(/^MathJax(_Display)?( MathJax_Processing)?$/))
+          {prev.parentNode.removeChild(prev)}
+        //
+        //  Add the span, and a div if in display mode,
+        //  then set the role and mark it as being processed
+        //
+        jax = script.MathJax.elementJax; if (!jax) continue;
+        jax.HTMLCSS = {display: (jax.root.Get("display") === "block")}
+        span = div = this.Element("span",{
+	  className:"MathJax", id:jax.inputID+"-Frame", isMathJax:true, jaxID:this.id,
+          oncontextmenu:EVENT.Menu, onmousedown: EVENT.Mousedown,
+          onmouseover:EVENT.Mouseover, onmouseout:EVENT.Mouseout, onmousemove:EVENT.Mousemove,
+	  onclick:EVENT.Click, ondblclick:EVENT.DblClick
+        });
+	if (HUB.Browser.noContextMenu) {
+	  span.ontouchstart = TOUCH.start;
+	  span.ontouchend = TOUCH.end;
+	}
+        if (jax.HTMLCSS.display) {
+          div = this.Element("div",{className:"MathJax_Display"});
+          div.appendChild(span);
+        } else if (this.msieDisappearingBug) {span.style.display = "inline-block"}
+        //
+        //  Mark math for screen readers
+        //    (screen readers don't know about role="math" yet, so use "textbox" instead)
+        //
+        div.setAttribute("role","textbox"); div.setAttribute("aria-readonly","true");
+        div.className += " MathJax_Processing";
+        script.parentNode.insertBefore(div,script);
+        //
+        //  Add the test span for determining scales and linebreak widths
+        //
+        script.parentNode.insertBefore(this.EmExSpan.cloneNode(true),script);
+        if (relwidth) {div.parentNode.insertBefore(this.linebreakSpan.cloneNode(true),div)}
+      }
+      //
+      //  Determine the scaling factors for each script
+      //  (this only requires one reflow rather than a reflow for each equation)
+      //
+      for (i = 0; i < m; i++) {
+        script = scripts[i]; if (!script.parentNode) continue;
+        test = script.previousSibling; div = test.previousSibling;
+        jax = script.MathJax.elementJax; if (!jax) continue;
+        ex = test.firstChild.offsetHeight/60;
+        em = test.lastChild.firstChild.offsetHeight/60;
+        if (relwidth) {maxwidth = div.previousSibling.firstChild.offsetWidth}
+        if (ex === 0 || ex === "NaN") {
+          // can't read width, so move to hidden div for processing
+          // (this will cause a reflow for each math element that is hidden)
+          this.hiddenDiv.appendChild(div);
+          jax.HTMLCSS.isHidden = true;
+          ex = this.defaultEx; em = this.defaultEm;
+          if (relwidth) {maxwidth = this.defaultWidth}
+        }
+        scale = Math.floor(Math.max(this.config.minScaleAdjust/100,(ex/this.TeX.x_height)/em) * this.config.scale);
+        jax.HTMLCSS.scale = scale/100; jax.HTMLCSS.fontSize = scale+"%";
+        jax.HTMLCSS.em = jax.HTMLCSS.outerEm = em; this.em = em * scale/100; jax.HTMLCSS.ex = ex;
+        jax.HTMLCSS.lineWidth = (linebreak ? this.length2em(width,1,maxwidth/this.em) : 1000000);
+      }
+      //
+      //  Remove the test spans used for determining scales and linebreak widths
+      //
+      for (i = 0; i < m; i++) {
+        script = scripts[i]; if (!script.parentNode) continue;
+        test = scripts[i].previousSibling;
+        jax = scripts[i].MathJax.elementJax; if (!jax) continue;
+        if (relwidth) {
+          span = test.previousSibling;
+          if (!jax.HTMLCSS.isHidden) {span = span.previousSibling}
+          span.parentNode.removeChild(span);
+        }
+        test.parentNode.removeChild(test);
+      }
+      //
+      //  Set state variables used for displaying equations in chunks
+      //
+      state.HTMLCSSeqn = state.HTMLCSSlast = 0; state.HTMLCSSi = -1;
+      state.HTMLCSSchunk = this.config.EqnChunk;
+      state.HTMLCSSdelay = false;
+    },
+
+    Translate: function (script,state) {
+      if (!script.parentNode) return;
+
+      //
+      //  If we are supposed to do a chunk delay, do it
+      //  
+      if (state.HTMLCSSdelay) {
+        state.HTMLCSSdelay = false;
+        HUB.RestartAfter(MathJax.Callback.Delay(this.config.EqnChunkDelay));
+      }
+
+      //
+      //  Get the data about the math
+      //
+      var jax = script.MathJax.elementJax, math = jax.root,
+          span = document.getElementById(jax.inputID+"-Frame"),
+          div = (jax.HTMLCSS.display ? span.parentNode : span);
+      //
+      //  Set the font metrics
+      //
+      this.em = MML.mbase.prototype.em = jax.HTMLCSS.em * jax.HTMLCSS.scale; 
+      this.outerEm = jax.HTMLCSS.em; this.scale = jax.HTMLCSS.scale;
+      this.linebreakWidth = jax.HTMLCSS.lineWidth;
+      span.style.fontSize = jax.HTMLCSS.fontSize;
+      //
+      //  Typeset the math
+      //
+      this.initImg(span);
+      this.initHTML(math,span);
+      math.setTeXclass();
+      try {math.toHTML(span,div)} catch (err) {
+        if (err.restart) {while (span.firstChild) {span.removeChild(span.firstChild)}}
+        throw err;
+      }
+      //
+      //  Put it in place, and remove the processing marker
+      //
+      if (jax.HTMLCSS.isHidden) {script.parentNode.insertBefore(div,script)}
+      div.className = div.className.split(/ /)[0];
+      //
+      //  Check if we are hiding the math until more is processed
+      //
+      if (this.hideProcessedMath) {
+        //
+        //  Hide the math and don't let its preview be removed
+        //
+        div.className += " MathJax_Processed";
+        if (script.MathJax.preview) {
+          jax.HTMLCSS.preview = script.MathJax.preview;
+          delete script.MathJax.preview;
+        }
+        //
+        //  Check if we should show this chunk of equations
+        //
+        state.HTMLCSSeqn += (state.i - state.HTMLCSSi); state.HTMLCSSi = state.i;
+        if (state.HTMLCSSeqn >= state.HTMLCSSlast + state.HTMLCSSchunk) {
+          this.postTranslate(state);
+          state.HTMLCSSchunk = Math.floor(state.HTMLCSSchunk*this.config.EqnChunkFactor);
+          state.HTMLCSSdelay = true;  // delay if there are more scripts
+        }
+      }
+    },
+
+    postTranslate: function (state) {
+      var scripts = state.jax[this.id];
+      if (!this.hideProcessedMath) return;
+      //
+      //  Reveal this chunk of math
+      //
+      for (var i = state.HTMLCSSlast, m = state.HTMLCSSeqn; i < m; i++) {
+        var script = scripts[i];
+        if (script && script.MathJax.elementJax) {
+          //
+          //  Remove the processed marker
+          //
+          script.previousSibling.className = script.previousSibling.className.split(/ /)[0];
+          var data = script.MathJax.elementJax.HTMLCSS;
+          //
+          //  Remove the preview, if any
+          //
+          if (data.preview) {
+            data.preview.innerHTML = "";
+            script.MathJax.preview = data.preview;
+            delete data.preview;
+          }
+        }
+      }
+      if (this.forceReflow) {
+        //  WebKit can misplace some elements that should wrap to the next line
+        //  but gets them right ona reflow, so force reflow by toggling a stylesheet
+        var sheet = (document.styleSheets||[])[0]||{};
+        sheet.disabled = true; sheet.disabled = false;
+      }
+      //
+      //  Save our place so we know what is revealed
+      //
+      state.HTMLCSSlast = state.HTMLCSSeqn;
+    },
+
+    getJaxFromMath: function (math) {
+      if (math.parentNode.className === "MathJax_Display") {math = math.parentNode}
+      do {math = math.nextSibling} while (math && math.nodeName.toLowerCase() !== "script");
+      return HUB.getJaxFor(math);
+    },
+    getHoverSpan: function (jax,math) {return jax.root.HTMLspanElement()},
+    getHoverBBox: function (jax,span,math) {
+      var bbox = span.bbox, em = jax.HTMLCSS.outerEm;
+      var BBOX = {w:bbox.w*em, h:bbox.h*em, d:bbox.d*em};
+      if (bbox.width) {BBOX.width = bbox.width}
+      return BBOX;
+    },
+    
+    Zoom: function (jax,span,math,Mw,Mh) {
+      //
+      //  Re-render at larger size
+      //
+      span.className = "MathJax";
+      span.style.fontSize = jax.HTMLCSS.fontSize;
+
+      //
+      //  get em sizes (taken from HTMLCSS.preTranslate)
+      //
+      var emex = span.appendChild(this.EmExSpan.cloneNode(true));
+      var em = emex.lastChild.firstChild.offsetHeight/60;
+      this.em = MML.mbase.prototype.em = em;
+      this.outerEm = em / jax.HTMLCSS.scale;
+      emex.parentNode.removeChild(emex);
+
+      this.idPostfix = "-zoom"; jax.root.toHTML(span,span); this.idPostfix = "";
+      var width = jax.root.HTMLspanElement().bbox.width;
+      if (width) {
+        //  Handle full-width displayed equations
+        //  FIXME: this is a hack for now
+        span.style.width = Math.floor(Mw-1.5*HTMLCSS.em)+"px"; span.style.display="inline-block";
+        var id = (jax.root.id||"MathJax-Span-"+jax.root.spanID)+"-zoom";
+        var child = document.getElementById(id).firstChild;
+        while (child && child.style.width !== width) {child = child.nextSibling}
+        if (child) {child.style.width = "100%"}
+      }
+      //
+      //  Get height and width of zoomed math and original math
+      //
+      span.style.position = math.style.position = "absolute";
+      var zW = span.offsetWidth, zH = span.offsetHeight,
+          mH = math.offsetHeight, mW = math.offsetWidth;
+      if (mW === 0) {mW = math.parentNode.offsetWidth}; // IE7 gets mW == 0?
+      span.style.position = math.style.position = "";
+      //
+      return {Y:-EVENT.getBBox(span).h, mW:mW, mH:mH, zW:zW, zH:zH};
+    },
+
+    initImg: function (span) {},
+    initHTML: function (math,span) {},
+    initFont: function (name) {
+      var FONTS = HTMLCSS.FONTDATA.FONTS, AVAIL = HTMLCSS.config.availableFonts;
+      if (AVAIL && AVAIL.length && HTMLCSS.Font.testFont(FONTS[name]))
+        {FONTS[name].available = true; return null}
+      if (!this.allowWebFonts) {return null}
+      FONTS[name].isWebFont = true;
+      if (HTMLCSS.FontFaceBug) {
+        FONTS[name].family = name;
+        if (HTMLCSS.msieFontCSSBug) {FONTS[name].family += "-Web"}
+      }
+      return AJAX.Styles({"@font-face":this.Font.fontFace(name)});
+    },
+
+    Remove: function (jax) {
+      var span = document.getElementById(jax.inputID+"-Frame");
+      if (span) {
+        if (jax.HTMLCSS.display) {span = span.parentNode}
+        span.parentNode.removeChild(span);
+      }
+      delete jax.HTMLCSS;
+    },
+    
+    getHD: function (span) {
+      var position = span.style.position;
+      span.style.position = "absolute";
+      this.HDimg.style.height = "0px";
+      span.appendChild(this.HDspan);
+      var HD = {h:span.offsetHeight};
+      this.HDimg.style.height = HD.h+"px";
+      HD.d = span.offsetHeight - HD.h; HD.h -= HD.d;
+      HD.h /= this.em; HD.d /= this.em;
+      span.removeChild(this.HDspan);
+      span.style.position = position;
+      return HD;
+    },
+    getW: function (span) {
+      var W, H, w = (span.bbox||{}).w, start = span;
+      if (span.bbox && span.bbox.exactW) {return w}
+      if ((span.bbox && w >= 0 && !this.initialSkipBug) || this.negativeBBoxes || !span.firstChild) {
+        W = span.offsetWidth; H = span.parentNode.offsetHeight;
+      } else if (span.bbox && w < 0 && this.msieNegativeBBoxBug) {
+        W = -span.offsetWidth, H = span.parentNode.offsetHeight;
+      } else {
+        // IE can't deal with a space at the beginning, so put something else first
+        if (this.initialSkipBug) {
+          var position = span.style.position; span.style.position = "absolute";
+          start = this.startMarker; span.insertBefore(start,span.firstChild)
+        }
+        span.appendChild(this.endMarker);
+        W = this.endMarker.offsetLeft - start.offsetLeft;
+        span.removeChild(this.endMarker);
+        if (this.initialSkipBug) {span.removeChild(start); span.style.position = position}
+      }
+      if (H != null) {span.parentNode.HH = H/this.em}
+      return W/this.em;
+    },
+    Measured: function (span,parent) {
+      var bbox = span.bbox;
+      if (bbox.width == null && bbox.w && !bbox.isMultiline) {
+        var w = this.getW(span);
+        bbox.rw += w - bbox.w;
+        bbox.w = w; bbox.exactW = true;
+      }
+      if (!parent) {parent = span.parentNode}
+      if (!parent.bbox) {parent.bbox = bbox}
+      return span;
+    },
+    Remeasured: function (span,parent) {
+      parent.bbox = this.Measured(span,parent).bbox;
+    },
+    MeasureSpans: function (SPANS) {
+      var spans = [], span, i, m, bbox, start, end, W;
+      //
+      //  Insert the needed markers
+      // 
+      for (i = 0, m = SPANS.length; i < m; i++) {
+        span = SPANS[i]; if (!span) continue;
+        bbox = span.bbox;
+        if (bbox.exactW || bbox.width || bbox.w === 0 || bbox.isMultiline) {
+          if (!span.parentNode.bbox) {span.parentNode.bbox = bbox}
+          continue;
+        }
+        if (this.negativeBBoxes || !span.firstChild || (bbox.w >= 0 && !this.initialSkipBug) ||
+            (bbox.w < 0 && this.msieNegativeBBoxBug)) {
+          spans.push([span]);
+        } else if (this.initialSkipBug) {
+          start = this.startMarker.cloneNode(true); end = this.endMarker.cloneNode(true);
+          span.insertBefore(start,span.firstChild); span.appendChild(end);
+          spans.push([span,start,end,span.style.position]); span.style.position = "absolute";
+        } else {
+          end = this.endMarker.cloneNode(true);
+          span.appendChild(end); spans.push([span,null,end]);
+        }
+      }
+      //
+      //  Read the widths and heights
+      //
+      for (i = 0, m = spans.length; i < m; i++) {
+        span = spans[i][0]; bbox = span.bbox; var parent = span.parentNode;
+        if ((bbox.w >= 0 && !this.initialSkipBug) || this.negativeBBoxes || !span.firstChild) {
+          W = span.offsetWidth; parent.HH = span.parentNode.offsetHeight/this.em;
+        } else if (bbox.w < 0 && this.msieNegativeBBoxBug) {
+          W = -span.offsetWidth, parent.HH = span.parentNode.offsetHeight/this.em;
+        } else {
+          W = spans[i][2].offsetLeft - ((spans[i][1]||{}).offsetLeft||0);
+        }
+        W /= this.em;
+        bbox.rw += W - bbox.w;
+        bbox.w = W; bbox.exactW = true;
+        if (!parent.bbox) {parent.bbox = bbox}
+      }
+      //
+      //  Remove markers
+      //
+      for (i = 0, m = spans.length; i < m; i++) {
+        span = spans[i];
+        if (span[1]) {span[1].parentNode.removeChild(span[1]), span[0].style.position = span[3]}
+        if (span[2]) {span[2].parentNode.removeChild(span[2])}
+      }
+    },
+
+    Em: function (m) {
+      if (Math.abs(m) < .0006) {return "0em"}
+      return m.toFixed(3).replace(/\.?0+$/,"") + "em";
+    },
+    unEm: function (m) {
+      return parseFloat(m);
+    },
+    Px: function (m) {
+      m *= this.em; var s = (m < 0? "-" : "");
+      return s+Math.abs(m).toFixed(1).replace(/\.?0+$/,"") + "px";
+    },
+    unPx: function (m) {
+      return parseFloat(m)/this.em;
+    },
+    Percent: function (m) {
+      return (100*m).toFixed(1).replace(/\.?0+$/,"") + "%";
+    },
+    length2em: function (length,mu,size) {
+      if (typeof(length) !== "string") {length = length.toString()}
+      if (length === "") {return ""}
+      if (length === MML.SIZE.NORMAL) {return 1}
+      if (length === MML.SIZE.BIG)    {return 2}
+      if (length === MML.SIZE.SMALL)  {return .71}
+      if (length === "infinity")      {return HTMLCSS.BIGDIMEN}
+      var factor = this.FONTDATA.TeX_factor;
+      if (length.match(/mathspace$/)) {return HTMLCSS.MATHSPACE[length]*factor}
+      var match = length.match(/^\s*([-+]?(?:\.\d+|\d+(?:\.\d*)?))?(pt|em|ex|mu|px|pc|in|mm|cm|%)?/);
+      var m = parseFloat(match[1]||"1"), unit = match[2];
+      if (size == null) {size = 1}; if (mu == null) {mu = 1}
+      if (unit === "em") {return m * factor}
+      if (unit === "ex") {return m * HTMLCSS.TeX.x_height * factor}
+      if (unit === "%")  {return m / 100 * size}
+      if (unit === "px") {return m / HTMLCSS.em}
+      if (unit === "pt") {return m / 10 * factor}                        // 10 pt to an em
+      if (unit === "pc") {return m * 1.2 * factor}                       // 12 pt to a pc
+      if (unit === "in") {return m * this.pxPerInch / HTMLCSS.em}
+      if (unit === "cm") {return m * this.pxPerInch / HTMLCSS.em / 2.54} // 2.54 cm to an inch
+      if (unit === "mm") {return m * this.pxPerInch / HTMLCSS.em / 25.4} // 10 mm to a cm
+      if (unit === "mu") {return m / 18 * factor * mu} // 18mu to an em for the scriptlevel
+      return m*factor*size;  // relative to given size (or 1em as default)
+    },
+    thickness2em: function (length,mu) {
+      var thick = HTMLCSS.TeX.rule_thickness;
+      if (length === MML.LINETHICKNESS.MEDIUM) {return thick}
+      if (length === MML.LINETHICKNESS.THIN) {return .67*thick}
+      if (length === MML.LINETHICKNESS.THICK) {return 1.67*thick}
+      return this.length2em(length,mu,thick);
+    },
+    
+    getPadding: function (span) {
+      var padding = {top:0, right:0, bottom:0, left:0}, has = false;
+      for (var id in padding) {if (padding.hasOwnProperty(id)) {
+        var pad = span.style["padding"+id.charAt(0).toUpperCase()+id.substr(1)];
+        if (pad) {padding[id] = this.length2em(pad); has = true;}
+      }}
+      return (has ? padding : false);
+    },
+    getBorders: function (span) {
+      var border = {top:0, right:0, bottom:0, left:0}, css = {}, has = false;
+      for (var id in border) {if (border.hasOwnProperty(id)) {
+        var ID = "border"+id.charAt(0).toUpperCase()+id.substr(1);
+        var style = span.style[ID+"Style"];
+        if (style) {
+          has = true;
+          border[id] = this.length2em(span.style[ID+"Width"]);
+          css[ID] = [span.style[ID+"Width"],span.style[ID+"Style"],span.style[ID+"Color"]].join(" ");
+        }
+      }}
+      border.css = css;
+      return (has ? border : false);
+    },
+    setBorders: function (span,borders) {
+      if (borders) {
+        for (var id in borders.css) {if (borders.css.hasOwnProperty(id)) {
+          span.style[id] = borders.css[id];
+        }}
+      }
+    },
+
+    createStrut: function (span,h,before) {
+      var strut = this.Element("span",{
+        isMathJax: true,
+        style:{display:"inline-block", overflow:"hidden", height:h+"px",
+               width:"1px", marginRight:"-1px"}
+      });
+      if (before) {span.insertBefore(strut,span.firstChild)} else {span.appendChild(strut)}
+      return strut;
+    },
+    createBlank: function (span,w,before) {
+      var blank = this.Element("span",{
+        isMathJax: true,
+        style: {display:"inline-block", overflow:"hidden", height:"1px", width:this.Em(w)}
+      });
+      if (before) {span.insertBefore(blank,span.firstChild)} else {span.appendChild(blank)}
+      return blank;
+    },
+    createShift: function (span,w,before) {
+      var space = this.Element("span",{style:{marginLeft:this.Em(w)}, isMathJax:true});
+      if (before) {span.insertBefore(space,span.firstChild)} else {span.appendChild(space)}
+      return space;
+    },
+    createSpace: function (span,h,d,w,color,isSpace) {
+      if (h < -d) {d = -h} // make sure h is above d
+      var H = this.Em(h+d), D = this.Em(-d);
+      if (this.msieInlineBlockAlignBug) {D = this.Em(HTMLCSS.getHD(span.parentNode).d-d)}
+      if (span.isBox || isSpace) {
+	var scale = (span.scale == null ? 1 : span.scale);
+	span.bbox = {exactW: true, h: h*scale, d: d*scale, w: w*scale, rw: w*scale, lw: 0};
+        span.style.height = H; span.style.verticalAlign = D;
+        span.HH = (h+d)*scale;
+      } else {
+        span = this.addElement(span,"span",{style: {height:H, verticalAlign:D}, isMathJax:true});
+      }
+      if (w >= 0) {
+        span.style.width = this.Em(w);
+        span.style.display = "inline-block";
+        span.style.overflow = "hidden";       // for IE in quirks mode
+      } else {
+        if (this.msieNegativeSpaceBug) {span.style.height = ""}
+        span.style.marginLeft = this.Em(w);
+        if (HTMLCSS.safariNegativeSpaceBug && span.parentNode.firstChild == span)
+          {this.createBlank(span,0,true)}
+      }
+      if (color && color !== MML.COLOR.TRANSPARENT) {
+        span.style.backgroundColor = color;
+        span.style.position = "relative"; // make sure it covers earlier items
+      }
+      return span;
+    },
+    createRule: function (span,h,d,w,color) {
+      if (h < -d) {d = -h} // make sure h is above d
+      var min = HTMLCSS.TeX.min_rule_thickness, f = 1;
+      // If rule is very thin, make it at least min_rule_thickness so it doesn't disappear
+      if (w > 0 && w*this.em < min) {w = min/this.em}
+      if (h+d > 0 && (h+d)*this.em < min) {f = 1/(h+d)*(min/this.em); h *= f; d *= f}
+      if (!color) {color = "solid"} else {color = "solid "+color}
+      color = this.Em(w)+" "+color;
+      var H = (f === 1 ? this.Em(h+d) : min+"px"), D = this.Em(-d);
+      var rule = this.addElement(span,"span",{
+        style: {borderLeft: color, display: "inline-block", overflow:"hidden",
+                width:0, height:H, verticalAlign:D},
+        bbox: {h:h, d:d, w:w, rw:w, lw:0, exactW:true}, noAdjust:true, HH:h+d, isMathJax:true
+      });
+      if (w > 0 && rule.offsetWidth == 0) {rule.style.width = this.Em(w)}
+      if (span.isBox || span.className == "mspace") {span.bbox = rule.bbox, span.HH = h+d}
+      return rule;
+    },
+    createFrame: function (span,h,d,w,t,style) {
+      if (h < -d) {d = -h} // make sure h is above d
+      var T = 2*t;
+      if (this.msieFrameSizeBug) {if (w < T) {w = T}; if (h+d < T) {h = T-d}}
+      if (this.msieBorderWidthBug) {T = 0}
+      var H = this.Em(h+d-T), D = this.Em(-d-t), W = this.Em(w-T);
+      var B = this.Em(t)+" "+style;
+      var frame = this.addElement(span,"span",{
+        style: {border: B, display:"inline-block", overflow:"hidden", width:W, height:H},
+        bbox: {h:h, d:d, w:w, rw:w, lw:0, exactW:true}, noAdjust: true, HH:h+d, isMathJax:true
+      });
+      if (D) {frame.style.verticalAlign = D}
+      return frame;
+    },
+
+    createStack: function (span,nobbox,w) {
+      if (this.msiePaddingWidthBug) {this.createStrut(span,0)}
+      var relativeW = String(w).match(/%$/);
+      var W = (!relativeW && w != null ? w : 0);
+      span = this.addElement(span,"span",{
+        noAdjust: true, HH: 0, isMathJax: true,
+        style: {display:"inline-block", position:"relative",
+                width:(relativeW ? "100%" : this.Em(W)), height:0}
+      });
+      if (!nobbox) {
+        span.parentNode.bbox = span.bbox = {
+          exactW: true,
+          h: -this.BIGDIMEN, d: -this.BIGDIMEN,
+          w:W, lw: this.BIGDIMEN, rw: (!relativeW && w != null ? w : -this.BIGDIMEN)
+        };
+        if (relativeW) {span.bbox.width = w}
+      }
+      return span;
+    },
+    createBox: function (span,w) {
+      var box = this.addElement(span,"span",{style:{position:"absolute"}, isBox: true, isMathJax:true});
+      if (w != null) {box.style.width = w}
+      return box;
+    },
+    addBox: function (span,box) {
+      box.style.position = "absolute"; box.isBox = box.isMathJax = true;
+      return span.appendChild(box);
+    },
+    placeBox: function (span,x,y,noclip) {
+      span.isMathJax = true;
+      var parent = span.parentNode, bbox = span.bbox, BBOX = parent.bbox;
+      if (this.msiePlaceBoxBug) {this.addText(span,this.NBSP)}
+      if (this.imgSpaceBug) {this.addText(span,this.imgSpace)}
+      // Place the box
+      var HH, dx = 0;
+      if (span.HH != null) {HH = span.HH}
+        else if (bbox) {HH = Math.max(3,bbox.h+bbox.d)}
+        else {HH = span.offsetHeight/this.em}
+      if (!span.noAdjust) {
+        HH += 1;
+        HH = Math.round(HH*this.em)/this.em; // make this an integer number of pixels (for Chrome)
+        if (this.msieInlineBlockAlignBug) {
+          this.addElement(span,"img",{
+            className:"MathJax_strut", border:0, src:"about:blank", isMathJax:true,
+            style:{width:0,height:this.Em(HH)}
+          });
+        } else {
+          this.addElement(span,"span",{
+            isMathJax: true, style:{display:"inline-block",width:0,height:this.Em(HH)}
+          });
+          if (HTMLCSS.chromeHeightBug) 
+            {HH -= (span.lastChild.offsetHeight - Math.round(HH*this.em))/this.em}
+        }
+      }
+      // Clip so that bbox doesn't include extra height and depth
+      if (bbox) {
+        if (this.initialSkipBug) {
+          if (bbox.lw < 0) {dx = bbox.lw; HTMLCSS.createBlank(span,-dx,true)}
+          if (bbox.rw > bbox.w) {HTMLCSS.createBlank(span,bbox.rw-bbox.w+.1)}
+        }
+        if (!this.msieClipRectBug && !bbox.noclip && !noclip) {
+          var dd = 3/this.em;
+          var H = (bbox.H == null ? bbox.h : bbox.H), D = (bbox.D == null ? bbox.d : bbox.D);
+          var t = HH - H - dd, b = HH + D + dd, l = bbox.lw - 3*dd, r = 1000;
+          if (this.initialSkipBug && bbox.lw < 0) {l = -3*dd}
+          if (bbox.isFixed) {r = bbox.width-l}
+          span.style.clip = "rect("+this.Em(t)+" "+this.Em(r)+" "+this.Em(b)+" "+this.Em(l)+")";
+        }
+      }
+      // Place the box
+      span.style.top = this.Em(-y-HH);
+      span.style.left = this.Em(x+dx);
+      // Update the bounding box
+      if (bbox && BBOX) {
+        if (bbox.H != null && (BBOX.H == null || bbox.H + y > BBOX.H)) {BBOX.H = bbox.H + y}
+        if (bbox.D != null && (BBOX.D == null || bbox.D - y > BBOX.D)) {BBOX.D = bbox.D - y}
+        if (bbox.h + y > BBOX.h) {BBOX.h = bbox.h + y}
+        if (bbox.d - y > BBOX.d) {BBOX.d = bbox.d - y}
+        if (BBOX.H != null && BBOX.H <= BBOX.h) {delete BBOX.H}
+        if (BBOX.D != null && BBOX.D <= BBOX.d) {delete BBOX.D}
+        if (bbox.w + x > BBOX.w) {
+          BBOX.w = bbox.w + x;
+          if (BBOX.width == null) {parent.style.width = this.Em(BBOX.w)}
+        }
+        if (bbox.rw + x > BBOX.rw) {BBOX.rw = bbox.rw + x}
+        if (bbox.lw + x < BBOX.lw) {BBOX.lw = bbox.lw + x}
+        if (bbox.width != null && !bbox.isFixed) {
+          if (BBOX.width == null) {parent.style.width = BBOX.width = "100%"}
+          span.style.width = bbox.width;
+        }
+      }
+    },
+    alignBox: function (span,align,y) {
+      this.placeBox(span,0,y); // set y position (and left aligned)
+      var bbox = span.bbox; if (bbox.isMultiline) return;
+      var isRelative = bbox.width != null && !bbox.isFixed;
+      var r = 0, c = -bbox.w/2, l = "50%";
+      if (this.initialSkipBug) {r = bbox.w-bbox.rw-.1; c += bbox.lw}
+      if (this.msieMarginScaleBug) {c = (c*this.em) + "px"} else {c = this.Em(c)}
+      if (isRelative) {c = ""; l = (50 - parseFloat(bbox.width)/2) + "%"}
+      HUB.Insert(span.style,({
+        right:  {left:"", right: this.Em(r)},
+        center: {left:l, marginLeft: c}
+      })[align]);
+    },
+    setStackWidth: function (span,w) {
+      if (typeof(w) === "number") {
+        span.style.width = this.Em(Math.max(0,w));
+        var bbox = span.bbox; if (bbox) {bbox.w = w; bbox.exactW = true};
+        bbox = span.parentNode.bbox; if (bbox) {bbox.w = w; bbox.exactW = true};
+      } else {
+        span.style.width = span.parentNode.style.width = "100%";
+        if (span.bbox) {span.bbox.width = w}
+        if (span.parentNode.bbox) {span.parentNode.bbox.width = w}
+      }
+    },
+
+    createDelimiter: function (span,code,HW,scale,font) {
+      if (!code) {
+        span.bbox = {h:0, d:0, w:this.TeX.nulldelimiterspace, lw: 0};
+        span.bbox.rw = span.bbox.w;
+        this.createSpace(span,span.bbox.h,span.bbox.d,span.bbox.w);
+        return;
+      }
+      if (!scale) {scale = 1};
+      if (!(HW instanceof Array)) {HW = [HW,HW]}
+      var hw = HW[1]; HW = HW[0];
+      var delim = {alias: code};
+      while (delim.alias) {
+        code = delim.alias; delim = this.FONTDATA.DELIMITERS[code];
+        if (!delim) {delim = {HW: [0,this.FONTDATA.VARIANT[MML.VARIANT.NORMAL]]}}
+      }
+      if (delim.load) {HUB.RestartAfter(AJAX.Require(this.fontDir+"/fontdata-"+delim.load+".js"))}
+      for (var i = 0, m = delim.HW.length; i < m; i++) {
+        if (delim.HW[i][0]*scale >= HW-.01 || (i == m-1 && !delim.stretch)) {
+          if (delim.HW[i][2]) {scale *= delim.HW[i][2]}
+          if (delim.HW[i][3]) {code = delim.HW[i][3]}
+          var chr = this.addElement(span,"span");
+          this.createChar(chr,[code,delim.HW[i][1]],scale,font);
+          span.bbox = chr.bbox;
+          span.offset = .65 * span.bbox.w;
+          span.scale = scale;
+          return;
+        }
+      }
+      if (delim.stretch) {this["extendDelimiter"+delim.dir](span,hw,delim.stretch,scale,font)}
+    },
+    extendDelimiterV: function (span,H,delim,scale,font) {
+      var stack = this.createStack(span,true);
+      var top = this.createBox(stack), bot = this.createBox(stack);
+      this.createChar(top,(delim.top||delim.ext),scale,font);
+      this.createChar(bot,(delim.bot||delim.ext),scale,font);
+      var ext = {bbox:{w:0,lw:0,rw:0}}, mid = ext, EXT;
+      var h = top.bbox.h + top.bbox.d + bot.bbox.h + bot.bbox.d;
+      var y = -top.bbox.h; this.placeBox(top,0,y,true); y -= top.bbox.d;
+      if (delim.mid) {
+        mid = this.createBox(stack); this.createChar(mid,delim.mid,scale,font);
+        h += mid.bbox.h + mid.bbox.d;
+      }
+      if (delim.min && H < h*delim.min) {H = h*delim.min}
+      if (H > h) {
+        ext = this.Element("span"); this.createChar(ext,delim.ext,scale,font);
+        var eH = ext.bbox.h + ext.bbox.d, eh = eH - .05, n, N, k = (delim.mid ? 2 : 1);
+        N = n = Math.ceil((H-h)/(k*eh));
+        if (!delim.fullExtenders) {eh = (H-h)/(k*n)}
+        var dy = (n/(n+1))*(eH - eh); eh = eH - dy; y += dy + eh - ext.bbox.h;
+        while (k-- > 0) {
+          while (n-- > 0) {
+            if (!this.msieCloneNodeBug) {EXT = ext.cloneNode(true)}
+              else {EXT = this.Element("span"); this.createChar(EXT,delim.ext,scale,font)}
+            EXT.bbox = ext.bbox;
+            y -= eh; this.placeBox(this.addBox(stack,EXT),0,y,true);
+          }
+          y += dy - ext.bbox.d;
+          if (delim.mid && k) {
+            this.placeBox(mid,0,y-mid.bbox.h,true); n = N;
+            y += -(mid.bbox.h + mid.bbox.d) + dy + eh - ext.bbox.h;
+          }
+        }
+      } else {
+        y += (h - H)/2;
+        if (delim.mid) {this.placeBox(mid,0,y-mid.bbox.h,true); y += -(mid.bbox.h + mid.bbox.d)}
+        y += (h - H)/2;
+      }
+      this.placeBox(bot,0,y-bot.bbox.h,true); y -= bot.bbox.h + bot.bbox.d;
+      span.bbox = {
+        w:  Math.max(top.bbox.w,ext.bbox.w,bot.bbox.w,mid.bbox.w),
+        lw: Math.min(top.bbox.lw,ext.bbox.lw,bot.bbox.lw,mid.bbox.lw),
+        rw: Math.max(top.bbox.rw,ext.bbox.rw,bot.bbox.rw,mid.bbox.rw),
+        h: 0, d: -y, exactW: true
+      }
+      span.scale = scale;
+      span.offset = .55 * span.bbox.w;
+      span.isMultiChar = true;
+      this.setStackWidth(stack,span.bbox.w);
+    },
+    extendDelimiterH: function (span,W,delim,scale,font) {
+      var stack = this.createStack(span,true);
+      var left = this.createBox(stack), right = this.createBox(stack);
+      this.createChar(left,(delim.left||delim.rep),scale,font);
+      this.createChar(right,(delim.right||delim.rep),scale,font);
+      var rep = this.Element("span"); this.createChar(rep,delim.rep,scale,font);
+      var mid = {bbox: {h:-this.BIGDIMEN, d:-this.BIGDIMEN}}, REP;
+      this.placeBox(left,-left.bbox.lw,0,true);
+      var w = (left.bbox.rw - left.bbox.lw) + (right.bbox.rw - right.bbox.lw) - .05,
+          x = left.bbox.rw - left.bbox.lw - .025, dx;
+      if (delim.mid) {
+        mid = this.createBox(stack); this.createChar(mid,delim.mid,scale,font);
+        w += mid.bbox.w;
+      }
+      if (delim.min && W < w*delim.min) {W = w*delim.min}
+      if (W > w) {
+        var rW = rep.bbox.rw-rep.bbox.lw, rw = rW - .05, n, N, k = (delim.mid ? 2 : 1);
+        N = n = Math.ceil((W-w)/(k*rw));
+        if (!delim.fillExtenders) {rw = (W-w)/(k*n)}
+        dx = (n/(n+1))*(rW - rw); rw = rW - dx; x -= rep.bbox.lw + dx;
+        while (k-- > 0) {
+          while (n-- > 0) {
+            if (!this.cloneNodeBug) {REP = rep.cloneNode(true)}
+              else {REP = this.Element("span"); this.createChar(REP,delim.rep,scale,font)}
+            REP.bbox = rep.bbox;
+            this.placeBox(this.addBox(stack,REP),x,0,true); x += rw;
+          }
+          if (delim.mid && k) {this.placeBox(mid,x,0,true); x += mid.bbox.w - dx; n = N}
+        }
+      } else {
+        x -= (w - W)/2;
+        if (delim.mid) {this.placeBox(mid,x,0,true); x += mid.bbox.w};
+        x -= (w - W)/2;
+      }
+      this.placeBox(right,x,0,true);
+      span.bbox = {
+        w: x+right.bbox.rw, lw: 0, rw: x+right.bbox.rw,
+        H: Math.max(left.bbox.h,rep.bbox.h,right.bbox.h,mid.bbox.h),
+        D: Math.max(left.bbox.d,rep.bbox.d,right.bbox.d,mid.bbox.d),
+        h: rep.bbox.h, d: rep.bbox.d, exactW: true
+      }
+      span.scale = scale;
+      span.isMultiChar = true;
+      this.setStackWidth(stack,span.bbox.w);
+    },
+    createChar: function (span,data,scale,font) {
+      span.isMathJax = true;
+      var SPAN = span, text = "", variant = {fonts: [data[1]], noRemap:true};
+      if (font && font === MML.VARIANT.BOLD) {variant.fonts = [data[1]+"-bold",data[1]]}
+      if (typeof(data[1]) !== "string") {variant = data[1]}
+      if (data[0] instanceof Array) {
+        for (var i = 0, m = data[0].length; i < m; i++) {text += String.fromCharCode(data[0][i])}
+      } else {text = String.fromCharCode(data[0])}
+      if (data[4]) {scale *= data[4]}
+      if (scale !== 1 || data[3]) {
+	SPAN = this.addElement(span,"span",{style:{fontSize: this.Percent(scale)}, scale:scale, isMathJax:true});
+        this.handleVariant(SPAN,variant,text);
+        span.bbox = SPAN.bbox;
+      } else {this.handleVariant(span,variant,text)}
+      if (data[2]) {span.style.marginLeft = this.Em(data[2])}     // x offset
+      if (data[3]) {                                              // y offset
+        span.firstChild.style.verticalAlign = this.Em(data[3]);
+        span.bbox.h += data[3]; if (span.bbox.h < 0) {span.bbox.h = 0}
+      }
+      if (data[5]) {span.bbox.h += data[5]}  // extra height
+      if (data[6]) {span.bbox.d += data[6]}  // extra depth
+      //  Handle combining characters by adding a non-breaking space so it shows up
+      if (this.AccentBug && span.bbox.w === 0) {SPAN.firstChild.nodeValue += this.NBSP}
+    },
+    positionDelimiter: function (span,h) {
+      h -= span.bbox.h; span.bbox.d -= h; span.bbox.h += h;
+      if (h) {
+        if (this.safariVerticalAlignBug || this.konquerorVerticalAlignBug ||
+           (this.operaVerticalAlignBug && span.isMultiChar)) {
+          if (span.firstChild.style.display === "" && span.style.top !== "")
+            {span = span.firstChild; h -= HTMLCSS.unEm(span.style.top)}
+          span.style.position = "relative";
+          span.style.top = this.Em(-h);
+        } else {
+          span.style.verticalAlign = this.Em(h);
+          if (HTMLCSS.ffVerticalAlignBug) {HTMLCSS.createRule(span.parentNode,span.bbox.h,0,0)}
+        }
+      }
+    },
+
+    handleVariant: function (span,variant,text) {
+      var newtext = "", n, c, font, VARIANT, SPAN = span, force = !!span.style.fontFamily;
+      if (text.length === 0) return;
+      if (!span.bbox) {
+        span.bbox = {
+          w: 0, h: -this.BIGDIMEN, d: -this.BIGDIMEN,
+          rw: -this.BIGDIMEN, lw: this.BIGDIMEN
+        };
+      }
+      if (!variant) {variant = this.FONTDATA.VARIANT[MML.VARIANT.NORMAL]}
+      VARIANT = variant;
+      for (var i = 0, m = text.length; i < m; i++) {
+        variant = VARIANT;
+        n = text.charCodeAt(i); c = text.charAt(i);
+        if (n >= 0xD800 && n < 0xDBFF) {
+          i++; n = (((n-0xD800)<<10)+(text.charCodeAt(i)-0xDC00))+0x10000;
+          if (this.FONTDATA.RemapPlane1) {
+            var nv = this.FONTDATA.RemapPlane1(n,variant);
+            n = nv.n; variant = nv.variant;
+          }
+        } else {
+          var id, M, RANGES = this.FONTDATA.RANGES;
+          for (id = 0, M = RANGES.length; id < M; id++) {
+            if (RANGES[id].name === "alpha" && variant.noLowerCase) continue;
+            var N = variant["offset"+RANGES[id].offset];
+            if (N && n >= RANGES[id].low && n <= RANGES[id].high) {
+              if (RANGES[id].remap && RANGES[id].remap[n]) {
+                n = N + RANGES[id].remap[n];
+              } else {
+                n = n - RANGES[id].low + N;
+                if (RANGES[id].add) {n += RANGES[id].add}
+              }
+              if (variant["variant"+RANGES[id].offset])
+                {variant = this.FONTDATA.VARIANT[variant["variant"+RANGES[id].offset]]}
+              break;
+            }
+          }
+        }
+        if (variant.remap && variant.remap[n]) {
+          if (variant.remap[n] instanceof Array) {
+            var remap = variant.remap[n];
+            n = remap[0]; variant = this.FONTDATA.VARIANT[remap[1]];
+          } else if (typeof(variant.remap[n]) === "string") {
+            text = variant.remap[n]+text.substr(i+1);
+            i = 0; m = text.length; n = text.charCodeAt(0);
+          } else {
+            n = variant.remap[n];
+            if (variant.remap.variant) {variant = this.FONTDATA.VARIANT[variant.remap.variant]}
+          }
+        }
+        if (this.FONTDATA.REMAP[n] && !variant.noRemap) {
+          n = this.FONTDATA.REMAP[n];
+          if (n instanceof Array) {variant = this.FONTDATA.VARIANT[n[1]]; n = n[0]}
+          if (typeof(n) === "string") {
+            text = n+text.substr(i+1);
+            i = 0; m = text.length; n = n.charCodeAt(0);
+          }
+        }
+        font = this.lookupChar(variant,n); c = font[n];
+        if (force || (!this.checkFont(font,SPAN.style) && !c[5].img)) {
+          if (newtext.length) {this.addText(SPAN,newtext); newtext = ""};
+          var addSpan = !!SPAN.style.fontFamily || !!span.style.fontStyle ||
+                        !!span.style.fontWeight || !font.directory || force; force = false;
+          if (SPAN !== span) {addSpan = !this.checkFont(font,span.style); SPAN = span}
+          if (addSpan) {SPAN = this.addElement(span,"span",{isMathJax:true, subSpan:true})}
+          this.handleFont(SPAN,font,SPAN !== span);
+        }
+        newtext = this.handleChar(SPAN,font,c,n,newtext);
+        if (!(c[5]||{}).space) {
+          if (c[0]/1000 > span.bbox.h) {span.bbox.h = c[0]/1000}
+          if (c[1]/1000 > span.bbox.d) {span.bbox.d = c[1]/1000}
+        }
+        if (span.bbox.w + c[3]/1000 < span.bbox.lw) {span.bbox.lw = span.bbox.w + c[3]/1000}
+        if (span.bbox.w + c[4]/1000 > span.bbox.rw) {span.bbox.rw = span.bbox.w + c[4]/1000}
+        span.bbox.w += c[2]/1000;
+      }
+      if (newtext.length) {this.addText(SPAN,newtext)}
+      if (span.scale && span.scale !== 1) {
+        span.bbox.h *= span.scale; span.bbox.d *= span.scale;
+        span.bbox.w *= span.scale; span.bbox.lw *= span.scale; span.bbox.rw *= span.scale;
+      }
+      if (text.length == 1 && font.skew && font.skew[n]) {span.bbox.skew = font.skew[n]}
+    },
+    checkFont: function (font,style) {
+      var weight = (style.fontWeight||"normal");
+      if (weight.match(/^\d+$/)) {weight = (parseInt(weight) >= 600 ? "bold" : "normal")}
+      return (font.family.replace(/'/g,"") === style.fontFamily.replace(/'/g,"") &&
+             (font.style||"normal") === (style.fontStyle||"normal") &&
+             (font.weight||"normal") === weight);
+    },
+
+    handleFont: function (span,font,force) {
+      span.style.fontFamily = font.family;
+      if (!font.directory) {span.style.fontSize = Math.floor(100/HTMLCSS.scale+.5) + "%"}
+      if (!(HTMLCSS.FontFaceBug && font.isWebFont)) {
+        var style  = font.style  || "normal", weight = font.weight || "normal";
+        if (style !== "normal"  || force) {span.style.fontStyle  = style}
+        if (weight !== "normal" || force) {span.style.fontWeight = weight}
+      }
+    },
+
+    handleChar: function (span,font,c,n,text) {
+      var C = c[5];
+      if (C.space) {
+        if (text.length) {this.addText(span,text)}
+        HTMLCSS.createShift(span,c[2]/1000);
+        return "";
+      }
+      if (C.img) {return this.handleImg(span,font,c,n,text)}
+      if (C.isUnknown && this.FONTDATA.DELIMITERS[n]) {
+        if (text.length) {this.addText(span,text)}
+        var scale = span.scale;
+        HTMLCSS.createDelimiter(span,n,0,1,font);
+        if (this.FONTDATA.DELIMITERS[n].dir === "V") {
+          span.style.verticalAlign = this.Em(span.bbox.d);
+          span.bbox.h += span.bbox.d; span.bbox.d = 0;
+        }
+        span.scale = scale;
+        c[0] = span.bbox.h*1000; c[1] = span.bbox.d*1000;
+        c[2] = span.bbox.w*1000; c[3] = span.bbox.lw*1000; c[4] = span.bbox.rw*1000;
+        return "";
+      }
+      if (C.c == null) {
+        if (n <= 0xFFFF) {C.c = String.fromCharCode(n)} else {
+          var N = n - 0x10000;
+          C.c = String.fromCharCode((N>>10)+0xD800)
+              + String.fromCharCode((N&0x3FF)+0xDC00);
+        }
+      }
+      if (C.rfix) {this.addText(span,text+C.c); HTMLCSS.createShift(span,C.rfix/1000); return ""}
+      if (c[2] || !this.msieAccentBug || text.length) {return text + C.c}
+      //  Handle IE accent clipping bug
+      HTMLCSS.createShift(span,c[3]/1000);
+      HTMLCSS.createShift(span,(c[4]-c[3])/1000);
+      this.addText(span,C.c);
+      HTMLCSS.createShift(span,-c[4]/1000);
+      return "";
+    },
+    handleImg: function (span,font,c,n,text) {return text}, // replaced by imageFont extension
+
+    lookupChar: function (variant,n) {
+      var i, m;
+      if (!variant.FONTS) {
+        var FONTS = this.FONTDATA.FONTS;
+        var fonts = (variant.fonts || this.FONTDATA.VARIANT.normal.fonts);
+        if (!(fonts instanceof Array)) {fonts = [fonts]}
+        if (variant.fonts != fonts) {variant.fonts = fonts}
+        variant.FONTS = [];
+        for (i = 0, m = fonts.length; i < m; i++) {
+          if (FONTS[fonts[i]]) {
+            variant.FONTS.push(FONTS[fonts[i]]);
+            FONTS[fonts[i]].name = fonts[i]; // FIXME: should really be in the font files
+          }
+        }
+      }
+      for (i = 0, m = variant.FONTS.length; i < m; i++) {
+        var font = variant.FONTS[i];
+        if (typeof(font) === "string") {
+          delete variant.FONTS; this.loadFont(font);
+        }
+        if (font[n]) {
+          if (font[n].length === 5) {font[n][5] = {}}
+          if (HTMLCSS.allowWebFonts && !font.available)
+            {this.loadWebFont(font)} else {return font}
+        } else {this.findBlock(font,n)}
+      }
+      return this.unknownChar(variant,n);
+    },
+    
+    unknownChar: function (variant,n) {
+      var unknown = (variant.defaultFont || {family:HTMLCSS.config.undefinedFamily});
+      if (variant.bold) {unknown.weight = "bold"}; if (variant.italic) {unknown.style = "italic"}
+      if (!unknown[n]) {unknown[n] = [800,200,500,0,500,{isUnknown:true}]} // [h,d,w,lw,rw,{data}]
+      HUB.signal.Post(["HTML-CSS Jax - unknown char",n,variant]);
+      return unknown;
+    },
+
+    findBlock: function (font,c) {
+      if (font.Ranges) {
+        // FIXME:  do binary search?
+        for (var i = 0, m = font.Ranges.length; i < m; i++) {
+          if (c <  font.Ranges[i][0]) return;
+          if (c <= font.Ranges[i][1]) {
+            var file = font.Ranges[i][2];
+            for (var j = font.Ranges.length-1; j >= 0; j--)
+              {if (font.Ranges[j][2] == file) {font.Ranges.splice(j,1)}}
+            this.loadFont(font.directory+"/"+file+".js");
+          }
+        }
+      }
+    },
+
+    loadFont: function (file) {
+      var queue = MathJax.Callback.Queue();
+      queue.Push(["Require",AJAX,this.fontDir+"/"+file]);
+      if (this.imgFonts) {
+        if (!MathJax.isPacked) {file = file.replace(/\/([^\/]*)$/,HTMLCSS.imgPacked+"/$1")}
+        queue.Push(["Require",AJAX,this.webfontDir+"/png/"+file]);
+      }
+      HUB.RestartAfter(queue.Push({}));
+    },
+
+    loadWebFont: function (font) {
+      font.available = font.isWebFont = true;
+      if (HTMLCSS.FontFaceBug) {
+        font.family = font.name;
+        if (HTMLCSS.msieFontCSSBug) {font.family += "-Web"}
+      }
+      HUB.RestartAfter(this.Font.loadWebFont(font));
+    },
+    loadWebFontError: function (font,done) {
+      //
+      //  After the first web font fails to load, switch to image fonts, if possible
+      //  otherwise, give up on web fonts all together
+      // 
+      HUB.Startup.signal.Post("HTML-CSS Jax - disable web fonts");
+      font.isWebFont = false;
+      if (this.config.imageFont && this.config.imageFont === this.fontInUse) {
+        this.imgFonts = true;
+        HUB.Startup.signal.Post("HTML-CSS Jax - switch to image fonts");
+        HUB.Startup.signal.Post("HTML-CSS Jax - using image fonts");
+        MathJax.Message.Set("Web-Fonts not available -- using image fonts instead",null,3000);
+        AJAX.Require(this.directory+"/imageFonts.js",done);
+      } else {
+        this.allowWebFonts = false;
+        done();
+      }
+    },
+
+    Element: MathJax.HTML.Element,
+    addElement: MathJax.HTML.addElement,
+    TextNode: MathJax.HTML.TextNode,
+    addText: MathJax.HTML.addText,
+    ucMatch: MathJax.HTML.ucMatch,
+
+    BIGDIMEN: 10000000,
+    ID: 0, idPostfix: "",
+    GetID: function () {this.ID++; return this.ID},
+
+    MATHSPACE: {
+      veryverythinmathspace:  1/18,
+      verythinmathspace:      2/18,
+      thinmathspace:          3/18,
+      mediummathspace:        4/18,
+      thickmathspace:         5/18,
+      verythickmathspace:     6/18,
+      veryverythickmathspace: 7/18,
+      negativeveryverythinmathspace:  -1/18,
+      negativeverythinmathspace:      -2/18,
+      negativethinmathspace:          -3/18,
+      negativemediummathspace:        -4/18,
+      negativethickmathspace:         -5/18,
+      negativeverythickmathspace:     -6/18,
+      negativeveryverythickmathspace: -7/18
+    },
+
+    TeX: {
+      x_height:         .430554,
+      quad:             1,
+      num1:             .676508,
+      num2:             .393732,
+      num3:             .44373,
+      denom1:           .685951,
+      denom2:           .344841,
+      sup1:             .412892,
+      sup2:             .362892,
+      sup3:             .288888,
+      sub1:             .15,
+      sub2:             .247217,
+      sup_drop:         .386108,
+      sub_drop:         .05,
+      delim1:          2.39,
+      delim2:          1.0,
+      axis_height:      .25,
+      rule_thickness:   .06,
+      big_op_spacing1:  .111111,
+      big_op_spacing2:  .166666,
+      big_op_spacing3:  .2,
+      big_op_spacing4:  .6,
+      big_op_spacing5:  .1,
+
+      scriptspace:         .1,
+      nulldelimiterspace:  .12,
+      delimiterfactor:     901,
+      delimitershortfall:   .1,    // originally .3,
+
+      min_rule_thickness:  1.25     // in pixels
+    },
+
+    NBSP: "\u00A0",
+
+    rfuzz: 0         // adjustment to rule placements in roots
+  });
+
+  MathJax.Hub.Register.StartupHook("mml Jax Ready",function () {
+
+    MML = MathJax.ElementJax.mml;
+
+    MML.mbase.Augment({
+      toHTML: function (span) {
+	span = this.HTMLcreateSpan(span); if (this.type != "mrow") {span = this.HTMLhandleSize(span)}
+	for (var i = 0, m = this.data.length; i < m; i++)
+	  {if (this.data[i]) {this.data[i].toHTML(span)}}
+	var stretchy = this.HTMLcomputeBBox(span);
+	var h = span.bbox.h, d = span.bbox.d;
+	for (i = 0, m = stretchy.length; i < m; i++) {stretchy[i].HTMLstretchV(span,h,d)}
+	if (stretchy.length) {this.HTMLcomputeBBox(span,true)}
+        if (this.HTMLlineBreaks(span)) {span = this.HTMLmultiline(span)}
+	this.HTMLhandleSpace(span);
+	this.HTMLhandleColor(span);
+	return span;
+      },
+      HTMLlineBreaks: function () {return false},
+      HTMLmultiline: function () {MML.mbase.HTMLautoloadFile("multiline")},
+      HTMLcomputeBBox: function (span,full,i,m) {
+	if (i == null) {i = 0}; if (m == null) {m = this.data.length}
+	var BBOX = span.bbox = {exactW: true}, stretchy = [];
+	while (i < m) {
+	  var core = this.data[i]; if (!core) continue;
+	  if (!full && core.HTMLcanStretch("Vertical"))
+	    {stretchy.push(core); core = (core.CoreMO()||core)}
+	  this.HTMLcombineBBoxes(core,BBOX); i++;
+	}
+	this.HTMLcleanBBox(BBOX);
+	return stretchy;
+      },
+      HTMLcombineBBoxes: function (core,BBOX) {
+	if (BBOX.w == null) {this.HTMLemptyBBox(BBOX)}
+	var child = (core.bbox ? core : core.HTMLspanElement());
+        if (!child || !child.bbox) return;
+	var bbox = child.bbox;
+	if (bbox.d > BBOX.d) {BBOX.d = bbox.d}
+	if (bbox.h > BBOX.h) {BBOX.h = bbox.h}
+	if (bbox.D != null && bbox.D > BBOX.D) {BBOX.D = bbox.D}
+	if (bbox.H != null && bbox.H > BBOX.H) {BBOX.H = bbox.H}
+	if (child.style.paddingLeft) {BBOX.w += HTMLCSS.unEm(child.style.paddingLeft)*(child.scale||1)}
+	if (BBOX.w + bbox.lw < BBOX.lw) {BBOX.lw = BBOX.w + bbox.lw}
+	if (BBOX.w + bbox.rw > BBOX.rw) {BBOX.rw = BBOX.w + bbox.rw}
+	BBOX.w += bbox.w;
+	if (child.style.paddingRight) {BBOX.w += HTMLCSS.unEm(child.style.paddingRight)*(child.scale||1)}
+	if (bbox.width) {BBOX.width = bbox.width}
+        if (bbox.ic) {BBOX.ic = bbox.ic} else {delete BBOX.ic}
+        if (BBOX.exactW && !bbox.exactW) {delete BBOX.exactW}
+      },
+      HTMLemptyBBox: function (BBOX) {
+	BBOX.h = BBOX.d = BBOX.H = BBOX.D = BBOX.rw = -HTMLCSS.BIGDIMEN;
+	BBOX.w = 0; BBOX.lw = HTMLCSS.BIGDIMEN;
+	return BBOX;
+      },
+      HTMLcleanBBox: function (BBOX) {
+	if (BBOX.h === this.BIGDIMEN)
+	  {BBOX.h = BBOX.d = BBOX.H = BBOX.D = BBOX.w = BBOX.rw = BBOX.lw = 0}
+	if (BBOX.D <= BBOX.d) {delete BBOX.D}; if (BBOX.H <= BBOX.h) {delete BBOX.H}
+      },
+      HTMLzeroBBox: function () {return {h:0, d:0, w:0, lw: 0, rw:0}},
+      HTMLcanStretch: function (direction) {
+	if (this.isEmbellished()) {
+          var core = this.Core();
+          if (core && core !== this) {return core.HTMLcanStretch(direction)}
+        }
+	return false;
+      },
+      HTMLstretchH: function (box,W) {return this.HTMLspanElement()},
+      HTMLstretchV: function (box,h,d) {return this.HTMLspanElement()},
+      HTMLnotEmpty: function (data) {
+	while (data) {
+	  if ((data.type !== "mrow" && data.type !== "texatom") ||
+	       data.data.length > 1) {return true}
+	  data = data.data[0];
+	}
+	return false;
+      },
+
+      HTMLmeasureChild: function (n,box) {
+	if (this.data[n]) {HTMLCSS.Measured(this.data[n].toHTML(box),box)}
+	  else {box.bbox = this.HTMLzeroBBox()}
+      },
+      HTMLboxChild: function (n,box) {
+	if (this.data[n]) {return this.data[n].toHTML(box)}
+        if (!box.bbox) {box.bbox = this.HTMLzeroBBox()}
+        return null;
+      },
+
+      HTMLcreateSpan: function (span) {
+	if (this.spanID) {
+	  var SPAN = this.HTMLspanElement();
+	  if (SPAN && (SPAN.parentNode === span || (SPAN.parentNode||{}).parentNode === span)) {
+	    while (SPAN.firstChild) {SPAN.removeChild(SPAN.firstChild)}
+	    SPAN.bbox = {w:0, h:0, d:0, lw:0, rw:0};
+	    SPAN.scale = 1; SPAN.isMultChar = SPAN.HH = null;
+	    SPAN.style.cssText = "";
+	    return SPAN;
+	  }
+	}
+	if (this.href) {span = HTMLCSS.addElement(span,"a",{href:this.href, isMathJax:true})}
+	span = HTMLCSS.addElement(span,"span",{className: this.type, isMathJax:true});
+	if (HTMLCSS.imgHeightBug) {span.style.display = "inline-block"}
+	if (this["class"]) {span.className += " "+this["class"]}
+	if (!this.spanID) {this.spanID = HTMLCSS.GetID()}
+	span.id = (this.id || "MathJax-Span-"+this.spanID) + HTMLCSS.idPostfix;
+	span.bbox = {w:0, h:0, d:0, lw:0, rw:0}; this.styles = {};
+	if (this.style) {
+	  span.style.cssText = this.style;
+	  if (span.style.fontSize) {this.mathsize = span.style.fontSize; span.style.fontSize = ""}
+          this.styles = {border:HTMLCSS.getBorders(span), padding:HTMLCSS.getPadding(span)}
+          if (this.styles.border) {span.style.border = ""} // IE needs "0px none"?
+          if (this.styles.padding) {span.style.padding = ""}
+	}
+	if (this.href) {span.parentNode.bbox = span.bbox}
+	return span;
+      },
+      HTMLspanElement: function () {
+	if (!this.spanID) {return null}
+	return document.getElementById((this.id||"MathJax-Span-"+this.spanID)+HTMLCSS.idPostfix);
+      },
+
+      HTMLhandleVariant: function (span,variant,text) {HTMLCSS.handleVariant(span,variant,text)},
+
+      HTMLhandleSize: function (span) {
+	if (!span.scale) {
+	  span.scale = this.HTMLgetScale();
+	  if (span.scale !== 1) {span.style.fontSize = HTMLCSS.Percent(span.scale)}
+	}
+	return span;
+      },
+
+      HTMLhandleColor: function (span) {
+	var values = this.getValues("mathcolor","color");
+	if (this.mathbackground) {values.mathbackground = this.mathbackground}
+	if (this.background) {values.background = this.background}
+        if (this.style && span.style.backgroundColor) {
+          values.mathbackground = span.style.backgroundColor;
+          span.style.backgroundColor = "transparent";
+        }
+        var borders = (this.styles||{}).border, padding = (this.styles||{}).padding;
+	if (values.color && !this.mathcolor) {values.mathcolor = values.color}
+	if (values.background && !this.mathbackground) {values.mathbackground = values.background}
+	if (values.mathcolor) {span.style.color = values.mathcolor}
+	if ((values.mathbackground && values.mathbackground !== MML.COLOR.TRANSPARENT) || 
+             borders || padding) {
+	  var bbox = span.bbox, dd = (bbox.exact ? 0 : 1/HTMLCSS.em), lW = 0, rW = 0,
+              lpad = span.style.paddingLeft, rpad = span.style.paddingRight;
+	  if (this.isToken) {lW = bbox.lw; rW = bbox.rw - bbox.w}
+	  if (lpad !== "") {lW += HTMLCSS.unEm(lpad)*(span.scale||1)}
+	  if (rpad !== "") {rW -= HTMLCSS.unEm(rpad)*(span.scale||1)}
+          var dw = (HTMLCSS.PaddingWidthBug || bbox.keepPadding || bbox.exactW ? 0 : rW - lW);
+	  var W = Math.max(0,HTMLCSS.getW(span) + dw);
+	  var H = bbox.h + bbox.d, D = -bbox.d, lp = 0, rp = 0;
+	  if (W > 0) {W += 2*dd; lW -= dd}; if (H > 0) {H += 2*dd; D -= dd}; rW = -W-lW;
+          if (borders) {
+            rW -= borders.right; D -= borders.bottom; lp += borders.left; rp += borders.right;
+            bbox.h += borders.top; bbox.d += borders.bottom;
+            bbox.w += borders.left + borders.right;
+            bbox.lw -= borders.left; bbox.rw += borders.right;
+          }
+          if (padding) {
+            H += padding.top + padding.bottom; W += padding.left + padding.right;
+            rW -= padding.right; D -= padding.bottom; lp += padding.left; rp += padding.right;
+            bbox.h += padding.top; bbox.d += padding.bottom;
+            bbox.w += padding.left + padding.right;
+            bbox.lw -= padding.left; bbox.rw += padding.right;
+          }
+          if (rp) {span.style.paddingRight = HTMLCSS.Em(rp)}
+	  var frame = HTMLCSS.Element("span",{
+            id:"MathJax-Color-"+this.spanID+HTMLCSS.idPostfix, isMathJax: true,
+	    style:{display:"inline-block", backgroundColor:values.mathbackground,
+		   width: HTMLCSS.Em(W), height:HTMLCSS.Em(H), verticalAlign: HTMLCSS.Em(D),
+		   marginLeft: HTMLCSS.Em(lW), marginRight: HTMLCSS.Em(rW)}
+	  });
+          HTMLCSS.setBorders(frame,borders);
+          if (bbox.width) {frame.style.width = bbox.width; frame.style.marginRight = "-"+bbox.width}
+	  if (HTMLCSS.msieInlineBlockAlignBug) {
+            // FIXME:  handle variable width background
+	    frame.style.position = "relative"; frame.style.width = frame.style.height = 0;
+	    frame.style.verticalAlign = frame.style.marginLeft = frame.style.marginRight = "";
+            frame.style.border = frame.style.padding = "";
+            if (borders && HTMLCSS.msieBorderWidthBug)
+              {H += borders.top + borders.bottom; W += borders.left + borders.right}
+            frame.style.width = HTMLCSS.Em(lp+dd);
+	    HTMLCSS.placeBox(HTMLCSS.addElement(frame,"span",{
+	      noAdjust: true, isMathJax: true,
+	      style: {display:"inline-block", position:"absolute", overflow:"hidden",
+		      background:(values.mathbackground||"transparent"), 
+                      width: HTMLCSS.Em(W), height: HTMLCSS.Em(H)}
+	    }),lW,bbox.h+dd);
+            HTMLCSS.setBorders(frame.firstChild,borders);
+	  }
+	  span.parentNode.insertBefore(frame,span);
+          if (HTMLCSS.msieColorPositionBug) {span.style.position = "relative"}
+	  return frame;
+	}
+	return null;
+      },
+      HTMLremoveColor: function () {
+	var color = document.getElementById("MathJax-Color-"+this.spanID+HTMLCSS.idPostfix);
+	if (color) {color.parentNode.removeChild(color)}
+      },
+
+      HTMLhandleSpace: function (span) {
+	if (this.useMMLspacing) {
+	  if (this.type !== "mo") return;
+	  var values = this.getValues("scriptlevel","lspace","rspace");
+          if (values.scriptlevel <= 0 || this.hasValue("lspace") || this.hasValue("rspace")) {
+            var mu = this.HTMLgetMu(span);
+	    values.lspace = Math.max(0,HTMLCSS.length2em(values.lspace,mu));
+	    values.rspace = Math.max(0,HTMLCSS.length2em(values.rspace,mu));
+	    var core = this, parent = this.Parent();
+	    while (parent && parent.isEmbellished() && parent.Core() === core)
+	      {core = parent; parent = parent.Parent(); span = core.HTMLspanElement()}
+	    if (values.lspace) {span.style.paddingLeft =  HTMLCSS.Em(values.lspace)}
+	    if (values.rspace) {span.style.paddingRight = HTMLCSS.Em(values.rspace)}
+	  }
+	} else {
+	  var space = this.texSpacing();
+	  if (space !== "") {
+	    space = HTMLCSS.length2em(space,this.HTMLgetScale())/(span.scale||1);
+	    if (span.style.paddingLeft) {space += HTMLCSS.unEm(span.style.paddingLeft)}
+	    span.style.paddingLeft = HTMLCSS.Em(space);
+	  }
+	}
+      },
+
+      HTMLgetScale: function () {
+	var scale = 1, values = this.getValues("mathsize","scriptlevel","fontsize");
+	if (this.style) {
+	  var span = this.HTMLspanElement();
+	  if (span.style.fontSize != "") {values.fontsize = span.style.fontSize}
+	}
+	if (values.fontsize && !this.mathsize) {values.mathsize = values.fontsize}
+	if (values.scriptlevel !== 0) {
+	  if (values.scriptlevel > 2) {values.scriptlevel = 2}
+	  scale = Math.pow(this.Get("scriptsizemultiplier"),values.scriptlevel);
+	  values.scriptminsize = HTMLCSS.length2em(this.Get("scriptminsize"));
+	  if (scale < values.scriptminsize) {scale = values.scriptminsize}
+	}
+	if (this.isToken) {scale *= HTMLCSS.length2em(values.mathsize)}
+	return scale;
+      },
+      HTMLgetMu: function (span) {
+	var mu = 1, values = this.getValues("scriptlevel","scriptsizemultiplier");
+        if (span.scale && span.scale !== 1) {mu = 1/span.scale}
+	if (values.scriptlevel !== 0) {
+	  if (values.scriptlevel > 2) {values.scriptlevel = 2}
+	  mu = Math.sqrt(Math.pow(values.scriptsizemultiplier,values.scriptlevel));
+	}
+	return mu;
+      },
+
+      HTMLgetVariant: function () {
+	var values = this.getValues("mathvariant","fontfamily","fontweight","fontstyle");
+        values.hasVariant = this.Get("mathvariant",true);  // null if not explicitly specified
+        if (!values.hasVariant) {
+          values.family = values.fontfamily;
+          values.weight = values.fontweight;
+          values.style  = values.fontstyle;
+        }
+	if (this.style) {
+          var span = this.HTMLspanElement();
+	  if (!values.family && span.style.fontFamily) {values.family = span.style.fontFamily}
+	  if (!values.weight && span.style.fontWeight) {values.weight = span.style.fontWeight}
+	  if (!values.style  && span.style.fontStyle)  {values.style  = span.style.fontStyle}
+	}
+        if (values.weight && values.weight.match(/^\d+$/))
+            {values.weight = (parseInt(values.weight) > 600 ? "bold" : "normal")}
+	var variant = values.mathvariant; if (this.variantForm) {variant = "-"+HTMLCSS.fontInUse+"-variant"}
+	if (values.family && !values.hasVariant) {
+	  if (!values.weight && values.mathvariant.match(/bold/)) {values.weight = "bold"}
+	  if (!values.style && values.mathvariant.match(/italic/)) {values.style = "italic"}
+	  return {FONTS:[], fonts:[], noRemap:true,
+		  defaultFont: {family:values.family, style:values.style, weight:values.weight}};
+	}
+        if (values.weight === "bold") {
+          variant = {
+            normal:MML.VARIANT.BOLD, italic:MML.VARIANT.BOLDITALIC,
+            fraktur:MML.VARIANT.BOLDFRAKTUR, script:MML.VARIANT.BOLDSCRIPT,
+            "sans-serif":MML.VARIANT.BOLDSANSSERIF,
+            "sans-serif-italic":MML.VARIANT.SANSSERIFBOLDITALIC
+          }[variant]||variant;
+        } else if (values.weight === "normal") {
+          variant = {
+            bold:MML.VARIANT.normal, "bold-italic":MML.VARIANT.ITALIC,
+            "bold-fraktur":MML.VARIANT.FRAKTUR, "bold-script":MML.VARIANT.SCRIPT,
+            "bold-sans-serif":MML.VARIANT.SANSSERIF,
+            "sans-serif-bold-italic":MML.VARIANT.SANSSERIFITALIC
+          }[variant]||variant;
+        }
+        if (values.style === "italic") {
+          variant = {
+            normal:MML.VARIANT.ITALIC, bold:MML.VARIANT.BOLDITALIC,
+            "sans-serif":MML.VARIANT.SANSSERIFITALIC,
+            "bold-sans-serif":MML.VARIANT.SANSSERIFBOLDITALIC
+          }[variant]||variant;
+        } else if (values.style === "normal") {
+          variant = {
+            italic:MML.VARIANT.NORMAL, "bold-italic":MML.VARIANT.BOLD,
+            "sans-serif-italic":MML.VARIANT.SANSSERIF,
+            "sans-serif-bold-italic":MML.VARIANT.BOLDSANSSERIF
+          }[variant]||variant;
+        }
+        return HTMLCSS.FONTDATA.VARIANT[variant];
+      }
+    },{
+      HTMLautoload: function () {
+	var file = HTMLCSS.autoloadDir+"/"+this.type+".js";
+	HUB.RestartAfter(AJAX.Require(file));
+      },
+      HTMLautoloadFile: function (name) {
+	var file = HTMLCSS.autoloadDir+"/"+name+".js";
+	HUB.RestartAfter(AJAX.Require(file));
+      },
+
+      HTMLstretchH: function (box,w) {
+	this.HTMLremoveColor();
+	return this.toHTML(box,w);
+      },
+
+      HTMLstretchV: function (box,h,d) {
+	this.HTMLremoveColor();
+	return this.toHTML(box,h,d);
+      }
+    });
+
+    MML.chars.Augment({
+      toHTML: function (span,variant,remap,chars) {
+        var text = this.data.join("").replace(/[\u2061-\u2064]/g,""); // remove invisibles
+        if (remap) {text = remap(text,chars)}
+        if (variant.fontInherit) {
+          var scale = Math.floor(100/HTMLCSS.scale+.5) + "%";
+          HTMLCSS.addElement(span,"span",{style:{"font-size":scale}},[text]);
+          if (variant.bold)   {span.lastChild.style.fontWeight = "bold"}
+          if (variant.italic) {span.lastChild.style.fontStyle = "italic"}
+          var HD = HTMLCSS.getHD(span), W = HTMLCSS.getW(span);
+          span.bbox = {h:HD.h, d:HD.d, w:W, lw:0, rw:W, exactW: true};
+        } else {
+          this.HTMLhandleVariant(span,variant,text);
+        }
+      }
+    });
+    MML.entity.Augment({
+      toHTML: function (span,variant,remap,chars) {
+        var text = this.toString().replace(/[\u2061-\u2064]/g,""); // remove invisibles
+        if (remap) {text = remap(text,chars)}
+        if (variant.fontInherit) {
+          var scale = Math.floor(100/HTMLCSS.scale+.5) + "%";
+          HTMLCSS.addElement(span,"span",{style:{"font-size":scale}},[text]);
+          if (variant.bold)   {span.lastChild.style.fontWeight = "bold"}
+          if (variant.italic) {span.lastChild.style.fontStyle = "italic"}
+          var HD = HTMLCSS.getHD(span), W = HTMLCSS.getW(span);
+          span.bbox = {h:HD.h, d:HD.d, w:W, lw:0, rw:W, exactW: true};
+        } else {
+          this.HTMLhandleVariant(span,variant,text);
+        }
+      }
+    });
+
+    MML.mi.Augment({
+      toHTML: function (span) {
+	span = this.HTMLhandleSize(this.HTMLcreateSpan(span)); span.bbox = null;
+	var variant = this.HTMLgetVariant();
+	for (var i = 0, m = this.data.length; i < m; i++)
+	  {if (this.data[i]) {this.data[i].toHTML(span,variant)}}
+	if (!span.bbox) {span.bbox = {w:0, h:0, d:0, rw:0, lw:0}}
+        var text = this.data.join(""), bbox = span.bbox;
+	if (bbox.skew && text.length !== 1) {delete bbox.skew}
+        if (bbox.rw > bbox.w && text.length === 1 && !variant.noIC) {
+          bbox.ic = bbox.rw - bbox.w;
+          HTMLCSS.createBlank(span,bbox.ic);
+          bbox.w = bbox.rw;
+        }
+	this.HTMLhandleSpace(span);
+	this.HTMLhandleColor(span);
+	return span;
+      }
+    });
+
+    MML.mn.Augment({
+      toHTML: function (span) {
+	span = this.HTMLhandleSize(this.HTMLcreateSpan(span)); span.bbox = null;
+	var variant = this.HTMLgetVariant();
+	for (var i = 0, m = this.data.length; i < m; i++)
+	  {if (this.data[i]) {this.data[i].toHTML(span,variant)}}
+	if (!span.bbox) {span.bbox = {w:0, h:0, d:0, rw:0, lw:0}}
+	if (this.data.join("").length !== 1) {delete span.bbox.skew}
+	this.HTMLhandleSpace(span);
+	this.HTMLhandleColor(span);
+	return span;
+      }
+    });
+
+    MML.mo.Augment({
+      toHTML: function (span) {
+	span = this.HTMLhandleSize(this.HTMLcreateSpan(span));
+	if (this.data.length == 0) {return span} else {span.bbox = null}
+	var text = this.data.join("");
+        //
+        //  Get the variant, and check for operator size
+        //
+	var variant = this.HTMLgetVariant();
+	var values = this.getValues("largeop","displaystyle");
+	if (values.largeop)
+	  {variant = HTMLCSS.FONTDATA.VARIANT[values.displaystyle ? "-largeOp" : "-smallOp"]}
+        //
+        //  Get character translation for superscript and accents
+        //
+        var parent = this.CoreParent(),
+            isScript = (parent && parent.isa(MML.msubsup) && this !== parent.data[parent.base]),
+            mapchars = (isScript?this.HTMLremapChars:null);
+        if (text.length === 1 && parent && parent.isa(MML.munderover) &&
+            this.CoreText(parent.data[parent.base]).length === 1) {
+          var over = parent.data[parent.over], under = parent.data[parent.under];
+          if (over && this === over.CoreMO() && parent.Get("accent")) {mapchars = HTMLCSS.FONTDATA.REMAPACCENT}
+          else if (under && this === under.CoreMO() && parent.Get("accentunder")) {mapchars = HTMLCSS.FONTDATA.REMAPACCENTUNDER}
+        }
+        //
+        //  STIX and TeX fonts need quotes from variant font
+        //
+        if (isScript && text.match(/['`"\u00B4\u2032-\u2037\u2057]/))
+          {variant = HTMLCSS.FONTDATA.VARIANT["-"+HTMLCSS.fontInUse+"-variant"]}
+        //
+        //  Typeset contents
+        //
+	for (var i = 0, m = this.data.length; i < m; i++)
+          {if (this.data[i]) {this.data[i].toHTML(span,variant,this.HTMLremap,mapchars)}}
+	if (!span.bbox) {span.bbox = {w:0, h:0, d:0, rw:0, lw:0}}
+	if (text.length !== 1) {delete span.bbox.skew}
+        //
+        //  Handle combining characters by adding a non-breaking space and removing that width
+        //
+	if (HTMLCSS.AccentBug && span.bbox.w === 0 && text.length === 1 && span.firstChild) {
+	  span.firstChild.nodeValue += HTMLCSS.NBSP;
+	  HTMLCSS.createSpace(span,0,0,-span.offsetWidth/HTMLCSS.em);
+	}
+        //
+        //  Handle large operator centering
+        //
+	if (values.largeop) {
+	  var p = (span.bbox.h - span.bbox.d)/2 - HTMLCSS.TeX.axis_height*span.scale;
+	  if (HTMLCSS.safariVerticalAlignBug && span.lastChild.nodeName === "IMG") {
+	    span.lastChild.style.verticalAlign =
+	      HTMLCSS.Em(HTMLCSS.unEm(span.lastChild.style.verticalAlign||0)/HTMLCSS.em-p/span.scale);
+	  } else if (HTMLCSS.konquerorVerticalAlignBug && span.lastChild.nodeName === "IMG") {
+	    span.style.position = "relative";
+	    span.lastChild.style.position="relative";
+	    span.lastChild.style.top = HTMLCSS.Em(p/span.scale);
+	  } else {
+	    span.style.verticalAlign = HTMLCSS.Em(-p/span.scale);
+	  }
+	  span.bbox.h -= p; span.bbox.d += p;
+	  if (span.bbox.rw > span.bbox.w) {
+	    span.bbox.ic = span.bbox.rw-span.bbox.w;
+	    HTMLCSS.createBlank(span,span.bbox.ic);
+	    span.bbox.w = span.bbox.rw;
+	  }
+	}
+        //
+        //  Finish up
+        //
+	this.HTMLhandleSpace(span);
+	this.HTMLhandleColor(span);
+	return span;
+      },
+      CoreParent: function () {
+        var parent = this;
+        while (parent && parent.isEmbellished() &&
+               parent.CoreMO() === this && !parent.isa(MML.math)) {parent = parent.Parent()}
+        return parent;
+      },
+      CoreText: function (parent) {
+        if (!parent) {return ""}
+        if (parent.isEmbellished()) {return parent.CoreMO().data.join("")}
+        while ((parent.isa(MML.mrow) || parent.isa(MML.TeXAtom)) &&
+                parent.data.length === 1 && parent.data[0]) {parent = parent.data[0]}
+        if (!parent.isToken) {return ""} else {return parent.data.join("")}
+      },
+      HTMLremapChars: {
+        '*':"\u2217",
+        '"':"\u2033",
+        "\u00B0":"\u2218",
+        "\u00B2":"2",
+        "\u00B3":"3",
+        "\u00B4":"\u2032",
+        "\u00B9":"1"
+      },
+      HTMLremap: function (text,map) {
+        text = text.replace(/-/g,"\u2212");
+        if (map) {
+          text = text.replace(/'/g,"\u2032").replace(/`/g,"\u2035");
+          if (text.length === 1) {text = map[text]||text}
+        }
+        return text;
+      },
+      HTMLcanStretch: function (direction) {
+	if (!this.Get("stretchy")) {return false}
+	var c = this.data.join("");
+	if (c.length > 1) {return false}
+        var parent = this.CoreParent();
+        if (parent && parent.isa(MML.munderover) && 
+            this.CoreText(parent.data[parent.base]).length === 1) {
+          var over = parent.data[parent.over], under = parent.data[parent.under];
+          if (over && this === over.CoreMO() && parent.Get("accent")) {c = HTMLCSS.FONTDATA.REMAPACCENT[c]||c}
+          else if (under && this === under.CoreMO() && parent.Get("accentunder")) {c = HTMLCSS.FONTDATA.REMAPACCENTUNDER[c]||c}
+        }
+	c = HTMLCSS.FONTDATA.DELIMITERS[c.charCodeAt(0)];
+	return (c && c.dir == direction.substr(0,1));
+      },
+      HTMLstretchV: function (box,h,d) {
+	this.HTMLremoveColor();
+	var values = this.getValues("symmetric","maxsize","minsize");
+	var span = this.HTMLspanElement(), mu = this.HTMLgetMu(span), H;
+	var axis = HTMLCSS.TeX.axis_height, scale = span.scale;
+	if (values.symmetric) {H = 2*Math.max(h-axis,d+axis)} else {H = h + d}
+	values.maxsize = HTMLCSS.length2em(values.maxsize,mu,span.bbox.h+span.bbox.d);
+	values.minsize = HTMLCSS.length2em(values.minsize,mu,span.bbox.h+span.bbox.d);
+	H = Math.max(values.minsize,Math.min(values.maxsize,H));
+	span = this.HTMLcreateSpan(box); // clear contents and attributes
+	HTMLCSS.createDelimiter(span,this.data.join("").charCodeAt(0),H,scale);
+	if (values.symmetric) {H = (span.bbox.h + span.bbox.d)/2 + axis}
+	  else {H = (span.bbox.h + span.bbox.d) * h/(h + d)}
+	HTMLCSS.positionDelimiter(span,H);
+	this.HTMLhandleSpace(span); // add in lspace/rspace, if any
+	this.HTMLhandleColor(span);
+	return span;
+      },
+      HTMLstretchH: function (box,W) {
+	this.HTMLremoveColor();
+	var values = this.getValues("maxsize","minsize","mathvariant","fontweight");
+        // FIXME:  should take style="font-weight:bold" into account as well
+	if ((values.fontweight === "bold" || parseInt(values.fontweight) >= 600) &&
+            !this.Get("mathvariant",true)) {values.mathvariant = MML.VARIANT.BOLD}
+	var span = this.HTMLspanElement(), mu = this.HTMLgetMu(span), scale = span.scale;
+	values.maxsize = HTMLCSS.length2em(values.maxsize,mu,span.bbox.w);
+	values.minsize = HTMLCSS.length2em(values.minsize,mu,span.bbox.w);
+	W = Math.max(values.minsize,Math.min(values.maxsize,W));
+	span = this.HTMLcreateSpan(box); // clear contents and attributes
+	HTMLCSS.createDelimiter(span,this.data.join("").charCodeAt(0),W,scale,values.mathvariant);
+	this.HTMLhandleSpace(span); // add in lspace/rspace, if any
+	this.HTMLhandleColor(span);
+	return span;
+      }
+    });
+
+    MML.mtext.Augment({
+      toHTML: function (span) {
+        span = this.HTMLhandleSize(this.HTMLcreateSpan(span)); 
+        var variant = this.HTMLgetVariant();
+        //  Avoid setting the font style for error text or if mtextFontInherit is set
+        if (HTMLCSS.config.mtextFontInherit || this.Parent().type === "merror")
+          {variant = {bold:variant.bold, italic:variant.italic, fontInherit: true}}
+        for (var i = 0, m = this.data.length; i < m; i++)
+          {if (this.data[i]) {this.data[i].toHTML(span,variant)}}
+        if (!span.bbox) {span.bbox = {w:0, h:0, d:0, rw:0, lw:0}}
+        if (this.data.join("").length !== 1) {delete span.bbox.skew}
+        this.HTMLhandleSpace(span);
+        this.HTMLhandleColor(span);
+        return span;
+      }
+    });
+    MML.merror.Augment({
+      toHTML: function (span) {
+        //
+        //  Width doesn't include padding and border, so use an extra inline block
+        //  element to capture it.
+        //  
+        var SPAN = MathJax.HTML.addElement(span,"span",{style:{display:"inline-block"}});
+        span = this.SUPER(arguments).toHTML.call(this,SPAN);
+        var HD = HTMLCSS.getHD(SPAN), W = HTMLCSS.getW(SPAN);
+        SPAN.bbox = {h:HD.h, d:HD.d, w:W, lw:0, rw:W, exactW: true};
+        SPAN.id = span.id; span.id = null;
+        return SPAN;
+      }
+    });
+
+    MML.ms.Augment({toHTML: MML.mbase.HTMLautoload});
+
+    MML.mglyph.Augment({toHTML: MML.mbase.HTMLautoload});
+
+    MML.mspace.Augment({
+      toHTML: function (span) {
+	span = this.HTMLcreateSpan(span);
+	var values = this.getValues("height","depth","width");
+        var mu = this.HTMLgetMu(span);
+	values.mathbackground = this.mathbackground;
+	if (this.background && !this.mathbackground) {values.mathbackground = this.background}
+	var h = HTMLCSS.length2em(values.height,mu),
+            d = HTMLCSS.length2em(values.depth,mu),
+	    w = HTMLCSS.length2em(values.width,mu);
+       HTMLCSS.createSpace(span,h,d,w,values.mathbackground,true);
+       return span;
+      }
+    });
+
+    MML.mphantom.Augment({
+      toHTML: function (span,HW,D) {
+	span = this.HTMLcreateSpan(span);
+	if (this.data[0] != null) {
+	  var box = this.data[0].toHTML(span);
+	  if (D != null) {HTMLCSS.Remeasured(this.data[0].HTMLstretchV(span,HW,D),span)}
+	  else if (HW != null) {HTMLCSS.Remeasured(this.data[0].HTMLstretchH(span,HW),span)}
+          else {box = HTMLCSS.Measured(box,span)}
+	  span.bbox = {w: box.bbox.w, h: box.bbox.h, d: box.bbox.d, lw: 0, rw: 0, exactW: true};
+	  for (var i = 0, m = span.childNodes.length; i < m; i++)
+	    {span.childNodes[i].style.visibility = "hidden"}
+	}
+	this.HTMLhandleSpace(span);
+	this.HTMLhandleColor(span);
+	return span;
+      },
+      HTMLstretchH: MML.mbase.HTMLstretchH,
+      HTMLstretchV: MML.mbase.HTMLstretchV
+    });
+
+    MML.mpadded.Augment({
+      toHTML: function (span,HW,D) {
+	span = this.HTMLcreateSpan(span);
+	if (this.data[0] != null) {
+	  var stack = HTMLCSS.createStack(span,true);
+	  var box = HTMLCSS.createBox(stack);
+          var child = this.data[0].toHTML(box);
+	  if (D != null) {HTMLCSS.Remeasured(this.data[0].HTMLstretchV(box,HW,D),box)}
+	  else if (HW != null) {HTMLCSS.Remeasured(this.data[0].HTMLstretchH(box,HW),box)}
+          else {HTMLCSS.Measured(child,box)}
+	  var values = this.getValues("height","depth","width","lspace","voffset"),
+              x = 0, y = 0, mu = this.HTMLgetMu(span);
+	  if (values.lspace)  {x = this.HTMLlength2em(box,values.lspace,mu)}
+	  if (values.voffset) {y = this.HTMLlength2em(box,values.voffset,mu)}
+	  HTMLCSS.placeBox(box,x,y);
+	  span.bbox = {
+	    h: box.bbox.h, d: box.bbox.d, w: box.bbox.w, exactW: true,
+	    lw: Math.min(0,box.bbox.lw+x), rw: Math.max(box.bbox.w,box.bbox.rw+x),
+	    H: Math.max((box.bbox.H == null ? -HTMLCSS.BIGDIMEN : box.bbox.H),box.bbox.h+y),
+	    D: Math.max((box.bbox.D == null ? -HTMLCSS.BIGDIMEN : box.bbox.D),box.bbox.d-y)
+	  };
+	  if (values.height !== "") {span.bbox.h = this.HTMLlength2em(box,values.height,mu,"h",0)}
+	  if (values.depth  !== "") {span.bbox.d = this.HTMLlength2em(box,values.depth,mu,"d",0)}
+	  if (values.width  !== "") {span.bbox.w = this.HTMLlength2em(box,values.width,mu,"w",0)}
+	  if (span.bbox.H <= span.bbox.h) {delete span.bbox.H}
+	  if (span.bbox.D <= span.bbox.d) {delete span.bbox.D}
+          var dimen = /^\s*(\d+(\.\d*)?|\.\d+)\s*(pt|em|ex|mu|px|pc|in|mm|cm)\s*$/
+          span.bbox.exact = !!((this.data[0] && this.data[0].data.length == 0) ||
+             dimen.exec(values.height) || dimen.exec(values.width) || dimen.exec(values.depth));
+	  HTMLCSS.setStackWidth(stack,span.bbox.w);
+	}
+	this.HTMLhandleSpace(span);
+	this.HTMLhandleColor(span);
+	return span;
+      },
+      HTMLlength2em: function (span,length,mu,d,m) {
+	if (m == null) {m = -HTMLCSS.BIGDIMEN}
+	var match = String(length).match(/width|height|depth/);
+	var size = (match ? span.bbox[match[0].charAt(0)] : (d ? span.bbox[d] : 0));
+	var v = HTMLCSS.length2em(length,mu,size);
+	if (d && String(length).match(/^\s*[-+]/))
+	  {return Math.max(m,span.bbox[d]+v)} else {return v}
+      },
+      HTMLstretchH: MML.mbase.HTMLstretchH,
+      HTMLstretchV: MML.mbase.HTMLstretchV
+    });
+
+    MML.mrow.Augment({
+      HTMLlineBreaks: function (span) {
+        if (!this.parent.linebreakContainer) {return false}
+        return (HTMLCSS.config.linebreaks.automatic &&
+                span.bbox.w > HTMLCSS.linebreakWidth) || this.hasNewline();
+      },
+      HTMLstretchH: function (box,w) {
+	this.HTMLremoveColor();
+	var span = this.HTMLspanElement();
+	this.data[this.core].HTMLstretchH(span,w);
+	this.HTMLcomputeBBox(span,true);
+	this.HTMLhandleColor(span);
+	return span;
+      },
+      HTMLstretchV: function (box,h,d) {
+	this.HTMLremoveColor();
+	var span = this.HTMLspanElement();
+	this.data[this.core].HTMLstretchV(span,h,d);
+	this.HTMLcomputeBBox(span,true);
+	this.HTMLhandleColor(span);
+	return span;
+      }
+    });
+
+    MML.mstyle.Augment({
+      toHTML: function (span,HW,D) {
+	span = this.HTMLcreateSpan(span);
+	if (this.data[0] != null) {
+	  var SPAN = this.data[0].toHTML(span);
+	  if (D != null) {this.data[0].HTMLstretchV(span,HW,D)}
+	  else if (HW != null) {this.data[0].HTMLstretchH(span,HW)}
+          span.bbox = SPAN.bbox;
+	}
+	this.HTMLhandleSpace(span);
+	this.HTMLhandleColor(span);
+	return span;
+      },
+      HTMLstretchH: MML.mbase.HTMLstretchH,
+      HTMLstretchV: MML.mbase.HTMLstretchV
+    });
+
+    MML.mfrac.Augment({
+      toHTML: function (span) {
+	span = this.HTMLcreateSpan(span);
+	var frac = HTMLCSS.createStack(span);
+	var num = HTMLCSS.createBox(frac), den = HTMLCSS.createBox(frac);
+        HTMLCSS.MeasureSpans([this.HTMLboxChild(0,num),this.HTMLboxChild(1,den)]);
+        var values = this.getValues("displaystyle","linethickness","numalign","denomalign","bevelled");
+	var scale = this.HTMLgetScale(), isDisplay = values.displaystyle;
+	var a = HTMLCSS.TeX.axis_height * scale;
+	if (values.bevelled) {
+	  var delta = (isDisplay ? .4 : .15);
+	  var H = Math.max(num.bbox.h+num.bbox.d,den.bbox.h+den.bbox.d)+2*delta;
+	  var bevel = HTMLCSS.createBox(frac);
+	  HTMLCSS.createDelimiter(bevel,0x2F,H);
+	  HTMLCSS.placeBox(num,0,(num.bbox.d-num.bbox.h)/2+a+delta);
+	  HTMLCSS.placeBox(bevel,num.bbox.w-delta/2,(bevel.bbox.d-bevel.bbox.h)/2+a);
+	  HTMLCSS.placeBox(den,num.bbox.w+bevel.bbox.w-delta,(den.bbox.d-den.bbox.h)/2+a-delta);
+	} else {
+	  var W = Math.max(num.bbox.w,den.bbox.w);
+	  var t = HTMLCSS.thickness2em(values.linethickness,scale), p,q, u,v;
+	  var mt = HTMLCSS.TeX.min_rule_thickness/this.em;
+	  if (isDisplay) {u = HTMLCSS.TeX.num1; v = HTMLCSS.TeX.denom1}
+	    else {u = (t === 0 ? HTMLCSS.TeX.num3 : HTMLCSS.TeX.num2); v = HTMLCSS.TeX.denom2}
+	  u *= scale; v *= scale;
+	  if (t === 0) {// \atop
+	    p = Math.max((isDisplay ? 7 : 3) * HTMLCSS.TeX.rule_thickness, 2*mt); // force to at least 2 px
+	    q = (u - num.bbox.d) - (den.bbox.h - v);
+	    if (q < p) {u += (p - q)/2; v += (p - q)/2}
+	  } else {// \over
+	    p = Math.max((isDisplay ? 2 : 0) * mt + t, t/2 + 1.5*mt);  // force to be at least 1.5px
+	    q = (u - num.bbox.d) - (a + t/2); if (q < p) {u += p - q}
+	    q = (a - t/2) - (den.bbox.h - v); if (q < p) {v += p - q}
+	    var rule = HTMLCSS.createBox(frac);
+	    HTMLCSS.createRule(rule,t,0,W+2*t);
+	    HTMLCSS.placeBox(rule,0,a-t/2);
+	  }
+	  HTMLCSS.alignBox(num,values.numalign,u);
+	  HTMLCSS.alignBox(den,values.denomalign,-v);
+	}
+	this.HTMLhandleSpace(span);
+	this.HTMLhandleColor(span);
+	return span;
+      },
+      HTMLcanStretch: function (direction) {return false},
+      HTMLhandleSpace: function (span) {
+	if (!this.texWithDelims) {
+	  var space = (this.useMMLspacing ? 0 : HTMLCSS.length2em(this.texSpacing()||0)) + .12;
+	  span.style.paddingLeft  = HTMLCSS.Em(space);
+	  span.style.paddingRight = HTMLCSS.Em(.12);
+	}
+      }
+    });
+
+    MML.msqrt.Augment({
+      toHTML: function (span) {
+	span = this.HTMLcreateSpan(span);
+	var sqrt = HTMLCSS.createStack(span);
+	var base = HTMLCSS.createBox(sqrt),
+	    rule = HTMLCSS.createBox(sqrt),
+	    surd = HTMLCSS.createBox(sqrt);
+	var scale = this.HTMLgetScale();
+	var t = HTMLCSS.TeX.rule_thickness * scale, p,q, H, W;
+	if (this.Get("displaystyle")) {p = HTMLCSS.TeX.x_height * scale} else {p = t}
+	q = Math.max(t + p/4,1.5*HTMLCSS.TeX.min_rule_thickness/this.em); // force to be at least 1px
+	var BASE = this.HTMLboxChild(0,base);
+	H = BASE.bbox.h + BASE.bbox.d + q + t;
+        HTMLCSS.createDelimiter(surd,0x221A,H,scale);
+	HTMLCSS.MeasureSpans([BASE,surd]);
+	W = BASE.bbox.w;
+	var x = 0;
+	if (surd.isMultiChar || (HTMLCSS.AdjustSurd && HTMLCSS.imgFonts)) {surd.bbox.w *= .95}
+	if (surd.bbox.h + surd.bbox.d > H) {q = ((surd.bbox.h+surd.bbox.d) - (H-t))/2}
+	var ruleC = HTMLCSS.FONTDATA.DELIMITERS[HTMLCSS.FONTDATA.RULECHAR];
+	if (!ruleC || W < ruleC.HW[0][0]*scale || scale < .75) {
+	  HTMLCSS.createRule(rule,0,t,W);
+	} else {
+	  HTMLCSS.createDelimiter(rule,HTMLCSS.FONTDATA.RULECHAR,W,scale);
+	}
+	H = BASE.bbox.h + q + t;
+        q = H*HTMLCSS.rfuzz; if (surd.isMultiChar) {q = HTMLCSS.rfuzz}
+	x = this.HTMLaddRoot(sqrt,surd,x,surd.bbox.h+surd.bbox.d-H,scale);
+	HTMLCSS.placeBox(surd,x,H-surd.bbox.h);
+	HTMLCSS.placeBox(rule,x+surd.bbox.w,H-rule.bbox.h+q);
+	HTMLCSS.placeBox(base,x+surd.bbox.w,0);
+	this.HTMLhandleSpace(span);
+	this.HTMLhandleColor(span);
+	return span;
+      },
+      HTMLaddRoot: function (sqrt,surd,x,d,scale) {return x}
+    });
+
+    MML.mroot.Augment({
+      toHTML: MML.msqrt.prototype.toHTML,
+      HTMLaddRoot: function (sqrt,surd,x,d,scale) {
+	var box = HTMLCSS.createBox(sqrt);
+	if (this.data[1]) {
+	  var root = this.data[1].toHTML(box);
+	  root.style.paddingRight = root.style.paddingLeft = ""; // remove extra padding, if any
+	  HTMLCSS.Measured(root,box);
+	} else {box.bbox = this.HTMLzeroBBox()}
+	var h = this.HTMLrootHeight(surd.bbox.h+surd.bbox.d,scale,box)-d;
+	var w = Math.min(box.bbox.w,box.bbox.rw); // remove extra right-hand padding, if any
+	x = Math.max(w,surd.offset);
+	HTMLCSS.placeBox(box,x-w,h);
+	return x - surd.offset;
+      },
+      HTMLrootHeight: function (d,scale,root) {
+	return .45*(d-.9*scale)+.6*scale + Math.max(0,root.bbox.d-.075);
+      }
+    });
+
+    MML.mfenced.Augment({
+      toHTML: function (span) {
+	span = this.HTMLcreateSpan(span);
+	if (this.data.open) {this.data.open.toHTML(span)}
+	if (this.data[0] != null) {this.data[0].toHTML(span)}
+	for (var i = 1, m = this.data.length; i < m; i++) {
+	  if (this.data[i]) {
+	    if (this.data["sep"+i]) {this.data["sep"+i].toHTML(span)}
+	    this.data[i].toHTML(span);
+	  }
+	}
+	if (this.data.close) {this.data.close.toHTML(span)}
+	var stretchy = this.HTMLcomputeBBox(span);
+	var h = span.bbox.h, d = span.bbox.d;
+	for (i = 0, m = stretchy.length; i < m; i++) {stretchy[i].HTMLstretchV(span,h,d)}
+	if (stretchy.length) {this.HTMLcomputeBBox(span,true)}
+	this.HTMLhandleSpace(span);
+	this.HTMLhandleColor(span);
+	return span;
+      },
+      HTMLcomputeBBox: function (span,full) {
+	var BBOX = span.bbox = {}, stretchy = [];
+	this.HTMLcheckStretchy(this.data.open,BBOX,stretchy,full);
+	this.HTMLcheckStretchy(this.data[0],BBOX,stretchy,full);
+	for (var i = 1, m = this.data.length; i < m; i++) {
+	  if (this.data[i]) {
+	    this.HTMLcheckStretchy(this.data["sep"+i],BBOX,stretchy,full);
+	    this.HTMLcheckStretchy(this.data[i],BBOX,stretchy,full);
+	  }
+	}
+	this.HTMLcheckStretchy(this.data.close,BBOX,stretchy,full);
+	this.HTMLcleanBBox(BBOX);
+	return stretchy;
+      },
+      HTMLcheckStretchy: function (core,BBOX,stretchy,full) {
+	if (core) {
+	  if (!full && core.HTMLcanStretch("Vertical"))
+	    {stretchy.push(core); core = (core.CoreMO()||core)}
+	  this.HTMLcombineBBoxes(core,BBOX);
+	}
+      }
+    });
+
+    MML.menclose.Augment({toHTML: MML.mbase.HTMLautoload});
+    MML.maction.Augment({toHTML: MML.mbase.HTMLautoload});
+
+    MML.semantics.Augment({
+      toHTML: function (span,HW,D) {
+	span = this.HTMLcreateSpan(span);
+	if (this.data[0] != null) {
+	  var SPAN = this.data[0].toHTML(span);
+	  if (D != null) {this.data[0].HTMLstretchV(span,HW,D)}
+	  else if (HW != null) {this.data[0].HTMLstretchH(span,HW)}
+          span.bbox = SPAN.bbox;
+	}
+	this.HTMLhandleSpace(span);
+	return span;
+      },
+      HTMLstretchH: MML.mbase.HTMLstretchH,
+      HTMLstretchV: MML.mbase.HTMLstretchV
+    });
+
+    MML.munderover.Augment({
+      toHTML: function (span,HW,D) {
+	var values = this.getValues("displaystyle","accent","accentunder","align");
+	if (!values.displaystyle && this.data[this.base] != null &&
+	    this.data[this.base].CoreMO().Get("movablelimits"))
+	      {return MML.msubsup.prototype.toHTML.call(this,span)}
+	span = this.HTMLcreateSpan(span); var scale = this.HTMLgetScale();
+	var stack = HTMLCSS.createStack(span);
+	var boxes = [], children = [], stretch = [], box, i, m;
+	for (i = 0, m = this.data.length; i < m; i++) {
+	  if (this.data[i] != null) {
+	    box = boxes[i] = HTMLCSS.createBox(stack);
+	    children[i] = this.data[i].toHTML(box);
+	    if (i == this.base) {
+	      if (D != null) {this.data[this.base].HTMLstretchV(box,HW,D)}
+	      else if (HW != null) {this.data[this.base].HTMLstretchH(box,HW)}
+	      stretch[i] = (D == null && HW != null ? false :
+			   this.data[i].HTMLcanStretch("Horizontal"));
+	    } else {
+	      stretch[i] = this.data[i].HTMLcanStretch("Horizontal");
+	    }
+          }
+        }
+        HTMLCSS.MeasureSpans(children);
+        var W = -HTMLCSS.BIGDIMEN, WW = W;
+	for (i = 0, m = this.data.length; i < m; i++) {
+	  if (this.data[i]) {
+	    if (boxes[i].bbox.w > WW) {WW = boxes[i].bbox.w}
+	    if (!stretch[i] && WW > W) {W = WW}
+	  }
+	}
+	if (D == null && HW != null) {W = HW} else if (W == -HTMLCSS.BIGDIMEN) {W = WW}
+        for (i = WW = 0, m = this.data.length; i < m; i++) {if (this.data[i]) {
+          box = boxes[i];
+          if (stretch[i]) {box.bbox = this.data[i].HTMLstretchH(box,W).bbox}
+          if (box.bbox.w > WW) {WW = box.bbox.w}
+        }}
+	var t = HTMLCSS.TeX.rule_thickness, factor = HTMLCSS.FONTDATA.TeX_factor;
+	var base = boxes[this.base] || {bbox: this.HTMLzeroBBox()};
+	var x, y, z1, z2, z3, dw, k, delta = 0;
+        if (base.bbox.ic) {delta = 1.3*base.bbox.ic + .05} // adjust faked IC to be more in line with expeted results
+	for (i = 0, m = this.data.length; i < m; i++) {
+	  if (this.data[i] != null) {
+	    box = boxes[i];
+	    z3 = HTMLCSS.TeX.big_op_spacing5 * scale;
+	    var accent = (i != this.base && values[this.ACCENTS[i]]);
+	    if (accent && box.bbox.w <= 1/HTMLCSS.em+.0001) { // images can get the width off by 1px
+	      box.bbox.w = box.bbox.rw - box.bbox.lw; box.bbox.noclip = true;
+	      if (box.bbox.lw)
+		{box.insertBefore(HTMLCSS.createSpace(box.parentNode,0,0,-box.bbox.lw),box.firstChild)}
+	      HTMLCSS.createBlank(box,0,0,box.bbox.rw+.1);
+	    }
+	    dw = {left:0, center:(WW-box.bbox.w)/2, right:WW-box.bbox.w}[values.align];
+	    x = dw; y = 0;
+	    if (i == this.over) {
+	      if (accent) {
+		k = Math.max(t * scale * factor,2.5/this.em); z3 = 0;
+		if (base.bbox.skew) {x += base.bbox.skew}
+	      } else {
+		z1 = HTMLCSS.TeX.big_op_spacing1 * scale * factor;
+		z2 = HTMLCSS.TeX.big_op_spacing3 * scale * factor;
+		k = Math.max(z1,z2-Math.max(0,box.bbox.d));
+	      }
+	      k = Math.max(k,1.5/this.em); // force to be at least 1.5px
+	      x += delta/2; y = base.bbox.h + box.bbox.d + k;
+	      box.bbox.h += z3;
+	    } else if (i == this.under) {
+	      if (accent) {
+		k = 3*t * scale * factor; z3 = 0;
+	      } else {
+		z1 = HTMLCSS.TeX.big_op_spacing2 * scale * factor;
+		z2 = HTMLCSS.TeX.big_op_spacing4 * scale * factor;
+		k = Math.max(z1,z2-box.bbox.h);
+	      }
+	      k = Math.max(k,1.5/this.em); // force to be at least 1.5px
+	      x -= delta/2; y = -(base.bbox.d + box.bbox.h + k);
+	      box.bbox.d += z3;
+	    }
+	    HTMLCSS.placeBox(box,x,y);
+	  }
+	}
+	this.HTMLhandleSpace(span);
+	this.HTMLhandleColor(span);
+	return span;
+      },
+      HTMLstretchH: MML.mbase.HTMLstretchH,
+      HTMLstretchV: MML.mbase.HTMLstretchV
+    });
+
+    MML.msubsup.Augment({
+      toHTML: function (span,HW,D) {
+	span = this.HTMLcreateSpan(span);
+        var scale = this.HTMLgetScale(), mu = this.HTMLgetMu(span);
+	var stack = HTMLCSS.createStack(span), values, children = [];
+	var base = HTMLCSS.createBox(stack);
+	if (this.data[this.base]) {
+          children.push(this.data[this.base].toHTML(base));
+	  if (D != null) {this.data[this.base].HTMLstretchV(base,HW,D)}
+	  else if (HW != null) {this.data[this.base].HTMLstretchH(base,HW)}
+	} else {base.bbox = this.HTMLzeroBBox()}
+	var x_height = HTMLCSS.TeX.x_height * scale,
+	    s = HTMLCSS.TeX.scriptspace * scale * .75;  // FIXME: .75 can be removed when IC is right?
+	var sup, sub;
+	if (this.HTMLnotEmpty(this.data[this.sup]))
+          {sup = HTMLCSS.createBox(stack); children.push(this.data[this.sup].toHTML(sup))}
+	if (this.HTMLnotEmpty(this.data[this.sub]))
+          {sub = HTMLCSS.createBox(stack); children.push(this.data[this.sub].toHTML(sub))}
+        HTMLCSS.MeasureSpans(children);
+	if (sup) {sup.bbox.w += s; sup.bbox.rw = Math.max(sup.bbox.w,sup.bbox.rw)}
+	if (sub) {sub.bbox.w += s; sub.bbox.rw = Math.max(sub.bbox.w,sub.bbox.rw)}
+	HTMLCSS.placeBox(base,0,0);
+	var sscale = (this.data[this.sup] || this.data[this.sub] || this).HTMLgetScale();
+	var q = HTMLCSS.TeX.sup_drop * sscale, r = HTMLCSS.TeX.sub_drop * sscale;
+	var u = base.bbox.h - q, v = base.bbox.d + r, delta = 0, p;
+	if (base.bbox.ic) {
+          base.bbox.w -= base.bbox.ic;    // remove IC (added by mo and mi)
+          delta = 1.3*base.bbox.ic + .05; // adjust faked IC to be more in line with expected results
+        }
+	if (this.data[this.base] &&
+	   (this.data[this.base].type === "mi" || this.data[this.base].type === "mo")) {
+	  if (this.data[this.base].data.join("").length === 1 && base.bbox.scale === 1 &&
+	      !this.data[this.base].Get("largeop")) {u = v = 0}
+	}
+	var min = this.getValues("subscriptshift","superscriptshift");
+	min.subscriptshift   = (min.subscriptshift === ""   ? 0 : HTMLCSS.length2em(min.subscriptshift,mu));
+	min.superscriptshift = (min.superscriptshift === "" ? 0 : HTMLCSS.length2em(min.superscriptshift,mu));
+	if (!sup) {
+	  if (sub) {
+	    v = Math.max(v,HTMLCSS.TeX.sub1*scale,sub.bbox.h-(4/5)*x_height,min.subscriptshift);
+	    HTMLCSS.placeBox(sub,base.bbox.w,-v,sub.bbox);
+	  }
+	} else {
+	  if (!sub) {
+	    values = this.getValues("displaystyle","texprimestyle");
+	    p = HTMLCSS.TeX[(values.displaystyle ? "sup1" : (values.texprimestyle ? "sup3" : "sup2"))];
+	    u = Math.max(u,p*scale,sup.bbox.d+(1/4)*x_height,min.superscriptshift);
+	    HTMLCSS.placeBox(sup,base.bbox.w+delta,u,sup.bbox);
+	  } else {
+	    v = Math.max(v,HTMLCSS.TeX.sub2*scale);
+	    var t = HTMLCSS.TeX.rule_thickness * scale;
+	    if ((u - sup.bbox.d) - (sub.bbox.h - v) < 3*t) {
+	      v = 3*t - u + sup.bbox.d + sub.bbox.h;
+	      q = (4/5)*x_height - (u - sup.bbox.d);
+	      if (q > 0) {u += q; v -= q}
+	    }
+	    HTMLCSS.placeBox(sup,base.bbox.w+delta,Math.max(u,min.superscriptshift));
+	    HTMLCSS.placeBox(sub,base.bbox.w,-Math.max(v,min.subscriptshift));
+	  }
+	}
+	this.HTMLhandleSpace(span);
+	this.HTMLhandleColor(span);
+	return span;
+      },
+      HTMLstretchH: MML.mbase.HTMLstretchH,
+      HTMLstretchV: MML.mbase.HTMLstretchV
+    });
+
+    MML.mmultiscripts.Augment({toHTML: MML.mbase.HTMLautoload});
+
+    MML.mtable.Augment({toHTML: MML.mbase.HTMLautoload});
+    
+    MML["annotation-xml"].Augment({toHTML: MML.mbase.HTMLautoload});
+    
+    MML.math.Augment({
+      toHTML: function (span,node) {
+	var alttext = this.Get("alttext");
+        if (alttext && alttext !== "") {node.setAttribute("aria-label",alttext)}
+	var nobr = HTMLCSS.addElement(span,"nobr",{isMathJax: true});
+	span = this.HTMLcreateSpan(nobr);
+	var stack = HTMLCSS.createStack(span), box = HTMLCSS.createBox(stack), math;
+	// Move font-size from outer span to stack to avoid line separation 
+	// problem in strict HTML mode
+	stack.style.fontSize = nobr.parentNode.style.fontSize; nobr.parentNode.style.fontSize = "";
+	if (this.data[0] != null) {
+	  if (HTMLCSS.msieColorBug) {
+	    if (this.background) {this.data[0].background = this.background; delete this.background}
+	    if (this.mathbackground) {this.data[0].mathbackground = this.mathbackground; delete this.mathbackground}
+	  }
+	  MML.mbase.prototype.displayAlign = HUB.config.displayAlign;
+	  MML.mbase.prototype.displayIndent = HUB.config.displayIndent;
+          var html = this.data[0].toHTML(box); html.bbox.exactW = false; // force remeasure just to be sure
+	  math = HTMLCSS.Measured(html,box);
+	}
+	HTMLCSS.placeBox(box,0,0);
+        stack.style.width = Math.round(HTMLCSS.unEm(stack.style.width)*this.em)+"px"; // get width right if minimum font size is set
+	//
+	//  Adjust bbox to match outer em-size
+	// 
+        var p = 1/HTMLCSS.em, f = HTMLCSS.em / HTMLCSS.outerEm; HTMLCSS.em /= f;
+	span.bbox.h *= f; span.bbox.d *= f; span.bbox.w *= f;
+	span.bbox.lw *= f; span.bbox.rw *= f;
+	if (math && math.bbox.width != null) {
+	  stack.style.width = math.bbox.width;
+	  box.style.width = "100%";
+	}
+	//
+	//  Add color (if any)
+	//
+	this.HTMLhandleColor(span);
+	//
+	//  Make math span be the correct height and depth
+	//
+	if (math) {HTMLCSS.createRule(span,(math.bbox.h+p)*f,(math.bbox.d+p)*f,0)}
+	//
+	//  Handle indentalign and indentshift for single-line display equations
+	//
+	if (!this.isMultiline && this.Get("display") === "block" && span.bbox.width == null) {
+	  var values = this.getValues("indentalignfirst","indentshiftfirst","indentalign","indentshift");
+	  if (values.indentalignfirst !== MML.INDENTALIGN.INDENTALIGN) {values.indentalign = values.indentalignfirst}
+	  if (values.indentalign === MML.INDENTALIGN.AUTO) {values.indentalign = this.displayAlign}
+	  node.style.textAlign = values.indentalign;
+	  if (values.indentshiftfirst !== MML.INDENTSHIFT.INDENTSHIFT) {values.indentshift = values.indentshiftfirst}
+	  if (values.indentshift === "auto") {values.indentshift = this.displayIndent}
+	  if (values.indentshift && values.indentalign !== MML.INDENTALIGN.CENTER) {
+	    span.style[{left:"marginLeft",right:"marginRight"}[values.indentalign]] =
+	      HTMLCSS.Em(HTMLCSS.length2em(values.indentshift));
+	  }
+	}
+	return span;
+      },
+      HTMLspanElement: MML.mbase.prototype.HTMLspanElement
+    });
+
+    MML.TeXAtom.Augment({
+      toHTML: function (span) {
+	span = this.HTMLcreateSpan(span);
+	if (this.data[0] != null) {
+	  if (this.texClass === MML.TEXCLASS.VCENTER) {
+	    var stack = HTMLCSS.createStack(span);
+	    var box = HTMLCSS.createBox(stack);
+	    HTMLCSS.Measured(this.data[0].toHTML(box),box);
+	    // FIXME: should the axis height be scaled?
+	    HTMLCSS.placeBox(box,0,HTMLCSS.TeX.axis_height-(box.bbox.h+box.bbox.d)/2+box.bbox.d);
+	  } else {
+	    span.bbox = this.data[0].toHTML(span).bbox;
+	  }
+	}
+	this.HTMLhandleSpace(span);
+	this.HTMLhandleColor(span);
+	return span;
+      }
+    });
+    
+    //
+    //  Loading isn't complete until the element jax is modified,
+    //  but can't call loadComplete within the callback for "mml Jax Ready"
+    //  (it would call HTMLCSS's Require routine, asking for the mml jax again)
+    //  so wait until after the mml jax has finished processing.
+    //  
+    //  We also need to wait for the onload handler to run, since the loadComplete
+    //  will call Config and Startup, which need to modify the body.
+    //
+    MathJax.Hub.Register.StartupHook("onLoad",function () {
+      setTimeout(MathJax.Callback(["loadComplete",HTMLCSS,"jax.js"]),0);
+    });
+  });
+
+  HUB.Register.StartupHook("End Config",function () {
+    
+    //
+    //  Handle browser-specific setup
+    //
+    HUB.Browser.Select({
+      MSIE: function (browser) {
+        var mode = (document.documentMode || 0);
+        var isIE7 = browser.versionAtLeast("7.0");
+        var isIE8 = browser.versionAtLeast("8.0") && mode > 7;
+        var quirks = (document.compatMode === "BackCompat");
+        if (mode < 9) {
+          // IE doesn't do mouse events on trasparent objects,
+          //   so give a background color, but opacity makes it transparent
+          HTMLCSS.config.styles[".MathJax .MathJax_HitBox"]["background-color"] = "white";
+          HTMLCSS.config.styles[".MathJax .MathJax_HitBox"].opacity = 0
+          HTMLCSS.config.styles[".MathJax .MathJax_HitBox"].filter = "alpha(opacity=0)";
+        }
+        // FIXME:  work out tests for these?
+        HTMLCSS.Augment({
+          PaddingWidthBug: true,
+          msieAccentBug: true,
+          msieColorBug: true,
+          msieColorPositionBug: true,    // needs position:relative to put color behind text
+          msieRelativeWidthBug: quirks,
+          msieDisappearingBug: (mode >= 8), // inline math disappears
+          msieMarginScaleBug: (mode < 8),   // relative margins are not scaled properly by font-size
+          msiePaddingWidthBug: true,
+          msieBorderWidthBug: quirks,
+          msieFrameSizeBug: (mode <= 8),    // crashes if size of box isn't big enough for border
+          msieInlineBlockAlignBug: (!isIE8 || quirks),
+          msiePlaceBoxBug: (isIE8 && !quirks),
+          msieClipRectBug: !isIE8,
+          msieNegativeSpaceBug: quirks,
+          cloneNodeBug: (isIE8 && browser.version === "8.0"),
+          initialSkipBug: (mode < 8),        // confused by initial left-margin values
+          msieNegativeBBoxBug: (mode >= 8),  // negative bboxes have positive widths
+          msieIE6: !isIE7,
+          msieItalicWidthBug: true,
+          FontFaceBug: true,
+          msieFontCSSBug: browser.isIE9,
+          allowWebFonts: (mode >= 9 ? "woff" : "eot")
+        });
+      },
+
+      Firefox: function (browser) {
+        var webFonts = false;
+        if (browser.versionAtLeast("3.5")) {
+          var root = String(document.location).replace(/[^\/]*$/,"");
+          if (document.location.protocol !== "file:" || HUB.config.root.match(/^https?:\/\//) ||
+              (HUB.config.root+"/").substr(0,root.length) === root) {webFonts = "otf"}
+        }
+        HTMLCSS.Augment({
+          ffVerticalAlignBug: true,
+          AccentBug: true,
+          allowWebFonts: webFonts
+        });
+      },
+
+      Safari: function (browser) {
+        var v3p0 = browser.versionAtLeast("3.0");
+        var v3p1 = browser.versionAtLeast("3.1");
+        var trueSafari = navigator.appVersion.match(/ Safari\/\d/) &&
+                         navigator.appVersion.match(/ Version\/\d/) &&
+                         navigator.vendor.match(/Apple/);
+        var android = (navigator.appVersion.match(/ Android (\d+)\.(\d+)/));
+        var forceImages = (v3p1 && browser.isMobile && (
+          (navigator.platform.match(/iPad|iPod|iPhone/) && !browser.versionAtLeast("5.0")) ||
+          (android != null && (android[1] < 2 || (android[1] == 2 && android[2] < 2)))
+        ));
+        HTMLCSS.Augment({
+          config: {
+            styles: {
+              ".MathJax img, .MathJax nobr, .MathJax a": {
+                // "none" seems to work like "0px" when width is initially 0
+                "max-width": "5000em", "max-height": "5000em"
+              }
+            }
+          },
+          rfuzz: .011,
+          AccentBug: true,
+          AdjustSurd: true,
+          negativeBBoxes: true,
+          safariNegativeSpaceBug: true,
+          safariVerticalAlignBug: !v3p1,
+          safariTextNodeBug: !v3p0,
+          forceReflow: true,
+          allowWebFonts: (v3p1 && !forceImages ? "otf" : false)
+        });
+        if (trueSafari) {
+          HTMLCSS.Augment({
+            webFontDefault: (browser.isMobile ? "sans-serif" : "serif")
+          });
+        }
+        if (browser.isPC) {
+          HTMLCSS.Augment({
+            adjustAvailableFonts: HTMLCSS.removeSTIXfonts,  // can't access plane1
+            checkWebFontsTwice: true  // bug in Safari/Win that doesn't update font test div properly
+          });
+        }
+        if (forceImages) {
+          //  Force image mode for iOS prior to 4.2 and Droid prior to 2.2
+          var config = HUB.config["HTML-CSS"];
+          if (config) {config.availableFonts = []; config.preferredFont = null}
+            else {HUB.config["HTML-CSS"] = {availableFonts: [], preferredFont: null}}
+        }
+      },
+
+      Chrome: function (browser) {
+        HTMLCSS.Augment({
+          Em: HTMLCSS.Px,       // vertical alignment is better in pixels (since around v20)
+          unEm: HTMLCSS.unPx,
+          chromeHeightBug: true, // heights can be 1px off from the explicitly set size
+          cloneNodeBug: true,    // Chrome gets heights wrong with the cloned ones
+          rfuzz: .011,
+          AccentBug: true,
+          AdjustSurd: true,
+          negativeBBoxes: true,
+          safariNegativeSpaceBug: true,
+          safariWebFontSerif: [""],
+          forceReflow: true,
+          allowWebFonts: (browser.versionAtLeast("4.0") ? "otf" : "svg")
+        });
+      },
+
+      Opera: function (browser) {
+        browser.isMini = (navigator.appVersion.match("Opera Mini") != null);
+        HTMLCSS.config.styles[".MathJax .merror"]["vertical-align"] = null;
+        HTMLCSS.config.styles[".MathJax span"]["z-index"] = 0;
+        HTMLCSS.Augment({
+          operaHeightBug: true,
+          operaVerticalAlignBug: true,
+          operaFontSizeBug: browser.versionAtLeast("10.61"),
+          initialSkipBug: true,
+          FontFaceBug: true,
+          PaddingWidthBug: true,
+          allowWebFonts: (browser.versionAtLeast("10.0") && !browser.isMini ? "otf" : false),
+          adjustAvailableFonts: HTMLCSS.removeSTIXfonts
+        });
+      },
+
+      Konqueror: function (browser) {
+        HTMLCSS.Augment({
+          konquerorVerticalAlignBug: true
+        });
+      }
+    });
+  
+  });
+
+  MathJax.Hub.Register.StartupHook("End Cookie", function () {  
+    if (HUB.config.menuSettings.zoom !== "None")
+      {AJAX.Require("[MathJax]/extensions/MathZoom.js")}
+  });
+    
+})(MathJax.Ajax, MathJax.Hub, MathJax.OutputJax["HTML-CSS"]);
diff --git a/data/mathjax/unpacked/jax/output/NativeMML/config.js b/data/mathjax/unpacked/jax/output/NativeMML/config.js
new file mode 100644
index 0000000..86d51ad
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/NativeMML/config.js
@@ -0,0 +1,47 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/NativeMML/config.js
+ *  
+ *  Initializes the NativeMML OutputJax (the main definition is in
+ *  MathJax/jax/input/NativeMML/jax.js, which is loaded when needed).
+ *
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2009-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+MathJax.OutputJax.NativeMML = MathJax.OutputJax({
+  id: "NativeMML",
+  version: "2.1",
+  directory: MathJax.OutputJax.directory + "/NativeMML",
+  extensionDir: MathJax.OutputJax.extensionDir + "/NativeMML",
+  
+  config: {
+    scale: 100,              // scaling factor for all math
+    minScaleAdjust: 50,      // minimum scaling to adjust to surrounding text
+                             //  (since the code for that is a bit delicate)
+    styles: {
+      "DIV.MathJax_MathML": {
+        "text-align": "center",
+        margin: ".75em 0px"
+      }
+    }
+  }
+});
+
+if (!MathJax.Hub.config.delayJaxRegistration)
+  MathJax.OutputJax.NativeMML.Register("jax/mml");
+
+MathJax.OutputJax.NativeMML.loadComplete("config.js");
diff --git a/data/mathjax/unpacked/jax/output/NativeMML/jax.js b/data/mathjax/unpacked/jax/output/NativeMML/jax.js
new file mode 100644
index 0000000..e47e453
--- /dev/null
+++ b/data/mathjax/unpacked/jax/output/NativeMML/jax.js
@@ -0,0 +1,705 @@
+/*************************************************************
+ *
+ *  MathJax/jax/output/NativeMML/jax.js
+ *
+ *  Implements the NativeMML OutputJax that displays mathematics
+ *  using a browser's native MathML capabilities (if any).
+ *  
+ *  ---------------------------------------------------------------------
+ *  
+ *  Copyright (c) 2010-2012 Design Science, Inc.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+(function (nMML,HUB,AJAX,HTML) {
+  var MML, isMSIE = HUB.Browser.isMSIE;
+  
+  var EVENT, TOUCH, HOVER, ZOOM; // filled in later
+
+  HUB.Register.StartupHook("MathZoom Ready",function () {ZOOM = MathJax.Extension.MathZoom});
+  
+  nMML.Augment({
+    //
+    //  User can configure styles
+    //
+    config: {
+      styles: {
+        ".MathJax_MathML": {
+          "font-style":      "normal",
+          "font-weight":     "normal",
+          "line-height":     "normal",
+          "font-size":       "100%",
+          "font-size-adjust":"none",
+          "text-indent":     0,
+          "text-align":      "left",
+          "text-transform":  "none",
+          "letter-spacing":  "normal",
+          "word-spacing":    "normal",
+          "word-wrap":       "normal",
+          "white-space":     "nowrap",
+          "float":           "none",
+          "direction":       "ltr",
+          border: 0, padding: 0, margin: 0
+        },
+        
+        "span.MathJax_MathML": {
+          display: "inline"
+        },
+        
+        "div.MathJax_MathML": {
+          display: "block"
+        },
+        
+        ".MathJax_mmlExBox": {
+          display:"block", overflow:"hidden",
+          height:"1px", width:"60ex",
+          padding:0, border: 0, margin: 0
+        }
+      }
+    },
+    settings: HUB.config.menuSettings,
+    
+    Config: function () {
+      this.SUPER(arguments).Config.call(this);
+      if (this.settings.scale) {this.config.scale = this.settings.scale}
+      //
+      //  Insert styling to take account of displayAlign and displayIndent
+      //
+      if (HUB.config.displayAlign !== "center") {
+        var align = HUB.config.displayAlign, indent = HUB.config.displayIndent;
+        var def = {"text-align": align+"!important"}; def["margin-"+align] = indent+"!important";
+        MathJax.Hub.Insert(this.config.styles,{
+          "div.MathJax_MathML": def,
+          "div.MathJax_MathML math": {"text-align": align},
+          "div.MathJax_MathContainer > span": {"text-align": align+"!important"}
+        });
+      }
+      if (!this.require) {this.require = []}
+      this.require.push(MathJax.OutputJax.extensionDir+"/MathEvents.js");
+    },
+    Startup: function () {
+      //  Set up event handling
+      EVENT = MathJax.Extension.MathEvents.Event;
+      TOUCH = MathJax.Extension.MathEvents.Touch;
+      HOVER = MathJax.Extension.MathEvents.Hover;
+      this.ContextMenu = EVENT.ContextMenu;
+      this.Mousedown   = EVENT.AltContextMenu;
+      this.Mouseover   = HOVER.Mouseover;
+      this.Mouseout    = HOVER.Mouseout;
+      this.Mousemove   = HOVER.Mousemove;
+
+      if (!isMSIE) {
+        // Used in preTranslate to get scaling factors
+        this.EmExSpan = HTML.Element("span",
+          {style:{position:"absolute","font-size-adjust":"none"}},
+          [
+            ["div",{className:"MathJax_mmlExBox"}],
+            ["span",{className:"MathJax_MathML"}]
+          ]
+        );
+        MML.math(MML.mspace().With({width:"60ex"})).toNativeMML(this.EmExSpan.lastChild);
+      }
+
+      //  Set up styles
+      return AJAX.Styles(this.config.styles);
+    },
+    //
+    //  Set up MathPlayer for IE on the first time through.
+    //
+    InitializeMML: function () {
+      this.initialized = true;
+      if (isMSIE) {
+        try {
+          //
+          //  Insert data needed to use MathPlayer for MathML output
+          //
+          if (!HUB.Browser.mpNamespace) {
+            var mathplayer = document.createElement("object");
+            mathplayer.id = "mathplayer"; mathplayer.classid = "clsid:32F66A20-7614-11D4-BD11-00104BD3F987";
+            document.getElementsByTagName("head")[0].appendChild(mathplayer);
+            document.namespaces.add("m","http://www.w3.org/1998/Math/MathML";);
+            HUB.Browser.mpNamespace = true;
+          }
+          if (!HUB.Browser.mpImported) {
+            document.namespaces.m.doImport("#mathplayer");
+            HUB.Browser.mpImported = true;
+          }
+        } catch (err) {
+          //
+          //  If that fails, give an alert about security settings
+          //
+          alert("MathJax was not able to set up MathPlayer.\n\n"+
+                "If MathPlayer is not installed, you need to install it first.\n"+
+                "Otherwise, your security settings may be preventing ActiveX     \n"+
+                "controls from running.  Use the Internet Options item under\n"+
+                "the Tools menu and select the Security tab, then press the\n"+
+                "Custom Level button. Check that the settings for\n"+
+                "'Run ActiveX Controls', and 'Binary and script behaviors'\n"+
+                "are enabled.\n\n"+
+                "Currently you will see error messages rather than\n"+
+                "typeset mathematics.");
+        }
+      } else {
+        //
+        //  Get the default sizes (need styles in place to do this)
+        //
+        document.body.appendChild(this.EmExSpan);
+        this.defaultEx  = this.EmExSpan.firstChild.offsetWidth/60;
+        this.defaultMEx = this.EmExSpan.lastChild.offsetWidth/60;
+        document.body.removeChild(this.EmExSpan);
+      }
+    },
+    
+    preTranslate: function (state) {
+      var scripts = state.jax[this.id], i, m = scripts.length,
+          script, prev, span, test, math, jax, ex, mex, scale;
+      for (i = 0; i < m; i++) {
+        script = scripts[i]; if (!script.parentNode) continue;
+	if (!this.initialized) {this.InitializeMML()}
+        //
+        //  Remove any existing output
+        //
+        prev = script.previousSibling;
+        if (prev && prev.className === "MathJax_MathML") {prev.parentNode.removeChild(prev)}
+        //
+        //  Add the MathJax span
+        //
+        jax = script.MathJax.elementJax; if (!jax) continue;
+        math = jax.root; jax.NativeMML = {};
+        var type = (math.Get("display") === "block" ? "div" : "span");
+	span = HTML.Element(type,{
+	  className: "MathJax_MathML", id:jax.inputID+"-Frame"
+	},[["span",{
+            className:"MathJax_MathContainer", isMathJax: true, jaxID:this.id,
+            style:{position:"relative", display:"inline-block", "white-space":"nowrap"}
+          }, [["span",{isMathJax:true, style:{display:"inline-block"}}]] // for Firefox hover and zoom
+	]]);
+        script.parentNode.insertBefore(span,script);
+        //
+        //  Add the test span for determining scales
+        //
+        if (!isMSIE) {script.parentNode.insertBefore(this.EmExSpan.cloneNode(true),script)}
+      }
+      //
+      //  Determine the scaling factors for each script
+      //  (this only requires one reflow rather than a reflow for each equation)
+      //
+      for (i = 0; i < m; i++) {
+        script = scripts[i]; if (!script.parentNode) continue;
+        jax = script.MathJax.elementJax; if (!jax) continue;
+        if (!isMSIE) {
+          test = script.previousSibling; span = test.previousSibling;
+          ex = test.firstChild.offsetWidth/60;
+          mex = test.lastChild.offsetWidth/60;
+          if (ex === 0 || ex === "NaN") {ex = this.defaultEx; mex = this.defaultMEx}
+          scale = (mex > 1 ? ex/mex : 1) * this.config.scale;
+          scale = Math.floor(Math.max(this.config.minScaleAdjust/100,scale));
+        } else {scale = 100}
+        jax.NativeMML.fontSize = scale+"%";
+      }
+      //
+      //  Remove the test spans used for determining scales
+      //
+      if (!isMSIE) {
+        for (i = 0; i < m; i++) {
+          script = scripts[i]; if (!script.parentNode || !script.MathJax.elementJax) continue;
+          test = scripts[i].previousSibling;
+          test.parentNode.removeChild(test);
+        }
+      }
+    },
+
+    //
+    //  Add a SPAN to use as a container, and render the math into it
+    //  
+    Translate: function (script) {
+      if (!script.parentNode) return;
+      //
+      //  Get the jax and the container and set the size
+      //
+      var jax = script.MathJax.elementJax, math = jax.root;
+      var span = document.getElementById(jax.inputID+"-Frame"),
+	  container = span.firstChild, mspan = container.firstChild;
+      span.style.fontSize = jax.NativeMML.fontSize;
+      //
+      //  Convert to MathML (if restarted, remove any partial math)
+      //
+      try {math.toNativeMML(mspan)} catch (err) {
+        if (err.restart) {while (mspan.firstChild) {mspan.removeChild(mspan.firstChild)}}
+        throw err;
+      }
+      //
+      //  Add event handlers
+      //
+      if (isMSIE) {
+        if (container.addEventListener) {
+          for (var id in this.MSIE9events) {if (this.MSIE9events.hasOwnProperty(id)) {
+            container.addEventListener(id,this.MSIE9event,true);
+          }}
+        } else {
+          var config = (this.config.showMathMenuMSIE != null ? this : HUB).config;
+          if (config.showMathMenuMSIE && !this.settings.mpContext && !this.settings.mpMouse)
+                {this.MSIEoverlay(container)} else
+                {container.style.position = ""; mspan.firstChild.onmousedown = this.MSIEaltMenu}
+        }
+      } else {
+        container.oncontextmenu = EVENT.Menu;
+        container.onmouseover   = EVENT.Mouseover;
+        container.onmouseout    = EVENT.Mouseout;
+        container.onmousedown   = EVENT.Mousedown;
+        container.onclick       = EVENT.Click;
+        container.ondblclick    = EVENT.DblClick;
+	if (HUB.Browser.noContextMenu) {
+	  container.ontouchstart = TOUCH.start;
+	  container.ontouchend   = TOUCH.end;
+	}
+      }
+    },
+
+    postTranslate: function (state) {
+      if (this.forceReflow) {
+        //  Firefox messes up some mtable's when they are dynamically created
+        //  but gets them right on a reflow, so force reflow by toggling a stylesheet
+        var sheet = (document.styleSheets||[])[0]||{};
+        sheet.disabled = true; sheet.disabled = false;
+      }
+    },
+    
+    //
+    //  Remove MathML preceeding the script
+    //
+    Remove: function (jax) {
+      var span = jax.SourceElement(); if (!span) return;
+      span = span.previousSibling; if (!span) return;
+      if (span.className.match(/MathJax_MathML/)) {span.parentNode.removeChild(span)}
+    },
+    //
+    //  The namespace to use for MML
+    //
+    MMLnamespace: "http://www.w3.org/1998/Math/MathML";,
+
+    //
+    //  For MSIE, we must overlay the MathPlayer object to trap the events
+    //  (since they can't be cancelled when the events are on the <math> tag
+    //  itself).  The events we DON'T want are transferred to the math element,
+    //  and the others are handled directly.
+    //
+    MSIEoverlay: function (span) {
+      var math = span.firstChild;
+      if (math.nodeName.toLowerCase() === "span") {math = math.firstChild}
+      var bbox = this.getHoverBBox(null,math,{});
+      HTML.addElement(span,"span",{
+        style:{display:"inline-block", width:0, height:0, position:"relative"}
+      },[["span",{isMathJax: true, className: "MathJax_MathPlayer_Overlay",
+        style:{
+          display:"inline-block", position:"absolute",
+          left:HOVER.Px(-bbox.w), top:HOVER.Px(-bbox.h-(bbox.y||0)-1),
+          width:HOVER.Px(bbox.w), height:HOVER.Px(bbox.h+bbox.d), cursor:"pointer",
+          "background-color":"white", filter:"alpha(opacity=0)"
+        }
+      }]]);
+      HUB.Insert(span,{
+        msieMath: math,
+        onmousedown: this.MSIEevent, oncontextmenu: this.MSIEevent, onclick: this.MSIEevent,
+        onmouseup: this.MSIEevent, onmousemove: this.MSIEevent, ondblclick: this.MSIEevent,
+        onmouseover: this.MSIEevent, onmouseout: this.MSIEevent
+      });
+    },
+    MSIEevents: {
+      mousedown:"Mousedown", contextmenu:"ContextMenu", click:"Click",
+      mouseup:"Mouseup", mousemove:"Mousemove", dblclick: "DblClick",
+      mouseover:"Mouseover", mouseout:"Mouseout"
+    },
+    MSIEevent: function () {
+      var event = window.event;
+      var type = nMML.MSIEevents[event.type];
+      if (nMML[type] && nMML[type](event,this) === false) {return false}
+      if (ZOOM && ZOOM.HandleEvent(event,type,this) === false) {return false}
+      if (event.srcElement.className === "MathJax_MathPlayer_Overlay" && this.msieMath.fireEvent) {
+        // for now, ignore all other events.  This will disable MathPlayer's zoom
+        // feature, but also its <maction> support.
+        if (type === "ContextMenu" || type === "Mouseover" || type === "Mouseout")
+          {this.msieMath.fireEvent("on"+event.type,event)}
+      }
+      return EVENT.False(event);
+    },
+    MSIEaltMenu: function () {
+      var container = this.parentNode.parentNode;
+      while (!container.jaxID) {container = container.parentNode}
+      EVENT.AltContextMenu(window.event,container);
+    },
+
+    MSIE9events: {
+      contextmenu:"Menu", click:"Click", dblclick: "DblClick",
+      mouseup:"False", mouseover:"Mouseover", mouseout:"Mouseout"
+    },
+    MSIE9event: function (event) {
+      if (event.type === "contextmenu" && nMML.settings.mpContext) {return true}
+      if (event.type === "mouseup" && nMML.settings.mpMouse) {return true}
+      if (event.type === "click" && nMML.settings.mpContext)
+        {return EVENT.AltContextMenu(event,this)}
+      var type = nMML.MSIE9events[event.type];
+      return EVENT[type].call(this,event);
+    },
+
+    getJaxFromMath: function (math) {
+      math = math.parentNode;
+      do {math = math.nextSibling} while (math && math.nodeName.toLowerCase() !== "script");
+      return HUB.getJaxFor(math);
+    },
+    getHoverSpan: function (jax,math) {return math.firstChild},
+    getHoverBBox: function (jax,span,math) {return EVENT.getBBox(span.parentNode)},
+
+    Zoom: function (jax,span,math,Mw,Mh) {
+      jax.root.toNativeMML(span);
+      if (this.msieIE8HeightBug) {span.style.position = "absolute"}
+      var mW = math.offsetWidth  || math.scrollWidth,
+          mH = math.offsetHeight || math.scrollHeight;
+      var zW = span.offsetWidth, zH = span.offsetHeight;
+      if (this.msieIE8HeightBug) {span.style.position = ""}
+      return {Y:-EVENT.getBBox(span.parentNode).h, mW:mW, mH:mH, zW:zW, zH:zH}
+    },
+
+    NAMEDSPACE: {
+      negativeveryverythinmathspace:  "-.0556em",
+      negativeverythinmathspace:      "-.1111em",
+      negativethinmathspace:          "-.1667em",
+      negativemediummathspace:        "-.2222em",
+      negativethickmathspace:         "-.2778em",
+      negativeverythickmathspace:     "-.3333em",
+      negativeveryverythickmathspace: "-.3889em"
+    }
+  });
+
+  HUB.Register.StartupHook("mml Jax Ready",function () {
+
+    MML = MathJax.ElementJax.mml;
+
+    MML.mbase.Augment({
+      //
+      //  Add a MathML tag of the correct type, and set its attributes
+      //    then populate it with its children and append it to the parent
+      //
+      toNativeMML: function (parent) {
+	var tag = this.NativeMMLelement(this.type);
+	this.NativeMMLattributes(tag);
+	for (var i = 0, m = this.data.length; i < m; i++) {
+	  if (this.data[i]) {this.data[i].toNativeMML(tag)}
+	    else {tag.appendChild(this.NativeMMLelement("mrow"))}
+	}
+	parent.appendChild(tag);
+      },
+      //
+      //  Look for attributes that are different from the defaults
+      //    and set those in the tag's attribute list
+      //
+      NativeMMLattributes: function (tag) {
+	var defaults = this.defaults;
+	var copy = (this.attrNames||MML.copyAttributeNames), skip = MML.skipAttributes;
+        if (!this.attrNames) {
+          if (this.type === "mstyle") {defaults = MML.math.prototype.defaults}
+          for (var id in defaults) {if (!skip[id] && defaults.hasOwnProperty(id)) {
+	    if (this[id] != null) {tag.setAttribute(id,this.NativeMMLattribute(this[id]))}
+          }}
+        }
+	for (var i = 0, m = copy.length; i < m; i++) {
+          var value = (this.attr||{})[copy[i]]; if (value == null) {value = this[copy[i]]}
+	  if (value != null) {tag.setAttribute(copy[i],this.NativeMMLattribute(value))}
+	}
+        this.NativeMMLclass(tag);
+      },
+      NativeMMLclass: function (tag) {
+        var CLASS = []; if (this["class"]) {CLASS.push(this["class"])}
+        if (this.isa(MML.TeXAtom)) {
+          var TEXCLASS = ["ORD","OP","BIN","REL","OPEN","CLOSE","PUNCT","INNER","VCENTER"][this.texClass];
+          if (TEXCLASS) {CLASS.push("MJX-TeXAtom-"+TEXCLASS)}
+        }
+        if (this.mathvariant && this.NativeMMLvariants[this.mathvariant])
+          {CLASS.push("MJX"+this.mathvariant)}
+        if (this.arrow) {CLASS.push("MJX-arrow")}
+        if (this.variantForm) {CLASS.push("MJX-variant")}
+        if (CLASS.length) {tag.setAttribute("class",CLASS.join(" "))}
+      },
+      NativeMMLattribute: function (value) {
+	value = String(value);
+	if (nMML.NAMEDSPACE[value]) {value = nMML.NAMEDSPACE[value]} // MP doesn't do negative spaces
+	else if (value.match(/^\s*(([-+])?(\d+(\.\d*)?|\.\d+))\s*mu\s*$/))
+          {value = RegExp.$2+((1/18)*RegExp.$3).toFixed(3).replace(/\.?0+$/,"")+"em"} // FIXME:  should take scriptlevel into account
+	else if (this.NativeMMLvariants[value]) {value = this.NativeMMLvariants[value]}
+	return value;
+      },
+      NativeMMLvariants: {
+        "-tex-caligraphic":      MML.VARIANT.SCRIPT,
+        "-tex-caligraphic-bold": MML.VARIANT.BOLDSCRIPT,
+        "-tex-oldstyle":         MML.VARIANT.NORMAL,
+        "-tex-oldstyle-bold":    MML.VARIANT.BOLD,
+        "-tex-mathit":           MML.VARIANT.ITALIC
+      },
+      //
+      //  Create a MathML element
+      //
+      NativeMMLelement: function (type) {
+        var math = (isMSIE ? document.createElement("m:"+type) :
+	                     document.createElementNS(nMML.MMLnamespace,type));
+        math.isMathJax = true;
+        return math;
+      }
+    });
+    
+    MML.mrow.Augment({
+      //
+      //  Make inferred rows not include an mrow tag
+      //
+      toNativeMML: function (parent) {
+	if (this.inferred  && this.parent.inferRow) {
+	  for (var i = 0, m = this.data.length; i < m; i++) {
+	    if (this.data[i]) {this.data[i].toNativeMML(parent)}
+	      else {parent.appendChild(this.NativeMMLelement("mrow"))}
+	  }
+	} else {
+	  this.SUPER(arguments).toNativeMML.call(this,parent);
+	}
+      }
+    });
+
+    MML.msubsup.Augment({
+      //
+      //  Use proper version of msub, msup, or msubsup, depending on
+      //  which items are present
+      //
+      toNativeMML: function (parent) {
+	var type = this.type;
+	if (this.data[this.sup] == null) {type = "msub"}
+	if (this.data[this.sub] == null) {type = "msup"}
+	var tag = this.NativeMMLelement(type);
+	this.NativeMMLattributes(tag);
+	delete this.data[0].inferred;
+	for (var i = 0, m = this.data.length; i < m; i++)
+	  {if (this.data[i]) {this.data[i].toNativeMML(tag)}}
+	parent.appendChild(tag);
+      }
+    });
+
+    MML.munderover.Augment({
+      //
+      //  Use proper version of munder, mover, or munderover, depending on
+      //  which items are present
+      //
+      toNativeMML: function (parent) {
+	var type = this.type;
+	if (this.data[this.under] == null) {type = "mover"}
+	if (this.data[this.over] == null)  {type = "munder"}
+	var tag = this.NativeMMLelement(type);
+	this.NativeMMLattributes(tag);
+	delete this.data[0].inferred;
+	for (var i = 0, m = this.data.length; i < m; i++)
+	  {if (this.data[i]) {this.data[i].toNativeMML(tag)}}
+	parent.appendChild(tag);
+      }
+    });
+
+    if (HUB.Browser.isFirefox) {
+      if (!HUB.Browser.versionAtLeast("13.0")) {
+        MML.mtable.Augment({
+          toNativeMML: function (parent) {
+            //
+            //  Firefox < 13 doesn't handle width, so put it in styles instead
+            //
+            if (this.width) {
+              var styles = (this.style||"").replace(/;\s*$/,"").split(";");
+              if (styles[0] === "") {styles.shift()}
+              styles.push("width:"+this.width);
+              this.style = styles.join(";");
+            }
+            this.SUPER(arguments).toNativeMML.call(this,parent);
+          }
+        });
+      }
+      if (!HUB.Browser.versionAtLeast("9.0")) {
+        MML.mlabeledtr.Augment({
+	  toNativeMML: function (parent) {
+            //
+            //  FF doesn't handle mlabeledtr, so remove the label
+            //
+            var tag = this.NativeMMLelement("mtr");
+            this.NativeMMLattributes(tag);
+            for (var i = 1, m = this.data.length; i < m; i++) {
+              if (this.data[i]) {this.data[i].toNativeMML(tag)}
+              else {tag.appendChild(this.NativeMMLelement("mrow"))}
+            }
+            parent.appendChild(tag);
+          }
+        });
+      }
+
+      var fontDir = MathJax.Ajax.fileURL(MathJax.OutputJax.fontDir+"/HTML-CSS/TeX/otf");
+
+      /*
+       *  Add fix for mathvariant issues in FF
+       */
+      nMML.Augment({
+	config: {
+	  styles: {
+	    '[mathvariant="double-struck"]':          {"font-family":"MathJax_AMS, MathJax_AMS-WEB"},
+	    '[mathvariant="script"]':                 {"font-family":"MathJax_Script, MathJax_Script-WEB"},
+	    '[mathvariant="fraktur"]':                {"font-family":"MathJax_Fraktur, MathJax_Fraktur-WEB"},
+	    '[mathvariant="bold-script"]':            {"font-family":"MathJax_Script, MathJax_Caligraphic-WEB", "font-weight":"bold"},
+	    '[mathvariant="bold-fraktur"]':           {"font-family":"MathJax_Fraktur, MathJax_Fraktur-WEB", "font-weight":"bold"},
+	    '[mathvariant="monospace"]':              {"font-family":"monospace"},
+	    '[mathvariant="sans-serif"]':             {"font-family":"sans-serif"},
+	    '[mathvariant="bold-sans-serif"]':        {"font-family":"sans-serif", "font-weight":"bold"},
+	    '[mathvariant="sans-serif-italic"]':      {"font-family":"sans-serif", "font-style":"italic"},
+	    '[mathvariant="sans-serif-bold-italic"]': {"font-family":"sans-serif", "font-style":"italic", "font-weight":"bold"},
+	    '[class="MJX-tex-oldstyle"]':             {"font-family":"MathJax_Caligraphic, MathJax_Caligraphic-WEB"},
+	    '[class="MJX-tex-oldstyle-bold"]':        {"font-family":"MathJax_Caligraphic, MathJax_Caligraphic-WEB", "font-weight":"bold"},
+	    '[class="MJX-tex-caligraphic"]':          {"font-family":"MathJax_Caligraphic, MathJax_Caligraphic-WEB"},
+	    '[class="MJX-tex-caligraphic-bold"]':     {"font-family":"MathJax_Caligraphic, MathJax_Caligraphic-WEB", "font-weight":"bold"},
+
+	    '@font-face /*1*/': {
+	      "font-family": "MathJax_AMS-WEB",
+	      "src": "url('"+fontDir+"/MathJax_AMS-Regular.otf')"
+	    },
+	    '@font-face /*2*/': {
+	      "font-family": "MathJax_Script-WEB",
+	      "src": "url('"+fontDir+"/MathJax_Script-Regular.otf')"
+	    },
+	    '@font-face /*3*/': {
+	      "font-family": "MathJax_Fraktur-WEB",
+	      "src": "url('"+fontDir+"/MathJax_Fraktur-Regular.otf')"
+	    },
+	    '@font-face /*4*/': {
+	      "font-family": "MathJax_Caligraphic-WEB",
+	      "src": "url('"+fontDir+"/MathJax_Caligraphic-Regular.otf')"
+	    },
+	    '@font-face /*5*/': {
+	      "font-family": "MathJax_Fraktur-WEB", "font-weight":"bold",
+	      "src": "url('"+fontDir+"/MathJax_Fraktur-Bold.otf')"
+	    },
+	    '@font-face /*6*/': {
+	      "font-family": "MathJax_Caligraphic-WEB", "font-weight":"bold",
+	      "src": "url('"+fontDir+"/MathJax_Caligraphic-Bold.otf')"
+	    }
+	  }
+	}
+      });
+    }
+    
+    MML.math.Augment({
+      //
+      //  Some browsers don't seem to add the xmlns attribute, so do it by hand.
+      //
+      toNativeMML: function (parent) {
+        var tag = this.NativeMMLelement(this.type), math = tag;
+        tag.setAttribute("xmlns",nMML.MMLnamespace);
+        this.NativeMMLattributes(tag);
+        if (nMML.widthBug) {tag = tag.appendChild(this.NativeMMLelement("mrow"))}
+        for (var i = 0, m = this.data.length; i < m; i++) {
+          if (this.data[i]) {this.data[i].toNativeMML(tag)}
+            else {tag.appendChild(this.NativeMMLelement("mrow"))}
+        }
+        parent.appendChild(math);
+        //
+        //  Firefox can't seem to get the width of <math> elements right, so
+        //  use an <mrow> to get the actual width and set the style on the 
+        //  parent element to match.  Even if we set the <math> width properly,
+        //  it doesn't seem to propagate up to the <span> correctly.
+        //
+        if (nMML.widthBug) {parent.style.width = math.firstChild.scrollWidth+"px"}
+      }
+    });
+
+    MML.TeXAtom.Augment({
+      //
+      //  Convert TeXatom to an mrow
+      //
+      toNativeMML: function (parent) {
+	// FIXME:  Handle spacing using mpadded?
+	var tag = this.NativeMMLelement("mrow");
+	this.NativeMMLattributes(tag);
+	this.data[0].toNativeMML(tag);
+	parent.appendChild(tag);
+      }
+    });
+
+    MML.chars.Augment({
+      //
+      //  Add a text node
+      //
+      toNativeMML: function (parent) {
+	parent.appendChild(document.createTextNode(this.toString()));
+      }
+    });
+
+    MML.entity.Augment({
+      //
+      //  Add a text node
+      //
+      toNativeMML: function (parent) {
+	parent.appendChild(document.createTextNode(this.toString()));
+      }
+    });
+    
+    MML.xml.Augment({
+      //
+      //  Insert the XML verbatim
+      //
+      toNativeMML: function (parent) {
+        for (var i = 0, m = this.data.length; i < m; i++)
+          {parent.appendChild(this.data[i].cloneNode(true))}
+      }
+    });
+
+    HUB.Register.StartupHook("TeX mathchoice Ready",function () {
+      MML.TeXmathchoice.Augment({
+	//
+	//  Get the MathML for the selected choice
+	//
+	toNativeMML: function (parent) {this.Core().toNativeMML(parent)}
+      });
+    });
+
+    //
+    //  Loading isn't complete until the element jax is modified,
+    //  but can't call loadComplete within the callback for "mml Jax Ready"
+    //  (it would call NativeMML's Require routine, asking for the mml jax again)
+    //  so wait until after the mml jax has finished processing.
+    //
+    setTimeout(MathJax.Callback(["loadComplete",nMML,"jax.js"]),0);
+  });
+  
+
+  //
+  //  Determine browser characteristics
+  //
+  HUB.Browser.Select({
+    MSIE: function (browser) {
+      var mode = (document.documentMode || 0);
+      nMML.msieIE8HeightBug = (mode === 8);
+    },
+    Opera: function (browser) {
+      nMML.operaPositionBug = true;
+    },
+    Firefox: function (browser) {
+      nMML.forceReflow = true;
+      nMML.widthBug = true;
+    }
+  });
+  
+
+  HUB.Register.StartupHook("End Cookie",function () {
+    if (HUB.config.menuSettings.zoom !== "None")
+      {AJAX.Require("[MathJax]/extensions/MathZoom.js")}
+  });
+
+})(MathJax.OutputJax.NativeMML, MathJax.Hub, MathJax.Ajax, MathJax.HTML);
diff --git a/data/xslt/yelp-common.xsl.in b/data/xslt/yelp-common.xsl.in
index d81270c..73b75ab 100644
--- a/data/xslt/yelp-common.xsl.in
+++ b/data/xslt/yelp-common.xsl.in
@@ -2,8 +2,9 @@
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 xmlns:yelp="http://www.gnome.org/yelp/ns";
                 xmlns:set="http://exslt.org/sets";
+                xmlns:mml="http://www.w3.org/1998/Math/MathML";
                 xmlns="http://www.w3.org/1999/xhtml";
-                exclude-result-prefixes="set"
+                exclude-result-prefixes="yelp set mml"
                 extension-element-prefixes="yelp"
                 version="1.0">
 
@@ -14,6 +15,17 @@
 <xsl:param name="html.syntax.highlight" select="true()"/>
 <xsl:param name="html.js.root" select="'file://@XSL_JSDIR@/'"/>
 
+<xsl:template name="html.js.mathjax">
+  <xsl:param name="node" select="."/>
+  <xsl:if test="$node//mml:*[1]">
+    <script type="text/javascript">
+      <xsl:attribute name="src">
+        <xsl:text>file://@DATADIR@/mathjax/MathJax.js?config=yelp</xsl:text>
+      </xsl:attribute>
+    </script>
+  </xsl:if>
+</xsl:template>
+
 <!-- == html.output == -->
 <xsl:template name="html.output">
   <xsl:param name="node" select="."/>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]