diff --git a/src/main/java/org/olat/_spring/extensionContext.xml b/src/main/java/org/olat/_spring/extensionContext.xml
index 0ed40f525c1693004f961486c0a1ac327831634b..b50f8cc96a9d63dae1a9a4c3a2f93e4ebb9fdacc 100644
--- a/src/main/java/org/olat/_spring/extensionContext.xml
+++ b/src/main/java/org/olat/_spring/extensionContext.xml
@@ -364,6 +364,26 @@
 		</property>
 	</bean>
 	
+	<!--  the folder menu-entry (reset thumbnails...) -->
+	<bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints" >
+		<property name="order" value="7212" />
+		<property name="navigationKey" value="briefcase" />
+		<property name="actionController">	
+			<bean class="org.olat.core.gui.control.creator.AutoCreator" scope="prototype">
+				<property name="className" value="org.olat.admin.bc.BriefcaseAdminController"/>
+			</bean>
+		</property>
+		<property name="translationPackage" value="org.olat.admin" />
+		<property name="i18nActionKey" value="menu.bc"/>
+		<property name="i18nDescriptionKey" value="menu.bc.alt"/>
+		<property name="parentTreeNodeIdentifier" value="sysconfigParent" /> 
+		<property name="extensionPoints">
+			<list>	
+				<value>org.olat.admin.SystemAdminMainController</value>		
+			</list>
+		</property>
+	</bean>
+	
 	<!-- the REST API menu-entry -->
 	<bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints">
 		<property name="order" value="7206" />
diff --git a/src/main/java/org/olat/admin/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/admin/_i18n/LocalStrings_de.properties
index 1292a00bad7975d06677a5f62ab890c6616991d1..2b20323652112197331a395a9d5d271bf678559d 100644
--- a/src/main/java/org/olat/admin/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/admin/_i18n/LocalStrings_de.properties
@@ -18,6 +18,8 @@ menu.anonymousgroup=Anonyme Benutzer / G\u00E4ste
 menu.anonymousgroup.alt=Anonyme Benutzer (G\u00E4ste) verwalten
 menu.authorgroup=Autoren
 menu.authorgroup.alt=Autoren verwalten
+menu.bc=Ordner
+menu.bc.alt=Ordner und Thumbnails
 menu.coauthors=Co-Autoren
 menu.coauthors.alt=Co-Autoren verwalten die nicht in der Autorengruppe sind
 menu.caches=Caches
diff --git a/src/main/java/org/olat/admin/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/admin/_i18n/LocalStrings_en.properties
index 51a67ec60ddadcffa38e3aaeba5ebb4fb39fc2d0..0d02a69edd0a4677994a182f5b637e87c82e00e4 100644
--- a/src/main/java/org/olat/admin/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/admin/_i18n/LocalStrings_en.properties
@@ -18,6 +18,8 @@ menu.anonymousgroup=Anonymous users/guests
 menu.anonymousgroup.alt=Manage anonymous user group (guests)
 menu.authorgroup=Authors
 menu.authorgroup.alt=Manage author group
+menu.bc=Ordner
+menu.bc.alt=Ordner und Thumbnails
 menu.caches=Caches
 menu.caches.alt=Caches
 menu.cluster=Clustering
diff --git a/src/main/java/org/olat/admin/bc/BriefcaseAdminController.java b/src/main/java/org/olat/admin/bc/BriefcaseAdminController.java
new file mode 100644
index 0000000000000000000000000000000000000000..30741f6f3461d9aac71df85ee9fab7bd31b779a9
--- /dev/null
+++ b/src/main/java/org/olat/admin/bc/BriefcaseAdminController.java
@@ -0,0 +1,99 @@
+package org.olat.admin.bc;
+
+import java.io.File;
+
+import org.olat.core.CoreSpringFactory;
+import org.olat.core.commons.modules.bc.FolderConfig;
+import org.olat.core.commons.modules.bc.meta.MetaInfoFileImpl;
+import org.olat.core.commons.taskExecutor.TaskExecutorManager;
+import org.olat.core.gui.UserRequest;
+import org.olat.core.gui.components.form.flexible.FormItem;
+import org.olat.core.gui.components.form.flexible.FormItemContainer;
+import org.olat.core.gui.components.form.flexible.elements.FormLink;
+import org.olat.core.gui.components.form.flexible.impl.FormBasicController;
+import org.olat.core.gui.components.form.flexible.impl.FormEvent;
+import org.olat.core.gui.components.link.Link;
+import org.olat.core.gui.control.Controller;
+import org.olat.core.gui.control.WindowControl;
+
+/**
+ * 
+ * Initial date: 20.08.2013<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class BriefcaseAdminController extends FormBasicController {
+	
+	private FormLink thumbnailReset;
+	private final TaskExecutorManager taskExecutor;
+
+	public BriefcaseAdminController(UserRequest ureq, WindowControl wControl) {
+		super(ureq, wControl, "bc_admin");
+		
+		taskExecutor = CoreSpringFactory.getImpl(TaskExecutorManager.class);
+		
+		initForm(ureq);
+	}
+
+	@Override
+	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
+		thumbnailReset = uifactory.addFormLink("thumbnails.reset", formLayout, Link.BUTTON);
+	}
+	
+	@Override
+	protected void doDispose() {
+		//
+	}
+
+	@Override
+	protected void formOK(UserRequest ureq) {
+		//
+	}
+
+	@Override
+	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
+		if(thumbnailReset == source) {
+			flc.contextPut("recalculating", Boolean.TRUE);
+			ResetThumbnails task = new ResetThumbnails();
+			taskExecutor.execute(task);
+		}
+		super.formInnerEvent(ureq, source, event);
+	}
+	
+	private class ResetThumbnails implements Runnable {
+	
+		@Override
+		public void run() {
+			long start = System.currentTimeMillis();
+			logInfo("Start reset of thumbnails", null);
+			
+			String metaRoot = FolderConfig.getCanonicalMetaRoot();
+			File metaRootFile = new File(metaRoot);
+			resetThumbnails(metaRootFile);
+			flc.contextPut("recalculating", Boolean.FALSE);
+			
+			logInfo("Finished reset of thumbnails in " + (System.currentTimeMillis() - start) + " (ms)", null);
+		}
+			
+		private void resetThumbnails(File directory) {
+			for(File file:directory.listFiles()) {
+				if(file.isHidden()) {
+					//do nothing
+				} else if(file.isDirectory()) {
+					resetThumbnails(file);
+				} else if(file.getName().endsWith(".xml")) {
+					resetThumbnailsInMeta(file);
+				}
+			}
+		}
+		
+		private void resetThumbnailsInMeta(File metafile) {
+			try {
+				MetaInfoFileImpl metaInfo = new MetaInfoFileImpl(metafile);
+				metaInfo.clearThumbnails();
+			} catch (Exception e) {
+				logError("", e);
+			}
+		}
+	}
+}
diff --git a/src/main/java/org/olat/admin/bc/_content/bc_admin.html b/src/main/java/org/olat/admin/bc/_content/bc_admin.html
new file mode 100644
index 0000000000000000000000000000000000000000..c41ad4d15a883ed169219b3be15d52ddc96b7673
--- /dev/null
+++ b/src/main/java/org/olat/admin/bc/_content/bc_admin.html
@@ -0,0 +1,8 @@
+<fieldset><legend>$r.translate("briefcase.title")</legend>
+	<p>$r.translate("thumbnails.reset.intro.1")</p>
+	#if($recalculating)
+		<div class="o_eff_statement_recalculating">$r.render("thumbnails.reset")</div>
+	#else
+		$r.render("thumbnails.reset")
+	#end
+</fieldset>
\ No newline at end of file
diff --git a/src/main/java/org/olat/admin/bc/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/admin/bc/_i18n/LocalStrings_de.properties
new file mode 100644
index 0000000000000000000000000000000000000000..b4ad71ca9d03399ad2acb2004fc3b4ac45513cb4
--- /dev/null
+++ b/src/main/java/org/olat/admin/bc/_i18n/LocalStrings_de.properties
@@ -0,0 +1,4 @@
+#Mon Mar 02 09:54:03 CET 2009
+briefcase.title=Ordner Einstellungen
+thumbnails.reset=Thumbnails löschen
+thumbnails.reset.intro.1=Mit diesem Knopf werden alle Thumbnails gelöscht.
diff --git a/src/main/java/org/olat/admin/bc/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/admin/bc/_i18n/LocalStrings_en.properties
new file mode 100644
index 0000000000000000000000000000000000000000..bd409cf2c4bb31aae484fa4797f2e5995826c951
--- /dev/null
+++ b/src/main/java/org/olat/admin/bc/_i18n/LocalStrings_en.properties
@@ -0,0 +1,4 @@
+#Tue Dec 18 22:46:41 CET 2012
+briefcase.title=Folder settings
+thumbnails.reset=Reset thumbnails
+thumbnails.reset.intro.1=This button will reset all thumbnails
diff --git a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFileImpl.java b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFileImpl.java
index 5f72aba51b4b557bac7c72df3d2272ca31b15a76..c378da8cbd77b261430ae2c4eeedce4134c2b4ff 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFileImpl.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFileImpl.java
@@ -123,6 +123,7 @@ public class MetaInfoFileImpl extends DefaultHandler implements MetaInfo {
 	public MetaInfoFileImpl(File metaFile) { 
 		super();
 		this.metaFile = metaFile;
+		parseSAX(metaFile);
 	}
 	
 	/**
@@ -854,6 +855,13 @@ public class MetaInfoFileImpl extends DefaultHandler implements MetaInfo {
 	
 	@Override
 	public void clearThumbnails() {
+		cannotGenerateThumbnail = false;
+		for(Thumbnail thumbnail:thumbnails) {
+			File thumbnailFile = thumbnail.getThumbnailFile();
+			if(thumbnailFile != null && thumbnailFile.exists()) {
+				thumbnailFile.delete();
+			}
+		}
 		thumbnails.clear();
 		write();
 	}
@@ -924,6 +932,9 @@ public class MetaInfoFileImpl extends DefaultHandler implements MetaInfo {
 		if(extension.equalsIgnoreCase("png") || extension.equalsIgnoreCase("gif")) {
 			return extension;
 		}
+		if(extension.equalsIgnoreCase("pdf")) {
+			return "png";
+		}
 		return "jpg";
 	}
 
diff --git a/src/main/java/org/olat/course/condition/interpreter/ConditionInterpreter.java b/src/main/java/org/olat/course/condition/interpreter/ConditionInterpreter.java
index 87523b6bd50dac24c28f6f9690b85250d1464491..914ecca680f8aa72f048f643578e3fadd13529c2 100644
--- a/src/main/java/org/olat/course/condition/interpreter/ConditionInterpreter.java
+++ b/src/main/java/org/olat/course/condition/interpreter/ConditionInterpreter.java
@@ -259,6 +259,11 @@ public class ConditionInterpreter {
 			msg = apex.getWhatsWrong();
 			params = new String[] { apex.getFunctionName(), apex.getWrongArgs() };
 			solutionMsg = apex.getSolutionProposal();
+		} catch (ClassCastException ccex) {
+			// the function, units etc, are responsible to provide reasonable error
+			// messages (translation keys)
+			msg = "error.undefined.variable.at";
+			params = new String[]{};
 		} catch (Exception ex) {
 			// this must not happen!
 			throw new OLATRuntimeException(ex.getMessage(), ex);
diff --git a/src/main/java/org/olat/course/condition/interpreter/score/GetPassedWithCourseIdFunction.java b/src/main/java/org/olat/course/condition/interpreter/score/GetPassedWithCourseIdFunction.java
index c428f2454820da4f6aba8862911f4ef35229c3ac..cd8ca44273aa0ed117835a5ba378244401627cc4 100644
--- a/src/main/java/org/olat/course/condition/interpreter/score/GetPassedWithCourseIdFunction.java
+++ b/src/main/java/org/olat/course/condition/interpreter/score/GetPassedWithCourseIdFunction.java
@@ -63,22 +63,26 @@ public class GetPassedWithCourseIdFunction extends AbstractFunction {
 		if (inStack.length > 2) {
 			return handleException(new ArgumentParseException(ArgumentParseException.NEEDS_FEWER_ARGUMENTS, name, "", "error.fewerargs",
 					"solution.provideone.nodereference"));
-		} else if (inStack.length < 2) { return handleException( new ArgumentParseException(ArgumentParseException.NEEDS_MORE_ARGUMENTS, name, "",
+		} else if (inStack.length < 1) { return handleException( new ArgumentParseException(ArgumentParseException.NEEDS_MORE_ARGUMENTS, name, "",
 				"error.moreargs", "solution.provideone.nodereference")); }
 		/*
 		 * argument type check
 		 */
 		Long courseRepoEntryKey;
 		try{
-			courseRepoEntryKey = Long.decode((String) inStack[0]) ;
+			Object arg = inStack[0];
+			if(arg instanceof Number) {
+				courseRepoEntryKey = new Long(((Number)arg).longValue());
+			} else if(arg instanceof String) {
+				courseRepoEntryKey = Long.decode((String)arg) ;
+			} else {
+				courseRepoEntryKey = null;
+			}
 		}catch(NumberFormatException nfe) {
 			return handleException( new ArgumentParseException(ArgumentParseException.WRONG_ARGUMENT_FORMAT, name, "",
 					"error.argtype.coursnodeidexpeted", "solution.example.node.infunction"));
 		}
-		
-		if (!(inStack[1] instanceof String)) return handleException( new ArgumentParseException(ArgumentParseException.WRONG_ARGUMENT_FORMAT, name, "",
-				"error.argtype.coursnodeidexpeted", "solution.example.node.infunction"));
-		String childId = (String) inStack[1];
+
 		/*
 		 * no integrity check can be done - other course might not exist anymore
 		 */
diff --git a/src/main/java/org/olat/group/manager/BusinessGroupMailing.java b/src/main/java/org/olat/group/manager/BusinessGroupMailing.java
index 111d77dabe32888c0d9e143d8d5556b5eb8c6443..1ab7a07827be232c4ce2465ebbf61419533887d1 100644
--- a/src/main/java/org/olat/group/manager/BusinessGroupMailing.java
+++ b/src/main/java/org/olat/group/manager/BusinessGroupMailing.java
@@ -22,13 +22,17 @@ package org.olat.group.manager;
 import java.util.Collections;
 import java.util.List;
 
+import org.olat.basesecurity.BaseSecurity;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.id.Identity;
+import org.olat.core.id.Roles;
 import org.olat.core.util.mail.MailContext;
 import org.olat.core.util.mail.MailContextImpl;
 import org.olat.core.util.mail.MailPackage;
 import org.olat.core.util.mail.MailTemplate;
 import org.olat.core.util.mail.MailerResult;
 import org.olat.core.util.mail.MailerWithTemplate;
+import org.olat.group.BusinessGroupModule;
 import org.olat.group.BusinessGroupShort;
 import org.olat.group.model.BusinessGroupMembershipChange;
 import org.olat.group.model.MembershipModification;
@@ -103,6 +107,15 @@ public class BusinessGroupMailing {
 		if(mailing != null && !mailing.isSendEmail()) {
 			return;
 		}
+		
+		if(mailing == null) {
+			BaseSecurity securityManager = CoreSpringFactory.getImpl(BaseSecurity.class);
+			BusinessGroupModule groupModule = CoreSpringFactory.getImpl(BusinessGroupModule.class);
+			Roles ureqRoles = securityManager.getRoles(ureqIdentity);
+			if(!groupModule.isMandatoryEnrolmentEmail(ureqRoles)) {
+				return;
+			}
+		}
 
 		MailTemplate template = mailing == null ? null : mailing.getTemplate();
 		if(mailing == null || mailing.getTemplate() == null) {
diff --git a/src/main/java/org/olat/repository/RepositoryMailing.java b/src/main/java/org/olat/repository/RepositoryMailing.java
index cf96ac8842fe3306d93c4de96e2f2c6c97671c71..043ad49e4afde624d6a54a3f716688162fb979eb 100644
--- a/src/main/java/org/olat/repository/RepositoryMailing.java
+++ b/src/main/java/org/olat/repository/RepositoryMailing.java
@@ -23,8 +23,11 @@ import java.util.Collections;
 import java.util.Locale;
 
 import org.apache.velocity.VelocityContext;
+import org.olat.basesecurity.BaseSecurity;
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.translator.Translator;
 import org.olat.core.id.Identity;
+import org.olat.core.id.Roles;
 import org.olat.core.id.User;
 import org.olat.core.id.UserConstants;
 import org.olat.core.util.StringHelper;
@@ -115,6 +118,15 @@ public class RepositoryMailing {
 		if(mailing != null && !mailing.isSendEmail()) {
 			return;
 		}
+		
+		if(mailing == null) {
+			BaseSecurity securityManager = CoreSpringFactory.getImpl(BaseSecurity.class);
+			RepositoryModule repositoryModule = CoreSpringFactory.getImpl(RepositoryModule.class);
+			Roles ureqRoles = securityManager.getRoles(ureqIdentity);
+			if(!repositoryModule.isMandatoryEnrolmentEmail(ureqRoles)) {
+				return;
+			}
+		}
 
 		MailTemplate template = mailing == null ? null : mailing.getTemplate();
 		if(mailing == null || mailing.getTemplate() == null) {
diff --git a/src/main/webapp/static/js/jsMath/easy/load.js b/src/main/webapp/static/js/jsMath/easy/load.js
index f334c2253bd17dc579864d6a97979b8caabff562..d6ac838d23f254af896c0c6246f0f19a5f8e94fe 100644
--- a/src/main/webapp/static/js/jsMath/easy/load.js
+++ b/src/main/webapp/static/js/jsMath/easy/load.js
@@ -113,6 +113,21 @@ jsMath.Easy = {
   //
   loadFonts: [],
   
+  //
+  //  List of macros to define.  These are of the form
+  //      name: value
+  //  where 'value' is the replacement text for the macro \name.
+  //  The 'value' can also be [value,n] where 'value' is the replacement
+  //  text and 'n' is the number of parameters for the macro.
+  //  Note that backslashes must be doubled in the replacement string.
+  //  E.g.,
+  //      {
+  //        RR: '{\\bf R}',
+  //        bold: ['{\\bf #1}', 1]
+  //      }
+  //
+  macros: {},
+  
   //
   //  Allow jsMath to enter global mode?
   //  (Uses frames, so may not always work with complex web sites)
@@ -159,5 +174,5 @@ if (jsMath.Easy.root == "") {
 }
 jsMath.Easy.root = jsMath.Easy.root.replace(/\/$/,""); // trim trailing "/" if any
 
-document.write('<SCRIPT SRC="'+jsMath.Easy.root+'/jsMath-easy-load.js"><'+'/SCRIPT>');
+document.write('<script src="'+jsMath.Easy.root+'/jsMath-easy-load.js"><'+'/script>');
 
diff --git a/src/main/webapp/static/js/jsMath/extensions/AMSmath.js b/src/main/webapp/static/js/jsMath/extensions/AMSmath.js
index cd62a44d7ab293f27fe5aedc010818c1452943e0..19cac042612f6ef48395247435f2b00fb06f81db 100644
--- a/src/main/webapp/static/js/jsMath/extensions/AMSmath.js
+++ b/src/main/webapp/static/js/jsMath/extensions/AMSmath.js
@@ -125,7 +125,7 @@ jsMath.Package(jsMath.Parser,{
   },
   
   HandleOperatorName: function (name) {
-    var limits = "";
+    var limits = "\\nolimits";
     var op = this.trimSpaces(this.GetArgument(this.cmd+name)); if (this.error) return;
     if (op == "*") {
       limits = "\\limits";
diff --git a/src/main/webapp/static/js/jsMath/extensions/bbox.js b/src/main/webapp/static/js/jsMath/extensions/bbox.js
index ac42cb1773326277ce711e3ed2d790a20370106a..e2b3670252ff9e8e23cdde7cbb2cb5ad52a2797d 100644
--- a/src/main/webapp/static/js/jsMath/extensions/bbox.js
+++ b/src/main/webapp/static/js/jsMath/extensions/bbox.js
@@ -63,38 +63,26 @@ jsMath.Add(jsMath.mList.prototype.Atomize,{
    *  Creates the box HTML
    */
   bbox: function (style,size,mitem,prev,mlist) {
-    var box = jsMath.Box.Set(mitem.nuc2,style,size,1).Remeasured();
-    delete mitem.nuc2;
-    /*
-     *  If the box has super- or subscripts, move them
-     *  to the contained item if is in a big operator
-     *  (does anything else need this?)
-     */
-    if (mitem.sup || mitem.sub) {
-      if (mitem.nuc.type == 'mlist' && mitem.nuc.mlist.Length() == 1) {
-        var atom = mitem.nuc.mlist.Last();
-        if (atom.atom && atom.type == 'op' && !atom.sup && !atom.sub) {
-          if (mitem.sup) {atom.sup = mitem.sup; delete mitem.sup}
-          if (mitem.sub) {atom.sub = mitem.sub; delete mitem.sub}
-        }
-      }
-    }
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
+    var box; var w; var h; var d;
+    var nuc = mitem.nuc = jsMath.Box.Set(mitem.nuc,style,size).Remeasured();
+    if (box == null) {w = nuc.w; h = nuc.h; d = nuc.d} // values before super/subs-cript
     var nuc = mitem.nuc; nuc.Styled(); var pad = mitem.pad;
-    if (pad) {box.w += 2*pad; box.h += pad; box.d += pad; nuc.w += pad}
+    if (pad) {w += 2*pad; h += pad; d += pad; nuc.w += pad}
     if (jsMath.Browser.msieCenterBugFix) 
       {nuc.html = '<span style="position:relative">'+nuc.html+'</span>'}
     nuc.html = 
-      jsMath.HTML.BBox(box.w,box.h,box.d,mitem.color,mitem.style) +
-      jsMath.HTML.Spacer(pad-box.w) +
+      jsMath.HTML.BBox(w,h,d,mitem.color,mitem.style) +
+      jsMath.HTML.Spacer(pad-w) +
       nuc.html;
-    if (pad && nuc.w < box.w) {
-      nuc.html += jsMath.HTML.Spacer(box.w-nuc.w);
-      nuc.w = box.w;
+    nuc.Remeasured();
+    if (pad && nuc.w < w) {
+      nuc.html += jsMath.HTML.Spacer(w-nuc.w);
+      nuc.w = w;
     }
-    nuc.h  = Math.max(nuc.h,box.h);  nuc.d  = Math.max(nuc.d,box.d);
-    nuc.bh = Math.max(nuc.bh,box.h); nuc.bd = Math.max(nuc.bd,box.d);
+    nuc.h  = Math.max(nuc.h,h);  nuc.d  = Math.max(nuc.d,d);
+    nuc.bh = Math.max(nuc.bh,nuc.h); nuc.bd = Math.max(nuc.bd,nuc.d);
     mitem.type = 'ord';
+    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
   }
 });
 
@@ -109,7 +97,6 @@ jsMath.Package(jsMath.Parser,{
     var extra = this.GetBrackets(this.cmd+name); if (this.error) return;
     var arg = this.GetArgument(this.cmd+name); if (this.error) return;
     var nuc = this.Process(arg); if (this.error) return;
-    var nuc2 = this.Process(arg); // need a second copy since Box.Set changes the list
     var color; var pad = 0; var style = '';
     if (extra != '') {
       var parts = extra.split(/,/);
@@ -120,9 +107,7 @@ jsMath.Package(jsMath.Parser,{
         else {color = parts[i]}
       }
     }
-    this.mlist.Add(new jsMath.mItem('bbox',{
-      nuc: nuc, nuc2: nuc2, atom: 1, pad: pad, color: color, style: style
-    }));
+    var atom = {nuc: nuc, atom: 1, pad: pad, color: color, style: style};
+    this.mlist.Add(new jsMath.mItem('bbox',atom));
   }
-
 });
diff --git a/src/main/webapp/static/js/jsMath/extensions/eqn-number.js b/src/main/webapp/static/js/jsMath/extensions/eqn-number.js
index 797063cb7ffb4fc52c695c54141d074b4e2bd9b0..be98db73af19c28acab359e7854fa20abd36a890 100644
--- a/src/main/webapp/static/js/jsMath/extensions/eqn-number.js
+++ b/src/main/webapp/static/js/jsMath/extensions/eqn-number.js
@@ -154,6 +154,25 @@ jsMath.EqnNumber = {
     jsMath.Translate.ConvertMath = this.ConvertMath;
     jsMath.Translate.ProcessComplete_old = jsMath.Translate.ProcessComplete;
     jsMath.Translate.ProcessComplete = this.ProcessComplete;
+  },
+  
+  environments: {
+    'equation*': 'Star',
+    'eqnarray*': 'Star',
+    'align*':    'Star',
+    'multline*': 'Star',
+    'gather*':   'Star',
+    align:       ['StarExtension','AMSmath'],
+    multline:    ['StarExtension','AMSmath'],
+    gather:      ['StarExtension','AMSmath']
+  },
+  
+  ResetStarEnvironments: function () {
+    var Nenv = jsMath.EqnNumber.environments;
+    var Penv = jsMath.Parser.prototype.environments;
+    for (var name in Nenv) {
+      if (name.match(/\*$/)) {Penv[name] = Nenv[name]}
+    }
   }
 
 };
@@ -165,11 +184,14 @@ if (jsMath.EqnNumber_old) {
 
 jsMath.Package(jsMath.Parser,{
   macros: {
-    label:   'Label',
-    nolabel: 'NoLabel',
-    ref:     'Ref'
+    label:    'Label',
+    nolabel:  'NoLabel',
+    nonumber: 'NoLabel',
+    ref:      'Ref'
   },
   
+  environments: jsMath.EqnNumber.environments,
+  
   Label: function (name) {
     var label = this.GetArgument(this.cmd+name); if (this.error) return;
     var EqnNumber = jsMath.EqnNumber;
@@ -192,8 +214,21 @@ jsMath.Package(jsMath.Parser,{
   
   Ref: function (name) {
     this.Error(this.cmd+name+' must be used by itself');
-  }
+  },
+  
+  Star: function (name) {
+    this.NoLabel();
+    var cmd = this.environments[name.substr(0,name.length-1)];
+    if (typeof(cmd) === 'string') {cmd = [cmd]}
+    this[cmd[0]](name,cmd.slice(1));
+  },
   
+  StarExtension: function (name,data) {
+    try {this.Extension(name,data)} catch (e) {}
+    jsMath.Synchronize(jsMath.EqnNumber.ResetStarEnvironments);
+    throw "restart";
+  }
+
 });
 
 jsMath.EqnNumber.Init();
diff --git a/src/main/webapp/static/js/jsMath/extensions/leaders.js b/src/main/webapp/static/js/jsMath/extensions/leaders.js
index be97e7e497e2b3b1358f00308cc7560e868e2144..9496790a5480a5c7931ea44f82b4c669d986b4dc 100644
--- a/src/main/webapp/static/js/jsMath/extensions/leaders.js
+++ b/src/main/webapp/static/js/jsMath/extensions/leaders.js
@@ -85,7 +85,7 @@ jsMath.Package(jsMath.Parser,{
   macros: {
     overbrace:           ['HandleLeaders','downbrace',1],
     underbrace:          ['HandleLeaders','upbrace',1,1,-.05],
-    overrightarrow:      ['HandleLeaders','rightarrow',],
+    overrightarrow:      ['HandleLeaders','rightarrow'],
     underrightarrow:     ['HandleLeaders','rightarrow',null,1,-.2],
     overleftarrow:       ['HandleLeaders','leftarrow'],
     underleftarrow:      ['HandleLeaders','leftarrow',null,1,-.2],
diff --git a/src/main/webapp/static/js/jsMath/jsMath-easy-load.js b/src/main/webapp/static/js/jsMath/jsMath-easy-load.js
index e9b9401523929856c09666bb47cddc0cd1db2cf1..b7574174005d23b8596f6ca426984864fd2d1930 100644
--- a/src/main/webapp/static/js/jsMath/jsMath-easy-load.js
+++ b/src/main/webapp/static/js/jsMath/jsMath-easy-load.js
@@ -60,10 +60,18 @@ if (!jsMath.Easy.allowGlobal) {
 if (jsMath.Easy.noImageFonts) {
   jsMath.noImgFonts = 1;
   if (!jsMath.Font) {jsMath.Font = {}}
-  jsMath.Font.extra_message =
-    'Extra TeX fonts not found: <b><span id="jsMath_ExtraFonts"></span></b><br/>'
-      + 'Using unicode fonts instead.  This may be slow and might not print well.<br/>\n'
-      + 'Use the jsMath control panel to get additional information.';
+  if (!jsMath.Font.message) {
+    jsMath.Font.message =
+      '<b>No jsMath TeX fonts found</b> -- using unicode fonts instead.<br/>\n'
+        + 'This may be slow and might not print well.<br/>\n'
+        + 'Use the jsMath control panel to get additional information.';
+  }
+  if (!jsMath.Font.extra_message) {
+    jsMath.Font.extra_message =
+      'Extra TeX fonts not found: <b><span id="jsMath_ExtraFonts"></span></b><br/>'
+        + 'Using unicode fonts instead.  This may be slow and might not print well.<br/>\n'
+        + 'Use the jsMath control panel to get additional information.';
+  }
 }
 
 if (jsMath.Easy.processSingleDollars ||
@@ -93,6 +101,7 @@ if (jsMath.Easy.autoload) {
   jsMath.Autoload.findCustomSettings = jsMath.Easy.findCustomSettings;
   jsMath.Autoload.loadFiles = jsMath.Easy.loadFiles;
   jsMath.Autoload.loadFonts = jsMath.Easy.loadFonts;
+  jsMath.Autoload.macros = jsMath.Easy.macros;
   jsMath.Autoload.delayCheck = 1;
   jsMath.Easy.autoloadCheck = 1;
   document.write('<script src="'+jsMath.Autoload.root+'plugins/autoload.js"></script>');
@@ -110,12 +119,26 @@ if (jsMath.Easy.autoload) {
   if (!jsMath.Setup) {jsMath.Setup = {}}
   if (!jsMath.Setup.UserEvent) {jsMath.Setup.UserEvent = {}}
   jsMath.Setup.UserEvent.onload = function () {
-    if (jsMath.Easy.tex2math) jsMath.Setup.Script("plugins/tex2math.js");
+    var easy = jsMath.Easy;
+    if (easy.tex2math) jsMath.Setup.Script("plugins/tex2math.js");
     var i;
-    for (i = 0; i < jsMath.Easy.loadFiles.length; i++)
-      jsMath.Setup.Script(jsMath.Easy.loadFiles[i]);
-    for (i = 0; i < jsMath.Easy.loadFonts.length; i++)
-      jsMath.Font.Load(jsMath.Easy.loadFonts[i]);
+    if (easy.loadFiles) {
+      for (i = 0; i < easy.loadFiles.length; i++)
+        jsMath.Setup.Script(easy.loadFiles[i]);
+    }
+    if (easy.loadFonts) {
+      for (i = 0; i < easy.loadFonts.length; i++)
+        jsMath.Font.Load(easy.loadFonts[i]);
+    }
+    if (easy.macros) {
+      for (i in easy.macros) {
+        if (typeof(easy.macros[i]) == 'string') {
+          jsMath.Macro(i,easy.macros[i]);
+        } else {
+          jsMath.Macro(i,easy.macros[i][0],easy.macros[i][1]);
+        }
+      }
+    }
   }
   document.write('<script src="'+jsMath.Easy.root+'/jsMath.js"></script>'+"\n");
 }
diff --git a/src/main/webapp/static/js/jsMath/jsMath-fallback-mac.js b/src/main/webapp/static/js/jsMath/jsMath-fallback-mac.js
index e9e18311b7f9d8726f4e32694bbfbb7d820a5ede..f1a3749a31fb4814fc93f01e0435d64bbcba028e 100644
--- a/src/main/webapp/static/js/jsMath/jsMath-fallback-mac.js
+++ b/src/main/webapp/static/js/jsMath/jsMath-fallback-mac.js
@@ -8,7 +8,7 @@
  *
  *  ---------------------------------------------------------------------
  *
- *  Copyright 2004-2006 by Davide P. Cervone
+ *  Copyright 2004-2010 by Davide P. Cervone
  * 
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -24,6 +24,6 @@
  */
 
 jsMath.Script.Uncompress([
-  ['jsMath.Add(jsMath.TeX,{cmr10',':[{c:"&Gamma;",','tclass:"greek"},{c:"&','Delta;",',2,'Theta;",',2,'Lambda;",',2,'Xi;",',2,'Pi;",',2,'Sigma;",',2,'Upsilon;",',2,'Phi;",',2,'Psi;",',2,'Omega;",','tclass:"','greek','"},{c:"','ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"normal"},{c',':"fi",',28,':"fl",',28,':"ffi",',28,':"ffl",',28,':"&#x131',';",a:0,',28,':"j",d:0.2,',28,':"&#x60;",',22,'accent','"},{c:"&#','xB4;",',22,44,45,'x2C7;",',22,44,45,'x2D8;",',22,44,'"},{c:"<span style=\\"','position:relative; top',':.1em\\">&#x2C9',';</span>",',22,44,45,'x2DA;",',22,44,45,'x0327;",',28,':"&#xDF;",',28,':"&#xE6',38,28,':"&#x153',38,28,':"&#xF8;",',28,':"&#xC6;",',28,':"&#x152;",',28,':"&#xD8;",',28,':"?",krn:{"108":-0.278,"76":-0.319},',28,':"!",lig:{"96":60},',28,':"&#x201D;",',28,':"#",',28,':"$",',28,':"%",',28,':"&amp;",',28,':"&#x2019;",krn:{"63":0.111,"33":0.','111},','lig:{"39":34},',28,':"(",','d:0.2,',28,':")",',105,28,':"*",',28,':"+",','a:0.1,',28,':",",a:-','0.3,d:0.2,','w:0.278,',28,':"-",a:0,lig:{"45":123},',28,':".",a:-0.','25,',28,':"/",',28,':"0",',28,':"1",',28,':"2",',28,':"3",',28,':"4",',28,':"5",',28,':"6",',28,':"7",',28,':"8",',28,':"9",',28,':":",',28,':";",',28,':"&#xA1;",',28,':"=",','a:0,d:-0.','1,',28,':"&#xBF;",',28,':"?",lig:{"96":62},',28,':"@",',28,':"A','",krn:{"','116','":-0.0278,"','67',165,'79',165,'71',165,'85',165,'81',165,'84','":-0.0833,"','89',177,'86','":-0.111',',"87":-0.',101,28,':"B",',28,':"C",',28,':"D',163,'88',165,'87',165,'65',165,'86',165,'89','":-0.0278','},',28,':"E",',28,':"F',163,'111',177,'101',177,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',165,'67',165,'71',165,'81',200,'},',28,':"G",',28,':"H",',28,':"I',163,'73":0.','0278','},',28,':"J",',28,':"K',163,'79',165,'67',165,'71',165,'81',200,'},',28,':"L',163,'84',177,'89',177,'86',181,182,101,28,':"M",',28,':"N",',28,':"O',163,'88',165,'87',165,'65',165,'86',165,'89',200,'},',28,':"P',163,'65',177,'111',165,'101',165,'97',165,'46',177,'44":-0.0833},',28,':"Q",','d:0.1,',28,':"R',163,'116',165,'67',165,'79',165,'71',165,'85',165,'81',165,'84',177,'89',177,'86',181,182,101,28,':"S",',28,':"T',163,'121',165,'101',177,'111',212,'0833,"117":-0.0833','},',28,':"U",',28,':"V",','ic:0.0139,krn:{"','111',177,'101',177,'117',212,'111,"79',165,'67',165,'71',165,'81',200,'},',28,':"W",',332,'111',177,'101',177,'117',212,'111,"79',165,'67',165,'71',165,'81',200,'},',28,':"X',163,'79',165,'67',165,'71',165,'81',200,'},',28,':"Y",ic:0.025,','krn:{"101',177,'111',212,326,'},',28,':"Z",',28,':"[",',291,28,':"&#x201C;",',28,':"]",',291,28,':"&#x2C6;",',22,44,45,'x2D9;",',22,44,45,'x2018;",lig:{"96":92},',28,':"a','",a:0,krn:{"','118',165,'106":0.','0556,"121',165,'119',200,'},',28,':"b',163,'101','":0.0278,"','111',421,'120',165,'100',421,'99',421,'113',421,'118',165,411,'0556,"121',165,'119',200,'},',28,':"c',408,'104',165,'107',200,'},',28,':"d",',28,':"e",a:0,',28,':"f',26,'12,"102":11,"108":13},',28,':"g",','a:0,d:0.2,ic:0.','0139,krn:{"',411,230,'},',28,':"h',163,'116',165,'117',165,'98',165,'121',165,'118',165,'119',200,'},',28,':"i",',28,40,28,':"k',163,'97','":-0.0556,"','101',165,'97',165,'111',165,'99',200,'},',28,':"l",',28,':"m',408,'116',165,'117',165,'98',165,'121',165,'118',165,'119',200,'},',28,':"n',408,'116',165,'117',165,'98',165,'121',165,'118',165,'119',200,'},',28,':"o',408,'101',421,'111',421,'120',165,'100',421,'99',421,'113',421,'118',165,411,'0556,"121',165,'119',200,'},',28,':"p",a:0,',105,380,421,'111',421,'120',165,'100',421,'99',421,'113',421,'118',165,411,'0556,"121',165,'119',200,'},',28,':"q",a:0,',105,28,':"','r",a:0,',28,':"s",a:0,',28,':"t',163,'121',165,'119',200,'},',28,':"u',408,'119',200,'},',28,':"v",a:0,',332,'97',487,'101',165,'97',165,'111',165,'99',200,'},',28,':"w",a:0,',332,'101',165,'97',165,'111',165,'99',200,'},',28,':"x",a:0,',28,':"y",',458,459,'111',165,'101',165,'97',165,'46',177,'44":-0.0833},',28,':"z",a:0,',28,':"&#x2013',';",a:0.1,','ic:0.0278,','lig:{"45":124},',28,':"&#x2014',644,645,28,':"&#x2DD;",',22,44,45,'x2DC;",',22,44,45,'xA8;",',22,44,'"}],cmmi10',1,'ic:0.139',',krn:{"61":-0.0556,"59":-0.111,"58":-0.111,"127":0.','0833},',22,'igreek"},{c:"&',3,'krn:{"127":0.','167},',22,669,5,'ic:0.',230,',krn:{"127":0.','0833},',22,669,7,671,'167},',22,669,9,'ic:0.0757',678,'0833},',22,669,11,'ic:0.0812,krn:{"61',487,'59":-0.0556,"58":-0.0556,"127":0.','0556},',22,669,13,'ic:0.0576',678,'0833},',22,669,15,'ic:0.139',666,'0556},',22,669,17,671,'0833},',22,669,19,'ic:0.11,krn:{"61',487,696,'0556},',22,669,21,'ic:0.0502',678,'0833},',22,669,'alpha',';",a:0,ic:0.','0037',678,230,'},',2,'beta;",','d:0.2,ic:0.','0528',678,'0833},',2,'gamma;",',458,'0556,',2,'delta;",ic:0.0378,krn:{"',696,'0556},',2,'epsilon;",a:0',678,'0556},',22,'lucida"},{c:"&zeta;",',738,'0738',678,'0833},',2,'eta;",',458,'0359',678,'0556},',2,'theta;",ic:0.',230,678,'0833},',2,'iota;",a:0',678,'0556},',2,'kappa',38,2,'lambda;",',2,'mu',38,'d:0.2',678,230,'},',2,'nu',731,'0637,krn:{"',696,230,'},',2,'xi;",',738,'046',678,101,2,'pi',731,'0359,',2,'rho',38,'d:0.2',678,'0833},',2,'sigma',731,803,'krn:{"59',487,'58":-0.0556','},',2,'tau',731,'113,krn:{"',696,230,'},',2,'upsilon',731,'0359',678,230,'},',2,'phi',644,'d:0.2',678,'0833},',2,'chi',38,'d:0.2',678,'0556},',2,'psi',644,738,'0359',678,101,2,'omega',731,803,2,'epsilon;",a:0',678,'0833},',22,'greek',45,'x3D1;",',671,'0833},',28,':"&#x3D6',731,230,',',28,':"&#x3F1',38,'d:0.2',678,'0833},',28,':"&#x3C2;",',458,'0799',678,'0833},',28,':"&#x3D5',644,'d:0.2',678,'0833},',28,':"&#x21BC;",',153,'2,',22,'harpoon',45,'x21BD;",',153,'1,',22,'harpoon',45,'x21C0;",',153,'2,',22,'harpoon',45,'x21C1;",',153,'1,',22,'harpoon',57,'font-size',': 133%; ',58,':.1em; margin:-.2em; left:-.05em\\">&#','x02D3',60,113,22,'lucida',57,913,914,58,916,'x02D2',60,113,22,'lucida',57,913,':50%\\">&#','x25B7',60,22,'symbol',57,913,934,'x25C1',60,22,938,24,'0",',28,':"1",',28,':"2",',28,':"3",',28,':"4",',28,':"5",',28,':"6",',28,':"7",',28,':"8",',28,':"9",',28,121,'3,',28,':",",a:-',116,28,':"&lt',644,28,':"<span style=\\"',913,':133%; ',58,':.1em\\">/</','span>",',291,'krn:{"1',487,'65',487,'77',487,'78',487,'89":0.0556,"90":-0.0556},',28,':"&gt',644,28,976,913,934,'x2605',60,'a:0,','tclass:"symbol"},{c:"&#','x2202;",ic:0.0556',678,'0833},',28,':"A",',671,'139','},tclass:"italic"},{c:"','B",ic:0.0502',678,'0833',1010,'C",ic:0.0715,krn:{"61',165,696,'0833',1010,'D",ic:0.',230,678,'0556',1010,'E",ic:0.0576',678,'0833',1010,'F",ic:0.139',666,'0833',1010,'G",',671,'0833',1010,'H",ic:0.0812,krn:{"61',487,696,'0556',1010,'I",ic:0.0785',678,'111',1010,'J",ic:0.0962',666,'167',1010,'K",ic:0.0715,krn:{"61',487,696,'0556',1010,'L",',671,230,1010,'M','",ic:0.109,krn:{"','61',487,696,'0833',1010,'N',1060,'61',177,'61',165,696,'0833',1010,'O",ic:0.',230,678,'0833',1010,'P",ic:0.139',666,'0833',1010,'Q",d:0.2',678,'0833',1010,'R",ic:0.00773',678,'0833',1010,'S",ic:0.0576,krn:{"61',487,696,'0833',1010,'T','",ic:0.139,krn:{"','61',165,696,'0833',1010,'U',1060,'59',181,',"58',181,',"61',487,'127":0.',230,1010,'V",ic:0.222,krn:{"59','":-0.167,"','58',1116,'61',181,1010,'W',1098,'59',1116,'58',1116,'61',181,1010,'X",ic:0.0785,krn:{"61',177,'61',165,696,'0833',1010,'Y",ic:0.222,krn:{"59',1116,'58',1116,'61',181,1010,'Z",ic:0.0715,krn:{"61',487,696,'0833},',22,'italic',45,'x266D;",',22,'symbol2',45,'x266E;",',22,'symbol2',45,'x266F;",',22,'symbol2',57,'position: relative; top',':.5em\\">&#x2323',60,153,'1,',28,976,1164,':-.3em\\">&#x2322',60,153,'1,',28,':"&#x2113;",',671,101,22,938,24,'a",a:0,',22,'italic"},{c:"','b",',22,1185,'c",a:0',678,'0556',1010,'d',163,'89":0.0556,"90',487,'106',181,',"102',1116,1112,'167',1010,'e",a:0',678,'0556',1010,'f",',738,'108,krn:{"',696,'167',1010,'g",',458,'0359',678,230,1010,'h',163,'127',200,1010,'i",',22,1185,'j",',738,'0572,krn:{"59',487,816,1010,'k",ic:0.0315,',22,1185,'l",ic:0.0197',678,'0833',1010,'m",a:0,',22,1185,'n",a:0,',22,1185,'o",a:0',678,'0556',1010,'p",a:0,d:0.2',678,'0833',1010,'q",',458,'0359',678,'0833',1010,582,645,'krn:{"',696,'0556',1010,'s",a:0',678,'0556',1010,'t",',671,'0833',1010,'u",a:0',678,230,1010,'v",a:0,ic:0.0359',678,230,1010,'w",a:0,ic:0.0269',678,'0833',1010,'x",a:0',678,230,1010,'y",',458,'0359',678,'0556',1010,'z",a:0,ic:0.044',678,'0556},',22,'italic',45,'x131;",a:0',678,230,1010,'j",d:0.2',678,'0833},',22,'italic',45,'x2118',38,'d:0.2',678,101,28,976,'position:relative; left: .4em; top: -.8em; ',913,': 50%\\">&#x2192',60,'ic:0.154,',1002,'x0311;",ic:0.399,',22,'normal"}],cmsy10:[{c:"&#x2212',644,1002,'xB7;",',153,'2,',1002,'xD7',38,22,938,57,58,':.3em\\">&#x2A',60,'a:0,',1002,'xF7',38,1002,'x25CA;",',22,'lucida',45,'xB1',644,1002,'x2213;",',1002,'x2295;",',1002,'x2296;",',1002,'x2297;",',1002,'x2298;",',1002,'x2299;",',22,'symbol3',45,'x25EF;",',22,938,57,58,':.25em;\\">&#xB0',60,153,'1,',1002,'x2022;",',153,'2,',1002,'x224D',644,1002,'x2261',644,1002,'x2286;",',1002,'x2287;",',1002,'x2264;",',1002,'x2265;",',1002,'x227C;",',1002,'x227D;",',22,938,'"},{c:"~",',153,'2,',28,':"&#x2248',644,'d:-0.1,',1002,'x2282;",',1002,'x2283;",',1002,'x226A;",',1002,'x226B;",',1002,'x227A;",',1002,'x227B;",',1002,'x2190;",',153,'15,',22,'arrow1',45,'x2192;",',153,'15,',22,'arrow1',45,'x2191',';",h:1,',22,'arrow1a',45,'x2193',1435,22,'arrow1a',45,'x2194',38,22,'arrow1',45,'x2197',1435,22,'arrows',45,'x2198',1435,22,'arrows',45,'x2243',644,1002,'x21D0',644,22,'arrow2',45,'x21D2',644,22,'arrow2',45,'x21D1;",h:0.9,',291,22,'arrow2a',45,'x21D3;",h:0.9,',291,22,'arrow2a',45,'x21D4',644,22,'arrow2',45,'x2196',1435,22,'arrows',45,'x2199',1435,22,'arrows',45,'x221D',644,22,938,57,913,914,'margin-right',': -.1em; ',1164,':.4em\\">&#x2032',60,'a:0,',22,'lucida',45,'x221E',644,1002,'x2208;",',1002,'x220B;",',1002,'x25B3;",',1002,'x25BD;",',22,938,'"},{c:"/",',22,938,57,913,':50%; ',58,':-.3em; ',1504,':-.2em\\">|</',981,'a:0,',28,':"&#x2200;",',1002,'x2203;",',1002,'xAC;",',153,'1,',22,'symbol1',45,'x2205;",',1002,'x211C;",',1002,'x2111;",',1002,'x22A4;",',1002,'x22A5;",',1002,'x2135;",',22,938,24,'A',163,'48":0.194},',22,'cal"},{c:"','B",ic:0.0304',',krn:{"48":0.','139},',22,1566,'C",ic:0.0583',1568,'139},',22,1566,'D",ic:0.',230,1568,'0833},',22,1566,'E",ic:0.0894',1568,101,22,1566,'F",ic:0.0993',1568,101,22,1566,'G",',738,'0593',1568,101,22,1566,'H",ic:0.00965',1568,101,22,1566,'I",ic:0.0738',1568,230,'},',22,1566,'J",',738,'185',1568,'167},',22,1566,'K",ic:0.0144',1568,'0556},',22,1566,'L',163,'48":0.139},',22,1566,'M',163,'48":0.139},',22,1566,'N",ic:0.147',1568,'0833},',22,1566,'O",ic:0.',230,1568,101,22,1566,'P",ic:0.0822',1568,'0833},',22,1566,'Q",d:0.2',1568,101,22,1566,'R',163,'48":0.0833},',22,1566,'S",ic:0.075',1568,'139},',22,1566,'T",ic:0.254',1568,230,'},',22,1566,'U",ic:0.0993',1568,'0833},',22,1566,'V",ic:0.0822',1568,230,'},',22,1566,'W",ic:0.0822',1568,'0833},',22,1566,'X",ic:0.146',1568,'139},',22,1566,'Y",ic:0.0822',1568,'0833},',22,1566,'Z",ic:0.0794',1568,'139},',22,'cal',45,'x22C3;",',1002,'x22C2;",',1002,'x228E;",',1002,'x22C0;",',1002,'x22C1;",',1002,'x22A2;",',1002,'x22A3;",',22,'symbol2',45,'xF8F0',';",a:',116,28,':"&#xF8FB;",a:',116,28,':"&#xF8EE;",a:',116,28,':"&#xF8F9;",a:',116,28,':"{",',105,28,':"}",',105,28,':"&#x3008;",a:',116,28,':"&#x3009;",a:',116,28,':"|",',291,22,'vertical','"},{c:"||",',291,22,'vertical',45,'x2195',1435,'d:0.15,',22,'arrow1a',45,'x21D5;",a:0.2,',291,22,'arrows',57,'margin:-.1em\\">&#','x2216',60,'a:0.3,',291,22,'lucida',57,913,': 75%; margin:-.3em\\">&#x2240',60,22,938,57,58,': .86em\\">&#x221A',60,'h:0.04,d:0.9,',22,'lucida',45,'x2210;",a:0.4,',1002,'x2207;",',1002,'x222B',1435,291,'ic:0.111,',22,'root',45,'x2294;",',1002,'x2293;",',1002,'x2291;",',1002,'x2292;",',1002,'xA7;",',291,28,':"&#x2020;",',291,28,':"&#x2021;",',291,28,':"&#xB6;",a:0.3,',291,22,'lucida',45,'x2663;",',1002,'x2666;",',1002,'x2665;",',1002,'x2660;",',22,938,'"}],cmex10:[{c',104,'h:0.04,d:1.16,n:','16,',22,'delim1"},{c',107,1828,'17,',22,1831,389,1828,'104,',22,1831,394,1828,'105,',22,'delim1',45,1718,'",',1828,'106,',22,'delim1',45,'xF8FB',';",h:0.04,d:','1.16,n:','107,',22,'delim1',45,'xF8EE',1856,1857,'108,',22,'delim1',45,'xF8F9',1856,1857,'109,',22,1831,1731,1828,'110,',22,1831,1734,1828,'111,',22,'delim1',45,'x3008',1856,1857,'68,',22,'delim1c',45,'x3009',1856,1857,'69,',22,'delim1c"},{c',1743,'h:0.7,d:0.15,delim:{','rep:12},',22,'vertical1',1747,1900,'rep:13},',22,'vertical1',45,'x2215',1856,1857,'46,',22,'delim1b',45,1764,1856,1857,'47,',22,'delim1b"},{c',104,'h:0.04,d:1.76,n:','18,',22,'delim2"},{c',107,1924,'19,',22,1927,104,'h:0.04,d:2.36,n:','32,',22,'delim3"},{c',107,1934,'33,',22,1937,389,1934,'34,',22,1937,394,1934,'35,',22,'delim3',45,1718,1856,'2.36,n:','36,',22,'delim3',45,'xF8FB',1856,1956,'37,',22,'delim3',45,'xF8EE',1856,1956,'38,',22,'delim3',45,'xF8F9',1856,1956,'39,',22,'delim3',57,'margin: -.1em','\\">{</',981,1934,'40,',22,'delim3',57,1982,'\\">}</',981,1934,'41,',22,'delim3',45,'x3008',1856,1956,'42,',22,'delim3c',45,'x3009',1856,1956,'43,',22,'delim3c',45,'x2215',1856,1956,'44,',22,'delim3b',45,1764,1856,1956,'45,',22,'delim3b"},{c',104,'h:0.04,d:2.96,n:','48,',22,'delim4"},{c',107,2026,'49,',22,2029,389,2026,'50,',22,2029,394,2026,'51,',22,'delim4',45,1718,1856,'2.96,','n:52,',22,'delim4',45,'xF8FB',1856,2048,'n:53,',22,'delim4',45,'xF8EE',1856,2048,'n:54,',22,'delim4',45,'xF8F9',1856,2048,'n:55,',22,'delim4',57,1982,'\\">{</',981,2026,'56,',22,'delim4',57,1982,'\\">}</',981,2026,'57,',22,'delim4',45,'x3008',1856,2048,22,'delim4c',45,'x3009',1856,2048,22,'delim4c',45,'x2215',1856,2048,22,'delim4b',45,1764,1856,2048,22,'delim4b',45,'x2215',1856,'1.76,n:','30,',22,'delim2b',45,1764,1856,2116,'31,',22,'delim2b',45,'xF8EB',';",h:0.85,d:0.2,delim:{','top:48,bot:64,rep:66},',28,':"&#xF8F6',2129,'top:49,bot:65,rep:67},',28,':"&#xF8EE',2129,'top:50,bot:52,rep:54},',28,':"&#xF8F9',2129,'top:51,bot:53,rep:55},',28,':"&#',1718,2129,'bot:52,rep:54},',28,':"&#xF8FB',2129,'bot:53,rep:55},',28,':"&#xF8EF',2129,'top:50,rep:54},',28,':"&#xF8FA',2129,'top:51,rep:55},',28,':"&#xF8F1',2129,'top:56,mid:60,bot:58,rep:62},',28,':"&#xF8FC',2129,'top:57,mid:61,bot:59,rep:62},',28,':"&#xF8F3',2129,'top:56,bot:','58,rep:62},',28,':"&#xF8FE',2129,'top:57,bot:','59,rep:62},',28,':"&#xF8F2',2129,'rep:63},',28,':"&#xF8FD',2129,'rep:119},',28,':"&#xF8F4',2129,'rep:62},',28,1743,1900,'top:120,bot:121,rep:63},',22,'vertical2',45,'xF8ED',2129,2171,'59,rep:62},',28,':"&#xF8F8',2129,2176,'58,rep:62},',28,':"&#xF8EC',2129,'rep:66},',28,':"&#xF8F7',2129,'rep:67},',28,':"&#x3008',1856,2116,'28,',22,'delim2c',45,'x3009',1856,2116,'29,',22,'delim2c',45,'x2294',';",h:0,d:1,n:','71,',22,'bigop1',45,1795,'h:0.1,d:1.5,',22,'bigop2',45,'x222E;",h:0,d:','1.11,ic:0.095,n:73,',22,'bigop1c',45,2240,'2.22,ic:0.222,',22,'bigop2c',45,'x2299',2230,'75,',22,'bigop1',45,1365,'h:0.1,d:1.5,',22,'bigop2',45,'x2295',2230,'77,',22,'bigop1',45,1357,'h:0.1,d:1.5,',22,'bigop2',45,'x2297',2230,'79,',22,'bigop1',45,1361,'h:0.1,d:1.5,',22,'bigop2',45,'x2211',2230,'88,tcla'],
-  ['ss:"','bigop1a','"},{c:"&#','x220F',';",h:0,d:1,n:','89,','tclass:"',1,2,'x222B;",h:0,d:','1.11,','ic:0.','095,n:90,',6,'bigop1c',2,'x222A',4,'91,',6,'bigop1b',2,'x2229',4,'92,',6,20,2,'x228E',4,'93,',6,20,2,'x2227',4,'94,',6,'bigop1',2,'x2228',4,'95,',6,38,2,'x2211',';",h:0.1,d:1.','6,',6,'bigop2a',2,'x220F',47,'5,',6,50,2,9,'2.22,',11,'222,',6,'bigop2c',2,16,47,'5,',6,'bigop2b',2,22,47,'5,',6,69,2,'x228E',47,'5,',6,69,2,34,47,'5,',6,'bigop2',2,40,47,'5,',6,87,2,'x2210',4,'97,',6,1,2,'x2210',47,'5,',6,50,2,'xFE3F;",h:0.','722,w:0.','65,n:99,',6,'wide1',2,107,'85,w:1.1,n:100,',6,'wide2',2,107,'99,w:1.65,',6,'wide3',2,'x2053;",h:0.',108,'75,n:102,',6,'wide1a',2,123,'8,w:1.35,n:103,',6,'wide2a',2,123,'99,w:2,',6,'wide3a"},{c:"[",','h:0.04,d:1.76,n:','20,',6,'delim2','"},{c:"]",',138,'21,',6,141,2,'xF8F0;",',138,'22,',6,141,2,'xF8FB;",',138,'23,',6,141,2,'xF8EE;",',138,'24,',6,141,2,'xF8F9",',138,'25,',6,141,'"},{c:"<','span style=\\"','margin: -.1em','\\">{</span>",',138,'26,',6,141,'"},{c:"<',172,173,'\\">}</span>",',138,'27,',6,141,'"},{c:"<span style=\\"font-size: ','125','%; position:relative; top:.','95em','\\">&#x221A;</span>",h:0.','04,d:1.16,n:113,',6,'root',187,'190',189,'925em',191,'04,d:1.76,n:114,',6,194,187,'250',189,'925em',191,'06,d:2.36,n:115,',6,194,187,'320',189,'92em',191,'08,d:2.96,n:116,',6,194,187,'400',189,'92em',191,'1,d:3.75,n:117,',6,194,187,'500',189,'9em',191,'12,d:4.5,n:118,',6,194,187,'625',189,'9em',191,'14,d:5.7,',6,194,'"},{c:"||",h:0.65,d:0.15',',delim:{top:126,','bot:127,rep:119},',6,'vertical2',2,'x25B5;",h:0.','4,delim:{top:120,rep:63},',6,'arrow1b',2,'x25BF;",h:0.','38,delim:{bot:121,rep:63},',6,252,187,'67',189,'35em','; margin-left:-.','5em\\">&#x256D',';</span>",','h:0.1,',6,'symbol',187,'67',189,'35em; margin-right:-.5em\\">&#','x256E',264,265,6,267,187,'67',189,'35em',262,'5em\\">&#x2570',264,265,6,267,187,'67',189,271,'x256F',264,265,6,267,2,249,'5',244,'rep:119},',6,'arrow2b',2,254,'6,d:-0.1,delim:{bot:127,rep:119},',6,302,'"}],cmti10',':[{c:"&Gamma;",',11,'133,',6,'igreek"},{c:"&','Delta;",',6,313,'Theta;",','ic:0.094,',6,313,'Lambda;",',6,313,'Xi;",',11,'153,',6,313,'Pi;",',11,'164,',6,313,'Sigma;",',11,'12,',6,313,'Upsilon;",',11,'111,',6,313,'Phi;",',11,'0599,',6,313,'Psi;",',11,341,6,313,'Omega;",','ic:0.103,',6,'igreek','"},{c:"ff','",ic:0.212,krn:{"39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":','14,"108":15},','tclass:"italic"},{c',':"fi','",ic:0.103,',361,':"fl',363,361,':"ffi',363,361,':"ffl',363,361,':"&#x131;",a:0,',11,'0767,',361,':"j",d:0.2,',11,'0374,',361,':"&#x60;",',6,'iaccent',2,'xB4;",',11,'0969,',6,384,2,'x2C7;",',11,'083,',6,384,2,'x2D8;",',11,'108,',6,384,2,'x2C9;",',355,6,384,2,'x2DA;",',6,384,'"},{c:"?",','d:0.17,w:0.46,',361,':"&#xDF;",',11,'105,',361,':"&#xE6;",a:0,','ic:0.0751,',361,':"&#x153;",a:0,',420,361,':"&#xF8;",',11,'0919,',361,':"&#xC6;",',11,'12,',361,':"&#x152;",',11,'12,',361,':"&#xD8;",',318,361,':"?",krn:{"108":-0.','256,"76":-0.321},',361,':"!",','ic:0.124,lig:{"96":','60},',361,':"&#x201D;",',11,'0696,',361,':"#",',11,'0662,',361,':"$",',361,':"%",',11,'136,',361,':"&amp;",',11,'0969,',361,':"&#x2019;",',11,'124,','krn:{"63":0.','102,"33":0.102},lig:{"39":34},',361,':"(",d:0.2,',11,'162,',361,':")",d:0.2,',11,'0369,',361,':"*",',11,'149,',361,':"+",a:0.1,',11,'0369,',361,':",",a:-0.3,d:0.2,w:0.278,',361,':"-",a:0,',11,'0283',',lig:{"45":','123},',361,':".",a:-0.25,',361,':"/",',11,'162,',361,':"0",',11,'136,',361,':"1",',11,'136,',361,':"2",',11,'136,',361,':"3",',11,'136,',361,':"4",',11,'136,',361,':"5",',11,'136,',361,':"6",',11,'136,',361,':"7",',11,'136,',361,':"8",',11,'136,',361,':"9",',11,'136,',361,':":",',11,'0582,',361,':";",',11,'0582,',361,':"&#xA1;",',11,'0756,',361,':"=",a:0,d:-0.1,',11,'0662,',361,':"&#xBF;",',361,':"?",','ic:0.122,','lig:{"96":','62},',361,':"@",',11,'096,',361,':"A",','krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.0256,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',571,'86','":-0.102,"','87',575,'101','":-0.0511,"','97',579,'111',579,'100',579,'99',579,'103',579,'113','":-0.0511','},',361,':"B',363,361,':"C",','ic:0.145,',361,':"D",',318,'krn:{"88','":-0.0256,"','87',603,'65',603,'86',603,'89":-0.','0256},',361,':"E",',11,'12,',361,':"F','",ic:0.133,krn:{"','111',571,'101',571,'117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',575,'79',603,'67',603,'71',603,'81":-0.0256','},',361,':"G",',11,'0872,',361,':"H",',11,'164,',361,':"I",',11,'158,',361,':"J",',11,'14,',361,':"K",',598,'krn:{"79',603,'67',603,'71',603,633,'},',361,':"L",krn:{"84',571,'89',571,'86',575,'87',575,'101',579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"M",',11,'164,',361,':"N",',11,'164,',361,':"O",',318,'krn:{"88',603,'87',603,'65',603,'86',603,610,'0256},',361,':"P',363,'krn:{"65":-0.0767},',361,':"Q",d:0.1,',318,361,':"R",',11,'0387,',569,'0.0256,"84',571,'89',571,'86',575,'87',575,'101',579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"S",',11,'12,',361,':"T',618,'121',571,'101',571,'111',624,'117',571,'65":-0.0767},',361,':"U",',11,'164,',361,':"V",ic:0.','184,krn:{"','111',571,'101',571,'117',624,'65',575,'79',603,'67',603,'71',603,633,'},',361,':"W",ic:0.',764,'65":-0.0767},',361,':"X",',11,'158,krn:{"79',603,'67',603,'71',603,633,'},',361,':"Y",',11,'194',',krn:{"101',571,'111',624,'117',571,'65":-0.0767},',361,':"Z",',598,361,':"[",d:0.1,',11,'188,',361,':"&#x201C;",',11,'169,',361,':"]",d:0.1,',11,'105,',361,':"&#x2C6;",',11,'0665,',6,384,2,'x2D9;",',11,'118,',6,384,2,'x2018;",',444,'92},',361,':"a','",a:0,ic:0.',376,361,':"b",',11,'0631',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"c',840,'0565',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"d',363,'krn:{"108":','0.0511},',361,':"e',840,'0751',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"f',359,'12,"102":11,"108":13},',361,':"g','",a:0,d:0.2,ic:0.','0885,',361,':"h",',11,376,361,':"i",',11,'102,',361,378,598,361,':"k",',11,400,361,':"l',363,883,'0.0511},',361,':"m',840,376,361,':"n',840,376,'krn:{"39":-0.102},',361,':"o',840,'0631',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"p',910,'0631',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"q',910,'0885,',361,':"r',840,'108',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"s',840,'0821,',361,':"t",',11,'0949,',361,':"u',840,376,361,':"v',840,400,361,':"w',840,400,883,'0.0511},',361,':"x',840,'12,',361,':"y',910,'0885,',361,':"z',840,'123,',361,':"&#x2013;",a:0.1,ic:0.','0921',492,'124},',361,':"&#x2014;",a:0.1,ic:0.','0921,',361,':"&#x2DD;",',560,6,384,2,'x2DC;",',11,'116,',6,384,2,'xA8;",',6,384,'"}],cmbx10',309,6,'bgreek"},{c:"&','Delta;",',6,1062,317,6,1062,'Lambda;",',6,1062,324,6,1062,329,6,1062,334,6,1062,339,6,1062,344,6,1062,349,6,1062,354,6,'bgreek','"},{c:"ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"bold"},{c',':"fi",',1096,':"fl",',1096,':"ffi",',1096,':"ffl",',1096,374,1096,378,1096,':"&#x60;",',6,'baccent',2,386,6,1111,2,392,6,1111,2,398,6,1111,2,404,6,1111,2,'x2DA;",',6,1111,412,1096,415,1096,419,1096,422,1096,425,1096,429,1096,433,1096,437,1096,440,'278,"76":-0.319},',1096,443,561,'60},',1096,447,1096,451,1096,':"$",',1096,457,1096,461,1096,465,468,'111,"33":0.111},lig:{"39":34},',1096,471,1096,475,1096,479,1096,483,1096,':",",a:-0.3,d:0.2,w:0.278,',1096,':"-",a:0',492,'123},',1096,':".",a:-0.25,',1096,497,1096,501,1096,505,1096,509,1096,513,1096,517,1096,521,1096,525,1096,529,1096,533,1096,537,1096,541,1096,545,1096,549,1096,553,1096,':"&#xBF;",',1096,559,561,'62},',1096,564,1096,':"A",krn:{"116','":-0.0278,"','67',1224,'79',1224,'71',1224,'85',1224,'81',1224,'84','":-0.0833,"','89',1236,'86":-0.','111,"87":-0.111},',1096,':"B",',1096,597,1096,':"D",krn:{"88',1224,'87',1224,'65',1224,'86',1224,610,'0278},',1096,613,1096,':"F",krn:{"111',1236,'101',1236,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',1224,'67',1224,'71',1224,'81":-0.0278','},',1096,636,1096,640,1096,':"I",krn:{"73":0.0278},',1096,648,1096,':"K",krn:{"79',1224,'67',1224,'71',1224,1271,'},',1096,':"L",krn:{"84',1236,'89',1236,1239,'111,"87":-0.111},',1096,687,1096,691,1096,':"O",krn:{"88',1224,'87',1224,'65',1224,'86',1224,610,'0278},',1096,':"P",krn:{"65',1236,'111',1224,'101',1224,'97',1224,'46',1236,'44":-0.0833},',1096,712,1096,':"R",krn:{"116',1224,'67',1224,'79',1224,'71',1224,'85',1224,'81',1224,'84',1236,'89',1236,1239,'111,"87":-0.111},',1096,743,1096,':"T",krn:{"121',1224,'101',1236,'111',1264,'0833,"117":-0.0833','},',1096,759,1096,763,'0139,krn:{"','111',1236,'101',1236,'117',1264,'111,"79',1224,'67',1224,'71',1224,1271,'},',1096,782,1360,'111',1236,'101',1236,'117',1264,'111,"79',1224,'67',1224,'71',1224,1271,'},',1096,':"X",krn:{"79',1224,'67',1224,'71',1224,1271,'},',1096,':"Y",',11,'025',800,1236,'111',1264,1354,'},',1096,808,1096,811,1096,815,1096,819,1096,823,6,1111,2,829,6,1111,2,835,561,'92},',1096,':"a','",a:0,krn:{"','118',1224,'106":0.','0556,"121',1224,'119":-0.','0278},',1096,':"b",krn:{"101','":0.0278,"','111',1443,'120',1224,'100',1443,'99',1443,'113',1443,'118',1224,1436,'0556,"121',1224,1439,'0278},',1096,':"c',1433,'104',1224,'107":-0.0278},',1096,':"d",',1096,':"e",a:0,',1096,':"f',1094,'12,"102":11,"108":13},',1096,':"g',910,1360,1436,'0278},',1096,':"h",krn:{"116',1224,'117',1224,'98',1224,'121',1224,'118',1224,1439,'0278},',1096,917,1096,378,1096,':"k",krn:{"97":-0.0556,"101',1224,'97',1224,'111',1224,'99":-0.','0278},',1096,':"l",',1096,':"m',1433,'116',1224,'117',1224,'98',1224,'121',1224,'118',1224,1439,'0278},',1096,':"n',1433,'116',1224,'117',1224,'98',1224,'121',1224,'118',1224,1439,'0278},',1096,':"o",a:0',800,1443,'111',1443,'120',1224,'100',1443,'99',1443,'113',1443,'118',1224,1436,'0556,"121',1224,1439,'0278},',1096,':"p",a:0,d:0.2',800,1443,'111',1443,'120',1224,'100',1443,'99',1443,'113',1443,'118',1224,1436,'0556,"121',1224,1439,'0278},',1096,':"q",a:0,d:0.2,',1096,':"r",a:0,',1096,':"s",a:0,',1096,':"t",krn:{"121',1224,1439,'0278},',1096,':"u',1433,1439,'0278},',1096,':"v',840,1360,'97":-0.0556,"101',1224,'97',1224,'111',1224,1505,'0278},',1096,':"w',840,'0139',800,1224,'97',1224,'111',1224,1505,'0278},',1096,':"x",a:0,',1096,':"y',910,1360,'111',1224,'101',1224,'97',1224,'46',1236,'44":-0.0833},',1096,':"z",a:0,',1096,1037,'0278',492,'124},',1096,1042,'0278,',1096,1045,6,1111,2,1050,6,1111,2,'xA8;",',6,1111,'"}]});','jsMath.Setup.Styles({".typeset .','cmr10','":"font-family: ','serif','",".typeset .','italic":"font-style: italic',1663,'bold":"font-weight: bold',1663,'lucida":"font-family: \'Lucida Grande','\'",".typeset .','asymbol','":"font-family: \'Apple ','Symbols\'; ','font-size: ','115','%",".typeset .','cal',1671,'Chancery',1669,'arrows','":"font-family: \'Hiragino Mincho Pro',1669,'arrow1',1681,'\'; ','position: relative; top',': .075em; margin: -1px',1663,'arrow1a',1681,'\'; margin:-.','3em',1663,252,1661,'AppleGothic','; ',1673,'50',1675,'arrow2',1661,'Symbol','; ',1673,'140%; ',1686,': .','1em; margin:-1px',1663,'arrow2a',1661,1703,1663,302,1661,1696,'; ',1673,'67',1675,'harpoon',1661,1696,'; ',1673,'90',1675,267,1681,1669,'symbol2',1681,1691,'2em',1663,'symbol3',1661,1696,1663,'delim1',1661,'Times; ',1673,'133',189,'75em',1663,'delim1b',1681,'\'; ',1673,'133',189,'8em; ',173,1663,'delim1c',1661,1703,'; ',1673,'120',189,'8em',';",".typeset .',141,1661,'Baskerville','; ',1673,'180',189,1747,1663,'delim2b',1681,'\'; ',1673,'190',189,'8em; ',173,1663,'delim2c',1661,1703,'; ',1673,'167',189,'8em',1766,'delim3',1661,1769,'; ',1673,'250',189,'725em',1663,'delim3b',1681,'\'; ',1673,'250',189,'8em; ',173,1663,'delim3c',1661,267,'; ',1673,'240',189,'775em',1766,'delim4',1661,1769,'; ',1673,'325',189,'7em',1663,'delim4b',1681,'\'; ',1673,'325',189,'8em; ',173,1663,'delim4c',1661,1703,'; ',1673,'300',189,'8em',1766,'vertical',1661,'Copperplate',1663,'vertical1',1661,1850,'; ',1673,'85%; margin: .','15em',1766,247,1661,1850,'; ',1673,1857,'17em',1766,'greek',1661,1662,1663,357,1661,1662,'; font-style:italic',1663,1092,1661,1662,'; font-weight:bold',1663,38,1681,'\'; ',1673,'133%; ',1686,': .85em','; margin:-.','05em',1663,1,1661,1769,'; ',1673,'100%; ',1686,': .775em',1766,20,1681,'\'; ',1673,'160%; ',1686,': .7em','; margin:-.1em',1663,14,1661,'Apple Symbols','; ',1673,'125%; ',1686,': .',1747,1908,1766,87,1681,'\'; ',1673,'200%; ',1686,': .8em',1889,'07em',1663,50,1661,1769,'; ',1673,'175%; ',1686,1907,1766,69,1681,'\'; ',1673,'270%; ',1686,': .62em',1908,1663,63,1671,'Symbols\'; ',1673,'250%; ',1686,1907,1889,'17em',1766,111,'":"',1673,'67%; ',1686,':-.8em',1663,116,'":"',1673,'110%; ',1686,':-.5em',1663,121,'":"',1673,'175%; ',1686,':-.32em',1663,127,'":"',1673,'75%; ',1686,1971,1663,132,'":"',1673,'133%; ',1686,': -.15em',1663,'wide3a":"',1673,'200%; ',1686,': -.05em',1663,194,1661,1769,1766,'accent":"',1686,': .02em',1663,384,'":"',1686,2006,'; font-style:italic',1663,1111,'":"',1686,2006,1880,'"});jsMath.noAppleSymbols=(jsMath.BBoxFor("&#x2223;").w==jsMath.BBoxFor("<',172,'font-family: ',1912,'\\">&#x2223;</span>").w);','if(jsMath.noAppleSymbols){jsMath.Update.TeXfonts({cmsy10:{"','16":{c:"<','span style=\\"position:relative',';top:.','25em; ',1673,'67%\\">&#x2323;</span><',2026,';top:-.15em;font-size:67%;','margin-left:-','1em\\">&#x2322',264,6,'normal"},"','22','":{c:"&#','x227A;<',2026,2027,'3em; ',2033,'1em\\">&','mdash',264,6,2037,'23',2039,'x227B;<',2026,2027,2043,2033,2045,'mdash',264,6,2037,'91','":{c:"&#x222A',';"},"92',2039,22,';"},"93',2063,';<',172,1673,'50%; ',2033,'1.1em; ',1686,':-.3em; margin-right:.4em\\">+</span','>"},"94',2039,34,';"},"95',2039,40,';"},"96":{c:"|<',2026,'; top:-.15em',262,2045,'ndash',264,6,2037,'109',2039,'x21D1;<',2026,'; top:.','1em',262,'6em\\">&#x21D3',264,'h:0.9,d:0.2,',6,1711,'"}},cmex10:{"85',2063,';<',172,1673,'50%; ',2033,'1.1em; ',1686,2076,'>"},"93',2063,';<',172,1673,'50%; ',2033,'1.1em; ',1686,2076,'>"}}});jsMath.Macro("rightleftharpoons","\\\\unicode{x21CC}");}else{',1659,'harpoon',1661,1912,'; ',1673,'125%"});}','if(jsMath.browser=="','OmniWeb"){jsMath.Update.TeXfonts({cmsy10:{"55":{c:"<',172,1673,'75%; ','position:relative','; left:.3em',2085,262,'3em\\">&#x02EB;</span>"},"104":{c:"<',2026,2096,'2em',262,'55em\\">&#x3008;</span>"},"105":{c:"<',2026,2096,'2em','; margin-right',':-.55em\\">&#x3009;</span>"}}});',1659,'arrow2',1661,1703,'; ',1673,'100%; ',1686,': -.',1709,'"});',2024,'22',2039,'x227A;<',2026,2027,'25em',262,'8em',2150,':.2em\\">&ndash',264,6,2037,'23',2039,'x227B;<',2026,2027,'25em',262,'7em',2150,':.',2045,'ndash',264,6,2037,'96":{c:"<',172,'font-size:80%; ',2137,2085,'\\">|</span><',2026,'; top:-.1em',262,2045,'ndash',264,6,'normal"}}});}}',2132,'Opera"){',1659,14,'":"margin:0pt .12em 0pt 0pt',1766,63,2210,';"});}',2132,'Mozilla','"){jsMath.Setup.Script("jsMath-fallback-mac-','mozilla.js");}',2132,'MSIE',2217,'msie.js");}jsMath.Macro("not","\\\\mathrel{\\\\rlap{\\\\kern 4mu/}}");jsMath.Box.defaultH=0.8;']
+  ['jsMath.Add(jsMath.TeX,{cmr10',':[{c:"&Gamma;",','tclass:"greek"},{c:"&','Delta;",',2,'Theta;",',2,'Lambda;",',2,'Xi;",',2,'Pi;",',2,'Sigma;",',2,'Upsilon;",',2,'Phi;",',2,'Psi;",',2,'Omega;",','tclass:"','greek','"},{c:"','ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"normal"},{c',':"fi",',28,':"fl",',28,':"ffi",',28,':"ffl",',28,':"&#x131',';",a:0,',28,':"j",d:0.2,',28,':"&#x60;",',22,'accent','"},{c:"&#','xB4;",',22,44,45,'x2C7;",',22,44,45,'x2D8;",',22,44,'"},{c:\'<span style="','position:relative; top',':.1em">&#x2C9',';</span>\',',22,44,45,'x2DA;",',22,44,45,'x0327;",',28,':"&#xDF;",',28,':"&#xE6',38,28,':"&#x153',38,28,':"&#xF8;",',28,':"&#xC6;",',28,':"&#x152;",',28,':"&#xD8;",',28,':"?",krn:{"108":-0.278,"76":-0.319},',28,':"!",lig:{"96":60},',28,':"&#x201D;",',28,':"#",',28,':"$",',28,':"%",',28,':"&amp;",',28,':"&#x2019;",krn:{"63":0.111,"33":0.','111},','lig:{"39":34},',28,':"(",','d:0.2,',28,':")",',105,28,':"*",',28,':"+",','a:0.1,',28,':",",a:-0.3,d:0.2,','w:0.278,',28,':"-",a:0,lig:{"45":123},',28,':".",a:-0.','25,',28,':"/",',28,':"0",',28,':"1",',28,':"2",',28,':"3",',28,':"4",',28,':"5",',28,':"6",',28,':"7",',28,':"8",',28,':"9",',28,':":",',28,':";",',28,':"&#xA1;",',28,':"=",a:0,d:-0.1,',28,':"&#xBF;",',28,':"?",lig:{"96":62},',28,':"@",',28,':"A','",krn:{"','116','":-0.0278,"','67',162,'79',162,'71',162,'85',162,'81',162,'84','":-0.0833,"','89',174,'86','":-0.111',',"87":-0.',101,28,':"B",',28,':"C",',28,':"D',160,'88',162,'87',162,'65',162,'86',162,'89','":-0.0278','},',28,':"E",',28,':"F',160,'111',174,'101',174,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',162,'67',162,'71',162,'81',197,'},',28,':"G",',28,':"H",',28,':"I',160,'73":','0.0278','},',28,':"J",',28,':"K',160,'79',162,'67',162,'71',162,'81',197,'},',28,':"L',160,'84',174,'89',174,'86',178,179,101,28,':"M",',28,':"N",',28,':"O',160,'88',162,'87',162,'65',162,'86',162,'89',197,'},',28,':"P',160,'65',174,'111',162,'101',162,'97',162,'46',174,'44":-0.0833},',28,':"Q",','d:0.1,',28,':"R',160,'116',162,'67',162,'79',162,'71',162,'85',162,'81',162,'84',174,'89',174,'86',178,179,101,28,':"S",',28,':"T',160,'121',162,'101',174,'111',209,'0833,"117":-0.0833','},',28,':"U",',28,':"V",','ic:0.0139,krn:{"','111',174,'101',174,'117',209,'111,"79',162,'67',162,'71',162,'81',197,'},',28,':"W",',329,'111',174,'101',174,'117',209,'111,"79',162,'67',162,'71',162,'81',197,'},',28,':"X',160,'79',162,'67',162,'71',162,'81',197,'},',28,':"Y",ic:0.025,','krn:{"101',174,'111',209,323,'},',28,':"Z",',28,':"[",',288,28,':"&#x201C;",',28,':"]",',288,28,':"&#x2C6;",',22,44,45,'x2D9;",',22,44,45,'x2018;",lig:{"96":92},',28,':"a','",a:0,krn:{"','118',162,'106','":0.0556,"','121',162,'119',197,'},',28,':"b',160,'101','":0.0278,"','111',419,'120',162,'100',419,'99',419,'113',419,'118',162,'106',409,'121',162,'119',197,'},',28,':"c',405,'104',162,'107',197,'},',28,':"d",',28,':"e",a:0,',28,':"f',26,'12,"102":11,"108":13},',28,':"g','",a:0,d:0.2,',329,'106":',227,'},',28,':"h',160,'116',162,'117',162,'98',162,'121',162,'118',162,'119',197,'},',28,':"i",',28,40,28,':"k',160,'97','":-0.0556,"','101',162,'97',162,'111',162,'99',197,'},',28,':"l",',28,':"m',405,'116',162,'117',162,'98',162,'121',162,'118',162,'119',197,'},',28,':"n',405,'116',162,'117',162,'98',162,'121',162,'118',162,'119',197,'},',28,':"o',405,'101',419,'111',419,'120',162,'100',419,'99',419,'113',419,'118',162,'106',409,'121',162,'119',197,'},',28,':"p',457,377,419,'111',419,'120',162,'100',419,'99',419,'113',419,'118',162,'106',409,'121',162,'119',197,'},',28,':"q',457,28,':"','r",a:0,',28,':"s",a:0,',28,':"t',160,'121',162,'119',197,'},',28,':"u',405,'119',197,'},',28,':"v",a:0,',329,'97',486,'101',162,'97',162,'111',162,'99',197,'},',28,':"w",a:0,',329,'101',162,'97',162,'111',162,'99',197,'},',28,':"x",a:0,',28,':"y',457,329,'111',162,'101',162,'97',162,'46',174,'44":-0.0833},',28,':"z",a:0,',28,':"&#x2013',';",a:0.1,','ic:0.0278,','lig:{"45":124},',28,':"&#x2014',645,646,28,':"&#x2DD;",',22,44,45,'x2DC;",',22,44,45,'xA8;",',22,44,'"}],cmmi10',1,'ic:0.139',',krn:{"61":-0.0556,"59":-0.111,"58":-0.111,"127":0.','0833},',22,'igreek"},{c:"&',3,'krn:{"127":0.','167},',22,670,5,'ic:',227,',krn:{"127":0.','0833},',22,670,7,672,'167},',22,670,9,'ic:0.0757',679,'0833},',22,670,11,'ic:0.0812,krn:{"61',486,'59":-0.0556,"58":-0.0556,"127":0.','0556},',22,670,13,'ic:0.0576',679,'0833},',22,670,15,'ic:0.139',667,'0556},',22,670,17,672,'0833},',22,670,19,'ic:0.11,krn:{"61',486,697,'0556},',22,670,21,'ic:0.0502',679,'0833},',22,670,'alpha',645,'ic:0.0037',679,'0278},',2,'beta',';",d:0.1,','ic:0.0528',679,'0833},',2,'gamma',645,288,'ic:0.0556,',2,'delta;",ic:0.0378,krn:{"',697,'0556},',2,'epsilon;",a:0',679,'0556},',22,'lucida"},{c:"&zeta',738,'ic:0.0738',679,'0833},',2,'eta',645,288,'ic:0.0359',679,'0556},',2,'theta;",ic:',227,679,'0833},',2,'iota;",a:0.1',679,'0556},',2,'kappa',645,2,'lambda;",',2,'mu',645,'d:0.1',679,'0278},',2,'nu',645,'ic:0.0637,krn:{"',697,'0278},',2,'xi',738,'ic:0.046',679,101,2,'pi',645,'ic:0.0359,',2,'rho',645,'d:0.1',679,'0833},',2,'sigma',645,803,'krn:{"59',486,'58":-0.0556','},',2,'tau',645,'ic:0.113,krn:{"',697,'0278},',2,'upsilon',645,'ic:0.0359',679,'0278},',2,'phi;",a:0.3,d:0.1',679,'0833},',2,'chi',645,'d:0.1',679,'0556},',2,'psi;",','a:0.3,d:0.1,','ic:0.0359',679,101,2,'omega',645,803,2,752,'.1',679,'0833},',22,'greek',45,'x3D1;",',672,'0833},',22,'greek',45,'x3D6',645,646,22,'lucida',45,'x3F1',645,'d:0.2',679,'0833},',22,'lucida',45,'x3C2',645,'d:0.2,ic:0.','0799',679,'0833},',22,'greek',45,'x3D5',645,'d:0.1',679,'0833},',22,'greek',45,'x21BC',';",a:0,d:-0.','2,',22,'harpoon',45,'x21BD',896,'1,',22,'harpoon',45,'x21C0',896,'2,',22,'harpoon',45,'x21C1',896,'1,',22,'harpoon',57,'font-size: 133%; ',58,':.1em; margin:-.2em; left:-.05em">&#','x02D3',60,113,22,'lucida',57,919,58,921,'x02D2',60,113,22,'lucida',57,'font-size:50%">&#','x25B7',';</span>\',a:0,',22,'symbol',57,937,'x25C1',939,22,941,24,'0",',28,':"1",',28,':"2",',28,':"3",',28,':"4",',28,':"5",',28,':"6",',28,':"7",',28,':"8",',28,':"9",',28,120,'3,',28,115,28,':"&lt',645,28,':\'<span style="','font-size',':133%; ',58,':.1em">/</','span>\',',288,'krn:{"1',486,'65',486,'77',486,'78',486,'89',409,'90":-0.0556},',28,':"&gt',645,28,977,937,'x2605',939,'tclass:"symbol"},{c:"&#','x2202;",ic:0.0556',679,'0833},',28,':"A",',672,'139','},tclass:"italic"},{c:"','B",ic:0.0502',679,'0833',1011,'C",ic:0.0715,krn:{"61',162,697,'0833',1011,'D",ic:',227,679,'0556',1011,'E",ic:0.0576',679,'0833',1011,'F",ic:0.139',667,'0833',1011,'G",',672,'0833',1011,'H",ic:0.0812,krn:{"61',486,697,'0556',1011,'I",ic:0.0785',679,'111',1011,'J",ic:0.0962',667,'167',1011,'K",ic:0.0715,krn:{"61',486,697,'0556',1011,'L",',672,'0278',1011,'M','",ic:0.109,krn:{"','61',486,697,'0833',1011,'N',1061,'61',174,'61',162,697,'0833',1011,'O",ic:',227,679,'0833',1011,'P",ic:0.139',667,'0833',1011,'Q",d:0.2',679,'0833',1011,'R",ic:0.00773',679,'0833',1011,'S",ic:0.0576,krn:{"61',486,697,'0833',1011,'T','",ic:0.139,krn:{"','61',162,697,'0833',1011,'U',1061,'59',178,',"58',178,',"61',486,'127":',227,1011,'V",ic:0.222,krn:{"59','":-0.167,"','58',1117,'61',178,1011,'W',1099,'59',1117,'58',1117,'61',178,1011,'X",ic:0.0785,krn:{"61',174,'61',162,697,'0833',1011,'Y",ic:0.222,krn:{"59',1117,'58',1117,'61',178,1011,'Z",ic:0.0715,krn:{"61',486,697,'0833},',22,'italic',45,'x266D;",',22,'symbol2',45,'x266E;",',22,'symbol2',45,'x266F;",',22,'symbol2',57,'position: relative; top',':.5em">&#x2323',939,'d:-0.1,',28,977,1165,':-.3em">&#x2322',939,'d:-0.1,',28,977,'margin:-.','2em">&#x2113',60,672,101,22,941,24,'a",a:0,',22,'italic"},{c:"','b",',22,1187,'c",a:0',679,'0556',1011,'d',160,'89',409,'90',486,'106',178,',"102',1117,'127":0.167',1011,'e",a:0',679,'0556',1011,'f",',880,'108,krn:{"',697,'167',1011,'g',457,'ic:0.0359',679,'0278',1011,'h',160,'127',197,1011,'i",',22,1187,'j",',880,'0572,krn:{"59',486,816,1011,'k",ic:0.0315,',22,1187,'l",ic:0.0197',679,'0833',1011,'m",a:0,',22,1187,'n",a:0,',22,1187,'o",a:0',679,'0556',1011,'p",a:0,d:0.2',679,'0833',1011,'q',457,'ic:0.0359',679,'0833',1011,583,646,'krn:{"',697,'0556',1011,'s",a:0',679,'0556',1011,'t",',672,'0833',1011,'u",a:0',679,'0278',1011,'v",a:0,ic:0.0359',679,'0278',1011,'w",a:0,ic:0.0269',679,'0833',1011,'x",a:0',679,'0278',1011,'y',457,'ic:0.0359',679,'0556',1011,'z",a:0,ic:0.044',679,'0556},',22,'italic',45,'x131;",a:0',679,'0278},',22,'italic',45,'x237',38,'d:0.2',679,'0833},',22,'italic',45,'x2118;",d:0',679,101,22,'asymbol',57,'position:relative; left: .4em; top: -.8em; ',978,': 50%">&#x2192',60,'ic:0.154,',1003,'x0311;",ic:0.399,',22,'normal"}],cmsy10:[{c:"&#x2212',645,1003,'xB7',896,'2,',1003,'xD7',38,22,941,57,58,':.3em">&#x2A',939,1003,'xF7',38,1003,'x25CA;",',22,'lucida',45,'xB1',645,1003,'x2213;",',1003,'x2295;",',1003,'x2296;",',1003,'x2297;",',1003,'x2298;",',1003,'x2299;",',22,'symbol3',45,'x25EF;",',22,941,57,58,':.25em;">&#xB0',60,'a:0.3,d:-0.3,',1003,'x2022;",a:0.2,d:-0.25,',1003,'x224D',645,1003,'x2261',645,1003,'x2286;",',1003,'x2287;",',1003,'x2264;",',1003,'x2265;",',1003,'x2AAF;",',1003,'x2AB0;",',22,941,'"},{c:"~",a:0,d:-0.2,',28,':"&#x2248',645,'d:-0.1,',1003,'x2282;",',1003,'x2283;",',1003,'x226A;",',1003,'x226B;",',1003,'x227A;",',1003,'x227B;",',1003,'x2190',896,'15,',22,'arrows',45,'x2192',896,'15,',22,'arrows',45,'x2191',';",h:0.85,',22,'arrow1a',45,'x2193',1435,22,'arrow1a',45,'x2194',38,22,'arrow1',45,'x2197',1435,288,22,'arrows',45,'x2198',1435,288,22,'arrows',45,'x2243',645,1003,'x21D0',645,22,'arrows',45,'x21D2',645,22,'arrows',45,'x21D1;",h:0.7,',22,'asymbol"},{c:"&#','x21D3;",h:0.7,',22,1476,'x21D4',645,22,'arrows',45,'x2196',1435,288,22,'arrows',45,'x2199',1435,288,22,'arrows',45,'x221D',645,'d:-0.1,',22,941,57,919,'margin-right',': -.1em; ',1165,':.4em">&#x2032',939,22,'lucida',45,'x221E',645,1003,'x2208;",',1003,'x220B;",',1003,'x25B3;",',1003,'x25BD;",',22,941,'"},{c:"/",',22,941,57,978,':50%; ',58,':-.3em; ',1504,':-.2em">|</',982,'a:0,',28,':"&#x2200;",',1003,'x2203;",',1003,'xAC',896,'1,',22,'symbol1',45,'x2205;",',1003,'x211C;",',22,1476,'x2111;",',22,1476,'x22A4;",',1003,'x22A5;",',1003,'x2135;",',22,941,24,'A',160,'48":0.194},',22,'cal"},{c:"','B",ic:0.0304',',krn:{"48":0.','139},',22,1567,'C",ic:0.0583',1569,'139},',22,1567,'D",ic:',227,1569,'0833},',22,1567,'E",ic:0.0894',1569,101,22,1567,'F",ic:0.0993',1569,101,22,1567,'G",',880,'0593',1569,101,22,1567,'H",ic:0.00965',1569,101,22,1567,'I",ic:0.0738',1569,'0278},',22,1567,'J",',880,'185',1569,'167},',22,1567,'K",ic:0.0144',1569,'0556},',22,1567,'L',160,'48":0.139},',22,1567,'M',160,'48":0.139},',22,1567,'N",ic:0.147',1569,'0833},',22,1567,'O",ic:',227,1569,101,22,1567,'P",ic:0.0822',1569,'0833},',22,1567,'Q",d:0.2',1569,101,22,1567,'R',160,'48":0.0833},',22,1567,'S",ic:0.075',1569,'139},',22,1567,'T",ic:0.254',1569,'0278},',22,1567,'U",ic:0.0993',1569,'0833},',22,1567,'V",ic:0.0822',1569,'0278},',22,1567,'W",ic:0.0822',1569,'0833},',22,1567,'X",ic:0.146',1569,'139},',22,1567,'Y",ic:0.0822',1569,'0833},',22,1567,'Z",ic:0.0794',1569,'139},',22,'cal',45,'x22C3;",',1003,'x22C2;",',1003,'x228E;",',1003,'x22C0;",',1003,'x22C1;",',1003,'x22A2;",',1003,'x22A3;",',1003,'x23A3',';",h:1,d:0.','3,',22,1476,'x23A6',1715,'3,',22,1476,'x23A1',1715,'3,',22,1476,'x23A4',1715,'3,',22,'asymbol"},{c',':"{",',105,28,':"}",',105,28,':"&#x27E8;",h:0.9,',288,22,1476,'x27E9;",h:0.9,',288,22,1733,':"|",',105,22,'vertical','"},{c:"||",',105,22,'vertical',45,'x2195',738,22,'arrow1',45,'x21D5',738,22,'arrow1',57,1177,'1em">&#x2216',60,842,22,'lucida',45,'x2240;",',22,'asymbol',57,58,': .86em">&#x221A',60,'h:0.04,d:0.9,',22,'lucida',45,'x2210',738,1003,'x2207;",',1003,'x222B;",h:1,',288,'ic:0.111,',22,'root',45,'x2294;",',1003,'x2293;",',1003,'x2291;",',1003,'x2292;",',1003,'xA7',738,28,':"&#x2020',738,28,':"&#x2021',738,28,':"&#xB6;",',842,22,'lucida',45,'x2663;",',1003,'x2666;",',1003,'x2665;",',1003,'x2660;",',22,941,'"}],cmex10:[{c',104,'h:0.04,d:1.16,n:','16,',22,'delim1"},{c',107,1829,'17,',22,1832,386,1829,'104,',22,1832,391,1829,'105,',22,'delim1',45,1714,'",',1829,'106,',22,'delim1a',45,'x23A6;",',1829,'107,',22,'delim1a',45,'x23A1;",',1829,'108,',22,'delim1a',45,'x23A4;",',1829,'109,',22,'delim1a"},{c:"{",',1829,'110,',22,1832,1737,1829,'111,',22,'delim1',45,'x3008;",',1829,'68,',22,'delim1c',45,'x3009;",',1829,'69,',22,'delim1c"},{c:"|",','h:0.7,d:0.15,delim:{rep:','12},',22,'vertical1',1752,1894,'13},',22,'vertical1',45,'x2215;",',1829,'46,',22,'delim1b',45,'x2216;",',1829,'47,',22,'delim1b','"},{c:"(",','h:0.04,d:1.76,n:','18,',22,'delim2"},{c',107,1916,'19,',22,'delim2',1915,'h:0.04,d:2.36,n:','32,',22,'delim3"},{c',107,1926,'33,',22,1929,386,1926,'34,',22,1929,391,1926,'35,',22,'delim3',45,1714,';",',1926,'36,',22,'delim3a',45,'x23A6;",',1926,'37,',22,'delim3a',45,'x23A1;",',1926,'38,',22,'delim3a',45,'x23A4;",',1926,'39,',22,'delim3a',57,'margin: -.1em','">{</',982,1926,'40,',22,'delim3',57,1971,'">}</',982,1926,'41,',22,'delim3',45,'x3008;",',1926,'42,',22,'delim3c',45,'x3009;",',1926,'43,',22,'delim3c',45,'x2215;",',1926,'44,',22,'delim3b',45,'x2216;",',1926,'45,',22,'delim3b',1915,'h:0.04,d:2.96,','n:48,',22,'delim4"},{c',107,2011,'n:49,',22,2014,386,2011,'n:50,',22,2014,391,2011,'n:51,',22,'delim4',45,1714,';",',2011,'n:52,',22,'delim4a',45,'x23A6;",',2011,'n:53,',22,'delim4a',45,'x23A1;",',2011,'n:54,',22,'delim4a',45,'x23A4;",',2011,'n:55,',22,'delim4a',57,1971,'">{</',982,2011,'n:56,',22,'delim4',57,1971,'">}</',982,2011,'n:57,',22,'delim4',45,'x3008;",',2011,22,'delim4c',45,'x3009;",',2011,22,'delim4c',45,'x2215;",',2011,22,'delim4b',45,'x2216;",',2011,22,'delim4b',45,'x2215;",',1916,'30,',22,'delim2b',45,'x2216;",',1916,'31,',22,'delim2b',45,'x239B',';",h:1,d:0.2,delim:{','top:48,bot:64,rep:66},',22,1476,'x239E',2105,'top:49,bot:65,rep:67},',22,1476,'x23A1',2105,'top:50,bot:52,rep:54},',22,1476,'x23A4',2105,'top:51,bot:53,rep:55},',22,1476,1714,2105,'bot:52,rep:54},',22,1476,'x23A6',2105,'bot:53,rep:55},',22,1476,'x23A2',2105,'top:50,rep:54},',22,1476,'x23A5',2105,'top:51,rep:55},',22,1476,'x23A7',2105,'top:56,mid:60,bot:58,rep:62},',22,1476,'x23AB',2105,'top:57,mid:61,bot:59,rep:62},',22,1476,'x23A9',2105,'top:56,bot:58,rep:62},',22,1476,'x23AD',2105,'top:57,bot:59,rep:62},',22,1476,'x23A8',2105,'rep:63},',22,1476,'x23AC',2105,'rep:119},',22,1476,'x23AA',2105,'rep:62},',22,1476,'x23AA;",h:0.95,d:0.05,delim:{top:120,bot:121,rep:63},',22,'arrow1a',45,'x239D',2105],
+  ['top:56,bot:59,rep:62},','tclass:"','asymbol','"},{c:"&#','x23A0',';",h:1,d:0.2,delim:{','top:57,bot:58,rep:62},',1,2,3,'x239C',5,'rep:66},',1,2,3,'x239F',5,'rep:67},',1,2,3,'x3008;",','h:0.04,d:1.76,n:','28,',1,'delim2c',3,'x3009;",',23,'29,',1,26,3,'x2294;",h:-0.','2,d:1,n:71,',1,'bigop1',3,34,'1,d:1.2,',1,'bigop2',3,'x222E',';",h:0,d:1.11,ic:0.095,n:','73,',1,'bigop1c',3,'x222E;",h:0,d:2.22,ic:0.222,',1,'bigop2c',3,'x2299',';",h:0,d:1,n:','75,',1,37,3,'x2299',';",h:0.1,d:1.','2,',1,42,3,'x2295;",h:0.','2,d:0.9,n:','77,',1,37,3,66,'4,d:1.2,',1,42,3,'x2297;",h:0.',67,'79,',1,37,3,77,'4,d:1.2,',1,42,3,'x2211',55,'88,',1,'bigop1a',3,'x220F',55,'89,',1,92,3,'x222B',45,'90,',1,48,3,'x222A',55,'91,',1,'bigop1b',3,'x2229',55,'92,',1,110,3,'x228E;",h:-0.','2,d:1.1,n:93,',1,110,3,'x2227',55,'94,',1,37,3,'x2228',55,'95,',1,37,3,'x2211',61,'6,',1,'bigop2a',3,'x220F',61,'6,',1,139,3,'x222B;",h:0,d:2.22,ic:0.222,',1,52,3,'x222A',61,'5,',1,'bigop2b',3,'x2229',61,'5,',1,155,3,118,'3,d:1.6,',1,155,3,'x2227',61,'2,',1,42,3,'x2228',61,'2,',1,42,3,'x2210;",h:0,d:0.9,n:97,',1,92,3,'x2210',61,'4,',1,139,3,'xFE3F;",h:0.','722,w:0.','65,n:99,',1,'wide1',3,190,'85,w:1.1,n:100,',1,'wide2',3,190,'99,w:1.65,',1,'wide3',3,'x2053;",h:0.',191,'75,n:102,',1,'wide1a',3,206,'8,w:1.35,n:103,',1,'wide2a',3,206,'99,w:2,',1,'wide3a"},{c:"[",',23,'20,',1,'delim2','"},{c:"]",',23,'21,',1,224,3,'x23A3;",',23,'22,',1,'delim2a',3,'x23A6;",',23,'23,',1,235,3,'x23A1;",',23,'24,',1,235,3,'x23A4;",',23,'25,',1,235,'"},{','c:\'<span style="','margin: -.1em','">{</span>\',',23,'26,',1,224,'"},{',255,256,'">}</span>\',',23,'27,',1,224,'"},{c:\'<span style="font-size',': 125','%; position:relative; top:.','95em','">&#x221A;</span>\',h:0.','04,d:1.16,n:113,',1,'root',270,': 190',272,'925em">&#x221A;</span>\',',23,'114,',1,277,270,': 250',272,'925em',274,'06,d:2.36,n:115,',1,277,270,': 320',272,'92em',274,'08,d:2.96,n:116,',1,277,270,': 400',272,'92em',274,'1,d:3.75,n:117,',1,277,270,': 500',272,'9em',274,'12,d:4.5,n:118,',1,277,270,': 625',272,'9em',274,'14,d:5.7,',1,277,270,':130%">&#x2016;</span>\',h:0.9,delim:{top:126,bot:127,rep:119},',1,2,3,'x2191',';",h:0.9,d:0,delim:{','top:120,rep:63},',1,'arrow1a',3,'x2193',332,'bot:121,rep:63},',1,335,270,': 67',272,'35em','; margin-left:-.','5em">&#','x256D',';</span>\',h:0.1,',1,'symbol',270,': 67',272,'35em','; margin-right:-.',347,'x256E',349,1,351,270,': 67',272,'35em',346,347,'x2570',349,1,351,270,': 67',272,'35em',356,347,'x256F',349,1,351,3,'x21D1',';",h:0.7,delim:{','top:126,rep:119},',1,2,3,'x21D3',384,'bot:127,rep:119},',1,2,'"}],cmti10',':[{c:"&Gamma;",','ic:0.133,',1,'igreek"},{c:"&','Delta;",',1,398,'Theta;",','ic:0.094,',1,398,'Lambda;",',1,398,'Xi;",ic:0.153,',1,398,'Pi;",ic:0.164,',1,398,'Sigma;",','ic',':0.12,',1,398,'Upsilon;",','ic:0.111,',1,398,'Phi;",','ic:0.0599,',1,398,'Psi;",','ic:0.111,',1,398,'Omega;",','ic:0.103,',1,'igreek','"},{c:"ff','",ic:0.212,krn:{"39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":','14,"108":15},','tclass:"italic"},{c',':"fi','",ic:0.103,',439,':"fl',441,439,':"ffi',441,439,':"ffl',441,439,':"&#x131;",a:0,','ic:0.','0767,',439,':"j",d:0.2,','ic:0.0374,',439,':"&#x60;",',1,'iaccent',3,'xB4;",','ic:0.0969,',1,461,3,'x2C7;",','ic:0.083,',1,461,3,'x2D8;",','ic:0.108,',1,461,3,'x2C9;",',433,1,461,3,'x2DA;",',1,461,'"},{c:"?",','d:0.17,w:0.46,',439,':"&#xDF;",','ic:0.105,',439,':"&#xE6;",a:0,','ic:0.0751,',439,':"&#x153;",a:0,',493,439,':"&#xF8;",','ic:0.0919,',439,':"&#xC6;",','ic',417,439,':"&#x152;",','ic',417,439,':"&#xD8;",',403,439,':"?",krn:{"108":-0.','256,"76":-0.321},',439,':"!",','ic:0.124,lig:{"96":','60},',439,':"&#x201D;",','ic:0.0696,',439,':"#",ic:0.0662,',439,':"$",',439,':"%",ic:0.136,',439,':"&amp;",','ic:0.0969,',439,':"&#x2019;",','ic:0.124,','krn:{"63":0.','102,"33":0.102},lig:{"39":34},',439,':"(",d:0.2,','ic:0.162,',439,':")",d:0.2,','ic:0.0369,',439,':"*",ic:0.149,',439,':"+",a:0.1,','ic:0.0369,',439,':",",a:-0.3,d:0.2,w:0.278,',439,':"-",a:0,ic:0.0283',',lig:{"45":','123},',439,':".",a:-0.25,',439,':"/",ic:0.162,',439,':"0",ic:0.136,',439,':"1",ic:0.136,',439,':"2",ic:0.136,',439,':"3",ic:0.136,',439,':"4",ic:0.136,',439,':"5",ic:0.136,',439,':"6",ic:0.136,',439,':"7",ic:0.136,',439,':"8",ic:0.136,',439,':"9",ic:0.136,',439,':":",ic:0.0582,',439,':";",ic:0.0582,',439,':"&#xA1;",','ic:0.0756,',439,':"=",a:0,d:-0.1,','ic:0.0662,',439,':"&#xBF;",',439,':"?",','ic:0.122,','lig:{"96":','62},',439,':"@",ic:0.096,',439,':"A",','krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.0256,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',599,'86','":-0.102,"','87',603,'101','":-0.0511,"','97',607,'111',607,'100',607,'99',607,'103',607,'113','":-0.0511','},',439,':"B',441,439,':"C",','ic:0.145,',439,':"D",',403,'krn:{"88','":-0.0256,"','87',631,'65',631,'86',631,'89":-0.','0256},',439,':"E",ic',417,439,':"F','",ic:0.133,krn:{"','111',599,'101',599,'117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',603,'79',631,'67',631,'71',631,'81":-0.0256','},',439,':"G",ic:0.0872,',439,':"H",ic:0.164,',439,':"I",ic:0.158,',439,':"J",ic:0.14,',439,':"K",',626,'krn:{"79',631,'67',631,'71',631,660,'},',439,':"L",krn:{"84',599,'89',599,'86',603,'87',603,'101',607,'97',607,'111',607,'100',607,'99',607,'103',607,'113',619,'},',439,':"M",ic:0.164,',439,':"N",ic:0.164,',439,':"O",',403,'krn:{"88',631,'87',631,'65',631,'86',631,638,'0256},',439,':"P',441,'krn:{"65":-0.0767},',439,':"Q",d:0.1,',403,439,':"R",ic:0.0387,',597,'0.0256,"84',599,'89',599,'86',603,'87',603,'101',607,'97',607,'111',607,'100',607,'99',607,'103',607,'113',619,'},',439,':"S",ic',417,439,':"T',645,'121',599,'101',599,'111',651,'117',599,'65":-0.0767},',439,':"U",ic:0.164,',439,':"V",ic:0.','184,krn:{"','111',599,'101',599,'117',651,'65',603,'79',631,'67',631,'71',631,660,'},',439,':"W",ic:0.',774,'65":-0.0767},',439,':"X",ic:0.158,krn:{"79',631,'67',631,'71',631,660,'},',439,':"Y",ic:0.','194',',krn:{"101',599,'111',651,'117',599,'65":-0.0767},',439,':"Z",',626,439,':"[",d:0.1,','ic:0.188,',439,':"&#x201C;",','ic:0.169,',439,':"]",d:0.1,','ic:0.105,',439,':"&#x2C6;",','ic:0.0665,',1,461,3,'x2D9;",','ic:0.118,',1,461,3,'x2018;",',516,'92},',439,':"a','",a:0,ic:0.',454,439,':"b",ic:0.0631',807,607,'97',607,'111',607,'100',607,'99',607,'103',607,'113',619,'},',439,':"c',842,'0565',807,607,'97',607,'111',607,'100',607,'99',607,'103',607,'113',619,'},',439,':"d',441,'krn:{"108":','0.0511},',439,':"e',842,'0751',807,607,'97',607,'111',607,'100',607,'99',607,'103',607,'113',619,'},',439,':"f',437,'12,"102":11,"108":13},',439,':"g','",a:0,d:0.2,ic:0.','0885,',439,':"h",ic:0.',454,439,':"i",ic:0.102,',439,456,626,439,':"k",',474,439,':"l',441,883,'0.0511},',439,':"m',842,454,439,':"n',842,454,'krn:{"39":-0.102},',439,':"o',842,'0631',807,607,'97',607,'111',607,'100',607,'99',607,'103',607,'113',619,'},',439,':"p',910,'0631',807,607,'97',607,'111',607,'100',607,'99',607,'103',607,'113',619,'},',439,':"q',910,'0885,',439,':"r',842,'108',807,607,'97',607,'111',607,'100',607,'99',607,'103',607,'113',619,'},',439,':"s',842,'0821,',439,':"t",ic:0.0949,',439,':"u',842,454,439,':"v',842,'108,',439,':"w',842,1011,883,'0.0511},',439,':"x',842,'12,',439,':"y',910,'0885,',439,':"z',842,'123,',439,':"&#x2013;",a:0.1,ic:0.','0921',550,'124},',439,':"&#x2014;",a:0.1,ic:0.','0921,',439,':"&#x2DD;",',590,1,461,3,'x2DC;",','ic:0.116,',1,461,3,'xA8;",',1,461,'"}],cmbx10',395,1,'bgreek"},{c:"&','Delta;",',1,1055,402,1,1055,'Lambda;",',1,1055,'Xi;",',1,1055,'Pi;",',1,1055,415,1,1055,420,1,1055,424,1,1055,428,1,1055,432,1,'bgreek','"},{c:"ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"bold"},{c',':"fi",',1089,':"fl",',1089,':"ffi",',1089,':"ffl",',1089,452,1089,456,1089,':"&#x60;",',1,'baccent',3,463,1,1104,3,468,1,1104,3,473,1,1104,3,478,1,1104,3,'x2DA;",',1,1104,486,1089,489,1089,492,1089,495,1089,498,1089,501,1089,505,1089,509,1089,512,'278,"76":-0.319},',1089,515,591,'60},',1089,519,1089,':"#",',1089,':"$",',1089,':"%",',1089,528,1089,531,533,'111,"33":0.111},lig:{"39":34},',1089,536,1089,539,1089,':"*",',1089,544,1089,':",",a:-0.3,d:0.2,w:0.278,',1089,':"-",a:0',550,'123},',1089,':".",a:-0.25,',1089,':"/",',1089,':"0",',1089,':"1",',1089,':"2",',1089,':"3",',1089,':"4",',1089,':"5",',1089,':"6",',1089,':"7",',1089,':"8",',1089,':"9",',1089,':":",',1089,':";",',1089,581,1089,584,1089,':"&#xBF;",',1089,589,591,'62},',1089,':"@",',1089,':"A",krn:{"116','":-0.0278,"','67',1217,'79',1217,'71',1217,'85',1217,'81',1217,'84','":-0.0833,"','89',1229,'86":-0.','111,"87":-0.111},',1089,':"B",',1089,625,1089,':"D",krn:{"88',1217,'87',1217,'65',1217,'86',1217,638,'0278},',1089,':"E",',1089,':"F",krn:{"111',1229,'101',1229,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',1217,'67',1217,'71',1217,'81":-0.0278','},',1089,':"G",',1089,':"H",',1089,':"I",krn:{"73":0.0278},',1089,':"J",',1089,':"K",krn:{"79',1217,'67',1217,'71',1217,1264,'},',1089,':"L",krn:{"84',1229,'89',1229,1232,'111,"87":-0.111},',1089,':"M",',1089,':"N",',1089,':"O",krn:{"88',1217,'87',1217,'65',1217,'86',1217,638,'0278},',1089,':"P",krn:{"65',1229,'111',1217,'101',1217,'97',1217,'46',1229,'44":-0.0833},',1089,727,1089,':"R",krn:{"116',1217,'67',1217,'79',1217,'71',1217,'85',1217,'81',1217,'84',1229,'89',1229,1232,'111,"87":-0.111},',1089,':"S",',1089,':"T",krn:{"121',1217,'101',1229,'111',1257,'0833,"117":-0.0833','},',1089,':"U",',1089,773,'0139,krn:{"','111',1229,'101',1229,'117',1257,'111,"79',1217,'67',1217,'71',1217,1264,'},',1089,792,1353,'111',1229,'101',1229,'117',1257,'111,"79',1217,'67',1217,'71',1217,1264,'},',1089,':"X",krn:{"79',1217,'67',1217,'71',1217,1264,'},',1089,805,'025',807,1229,'111',1257,1347,'},',1089,815,1089,818,1089,821,1089,824,1089,827,1,1104,3,832,1,1104,3,837,591,'92},',1089,':"a','",a:0,krn:{"','118',1217,'106":0.','0556,"121',1217,'119":-0.','0278},',1089,':"b",krn:{"101','":0.0278,"','111',1435,'120',1217,'100',1435,'99',1435,'113',1435,'118',1217,1428,'0556,"121',1217,1431,'0278},',1089,':"c',1425,'104',1217,'107":-0.0278},',1089,':"d",',1089,':"e",a:0,',1089,':"f',1087,'12,"102":11,"108":13},',1089,':"g',910,1353,1428,'0278},',1089,':"h",krn:{"116',1217,'117',1217,'98',1217,'121',1217,'118',1217,1431,'0278},',1089,':"i",',1089,456,1089,':"k",krn:{"97":-0.0556,"101',1217,'97',1217,'111',1217,'99":-0.','0278},',1089,':"l",',1089,':"m',1425,'116',1217,'117',1217,'98',1217,'121',1217,'118',1217,1431,'0278},',1089,':"n',1425,'116',1217,'117',1217,'98',1217,'121',1217,'118',1217,1431,'0278},',1089,':"o",a:0',807,1435,'111',1435,'120',1217,'100',1435,'99',1435,'113',1435,'118',1217,1428,'0556,"121',1217,1431,'0278},',1089,':"p",a:0,d:0.2',807,1435,'111',1435,'120',1217,'100',1435,'99',1435,'113',1435,'118',1217,1428,'0556,"121',1217,1431,'0278},',1089,':"q",a:0,d:0.2,',1089,':"r",a:0,',1089,':"s",a:0,',1089,':"t",krn:{"121',1217,1431,'0278},',1089,':"u',1425,1431,'0278},',1089,':"v',842,1353,'97":-0.0556,"101',1217,'97',1217,'111',1217,1497,'0278},',1089,':"w',842,'0139',807,1217,'97',1217,'111',1217,1497,'0278},',1089,':"x",a:0,',1089,':"y',910,1353,'111',1217,'101',1217,'97',1217,'46',1229,'44":-0.0833},',1089,':"z",a:0,',1089,1031,'0278',550,'124},',1089,1036,'0278,',1089,1039,1,1104,3,1044,1,1104,3,'xA8;",',1,1104,'"}]});','jsMath.Setup.Styles({".typeset .','cmr10','":"font-family: ','serif','",".typeset .','italic":"font-style: italic',1655,'bold":"font-weight: bold',1655,'lucida','":"font-family: \'','Lucida Grande','\'",".typeset .',2,'":"font-family: \'Apple Symbols\'; font-size: ','125','%",".typeset .','cal',1661,'Apple Chancery',1663,'arrows','":"font-family: \'Hiragino Mincho Pro',1663,'Arrows',1661,'AppleGothic',1663,'arrow1',1673,'\'; ','position: relative; top',': .075em; margin: -1px',1655,335,1673,'\'; margin:-.','3em',1655,'harpoon',1653,1677,'; ','font-size: ','90',1667,351,1673,1663,'symbol2',1673,1687,'2em',1655,'symbol3',1653,1677,1655,'delim1',1653,'Times; ',1694,'133',272,'7em',1655,'delim1a',1665,'125',272,'75em',1655,'delim1b',1673,'\'; ',1694,'133',272,'8em; ',256,1655,'delim1c',1653,'Symbol; ',1694,'120',272,'8em',';",".typeset .',224,1653,'Baskerville','; ',1694,'180',272,1721,1655,235,1665,'175',272,'8em',1655,'delim2b',1673,'\'; ',1694,'190',272,'8em; ',256,1655,26,1653,'Symbol; ',1694,'167',272,'8em',1739,'delim3',1653,1742,'; ',1694,'250',272,'725em',1655,'delim3a',1665,'240',272,'78em',1655,'delim3b',1673,'\'; ',1694,'250',272,'8em; ',256,1655,'delim3c',1653,351,'; ',1694,'240',272,'775em',1739,'delim4',1653,1742,'; ',1694,'325',272,'7em',1655,'delim4a',1665,'310',272,1721,1655,'delim4b',1673,'\'; ',1694,'325',272,'8em; ',256,1655,'delim4c',1653,'Symbol; ',1694,'300',272,'8em',1739,'vertical',1653,'Copperplate',1655,'vertical1',1653,1839,'; ',1694,'85%; margin: .','15em',1739,'vertical2',1653,1839,'; ',1694,1846,'17em',1739,'greek',1673,'\', serif',346,'2em',356,'2em',1739,435,1673,'\', serif','; font-style:italic',346,'2em',356,'1em',1655,1085,1673,'\', serif','; font-weight:bold',1655,37,1673,'\'; ',1694,'133%; ',1682,': .7em; margin:-.','05em',1655,92,1653,1742,'; ',1694,'100%; ',1682,': .775em',1739,110,1673,'\'; ',1694,'160%; ',1682,': .67em','; margin:-.1em',1655,48,1665,'125%; ',1682,': .',1721,1904,1739,42,1673,'\'; ',1694,'200%; ',1682,': .6em; margin:-.07em',1655,139,1653,1742,'; ',1694,'175%; ',1682,1903,1739,155,1673,'\'; ',1694,'270%; ',1682,': .62em',1904,1655,52,1665,'250%; ',1682,1885,'17em',1739,194,'":"',1694,'67%; ',1682,':-.8em',1655,199,'":"',1694,'110%; ',1682,':-.5em',1655,204,'":"',1694,'175%; ',1682,':-.32em',1655,210,'":"',1694,'75%; ',1682,1959,1655,215,'":"',1694,'133%; ',1682,': -.15em',1655,'wide3a":"',1694,'200%; ',1682,': -.05em',1655,277,1653,1742,1739,'accent":"',1682,': .02em',1655,461,'":"',1682,1994,1868,1655,1104,'":"',1682,1994,1877,'"});','if(jsMath.browser=="','OmniWeb"){jsMath.Update.TeXfonts({cmsy10:{"55":{',255,1694,'75%; position:relative; left:.3em; top:-.15em',346,'3em">&#x02EB;</span>\'},"104','":{c:\'<span style="position:relative; top:.2em; margin-','left:-.55em">&#x3008;</span>\'},"105',2015,'right:-.55em">&#x3009;</span>\'}}});',1651,'arrow2',1653,'Symbol; ',1694,'100%; ',1682,': -.1em; margin:-1px"})}',2008,'Opera"){',1651,48,'":"margin:0pt .12em 0pt 0pt',1739,52,2031,';"})}',2008,'Mozilla','"){jsMath.Setup.Script("jsMath-fallback-mac-','mozilla.js")}',2008,'MSIE',2038,'msie.js")}jsMath.Macro("not","\\\\mathrel{\\\\rlap{\\\\kern 4mu/}}");jsMath.Box.defaultH=0.8;']
 ]);
diff --git a/src/main/webapp/static/js/jsMath/jsMath-fallback-pc.js b/src/main/webapp/static/js/jsMath/jsMath-fallback-pc.js
index 00bb836ed9c9f2552d006e30eed5fd33dc9471b7..aa3bf67b3d43687a8cbbd655a514cb62377bbbce 100644
--- a/src/main/webapp/static/js/jsMath/jsMath-fallback-pc.js
+++ b/src/main/webapp/static/js/jsMath/jsMath-fallback-pc.js
@@ -8,7 +8,7 @@
  *
  *  ---------------------------------------------------------------------
  *
- *  Copyright 2004-2006 by Davide P. Cervone
+ *  Copyright 2004-2010 by Davide P. Cervone
  * 
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -24,6 +24,6 @@
  */
 
 jsMath.Script.Uncompress([
-  ['jsMath.Add(jsMath.TeX,{cmr10',':[{c:"&Gamma;",','tclass:"greek"},{c:"&','Delta;",',2,'Theta;",',2,'Lambda;",',2,'Xi;",',2,'Pi;",',2,'Sigma;",',2,'Upsilon;",',2,'Phi;",',2,'Psi;",',2,'Omega;",','tclass:"','greek','"},{c',':"ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"normal"},{c',':"fi",',28,':"fl",',28,':"ffi",',28,':"ffl",',28,':"&#x131',';",a:0,',28,':"j",','d:0.2,',28,':"&#x2CB;",',22,'accent','"},{c:"&#','x2CA;",',22,45,46,'x2C7;",',22,45,46,'x2D8;",',22,45,46,'x2C9;",',22,45,46,'x2DA;",',22,45,46,'x0327;",',28,':"&#xDF;",',28,':"&#xE6',38,28,':"&#x153',38,28,':"&#xF8;",',28,':"&#xC6;",',28,':"&#x152;",',28,':"&#xD8;",',28,':"?",krn:{"108":-0.278,"76":-0.319},',28,':"!",lig:{"96":60},',28,':"&#x201D;",',28,':"#",',28,':"$",',28,':"%",',28,':"&amp;",',28,':"&#x2019;",krn:{"63":0.111,"33":0.','111},','lig:{"39":34},',28,':"(",',41,28,':")",',41,28,':"*",',28,':"+",a:0.1,',28,':",",a:-','0.3,d:0.2,','w:0.278,',28,':"-",a:0,lig:{"45":123},',28,':".",a:-0.','25,',28,':"/",',28,':"0",',28,':"1",',28,':"2",',28,':"3",',28,':"4",',28,':"5",',28,':"6",',28,':"7",',28,':"8",',28,':"9",',28,':":",',28,':";",',28,':"&#xA1;",',28,':"=",a:0,d:-0.1,',28,':"&#xBF;",',28,':"?",lig:{"96":62},',28,':"@",',28,':"A','",krn:{"','116','":-0.0278,"','67',161,'79',161,'71',161,'85',161,'81',161,'84','":-0.0833,"','89',173,'86','":-0.111',',"87":-0.',100,28,':"B",',28,':"C",',28,':"D',159,'88',161,'87',161,'65',161,'86',161,'89','":-0.0278','},',28,':"E",',28,':"F',159,'111',173,'101',173,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',161,'67',161,'71',161,'81',196,'},',28,':"G",',28,':"H",',28,':"I',159,'73":0.','0278','},',28,':"J",',28,':"K',159,'79',161,'67',161,'71',161,'81',196,'},',28,':"L',159,'84',173,'89',173,'86',177,178,100,28,':"M",',28,':"N",',28,':"O',159,'88',161,'87',161,'65',161,'86',161,'89',196,'},',28,':"P',159,'65',173,'111',161,'101',161,'97',161,'46',173,'44":-0.0833},',28,':"Q",',41,28,':"R',159,'116',161,'67',161,'79',161,'71',161,'85',161,'81',161,'84',173,'89',173,'86',177,178,100,28,':"S",',28,':"T',159,'121',161,'101',173,'111',208,'0833,"117":-0.0833','},',28,':"U",',28,':"V",','ic:0.0139,krn:{"','111',173,'101',173,'117',208,'111,"79',161,'67',161,'71',161,'81',196,'},',28,':"W",',328,'111',173,'101',173,'117',208,'111,"79',161,'67',161,'71',161,'81',196,'},',28,':"X',159,'79',161,'67',161,'71',161,'81',196,'},',28,':"Y",ic:0.025,','krn:{"101',173,'111',208,322,'},',28,':"Z",',28,':"[",','d:0.1,',28,':"&#x201C;",',28,':"]",',386,28,':"&#x2C6;",',22,45,46,'x2D9;",',22,45,46,'x2018;",lig:{"96":92},',28,':"a','",a:0,krn:{"','118',161,'106":0.','0556,"121',161,'119',196,'},',28,':"b',159,'101','":0.0278,"','111',417,'120',161,'100',417,'99',417,'113',417,'118',161,407,'0556,"121',161,'119',196,'},',28,':"c',404,'104',161,'107',196,'},',28,':"d",',28,':"e",a:0,',28,':"f',26,'12,"102":11,"108":13},',28,':"g",','a:0,d:0.2,ic:0.','0139,krn:{"',407,226,'},',28,':"h',159,'116',161,'117',161,'98',161,'121',161,'118',161,'119',196,'},',28,':"i",',28,':"j",',41,28,':"k',159,'97','":-0.0556,"','101',161,'97',161,'111',161,'99',196,'},',28,':"l",',28,':"m',404,'116',161,'117',161,'98',161,'121',161,'118',161,'119',196,'},',28,':"n',404,'116',161,'117',161,'98',161,'121',161,'118',161,'119',196,'},',28,':"o',404,'101',417,'111',417,'120',161,'100',417,'99',417,'113',417,'118',161,407,'0556,"121',161,'119',196,'},',28,':"p",a:0,',41,376,417,'111',417,'120',161,'100',417,'99',417,'113',417,'118',161,407,'0556,"121',161,'119',196,'},',28,':"q",a:0,',41,28,':"','r",a:0,',28,':"s",a:0,',28,':"t',159,'121',161,'119',196,'},',28,':"u',404,'119',196,'},',28,':"v",a:0,',328,'97',484,'101',161,'97',161,'111',161,'99',196,'},',28,':"w",a:0,',328,'101',161,'97',161,'111',161,'99',196,'},',28,':"x",a:0,',28,':"y",',454,455,'111',161,'101',161,'97',161,'46',173,'44":-0.0833},',28,':"z",a:0,',28,':"&#x2013',';",a:0.1,','ic:0.0278,','lig:{"45":124},',28,':"&#x2014',641,642,28,':"&#x2DD;",',22,45,46,'x2DC;",',22,45,46,'xA8;",',22,45,'"}],cmmi10',1,'ic:0.139',',krn:{"61":-0.0556,"59":-0.111,"58":-0.111,"127":0.','0833},',22,'igreek"},{c:"&',3,'krn:{"127":0.','167},',22,666,5,'ic:0.',226,',krn:{"127":0.','0833},',22,666,7,668,'167},',22,666,9,'ic:0.0757',675,'0833},',22,666,11,'ic:0.0812,krn:{"61',484,'59":-0.0556,"58":-0.0556,"127":0.','0556},',22,666,13,'ic:0.0576',675,'0833},',22,666,15,'ic:0.139',663,'0556},',22,666,17,668,'0833},',22,666,19,'ic:0.11,krn:{"61',484,693,'0556},',22,666,21,'ic:0.0502',675,'0833},',22,666,'alpha',';",a:0,ic:0.','0037',675,226,'},',2,'beta;",','d:0.2,ic:0.','0528',675,'0833},',2,'gamma;",',454,'0556,',2,'delta;",ic:0.0378,krn:{"',693,'0556},',2,'epsilon;",a:0',675,'0556},',22,'lucida',24,':"&zeta;",',735,'0738',675,'0833},',2,'eta;",',454,'0359',675,'0556},',2,'theta;",ic:0.',226,675,'0833},',2,'iota;",a:0',675,'0556},',2,'kappa',38,2,'lambda;",',2,'mu',38,'d:0.2',675,226,'},',2,'nu',728,'0637,krn:{"',693,226,'},',2,'xi;",',735,'046',675,100,2,'pi',728,'0359,',2,'rho',38,'d:0.2',675,'0833},',2,'sigma',728,802,'krn:{"59',484,'58":-0.0556','},',2,'tau',728,'113,krn:{"',693,226,'},',2,'upsilon',728,'0359',675,226,'},',2,'phi',641,'d:0.2',675,'0833},',2,'chi',38,'d:0.2',675,'0556},',2,'psi',641,735,'0359',675,100,2,'omega',728,802,2,'epsilon;",a:0',675,'0833},',22,'greek',46,'x3D1;",',668,'0833},',22,'lucida',46,'x3D6',728,226,',',22,'lucida',46,'x3F1',38,'d:0.2',675,'0833},',22,'lucida',46,'x3C2;",',454,'0799',675,'0833},',22,'lucida',46,'x3D5',641,'d:0.2',675,'0833},',22,'lucida',46,'x21BC',';",a:0,d:-0.','2,',22,'arrows',46,'x21BD',899,'1,',22,'arrows',46,'x21C0',899,'2,',22,'arrows',46,'x21C1',899,'1,',22,'arrows',24,':"<span style=\\"position:relative; ','top:-.1em\\">&#','x02D3',';</span>",a:0','.1,',22,'symbol"},{c',922,923,'x02D2',925,'.1,','tclass:"symbol"},{c:"&#','x25B9;",',934,'x25C3;",',22,928,':"0",',28,':"1",',28,':"2",',28,':"3",',28,':"4",',28,':"5",',28,':"6",',28,':"7",',28,':"8",',28,':"9",',28,119,'3,',28,':",",a:-',114,28,':"&lt',641,28,':"<span style=\\"font-size',':133','%; position:relative; top:.','1em\\">/</','span>",',386,'krn:{"1',484,'65',484,'77',484,'78',484,'89":0.0556,"90":-0.0556},',28,':"&gt',641,28,':"&#x22C6',38,22,'arial',46,'x2202;",ic:0.0556',675,'0833},',28,':"A",',668,'139','},tclass:"italic"},{c:"','B",ic:0.0502',675,'0833',1000,'C",ic:0.0715,krn:{"61',161,693,'0833',1000,'D",ic:0.',226,675,'0556',1000,'E",ic:0.0576',675,'0833',1000,'F",ic:0.139',663,'0833',1000,'G",',668,'0833',1000,'H",ic:0.0812,krn:{"61',484,693,'0556',1000,'I",ic:0.0785',675,'111',1000,'J",ic:0.0962',663,'167',1000,'K",ic:0.0715,krn:{"61',484,693,'0556',1000,'L",',668,226,1000,'M','",ic:0.109,krn:{"','61',484,693,'0833',1000,'N',1050,'61',173,'61',161,693,'0833',1000,'O",ic:0.',226,675,'0833',1000,'P",ic:0.139',663,'0833',1000,'Q",d:0.2',675,'0833',1000,'R",ic:0.00773',675,'0833',1000,'S",ic:0.0576,krn:{"61',484,693,'0833',1000,'T','",ic:0.139,krn:{"','61',161,693,'0833',1000,'U',1050,'59',177,',"58',177,',"61',484,'127":0.',226,1000,'V",ic:0.222,krn:{"59','":-0.167,"','58',1106,'61',177,1000,'W',1088,'59',1106,'58',1106,'61',177,1000,'X",ic:0.0785,krn:{"61',173,'61',161,693,'0833',1000,'Y",ic:0.222,krn:{"59',1106,'58',1106,'61',177,1000,'Z",ic:0.0715,krn:{"61',484,693,'0833},',22,'italic',46,'x266D;",',934,'x266E;",',934,'x266F;",',22,928,':"<span style=\\"','position: relative; top',':-.3em','; font-size:75%\\">&#','x203F',925,',d:-0.1,',22,991,'"},{c:"<span style=\\"',1150,':.4em',1152,'x2040',925,',d:-0.1,',22,991,46,'x2113;",',668,'111',1000,'a",a:0,',22,'italic"},{c:"','b",',22,1174,'c",a:0',675,'0556',1000,'d',159,'89":0.0556,"90',484,'106',177,',"102',1106,1102,'167',1000,'e",a:0',675,'0556',1000,'f",',735,'108,krn:{"',693,'167',1000,'g",',454,'0359',675,226,1000,'h',159,'127',196,1000,'i",',22,1174,'j",',735,'0572,krn:{"59',484,815,1000,'k",ic:0.0315,',22,1174,'l",ic:0.0197',675,'0833',1000,'m",a:0,',22,1174,'n",a:0,',22,1174,'o",a:0',675,'0556',1000,'p",a:0,d:0.2',675,'0833',1000,'q",',454,'0359',675,'0833',1000,579,642,'krn:{"',693,'0556',1000,'s",a:0',675,'0556',1000,'t",',668,'0833',1000,'u",a:0',675,226,1000,'v",a:0,ic:0.0359',675,226,1000,'w",a:0,ic:0.0269',675,'0833',1000,'x",a:0',675,226,1000,'y",',454,'0359',675,'0556',1000,'z",a:0,ic:0.044',675,'0556},',22,'italic',46,'x131;",a:0',675,226,1000,'j",d:0.2',675,'0833},',22,'italic',46,'x2118',38,'d:0.2',675,100,22,991,24,922,'left: .3em; top: -.65em; font-size: 67%\\">&#x2192;</',973,'ic:0.154,',934,'x0311;",ic:0.399,',22,'normal"}],cmsy10:[{c',922,'top:.1em\\">&#x2212',925,'.1,',934,'xB7',899,'2,',28,':"&#xD7',38,28,922,'top:.3em\\">&#x2A',925,',',28,':"&#xF7',38,28,':"&#x25CA;",',934,'xB1',641,28,':"&#x2213;",',934,'x2295;",',934,'x2296;",',934,'x2297;",',934,'x2298;",',934,'x2299;",',934,'x25EF;",',22,991,46,'x2218',899,'1,',22,'symbol2',46,'x2022',899,'2,',934,'x224D',641,22,'symbol2',46,'x2261',641,22,'symbol2',46,'x2286;",',934,'x2287;",',934,'x2264;",',934,'x2265;",',934,'x227C;",',934,'x227D;",',22,928,':"~",a:0,d:-0.2,',28,':"&#x2248',641,'d:-0.1,',934,'x2282;",',934,'x2283;",',934,'x226A;",',934,'x226B;",',934,'x227A;",',934,'x227B;",',934,'x2190;",a:-0.1,',22,'arrow1',46,'x2192;",a:-0.1,',22,'arrow1',46,'x2191',';",a:0.2,d:0',',',22,'arrow1a',46,'x2193',1419,',',22,'arrow1a',46,'x2194;",a:-0.1,',22,'arrow1',46,'x2197',641,22,'arrows',46,'x2198',641,22,'arrows',46,'x2243',641,22,'symbol2',46,'x21D0;",a:-0.1,',22,'arrow2',46,'x21D2;",a:-0.1,',22,'arrow2',46,'x21D1',1419,'.1,',22,'arrow1a',46,'x21D3',1419,'.1,',22,'arrow1a',46,'x21D4;",a:-0.1,',22,'arrow2',46,'x2196',641,22,'arrows',46,'x2199',641,22,'arrows',46,'x221D',641,28,969,': 133%; margin-right: -.1em; ',1150,':.4em\\">&#x2032',925,',',22,'lucida',46,'x221E',641,934,'x2208;",',934,'x220B;",',22,928,969,': 150',971,'2em\\">&#','x25B3;</',973,22,928,969,': 150',971,1506,'x25BD;</',973,22,928,969,': 133',971,'2em\\">/</',973,41,28,969,': 67%; ',1150,':-.15em; ','margin-right:-.','3em\\">&#x22A2;</',973,934,'x2200;",',934,'x2203;",',934,'xAC',899,'1,',934,'x2205;",',934,'x211C;",',934,'x2111;",',934,'x22A4;",',934,'x22A5;",',934,'x2135;",',22,928,':"A',159,'48":0.194},',22,'cal"},{c:"','B",ic:0.0304',',krn:{"48":0.','139},',22,1559,'C",ic:0.0583',1561,'139},',22,1559,'D",ic:0.',226,1561,'0833},',22,1559,'E",ic:0.0894',1561,100,22,1559,'F",ic:0.0993',1561,100,22,1559,'G",',735,'0593',1561,100,22,1559,'H",ic:0.00965',1561,100,22,1559,'I",ic:0.0738',1561,226,'},',22,1559,'J",',735,'185',1561,'167},',22,1559,'K",ic:0.0144',1561,'0556},',22,1559,'L',159,'48":0.139},',22,1559,'M',159,'48":0.139},',22,1559,'N",ic:0.147',1561,'0833},',22,1559,'O",ic:0.',226,1561,100,22,1559,'P",ic:0.0822',1561,'0833},',22,1559,'Q",d:0.2',1561,100,22,1559,'R',159,'48":0.0833},',22,1559,'S",ic:0.075',1561,'139},',22,1559,'T",ic:0.254',1561,226,'},',22,1559,'U",ic:0.0993',1561,'0833},',22,1559,'V",ic:0.0822',1561,226,'},',22,1559,'W",ic:0.0822',1561,'0833},',22,1559,'X",ic:0.146',1561,'139},',22,1559,'Y",ic:0.0822',1561,'0833},',22,1559,'Z",ic:0.0794',1561,'139},',22,'cal',46,'x22C3;",',934,'x22C2;",',934,'x228E;",',934,'x22C0;",',934,'x22C1;",',934,'x22A2;",',934,'x22A3;",',934,'x2308;",','a:',114,22,991,46,'x2309;",','a:',114,22,991,46,'x230A;",','a:',114,22,991,46,'x230B;",','a:',114,22,991,24,':"{",',41,28,':"}",',41,28,':"&#','x2329;",','a:',114,934,'x232A;",','a:',114,934,'x2223;",',386,934,'x2225;",',386,934,'x2195',1419,',',22,'arrow1a',46,'x21D5;",a:0.3,d:0,',22,'arrow1a',46,'x2216;",','a:0.3,',386,934,'x2240;",',22,928,922,'top: .8em\\">&#x221A;</',973,'h:0.04,d:0.8,',934,'x2210;",a:0.4,',934,'x2207;",',22,928,969,': 85%; ','left:-.1em; margin-right:-.',1506,'x222B',925,'.4,',386,'ic:0.111,',22,'lucida',46,'x2294;",',934,'x2293;",',934,'x2291;",',934,'x2292;",',934,'xA7;",',386,28,':"&#x2020;",',386,28,':"&#x2021;",',386,28,':"&#xB6;",a:0.3,',386,22,'lucida',46,'x2663;",',22,991,46,'x2662;",',22,991,46,'x2661;",',22,991,46,'x2660;",',22,991,'"}],cmex10:[{c',103,'h:0.04,d:1.16,n:','16,',22,'delim1"},{c',106,1832,'17,',22,1835,385,1832,'104,',22,1835,390,1832,'105,',22,'delim1',46,1709,1832,'106,',22,'delim1a',46,1715,1832,'107,',22,'delim1a',46,1721,1832,'108,',22,'delim1a',46,1727,1832,'109,',22,'delim1a',1158,'margin-left:-.1em\\">{</',973,1832,'110,',22,'delim1',1158,1530,'1em\\">}</',973,1832,'111,',22,'delim1',46,1740,1832,'68,',22,'delim1b',46,1744,1832,'69,',22,'delim1b',46,'x2223',';",h:0.7,d:0.1,delim:{rep:','12},',934,'x2225',1904,'13},',22,928,122,1832,'46,',22,'delim1a',46,1764,1832,'47,',22,'delim1a',24,103,'h:0.04,d:1.76,n:','18,',22,'delim2',24,106,1925,'19,',22,'delim2',24,103,'h:0.04,d:2.36,n:','32,',22,'delim3"},{c',106,1937,'33,',22,1940,385,1937,'34,',22,1940,390,1937,'35,',22,'delim3',46,1709,1937,'36,',22,'delim3a',46,1715,1937,'37,',22,'delim3a',46,1721,1937,'38,',22,'delim3a',46,1727,1937,'39,',22,'delim3a"},{c',922,1783,'1em\\">{</',973,1937,'40,',22,1940,922,'left:-.05em; ',1530,'1em\\">}</',973,1937,'41,',22,'delim3',46,1740,1937,'42,',22,'delim3b',46,1744,1937,'43,',22,'delim3b',24,122,1937,'44,',22,'delim3a',46,1764,1937,'45,',22,1979,103,'h:0.04,d:2.96,','n:48,',22,'delim4"},{c',106,2022,'n:49,',22,2025,385,2022,'n:50,',22,2025,390,2022,'n:51,',22,'delim4',46,1709,2022,'n:52,',22,'delim4a',46,1715,2022,'n:53,',22,'delim4a',46,1721,2022,'n:54,',22,'delim4a',46,1727,2022,'n:55,',22,'delim4a',24,922,1783,'1em\\">{</',973,2022,'n:56,',22,2025,922,1783,'1em\\">}</',973,2022,'n:57,',22,'delim4',46,1740,2022,22,'delim4b',46,1744,2022,22,'delim4b',24,122,2022,22,'delim4a',46,1764,2022,22,'delim4a',24,122,1925,'30,',22,'delim2a',46,1764,1925,'31,',22,'delim2a',46,'xE6',';",h:0.8,d:0.2,delim:{','top:48,bot:64,rep:66},',22,'delimx',46,'xF6',2116,'top:49,bot:65,rep:67},',22,'delimx',46,'xE9',2116,'top:50,bot:52,rep:54},',22,'delimx',46,'xF9',2116,'top:51,bot:53,rep:55},',22,'delimx',46,'xEB',2116,'bot:52,rep:54},',22,'delimx',46,'xFB',2116,'bot:53,rep:55},',22,'delimx',46,'xEA',2116,'top:50,rep:54},',22,'delimx',46,'xFA',2116,'top:51,rep:55},',22,'delimx',46,'xEC',2116,'top:56,mid:60,bot:58,rep:62},',22,'delimx',46,'xFC',2116,'top:57,mid:61,bot:59,rep:62},',22,'delimx',46,'xEE',2116,'top:56,bot:58,rep:62},',22,'delimx',46,'xFE',2116,'top:57,bot:59,rep:62},',22,'delimx',46,'xED',2116,'rep:63},',22,'delimx',46,'xFD',2116,'rep:119},',22,'delimx',46,'xEF',2116,'rep:62},',22,'delimx',1158,'margin:.125em\\">|</',973,'h:0.8,d:0'],
-  [',delim:{','top:','120,bot:121,rep:63},','tclass:"','normal','"},{c:"&#','xE8',';",h:0.8,d:0.2,delim:{',1,'56,bot:59,rep:62},',3,'delimx',5,'xF8',7,1,'57,bot:58,rep:62},',3,11,5,'xE7',7,'rep:66},',3,11,5,'xF7',7,'rep:67},',3,11,5,'x2329;",','h:0.04,d:1.76,n:','28,',3,'delim2b',5,'x232A;",',33,'29,',3,36,5,'x2294',';",h:0,d:1,n:','71,',3,'bigop1',5,'x2294',';",h:0.1,d:1.','5,',3,'bigop2',5,'x222E',';",h:0,d:1.11,ic:0.095,n:','73,',3,'bigop1c',5,'x222E;",h:0,d:2.22,ic:0.222,',3,'bigop2c',5,'x2299',45,'75,',3,48,5,'x2299',51,'5,',3,54,5,'x2295',45,'77,',3,48,5,'x2295',51,'5,',3,54,5,'x2297',45,'79,',3,48,5,'x2297',51,'5,',3,54,5,'x2211',45,'88,',3,'bigop1a',5,'x220F',45,'89,',3,106,5,'x222B',57,'90,',3,60,5,'x222A',45,'91,',3,'bigop1b',5,'x2229',45,'92,',3,124,5,'x228E',45,'93,',3,124,5,'x22C0',45,'94,',3,48,5,'x22C1',45,'95,',3,48,5,'x2211',51,'6,',3,'bigop2a',5,'x220F',51,'5,',3,154,5,'x222B;",h:0,d:2.22,ic:0.222,',3,64,5,'x222A',51,'5,',3,'bigop2b',5,'x2229',51,'5,',3,170,5,'x228E',51,'5,',3,170,5,'x22C0',51,'5,',3,54,5,'x22C1',51,'5,',3,54,5,'x2210',45,'97,',3,106,5,'x2210',51,'5,',3,154,5,'xFE3F;",h:0.','722,w:0.','65,n:99,',3,'wide1',5,208,'85,w:1.1,n:100,',3,'wide2',5,208,'99,w:1.65,',3,'wide3','"},{c:"~",h:0.',209,'5,n:102,',3,'wide1a',223,'8,w:0.8,n:103,',3,'wide2a',223,'99,w:1.3,',3,'wide3a','"},{c:"[",',33,'20,',3,'delim2','"},{c:"]",',33,'21,',3,240,5,'x2308;",',33,'22,',3,'delim2a',5,'x2309;",',33,'23,',3,251,5,'x230A;",',33,'24,',3,251,5,'x230B;",',33,'25,',3,251,'"},{c:"<span style=\\"','position:relative; ','left',':-.1em','; margin-right:-.','1em\\">{</span>",',33,'26,',3,240,270,'position:relative',274,'1em; left:-.05em\\">}</span>",',33,'27,',3,240,270,'font-size: ','150%; ','position:relative; top:.','8em','\\">&#x221A;</span>",h:0.','04,d:1.16,n:113,',3,'root',270,289,'220%; ',291,'8em',293,'04,d:1.76,n:114,',3,296,270,289,'310%; ',291,'8em',274,'01em',293,'06,d:2.36,n:115,',3,296,270,289,'400%; ',291,'8em',274,'025em',293,'08,d:2.96,n:116,',3,296,270,289,'490%; ',291,'8em',274,'03em',293,'1,d:3.75,n:117,',3,296,270,289,'580%; ',291,'775em',274,'04em',293,'12,d:4.5,n:118,',3,296,270,289,'750%; ',291,343,';','margin-right',':-.04em',293,'14,d:5.7,',3,296,270,'margin-left',':.02em\\">|</','span><span style=\\"',363,':.08em; ','margin-right:.125em\\">|</span','>",h:0.8,d:0',0,1,'126,bot:127,rep:119},',3,'normal',5,'x2191',';",h:0.7,d:0,delim:{',1,'120,rep:63},',3,'arrow1a',5,'x2193;",h:0.65,d:0',0,'bot:121,rep:63},',3,381,270,363,273,'\\"></',365,291,'55em',274,'3em\\">&#x25DC',';</span>",h:0.','05,',3,'symbol',270,363,':-.3em\\"></',365,291,394,274,'1em\\">&#x25DD',397,'05,',3,400,270,363,273,'\\"></',365,291,'15em',274,'3em\\">&#x25DF',397,'05,',3,400,270,363,':-.3em\\"></',365,291,419,274,'1em\\">&#x25DE',397,'05,',3,400,5,'x21D1',377,1,'126,rep:119},',3,381,5,'x21D3',377,'bot:127,rep:119},',3,381,'"}],cmti10',':[{c:"&Gamma;",','ic:0.133,',3,'igreek"},{c:"&','Delta;",',3,455,'Theta;",','ic:0.094,',3,455,'Lambda;",',3,455,'Xi;",ic:0.153,',3,455,'Pi;",ic:0.164,',3,455,'Sigma;",','ic',':0.12,',3,455,'Upsilon;",','ic:0.111,',3,455,'Phi;",','ic:0.0599,',3,455,'Psi;",','ic:0.111,',3,455,'Omega;",','ic:0.103,',3,'igreek','"},{c:"ff','",ic:0.212,krn:{"39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":','14,"108":15},','tclass:"italic"},{c',':"fi','",ic:0.103,',496,':"fl',498,496,':"ffi',498,496,':"ffl',498,496,':"&#x131;",a:0,','ic:0.','0767,',496,':"j",d:0.2,','ic:0.0374,',496,':"&#x2CB;",',3,'iaccent',5,'x2CA;",','ic:0.0969,',3,518,5,'x2C7;",','ic:0.083,',3,518,5,'x2D8;",','ic:0.108,',3,518,5,'x2C9;",',490,3,518,5,'x2DA;",',3,518,'"},{c:"?",','d:0.17,w:0.46,',496,':"&#xDF;",','ic:0.105,',496,':"&#xE6;",a:0,','ic:0.0751,',496,':"&#x153;",a:0,',550,496,':"&#xF8;",','ic:0.0919,',496,':"&#xC6;",','ic',474,496,':"&#x152;",','ic',474,496,':"&#xD8;",',460,496,':"?",krn:{"108":-0.','256,"76":-0.321},',496,':"!",','ic:0.124,lig:{"96":','60},',496,':"&#x201D;",','ic:0.0696,',496,':"#",ic:0.0662,',496,':"$",',496,':"%",ic:0.136,',496,':"&amp;",','ic:0.0969,',496,':"&#x2019;",','ic:0.124,','krn:{"63":0.','102,"33":0.102},lig:{"39":34},',496,':"(",d:0.2,','ic:0.162,',496,':")",d:0.2,','ic:0.0369,',496,':"*",ic:0.149,',496,':"+",a:0.1,','ic:0.0369,',496,':",",a:-0.3,d:0.2,w:0.278,',496,':"-",a:0,ic:0.0283',',lig:{"45":','123},',496,':".",a:-0.25,',496,':"/",ic:0.162,',496,':"0",ic:0.136,',496,':"1",ic:0.136,',496,':"2",ic:0.136,',496,':"3",ic:0.136,',496,':"4",ic:0.136,',496,':"5",ic:0.136,',496,':"6",ic:0.136,',496,':"7",ic:0.136,',496,':"8",ic:0.136,',496,':"9",ic:0.136,',496,':":",ic:0.0582,',496,':";",ic:0.0582,',496,':"&#xA1;",','ic:0.0756,',496,':"=",a:0,d:-0.1,','ic:0.0662,',496,':"&#xBF;",',496,':"?",','ic:0.122,','lig:{"96":','62},',496,':"@",ic:0.096,',496,':"A",','krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.0256,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',656,'86','":-0.102,"','87',660,'101','":-0.0511,"','97',664,'111',664,'100',664,'99',664,'103',664,'113','":-0.0511','},',496,':"B',498,496,':"C",','ic:0.145,',496,':"D",',460,'krn:{"88','":-0.0256,"','87',688,'65',688,'86',688,'89":-0.','0256},',496,':"E",ic',474,496,':"F','",ic:0.133,krn:{"','111',656,'101',656,'117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',660,'79',688,'67',688,'71',688,'81":-0.0256','},',496,':"G",ic:0.0872,',496,':"H",ic:0.164,',496,':"I",ic:0.158,',496,':"J",ic:0.14,',496,':"K",',683,'krn:{"79',688,'67',688,'71',688,717,'},',496,':"L",krn:{"84',656,'89',656,'86',660,'87',660,'101',664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"M",ic:0.164,',496,':"N",ic:0.164,',496,':"O",',460,'krn:{"88',688,'87',688,'65',688,'86',688,695,'0256},',496,':"P',498,'krn:{"65":-0.0767},',496,':"Q",d:0.2,',460,496,':"R",ic:0.0387,',654,'0.0256,"84',656,'89',656,'86',660,'87',660,'101',664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"S",ic',474,496,':"T',702,'121',656,'101',656,'111',708,'117',656,'65":-0.0767},',496,':"U",ic:0.164,',496,':"V",ic:0.','184,krn:{"','111',656,'101',656,'117',708,'65',660,'79',688,'67',688,'71',688,717,'},',496,':"W",ic:0.',831,'65":-0.0767},',496,':"X",ic:0.158,krn:{"79',688,'67',688,'71',688,717,'},',496,':"Y",ic:0.','194',',krn:{"101',656,'111',708,'117',656,'65":-0.0767},',496,':"Z",',683,496,':"[",d:0.1,','ic:0.188,',496,':"&#x201C;",','ic:0.169,',496,':"]",d:0.1,','ic:0.105,',496,':"&#x2C6;",','ic:0.0665,',3,518,5,'x2D9;",','ic:0.118,',3,518,5,'x2018;",',573,'92},',496,':"a','",a:0,ic:0.',511,496,':"b",ic:0.0631',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"c',899,'0565',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"d',498,'krn:{"108":','0.0511},',496,':"e',899,'0751',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"f',494,'12,"102":11,"108":13},',496,':"g','",a:0,d:0.2,ic:0.','0885,',496,':"h",ic:0.',511,496,':"i",ic:0.102,',496,513,683,496,':"k",',531,496,':"l',498,940,'0.0511},',496,':"m',899,511,496,':"n',899,511,'krn:{"39":-0.102},',496,':"o',899,'0631',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"p',967,'0631',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"q',967,'0885,',496,':"r',899,'108',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"s',899,'0821,',496,':"t",ic:0.0949,',496,':"u',899,511,496,':"v',899,'108,',496,':"w',899,1068,940,'0.0511},',496,':"x',899,'12,',496,':"y',967,'0885,',496,':"z',899,'123,',496,':"&#x2013;",a:0.1,ic:0.','0921',607,'124},',496,':"&#x2014;",a:0.1,ic:0.','0921,',496,':"&#x2DD;",',647,3,518,5,'x2DC;",','ic:0.116,',3,518,5,'xA8;",',3,518,'"}],cmbx10',452,3,'bgreek"},{c:"&','Delta;",',3,1112,459,3,1112,'Lambda;",',3,1112,'Xi;",',3,1112,'Pi;",',3,1112,472,3,1112,477,3,1112,481,3,1112,485,3,1112,489,3,'bgreek','"},{c:"ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"bold"},{c',':"fi",',1146,':"fl",',1146,':"ffi",',1146,':"ffl",',1146,509,1146,513,1146,':"&#x2CB;",',3,'baccent',5,520,3,1161,5,525,3,1161,5,530,3,1161,5,535,3,1161,5,'x2DA;",',3,1161,543,1146,546,1146,549,1146,552,1146,555,1146,558,1146,562,1146,566,1146,569,'278,"76":-0.319},',1146,572,648,'60},',1146,576,1146,':"#",',1146,':"$",',1146,':"%",',1146,585,1146,588,590,'111,"33":0.111},lig:{"39":34},',1146,593,1146,596,1146,':"*",',1146,601,1146,':",",a:-0.3,d:0.2,w:0.278,',1146,':"-",a:0',607,'123},',1146,':".",a:-0.25,',1146,':"/",',1146,':"0",',1146,':"1",',1146,':"2",',1146,':"3",',1146,':"4",',1146,':"5",',1146,':"6",',1146,':"7",',1146,':"8",',1146,':"9",',1146,':":",',1146,':";",',1146,638,1146,641,1146,':"&#xBF;",',1146,646,648,'62},',1146,':"@",',1146,':"A",krn:{"116','":-0.0278,"','67',1274,'79',1274,'71',1274,'85',1274,'81',1274,'84','":-0.0833,"','89',1286,'86":-0.','111,"87":-0.111},',1146,':"B",',1146,682,1146,':"D",krn:{"88',1274,'87',1274,'65',1274,'86',1274,695,'0278},',1146,':"E",',1146,':"F",krn:{"111',1286,'101',1286,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',1274,'67',1274,'71',1274,'81":-0.0278','},',1146,':"G",',1146,':"H",',1146,':"I",krn:{"73":0.0278},',1146,':"J",',1146,':"K",krn:{"79',1274,'67',1274,'71',1274,1321,'},',1146,':"L",krn:{"84',1286,'89',1286,1289,'111,"87":-0.111},',1146,':"M",',1146,':"N",',1146,':"O",krn:{"88',1274,'87',1274,'65',1274,'86',1274,695,'0278},',1146,':"P",krn:{"65',1286,'111',1274,'101',1274,'97',1274,'46',1286,'44":-0.0833},',1146,784,1146,':"R",krn:{"116',1274,'67',1274,'79',1274,'71',1274,'85',1274,'81',1274,'84',1286,'89',1286,1289,'111,"87":-0.111},',1146,':"S",',1146,':"T",krn:{"121',1274,'101',1286,'111',1314,'0833,"117":-0.0833','},',1146,':"U",',1146,830,'0139,krn:{"','111',1286,'101',1286,'117',1314,'111,"79',1274,'67',1274,'71',1274,1321,'},',1146,849,1410,'111',1286,'101',1286,'117',1314,'111,"79',1274,'67',1274,'71',1274,1321,'},',1146,':"X",krn:{"79',1274,'67',1274,'71',1274,1321,'},',1146,862,'025',864,1286,'111',1314,1404,'},',1146,872,1146,875,1146,878,1146,881,1146,884,3,1161,5,889,3,1161,5,894,648,'92},',1146,':"a','",a:0,krn:{"','118',1274,'106":0.','0556,"121',1274,'119":-0.','0278},',1146,':"b",krn:{"101','":0.0278,"','111',1492,'120',1274,'100',1492,'99',1492,'113',1492,'118',1274,1485,'0556,"121',1274,1488,'0278},',1146,':"c',1482,'104',1274,'107":-0.0278},',1146,':"d",',1146,':"e",a:0,',1146,':"f',1144,'12,"102":11,"108":13},',1146,':"g',967,1410,1485,'0278},',1146,':"h",krn:{"116',1274,'117',1274,'98',1274,'121',1274,'118',1274,1488,'0278},',1146,':"i",',1146,513,1146,':"k",krn:{"97":-0.0556,"101',1274,'97',1274,'111',1274,'99":-0.','0278},',1146,':"l",',1146,':"m',1482,'116',1274,'117',1274,'98',1274,'121',1274,'118',1274,1488,'0278},',1146,':"n',1482,'116',1274,'117',1274,'98',1274,'121',1274,'118',1274,1488,'0278},',1146,':"o",a:0',864,1492,'111',1492,'120',1274,'100',1492,'99',1492,'113',1492,'118',1274,1485,'0556,"121',1274,1488,'0278},',1146,':"p",a:0,d:0.2',864,1492,'111',1492,'120',1274,'100',1492,'99',1492,'113',1492,'118',1274,1485,'0556,"121',1274,1488,'0278},',1146,':"q",a:0,d:0.2,',1146,':"r",a:0,',1146,':"s",a:0,',1146,':"t",krn:{"121',1274,1488,'0278},',1146,':"u',1482,1488,'0278},',1146,':"v',899,1410,'97":-0.0556,"101',1274,'97',1274,'111',1274,1554,'0278},',1146,':"w',899,'0139',864,1274,'97',1274,'111',1274,1554,'0278},',1146,':"x",a:0,',1146,':"y',967,1410,'111',1274,'101',1274,'97',1274,'46',1286,'44":-0.0833},',1146,':"z",a:0,',1146,1088,'0278',607,'124},',1146,1093,'0278,',1146,1096,3,1161,5,1101,3,1161,5,'xA8;",',3,1161,'"}]});','jsMath.Setup.Styles({".typeset .','cmr10','":"font-family',': serif','",".typeset .','italic":"font-style: italic',1712,'bold":"font-weight: bold',1712,'lucida',1710,': \'lucida sans unicode','\'",".typeset .','arial',1710,': \'arial unicode MS',1720,'cal',1710,': \'Script MT\', \'Script MT Bold\', cursive',1712,'arrows','":"font-family: \'Arial unicode MS',1720,'arrow1',1730,1720,381,1730,'\'; ',291,'05em;left:-.',419,274,419,1712,'arrow2',1730,'\'; ',271,'top',273,';",".typeset .','arrow3',1730,'\'; margin:.1em',1712,400,1730,1720,'symbol2',1730,1720,'delim1','":"font-family: \'Times New Roman\'; font-','size: ','133%; ',291,'7em',1712,'delim1a','":"font-family: \'Lucida sans unicode\'; font-size: ','133%; ',291,'8em',1712,'delim1b',1730,'\'; font-size: ','133%; ',291,'8em',1712,240,1762,1763,'180%; ',291,'75em',1712,251,1769,'180%; ',291,'8em',1712,36,1730,1776,'180%; ',291,'8em',1712,'delim3',1762,1763,'250%; ',291,'725em',1712,'delim3a',1769,'250%; ',291,343,1712,'delim3b',1730,1776,'250%; ',291,'8em',1712,'delim4',1762,1763,'325%; ',291,'7em',1712,'delim4a',1769,'325%; ',291,343,1712,'delim4b',1730,1776,'325%; ',291,'8em',1712,11,1710,': Symbol; ',291,'2em',1712,'greek',1710,': \'Times New Roman',1720,492,1762,'style:italic',1712,1142,1762,'weight:bold',1712,48,1730,1776,'130','%; position: relative; top',': .7em; margin:-.05em',1712,106,1730,1776,'110',1863,': .85em',1750,124,1730,1776,'180',1863,': .6em',1712,60,1730,1776,'85',1863,': 1em',1712,54,1730,1776,'230',1863,1878,'; margin:-.05em',1712,154,1730,1776,'185',1863,': .75em',1712,170,1730,1776,'275',1863,': .',394,1712,64,1730,1776,'185',1863,1885,274,'1em',1712,212,'":"',289,'67',1863,':-.5em',1750,217,'":"',289,'110',1863,':-.2em',1750,222,'":"',289,'175%;",".typeset .',227,1762,1763,'75',1863,1924,1712,231,1762,1763,'133',1863,1931,1712,235,1762,1763,'200',1863,273,1712,296,1730,'\'; ',356,':-.075em',1712,'accent',1730,'\'; ',291,'05em; left:.15em',1712,518,1730,'\'; ',291,1968,'; font-','style:italic',1712,1161,1730,'\'; ',291,1968,1975,1857,'"});','if(jsMath.browser=="','Mozilla"){','jsMath.Update.TeXfonts({cmex10:{"','48":{c:"&#xF8EB;"},"49":{c:"&#xF8F6;"},"50":{c:"&#xF8EE;"},"51":{c:"&#xF8F9;"},"52":{c:"&#xF8F0;"},"53":{c:"&#xF8FB;"},"54":{c:"&#xF8EF;"},"55":{c:"&#xF8FA;"},"56":{c:"&#xF8F1;"},"57":{c:"&#xF8FC;"},"58":{c:"&#xF8F3;"},"59":{c:"&#xF8FE;"},"60":{c:"&#xF8F2;"},"61":{c:"&#xF8FD;"},"62":{c:"&#xF8F4;"},"64":{c:"&#xF8ED;"},"65":{c:"&#xF8F8;"},"66":{c:"&#xF8EC;"},"67":{c:"&#xF8F7;"}}});',1708,'accent',1710,': Arial unicode MS; ',291,'05em; left:.05em"});}',1986,'MSIE"){jsMath.Browser.msieFontBug=1;',1988,'63','":{c:"<span style=\\"position:relative; left:.','125em; ',368,'>"},"119',2000,'02em; ',356,'=.08em\\">|</',365,368,'>"}}});}jsMath.Macro("not","\\\\mathrel{\\\\rlap{\\\\kern 3mu/}}");jsMath.Macro("bowtie","\\\\mathrel\\\\triangleright\\\\kern-6mu\\\\mathrel\\\\triangleleft");jsMath.Box.defaultH=0.8;']
+  ['jsMath.Add(jsMath.TeX,{cmr10',':[{c:"&Gamma;",','tclass:"greek"},{c:"&','Delta;",',2,'Theta;",',2,'Lambda;",',2,'Xi;",',2,'Pi;",',2,'Sigma;",',2,'Upsilon;",',2,'Phi;",',2,'Psi;",',2,'Omega;",','tclass:"','greek','"},{c',':"ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"normal"},{c',':"fi",',28,':"fl",',28,':"ffi",',28,':"ffl",',28,':"&#x131',';",a:0,',28,':"j",d:0.2,',28,':"&#x2CB;",',22,'accent','"},{c:"&#','x2CA;",',22,44,45,'x2C7;",',22,44,45,'x2D8;",',22,44,45,'x2C9;",',22,44,45,'x2DA;",',22,44,45,'x0327;",',28,':"&#xDF;",',28,':"&#xE6',38,28,':"&#x153',38,28,':"&#xF8;",',28,':"&#xC6;",',28,':"&#x152;",',28,':"&#xD8;",',28,':"?",krn:{"108":-0.278,"76":-0.319},',28,':"!",lig:{"96":60},',28,':"&#x201D;",',28,':"#",',28,':"$",',28,':"%",',28,':"&amp;",',28,':"&#x2019;",krn:{"63":0.111,"33":0.','111},','lig:{"39":34},',28,':"(",','d:0.2,',28,':")",',103,28,':"*",',28,':"+",a',':0.1,',28,':",",a:-','0.3,d:0.2,','w:0.278,',28,':"-",a:0,lig:{"45":123},',28,':".",a:-0.','25,',28,':"/",',28,':"0",',28,':"1",',28,':"2",',28,':"3",',28,':"4",',28,':"5",',28,':"6",',28,':"7",',28,':"8",',28,':"9",',28,':":",',28,':";",',28,':"&#xA1;",',28,':"=",a:0,d:-0.1,',28,':"&#xBF;",',28,':"?",lig:{"96":62},',28,':"@",',28,':"A','",krn:{"','116','":-0.0278,"','67',161,'79',161,'71',161,'85',161,'81',161,'84','":-0.0833,"','89',173,'86','":-0.111',',"87":-0.',99,28,':"B",',28,':"C",',28,':"D',159,'88',161,'87',161,'65',161,'86',161,'89','":-0.0278','},',28,':"E",',28,':"F',159,'111',173,'101',173,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',161,'67',161,'71',161,'81',196,'},',28,':"G",',28,':"H",',28,':"I',159,'73":0.','0278','},',28,':"J",',28,':"K',159,'79',161,'67',161,'71',161,'81',196,'},',28,':"L',159,'84',173,'89',173,'86',177,178,99,28,':"M",',28,':"N",',28,':"O',159,'88',161,'87',161,'65',161,'86',161,'89',196,'},',28,':"P',159,'65',173,'111',161,'101',161,'97',161,'46',173,'44":-0.0833},',28,':"Q",',103,28,':"R',159,'116',161,'67',161,'79',161,'71',161,'85',161,'81',161,'84',173,'89',173,'86',177,178,99,28,':"S",',28,':"T',159,'121',161,'101',173,'111',208,'0833,"117":-0.0833','},',28,':"U",',28,':"V",','ic:0.0139,krn:{"','111',173,'101',173,'117',208,'111,"79',161,'67',161,'71',161,'81',196,'},',28,':"W",',328,'111',173,'101',173,'117',208,'111,"79',161,'67',161,'71',161,'81',196,'},',28,':"X',159,'79',161,'67',161,'71',161,'81',196,'},',28,':"Y",ic:0.025,','krn:{"101',173,'111',208,322,'},',28,':"Z",',28,':"[",d',111,28,':"&#x201C;",',28,':"]",d',111,28,':"&#x2C6;",',22,44,45,'x2D9;",',22,44,45,'x2018;",lig:{"96":92},',28,':"a','",a:0,krn:{"','118',161,'106":0.','0556,"121',161,'119',196,'},',28,':"b',159,'101','":0.0278,"','111',417,'120',161,'100',417,'99',417,'113',417,'118',161,407,'0556,"121',161,'119',196,'},',28,':"c',404,'104',161,'107',196,'},',28,':"d",',28,':"e",a:0,',28,':"f',26,'12,"102":11,"108":13},',28,':"g",','a:0,d:0.2,ic:0.','0139,krn:{"',407,226,'},',28,':"h',159,'116',161,'117',161,'98',161,'121',161,'118',161,'119',196,'},',28,':"i",',28,40,28,':"k',159,'97','":-0.0556,"','101',161,'97',161,'111',161,'99',196,'},',28,':"l",',28,':"m',404,'116',161,'117',161,'98',161,'121',161,'118',161,'119',196,'},',28,':"n',404,'116',161,'117',161,'98',161,'121',161,'118',161,'119',196,'},',28,':"o',404,'101',417,'111',417,'120',161,'100',417,'99',417,'113',417,'118',161,407,'0556,"121',161,'119',196,'},',28,':"p",a:0,',103,376,417,'111',417,'120',161,'100',417,'99',417,'113',417,'118',161,407,'0556,"121',161,'119',196,'},',28,':"q",a:0,',103,28,':"','r",a:0,',28,':"s",a:0,',28,':"t',159,'121',161,'119',196,'},',28,':"u',404,'119',196,'},',28,':"v",a:0,',328,'97',483,'101',161,'97',161,'111',161,'99',196,'},',28,':"w",a:0,',328,'101',161,'97',161,'111',161,'99',196,'},',28,':"x",a:0,',28,':"y",',454,455,'111',161,'101',161,'97',161,'46',173,'44":-0.0833},',28,':"z",a:0,',28,':"&#x2013',';",a:0.1,','ic:0.0278,','lig:{"45":124},',28,':"&#x2014',640,641,28,':"&#x2DD;",',22,44,45,'x2DC;",',22,44,45,'xA8;",',22,44,'"}],cmmi10',1,'ic:0.139',',krn:{"61":-0.0556,"59":-0.111,"58":-0.111,"127":0.','0833},',22,'igreek"},{c:"&',3,'krn:{"127":0.','167},',22,665,5,'ic:0.',226,',krn:{"127":0.','0833},',22,665,7,667,'167},',22,665,9,'ic:0.0757',674,'0833},',22,665,11,'ic:0.0812,krn:{"61',483,'59":-0.0556,"58":-0.0556,"127":0.','0556},',22,665,13,'ic:0.0576',674,'0833},',22,665,15,'ic:0.139',662,'0556},',22,665,17,667,'0833},',22,665,19,'ic:0.11,krn:{"61',483,692,'0556},',22,665,21,'ic:0.0502',674,'0833},',22,665,'alpha',';",a:0,ic:0.','0037',674,226,'},',2,'beta;",','d:0.2,ic:0.','0528',674,'0833},',2,'gamma;",',454,'0556,',2,'delta;",ic:0.0378,krn:{"',692,'0556},',2,'epsilon;",a:0',674,'0556},',22,'lucida',24,':"&zeta;",',734,'0738',674,'0833},',2,'eta;",',454,'0359',674,'0556},',2,'theta;",ic:0.',226,674,'0833},',2,'iota;",a:0',674,'0556},',2,'kappa',38,2,'lambda;",',2,'mu',38,'d:0.2',674,226,'},',2,'nu',727,'0637,krn:{"',692,226,'},',2,'xi;",',734,'046',674,99,2,'pi',727,'0359,',2,'rho',38,'d:0.2',674,'0833},',2,'sigma',727,801,'krn:{"59',483,'58":-0.0556','},',2,'tau',727,'113,krn:{"',692,226,'},',2,'upsilon',727,'0359',674,226,'},',2,'phi',640,'d:0.2',674,'0833},',2,'chi',38,'d:0.2',674,'0556},',2,'psi',640,734,'0359',674,99,2,'omega',727,801,2,'epsilon;",a:0',674,'0833},',22,'greek',45,'x3D1;",',667,'0833},',22,'lucida',45,'x3D6',727,226,',',22,'lucida',45,'x3F1',38,'d:0.2',674,'0833},',22,'lucida',45,'x3C2;",',454,'0799',674,'0833},',22,'lucida',45,'x3D5',640,'d:0.2',674,'0833},',22,'lucida',45,'x21BC',';",a:0,d:-0.','2,',22,'arrows',45,'x21BD',898,'1,',22,'arrows',45,'x21C0',898,'2,',22,'arrows',45,'x21C1',898,'1,',22,'arrows',24,':\'<span style="','position:relative; ','top:-.1em; ','display:inline-block">&#','x02D3',';</span>\',a:0','.1,',22,'symbol"},{c',921,922,'top:-.1em; ',924,'x02D2',926,'.1,','tclass:"symbol"},{c:"&#','x25B9;",',937,'x25C3;",',22,929,':"0",',28,':"1",',28,':"2",',28,':"3",',28,':"4",',28,':"5",',28,':"6",',28,':"7",',28,':"8",',28,':"9",',28,119,'3,',28,':",",a:-',114,28,':"&lt',640,28,921,'font-size:','133%; ',922,'top:.1em','; display:inline-block">/</span>\',d:0.','1,krn:{"1',483,'65',483,'77',483,'78',483,'89":0.0556,"90":-0.0556},',28,':"&gt',640,28,':"&#x22C6',38,22,'arial',45,'x2202;",ic:0.0556',674,'0833},',28,':"A",',667,'139','},tclass:"italic"},{c:"','B",ic:0.0502',674,'0833',1003,'C",ic:0.0715,krn:{"61',161,692,'0833',1003,'D",ic:0.',226,674,'0556',1003,'E",ic:0.0576',674,'0833',1003,'F",ic:0.139',662,'0833',1003,'G",',667,'0833',1003,'H",ic:0.0812,krn:{"61',483,692,'0556',1003,'I",ic:0.0785',674,'111',1003,'J",ic:0.0962',662,'167',1003,'K",ic:0.0715,krn:{"61',483,692,'0556',1003,'L",',667,226,1003,'M','",ic:0.109,krn:{"','61',483,692,'0833',1003,'N',1053,'61',173,'61',161,692,'0833',1003,'O",ic:0.',226,674,'0833',1003,'P",ic:0.139',662,'0833',1003,'Q",d:0.2',674,'0833',1003,'R",ic:0.00773',674,'0833',1003,'S",ic:0.0576,krn:{"61',483,692,'0833',1003,'T','",ic:0.139,krn:{"','61',161,692,'0833',1003,'U',1053,'59',177,',"58',177,',"61',483,'127":0.',226,1003,'V",ic:0.222,krn:{"59','":-0.167,"','58',1109,'61',177,1003,'W',1091,'59',1109,'58',1109,'61',177,1003,'X",ic:0.0785,krn:{"61',173,'61',161,692,'0833',1003,'Y",ic:0.222,krn:{"59',1109,'58',1109,'61',177,1003,'Z",ic:0.0715,krn:{"61',483,692,'0833},',22,'italic',45,'x266D;",',937,'x266E;",',937,'x266F;",',22,929,921,922,'top:-.3em; ',973,'75%; ',924,'x203F',926,',d:-0.1,',22,994,24,921,922,'top',':.4em; ',973,'75%; ',924,'x2040',926,',d:-0.1,',22,994,45,'x2113;",',667,'111',1003,'a",a:0,',22,'italic"},{c:"','b",',22,1183,'c",a:0',674,'0556',1003,'d',159,'89":0.0556,"90',483,'106',177,',"102',1109,1105,'167',1003,'e",a:0',674,'0556',1003,'f",',734,'108,krn:{"',692,'167',1003,'g",',454,'0359',674,226,1003,'h',159,'127',196,1003,'i",',22,1183,'j",',734,'0572,krn:{"59',483,814,1003,'k",ic:0.0315,',22,1183,'l",ic:0.0197',674,'0833',1003,'m",a:0,',22,1183,'n",a:0,',22,1183,'o",a:0',674,'0556',1003,'p",a:0,d:0.2',674,'0833',1003,'q",',454,'0359',674,'0833',1003,578,641,'krn:{"',692,'0556',1003,'s",a:0',674,'0556',1003,'t",',667,'0833',1003,'u",a:0',674,226,1003,'v",a:0,ic:0.0359',674,226,1003,'w",a:0,ic:0.0269',674,'0833',1003,'x",a:0',674,226,1003,'y",',454,'0359',674,'0556',1003,'z",a:0,ic:0.044',674,'0556},',22,'italic',45,'x131;",a:0',674,226,1003,'j",d:0.2',674,'0833},',22,'italic',45,'x2118',38,'d:0.2',674,99,22,994,24,921,922,'left:.3em; top:-.65em; font-size: 67%; ',924,'x2192',';</span>\',','ic:0.154,',937,'x0311;",ic:0.399,',22,'normal"}],cmsy10:[{c',921,922,'top:.1em; ',924,'x2212',926,'.1,',937,'xB7',898,'2,',28,':"&#xD7',38,28,921,922,'top:.3em; ',924,'x2A',926,',',28,':"&#xF7',38,28,':"&#x25CA;",',937,'xB1',640,28,':"&#x2213;",',937,'x2295;",',937,'x2296;",',937,'x2297;",',937,'x2298;",',937,'x2299;",',937,'x25EF;",',22,994,45,'x2218',898,'1,',22,'symbol2',45,'x2022',898,'2,',937,'x224D',640,22,'symbol2',45,'x2261',640,22,'symbol2',45,'x2286;",',937,'x2287;",',937,'x2264;",',937,'x2265;",',937,'x227C;",',937,'x227D;",',22,929,':"~",a:0,d:-0.2,',28,':"&#x2248',640,'d:-0.1,',937,'x2282;",',937,'x2283;",',937,'x226A;",',937,'x226B;",',937,'x227A;",',937,'x227B;",',937,'x2190;",a:-0.1,',22,'arrow1',45,'x2192;",a:-0.1,',22,'arrow1',45,'x2191',';",a:0.2,d:0',',',22,'arrow1a',45,'x2193',1437,',',22,'arrow1a',45,'x2194;",a:-0.1,',22,'arrow1',45,'x2197',640,22,'arrows',45,'x2198',640,22,'arrows',45,'x2243',640,22,'symbol2',45,'x21D0;",a:-0.1,',22,'arrow2',45,'x21D2;",a:-0.1,',22,'arrow2',45,'x21D1',1437,'.1,',22,'arrow1a',45,'x21D3',1437,'.1,',22,'arrow1a',45,'x21D4;",a:-0.1,',22,'arrow2',45,'x2196',640,22,'arrows',45,'x2199',640,22,'arrows',45,'x221D',640,28,921,973,974,'margin-right:-.','1em; ','position: relative; top',1167,924,'x2032',926,',',22,'lucida',45,'x221E',640,937,'x2208;",',937,'x220B;",',22,929,921,973,'150%; ',922,'top:.2em; ',924,'x25B3',1324,22,929,921,973,'150%; ',922,'top:.2em; ',924,'x25BD',1324,22,929,921,973,974,922,'top:.2em',977,'2,',28,921,973,'67%; ',1509,':-.15em; ',1507,'3em; ',924,'x22A2',1324,937,'x2200;",',937,'x2203;",',937,'xAC',898,'1,',937,'x2205;",',937,'x211C;",',937,'x2111;",',937,'x22A4;",',937,'x22A5;",',937,'x2135;",',22,929,':"A',159,'48":0.194},',22,'cal"},{c:"','B",ic:0.0304',',krn:{"48":0.','139},',22,1590,'C",ic:0.0583',1592,'139},',22,1590,'D",ic:0.',226,1592,'0833},',22,1590,'E",ic:0.0894',1592,99,22,1590,'F",ic:0.0993',1592,99,22,1590,'G",',734,'0593',1592,99,22,1590,'H",ic:0.00965',1592,99,22,1590,'I",ic:0.0738',1592,226,'},',22,1590,'J",',734,'185',1592,'167},',22,1590,'K",ic:0.0144',1592,'0556},',22,1590,'L',159,'48":0.139},',22,1590,'M',159,'48":0.139},',22,1590,'N",ic:0.147',1592,'0833},',22,1590,'O",ic:0.',226,1592,99,22,1590,'P",ic:0.0822',1592,'0833},',22,1590,'Q",d:0.2',1592,99,22,1590,'R',159,'48":0.0833},',22,1590,'S",ic:0.075',1592,'139},',22,1590,'T",ic:0.254',1592,226,'},',22,1590,'U",ic:0.0993',1592,'0833},',22,1590,'V",ic:0.0822',1592,226,'},',22,1590,'W",ic:0.0822',1592,'0833},',22,1590,'X",ic:0.146',1592,'139},',22,1590,'Y",ic:0.0822',1592,'0833},',22,1590,'Z",ic:0.0794',1592,'139},',22,'cal',45,'x22C3;",',937,'x22C2;",',937,'x228E;",',937,'x22C0;",',937,'x22C1;",',937,'x22A2;",',937,'x22A3;",',937,'x230A;",','a:',114,22,'lucida',45,'x230B;",','a:',114,22,'lucida',45,'x2308;",','a:',114,22,'lucida',45,'x2309;",','a:',114,22,'lucida',24,':"{",',103,28,':"}",',103,28,':"&#','x2329;",','a:',114,937,'x232A;",','a:',114,937,'x2223;",d',111,937,'x2225;",d',111,937,'x2195',1437,',',22,'arrow1a',45,'x21D5;",a:0.3,d:0,',22,'arrow1a',45,'x2216;",','a:0.3,d',111,937,'x2240;",',22,'symbol','"},{c:\'<span style="display:inline-block; ',922,'top:.8em">&#x221A',1324,'h:0.04,d:0.8,',937,'x2210;",a:0.4,',937,'x2207;",',22,'symbol',1802,922,973,'85%; ','left:-.1em; margin-right:-.','2em">&#x222B',926,'.4,d',111,'ic:0.111,',22,'lucida',45,'x2294;",',937,'x2293;",',937,'x2291;",',937,'x2292;",',937,'xA7;",d',111,28,':"&#x2020;",d',111,28,':"&#x2021;",d',111,28,':"&#xB6;",a:0.3,d',111,22,'lucida',45,'x2663;",',22,994,45,'x2662;",',22,994,45,'x2661;",',22,994,45,'x2660;",',22,994,'"}],cmex10:[{c',102,'h:0.04,d:1.16,n:','16,',22,'delim1','"},{c:")",',1865,'17,',22,'delim1','"},{c:"[",',1865,'104,',22,'delim1','"},{c:"]",',1865,'105,',22,'delim1',45,1740,1865,'106,',22,'delim1a',45,1746,1865,'107,',22,'delim1a',45,1752,1865,'108,',22,'delim1a',45,1758,1865,'109,',22,'delim1a',1802,'margin-left',':-.1em">{</','span>\',',1865,'110,',22,'delim1',1802,1507,'1em">}</',1911,1865,'111,',22,'delim1',45,1771,1865,'68,',22,'delim1b',45,1775,1865,'69,',22,'delim1b',45,'x2223',';",h:0.7,d:0.1,delim:{rep:','12},',937,'x2225',1938,'13},',22,929,122,1865,'46,',22,'delim1a',45,1795,1865,'47,',22,'delim1a',24,102,'h:0.04,d:1.76,n:','18,',22,'delim2',1869,1959,'19,',22,'delim2',24,102,'h:0.04,d:2.36,n:','32,',22,'delim3',1869,1970,'33,',22,'delim3',1874,1970,'34,',22,'delim3',1879,1970,'35,',22,'delim3',45,1740,1970,'36,',22,'delim3a',45,1746,1970,'37,',22,'delim3a',45,1752,1970,'38,',22,'delim3a',45,1758,1970,'39,',22,'delim3a',1802,922,1817,'1em">{</',1911,1970,'40,',22,'delim3',1802,922,'left:-.05em; ',1507,'1em">}</',1911,1970,'41,',22,'delim3',45,1771,1970,'42,',22,'delim3b',45,1775,1970,'43,',22,'delim3b',24,122,1970,'44,',22,'delim3a',45,1795,1970,'45,',22,'delim3a',24,102,'h:0.04,d:2.96,','n:48,',22,'delim4',1869,2058,'n:49,',22,'delim4',1874,2058,'n:50,',22,'delim4',1879,2058,'n:51,',22,'delim4',45,1740,2058,'n:52,',22,'delim4a',45,1746,2058,'n:53,',22,'delim4a',45,1752,2058,'n:54,',22,'delim4a',45,1758,2058,'n:55,',22,'delim4a',1802,922,1817,'1em">{</',1911,2058,'n:56,',22,'delim4',1802,922,1817,'1em">}</',1911,2058,'n:57,',22,'delim4',45,1771,2058,22,'delim4b',45,1775,2058,22,'delim4b',24,122,2058,22,'delim4a',45,1795,2058,22,'delim4a',24,122,1959,'30,',22,'delim2a',45,1795,1959,'31,',22,'delim2a',45,'xE6',';",h:1,delim:{top:','48,bot:64,rep:66},',22,'delimx',45,'xF6',2153,'49,bot:65,rep:67},',22,'delimx',45,'xE9',2153,'50,bot:52,rep:54},',22,'delimx',45,'xF9',2153,'51,bot:53,rep:55},',22,'delimx',45,'xEB',';",h:1,delim:{bot:','52,rep:54},',22,'delimx',45,'xFB',2177,'53,rep:55},',22,'delimx',45,'xEA',2153,'50,rep:54},',22,'delimx',45,'xFA',2153,'51,rep:55},',22,'delimx',45,'xEC',2153,'56,mid:60,bot:58,rep:62},',22,'delimx',45,'xFC',2153,'57,mid:61,bot:59,rep:62},',22,'delimx',45,'xEE',2153,'56,bot:58,rep:62},',22,'delimx',45,'xFE',2153,'57,bot:59,rep:62},',22,'delimx',45,'xED',';",h:1,delim:{rep:','63},',22,'delimx',45,'xFD',2225,'119},',22,'delimx',45,'xEF',2225,'62},',22,'delimx',1802,1909,':.14em; margin-right:.36em">|</',1911,'delim:{top:120,bot:121,rep:63},',28,':"&#xE8',2153,'56,bot:59,rep:62},',22,'delimx',45,'xF8',2153,'57,bot:58,rep:62},',22,'delimx',45,'xE7',2225,'66},tclass:"delimx"},{c'],
+  [':"&#','xF7;",h:1,delim:{rep:67},','tclass:"','delimx','"},{c:"&#','x2329;",','h:0.04,d:1.76,n:','28',',tclass:"','delim2b',4,'x232A;",',6,'29',8,9,4,'x2294',';",h:0,d:1,n:','71',8,'bigop1',4,'x2294',';",h:0.1,d:1.','5',8,'bigop2',4,'x222E',';",h:0,d:1.11,ic:0.095,n:','73',8,'bigop1c',4,'x222E;",h:0,d:2.22,ic:0.222',8,'bigop2c',4,'x2299',18,'75',8,21,4,'x2299',24,'5',8,27,4,'x2295',18,'77',8,21,4,'x2295',24,'5',8,27,4,'x2297',18,'79',8,21,4,'x2297',24,'5',8,27,4,'x2211',18,'88',8,'bigop1a',4,'x220F',18,'89',8,79,4,'x222B',30,'90',8,33,4,'x222A',18,'91',8,'bigop1b',4,'x2229',18,'92',8,97,4,'x228E',18,'93',8,97,4,'x22C0',18,'94',8,21,4,'x22C1',18,'95',8,21,4,'x2211',24,'6',8,'bigop2a',4,'x220F',24,'5',8,127,4,'x222B;",h:0,d:2.22,ic:0.222',8,37,4,'x222A',24,'5',8,'bigop2b',4,'x2229',24,'5',8,143,4,'x228E',24,'5',8,143,4,'x22C0',24,'5',8,27,4,'x22C1',24,'5',8,27,4,'x2210',18,'97',8,79,4,'x2210',24,'5',8,127,4,'xFE3F;",h:0.','8,d:0,w:0.65,n:99',8,'wide1',4,181,'85,w:1.1,n:100',8,'wide2',4,181,'99,w:1.65',8,'wide3','"},{c:"~",h:1,w:0.','5,n:102',8,'wide1a',195,'8,n:103',8,'wide2a','"},{c',':"~",h:0.99,w:1.3',8,'wide3a',203,':"[",',6,'20',8,'delim2',203,':"]",',6,'21',8,212,4,'x2308;",',6,'22',8,'delim2a',4,'x2309;",',6,'23',8,224,4,'x230A;",',6,'24',8,224,4,'x230B;",',6,'25',8,224,'"},{c:\'<span style="','display:inline-block','; ','position:relative; ','left',':-.1em','; margin-right:-.','1em">{</span>\',',6,'26',8,212,243,244,'; position:relative',249,'1em; ','left:-.05em">}</span>\',',6,'27',8,212,243,'font-size:','150%; ','position:relative; top:.','8em; ',244,'">&#x221A;</span>\',h:0.','04,d:1.16,n:113',8,'root',243,266,'220%; ',268,269,244,271,'04,d:1.76,n:114',8,274,243,266,'310%; ',268,'8em',249,'01em; ',244,271,'06,d:2.36,n:115',8,274,243,266,'400%; ',268,'8em',249,'025em; ',244,271,'08,d:2.96,n:116',8,274,243,266,'490%; ',268,'8em',249,'03em; ',244,271,'1,d:3.75,n:117',8,274,243,266,'580%; ',268,'775em',249,'04em; ',244,271,'12,d:4.5,n:118',8,274,243,266,'750%; ',268,'775em',249,'04em; ',244,271,'14,d:5.7',8,274,243,244,'; margin-left:.','04em">|</','span><span style="',244,347,'08em; margin-right:.125em">|</span>\',delim:{top:126,bot:127,rep:119},',2,'normal',4,'x2191',';",h:0.7,d:0,delim:{','top:120,rep:63},',2,'arrow1a',4,'x2193',357,'bot:121,rep:63},',2,360,243,'margin-left:-.','1em"></',349,268,'55em',249,'3em; ',244,'">&#x25DC',';</span>\',h:0.','05',8,'symbol',243,368,'3em"></',349,268,'55em',249,259,244,'">&#x25DD',377,'05',8,380,243,368,'1em"></',349,268,'15em',249,'3em; ',244,'">&#x25DF',377,'05',8,380,243,368,'3em"></',349,268,'15em',249,259,244,'">&#x25DE',377,'05',8,380,4,'x21D1',';",h:0.65,d:0,delim:{','top:126,rep:119},',2,360,4,'x21D3',425,'bot:127,rep:119},',2,360,'"}],cmti10:[{c:"&Gamma;",ic:0.133',8,'igreek"},{c:"&','Delta;",',2,437,'Theta;",ic:0.094',8,437,'Lambda;",',2,437,'Xi;",ic:0.153',8,437,'Pi;",ic:0.164',8,437,'Sigma;",ic:0.12',8,437,'Upsilon;",ic:0.111',8,437,'Phi;",ic:0.0599',8,437,'Psi;",ic:0.111',8,437,'Omega;",','ic:0.103',8,'igreek',203,':"ff','",ic:0.212,krn:{"39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":','14,"108":15},','tclass:"italic"},{c',':"fi','",ic:0.103,',473,':"fl',475,473,':"ffi',475,473,':"ffl',475,473,0,'x131;",a:0,','ic:0.','0767,',473,':"j",d:0.2,','ic:0.0374,',473,0,'x2CB;",',2,'iaccent',4,'x2CA;",ic:0.0969',8,497,4,'x2C7;",ic:0.083',8,497,4,'x2D8;",ic:0.108',8,497,4,'x2C9;",ic:0.103',8,497,4,'x2DA;",',2,497,'"},{c:"?",','d:0.17,w:0.46,',473,0,'xDF;",','ic:0.105,',473,0,'xE6;",a:0,','ic:0.0751,',473,0,'x153;",a:0,',527,473,0,'xF8;",','ic:0.0919,',473,0,'xC6;",','ic:0.12,',473,0,'x152;",','ic:0.12,',473,0,'xD8;",','ic:0.094,',473,':"?",krn:{"108":-0.','256,"76":-0.321},',473,':"!",','ic:0.124,lig:{"96":','60},',473,0,'x201D;",','ic:0.0696,',473,':"#",ic:0.0662,',473,':"$",',473,':"%",ic:0.136,',473,':"&amp;",','ic:0.0969,',473,0,'x2019;",ic:0.124,krn:{"63":0.102,"33":0.102},lig:{"39":34},',473,':"(",d:0.2,','ic:0.162,',473,':")",d:0.2,','ic:0.0369,',473,':"*",ic:0.149,',473,':"+",a:0.1,','ic:0.0369,',473,':",",a:-0.3,d:0.2,w:0.278,',473,':"-",a:0,ic:0.0283',',lig:{"45":','123},',473,':".",a:-0.25,',473,':"/",ic:0.162,',473,':"0",ic:0.136,',473,':"1",ic:0.136,',473,':"2",ic:0.136,',473,':"3",ic:0.136,',473,':"4",ic:0.136,',473,':"5",ic:0.136,',473,':"6",ic:0.136,',473,':"7",ic:0.136,',473,':"8",ic:0.136,',473,':"9",ic:0.136,',473,':":",ic:0.0582,',473,':";",ic:0.0582,',473,0,'xA1;",','ic:0.0756,',473,':"=",a:0,d:-0.1,','ic:0.0662,',473,0,'xBF;",',473,':"?",ic:0.122,','lig:{"96":','62},',473,':"@",ic:0.096,',473,':"A",','krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.0256,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',636,'86','":-0.102,"','87',640,'101','":-0.0511,"','97',644,'111',644,'100',644,'99',644,'103',644,'113','":-0.0511','},',473,':"B',475,473,':"C",','ic:0.145,',473,':"D",',547,'krn:{"88','":-0.0256,"','87',668,'65',668,'86',668,'89":-0.','0256},',473,':"E",ic:0.12,',473,':"F','",ic:0.133,krn:{"','111',636,'101',636,'117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',640,'79',668,'67',668,'71',668,'81":-0.0256','},',473,':"G",ic:0.0872,',473,':"H",ic:0.164,',473,':"I",ic:0.158,',473,':"J",ic:0.14,',473,':"K",',663,'krn:{"79',668,'67',668,'71',668,696,'},',473,':"L",krn:{"84',636,'89',636,'86',640,'87',640,'101',644,'97',644,'111',644,'100',644,'99',644,'103',644,'113',656,'},',473,':"M",ic:0.164,',473,':"N",ic:0.164,',473,':"O",',547,'krn:{"88',668,'87',668,'65',668,'86',668,675,'0256},',473,':"P',475,'krn:{"65":-0.0767},',473,':"Q",d:0.2,',547,473,':"R",ic:0.0387,',634,'0.0256,"84',636,'89',636,'86',640,'87',640,'101',644,'97',644,'111',644,'100',644,'99',644,'103',644,'113',656,'},',473,':"S",ic:0.12,',473,':"T',681,'121',636,'101',636,'111',687,'117',636,'65":-0.0767},',473,':"U",ic:0.164,',473,':"V",ic:0.','184,krn:{"','111',636,'101',636,'117',687,'65',640,'79',668,'67',668,'71',668,696,'},',473,':"W",ic:0.',809,'65":-0.0767},',473,':"X",ic:0.158,krn:{"79',668,'67',668,'71',668,696,'},',473,':"Y",ic:0.','194',',krn:{"101',636,'111',687,'117',636,'65":-0.0767},',473,':"Z",',663,473,':"[",d:0.1,','ic:0.188,',473,0,'x201C;",','ic:0.169,',473,':"]",d:0.1,','ic:0.105,',473,0,'x2C6;",ic:0.0665',8,497,4,'x2D9;",ic:0.118',8,497,4,'x2018;",',553,'92},',473,':"a','",a:0,ic:0.',489,473,':"b",ic:0.0631',842,644,'97',644,'111',644,'100',644,'99',644,'103',644,'113',656,'},',473,':"c',877,'0565',842,644,'97',644,'111',644,'100',644,'99',644,'103',644,'113',656,'},',473,':"d',475,'krn:{"108":','0.0511},',473,':"e',877,'0751',842,644,'97',644,'111',644,'100',644,'99',644,'103',644,'113',656,'},',473,':"f',471,'12,"102":11,"108":13},',473,':"g','",a:0,d:0.2,ic:0.','0885,',473,':"h",ic:0.',489,473,':"i",ic:0.102,',473,491,663,473,':"k",ic:0.','108,',473,':"l',475,918,'0.0511},',473,':"m',877,489,473,':"n',877,489,'krn:{"39":-0.102},',473,':"o',877,'0631',842,644,'97',644,'111',644,'100',644,'99',644,'103',644,'113',656,'},',473,':"p',945,'0631',842,644,'97',644,'111',644,'100',644,'99',644,'103',644,'113',656,'},',473,':"q',945,'0885,',473,':"r',877,'108',842,644,'97',644,'111',644,'100',644,'99',644,'103',644,'113',656,'},',473,':"s',877,'0821,',473,':"t",ic:0.0949,',473,':"u',877,489,473,':"v',877,957,473,':"w',877,957,918,'0.0511},',473,':"x',877,'12,',473,':"y',945,'0885,',473,':"z',877,'123,',473,0,'x2013',';",a:0.1,ic:0.','0921',586,'124},',473,0,'x2014',1068,'0921,',473,0,'x2DD;",ic:0.122',8,497,4,'x2DC;",ic:0.116',8,497,4,'xA8;",',2,497,'"}],cmbx10:[{c:"&Gamma',';",tclass:"bgreek"},{c:"&','Delta',1091,'Theta',1091,'Lambda',1091,'Xi',1091,'Pi',1091,'Sigma',1091,'Upsilon',1091,'Phi',1091,'Psi',1091,465,2,'bgreek',203,':"ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"bold"},{c',':"fi",',1117,':"fl",',1117,':"ffi",',1117,':"ffl",',1117,0,487,1117,491,1117,0,'x2CB',';",tclass:"baccent',4,'x2CA',1133,4,'x2C7',1133,4,'x2D8',1133,4,'x2C9',1133,4,'x2DA',1133,518,1117,0,522,1117,0,526,1117,0,530,1117,0,534,1117,0,538,1117,0,542,1117,0,546,1117,549,'278,"76":-0.319},',1117,552,628,'60},',1117,0,557,1117,':"#",',1117,':"$",',1117,':"%",',1117,566,1117,0,'x2019;",krn:{"63":0.111,"33":0.111},lig:{"39":34},',1117,572,1117,575,1117,':"*",',1117,580,1117,':",",a:-0.3,d:0.2,w:0.278,',1117,':"-",a:0',586,'123},',1117,':".",a:-0.25,',1117,':"/",',1117,':"0",',1117,':"1",',1117,':"2",',1117,':"3",',1117,':"4",',1117,':"5",',1117,':"6",',1117,':"7",',1117,':"8",',1117,':"9",',1117,':":",',1117,':";",',1117,0,618,1117,621,1117,0,'xBF;",',1117,':"?",',628,'62},',1117,':"@",',1117,':"A",krn:{"116','":-0.0278,"','67',1250,'79',1250,'71',1250,'85',1250,'81',1250,'84','":-0.0833,"','89',1262,'86":-0.','111,"87":-0.111},',1117,':"B",',1117,662,1117,':"D",krn:{"88',1250,'87',1250,'65',1250,'86',1250,675,'0278},',1117,':"E",',1117,':"F",krn:{"111',1262,'101',1262,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',1250,'67',1250,'71',1250,'81":-0.0278','},',1117,':"G",',1117,':"H",',1117,':"I",krn:{"73":0.0278},',1117,':"J",',1117,':"K",krn:{"79',1250,'67',1250,'71',1250,1297,'},',1117,':"L",krn:{"84',1262,'89',1262,1265,'111,"87":-0.111},',1117,':"M",',1117,':"N",',1117,':"O",krn:{"88',1250,'87',1250,'65',1250,'86',1250,675,'0278},',1117,':"P",krn:{"65',1262,'111',1250,'101',1250,'97',1250,'46',1262,'44":-0.0833},',1117,763,1117,':"R",krn:{"116',1250,'67',1250,'79',1250,'71',1250,'85',1250,'81',1250,'84',1262,'89',1262,1265,'111,"87":-0.111},',1117,':"S",',1117,':"T",krn:{"121',1250,'101',1262,'111',1290,'0833,"117":-0.0833','},',1117,':"U",',1117,808,'0139,krn:{"','111',1262,'101',1262,'117',1290,'111,"79',1250,'67',1250,'71',1250,1297,'},',1117,827,1386,'111',1262,'101',1262,'117',1290,'111,"79',1250,'67',1250,'71',1250,1297,'},',1117,':"X",krn:{"79',1250,'67',1250,'71',1250,1297,'},',1117,840,'025',842,1262,'111',1290,1380,'},',1117,850,1117,853,1117,0,857,1117,860,1117,0,'x2C6',1133,4,'x2D9',1133,4,872,628,'92},',1117,':"a','",a:0,krn:{"','118',1250,'106":0.','0556,"121',1250,'119":-0.','0278},',1117,':"b",krn:{"101','":0.0278,"','111',1468,'120',1250,'100',1468,'99',1468,'113',1468,'118',1250,1461,'0556,"121',1250,1464,'0278},',1117,':"c',1458,'104',1250,'107":-0.0278},',1117,':"d",',1117,':"e",a:0,',1117,':"f',1115,'12,"102":11,"108":13},',1117,':"g',945,1386,1461,'0278},',1117,':"h",krn:{"116',1250,'117',1250,'98',1250,'121',1250,'118',1250,1464,'0278},',1117,':"i",',1117,491,1117,':"k",krn:{"97":-0.0556,"101',1250,'97',1250,'111',1250,'99":-0.','0278},',1117,':"l",',1117,':"m',1458,'116',1250,'117',1250,'98',1250,'121',1250,'118',1250,1464,'0278},',1117,':"n',1458,'116',1250,'117',1250,'98',1250,'121',1250,'118',1250,1464,'0278},',1117,':"o",a:0',842,1468,'111',1468,'120',1250,'100',1468,'99',1468,'113',1468,'118',1250,1461,'0556,"121',1250,1464,'0278},',1117,':"p",a:0,d:0.2',842,1468,'111',1468,'120',1250,'100',1468,'99',1468,'113',1468,'118',1250,1461,'0556,"121',1250,1464,'0278},',1117,':"q",a:0,d:0.2,',1117,':"r",a:0,',1117,':"s",a:0,',1117,':"t",krn:{"121',1250,1464,'0278},',1117,':"u',1458,1464,'0278},',1117,':"v',877,1386,'97":-0.0556,"101',1250,'97',1250,'111',1250,1530,'0278},',1117,':"w',877,'0139',842,1250,'97',1250,'111',1250,1530,'0278},',1117,':"x",a:0,',1117,':"y',945,1386,'111',1250,'101',1250,'97',1250,'46',1262,'44":-0.0833},',1117,':"z",a:0,',1117,0,'x2013',1068,'0278',586,'124},',1117,0,'x2014',1068,'0278,',1117,0,'x2DD',1133,4,'x2DC',1133,4,'xA8',1133,'"}]});','jsMath.Setup.Styles({".typeset .','cmr10','":"font-family: ','serif','",".typeset .','italic":"font-style: italic',1690,'bold":"font-weight: bold',1690,'lucida','":"font-family: \'',1695,' sans unicode','\'",".typeset .','arial','":"font-family: \'Arial unicode MS',1699,'cal',1696,'Script MT\', \'Script MT Bold\', cursive',1690,'arrows',1701,1699,'arrow1',1701,1699,360,1701,'\'; ',268,'05em;left:-.15em',249,'15em','; display:inline-block",".typeset .','arrow2',1701,'\'; ',246,'top:-.',259,244,';",".typeset .','arrow3',1701,'\'; margin',':.1em',1690,380,1701,1699,'symbol2',1701,1699,'delim1','":"font-family: \'Times New Roman\'; font-','size: ','133%; ',268,'7em',1720,'delim1a',1696,'Lucida',1698,'\'; font-size: ','133%; ',268,'8em',1720,'delim1b',1701,1751,'133%; ',268,'7em',1720,212,1741,1742,'180%; ',268,'75em',1720,224,1696,'Lucida',1698,1751,'180%; ',268,'8em',1720,9,1701,1751,'180%; ',268,'7em',1720,'delim3',1741,1742,'250%; ',268,'725em',1720,'delim3a',1696,'Lucida',1698,1751,'250%; ',268,'775em',1720,'delim3b',1701,1751,'250%; ',268,'7em',1720,'delim4',1741,1742,'325%; ',268,'7em',1720,'delim4a',1696,'Lucida',1698,1751,'325%; ',268,'775em',1720,'delim4b',1701,1751,'325%; ',268,'7em',1720,3,1688,'Symbol',1690,'greek',1696,'Times New Roman',1699,468,1741,'style:italic',1690,1112,1741,'weight:bold',1690,21,1701,1751,'130','%; position: relative; top',': .7em; margin:-.05em',1720,79,1701,1751,'110',1852,': .85em; ',244,1728,97,1701,1751,'180',1852,': .6em',1720,33,1701,1751,'85',1852,': 1em',1720,27,1701,1751,'230',1852,': .6em; margin:-.05em',1720,127,1701,1751,'185',1852,': .75em',1720,143,1701,1751,'275',1852,': .55em',1720,37,1701,1751,'185',1852,': 1em',249,'1em',1720,184,1701,1751,'67',1852,':-.75em; ',244,1728,189,1701,1751,'110',1852,':-.4em; ',244,1728,194,1701,1751,'175',1852,':-.25em',1720,198,1741,1742,'75',1852,':-.5em',1720,202,1741,1742,'133',1852,':-.2em',1720,206,1741,1742,'200',1852,248,1720,274,1701,1731,'-right:-.075em',1720,'accent',1701,'\'; ',268,'05em; left:.','15em',1720,497,1701,'\'; ',268,1960,'15em; font-',1842,1720,'baccent',1701,'\'; ',268,1960,1968,1846,'; ',244,'"});','if(jsMath.browser=="','Mozilla"){jsMath.Update.TeXfonts({cmex10:{"48":{c',0,'xF8EB;"},"49":{c',0,'xF8F6;"},"50":{c',0,'xF8EE;"},"51":{c',0,'xF8F9;"},"52":{c',0,'xF8F0;"},"53":{c',0,'xF8FB;"},"54":{c',0,'xF8EF;"},"55":{c',0,'xF8FA;"},"56":{c',0,'xF8F1;"},"57":{c',0,'xF8FC;"},"58":{c',0,'xF8F3;"},"59":{c',0,'xF8FE;"},"60":{c',0,'xF8F2;"},"61":{c',0,'xF8FD;"},"62":{c',0,'xF8F4;"},"64":{c',0,'xF8ED;"},"65":{c',0,'xF8F8;"},"66":{c',0,'xF8EC;"},"67":{c',0,'xF8F7;"}}});',1686,'accent',1688,'Arial unicode MS; ',268,1960,'05em"})}',1981,'MSIE"){jsMath.Browser.msieFontBug=1}jsMath.Macro("not","\\\\mathrel{\\\\rlap{\\\\kern 3mu/}}");jsMath.Macro("bowtie","\\\\mathrel\\\\triangleright\\\\kern-6mu\\\\mathrel\\\\triangleleft");jsMath.Box.defaultH=0.8;']
 ]);
\ No newline at end of file
diff --git a/src/main/webapp/static/js/jsMath/jsMath-loader-post.html b/src/main/webapp/static/js/jsMath/jsMath-loader-post.html
index 74a47aedaaae82fa45bc6d1d8c61959b41c38996..0de7cb98339ee59dc1211a415ad42f46208ae7ae 100644
--- a/src/main/webapp/static/js/jsMath/jsMath-loader-post.html
+++ b/src/main/webapp/static/js/jsMath/jsMath-loader-post.html
@@ -51,7 +51,6 @@ if (url == 'http://www.math.union.edu/locate/jsMath/jsMath/jsMath-version-check.
     window.parent.postMessage(ID+":SCR:"+request.responseText,"*");
     window.parent.postMessage(ID+":END:1","*");
   } catch (err) {
-alert(err.message);
     window.parent.postMessage(ID+":ERR:Can't load "+url+": "+err.message,"*");
   }
 } else {
diff --git a/src/main/webapp/static/js/jsMath/jsMath.js b/src/main/webapp/static/js/jsMath/jsMath.js
index 4ef484fba9c99b99630d03977d6276baa3f713a6..4dc9cf00ba3c8ad193ffd24964c14dc1e8581c37 100644
--- a/src/main/webapp/static/js/jsMath/jsMath.js
+++ b/src/main/webapp/static/js/jsMath/jsMath.js
@@ -10,7 +10,7 @@
  *
  *  for the latest version, and for documentation on how to use jsMath.
  *
- *  Copyright 2004-2008 by Davide P. Cervone
+ *  Copyright 2004-2010 by Davide P. Cervone
  * 
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -26,6507 +26,26 @@
  *  
  *****************************************************************************/
 
-/*
- *  Prevent running everything again if this file is loaded twice
- */
-if (!window.jsMath || !window.jsMath.loaded) {
+if (!window.jsMath) {jsMath = {}}
+if (!jsMath.Script) {jsMath.Script = {}}
 
-var jsMath_old = window.jsMath;  // save user customizations
-
-//
-// debugging routine
-// 
-/* 
- * function ShowObject (obj,spaces) {
- *   var s = ''; if (!spaces) {spaces = ""}
- *   for (var i in obj) {
- *     if (obj[i] != null) {
- *       if (typeof(obj[i]) == "object") {
- *         s += spaces + i + ": {\n"
- *           + ShowObject(obj[i],spaces + '  ')
- *           + spaces + "}\n";
- *       } else if (typeof(obj[i]) != "function") {
- *         s += spaces + i + ': ' + obj[i] + "\n";
- *       }
- *     }
- *   }
- *   return s;
- * }
- */
-
-/***************************************************************************/
-//
-//  Check for DOM support
-//
-if (!document.getElementById || !document.childNodes || !document.createElement) {
-  alert('The mathematics on this page requires W3C DOM support in its JavaScript. '
-      + 'Unfortunately, your browser doesn\'t seem to have this.');
-} else {
-
-/***************************************************************************/
-
-window.jsMath = {
-  
-  version: "3.6-OLAT-7.2.1.3",  // change this if you edit the file, but don't edit this file
-  
-  document: document,  // the document loading jsMath
-  window: window,      // the window of the of loading document
-  
-  platform: (navigator.platform.match(/Mac/) ? "mac" :
-             navigator.platform.match(/Win/) ? "pc" : "unix"),
-  
-  // Font sizes for \tiny, \small, etc. (must match styles below)
-  sizes: [50, 60, 70, 85, 100, 120, 144, 173, 207, 249],
-
-  //
-  //  The styles needed for the TeX fonts and other jsMath elements
-  //
-  styles: {
-    '.math': {                  // unprocessed mathematics
-      'font-family': 'serif',
-      'font-style':  'normal',
-      'font-weight': 'normal'
-    },
-
-    '.typeset': {               // final typeset mathematics
-      'font-family': 'serif',
-      'font-style':  'normal',
-      'font-weight': 'normal',
-      'line-height': 'normal',
-      'text-indent': '0px'
-    },
-    
-    '.typeset .normal': {       // \hbox contents style
-      'font-family': 'serif',
-      'font-style': 'normal',
-      'font-weight': 'normal'
-    },
-    
-    'div.typeset': {            // display mathematics
-      'text-align': 'center',
-       margin:       '1em 0px'
-    },
-    
-    'span.typeset': {           // in-line mathematics
-      'text-align': 'left'
-    },
-    
-    '.typeset span': {          // prevent outside CSS from setting these
-      'text-align': 'left',
-       border:       '0px',
-       margin:       '0px',
-       padding:      '0px'
-    },
-    
-    'a .typeset img, .typeset a img': {   // links in image mode
-       border: '0px',
-      'border-bottom': '1px solid blue;'
-    },
-
-    // Font sizes
-    '.typeset .size0': {'font-size': '50%'},  // tiny (\scriptscriptsize)
-    '.typeset .size1': {'font-size': '60%'},  //       (50% of \large for consistency)
-    '.typeset .size2': {'font-size': '70%'},  // scriptsize
-    '.typeset .size3': {'font-size': '85%'},  // small (70% of \large for consistency)
-    '.typeset .size4': {'font-size': '100%'}, // normalsize
-    '.typeset .size5': {'font-size': '120%'}, // large
-    '.typeset .size6': {'font-size': '144%'}, // Large
-    '.typeset .size7': {'font-size': '173%'}, // LARGE
-    '.typeset .size8': {'font-size': '207%'}, // huge
-    '.typeset .size9': {'font-size': '249%'}, // Huge
-  
-    // TeX fonts
-    '.typeset .cmr10':  {'font-family': 'jsMath-cmr10, serif'},
-    '.typeset .cmbx10': {'font-family': 'jsMath-cmbx10, jsMath-cmr10'},
-    '.typeset .cmti10': {'font-family': 'jsMath-cmti10, jsMath-cmr10'},
-    '.typeset .cmmi10': {'font-family': 'jsMath-cmmi10'},
-    '.typeset .cmsy10': {'font-family': 'jsMath-cmsy10'},
-    '.typeset .cmex10': {'font-family': 'jsMath-cmex10'},
-    
-    '.typeset .textit': {'font-family': 'serif', 'font-style': 'italic'},
-    '.typeset .textbf': {'font-family': 'serif', 'font-weight': 'bold'},
-    
-    '.typeset .link':   {'text-decoration': 'none'},  // links in mathematics
-
-    '.typeset .error':  {      // in-line error messages
-      'font-size':        '90%',
-      'font-style':       'italic',
-      'background-color': '#FFFFCC',
-       padding:           '1px',
-       border:            '1px solid #CC0000'
-    },
-
-    '.typeset .blank': {       // internal use
-      display: 'inline-block',
-      overflow: 'hidden',
-      border: '0px none',
-      width: '0px',
-      height: '0px'
-    },
-    '.typeset .spacer': {      // internal use
-      display: 'inline-block'
-    },
-    
-    '#jsMath_hiddenSpan': {    // used for measuring BBoxes
-       visibility:    'hidden',
-       position:      'absolute',
-       top:           '0px',
-       left:          '0px',
-      'line-height':  'normal',
-      'text-indent':  '0px'
-    },
-
-    '#jsMath_message': {      // percentage complete message
-       position:   'fixed',
-       bottom:     '1px',
-       left:       '2px',
-      'background-color': '#E6E6E6',
-       border:     'solid 1px #959595',
-       margin:     '0px',
-       padding:    '1px 8px',
-      'z-index':   '102',
-       color:      'black',
-      'font-size': 'small',
-       width:      'auto'
-    },
-
-    '#jsMath_panel': {        // control panel
-       position:    'fixed',
-       bottom:      '1.75em',
-       right:       '1.5em',
-       padding:     '.8em 1.6em',
-      'background-color': '#DDDDDD',
-       border:      'outset 2px',
-      'z-index':    '103',
-       width:       'auto',
-       color:       'black',
-      'font-size':  '10pt',
-      'font-style': 'normal'
-    },
-    '#jsMath_panel .disabled': {color: '#888888'},   // disabled items in the panel
-    '#jsMath_panel .infoLink': {'font-size': '85%'}, // links to web pages
-
-    // avoid CSS polution from outside the panel
-    '#jsMath_panel *':  {
-      'font-size':   'inherit',
-      'font-style':  'inherit',
-      'font-family': 'inherit',
-      'line-height': 'normal'
-    },
-    '#jsMath_panel div':   {'background-color': 'inherit', color: 'inherit'},
-    '#jsMath_panel span':  {'background-color': 'inherit', color: 'inherit'},
-    '#jsMath_panel td': {
-       border: '0px', padding: '0px', margin: '0px',
-      'background-color': 'inherit', color: 'inherit'
-    },
-    '#jsMath_panel tr': {
-       border: '0px', padding: '0px', margin: '0px',
-      'background-color': 'inherit', color: 'inherit'
-    },
-    '#jsMath_panel table': {
-       border: '0px', padding: '0px', margin: '0px',
-      'background-color': 'inherit', color: 'inherit',
-       height: 'auto', width: 'auto'
-    },
-    
-    '#jsMath_button': {  // the jsMath floating button (to open control panel)
-       position:   'fixed',
-       bottom:     '1px',
-       right:      '2px',
-      'background-color': 'white',
-       border:     'solid 1px #959595',
-       margin:     '0px',
-       padding:    '0px 3px 1px 3px',
-      'z-index':   '102',
-       color:      'black',
-      'text-decoration':  'none',
-      'font-size': 'x-small',
-       width:      'auto',
-       cursor:     'hand'
-    },
-    '#jsMath_button *': {
-      padding: '0px', border: '0px', margin: '0px', 'line-height': 'normal',
-      'font-size': 'inherit', 'font-style': 'inherit', 'font-family': 'inherit'
-    },
-    
-    '#jsMath_global': {'font-style': 'italic'},  // 'global' in jsMath button
-
-    '#jsMath_noFont .message': {  // missing font message window
-      'text-align': 'center',
-       padding:     '.8em 1.6em',
-       border:      '3px solid #DD0000',
-      'background-color': '#FFF8F8',
-       color:       '#AA0000',
-      'font-size':  'small',
-       width:       'auto'
-    },
-    '#jsMath_noFont .link': {
-       padding:    '0px 5px 2px 5px',
-       border:     '2px outset',
-      'background-color': '#E8E8E8',
-       color:      'black',
-      'font-size': '80%',
-       width:      'auto',
-       cursor:     'hand'
-    },
-
-    '#jsMath_PrintWarning .message': {  // warning on print pages
-      'text-align': 'center',
-       padding: '.8em 1.6em',
-       border: '3px solid #DD0000',
-      'background-color': '#FFF8F8',
-       color: '#AA0000',
-      'font-size': 'x-small',
-       width: 'auto'
-    },
-
-    '@media print': {
-      '#jsMath_button': {display: 'none'},
-      '#jsMath_Warning': {display: 'none'}
-    },
-                         
-    '@media screen': {
-      '#jsMath_PrintWarning': {display:'none'}
-    }
-
-  },
-  
-
-  /***************************************************************************/
-
-  /*
-   *  Get a jsMath DOM element
-   */
-  Element: function (name) {return jsMath.document.getElementById('jsMath_'+name)},
-  
-  /*
-   *  Get the width and height (in pixels) of an HTML string
-   */
-  BBoxFor: function (s) {
-    this.hidden.innerHTML = 
-      '<nobr><span class="typeset"><span class="scale">'+s+'</span></span></nobr>';
-    var bbox = {w: this.hidden.offsetWidth, h: this.hidden.offsetHeight};
-    this.hidden.innerHTML = '';
-    return bbox;
-  },
-
-  /*
-   *  Get the width and height (in ems) of an HTML string.
-   *  Check the cache first to see if we've already measured it.
-   */
-  EmBoxFor: function (s) {
-    var cache = jsMath.Global.cache.R;
-    if (!cache[this.em]) {cache[this.em] = {}}
-    if (!cache[this.em][s]) {
-      var bbox = this.BBoxFor(s);
-      cache[this.em][s] = {w: bbox.w/this.em, h: bbox.h/this.em};
-    }
-    return cache[this.em][s];
-  },
-
-  /*
-   *  For browsers that don't handle sizes of italics properly (MSIE).
-   *  Check the cache first to see if we've already measured it.
-   */
-  EmBoxForItalics: function (s) {
-    var cache = jsMath.Global.cache.R;
-    if (!cache[this.em]) {cache[this.em] = {}}
-    if (!cache[this.em][s]) {
-      var bbox = this.BBoxFor(s);
-      if (s.match(/<i>|class=\"(icm|italic|igreek|iaccent)/i)) {
-        bbox.w = bbox.Mw = this.BBoxFor(s+jsMath.Browser.italicString).w
-                             - jsMath.Browser.italicCorrection;
-      }
-      cache[this.em][s] = {w: bbox.w/this.em, h: bbox.h/this.em};
-    }
-    return cache[this.em][s];
-  },
-
-  /*
-   *  Initialize jsMath.  This determines the em size, and a variety
-   *  of other parameters used throughout jsMath.
-   */
-  Init: function () {
-    if (jsMath.Setup.inited != 1) {
-      if (!jsMath.Setup.inited) {jsMath.Setup.Body()}
-      if (jsMath.Setup.inited != 1) {
-        if (jsMath.Setup.inited == -100) return;
-        jsMath.Setup.inited = 1;
-      }
-    }
-    this.em = this.CurrentEm();
-    var cache = jsMath.Global.cache.B;
-    if (!cache[this.em]) {
-      cache[this.em] = {};
-      cache[this.em].bb = this.BBoxFor('x'); var hh = cache[this.em].bb.h;
-      cache[this.em].d = this.BBoxFor('x'+jsMath.HTML.Rule(1,hh/jsMath.em)).h - hh;
-      if (jsMath.Browser.italicString) 
-        {cache[this.em].ic = jsMath.BBoxFor(jsMath.Browser.italicString).w}
-    }
-    jsMath.Browser.italicCorrection = cache[this.em].ic;
-    var bb = cache[this.em].bb; var h = bb.h; var d = cache[this.em].d
-    this.h = (h-d)/this.em; this.d = d/this.em;
-    this.hd = this.h + this.d;
-
-    this.Setup.TeXfonts();
-    
-    var x_height = this.EmBoxFor('<span class="cmr10">M</span>').w/2;
-    this.TeX.M_height = x_height*(26/14);
-    this.TeX.h = this.h; this.TeX.d = this.d; this.TeX.hd = this.hd;
-    
-    this.Img.Scale();
-    if (!this.initialized) {
-      this.Setup.Sizes();
-      this.Img.UpdateFonts();
-    }
-
-    // factor for \big and its brethren
-    this.p_height = (this.TeX.cmex10[0].h + this.TeX.cmex10[0].d) / .85;
-
-    this.initialized = 1;
-  },
-  
-  /*
-   *  Get the x size and if it has changed, reinitialize the sizes
-   */
-  ReInit: function () {
-    if (this.em != this.CurrentEm()) {this.Init()}
-  },
-  
-  /*
-   *  Find the em size in effect at the current text location
-   */
-  CurrentEm: function () {
-    var em = this.BBoxFor('<span style="'+jsMath.Browser.block+';width:13em;height:1em"></span>').w/13;
-    if (em > 0) {return em}
-    // handle older browsers
-    return this.BBoxFor('<img src="'+jsMath.blank+'" style="width:13em;height:1em"/>').w/13;
-  },
-  
-  /*
-   *  Mark jsMath as loaded and copy any user-provided overrides
-   */
-  Loaded: function () {
-    if (jsMath_old) {
-      var override = ['Process', 'ProcessBeforeShowing',
-        'ConvertTeX','ConvertTeX2','ConvertLaTeX','ConvertCustom',
-        'CustomSearch', 'Synchronize', 'Macro', 'document'];
-      for (var i = 0; i < override.length; i++) {
-        if (jsMath_old[override[i]]) {delete jsMath_old[override[i]]}
-      }
-    }
-    if (jsMath_old) {this.Insert(jsMath,jsMath_old)}
-    jsMath_old = null;
-    jsMath.loaded = 1;
-  },
-  
-  /*
-   *  Manage JavaScript objects:
-   *  
-   *      Add:        add/replace items in an object
-   *      Insert:     add items to an object
-   *      Package:    add items to an object prototype
-   */
-  Add: function (dst,src) {for (var id in src) {dst[id] = src[id]}},
-  Insert: function (dst,src) {
-    for (var id in src) {
-      if (dst[id] && typeof(src[id]) == 'object'
-                  && (typeof(dst[id]) == 'object'
-                  ||  typeof(dst[id]) == 'function')) {
-        this.Insert(dst[id],src[id]);
-      } else {
-        dst[id] = src[id];
-      }
-    }
-  },
-  Package: function (obj,def) {this.Insert(obj.prototype,def)}
-
-};
-
-
-/***************************************************************************/
-
-  /*
-   *  Implements items associated with the global cache.
-   *
-   *  This object will be replaced by a global version when 
-   *  (and if) jsMath-global.html is loaded.
-   */
-jsMath.Global = {
-    isLocal: 1,  // a local copy if jsMath-global.html hasn't been loaded
-    cache: {T: {}, D: {}, R: {}, B: {}},
-
-    /*
-     *  Clear the global (or local) cache
-     */
-    ClearCache: function () {jsMath.Global.cache = {T: {}, D: {}, R: {}, B: {}}},
-
-    /*
-     *  Initiate global mode
-     */
-    GoGlobal: function (cookie) {
-      var url = String(jsMath.window.location);
-      var c = (jsMath.isCHMmode ? '#' : '?');
-      if (cookie) {url = url.replace(/\?.*/,'') + '?' + cookie}
-      jsMath.Controls.Reload(jsMath.root + "jsMath-global.html" + c +escape(url));
-    },
-
-    /*
-     *  Check if we need to go to global mode
-     */
-    Init: function () {
-      if (jsMath.Controls.cookie.global == "always" && !jsMath.noGoGlobal) {
-        if (navigator.accentColorName) return; // OmniWeb crashes on GoGlobal
-        if (!jsMath.window) {jsMath.window = window}
-        jsMath.Controls.loaded = 1;
-        jsMath.Controls.defaults.hiddenGlobal = null;
-        this.GoGlobal(jsMath.Controls.SetCookie(2));
-      }
-    },
-
-    /*
-     *  Try to register with a global.html window that contains us
-     */
-    Register: function () {
-      var parent = jsMath.window.parent;
-      if (!jsMath.isCHMode)
-        {jsMath.isCHMmode = (jsMath.window.location.protocol == 'mk:')}
-      try {
-        if (!jsMath.isCHMmode) this.Domain();
-        if (parent.jsMath && parent.jsMath.isGlobal)
-          {parent.jsMath.Register(jsMath.window)}
-      } catch (err) {jsMath.noGoGlobal = 1}
-    },
-
-    /*
-     *  If we're not the parent window, try to set the domain to
-     *  match the parent's domain (so we can use the Global data
-     *  if the surrounding frame is a Global frame.
-     */
-    Domain: function () {
-      // MSIE/Mac can't do domain changes, so don't bother trying
-      if (navigator.appName == 'Microsoft Internet Explorer' &&
-          jsMath.platform == 'mac' && navigator.userProfile != null) return;
-      if (window == parent) return;
-      var oldDomain = jsMath.document.domain;
-      try {
-        while (true) {
-          try {if (parent.document.title != null) return} catch (err) {}
-          if (!document.domain.match(/\..*\./)) break;
-          jsMath.document.domain = jsMath.document.domain.replace(/^[^.]*\./,'');
-        }
-      } catch (err) {}
-      jsMath.document.domain = oldDomain;
-    }
-
-};
-  
-
-
-/***************************************************************************/
-
-/*
- *
- *  Implement loading of remote scripts using XMLHttpRequest, if
- *  possible, otherwise use a hidden IFRAME and fake it.  That
- *  method runs asynchronously, which causes lots of headaches.
- *  Solve these using Push command, which queues actions
- *  until files have loaded.
- */
-
-jsMath.Script = {
-
-  request: null, // the XMLHttpRequest object
-
-  /*
-   *  Create the XMLHttpRequest object, if we can.
-   *  Otherwise, use the iframe-based fallback method.
-   */
-  Init: function () {
-    if (!(jsMath.Controls.cookie.asynch && jsMath.Controls.cookie.progress)) {
-      if (window.XMLHttpRequest) {
-        try {this.request = new XMLHttpRequest} catch (err) {}
-        // MSIE and FireFox3 can't use xmlRequest on local files,
-        // but we don't have jsMath.browser yet to tell, so use this check
-        if (this.request && jsMath.root.match(/^file:\/\//)) {
-          try {
-            this.request.open("GET",jsMath.root+"jsMath.js",false);
-            this.request.send(null);
-          } catch (err) {
-            this.request = null;
-            //  Firefox3 has window.postMessage for inter-window communication. 
-            //  It can be used to handle the new file:// security model,
-            //  so set up the listener.
-            if (window.postMessage) {
-              this.mustPost = 1;
-              jsMath.window.addEventListener("message",jsMath.Post.Listener,false);
-            }
-          }
-        }
-      }
-      if (!this.request && window.ActiveXObject) {
-        var xml = ["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0",
-                   "MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
-        for (var i = 0; i < xml.length && !this.request; i++) {
-          try {this.request = new ActiveXObject(xml[i])} catch (err) {}
-        }
-      }
-    }
-    //
-    //  Use the delayed-script fallback for MSIE/Mac and old versions
-    //  of several browsers (Opera 7.5, OmniWeb 4.5).
-    //
-    if (!this.request || jsMath.Setup.domainChanged)
-      {this.Load = this.delayedLoad; this.needsBody = 1}
-  },
-
-  /*
-   *  Load a script and evaluate it in the window's context
-   */
-  Load: function (url,show) {
-    if (show) {
-      jsMath.Message.Set("Loading "+url);
-      jsMath.Script.Delay(1);
-      jsMath.Script.Push(this,'xmlRequest',url);
-      jsMath.Script.Push(jsMath.Message,'Clear');
-    } else {
-      jsMath.Script.Push(this,'xmlRequest',url);
-    }
-  },
-
-  /*
-   *  Load a URL and run the contents of the file
-   */
-  xmlRequest: function (url) {
-    this.blocking = 1;
-//    this.debug('xmlRequest: '+url);
-    try {
-      this.request.open("GET",url,false);
-      this.request.send(null);
-    } catch (err) {
-      this.blocking = 0;
-      if (jsMath.Translate.restart && jsMath.Translate.asynchronous) {return ""}
-      throw "jsMath can't load the file '"+url+"'\n"
-          + "Message: "+err.message;
-    }
-    if (this.request.status != null && (this.request.status >= 400 || this.request.status < 0)) {
-      // Do we need to deal with redirected links?
-      this.blocking = 0;
-      if (jsMath.Translate.restart && jsMath.Translate.asynchronous) {return ""}
-      throw "jsMath can't load the file '"+url+"'\n"
-          + "Error status: "+this.request.status;
-    }
-    if (!url.match(/\.js$/)) {return(this.request.responseText)}
-    var tmpQueue = this.queue; this.queue = [];
-//    this.debug('xml Eval ['+tmpQueue.length+']');
-    jsMath.window.eval(this.request.responseText);
-//    this.debug('xml Done ['+this.queue.length+' + '+tmpQueue.length+']');
-    this.blocking = 0; this.queue = this.queue.concat(tmpQueue);
-    this.Process();
-    return "";
-  },
-
-  /********************************************************************
-   *
-   *  Implement asynchronous loading and execution of scripts
-   *  (via hidden IFRAME) interleved with other JavaScript commands
-   *  that must be synchronized with the file loading.  (Basically, this
-   *  is for MSIE/Mac and Opera 7.5, which don't have XMLHttpRequest.)
-   */
-
-  cancelTimeout: 30*1000,   // delay for canceling load (30 sec)
-
-  blocking: 0,       // true when an asynchronous action is being performed
-  cancelTimer: null, // timer to cancel load if it takes too long
-  needsBody: 0,      // true if loading files requires BODY to be present
-  
-  queue: [],         // the stack of pending actions
-
-  /*
-   *  Provide mechanism for synchronizing with the asynchronous jsMath
-   *  file-loading mechanism.  'code' can be a string or a function.
-   */
-  Synchronize: function (code,data) {
-    if (typeof(code) != 'string') {jsMath.Script.Push(null,code,data)}
-      else {jsMath.Script.Push(jsMath.window,'eval',code)}
-  },
-  
-  /*
-   *  Queue a function to be processed.
-   *  If nothing is being loaded, do the pending commands.
-   */
-  Push: function (object,method,data) {
-//  this.debug('Pushing: '+method+' at '+this.queue.length); // debug
-    this.queue[this.queue.length] = [object,method,data];
-    if (!(this.blocking || (this.needsBody && !jsMath.document.body))) this.Process();
-  },
-
-  /*
-   *  Do any pending functions (stopping if a file load is started)
-   */
-  Process: function () {
-    while (this.queue.length && !this.blocking) {
-      var call = this.queue[0]; this.queue = this.queue.slice(1);
-      var savedQueue = this.SaveQueue();
-      var object = call[0]; var method = call[1]; var data = call[2];
-//    this.debug('Calling: '+method+' ['+savedQueue.length+']'); // debug
-      if (object) {object[method](data)} else if (method) {method(data)}
-//    this.debug('Done:    '+method+' ['+this.queue.length+' + '+savedQueue.length+'] ('+this.blocking+')'); // debug
-      this.RestoreQueue(savedQueue);
-    }
-  },
-  
-  /*
-   *  Allows pushes to occur at the FRONT of the queue
-   *  (so a command acts as a single unit, including anything
-   *  that it pushes on to the command stack)
-   */
-  SaveQueue: function () {
-    var queue = this.queue;
-    this.queue = [];
-    return queue;
-  },
-  RestoreQueue: function (queue) {
-    this.queue = this.queue.concat(queue);
-  },
-  
-  /*
-   *  Handle loading of scripts that run asynchronously
-   */
-  delayedLoad: function (url) {
-//    this.debug('Loading: '+url);
-    this.Push(this,'startLoad',url);
-  },
-  startLoad: function (url) {
-    var iframe = jsMath.document.createElement('iframe');
-    iframe.style.visibility = 'hidden';
-    iframe.style.position = 'absolute';
-    iframe.style.width = '0px';
-    iframe.style.height = '0px';
-    if (jsMath.document.body.firstChild) {
-      jsMath.document.body.insertBefore(iframe,jsMath.document.body.firstChild);
-    } else {
-      jsMath.document.body.appendChild(iframe);
-    }
-    this.blocking = 1; this.url = url;
-    if (url.substr(0,jsMath.root.length) == jsMath.root)
-      {url = url.substr(jsMath.root.length)}
-    jsMath.Message.Set("Loading "+url);
-    this.cancelTimer = setTimeout('jsMath.Script.cancelLoad()',this.cancelTimeout);
-    if (this.mustPost)           {iframe.src = jsMath.Post.startLoad(url,iframe)}
-    else if (url.match(/\.js$/)) {iframe.src = jsMath.root+"jsMath-loader.html"}
-    else                         {iframe.src = this.url}
-  },
-  endLoad: function (action) {
-    if (this.cancelTimer) {clearTimeout(this.cancelTimer); this.cancelTimer = null}
-    jsMath.Post.endLoad();
-    jsMath.Message.Clear();
-    if (action != 'cancel') {this.blocking = 0; this.Process()}
-  },
-  
-  Start: function () {
-//    this.debug('Starting: ['+this.queue.length+'] '+this.url);
-    this.tmpQueue = this.queue; this.queue = [];
-  },
-  End:   function () {
-//    this.debug('Ending:   ['+this.queue.length+' + '+this.tmpQueue.length+'] '+this.url);
-    this.queue = this.queue.concat(this.tmpQueue); delete this.tmpQueue;
-  },
-
-  /*
-   *  If the loading takes too long, cancel it and end the load.
-   */
-  cancelLoad: function (message,delay) {
-    if (this.cancelTimer) {clearTimeout(this.cancelTimer); this.cancelTimer = null}
-    if (message == null) {message = "Can't load file"}
-    if (delay == null) {delay = 2000}
-    jsMath.Message.Set(message);
-    setTimeout('jsMath.Script.endLoad("cancel")',delay);
-  },
-
-  /*
-   *  Perform a delay (to let the browser catch up)
-   */
-  Delay: function (time) {
-    this.blocking = 1;
-    setTimeout('jsMath.Script.endDelay()',time);
-  },
-  endDelay: function () {
-//    this.debug('endDelay');
-    this.blocking = 0;
-    this.Process();
-  },
-  
-  /*
-   *  Load an image and wait for it
-   *  (so MSIE won't load extra copies of it)
-   */
-  imageCount: 0,
-  WaitForImage: function (file) {
-    this.blocking = 1; this.imageCount++;
-    if (this.img == null) {this.img = []}
-    var img = new Image(); this.img[this.img.length] = img;
-    img.onload = function () {if (--jsMath.Script.imageCount == 0) jsMath.Script.endDelay()}
-    img.onerror = img.onload; img.onabort = img.onload;
-    img.src = file;
-  },
-  
-  /*
-   *  The code uncompressor
-   */
-  Uncompress: function (data) {
-    for (var k = 0; k <  data.length; k++) {
-      var d = data[k]; var n = d.length;
-      for (var i = 0; i < n; i++) {if (typeof(d[i]) == 'number') {d[i] = d[d[i]]}}
-      data[k] = d.join('');
-    }
-    window.eval(data.join(''));
-  }
-  
-  /*
-   *  for debugging the event queue
-   */
-  /* 
-   * ,debug: function (message) {
-   *   if (jsMath.document.body && jsMath.window.debug) {jsMath.window.debug(message)}
-   *     else {alert(message)}
-   * }
-   */
-
-};
-
-/***************************************************************************/
-
-/*
- *  Handle window.postMessage() events in Firefox3
- */
-
-jsMath.Post = {
-  window: null,  // iframe we are listening to
-  
-  Listener: function (event) {
-    if (event.source != jsMath.Post.window) return;
-    var domain = event.origin.replace(/^file:\/\//,'');
-    var ddomain = document.domain.replace(/^file:\/\//,'');
-    if (domain == null || domain == "") {domain = "localhost"}
-    if (ddomain == null || ddomain == "") {ddomain = "localhost"}
-    if (domain != ddomain || !event.data.substr(0,6).match(/jsM(CP|LD):/)) return;
-    var type = event.data.substr(6,3).replace(/ /g,'');
-    var message = event.data.substr(10);
-    if (jsMath.Post.Commands[type]) (jsMath.Post.Commands[type])(message);
-    // cancel event?
-  },
-  
-  /*
-   *  Commands that can be performed by the listener
-   */
-  Commands: {
-    SCR: function (message) {jsMath.window.eval(message)},
-    ERR: function (message) {jsMath.Script.cancelLoad(message,3000)},
-    BGN: function (message) {jsMath.Script.Start()},
-    END: function (message) {if (message) jsMath.Script.End(); jsMath.Script.endLoad()}
-  },
-  
-  startLoad: function (url,iframe) {
-    this.window = iframe.contentWindow;
-    if (!url.match(/\.js$/)) {return jsMath.root+url}
-    return jsMath.root+"jsMath-loader-post.html?"+url;
-  },
-  endLoad: function () {this.window = null}
-};
-
-/***************************************************************************/
-
-/*
- *  Message and screen blanking facility
- */
-
-jsMath.Message = {
-  
-  blank: null,    // the div to blank out the screen
-  message: null,  // the div for the messages
-  text: null,     // the text node for messages
-  clear: null,    // timer for clearing message
-
-  /*
-   *  Create the elements needed for the message box
-   */
-  Init: function () {
-    if (!jsMath.document.body || !jsMath.Controls.cookie.progress) return;
-    if (jsMath.Setup.stylesReady) {
-      this.message = jsMath.Setup.DIV('message',{visibility:'hidden'},jsMath.fixedDiv);
-    } else {
-      this.message = jsMath.Setup.DIV('message',{
-        visibility:'hidden', position:'absolute', bottom:'1px', left:'2px',
-        backgroundColor:'#E6E6E6', border:'solid 1px #959595',
-        margin:'0px', padding:'1px 8px', zIndex:102,
-        color:'black', fontSize:'small', width:'auto'
-      },jsMath.fixedDiv);
-    }
-    this.text = jsMath.document.createTextNode('');
-    this.message.appendChild(this.text);
-    this.message.onmousedown = jsMath.Translate.Cancel;
-  },
-  
-  /*
-   *  Set the contents of the message box, or use the window status line
-   */
-  Set: function (text,canCancel) {
-    if (this.clear) {clearTimeout(this.clear); this.clear = null}
-    if (jsMath.Controls.cookie.progress) {
-      if (!this.text) {this.Init(); if (!this.text) return}
-      if (jsMath.Browser.textNodeBug) {this.message.innerHTML = text}
-        else {this.text.nodeValue = text}
-      this.message.style.visibility = 'visible';
-      if (canCancel) {
-        this.message.style.cursor = 'pointer';
-        if (!this.message.style.cursor) {this.message.style.cursor = 'hand'}
-        this.message.title = ' Cancel Processing of Math ';
-      } else {
-        this.message.style.cursor = '';
-        this.message.title = '';
-      }
-    } else {
-      if (text.substr(0,8) != "Loading ") {jsMath.window.status = text}
-    }
-  },
-  
-  /*
-   *  Clear the message box or status line
-   */
-  Clear: function () {
-    if (this.clear) {clearTimeout(this.clear)}
-    this.clear = setTimeout("jsMath.Message.doClear()",1000);
-  },
-  doClear: function () {
-    if (this.clear) {
-      this.clear = null;
-      jsMath.window.status = '';
-      if (this.text) {this.text.nodeValue = ''}
-      if (this.message) {this.message.style.visibility = 'hidden'}
-    }
-  },
-  
-  
-  /*
-   *  Put up a DIV that covers the window so that the
-   *  "flicker" of processing the mathematics will not be visible
-   */
-  Blank: function () {
-    if (this.blank || !jsMath.document.body) return;
-    this.blank = jsMath.Setup.DIV("blank",{
-      position:(jsMath.Browser.msiePositionFixedBug? 'absolute': 'fixed'),
-      top:'0px', left:'0px', bottom:'0px', right:'0px',
-      zIndex:101, backgroundColor:'white'
-    },jsMath.fixedDiv);
-    if (jsMath.Browser.msieBlankBug) {
-      this.blank.innerHTML = '&nbsp;';
-      this.blank.style.width = "110%";
-      this.blank.style.height = "110%";
-    }
-  },
-  
-  UnBlank: function () {
-    if (this.blank) {jsMath.document.body.removeChild(this.blank)}
-    this.blank = null;
-  }
-};
-
-
-/***************************************************************************/
-
-/*
- *  Miscellaneous setup and initialization
- */
-jsMath.Setup = {
-  
-  loaded: [],  // array of files already loaded
-  
-  /*
-   *  Insert a DIV at the top of the page with given ID,
-   *  attributes, and style settings
-   */
-  DIV: function (id,styles,parent) {
-    if (parent == null) {parent = jsMath.document.body}
-    var div = jsMath.document.createElement('div');
-    div.id = 'jsMath_'+id;
-    for (var i in styles) {div.style[i]= styles[i]}
-    if (!parent.hasChildNodes) {parent.appendChild(div)}
-      else {parent.insertBefore(div,parent.firstChild)}
-    return div;
-  },
-  
-  /*
-   *  Source a jsMath JavaScript file (only load any given file once)
-   */
-  Script: function (file,show) {
-    if (this.loaded[file]) {return} else {this.loaded[file] = 1}
-    if (!file.match('^([a-zA-Z]+:/?)?/')) {file = jsMath.root + file}
-    jsMath.Script.Load(file,show);
-  },
-  
-  /*
-   *  Use a hidden <DIV> for measuring the BBoxes of things
-   */
-  Hidden: function () {
-    jsMath.hidden = this.DIV("Hidden",{
-      visibility: 'hidden', position:"absolute",
-      top:0, left:0, border:0, padding:0, margin:0
-    });
-    jsMath.hiddenTop = jsMath.hidden;
-    return;
-  },
-
-  /*
-   *  Find the root URL for the jsMath files (so we can load
-   *  the other .js and .gif files)
-   */
-  Source: function () {
-    if (jsMath.Autoload && jsMath.Autoload.root) {
-      jsMath.root = jsMath.Autoload.root;
-    } else {
-      jsMath.root = '';
-      var script = jsMath.document.getElementsByTagName('script');
-      if (script) {
-        for (var i = 0; i < script.length; i++) {
-          var src = script[i].src;
-          if (src && src.match('(^|/|\\\\)jsMath.js$')) {
-            jsMath.root = src.replace(/jsMath.js$/,'');
-            break;
-          }
-        }
-      }
-    }
-    if (jsMath.root.charAt(0) == '\\') {jsMath.root = jsMath.root.replace(/\\/g,'/')}
-    if (jsMath.root.charAt(0) == '/') {
-      if (jsMath.root.charAt(1) != '/') {
-        if (jsMath.document.location.port)
-          {jsMath.root = ':' + jsMath.document.location.port + jsMath.root}
-        jsMath.root = '//' + jsMath.document.location.host + jsMath.root;
-      }
-      jsMath.root = jsMath.document.location.protocol + jsMath.root;
-    } else if (!jsMath.root.match(/^[a-z]+:/i)) {
-      var src = new String(jsMath.document.location);
-      var pattern = new RegExp('/[^/]*/\\.\\./')
-      jsMath.root = src.replace(new RegExp('[^/]*$'),'') + jsMath.root;
-      while (jsMath.root.match(pattern))
-        {jsMath.root = jsMath.root.replace(pattern,'/')}
-    }
-    jsMath.Img.root = jsMath.root + "fonts/";
-    jsMath.blank = jsMath.root + "blank.gif";
-    this.Domain();
-  },
-  
-  /*
-   *  Find the most restricted common domain for the main
-   *  page and jsMath.  Report an error if jsMath is outside
-   *  the domain of the calling page.
-   */
-  Domain: function () {
-    try {jsMath.document.domain} catch (err) {return}
-    var jsDomain = ''; var pageDomain = jsMath.document.domain;
-    if (jsMath.root.match('://([^/]*)/')) {jsDomain = RegExp.$1}
-    jsDomain = jsDomain.replace(/:\d+$/,'');
-    if (jsDomain == "" || jsDomain == pageDomain) return;
-    //
-    // MSIE on the Mac can't change jsMath.document.domain and 'try' won't
-    //   catch the error (Grrr!), so exit for them.
-    //
-    if (navigator.appName == 'Microsoft Internet Explorer' &&
-        jsMath.platform == 'mac' && navigator.onLine &&
-        navigator.userProfile && jsMath.document.all) return;
-    jsDomain = jsDomain.split(/\./); pageDomain = pageDomain.split(/\./);
-    if (jsDomain.length < 2 || pageDomain.length < 2 ||
-        jsDomain[jsDomain.length-1] != pageDomain[pageDomain.length-1] ||
-        jsDomain[jsDomain.length-2] != pageDomain[pageDomain.length-2]) {
-      this.DomainWarning();
-      return;
-    }
-    var domain = jsDomain[jsDomain.length-2] + '.' + jsDomain[jsDomain.length-1];
-    for (var i = 3; i <= jsDomain.length && i <= pageDomain.length; i++) {
-      if (jsDomain[jsDomain.length-i] != pageDomain[pageDomain.length-i]) break;
-      domain = jsDomain[jsDomain.length-i] + '.' + domain;
-    }
-    jsMath.document.domain = domain;
-    this.domainChanged = 1;
-  },
-
-  DomainWarning: function () {
-    alert("In order for jsMath to be able to load the additional "
-        + "components that it may need, the jsMath.js file must be "
-        + "loaded from a server in the same domain as the page that "
-        + "contains it.  Because that is not the case for this page, "
-        + "the mathematics displayed here may not appear correctly.");
-  },
-  
-  /*
-   *  Initialize a font's encoding array
-   */
-  EncodeFont: function (name) {
-    var font = jsMath.TeX[name];
-    if (font[0].c != null) return;
-    for (var k = 0; k < 128; k++) {
-      var data = font[k]; font[k] = data[3];
-      if (font[k] == null) {font[k] = {}};
-      font[k].w = data[0]; font[k].h = data[1];
-      if (data[2] != null) {font[k].d = data[2]}
-      font[k].c = jsMath.TeX.encoding[k];
-    }
-  },
-  
-  /*
-   *  Initialize the encodings for all fonts
-   */
-  Fonts: function () {
-    for (var i = 0; i < jsMath.TeX.fam.length; i++) {
-      var name = jsMath.TeX.fam[i];
-      if (name) {this.EncodeFont(name)}
-    }
-  },
-  
-  /*
-   *  Look up the default height and depth for a TeX font
-   *  and set the skewchar
-   */
-  TeXfont: function (name) {
-    var font = jsMath.TeX[name]; if (font == null) return;
-    var WH = jsMath.EmBoxFor('<span class="'+name+'">'+font[65].c+'</span>');
-    font.hd = WH.h; font.dh = .05;
-    font.d = jsMath.EmBoxFor('<span class="'+name+'">'+ font[65].c +
-      jsMath.HTML.Rule(1,font.hd) + '</span>').h - font.hd;
-    font.h = font.hd - font.d;
-    if (name == 'cmmi10') {font.skewchar = 0177} 
-    else if (name == 'cmsy10') {font.skewchar = 060}
-  },
-
-  /*
-   *  Init all the TeX fonts
-   */
-  TeXfonts: function () {
-    for (var i = 0; i < jsMath.TeX.fam.length; i++) 
-      {if (jsMath.TeX.fam[i]) {this.TeXfont(jsMath.TeX.fam[i])}}
-  },
-
-  /*
-   *  Compute font parameters for various sizes
-   */
-  Sizes: function () {
-    jsMath.TeXparams = []; var i; var j;
-    for (j=0; j < jsMath.sizes.length; j++) {jsMath.TeXparams[j] = {}}
-    for (i in jsMath.TeX) {
-      if (typeof(jsMath.TeX[i]) != 'object') {
-        for (j=0; j < jsMath.sizes.length; j++) {
-          jsMath.TeXparams[j][i] = jsMath.sizes[j]*jsMath.TeX[i]/100;
-        }
-      }
-    }
-  },
-
-  /*
-   *  Send the style definitions to the browser (these may be adjusted
-   *  by the browser-specific code)
-   */
-  Styles: function (styles) {
-    if (!styles) {
-      styles = jsMath.styles;
-      styles['.typeset .scale'] = {'font-size': jsMath.Controls.cookie.scale+'%'};
-      this.stylesReady = 1;
-    }
-    jsMath.Script.Push(this,'AddStyleSheet',styles);
-    if (jsMath.Browser.styleChangeDelay) {jsMath.Script.Push(jsMath.Script,'Delay',1)}
-  },
-  
-  /*
-   *  Make a style string from a hash of style definitions, which are
-   *  either strings themselves or hashes of style settings.
-   */
-  StyleString: function (styles) {
-    var styleString = {}, id;
-    for (id in styles) {
-      if (typeof styles[id] === 'string') {
-        styleString[id] = styles[id];
-      } else if (id.substr(0,1) === '@') {
-        styleString[id] = this.StyleString(styles[id]);
-      } else if (styles[id] != null) {
-        var style = [];
-        for (var name in styles[id]) {
-          if (styles[id][name] != null)
-            {style[style.length] = name + ': ' + styles[id][name]}
-        }
-        styleString[id] = style.join('; ');
-      }
-    }
-    var string = '';
-    for (id in styleString) {string += id + " {"+styleString[id]+"}\n"}
-    return string;
-  },
-  
-  AddStyleSheet: function (styles) {
-    var head = jsMath.document.getElementsByTagName('head')[0];
-    var string = this.StyleString(styles);
-    if (jsMath.document.createStyleSheet) {// check for MSIE
-      head.insertAdjacentHTML('beforeEnd',
-          '<span style="display:none">x</span>'  // MSIE needs this for some reason
-          + '<style type="text/css">'+string+'</style>');
-    } else {
-      var style = jsMath.document.createElement('style'); style.type = "text/css";
-      style.appendChild(jsMath.document.createTextNode(string));
-      head.appendChild(style);
-    }
-  },
-
-  /*
-   *  Do the initialization that requires the <body> to be in place.
-   */
-  Body: function () {
-    if (this.inited) return;
-    
-    this.inited = -1;
-
-    jsMath.Setup.Hidden(); this.inited = -2;
-    jsMath.Browser.Init(); this.inited = -3;
-
-    // blank screen if necessary
-    if (jsMath.Controls.cookie.blank) {jsMath.Message.Blank()}; this.inited = -4;
-
-    jsMath.Setup.Styles(); this.inited = -5;
-    jsMath.Controls.Init(); this.inited = -6;
-    
-    // do user-specific initialization
-    jsMath.Script.Push(jsMath.Setup,'User','pre-font'); this.inited = -7;
-
-    // make sure browser-specific loads are done before this
-    jsMath.Script.Push(jsMath.Font,'Check');
-    if (jsMath.Font.register.length)
-      {jsMath.Script.Push(jsMath.Font,'LoadRegistered')}
-
-    this.inited = 1;
-  },
-  
-  /*
-   *  Web page author can override the entries to the UserEvent hash 
-   *  functions that will be run at various times during jsMath's setup
-   *  process.
-   */
-  User: function (when) {
-    if (jsMath.Setup.UserEvent[when]) {(jsMath.Setup.UserEvent[when])()}
-  },
-  
-  UserEvent: {
-    "pre-font": null,  // after browser is set up but before fonts are tested
-    "onload": null     // after jsMath.js is loaded and finished running
-  }
-  
-};
-
-jsMath.Update = {
-
-  /*
-   *  Update specific parameters for a limited number of font entries
-   */
-  TeXfonts: function (change) {
-    for (var font in change) {
-      for (var code in change[font]) {
-        for (var id in change[font][code]) {
-          jsMath.TeX[font][code][id] = change[font][code][id];
-        }
-      }
-    }
-  },
-  
-  /*
-   *  Update the character code for every character in a list
-   *  of fonts
-   */
-  TeXfontCodes: function (change) {
-    for (var font in change) {
-      for (var i = 0; i < change[font].length; i++) {
-        jsMath.TeX[font][i].c = change[font][i];
-      }
-    }
-  }
-  
-};
-
-/***************************************************************************/
-
-/*
- *  Implement browser-specific checks
- */
-
-jsMath.Browser = {
-
-  allowAbsolute: 1,           // tells if browser can nest absolutely positioned
-                              //   SPANs inside relative SPANs
-  allowAbsoluteDelim: 0,      // OK to use absolute placement for building delims?
-  separateSkips: 0,           // MSIE doesn't do negative left margins, and
-                              //   Netscape doesn't combine skips well
-
-  valignBug: 0,               // Konqueror doesn't nest vertical-align
-  operaHiddenFix: '',         // for Opera to fix bug with math in tables
-  msieCenterBugFix: '',       // for MSIE centering bug with image fonts
-  msieInlineBlockFix: '',     // for MSIE alignment bug in non-quirks mode
-  msieSpaceFix: '',           // for MSIE to avoid dropping empty spans
-  imgScale: 1,                // MSI scales images for 120dpi screens, so compensate
-
-  renameOK: 1,                // tells if brower will find a tag whose name
-                              //   has been set via setAttributes
-  styleChangeDelay: 0,        // true if style changes need a delay in order
-                              //   for them to be available
-
-  delay: 1,                   // delay for asynchronous math processing
-  
-  version: 0,                 // browser version number (when needed)
-
-  /*
-   *  Determine if the "top" of a <SPAN> is always at the same height
-   *  or varies with the height of the rest of the line (MSIE).
-   */
-  TestSpanHeight: function () {
-    jsMath.hidden.innerHTML = '<span><span style="'+this.block+';height:2em;width:1px"></span></span>';
-    var span = jsMath.hidden.firstChild;
-    var img  = span.firstChild;
-    this.spanHeightVaries = (span.offsetHeight >= img.offsetHeight && span.offsetHeight > 0);
-    this.spanHeightTooBig = (span.offsetHeight > img.offsetHeight);
-    jsMath.hidden.innerHTML = '';
-  },
-  
-  /*
-   *  Determine if an inline-block with 0 width is OK or not
-   *  and decide whether to use spans or images for spacing
-   */
-  TestInlineBlock: function () {
-    this.block = "display:-moz-inline-box";
-    this.hasInlineBlock = jsMath.BBoxFor('<span style="'+this.block+';width:10px;height:5px"></span>').w > 0;
-    if (this.hasInlineBlock) {
-      jsMath.styles['.typeset .blank'].display = '-moz-inline-box';
-      delete jsMath.styles['.typeset .spacer'].display;
-    } else {
-      this.block = "display:inline-block";
-      this.hasInlineBlock = jsMath.BBoxFor('<span style="'+this.block+';width:10px;height:5px"></span>').w > 0;
-      if (!this.hasInlineBlock) return;
-    }
-    this.block += ';overflow:hidden';
-    var h = jsMath.BBoxFor('x').h;
-    this.mozInlineBlockBug = jsMath.BBoxFor(
-       '<span style="'+this.block+';height:'+h+'px;width:1px"></span>x'+
-       '<span style="'+this.block+';height:'+h+'px;width:1px;vertical-align:-'+h+'px"></span>').h > 2*h;
-    this.widthAddsBorder = jsMath.BBoxFor('<span style="'+this.block+
-        ';overflow:hidden;height:1px;width:10px;border-left:10px solid"></span>').w > 10;
-    this.msieBorderBug =
-      jsMath.BBoxFor('<span style="'+this.block+';height:'+h+'px;width:1px"></span>x').h !=
-      jsMath.BBoxFor('<span style="'+this.block+';height:'+h+'px;width:1px;border-left:1px solid"></span>x').h;
-    this.blankWidthBug = this.msieBorderBug ||
-      jsMath.BBoxFor('<span style="'+this.block+';height:2em;width:0px"></span>').h == 0;
-  },
-  
-  /*
-   *  Determine if the NAME attribute of a tag can be changed
-   *  using the setAttribute function, and then be properly
-   *  returned by getElementByName.
-   */
-  TestRenameOK: function () {
-    jsMath.hidden.innerHTML = '<span></span>';
-    var test = jsMath.hidden.firstChild;
-    test.setAttribute('name','jsMath_test');
-    this.renameOK = (jsMath.document.getElementsByName('jsMath_test').length > 0);
-    jsMath.hidden.innerHTML = '';
-  },
-  
-  /*
-   *  See if style changes occur immediately, or if we need to delay
-   *  in order to let them take effect.
-   */
-  TestStyleChange: function () {
-    jsMath.hidden.innerHTML = '<span ID="jsMath_test">x</span>';
-    var span = jsMath.hidden.firstChild;
-    var w = span.offsetWidth;
-    jsMath.Setup.AddStyleSheet({'#jsMath_test': 'font-size:200%'});
-    this.styleChangeDelay = (span.offsetWidth == w);
-    jsMath.hidden.innerHTML = '';
-  },
-  
-  /*
-   *  Perform a version check on a standard version string
-   */
-  VersionAtLeast: function (v) {
-    var bv = new String(this.version).split('.');
-    v = new String(v).split('.'); if (v[1] == null) {v[1] = '0'}
-    return bv[0] > v[0] || (bv[0] == v[0] && bv[1] >= v[1]);
-  },
-
-  /*
-   *  Test for browser characteristics, and adjust things
-   *  to overcome specific browser bugs
-   */
-  Init: function () {
-    jsMath.browser = 'unknown';
-    this.TestInlineBlock();
-    this.TestSpanHeight();
-    this.TestRenameOK();
-    this.TestStyleChange();
-
-    this.MSIE();
-    this.Mozilla();
-    this.Opera();
-    this.OmniWeb();
-    this.Safari();
-    this.Konqueror();
-    
-    //
-    // Change some routines depending on the browser
-    // 
-    if (this.allowAbsoluteDelim) {
-      jsMath.Box.DelimExtend = jsMath.Box.DelimExtendAbsolute;
-      jsMath.Box.Layout = jsMath.Box.LayoutAbsolute;
-    } else {
-      jsMath.Box.DelimExtend = jsMath.Box.DelimExtendRelative;
-      jsMath.Box.Layout = jsMath.Box.LayoutRelative;
-    }
-    
-    if (this.separateSkips) {
-      jsMath.HTML.Place = jsMath.HTML.PlaceSeparateSkips;
-      jsMath.Typeset.prototype.Place = jsMath.Typeset.prototype.PlaceSeparateSkips;
-    }
-  },
-  
-  //
-  //  Handle bug-filled Internet Explorer
-  //
-  MSIE: function () {
-    if (this.spanHeightVaries && !this.spanHeightTooBig) {
-      jsMath.browser = 'MSIE';
-      if (jsMath.platform == 'pc') {
-        this.IE7 = (window.XMLHttpRequest != null);
-        this.quirks = (jsMath.document.compatMode == "BackCompat");
-        this.msieStandard6 = !this.quirks && !this.IE7;
-        this.allowAbsoluteDelim = 1; this.separateSkips = 1;
-        this.buttonCheck = 1; this.msieBlankBug = 1;
-        this.msieAccentBug = 1; this.msieRelativeClipBug = 1;
-        this.msieDivWidthBug = 1; this.msiePositionFixedBug = 1;
-        this.msieIntegralBug = 1; this.waitForImages = 1;
-        this.msieAlphaBug = !this.IE7; this.alphaPrintBug = !this.IE7;
-        this.msieCenterBugFix = 'position:relative; ';
-        this.msieInlineBlockFix = ' display:inline-block;';
-        this.msieTeXfontBaselineBug = !this.quirks;
-        this.msieBorderBug = this.blankWidthBug = 1; // force these, since IE7 doesn't register it
-        this.msieSpaceFix = '<span style="display:inline-block"></span>';
-        jsMath.Macro('joinrel','\\mathrel{\\kern-5mu}'),
-        jsMath.Parser.prototype.mathchardef.mapstocharOrig = jsMath.Parser.prototype.mathchardef.mapstochar;
-        delete jsMath.Parser.prototype.mathchardef.mapstochar;
-        jsMath.Macro('mapstochar','\\rlap{\\mapstocharOrig\\,}\\kern1mu'),
-        jsMath.styles['.typeset .arial'] = {'font-family': "'Arial unicode MS'"};
-        if (!this.IE7 || this.quirks) {
-          // MSIE doesn't implement fixed positioning, so use absolute
-          jsMath.styles['#jsMath_message'].position = 'absolute';
-          delete jsMath.styles['#jsMath_message'].width;
-          jsMath.styles['#jsMath_panel'].position = 'absolute';
-          delete jsMath.styles['#jsMath_panel'].width;
-          jsMath.styles['#jsMath_button'].width = '1px';
-          jsMath.styles['#jsMath_button'].position = 'absolute'
-          delete jsMath.styles['#jsMath_button'].width;
-          jsMath.fixedDiv = jsMath.Setup.DIV("fixedDiv",{position:'absolute', zIndex: 101});
-          jsMath.window.attachEvent("onscroll",jsMath.Controls.MoveButton);
-          jsMath.window.attachEvent("onresize",jsMath.Controls.MoveButton);
-          jsMath.Controls.MoveButton();
-	}
-        // Make MSIE put borders around the whole button
-        jsMath.styles['#jsMath_noFont .link'].display = "inline-block";
-        // MSIE needs this NOT to be inline-block
-        delete jsMath.styles['.typeset .spacer'].display;
-        // MSIE can't insert DIV's into text nodes, so tex2math must use SPAN's to fake DIV's
-        jsMath.styles['.tex2math_div'] = {}; jsMath.Add(jsMath.styles['.tex2math_div'],jsMath.styles['div.typeset']);
-        jsMath.styles['.tex2math_div'].width = '100%';
-        jsMath.styles['.tex2math_div'].display = 'inline-block';
-        // Reduce occurrance of zoom bug in IE7
-        jsMath.styles['.typeset']['letter-spacing'] = '0';
-        // MSIE will rescale images if the DPIs differ
-        if (screen.deviceXDPI && screen.logicalXDPI 
-             && screen.deviceXDPI != screen.logicalXDPI) {
-          this.imgScale *= screen.logicalXDPI/screen.deviceXDPI;
-          jsMath.Controls.cookie.alpha = 0;
-        }
-        // Handle bug with getting width of italic text
-        this.italicString = '<i>x</i>';
-        jsMath.EmBoxFor = jsMath.EmBoxForItalics;
-      } else if (jsMath.platform == 'mac') {
-        this.msieAbsoluteBug = 1; this.msieButtonBug = 1;
-        this.msieDivWidthBug = 1; this.msieBlankBug = 1;
-        this.quirks = 1;
-        jsMath.Setup.Script('jsMath-msie-mac.js');
-        jsMath.Parser.prototype.macros.angle = ['Replace','ord','<font face="Symbol">&#x8B;</font>','normal'];
-        jsMath.styles['#jsMath_panel'].width = '42em';
-        jsMath.Controls.cookie.printwarn = 0; // MSIE/Mac doesn't handle '@media screen'
-      }
-      jsMath.Macro('not','\\mathrel{\\rlap{\\kern3mu/}}');
-    }
-  },
-
-  //
-  //  Handle Netscape/Mozilla (any flavor)
-  //
-  Mozilla: function () {
-    if (jsMath.hidden.ATTRIBUTE_NODE) {
-      jsMath.browser = 'Mozilla';
-      if (jsMath.platform == 'pc') {this.alphaPrintBug = 1}
-      this.allowAbsoluteDelim = 1;
-      jsMath.styles['#jsMath_button'].cursor = jsMath.styles['#jsMath_noFont .link'].cursor = 'pointer',
-      jsMath.Macro('not','\\mathrel{\\rlap{\\kern3mu/}}');
-      if (navigator.vendor == 'Firefox') {
-        this.version = navigator.vendorSub;
-      } else if (navigator.userAgent.match(' Firefox/([0-9.]+)([a-z ]|$)')) {
-        this.version = RegExp.$1;
-      }
-    }
-  },
-  
-  //
-  //  Handle OmniWeb
-  //
-  OmniWeb: function () {
-    if (navigator.accentColorName) {
-      jsMath.browser = 'OmniWeb';
-      this.allowAbsolute = this.hasInlineBlock;
-      this.allowAbsoluteDelim = this.allowAbsolute;
-      this.valignBug = !this.allowAbsolute;
-      this.buttonCheck = 1; this.textNodeBug = 1;
-      jsMath.noChangeGlobal = 1; // OmniWeb craches on GoGlobal
-      if (!this.hasInlineBlock) {jsMath.Setup.Script('jsMath-old-browsers.js')}
-    }
-  },
-    
-  //
-  //  Handle Opera
-  //
-  Opera: function () {
-    if (this.spanHeightTooBig) {
-      jsMath.browser = 'Opera';
-      var isOld = navigator.userAgent.match("Opera 7");
-      this.allowAbsolute = 0;
-      this.delay = 10;
-      this.operaHiddenFix = '[Processing]';
-      if (isOld) {jsMath.Setup.Script('jsMath-old-browsers.js')}
-      var version = navigator.appVersion.match(/^(\d+\.\d+)/);
-      if (!version) {vesion = 0};
-      this.operaAbsoluteWidthBug = this.operaLineHeightBug = (version[1] >= 9.5);
-    }
-  },
-
-  //
-  //  Handle Safari
-  //
-  Safari: function () {
-    if (navigator.appVersion.match(/Safari\//)) {
-      jsMath.browser = 'Safari';
-      var version = navigator.userAgent.match("Safari/([0-9]+)");
-      version = (version)? version[1] : 400;
-      for (var i = 0; i < jsMath.TeX.fam.length; i++) {
-        if (jsMath.TeX.fam[i] && jsMath.TeX[jsMath.TeX.fam[i]])
-          {jsMath.TeX[jsMath.TeX.fam[i]].dh = .1}
-      }
-      jsMath.TeX.axis_height += .05;
-      jsMath.TeX.default_rule_thickness += .025;
-      this.allowAbsoluteDelim = version >= 125;
-      this.safariIFRAMEbug = version >= 312 && version < 412;
-      this.safariButtonBug = version < 412;
-      this.safariImgBug = 1; this.textNodeBug = 1;
-      this.buttonCheck = version < 500;
-      this.styleChangeDelay = 1;
-    }
-  },
-  
-  //
-  //  Handle Konqueror
-  //
-  Konqueror: function () {
-    if (navigator.product && navigator.product.match("Konqueror")) {
-      jsMath.browser = 'Konqueror';
-      this.allowAbsolute = 0;
-      this.allowAbsoluteDelim = 0;
-      if (navigator.userAgent.match(/Konqueror\/(\d+)\.(\d+)/)) {
-        if (RegExp.$1 < 3 || (RegExp.$1 == 3 && RegExp.$2 < 3)) {
-          this.separateSkips = 1;
-          this.valignBug = 1;
-          jsMath.Setup.Script('jsMath-old-browsers.js');
-        }
-      }
-      //  Apparently, Konqueror wants the names without the hyphen
-      jsMath.Add(jsMath.styles,{
-        '.typeset .cmr10':    'font-family: jsMath-cmr10, jsMath cmr10, serif',
-        '.typeset .cmbx10':   'font-family: jsMath-cmbx10, jsMath cmbx10, jsMath-cmr10, jsMath cmr10',
-        '.typeset .cmti10':   'font-family: jsMath-cmti10, jsMath cmti10, jsMath-cmr10, jsMath cmr10',
-        '.typeset .cmmi10':   'font-family: jsMath-cmmi10, jsMath cmmi10',
-        '.typeset .cmsy10':   'font-family: jsMath-cmsy10, jsMath cmsy10',
-        '.typeset .cmex10':   'font-family: jsMath-cmex10, jsMath cmex10'
-      });
-      jsMath.Font.testFont = "jsMath-cmex10, jsMath cmex10";
-    }
-  }
-
-};
-
-/***************************************************************************/
-
-/*
- *  Implement font check and messages
- */
-jsMath.Font = {
-  
-  testFont: "jsMath-cmex10",
-  fallback: "symbol", // the default fallback method
-  register: [],       // list of fonts registered before jsMath.Init()
-
-  // the HTML for the missing font message
-  message:    
-    '<b>No jsMath TeX fonts found</b> -- using image fonts instead.<br/>\n'
-      + 'These may be slow and might not print well.<br/>\n'
-      + 'Use the jsMath control panel to get additional information.',
-      
-  extra_message:
-    'Extra TeX fonts not found: <b><span id="jsMath_ExtraFonts"></span></b><br/>'
-      + 'Using image fonts instead.  This may be slow and might not print well.<br/>\n'
-      + 'Use the jsMath control panel to get additional information.',
-
-  print_message:
-    'To print higher-resolution math symbols, click the<br/>\n'
-       + '<b>Hi-Res Fonts for Printing</b> button on the jsMath control panel.<br/>\n',
-
-  alpha_message:
-    'If the math symbols print as black boxes, turn off <b>image alpha channels</b><br/>\n'
-       + 'using the <B>Options</B> pane of the jsMath control panel.<br/>\n',
-  
-  /*
-   *  Look to see if a font is found.
-   *  Check the character in a given position, and see if it is
-   *  wider than the usual one in that position.
-   */
-  Test1: function (name,n,factor,prefix) {
-    if (n == null) {n = 0x7C}; if (factor == null) {factor = 2}; if (prefix == null) {prefix = ''}
-    var wh1 = jsMath.BBoxFor('<span style="font-family: '+prefix+name+', serif">'+jsMath.TeX[name][n].c+'</span>');
-    var wh2 = jsMath.BBoxFor('<span style="font-family: serif">'+jsMath.TeX[name][n].c+'</span>');
-    //alert([wh1.w,wh2.w,wh1.h,factor*wh2.w]);
-    return (wh1.w > factor*wh2.w && wh1.h != 0);
-  },
-
-  Test2: function (name,n,factor,prefix) {
-    if (n == null) {n = 0x7C}; if (factor == null) {factor = 2}; if (prefix == null) {prefix = ''}
-    var wh1 = jsMath.BBoxFor('<span style="font-family: '+prefix+name+', serif">'+jsMath.TeX[name][n].c+'</span>');
-    var wh2 = jsMath.BBoxFor('<span style="font-family: serif">'+jsMath.TeX[name][n].c+'</span>');
-    //alert([wh2.w,wh1.w,wh1.h,factor*wh1.w]);
-    return (wh2.w > factor*wh1.w && wh1.h != 0);
-  },
-  
-  /*
-   *  Check for the new jsMath versions of the fonts (blacker with
-   *  different encoding) and if not found, look for old-style fonts.
-   *  If they are found, load the BaKoMa encoding information.
-   */
-  CheckTeX: function () {
-    var wh = jsMath.BBoxFor('<span style="font-family: '+jsMath.Font.testFont+', serif">'+jsMath.TeX.cmex10[1].c+'</span>');
-    jsMath.nofonts = ((wh.w*3 > wh.h || wh.h == 0) && !this.Test1('cmr10',null,null,'jsMath-'));
-    if (!jsMath.nofonts) return;
-    if (jsMath.browser != 'Mozilla' ||
-         (jsMath.platform == "mac" &&
-           (!jsMath.Browser.VersionAtLeast(1.5) || jsMath.Browser.VersionAtLeast(3.0))) ||
-         (jsMath.platform != "mac" && !jsMath.Browser.VersionAtLeast(3.0))) {
-      wh = jsMath.BBoxFor('<span style="font-family: CMEX10, serif">'+jsMath.TeX.cmex10[1].c+'</span>');
-      jsMath.nofonts = ((wh.w*3 > wh.h || wh.h == 0) && !this.Test1('cmr10'));
-      if (!jsMath.nofonts) {jsMath.Setup.Script("jsMath-BaKoMa-fonts.js")}
-    }
-  },
-  
-  /*
-   *  Check for the availability of TeX fonts.  We do this by looking at
-   *  the width and height of a character in the cmex10 font.  The cmex10
-   *  font has depth considerably greater than most characters' widths (the
-   *  whole font has the depth of the character with greatest depth).  This
-   *  is not the case for most fonts, so if we can access cmex10, the
-   *  height of a character should be much bigger than the width.
-   *  Otherwise, if we don't have cmex10, we'll get a character in another
-   *  font with normal height and width.  In this case, we insert a message
-   *  pointing the user to the jsMath site, and load one of the fallback
-   *  definitions.
-   *  
-   */
-  Check: function () {
-    var cookie = jsMath.Controls.cookie;
-    this.CheckTeX();
-    if (jsMath.nofonts) {
-      if (cookie.autofont || cookie.font == 'tex') {
-        cookie.font = this.fallback;
-        if (cookie.warn) {
-          jsMath.nofontMessage = 1;
-          cookie.warn = 0; jsMath.Controls.SetCookie(0);
-          if (jsMath.window.NoFontMessage) {jsMath.window.NoFontMessage()}
-                               else {this.Message(this.message)}
-        }
-      }
-    } else {
-      if (cookie.autofont) {cookie.font = 'tex'}
-      if (cookie.font == 'tex') return;
-    }
-    if (jsMath.noImgFonts) {cookie.font = 'unicode'}
-    if (cookie.font == 'unicode') {
-      jsMath.Setup.Script('jsMath-fallback-'+jsMath.platform+'.js');
-      jsMath.Box.TeXnonfallback = jsMath.Box.TeX;
-      jsMath.Box.TeX = jsMath.Box.TeXfallback;
-      return;
-    }
-    if (!cookie.print && cookie.printwarn) {
-      this.PrintMessage(
-        (jsMath.Browser.alphaPrintBug && jsMath.Controls.cookie.alpha) ?
-          this.print_message + this.alpha_message : this.print_message);
-    }
-    if (jsMath.Browser.waitForImages) {
-      jsMath.Script.Push(jsMath.Script,"WaitForImage",jsMath.blank);
-    }
-    if (cookie.font == 'symbol') {
-      jsMath.Setup.Script('jsMath-fallback-symbols.js');
-      jsMath.Box.TeXnonfallback = jsMath.Box.TeX;
-      jsMath.Box.TeX = jsMath.Box.TeXfallback;
-      return;
-    }
-    jsMath.Img.SetFont({
-      cmr10:  ['all'], cmmi10: ['all'], cmsy10: ['all'],
-      cmex10: ['all'], cmbx10: ['all'], cmti10: ['all']
-    });
-    jsMath.Img.LoadFont('cm-fonts');
-  },
-
-  /*
-   *  The message for when no TeX fonts.  You can eliminate this message
-   *  by including
-   *  
-   *      <script>jsMath = {Font: {Message: function () {}}}</script>
-   *
-   *  in your HTML file, before loading jsMath.js, if you want.  But this
-   *  means the user may not know that he or she can get a better version
-   *  of your page.
-   */
-  Message: function (message) {
-    if (jsMath.Element("Warning")) return;
-    var div = jsMath.Setup.DIV("Warning",{});
-    div.innerHTML = 
-      '<center><table><tr><td>'
-      + '<div id="jsMath_noFont"><div class="message">' + message
-      + '<div style="text-align:left"><span style="float:left; margin: 8px 0px 0px 20px">'
-      + '<span onclick="jsMath.Controls.Panel()" title=" Open the jsMath Control Panel " class="link">jsMath Control Panel</span>'
-      + '</span><span style="margin: 8px 20px 0px 0px; float:right">'
-      + '<span onclick="jsMath.Font.HideMessage()" title=" Remove this font warning message " class="link">Hide this Message</span>'
-      + '</span></div><div style="height:6px"></div><br clear="all"/></div></div>'
-      + '<div style="width:22em; height:1px"></div>'
-      + '</td></tr></table></center><hr/>';
-  },
-  
-  HideMessage: function () {
-    var message = jsMath.Element("Warning");
-    if (message) {message.style.display = "none"}
-  },
-  
-  PrintMessage: function (message) {
-    if (jsMath.Element("PrintWarning")) return;
-    var div = jsMath.Setup.DIV("PrintWarning",{});
-    div.innerHTML = 
-      '<center><table><tr><td>'
-      + '<div class="message">' + message + '</div>'
-      + '<div style="width:22em; height:1px"></div>'
-      + '</td></tr></table></center><hr/>';
-  },
-  
-  /*
-   *  Register an extra font so jsMath knows about it
-   */
-  Register: function (data,force) {
-    if (typeof(data) == 'string') {data = {name: data}}
-    if (!jsMath.Setup.inited && !force) {
-      this.register[this.register.length] = data;
-      return;
-    }
-    var fontname = data.name; var name = fontname.replace(/10$/,'');
-    var fontfam = jsMath.TeX.fam.length;
-    if (data.prefix == null) {data.prefix = ""}
-    if (!data.style) {data.style = "font-family: "+data.prefix+fontname+", serif"}
-    if (!data.styles) {data.styles = {}}
-    if (!data.macros) {data.macros = {}}
-    /*
-     *  Register font family
-     */
-    jsMath.TeX.fam[fontfam] = fontname;
-    jsMath.TeX.famName[fontname] = fontfam;
-    data.macros[name] = ['HandleFont',fontfam];
-    jsMath.Add(jsMath.Parser.prototype.macros,data.macros);
-    /*
-     *  Set up styles
-     */
-    data.styles['.typeset .'+fontname] = data.style;
-    jsMath.Setup.Styles(data.styles);
-    if (jsMath.initialized) {jsMath.Script.Push(jsMath.Setup,'TeXfont',fontname)}
-    /*
-     *  Check for font and give message if missing
-     */
-    var cookie = jsMath.Controls.cookie;
-    var hasTeXfont = !jsMath.nofonts &&
-                      data.test(fontname,data.testChar,data.testFactor,data.prefix);
-    if (hasTeXfont && cookie.font == 'tex') {
-      if (data.tex) {data.tex(fontname,fontfam,data)}
-      return;
-    }
-    if (!hasTeXfont && cookie.warn && cookie.font == 'tex' && !jsMath.nofonts) {
-      if (!cookie.fonts.match("/"+fontname+"/")) {
-        cookie.fonts += fontname + "/"; jsMath.Controls.SetCookie(0);
-        if (!jsMath.Element("Warning")) this.Message(this.extra_message);
-        var extra = jsMath.Element("ExtraFonts");
-        if (extra) {
-          if (extra.innerHTML != "") {extra.innerHTML += ','}
-          extra.innerHTML += " " + data.prefix+fontname;
-        }
-      }
-    }
-    if (cookie.font == 'unicode' || jsMath.noImgFonts) {
-      if (data.fallback) {data.fallback(fontname,fontfam,data)}
-      return;
-    }
-    //  Image fonts
-    var font = {};
-    if (cookie.font == 'symbol' && data.symbol != null) {
-      font[fontname] = data.symbol(fontname,fontfam,data);
-    } else {
-      font[fontname] = ['all'];
-    }
-    jsMath.Img.SetFont(font);
-    jsMath.Img.LoadFont(fontname);
-    if (jsMath.initialized) {
-      jsMath.Script.Push(jsMath.Img,'Scale');
-      jsMath.Script.Push(jsMath.Img,'UpdateFonts');
-    }
-  },
-  /*
-   *  If fonts are registered before jsMath.Init() is called, jsMath.em
-   *  will not be available, so they need to be delayed.
-   */
-  LoadRegistered: function () {
-    var i = 0;
-    while (i < this.register.length) {this.Register(this.register[i++],1)}
-    this.register = [];
-  },
-
-  /*
-   *  Load a font
-   */
-  Load: function (name) {jsMath.Setup.Script(this.URL(name))},
-  URL: function (name) {return jsMath.Img.root+name+'/def.js'}
-  
-};
-
-/***************************************************************************/
-
-/*
- *  Implements the jsMath control panel.
- *  Much of the code is in jsMath-controls.html, which is
- *  loaded into a hidden IFRAME on demand
- */
-jsMath.Controls = {
-
-  //  Data stored in the jsMath cookie
-  cookie: {
-    scale: 100,
-    font: 'tex', autofont: 1, scaleImg: 0, alpha: 1,
-    warn: 1, fonts: '/', printwarn: 1, stayhires: 0,
-    button: 1, progress: 1, asynch: 0, blank: 0,
-    print: 0, keep: '0D', global: 'auto', hiddenGlobal: 1
-  },
-  
-  cookiePath: '/',  // can also set cookieDomain
-  noCookiePattern: /^(file|mk):$/,  // pattern for handling cookies locally
-  
-  
-  /*
-   *  Create the HTML needed for control panel
-   */
-  Init: function () {
-    this.panel = jsMath.Setup.DIV("panel",{display:'none'},jsMath.fixedDiv);
-    if (!jsMath.Browser.msieButtonBug) {this.Button()}
-      else {setTimeout("jsMath.Controls.Button()",500)}
-  },
-
-  /*
-   *  Load the control panel
-   */
-  Panel: function () {
-    jsMath.Translate.Cancel();
-    if (this.loaded) {this.Main()}
-      else {jsMath.Script.delayedLoad(jsMath.root+"jsMath-controls.html")}
-  },
-  
-  /*
-   *  Create the control panel button
-   */
-  Button: function () {
-    var button = jsMath.Setup.DIV("button",{},jsMath.fixedDiv);
-    button.title = ' Open jsMath Control Panel ';
-    button.innerHTML = 
-      '<span onclick="jsMath.Controls.Panel()">jsMath</span>';
-    if (!jsMath.Global.isLocal && !jsMath.noShowGlobal) {
-      button.innerHTML +=
-        '<span id="jsMath_global" title=" Open jsMath Global Panel " '
-          + 'onclick="jsMath.Global.Show(1)">Global&nbsp;</span>';
-    }
-    if (button.offsetWidth < 30) {button.style.width = "auto"}
-    if (!this.cookie.button) {button.style.display = "none"}
-  },
-  
-  /*
-   *  Since MSIE doesn't handle position:float, we need to have the
-   *  window repositioned every time the window scrolls.  We do that
-   *  putting the floating elements into a window-sized DIV, but
-   *  absolutely positioned, and then move the DIV.
-   */
-  MoveButton: function () {
-    jsMath.fixedDiv.style.left = document.body.scrollLeft + 'px';
-    jsMath.fixedDiv.style.top = document.body.scrollTop + 'px';
-    jsMath.fixedDiv.style.width = document.body.clientWidth + 'px';
-    jsMath.fixedDiv.style.height = document.body.clientHeight + 'px';
-  },
-
-  /*
-   *  Get the cookie data from the browser
-   *  (for file: references, use url '?' syntax)
-   */
-  GetCookie: function () {
-    // save the current cookie settings as the defaults
-    if (this.defaults == null) {this.defaults = {}}
-    jsMath.Add(this.defaults,this.cookie); this.userSet = {};
-    // get the browser's cookie data
-    var cookies = jsMath.document.cookie;
-    if (jsMath.window.location.protocol.match(this.noCookiePattern)) {
-      cookies = this.localGetCookie();
-      this.isLocalCookie = 1;
-    }
-    if (cookies.match(/jsMath=([^;]+)/)) {
-      var data = unescape(RegExp.$1).split(/,/);
-      for (var i = 0; i < data.length; i++) {
-        var x = data[i].match(/(.*):(.*)/);
-        if (x[2].match(/^\d+$/)) {x[2] = 1*x[2]} // convert from string
-        this.cookie[x[1]] = x[2];
-        this.userSet[x[1]] = 1;
-      }
-    }
-  },
-  localGetCookie: function () {
-    return jsMath.window.location.search.substr(1);
-  },
-  
-  /*
-   *  Save the cookie data in the browser
-   *  (for file: urls, append data like CGI reference)
-   */
-  SetCookie: function (warn) {
-    var cookie = [];
-    for (var id in this.cookie) {
-      if (this.defaults[id] == null || this.cookie[id] != this.defaults[id])
-        {cookie[cookie.length] = id + ':' + this.cookie[id]}
-    }
-    cookie = cookie.join(',');
-    if (this.isLocalCookie) {
-      if (warn == 2) {return 'jsMath='+escape(cookie)}
-      this.localSetCookie(cookie,warn);
-    } else {
-      cookie = escape(cookie);
-      if (cookie == '') {warn = 0}
-      if (this.cookiePath) {cookie += '; path='+this.cookiePath}
-      if (this.cookieDomain) {cookie += '; domain='+this.cookieDomain}
-      if (this.cookie.keep != '0D') {
-        var ms = {
-          D: 1000*60*60*24,
-          W: 1000*60*60*24*7,
-          M: 1000*60*60*24*30,
-          Y: 1000*60*60*24*365
-        };
-        var exp = new Date;
-        exp.setTime(exp.getTime() +
-            this.cookie.keep.substr(0,1) * ms[this.cookie.keep.substr(1,1)]);
-        cookie += '; expires=' + exp.toGMTString();
-      }
-      if (cookie != '') {
-        jsMath.document.cookie = 'jsMath='+cookie;
-        var cookies = jsMath.document.cookie;
-        if (warn && !cookies.match(/jsMath=/))
-          {alert("Cookies must be enabled in order to save jsMath options")}
-      }
-    }
-    return null;
-  },
-  localSetCookie: function (cookie,warn) {
-    if (!warn) return;
-    var href = String(jsMath.window.location).replace(/\?.*/,"");
-    if (cookie != '') {href += '?jsMath=' + escape(cookie)}
-    if (href != jsMath.window.location.href) {this.Reload(href)}
-  },
-  
-  /*
-   *  Reload the page (with the given URL)
-   */
-  Reload: function (url) {
-    if (!this.loaded) return;
-    this.loaded = 0; jsMath.Setup.inited = -100;
-    jsMath.Global.ClearCache();
-    if (url) {jsMath.window.location.replace(url)}
-        else {jsMath.window.location.reload()}
-  }
-  
-};
-
-/***************************************************************************/
-
-/*
- *  Implements the actions for clicking and double-clicking
- *  on math formulas
- */
-jsMath.Click = {
-  
-  /*
-   *  Handle clicking on math to get control panel
-   */
-  CheckClick: function (event) {
-    if (!event) {event = jsMath.window.event}
-    if (event.altKey) jsMath.Controls.Panel();
-  },
-  
-  /*
-   *  Handle double-click for seeing TeX code
-   */
-
-  CheckDblClick: function (event) {
-    if (!event) {event = jsMath.window.event}
-    if (!jsMath.Click.DblClick) {
-      jsMath.Extension.Require('double-click',1);
-      // Firefox clears the event, so copy it
-      var tmpEvent = event; event = {};
-      for (var id in tmpEvent) {event[id] = tmpEvent[id]}
-    }
-    jsMath.Script.Push(jsMath.Click,'DblClick',[event,this.alt]);
-  }
-  
-};
-
-/***************************************************************************/
-
-/*
- *  The TeX font information
- */
-jsMath.TeX = {
-
-  //
-  //  The TeX font parameters
-  //
-  thinmuskip:   3/18,
-  medmuskip:    4/18,
-  thickmuskip:  5/18,
-
-  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,
-  default_rule_thickness: .06,
-  big_op_spacing1:  .111111,
-  big_op_spacing2:  .166666,
-  big_op_spacing3:  .2,
-  big_op_spacing4:  .6,
-  big_op_spacing5:  .1,
-
-  integer:          6553.6,     // conversion of em's to TeX internal integer
-  scriptspace:         .05,
-  nulldelimiterspace:  .12,
-  delimiterfactor:     901,
-  delimitershortfall:   .5,
-  scale:                 1,     //  scaling factor for font dimensions
- 
-  //  The TeX math atom types (see Appendix G of the TeXbook)
-  atom: ['ord', 'op', 'bin', 'rel', 'open', 'close', 'punct', 'ord'],
-
-  //  The TeX font families
-  fam: ['cmr10','cmmi10','cmsy10','cmex10','cmti10','','cmbx10',''],
-  famName: {cmr10:0, cmmi10:1, cmsy10:2, cmex10:3, cmti10:4, cmbx10:6},
-
-  //  Encoding used by jsMath fonts
-  encoding: [
-    '&#xC0;', '&#xC1;', '&#xC2;', '&#xC3;', '&#xC4;', '&#xC5;', '&#xC6;', '&#xC7;',
-    '&#xC8;', '&#xC9;', '&#xCA;', '&#xCB;', '&#xCC;', '&#xCD;', '&#xCE;', '&#xCF;',
-
-    '&#xB0;', '&#xD1;', '&#xD2;', '&#xD3;', '&#xD4;', '&#xD5;', '&#xD6;', '&#xB7;',
-    '&#xD8;', '&#xD9;', '&#xDA;', '&#xDB;', '&#xDC;', '&#xB5;', '&#xB6;', '&#xDF;',
-
-    '&#xEF;', '!', '&#x22;', '#', '$', '%', '&#x26;', '&#x27;',
-    '(', ')', '*', '+', ',', '-', '.', '/',
-
-    '0', '1', '2', '3', '4', '5', '6', '7',
-    '8', '9', ':', ';', '&#x3C;', '=', '&#x3E;', '?',
-
-    '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
-    'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
-
-    'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
-    'X', 'Y', 'Z', '[', '&#x5C;', ']', '^', '_',
-
-    '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
-    'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
-
-    'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
-    'x', 'y', 'z', '{', '|', '}', '&#x7E;', '&#xFF;'
-  ],
-
-  /*
-   *  The following are the TeX font mappings and metrics.  The metric
-   *  information comes directly from the TeX .tfm files.  Browser-specific
-   *  adjustments are made to these tables in the Browser.Init() routine
-   */
-  cmr10: [
-    [0.625,0.683], [0.833,0.683], [0.778,0.683], [0.694,0.683],
-    [0.667,0.683], [0.75,0.683], [0.722,0.683], [0.778,0.683],
-    [0.722,0.683], [0.778,0.683], [0.722,0.683],
-    [0.583,0.694,0,{ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}}],
-    [0.556,0.694], [0.556,0.694], [0.833,0.694], [0.833,0.694],
-
-    [0.278,0.431], [0.306,0.431,0.194], [0.5,0.694], [0.5,0.694],
-    [0.5,0.628], [0.5,0.694], [0.5,0.568], [0.75,0.694],
-    [0.444,0,0.17], [0.5,0.694], [0.722,0.431], [0.778,0.431],
-    [0.5,0.528,0.0972], [0.903,0.683], [1.01,0.683], [0.778,0.732,0.0486],
-
-    [0.278,0.431,0,{krn: {'108': -0.278, '76': -0.319}}],
-    [0.278,0.694,0,{lig: {'96': 60}}],
-    [0.5,0.694], [0.833,0.694,0.194], [0.5,0.75,0.0556],
-    [0.833,0.75,0.0556], [0.778,0.694],
-    [0.278,0.694,0,{krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}}],
-    [0.389,0.75,0.25], [0.389,0.75,0.25], [0.5,0.75],
-    [0.778,0.583,0.0833], [0.278,0.106,0.194],
-    [0.333,0.431,0,{lig: {'45': 123}}],
-    [0.278,0.106], [0.5,0.75,0.25],
-
-    [0.5,0.644], [0.5,0.644], [0.5,0.644], [0.5,0.644],
-    [0.5,0.644], [0.5,0.644], [0.5,0.644], [0.5,0.644],
-    [0.5,0.644], [0.5,0.644], [0.278,0.431], [0.278,0.431,0.194],
-    [0.278,0.5,0.194], [0.778,0.367,-0.133], [0.472,0.5,0.194],
-    [0.472,0.694,0,{lig: {'96': 62}}],
-
-    [0.778,0.694],
-    [0.75,0.683,0,{krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}}],
-    [0.708,0.683], [0.722,0.683],
-    [0.764,0.683,0,{krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}}],
-    [0.681,0.683],
-    [0.653,0.683,0,{krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}}],
-    [0.785,0.683], [0.75,0.683], [0.361,0.683,0,{krn: {'73': 0.0278}}],
-    [0.514,0.683],
-    [0.778,0.683,0,{krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}}],
-    [0.625,0.683,0,{krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}}],
-    [0.917,0.683], [0.75,0.683],
-    [0.778,0.683,0,{krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}}],
-
-    [0.681,0.683,0,{krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}}],
-    [0.778,0.683,0.194],
-    [0.736,0.683,0,{krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}}],
-    [0.556,0.683],
-    [0.722,0.683,0,{krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}}],
-    [0.75,0.683],
-    [0.75,0.683,0,{ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}}],
-    [1.03,0.683,0,{ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}}],
-    [0.75,0.683,0,{krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}}],
-    [0.75,0.683,0,{ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}}],
-    [0.611,0.683], [0.278,0.75,0.25], [0.5,0.694],
-    [0.278,0.75,0.25], [0.5,0.694], [0.278,0.668],
-
-    [0.278,0.694,0,{lig: {'96': 92}}],
-    [0.5,0.431,0,{krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}}],
-    [0.556,0.694,0,{krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}}],
-    [0.444,0.431,0,{krn: {'104': -0.0278, '107': -0.0278}}],
-    [0.556,0.694], [0.444,0.431],
-    [0.306,0.694,0,{ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}}],
-    [0.5,0.431,0.194,{ic: 0.0139, krn: {'106': 0.0278}}],
-    [0.556,0.694,0,{krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}}],
-    [0.278,0.668], [0.306,0.668,0.194],
-    [0.528,0.694,0,{krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}}],
-    [0.278,0.694],
-    [0.833,0.431,0,{krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}}],
-    [0.556,0.431,0,{krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}}],
-    [0.5,0.431,0,{krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}}],
-
-    [0.556,0.431,0.194,{krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}}],
-    [0.528,0.431,0.194], [0.392,0.431], [0.394,0.431],
-    [0.389,0.615,0,{krn: {'121': -0.0278, '119': -0.0278}}],
-    [0.556,0.431,0,{krn: {'119': -0.0278}}],
-    [0.528,0.431,0,{ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}}],
-    [0.722,0.431,0,{ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}}],
-    [0.528,0.431],
-    [0.528,0.431,0.194,{ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}}],
-    [0.444,0.431], [0.5,0.431,0,{ic: 0.0278, lig: {'45': 124}}],
-    [1,0.431,0,{ic: 0.0278}], [0.5,0.694], [0.5,0.668], [0.5,0.668]
-  ],
-  
-  cmmi10: [
-    [0.615,0.683,0,{ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}}],
-    [0.833,0.683,0,{krn: {'127': 0.167}}],
-    [0.763,0.683,0,{ic: 0.0278, krn: {'127': 0.0833}}],
-    [0.694,0.683,0,{krn: {'127': 0.167}}],
-    [0.742,0.683,0,{ic: 0.0757, krn: {'127': 0.0833}}],
-    [0.831,0.683,0,{ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}}],
-    [0.78,0.683,0,{ic: 0.0576, krn: {'127': 0.0833}}],
-    [0.583,0.683,0,{ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}}],
-    [0.667,0.683,0,{krn: {'127': 0.0833}}],
-    [0.612,0.683,0,{ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}}],
-    [0.772,0.683,0,{ic: 0.0502, krn: {'127': 0.0833}}],
-    [0.64,0.431,0,{ic: 0.0037, krn: {'127': 0.0278}}],
-    [0.566,0.694,0.194,{ic: 0.0528, krn: {'127': 0.0833}}],
-    [0.518,0.431,0.194,{ic: 0.0556}],
-    [0.444,0.694,0,{ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}}],
-    [0.406,0.431,0,{krn: {'127': 0.0556}}],
-
-    [0.438,0.694,0.194,{ic: 0.0738, krn: {'127': 0.0833}}],
-    [0.497,0.431,0.194,{ic: 0.0359, krn: {'127': 0.0556}}],
-    [0.469,0.694,0,{ic: 0.0278, krn: {'127': 0.0833}}],
-    [0.354,0.431,0,{krn: {'127': 0.0556}}],
-    [0.576,0.431], [0.583,0.694],
-    [0.603,0.431,0.194,{krn: {'127': 0.0278}}],
-    [0.494,0.431,0,{ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}}],
-    [0.438,0.694,0.194,{ic: 0.046, krn: {'127': 0.111}}],
-    [0.57,0.431,0,{ic: 0.0359}],
-    [0.517,0.431,0.194,{krn: {'127': 0.0833}}],
-    [0.571,0.431,0,{ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}}],
-    [0.437,0.431,0,{ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}}],
-    [0.54,0.431,0,{ic: 0.0359, krn: {'127': 0.0278}}],
-    [0.596,0.694,0.194,{krn: {'127': 0.0833}}],
-    [0.626,0.431,0.194,{krn: {'127': 0.0556}}],
-
-    [0.651,0.694,0.194,{ic: 0.0359, krn: {'127': 0.111}}],
-    [0.622,0.431,0,{ic: 0.0359}],
-    [0.466,0.431,0,{krn: {'127': 0.0833}}],
-    [0.591,0.694,0,{krn: {'127': 0.0833}}],
-    [0.828,0.431,0,{ic: 0.0278}],
-    [0.517,0.431,0.194,{krn: {'127': 0.0833}}],
-    [0.363,0.431,0.0972,{ic: 0.0799, krn: {'127': 0.0833}}],
-    [0.654,0.431,0.194,{krn: {'127': 0.0833}}],
-    [1,0.367,-0.133], [1,0.367,-0.133], [1,0.367,-0.133], [1,0.367,-0.133], 
-    [0.278,0.464,-0.0363], [0.278,0.464,-0.0363], [0.5,0.465,-0.0347], [0.5,0.465,-0.0347],
-
-    [0.5,0.431], [0.5,0.431], [0.5,0.431], [0.5,0.431,0.194],
-    [0.5,0.431,0.194], [0.5,0.431,0.194], [0.5,0.644], [0.5,0.431,0.194],
-    [0.5,0.644], [0.5,0.431,0.194], [0.278,0.106], [0.278,0.106,0.194],
-    [0.778,0.539,0.0391],
-    [0.5,0.75,0.25,{krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}}],
-    [0.778,0.539,0.0391], [0.5,0.465,-0.0347],
-
-    [0.531,0.694,0,{ic: 0.0556, krn: {'127': 0.0833}}],
-    [0.75,0.683,0,{krn: {'127': 0.139}}],
-    [0.759,0.683,0,{ic: 0.0502, krn: {'127': 0.0833}}],
-    [0.715,0.683,0,{ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
-    [0.828,0.683,0,{ic: 0.0278, krn: {'127': 0.0556}}],
-    [0.738,0.683,0,{ic: 0.0576, krn: {'127': 0.0833}}],
-    [0.643,0.683,0,{ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}}],
-    [0.786,0.683,0,{krn: {'127': 0.0833}}],
-    [0.831,0.683,0,{ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}}],
-    [0.44,0.683,0,{ic: 0.0785, krn: {'127': 0.111}}],
-    [0.555,0.683,0,{ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}}],
-    [0.849,0.683,0,{ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}}],
-    [0.681,0.683,0,{krn: {'127': 0.0278}}],
-    [0.97,0.683,0,{ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
-    [0.803,0.683,0,{ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
-    [0.763,0.683,0,{ic: 0.0278, krn: {'127': 0.0833}}],
-
-    [0.642,0.683,0,{ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}}],
-    [0.791,0.683,0.194,{krn: {'127': 0.0833}}],
-    [0.759,0.683,0,{ic: 0.00773, krn: {'127': 0.0833}}],
-    [0.613,0.683,0,{ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
-    [0.584,0.683,0,{ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
-    [0.683,0.683,0,{ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}}],
-    [0.583,0.683,0,{ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}}],
-    [0.944,0.683,0,{ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}}],
-    [0.828,0.683,0,{ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
-    [0.581,0.683,0,{ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}}],
-    [0.683,0.683,0,{ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
-    [0.389,0.75], [0.389,0.694,0.194], [0.389,0.694,0.194],
-    [1,0.358,-0.142], [1,0.358,-0.142],
-
-    [0.417,0.694,0,{krn: {'127': 0.111}}],
-    [0.529,0.431], [0.429,0.694], [0.433,0.431,0,{krn: {'127': 0.0556}}],
-    [0.52,0.694,0,{krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}}],
-    [0.466,0.431,0,{krn: {'127': 0.0556}}],
-    [0.49,0.694,0.194,{ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}}],
-    [0.477,0.431,0.194,{ic: 0.0359, krn: {'127': 0.0278}}],
-    [0.576,0.694,0,{krn: {'127': -0.0278}}], [0.345,0.66],
-    [0.412,0.66,0.194,{ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}}],
-    [0.521,0.694,0,{ic: 0.0315}], [0.298,0.694,0,{ic: 0.0197, krn: {'127': 0.0833}}],
-    [0.878,0.431], [0.6,0.431], [0.485,0.431,0,{krn: {'127': 0.0556}}],
-
-    [0.503,0.431,0.194,{krn: {'127': 0.0833}}],
-    [0.446,0.431,0.194,{ic: 0.0359, krn: {'127': 0.0833}}],
-    [0.451,0.431,0,{ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}}],
-    [0.469,0.431,0,{krn: {'127': 0.0556}}], [0.361,0.615,0,{krn: {'127': 0.0833}}],
-    [0.572,0.431,0,{krn: {'127': 0.0278}}],
-    [0.485,0.431,0,{ic: 0.0359, krn: {'127': 0.0278}}],
-    [0.716,0.431,0,{ic: 0.0269, krn: {'127': 0.0833}}],
-    [0.572,0.431,0,{krn: {'127': 0.0278}}],
-    [0.49,0.431,0.194,{ic: 0.0359, krn: {'127': 0.0556}}],
-    [0.465,0.431,0,{ic: 0.044, krn: {'127': 0.0556}}],
-    [0.322,0.431,0,{krn: {'127': 0.0278}}],
-    [0.384,0.431,0.194,{krn: {'127': 0.0833}}],
-    [0.636,0.431,0.194,{krn: {'127': 0.111}}],
-    [0.5,0.714,0,{ic: 0.154}], [0.278,0.694,0,{ic: 0.399}]
-  ],
-
-  cmsy10: [
-    [0.778,0.583,0.0833], [0.278,0.444,-0.0556], [0.778,0.583,0.0833],
-    [0.5,0.465,-0.0347], [0.778,0.583,0.0833], [0.5,0.444,-0.0556],
-    [0.778,0.583,0.0833], [0.778,0.583,0.0833], [0.778,0.583,0.0833],
-    [0.778,0.583,0.0833], [0.778,0.583,0.0833], [0.778,0.583,0.0833],
-    [0.778,0.583,0.0833], [1,0.694,0.194], [0.5,0.444,-0.0556], [0.5,0.444,-0.0556],
-
-    [0.778,0.464,-0.0363], [0.778,0.464,-0.0363], [0.778,0.636,0.136],
-    [0.778,0.636,0.136], [0.778,0.636,0.136], [0.778,0.636,0.136],
-    [0.778,0.636,0.136], [0.778,0.636,0.136], [0.778,0.367,-0.133],
-    [0.778,0.483,-0.0169], [0.778,0.539,0.0391], [0.778,0.539,0.0391],
-    [1,0.539,0.0391], [1,0.539,0.0391], [0.778,0.539,0.0391], [0.778,0.539,0.0391],
-
-    [1,0.367,-0.133], [1,0.367,-0.133], [0.5,0.694,0.194], [0.5,0.694,0.194],
-    [1,0.367,-0.133], [1,0.694,0.194], [1,0.694,0.194], [0.778,0.464,-0.0363],
-    [1,0.367,-0.133], [1,0.367,-0.133], [0.611,0.694,0.194], [0.611,0.694,0.194],
-    [1,0.367,-0.133], [1,0.694,0.194], [1,0.694,0.194], [0.778,0.431],
-
-    [0.275,0.556], [1,0.431], [0.667,0.539,0.0391], [0.667,0.539,0.0391],
-    [0.889,0.694,0.194], [0.889,0.694,0.194], [0,0.694,0.194], [0,0.367,-0.133],
-    [0.556,0.694], [0.556,0.694], [0.667,0.431], [0.5,0.75,0.0556],
-    [0.722,0.694], [0.722,0.694], [0.778,0.694], [0.778,0.694],
-
-    [0.611,0.694], [0.798,0.683,0,{krn: {'48': 0.194}}],
-    [0.657,0.683,0,{ic: 0.0304, krn: {'48': 0.139}}],
-    [0.527,0.683,0,{ic: 0.0583, krn: {'48': 0.139}}],
-    [0.771,0.683,0,{ic: 0.0278, krn: {'48': 0.0833}}],
-    [0.528,0.683,0,{ic: 0.0894, krn: {'48': 0.111}}],
-    [0.719,0.683,0,{ic: 0.0993, krn: {'48': 0.111}}],
-    [0.595,0.683,0.0972,{ic: 0.0593, krn: {'48': 0.111}}],
-    [0.845,0.683,0,{ic: 0.00965, krn: {'48': 0.111}}],
-    [0.545,0.683,0,{ic: 0.0738, krn: {'48': 0.0278}}],
-    [0.678,0.683,0.0972,{ic: 0.185, krn: {'48': 0.167}}],
-    [0.762,0.683,0,{ic: 0.0144, krn: {'48': 0.0556}}],
-    [0.69,0.683,0,{krn: {'48': 0.139}}], [1.2,0.683,0,{krn: {'48': 0.139}}],
-    [0.82,0.683,0,{ic: 0.147, krn: {'48': 0.0833}}],
-    [0.796,0.683,0,{ic: 0.0278, krn: {'48': 0.111}}],
-
-    [0.696,0.683,0,{ic: 0.0822, krn: {'48': 0.0833}}],
-    [0.817,0.683,0.0972,{krn: {'48': 0.111}}],
-    [0.848,0.683,0,{krn: {'48': 0.0833}}],
-    [0.606,0.683,0,{ic: 0.075, krn: {'48': 0.139}}],
-    [0.545,0.683,0,{ic: 0.254, krn: {'48': 0.0278}}],
-    [0.626,0.683,0,{ic: 0.0993, krn: {'48': 0.0833}}],
-    [0.613,0.683,0,{ic: 0.0822, krn: {'48': 0.0278}}],
-    [0.988,0.683,0,{ic: 0.0822, krn: {'48': 0.0833}}],
-    [0.713,0.683,0,{ic: 0.146, krn: {'48': 0.139}}],
-    [0.668,0.683,0.0972,{ic: 0.0822, krn: {'48': 0.0833}}],
-    [0.725,0.683,0,{ic: 0.0794, krn: {'48': 0.139}}],
-    [0.667,0.556], [0.667,0.556], [0.667,0.556], [0.667,0.556], [0.667,0.556],
-
-    [0.611,0.694], [0.611,0.694], [0.444,0.75,0.25], [0.444,0.75,0.25],
-    [0.444,0.75,0.25], [0.444,0.75,0.25], [0.5,0.75,0.25], [0.5,0.75,0.25],
-    [0.389,0.75,0.25], [0.389,0.75,0.25], [0.278,0.75,0.25], [0.5,0.75,0.25],
-    [0.5,0.75,0.25], [0.611,0.75,0.25], [0.5,0.75,0.25], [0.278,0.694,0.194],
-
-    [0.833,0.04,0.96], [0.75,0.683], [0.833,0.683], [0.417,0.694,0.194,{ic: 0.111}],
-    [0.667,0.556], [0.667,0.556], [0.778,0.636,0.136], [0.778,0.636,0.136],
-    [0.444,0.694,0.194], [0.444,0.694,0.194], [0.444,0.694,0.194],
-    [0.611,0.694,0.194], [0.778,0.694,0.13], [0.778,0.694,0.13],
-    [0.778,0.694,0.13], [0.778,0.694,0.13]
-  ],
-
-  cmex10: [
-    [0.458,0.04,1.16,{n: 16}], [0.458,0.04,1.16,{n: 17}],
-    [0.417,0.04,1.16,{n: 104}], [0.417,0.04,1.16,{n: 105}],
-    [0.472,0.04,1.16,{n: 106}], [0.472,0.04,1.16,{n: 107}],
-    [0.472,0.04,1.16,{n: 108}], [0.472,0.04,1.16,{n: 109}],
-    [0.583,0.04,1.16,{n: 110}], [0.583,0.04,1.16,{n: 111}],
-    [0.472,0.04,1.16,{n: 68}], [0.472,0.04,1.16,{n: 69}],
-    [0.333,0,0.6,{delim: {rep: 12}}], [0.556,0,0.6,{delim: {rep: 13}}],
-    [0.578,0.04,1.16,{n: 46}], [0.578,0.04,1.16,{n: 47}],
-
-    [0.597,0.04,1.76,{n: 18}], [0.597,0.04,1.76,{n: 19}],
-    [0.736,0.04,2.36,{n: 32}], [0.736,0.04,2.36,{n: 33}],
-    [0.528,0.04,2.36,{n: 34}], [0.528,0.04,2.36,{n: 35}],
-    [0.583,0.04,2.36,{n: 36}], [0.583,0.04,2.36,{n: 37}],
-    [0.583,0.04,2.36,{n: 38}], [0.583,0.04,2.36,{n: 39}],
-    [0.75,0.04,2.36,{n: 40}], [0.75,0.04,2.36,{n: 41}],
-    [0.75,0.04,2.36,{n: 42}], [0.75,0.04,2.36,{n: 43}],
-    [1.04,0.04,2.36,{n: 44}], [1.04,0.04,2.36,{n: 45}],
-
-    [0.792,0.04,2.96,{n: 48}], [0.792,0.04,2.96,{n: 49}],
-    [0.583,0.04,2.96,{n: 50}], [0.583,0.04,2.96,{n: 51}],
-    [0.639,0.04,2.96,{n: 52}], [0.639,0.04,2.96,{n: 53}],
-    [0.639,0.04,2.96,{n: 54}], [0.639,0.04,2.96,{n: 55}],
-    [0.806,0.04,2.96,{n: 56}], [0.806,0.04,2.96,{n: 57}],
-    [0.806,0.04,2.96], [0.806,0.04,2.96],
-    [1.28,0.04,2.96], [1.28,0.04,2.96],
-    [0.811,0.04,1.76,{n: 30}], [0.811,0.04,1.76,{n: 31}],
-
-    [0.875,0.04,1.76,{delim: {top: 48, bot: 64, rep: 66}}],
-    [0.875,0.04,1.76,{delim: {top: 49, bot: 65, rep: 67}}],
-    [0.667,0.04,1.76,{delim: {top: 50, bot: 52, rep: 54}}],
-    [0.667,0.04,1.76,{delim: {top: 51, bot: 53, rep: 55}}],
-    [0.667,0.04,1.76,{delim: {bot: 52, rep: 54}}],
-    [0.667,0.04,1.76,{delim: {bot: 53, rep: 55}}],
-    [0.667,0,0.6,{delim: {top: 50, rep: 54}}],
-    [0.667,0,0.6,{delim: {top: 51, rep: 55}}],
-    [0.889,0,0.9,{delim: {top: 56, mid: 60, bot: 58, rep: 62}}],
-    [0.889,0,0.9,{delim: {top: 57, mid: 61, bot: 59, rep: 62}}],
-    [0.889,0,0.9,{delim: {top: 56, bot: 58, rep: 62}}],
-    [0.889,0,0.9,{delim: {top: 57, bot: 59, rep: 62}}],
-    [0.889,0,1.8,{delim: {rep: 63}}],
-    [0.889,0,1.8,{delim: {rep: 119}}],
-    [0.889,0,0.3,{delim: {rep: 62}}],
-    [0.667,0,0.6,{delim: {top: 120, bot: 121, rep: 63}}],
-
-    [0.875,0.04,1.76,{delim: {top: 56, bot: 59, rep: 62}}],
-    [0.875,0.04,1.76,{delim: {top: 57, bot: 58, rep: 62}}],
-    [0.875,0,0.6,{delim: {rep: 66}}], [0.875,0,0.6,{delim: {rep: 67}}],
-    [0.611,0.04,1.76,{n: 28}], [0.611,0.04,1.76,{n: 29}],
-    [0.833,0,1,{n: 71}], [1.11,0.1,1.5], [0.472,0,1.11,{ic: 0.194, n: 73}],
-    [0.556,0,2.22,{ic: 0.444}], [1.11,0,1,{n: 75}], [1.51,0.1,1.5],
-    [1.11,0,1,{n: 77}], [1.51,0.1,1.5], [1.11,0,1,{n: 79}], [1.51,0.1,1.5],
-
-    [1.06,0,1,{n: 88}], [0.944,0,1,{n: 89}], [0.472,0,1.11,{ic: 0.194, n: 90}],
-    [0.833,0,1,{n: 91}], [0.833,0,1,{n: 92}], [0.833,0,1,{n: 93}],
-    [0.833,0,1,{n: 94}], [0.833,0,1,{n: 95}], [1.44,0.1,1.5],
-    [1.28,0.1,1.5], [0.556,0,2.22,{ic: 0.444}], [1.11,0.1,1.5],
-    [1.11,0.1,1.5], [1.11,0.1,1.5], [1.11,0.1,1.5], [1.11,0.1,1.5],
-
-    [0.944,0,1,{n: 97}], [1.28,0.1,1.5], [0.556,0.722,0,{n: 99}],
-    [1,0.75,0,{n: 100}], [1.44,0.75], [0.556,0.722,0,{n: 102}],
-    [1,0.75,0,{n: 103}], [1.44,0.75], [0.472,0.04,1.76,{n: 20}],
-    [0.472,0.04,1.76,{n: 21}], [0.528,0.04,1.76,{n: 22}],
-    [0.528,0.04,1.76,{n: 23}], [0.528,0.04,1.76,{n: 24}],
-    [0.528,0.04,1.76,{n: 25}], [0.667,0.04,1.76,{n: 26}],
-    [0.667,0.04,1.76,{n: 27}],
-
-    [1,0.04,1.16,{n: 113}], [1,0.04,1.76,{n: 114}], [1,0.04,2.36,{n: 115}],
-    [1,0.04,2.96,{n: 116}], [1.06,0,1.8,{delim: {top: 118, bot: 116, rep: 117}}],
-    [1.06,0,0.6], [1.06,0.04,0.56],
-    [0.778,0,0.6,{delim: {top: 126, bot: 127, rep: 119}}],
-    [0.667,0,0.6,{delim: {top: 120, rep: 63}}],
-    [0.667,0,0.6,{delim: {bot: 121, rep: 63}}],
-    [0.45,0.12], [0.45,0.12], [0.45,0.12], [0.45,0.12],
-    [0.778,0,0.6,{delim: {top: 126, rep: 119}}],
-    [0.778,0,0.6,{delim: {bot: 127, rep: 119}}]
-  ],
-  
-  cmti10: [
-    [0.627,0.683,0,{ic: 0.133}], [0.818,0.683], [0.767,0.683,0,{ic: 0.094}],
-    [0.692,0.683], [0.664,0.683,0,{ic: 0.153}], [0.743,0.683,0,{ic: 0.164}],
-    [0.716,0.683,0,{ic: 0.12}], [0.767,0.683,0,{ic: 0.111}],
-    [0.716,0.683,0,{ic: 0.0599}], [0.767,0.683,0,{ic: 0.111}],
-    [0.716,0.683,0,{ic: 0.103}],
-    [0.613,0.694,0.194,{ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}}],
-    [0.562,0.694,0.194,{ic: 0.103}], [0.588,0.694,0.194,{ic: 0.103}],
-    [0.882,0.694,0.194,{ic: 0.103}], [0.894,0.694,0.194,{ic: 0.103}],
-
-    [0.307,0.431,0,{ic: 0.0767}], [0.332,0.431,0.194,{ic: 0.0374}],
-    [0.511,0.694], [0.511,0.694,0,{ic: 0.0969}], [0.511,0.628,0,{ic: 0.083}],
-    [0.511,0.694,0,{ic: 0.108}], [0.511,0.562,0,{ic: 0.103}], [0.831,0.694],
-    [0.46,0,0.17], [0.537,0.694,0.194,{ic: 0.105}], [0.716,0.431,0,{ic: 0.0751}],
-    [0.716,0.431,0,{ic: 0.0751}], [0.511,0.528,0.0972,{ic: 0.0919}],
-    [0.883,0.683,0,{ic: 0.12}], [0.985,0.683,0,{ic: 0.12}],
-    [0.767,0.732,0.0486,{ic: 0.094}],
-
-    [0.256,0.431,0,{krn: {'108': -0.256, '76': -0.321}}],
-    [0.307,0.694,0,{ic: 0.124, lig: {'96': 60}}],
-    [0.514,0.694,0,{ic: 0.0696}], [0.818,0.694,0.194,{ic: 0.0662}],
-    [0.769,0.694], [0.818,0.75,0.0556,{ic: 0.136}],
-    [0.767,0.694,0,{ic: 0.0969}],
-    [0.307,0.694,0,{ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}}],
-    [0.409,0.75,0.25,{ic: 0.162}], [0.409,0.75,0.25,{ic: 0.0369}],
-    [0.511,0.75,0,{ic: 0.149}], [0.767,0.562,0.0567,{ic: 0.0369}],
-    [0.307,0.106,0.194], [0.358,0.431,0,{ic: 0.0283, lig: {'45': 123}}],
-    [0.307,0.106], [0.511,0.75,0.25,{ic: 0.162}],
-
-    [0.511,0.644,0,{ic: 0.136}], [0.511,0.644,0,{ic: 0.136}],
-    [0.511,0.644,0,{ic: 0.136}], [0.511,0.644,0,{ic: 0.136}],
-    [0.511,0.644,0.194,{ic: 0.136}], [0.511,0.644,0,{ic: 0.136}],
-    [0.511,0.644,0,{ic: 0.136}], [0.511,0.644,0.194,{ic: 0.136}],
-    [0.511,0.644,0,{ic: 0.136}], [0.511,0.644,0,{ic: 0.136}],
-    [0.307,0.431,0,{ic: 0.0582}], [0.307,0.431,0.194,{ic: 0.0582}],
-    [0.307,0.5,0.194,{ic: 0.0756}], [0.767,0.367,-0.133,{ic: 0.0662}],
-    [0.511,0.5,0.194], [0.511,0.694,0,{ic: 0.122, lig: {'96': 62}}],
-
-    [0.767,0.694,0,{ic: 0.096}],
-    [0.743,0.683,0,{krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
-    [0.704,0.683,0,{ic: 0.103}], [0.716,0.683,0,{ic: 0.145}],
-    [0.755,0.683,0,{ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}}],
-    [0.678,0.683,0,{ic: 0.12}],
-    [0.653,0.683,0,{ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}}],
-    [0.774,0.683,0,{ic: 0.0872}], [0.743,0.683,0,{ic: 0.164}],
-    [0.386,0.683,0,{ic: 0.158}], [0.525,0.683,0,{ic: 0.14}],
-    [0.769,0.683,0,{ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}}],
-    [0.627,0.683,0,{krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
-    [0.897,0.683,0,{ic: 0.164}], [0.743,0.683,0,{ic: 0.164}],
-    [0.767,0.683,0,{ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}}],
-
-    [0.678,0.683,0,{ic: 0.103, krn: {'65': -0.0767}}],
-    [0.767,0.683,0.194,{ic: 0.094}],
-    [0.729,0.683,0,{ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
-    [0.562,0.683,0,{ic: 0.12}],
-    [0.716,0.683,0,{ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}}],
-    [0.743,0.683,0,{ic: 0.164}],
-    [0.743,0.683,0,{ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}}],
-    [0.999,0.683,0,{ic: 0.184, krn: {'65': -0.0767}}],
-    [0.743,0.683,0,{ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}}],
-    [0.743,0.683,0,{ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}}],
-    [0.613,0.683,0,{ic: 0.145}], [0.307,0.75,0.25,{ic: 0.188}],
-    [0.514,0.694,0,{ic: 0.169}], [0.307,0.75,0.25,{ic: 0.105}],
-    [0.511,0.694,0,{ic: 0.0665}], [0.307,0.668,0,{ic: 0.118}],
-
-    [0.307,0.694,0,{ic: 0.124, lig: {'96': 92}}], [0.511,0.431,0,{ic: 0.0767}],
-    [0.46,0.694,0,{ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
-    [0.46,0.431,0,{ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
-    [0.511,0.694,0,{ic: 0.103, krn: {'108': 0.0511}}],
-    [0.46,0.431,0,{ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
-    [0.307,0.694,0.194,{ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}}],
-    [0.46,0.431,0.194,{ic: 0.0885}], [0.511,0.694,0,{ic: 0.0767}],
-    [0.307,0.655,0,{ic: 0.102}], [0.307,0.655,0.194,{ic: 0.145}],
-    [0.46,0.694,0,{ic: 0.108}], [0.256,0.694,0,{ic: 0.103, krn: {'108': 0.0511}}],
-    [0.818,0.431,0,{ic: 0.0767}], [0.562,0.431,0,{ic: 0.0767, krn: {'39': -0.102}}],
-    [0.511,0.431,0,{ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
-
-    [0.511,0.431,0.194,{ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
-    [0.46,0.431,0.194,{ic: 0.0885}],
-    [0.422,0.431,0,{ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
-    [0.409,0.431,0,{ic: 0.0821}], [0.332,0.615,0,{ic: 0.0949}],
-    [0.537,0.431,0,{ic: 0.0767}], [0.46,0.431,0,{ic: 0.108}],
-    [0.664,0.431,0,{ic: 0.108, krn: {'108': 0.0511}}],
-    [0.464,0.431,0,{ic: 0.12}], [0.486,0.431,0.194,{ic: 0.0885}],
-    [0.409,0.431,0,{ic: 0.123}], [0.511,0.431,0,{ic: 0.0921, lig: {'45': 124}}],
-    [1.02,0.431,0,{ic: 0.0921}], [0.511,0.694,0,{ic: 0.122}],
-    [0.511,0.668,0,{ic: 0.116}], [0.511,0.668,0,{ic: 0.105}]
-  ],
-  
-  cmbx10: [
-    [0.692,0.686], [0.958,0.686], [0.894,0.686], [0.806,0.686],
-    [0.767,0.686], [0.9,0.686], [0.831,0.686], [0.894,0.686],
-    [0.831,0.686], [0.894,0.686], [0.831,0.686],
-    [0.671,0.694,0,{ic: 0.109, krn: {'39': 0.109, '63': 0.109, '33': 0.109, '41': 0.109, '93': 0.109}, lig: {'105': 14, '108': 15}}],
-    [0.639,0.694], [0.639,0.694], [0.958,0.694], [0.958,0.694],
-
-    [0.319,0.444], [0.351,0.444,0.194], [0.575,0.694], [0.575,0.694],
-    [0.575,0.632], [0.575,0.694], [0.575,0.596], [0.869,0.694],
-    [0.511,0,0.17], [0.597,0.694], [0.831,0.444], [0.894,0.444],
-    [0.575,0.542,0.0972], [1.04,0.686], [1.17,0.686], [0.894,0.735,0.0486],
-
-    [0.319,0.444,0,{krn: {'108': -0.319, '76': -0.378}}],
-    [0.35,0.694,0,{lig: {'96': 60}}], [0.603,0.694], [0.958,0.694,0.194],
-    [0.575,0.75,0.0556], [0.958,0.75,0.0556], [0.894,0.694],
-    [0.319,0.694,0,{krn: {'63': 0.128, '33': 0.128}, lig: {'39': 34}}],
-    [0.447,0.75,0.25], [0.447,0.75,0.25], [0.575,0.75], [0.894,0.633,0.133],
-    [0.319,0.156,0.194], [0.383,0.444,0,{lig: {'45': 123}}],
-    [0.319,0.156], [0.575,0.75,0.25],
-
-    [0.575,0.644], [0.575,0.644], [0.575,0.644], [0.575,0.644],
-    [0.575,0.644], [0.575,0.644], [0.575,0.644], [0.575,0.644],
-    [0.575,0.644], [0.575,0.644], [0.319,0.444], [0.319,0.444,0.194],
-    [0.35,0.5,0.194], [0.894,0.391,-0.109], [0.543,0.5,0.194],
-    [0.543,0.694,0,{lig: {'96': 62}}],
-
-    [0.894,0.694],
-    [0.869,0.686,0,{krn: {'116': -0.0319, '67': -0.0319, '79': -0.0319, '71': -0.0319, '85': -0.0319, '81': -0.0319, '84': -0.0958, '89': -0.0958, '86': -0.128, '87': -0.128}}],
-    [0.818,0.686], [0.831,0.686],
-    [0.882,0.686,0,{krn: {'88': -0.0319, '87': -0.0319, '65': -0.0319, '86': -0.0319, '89': -0.0319}}],
-    [0.756,0.686],
-    [0.724,0.686,0,{krn: {'111': -0.0958, '101': -0.0958, '117': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.128, '79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}}],
-    [0.904,0.686], [0.9,0.686], [0.436,0.686,0,{krn: {'73': 0.0319}}],
-    [0.594,0.686],
-    [0.901,0.686,0,{krn: {'79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}}],
-    [0.692,0.686,0,{krn: {'84': -0.0958, '89': -0.0958, '86': -0.128, '87': -0.128}}],
-    [1.09,0.686], [0.9,0.686],
-    [0.864,0.686,0,{krn: {'88': -0.0319, '87': -0.0319, '65': -0.0319, '86': -0.0319, '89': -0.0319}}],
-
-    [0.786,0.686,0,{krn: {'65': -0.0958, '111': -0.0319, '101': -0.0319, '97': -0.0319, '46': -0.0958, '44': -0.0958}}],
-    [0.864,0.686,0.194],
-    [0.862,0.686,0,{krn: {'116': -0.0319, '67': -0.0319, '79': -0.0319, '71': -0.0319, '85': -0.0319, '81': -0.0319, '84': -0.0958, '89': -0.0958, '86': -0.128, '87': -0.128}}],
-    [0.639,0.686],
-    [0.8,0.686,0,{krn: {'121': -0.0319, '101': -0.0958, '111': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.0958, '117': -0.0958}}],
-    [0.885,0.686],
-    [0.869,0.686,0,{ic: 0.016, krn: {'111': -0.0958, '101': -0.0958, '117': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.128, '79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}}],
-    [1.19,0.686,0,{ic: 0.016, krn: {'111': -0.0958, '101': -0.0958, '117': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.128, '79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}}],
-    [0.869,0.686,0,{krn: {'79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}}],
-    [0.869,0.686,0,{ic: 0.0287, krn: {'101': -0.0958, '111': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.0958, '117': -0.0958}}],
-    [0.703,0.686], [0.319,0.75,0.25], [0.603,0.694], [0.319,0.75,0.25],
-    [0.575,0.694], [0.319,0.694],
-
-    [0.319,0.694,0,{lig: {'96': 92}}],
-    [0.559,0.444,0,{krn: {'118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}}],
-    [0.639,0.694,0,{krn: {'101': 0.0319, '111': 0.0319, '120': -0.0319, '100': 0.0319, '99': 0.0319, '113': 0.0319, '118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}}],
-    [0.511,0.444,0,{krn: {'104': -0.0319, '107': -0.0319}}],
-    [0.639,0.694], [0.527,0.444],
-    [0.351,0.694,0,{ic: 0.109, krn: {'39': 0.109, '63': 0.109, '33': 0.109, '41': 0.109, '93': 0.109}, lig: {'105': 12, '102': 11, '108': 13}}],
-    [0.575,0.444,0.194,{ic: 0.016, krn: {'106': 0.0319}}],
-    [0.639,0.694,0,{krn: {'116': -0.0319, '117': -0.0319, '98': -0.0319, '121': -0.0319, '118': -0.0319, '119': -0.0319}}],
-    [0.319,0.694], [0.351,0.694,0.194],
-    [0.607,0.694,0,{krn: {'97': -0.0639, '101': -0.0319, '97': -0.0319, '111': -0.0319, '99': -0.0319}}],
-    [0.319,0.694],
-    [0.958,0.444,0,{krn: {'116': -0.0319, '117': -0.0319, '98': -0.0319, '121': -0.0319, '118': -0.0319, '119': -0.0319}}],
-    [0.639,0.444,0,{krn: {'116': -0.0319, '117': -0.0319, '98': -0.0319, '121': -0.0319, '118': -0.0319, '119': -0.0319}}],
-    [0.575,0.444,0,{krn: {'101': 0.0319, '111': 0.0319, '120': -0.0319, '100': 0.0319, '99': 0.0319, '113': 0.0319, '118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}}],
-
-    [0.639,0.444,0.194,{krn: {'101': 0.0319, '111': 0.0319, '120': -0.0319, '100': 0.0319, '99': 0.0319, '113': 0.0319, '118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}}],
-    [0.607,0.444,0.194], [0.474,0.444], [0.454,0.444],
-    [0.447,0.635,0,{krn: {'121': -0.0319, '119': -0.0319}}],
-    [0.639,0.444,0,{krn: {'119': -0.0319}}],
-    [0.607,0.444,0,{ic: 0.016, krn: {'97': -0.0639, '101': -0.0319, '97': -0.0319, '111': -0.0319, '99': -0.0319}}],
-    [0.831,0.444,0,{ic: 0.016, krn: {'101': -0.0319, '97': -0.0319, '111': -0.0319, '99': -0.0319}}],
-    [0.607,0.444],
-    [0.607,0.444,0.194,{ic: 0.016, krn: {'111': -0.0319, '101': -0.0319, '97': -0.0319, '46': -0.0958, '44': -0.0958}}],
-    [0.511,0.444], [0.575,0.444,0,{ic: 0.0319, lig: {'45': 124}}],
-    [1.15,0.444,0,{ic: 0.0319}], [0.575,0.694], [0.575,0.694], [0.575,0.694]
-  ]
-};
-
-/***************************************************************************/
-
-/*
- *  Implement image-based fonts for fallback method
- */
-jsMath.Img = {
-  
-  // font sizes available
-  fonts: [50, 60, 70, 85, 100, 120, 144, 173, 207, 249, 298, 358, 430],
-    
-  // em widths for the various font size directories
-  w: {'50': 6.9, '60': 8.3, '70': 9.7, '85': 11.8, '100': 13.9,
-      '120': 16.7, '144': 20.0, '173': 24.0, '207': 28.8, '249': 34.6,
-      '298': 41.4, '358': 49.8, '430': 59.8},
-        
-  best: 4,     // index of best font size in the fonts list    
-  update: {},  // fonts to update (see UpdateFonts below)
-  factor: 1,   // factor by which to shrink images (for better printing)
-  loaded: 0,   // image fonts are loaded
-
-  // add characters to be drawn using images
-  SetFont: function (change) {
-    for (var font in change) {
-      if (!this.update[font]) {this.update[font] = []}
-      this.update[font] = this.update[font].concat(change[font]);
-    }
-  },
-
-  /*
-   *  Called by the exta-font definition files to add an image font
-   *  into the mix
-   */
-  AddFont: function (size,def) {
-    if (!jsMath.Img[size]) {jsMath.Img[size] = {}};
-    jsMath.Add(jsMath.Img[size],def);
-  },
-    
-  /*
-   *  Update font(s) to use image data rather than native fonts
-   *  It looks in the jsMath.Img.update array to find the names
-   *  of the fonts to udpate, and the arrays of character codes
-   *  to set (or 'all' to change every character);
-   */
-  UpdateFonts: function () {
-    var change = this.update; if (!this.loaded) return;
-    for (var font in change) {
-      for (var i = 0; i < change[font].length; i++) {
-        var c = change[font][i];
-        if (c == 'all') {for (c in jsMath.TeX[font]) {jsMath.TeX[font][c].img = {}}}
-          else {jsMath.TeX[font][c].img = {}}
-      }
-    }
-    this.update = {};
-  },
-  
-  /*
-   *  Find the font size that best fits our current font
-   *  (this is the directory name for the img files used
-   *  in some fallback modes).
-   */
-  BestSize: function () {
-    var w = jsMath.em * this.factor;
-    var m = this.w[this.fonts[0]];
-    for (var i = 1; i < this.fonts.length; i++) {
-      if (w < (this.w[this.fonts[i]] + 2*m) / 3) {return i-1}
-      m = this.w[this.fonts[i]];
-    }
-    return i-1;
-  },
-
-  /*
-   *  Get the scaling factor for the image fonts
-   */
-  Scale: function () {
-    if (!this.loaded) return;
-    this.best = this.BestSize();
-    this.em = jsMath.Img.w[this.fonts[this.best]];
-    this.scale = (jsMath.em/this.em);
-    if (Math.abs(this.scale - 1) < .12) {this.scale = 1}
-  },
-
-  /*
-   *  Get URL to directory for given font and size, based on the
-   *  user's alpha/plain setting
-   */
-  URL: function (name,size,C) {
-    var type = (jsMath.Controls.cookie.alpha) ? '/alpha/': '/plain/';
-    if (C == null) {C = "def.js"} else {C = 'char'+C+'.png'}
-    if (size != "") {size += '/'}
-    return this.root+name+type+size+C;
-  },
-
-  /*
-   *  Laod the data for an image font
-   */
-  LoadFont: function (name) {
-    if (!this.loaded) this.Init();
-    jsMath.Setup.Script(this.URL(name,""));
-  },
-  
-  /*
-   *  Setup for print mode, and create the hex code table
-   */
-  Init: function () {
-    if (jsMath.Controls.cookie.print || jsMath.Controls.cookie.stayhires) {
-      jsMath.Controls.cookie.print = jsMath.Controls.cookie.stayhires;
-      this.factor *= 3;
-      if (!jsMath.Controls.isLocalCookie || !jsMath.Global.isLocal) {jsMath.Controls.SetCookie(0)}
-      if (jsMath.Browser.alphaPrintBug) {jsMath.Controls.cookie.alpha = 0}
-    }
-    var codes = '0123456789ABCDEF';
-    this.HexCode = [];
-    for (var i = 0; i < 128; i++) {
-      var h = Math.floor(i/16); var l = i - 16*h;
-      this.HexCode[i] = codes.charAt(h)+codes.charAt(l);
-    }
-    this.loaded = 1;
-  }
-  
-};
-
-/***************************************************************************/
-
-/*
- *  jsMath.HTML handles creation of most of the HTML needed for
- *  presenting mathematics in HTML pages.
- */
-
-jsMath.HTML = {
-  
-  /*
-   *  Produce a string version of a measurement in ems,
-   *  showing only a limited number of digits, and 
-   *  using 0 when the value is near zero.
-   */
-  Em: function (m) {
-    var n = 5; if (m < 0) {n++}
-    if (Math.abs(m) < .000001) {m = 0}
-    var s = String(m); s = s.replace(/(\.\d\d\d).+/,'$1');
-    return s+'em'
-  },
-
-  /*
-   *  Create a horizontal space of width w
-   */
-  Spacer: function (w) {
-    if (w == 0) {return ''};
-    return jsMath.Browser.msieSpaceFix+'<span class="spacer" style="margin-left:'+this.Em(w)+'"></span>';
-  },
-  
-  /*
-   *  Create a blank rectangle of the given size
-   *  If the height is small, it is converted to pixels so that it
-   *  will not disappear at small font sizes.
-   */
-  
-  Blank: function (w,h,d,isRule) {
-    var backspace = ''; var style = ''
-    if (isRule) {
-      style += 'border-left:'+this.Em(w)+' solid;';
-      if (jsMath.Browser.widthAddsBorder) {w = 0};
-    }
-    if (w == 0) {
-      if (jsMath.Browser.blankWidthBug) {
-        if (jsMath.Browser.quirks) {
-          style += 'width:1px;';
-          backspace = '<span class="spacer" style="margin-right:-1px"></span>'
-        } else if (!isRule) {
-          style += 'width:1px;margin-right:-1px;';
-        }
-      }
-    } else {style += 'width:'+this.Em(w)+';'}
-    if (d == null) {d = 0}
-    if (h) {
-      var H = this.Em(h+d);
-      if (isRule && h*jsMath.em <= 1.5) {H = "1.5px"; h = 1.5/jsMath.em}
-      style += 'height:'+H+';';
-    }
-    if (jsMath.Browser.mozInlineBlockBug) {d = -h}
-    if (jsMath.Browser.msieBorderBug && !isRule) {d -= jsMath.d}
-    if (d) {style += 'vertical-align:'+this.Em(-d)}
-    return backspace+'<span class="blank" style="'+style+'"></span>';
-  },
-
-  /*
-   *  Create a rule line for fractions, etc.
-   */
-  Rule: function (w,h) {
-    if (h == null) {h = jsMath.TeX.default_rule_thickness}
-    return this.Blank(w,h,0,1);
-  },
-  
-  /*
-   *  Add a <SPAN> tag to activate a specific CSS class
-   */
-  Class: function (tclass,html) {
-    return '<span class="'+tclass+'">'+html+'</span>';
-  },
-  
-  /*
-   *  Use a <SPAN> to place some HTML at a specific position.
-   *  (This can be replaced by the ones below to overcome
-   *   some browser-specific bugs.)
-   */
-  Place: function (html,x,y) {
-    if (Math.abs(x) < .0001) {x = 0}
-    if (Math.abs(y) < .0001) {y = 0}
-    if (x || y) {
-      var span = '<span style="position: relative;';
-      if (x) {span += ' margin-left:'+this.Em(x)+';'}
-      if (y) {span += ' top:'+this.Em(-y)+';'}
-      html = span + '">' + html + '</span>';
-    }
-    return html;
-  },
-  
-  /*
-   *  For MSIE on Windows, backspacing must be done in a separate
-   *  <SPAN>, otherwise the contents will be clipped.  Netscape
-   *  also doesn't combine vertical and horizontal spacing well.
-   *  Here the x and y positioning are done in separate <SPAN> tags
-   */
-  PlaceSeparateSkips: function (html,x,y,mw,Mw,w) {
-    if (Math.abs(x) < .0001) {x = 0}
-    if (Math.abs(y) < .0001) {y = 0}
-    if (y) {
-      var lw = 0; var rw = 0; var width = "";
-      if (mw != null) {
-        rw = Mw - w; lw = mw;
-        width = ' width:'+this.Em(Mw-mw)+';';
-      }
-      html = 
-        this.Spacer(lw-rw) +
-        '<span style="position: relative; '
-            + 'top:'+this.Em(-y)+';'
-            + 'left:'+this.Em(rw)+';'
-            + width + '">' +
-          this.Spacer(-lw) +
-          html +
-          this.Spacer(rw) +
-        '</span>'
-    }
-    if (x) {html = this.Spacer(x) + html}
-    return html;
-  },
-  
-  /*
-   *  Place a SPAN with absolute coordinates
-   */
-  PlaceAbsolute: function (html,x,y,mw,Mw,w) {
-    if (Math.abs(x) < .0001) {x = 0}
-    if (Math.abs(y) < .0001) {y = 0}
-    var leftSpace = ""; var rightSpace = ""; var width = "";
-    if (jsMath.Browser.msieRelativeClipBug && mw != null) {
-      leftSpace  = this.Spacer(-mw); x += mw;
-      rightSpace = this.Spacer(Mw-w);
-    }
-    if (jsMath.Browser.operaAbsoluteWidthBug) {width = " width: "+this.Em(w+2)}
-    html =
-      '<span style="position:absolute; left:'+this.Em(x)+'; '
-            + 'top:'+this.Em(y)+';'+width+'">' +
-        leftSpace + html + rightSpace +
-        '&nbsp;' + //  space normalizes line height in script styles
-      '</span>';
-    return html;
-  },
-
-  Absolute: function(html,w,h,d,y) {
-    if (y != "none") {
-      if (Math.abs(y) < .0001) {y = 0}
-      html = '<span style="position:absolute; '
-               + 'top:'+jsMath.HTML.Em(y)+'; left:0em;">'
-               + html + '&nbsp;' // space normalizes line height in script styles
-             + '</span>';
-    }
-    if (d == "none") {d = 0}
-    html += this.Blank(w,h-d,d);
-    if (jsMath.Browser.msieAbsoluteBug) {           // for MSIE (Mac)
-      html = '<span style="position:relative;">' + html + '</span>';
-    }
-    html = '<span style="position:relative;'
-         +   jsMath.Browser.msieInlineBlockFix
-         + '">' + html + '</span>';
-    return html;
-  }
-
-};
-
-
-/***************************************************************************/
-
-/*
- *  jsMath.Box handles TeX's math boxes and jsMath's equivalent of hboxes.
- */
-
-jsMath.Box = function (format,text,w,h,d) {
-  if (d == null) {d = jsMath.d}
-  this.type = 'typeset';
-  this.w = w; this.h = h; this.d = d; this.bh = h; this.bd = d;
-  this.x = 0; this.y = 0; this.mw = 0; this.Mw = w;
-  this.html = text; this.format = format;
-};
-
-
-jsMath.Add(jsMath.Box,{
-  
-  defaultH: 0, // default height for characters with none specified
-
-  /*
-   *  An empty box
-   */
-  Null: function () {return new jsMath.Box('null','',0,0,0)},
-
-  /*
-   *  A box containing only text whose class and style haven't been added
-   *  yet (so that we can combine ones with the same styles).  It gets
-   *  the text dimensions, if needed.  (In general, this has been
-   *  replaced by TeX() below, but is still used in fallback mode.)
-   */
-  Text: function (text,tclass,style,size,a,d) {
-    var html = jsMath.Typeset.AddClass(tclass,text);
-        html = jsMath.Typeset.AddStyle(style,size,html);
-    var BB = jsMath.EmBoxFor(html); var TeX = jsMath.Typeset.TeX(style,size);
-    var bd = ((tclass == 'cmsy10' || tclass == 'cmex10')? BB.h-TeX.h: TeX.d*BB.h/TeX.hd);
-    var box = new jsMath.Box('text',text,BB.w,BB.h-bd,bd);
-    box.style = style; box.size = size; box.tclass = tclass;
-    if (d != null) {box.d = d*TeX.scale} else {box.d = 0}
-    if (a == null || a == 1) {box.h = .9*TeX.M_height}
-      else {box.h = 1.1*TeX.x_height + TeX.scale*a}
-    return box;
-  },
-
-  /*
-   *  Produce a box containing a given TeX character from a given font.
-   *  The box is a text box (like the ones above), so that characters from
-   *  the same font can be combined.
-   */
-  TeX: function (C,font,style,size) {
-    var c = jsMath.TeX[font][C];
-    if (c.d == null) {c.d = 0}; if (c.h == null) {c.h = 0}
-    if (c.img != null && c.c != '') this.TeXIMG(font,C,jsMath.Typeset.StyleSize(style,size));
-    var scale = jsMath.Typeset.TeX(style,size).scale;
-    var h = c.h + jsMath.TeX[font].dh
-    var box = new jsMath.Box('text',c.c,c.w*scale,h*scale,c.d*scale);
-    box.style = style; box.size = size;
-    if (c.tclass) {
-      box.tclass = c.tclass;
-      if (c.img) {box.bh = c.img.bh; box.bd = c.img.bd}
-            else {box.bh = scale*jsMath.h; box.bd = scale*jsMath.d}
-    } else {
-      box.tclass = font;
-      box.bh = scale*jsMath.TeX[font].h;
-      box.bd = scale*jsMath.TeX[font].d;
-      if (jsMath.Browser.msieFontBug && box.html.match(/&#/)) {
-        // hack to avoid font changing back to the default
-        // font when a unicode reference is not followed
-        // by a letter or number
-        box.html += '<span style="display:none">x</span>';
-      }
-    }
-    return box;
-  },
-
-  /*
-   *  In fallback modes, handle the fact that we don't have the
-   *  sizes of the characters precomputed
-   */
-  TeXfallback: function (C,font,style,size) {
-    var c = jsMath.TeX[font][C]; if (!c.tclass) {c.tclass = font}
-    if (c.img != null) {return this.TeXnonfallback(C,font,style,size)}
-    if (c.h != null && c.a == null) {c.a = c.h-1.1*jsMath.TeX.x_height}
-    var a = c.a; var d = c.d; // avoid Firefox warnings
-    var box = this.Text(c.c,c.tclass,style,size,a,d);
-    var scale = jsMath.Typeset.TeX(style,size).scale;
-    if (c.bh != null) {
-      box.bh = c.bh*scale;
-      box.bd = c.bd*scale;
-    } else {
-      var h = box.bd+box.bh;
-      var html = jsMath.Typeset.AddClass(box.tclass,box.html);
-          html = jsMath.Typeset.AddStyle(style,size,html);
-      box.bd = jsMath.EmBoxFor(html+jsMath.HTML.Blank(1,h)).h - h;
-      box.bh = h - box.bd;
-      if (scale == 1) {c.bh = box.bh; c.bd = box.bd}
-    }
-    if (jsMath.msieFontBug && box.html.match(/&#/))
-      {box.html += '<span style="display:none">x</span>'}
-    return box;
-  },
-
-  /*
-   *  Set the character's string to the appropriate image file
-   */
-  TeXIMG: function (font,C,size) {
-    var c = jsMath.TeX[font][C];
-    if (c.img.size != null && c.img.size == size &&
-        c.img.best != null && c.img.best == jsMath.Img.best) return;
-    var mustScale = (jsMath.Img.scale != 1);
-    var id = jsMath.Img.best + size - 4;
-    if (id < 0) {id = 0; mustScale = 1} else
-    if (id >= jsMath.Img.fonts.length) {id = jsMath.Img.fonts.length-1; mustScale = 1}
-    var imgFont = jsMath.Img[jsMath.Img.fonts[id]];
-    var img = imgFont[font][C];
-    var scale = 1/jsMath.Img.w[jsMath.Img.fonts[id]];
-    if (id != jsMath.Img.best + size - 4) {
-      if (c.w != null) {scale = c.w/img[0]} else {
-        scale *= jsMath.Img.fonts[size]/jsMath.Img.fonts[4]
-              *  jsMath.Img.fonts[jsMath.Img.best]/jsMath.Img.fonts[id];
-      }
-    }
-    var w = img[0]*scale; var h = img[1]*scale; var d = -img[2]*scale; var v;
-    var wadjust = (c.w == null || Math.abs(c.w-w) < .01)? "" : " margin-right:"+jsMath.HTML.Em(c.w-w)+';';
-    var resize = ""; C = jsMath.Img.HexCode[C];
-    if (!mustScale && !jsMath.Controls.cookie.scaleImg) {
-      if (2*w < h || (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha))
-         {resize = "height:"+(img[1]*jsMath.Browser.imgScale)+'px;'}
-      resize += " width:"+(img[0]*jsMath.Browser.imgScale)+'px;'
-      v = -img[2]+'px';
-    } else {
-      if (2*w < h || (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha))
-         {resize = "height:"+jsMath.HTML.Em(h*jsMath.Browser.imgScale)+';'}
-      resize += " width:"+jsMath.HTML.Em(w*jsMath.Browser.imgScale)+';'
-      v = jsMath.HTML.Em(d);
-    }
-    var vadjust = (Math.abs(d) < .01 && !jsMath.Browser.valignBug)?
-                         "": " vertical-align:"+v+';';
-    var URL = jsMath.Img.URL(font,jsMath.Img.fonts[id],C);
-    if (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha) {
-      c.c = '<img src="'+jsMath.blank+'" '
-               + 'style="'+jsMath.Browser.msieCenterBugFix
-               + resize + vadjust + wadjust
-               + ' filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + "'"
-               + URL + "', sizingMethod='scale'" + ');" />';
-    } else {
-      c.c = '<img src="'+URL+'" style="'+jsMath.Browser.msieCenterBugFix
-                  + resize + vadjust + wadjust + '" />';
-    }
-    c.tclass = "normal";
-    c.img.bh = h+d; c.img.bd = -d;
-    c.img.size = size; c.img.best = jsMath.Img.best;
-  },
-  
-  /*
-   *  A box containing a spacer of a specific width
-   */
-  Space: function (w) {
-    return new jsMath.Box('html',jsMath.HTML.Spacer(w),w,0,0);
-  },
-
-  /*
-   *  A box containing a horizontal rule
-   */
-  Rule: function (w,h) {
-    if (h == null) {h = jsMath.TeX.default_rule_thickness}
-    var html = jsMath.HTML.Rule(w,h);
-    return new jsMath.Box('html',html,w,h,0);
-  },
-
-  /*
-   *  Get a character from a TeX font, and make sure that it has
-   *  its metrics specified.
-   */
-  GetChar: function (code,font) {
-    var c = jsMath.TeX[font][code];
-    if (c.img != null) {this.TeXIMG(font,code,4)}
-    if (c.tclass == null) {c.tclass = font}
-    if (!c.computedW) {
-      c.w = jsMath.EmBoxFor(jsMath.Typeset.AddClass(c.tclass,c.c)).w;
-      if (c.h == null) {c.h = jsMath.Box.defaultH}; if (c.d == null) {c.d = 0}
-      c.computedW = 1;
-    }
-    return c;
-  },
-  
-  /*
-   *  Locate the TeX delimiter character that matches a given height.
-   *  Return the character, font, style and actual height used.
-   */
-  DelimBestFit: function (H,c,font,style) {
-    if (c == 0 && font == 0) return null;
-    var C; var h; font = jsMath.TeX.fam[font];
-    var isSS = (style.charAt(1) == 'S');
-    var isS  = (style.charAt(0) == 'S');
-    while (c != null) {
-      C = jsMath.TeX[font][c];
-      if (C.h == null) {C.h = jsMath.Box.defaultH}; if (C.d == null) {C.d = 0}
-      h = C.h+C.d;
-      if (C.delim) {return [c,font,'',H]}
-      if (isSS && .5*h >= H) {return [c,font,'SS',.5*h]}
-      if (isS  && .7*h >= H) {return [c,font,'S',.7*h]}
-      if (h >= H || C.n == null) {return [c,font,'T',h]}
-      c = C.n;
-    }
-    return null;
-  },
-  
-  /*
-   *  Create the HTML needed for a stretchable delimiter of a given height,
-   *  either centered or not.  This version uses relative placement (i.e.,
-   *  backspaces, not line-breaks).  This works with more browsers, but
-   *  if the font size changes, the backspacing may not be right, so the
-   *  delimiters may become jagged.
-   */
-  DelimExtendRelative: function (H,c,font,a,nocenter) {
-    var C = jsMath.TeX[font][c];
-    var top = this.GetChar(C.delim.top? C.delim.top: C.delim.rep,font);
-    var rep = this.GetChar(C.delim.rep,font);
-    var bot = this.GetChar(C.delim.bot? C.delim.bot: C.delim.rep,font);
-    var ext = jsMath.Typeset.AddClass(rep.tclass,rep.c);
-    var w = rep.w; var h = rep.h+rep.d
-    var y; var Y; var html; var dx; var i; var n;
-    if (C.delim.mid) {// braces
-      var mid = this.GetChar(C.delim.mid,font);
-      n = Math.ceil((H-(top.h+top.d)-(mid.h+mid.d)-(bot.h+bot.d))/(2*(rep.h+rep.d)));
-      H = 2*n*(rep.h+rep.d) + (top.h+top.d) + (mid.h+mid.d) + (bot.h+bot.d);
-      if (nocenter) {y = 0} else {y = H/2+a}; Y = y;
-      html = jsMath.HTML.Place(jsMath.Typeset.AddClass(top.tclass,top.c),0,y-top.h)
-           + jsMath.HTML.Place(jsMath.Typeset.AddClass(bot.tclass,bot.c),-(top.w+bot.w)/2,y-(H-bot.d))
-           + jsMath.HTML.Place(jsMath.Typeset.AddClass(mid.tclass,mid.c),-(bot.w+mid.w)/2,y-(H+mid.h-mid.d)/2);
-      dx = (w-mid.w)/2; if (Math.abs(dx) < .0001) {dx = 0}
-      if (dx) {html += jsMath.HTML.Spacer(dx)}
-      y -= top.h+top.d + rep.h;
-      for (i = 0; i < n; i++) {html += jsMath.HTML.Place(ext,-w,y-i*h)}
-      y -= H/2 - rep.h/2;
-      for (i = 0; i < n; i++) {html += jsMath.HTML.Place(ext,-w,y-i*h)}
-    } else {// everything else
-      n = Math.ceil((H - (top.h+top.d) - (bot.h+bot.d))/(rep.h+rep.d));
-      // make sure two-headed arrows have an extender
-      if (top.h+top.d < .9*(rep.h+rep.d)) {n = Math.max(1,n)}
-      H = n*(rep.h+rep.d) + (top.h+top.d) + (bot.h+bot.d);
-      if (nocenter) {y = 0} else {y = H/2+a}; Y = y;
-      html = jsMath.HTML.Place(jsMath.Typeset.AddClass(top.tclass,top.c),0,y-top.h)
-      dx = (w-top.w)/2; if (Math.abs(dx) < .0001) {dx = 0}
-      if (dx) {html += jsMath.HTML.Spacer(dx)}
-      y -= top.h+top.d + rep.h;
-      for (i = 0; i < n; i++) {html += jsMath.HTML.Place(ext,-w,y-i*h)}
-      html += jsMath.HTML.Place(jsMath.Typeset.AddClass(bot.tclass,bot.c),-(w+bot.w)/2,Y-(H-bot.d));
-    }
-    if (nocenter) {h = top.h} else {h = H/2+a}
-    var box = new jsMath.Box('html',html,rep.w,h,H-h);
-    box.bh = jsMath.TeX[font].h; box.bd = jsMath.TeX[font].d;
-    return box;
-  },
-
-  /*
-   *  Create the HTML needed for a stretchable delimiter of a given height,
-   *  either centered or not.  This version uses absolute placement (i.e.,
-   *  line-breaks, not backspacing).  This gives more reliable results,
-   *  but doesn't work with all browsers.
-   */
-  DelimExtendAbsolute: function (H,c,font,a,nocenter) {
-    var Font = jsMath.TeX[font];
-    var C = Font[c]; var html;
-    var top = this.GetChar(C.delim.top? C.delim.top: C.delim.rep,font);
-    var rep = this.GetChar(C.delim.rep,font);
-    var bot = this.GetChar(C.delim.bot? C.delim.bot: C.delim.rep,font);
-    var n; var h; var y; var ext; var i;
-    
-    if (C.delim.mid) {// braces
-      var mid = this.GetChar(C.delim.mid,font);
-      n = Math.ceil((H-(top.h+top.d)-(mid.h+mid.d-.05)-(bot.h+bot.d-.05))/(2*(rep.h+rep.d-.05)));
-      H = 2*n*(rep.h+rep.d-.05) + (top.h+top.d) + (mid.h+mid.d-.05) + (bot.h+bot.d-.05);
-      
-      html = jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(top.tclass,top.c),0,0);
-      h = rep.h+rep.d - .05; y = top.d-.05 + rep.h;
-      ext = jsMath.Typeset.AddClass(font,rep.c)
-      for (i = 0; i < n; i++) {html += jsMath.HTML.PlaceAbsolute(ext,0,y+i*h)}
-      html += jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(mid.tclass,mid.c),0,y+n*h-rep.h+mid.h);
-      y += n*h + mid.h+mid.d - .05;
-      for (i = 0; i < n; i++) {html += jsMath.HTML.PlaceAbsolute(ext,0,y+i*h)}
-      html += jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(bot.tclass,bot.c),0,y+n*h-rep.h+bot.h);
-    } else {// all others
-      n = Math.ceil((H - (top.h+top.d) - (bot.h+bot.d-.05))/(rep.h+rep.d-.05));
-      H = n*(rep.h+rep.d-.05) + (top.h+top.d) + (bot.h+bot.d-.05);
-
-      html = jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(top.tclass,top.c),0,0);
-      h = rep.h+rep.d-.05; y = top.d-.05 + rep.h;
-      ext = jsMath.Typeset.AddClass(rep.tclass,rep.c);
-      for (i = 0; i < n; i++) {html += jsMath.HTML.PlaceAbsolute(ext,0,y+i*h)}
-      html += jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(bot.tclass,bot.c),0,y+n*h-rep.h+bot.h);
-    }
-    
-    var w = top.w;
-    if (nocenter) {h = top.h; y = 0} else {h = H/2 + a; y = h - top.h}
-    html = jsMath.HTML.Absolute(html,w,Font.h,"none",-y);
-    var box = new jsMath.Box('html',html,rep.w,h,H-h);
-    box.bh = jsMath.TeX[font].h; box.bd = jsMath.TeX[font].d;
-    return box;
-  },
-  
-  /*
-   *  Get the HTML for a given delimiter of a given height.
-   *  It will return either a single character, if one exists, or the
-   *  more complex HTML needed for a stretchable delimiter.
-   */
-  Delimiter: function (H,delim,style,nocenter) {
-    var size = 4;  //### pass this?
-    var TeX = jsMath.Typeset.TeX(style,size);
-    if (!delim) {return this.Space(TeX.nulldelimiterspace)}
-    var CFSH = this.DelimBestFit(H,delim[2],delim[1],style);
-    if (CFSH == null || CFSH[3] < H) 
-      {CFSH = this.DelimBestFit(H,delim[4],delim[3],style)}
-    if (CFSH == null) {return this.Space(TeX.nulldelimiterspace)}
-    if (CFSH[2] == '')
-      {return this.DelimExtend(H,CFSH[0],CFSH[1],TeX.axis_height,nocenter)}
-    var box = jsMath.Box.TeX(CFSH[0],CFSH[1],CFSH[2],size).Styled();
-    if (nocenter) {box.y = -jsMath.TeX[CFSH[1]].dh*TeX.scale}
-      else {box.y = -((box.h+box.d)/2 - box.d - TeX.axis_height)}
-    if (Math.abs(box.y) < .0001) {box.y = 0}
-    if (box.y) {box = jsMath.Box.SetList([box],CFSH[2],size)}
-    return box;
-  },
-  
-  /*
-   *  Get a character by its TeX charcode, and make sure its width
-   *  is specified.
-   */
-  GetCharCode: function (code) {
-    var font = jsMath.TeX.fam[code[0]];
-    var Font = jsMath.TeX[font];
-    var c = Font[code[1]];
-    if (c.img != null) {this.TeXIMG(font,code[1],4)}
-    if (c.w == null) {c.w = jsMath.EmBoxFor(jsMath.Typeset.AddClass(c.tclass,c.c)).w}
-    if (c.font == null) {c.font = font}
-    return c;
-  },
-
-  /*
-   * Add the class to the html, and use the font if there isn't one
-   * specified already
-   */
-
-  AddClass: function (tclass,html,font) {
-    if (tclass == null) {tclass = font}
-    return jsMath.Typeset.AddClass(tclass,html);
-  },
-  
-  /*
-   *  Create the HTML for an alignment (e.g., array or matrix)
-   *  Since the widths are not really accurate (they are based on pixel
-   *  widths not the sub-pixel widths of the actual characters), there
-   *  is some drift involved.  We lay out the table column by column
-   *  to help reduce the problem.
-   *  
-   *  ###  still need to allow users to specify row and column attributes,
-   *       and do things like \span and \multispan  ###
-   */
-  LayoutRelative: function (size,table,align,cspacing,rspacing,vspace,useStrut,addWidth) {
-    if (align == null) {align = []}
-    if (cspacing == null) {cspacing = []}
-    if (rspacing == null) {rspacing = []}
-    if (useStrut == null) {useStrut = 1}
-    if (addWidth == null) {addWidth = 1}
-    
-    // get row and column maximum dimensions
-    var scale = jsMath.sizes[size]/100;
-    var W = []; var H = []; var D = [];
-    var unset = -1000; var bh = unset; var bd = unset;
-    var i; var j; var row;
-    for (i = 0; i < table.length; i++) {
-      if (rspacing[i] == null) {rspacing[i] = 0}
-      row = table[i];
-      H[i] = useStrut*jsMath.h*scale; D[i] = useStrut*jsMath.d*scale;
-      for (j = 0; j < row.length; j++) {
-        row[j] = row[j].Remeasured();
-        if (row[j].h > H[i]) {H[i] = row[j].h}
-        if (row[j].d > D[i]) {D[i] = row[j].d}
-        if (j >= W.length) {W[j] = row[j].w}
-        else if (row[j].w > W[j]) {W[j] = row[j].w}
-        if (row[j].bh > bh) {bh = row[j].bh}
-        if (row[j].bd > bd) {bd = row[j].bd}
-      }
-    }
-    if (rspacing[table.length] == null) {rspacing[table.length] = 0}
-    if (bh == unset) {bh = 0}; if (bd == unset) {bd = 0}
-
-    // lay out the columns
-    var HD = useStrut*(jsMath.hd-.01)*scale;
-    var dy = (vspace || 1) * scale/6;
-    var html = ''; var pW = 0; var cW = 0;
-    var w; var h; var y;
-    var box; var mlist; var entry;
-    for (j = 0; j < W.length; j++) {
-      mlist = []; y = -H[0]-rspacing[0]; pW = 0;
-      for (i = 0; i < table.length; i++) {
-        entry = table[i][j];
-        if (entry && entry.format != 'null') {
-          if (align[j] == 'l') {w = 0} else
-          if (align[j] == 'r') {w = W[j] - entry.w} else
-            {w = (W[j] - entry.w)/2}
-          entry.x = w - pW; pW = entry.w + w; entry.y = y;
-          mlist[mlist.length] = entry;
-        }
-        if (i+1 < table.length) {y -= Math.max(HD,D[i]+H[i+1]) + dy + rspacing[i+1]}
-      }
-      if (cspacing[j] == null) cspacing[j] = scale;
-      if (mlist.length > 0) {
-        box = jsMath.Box.SetList(mlist,'T',size);
-        html += jsMath.HTML.Place(box.html,cW,0);
-        cW = W[j] - box.w + cspacing[j];
-      } else {cW += cspacing[j]}
-    }
-    
-    // get the full width and height
-    w = -cspacing[W.length-1]; y = (H.length-1)*dy + rspacing[0];
-    for (i = 0; i < W.length; i++) {w += W[i] + cspacing[i]}
-    for (i = 0; i < H.length; i++) {y += Math.max(HD,H[i]+D[i]) + rspacing[i+1]}
-    h = y/2 + jsMath.TeX.axis_height; var d = y-h;
-    
-    // adjust the final row width, and vcenter the table
-    //   (add 1/6em at each side for the \,)
-    html += jsMath.HTML.Spacer(cW-cspacing[W.length-1] + addWidth*scale/6);
-    html = jsMath.HTML.Place(html,addWidth*scale/6,h);
-    box = new jsMath.Box('html',html,w+addWidth*scale/3,h,d);
-    box.bh = bh; box.bd = bd;
-    return box;
-  },
-
-  /*
-   *  Create the HTML for an alignment (e.g., array or matrix)
-   *  Use absolute position for elements in the array.
-   *  
-   *  ###  still need to allow users to specify row and column attributes,
-   *       and do things like \span and \multispan  ###
-   */
-  LayoutAbsolute: function (size,table,align,cspacing,rspacing,vspace,useStrut,addWidth) {
-    if (align == null) {align = []}
-    if (cspacing == null) {cspacing = []}
-    if (rspacing == null) {rspacing = []}
-    if (useStrut == null) {useStrut = 1}
-    if (addWidth == null) {addWidth = 1}
-    
-    // get row and column maximum dimensions
-    var scale = jsMath.sizes[size]/100;
-    var HD = useStrut*(jsMath.hd-.01)*scale;
-    var dy = (vspace || 1) * scale/6;
-    var W = []; var H = []; var D = [];
-    var w = 0; var h; var x; var y;
-    var i; var j; var row;
-    for (i = 0; i < table.length; i++) {
-      if (rspacing[i] == null) {rspacing[i] = 0}
-      row = table[i];
-      H[i] = useStrut*jsMath.h*scale; D[i] = useStrut*jsMath.d*scale;
-      for (j = 0; j < row.length; j++) {
-        row[j] = row[j].Remeasured();
-        if (row[j].h > H[i]) {H[i] = row[j].h}
-        if (row[j].d > D[i]) {D[i] = row[j].d}
-        if (j >= W.length) {W[j] = row[j].w}
-        else if (row[j].w > W[j]) {W[j] = row[j].w}
-      }
-    }
-    if (rspacing[table.length] == null) {rspacing[table.length] = 0}
-
-    // get the height and depth of the centered table
-    y = (H.length-1)*dy + rspacing[0];
-    for (i = 0; i < H.length; i++) {y += Math.max(HD,H[i]+D[i]) + rspacing[i+1]}
-    h = y/2 + jsMath.TeX.axis_height; var d = y - h;
-
-    // lay out the columns
-    var html = ''; var entry; w = addWidth*scale/6;
-    for (j = 0; j < W.length; j++) {
-      y = H[0]-h + rspacing[0];
-      for (i = 0; i < table.length; i++) {
-        entry = table[i][j];
-        if (entry && entry.format != 'null') {
-          if (align[j] && align[j] == 'l') {x = 0} else
-          if (align[j] && align[j] == 'r') {x = W[j] - entry.w} else
-            {x = (W[j] - entry.w)/2}
-          html += jsMath.HTML.PlaceAbsolute(entry.html,w+x,
-                    y-Math.max(0,entry.bh-jsMath.h*scale),
-                    entry.mw,entry.Mw,entry.w);
-        }
-        if (i+1 < table.length) {y += Math.max(HD,D[i]+H[i+1]) + dy + rspacing[i+1]}
-      }
-      if (cspacing[j] == null) cspacing[j] = scale;
-      w += W[j] + cspacing[j];
-    }
-    
-    // get the full width
-    w = -cspacing[W.length-1]+addWidth*scale/3;
-    for (i = 0; i < W.length; i++) {w += W[i] + cspacing[i]}
-
-    html = jsMath.HTML.Spacer(addWidth*scale/6)+html+jsMath.HTML.Spacer(addWidth*scale/6);
-    if (jsMath.Browser.spanHeightVaries) {y = h-jsMath.h} else {y = 0}
-    html = jsMath.HTML.Absolute(html,w,h+d,d,y);
-    var box = new jsMath.Box('html',html,w+addWidth*scale/3,h,d);
-    return box;
-  },
-
-  /*
-   *  Look for math within \hbox and other non-math text
-   */
-  InternalMath: function (text,size) {
-    if (!jsMath.safeHBoxes) {text = text.replace(/@\(([^)]*)\)/g,'<$1>')}
-    if (!text.match(/\$|\\\(/)) {return this.Text(text,'normal','T',size).Styled()}
-
-    var i = 0; var k = 0; var c; var match = '';
-    var mlist = []; var parse;
-    while (i < text.length) {
-      c = text.charAt(i++);
-      if (c == '$') {
-        if (match == '$') {
-          parse = jsMath.Parse(text.slice(k,i-1),null,size);
-          if (parse.error) {
-            mlist[mlist.length] = this.Text(parse.error,'error','T',size,1,.2);
-          } else {
-            parse.Atomize();
-            mlist[mlist.length] = parse.mlist.Typeset('T',size).Styled();
-          }
-          match = ''; k = i;
-        } else {
-          mlist[mlist.length] = this.Text(text.slice(k,i-1),'normal','T',size,1,.2);
-          match = '$'; k = i;
-        }
-      } else if (c == '\\') {
-        c = text.charAt(i++);
-        if (c == '(' && match == '') {
-          mlist[mlist.length] = this.Text(text.slice(k,i-2),'normal','T',size,1,.2);
-          match = ')'; k = i;
-        } else if (c == ')' && match == ')') {
-          parse = jsMath.Parse(text.slice(k,i-2),null,size);
-          if (parse.error) {
-            mlist[mlist.length] = this.Text(parse.error,'error','T',size,1,.2);
-          } else {
-            parse.Atomize();
-            mlist[mlist.length] = parse.mlist.Typeset('T',size).Styled();
-          }
-          match = ''; k = i;
-        }
-      }
-    }
-    mlist[mlist.length] = this.Text(text.slice(k),'normal','T',size,1,.2);
-    return this.SetList(mlist,'T',size);
-  },
-  
-  /*
-   *  Convert an abitrary box to a typeset box.  I.e., make an
-   *  HTML version of the contents of the box, at its desired (x,y)
-   *  position.
-   */
-  Set: function (box,style,size,addstyle) {
-    if (box && box.type) {
-      if (box.type == 'typeset') {return box}
-      if (box.type == 'mlist') {
-        box.mlist.Atomize(style,size);
-        return box.mlist.Typeset(style,size);
-      }
-      if (box.type == 'text') {
-        box = this.Text(box.text,box.tclass,style,size,box.ascend||null,box.descend||null);
-        if (addstyle != 0) {box.Styled()}
-        return box;
-      }
-      box = this.TeX(box.c,box.font,style,size);
-      if (addstyle != 0) {box.Styled()}
-      return box;
-    }
-    return jsMath.Box.Null();
-  },
-
-  /*
-   *  Convert a list of boxes to a single typeset box.  I.e., finalize
-   *  the HTML for the list of boxes, properly spaced and positioned.
-   */
-  SetList: function (boxes,style,size) {
-    var mlist = []; var box;
-    for (var i = 0; i < boxes.length; i++) {
-      box = boxes[i];
-      if (box.type == 'typeset') {box = jsMath.mItem.Typeset(box)}
-      mlist[mlist.length] = box;
-    }
-    var typeset = new jsMath.Typeset(mlist);
-    return typeset.Typeset(style,size);
-  }
-
-});
-
-
-jsMath.Package(jsMath.Box,{
-
-  /*
-   *  Add the class and style to a text box (i.e., finalize the
-   *  unpositioned HTML for the box).
-   */
-  Styled: function () {
-    if (this.format == 'text') {
-      this.html = jsMath.Typeset.AddClass(this.tclass,this.html);
-      this.html = jsMath.Typeset.AddStyle(this.style,this.size,this.html);
-      delete this.tclass; delete this.style;
-      this.format = 'html';
-    }
-    return this;
-  },
-  
-  /*
-   *  Recompute the box width to make it more accurate.
-   */
-  Remeasured: function () {
-    if (this.w > 0) {this.w = jsMath.EmBoxFor(this.html).w}
-    return this;
+jsMath.Script.Uncompress = function (data) {
+  for (var k = 0; k <  data.length; k++) {
+    var d = data[k]; var n = d.length;
+    for (var i = 0; i < n; i++) {if (typeof(d[i]) == 'number') {d[i] = d[d[i]]}}
+    data[k] = d.join('');
   }
-
-});
-
-
-/***************************************************************************/
-
-/*
- *  mItems are the building blocks of mLists (math lists) used to
- *  store the information about a mathematical expression.  These are
- *  basically the items listed in the TeXbook in Appendix G (plus some
- *  minor extensions).
- */
-jsMath.mItem = function (type,def) {
-  this.type = type;
-  jsMath.Add(this,def);
-}
-
-jsMath.Add(jsMath.mItem,{
-
-  /*
-   *  A general atom (given a nucleus for the atom)
-   */
-  Atom: function (type,nucleus) {
-    return new jsMath.mItem(type,{atom: 1, nuc: nucleus});
-  },
-
-  /*
-   *  An atom whose nucleus is a piece of text, in a given
-   *  class, with a given additional height and depth
-   */
-  TextAtom: function (type,text,tclass,a,d) {
-    var atom = new jsMath.mItem(type,{
-      atom: 1,
-      nuc: {
-        type: 'text',
-        text: text,
-        tclass: tclass
-      }
-    });
-    if (a != null) {atom.nuc.ascend = a}
-    if (d != null) {atom.nuc.descend = d}
-    return atom;
-  },
-  
-  /*
-   *  An atom whose nucleus is a TeX character in a specific font
-   */
-  TeXAtom: function (type,c,font) {
-    return new jsMath.mItem(type,{
-      atom: 1,
-      nuc: {
-        type: 'TeX',
-        c: c,
-        font: font
-      }
-    });
-  },
-
-  /*
-   *  A generalized fraction atom, with given delimiters, rule
-   *  thickness, and a numerator and denominator.
-   */
-  Fraction: function (name,num,den,thickness,left,right) {
-    return new jsMath.mItem('fraction',{
-      from: name, num: num, den: den,
-      thickness: thickness, left: left, right: right
-    });
-  },
-
-  /*
-   *  An atom that inserts some glue
-   */
-  Space: function (w) {return new jsMath.mItem('space',{w: w})},
-
-  /*
-   *  An atom that contains a typeset box (like an hbox or vbox)
-   */
-  Typeset: function (box) {return new jsMath.mItem('ord',{atom:1, nuc: box})},
-  
-  /*
-   *  An atom that contains some finished HTML (acts like a typeset box)
-   */
-  HTML: function (html) {return new jsMath.mItem('html',{html: html})}
-
-});
-
-/***************************************************************************/
-
-/*
- *  mLists are lists of mItems, and encode the contents of
- *  mathematical expressions and sub-expressions.  They act as
- *  the expression "stack" as the mathematics is parsed, and
- *  contain some state information, like the position of the
- *  most recent open paren and \over command, and the current font.
- */
-jsMath.mList = function (list,font,size,style) {
-  if (list) {this.mlist = list} else {this.mlist = []}
-  if (style == null) {style = 'T'}; if (size == null) {size = 4}
-  this.data = {openI: null, overI: null, overF: null,
-               font: font, size: size, style: style};
-  this.init = {size: size, style: style};
-}
-
-jsMath.Package(jsMath.mList,{
-
-  /*
-   *  Add an mItem to the list
-   */
-  Add: function (box) {return (this.mlist[this.mlist.length] = box)},
-  
-  /*
-   *  Get the i-th mItem from the list
-   */
-  Get: function (i) {return this.mlist[i]},
-  
-  /*
-   *  Get the length of the list
-   */
-  Length: function() {return this.mlist.length},
-
-  /*
-   *  Get the tail mItem of the list
-   */
-  Last: function () {
-    if (this.mlist.length == 0) {return null}
-    return this.mlist[this.mlist.length-1]
-  },
-
-  /*
-   *  Get a sublist of an mList
-   */
-  Range: function (i,j) {
-    if (j == null) {j = this.mlist.length}
-    return new jsMath.mList(this.mlist.slice(i,j+1));
-  },
-
-  /*
-   *  Remove a range of mItems from the list.
-   */
-  Delete: function (i,j) {
-    if (j == null) {j = i}
-    if (this.mlist.splice) {this.mlist.splice(i,j-i+1)} else {
-      var mlist = [];
-      for (var k = 0; k < this.mlist.length; k++)
-        {if (k < i || k > j) {mlist[mlist.length] = this.mlist[k]}}
-      this.mlist = mlist;
-    }
-  },
-
-  /*
-   *  Add an open brace and maintain the stack information
-   *  about the previous open brace so we can recover it
-   *  when this one os closed.
-   */
-  Open: function (left) {
-    var box = this.Add(new jsMath.mItem('boundary',{data: this.data}));
-    var olddata = this.data;
-    this.data = {}; for (var i in olddata) {this.data[i] = olddata[i]}
-    delete this.data.overI; delete this.data.overF;
-    this.data.openI = this.mlist.length-1;
-    if (left != null) {box.left = left}
-    return box;
-  },
-
-  /*
-   *  Attempt to close a brace.  Recover the stack information
-   *  about previous open braces and \over commands.  If there was an
-   *  \over (or \above, etc) in this set of braces, create a fraction
-   *  atom from the two halves, otherwise create an inner or ord
-   *  from the contents of the braces.
-   *  Remove the braced material from the list and add the newly
-   *  created atom (the fraction, inner or ord).
-   */
-  Close: function (right) {
-    if (right != null) {right = new jsMath.mItem('boundary',{right: right})}
-    var atom; var open = this.data.openI;
-    var over = this.data.overI; var from = this.data.overF;
-    this.data  = this.mlist[open].data;
-    if (over) {
-      atom = jsMath.mItem.Fraction(from.name,
-        {type: 'mlist', mlist: this.Range(open+1,over-1)},
-        {type: 'mlist', mlist: this.Range(over)},
-        from.thickness,from.left,from.right);
-      if (right) {
-        var mlist = new jsMath.mList([this.mlist[open],atom,right]);
-        atom = jsMath.mItem.Atom('inner',{type: 'mlist', mlist: mlist});
-      }
-    } else {
-      var openI = open+1; if (right) {this.Add(right); openI--}
-      atom = jsMath.mItem.Atom((right)?'inner':'ord',
-                  {type: 'mlist', mlist: this.Range(openI)});
-    }
-    this.Delete(open,this.Length());
-    return this.Add(atom);
-  },
-
-  /*
-   *  Create a generalized fraction from an mlist that
-   *  contains an \over (or \above, etc).
-   */
-  Over: function () {
-    var over = this.data.overI; var from = this.data.overF;
-    var atom = jsMath.mItem.Fraction(from.name,
-      {type: 'mlist', mlist: this.Range(open+1,over-1)},
-      {type: 'mlist', mlist: this.Range(over)},
-      from.thickness,from.left,from.right);
-    this.mlist = [atom];
-  },
-
-  /*
-   *  Take a raw mList (that has been produced by parsing some TeX
-   *  expression), and perform the modifications outlined in
-   *  Appendix G of the TeXbook.  
-   */
-  Atomize: function (style,size) {
-    var mitem; var prev = '';
-    this.style = style; this.size = size;
-    for (var i = 0; i < this.mlist.length; i++) {
-      mitem = this.mlist[i]; mitem.delta = 0;
-      if (mitem.type == 'choice') 
-        {this.mlist = this.Atomize.choice(this.style,mitem,i,this.mlist); i--}
-      else if (this.Atomize[mitem.type]) {
-        var f = this.Atomize[mitem.type]; // Opera needs separate name
-        f(this.style,this.size,mitem,prev,this,i);
-      }
-      prev = mitem;
-    }
-    if (mitem && mitem.type == 'bin') {mitem.type = 'ord'}
-    if (this.mlist.length >= 2 && mitem.type == 'boundary' &&
-        this.mlist[0].type == 'boundary') {this.AddDelimiters(style,size)}
-  },
-
-  /*
-   *  For a list that has boundary delimiters as its first and last
-   *  entries, we replace the boundary atoms by open and close
-   *  atoms whose nuclii are the specified delimiters properly sized
-   *  for the contents of the list.  (Rule 19)
-   */
-  AddDelimiters: function(style,size) {
-    var unset = -10000; var h = unset; var d = unset;
-    for (var i = 0; i < this.mlist.length; i++) {
-      var mitem = this.mlist[i];
-      if (mitem.atom || mitem.type == 'box') {
-        h = Math.max(h,mitem.nuc.h+mitem.nuc.y);
-        d = Math.max(d,mitem.nuc.d-mitem.nuc.y);
-      }
-    }
-    var TeX = jsMath.TeX; var a = jsMath.Typeset.TeX(style,size).axis_height;
-    var delta = Math.max(h-a,d+a);
-    var H =  Math.max(Math.floor(TeX.integer*delta/500)*TeX.delimiterfactor,
-                      TeX.integer*(2*delta-TeX.delimitershortfall))/TeX.integer;
-    var left = this.mlist[0]; var right = this.mlist[this.mlist.length-1];
-    left.nuc = jsMath.Box.Delimiter(H,left.left,style);
-    right.nuc = jsMath.Box.Delimiter(H,right.right,style);
-    left.type = 'open'; left.atom = 1; delete left.left;
-    right.type = 'close'; right.atom = 1; delete right.right;
-  },
-  
-  /*
-   *  Typeset a math list to produce final HTML for the list.
-   */
-  Typeset: function (style,size) {
-    var typeset = new jsMath.Typeset(this.mlist);
-    return typeset.Typeset(style,size);
-  }
-
-});
-
-
-/*
- *  These routines implement the main rules given in Appendix G of the
- *  TeXbook
- */
-
-jsMath.Add(jsMath.mList.prototype.Atomize,{
-
-  /*
-   *  Handle \displaystyle, \textstyle, etc.
-   */
-  style: function (style,size,mitem,prev,mlist) {
-    mlist.style = mitem.style;
-  },
-  
-  /*
-   *  Handle \tiny, \small, etc.
-   */
-  size: function (style,size,mitem,prev,mlist) {
-    mlist.size = mitem.size;
-  },
-  
-  /*
-   *  Create empty boxes of the proper sizes for the various
-   *  phantom-type commands
-   */
-  phantom: function (style,size,mitem) {
-    var box = mitem.nuc = jsMath.Box.Set(mitem.phantom,style,size);
-    if (mitem.h) {box.Remeasured(); box.html = jsMath.HTML.Spacer(box.w)}
-      else {box.html = '', box.w = box.Mw = box.mw = 0;}
-    if (!mitem.v) {box.h = box.d = 0}
-    box.bd = box.bh = 0;
-    delete mitem.phantom;
-    mitem.type = 'box';
-  },
-  
-  /*
-   *  Create a box of zero height and depth containing the
-   *  contents of the atom
-   */
-  smash: function (style,size,mitem) {
-    var box = mitem.nuc = jsMath.Box.Set(mitem.smash,style,size).Remeasured();
-    box.h = box.d = 0;
-    delete mitem.smash;
-    mitem.type = 'box';
-  },
-
-  /*
-   *  Move a box up or down vertically
-   */
-  raise: function (style,size,mitem) {
-    mitem.nuc = jsMath.Box.Set(mitem.nuc,style,size);
-    var y = mitem.raise;
-    mitem.nuc.html =
-      jsMath.HTML.Place(mitem.nuc.html,0,y,mitem.nuc.mw,mitem.nuc.Mw,mitem.nuc.w);
-    mitem.nuc.h += y; mitem.nuc.d -= y;
-    mitem.type = 'ord'; mitem.atom = 1;
-  },
-
-  /*
-   *  Hide the size of a box so that it laps to the left or right, or
-   *  up or down.
-   */
-  lap: function (style,size,mitem) {
-    var box = jsMath.Box.Set(mitem.nuc,style,size).Remeasured();
-    var mlist = [box];
-    if (mitem.lap == 'llap') {box.x = -box.w} else
-    if (mitem.lap == 'rlap') {mlist[1] = jsMath.mItem.Space(-box.w)} else
-    if (mitem.lap == 'ulap') {box.y = box.d; box.h = box.d = 0} else
-    if (mitem.lap == 'dlap') {box.y = -box.h; box.h = box.d = 0}
-    mitem.nuc = jsMath.Box.SetList(mlist,style,size);
-    if (mitem.lap == 'ulap' || mitem.lap == 'dlap') {mitem.nuc.h = mitem.nuc.d = 0}
-    mitem.type = 'box'; delete mitem.atom;
-  },
-
-  /*
-   *  Handle a Bin atom. (Rule 5)
-   */
-  bin: function (style,size,mitem,prev) {
-    if (prev && prev.type) {
-      var type  = prev.type;
-      if (type == 'bin' || type == 'op' || type == 'rel' ||
-          type == 'open' || type == 'punct' || type == '' ||
-          (type == 'boundary' && prev.left != '')) {mitem.type = 'ord'}
-    } else {mitem.type = 'ord'}
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle a Rel atom.  (Rule 6)
-   */
-  rel: function (style,size,mitem,prev) {
-    if (prev.type && prev.type == 'bin') {prev.type = 'ord'}
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle a Close atom.  (Rule 6)
-   */
-  close: function (style,size,mitem,prev) {
-    if (prev.type && prev.type == 'bin') {prev.type = 'ord'}
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle a Punct atom.  (Rule 6)
-   */
-  punct: function (style,size,mitem,prev) {
-    if (prev.type && prev.type == 'bin') {prev.type = 'ord'}
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle an Open atom.  (Rule 7)
-   */
-  open: function (style,size,mitem) {
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle an Inner atom.  (Rule 7)
-   */
-  inner: function (style,size,mitem) {
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle a Vcent atom.  (Rule 8)
-   */
-  vcenter: function (style,size,mitem) {
-    var box = jsMath.Box.Set(mitem.nuc,style,size);
-    var TeX = jsMath.Typeset.TeX(style,size);
-    box.y = TeX.axis_height - (box.h-box.d)/2;
-    mitem.nuc = box; mitem.type = 'ord';
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle an Over atom.  (Rule 9)
-   */
-  overline: function (style,size,mitem) {
-    var TeX = jsMath.Typeset.TeX(style,size);
-    var box = jsMath.Box.Set(mitem.nuc,jsMath.Typeset.PrimeStyle(style),size).Remeasured();
-    var t = TeX.default_rule_thickness;
-    var rule = jsMath.Box.Rule(box.w,t);
-    rule.x = -rule.w; rule.y = box.h + 3*t;
-    mitem.nuc = jsMath.Box.SetList([box,rule],style,size);
-    mitem.nuc.h += t;
-    mitem.type = 'ord';
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle an Under atom.  (Rule 10)
-   */
-  underline: function (style,size,mitem) {
-    var TeX = jsMath.Typeset.TeX(style,size);
-    var box = jsMath.Box.Set(mitem.nuc,jsMath.Typeset.PrimeStyle(style),size).Remeasured();
-    var t = TeX.default_rule_thickness;
-    var rule = jsMath.Box.Rule(box.w,t);
-    rule.x = -rule.w; rule.y = -box.d - 3*t - t;
-    mitem.nuc = jsMath.Box.SetList([box,rule],style,size);
-    mitem.nuc.d += t;
-    mitem.type = 'ord';
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle a Rad atom.  (Rule 11 plus stuff for \root..\of)
-   */
-  radical: function (style,size,mitem) {
-    var TeX = jsMath.Typeset.TeX(style,size);
-    var Cp = jsMath.Typeset.PrimeStyle(style);
-    var box = jsMath.Box.Set(mitem.nuc,Cp,size).Remeasured();
-    var t = TeX.default_rule_thickness;
-    var p = t; if (style == 'D' || style == "D'") {p = TeX.x_height}
-    var r = t + p/4; 
-    var surd = jsMath.Box.Delimiter(box.h+box.d+r+t,[0,2,0x70,3,0x70],style,1);
-//    if (surd.h > 0) {t = surd.h} // thickness of rule is height of surd character
-    if (surd.d > box.h+box.d+r) {r = (r+surd.d-box.h-box.d)/2}
-    surd.y = box.h+r;
-    var rule = jsMath.Box.Rule(box.w,t);
-    rule.y = surd.y-t/2; rule.h += 3*t/2; box.x = -box.w;
-    var Cr = jsMath.Typeset.UpStyle(jsMath.Typeset.UpStyle(style));
-    var root = jsMath.Box.Set(mitem.root || null,Cr,size).Remeasured();
-    if (mitem.root) {
-      root.y = .55*(box.h+box.d+3*t+r)-box.d;
-      surd.x = Math.max(root.w-(11/18)*surd.w,0);
-      rule.x = (7/18)*surd.w;
-      root.x = -(root.w+rule.x);
-    }
-    mitem.nuc = jsMath.Box.SetList([surd,root,rule,box],style,size);
-    mitem.type = 'ord';
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle an Acc atom.  (Rule 12)
-   */
-  accent: function (style,size,mitem) {
-    var TeX = jsMath.Typeset.TeX(style,size);
-    var Cp = jsMath.Typeset.PrimeStyle(style);
-    var box = jsMath.Box.Set(mitem.nuc,Cp,size);
-    var u = box.w; var s; var Font; var ic = 0;
-    if (mitem.nuc.type == 'TeX') {
-      Font = jsMath.TeX[mitem.nuc.font];
-      if (Font[mitem.nuc.c].krn && Font.skewchar)
-        {s = Font[mitem.nuc.c].krn[Font.skewchar]}
-      ic = Font[mitem.nuc.c].ic; if (ic == null) {ic = 0}
-    }
-    if (s == null) {s = 0}
-    
-    var c = mitem.accent[2];
-    var font = jsMath.TeX.fam[mitem.accent[1]]; Font = jsMath.TeX[font];
-    while (Font[c].n && Font[Font[c].n].w <= u) {c = Font[c].n}
-    
-    var delta = Math.min(box.h,TeX.x_height);
-    if (mitem.nuc.type == 'TeX') {
-      var nitem = jsMath.mItem.Atom('ord',mitem.nuc);
-      nitem.sup = mitem.sup; nitem.sub = mitem.sub; nitem.delta = 0;
-      jsMath.mList.prototype.Atomize.SupSub(style,size,nitem);
-      delta += (nitem.nuc.h - box.h);
-      box = mitem.nuc = nitem.nuc;
-      delete mitem.sup; delete mitem.sub;
-    }
-    var acc = jsMath.Box.TeX(c,font,style,size);
-    acc.y = box.h - delta; acc.x = -box.w + s + (u-acc.w)/2;
-    if (jsMath.Browser.msieAccentBug) 
-      {acc.html += jsMath.HTML.Spacer(.1); acc.w += .1; acc.Mw += .1}
-    if (Font[c].ic || ic) {acc.x += (ic - (Font[c].ic||0)) * TeX.scale}
-
-    mitem.nuc = jsMath.Box.SetList([box,acc],style,size);
-    if (mitem.nuc.w != box.w) {
-      var space = jsMath.mItem.Space(box.w-mitem.nuc.w);
-      mitem.nuc = jsMath.Box.SetList([mitem.nuc,space],style,size);
-    }
-    mitem.type = 'ord';
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle an Op atom.  (Rules 13 and 13a)
-   */
-  op: function (style,size,mitem) {
-    var TeX = jsMath.Typeset.TeX(style,size); var box;
-    mitem.delta = 0; var isD = (style.charAt(0) == 'D');
-    if (mitem.limits == null && isD) {mitem.limits = 1}
-
-    if (mitem.nuc.type == 'TeX') {
-      var C = jsMath.TeX[mitem.nuc.font][mitem.nuc.c];
-      if (isD && C.n) {mitem.nuc.c = C.n; C = jsMath.TeX[mitem.nuc.font][C.n]}
-      box = mitem.nuc = jsMath.Box.Set(mitem.nuc,style,size);
-      if (C.ic) {
-        mitem.delta = C.ic * TeX.scale;
-        if (mitem.limits || !mitem.sub || jsMath.Browser.msieIntegralBug) {
-          box = mitem.nuc = jsMath.Box.SetList([box,jsMath.mItem.Space(mitem.delta)],style,size);
-        }
-      }
-      box.y = -((box.h+box.d)/2 - box.d - TeX.axis_height);
-      if (Math.abs(box.y) < .0001) {box.y = 0}
-    }
-    
-    if (!box) {box = mitem.nuc = jsMath.Box.Set(mitem.nuc,style,size).Remeasured()}
-    if (mitem.limits) {
-      var W = box.w; var x = box.w;
-      var mlist = [box]; var dh = 0; var dd = 0;
-      if (mitem.sup) {
-        var sup = jsMath.Box.Set(mitem.sup,jsMath.Typeset.UpStyle(style),size).Remeasured();
-        sup.x = ((box.w-sup.w)/2 + mitem.delta/2) - x; dh = TeX.big_op_spacing5;
-        W = Math.max(W,sup.w); x += sup.x + sup.w;
-        sup.y = box.h+sup.d + box.y +
-                    Math.max(TeX.big_op_spacing1,TeX.big_op_spacing3-sup.d);
-        mlist[mlist.length] = sup; delete mitem.sup;
-      }
-      if (mitem.sub) {
-        var sub = jsMath.Box.Set(mitem.sub,jsMath.Typeset.DownStyle(style),size).Remeasured();
-        sub.x = ((box.w-sub.w)/2 - mitem.delta/2) - x; dd = TeX.big_op_spacing5;
-        W = Math.max(W,sub.w); x += sub.x + sub.w;
-        sub.y = -box.d-sub.h + box.y -
-                   Math.max(TeX.big_op_spacing2,TeX.big_op_spacing4-sub.h);
-        mlist[mlist.length] = sub; delete mitem.sub;
-      }
-      if (W > box.w) {box.x = (W-box.w)/2; x += box.x}
-      if (x < W) {mlist[mlist.length] = jsMath.mItem.Space(W-x)}
-      mitem.nuc = jsMath.Box.SetList(mlist,style,size);
-      mitem.nuc.h += dh; mitem.nuc.d += dd;
-    } else {
-      if (jsMath.Browser.msieIntegralBug && mitem.sub && C && C.ic) 
-        {mitem.nuc = jsMath.Box.SetList([box,jsMath.Box.Space(-C.ic*TeX.scale)],style,size)}
-      else if (box.y) {mitem.nuc = jsMath.Box.SetList([box],style,size)}
-      jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-    }
-  },
-
-  /*
-   *  Handle an Ord atom.  (Rule 14)
-   */
-  ord: function (style,size,mitem,prev,mList,i) {
-    if (mitem.nuc.type == 'TeX' && !mitem.sup && !mitem.sub) {
-      var nitem = mList.mlist[i+1];
-      if (nitem && nitem.atom && nitem.type &&
-          (nitem.type == 'ord' || nitem.type == 'op' || nitem.type == 'bin' ||
-           nitem.type == 'rel' || nitem.type == 'open' ||
-           nitem.type == 'close' || nitem.type == 'punct')) {
-        if (nitem.nuc.type == 'TeX' && nitem.nuc.font == mitem.nuc.font) {
-          mitem.textsymbol = 1;
-          var krn = jsMath.TeX[mitem.nuc.font][mitem.nuc.c].krn;
-          krn *= jsMath.Typeset.TeX(style,size).scale;
-          if (krn && krn[nitem.nuc.c]) {
-            for (var k = mList.mlist.length-1; k > i; k--)
-              {mList.mlist[k+1] = mList.mlist[k]}
-            mList.mlist[i+1] = jsMath.mItem.Space(krn[nitem.nuc.c]);
-          }
-        }
-      }
-    }
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle a generalized fraction.  (Rules 15 to 15e)
-   */
-  fraction: function (style,size,mitem) {
-    var TeX = jsMath.Typeset.TeX(style,size); var t = 0;
-    if (mitem.thickness != null) {t = mitem.thickness}
-    else if (mitem.from.match(/over/)) {t = TeX.default_rule_thickness}
-    var isD = (style.charAt(0) == 'D');
-    var Cn = (style == 'D')? 'T': (style == "D'")? "T'": jsMath.Typeset.UpStyle(style);
-    var Cd = (isD)? "T'": jsMath.Typeset.DownStyle(style);
-    var num = jsMath.Box.Set(mitem.num,Cn,size).Remeasured();
-    var den = jsMath.Box.Set(mitem.den,Cd,size).Remeasured();
-
-    var u; var v; var w; var p; var r;
-    var H = (isD)? TeX.delim1 : TeX.delim2;
-    var mlist = [jsMath.Box.Delimiter(H,mitem.left,style)]
-    var right = jsMath.Box.Delimiter(H,mitem.right,style);
-
-    if (num.w < den.w) {
-      num.x = (den.w-num.w)/2;
-      den.x = -(num.w + num.x);
-      w = den.w; mlist[1] = num; mlist[2] = den;
-    } else {
-      den.x = (num.w-den.w)/2;
-      num.x = -(den.w + den.x);
-      w = num.w; mlist[1] = den; mlist[2] = num;
-    }
-    if (isD) {u = TeX.num1; v = TeX.denom1} else {
-      u = (t != 0)? TeX.num2: TeX.num3;
-      v = TeX.denom2;
-    }
-    if (t == 0) {// atop
-      p = (isD)? 7*TeX.default_rule_thickness: 3*TeX.default_rule_thickness;
-      r = (u - num.d) - (den.h - v);
-      if (r < p) {u += (p-r)/2; v += (p-r)/2}
-    } else {// over
-      p = (isD)? 3*t: t; var a = TeX.axis_height;
-      r = (u-num.d)-(a+t/2); if (r < p) {u += p-r}
-      r = (a-t/2)-(den.h-v); if (r < p) {v += p-r}
-      var rule = jsMath.Box.Rule(w,t); rule.x = -w; rule.y = a - t/2;
-      mlist[mlist.length] = rule;
-    }
-    num.y = u; den.y = -v;
-
-    mlist[mlist.length] = right;
-    mitem.nuc = jsMath.Box.SetList(mlist,style,size);
-    mitem.type = 'ord'; mitem.atom = 1;
-    delete mitem.num; delete mitem.den;
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Add subscripts and superscripts.  (Rules 17-18f)
-   */
-  SupSub: function (style,size,mitem) {
-    var TeX = jsMath.Typeset.TeX(style,size);
-    var nuc = mitem.nuc;
-    var box = mitem.nuc = jsMath.Box.Set(mitem.nuc,style,size,0);
-    if (box.format == 'null') 
-      {box = mitem.nuc = jsMath.Box.Text('','normal',style,size)}
-
-    if (nuc.type == 'TeX') {
-      if (!mitem.textsymbol) {
-        var C = jsMath.TeX[nuc.font][nuc.c];
-        if (C.ic) {
-          mitem.delta = C.ic * TeX.scale;
-          if (!mitem.sub) {
-            box = mitem.nuc = jsMath.Box.SetList([box,jsMath.Box.Space(mitem.delta)],style,size);
-            mitem.delta = 0;
-          }
-        }
-      } else {mitem.delta = 0}
-    }
-
-    if (!mitem.sup && !mitem.sub) return;
-    mitem.nuc.Styled();
-    
-    var Cd = jsMath.Typeset.DownStyle(style);
-    var Cu = jsMath.Typeset.UpStyle(style);
-    var q = jsMath.Typeset.TeX(Cu,size).sup_drop;
-    var r = jsMath.Typeset.TeX(Cd,size).sub_drop;
-    var u = 0; var v = 0; var p;
-    if (nuc.type && nuc.type != 'text' && nuc.type != 'TeX' && nuc.type != 'null')
-      {u = box.h - q; v = box.d + r}
-
-    if (mitem.sub) {
-      var sub = jsMath.Box.Set(mitem.sub,Cd,size);
-      sub = jsMath.Box.SetList([sub,jsMath.mItem.Space(TeX.scriptspace)],style,size);
-    }
-
-    if (!mitem.sup) {
-      sub.y = -Math.max(v,TeX.sub1,sub.h-(4/5)*jsMath.Typeset.TeX(Cd,size).x_height);
-      mitem.nuc = jsMath.Box.SetList([box,sub],style,size).Styled(); delete mitem.sub;
-      return;
-    }
-
-    var sup = jsMath.Box.Set(mitem.sup,Cu,size);
-    sup = jsMath.Box.SetList([sup,jsMath.mItem.Space(TeX.scriptspace)],style,size);
-    if (style == 'D') {p = TeX.sup1}
-    else if (style.charAt(style.length-1) == "'") {p = TeX.sup3}
-    else {p = TeX.sup2}
-    u = Math.max(u,p,sup.d+jsMath.Typeset.TeX(Cu,size).x_height/4);
-
-    if (!mitem.sub) {
-      sup.y = u;
-      mitem.nuc = jsMath.Box.SetList([box,sup],style,size); delete mitem.sup;
-      return;
-    }
-
-    v = Math.max(v,jsMath.Typeset.TeX(Cd,size).sub2);
-    var t = TeX.default_rule_thickness;
-    if ((u-sup.d) - (sub.h -v) < 4*t) {
-      v = 4*t + sub.h - (u-sup.d);
-      p = (4/5)*TeX.x_height - (u-sup.d);
-      if (p > 0) {u += p; v -= p}
-    }
-    sup.Remeasured(); sub.Remeasured();
-    sup.y = u; sub.y = -v; sup.x = mitem.delta;
-    if (sup.w+sup.x > sub.w)
-      {sup.x -= sub.w; mitem.nuc = jsMath.Box.SetList([box,sub,sup],style,size)} else
-      {sub.x -= (sup.w+sup.x); mitem.nuc = jsMath.Box.SetList([box,sup,sub],style,size)}
-
-    delete mitem.sup; delete mitem.sub;
-  }
-
-});
-
-
-/***************************************************************************/
-
-/*
- *  The Typeset object handles most of the TeX-specific processing
- */
-
-jsMath.Typeset = function (mlist) {
-  this.type = 'typeset';
-  this.mlist = mlist;
-}
-
-jsMath.Add(jsMath.Typeset,{
-
-  /*
-   *  The "C-uparrow" style table (TeXbook, p. 441)
-   */
-  upStyle: {
-    D: "S", T: "S",  "D'": "S'", "T'": "S'",
-    S: "SS",  SS: "SS",  "S'": "SS'", "SS'": "SS'"
-  },
-
-  /*
-   *  The "C-downarrow" style table (TeXbook, p. 441)
-   */
-  downStyle: {
-    D: "S'", T: "S'",  "D'": "S'", "T'": "S'",
-    S: "SS'",  SS: "SS'",  "S'": "SS'", "SS'": "SS'"
-  },
-
-  /*
-   *  Get the various styles given the current style
-   *  (see TeXbook, p. 441)
-   */
-  UpStyle: function (style) {return this.upStyle[style]},
-  DownStyle: function (style) {return this.downStyle[style]},
-  PrimeStyle: function (style) {
-    if (style.charAt(style.length-1) == "'") {return style}
-    return style + "'"
-  },
-
-  /*
-   *  A value scaled to the appropriate size for scripts
-   */
-  StyleValue: function (style,v) {
-    if (style == "S" || style == "S'")   {return .7*v}
-    if (style == "SS" || style == "SS'") {return .5*v}
-    return v;
-  },
-  
-  /*
-   *  Return the size associated with a given style and size
-   */
-  StyleSize: function (style,size) {
-    if      (style == "S" || style == "S'")   {size = Math.max(0,size-2)}
-    else if (style == "SS" || style == "SS'") {size = Math.max(0,size-4)}
-    return size;
-  },
-
-  /*
-   *  Return the font parameter table for the given style
-   */
-  TeX: function (style,size) {
-    if      (style == "S" || style == "S'")   {size = Math.max(0,size-2)}
-    else if (style == "SS" || style == "SS'") {size = Math.max(0,size-4)}
-    return jsMath.TeXparams[size];
-  },
-
-
-  /*
-   *  Add the CSS class for the given TeX style
-   */
-  AddStyle: function (style,size,html) {
-    if      (style == "S" || style == "S'")   {size = Math.max(0,size-2)}
-    else if (style == "SS" || style == "SS'") {size = Math.max(0,size-4)}
-    if (size != 4) {html = '<span class="size'+size+'">' + html + '</span>'}
-    return html;
-  },
-
-  /*
-   *  Add the font class, if needed
-   */
-  AddClass: function (tclass,html) {
-    if (tclass != '' && tclass != 'normal') {html = jsMath.HTML.Class(tclass,html)}
-    return html;
-  }
-
-});
-
-
-jsMath.Package(jsMath.Typeset,{
-  
-  /*
-   *  The spacing tables for inter-atom spacing
-   *  (See rule 20, and Chapter 18, p 170)
-   */
-  DTsep: {
-    ord: {op: 1, bin: 2, rel: 3, inner: 1},
-    op:  {ord: 1, op: 1, rel: 3, inner: 1},
-    bin: {ord: 2, op: 2, open: 2, inner: 2},
-    rel: {ord: 3, op: 3, open: 3, inner: 3},
-    open: {},
-    close: {op: 1, bin:2, rel: 3, inner: 1},
-    punct: {ord: 1, op: 1, rel: 1, open: 1, close: 1, punct: 1, inner: 1},
-    inner: {ord: 1, op: 1, bin: 2, rel: 3, open: 1, punct: 1, inner: 1}
-  },
-
-  SSsep: {
-    ord: {op: 1},
-    op:  {ord: 1, op: 1},
-    bin: {},
-    rel: {},
-    open: {},
-    close: {op: 1},
-    punct: {},
-    inner: {op: 1}
-  },
-
-  /*
-   *  The sizes used in the tables above
-   */
-  sepW: ['','thinmuskip','medmuskip','thickmuskip'],
-  
-  
-  /*
-   *  Find the amount of separation to use between two adjacent
-   *  atoms in the given style
-   */
-  GetSeparation: function (l,r,style) {
-    if (l && l.atom && r.atom) {
-      var table = this.DTsep; if (style.charAt(0) == "S") {table = this.SSsep}
-      var row = table[l.type];
-      if (row && row[r.type] != null) {return jsMath.TeX[this.sepW[row[r.type]]]}
-    }
-    return 0;
-  },
-
-  /*
-   *  Typeset an mlist (i.e., turn it into HTML).
-   *  Here, text items of the same class and style are combined
-   *  to reduce the number of <SPAN> tags used (though it is still
-   *  huge).  Spaces are combined, when possible.
-   *  ###  More needs to be done with that.  ###
-   *  The width of the final box is recomputed at the end, since
-   *  the final width is not necessarily the sum of the widths of
-   *  the individual parts (widths are in pixels, but the browsers
-   *  puts pieces together using sub-pixel accuracy).
-   */
-  Typeset: function (style,size) {
-    this.style = style; this.size = size; var unset = -10000
-    this.w = 0; this.mw = 0; this.Mw = 0;
-    this.h = unset; this.d = unset;
-    this.bh = this.h; this.bd = this.d;
-    this.tbuf = ''; this.tx = 0; this.tclass = '';
-    this.cbuf = ''; this.hbuf = ''; this.hx = 0;
-    var mitem = null; var prev; this.x = 0; this.dx = 0;
-
-    for (var i = 0; i < this.mlist.length; i++) {
-      prev = mitem; mitem = this.mlist[i];
-      switch (mitem.type) {
-
-        case 'size':
-          this.FlushClassed();
-          this.size = mitem.size;
-          mitem = prev; // hide this from TeX
-          break;
-
-        case 'style':
-          this.FlushClassed();
-          if (this.style.charAt(this.style.length-1) == "'")
-            {this.style = mitem.style + "'"} else {this.style = mitem.style}
-          mitem = prev; // hide this from TeX
-          break;
-
-        case 'space':
-          if (typeof(mitem.w) == 'object') {
-            if (this.style.charAt(1) == 'S') {mitem.w = .5*mitem.w[0]/18}
-            else if (this.style.charAt(0) == 'S') {mitem.w = .7*mitem.w[0]/18}
-            else {mitem.w = mitem.w[0]/18}
-          }
-          this.dx += mitem.w-0; // mitem.w is sometimes a string?
-          mitem = prev; // hide this from TeX
-          break;
-          
-        case 'html':
-          this.FlushClassed();
-          if (this.hbuf == '') {this.hx = this.x}
-          this.hbuf += mitem.html;
-          mitem = prev; // hide this from TeX
-          break;
-          
-        default:   // atom
-          if (!mitem.atom && mitem.type != 'box') break;
-          mitem.nuc.x += this.dx + this.GetSeparation(prev,mitem,this.style);
-          if (mitem.nuc.x || mitem.nuc.y) mitem.nuc.Styled();
-          this.dx = 0; this.x = this.x + this.w;
-          if (this.x + mitem.nuc.x + mitem.nuc.mw < this.mw) 
-            {this.mw = this.x + mitem.nuc.x + mitem.nuc.mw}
-          if (this.w + mitem.nuc.x + mitem.nuc.Mw > this.Mw)
-            {this.Mw = this.w + mitem.nuc.x + mitem.nuc.Mw}
-          this.w += mitem.nuc.w + mitem.nuc.x;
-          if (mitem.nuc.format == 'text') {
-            if (this.tclass != mitem.nuc.tclass && this.tclass != '') this.FlushText();
-            if (this.tbuf == '' && this.cbuf == '') {this.tx = this.x}
-            this.tbuf += mitem.nuc.html; this.tclass = mitem.nuc.tclass;
-          } else  {
-            this.FlushClassed();
-            if (mitem.nuc.x || mitem.nuc.y) this.Place(mitem.nuc);
-            if (this.hbuf == '') {this.hx = this.x}
-            this.hbuf += mitem.nuc.html;
-          }
-          this.h = Math.max(this.h,mitem.nuc.h+mitem.nuc.y); this.bh = Math.max(this.bh,mitem.nuc.bh);
-          this.d = Math.max(this.d,mitem.nuc.d-mitem.nuc.y); this.bd = Math.max(this.bd,mitem.nuc.bd);
-          break;
-      }
-    }
-
-    this.FlushClassed(); // make sure scaling is included
-    if (this.dx) {
-      this.hbuf += jsMath.HTML.Spacer(this.dx); this.w += this.dx;
-      if (this.w > this.Mw) {this.Mw = this.w}
-      if (this.w < this.mw) {this.mw = this.w}
-    }
-    if (this.hbuf == '') {return jsMath.Box.Null()}
-    if (this.h == unset) {this.h = 0}
-    if (this.d == unset) {this.d = 0}
-    var box = new jsMath.Box('html',this.hbuf,this.w,this.h,this.d);
-    box.bh = this.bh; box.bd = this.bd;
-    box.mw = this.mw; box.Mw = this.Mw;
-    return box;
-  },
-
-  /*
-   *  Add the font to the buffered text and move it to the
-   *  classed-text buffer.
-   */
-  FlushText: function () {
-    if (this.tbuf == '') return;
-    this.cbuf += jsMath.Typeset.AddClass(this.tclass,this.tbuf);
-    this.tbuf = ''; this.tclass = '';
-  },
-
-  /*
-   *  Add the script or scriptscript style to the text and
-   *  move it to the HTML buffer
-   */
-  FlushClassed: function () {
-    this.FlushText();
-    if (this.cbuf == '') return;
-    if (this.hbuf == '') {this.hx = this.tx}
-    this.hbuf += jsMath.Typeset.AddStyle(this.style,this.size,this.cbuf);
-    this.cbuf = '';
-  },
-
-  /*
-   *  Add a <SPAN> to position an item's HTML, and
-   *  adjust the item's height and depth.
-   *  (This may be replaced buy one of the following browser-specific
-   *   versions by Browser.Init().)
-   */
-  Place: function (item) {
-    var html = '<span style="position: relative;';
-    if (item.x) {html += ' margin-left:'+jsMath.HTML.Em(item.x)+';'}
-    if (item.y) {html += ' top:'+jsMath.HTML.Em(-item.y)+';'}
-    item.html = html + '">' + item.html + '</span>';
-    item.h += item.y; item.d -= item.y;
-    item.x = 0; item.y = 0;
-  },
-  
-  /*
-   *  For MSIE on Windows, backspacing must be done in a separate
-   *  <SPAN>, otherwise the contents will be clipped.  Netscape
-   *  also doesn't combine vertical and horizontal spacing well.
-   *  Here, the horizontal and vertical spacing are done separately.
-   */
-
-  PlaceSeparateSkips: function (item) {
-    if (item.y) {
-      var rw = item.Mw - item.w; var lw = item.mw;
-      var W = item.Mw - item.mw;
-      item.html = 
-        jsMath.HTML.Spacer(lw-rw) +
-        '<span style="position: relative; '
-            + 'top:'+jsMath.HTML.Em(-item.y)+';'
-            + 'left:'+jsMath.HTML.Em(rw)+'; width:'+jsMath.HTML.Em(W)+';">' +
-          jsMath.HTML.Spacer(-lw) +
-          item.html +
-          jsMath.HTML.Spacer(rw) + 
-        '</span>'
-    }
-    if (item.x) {item.html = jsMath.HTML.Spacer(item.x) + item.html}
-    item.h += item.y; item.d -= item.y;
-    item.x = 0; item.y = 0;
-  }
-
-});
-
-
-
-/***************************************************************************/
-
-/*
- *  The Parse object handles the parsing of the TeX input string, and creates
- *  the mList to be typeset by the Typeset object above.
- */
-
-jsMath.Parse = function (s,font,size,style) {
-  var parse = new jsMath.Parser(s,font,size,style);
-  parse.Parse();
-  return parse;
-}
-
-jsMath.Parser = function (s,font,size,style) {
-  this.string = s; this.i = 0;
-  this.mlist = new jsMath.mList(null,font,size,style);
+  eval(data.join(''));
 }
 
-jsMath.Package(jsMath.Parser,{
-  
-  // special characters
-  cmd:   '\\',
-  open:  '{',
-  close: '}',
-  
-  // patterns for letters and numbers
-  letter:  /[a-z]/i,
-  number:  /[0-9]/,
-  //  pattern for macros to ^ and _ that should be read with arguments
-  scriptargs: /^((math|text)..|mathcal|[hm]box)$/,
-  
-  //  the \mathchar definitions (see Appendix B of the TeXbook).
-  mathchar: {
-    '!': [5,0,0x21],
-    '(': [4,0,0x28],
-    ')': [5,0,0x29],
-    '*': [2,2,0x03], // \ast
-    '+': [2,0,0x2B],
-    ',': [6,1,0x3B],
-    '-': [2,2,0x00],
-    '.': [0,1,0x3A],
-    '/': [0,1,0x3D],
-    ':': [3,0,0x3A],
-    ';': [6,0,0x3B],
-    '<': [3,1,0x3C],
-    '=': [3,0,0x3D],
-    '>': [3,1,0x3E],
-    '?': [5,0,0x3F],
-    '[': [4,0,0x5B],
-    ']': [5,0,0x5D],
-//  '{': [4,2,0x66],
-//  '}': [5,2,0x67],
-    '|': [0,2,0x6A]
-  },
-
-  //  handle special \catcode characters
-  special: {
-    '~':   'Tilde',
-    '^':   'HandleSuperscript',
-    '_':   'HandleSubscript',
-    ' ':   'Space',
-    '\01': 'Space',
-    "\t":  'Space',
-    "\r":  'Space',
-    "\n":  'Space',
-    "'":   'Prime',
-    '%':   'HandleComment',
-    '&':   'HandleEntry',
-    '#':   'Hash'
-  },
-
-  // the \mathchardef table (see Appendix B of the TeXbook).
-  mathchardef: {
-  // brace parts
-    braceld:      [0,3,0x7A],
-    bracerd:      [0,3,0x7B],
-    bracelu:      [0,3,0x7C],
-    braceru:      [0,3,0x7D],
-
-  // Greek letters
-    alpha:        [0,1,0x0B],
-    beta:         [0,1,0x0C],
-    gamma:        [0,1,0x0D],
-    delta:        [0,1,0x0E],
-    epsilon:      [0,1,0x0F],
-    zeta:         [0,1,0x10],
-    eta:          [0,1,0x11],
-    theta:        [0,1,0x12],
-    iota:         [0,1,0x13],
-    kappa:        [0,1,0x14],
-    lambda:       [0,1,0x15],
-    mu:           [0,1,0x16],
-    nu:           [0,1,0x17],
-    xi:           [0,1,0x18],
-    pi:           [0,1,0x19],
-    rho:          [0,1,0x1A],
-    sigma:        [0,1,0x1B],
-    tau:          [0,1,0x1C],
-    upsilon:      [0,1,0x1D],
-    phi:          [0,1,0x1E],
-    chi:          [0,1,0x1F],
-    psi:          [0,1,0x20],
-    omega:        [0,1,0x21],
-    varepsilon:   [0,1,0x22],
-    vartheta:     [0,1,0x23],
-    varpi:        [0,1,0x24],
-    varrho:       [0,1,0x25],
-    varsigma:     [0,1,0x26],
-    varphi:       [0,1,0x27],
-    
-    Gamma:        [7,0,0x00],
-    Delta:        [7,0,0x01],
-    Theta:        [7,0,0x02],
-    Lambda:       [7,0,0x03],
-    Xi:           [7,0,0x04],
-    Pi:           [7,0,0x05],
-    Sigma:        [7,0,0x06],
-    Upsilon:      [7,0,0x07],
-    Phi:          [7,0,0x08],
-    Psi:          [7,0,0x09],
-    Omega:        [7,0,0x0A],
-
-  // Ord symbols
-    aleph:        [0,2,0x40],
-    imath:        [0,1,0x7B],
-    jmath:        [0,1,0x7C],
-    ell:          [0,1,0x60],
-    wp:           [0,1,0x7D],
-    Re:           [0,2,0x3C],
-    Im:           [0,2,0x3D],
-    partial:      [0,1,0x40],
-    infty:        [0,2,0x31],
-    prime:        [0,2,0x30],
-    emptyset:     [0,2,0x3B],
-    nabla:        [0,2,0x72],
-    surd:         [1,2,0x70],
-    top:          [0,2,0x3E],
-    bot:          [0,2,0x3F],
-    triangle:     [0,2,0x34],
-    forall:       [0,2,0x38],
-    exists:       [0,2,0x39],
-    neg:          [0,2,0x3A],
-    lnot:         [0,2,0x3A],
-    flat:         [0,1,0x5B],
-    natural:      [0,1,0x5C],
-    sharp:        [0,1,0x5D],
-    clubsuit:     [0,2,0x7C],
-    diamondsuit:  [0,2,0x7D],
-    heartsuit:    [0,2,0x7E],
-    spadesuit:    [0,2,0x7F],
-
-  // big ops
-    coprod:      [1,3,0x60],
-    bigvee:      [1,3,0x57],
-    bigwedge:    [1,3,0x56],
-    biguplus:    [1,3,0x55],
-    bigcap:      [1,3,0x54],
-    bigcup:      [1,3,0x53],
-    intop:       [1,3,0x52], 
-    prod:        [1,3,0x51],
-    sum:         [1,3,0x50],
-    bigotimes:   [1,3,0x4E],
-    bigoplus:    [1,3,0x4C],
-    bigodot:     [1,3,0x4A],
-    ointop:      [1,3,0x48],
-    bigsqcup:    [1,3,0x46],
-    smallint:    [1,2,0x73],
-
-  // binary operations
-    triangleleft:      [2,1,0x2F],
-    triangleright:     [2,1,0x2E],
-    bigtriangleup:     [2,2,0x34],
-    bigtriangledown:   [2,2,0x35],
-    wedge:       [2,2,0x5E],
-    land:        [2,2,0x5E],
-    vee:         [2,2,0x5F],
-    lor:         [2,2,0x5F],
-    cap:         [2,2,0x5C],
-    cup:         [2,2,0x5B],
-    ddagger:     [2,2,0x7A],
-    dagger:      [2,2,0x79],
-    sqcap:       [2,2,0x75],
-    sqcup:       [2,2,0x74],
-    uplus:       [2,2,0x5D],
-    amalg:       [2,2,0x71],
-    diamond:     [2,2,0x05],
-    bullet:      [2,2,0x0F],
-    wr:          [2,2,0x6F],
-    div:         [2,2,0x04],
-    odot:        [2,2,0x0C],
-    oslash:      [2,2,0x0B],
-    otimes:      [2,2,0x0A],
-    ominus:      [2,2,0x09],
-    oplus:       [2,2,0x08],
-    mp:          [2,2,0x07],
-    pm:          [2,2,0x06],
-    circ:        [2,2,0x0E],
-    bigcirc:     [2,2,0x0D],
-    setminus:    [2,2,0x6E], // for set difference A\setminus B
-    cdot:        [2,2,0x01],
-    ast:         [2,2,0x03],
-    times:       [2,2,0x02],
-    star:        [2,1,0x3F],
-
-  // Relations
-    propto:      [3,2,0x2F],
-    sqsubseteq:  [3,2,0x76],
-    sqsupseteq:  [3,2,0x77],
-    parallel:    [3,2,0x6B],
-    mid:         [3,2,0x6A],
-    dashv:       [3,2,0x61],
-    vdash:       [3,2,0x60],
-    leq:         [3,2,0x14],
-    le:          [3,2,0x14],
-    geq:         [3,2,0x15],
-    ge:          [3,2,0x15],
-    lt:          [3,1,0x3C],  // extra since < and > are hard
-    gt:          [3,1,0x3E],  //   to get in HTML
-    succ:        [3,2,0x1F],
-    prec:        [3,2,0x1E],
-    approx:      [3,2,0x19],
-    succeq:      [3,2,0x17],
-    preceq:      [3,2,0x16],
-    supset:      [3,2,0x1B],
-    subset:      [3,2,0x1A],
-    supseteq:    [3,2,0x13],
-    subseteq:    [3,2,0x12],
-    'in':        [3,2,0x32],
-    ni:          [3,2,0x33],
-    owns:        [3,2,0x33],
-    gg:          [3,2,0x1D],
-    ll:          [3,2,0x1C],
-    not:         [3,2,0x36],
-    sim:         [3,2,0x18],
-    simeq:       [3,2,0x27],
-    perp:        [3,2,0x3F],
-    equiv:       [3,2,0x11],
-    asymp:       [3,2,0x10],
-    smile:       [3,1,0x5E],
-    frown:       [3,1,0x5F],
-
-  // Arrows
-    Leftrightarrow:   [3,2,0x2C],
-    Leftarrow:        [3,2,0x28],
-    Rightarrow:       [3,2,0x29],
-    leftrightarrow:   [3,2,0x24],
-    leftarrow:        [3,2,0x20],
-    gets:             [3,2,0x20],
-    rightarrow:       [3,2,0x21],
-    to:               [3,2,0x21],
-    mapstochar:       [3,2,0x37],
-    leftharpoonup:    [3,1,0x28],
-    leftharpoondown:  [3,1,0x29],
-    rightharpoonup:   [3,1,0x2A],
-    rightharpoondown: [3,1,0x2B],
-    nearrow:          [3,2,0x25],
-    searrow:          [3,2,0x26],
-    nwarrow:          [3,2,0x2D],
-    swarrow:          [3,2,0x2E],
-
-    minuschar:  [3,2,0x00], // for longmapsto
-    hbarchar:   [0,0,0x16], // for \hbar
-    lhook:      [3,1,0x2C],
-    rhook:      [3,1,0x2D],
-
-    ldotp:      [6,1,0x3A], // ldot as a punctuation mark
-    cdotp:      [6,2,0x01], // cdot as a punctuation mark
-    colon:      [6,0,0x3A], // colon as a punctuation mark
-
-    '#':        [7,0,0x23],
-    '$':        [7,0,0x24],
-    '%':        [7,0,0x25],
-    '&':        [7,0,0x26]
-  },
-  
-  // The delimiter table (see Appendix B of the TeXbook)
-  delimiter: {
-    '(':                [0,0,0x28,3,0x00],
-    ')':                [0,0,0x29,3,0x01],
-    '[':                [0,0,0x5B,3,0x02],
-    ']':                [0,0,0x5D,3,0x03],
-    '<':                [0,2,0x68,3,0x0A],
-    '>':                [0,2,0x69,3,0x0B],
-    '\\lt':             [0,2,0x68,3,0x0A],  // extra since < and > are
-    '\\gt':             [0,2,0x69,3,0x0B],  //  hard to get in HTML
-    '/':                [0,0,0x2F,3,0x0E],
-    '|':                [0,2,0x6A,3,0x0C],
-    '.':                [0,0,0x00,0,0x00],
-    '\\':               [0,2,0x6E,3,0x0F],
-    '\\lmoustache':     [4,3,0x7A,3,0x40],  // top from (, bottom from )
-    '\\rmoustache':     [5,3,0x7B,3,0x41],  // top from ), bottom from (
-    '\\lgroup':         [4,6,0x28,3,0x3A],  // extensible ( with sharper tips
-    '\\rgroup':         [5,6,0x29,3,0x3B],  // extensible ) with sharper tips
-    '\\arrowvert':      [0,2,0x6A,3,0x3C],  // arrow without arrowheads
-    '\\Arrowvert':      [0,2,0x6B,3,0x3D],  // double arrow without arrowheads
-//  '\\bracevert':      [0,7,0x7C,3,0x3E],  // the vertical bar that extends braces
-    '\\bracevert':      [0,2,0x6A,3,0x3E],  // we don't load tt, so use | instead
-    '\\Vert':           [0,2,0x6B,3,0x0D],
-    '\\|':              [0,2,0x6B,3,0x0D],
-    '\\vert':           [0,2,0x6A,3,0x0C],
-    '\\uparrow':        [3,2,0x22,3,0x78],
-    '\\downarrow':      [3,2,0x23,3,0x79],
-    '\\updownarrow':    [3,2,0x6C,3,0x3F],
-    '\\Uparrow':        [3,2,0x2A,3,0x7E],
-    '\\Downarrow':      [3,2,0x2B,3,0x7F],
-    '\\Updownarrow':    [3,2,0x6D,3,0x77],
-    '\\backslash':      [0,2,0x6E,3,0x0F],  // for double coset G\backslash H
-    '\\rangle':         [5,2,0x69,3,0x0B],
-    '\\langle':         [4,2,0x68,3,0x0A],
-    '\\rbrace':         [5,2,0x67,3,0x09],
-    '\\lbrace':         [4,2,0x66,3,0x08],
-    '\\}':              [5,2,0x67,3,0x09],
-    '\\{':              [4,2,0x66,3,0x08],
-    '\\rceil':          [5,2,0x65,3,0x07],
-    '\\lceil':          [4,2,0x64,3,0x06],
-    '\\rfloor':         [5,2,0x63,3,0x05],
-    '\\lfloor':         [4,2,0x62,3,0x04],
-    '\\lbrack':         [0,0,0x5B,3,0x02],
-    '\\rbrack':         [0,0,0x5D,3,0x03]
-  },
-
-  /*
-   *  The basic macros for plain TeX.
-   *
-   *  When the control sequence on the left is called, the JavaScript
-   *  funtion on the right is called, with the name of the control sequence
-   *  as its first parameter (this way, the same function can be called by
-   *  several different control sequences to do similar actions, and the
-   *  function can still tell which TeX command was issued).  If the right
-   *  is an array, the first entry is the routine to call, and the
-   *  remaining entries in the array are parameters to pass to the function
-   *  as the second parameter (they are in an array reference).
-   *  
-   *  Note:  TeX macros as defined by the user are discussed below.
-   */
-  macros: {
-    displaystyle:      ['HandleStyle','D'],
-    textstyle:         ['HandleStyle','T'],
-    scriptstyle:       ['HandleStyle','S'],
-    scriptscriptstyle: ['HandleStyle','SS'],
-    
-    rm:                ['HandleFont',0],
-    mit:               ['HandleFont',1],
-    oldstyle:          ['HandleFont',1],
-    cal:               ['HandleFont',2],
-    it:                ['HandleFont',4],
-    bf:                ['HandleFont',6],
-    
-    font:              ['Extension','font'],
-    
-    left:              'HandleLeft',
-    right:             'HandleRight',
-
-    arcsin:       ['NamedOp',0],
-    arccos:       ['NamedOp',0],
-    arctan:       ['NamedOp',0],
-    arg:          ['NamedOp',0],
-    cos:          ['NamedOp',0],
-    cosh:         ['NamedOp',0],
-    cot:          ['NamedOp',0],
-    coth:         ['NamedOp',0],
-    csc:          ['NamedOp',0],
-    deg:          ['NamedOp',0],
-    det:           'NamedOp',
-    dim:          ['NamedOp',0],
-    exp:          ['NamedOp',0],
-    gcd:           'NamedOp',
-    hom:          ['NamedOp',0],
-    inf:           'NamedOp',
-    ker:          ['NamedOp',0],
-    lg:           ['NamedOp',0],
-    lim:           'NamedOp',
-    liminf:       ['NamedOp',null,'lim<span style="margin-left: '+1/6+'em"></span>inf'],
-    limsup:       ['NamedOp',null,'lim<span style="margin-left: '+1/6+'em"></span>sup'],
-    ln:           ['NamedOp',0],
-    log:          ['NamedOp',0],
-    max:           'NamedOp',
-    min:           'NamedOp',
-    Pr:            'NamedOp',
-    sec:          ['NamedOp',0],
-    sin:          ['NamedOp',0],
-    sinh:         ['NamedOp',0],
-    sup:           'NamedOp',
-    tan:          ['NamedOp',0],
-    tanh:         ['NamedOp',0],
-
-    vcenter:        ['HandleAtom','vcenter'],
-    overline:       ['HandleAtom','overline'],
-    underline:      ['HandleAtom','underline'],
-    over:            'HandleOver',
-    overwithdelims:  'HandleOver',
-    atop:            'HandleOver',
-    atopwithdelims:  'HandleOver',
-    above:           'HandleOver',
-    abovewithdelims: 'HandleOver',
-    brace:           ['HandleOver','\\{','\\}'],
-    brack:           ['HandleOver','[',']'],
-    choose:          ['HandleOver','(',')'],
-    
-    overbrace:       ['Extension','leaders'],
-    underbrace:      ['Extension','leaders'],
-    overrightarrow:  ['Extension','leaders'],
-    underrightarrow: ['Extension','leaders'],
-    overleftarrow:   ['Extension','leaders'],
-    underleftarrow:  ['Extension','leaders'],
-    overleftrightarrow:  ['Extension','leaders'],
-    underleftrightarrow: ['Extension','leaders'],
-    overset:         ['Extension','underset-overset'],
-    underset:        ['Extension','underset-overset'],
-
-    llap:            'HandleLap',
-    rlap:            'HandleLap',
-    ulap:            'HandleLap',
-    dlap:            'HandleLap',
-    raise:           'RaiseLower',
-    lower:           'RaiseLower',
-    moveleft:        'MoveLeftRight',
-    moveright:       'MoveLeftRight',
-
-    frac:            'Frac',
-    root:            'Root',
-    sqrt:            'Sqrt',
-
-    //  TeX substitution macros
-    hbar:               ['Macro','\\hbarchar\\kern-.5em h'],
-    ne:                 ['Macro','\\not='],
-    neq:                ['Macro','\\not='],
-    notin:              ['Macro','\\mathrel{\\rlap{\\kern2mu/}}\\in'],
-    cong:               ['Macro','\\mathrel{\\lower2mu{\\mathrel{{\\rlap{=}\\raise6mu\\sim}}}}'],
-    bmod:               ['Macro','\\mathbin{\\rm mod}'],
-    pmod:               ['Macro','\\kern 18mu ({\\rm mod}\\,\\,#1)',1],
-    'int':              ['Macro','\\intop\\nolimits'],
-    oint:               ['Macro','\\ointop\\nolimits'],
-    doteq:              ['Macro','\\buildrel\\textstyle.\\over='],
-    ldots:              ['Macro','\\mathinner{\\ldotp\\ldotp\\ldotp}'],
-    cdots:              ['Macro','\\mathinner{\\cdotp\\cdotp\\cdotp}'],
-    vdots:              ['Macro','\\mathinner{\\rlap{\\raise8pt{.\\rule 0pt 6pt 0pt}}\\rlap{\\raise4pt{.}}.}'],
-    ddots:              ['Macro','\\mathinner{\\kern1mu\\raise7pt{\\rule 0pt 7pt 0pt .}\\kern2mu\\raise4pt{.}\\kern2mu\\raise1pt{.}\\kern1mu}'],
-    joinrel:            ['Macro','\\mathrel{\\kern-4mu}'],
-    relbar:             ['Macro','\\mathrel{\\smash-}'], // \smash, because - has the same height as +
-    Relbar:             ['Macro','\\mathrel='],
-    bowtie:             ['Macro','\\mathrel\\triangleright\\joinrel\\mathrel\\triangleleft'],
-    models:             ['Macro','\\mathrel|\\joinrel='],
-    mapsto:             ['Macro','\\mathrel{\\mapstochar\\rightarrow}'],
-    rightleftharpoons:  ['Macro','\\vcenter{\\mathrel{\\rlap{\\raise3mu{\\rightharpoonup}}}\\leftharpoondown}'],
-    hookrightarrow:     ['Macro','\\lhook\\joinrel\\rightarrow'],
-    hookleftarrow:      ['Macro','\\leftarrow\\joinrel\\rhook'],
-    Longrightarrow:     ['Macro','\\Relbar\\joinrel\\Rightarrow'],
-    longrightarrow:     ['Macro','\\relbar\\joinrel\\rightarrow'],
-    longleftarrow:      ['Macro','\\leftarrow\\joinrel\\relbar'],
-    Longleftarrow:      ['Macro','\\Leftarrow\\joinrel\\Relbar'],
-    longmapsto:         ['Macro','\\mathrel{\\mapstochar\\minuschar\\joinrel\\rightarrow}'],
-    longleftrightarrow: ['Macro','\\leftarrow\\joinrel\\rightarrow'],
-    Longleftrightarrow: ['Macro','\\Leftarrow\\joinrel\\Rightarrow'],
-    iff:                ['Macro','\\;\\Longleftrightarrow\\;'],
-    mathcal:            ['Macro','{\\cal #1}',1],
-    mathrm:             ['Macro','{\\rm #1}',1],
-    mathbf:             ['Macro','{\\bf #1}',1],
-    mathbb:             ['Macro','{\\bf #1}',1],
-    mathit:             ['Macro','{\\it #1}',1],
-    textrm:             ['Macro','\\mathord{\\hbox{#1}}',1],
-    textit:             ['Macro','\\mathord{\\class{textit}{\\hbox{#1}}}',1],
-    textbf:             ['Macro','\\mathord{\\class{textbf}{\\hbox{#1}}}',1],
-    pmb:                ['Macro','\\rlap{#1}\\kern1px{#1}',1],
-
-    TeX:                ['Macro','T\\kern-.1667em\\lower.5ex{E}\\kern-.125em X'],
-
-    limits:       ['Limits',1],
-    nolimits:     ['Limits',0],
-
-    ',':          ['Spacer',1/6],
-    ':':          ['Spacer',1/6],  // for LaTeX
-    '>':          ['Spacer',2/9],
-    ';':          ['Spacer',5/18],
-    '!':          ['Spacer',-1/6],
-    enspace:      ['Spacer',1/2],
-    quad:         ['Spacer',1],
-    qquad:        ['Spacer',2],
-    thinspace:    ['Spacer',1/6],
-    negthinspace: ['Spacer',-1/6],
-    
-    hskip:         'Hskip',
-    kern:          'Hskip',
-    rule:          ['Rule','colored'],
-    space:         ['Rule','blank'],
-    
-    big:        ['MakeBig','ord',0.85],
-    Big:        ['MakeBig','ord',1.15],
-    bigg:       ['MakeBig','ord',1.45],
-    Bigg:       ['MakeBig','ord',1.75],
-    bigl:       ['MakeBig','open',0.85],
-    Bigl:       ['MakeBig','open',1.15],
-    biggl:      ['MakeBig','open',1.45],
-    Biggl:      ['MakeBig','open',1.75],
-    bigr:       ['MakeBig','close',0.85],
-    Bigr:       ['MakeBig','close',1.15],
-    biggr:      ['MakeBig','close',1.45],
-    Biggr:      ['MakeBig','close',1.75],
-    bigm:       ['MakeBig','rel',0.85],
-    Bigm:       ['MakeBig','rel',1.15],
-    biggm:      ['MakeBig','rel',1.45],
-    Biggm:      ['MakeBig','rel',1.75],
-    
-    mathord:    ['HandleAtom','ord'],
-    mathop:     ['HandleAtom','op'],
-    mathopen:   ['HandleAtom','open'],
-    mathclose:  ['HandleAtom','close'],
-    mathbin:    ['HandleAtom','bin'],
-    mathrel:    ['HandleAtom','rel'],
-    mathpunct:  ['HandleAtom','punct'],
-    mathinner:  ['HandleAtom','inner'],
-    
-    mathchoice: ['Extension','mathchoice'],
-    buildrel:   'BuildRel',
-    
-    hbox:       'HBox',
-    text:       'HBox',
-    mbox:       'HBox',
-    fbox:       ['Extension','fbox'],
-
-    strut:      'Strut',
-    mathstrut:  ['Macro','\\vphantom{(}'],
-    phantom:    ['Phantom',1,1],
-    vphantom:   ['Phantom',1,0],
-    hphantom:   ['Phantom',0,1],
-    smash:      'Smash',
-    
-    acute:      ['MathAccent', [7,0,0x13]],
-    grave:      ['MathAccent', [7,0,0x12]],
-    ddot:       ['MathAccent', [7,0,0x7F]],
-    tilde:      ['MathAccent', [7,0,0x7E]],
-    bar:        ['MathAccent', [7,0,0x16]],
-    breve:      ['MathAccent', [7,0,0x15]],
-    check:      ['MathAccent', [7,0,0x14]],
-    hat:        ['MathAccent', [7,0,0x5E]],
-    vec:        ['MathAccent', [0,1,0x7E]],
-    dot:        ['MathAccent', [7,0,0x5F]],
-    widetilde:  ['MathAccent', [0,3,0x65]],
-    widehat:    ['MathAccent', [0,3,0x62]],
-
-    '_':        ['Replace','ord','_','normal',-.4,.1],
-    ' ':        ['Replace','ord','&nbsp;','normal'],
-    angle:      ['Replace','ord','&#x2220;','normal'],
-        
-    matrix:     'Matrix',
-    array:      'Matrix',  // ### still need to do alignment options ###
-    pmatrix:    ['Matrix','(',')','c'],
-    cases:      ['Matrix','\\{','.',['l','l'],null,2],
-    eqalign:    ['Matrix',null,null,['r','l'],[5/18],3,'D'],
-    displaylines: ['Matrix',null,null,['c'],null,3,'D'],
-    cr:         'HandleRow',
-    '\\':       'HandleRow',
-    newline:    'HandleRow',
-    noalign:    'HandleNoAlign',
-    eqalignno:  ['Matrix',null,null,['r','l','r'],[5/8,3],3,'D'],
-    leqalignno: ['Matrix',null,null,['r','l','r'],[5/8,3],3,'D'],
-    
-    //  LaTeX
-    begin:      'Begin',
-    end:        'End',
-    tiny:       ['HandleSize',0],
-    Tiny:       ['HandleSize',1],  // non-standard
-    scriptsize: ['HandleSize',2],
-    small:      ['HandleSize',3],
-    normalsize: ['HandleSize',4],
-    large:      ['HandleSize',5],
-    Large:      ['HandleSize',6],
-    LARGE:      ['HandleSize',7],
-    huge:       ['HandleSize',8],
-    Huge:       ['HandleSize',9],
-    dots:       ['Macro','\\ldots'],
-    
-    newcommand:     ['Extension','newcommand'],
-    newenvironment: ['Extension','newcommand'],
-    def:            ['Extension','newcommand'],
-
-    //  Extensions to TeX
-    color:      ['Extension','HTML'],
-    href:       ['Extension','HTML'],
-    'class':    ['Extension','HTML'],
-    style:      ['Extension','HTML'],
-    cssId:      ['Extension','HTML'],
-    unicode:    ['Extension','HTML'],
-    bbox:       ['Extension','bbox'],
-    
-    require:    'Require',
-    
-    //  debugging and test routines
-    'char':     'Char'
-  },
-  
-  /*
-   *  LaTeX environments
-   */
-  environments: {
-    array:        'Array',
-    matrix:       ['Array',null,null,'c'],
-    pmatrix:      ['Array','(',')','c'],
-    bmatrix:      ['Array','[',']','c'],
-    Bmatrix:      ['Array','\\{','\\}','c'],
-    vmatrix:      ['Array','\\vert','\\vert','c'],
-    Vmatrix:      ['Array','\\Vert','\\Vert','c'],
-    cases:        ['Array','\\{','.','ll',null,2],
-    eqnarray:     ['Array',null,null,'rcl',[5/18,5/18],3,'D'],
-    equation:     'Equation',
-    'equation*':  'Equation',
-
-    align:        ['Extension','AMSmath'],
-    'align*':     ['Extension','AMSmath'],
-    aligned:      ['Extension','AMSmath'],
-    multline:     ['Extension','AMSmath'],
-    'multline*':  ['Extension','AMSmath'],
-    split:        ['Extension','AMSmath'],
-    gather:       ['Extension','AMSmath'],
-    'gather*':    ['Extension','AMSmath'],
-    gathered:     ['Extension','AMSmath']
-  },
-
-
-  /***************************************************************************/
-
-  /*
-   *  Add special characters to list above.  (This makes it possible
-   *  to define them in a variable that the user can change.)
-   */
-  AddSpecial: function (obj) {
-    for (var id in obj) {
-      jsMath.Parser.prototype.special[jsMath.Parser.prototype[id]] = obj[id];
-    }
-  },
-
-  /*
-   *  Throw an error
-   */
-  Error: function (s) {
-    this.i = this.string.length;
-    if (s.error) {this.error = s.error} else {
-      if (!this.error) {this.error = s}
-    }
-  },
-
-  /***************************************************************************/
-
-  /*
-   *  Check if the next character is a space
-   */
-  nextIsSpace: function () {
-    return this.string.charAt(this.i) == ' ';
-  },
-  
-  /*
-   *  Trim spaces from a string
-   */
-  trimSpaces: function (text) {
-    if (typeof(text) != 'string') {return text}
-    return text.replace(/^\s+|\s+$/g,'');
-  },
-
-  /*
-   *  Parse a substring to get its mList, and return it.
-   *  Check that no errors occured
-   */
-  Process: function (arg) {
-    var data = this.mlist.data;
-    arg = jsMath.Parse(arg,data.font,data.size,data.style);
-      if (arg.error) {this.Error(arg); return null}
-    if (arg.mlist.Length() == 0) {return null}
-    if (arg.mlist.Length() == 1) {
-      var atom = arg.mlist.Last();
-      if (atom.atom && atom.type == 'ord' && atom.nuc &&
-         !atom.sub && !atom.sup && (atom.nuc.type == 'text' || atom.nuc.type == 'TeX'))
-             {return atom.nuc}
-    }
-    return {type: 'mlist', mlist: arg.mlist};
-  },
-
-  /*
-   *  Get and return a control-sequence name from the TeX string
-   */
-  GetCommand: function () {
-    var letter = /^([a-z]+|.) ?/i;
-    var cmd = letter.exec(this.string.slice(this.i));
-    if (cmd) {this.i += cmd[1].length; return cmd[1]}
-    this.i++; return " ";
-  },
-
-  /*
-   *  Get and return a TeX argument (either a single character or control sequence,
-   *  or the contents of the next set of braces).
-   */
-  GetArgument: function (name,noneOK) {
-    while (this.nextIsSpace()) {this.i++}
-    if (this.i >= this.string.length) {if (!noneOK) this.Error("Missing argument for "+name); return null}
-    if (this.string.charAt(this.i) == this.close) {if (!noneOK) this.Error("Extra close brace"); return null}
-    if (this.string.charAt(this.i) == this.cmd) {this.i++; return this.cmd+this.GetCommand()}
-    if (this.string.charAt(this.i) != this.open) {return this.string.charAt(this.i++)}
-    var j = ++this.i; var pcount = 1; var c = '';
-    while (this.i < this.string.length) {
-      c = this.string.charAt(this.i++);
-      if (c == this.cmd) {this.i++}
-      else if (c == this.open) {pcount++}
-      else if (c == this.close) {
-        if (pcount == 0) {this.Error("Extra close brace"); return null}
-        if (--pcount == 0) {return this.string.slice(j,this.i-1)}
-      }
-    }
-    this.Error("Missing close brace");
-    return null;
-  },
-
-  /*
-   *  Get an argument and process it into an mList
-   */
-  ProcessArg: function (name) {
-    var arg = this.GetArgument(name); if (this.error) {return null}
-    return this.Process(arg);
-  },
-  
-  /*
-   *  Get and process an argument for a super- or subscript.
-   *  (read extra args for \frac, \sqrt, \mathrm, etc.)
-   *  This handles these macros as special cases, so is really
-   *  rather a hack.  A more general method for indicating
-   *  how to handle macros in scripts needs to be developed.
-   */
-  ProcessScriptArg: function (name) {
-    var arg = this.GetArgument(name); if (this.error) {return null}
-    if (arg.charAt(0) == this.cmd) {
-      var csname = arg.substr(1);
-      if (csname == "frac") {
-        arg += '{'+this.GetArgument(csname)+'}'; if (this.error) {return null}
-        arg += '{'+this.GetArgument(csname)+'}'; if (this.error) {return null}
-      } else if (csname == "sqrt") {
-        arg += '['+this.GetBrackets(csname)+']'; if (this.error) {return null}
-        arg += '{'+this.GetArgument(csname)+'}'; if (this.error) {return null}
-      } else if (csname.match(this.scriptargs)) {
-        arg += '{'+this.GetArgument(csname)+'}'; if (this.error) {return null}
-      }
-    }
-    return this.Process(arg);
-  },
-
-  /*
-   *  Get the name of a delimiter (check it in the delimiter list).
-   */
-  GetDelimiter: function (name) {
-    while (this.nextIsSpace()) {this.i++}
-    var c = this.string.charAt(this.i);
-    if (this.i < this.string.length) {
-      this.i++;
-      if (c == this.cmd) {c = '\\'+this.GetCommand(name); if (this.error) return null}
-      if (this.delimiter[c] != null) {return this.delimiter[c]}
-    }
-    this.Error("Missing or unrecognized delimiter for "+name);
-    return null;
-  },
-  
-  /*
-   *  Get a dimension (including its units).
-   *  Convert the dimen to em's, except for mu's, which must be
-   *  converted when typeset.
-   */
-  GetDimen: function (name,nomu) {
-    var rest; var advance = 0;
-    if (this.nextIsSpace()) {this.i++}
-    if (this.string.charAt(this.i) == '{') {
-      rest = this.GetArgument(name);
-    } else {
-      rest = this.string.slice(this.i);
-      advance = 1;
-    }
-    return this.ParseDimen(rest,name,advance,nomu);
-  },
-  
-  ParseDimen: function (dimen,name,advance,nomu) {
-    var match = dimen.match(/^\s*([-+]?(\.\d+|\d+(\.\d*)?))(pt|em|ex|mu|px)/);
-    if (!match) {this.Error("Missing dimension or its units for "+name); return null}
-    if (advance) {
-      this.i += match[0].length;
-      if (this.nextIsSpace()) {this.i++}
-    }
-    var d = match[1]-0;
-    if (match[4] == 'px') {d /= jsMath.em}
-    else if (match[4] == 'pt') {d /= 10}
-    else if (match[4] == 'ex') {d *= jsMath.TeX.x_height}
-    else if (match[4] == 'mu') {if (nomu) {d = d/18} else {d = [d,'mu']}}
-    return d;
-  },
-
-  /*
-   *  Get the next non-space character
-   */
-  GetNext: function () {
-    while (this.nextIsSpace()) {this.i++}
-    return this.string.charAt(this.i);
-  },
-  
-  /*
-   *  Get an optional LaTeX argument in brackets
-   */
-  GetBrackets: function (name) {
-    var c = this.GetNext(); if (c != '[') return '';
-    var start = ++this.i; var pcount = 0;
-    while (this.i < this.string.length) {
-      c = this.string.charAt(this.i++);
-      if (c == '{') {pcount++}
-      else if (c == '}') {
-        if (pcount == 0)
-          {this.Error("Extra close brace while looking for ']'"); return null}
-        pcount --;
-      } else if (c == this.cmd) {
-        this.i++;
-      } else if (c == ']') {
-        if (pcount == 0) {return this.string.slice(start,this.i-1)}
-      }
-    }
-    this.Error("Couldn't find closing ']' for argument to "+this.cmd+name);
-    return null;
-  },
-  
-  /*
-   *  Get everything up to the given control sequence name (token)
-   */
-  GetUpto: function (name,token) {
-    while (this.nextIsSpace()) {this.i++}
-    var start = this.i; var pcount = 0;
-    while (this.i < this.string.length) {
-      var c = this.string.charAt(this.i++);
-      if (c == '{') {pcount++}
-      else if (c == '}') {
-        if (pcount == 0)
-          {this.Error("Extra close brace while looking for "+this.cmd+token); return null}
-        pcount --;
-      } else if (c == this.cmd) {
-        // really need separate counter for begin/end
-        // and it should really be a stack (new pcount for each begin)
-        if (this.string.slice(this.i,this.i+5) == "begin") {pcount++; this.i+=4}
-        else if (this.string.slice(this.i,this.i+3) == "end") {
-          if (pcount > 0) {pcount--; this.i += 2}
-        }
-        if (pcount == 0)  {
-          if (this.string.slice(this.i,this.i+token.length) == token) {
-            c = this.string.charAt(this.i+token.length);
-            if (c.match(/[^a-z]/i) || !token.match(/[a-z]/i)) {
-              var arg = this.string.slice(start,this.i-1);
-              this.i += token.length;
-              return arg;
-            }
-          }
-        }
-        this.i++;
-      }
-    }
-    this.Error("Couldn't find "+this.cmd+token+" for "+name);
-    return null;
-  },
-
-  /*
-   *  Get a parameter delimited by a control sequence, and
-   *  process it to get its mlist
-   */
-  ProcessUpto: function (name,token) {
-    var arg = this.GetUpto(name,token); if (this.error) return null;
-    return this.Process(arg);
-  },
-
-  /*
-   *  Get everything up to \end{env}
-   */
-  GetEnd: function (env) {
-    var body = ''; var name = '';
-    while (name != env) {
-      body += this.GetUpto('begin{'+env+'}','end'); if (this.error) return null;
-      name = this.GetArgument(this.cmd+'end'); if (this.error) return null;
-    }
-    return body;
-  },
-  
-
-  /***************************************************************************/
-
-
-  /*
-   *  Ignore spaces
-   */
-  Space: function () {},
-
-  /*
-   *  Collect together any primes and convert them to a superscript
-   */
-  Prime: function (c) {
-    var base = this.mlist.Last();
-    if (base == null || (!base.atom && base.type != 'box' && base.type != 'frac'))
-       {base = this.mlist.Add(jsMath.mItem.Atom('ord',{type:null}))}
-    if (base.sup) {this.Error("Prime causes double exponent: use braces to clarify"); return}
-    var sup = '';
-    while (c == "'") {sup += this.cmd+'prime'; c = this.GetNext(); if (c == "'") {this.i++}}
-    base.sup = this.Process(sup);
-    base.sup.isPrime = 1;
-  },
-
-  /*
-   *  Raise or lower its parameter by a given amount
-   *  @@@ Note that this is different from TeX, which requires an \hbox @@@
-   *  ### make this work with mu's ###
-   */
-  RaiseLower: function (name) {
-    var h = this.GetDimen(this.cmd+name,1); if (this.error) return;
-    var box = this.ProcessScriptArg(this.cmd+name); if (this.error) return;
-    if (name == 'lower') {h = -h}
-    this.mlist.Add(new jsMath.mItem('raise',{nuc: box, raise: h}));
-  },
-  
-  /*
-   *  Shift an expression to the right or left
-   *  @@@ Note that this is different from TeX, which requires a \vbox @@@
-   *  ### make this work with mu's ###
-   */
-  MoveLeftRight: function (name) {
-    var x = this.GetDimen(this.cmd+name,1); if (this.error) return;
-    var box = this.ProcessArg(this.cmd+name); if (this.error) return;
-    if (name == 'moveleft') {x = -x}
-    this.mlist.Add(jsMath.mItem.Space(x));
-    this.mlist.Add(jsMath.mItem.Atom('ord',box));
-    this.mlist.Add(jsMath.mItem.Space(-x));
-  },
-
-  /*
-   *  Load an extension if it has not already been loaded
-   */
-  Require: function (name) {
-    var file = this.GetArgument(this.cmd+name); if (this.error) return;
-    file = jsMath.Extension.URL(file);
-    if (jsMath.Setup.loaded[file]) return;
-    this.Extension(null,[file]);
-  },
-  
-  /*
-   *  Load an extension file and restart processing the math
-   */
-  Extension: function (name,data) {
-    jsMath.Translate.restart = 1;
-    if (name != null) {delete jsMath.Parser.prototype[data[1]||'macros'][name]}
-    jsMath.Extension.Require(data[0],jsMath.Translate.asynchronous);
-    throw "restart";
-  },
-  
-  /*
-   *  Implements \frac{num}{den}
-   */
-  Frac: function (name) {
-    var num = this.ProcessArg(this.cmd+name); if (this.error) return;
-    var den = this.ProcessArg(this.cmd+name); if (this.error) return;
-    this.mlist.Add(jsMath.mItem.Fraction('over',num,den));
-  },
-  
-  /*
-   *  Implements \sqrt[n]{...}
-   */
-  Sqrt: function (name) {
-    var n = this.GetBrackets(this.cmd+name); if (this.error) return;
-    var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
-    var box = jsMath.mItem.Atom('radical',arg);
-    if (n != '') {box.root = this.Process(n); if (this.error) return}
-    this.mlist.Add(box);
-  },
-
-  /*
-   *  Implements \root...\of{...}
-   */
-  Root: function (name) {
-    var n = this.ProcessUpto(this.cmd+name,'of'); if (this.error) return;
-    var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
-    var box = jsMath.mItem.Atom('radical',arg);
-    box.root = n; this.mlist.Add(box);
-  },
-  
-
-  /*
-   *  Implements \buildrel...\over{...}
-   */
-  BuildRel: function (name) {
-    var top = this.ProcessUpto(this.cmd+name,'over'); if (this.error) return;
-    var bot = this.ProcessArg(this.cmd+name); if (this.error) return;
-    var op = jsMath.mItem.Atom('op',bot);
-    op.limits = 1; op.sup = top;
-    this.mlist.Add(op);
-  },
-
-  /*
-   *  Create a delimiter of the type and size specified in the parameters
-   */
-  MakeBig: function (name,data) {
-    var type = data[0]; var h = data[1] * jsMath.p_height;
-    var delim = this.GetDelimiter(this.cmd+name); if (this.error) return;
-    this.mlist.Add(jsMath.mItem.Atom(type,jsMath.Box.Delimiter(h,delim,'T')));
-  },
-  
-  /*
-   *  Insert the specified character in the given font.
-   *  (Try to load the font if it is not already available.)
-   */
-  Char: function (name) {
-    var font = this.GetArgument(this.cmd+name); if (this.error) return;
-    var n = this.GetArgument(this.cmd+name); if (this.error) return;
-    if (!jsMath.TeX[font]) {
-      jsMath.TeX[font] = [];
-      this.Extension(null,[jsMath.Font.URL(font)]);
-    } else {
-      this.mlist.Add(jsMath.mItem.Typeset(jsMath.Box.TeX(n-0,font,'T',this.mlist.data.size)));
-    }
-  },
-  
-  /*
-   *  Create an array or matrix.
-   */
-  Matrix: function (name,delim) {
-    var data = this.mlist.data;
-    var arg = this.GetArgument(this.cmd+name); if (this.error) return;
-    var parse = new jsMath.Parser(arg+this.cmd+'\\',null,data.size,delim[5] || 'T');
-    parse.matrix = name; parse.row = []; parse.table = []; parse.rspacing = [];
-    parse.Parse(); if (parse.error) {this.Error(parse); return}
-    parse.HandleRow(name,1);  // be sure the last row is recorded
-    var box = jsMath.Box.Layout(data.size,parse.table,delim[2]||null,delim[3]||null,parse.rspacing,delim[4]||null);
-    // Add parentheses, if needed
-    if (delim[0] && delim[1]) {
-      var left  = jsMath.Box.Delimiter(box.h+box.d-jsMath.hd/4,this.delimiter[delim[0]],'T');
-      var right = jsMath.Box.Delimiter(box.h+box.d-jsMath.hd/4,this.delimiter[delim[1]],'T');
-      box = jsMath.Box.SetList([left,box,right],data.style,data.size);
-    }
-    this.mlist.Add(jsMath.mItem.Atom((delim[0]? 'inner': 'ord'),box));
-  },
-  
-  /*
-   *  When we see an '&', try to add a matrix entry to the row data.
-   *  (Use all the data in the current mList, and then clear it)
-   */
-  HandleEntry: function (name) {
-    if (!this.matrix) 
-      {this.Error(name+" can only appear in a matrix or array"); return}
-    if (this.mlist.data.openI != null) {
-      var open = this.mlist.Get(this.mlist.data.openI);
-      if (open.left) {this.Error("Missing "+this.cmd+"right")}
-        else {this.Error("Missing close brace")}
-    }
-    if (this.mlist.data.overI != null) {this.mlist.Over()}
-    var data = this.mlist.data;
-    this.mlist.Atomize(data.style,data.size);
-    var box = this.mlist.Typeset(data.style,data.size);
-    box.entry = data.entry; delete data.entry; if (!box.entry) {box.entry = {}};
-    this.row[this.row.length] = box;
-    this.mlist = new jsMath.mList(null,null,data.size,data.style); 
-  },
-  
-  /*
-   *  When we see a \cr or \\, try to add a row to the table
-   */
-  HandleRow: function (name,last) {
-    var dimen;
-    if (!this.matrix) {this.Error(this.cmd+name+" can only appear in a matrix or array"); return}
-    if (name == "\\") {
-      dimen = this.GetBrackets(this.cmd+name); if (this.error) return;
-      if (dimen) {dimen = this.ParseDimen(dimen,this.cmd+name,0,1)}
-    }
-    this.HandleEntry(name);
-    if (!last || this.row.length > 1 || this.row[0].format != 'null')
-      {this.table[this.table.length] = this.row}
-    if (dimen) {this.rspacing[this.table.length] = dimen}
-    this.row = [];
-  },
-  
-  /*
-   *  Look for \vskip or \vspace in \noalign parameters
-   */
-  HandleNoAlign: function (name) {
-    var arg = this.GetArgument(this.cmd+name); if (this.error) return;
-    var skip = arg.replace(/^.*(vskip|vspace)([^a-z])/i,'$2');
-    if (skip.length == arg.length) return;
-    var d = this.ParseDimen(skip,this.cmd+RegExp.$1,0,1); if (this.error) return;
-    this.rspacing[this.table.length] = (this.rspacing[this.table.length] || 0) + d;
-  },
-  
-  /*
-   *  LaTeX array environment
-   */
-  Array: function (name,delim) {
-    var columns = delim[2]; var cspacing = delim[3];
-    if (!columns) {
-      columns = this.GetArgument(this.cmd+'begin{'+name+'}');
-      if (this.error) return;
-    }
-    columns = columns.replace(/[^clr]/g,'');
-    columns = columns.split('');
-    var data = this.mlist.data; var style = delim[5] || 'T';
-    var arg = this.GetEnd(name); if (this.error) return;
-    var parse = new jsMath.Parser(arg+this.cmd+'\\',null,data.size,style);
-    parse.matrix = name; parse.row = []; parse.table = []; parse.rspacing = [];
-    parse.Parse(); if (parse.error) {this.Error(parse); return}
-    parse.HandleRow(name,1);  // be sure the last row is recorded
-    var box = jsMath.Box.Layout(data.size,parse.table,columns,cspacing,parse.rspacing,delim[4],delim[6],delim[7]);
-    // Add parentheses, if needed
-    if (delim[0] && delim[1]) {
-      var left  = jsMath.Box.Delimiter(box.h+box.d-jsMath.hd/4,this.delimiter[delim[0]],'T');
-      var right = jsMath.Box.Delimiter(box.h+box.d-jsMath.hd/4,this.delimiter[delim[1]],'T');
-      box = jsMath.Box.SetList([left,box,right],data.style,data.size);
-    }
-    this.mlist.Add(jsMath.mItem.Atom((delim[0]? 'inner': 'ord'),box));
-  },
-  
-  /*
-   *  LaTeX \begin{env}
-   */
-  Begin: function (name) {
-    var env = this.GetArgument(this.cmd+name); if (this.error) return;
-    if (env.match(/[^a-z*]/i)) {this.Error('Invalid environment name "'+env+'"'); return}
-    if (!this.environments[env]) {this.Error('Unknown environment "'+env+'"'); return}
-    var cmd = this.environments[env];
-    if (typeof(cmd) == "string") {cmd = [cmd]}
-    this[cmd[0]](env,cmd.slice(1));
-  },
-  
-  /*
-   *  LaTeX \end{env}
-   */
-  End: function (name) {
-    var env = this.GetArgument(this.cmd+name); if (this.error) return;
-    this.Error(this.cmd+name+'{'+env+'} without matching '+this.cmd+'begin');
-  },
-  
-  /*
-   *  LaTeX equation environment (just remove the environment)
-   */
-  Equation: function (name) {
-    var arg = this.GetEnd(name); if (this.error) return;
-    this.string = arg+this.string.slice(this.i); this.i = 0;
-  },
-
-  /*
-   *  Add a fixed amount of horizontal space
-   */
-  Spacer: function (name,w) {
-    this.mlist.Add(jsMath.mItem.Space(w-0));
-  },
-  
-  /*
-   *  Add horizontal space given by the argument
-   */
-  Hskip: function (name) {
-    var w = this.GetDimen(this.cmd+name); if (this.error) return;
-    this.mlist.Add(jsMath.mItem.Space(w));
-  },
-
-  /*
-   *  Typeset the argument as plain text rather than math.
-   */
-  HBox: function (name) {
-    var text = this.GetArgument(this.cmd+name); if (this.error) return;
-    var box = jsMath.Box.InternalMath(text,this.mlist.data.size);
-    this.mlist.Add(jsMath.mItem.Typeset(box));
-  },
-  
-  /*
-   *  Insert a rule of a particular width, height and depth
-   *  This replaces \hrule and \vrule
-   *  @@@ not a standard TeX command, and all three parameters must be given @@@
-   */
-  Rule: function (name,style) {
-    var w = this.GetDimen(this.cmd+name,1); if (this.error) return;
-    var h = this.GetDimen(this.cmd+name,1); if (this.error) return;
-    var d = this.GetDimen(this.cmd+name,1); if (this.error) return;
-    h += d; var html;
-    if (h != 0) {h = Math.max(1.05/jsMath.em,h)}
-    if (h == 0 || w == 0 || style == "blank")
-      {html = jsMath.HTML.Blank(w,h)} else {html = jsMath.HTML.Rule(w,h)}
-    if (d) {
-      html = '<span style="vertical-align:'+jsMath.HTML.Em(-d)+'">'
-           +  html + '</span>';
-    }
-    this.mlist.Add(jsMath.mItem.Typeset(new jsMath.Box('html',html,w,h-d,d)));
-  },
-  
-  /*
-   *  Inserts an empty box of a specific height and depth
-   */
-  Strut: function () {
-    var size = this.mlist.data.size;
-    var box = jsMath.Box.Text('','normal','T',size).Styled();
-    box.bh = box.bd = 0; box.h = .8; box.d = .3; box.w = box.Mw = 0;
-    this.mlist.Add(jsMath.mItem.Typeset(box));
-  },
-  
-  /*
-   *  Handles \phantom, \vphantom and \hphantom
-   */
-  Phantom: function (name,data) {
-    var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
-    this.mlist.Add(new jsMath.mItem('phantom',{phantom: arg, v: data[0], h: data[1]}));
-  },
-  
-  /*
-   *  Implements \smash
-   */
-  Smash: function (name,data) {
-    var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
-    this.mlist.Add(new jsMath.mItem('smash',{smash: arg}));
-  },
-  
-  /*
-   *  Puts an accent on the following argument
-   */
-  MathAccent: function (name,accent) {
-    var c = this.ProcessArg(this.cmd+name); if (this.error) return;
-    var atom = jsMath.mItem.Atom('accent',c); atom.accent = accent[0];
-    this.mlist.Add(atom);
-  },
-
-  /*
-   *  Handles functions and operators like sin, cos, sum, etc.
-   */
-  NamedOp: function (name,data) {
-    var a = (name.match(/[^acegm-su-z]/)) ? 1: 0;
-    var d = (name.match(/[gjpqy]/)) ? .2: 0;
-    if (data[1]) {name = data[1]}
-    var box = jsMath.mItem.TextAtom('op',name,jsMath.TeX.fam[0],a,d);
-    if (data[0] != null) {box.limits = data[0]}
-    this.mlist.Add(box);
-  },
-
-  /*
-   *  Implements \limits
-   */
-  Limits: function (name,data) {
-    var atom = this.mlist.Last();
-    if (!atom || atom.type != 'op') 
-      {this.Error(this.cmd+name+" is allowed only on operators"); return}
-    atom.limits = data[0];
-  },
-
-  /*
-   *  Implements macros like those created by \def.  The named control
-   *  sequence is replaced by the string given as the first data value.
-   *  If there is a second data value, this specifies how many arguments
-   *  the macro uses, and in this case, those arguments are substituted
-   *  for #1, #2, etc. within the replacement string.
-   *  
-   *  See the jsMath.Macro() command below for more details.
-   *  The "newcommand" extension implements \newcommand and \def
-   *  and are loaded automatically if needed.
-   */
-  Macro: function (name,data) {
-    var text = data[0];
-    if (data[1]) {
-      var args = [];
-      for (var i = 0; i < data[1]; i++)
-        {args[args.length] = this.GetArgument(this.cmd+name); if (this.error) return}
-      text = this.SubstituteArgs(args,text);
-    }
-    this.string = this.AddArgs(text,this.string.slice(this.i));
-    this.i = 0;
-  },
-  
-  /*
-   *  Replace macro paramters with their values
-   */
-  SubstituteArgs: function (args,string) {
-    var text = ''; var newstring = ''; var c; var i = 0;
-    while (i < string.length) {
-      c = string.charAt(i++);
-      if (c == this.cmd) {text += c + string.charAt(i++)}
-      else if (c == '#') {
-        c = string.charAt(i++);
-        if (c == "#") {text += c} else {
-          if (!c.match(/[1-9]/) || c > args.length)
-            {this.Error("Illegal macro parameter reference"); return null}
-          newstring = this.AddArgs(this.AddArgs(newstring,text),args[c-1]);
-          text = '';
-        }
-      } else {text += c}
-    }
-    return this.AddArgs(newstring,text);
-  },
-  
-  /*
-   *  Make sure that macros are followed by a space if their names
-   *  could accidentally be continued into the following text.
-   */
-  AddArgs: function (s1,s2) {
-    if (s2.match(/^[a-z]/i) && s1.match(/(^|[^\\])(\\\\)*\\[a-z]+$/i)) {s1 += ' '}
-    return s1+s2;
-  },
-  
-  /*
-   *  Replace the control sequence with the given text
-   */
-  Replace: function (name,data) {
-    this.mlist.Add(jsMath.mItem.TextAtom(data[0],data[1],data[2],data[3]));
-  },
-  
-  /*
-   *  Error for # (must use \#)
-   */
-  Hash: function (name) {
-    this.Error("You can't use 'macro parameter character #' in math mode");
-  },
-  
-  /*
-   *  Insert space for ~
-   */
-  Tilde: function (name) {
-    this.mlist.Add(jsMath.mItem.TextAtom('ord','&nbsp;','normal'));
-  },
-
-  /*
-   *  Implements \llap, \rlap, etc.
-   */
-  HandleLap: function (name) {
-    var box = this.ProcessArg(); if (this.error) return;
-    box = this.mlist.Add(new jsMath.mItem('lap',{nuc: box, lap: name}));
-  },
-
-  /*
-   *  Adds the argument as a specific type of atom (for commands like
-   *  \overline, etc.)
-   */
-  HandleAtom: function (name,data) {
-    var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
-    this.mlist.Add(jsMath.mItem.Atom(data[0],arg));
-  },
-
-
-  /*
-   *  Process the character associated with a specific \mathcharcode
-   */
-  HandleMathCode: function (name,code) {
-    this.HandleTeXchar(code[0],code[1],code[2]);
-  },
-  
-  /*
-   *  Add a specific character from a TeX font (use the current
-   *  font if the type is 7 (variable) or the font is not specified)
-   *  Load the font if it is not already loaded.
-   */
-  HandleTeXchar: function (type,font,code) {
-    if (type == 7 && this.mlist.data.font != null) {font = this.mlist.data.font}
-    font = jsMath.TeX.fam[font];
-    if (!jsMath.TeX[font]) {
-      jsMath.TeX[font] = [];
-      this.Extension(null,[jsMath.Font.URL(font)]);
-    } else {
-      this.mlist.Add(jsMath.mItem.TeXAtom(jsMath.TeX.atom[type],code,font));
-    }
-  },
-
-  /*
-   *  Add a TeX variable character or number
-   */
-  HandleVariable: function (c) {this.HandleTeXchar(7,1,c.charCodeAt(0))},
-  HandleNumber: function (c) {this.HandleTeXchar(7,0,c.charCodeAt(0))},
-
-  /*
-   *  For unmapped characters, just add them in as normal
-   *  (non-TeX) characters
-   */
-  HandleOther: function (c) {
-    this.mlist.Add(jsMath.mItem.TextAtom('ord',c,'normal'));
-  },
-  
-  /*
-   *  Ignore comments in TeX data
-   *  ### Some browsers remove the newlines, so this might cause
-   *      extra stuff to be ignored; look into this ###
-   */
-  HandleComment: function () {
-    var c;
-    while (this.i < this.string.length) {
-      c = this.string.charAt(this.i++);
-      if (c == "\r" || c == "\n") return;
-    }
-  },
-
-  /*
-   *  Add a style change (e.g., \displaystyle, etc)
-   */
-  HandleStyle: function (name,style) {
-    this.mlist.data.style = style[0];
-    this.mlist.Add(new jsMath.mItem('style',{style: style[0]}));
-  },
-  
-  /*
-   *  Implements \small, \large, etc.
-   */
-  HandleSize: function (name,size) {
-    this.mlist.data.size = size[0];
-    this.mlist.Add(new jsMath.mItem('size',{size: size[0]}));
-  },
-
-  /*
-   *  Set the current font (e.g., \rm, etc)
-   */
-  HandleFont: function (name,font) {
-    this.mlist.data.font = font[0];
-  },
-
-  /*
-   *  Look for and process a control sequence
-   */
-  HandleCS: function () {
-    var cmd = this.GetCommand(); if (this.error) return;
-    if (this.macros[cmd]) {
-      var macro = this.macros[cmd];
-      if (typeof(macro) == "string") {macro = [macro]}
-      this[macro[0]](cmd,macro.slice(1)); return;
-    }
-    if (this.mathchardef[cmd]) {
-      this.HandleMathCode(cmd,this.mathchardef[cmd]);
-      return;
-    }
-    if (this.delimiter[this.cmd+cmd]) {
-      this.HandleMathCode(cmd,this.delimiter[this.cmd+cmd].slice(0,3))
-      return;
-    }
-    this.Error("Unknown control sequence '"+this.cmd+cmd+"'");
-  },
-
-  /*
-   *  Process open and close braces
-   */
-  HandleOpen: function () {this.mlist.Open()},
-  HandleClose: function () {
-    if (this.mlist.data.openI == null) {this.Error("Extra close brace"); return}
-    var open = this.mlist.Get(this.mlist.data.openI);
-    if (!open || open.left == null) {this.mlist.Close()}
-      else {this.Error("Extra close brace or missing "+this.cmd+"right"); return}
-  },
-
-  /*
-   *  Implements \left
-   */
-  HandleLeft: function (name) {
-    var left = this.GetDelimiter(this.cmd+name); if (this.error) return;
-    this.mlist.Open(left);
-  },
-
-  /*
-   *  Implements \right
-   */
-  HandleRight: function (name) {
-    var right = this.GetDelimiter(this.cmd+name); if (this.error) return;
-    var open = this.mlist.Get(this.mlist.data.openI);
-    if (open && open.left != null) {this.mlist.Close(right)}
-      else {this.Error("Extra open brace or missing "+this.cmd+"left");}
-  },
-
-  /*
-   *  Implements generalized fractions (\over, \above, etc.)
-   */
-  HandleOver: function (name,data) {
-    if (this.mlist.data.overI != null) 
-      {this.Error('Ambiguous use of '+this.cmd+name); return}
-    this.mlist.data.overI = this.mlist.Length();
-    this.mlist.data.overF = {name: name};
-    if (data.length > 0) {
-      this.mlist.data.overF.left  = this.delimiter[data[0]];
-      this.mlist.data.overF.right = this.delimiter[data[1]];
-    } else if (name.match(/withdelims$/)) {
-      this.mlist.data.overF.left  = this.GetDelimiter(this.cmd+name); if (this.error) return;
-      this.mlist.data.overF.right = this.GetDelimiter(this.cmd+name); if (this.error) return;
-    } else {
-      this.mlist.data.overF.left  = null;
-      this.mlist.data.overF.right = null;
-    }
-    if (name.match(/^above/)) {
-      this.mlist.data.overF.thickness = this.GetDimen(this.cmd+name,1);
-      if (this.error) return;
-    } else {
-      this.mlist.data.overF.thickness = null; 
-    }
-  },
-
-  /*
-   *  Add a superscript to the preceeding atom
-   */
-  HandleSuperscript: function () {
-    var base = this.mlist.Last();
-    if (this.mlist.data.overI == this.mlist.Length()) {base = null}
-    if (base == null || (!base.atom && base.type != 'box' && base.type != 'frac'))
-       {base = this.mlist.Add(jsMath.mItem.Atom('ord',{type:null}))}
-    if (base.sup) {
-      if (base.sup.isPrime) {base = this.mlist.Add(jsMath.mItem.Atom('ord',{type:null}))}
-        else {this.Error("Double exponent: use braces to clarify"); return}
-    }
-    base.sup = this.ProcessScriptArg('superscript'); if (this.error) return;
-  },
-
-  /*
-   *  Add a subscript to the preceeding atom
-   */
-  HandleSubscript: function () {
-    var base = this.mlist.Last();
-    if (this.mlist.data.overI == this.mlist.Length()) {base = null}
-    if (base == null || (!base.atom && base.type != 'box' && base.type != 'frac'))
-       {base = this.mlist.Add(jsMath.mItem.Atom('ord',{type:null}))}
-    if (base.sub) {this.Error("Double subscripts: use braces to clarify"); return}
-    base.sub = this.ProcessScriptArg('subscript'); if (this.error) return;
-  },
-
-  /*
-   *  Parse a TeX math string, handling macros, etc.
-   */
-  Parse: function () {
-    var c;
-    while (this.i < this.string.length) {
-      c = this.string.charAt(this.i++);
-      if (this.mathchar[c]) {this.HandleMathCode(c,this.mathchar[c])}
-      else if (this.special[c]) {this[this.special[c]](c)}
-      else if (this.letter.test(c)) {this.HandleVariable(c)}
-      else if (this.number.test(c)) {this.HandleNumber(c)}
-      else {this.HandleOther(c)}
-    }
-    if (this.mlist.data.openI != null) {
-      var open = this.mlist.Get(this.mlist.data.openI);
-      if (open.left) {this.Error("Missing "+this.cmd+"right")}
-        else {this.Error("Missing close brace")}
-    }
-    if (this.mlist.data.overI != null) {this.mlist.Over()}
-  },
-
-  /*
-   *  Perform the processing of Appendix G
-   */
-  Atomize: function () {
-    var data = this.mlist.init;
-    if (!this.error) this.mlist.Atomize(data.style,data.size)
-  },
-
-  /*
-   *  Produce the final HTML.
-   *  
-   *  We have to wrap the HTML it appropriate <SPAN> tags to hide its
-   *  actual dimensions when these don't match the TeX dimensions of the
-   *  results.  We also include an image to force the results to take up
-   *  the right amount of space.  The results may need to be vertically
-   *  adjusted to make the baseline appear in the correct place.
-   */
-  Typeset: function () {
-    var data = this.mlist.init;
-    var box = this.typeset = this.mlist.Typeset(data.style,data.size);
-    if (this.error) {return '<span class="error">'+this.error+'</span>'}
-    if (box.format == 'null') {return ''};
-
-    box.Styled().Remeasured(); var isSmall = 0; var isBig = 0;
-    if (box.bh > box.h && box.bh > jsMath.h+.001) {isSmall = 1}
-    if (box.bd > box.d && box.bd > jsMath.d+.001) {isSmall = 1}
-    if (box.h > jsMath.h || box.d > jsMath.d) {isBig = 1}
-
-    var html = box.html;
-    if (isSmall) {// hide the extra size
-      if (jsMath.Browser.allowAbsolute) {
-        var y = 0;
-        if (box.bh > jsMath.h+.001) {y = jsMath.h - box.bh}
-        html = jsMath.HTML.Absolute(html,box.w,jsMath.h,0,y);
-      } else if (jsMath.Browser.valignBug) {
-        // remove line height
-        html = '<span style="line-height:'+jsMath.HTML.Em(jsMath.d)+';">'
-             +    html + '</span>';
-      } else if (!jsMath.Browser.operaLineHeightBug) {
-        // remove line height and try to hide the depth
-        var dy = jsMath.HTML.Em(Math.max(0,box.bd-jsMath.hd)/3);
-        html = '<span style="line-height:'+jsMath.HTML.Em(jsMath.d)+';'
-               + ' position:relative; top:'+dy+'; vertical-align:'+dy
-               + '">' + html + '</span>';
-      }
-      isBig = 1;
-    }
-    if (isBig) {
-      // add height and depth to the line
-      //   (force a little extra to separate lines if needed)
-      html += jsMath.HTML.Blank(0,box.h+.05,box.d+.05);
-    }
-    return '<nobr><span class="scale">'+html+'</span></nobr>';
-  }
-
-});
-
-/*
- *  Make these characters special (and call the given routines)
- */
-jsMath.Parser.prototype.AddSpecial({
-  cmd:   'HandleCS',
-  open:  'HandleOpen',
-  close: 'HandleClose'
-});
-
-
-/*
- *  The web-page author can call jsMath.Macro to create additional
- *  TeX macros for use within his or her mathematics.  See the
- *  author's documentation for more details.
- */
-
-jsMath.Add(jsMath,{
-  Macro: function (name) {
-    var macro = jsMath.Parser.prototype.macros;
-    macro[name] = ['Macro'];
-    for (var i = 1; i < arguments.length; i++) 
-      {macro[name][macro[name].length] = arguments[i]}
-  }
-});
-
-/*
- *  Use these commands to create macros that load
- *  JavaScript files and reprocess the mathematics when
- *  the file is loaded.  This lets you to have macros or
- *  LaTeX environments that autoload their own definitions
- *  only when they are needed, saving initial download time
- *  on pages where they are not used.  See the author's
- *  documentation for more details.
- *
- */
-
-jsMath.Extension = {
-
-  safeRequire: 1,   // disables access to files outside of jsMath/extensions
-  
-  Macro: function (name,file) {
-    var macro = jsMath.Parser.prototype.macros;
-    if (file == null) {file = name}
-    macro[name] = ['Extension',file];
-  },
-
-  LaTeX: function (env,file) {
-    var latex = jsMath.Parser.prototype.environments;
-    latex[env] = ['Extension',file,'environments'];
-  },
-
-  Font: function (name,font) {
-    if (font == null) {font = name + "10"}
-    var macro = jsMath.Parser.prototype.macros;
-    macro[name] = ['Extension',jsMath.Font.URL(font)];
-  },
-  
-  MathChar: function (font,defs) {
-    var fam = jsMath.TeX.famName[font];
-    if (fam == null) {
-      fam = jsMath.TeX.fam.length;
-      jsMath.TeX.fam[fam] = font;
-      jsMath.TeX.famName[font] = fam;
-    }
-    var mathchardef = jsMath.Parser.prototype.mathchardef;
-    for (var c in defs) {mathchardef[c] = [defs[c][0],fam,defs[c][1]]}
-  },
-
-  Require: function (file,show) {
-    if (this.safeRequire && (file.match(/\.\.\/|[^-a-z0-9.\/:_+=%~]/i) ||
-         (file.match(/:/) && file.substr(0,jsMath.root.length) != jsMath.root))) {
-      jsMath.Setup.loaded[file] = 1;
-      return;
-    }
-    jsMath.Setup.Script(this.URL(file),show);
-  },
-  
-  URL: function (file) {
-    file = file.replace(/^\s+|\s+$/g,'');
-    if (!file.match(/^([a-z]+:|\/|fonts|extensions\/)/i)) {file = 'extensions/'+file}
-    if (!file.match(/\.js$/)) {file += '.js'}
-    return file;
-  }
-}
-
-
-/***************************************************************************/
-
-/*
- *  These routines look through the web page for math elements to process.
- *  There are two main entry points you can call:
- *  
- *      <script> jsMath.Process() </script>
- *  or
- *      <script> jsMath.ProcessBeforeShowing() </script>
- *
- *  The first will process the page asynchronously (so the user can start
- *  reading the top of the file while jsMath is still processing the bottom)
- *  while the second does not update until all the mathematics is typeset.
- */
-
-jsMath.Add(jsMath,{
-  /*
-   *  Call this at the bottom of your HTML page to have the
-   *  mathematics typeset asynchronously.  This lets the user
-   *  start reading the mathematics while the rest of the page
-   *  is being processed.
-   */
-  Process: function (obj) {
-    jsMath.Setup.Body();
-    jsMath.Script.Push(jsMath.Translate,'Asynchronous',obj);
-  },
-  
-  /*
-   *  Call this at the bottom of your HTML page to have the
-   *  mathematics typeset before the page is displayed.
-   *  This can take a long time, so the user could cancel the
-   *  page before it is complete; use it with caution, and only
-   *  when there is a relatively small amount of math on the page.
-   */
-  ProcessBeforeShowing: function (obj) {
-    jsMath.Setup.Body();
-    var method = (jsMath.Controls.cookie.asynch ? "Asynchronous": "Synchronous");
-    jsMath.Script.Push(jsMath.Translate,method,obj);
-  },
-  
-  /*
-   *  Process the contents of a single element.  It must be of
-   *  class "math".
-   */
-  ProcessElement: function (obj) {
-    jsMath.Setup.Body();
-    jsMath.Script.Push(jsMath.Translate,'ProcessOne',obj);
-  }
-  
-});
-
-jsMath.Translate = {
-
-  element: [],  // the list of math elements on the page
-  cancel: 0,    // set to 1 to cancel asynchronous processing
-  
-  /*
-   *  Parse a TeX string in Text or Display mode and return
-   *  the HTML for it (taking it from the cache, if available)
-   */
-  Parse: function (style,s,noCache) {
-    var cache = jsMath.Global.cache[style];
-    if (!cache[jsMath.em]) {cache[jsMath.em] = {}}
-    var HTML = cache[jsMath.em][s];
-    if (!HTML || noCache) {
-      var parse = jsMath.Parse(s,null,null,style);
-      parse.Atomize(); HTML = parse.Typeset();
-      if (!noCache) {cache[jsMath.em][s] = HTML}
-    }
-    return HTML;
-  },
-
-  TextMode:    function (s,noCache) {this.Parse('T',s,noCache)},
-  DisplayMode: function (s,noCache) {this.Parse('D',s,noCache)},
-  
-  /*
-   *  Return the text of a given DOM element
-   */
-  GetElementText: function (element) {
-    if (element.childNodes.length == 1 && element.childNodes[0].nodeName === "#comment") {
-      var result = element.childNodes[0].nodeValue.match(/^\[CDATA\[(.*)\]\]$/);
-      if (result != null) {return result[1]};
-    }
-    var text = this.recursiveElementText(element);
-    element.alt = text;
-    if (text.search('&') >= 0) {
-      text = text.replace(/&lt;/g,'<');
-      text = text.replace(/&gt;/g,'>');
-      text = text.replace(/&quot;/g,'"');
-      text = text.replace(/&amp;/g,'&');
-    }
-    return text;
-  },
-  recursiveElementText: function (element) {
-    if (element.nodeValue != null) {
-      if (element.nodeName !== "#comment") {return element.nodeValue}
-      return element.nodeValue.replace(/^\[CDATA\[(.*)\]\]$/,"$1");
-    }
-    if (element.childNodes.length === 0) {return " "}
-    var text = '';
-    for (var i = 0; i < element.childNodes.length; i++) 
-      {text += this.recursiveElementText(element.childNodes[i])}
-    return text;
-  },
-  
-  /*
-   *  Move hidden to the location of the math element to be
-   *  processed and reinitialize sizes for that location.
-   */
-  ResetHidden: function (element) {
-    element.innerHTML =
-      '<span id="jsMath_hiddenSpan" style="position:absolute"></span>'
-        + jsMath.Browser.operaHiddenFix; // needed by Opera in tables
-    element.className = '';
-    jsMath.hidden = element.firstChild;
-    if (!jsMath.BBoxFor("x").w) {jsMath.hidden = jsMath.hiddenTop}
-    jsMath.ReInit();
-  },
-
-  
-  /*
-   *  Typeset the contents of an element in \textstyle or \displaystyle
-   */
-  ConvertMath: function (style,element,noCache) {
-    var text = this.GetElementText(element);
-    this.ResetHidden(element);
-    if (text.match(/^\s*\\nocache([^a-zA-Z])/))
-      {noCache = true; text = text.replace(/\s*\\nocache/,'')}
-    text = this.Parse(style,text,noCache);
-    element.className = 'typeset';
-    element.innerHTML = text;
-  },
-
-  /*
-   *  Process a math element
-   */
-  ProcessElement: function (element) {
-    this.restart = 0;
-    if (!element.className.match(/(^| )math( |$)/)) return; // don't reprocess elements
-    var noCache = (element.className.toLowerCase().match(/(^| )nocache( |$)/) != null);
-    try {
-      var style = (element.tagName.toLowerCase() == 'div' ? 'D' : 'T');
-      this.ConvertMath(style,element,noCache);
-      element.onclick = jsMath.Click.CheckClick;
-      element.ondblclick = jsMath.Click.CheckDblClick;
-    } catch (err) {
-      if (element.alt) {
-        var tex = element.alt;
-        tex = tex.replace(/&/g,'&amp;');
-        tex = tex.replace(/</g,'&lt;');
-        tex = tex.replace(/>/g,'&gt;');
-        element.innerHTML = tex;
-        element.className = 'math';
-        if (noCache) {element.className += ' nocache'}
-      }
-      jsMath.hidden = jsMath.hiddenTop;
-    }
-  },
-
-  /*
-   *  Asynchronously process all the math elements starting with
-   *  the k-th one
-   */
-  ProcessElements: function (k) {
-    jsMath.Script.blocking = 1;
-    if (k >= this.element.length || this.cancel) {
-      this.ProcessComplete();
-      if (this.cancel) {
-        jsMath.Message.Set("Process Math: Canceled");
-        jsMath.Message.Clear()
-      }
-      jsMath.Script.blocking = 0;
-      jsMath.Script.Process();
-    } else {
-      var savedQueue = jsMath.Script.SaveQueue();
-      this.ProcessElement(this.element[k]);
-      jsMath.Script.RestoreQueue(savedQueue);
-      if (this.restart) {
-        jsMath.Script.Push(this,'ProcessElements',k);
-        jsMath.Script.blocking = 0;
-        setTimeout('jsMath.Script.Process()',jsMath.Browser.delay);
-      } else {
-        k++; var p = Math.floor(100 * k / this.element.length);
-        jsMath.Message.Set('Processing Math: '+p+'%');
-        setTimeout('jsMath.Translate.ProcessElements('+k+')',jsMath.Browser.delay);
-      }
-    }
-  },
-
-  /*
-   *  Start the asynchronous processing of mathematics
-   */
-  Asynchronous: function (obj) {
-    if (!jsMath.initialized) {jsMath.Init()}
-    this.element = this.GetMathElements(obj);
-    jsMath.Script.blocking = 1;
-    this.cancel = 0; this.asynchronous = 1;
-    jsMath.Message.Set('Processing Math: 0%',1);
-    setTimeout('jsMath.Translate.ProcessElements(0)',jsMath.Browser.delay);
-  },
-  
-  /*
-   *  Do synchronous processing of mathematics
-   */
-  Synchronous: function (obj,i) {
-    if (i == null) {
-      if (!jsMath.initialized) {jsMath.Init()}
-      this.element = this.GetMathElements(obj);
-      i = 0;
-    }
-    this.asynchronous = 0;
-    while (i < this.element.length) {
-      this.ProcessElement(this.element[i]);
-      if (this.restart) {
-        jsMath.Synchronize('jsMath.Translate.Synchronous(null,'+i+')');
-        jsMath.Script.Process();
-        return;
-      }
-      i++;
-    }
-    this.ProcessComplete(1);
-  },
-
-  /*
-   *  Synchronously process the contents of a single element
-   */
-  ProcessOne: function (obj) {
-    if (!jsMath.initialized) {jsMath.Init()}
-    this.element = [obj];
-    this.Synchronous(null,0);
-  },
-  
-  /*
-   *  Look up all the math elements on the page and
-   *  put them in a list sorted from top to bottom of the page
-   */
-  GetMathElements: function (obj) {
-    var element = []; var k;
-    if (!obj) {obj = jsMath.document}
-    if (typeof(obj) == 'string') {obj = jsMath.document.getElementById(obj)}
-    if (!obj.getElementsByTagName) return null;
-    var math = obj.getElementsByTagName('div');
-    for (k = 0; k < math.length; k++) {
-      if (math[k].className && math[k].className.match(/(^| )math( |$)/)) {
-        if (jsMath.Browser.renameOK && obj.getElementsByName) 
-               {math[k].setAttribute('name','_jsMath_')}
-          else {element[element.length] = math[k]}
-      }
-    }
-    math = obj.getElementsByTagName('span');
-    for (k = 0; k < math.length; k++) {
-      if (math[k].className && math[k].className.match(/(^| )math( |$)/)) {
-        if (jsMath.Browser.renameOK && obj.getElementsByName) 
-               {math[k].setAttribute('name','_jsMath_')}
-          else {element[element.length] = math[k]}
-      }
-    }
-    // this gets the SPAN and DIV elements interleaved in order
-    if (jsMath.Browser.renameOK && obj.getElementsByName) {
-      element = obj.getElementsByName('_jsMath_');
-    } else if (jsMath.hidden.sourceIndex) {
-      element.sort(function (a,b) {return a.sourceIndex - b.sourceIndex});
-    }
-    return element;
-  },
-
-  /*
-   *  Remove the window message about processing math
-   *  and clean up any marked <SPAN> or <DIV> tags
-   */
-  ProcessComplete: function (noMessage) {
-    if (jsMath.Browser.renameOK) {
-      var element = jsMath.document.getElementsByName('_jsMath_');
-      for (var i = element.length-1; i >= 0; i--) {
-        element[i].removeAttribute('name');
-      }
-    }
-    jsMath.hidden = jsMath.hiddenTop;
-    this.element = []; this.restart = null;
-    if (!noMessage) {
-      jsMath.Message.Set('Processing Math: Done');
-      jsMath.Message.Clear();
-    }
-    jsMath.Message.UnBlank();
-    if (jsMath.Browser.safariImgBug &&
-        (jsMath.Controls.cookie.font == 'symbol' ||
-         jsMath.Controls.cookie.font == 'image')) {
-      //
-      //  For Safari, the images don't always finish
-      //  updating, so nudge the window to cause a
-      //  redraw.  (Hack!)
-      //
-      if (this.timeout) {clearTimeout(this.timeout)}
-      this.timeout = setTimeout("jsMath.window.resizeBy(-1,0); "
-                              + "jsMath.window.resizeBy(1,0); "
-                              + "jsMath.Translate.timeout = null",2000);
-    }
-  },
-  
-  /*
-   *  Cancel procesing elements
-   */
-  Cancel: function () {
-    jsMath.Translate.cancel = 1;
-    if (jsMath.Script.cancelTimer) {jsMath.Script.cancelLoad()}
-  }
-  
-};
-
-jsMath.Add(jsMath,{
-  //
-  //  Synchronize these with the loading of the tex2math plugin.
-  //
-  ConvertTeX: function (element) {jsMath.Script.Push(jsMath.tex2math,'ConvertTeX',element)},
-  ConvertTeX2: function (element) {jsMath.Script.Push(jsMath.tex2math,'ConvertTeX2',element)},
-  ConvertLaTeX: function (element) {jsMath.Script.Push(jsMath.tex2math,'ConvertLaTeX',element)},
-  ConvertCustom: function (element) {jsMath.Script.Push(jsMath.tex2math,'ConvertCustom',element)},
-  CustomSearch: function (om,cm,od,cd) {jsMath.Script.Push(null,function () {jsMath.tex2math.CustomSearch(om,cm,od,cd)})},
-  tex2math: {
-    ConvertTeX: function () {},
-    ConvertTeX2: function () {},
-    ConvertLaTeX: function () {},
-    ConvertCustom: function () {},
-    CustomSearch: function () {}
-  }
-});
-jsMath.Synchronize = jsMath.Script.Synchronize;
-
-/***************************************************************************/
-
-
-/*
- *  Initialize things
- */
-try {
-  if (window.parent != window && window.jsMathAutoload) {
-    window.parent.jsMath = jsMath;
-    jsMath.document = window.parent.document;
-    jsMath.window = window.parent;
-  }
-} catch (err) {}
-
-jsMath.Global.Register();
-jsMath.Loaded();
-jsMath.Controls.GetCookie();
-jsMath.Setup.Source();
-jsMath.Global.Init();
-jsMath.Script.Init();
-jsMath.Setup.Fonts();
-if (jsMath.document.body) {jsMath.Setup.Body()}
-jsMath.Setup.User("onload");
-
-}}
+//start = new Date().getTime();
+jsMath.Script.Uncompress([
+  ['if(!','window.','jsMath','||!',1,'jsMath.','loaded','){var ','jsMath_old','=',1,2,';',0,'document.','getElementById','||!',14,'childNodes||!',14,'createElement','){','alert("','The',' mathematics ','on this page requires W3C DOM support in its JavaScript. Unfortunately, your ','browser',' doesn\'t seem to have this.")}','else{',1,2,'={version:"3.6e",document:document,','window',':',32,',','platform',':(','navigator.',36,'.match(/','Mac/)?"mac":',38,36,40,'Win/)?"pc":"unix"),','sizes',':[50,60,70,85,100,120,144,173,207,249],styles:{".math','":{"font-family":"serif","font-style":"normal","font-weight":"normal','"},".typeset',48,'","line-height":"normal','","text-indent":"0px','","white-space":"','normal','"},".typeset .',54,48,'"},"div.','typeset','":{"text-align":"','center",margin:"1em 0px"},"span.',59,60,'left',49,' span',60,'left",border',':"0px",margin:"0px','",padding',':"0px"},"a .',59,' img, .',59,' a img','":{border:"0px','","border-bottom":"','1px solid',' blue;"},".',59,' .size0','":{"font-size":"','50','%"},".typeset .','size1',82,'60',84,'size2',82,'70',84,'size3',82,'85',84,'size4',82,'100',84,'size5',82,'120',84,'size6',82,'144',84,'size7',82,'173',84,'size8',82,'207',84,'size9',82,'249',84,'cmr10','":{"font-family":"jsMath-',121,', serif',55,'cmbx10',122,126,', ',2,'-cmr10',55,'cmti10',122,133,', ',2,131,55,'cmmi10',122,140,55,'cmsy10',122,144,55,'cmex10',122,148,55,'textit','":{"font-family":"','serif","','font-style":"italic',55,'textbf',153,'serif","font-weight":"bold',55,'link":{"','text-decoration":"none',55,'error',82,'90%","',155,'","background-color','":"#FFFFCC',70,':"1px','",border:"',78,' #CC0000',55,'blank','":{display:"','inline-block','",overflow:"','hidden',172,'0px none",width:"0px",height:"0px',55,'spacer',177,178,'"},"#','jsMath_hiddenSpan":{','visibility:"hidden",position:"absolute",','top:"0px",left:"0px',51,52,187,'jsMath_message','":{position:"fixed",bottom:"','1px",left:"2px',168,'":"#E6E6E6','",border:"solid 1px #959595",margin:"0px",padding:"','1px 8px','","z-index":"','102','",color:"black","font-size":"','small",width:"auto','"},"#jsMath_panel',195,'1.75em",right:"1.5em',70,':".8em 1.6em',168,'":"#DDDDDD',172,'outset 2px',201,'103",','width:"auto',203,'10pt","font-style":"',54,205,' .disabled":{color:"#888888',205,' .infoLink',82,'85%"},"#jsMath_panel *":{"','font-size":"inherit","font-style":"inherit","font-family":"inherit',51,205,' div":{"','background-color":"inherit",color:"inherit"},"#jsMath_panel ','span":{"',230,'td',76,70,69,'","',230,'tr',76,70,69,'","',230,'table',76,70,69,168,'":"inherit",color:"inherit",height:"auto",',216,187,'jsMath_button',195,'1px",right:"2px',168,'":"white',199,'0px 3px 1px 3px',201,'102",color:"black","',162,'","font-size":"x-',204,'",cursor:"hand"},"#',253,' *":{padding:"0px",border',69,51,'","',226,187,'jsMath_global":{"',155,187,'jsMath_noFont',' .message":{"text-align":"center",padding:".8em 1.6em",border:"3px solid #DD0000","background-color":"#FFF8F8",color:"#AA0000","font-size":"',204,187,'jsMath_noFont .link":{padding:"0px 5px 2px 5px',172,'2px outset',168,'":"#E8E8E8',203,'80%",',216,265,'jsMath_PrintWarning',277,'x-',204,'"},"@media print":{"#',253,177,'none',187,'jsMath_Warning',177,'none"}},"@media screen":{"#',289,177,'none"}}},Element',':function(','a){','return ',5,14,15,'("jsMath_"+a)},BBoxFor',304,'a','){this.','hidden.innerHTML','=\'<nobr><','span class="',59,'"><',316,'scale">\'+a+"</span></span></nobr>";var b=(',5,'Browser.','msieBBoxBug?this.','hidden.firstChild','.firstChild',':this.hidden',');var c={w:','b.offsetWidth',',h',326,'.offsetHeight','};this.',314,'="";',306,'c},EmBoxFor',304,'b){var a=',5,'Global.cache','.R;',0,'a[this.em',']){',343,']={}}',0,343,'][b]){','var c=','this.BBoxFor','(b);',343,'][b]={w:c.w/this.em,h:c.h/this.em}}',306,343,'][b]},Init',':function(){','if(',5,'Setup.inited','!=1){',0,5,361,'){',5,'Setup.','Body()}if(',5,361,'!=1){if(',5,361,'==-100','){return}',22,'It looks like ',2,' failed to set up properly (error code "+',5,361,'+").  I will try to keep going, but it could get ugly.");',5,361,'=1}}this.em=this.CurrentEm();','var a=',5,340,'.B;',0,343,']){',343,']={};',343,'].bb=',351,'("x");',350,343,'].bb.h;',343,'].d=',351,'("x"+',5,'HTML.Strut','(c/this.em)).h-c}',5,322,'italicCorrection=',343,'].ic;var g=',343,'].bb;var e=g.h;var f=',343,'].d;this.h=(e-f)/this.em;this.d=f/this.em;this.hd=this.h+','this.d;this.',368,'TeXfonts','();var b=this.EmBoxFor(\'<',316,121,'">M</span>\').w/2;this.TeX.M_height=b*(26/14);this.TeX.h=this.h;this.TeX.d=',419,'TeX.hd=this.hd;this.Img.Scale();',0,'this.initialized',313,368,'Sizes','();this.','Img.UpdateFonts()}this.p_height=(','this.TeX.cmex10[0].','h+',435,'d)/0.85;',429,'=1},ReInit',358,'if(this.','em!=this.CurrentEm()){this.Init()}},CurrentEm',358,387,351,'(\'<span style="\'+',5,322,'block+\';width:27em;height:1em','"></span>\').','w/27;if(a>0){',306,'a}',306,351,'(\'<img src="\'+',5,176,'+\'" style="width:13em;height:1em" />\').w/13},Loaded',358,'if(',8,7,'b=["Process","ProcessBeforeShowing","ProcessElement","ConvertTeX","ConvertTeX2","ConvertLaTeX","ConvertCustom","CustomSearch","Synchronize","Macro","document"];','for(var a=0;a<','b','.length;a++){','if(',8,'[b[a]]){','delete ',8,'[b[a]]}}}if(',8,'){this.Insert(',2,',',8,')}',8,'=null;',5,6,'=1},Add',304,'c,a){for(var b in a){','c[b]=a[b]}},Insert',304,487,'if(c[b]&&typeof(a[b])=="object"&&(','typeof(c[b])=="','object"||',492,'function")){this.Insert(c[b],a[b])}',28,'c[b]=a[b]}}},Package',304,'b,a',476,'b.prototype,a)}};',5,'Global={isLocal:1,cache:{','T:{},D:{},R:{},B',':{}},ClearCache',358,5,340,'={',504,':{}}},GoGlobal',304,338,'String(',5,1,'location',');var d=(',5,'isCHMmode','?"#":"?");if(b){a=a.replace(/\\?.*/,"")+"?"+b}',5,'Controls.','Reload(',5,'root+"',2,'-global.html"+d+escape(a))},Init',358,'if(',5,'Controls.cookie.','global=="always"&&!',5,'noGoGlobal','){if(',38,'accentColorName',376,0,5,32,'){',5,32,'=',32,'}',5,523,6,'=1;',5,523,'defaults.hiddenGlobal=null;this.GoGlobal(',5,523,'SetCookie(2))}},Register',358,387,5,1,'parent;',0,5,520,'){',5,520,'=(',5,1,517,'.protocol','=="mk:")}try{',0,5,520,313,'Domain()}if(a.',2,'&&a.',5,'isGlobal){a.',5,'Register(',5,32,')}}catch(b){',5,535,'=1}},Domain',358,'if(',38,'appName=="Microsoft Internet Explorer"&&',5,36,'=="mac"&&',38,'userProfile','!=null',376,'if(',5,14,'all&&!',5,1,'opera',376,'if(',32,'==parent',376,'var b=',5,14,'domain',';try{while(true){try{if(parent.',14,'title',602,'){return}}','catch(a){}',0,14,619,'.match(/\\..*\\./)){break}',5,14,619,'=',5,14,619,'.replace(/^[^.]*\\./,"")}}',625,5,14,619,'=b}};',5,'Script={request:null,Init',358,'if(!(',5,532,'asynch&&',5,532,'progress',')){if(',1,'XMLHttpRequest','){try{','this.request','=new ',655,'}catch(c){}if(',657,'&&',5,'root.match','(/^file:\\/\\//)){try{',657,'.open("GET",',5,526,5,'js",false);',657,'.send(null)}catch(','c){',657,'=null;if(',1,'postMessage&&',1,'addEventListener',313,'mustPost','=1;',5,1,680,'("message",',5,'Post.','Listener,false)}}}}',0,657,'&&',1,'ActiveXObject','&&!this.',682,7,'a=["MSXML2.XMLHTTP.6','.0","MSXML2.XMLHTTP','.5',700,'.4',700,'.3',700,'","Microsoft.XMLHTTP"];','for(var b=0;b<','a.length&&!',657,';b++){try{',657,658,695,'(a[b])}catch(c){}}}}',0,657,'||',5,368,'domainChanged',313,'Load=this.delayedLoad;this.needsBody=1}},Load',304,'b,a){','if(a){',5,'Message.Set("Loading "+','b);',5,'Script.','Delay(1);',5,'Script.Push(','this,"xmlRequest",b',');',5,734,5,'Message',',"Clear")}',28,5,734,735,')}},xmlRequest',304,'url){','this.blocking','=1;try{',657,667,'url,false);',657,673,'err){',749,'=0;if(',5,'Translate.','restart&&',5,'Translate.asynchronous){return""}throw Error("jsMath can\'t load the file \'"+url+"\'\\','nMessage: "+err.message)}if(',657,'.status',602,'&&(',657,766,'>=400||',657,766,'<0)){',749,'=0;if(',5,760,'restart&&',5,763,'nError status: "+',657,766,')}',0,'url','.match(/\\.js$/)){','return(',657,'.responseText',')}var tmpQueue','=this.queue;this.queue','=[];',5,1,'eval(',657,791,');',749,'=0;','this.queue=this.queue.','concat(','tmpQueue);this.Process();return""},cancelTimeout:30*1000,blocking:0,cancelTimer:null,needsBody:0,queue:[],Synchronize',304,'a,b','){if(typeof(','a)!="string"){',5,734,'null,a,b)}',28,5,734,5,32,',"eval",a)}},Push',304,'a,c,b',313,'queue[','this.queue.length',']=[a,c,b];if(!(',749,'||(this.needsBody&&!',5,14,'body','))){this.Process()}},Process',358,'while(',823,'&&!',749,7,'c=this.queue[0];',803,'slice(1);',387,'this.SaveQueue();var b=c[0];var e=c[1];var d=c[2];if(b){b[e](d)}',28,'if(e){e(d)}}this.','RestoreQueue','(a)}},SaveQueue',358,'var a',793,'=[];',306,'a},',844,304,'a){',803,804,'a)},delayedLoad',304,'a',313,'Push(','this,"','startLoad','",a)},',863,304,'a',7,'b=',5,14,20,'("iframe");b','.style.visibility="',180,'";b.style.','position="absolute";','b','.style.width="','0px";b','.style.height="','0px";if(',5,14,829,325,'){',5,14,829,'.insertBefore(','b,',5,14,829,325,')}',28,5,14,829,'.appendChild(','b)}',749,'=1;this.','url=a;if(a','.substr(0,',5,'root.length',')==',5,'root){a=a.substr(',5,909,')}',5,728,'a);this.cancelTimer=setTimeout("',5,731,'cancelLoad','()",this.cancelTimeout);',442,682,'){','b.src=',5,689,863,'(a,b)}',28,'if(a',788,926,5,526,2,'-loader.html"}',28,926,'this.url}}},','endLoad',304,'a){if(this.cancelTimer){clearTimeout(this.cancelTimer);this.cancelTimer=null}',5,689,942,'();',5,740,'.Clear();if(a!="cancel"){',749,'=0;this.Process','()}},Start',358,'this.tmpQueue',793,'=[]},End',358,803,804,956,');',472,956,'},',921,304,'b,',944,'if(b==null){b','="Can\'t load file"}if(a==null){a=2000}',5,740,'.Set(b);setTimeout(\'',5,731,942,'("cancel")\',a)},Delay',304,'a){',749,'=1;setTimeout("',5,731,'endDelay','()",a)},',986,358,749,953,'()},','imageCount',':0,WaitForImage',304,'b){',749,905,993,'++;',442,'img==null',313,'img=[]}',387,'new Image',433,'img[this.img.length]=a;a.onload=function(){if(--',5,731,993,'==0){',5,731,986,'()}};a.onerror=a.onload;a.onabort=a.onload;a.src=b},Uncompress',304,'data){for(var k=0;k<data.length;k++){var d=data[k];var n=d.length;for(var i=0;i<n;i++){if(typeof(d[i])=="number"){d[i]=d[d[i]]}}data[k]=d.join("")}',1,'eval(data.join(""))}};',5,'Post={',32,':null,Listener',304,'d){if(d.source!=',5,689,32,376,'var e=d.origin','.replace(/^file:\\/\\//,"");',387,14,619,1032,'if(e==null||e==""||e=="null"){e','="localhost"}if(','a==null||a==""||a=="null"){a',1038,'e!=a||!','d.data.substr(','0,6).match(/jsM(CP|LD|AL):/)){return}var b=',1042,'6,3).replace(/ /g,"");',350,1042,'10);if(',5,'Post.Commands[b',']){(',5,1050,'])(c)}},Commands:{SCR',304,'message){',5,1,'eval(message)},ERR',304,'a){',5,731,921,'(a,3000)},BGN',304,'a){',5,731,'Start()},END',304,'a){',726,5,731,'End()}',5,731,942,'()}},',863,304,'a,b',313,32,'=b.contentWindow;',0,'a',788,306,5,'root+a}',306,5,526,2,'-loader-post.html?"+a},',942,358,'this.',32,'=null}};',5,740,'={',176,':null,message:null,text:null,clear:null,Init',358,0,5,14,829,'||!',5,532,652,376,'this.message','=',5,'Element("message");',0,1118,'){if(',5,368,'stylesReady){',1118,'=',5,'Setup.DIV("','message",{visibility:"',180,'"},',5,'fixedDiv',')}',28,1118,'=',5,1131,'message",{',189,'bottom:"',196,'",','backgroundColor',':"#E6E6E6',199,200,'",zIndex:102,color:"black",fontSize:"',204,'"},',5,1136,')}}','this.text','=',5,14,'createTextNode','("");',1118,902,1158,');',1118,'.onmousedown=',5,760,'Cancel},Set',304,725,'if(this.clear){clearTimeout(this.clear',');this.clear=null}if(',5,532,652,'){',0,1158,313,'Init();',0,1158,624,'if(',5,322,'textNodeBug','){',1118,'.innerHTML','=b}',28,1158,'.nodeValue','=b}',1118,874,'visible";',726,1118,'.style.cursor','="pointer";',0,1118,1205,'){',1118,1205,'="hand"}',1118,'.title=" Cancel Processing of Math "}',28,1118,1205,'="";',1118,'.title=""}}',28,'if(b',907,'8)!="Loading "){',5,1,'status=b}}},Clear',358,1175,')}this.clear=setTimeout("',5,740,'.doClear()",1000)},doClear',358,442,'clear',313,'clear=null;',5,1,'status="";if(',1158,'){',1158,1198,'=""}if(',1118,'){',1118,874,180,'"}}},Blank',358,'if(','this.blank','||!',5,14,829,376,1256,'=',5,1131,176,'",{position',':(',5,322,'msiePositionFixedBug','?"absolute":"fixed"),',190,'",bottom:"0px",right:"0px",zIndex:101,',1148,':"white"},',5,1136,');if(',5,322,'msieBlankBug){',1256,1194,'="&nbsp;";',1256,879,'110%";',1256,881,'110%"}},UnBlank',358,'if(',1256,'){',5,14,829,'.removeChild(',1256,')}',1256,'=null}};',5,'Setup={',6,':[],DIV',304,'e,c,b){',971,'=',5,14,829,'}var d=',5,14,20,'("div");d.id="jsMath_"+e;','for(var a in c){','d.style[a]=c[a]}',0,'b.hasChildNodes){b',902,'d)}',28,'b',891,'d,b',325,')}',306,'d},Script',304,725,442,6,'[b]){return}',28,'this.',6,'[b]=1}',0,'b.match("^([a-zA-Z]+:/?)?/")){b=',5,'root+b}',5,731,'Load(b,a)},Hidden',358,5,180,'=this.DIV("Hidden",{',189,'top:0,left:0,border:0,padding:0,margin:0});',5,'hiddenTop=',5,180,';return},Source',358,'if(',5,'Autoload&&',5,'Autoload.root','){',5,'root=',5,1366,'}',28,5,'root="";',387,5,14,'getElementsByTagName("','script");',726,708,'a.','length;b++){','var d=a[b].src;if(d&&d.match("(^|/|\\\\\\\\)',5,'js$")){',5,1369,'d.replace','(/',5,'js$/,"");break}}}}if(',5,'root.charAt(','0)=="\\\\"){',5,1369,5,'root.replace','(/\\\\/g,"/")}if(',5,1395,'0)=="/"){if(',5,1395,'1)!="/"){',5,'root="//"+',5,14,517,'.host+',5,'root}',5,1369,5,14,517,574,'+',5,1415,28,0,5,664,'(/^[a-z]+:/i)){var d=','new String(',5,14,517,');',350,'new RegExp("/[^/]*/\\\\.\\\\./");',5,1369,1390,'(new RegExp("[^/]*$"),"")+',5,'root;while(',5,664,'(c)){',5,1369,5,1400,'(c,"/")}}}',5,'Img.',1369,5,526,'fonts/";',5,176,'=',5,526,176,'.gif";this.Domain()},Domain',358,'try{',5,14,619,'}catch(d',376,'var c="";',387,5,14,619,';if(',5,664,'("://([^/]*)/")){c=RegExp.$1}c=c.replace(/:\\d+$/,"");if(c==""||c==a',376,'if(',38,'appName=="Microsoft Internet Explorer"&&',5,36,'=="mac"&&',38,'onLine&&',38,601,'&&',5,14,'all',376,'c=c.split(/\\./);a=a.split(/\\./);if(c.length<2||a.length<2||','c[c.length-','1',']!=a[a.length-','1]||',1497,'2',1499,'2]){this.','DomainWarning','();return}var e=',1497,'2]+"."+',1497,'1];for(var b=3;b<=c.length&&b<=a.',1384,'if(',1497,'b',1499,'b]){break}e=',1497,'b]+"."+e}',5,14,619,'=e;this.',721,'=1},',1505,358,22,'In order for ',2,' to be able to load the additional components that it may need, the ',5,'js file must be ',6,' from a server in the same ',619,' as the page that contains it.  Because that is not the case for this page, the',24,'displayed here may not appear correctly.")},','EncodeFont',304,'c',7,'b=',5,'TeX[c];if(b[0].c',602,376,466,'128;a++){var d=b[a];b[a]=d[3];if(b[a]==null){b[a]={}}b[a].w=d[0];b[a].h=d[1];if(d[2]!=null){b[a].d=d[2]}b[a].c=',5,'TeX.encoding[a]}},Fonts',358,708,5,'TeX.fam','.',1384,387,5,1555,'[b];if(a',313,1539,'(a)}}},TeXfont',304,338,5,'TeX[b];if(a==null',376,'a.hd=',5,'EmBoxFor(\'<span class="\'+b+\'">\'+a[65].c','+"</span>").h;a.d=',5,1572,'+',5,408,'(a.hd)+"</span>").h-a.hd;a.h=a.hd-a.d;','if(b=="',140,'"){a.skewchar=','127}',28,1580,144,1582,'48}}},',421,358,466,5,1555,468,'if(',5,1555,'[a]){this.TeXfont(',5,1555,'[a])}}},Sizes',358,5,'TeXparams','=[];var b;var a;for(a=0;a<',5,46,468,5,1604,'[a]={}}for(b in ',5,'TeX',808,5,'TeX[b])!="object"){for(a=0;a<',5,46,468,5,1604,'[a][b]=',5,46,'[a]*',5,'TeX[b]/100}}}},Styles',304,'a){',0,'a){a=',5,'styles;a[".',59,' .scale"]={"font-size":',5,532,'scale+"%"};this.stylesReady=1}',5,734,862,'AddStyleSheet','",a);if(',5,322,'styleChangeDelay','){',5,734,5,'Script,"Delay",1)}},StyleString',304,'e',7,'a={},f;for(f in e){if(typeof e[f]==="string"){a[f]=e[f]}',28,'if(f',907,'1)==="@"){a[f]=','this.StyleString(','e[f])}',28,'if(e[f]!=null',7,'d=[];for(var c in e[f]){if(e[f][c]!=null){d[d.length]=c+": "+e[f][c]}}a[f]=d.join("; ")}}}}var b="";for(f in a){b+=f+" {"+a[f]+"}\\n"}',306,'b},',1642,304,'d',7,'b=',5,14,1379,'head")[0];if(',338,1660,'d);if(',5,14,'createStyleSheet){b.insertAdjacentHTML("beforeEnd",\'<','span style="display:','none">x</span><style type="text/css">\'+a+"</style>")}',28,350,5,14,20,'("style");c.type="text/css";c',902,5,14,1162,'(a));b',902,'c)}}',28,0,5,'noHEAD){',5,'noHEAD=1;',22,'Document is missing its <HEAD> section.  Style sheet can\'t be created without it.")}}},Body',358,442,'inited',376,'this.inited=-','1;',5,368,'Hidden();',1710,'2;',5,322,1184,1710,'3;if(',5,532,176,'){',5,740,'.Blank()}',1710,'4;',5,368,'Styles();',1710,'5;',5,523,1184,1710,'6;',5,734,5,'Setup,"User","pre-font");',1710,'7;',5,734,5,'Font,"Check");if(',5,'Font.register.length){',5,734,5,'Font,"LoadRegistered")}this.inited=1},User',304,'a){if(',5,'Setup.UserEvent[a',']){(',5,1760,'])()}},UserEvent:{"pre-font":null,onload:null}};',5,'Update={',421,304,'d){for(var a in d){for(var b in d[a]){for(var c in d[a',349,5,'TeX[a][b][c]=d[a][b][c]}}}},TeXfontCodes',304,'c){',1320,708,'c[a].',1384,5,'TeX[a][b].c=c[a][b]}}}};',5,'Browser={allowAbsolute:1,allowAbsoluteDelim:0,','separateSkips',':0,valignBug:0,operaHiddenFix:"",','msieCenterBugFix',':"",','msieInlineBlockFix',':"",msieSpaceFix:"",imgScale:1,renameOK:1,',1646,':0,delay:1,','processAtOnce',':16,version:0,','TestSpanHeight',358,5,314,'=\'<span><','span style="\'+this.block','+\';height:2em',';width:1px','"></span>x','</span>\';var b=',5,324,';',387,'b',325,';this.spanHeightVaries=(b',331,'>=a',331,'&&b',331,'>0);this.spanHeightTooBig=(b',331,'>a',331,');',5,314,'=""},','TestInlineBlock',358,'this.block="display',':-','moz-inline-box";','this.hasInlineBlock','=',5,'BBoxFor(\'<span style="\'+this.block','+\';width:10px;height:5px"></span>\').w>0;if','(',1828,'){',5,'styles[".typeset',' .',176,'"].display="-',1827,472,5,1837,' .spacer"].display','}',28,1825,':',178,'";',1828,'=',5,1831,1832,'(!',1828,624,'this.block+=";overflow:',180,'";var d=',5,'BBoxFor("x").h;this.mozInlineBlockBug=',5,1831,'+";height:"+d+\'px;width:1px',1801,'<',1798,'+";height:"+d+"px',1800,';vertical-align:-"+d+\'px',451,'h>2*d;this.widthAddsBorder=',5,1831,'+\';overflow:',180,';height:1px;width:10px',';border-left:','10px solid',451,'w>10;',350,5,1831,1867,1801,'\').h,b=',5,1831,1867,1881,78,1801,'\').h,a=',5,1831,1799,451,'h;this.msieBlockDepthBug=(c==d);','this.msieRuleDepthBug','=(b==d',');this.blankWidthBug=(','a==0)},','TestRenameOK',358,5,314,'="<span></span>";',387,5,324,';a.setAttribute("name","','jsMath_test','");this.renameOK=(',5,14,'getElementsByName("',1916,'").length>0);',5,314,1822,'TestStyleChange',358,5,314,'=\'<span ID="',1916,'">x</span>\';var b=',5,324,';',387,328,';',5,368,1642,'({"#',1916,'":"font-size:200%"});this.',1646,'=(',328,'==a);',5,314,1822,'VersionAtLeast',304,338,1430,'this.version',').split(".");','b=',1430,'b',1957,'if(b[1]==null){b[1]="0"}',306,'a[0]>b[0]||(a[0]==b[0]&&a[1]>=b[1])},Init',358,5,26,'="unknown";this.',1823,433,1793,433,1907,433,1926,433,'MSIE',433,'Mozilla',433,'Opera',433,'OmniWeb',433,'Safari',433,'Konqueror();if(','this.allowAbsoluteDelim','){',5,'Box.DelimExtend=',5,'Box.DelimExtendAbsolute;',5,'Box.Layout=',5,'Box.LayoutAbsolute}',28,5,'Box.DelimExtend=',5,'Box.DelimExtendRelative;',5,'Box.Layout=',5,'Box.LayoutRelative}',442,1783,'){',5,'HTML.Place=',5,'HTML.','PlaceSeparateSkips',';',5,'Typeset.prototype.','Place=',5,2017,2014,'}},MSIE',358,'if(',5,'BBoxFor("<!--[if ','IE]>IE','<![endif]-->").w','){',5,26,'="MSIE";if(',5,36,'=="pc"){this.','IE7=(',1,655,'!=null);this.','IE8=(',5,2026,'gte IE 8]>IE8',2028,'>0);','this.isReallyIE8','=(',5,14,'documentMode',2039,'quirks=(',5,14,'compatMode=="BackCompat");','this.msieMode','=(',5,14,2050,'||(this.quirks?5:7));this.msieStandard6=!this.quirks&&!this.IE7;',1988,905,1783,'=1',';this.buttonCheck=1;this.','msieBlankBug=1;this.','msieAccentBug',905,'msieRelativeClipBug','=1;this.msieDivWidthBug=1;this.',1271,905,'msieIntegralBug',905,'waitForImages',905,'msieAlphaBug','=!this.IE7;this.','alphaPrintBug',2079,1785,'="position:relative; ";this.',1787,'=" display:',178,';";this.msie8HeightBug=this.msieBBoxBug=(',2056,'==8',1905,2056,'!=8);this.msieSpaceFix=(',2046,'?\'<',1683,178,'; ','margin-right:-1px; width:1px"></span','>\':\'<span style="',2098,'>\');',5,'Macro("','joinrel','","\\\\mathrel{\\\\','kern-5mu}"),',5,'Parser.prototype.mathchardef.','mapstocharOrig','=',5,2108,'mapstochar;',472,5,2108,2113,5,2103,'mapstochar","\\\\','rlap{\\\\',2109,'\\\\,}\\\\kern1mu"),',5,1837,' .arial"]={"font-family":"\'Arial unicode MS\'"};',0,'this.IE7||this.quirks){',5,'styles["#jsMath_message"].',877,472,5,2130,'width;',5,'styles["#jsMath_panel"].',877,472,5,2137,'width;',5,'styles["#jsMath_button"].','width="1px";',5,2144,877,472,5,2144,'width;',5,1136,'=',5,1131,1136,1267,':"absolute",zIndex:101});',5,1,'attachEvent("','onscroll",',5,'Controls.MoveButton',');',5,1,2163,'onresize",',5,2166,');',5,2166,'()}',5,'styles["#jsMath_noFont .link"].','display="',178,'";',472,5,1837,1845,';',5,'styles[".tex2math_div','"]={};',5,'Add(',5,2189,'"],',5,'styles["div.',59,'"]);',5,2189,'"].width="100%";',5,2189,'"].',2180,178,'";',5,1837,'"]["letter-spacing"]="0";if(','screen.deviceXDPI','&&','screen.logicalXDPI','&&',2212,'!=',2214,313,'imgScale*=',2214,'/',2212,';',5,532,'alpha=0}if(',1903,'){',5,408,'=',5,'HTML.msieStrut}}',28,'if(',5,36,'=="mac"){this.msieAbsoluteBug',905,'msieButtonBug',2071,2067,'quirks=1;',5,368,'Script("',2,'-msie-mac.js");',5,'Parser.prototype.macros.angle=["Replace","ord",\'<font face="Symbol">&#x8B;</font>\',"',54,'"];',5,2137,'width="42em";',5,532,'printwarn=0}}this.',1791,'=Math.max(Math.floor((this.',1791,'+1)/2),1);',5,2103,'not',2105,2121,'kern3mu/}}");',5,'Macro("angle","\\\\raise1.','84pt','{\\\\kern2.5mu\\\\rlap{\\\\scriptstyle/}\\\\','kern.5pt\\\\','rule{.4em}{-','1.5pt}{1.84pt}\\\\kern2.5mu}")}},',1979,358,'if(',5,180,'.ATTRIBUTE_NODE&&',5,1,'directories){',5,26,'="',1979,'";if(',5,36,2035,2080,'=1}',1988,'=1;',5,2144,'cursor=',5,2179,'cursor="pointer",',5,2103,'not',2105,2121,'kern3mu/}}");',5,2271,'34pt',2273,2275,'1pt}{1.34pt}\\\\kern2.5mu}");if(',38,'vendor=="Firefox"){',1956,'=',38,'vendorSub}',28,'if(',38,'userAgent.match(" Firefox/([0-9.]+)([a-z ]|$)")){',1956,'=RegExp.$1}}',442,1952,'("3.0")){this.mozImageSizeBug=this.lineBreakBug=1}}},',1983,358,'if(',38,'accentColorName){',5,26,'="',1983,'";','this.allowAbsolute','=',1828,';',1988,'=',2341,';this.valignBug=!',2341,2066,1191,'=1;',5,'noChangeGlobal=1;',0,1828,'){',5,368,'Scri'],
+  ['pt("','jsMath','-old-browsers.js','")}}},Opera',':function(){','if(this.','spanHeightTooBig){',1,'.browser="','Opera";','var b=','navigator.userAgent.match','("Opera 7");','this.allowAbsolute=0;this.','delay=10;this.operaHiddenFix="[Processing]";if(b){',1,'.Setup.','Script','("',1,2,'")}','var a=','navigator.appVersion.match','(/^(\\d+\\.\\d+)/);if(a){','this.version=a','[1]}else{this.vesion=0}this.operaAbsoluteWidthBug=this.operaLineHeightBug=(a[1]>=9.5&&a[1]<9.6)}},Safari',4,'if(',23,'(/Safari\\//)){',1,8,'Safari";if(navigator.vendor','.match(/','Google/)){',1,8,'Chrome"}',22,11,'("Safari/([0-9]+)");a=(a)?a[1]:400;',25,';',1,'.TeX.','axis_height','+=0.05;this.','allowAbsoluteDelim=','a>=125;this.safariIFRAMEbug=a>=312&&a<412;this.safariButtonBug=a<412;this.safariImgBug=1;this.textNodeBug=1;this.lineBreakBug=a>=526;this.buttonCheck=a<500;this.styleChangeDelay=1;',1,'.Macro("not","\\\\mathrel{\\\\rlap{\\\\kern3.25mu/}}")}},','Konqueror',4,'if(','navigator.product','&&',55,'.match("',52,'")){',1,8,52,'";',13,48,'0;if(',11,'(/',52,'\\/(\\d+)\\.(\\d+)/)){if(RegExp.$1<3||(RegExp.$1==3&&RegExp.$2<3)){this.separateSkips=1;this.valignBug=1;',1,16,17,'("',1,2,'")}}',1,'.Add(',1,'.styles,{".typeset .cmr10":"','font-family: ',1,'-','cmr10, ',1,' cmr10',', serif','",".typeset .','cmbx10":"',83,1,'-cmbx10, ',1,' cmbx10, ',1,'-',86,1,88,90,'cmti10":"',83,1,'-cmti10, ',1,' cmti10, ',1,'-',86,1,88,90,'cmmi10":"',83,1,'-cmmi10, ',1,' cmmi10',90,'cmsy10":"',83,1,'-cmsy10, ',1,' cmsy10',90,'cmex10":"',83,1,'-cmex10',', ',1,' cmex10"});',1,'.Font.testFont','="',1,132,', ',1,' cmex10"}}};',1,'.Font={testFont:"',1,132,'",fallback:"symbol",register:[],message:"<b>No ',1,' TeX fonts ','found</b> -- using',' image fonts instead','.<br/>\\nThese may be slow and might not print well.<br/>\\nUse the ',1,' control panel to get additional information','.",','extra_message',':\'Extra',150,'not found: <b><span id="jsMath_ExtraFonts"></span></b><br/>Using',152,'.  This may be slow and might not print well.<br/>\\nUse the ',1,155,'.\',','print_message',':"To print higher-resolution math symbols, click the<br/>\\n<b>Hi-Res Fonts for Printing</b> button on the ',1,' control panel.<br/>\\n",','alpha_message',':"If the math symbols print as black boxes, turn off <b>image alpha channels</b><br/>\\nusing the <B>Options</B> pane of the ',1,169,'Test1',':function(','c,','f,d,e){if(f==null){f=124}if(d==null){d=2}if(e==null){e=""}var b=jsMath.BBoxFor(\'<span style="font-family: \'+e+c+\', serif">\'+jsMath.TeX[c][f].c+"</span>");var a=jsMath.BBoxFor(\'<span style="font-family: serif">\'+jsMath.TeX[c][f].c+"</span>");return(','b.w>d*a.w&&b.h!=0)},Test2',175,'c,',177,'a.w>d*b.w&&b.h!=0)},CheckTeX',4,22,1,'.BBoxFor(\'<span ','style="font-family',': \'+',1,137,'+\', serif">\'+',1,45,'cmex10[1].c+"</span>");',1,'.nofonts','=((a.w*3>a.h||a.h==0)&&!this.Test1("cmr10",null,null,"',1,'-"));if(!',1,196,'){return}},Check',4,22,1,'.Controls.','cookie;this.CheckTeX();if(',1,196,'){if(a.autofont||a','.font=="tex"){','a.font=this.fallback;if(a.warn){',1,'.nofontMessage=1;a.warn=0;',1,206,'SetCookie(0);if','(',1,'.window.NoFontMessage','){',1,220,'()}else{','this.Message(this.','message)}}}}else{if(a.autofont){a.font="tex"}if(a',211,'return}}if(',1,'.noImgFonts){','a.font="unicode"}if(a','.font=="unicode','"){',1,16,17,'("',1,'-fallback','-"+',1,'.platform+".js");',1,'.Box.TeXnonfallback=',1,'.Box.TeX',';',1,246,'=',1,'.Box.TeXfallback;return}','if(!a.print&&a.printwarn){this.','PrintMessage','((',1,'.Browser.','alphaPrintBug&&',1,206,'cookie.alpha)?this.',166,'+this.',170,':this.',166,')}if(',1,257,'waitForImages){',1,'.Script.','Push(',1,'.',17,',"WaitForImage",',1,'.blank)}if(a.font=="symbol"){',1,16,17,'("',1,239,'-symbols.js");',1,'.Box.TeXnonfallback=',1,246,';',1,246,'=',1,252,1,'.Img.SetFont','({cmr10:["all"],cmmi10:["all"],cmsy10:["all"],cmex10:["all"],cmbx10:["all"],cmti10:["all"]});',1,'.Img.LoadFont','("cm-fonts")},Message',175,'a){if(',1,'.Element("Warning',60,'return}',10,1,16,'DIV("Warning','",{});b.innerHTML=\'<center><table><tr><td><div ','id="jsMath_noFont"><div ','class="message">\'+a','+\'<div style="text-align:left"><span style="float:left; margin: 8px 0px 0px 20px"><span onclick="',1,206,'Panel()" ','title=" Open ','the ',1,' Control Panel',' " class="link">',1,323,'</span></span','><span style="margin: 8px 20px 0px 0px; float:right"><span onclick="',1,'.Font.','HideMessage','()" title=" Remove this font warning message',324,'Hide this Message',327,'></div><div style="height:6px"></div><br clear="all"/></div></','div><div style="width:22em; height:1px"></div></td></tr></table></center><hr/>\'},',331,4,22,1,306,'");if(a','){a.style.display="none"}},',254,175,304,1,'.Element','("PrintWarning',60,308,10,1,16,'DIV',350,313,315,'+\'</',337,'Register',175,'h,b){if(typeof(h)=="string"){h={name:h}}if(!',1,16,'inited&&!b){','this.register','[',368,'.length]=h;',308,'var i=h.name;',22,'i.replace(/10$/,"");var f=',1,45,'fam.length;if(h.prefix==null){h.prefix=""}if(!h.style){h.',187,': "+h.prefix+i+", serif"}if(!h.styles){h.styles={}}if(!h.macros){h.macros={}}',1,45,'fam[f]=i;',1,45,'famName[i]=f;h.macros[a]=["HandleFont",f];',1,80,1,'.Parser.prototype.macros,h.macros);h.styles[".typeset ."+i]=h.style;',1,16,'Styles(h.styles);if(',1,'.initialized){',1,272,'Push(',1,'.Setup,"TeXfont",i)}var c=',1,206,'cookie;var e=!',1,196,'&&h.test(i,h.testChar,h.testFactor,h.prefix);if(e&&c',211,'if(h.tex){h.tex(i,f,h)}',308,'if(!e&&c.warn&&c.font=="tex"&&!',1,196,'){if(!c.fonts.match("/"+i+"/")){c.fonts+=i+"/";',1,206,217,'(!',1,306,60,225,157,')}var g=',1,'.Element("ExtraFonts");if(g){if(g','.innerHTML','!=""){g',426,'+=","}g',426,'+=" "+h.prefix+i}}}if(c',232,'"||',1,230,'if(h.fallback){h.fallback(i,f,h)}',308,'var d={};if(c.font=="symbol"&&h.symbol!=null){d[i]=h.symbol(i,f,h)}else{d[i]=["all"]}',1,298,'(d);',1,301,'(i);if(',1,'.initialized){',1,272,'Push(',1,'.Img,"Scale");',1,272,'Push(',1,'.Img,"UpdateFonts")}},LoadRegistered',4,22,'0;while(a<',368,'.length){this.Register(',368,'[a++],1)}',368,'=[]},Load',175,'a){',1,16,17,'(this.URL(a))},URL',175,'a){','return ',1,'.Img.root+a+"/def.js"}};',1,'.Controls={cookie:{scale:100,font:"tex",autofont:1,scaleImg:0,alpha:1,warn:1,fonts:"/",printwarn:1,stayhires:0,button:1,progress:1,asynch:0,blank:0,print:0,keep:"0D",global:"auto",hiddenGlobal:1},','cookiePath',':"/",','noCookiePattern',':/^(file|mk):$/,Init',4,'this.panel=',1,16,'DIV("panel",{display:"none"},',1,'.fixedDiv);','if(!',1,257,'msieButtonBug){this.Button',224,'setTimeout("',1,206,'Button()",500)}},Panel',4,1,'.Translate.Cancel();',5,'loaded){this.Main',224,1,272,'delayedLoad(',1,'.root+"',1,'-controls.html")}},Button',4,22,1,16,'DIV("button",{},',1,489,'a.',320,1,323,' ";a',426,'=\'<span onclick="',1,206,'Panel()">',1,'</span>\';if(!',1,'.Global.','isLocal&&!',1,'.noShowGlobal){a',426,'+=\'<span id="jsMath_global" ',320,1,' Global Panel " onclick="',1,532,'Show(1)">Global&nbsp;</span>\'}if(a.offsetWidth<30){a.style.width="auto"}if(!','this.cookie','.button',344,'MoveButton',4,'var a=(',1,257,'quirks?document.body:document.documentElement);',1,'.fixedDiv.style.','left=a.scrollLeft+"px";',1,554,'top=a.scrollTop+a.clientHeight+"px";',1,554,'width=a.clientWidth+"px"},GetCookie',4,'if(','this.defaults','==null){',564,'={}}',1,80,564,',',544,');this.userSet={};var c=',1,'.document.cookie',';if(',1,'.window.location','.protocol.match(this.',481,')){c=this.','localGetCookie','();this.','isLocalCookie','=1}if(c',34,1,'=([^;]+)/)){var d=unescape(RegExp.$1).split(/,/);for(',10,'0;b<d.length;b++){',22,'d[b].match(/(.*):(.*)/);if(a[2].match(/^\\d+$/)){a[2]=1*a[2]}',544,'[a[1]]=a[2];this.userSet[a[1]]=1}}},',582,4,474,1,578,'.search.substr(1)},SetCookie',175,'f){var b=[];for(var e in ',544,'){if(',564,'[e]==null||',544,'[e]!=',564,'[e]){b[b.length]=e+":"+',544,'[e]}}b=b.join(",");',5,584,'){if(f==2){return"',1,'="+escape(b)}','this.','localSetCookie','(b,f)}else{b=escape(b);if(b==""){f=0}',5,479,'){b+="; path="+this.',479,'}',5,'cookieDomain','){b+="; domain="+this.',627,'}if(',544,'.keep!="0D"){var a={D',':1000*60*60*24',',W',633,'*7,M',633,'*30,Y',633,'*365};var d=new Date;d.setTime(d.getTime()+',544,'.keep.substr(','0,1)*a[',544,642,'1,1)]);b+="; expires="+d.toGMTString()}if(b!=""){',1,575,'="',1,'="+b;var c=',1,575,';if(f&&!c',34,1,'=/)){alert("Cookies must be enabled in order to save ',1,' options")}}}',474,'null},',619,175,'b,c){if(!c){',308,22,'String(',1,578,').replace(/\\?.*/,"");if(b!=""){a+="?',1,617,'if(a!=',1,578,'.href){this.Reload(a)}},Reload',175,'a){if(!this.loaded){',308,'this.loaded=0;',1,16,'inited=-100;',1,532,'ClearCache();if(a){',1,578,'.replace(a)}else{',1,578,'.reload()}}};',1,'.Click={CheckClick',175,'a){if(!a){a=',1,'.window.event}if','(a.altKey){',1,206,'Panel()}},CheckDblClick',175,'b){if(!b){b=',1,698,'(!',1,'.Click.DblClick){',1,'.Extension.Require("double-click",1);',22,'b;b={};for(var c in a){b[c]=a[c]}}',1,272,'Push(',1,'.Click,"DblClick",[b,this.alt])}};',1,'.TeX={thinmuskip:3/18,medmuskip:4/18,thickmuskip:5/18,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,',46,':0.25,default_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,integer:6553.6,scriptspace:0.05,nulldelimiterspace:0.12,delimiterfactor:901,delimitershortfall:0.5,scale:1,atom:["ord","op","bin","rel","open","close","punct","ord"],fam:["cmr10","cmmi10","cmsy10","cmex10","cmti10","","cmbx10",""],famName:{cmr10:0,cmmi10:1,cmsy10:2,cmex10:3,cmti10:4,cmbx10:6},encoding:["&#xC0;","&#xC1;","&#xC2;","&#xC3;","&#xC4;","&#xC5;","&#xC6;","&#xC7;","&#xC8;","&#xC9;","&#xCA;","&#xCB;","&#xCC;","&#xCD;","&#xCE;","&#xCF;","&#xB0;","&#xD1;","&#xD2;","&#xD3;","&#xD4;","&#xD5;","&#xD6;","&#xB7;","&#xD8;","&#xD9;","&#xDA;","&#xDB;","&#xDC;","&#xB5;","&#xB6;","&#xDF;","&#xEF;","!","&#x22;","#","$","%","&#x26;","&#x27;","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","&#x3C;","=","&#x3E;","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","&#x5C;","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","&#x7E;","&#xFF;"],cmr10:[[0.625',',0.683],[0.','833',723,'778',723,'694',723,'667',723,'75',723,'722',723,'778',723,'722',723,'778',723,'722',723,'583',',0.694,0,{ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15}}],[0.556',',0.694],[0.','556',747,'833',747,'833',747,'278',',0.431],[0.','306',',0.431,0.194],[0.','5',747,'5',747,'5,0.628],[0.5',747,'5,0.568],[0.75',747,'444,0,0.17],[0.5',747,'722',755,'778',755,'5,0.528,0.0972],[0.903,0.683],[1.01',723,'778,0.732,0.0486],[0.278',',0.431,0,{','krn:{"108":-0.278,"76":-0.319}}],[0.278',',0.694,0,{','lig:{"96":','60}}],[0.5',747,'833',',0.694,0.194],[','0.5',',0.75,0.0556],[0.','833',784,'778',747,'278',777,'krn:{"63":0.111,"33":0.111},lig:{"39":34}}],[0.389',',0.75,0.25],[0.','389',792,'5,0.75],[','0.778,0.583,0.0833],[','0.278,0.106',',0.194],[0.','333',775,'lig:{"45":','123}}],[',797,'],[0.5',792,'5,0.644','],[0.5,0.644],[0.5,0.','644',807,'644',807,'644',807,'644],[0.5,0.644],[0.278',755,'278',757,'278,0.5',798,'778',',0.367,-0.133],[','0.472,0.5',798,'472',777,778,'62}}],[0.778',747,'75',',0.683,0,{krn:{"','116','":-0.0278,"','67',832,'79',832,'71',832,'85',832,'81',832,'84":-0.0833,"89":-0.0833,"86":-0.111,"87":-0.111}}],[0.','708',723,'722',723,'764',830,'88',832,'87',832,'65',832,'86',832,'89":-','0.0278}}],[0.','681',723,'653',',0.683,0,{','krn:{"111":-0.0833,"101":-0.0833,"117":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.111,"79":-0.0278,"67":-0.0278,"71":-0.0278,"81":-0.0278}}],[','0.785',723,'75',723,'361',830,'73":',859,'514',723,'778',830,'79',832,'67',832,'71',832,'81":-',859,'625',830,843,'917',723,'75',723,'778',830,'88',832,'87',832,'65',832,'86',832,'89":-',859,'681',830,'65','":-0.0833,"','111',832,'101',832,'97',832,'46',907,'44":-0.','0833}}],[0.','778,0.683',798,'736',830,'116',832,'67',832,'79',832,'71',832,'85',832,'81',832,843,'556',723,'722',830,'121',832,'101',907,'111',907,'114',907,'97',907,'65',907,'117":-0.',917,'75',723,'75',',0.683,0,{ic:0.','0139,',864,'1.03',956,'0139,',864,'0.75',830,'79',832,'67',832,'71',832,'81":-',859,'75',956,'025,krn:{"101',907,'111',907,'114',907,'97',907,'65',907,951,917,'611',723,'278',792,'5',747,'278',792,'5',747,'278,0.668],[0.','278',777,778,'92}}],[0.5',775,'krn:{"118',832,'106":0.0556,"121',832,'119":-',859,'556,0.','694,0',',{krn:{"101":0.0278,"111":0.0278,"120":-0.0278,"100":0.0278,"99":0.0278,"113":0.0278,"118":-0.0278,"106":0.0556,"121":-0.0278,"119":-0.0278}}],[0.','444',775,'krn:{"104',832,'107":-',859,'556',747,'444',755,'306',745,'12,"102":11,"108":13}}],[0.5',',0.431,0.194,{','ic:0.','0139,krn:{"','106":',859,'556',777,'krn:{"116',832,'117',832,'98',832,'121',832,'118',832,'119":-',859,997,'306,0.668',798,'528',777,'krn:{"97','":-0.0556,"','101',832,'97',832,'111',832,'99":-',859,'278',747,'833',775,'krn:{"116',832,'117',832,'98',832,'121',832,'118',832,'119":-',859,'556',775,'krn:{"116',832,'117',832,'98',832,'121',832,'118',832,'119":-',859,'5,0.431,0',1011,1009,'431,0.194',1011,'528',757,'392',755,'394',755,'389,0.615,0,{krn:{"121',832,'119":-',859,'556',775,'krn:{"119":-',859,'528',',0.431,0,{ic:0.',1027,'97',1050,'101',832,'97',832,'111',832,'99":-',859,'722',1109,1027,'101',832,'97',832,'111',832,'99":-',859,'528',755,'528',1025,'ic:0.',1027,'111',832,'101',832,'97',832,'46',907,'44":-0.',917,'444',755,'5',1109,'0278,',801,'124}}],[1',1109,'0278}],[0.','5',747,'5,0.668],[0.5,0.668]],cmmi10:[[0.615',956,'139',',krn:{"61":-0.0556,"59":-0.111,"58":-0.111,"127":0.',917,'833',830,'127":0.167}}],[0.','763',956,1152,'krn:{"127":0.0833}}],[0.','694',830,1166,'742',956,'0757,',1170,'831',956,'0812,krn:{"61',1050,'59":-0.0556,"58":-0.0556,"127":0.','0556}}],[0.','78',956,'0576,',1170,'583',956,'139',1162,1183,'667',863,1170,'612',956,'11,krn:{"61',1050,1182,1183,'772',956,'0502,',1170,'64',1109,'0037,','krn:{"127":',859,'566',',0.694,0.194,{ic:0.','0528,',1170,'518',1025,'ic:0.0556','}],[0.444',777,'ic:0.0378,krn:{"',1182,1183,'406',775,'krn:{"127":0.0556}}],[0.','438',1212,'0738,',1170,'497',1025,'ic:0.0359',',',1225,'469',777,'ic:0.',1152,1170,'354',775,1225,'576',755,'583',747,'603',1025,1209,859,'494',1109,'0637,krn:{"',1182,'0278}}],[0.','438',1212,'046,',1209,'0.111}}],[0.','57',1109,'0359}],[0.','517',1025,1170,'571',1109,'0359,krn:{"59',1050,'58":-0.',1183,'437',1109,'113,krn:{"',1182,1255,'54',1109,'0359,',1209,859,'596,0.694,0.194,{',1170,'626',1025,1225,'651',1212,'0359,',1209,1260,'622',1109,1263,'466',775,1170,'591',777,1170,'828',1109,1156,'517',1025,1170,'363,0.431,0.0972,{ic:0.0799,',1170,'654',1025,1209,'0.0833}}],[1',821,'1',821,'1',821,'1',821,'0.278',',0.464,-0.0363],[','0.278',1322,'0.5,0.465,-0.0347],[',1325,'0.5',755,'5',755,'5',755,'5',757,'5',757,'5,0.',1092,807,1092,807,'431',798,'278,0.106],[',797,798,'778',',0.539,0.0391],[','0.5,0.75,0.25,{krn:{"1',1050,'65',1050,'77',1050,'78',1050,'89":0.0556,"90":-0.',1183,'778',1348,1325,'0.531',777,1217,',',1170,'75',830,'127":','0.','139}}],[0.','759',956,'0502,',1170,'715',956,'0715,krn:{"61',832,1182,917,'828',956,1152,1225,'738',956,'0576,',1170,'643',956,'139',1162,917,'786',863,1170,'831',956,'0812,krn:{"61',1050,1182,1183,'44',956,'0785,',1209,1260,'555',956,'0962',1162,'167}}],[0.','849',956,'0715,krn:{"61',1050,1182,1183,'681',830,1369,859,'97',956,'109,krn:{"','61',1050,1182,917,'803',956,1426,'61',907,'61',832,1182,917,'763',956,1152,1170,'642',956,'139',1162,917,'791,0.683,0.194,{',1170,'759',956,'00773,',1170,'613',956,'0576,krn:{"61',1050,1182,917,'584',956,'139,krn:{"61',832,1182,917,'683',956,1426,'59":-0.111,"',1271,'111,"61',1050,1369,859,'583',956,'222',',krn:{"59":-0.167,"58":-0.167,"61":-0.111}}],[0.','944',956,'139',1479,'828',956,'0785,krn:{"61',907,'61',832,1182,917,'581',956,'222',1479,'683',956,'0715,krn:{"61',1050,1182,917,'389,0.75],[0.389',782,'0.389',782,'1,0.358,-0.142],[',1506,'0.417',777,1209,1260,'529',755,'429',747,'433',775,1225,'52',777,'krn:{"89":0.0556,"90',1050,'106":-0.111,"102":-0.167,"',1166,'466',775,1225,'49',1212,'108,krn:{"',1182,1413,'477',1025,1232,',',1209,859,'576',777,'krn:{"127":-',859,'345,0.66],[0.412,0.66,0.194,{ic:0.0572,krn:{"59',1050,1271,1183,'521',777,'ic:0.0315}],[0.298',777,'ic:0.0197,',1170,'878',755,'6',755,'485',775,1225,'503',1025,1170,'446',1025,1232,',',1170,'451',1109,1152,'krn:{"',1182,1183,'469',775,1225,'361,0.615,0,{',1170,'572',775,1209,859,'485',1109,'0359,',1209,859,'716',1109,'0269,',1170,'572',775,1209,859,'49',1025,1232,',',1225,'465',1109,'044,',1225,'322',775,1209,859,'384',1025,1170,'636',1025,1209,1260,'5,0.714,0,{ic:0.154}],[0.278',777,'ic:0.399}]],cmsy10:[[',796,'0.278,0.444,-0.0556],[',796,1325,796,'0.5,0.444,-0.0556],[',796,796,796,796,796,796,796,'1',782,1624,1624,'0.778',1322,'0.778,0.464,-0.0363','],[0.778,0.636,0.136',1639,1639,1639,1639,1639,'],[0.778',821,'0.778,0.483,-0.0169],[0.778',1348,'0.778',1348,'1',1348,'1',1348,'0.778',1348,'0.778',1348,'1',821,'1',821,'0.5',782,'0.5',782,'1',821,'1',782,'1',782,'0.778',1322,'1',821,'1',821,'0.611',782,'0.611',782,'1',821,'1',782,'1',782,'0.778',755,'275,0.556],[1',755,'667',1348,'0.667',1348,'0.889',782,'0.889',782,'0',782,'0',821,'0.556',747,'556',747,'667',755,'5',784,'722',747,'722',747,'778',747,'778',747,'611',747,'798',830,'48":0.','194}}],[0.657',956,'0304',',krn:{"48":0.',1371,'527',956,'0583',1729,1371,'771',956,'0278',1729,917,'528',956,'0894',1729,'111}}],[0.','719',956,'0993',1729,1745,'595',',0.683,0.0972,{ic:0.','0593',1729,1745,'845',956,'00965',1729,1745,'545',956,'0738,krn:{"48":',859,'678',1752,'185',1729,1413,'762',956,'0144',1729,1183,'69',830,1725,'139}}],[1.2',830,1725,1371,'82',956,'147',1729,917,'796',956,1738,1729,1745,'696',956,'0822',1729,917,'817,0.683,0.0972,{krn:{"48":',1260,'848',830,1725,917,'606',956,'075',1729,1371,'545',956,'254,krn:{"48":',859,'626',956,'0993',1729,917,'613',956,'0822,krn:{"48":',859,'988',956,'0822',1729,917,'713',956,'146',1729,1371,'668',1752,'0822',1729,917,'725',956,'0794',1729,1371,'667,0.556],[0.',1841,1841,1841,1841,'611',747,'611',747,'444',792,'444',792,'444',792,'444',792,'5',792,'5',792,'389',792,'389',792,'278',792,'5',792,'5',792,'611',792,'5',792,'278',782,'0.833,0.04,0.96],[0.75',723,'833',723,'417',1212,'111}],[0.',1841,'667,0.556',1639,1639,'],[0.444',782,'0.444',782,'0.444',782,'0.611',782,'0.778,0.694,0.13','],[',1897,'],[',1897,'],[',1897,']],cmex10:[[0.458',',0.04,1.16,{n:','16}],[0.458',1905,'17}],[0.417',1905,'104}],[0.417',1905,'105','}],[0.472,0.04,1.16,{n:','106',1913,'107',1913,'108',1913,'109}],[0.583',1905,'110}],[0.583',1905,'111',1913,'68',1913,'69}],[0.333',',0,0.6,{delim:{rep:','12}}],[0.556',1929,'13}}],[0.578',1905,'46}],[0.578',1905,'47}],[0.597',',0.04,1.76,{n:','18}],[0.597',1937,'19}],[0.736',',0.04,2.36,{n:','32}],[0.736',1941,'33}],[0.528',1941,'34}],[0.528',1941,'35}],[0.583',1941,'36}],[0.583',1941,'37}],[0.583',1941,'38}],[0.583',1941,'39}],[0.75',1941,'40}],[0.75',1941,'41}],[0.75',1941,'42}],[0.75',1941,'43}],[1.04',1941,'44}],[1.04',1941,'45}],[0.792',',0.04,2.96,{n:','48}],[0.792',1969,'49}],[0.583',1969,'50}],[0.583',1969,'51}],[0.639',1969,'52}],[0.639',1969,'53}],[0.639',1969,'54}],[0.639',1969,'55}],[0.806',1969,'56}],[0.806',1969,'57}],[0.806',',0.04,2.96],[','0.806',1989,'1.28',1989,'1.28',1989,'0.811',1937,'30}],[0.811',1937,'31}],[0.875',',0.04,1.76,{delim:{top:','48,bot:64,rep:66}}],[0.875',2001,'49,bot:65,rep:67}}],[0.667',2001,'50,bot:52,rep:54}}],[0.667',2001,'51,bot:53,rep:55','}}],[0.667,0.04,1.76,{delim:{bot:','52,rep:54',2009,'53,rep:55','}}],[0.667,0,0.6,{delim:{top:','50,rep:54',2013,'51,rep:55','}}],[0.889,0,0.9,{delim:{top:','56,mid:60,bot:58,rep:62',2017,'57,mid:61,bot:59,rep:62',2017,'56,bot:58,rep:62',2017,'57,bot:59,rep:62','}}],[0.889,0,1.8,{delim:{rep:','63',2025,'119}}],[0.889,0,0.3,{delim:{rep:62',2013,'120,bot:121,rep:63}}],[0.875',2001,'56,bot:59,rep:62}}],[0.875',2001,'57,bot:58,rep:62}}],[0.875',1929,'66}}],[0.875',1929,'67}}],[0.611',1937,'28}],[0.611',1937,'29','}],[0.833,0,1,{n:','71}],[1.11',',0.1,1.5],[','0.472,0,1.11,{ic:0.194,n:','73}],[','0.556,0,2.22,{ic:0.444}],[1.11,0',',1,{n:75}],[1.51,0','.1,1.5],[1.11,0',',1,{n:77}],[1.51,0',2050,',1,{n:79}],[1.51',2045,'1.06,0,1,{n:88}],[0.944,0,1,{n:89}],[',2046,'90',2043,'91',2043,'92',2043,'93',2043,'94',2043,'95}],[1.44',2045,'1.28',2045,2048,2050,2050,2050,2050,'.1,1.5],[0.944,0,1,{n:97}],[1.28',2045,'0.556,0.722,0,{n:','99','}],[1,0.75,0,{n:','100}],[1.44,0.75],[',2078,'102',2080,'103}],[1.44,0.75],[0.472',1937,'20}],[0.472',1937,'21}],[0.528',1937,'22}'],
+  ['],[0.','528',',0.04,1.76,{n:','23}],[0.528',2,'24}],[0.528',2,'25}],[0.667',2,'26}],[0.667',2,'27','}],[1,0.04,','1.16,{n:113}],[1',2,'114',12,'2.36,{n:115',12,'2.96,{n:116}],[1.06,0,1.8,{delim:{top:118,bot:116,rep:117}}],[1.06,0,0.6],[1.06,0.04,0.56',0,'778',',0,0.6,{delim:{','top:126,','bot:127,rep:119','}}],[0.667',22,'top:120,rep:63}}],[0.667',22,'bot:121,rep:63}}],[0','.45,0.12],[0',30,30,30,'.778',22,23,'rep:119}}],[0.778',22,24,'}}]],cmti10:[[0.627',',0.683,0,{ic:0.','133}],[0.818,0.683',0,'767',41,'094}],[0.','692,0.683',0,'664',41,'153}],[0.743',41,'164}],[0.','716',41,'12}],[0.','767',41,'111}],[0.716',41,'0599}],[0.767',41,'111}],[0.716',41,'103}],[0.','613',',0.694',',0.194,{ic:0.','212,krn:{"39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":','14,"108":15}}],[0.','562',67,68,65,'588',67,68,65,'882',67,68,65,'894',67,68,65,'307',',0.431,0,{ic:0.','0767}],[0.','332,0.431',68,'0374}],[0.511',',0.694],[0.','511',',0.694,0,{ic:0.','0969','}],[0.511,0.','628',',0,{ic:0.','083}],[0.511',95,'108',97,'562',99,65,'831',93,'46,0,0.17',0,'537',67,68,'105}],[0.','716',88,'0751','}],[0.716',88,117,97,'528,0.0972,{ic:0.0919}],[0.883',41,56,'985',41,56,'767,0.732,0.0486,{ic:0.',46,'256,0.431,0,{krn:{"108":-0.256,"76":-0.321}}],[0.307',95,'124,lig:{"96":','60}}],[0.','514',95,'0696}],[0.818',67,68,'0662}],[0.769',93,'818',',0.75,0.0556',',{ic:0.136}],[0.','767',95,'0969}],[0.307',95,'124',',krn:{"','63":0.102,"33":0.102','},lig:{"39":34}}],[0.','409',',0.75,0.25,{ic:0.','162}],[0.409',153,'0369',97,'75',99,'149}],[0.767,0.562,0.0567,{ic:0.0369','}],[0.307,0.','106',',0.194],[0.','358',88,'0283,','lig:{"45":123}}],[0.','307,0.106',0,'511',153,'162',97,'644,0',',{ic:0.136}],[0.511,0.644,0',175,175,175,'.194',175,175,175,179,175,175,143,'307',88,'0582',161,'431',68,'0582',161,'5',68,'0756}],[0.767,0.367,-0.133,{ic:0.0662',97,'5',163,'511',95,'122,lig:{"96":62}}],[0.767',95,'096}],[0.743,0.683,0,{','krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.0256,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',208,'86','":-0.102,"','87',212,'101":-0.0511,"97":-0.0511,"111":-0.0511,"100":-0.0511,"99":-0.0511,"103":-0.0511,"113":-0.0511}}],[0.','704',41,65,'716',41,'145}],[0.','755',41,'094',149,'88','":-0.0256,"','87',227,'65',227,'86',227,'89','":-0.0256}}],[0.','678',41,56,'653',41,'133',149,'111',208,'101',208,'117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',212,'79":-0.0256,"67":-0.0256,"71":-0.0256,"81":-0.0256}}],[0.','774',41,'0872}],[0.743',41,53,'386',41,'158}],[0.525',41,'14}],[0.769',41,'145',149,251,'627,0.683,0,{krn:{"84',208,'89',208,'86',212,'87',212,215,'897',41,53,'743',41,53,'767',41,'094',149,'88',227,'87',227,'65',227,'86',227,'89',235,'678',41,'103',149,'65":-0.0767}}],[0.','767,0.683',68,46,'729',41,'0387,',206,'0.0256,"84',208,'89',208,'86',212,'87',212,215,'562',41,56,'716',41,'133',149,'121',208,'101',208,'111',248,'117',208,299,'743',41,53,'743',41,'184',149,'111',208,'101',208,'117',248,'65',212,251,'999',41,'184',149,299,'743',41,'158',149,251,'743',41,'194',149,'101',208,'111',248,'117',208,299,'613',41,221,'307',153,'188}],[0.514',95,'169}],[0.307',153,114,'511',95,'0665',161,'668',99,'118}],[0.307',95,132,'92}}],[0.','511',88,89,'46',95,'0631',149,215,'46',88,'0565',149,215,'511',95,'103',',krn:{"108":0.0511}}],[0.','46',88,117,149,215,'307',67,68,69,'12,"102":11,"108":13}}],[0.','46,0.431',68,'0885}],[0.','511',95,89,'307,0.655',99,'102',161,'655',68,221,'46',95,'108}],[0.','256',95,'103',405,'818',88,89,'562',88,'0767',149,'39":-0.102}}],[0.511',88,'0631',149,215,'511,0.431',68,'0631',149,215,'46,0.431',68,418,'422',88,'108',149,215,'409',88,'0821}],[0.332,0.615',99,'0949}],[0.537',88,89,'46',88,431,'664',88,'108',405,'464',88,56,'486,0.431',68,418,'409',88,'123}],[0.511',88,'0921',',lig:{"45":124}}],[1.','02',88,'0921}],[0.511',95,'122',97,'668',99,'116',97,'668',99,'105}]],cmbx10:[[0.692',',0.686],[0.','958',500,'894',500,'806',500,'767',500,'9',500,'831',500,'894',500,'831',500,'894',500,'831',500,'671',95,'109,krn:{"39":0.109,"63":0.109,"33":0.109,"41":0.109,"93":0.109},lig:{"105":',70,'639',93,'639',93,'958',93,'958',93,'319',',0.444],[0.','351,0.444',163,'575',93,'575',93,'575,0.','632',0,'575',93,541,'596',0,'869',93,'511,0,0.17',0,'597',93,'831',534,'894',534,541,'542,0.0972],[1.04,0.686],[1.17',500,'894,0.735,0.0486',0,'319',',0.444,0,{krn:{"','108":-0.319,"76":-0.378}}],[0.35',',0.694,0,{lig:{"96":',133,'603',93,'958',67,163,'575',142,0,'958',142,0,'894',93,'319',',0.694,0,{krn:{"','63":0.128,"33":0.128',151,'447',',0.75,0.25],[0.','447',587,541,'75',0,'894,0.633,0.133',0,'319,0.156',163,'383,0.444,0,{',167,595,0,'575',587,541,'644','],[0.575,0.644],[0.575,0.644',605,605,605,0,541,'644',0,'319',534,'319,0.444',163,'35,0.5',163,'894,0.391,-0.109',0,'543,0.5',163,'543',567,'62}}],[0.894',93,'869',',0.686,0,{krn:{"','116','":-0.0319,"','67',630,'79',630,'71',630,'85',630,'81',630,'84":-0.0958,"89":-0.0958,"86":-0.128,"87":-0.128}}],[','0.818',500,'831',500,'882',628,'88',630,'87',630,'65',630,'86',630,'89','":-0.0319}}],[0.','756',500,'724,0.686,0,{','krn:{"111":-0.0958,"101":-0.0958,"117":-0.0958,"114":-0.0958,"97":-0.0958,"65":-0.128,"79":-0.0319,"67":-0.0319,"71":-0.0319,"81":-0.0319}}],[','0.904',500,'9',500,'436',628,'73','":0.0319}}],[0.','594',500,'901',628,'79',630,'67',630,'71',630,'81',657,'692',628,641,'1.09',500,'9',500,'864',628,'88',630,'87',630,'65',630,'86',630,'89',657,'786',628,'65":-0.0958,"111',630,'101',630,'97',630,'46":-0.0958,"44":-0.0958}}],[0.','864,0.686',163,'862',628,'116',630,'67',630,'79',630,'71',630,'85',630,'81',630,641,'0.639',500,'8',628,'121',630,'101":-0.0958,"111":-0.0958,"114":-0.0958,"97":-0.0958,"65":-0.0958,"117":-0.0958}}],[0.','885',500,'869,0.686',99,'016,',661,'1.19,0.686',99,'016,',661,'0.869',628,'79',630,'67',630,'71',630,'81',657,'869,0.686',99,'0287',149,733,'703',500,'319',587,'603',93,'319',587,'575',93,'319',93,'319',567,388,'559',565,'118',630,'106":0.0639,"121',630,'119',657,'639',67,',0',',{krn:{"101":0.0319,"111":0.0319,"120":-0.0319,"100":0.0319,"99":0.0319,"113":0.0319,"118":-0.0319,"106":0.0639,"121":-0.0319,"119":-0.0319}}],[0.','511',565,'104',630,'107',657,'639',93,'527',534,'351',95,523,415,541,'444',68,'016',149,'106',669,'639',583,'116',630,'117',630,'98',630,'121',630,'118',630,'119',657,'319',93,'351',67,163,'607',583,'97":-0.0639,"101',630,'97',630,'111',630,'99',657,'319',93,'958',565,'116',630,'117',630,'98',630,'121',630,'118',630,'119',657,'639',565,'116',630,'117',630,'98',630,'121',630,'118',630,'119',657,541,'444,0',785,'639,0.444,0',179,785,'607,0.444',163,'474',534,'454',534,'447,0.635,0,{krn:{"121',630,'119',657,'639',565,'119',657,872,99,'016',149,'97":-0.0639,"101',630,'97',630,'111',630,'99',657,'831,0.444',99,'016',149,'101',630,'97',630,'111',630,'99',657,'607',534,872,68,'016',149,'111',630,'101',630,'97',630,709,'511',534,541,'444',99,'0319',486,'15,0.444',99,'0319}],[0.575',93,'575',93,'575',67,']]};','jsMath.Img','={fonts:[50,60,70,85,100,120,144,173,207,249,298,358,430],w:{"50":6.9,"60":8.3,"70":9.7,"85":11.8,"100":13.9,"120":16.7,"144":20,"173":24,"207":28.8,"249":34.6,"298":41.4,"358":49.8,"430":59.8},best:4,update:{},factor:1,loaded:0,SetFont',':function(','b){for(var a in b){if(!','this.update','[a]){',943,'[a]=[]}',943,'[a]=',943,'[a].concat(b[a])}},AddFont',941,'a,b){if(!',939,944,939,'[a]={}}jsMath.Add(',939,'[a],b)},UpdateFonts',':function(){','var e=',943,';','if(!this.loaded){','return}for(var a in e){for(var b=0;b<e[a].length;b++){var d=e[a][b];if(d=="all"){for(d in ','jsMath.TeX[','a]){',965,'a][d].img','={}}}else{',965,968,'={}}}}',943,'={}},BestSize',959,'var b=jsMath.em*this.factor;var a=','this.w[this.fonts[','0]];for(var c=1;c<this.fonts.length;c++){if(b<(',977,'c]]+2*a)/3){return c-1}a=',977,'c]]}return c-1},Scale',959,963,'return}this.best=this.BestSize();this.em=',939,'.w[this.fonts[this.best]];','this.scale','=(jsMath.em/this.em);','if(Math.abs(',988,'-1)<0.12){',988,'=1}},URL',941,'a,b,d){var c=(','jsMath.Controls.cookie.','alpha)?"/alpha/":"/plain/";if(d','==null){d','="def.js"}else{d="char"+d+".png"}if(b!=""){b+="/"}','return this.','root+a+c+b+d},LoadFont',941,'a){',963,'this.Init()}jsMath.Setup.Script(this.URL(a,""))},Init',959,'if(',997,'print||',997,'stayhires','){',997,'print=',997,1012,';this.factor*=3;if(!','jsMath.Controls.','isLocalCookie||!jsMath.Global.isLocal){',1019,'SetCookie(0)}if(','jsMath.Browser.','alphaPrintBug){',997,'alpha=0}}var b="0123456789ABCDEF";this.HexCode=[];for(var c=0;c<128;c++){var d=Math.floor(c/16);var a=c-16*d;this.HexCode[c]=b.charAt(d)+b.charAt(a)}this.loaded=1}};jsMath.HTML={Em',941,'a){',990,'a)<0.000001){a=0}var b=String(a);b=b.replace(/(\\.\\d\\d\\d).+/,"$1");return b+"em"},Spacer',941,'a){if(a==0){return""}return ',1023,'msieSpaceFix+\'<','span class="spacer" style="margin-','left:\'+this.Em(','a)+\'"></span>\'},Blank',941,'b,f,i,g){var a','="";var e="";','if(g){e+="border-left',':"+this.Em(','b)+" solid;";if(',1023,'widthAddsBorder){b=0}}if(b==0){if(',1023,'blankWidthBug){if(',1023,'quirks','){e+="width:1px',';";a=\'<',1035,'right:-1px"></span>\'}else{if(!g',1050,';margin-right:-1px;"}}}}else{e+="width',1042,'b)+";"}if(i==null){i=0}if(f){var c=this.Em(f+i);if(g&&f*jsMath.em<=1.5){c="1.5px";f=1.5/jsMath.em}e+="height:"+c+";"}if(',1023,'mozInlineBlockBug){i=-f}if(',1023,'msieBlockDepthBug','&&!g){i-=jsMath.d}if(i){e+="','vertical-align:"+','this.Em(-i)}return a+\'<span class="blank" ','style="\'+','e+\'"></span>\'},Rule',941,'a,b){if(b==null){b','=jsMath.TeX.default_rule_thickness}',1001,'Blank(a,b,0,1)},Strut',941,'a){',1001,'Blank(1,a,0,1)},msieStrut',941,'a){return','\'<img style="width:1px; height:\'+this.Em(a)+\'"/>\'},Class',941,'a,b){return\'<span class="\'+a','+\'">\'+b+"</span','>"},Place',941,'b,a,d){',990,'a)<0.0001){a=0}',990,'d)<0.0001){d=0}if(a||d){var c=\'<','span style="position',': relative',';\';if(a){c+=" margin-left',1042,'a)+";"}if(d){c+=" top:"+this.Em(-d)+";"}b=c',1081,'>"}return b},PlaceSeparateSkips',941,'e',',g,f,i,a,h){if(Math.abs(g)<0.0001){g=0}if(Math.abs(f)<0.0001){f=0}','if(f){var d=0;var c=0;','var b="";if(','i!=null){c=','a-h;d=i;b=" width',1042,'a-i)+";"}e=','this.Spacer','(d-c)+\'<',1089,1090,'; top:\'+this.Em(-f)+";left',1042,'c',')+";"+b+\'">\'+',1105,'(-d)+e+',1105,'(c)+"</span>"}if(g){e=',1105,'(g)+e}return e},PlaceAbsolute',941,'d',1098,'var c',1040,1100,1023,'msieRelativeClipBug&&',1101,1105,'(-i);g+=i;e=',1105,'(a-h)}if(',1023,'operaAbsoluteWidthBug){b=" width: "+this.Em(h+2)}d=\'<',1089,':absolute; ',1036,'g)+"; top',1042,'f',1112,'c+d+e+"&nbsp;</span>";','return d},','Absolute',941,'b,a,c,e,f){if(f!="none"){',990,'f)<0.0001){f=0}b=\'<',1089,1135,'top:\'+','jsMath.HTML.','Em(f)+\'; left:0em;">\'+b+"&nbsp;</span>"}if(e=="none"){e=0}b+=this.Blank((',1023,'lineBreakBug','?0:a),c-e,e);if(',1023,'msieAbsoluteBug){b=\'<',1089,':relative',';">\'+b+"</span>"}b=\'<',1089,1159,';\'+',1023,'msieInlineBlockFix',1081,'>";if(',1023,1154,'){b=\'<span style="display:inline-block; width:\'+',1151,'Em(a)+\'">\'+b+"</span>"}return b}};jsMath.Box=function(c,f,a,b,e){','if(e==null){','e=jsMath.d}this.type="typeset";this.w=a;this.h=b;this.d=e;this.bh=b;this.bd=e;this.x=0;this.y=0;this.mw=0;this.Mw=a;this.html=f;this.format=c};jsMath.Add(jsMath.Box,{defaultH:0,Null',959,'return ','new jsMath.Box("','null","",0,0,0)},Text',941,'l,k,b,m,j,i){var g=','jsMath.Typeset.AddClass(','k,l);g=','jsMath.Typeset.','AddStyle(','b,m,g);var c','=jsMath.EmBoxFor(','g);',960,1183,'TeX(b,m);var h=((k=="cmsy10"||k=="cmex10")?c.h-e.h:e.d*c.h/e.hd);var f=',1177,'text",l,c.w,c.h-h,h);f.style=b;f.size=m;f.tclass=k;if(i!=null){f.d=i*e.scale}else{f.d=0}if(j==null||j==1){f.h=0.9*e.M_height}else{f.h=1.1*e.x_height+e.scale*j}return f},TeX',941,'g,a,d,b){var h=',965,'a][g];if(h.d==null){h.d=0}if(h.h==null){h.h=0}if(h.img!=null&&h.c!=""){this.TeXIMG(a,g,',1183,'StyleSize(d,b))}var f=',1183,'TeX(d,b).scale;',960,1177,'text",h.c,h.w*f,h.h*f,h.d*f);e.style=d;e.size=b;if(h.tclass){e.tclass=h.tclass;if(h.img){e.bh=h.img.bh;e.bd=h.img.bd}else{e.bh=f*jsMath.h;e.bd=f*jsMath.d}}else{e.tclass=a;e.bh=f*',965,'a].h;e.bd=f*',965,'a].d;if(',1023,'msieFontBug&&','e','.html.match(/&#/)){','e','.html+=\'<span style="display:none">x</span','>\'}}return e},TeXfallback',941,'b,f,e,o){var m=',965,'f][b];if(!m.tclass){m.tclass=f}if(m.img!=null){',1001,'TeXnonfallback(b,f,e,o)}if(m.h!=null&&m.a==null){m.a=m.h-1.1*jsMath.TeX.x_height}var n=m.a;var l=m.d;var k=this.Text(m.c,m.tclass,e,o,n,l);var g=',1183,'TeX(e,o).scale;if(m.bh!=null){k.bh=m.bh*g;k.bd=m.bd*g}else{var j=k.bd+k.bh;var i=',1181,'k.tclass,k.html);i=',1183,1184,'e,o,i);k.bd',1186,'i+',1151,'Strut(j)).h-j;k.bh=j-k.bd;if(g==1){m.bh=k.bh;m.bd=k.bd}}if(jsMath.',1209,'k',1211,'k',1213,'>\'}return k},TeXIMG',941,'f,a,t){var o=',965,'f][a];if(o.img.size!=null&&o.img.size==t&&o.img.best!=null&&o.img.best==','jsMath.Img.best','){return}var g=(',939,'.scale!=1);var b=',1242,'+t-4;if(b<0){b=0;g=1','}else{if(','b>=','jsMath.Img.fonts','.length){','b=',1250,'.length-1',';g=1}}var s=',939,'[',1250,'[b]];var k=s[f][a];var i=1/',939,'.w[',1250,'[b]];if(b!=',1242,'+t-4){if(o.w!=null){i=o.w/k[0]}else{i*=',1250,'[t]/',1250,'[4]*',1250,'[',1242,']/',1250,'[b]}}var p=k[0]*i;var l=k[1]*i;var n=-k[2]*i;var q;var j=(o.w==null||Math.abs(o.w-p)<0.01)?"":" margin-right:"+',1151,'Em(o.w-p)+";";var e="";a=',939,'.HexCode[a];if(!g&&!',997,'scaleImg){if(',1023,'mozImageSizeBug||2*p<l||(',1023,'msieAlphaBug&&',997,'alpha)){e="height',':"+(k[1]*',1023,'imgScale',')+"px;"}e+=" width:"+(k[0]*',1023,1290,')+"px;";q=-k[2]+"px"}else{if(',1023,'mozImageSizeBug||2*p<l||(',1023,'msieAlphaBug&&',997,1287,':"+',1151,'Em(l*',1023,1290,')+";"}e+=" width:"+',1151,'Em(p*',1023,1290,')+";";q=',1151,'Em(n)}var r=(Math.abs(n)<0.01&&!',1023,'valignBug)?"":" ',1063,'q+";";var m=',939,'.URL(f,',1250,'[b],a);if(',1023,'msieAlphaBug&&',997,'alpha){','o.c=\'<img src="\'+','jsMath.blank+\'" ',1065,1023,'msieCenterBugFix+e+r+j','+" filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+m+"\', sizingMethod=\'scale\');\\" />"}else{',1326,'m+\'" ',1065,1023,1330,'+\'" />\'}o.tclass="normal";o.img.bh=l+n;o.img.bd=-n;o.img.size=t;o.img.best=',1242,'},Space',941,1077,' ','new jsMath.Box("html",',1151,'Spacer(a),a,0,0)},Rule',941,'a,c){if(c==null){c',1069,'var b=',1151,'Rule(a,c);return ',1343,'b,a,c,0)},GetChar',941,'b,a){var d=',965,'a][b];','if(d.img!=null){this.TeXIMG(a,b',',4)}if(d.tclass',999,'.tclass=a}if(!d.computedW){d.w',1186,1181,'d.tclass,d.c)).w',';if(d.h',999,'.h=jsMath.Box.defaultH}if(','d.d',999,'.d=0}d.computedW=1}',1142,'DelimBestFit',941,'e,j,d,g){if(j==0&&d==0){return null}var i;var f;d','=jsMath.TeX.fam[','d];var a=(g.charAt(1)=="S");var b=(g.charAt(0)=="S");while(j!=null){i=',965,'d][j];if(i.h==null){i',1367,'i.d==null){i.d=0}f=i.h+i.d;if(i.delim','){return[j,d',',"",e]}if(a&&0.5*f>=e',1381,',"SS",0.5*f]}if(b&&0.7*f>=e',1381,',"S",0.7*f]}if(f>=e||i.n==null',1381,',"T",f]}j=i.n}return null},DelimExtendRelative',941,'k,x,r,A,e){var s=',965,'r][x];var q','=this.GetChar(s.delim.','top?s','.delim.top',':s.delim.rep,r);var ','b',1393,'rep,r);var p',1393,'bot?s','.delim.bot',1396,'f=',1181,'b.tclass,b.c);','var l=b.w;var v=b.h+b.d;var g;var d;var m;var o;var u;var t;if(s','.delim.mid){var ','z',1393,'mid,r);t','=Math.ceil((k-(','q.h+q.d)-(','z.h+z.d)-(p.h+p.d))/(2*(b.h+b.d',')));k=2*','t*(b.h+b.d)+(q.h+q.d)+(','z.h+z.d)+(p.h+p.d);if(e){g=0}else{g=k/2+A}d=g;m=',1151,'Place(',1181,'q.tclass,q.c),0,g-q.h',')+',1151,1419,1181,'p.tclass,p.c),-(','q.w+p.w)/2,g-(k-p.d))+',1151,1419,1181,'z.tclass,z.c),-(p.w+z.w)/2,g-(k+z.h-z.d)/2);o=(l-z','.w)/2;if(Math.abs(o)<0.0001){o=0}if(o){m+=jsMath.HTML.Spacer(o)}g-=q.h+q.d+b.h;for(u=0;u<t;u++){m+=jsMath.HTML.Place(f,-l,g-u*v)}','g-=k/2-b.h/2;for(u=0;u<t;u++){m+=',1151,1419,'f,-l,g-u*v)}}else{t',1412,1413,'p.h+p.d))/(b.h+b.d));if(q.h+q.d<0.9*(b.h+b.d)){t=Math.max(1,t)}k=',1416,'p.h+p.d);if(e){g=0}else{g=k/2+A}d=g;m=',1151,1419,1181,1421,');o=(l-q',1432,'m+=',1151,1419,1181,1426,'l+p.w)/2,d-(k-p.d))}if(e){v=q.h}else{v=k/2+A}var j=',1343,'m,b.w,v,k-v);j.bh=',965,'r].h;j.bd=',965,'r].d;return j},DelimExtendAbsolute',941,'k,v,p,z,d){var u=',965,'p];var q=u[v];var l;var o','=this.GetChar(q.delim.','top?q',1395,':q.delim.rep,p);var ','b',1464,'rep,p);var m',1464,'bot?q',1402,1467,'r;var t;var f;var e;var s;if(q',1408,'x',1464,'mid,p);r',1412,'o.h+o.d)-(','x.h+x.d-0.05',')-(','m.h+m.d-0.05','))/(2*(','b.h+b.d-0.05',1415,'r*(b.h+b.d-0.05)+(o.h+o.d)+(',1482,')+(',1484,');l=','jsMath.HTML.PlaceAbsolute(',1181,'o.tclass,o.c),0,0);t=',1486,';f=o.d-0.05+b.h;e=',1181,1406,'for(s=0;s<r;s++){l+=',1493,'e,0,f+s*t)}l+=',1493,1181,'x.tclass,x.c),0,f+r*t-b.h+x.h);f+=r*t+',1482,';for(s=0;s<r;s++){l+=',1493,'e,0,f+s*t)}l+=',1493,1181,'m.tclass,m.c),0,f+r*t-b.h+m.h)}','else{r',1412,1481,1484,'))/(',1486,'));k=',1488,1484,');l=',1493,1181,'o.tclass,o.c),0,0);t=',1486,';f=o.d-0.05+b.h;e=',1181,1406,'for(s=0;s<r;s++){l+=',1493,'e,0,f+s*t)}l+=',1493,1181,1512,'var j=o.w;if(d){t=o.h;f=0}else{t=k/2+z;f=t-o.h}if(',997,'font==="unicode"){if(',1023,'msie8HeightBug){','f-=jsMath.hd',1248,1023,1061,'){f+=jsMath.d}}}l=',1151,1143,'(l,j,u.h,"none",-f);var g=',1343,'l,b.w,t,k-t);g.bh=',965,'p].h;g.bd=',965,'p].d;return g},Delimiter',941,'b,h,c,g){var a=4;var f=',1183,'TeX(c,a);if(!h){',1001,'Space(f.nulldelimiterspace)}','var ','e=this.DelimBestFit(b,h[','2],h[1],c);if(e==null||e[3]<b){',1562,'4],h[3],c)}',1173,1001,1560,'if(e[2]==""){',1001,'DelimExtend(b,e[0],e[1],f.axis_height,g)}var d=jsMath.Box.TeX(e[0],e[1],e[2],a).Styled();if(!g){d.y=-((d.h+d.d)/2-d.d-f.axis_height)}',990,'d.y)<0.0001){d.y=0}if(d.y){d','=jsMath.Box.SetList','([d],e[2],a)}',1142,'GetCharCode',941,'b){var a',1375,'b[0]];',960,965,'a];var d=e[b[1]];',1358,'[1],4)}if(d.w',999,'.w',1186,1181,1364,'}if(d.font',999,'.font=a}',1142,'AddClass',941,'b,c,a){if(b==null){b=a}return ',1181,'b,c)},LayoutRelative',941,'z,J,B,k,l,p,G,A){if(B==null){B=[]}if(k==null){k=[]}if(l==null){l=[]}if(G==null){G=1}if(A==null){A=1}var L=jsMath.sizes[z]/100;var g=[];var v=[];var x=[];var e=-1000;var f=e;var m=e;var E;var C;var o',';for(E=0;E<J.length;E++){','if(l[E]==null){l[E]=0}o=J[E];v[E]=G*jsMath.h*L;x[E]=G*jsMath.d*L;for(C=0;C<o.length;C++){o[C]=o[C','].Remeasured();if(','o[C].h>v[E]){v[E]=o[C].h}if(o[C].d>x[E]){x[E]=o[C].d}if(C>=g',1251,'g[C]=o[C].w',1248,'o[C].w>g[C]){',1608,'}}if(o[C].bh>f){f=o[C].bh}if(o[C].bd>m){m=o[C].bd}}}if(l[J','.length]==null){','l[J.length]=0}if(f==e){f=0}if(m==e){m=0}var a=G','*(jsMath.hd-0.01)*','L;var u=(p||1)*L/6;var t="";var n=0;var I=0;var s;var F;var q;var r;var c;var b;for(C=0;C<g.length;C++){c=[];q=-v[0]-l[0];n=0',1603,'b=J[E][C','];if(b&&b.format!="null"){if(','B[C]=="l"){s=0',1248,'B[C]=="r"){s=g[C]-b.w}else{s=(g[C]-b.w)/2}}b.x=s-n;n=b.w+s;b.y=q;c[c.length]=b}if(E+1<J',1251,'q-=Math.max(a,x[E]+v[E+1])+u+l[E+1]}}if(k[C]==null){k[C]=L}if(c.length>0){r',1574,'(c,"T",z);t+=',1151,1419,'r.html,I,0);I=g[C]-r.w+k[C]}else{I+=k[C]}}s=-k[g',1254,'];q=(v',1254,')*u+l[0];for(E=0;E<g.length;E++){s+=g[E]+k[E]}for(E=0;E<v.length;E++){q','+=Math.max(a,','v[E]+x[E])+l[E+1]}F=q','/2+jsMath.TeX.axis_height;var ','K=q-F;t+=',1151,'Spacer(I-k[g',1254,']+A*L/6);t=',1151,1419,'t,A*L/6,F);r=',1343,'t,s+A*L/3,F,K);r.bh=f;r.bd=m;return r},LayoutAbsolute',941,'t,E,z,e,f,k,B,u){if(z==null){z=[]}',1173,'e=[]}if(f==null){f=[]}if(B==null){B=1}if(u==null){u=1}var G=jsMath.sizes[t]/100;var a=B',1615,'G;var p=(k||1)*G/6;var c=[];var q=[];var s=[];var r=0;var C;var n;var l;var A;var v;var g;','for(A=0;A<E.length;A++){','if(f[A]==null){f[A]=0}g=E[A];q[A]=B*jsMath.h*G;s[A]=B*jsMath.d*G;for(v=0;v<g.length;v++){g[v]=g[v',1605,'g[v].h>q[A]){q[A]=g[v].h}if(g[v].d>s[A]){s[A]=g[v].d}if(v>=c',1251,'c[v]=g[v].w',1248,'g[v].w>c[v]){',1658,'}}}}if(f[E',1613,'f[E.length]=0}l=(q',1254,')*p+f[0];for(A=0;A<q.length;A++){l',1634,'q[A]+s[A])+f[A+1]}C=l',1636,'F=l-C;var o="";var b;r=u*G/6;for(v=0;v<c.length;v++){l=q[0]-C+f[0];',1653,'b=E[A][v',1619,'z[v]&&z[v]=="','l"){n=0',1248,1674,'r"){n=c[v]-b.w}else{n=(c[v]-b.w)/2}}o+=',1493,'b.html,r+n,l-Math.max(0,b.bh-jsMath.h*G),b.mw,b.Mw,b.w)}if(A+1<E',1251,'l',1634,'s[A]+q[A+1])+p+f[A+1]}}if(e[v]==null){e[v]=G}r+=c[v]+e[v]}r=-e[c',1254,']+u*G/3;for(A=0;A<c.length;A++){r+=c[A]+e[A]}o=',1151,'Spacer(u*G/6',')+o+',1151,1688,');if(',1023,'spanHeightVaries){l=C-jsMath.h}else{l=0}if(',1023,1540,'l=F-jsMath.d}o=',1151,1143,'(o,r,C+F,F,l);var m=',1343,'o,r+u*G/3,C,F);return m},InternalMath',941,'h,l){if(!jsMath.safeHBoxes){h=h.replace(/@\\(([^)]*)\\)/g,"<$1>")}if(!h.match(/\\$|\\\\\\(/)){',1001,'Text(this.safeHTML(h),"normal","T",l).Styled()}',960,'0;var d=0;var g;var f="";var a=[];var b,j;while(e<h',1251,'g=h.charAt(e++);if(g','=="$"){if(f=="$"){','b=jsMath.Parse(h.slice(d,e-','1','),null,l);if(b.error){a[a.length]=this.Text(b.error,"error","T",l,1,0.2)}else{b.Atomize();a[a.length]=b.mlist.Typeset("T",l).Styled()}f="";d=e','}else{','j=this.safeHTML(h.slice(d',',e-1','));a[a.length]=this.Text(j,"normal","T",l,1,0.2);','f="$";d=e}}else{if(g=="\\\\"){',1710,'=="("&&f==""){',1716,',e-2',1718,'f=")";d=e',1248,'g==")"&&f==")"){',1712,'2',1714,'}}}}}',1716,1718,1001,'Set'],
+  ['List(a,"T",l)},safeHTML',':function(','a){if(','jsMath.','safeHBoxes){a=a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}','return ','a},Set',1,'c,b,a',',d){if(','c&&c.type){if(c','.type=="','typeset"){',5,'c}if(c',11,'mlist"){c.mlist.','Atomize','(b,a);',5,'c.mlist','.Typeset(','b,a)}if(c',11,'text"){c=this.Text(c.text,c.tclass,b,a,c.ascend||null,c.descend||null);if(d!=0){c','.Styled()}',5,'c}c=this','.TeX(','c.c,c.font,b,a);if(d!=0){c',25,5,'c}',5,3,'Box.Null','()},SetList',1,'d,f,c){var a=[];var g;','for(var b=0;b<','d.length;b++){g=d[b];if(g',11,12,'g=','jsMath.mItem',21,'g)}a[a','.length]=','g}var e=new ','jsMath.Typeset','(a);',5,'e',21,'f,c)}});',3,'Package(',3,'Box,{Styled',':function(){','if(this.','format=="text"){','this.html','=',49,'.AddClass(','this.tclass',',',62,');',62,'=',49,'.AddStyle(','this.style',',this.size,',62,');delete ',66,';delete ',74,';this.format="html"}',5,'this},Remeasured',59,60,'w>0){var a=this.w;this.w=',3,'EmBoxFor(',62,').w;',60,'w','>this.Mw){this.Mw=this.w','}a=this.w/a;if(Math.abs(a-1)>0.05){this.h*=a;this.d*=a}}',5,'this}});',44,'=function(a',',b','){this.type','=a;',3,'Add(this,b)};',3,'Add(',44,',{Atom',1,'b,a){',5,'new ',44,'(b,{atom:1,nuc',':a})},TextAtom',1,'e,h,c,b,g','){var f=','new ',44,'(e,{atom:1,nuc:{type:"text",text:h,tclass:c}});if(b','!=null){f.nuc.','ascend=b}if(g',121,'descend=g}',5,'f},TeXAtom',1,'b,d,a){',5,'new ',44,113,':{type:"TeX",c:d,font:a}})},Fraction',1,'b,a,f,d,e,c){',5,'new ',44,'("fraction",{from:b,num:a,den:f,','thickness',':d,left:e,right:c})},Space',1,'a){',5,'new ',44,'("space",{w:a})},','Typeset',1,'a){',5,'new ',44,'("ord",{atom:1,nuc:a})},HTML',1,'a){',5,'new ',44,'("html",{html:a})}});',3,'mList','=function(d,a,b,c){','if(d){','this.mlist','=d}else{',165,'=[]}','if(c==null){c','="T"}if(b==null){b=4}','this.data','={openI:null,overI:null,overF:null,font:a,','size:b,style:c','};this.init={',173,'}};',3,'Package(',3,162,',{Add',1,'a){return(',165,'[','this.mlist.length',']=a)},Get',1,'a){',5,165,'[a]},Length',59,5,186,'},Last',59,'if(',186,'==0){',5,'null}',5,165,'[',186,'-1]},Range',1,'b,',2,'a==null){a=',186,'}',5,'new ',3,162,'(',165,'.slice(b,a+1))},Delete',1,'d,c){',169,'=d}if(',165,'.splice){',165,'.splice(d,c-d+1)}else{var a=[];',39,186,';b++){if(b<d||b>c){a[a',47,165,'[b]}}',165,'=a}},Open',1,'d){var c=this.Add(new ',44,'("boundary",{','data:',171,'}));var a=',171,';',171,'={};for(var b in a){',171,'[b]=a[b]}delete ',171,'.overI',79,171,'.overF;',171,'.openI=',186,'-1;if(d!=null){c.left=d}',5,'c},Close',1,'c){if(c!=null){c=new ',44,240,'right:c})}var e;var b=',171,'.openI;var f=',171,'.overI;var ','g=',171,254,171,'=',165,'[b].data;if(f){e=',44,'.Fraction(','g.name,{','type:"mlist",mlist:this.Range(','b+1,f-1)},{',280,'f)},g.',140,',g.left,g.right);if(c){var a=new ',3,162,'([',165,'[b],e,c]);e=',44,'.Atom("inner",{type:"mlist",mlist:a})}}else{var d=b+1;if(c){this.Add(c);d--}e=',44,'.Atom((c)?"inner":"ord",{',280,'d)})}this.Delete(b,this.Length());',5,'this.Add(e)},Over',59,'var b=',171,269,'c=',171,254,'var a=',44,278,'c.name,{',280,'open+1,b-1)},{',280,'b)},c.',140,',c.left,c.right);',165,'=[a]},',17,1,222,'var a;var e="";',74,'=d;this.size=c;',39,186,';b++){a=',165,'[b];a.delta=0;if(a',11,'choice"){',165,'=this.',17,'.choice(',74,',a,b,',165,');b--}else{',60,17,'[a.type]){var g=this.',17,'[a.type];g(',74,75,'a,e,this,b)}}e=a}if(a&&a',11,'bin"){a','.type="ord"}','if(',186,'>=2&&a',11,'boundary"&&',165,'[0].type=="boundary"){this.','AddDelimiters','(d,c)}},',357,1,'b,q){var p=-10000;var g=p;var k=p;for(var f=0;f<',186,';f++){var j=',165,'[f];if(j.atom||j',11,'box"){g','=Math.max(','g,j.nuc.h+j.nuc.y);k',368,'k,j.nuc.d-j.nuc.y)}}var e=',3,'TeX;var l=',49,28,'b,q).','axis_height',';var o',368,'g-l,k+l);var n',368,'Math.floor(e.integer*o/500)*e.delimiterfactor,e.integer*(2*o-e.delimitershortfall))/e.integer;var c=',165,'[0];var m=',165,'[',186,'-1];c.nuc=',3,'Box.Delimiter(','n,c.left,b);m.nuc=',3,390,'n,m.right,b);c.type="open";c.atom=1',79,'c.left;m.type="close";m.atom=1',79,'m.right},',148,1,'c,a){var b=new ',49,'(',165,');',5,'b',21,'c,a)}});',3,'Add(',3,162,'.prototype.',17,',{style',1,'d,c,a,e,b){b.','style=a.style},size',1,418,'size=a.size},phantom',1,8,'){var d=','a.nuc','=jsMath.Box.Set(','a.phantom',',c,b);if(a.h){d.','Remeasured();','d.html=',3,'HTML.Spacer','(d.w)}else{d.html="",d.w=d.Mw=d.mw=0}if(!a.v){','d.h=d.d=0','}d.bd=d.bh=0',79,428,';a.type="box"},','smash',1,8,425,'a.nuc',427,'a.smash',',c,b).',430,435,79,446,439,'raise',1,8,'){a.nuc',427,'a.nuc,c,b);var ','d=a.raise;','a.nuc.html','=',3,'HTML.Place(',460,',0,d,a.nuc.mw,a.nuc.Mw,a.nuc.w);a.nuc.h+=d;a.nuc.d-=d;a','.type="ord";','a.atom=1},lap',1,'d,c,a){var ','e',427,'a.nuc,','d,c).',430,'var b=[e];if(a.lap=="llap"){e.x=-e.w}','else{if(a.lap=="','rlap"){b[1]=',44,'.Space(-e.w)}',476,'ulap"){e.y=e.d;e.h=e.d=0}',476,'dlap"){e.y=-e.h;e.h=e.d=0}}}}a','.nuc=jsMath.Box.SetList','(b,d,c);if(a.lap=="ulap"||a.lap=="dlap"){a.nuc.h=a.nuc.d=0}a.type="box";delete a.atom},bin',1,'d,b,a,e){if(e&&e.type){var c=e.type;if(c=="bin"||c=="op"||c=="rel"||c=="open"||c=="punct"||c==""||(c=="',354,'e.left!="")){a.type="ord"}}else{a',349,'jsMath.mList.prototype.Atomize.SupSub(','d,b,a)},rel',1,8,9,'d.type&&','d',11,'bin"){d',349,491,8,')},close',1,8,9,496,'d',11,'bin"){d',349,491,8,')},punct',1,8,9,496,'d',11,'bin"){d',349,491,8,')},open',1,8,'){',491,8,')},inner',1,8,'){',491,8,')},','vcenter',1,8,'){var d',427,458,'e=',49,28,'c,b);d.y=e.',377,'-(d.h-d.d)/2;a.nuc=d;a',466,491,8,')},','overline',1,469,'g=',49,28,'d,c);var e',427,472,49,'.PrimeStyle(d),c).Remeasured();var b=g.default_rule_thickness;var f=jsMath.Box.Rule(e.w,b);f.x=-f.w;f.y','=e.h+3*b;a',484,'([e,f],d,c);a.nuc.','h+=b;a',466,491,'d,c,a)},','underline',1,469,'g=',49,28,'d,c);var e',427,472,49,564,'=-e.d-3*b-b;a',484,567,'d+=b;a',466,491,571,'radical',1,'b,m,g',425,49,28,'b,m);var k=',49,'.PrimeStyle(b);var ','f',427,'g.nuc,k,m).',430,'var l=d','.default_rule_thickness',';var c=l;if(b=="D"||b=="D\'"){c=d.x_height}var a=l+c/4;var e=',3,390,'f.h+f.d+a+l,[0,2,112,3,112],b,1);if(e.d>f.h+f.d+a){a=(a+e.d-f.h-f.d)/2}e.y=f.h+a;var j=',3,'Box.Rule(','f.w,l);j.y=e.y-l/2;j.h+=3*l/2;f.x=-f.w;var i=',49,'.UpStyle(',49,613,'b));var h',427,'g.root||null,i,m).',430,'if(g.root){h.y=0.55*(f.h+f.d+3*l+a)-f.d;e.x',368,'h.w-(11/18)*e.w,0);j.x=(7/18)*e.w;h.x=-(h.w+j.x)}g',484,'([e,h,j,f],b,m);g',466,491,'b,m,g)},accent',1,'b,q,j',117,49,28,'b,q);var m=',49,598,'i',427,'j.nuc,m,q);var o=i.w;var p;var k;var d=0;if(j.nuc',11,'TeX"){k=',3,'TeX[j.nuc.font];if(k[j.nuc.c].krn&&k.skewchar){p=k[j.nuc.c].krn[k.skewchar]}d=k[j.nuc.c].ic;if(d==null){d=0}}if(p==null){p=0}var l=j.accent[2];var e=',3,'TeX.fam[j.accent[1]];k=',3,'TeX[e];while(k[l].n&&k[k[l].n].w<=o){l=k[l].n}var n=Math.min(i.h,f.x_height);if(j.nuc',11,'TeX"){var ','h=',44,'.Atom("ord",j.nuc);h.sup=j.sup;h.sub=j.sub;h.delta=0;',491,'b,q,h);n+=(h.nuc.h-i.h);i=j.nuc=h.nuc',79,'j.sup',79,'j.sub}var g=',3,'Box',28,'l,e,b,q);g.y=i.h-n;g.x=-i.w+p+(o-g.w)/2;if(',3,'Browser.msieAccentBug){g.html+=',3,433,'(0.1);g.w+=0.1;g.Mw+=0.1}if(k[l].ic||d){g.x+=(d-(k[l].ic||0))*f.scale}j',484,'([i,g],b,q);if(j.nuc.w!=i.w){var a=',44,'.Space(','i.w-j.nuc.w);j',484,'([j.nuc,a],b,q)}j',466,491,'b,q,j)},op',1,'c,n,i',117,49,28,'c,n);var h;i.delta=0;var m=(c','.charAt(0)=="','D");if(i.limits==null&&m){i.limits=1}if(i.nuc',11,648,'b=',3,'TeX[i.nuc.font][','i.nuc.c];if(m&&b.n){i.nuc.c=b.n;b=',3,689,'b.n]}h=i.nuc',427,'i.nuc,c,n',');if(b.ic){i.delta=b.ic*f.scale;if(i.limits||!i.sub||',3,'Browser.msieIntegralBug','){h=i',484,'([h,',44,670,'i.delta)],c,n)}}h.y=-((h.h+h.d)/2-h.d-f.',377,');if(Math.abs(h.y)<0.0001){h.y=0}}if(!h){h=i.nuc',427,695,').Remeasured()}if(i.limits){var e=h.w;var k=h.w;var d=[h];var j=0;var l=0;if(i.sup){var g',427,'i.sup,',49,613,'c),n).',430,'g.x=((h.w-g.w)/2+i.delta/2)-k;j=f.big_op_spacing5;e',368,'e,g.w);k+=g.x+g.w;g.y=h.h+g.d+h.y+Math.max(f.big_op_spacing1,f.big_op_spacing3-g.d);d[d',47,'g',79,'i.sup}if(i.sub){var a',427,'i.sub,',49,'.DownStyle(','c),n).',430,'a.x=((h.w-a.w)/2-i.delta/2)-k;l=f.big_op_spacing5;e',368,'e,a.w);k+=a.x+a.w;a.y=-h.d-a.h+h.y-Math.max(f.big_op_spacing2,f.big_op_spacing4-a.h);d[d',47,'a',79,'i.sub}if(e>h.w){h.x=(e-h.w)/2;k+=h.x}if(k<e){d[d',47,44,670,'e-k)}i',484,'(d,c,n);i.nuc.h+=j;i.nuc.d+=l','}else{if(',3,698,'&&i.sub&&b&&b.ic){i',484,'([h,',3,'Box.Space(-b.ic*f.scale)],c,n)}else{if(h.y){i',484,'([h],c,n)}}',491,'c,n,i)}},ord',1,'a,j,g,b,f,e){if(g.nuc',11,'TeX"&&!g.sup&&!g.sub',425,'f.mlist[e+1];if(d&&d.atom&&d.type&&(d',11,'ord"||d',11,'op"||d',11,'bin"||d',11,'rel"||d',11,'open"||d',11,'close"||d',11,'punct")){if(d.nuc',11,'TeX"&&d.nuc.font==g.nuc.font){g.textsymbol=1;var h=',3,'TeX[g.nuc.font][g.nuc.c].krn;h*=',49,28,'a,j).scale;if(h&&h[d.nuc.c]){for(var c=f.mlist.length-1;c>e;c--){f.mlist[c+1]=f.mlist[c]}f.mlist[e+1]=',44,670,'h[d.nuc.c])}}}}',491,'a,j,g)},fraction',1,'x,n,c){var A=',49,28,'x,n);var l=0;if(c.',140,'!=null){l=c.',140,742,'c.from.match(/over/)){l=A',604,'}}var s=(x',683,'D");var g=(x=="D")?"T":(x=="D\'")?"T\'":',49,613,'x);var q=(s)?"T\'":',49,726,'x);var f',427,'c.num,g,n).',430,'var e',427,'c.den,q,n).',430,'var k;var j;var i;var o;var m;var h=(s)?A.delim1:A.delim2;var b=[',3,390,'h,c.left,x)];var y=',3,390,'h,c.right,x);if(f.w<e.w){f.x=(e.w-f.w)/2;e.x=-(f.w+f.x);i=e.w;b[1]=f;b[2]=e}else{e.x=(f.w-e.w)/2;f.x=-(e.w+e.x);i=f.w;b[1]=e;b[2]=f}if(s){k=A.num1;j=A.denom1}else{k=(l!=0)?A.num2:A.num3;j=A.denom2}if(l==0){o=(s)?7*A',604,':3*A',604,';m=(k-f.d',')-(e.h-j);if(m<o){','k+=(o-m)/2;j+=(o-m)/2}}else{o=(s)?3*l:l;var z=A.',377,';m=(k-f.d)-(z+l/2);if(m<o){k+=o-m}m=(z-l/2',824,'j+=o-m}var d=',3,610,'i,l);d.x=-i;d.y=z-l/2;b[b',47,'d}f.y=k;e.y=-j;b[b',47,'y;c',484,'(b,x,n);c',466,'c.atom=1',79,'c.num',79,'c.den;',491,'x,n,c)},SupSub',1,'e,w,k){var g=',49,28,'e,w);var o=k.nuc;var j=k.nuc',427,'k.nuc,e,w,0);if(j.format=="null"){j=k.nuc=',3,'Box.Text("","normal",e,w)}if(o',11,'TeX"){if(!k.textsymbol',425,3,'TeX[o.font][o.c];if(d.ic){k.delta=d.ic*g.scale;if(!k.sub){j=k',484,'([j,',3,'Box',670,'k.delta)],e,w);k.delta=0}}}else{k.delta=0}}if(!k.sup&&!k.sub){return}k.nuc.Styled();var h=',49,726,'e);var l=',49,613,'e);var c=',49,28,'l,w).sup_drop;var b=',49,28,'h,w).sub_drop;var n=0;var m=0;var f;if(o.type&&o.type!="text"&&o.type!="TeX"&&o.type!="null"){n=j.h-c;m=j.d+b}if(k.sub){var a',427,'k.sub,h,w);a=',3,'Box.SetList([','a,',44,'.Space(g.scriptspace)],e,w',')}if(!k.sup){a.y=-Math.max(m,g.sub1,a.h-(4/5)*',49,28,'h,w).x_height);k',484,'([j,a],e,w).Styled();delete k.sub;return}var i',427,'k.sup,l,w);i=',3,882,'i,',44,885,');if(e=="D"){f=g.sup1',742,'e','.charAt(','e','.length-1)=="\'"){','f=g.sup3}else{f=g.sup2}}n',368,'n,f,i.d+',49,28,'l,w).x_height/4);if(!k.sub){i.y=n;k',484,'([j,i],e,w',77,'k.sup;return}m',368,'m,',49,28,'h,w).sub2);var s=g',604,';if((n-i.d)-(a.h-m)<4*s){m=4*s+a.h-(n-i.d);f=(4/5)*g.x_height-(n-i.d);if(f>0){n+=f;m-=f}}i.',430,'a.',430,'i.y=n;a.y=-m;i.x=k.delta;if(i.w+i.x>a.w){i.x-=a.w;k',484,'([j,a,i],e,w)}else{a.x-=(i.w+i.x);k',484,'([j,i,a],e,w)}delete k.sup',79,'k.sub}});',49,98,100,'="typeset";',165,'=a};',3,'Add(',49,',{upStyle:{D:"S",T:"S","','D\'":"S\'","T\'":"S\'",S:"SS','",SS:"SS","','S\'":"SS\'","SS\'":"SS\'"},','downStyle:{D:"S\'",T:"S\'","',942,'\'",SS:"SS\'","',944,'UpStyle',1,'a){',5,'this.upStyle[a]},DownStyle',1,'a){',5,'this.downStyle[a]},PrimeStyle',1,2,'a',902,'a',904,5,'a}',5,'a+"\'"},StyleValue',1,'b,',2,'b=="S"||b=="S\'"){',5,'0.7*a}if(b=="SS"||b=="SS\'"){',5,'0.5*a}',5,'a},StyleSize',1,'b,a){if(b=="S"||b=="S\'"){a=Math.max(0,a-2)}else{if(b=="SS"||b=="SS\'"){a=Math.max(0,a-4)}}return ','a},TeX',1,979,3,'TeXparams[a]},AddStyle',1,8,'){if(c=="S"||c=="S\'"){b',368,'0,b-2)}else{if(c=="SS"||c=="SS\'"){b',368,'0,b-4)}}if(b!=4){a=\'<span class="size\'+b+\'">\'+a+"</span>"}',5,'a},AddClass',1,'a,b){if(a!=""&&a!="normal"){b=',3,'HTML.Class(a,b)}',5,'b}});',3,'Package(',49,',{DTsep:{ord',':{op:1,bin:2,rel:3,inner:1},','op',':{ord:1,op:1',',rel:3,inner:1},bin:{ord:2,op:2,open:2,inner:2},rel:{ord:3,op:3,open:3,inner:3},open:{},close',1004,'punct',1006,',rel:1,open:1,close',':1,punct:1,inner:1','},inner',1006,',bin:2,rel:3,open',1012,'}},SSsep:{ord:{op:1},op',1006,'},bin:{},rel:{},open:{},close:{op:1},punct:{},inner:{op:1}},sepW:["","thinmuskip","medmuskip","thickmuskip"],','GetSeparation',1,'a,d,b){if(a&&a.atom&&d.atom){var c=this.DTsep;if(b',683,'S"){c=this.SSsep}var e=c[a.type];if(e&&e[d.type]!=null){',5,3,'TeX[this.sepW[e[d.type]]]}}',5,'0},',148,1,222,74,323,'var g=-10000;this.w=0;this.mw=0;this.Mw=0;this.h=g;this.d=g;this.bh=this.h;this.bd=this.d;this.tbuf="";this.tx=0;',66,'="";','this.cbuf','="";this.hbuf="";this.hx=0;var a=null;var f;this.x=0;','this.dx=0;',39,186,';b++){f=a;a=',165,'[b];switch(a.type){case"size":','this.FlushClassed();','this.size=a.size;','a=f;break;case"','style":',1046,'if(',74,902,74,904,74,'=a.style+"\'"}else{',74,'=a.style}',1048,'space":if(typeof(a.w)=="object"){if(',74,902,'1)=="S"){a.w=0.5*a.w[0]/18',742,74,683,'S"){a.w=0.7*a.w[0]/18}else{a.w=a.w[0]/18}}}this.dx+=a.w-0;',1048,'html":',1046,'if(this.hbuf==""){this.hx=this.','x}','this.hbuf+=','a.html;a=f;break;default:if(!a.atom&&a.type!="box"){break}a.nuc.x+=this.dx+this.',1020,'(f,a,',74,');','if(a.nuc.x||a.nuc.y){','a.nuc',25,1040,'this.x=this.x+this.w;',60,'x','+a.nuc.x+a.nuc.','mw','<this.mw){this.mw=this.','x',1087,'mw}',60,'w',1087,'Mw',93,1087,'Mw}this.w+=a.nuc.w+a.nuc.x;if(a.nuc.',61,'if(',66,'!=a.nuc.tclass&&',66,'!=""){','this.FlushText','()}',60,'tbuf==""&&',1038,'==""){this.tx=this.x}this.tbuf+=',460,';',66,'=a.nuc.tclass}else{',1046,1080,'this.Place(a.nuc)}',1072,'x}',1074,460,'}this.h',368,'this.h,a.nuc.h+a.nuc.y);this.bh',368,'this.bh,a.nuc.bh);this.d',368,'this.d,a.nuc.d-a.nuc.y);this.bd',368,'this.bd,a.nuc.bd);break}}',1046,60,'dx){',1074,3,433,'(this.dx);this.w+=this.dx;',60,'w',93,'}',60,'w',1089,'w}}',60,'hbuf==""){',5,3,35,'()}',60,'h==g){this.h=0}',60,'d==g){this.d=0}var e=new ',3,'Box("html",this.hbuf,this.w,this.h,this.d);e.bh=this.bh;e.bd=this.bd;e.mw=this.mw;e.Mw=this.Mw;',5,'e},FlushText',59,60,'tbuf','==""){return}',1038,'+=',49,'.AddClass(',66,',this.tbuf);this.tbuf="";',66,'=""},FlushClassed',59,1106,'();',60,'cbuf',1164,1072,'tx}',1074,49,'.AddStyle(',74,75,1038,');',1038,'=""},Place',1,'b){var a=\'<','span style="position: relative',';\';if(b.x){a+=" margin-left:"+',3,'HTML.Em','(b.x)+";"}if(b.y){a+=" top:"+',3,1195,'(-b.y)+";"}b.html=a+\'">\'+b.html+"</span>";','b.h+=b.y;b.d-=b.y;b.x=0;b.y=0','},PlaceSeparateSkips',1,'b){if(b.y',425,'b.Mw-b.w;var c=b.mw;var a=b.Mw-b.mw;b.html=',3,433,'(c-d)+\'<',1192,'; top:\'+',3,1195,'(-b.y)+"; left:"+',3,1195,'(d)+"; width:"+',3,1195,'(a)+\';">\'+',3,433,'(-c)+b.html+',3,433,'(d)+"</span>"}if(b.x){b.html=',3,433,'(b.x)+b.html}',1200,'}});',3,'Parse',163,'var e=new ',3,'Parser','(d,a,b,c);e.Parse();',5,'e};',3,1236,163,'this.string=d;this.i=0;',165,'=new ',3,162,'(null,a,b,c)};',3,'Package(',3,1236,',{cmd:"\\\\",open:"{",close:"}",letter:/[a-z]/i,number:/[0-9]/,scriptargs:/^((math|text)..|mathcal|[hm]box)$/,mathchar:{"!":[5,0,33],"(":[4,0,40],")":[5,0,41],"*":[2,2,3],"+":[2,0,43],",":[6,1,59],"-":[2,2,0],".":[0,1,58],"/":[0,1,61],":":[3,0,58],";":[6,0,59],"<":[3,1,60],"=":[3,0,61],">":[3,1,62],"?":[5,0,63],"[":[4,0,91],"]":[5,0,93],"|":[0,2,106]},special:{"~":"Tilde","^":"HandleSuperscript",_:"HandleSubscript"," ":"Space","\\01','":"Space","\\','t',1254,'r',1254,'n":"Space","\'":"Prime","%":"HandleComment","&":"HandleEntry","#":"Hash"},mathchardef:{braceld:[0,3,122],bracerd:[0,3,123],bracelu:[0,3,124],braceru:[0,3,125],alpha:[0,1,11],beta:[0,1,12],gamma:[0,1,13],delta:[0,1,14],epsilon:[0,1,15],zeta:[0,1,16],eta:[0,1,17],theta:[0,1,18],iota:[0,1,19],kappa:[0,1,20],lambda:[0,1,21],mu:[0,1,22],nu:[0,1,23],xi:[0,1,24],pi:[0,1,25],rho:[0,1,26],sigma:[0,1,27],tau:[0,1,28],upsilon:[0,1,29],phi:[0,1,30],chi:[0,1,31],psi:[0,1,32],omega:[0,1,33],varepsilon:[0,1,34],vartheta:[0,1,35],varpi:[0,1,36],varrho:[0,1,37],varsigma:[0,1,38],varphi:[0,1,39],Gamma:[7,0,0],Delta:[7,0,1],Theta:[7,0,2],Lambda:[7,0,3],Xi:[7,0,4],Pi:[7,0,5],Sigma:[7,0,6],Upsilon:[7,0,7],Phi:[7,0,8],Psi:[7,0,9],Omega:[7,0,10],aleph:[0,2,64],imath:[0,1,123],jmath:[0,1,124],ell:[0,1,96],wp:[0,1,125],Re:[0,2,60],Im:[0,2,61],partial:[0,1,64],infty:[0,2,49],prime:[0,2,48],emptyset:[0,2,59],nabla:[0,2,114],surd:[1,2,112],top:[0,2,62],bot:[0,2,63],triangle:[0,2,52],forall:[0,2,56],exists:[0,2,57],neg:[0,2,58],lnot:[0,2,58],flat:[0,1,91],natural:[0,1,92],sharp:[0,1,93],clubsuit:[0,2,124],diamondsuit:[0,2,125],heartsuit:[0,2,126],spadesuit:[0,2,127],coprod:[1,3,96],bigvee:[1,3,87],bigwedge:[1,3,86],biguplus:[1,3,85],bigcap:[1,3,84],bigcup:[1,3,83],intop:[1,3,82],prod:[1,3,81],sum:[1,3,80],bigotimes:[1,3,78],bigoplus:[1,3,76],bigodot:[1,3,74],ointop:[1,3,72],bigsqcup:[1,3,70],smallint:[1,2,115],triangleleft:[2,1,47],triangleright:[2,1,46],bigtriangleup:[2,2,52],bigtriangledown:[2,2,53],wedge:[2,2,94],land:[2,2,94],vee:[2,2,95],lor:[2,2,95],cap:[2,2,92],cup:[2,2,91],ddagger:[2,2,122],dagger:[2,2,121],sqcap:[2,2,117],sqcup:[2,2,116],uplus:[2,2,93],amalg:[2,2,113],diamond:[2,2,5],bullet:[2,2,15],wr:[2,2,111],div:[2,2,4],odot:[2,2,12],oslash:[2,2,11],otimes:[2,2,10],ominus:[2,2,9],oplus:[2,2,8],mp:[2,2,7],pm:[2,2,6],circ:[2,2,14],bigcirc:[2,2,13],setminus:[2,2,110],cdot:[2,2,1],ast:[2,2,3],times:[2,2,2],star:[2,1,63],propto:[3,2,47],sqsubseteq:[3,2,118],sqsupseteq:[3,2,119],parallel:[3,2,107],mid:[3,2,106],dashv:[3,2,97],vdash:[3,2,96],leq:[3,2,20],le:[3,2,20],geq:[3,2,21],ge:[3,2,21],lt:[3,1,60],gt:[3,1,62],succ:[3,2,31],prec:[3,2,30],approx:[3,2,25],succeq:[3,2,23],preceq:[3,2,22],supset:[3,2,27],subset:[3,2,26],supseteq:[3,2,19],subseteq:[3,2,18],"in":[3,2,50],ni:[3,2,51],owns:[3,2,51],gg:[3,2,29],ll:[3,2,28],not:[3,2,54],sim:[3,2,24],simeq:[3,2,39],perp:[3,2,63],equiv:[3,2,17],asymp:[3,2,16],smile:[3,1,94],frown:[3,1,95],Leftrightarrow:[3,2,44],Leftarrow:[3,2,40],Rightarrow:[3,2,41],leftrightarrow:[3,2,36],leftarrow:[3,2,32],gets:[3,2,32],rightarrow:[3,2,33],to:[3,2,33],mapstochar:[3,2,55],leftharpoonup:[3,1,40],leftharpoondown:[3,1,41],rightharpoonup:[3,1,42],rightharpoondown:[3,1,43],nearrow:[3,2,37],searrow:[3,2,38],nwarrow:[3,2,45],swarrow:[3,2,46],minuschar:[3,2,0],hbarchar:[0,0,22],lhook:[3,1,44],rhook:[3,1,45],ldotp:[6,1,58],cdotp:[6,2,1],colon:[6,0,58],"#":[7,0,35],"$":[7,0,36],"%":[7,0,37],"&":[7,0,38]},delimiter:{"(":[0,0,40,3,0],")":[0,0,41,3,1],"[":[0,0,91,3,2],"]":[0,0,93,3,3],"<":[0,2,104,3,10],">":[0',',2,105,3,11],"\\\\','lt":[0',',2,104,3,10],"\\\\','gt":[0,2,105,3,11],"/":[0,0,47,3,14],"|":[0,2,106,3,12],".":[0,0,0,0,0],"\\\\":[','0,2,110,3,15],"\\\\','lmoustache":[4,3,122,3,64],"\\\\rmoustache":[5,3,123,3,65],"\\\\lgroup":[4,6,40,3,58],"\\\\rgroup":[5,6,41,3,59],"\\\\arrowvert','":[0,2,106,3,','60],"\\\\Arrowvert":[0,2,107,3,61],"\\\\bracevert',1266,'62],"\\\\Vert":[0,2,107,3,13],"\\\\|":[0,2,107,3,13],"\\\\vert',1266,'12],"\\\\uparrow":[3,2,34,3,120],"\\\\downarrow":[3,2,35,3,121],"\\\\updownarrow":[3,2,108,3,63],"\\\\Uparrow":[3,2,42,3,126],"\\\\Downarrow":[3,2,43,3,127],"\\\\Updownarrow":[3,2,109,3,119],"\\\\backslash":[',1264,'rangle":[5',1260,'langle":[4',1262,'rbrace":[5,2,103,3,9],"\\\\lbrace":[4,2,102,3,8],"\\\\}":[5,2,103,3,9],"\\\\{":[4,2,102,3,8],"\\\\rceil":[5,2,101,3,7],"\\\\lceil":[4,2,100,3,6],"\\\\rfloor":[5,2,99,3,5],"\\\\lfloor":[4,2,98,3,4],"\\\\lbrack":[0,0,91,3,2],"\\\\rbrack":[0,0,93,3,3]},macros:{displaystyle',':["HandleStyle","','D"],textstyle',1278,'T"],scriptstyle',1278,'S"],scriptscriptstyle',1278,'SS"],rm',':["HandleFont",','0],mit',1286,'1],oldstyle',1286,'1],cal',1286,'2],it',1286,'4],bf',1286,'6],font',':["Extension","','font"],left:"HandleLeft",right:"HandleRight",arcsin',':["NamedOp",0],','arccos',1300,'arctan',1300,'arg',1300,'cos',1300,'cosh',1300,'cot',1300,'coth',1300,'csc',1300,'deg',1300,'det',':"NamedOp",','dim',1300,'exp',1300,'gcd',1320,'hom',1300,'inf',1320,'ker',1300,'lg',1300,'lim',1320,'liminf',':["NamedOp",null,\'lim<span style="margin-left: \'+1/6+\'em"></span>','inf\'],limsup',1338,'sup\'],ln',1300,'log',1300,'max',1320,'min',1320,'Pr',1320,'sec',1300,'sin',1300,'sinh',1300,'sup',1320,'tan',1300,'tanh',1300,538,':["HandleAtom","',538,'"],',554,1364,554,'"],',572,1364,572,'"],over',':"HandleOver",','overwithdelims',1375,'atop',1375,'atopwithdelims',1375,'above',1375,'abovewithdelims',1375,'brace',':["HandleOver','","\\\\{","\\\\}"],brack',1387,'","[","]"],choose',1387,'","(",")"],overbrace',':["Extension","leaders"],','underbrace',1393,'overrightarrow',1393,'underrightarrow',1393,'overleftarrow',1393,'underleftarrow',1393,'overleftrightarrow',1393,'underleftrightarrow',1393,'overset',':["Extension","underset-overset"],','underset',1409,'llap',':"HandleLap",','rlap',1413,'ulap',1413,'dlap',1413,'raise:"RaiseLower",lower:"RaiseLower",moveleft',':"MoveLeftRight",','moveright',1421,'frac:"Frac",root:"Root",sqrt:"Sqrt",hbar',':["Macro","\\\\','hbarchar\\\\kern-.5em h"],ne',1425,'not="],neq',1425,'not="],notin',1425,'mathrel{\\\\','rlap{\\\\kern2mu/}}\\\\in"],cong',1425,1432,'lower2mu{\\\\mathrel{{\\\\rlap{=}\\\\raise6mu\\\\sim}}}}"],bmod',1425,'mathbin{\\\\rm mod}"],pmod',1425,'kern 18mu ({\\\\rm mod}\\\\,\\\\,#1)",1],"int":["Macro","\\\\intop\\\\nolimits"],oint',1425,'ointop\\\\nolimits"],doteq',1425,'buildrel\\\\textstyle.\\\\over="],ldots',1425,'mathinner{\\\\','ldotp\\\\ldotp\\\\ldotp}"],cdots',1425,1446,'cdotp\\\\cdotp\\\\cdotp}"],vdots',1425,1446,'rlap{\\\\raise8pt{.\\\\rule 0pt 6pt 0pt}}\\\\rlap{\\\\raise4pt{.}}.}"],ddots',1425,1446,'kern1mu\\\\raise7pt{\\\\rule 0pt 7pt 0pt .}\\\\kern2mu\\\\raise4pt{.}\\\\kern2mu\\\\raise1pt{.}\\\\kern1mu}"],joinrel',1425,1432,'kern-4mu}"],relbar',1425,1432,'smash-}"],Relbar',1425,'mathrel="],bowtie',1425,'mathrel\\\\triangleright\\\\joinrel\\\\mathrel\\\\triangleleft"],models',1425,'mathrel|\\\\joinrel="],mapsto',1425,1432,'mapstochar\\\\','rightarrow}"],rightleftharpoons',1425,538,'{\\\\',1432,'rlap{\\\\raise3mu{\\\\rightharpoonup}}}\\\\leftharpoondown}"],hookrightarrow',1425,'lhook','\\\\joinrel\\\\rightarrow','"],hookleftarrow',1425,'leftarrow\\\\joinrel\\\\','rhook"],Longrightarrow',1425,'Relbar\\\\joinrel\\\\','Rightarrow"],','longrightarrow',1425,'relbar',1480,'"],longleftarrow',1425,1483,'relbar"],Longleftarrow',1425,'Leftarrow\\\\joinrel\\\\','Relbar"],longmapsto',1425,1432,1471,'minuschar',1480,'}"],longleftrightarrow',1425,'leftarrow',1480,'"],','Longleftrightarrow',1425,1497,1487,'iff:["Macro","\\\\;\\\\',1509,'\\\\;"],mathcal',':["Macro","{\\\\','cal #1}",1],mathrm',1516,'rm #1}",1],mathbf',1516,'bf #1}",1],','mathbb',1516,1521,'mathit',1516,'it #1}",1],textrm',1425,'mathord{\\\\hbox{#1}}",1],textit',1425,'mathord{\\\\class{','textit','}{\\\\hbox{#1}}}",1],','textbf',1425,1531,1534,1533,'pmb',1425,'rlap{#1}\\\\kern1px{#1}",1],TeX:["Macro","T\\\\kern-.1667em\\\\lower.5ex{E}\\\\kern-.125em X"],limits:["Limits",1],nolimits:["Limits",0],",":["Spacer",1/6],":":["Spacer",1/6],">":["Spacer",2/9],";":["Spacer",5/18],"!":["Spacer",-1/6],enspace:["Spacer",1/2],quad:["Spacer",1],qquad:["Spacer",2],thinspace:["Spacer",1/6],negthinspace:["Spacer",-1/6],hskip:"Hskip",kern:"Hskip",rule:["Rule","colored"],space:["Rule","blank"],big',':["MakeBig","','ord",0.85],Big',1542,'ord",1.15],bigg',1542,'ord",1.45],Bigg',1542,'ord",1.75],bigl',1542,'open",0.85],Bigl',1542,'open",1.','15],biggl',1542,1553,'45],Biggl',1542,1553,'75],bigr',1542,'close",0.85],Bigr',1542,'close",1.','15],biggr',1542,1564,'45],Biggr',1542,1564,'75],bigm',1542,'rel",0.85],Bigm',1542,'rel",1.15],biggm',1542,'rel",1.45],Biggm',1542,'rel",1.75],mathord',1364,'ord"],mathop',1364,'op"],mathopen',1364,'open"],mathclose',1364,'close"],mathbin',1364,'bin"],mathrel',1364,'rel"],mathpunct',1364,'punct"],mathinner',1364,'inner"],','mathchoice',1298,1596,'"],buildrel:"BuildRel",hbox:"HBox",text:"HBox",mbox:"HBox",fbox',1298,'fbox"],strut:"Strut",mathstrut',1425,'vphantom{(}"],phantom:["Phantom",1,1],vphantom:["Phantom",1,0],hphantom:["Phantom",0,1],smash:"Smash",acute:["MathAccent",[7,0,19]],grave:["MathAccent",'],
+  ['[','7,0,','18]],ddot',':["MathAccent",[',1,'127]],tilde',3,1,'126]],bar',3,1,'22]],breve',3,1,'21]],check',3,1,'20]],hat',3,1,'94]],vec',3,'0,1,126]],dot',3,1,'95]],widetilde',3,'0,3,101]],widehat',3,'0,3,98]],_:["Replace","ord","_","normal",-0.4,0.1]," ":["Replace","','ord","&nbsp;","normal','"],angle:["Macro","\\\\kern2.5mu\\\\raise1.54pt{\\\\rlap{\\\\scriptstyle \\\\char{cmsy10}{54}}\\\\kern1pt\\\\rule{.45em}{-1.2pt}{1.54pt}\\\\kern2.5mu}"],matrix:"Matrix",array:"Matrix",pmatrix:["Matrix','","(",")","c"],','cases:["Matrix","\\\\{",".",["l","l"],null,2],eqalign',':["Matrix",null,null,["','r","l"],[5/18],3,"D"],displaylines',34,'c"],null,3,"D"],cr:"','HandleRow','","\\\\":"',38,'",newline:"',38,'",noalign:"','HandleNoAlign','",eqalignno',34,'r","l","r"],[5/8,3],3,"D"],','leqalignno',34,47,'begin:"Begin",end:"End",tiny',':["HandleSize",','0],Tiny',52,'1],scriptsize',52,'2],small',52,'3],normalsize',52,'4],large',52,'5],Large',52,'6],LARGE',52,'7],huge',52,'8],Huge',52,'9],dots:["Macro","\\\\ldots"],','newcommand',':["Extension","',72,'"],newenvironment',73,72,'"],def',73,72,'"],color',73,'HTML"],','href',73,'HTML"],"class":["','Extension','","',83,'style',73,83,'cssId',73,83,'unicode',73,83,'bbox',73,'bbox"],require:"Require","char":"Char"},','environments',':{array:"Array",matrix',':["Array','",null,null,"c"],pmatrix',104,32,'bmatrix',104,'","[","]","c"],Bmatrix',104,'","\\\\{","\\\\}","c"],vmatrix',104,'","\\\\vert","\\\\vert","c"],Vmatrix',104,'","\\\\Vert","\\\\Vert","c"],cases',104,'","\\\\{",".","ll",null,2],eqnarray:["','Array",null,null,"rcl",[5/18,5/18],3,"D','"],"eqnarray*":["',119,'"],equation:"Equation","equation*":"Equation",align',73,'AMSmath','"],"align','*":["Extension","AMSmath"],','aligned',73,124,'"],','multline',73,124,'"],"',131,126,'split',73,124,'"],gather',73,124,'"],"gather',126,'gathered',73,124,'"]},AddSpecial',':function(','a){for(var b in a){','jsMath.Parser.prototype','.special[',151,'[b]]=a[b]}},Error',149,'a){this.i=','this.string','.length;','if(a','.error){this.error=a','.error}','else{if(!','this',160,'}}},nextIsSpace',':function(){','return ','this.string.charAt(this.i',').match(/[ \\n\\r\\t]/)},trimSpaces',149,'a){if(typeof(a)!="string"){',167,'a}',167,'a.replace(/^\\s+|\\s+$/g',',"")},','Process',149,'a){var ','c=','this.mlist.data',';a','=jsMath.Parse(','a,c.font,c.size,c.style);if(a','.error){this.Error(','a);','return null','}if(a.mlist.Length()==','0){',187,188,'1','){var b=','a.mlist.','Last();if(','b.atom&&b.type=="ord"&&b.nuc&&!b.sub&&!b.sup&&(b.nuc.type=="text"||b.nuc.type=="TeX")){',167,'b.nuc}}return{type:"mlist",mlist:a.mlist}},GetCommand',':function(){var ','a=/^([a-z]+|.) ?/i;var b=a.exec(','this.string.slice(this.i','));if(b){this.i+=b[1].length;',167,'b[1]}','this.i++;','return" "},GetArgument',149,'b,d){while','(this.nextIsSpace()){this.i','++}','if(this.','i>=',157,'.length){','if(!d){','this.Error("','Missing',' argument for "+b)}',187,'}if(',168,')==this.close){',215,216,'Extra close brace','")}',187,'}if(',168,')==this.cmd){',205,167,'this.cmd+','this.GetCommand','()}if(',168,')!=this.open){',167,168,'++)}var a=++this.i;var e=1;var f="";','while(this.i<this.string.length){','f=',168,'++);if(f','==this.cmd){this.i++}else{if(','f==this.open){e++}else{if(f==this.close){','if(e==0){',216,225,'");',187,'}if(--e==0){',167,157,'.slice(a,this.i-1)}}}}}',216,'Missing close brace','");',187,'},','ProcessArg',149,'b){var ','a=','this.GetArgument(','b);','if(this.error){return',' null}','return this.Process(a)},','ProcessScriptArg',149,'c){','var a=',265,'c);',267,268,'if(a.charAt(0)==this.cmd',193,'a.substr(1);if(b=="frac"){a+="{"+',265,'b)+"}";',267,268,'a+="{"+',265,'b)+"}";',267,' null}}else{if(b','=="sqrt"){a+="["+','this.GetBrackets(','b)+"]";',267,268,'a+="{"+',265,'b)+"}";',267,289,'.match(this.scriptargs)){a+="{"+',265,'b)+"}";',267,' null}}}}}',269,'GetDelimiter',149,'a){while',209,'++}var b=',168,');',211,'i<',157,214,205,'if(b','==this.cmd){','b="\\\\"+',234,'(a);',267,' null}}','if(','this.delimiter[','b]!=null){',167,326,'b]}}',216,217,' or unrecognized delimiter for "+a);',187,'},GetDimen',149,'a,d){var ','b;var c=0;if',209,'++}if(',168,')=="{"){b=',265,'a)}else{b=',201,');c=1}',167,'this.ParseDimen(','b,a,c,d)},ParseDimen',149,'c,b,e,f){',273,'c.match(/^\\s*([-+]?(\\.\\d+|\\d+(\\.\\d*)?))(pt|em|ex|mu|px)/);if(!a){',216,217,' dimension or its units for "+b);',187,'}if(e){this.i+=a[0].length;if',209,'++}}var g=a[1]-0;if(a[4]=="px"){g/=jsMath.em','}else{if(a[4]=="','pt"){g/=10',361,'ex"){g*=','jsMath.TeX','.x_height',361,'mu"){if(f){g=g/18}else{g=[g,"mu"]}}}}}',167,'g},GetNext',166,'while',209,'++}',167,168,')},GetBrackets',149,179,'e','=this.GetNext();if(','e!="["){return""}var d=++this.i;var b=0;',241,'e=',168,'++);if(e=="{"){b++}else{if(e=="}"){','if(b==0){',216,225,' while looking for',' \']\'");',187,'}b--}else{if(e',245,'e=="]"){',387,167,157,'.slice(d,this.i-1)}}}}}}',216,'Couldn\'t find',' closing \']\' for argument to',' "+this.cmd','+a);',187,'},GetUpto',149,'b,d){while',209,'++}var g=this.i;var e=0;',241,'var f=',168,244,'=="{"){e++}else{if(f=="}"){',247,216,225,390,403,'+d);',187,'}e--}else{if(f',319,'if(',201,',this.i+','5)=="begin"){e++;this.i+=4}else{if(',201,427,'3)=="end"){if(e>0){e--;this.i+=2}}}',247,'if(',201,427,'d.length)==d){f=',168,'+d','.length);','if(f.match(/[^a-z]/i)||!d.match(/[a-z]/i)){',273,157,'.slice(g,this.i-1);this.i+=d',158,167,'a}}}this.i++}}}}',216,401,403,'+d+" for "+b);',187,'},','ProcessUpto',149,'b,c){var ','a=this.GetUpto(b,c);',267,268,269,'GetEnd',149,'c){var a="";var b="";while(b!=c){a+=this.GetUpto("begin{"+c+"}","end");',267,268,'b=','this.GetArgument(this.cmd','+"end");',267,324,167,'a},Space',':function(){},','Prime',149,'d',193,'this.mlist.',195,'b==null||(!b.atom&&b','.type!="box"&&','b','.type!="frac")){','b=','this.mlist.Add(jsMath.mItem.','Atom("ord",{type:null}))}','if(b.sup){',216,'Prime causes double exponent',': use braces to clarify");return','}var a','="";while(d=="\'"){a+=this.cmd+"prime";d',381,'d=="\'"){this.i++}}b.sup=this.',177,'(a);b.sup.isPrime=1},RaiseLower',149,179,'b','=this.GetDimen(this.cmd+','a,1);',267,'}var c','=this.ProcessScriptArg','(',233,'a);',267,'}if(a=="lower"){b=-b}','this.mlist.Add(new jsMath.mItem("','raise",{nuc:c,raise:b}))},MoveLeftRight',149,263,'a',499,'b,1);',267,'}var c',503,'(',233,'b);',267,'}if(b=="moveleft"){a=-a}',484,'Space(a','));',484,'Atom("ord",c));',484,'Space(-a))},Require',149,179,'b=',466,404,267,'}b=','jsMath.Extension','.URL(b);if(','jsMath.Setup.','loaded[b]){return}','this.Extension(null,[','b])},',87,149,'a,b){','jsMath.Translate','.restart=1;if(a','!=null){','delete ',151,'[b[1]||"macros"][a]}',538,'.Require(b[0],',547,'.asynchronous',');throw"restart"},Frac',149,263,'a','=this.ProcessArg(this.cmd+','b);',267,'}var c',561,'b);',267,'}',484,'Fraction("over",a,c))},Sqrt',149,263,'d=',291,233,'b);',267,490,561,'b);',267,'}var c=jsMath.mItem.Atom("','radical",a);','if(d!=""){c.root=this.',177,'(d);',267,'}}',477,'Add(c)},','Root',149,263,'d=this.',453,'(',233,'b,"of");',267,490,561,'b);',267,582,583,'c.root=d;',477,590,'BuildRel',149,179,'b=this.',453,'(',233,'a,"over");',267,'}var d',561,'a);',267,582,'op",d);c.limits=1;c.sup=b;',477,590,'MakeBig',149,337,'c=d[0];var b=d[1]*jsMath.p_height;var e','=this.GetDelimiter(this.cmd+','a);',267,'}',484,'Atom(c,','jsMath.Box.Delimiter(','b,e,"T")))},Char',149,263,'a=',466,'+b);',267,'}var c=',466,'+b);',267,'}if(!',365,'[a]){',365,'[a]=[];',542,'jsMath.Font.URL(a',')])}else{',484,'Typeset(','jsMath.Box.TeX(c-0,a,',181,'.style,',181,'.size)))}},Matrix',149,'b,h){var e=',181,';var a=',466,'+b);',267,'}var g=','new jsMath.','Parser(a','+this.cmd+"\\\\",null,','e.size,h[5]||"T");g.matrix=b;g.row=[];g.table=[];g.rspacing=[];g.Parse();if(g',185,'g);return}g.',38,'(',515,'var d','=jsMath.Box.','Layout(e.size,g.table,h[2]||null,h[3]||null,g.rspacing,h[4]||null);if(h[0]&&h[1]){',412,636,'d.h+d','.d-jsMath.hd/4,this.delimiter[','h[0]],"T");var c=',636,'d.h+d',686,'h[1]],"T");d',681,'SetList([','f,d,c],e.style,e.size)}',484,'Atom((h','[0]?"inner":"ord"),','d))},HandleEntry',149,'b){if(!this.matrix){this.Error(b','+" can only appear in a matrix or array");return}if(',181,'.openI',549,273,477,'Get(',181,'.openI);if','(a.left){',216,217,403,'+"right','")}else{',216,257,'")}}if(',181,'.overI',549,477,'Over()}var d=',181,';',477,'Atomize(','d.style,d.size);','var c=',477,657,728,'c.entry=d.entry;delete d.entry;if(!c.entry){c.entry={}}this.row[','this.row.length',']=c;this.mlist=',671,'mList(null,null,d.size,d.style)},',38,149,'a,c){var b;if(!this.matrix){','this.Error(this.cmd+a',701,'a=="\\\\"){b=',291,233,'a);',267,'}if(b){b=',348,'b,',233,'a,0,1)}}this.HandleEntry(a);if(!c||',734,'>1||this.row[0].format!="null"){this.table[this.table.length]=this.row}if(b){','this.rspacing[this.table.length',']=b}this.row=[]},',44,149,263,'a=',466,'+b);',267,644,'a.replace(/^.*(vskip|vspace)([^a-z])/i,"$2");if(c.length==a',214,'return}var ','e=',348,'c,',233,'RegExp.$1,0,1);',267,'}',755,']=(',755,']||0)+e},Array',149,455,'e=c[2];var i=c[3];if(!e){e=',466,'+"begin{"+b+"}");',267,'}}e=e.replace(/[^clr]/g,"");e=e.split("");var g=',181,666,'c[5]||"T";var k=this.GetEnd(b);',267,'}',412,671,'Parser(k',673,'g.size,a);f.matrix=b;f.row=[];f.table=[];f.rspacing=[];f.Parse();if(f',185,'f);return}f.',38,'(',515,'var h',681,'Layout(g.size,f.table,e,i,f.rspacing,c[4],c[6],c[7]);if(c[0]&&c[1]){var d=',636,'h.h+h',686,'c[0]],"T");var j=',636,'h.h+h',686,'c[1]],"T");h',681,693,'d,h,j],g.style,g.size)}',484,'Atom((c',697,'h))},Begin',149,179,'b=',466,404,267,'}if(b.match(/[^a-z*]/i)){this.Error(\'Invalid environment name "\'+b+\'"\');return}if(!this.',102,'[b]){this.Error(\'Unknown environment "\'+b+\'"\');return',644,'this.',102,'[b];if(typeof(','c',')=="string"){','c=[c]}this[c[0]](b,c.slice(1))},End',149,179,'b=',466,404,267,'}',741,'+"{"+b+"} without matching',403,'+"begin")},Equation',149,263,'a=this.GetEnd(b);',267,'}',157,'=a+',201,');this.i=0},Spacer',149,'b,a){',484,525,'-0))},Hskip',149,263,'a',499,'b);',267,'}',484,525,'))},HBox',149,179,'c=',466,404,267,'}var b',681,'InternalMath(c,',181,'.size);',484,657,'b))},Rule',149,'b,f){var a',499,515,267,'}var e',499,515,267,'}var g',499,515,267,'}e+=g;var c;if(e!=0){e=Math.max(1.05/jsMath.em,e)}if(e==0||a==0||f=="blank"){c=','jsMath.HTML.','Blank(a,e)}else{c=',898,'Rule(a,e)}if(g){c=\'<span style="vertical-align:\'+',898,'Em(-g)+\'">\'+c','+"</span>"}',484,657,671,'Box("html",c,a,e-g,g)))},Strut',199,'a=',181,'.size;var b',681,'Text("","normal","T",a).Styled();b.bh=b.bd=0;b.h=0.8;b.d=0.3;b.w=b.Mw=0;',484,657,'b))},Phantom',149,455,'a',561,'b);',267,'}',509,'phantom",{phantom:a,v:c[0],h:c[1]}))},Smash',149,455,'a',561,'b);',267,'}',509,'smash",{smash:a}))},MathAccent',149,'b,',179,'e',561,'b);',267,'}var d','=jsMath.mItem.','Atom("accent",e);d.accent=a[0];',477,'Add(d)},NamedOp',149,'c,f){var b=(c.match(/[^acegm-su-z]/))?1:0;var g=(c.match(/[gjpqy]/))?0.2:0;if(f[1]){c=f[1]}var e',944,'TextAtom("','op",c,',365,'.fam[0],b,g);if(f[0]!=null){e.limits=f[0]}',477,'Add(e)},Limits',149,'a,c',193,477,'Last();if(!b||b.type!="op"){',741,'+" is allowed only on operators");return}b.limits=c[0]},Macro',149,'b,d){var e=d[0];if(d[1]){var a=[];','for(var c=0;c<','d[1];c++){a[a.length]=',466,'+b);',267,'}}e=this.','SubstituteArgs','(a,e)}',157,'=','this.AddArgs(e,',201,'));this.i=0},',972,149,'b,',179,'f="";var e="";var g;var d=0;while(d<a',214,'g=a.charAt(d++);if(g',319,'f+=g+a.charAt(d++)}else{if(g=="#"){',985,'=="#"){f+=g}',162,'g.match(/[1-9]/)||g>b',214,216,'Illegal ','macro parameter ','reference");',187,'}e=this.AddArgs(',976,'f),b[g-1]);f=""}}else{f+=g}}}',167,976,'f)},AddArgs',149,856,'if(a.match','(/^[a-z]/i)&&b.match(/(^|[^\\\\])(\\\\\\\\)*\\\\[a-z]+$/i)){b+=" "}',167,'b+a},Replace',149,546,484,'TextAtom(','b[0],b[1],b[2','],b[3]))},Hash',149,'a){',216,'You can\'t use \'',995,'character #\' in math mode")},Tilde',149,'a){',484,951,30,'"))},HandleLap',149,179,612,261,'();',267,'}b=',509,'lap",{nuc:b,lap:a}))},HandleAtom',149,455,'a',561,'b);',267,'}',484,'Atom(c[0],a))},HandleMathCode',149,'a,b','){this.HandleTeXchar(',1014,'])},HandleTeXchar',149,'b,a,c){if(b==7&&',181,'.font',549,'a=',181,'.font}a=',365,'.fam[a];if(!',365,'[a]){',365,'[a]=[];',542,654,')])}else{',484,'TeXAtom(',365,'.atom[b],c,a))}},','HandleVariable',149,'a',1048,'7,1,','a.charCodeAt(0))},','HandleNumber',149,'a',1048,1,1077,'HandleOther',149,'a){',484,951,'ord",a,"normal"))},HandleComment',199,'a;',241,'a=',168,'++);if(a=="\\r"||a=="\\n"){return}}},HandleStyle',149,546,181,'.style=b[0];',509,'style",{style:b[0]}))},HandleSize',149,546,181,'.size=b[0];',509,'size",{size:b[0]}))},HandleFont',149,856,181,'.font=a[0]},HandleCS',199,'b=',234,'();',267,'}',211,'macros[b]){',273,'this','.macros',831,'a',833,'a=[a]}this[a[0]](b,a.slice(1','));return}',211,'mathchardef','[','b]){this.HandleMathCode(b,this.',1129,'[b]);return}if(',326,233,1131,'delimiter[',233,'b].slice(0,3',1127,216,'Unknown control sequence \'"+',233,'b+"\'")},HandleOpen',166,477,'Open()},HandleClose',166,'if(',181,703,'==null){',216,225,'");',767,'a=',477,'Get(',181,709,'(!a||a.left',1152,477,'Close()}else{',216,225,' or missing',403,714,'");return}},HandleLeft',149,179,'b',630,'a);',267,'}',477,'Open(b)},HandleRight',149,263,'c',630,'b);',267,490,'=',477,'Get(',181,709,'(a&&a.left',549,477,'Close(c)}else{',216,'Extra open brace or missing',403,'+"left")}},HandleOver',149,546,'if(',181,720,549,216,'Ambiguous use of',403,404,'return}',181,720,'=',477,'Length();',181,'.overF={name:a};if(b.length>0){',181,'.overF.','left=',326,'b[0]];',181,1220,'right=',326,'b[1]]}else{',1006,'(/withdelims$/)){',181,1220,'left',630,'a);',267,'}',181,1220,'right',630,'a);',267,'}}else{',181,1220,'left=null;',181,1220,1226,'null}}',1006,'(/^above/)){',181,1220,'thickness',499,'a,1);',267,1244,181,1220,'thickness=null}},HandleSuperscript',199,'a=',477,195,181,720,'==',477,'Length()){a=null}','if(a==null','||(!a.atom&&a',480,'a',482,'a=',484,485,'if(a.sup){if(a.sup.isPrime){a=',484,485,'else{',216,'Double exponent',489,'}}a.sup',503,'("superscript");',267,'}},HandleSubscript',199,'a=',477,195,181,720,'==',477,'Length()){a=null}',1273,'||(!a.atom&&a',480,'a',482,'a=',484,485,'if(a.sub){',216,'Double subscripts',489,'}a.sub',503,'("subscript");',267,'}},Parse',199,'b;',241,'b=',168,'++);',211,'mathchar[',1131,'mathchar[b])}else{',211,'special[b]){this[this',152,'b]](b)}else{',211,'letter','.test(b)){this.',1072,'(b)}else{',211,'number',1335,1078,1337,'this.',1084,'(b)}}}}}if(',181,703,549,273,477,'Get(',181,709,'(a.left){',216,217,403,714,715,216,257,'")}}if(',181,720,549,477,'Over()}},Atomize',199,'a=',477,'init;if(!this.error){',477,727,'a.style,a.size)}},Typeset',199,'f=',477,'init;var ',594,'typeset=',477,657,'f.style,f',880,267,'\'<span class="error">\'+this.error',904,'if(d.format=="null"){return""}d.Styled().Remeasured();var e=0;var c=0;if(d.bh>d.h&&','d.bh>jsMath.h+0.001','){e=1}if(d.bd>d.d&&d.bd>jsMath.d+0.001){e=1}if(d.h>jsMath.h||d.d>jsMath.d){c=1}var b=d.html;if(e){if(','jsMath.Browser.','allowAbsolute){var g=(',1389,'?jsMath.h-d.bh:0);b=',898,'Absolute(b,d.w,jsMath.h,0,g)}else{if(',1391,'valignBug){','b=\'<span style="line-height:\'+jsMath.HTML.Em(jsMath.d',')+\';">\'+b',904,162,1391,'operaLineHeightBug){',273,898,'Em(Math.max(0,d.bd-jsMath.hd)/3);',1399,')+"; position:relative; top:"+a+"; vertical-align:"+a+\'">\'+b+"</span>"}}}c=1}if(c){b+=',898,'Blank(0,d.h+0.05,d.d+0.05)}return\'<nobr><span class="scale">\'+b+"</span></nobr>"}});',151,'.AddSpecial({cmd:"HandleCS",open:"HandleOpen",close:"HandleClose"});','jsMath.Add(jsMath,{','Macro',149,179,'c=',151,1122,';c[a]=["Macro"];for(var b=1;b<arguments',158,'b++){c[a][c[a].length]=arguments[b]}}});',538,'={safeRequire:1,Macro',149,'a,',263,'c=',151,1122,';if(b',1152,'b=a}c[a]=["',87,'",b]},LaTeX',149,'b,',179,'c=',151,'.',102,';c[b]=["Extension",','a,"',102,'"]},Font',149,856,1273,'){a=b+"10"}var c=',151,1122,1444,654,')]},MathChar',149,'d,',179,'e=',365,'.famName[d','];if(e',1152,'e=',365,'.fam',158,365,'.fam[e]=d;',365,1462,']=e}var b=',151,'.',1129,';for(var f in a){b[f]=[a[f][0],e,a[f][1]]}},Require',149,856,211,'safeRequire&&(b.match(/\\.\\.\\/|[^-a-z0-9.\\/:_+=%~]/i)||(b.match(/:/)&&b.substr(0,jsMath.root.length)!=jsMath.root))){',540,'loaded[b]=1;return}',540,'Script(this.URL(b),a)},URL',149,'a){a=',175,',"");if(!a.match(/^([a-z]+:|\\/|fonts|extensions\\/)/i)){a="extensions/"+a}if(!a.match(/\\.js$/)){a+=".js"}',167,'a}};',1414,177,149,'a){',540,'Body();','jsMath.Script.','Push(',547,',"','Asynchronous','",a)},','ProcessBeforeShowing',149,'a){',540,1497,'var b=(','jsMath.Controls.cookie.','asynch?"',1502,'":"','Synchronous','");',1498,1499,547,',b,a)},','ProcessElement',149,'a){',540,1497,1498,1499,547,',"ProcessOne",a)}});',547,'={element:[],cancel:0,Parse',149,'d,c,',179,'b=','jsMath.Global.','cache[d];if(!','b[jsMath.em',']){',1537,']={}}',412,1537,'][c];if(!f||',179,'e',183,'c,null,null,d);e.Atomize();f=e.Typeset();if(!a){',1537,'][c]=f}}',167,'f},TextMode',149,'b,a){this.Parse("','T",b,a)},DisplayMode',149,1553,'D",b,a)},','GetElementText',149,'b){if(','b.childNodes.length','==1&&','b.childNodes[','0].nodeName==="#','comment"){',273,1563,'0].nodeValue.match(/^\\[CDATA\\[(.*)\\]\\]$/);if(a',549,167,'a[1]}}var c=this.','recursiveElementText','(b);b.alt=c;if(c.search("&")>=0){','c=c.replace(/&','lt;/g,"<");',1574,'gt;/g,">");',1574,'quot;/g,\'"\');',1574,'amp;/g,"&")}',167,'c},',1572,149,1560,'b.nodeValue',549,'if(b.nodeName!=="#',1565,167,1587,'}',167,1587,'.replace(/^\\[CDATA\\[((.|\\n)*)\\]\\]$/,"$1")}if(',1561,'===0){return" "}var c="";for(',273,'0;a<',1561,';a++){c+=this.',1572,'(',1563,'a])}',167,'c},ResetHidden',149,'a){a.innerHTML=\'<span id="jsMath_hiddenSpan" style="position:absolute"></span>\'+',1391,'operaHiddenFix;a','.className','="";','jsMath.hidden','=a.firstChild;if(!jsMath.BBoxFor("x").w){','jsMath.hidden=jsMath.hiddenTop','}jsMath.ReInit()},ConvertMath',149,'c,b,',179,594,1558,'(b);this.ResetHidden(b);if(d.match(/^\\s*\\\\nocache([^a-zA-Z])/)){a=true;d=d.replace(/\\s*\\\\nocache/,"")}',594,'Parse(c,d,a);b',1613,'="typeset";b.innerHTML=d},',1520,149,'c){this.restart=0;if(!c',1613,'.match(/(^| )math( |$)/)){',767,'a=(c',1613,'.toLowerCase','().match(/(^| )nocache( |$)/)!=null);try{var d=(c.tagName',1637,'()=="div"?"D":"T");this.ConvertMath(d,c,a);c.onclick=jsMath.Click.CheckClick;c.ondblclick=jsMath.Click.CheckDblClick}catch(e){if(c.alt',193,'c.alt;b=b.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");c.innerHTML=b;c',1613,'="math";if(a){c',1613,'+=" nocache"}}',1617,'}},','ProcessElements',149,'b){',1498,'blocking=','1;',966,1391,'processAtOnce;c++,b++){if(b>=','this.element','.length||this.cancel){this.','ProcessComplete','();',211,'cancel){','jsMath.Message.','Set("',177,' Math: Canceled");',1664,'Clear()}',1498,1653,'0;',1498,177,'();return}','else{',273,1498,'SaveQueue();','this.ProcessElement(this.element[','b]);',211,'restart){',1498,1499,'this,"',1649,'",b);',1498,'RestoreQueue(a);',1498,1653,'0;setTimeout("',1498,177,'()",',1391,'delay);return}}}',1498,1690,'var d=Math.floor(100*b/',1658,439,'jsMath.Message.Set("Processing Math',': "+d+"%");setTimeout("',547,'.',1649,'("+b+")",',1391,'delay)},',1502,149,'a','){if(!jsMath.initialized){jsMath.Init()}this.element','=this.GetMathElements(','a);',1498,1653,'1;this.cancel=0;this',556,'=1;',1704,': 0%",1);setTimeout("',547,'.',1649,'(0)",',1391,1711,1514,149,856,1273,1715,1716,'b);a=0}this',556,'=0;while(a<',1658,214,1680,'a]);',211,'restart){','jsMath.Synchronize','("',547,'.',1514,'(null,"+a+")");',1498,177,1675,'a++}this.',1660,'(1)},ProcessOne',149,'a',1715,'=[a];this.',1514,'(null,0)},GetMathElements',149,'d){var b=[];var a;',215,'d=','jsMath.document','}if(typeof(d',833,'d=',1768,'.getElementById(d)}if(!','d.getElementsByTagName','){',187,644,1774,'("div','");for(a=0;a<c.length;a++){if(c[a].className&&c[a].className.match(/(^| )math( |$)/)){if(jsMath.Browser.renameOK&&d.getElementsByName){c[a].setAttribute("name","_jsMath_")}else{b[b.length]=c[a]}}}','c=',1774,'("span',1780,'if(',1391,'renameOK','&&d','.getElementsByName','){b=d',1789,'("_jsMath_',715,'if(',1615,'.sourceIndex','){b.sort(function(f,e){',167,'f',1796,'-e',1796,'})}}',167,'b},',1660,149,'c){if(',1391,1787,193,1768,1789,1792,'");for(',273,'b.length-1;a>=0;a--){b[a].removeAttribute("name")}}',1617,';',1658,'=[];this.restart=null;if(!c){',1704,': Done");',1664,'Clear()}',1664,'UnBlank();if(',1391,'safariImgBug&&(',1510,'font=="symbol"||',1510,'font=="image")){',211,'timeout){clearTimeout(this.timeout)}this.timeout=setTimeout("','jsMath.window.resizeBy','(-1,0); ',1836,'(1,0); ',547,'.timeout = null",2000)}},Cancel',166,547,'.cancel=1;if(',1498,'cancelTimer){',1498,'cancelLoad()}}};',1414,'ConvertTeX',149,'a){',1498,'Push(jsMath.tex2math,"',1850,1503,'ConvertTeX2',149,'a){',1498,1854,1857,1503,'ConvertLaTeX',149,'a){',1498,1854,1864,1503,'ConvertCustom',149,'a){',1498,1854,1871,1503,'CustomSearch',149,'c,b,a,d){',1498,1499,'null,function(){jsMath.tex2math.',1878,'(c,b,a,d)})},tex2math:{',1850,472,1857,472,1864,472,1871,472,1878,':function(){}}});',1746,'=',1498,'Synchronize;try{if(','window.parent','!=window&&window.jsMathAutoload){',1900,'.jsMath=jsMath;',1768,'=',1900,'.document;jsMath.window=',1900,'}}catch(err){}',1535,'Register();jsMath.Loaded();jsMath.Controls.GetCookie();',540,'Source();',1535,'Init();',1498,'Init();',540,'Fonts();if(',1768,'.body){',540,'Body()}',540,'User("onload")}};']
+
+]);
+//end = new Date().getTime();
+//alert(end-start);
diff --git a/src/main/webapp/static/js/jsMath/plugins/autoload.js b/src/main/webapp/static/js/jsMath/plugins/autoload.js
index b230acaa4ccddd548461f357e6d3af955aab7a94..dc7b7f05b33bea7b3151f9034f977d5aa3116e9b 100644
--- a/src/main/webapp/static/js/jsMath/plugins/autoload.js
+++ b/src/main/webapp/static/js/jsMath/plugins/autoload.js
@@ -35,7 +35,7 @@
  *  automatically.  jsMath.Autoload.needsJsMath will be set to true or
  *  false depending on whether jsMath needed to be loaded.
  *  
- *  The value of jsMath.Autoload.element controls the element to be
+ *  The value of jsMath.Autoload.checkElement controls the element to be
  *  searched by the autoload plug-in.  If unset, the complete document will
  *  be searched.  If set to a string, the element with that name will be
  *  searched.  If set to a DOM object, that object and its children will
@@ -116,16 +116,16 @@ jsMath.Add(jsMath.Autoload,{
             //  Firefox3 has window.postMessage for inter-window communication. 
             //  It can be used to handle the new file:// security model,
             //  so set up the listener.
-            if (window.postMessage) {
+            if (window.postMessage && window.addEventListener) {
               this.mustPost = 1;
               window.addEventListener("message",jsMath.Autoload.Post.Listener,false);
             }
           }
         }
       }
-      if (!this.request && window.ActiveXObject) {
-        var xml = ["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0",
-                   "MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
+      if (!this.request && window.ActiveXObject && !this.mustPost) {
+        var xml = ["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0",
+                   "MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
         for (var i = 0; i < xml.length && !this.request; i++) {
           try {this.request = new ActiveXObject(xml[i])} catch (err) {}
         }
@@ -151,12 +151,12 @@ jsMath.Add(jsMath.Autoload,{
         this.request.open("GET",jsMath.Autoload.root+url,false);
         this.request.send(null);
       } catch (err) {
-        throw "autoload: can't load the file '"+url+"'\n"
-            + "Message: "+err.message;
+        throw Error("autoload: can't load the file '"+url+"'\n"
+            + "Message: "+err.message);
       }
       if (this.request.status && this.request.status >= 400) {
-        throw "autoload: can't load the file '"+url+"'\n"
-            + "Error status: "+this.request.status;
+        throw Error("autoload: can't load the file '"+url+"'\n"
+            + "Error status: "+this.request.status);
       }
       window.eval(this.request.responseText);
       this.endLoad();
@@ -247,8 +247,8 @@ jsMath.Add(jsMath.Autoload,{
       if (event.source != jsMath.Autoload.Post.window) return;
       var domain = event.origin.replace(/^file:\/\//,'');
       var ddomain = document.domain.replace(/^file:\/\//,'');
-      if (domain == null || domain == "") {domain = "localhost"}
-      if (ddomain == null || ddomain == "") {ddomain = "localhost"}
+      if (domain == null || domain == "" || domain == "null") {domain = "localhost"}
+      if (ddomain == null || ddomain == "" || ddomain == "null") {ddomain = "localhost"}
       if (domain != ddomain || event.data.substr(0,6) != "jsMAL:") return;
       var type = event.data.substr(6,3).replace(/ /g,'');
       var message = event.data.substr(10);
@@ -405,6 +405,16 @@ jsMath.Add(jsMath.Autoload,{
       if (typeof(files) != 'object') {files = [files]}
       for (var i = 0; i < files.length; i++) {jsMath.Setup.Script(files[i])}
     }
+    var macros = jsMath.Autoload.macros;
+    if (macros) {
+      for (var id in macros) {
+        if (typeof(macros[id]) == 'string') {
+          jsMath.Macro(id,macros[id]);
+        } else {
+          jsMath.Macro(id,macros[id][0],macros[id][1]);
+        }
+      }
+    }    
     jsMath.Synchronize(function () {jsMath.Autoload.Script.RunStack()});
     jsMath.Autoload.setMessage();
   },
@@ -424,6 +434,7 @@ jsMath.Add(jsMath.Autoload,{
         color:'black', fontSize:'75%', width:'auto'
       };
       for (var id in style) {this.div.style[id] = style[id]}
+      this.div.id = "jsMath_message";
       this.div.appendChild(jsMath.document.createTextNode(message));
     } else if (this.div) {
       this.div.firstChild.nodeValue = "";
diff --git a/src/main/webapp/static/js/jsMath/plugins/noImageFonts.js b/src/main/webapp/static/js/jsMath/plugins/noImageFonts.js
index 30cbceecf23beb0be74257be53707fea8e2202e5..7caf4c2e5c96d46be37606574a9d266172cc1ce6 100644
--- a/src/main/webapp/static/js/jsMath/plugins/noImageFonts.js
+++ b/src/main/webapp/static/js/jsMath/plugins/noImageFonts.js
@@ -8,7 +8,7 @@
  *
  *  ---------------------------------------------------------------------
  *
- *  Copyright 2004-2006 by Davide P. Cervone
+ *  Copyright 2004-2009 by Davide P. Cervone
  * 
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -27,6 +27,12 @@ if (!window.jsMath) {window.jsMath = {}}
 jsMath.noImgFonts = 1;
 
 if (!jsMath.Font) {jsMath.Font = {}}
+if (!jsMath.Font.message) {
+  jsMath.Font.message =
+    '<b>No jsMath TeX fonts found</b> -- using unicode fonts instead.<br/>\n'
+      + 'This may be slow and might not print well.<br/>\n'
+      + 'Use the jsMath control panel to get additional information.';
+}
 if (!jsMath.Font.extra_message) {
   jsMath.Font.extra_message =
     'Extra TeX fonts not found: <b><span id="jsMath_ExtraFonts"></span></b><br/>'
diff --git a/src/main/webapp/static/js/jsMath/plugins/smallFonts.js b/src/main/webapp/static/js/jsMath/plugins/smallFonts.js
index 8704f7d952efc664dc3d9cdc06757a0cef597d17..fd40fec7bd85c6443f9070c9894d8ae66b3ab572 100644
--- a/src/main/webapp/static/js/jsMath/plugins/smallFonts.js
+++ b/src/main/webapp/static/js/jsMath/plugins/smallFonts.js
@@ -37,10 +37,10 @@ if (!jsMath.Typeset) {jsMath.Typeset = {}}
 jsMath.sizes = [70, 77, 85, 92, 100, 120, 144, 173, 207, 249];
 jsMath.Img.fonts = [70, 70, 85, 85, 100, 120, 144, 173, 207, 249, 298, 358, 430];
 
-jsMath.styles['.typeset .size0']['font-size'] = '70%';
-jsMath.styles['.typeset .size1']['font-size'] = '77%';
-jsMath.styles['.typeset .size2']['font-size'] = '85%';
-jsMath.styles['.typeset .size3']['font-size'] = '92%';
+jsMath.styles['.typeset .size0'] = {'font-size': '70%'};
+jsMath.styles['.typeset .size1'] = {'font-size': '77%'};
+jsMath.styles['.typeset .size2'] = {'font-size': '85%'};
+jsMath.styles['.typeset .size3'] = {'font-size': '92%'};
 
 /*
  *  Fix multiplication factors in these routines
diff --git a/src/main/webapp/static/js/jsMath/plugins/spriteImageFonts.js b/src/main/webapp/static/js/jsMath/plugins/spriteImageFonts.js
index 3ec09b253e7d6f6c6e6c26335895868801c4f660..8d27aec3c05927fcff2ea8258d4dc77d3d61e781 100644
--- a/src/main/webapp/static/js/jsMath/plugins/spriteImageFonts.js
+++ b/src/main/webapp/static/js/jsMath/plugins/spriteImageFonts.js
@@ -24,6 +24,9 @@
  */
 
 if (!window.jsMath) {window.jsMath = {}}
+
+jsMath.spriteImageFonts = {version: "1.1"};
+
 if (!jsMath.styles) {jsMath.styles = []}
 
 jsMath.styles['.typeset .img'] = {
@@ -236,12 +239,48 @@ if (!jsMath.Img) {jsMath.Img = {}}
       if (jsMath.Browser.alphaPrintBug) {jsMath.Controls.cookie.alpha = 0}
     }
     this.loaded = 1;
-    jsMath.Browser.ImgFontInit();
     jsMath.Img.root = jsMath.root + "fonts-sprite/";
+    jsMath.version += "-sp" + jsMath.spriteImageFonts.version;
   };
 
 
 if (!jsMath.Browser) {jsMath.Browser = {}}
+  /*
+   * Hook into initialization routine
+   */
+  jsMath.Browser.Init = function () {
+    jsMath.browser = 'unknown';
+    this.TestInlineBlock();
+    this.TestSpanHeight();
+    this.TestRenameOK();
+    this.TestStyleChange();
+
+    this.MSIE();
+    this.Mozilla();
+    this.Opera();
+    this.OmniWeb();
+    this.Safari();
+    this.Konqueror();
+    
+    this.ImgFontInit();
+    
+    //
+    // Change some routines depending on the browser
+    // 
+    if (this.allowAbsoluteDelim) {
+      jsMath.Box.DelimExtend = jsMath.Box.DelimExtendAbsolute;
+      jsMath.Box.Layout = jsMath.Box.LayoutAbsolute;
+    } else {
+      jsMath.Box.DelimExtend = jsMath.Box.DelimExtendRelative;
+      jsMath.Box.Layout = jsMath.Box.LayoutRelative;
+    }
+    
+    if (this.separateSkips) {
+      jsMath.HTML.Place = jsMath.HTML.PlaceSeparateSkips;
+      jsMath.Typeset.prototype.Place = jsMath.Typeset.prototype.PlaceSeparateSkips;
+    }
+  },
+
   /*
    *  These should be part of the regular browser
    *  test functions
@@ -249,10 +288,12 @@ if (!jsMath.Browser) {jsMath.Browser = {}}
   jsMath.Browser.ImgFontInit = function () {
     this.msieImgFontBBoxFix = '';
     if (jsMath.browser == 'Mozilla') {
-      jsMath.Box.IMG = jsMath.Box.IMG_mozilla;
-    } else if (jsMath.browser == 'Opera')   {
-      this.operaImageFonts = 1;
-      jsMath.Box.IMG = jsMath.Box.IMG_opera;
+      if (!jsMath.Browser.VersionAtLeast("3.0")) {jsMath.Box.IMG = jsMath.Box.IMG_mozilla}
+    } else if (jsMath.browser == 'Opera') {
+      if (!jsMath.Browser.VersionAtLeast("9.50")) {
+        this.operaImageFonts = 1;
+        jsMath.Box.IMG = jsMath.Box.IMG_opera;
+      }
     } else if (jsMath.browser == 'MSIE') {
       if (jsMath.platform == 'mac') {
         this.msieImgFontBBoxFix = '<span style="display:none">x</span>'
@@ -266,16 +307,6 @@ if (!jsMath.Browser) {jsMath.Browser = {}}
         jsMath.Box.IMG = jsMath.Box.IMG_msie;
       }
     }
-    jsMath.version += "-sp1.0";
-  };
-
-if (!jsMath.Setup) {jsMath.Setup = {}}
-  jsMath.Setup.Fonts = function () {
-    for (var i = 0; i < jsMath.TeX.fam.length; i++) {
-      var name = jsMath.TeX.fam[i];
-      if (name) {this.EncodeFont(name)}
-    }
-    jsMath.Img.Init();
   };
 
 if (!jsMath.Parser) {jsMath.Parser = {}}
diff --git a/src/main/webapp/static/js/jsMath/plugins/tex2math.js b/src/main/webapp/static/js/jsMath/plugins/tex2math.js
index 8d6fca19a5cde74c93ad01234b43a25f5dd332d1..8760e275c80e0bd1733b2b3525de126ed2405d93 100644
--- a/src/main/webapp/static/js/jsMath/plugins/tex2math.js
+++ b/src/main/webapp/static/js/jsMath/plugins/tex2math.js
@@ -153,12 +153,9 @@ jsMath.Add(jsMath.tex2math,{
       } else {
         if (element.className == null) {element.className = ''}
         if (element.firstChild && element.className != 'math') {
-        	var off=ignore;
-        	if(element.className.match && element.tagName.match ){
-        		 off = ignore || element.className.match(/(^| )tex2math_ignore( |$)/) ||
-        		(element.tagName && element.tagName.match(/^(script|noscript|style|textarea|pre)$/i));
-        		off = off && !element.className.match(/(^| )tex2math_process( |$)/);
-        	}
+          var off = ignore || element.className.match(/(^| )tex2math_ignore( |$)/) ||
+             (element.tagName && element.tagName.match(/^(script|noscript|style|textarea|pre|code)$/i));
+          off = off && !element.className.match(/(^| )tex2math_process( |$)/);
           this.ScanElement(element.firstChild,off);
         }
       }
@@ -242,6 +239,9 @@ jsMath.Add(jsMath.tex2math,{
             this.pattern.lastIndex--;
           }
           break;
+          
+        case '\\\\':
+          break;
 
         default:
           if (match.substr(0,6) == '\\begin' && this.search.end == null &&
@@ -404,6 +404,6 @@ jsMath.Add(jsMath.tex2math,{
 if (jsMath.Controls.cookie.tex2math == null) {jsMath.Controls.cookie.tex2math = 1}
 if (jsMath.tex2math.allowDisableTag == null) {jsMath.tex2math.allowDisableTag = 1}
 jsMath.tex2math.TestPatterns();
-jsMath.tex2math.createPattern('stdPattern',/(\\[\(\)\[\]$]|\$\$|\$|\\(begin|end)\{[^}]+\})/g);
+jsMath.tex2math.createPattern('stdPattern',/(\\[\(\)\[\]$\\]|\$\$|\$|\\(begin|end)\{[^}]+\})/g);
 
 }
diff --git a/src/main/webapp/static/js/jsMath/test/index.html b/src/main/webapp/static/js/jsMath/test/index.html
index 542a513efacce80e336d416b407dc7c340bc6a20..559d9e4fdb70cf3ffdd76c6a2197e4b254a9191e 100644
--- a/src/main/webapp/static/js/jsMath/test/index.html
+++ b/src/main/webapp/static/js/jsMath/test/index.html
@@ -35,6 +35,7 @@
     }}
   }
 </SCRIPT>
+<SCRIPT SRC="../plugins/noImageFonts.js"></SCRIPT>
 <SCRIPT SRC="../jsMath.js"></SCRIPT>
 <NOSCRIPT>
 <DIV STYLE="color:#CC0000; text-align:center">
@@ -98,7 +99,7 @@ jsMath.Process(document);
 <TD><SMALL>jsMath web pages<BR>
 Created:  14 Feb 2007<BR>
 <!-- hhmts start -->
-Last modified:  Sep 13, 2008 4:05:37 PM
+Last modified:  Feb 12, 2009 6:14:47 PM
 <!-- hhmts end -->
 <BR>
 Comments to:  <A HREF="mailto:dpvc@union.edu"><CODE>dpvc@union.edu</CODE></A><BR>
diff --git a/src/main/webapp/static/js/jsMath/uncompressed/jsMath-fallback-mac.js b/src/main/webapp/static/js/jsMath/uncompressed/jsMath-fallback-mac.js
index 5bbc2998bb89e5051153428fd1afb09e5c96bdfd..a45476f372ed865aa1eabb15fb034e4d19e457e2 100644
--- a/src/main/webapp/static/js/jsMath/uncompressed/jsMath-fallback-mac.js
+++ b/src/main/webapp/static/js/jsMath/uncompressed/jsMath-fallback-mac.js
@@ -8,7 +8,7 @@
  *
  *  ---------------------------------------------------------------------
  *
- *  Copyright 2004-2006 by Davide P. Cervone
+ *  Copyright 2004-2010 by Davide P. Cervone
  * 
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -188,45 +188,45 @@ jsMath.Add(jsMath.TeX,{
     {c: '&Phi;', krn: {'127': 0.0833}, tclass: 'igreek'},
     {c: '&Psi;', ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'igreek'},
     {c: '&Omega;', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'igreek'},
-    {c: '&alpha;', a:0, ic: 0.0037, krn: {'127': 0.0278}, tclass: 'greek'},
-    {c: '&beta;', d:.2, ic: 0.0528, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&gamma;', a:0, d:.2, ic: 0.0556, tclass: 'greek'},
+    {c: '&alpha;', a:.1, ic: 0.0037, krn: {'127': 0.0278}, tclass: 'greek'},
+    {c: '&beta;', d:.1, ic: 0.0528, krn: {'127': 0.0833}, tclass: 'greek'},
+    {c: '&gamma;', a:.1, d:.1, ic: 0.0556, tclass: 'greek'},
     {c: '&delta;', ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
     {c: '&epsilon;', a:0, krn: {'127': 0.0556}, tclass: 'lucida'},
     // 10 - 1F
-    {c: '&zeta;', d:.2, ic: 0.0738, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&eta;', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'greek'},
+    {c: '&zeta;', d:.1, ic: 0.0738, krn: {'127': 0.0833}, tclass: 'greek'},
+    {c: '&eta;', a:.1, d:.1, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'greek'},
     {c: '&theta;', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&iota;', a:0, krn: {'127': 0.0556}, tclass: 'greek'},
-    {c: '&kappa;', a:0, tclass: 'greek'},
+    {c: '&iota;', a:.1, krn: {'127': 0.0556}, tclass: 'greek'},
+    {c: '&kappa;', a:.1, tclass: 'greek'},
     {c: '&lambda;', tclass: 'greek'},
-    {c: '&mu;', a:0, d:.2, krn: {'127': 0.0278}, tclass: 'greek'},
-    {c: '&nu;', a:0, ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
-    {c: '&xi;', d:.2, ic: 0.046, krn: {'127': 0.111}, tclass: 'greek'},
-    {c: '&pi;', a:0, ic: 0.0359, tclass: 'greek'},
-    {c: '&rho;', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&sigma;', a:0, ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'greek'},
-    {c: '&tau;', a:0, ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
-    {c: '&upsilon;', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'greek'},
-    {c: '&phi;', a:.1, d:.2, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&chi;', a:0, d:.2, krn: {'127': 0.0556}, tclass: 'greek'},
+    {c: '&mu;', a:.1, d:.1, krn: {'127': 0.0278}, tclass: 'greek'},
+    {c: '&nu;', a:.1, ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
+    {c: '&xi;', d:.1, ic: 0.046, krn: {'127': 0.111}, tclass: 'greek'},
+    {c: '&pi;', a:.1, ic: 0.0359, tclass: 'greek'},
+    {c: '&rho;', a:.1, d:.1, krn: {'127': 0.0833}, tclass: 'greek'},
+    {c: '&sigma;', a:.1, ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'greek'},
+    {c: '&tau;', a:.1, ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
+    {c: '&upsilon;', a:.1, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'greek'},
+    {c: '&phi;', a:.3, d:.1, krn: {'127': 0.0833}, tclass: 'greek'},
+    {c: '&chi;', a:.1, d:.1, krn: {'127': 0.0556}, tclass: 'greek'},
     // 20 - 2F
-    {c: '&psi;', a:.1, d:.2, ic: 0.0359, krn: {'127': 0.111}, tclass: 'greek'},
-    {c: '&omega;', a:0, ic: 0.0359, tclass: 'greek'},
-    {c: '&epsilon;', a:0, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&#x3D1;', krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '&#x3D6;', a:0, ic: 0.0278, tclass: 'normal'},
-    {c: '&#x3F1;', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '&#x3C2;', a:0, d:.2, ic: 0.0799, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '&#x3D5;', a:.1, d:.2, krn: {'127': 0.0833}, tclass: 'normal'},
+    {c: '&psi;', a:.3, d:.1, ic: 0.0359, krn: {'127': 0.111}, tclass: 'greek'},
+    {c: '&omega;', a:.1, ic: 0.0359, tclass: 'greek'},
+    {c: '&epsilon;', a:.1, krn: {'127': 0.0833}, tclass: 'greek'},
+    {c: '&#x3D1;', krn: {'127': 0.0833}, tclass: 'greek'},
+    {c: '&#x3D6;', a:.1, ic: 0.0278, tclass: 'lucida'},
+    {c: '&#x3F1;', a:.1, d:.2, krn: {'127': 0.0833}, tclass: 'lucida'},
+    {c: '&#x3C2;', a:.1, d:.2, ic: 0.0799, krn: {'127': 0.0833}, tclass: 'greek'},
+    {c: '&#x3D5;', a:.1, d:.1, krn: {'127': 0.0833}, tclass: 'greek'},
     {c: '&#x21BC;', a:0, d:-.2, tclass: 'harpoon'},
     {c: '&#x21BD;', a:0, d:-.1, tclass: 'harpoon'},
     {c: '&#x21C0;', a:0, d:-.2, tclass: 'harpoon'},
     {c: '&#x21C1;', a:0, d:-.1, tclass: 'harpoon'},
     {c: '<span style="font-size: 133%; position:relative; top:.1em; margin:-.2em; left:-.05em">&#x02D3;</span>', a:.1, tclass: 'lucida'},
     {c: '<span style="font-size: 133%; position:relative; top:.1em; margin:-.2em; left:-.05em">&#x02D2;</span>', a:.1, tclass: 'lucida'},
-    {c: '<span style="font-size:50%">&#x25B7;</span>', tclass: 'symbol'},
-    {c: '<span style="font-size:50%">&#x25C1;</span>', tclass: 'symbol'},
+    {c: '<span style="font-size:50%">&#x25B7;</span>', a:0, tclass: 'symbol'},
+    {c: '<span style="font-size:50%">&#x25C1;</span>', a:0, tclass: 'symbol'},
     // 30 - 3F
     {c: '0', tclass: 'normal'},
     {c: '1', tclass: 'normal'},
@@ -279,7 +279,7 @@ jsMath.Add(jsMath.TeX,{
     {c: '<span style="position: relative; top:.5em">&#x2323;</span>', a:0, d:-.1, tclass: 'normal'},
     {c: '<span style="position: relative; top:-.3em">&#x2322;</span>', a:0, d:-.1, tclass: 'normal'},
     // 60 - 6F
-    {c: '&#x2113;', krn: {'127': 0.111}, tclass: 'symbol'},
+    {c: '<span style="margin:-.2em">&#x2113;</span>', krn: {'127': 0.111}, tclass: 'symbol'},
     {c: 'a', a:0, tclass: 'italic'},
     {c: 'b', tclass: 'italic'},
     {c: 'c', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
@@ -308,8 +308,8 @@ jsMath.Add(jsMath.TeX,{
     {c: 'y', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'italic'},
     {c: 'z', a:0, ic: 0.044, krn: {'127': 0.0556}, tclass: 'italic'},
     {c: '&#x131;', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
-    {c: 'j', d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
-    {c: '&#x2118;', a:0, d:.2, krn: {'127': 0.111}, tclass: 'normal'},
+    {c: '&#x237;', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
+    {c: '&#x2118;', d:0, krn: {'127': 0.111}, tclass: 'asymbol'},
     {c: '<span style="position:relative; left: .4em; top: -.8em; font-size: 50%">&#x2192;</span>', ic: 0.154, tclass: 'symbol'},
     {c: '&#x0311;', ic: 0.399, tclass: 'normal'}
   ],
@@ -330,8 +330,8 @@ jsMath.Add(jsMath.TeX,{
     {c: '&#x2298;', tclass: 'symbol'},
     {c: '&#x2299;', tclass: 'symbol3'},
     {c: '&#x25EF;', tclass: 'symbol'},
-    {c: '<span style="position:relative; top:.25em;">&#xB0;</span>', a:0, d:-.1, tclass: 'symbol'},
-    {c: '&#x2022;', a:0, d:-.2, tclass: 'symbol'},
+    {c: '<span style="position:relative; top:.25em;">&#xB0;</span>', a:.3, d:-.3, tclass: 'symbol'},
+    {c: '&#x2022;', a:.2, d:-.25, tclass: 'symbol'},
     // 10 - 1F
     {c: '&#x224D;', a:.1, tclass: 'symbol'},
     {c: '&#x2261;', a:.1, tclass: 'symbol'},
@@ -339,8 +339,8 @@ jsMath.Add(jsMath.TeX,{
     {c: '&#x2287;', tclass: 'symbol'},
     {c: '&#x2264;', tclass: 'symbol'},
     {c: '&#x2265;', tclass: 'symbol'},
-    {c: '&#x227C;', tclass: 'symbol'},
-    {c: '&#x227D;', tclass: 'symbol'},
+    {c: '&#x2AAF;', tclass: 'symbol'},
+    {c: '&#x2AB0;', tclass: 'symbol'},
     {c: '~', a:0, d: -.2, tclass: 'normal'},
     {c: '&#x2248;', a:.1, d:-.1, tclass: 'symbol'},
     {c: '&#x2282;', tclass: 'symbol'},
@@ -350,22 +350,22 @@ jsMath.Add(jsMath.TeX,{
     {c: '&#x227A;', tclass: 'symbol'},
     {c: '&#x227B;', tclass: 'symbol'},
     // 20 - 2F
-    {c: '&#x2190;', a:0, d:-.15, tclass: 'arrow1'},
-    {c: '&#x2192;', a:0, d:-.15, tclass: 'arrow1'},
-    {c: '&#x2191;', h:1, tclass: 'arrow1a'},
-    {c: '&#x2193;', h:1, tclass: 'arrow1a'},
+    {c: '&#x2190;', a:0, d:-.15, tclass: 'arrows'},
+    {c: '&#x2192;', a:0, d:-.15, tclass: 'arrows'},
+    {c: '&#x2191;', h:.85, tclass: 'arrow1a'},
+    {c: '&#x2193;', h:.85, tclass: 'arrow1a'},
     {c: '&#x2194;', a:0, tclass: 'arrow1'},
-    {c: '&#x2197;', h:1, tclass: 'arrows'},
-    {c: '&#x2198;', h:1, tclass: 'arrows'},
+    {c: '&#x2197;', h:.85, d:.1, tclass: 'arrows'},
+    {c: '&#x2198;', h:.85, d:.1, tclass: 'arrows'},
     {c: '&#x2243;', a: .1, tclass: 'symbol'},
-    {c: '&#x21D0;', a:.1, tclass: 'arrow2'},
-    {c: '&#x21D2;', a:.1, tclass: 'arrow2'},
-    {c: '&#x21D1;', h:.9, d:.1, tclass: 'arrow2a'},
-    {c: '&#x21D3;', h:.9, d:.1, tclass: 'arrow2a'},
-    {c: '&#x21D4;', a:.1, tclass: 'arrow2'},
-    {c: '&#x2196;', h:1, tclass: 'arrows'},
-    {c: '&#x2199;', h:1, tclass: 'arrows'},
-    {c: '&#x221D;', a:.1, tclass: 'symbol'},
+    {c: '&#x21D0;', a:.1, tclass: 'arrows'},
+    {c: '&#x21D2;', a:.1, tclass: 'arrows'},
+    {c: '&#x21D1;', h:.7, tclass: 'asymbol'},
+    {c: '&#x21D3;', h:.7, tclass: 'asymbol'},
+    {c: '&#x21D4;', a:.1, tclass: 'arrows'},
+    {c: '&#x2196;', h:.85, d:.1, tclass: 'arrows'},
+    {c: '&#x2199;', h:.85, d:.1, tclass: 'arrows'},
+    {c: '&#x221D;', a:.1, d:-.1, tclass: 'symbol'},
     // 30 - 3F
     {c: '<span style="font-size: 133%; margin-right: -.1em; position: relative; top:.4em">&#x2032;</span>', a: 0, tclass: 'lucida'},
     {c: '&#x221E;', a:.1, tclass: 'symbol'},
@@ -379,8 +379,8 @@ jsMath.Add(jsMath.TeX,{
     {c: '&#x2203;', tclass: 'symbol'},
     {c: '&#xAC;', a:0, d:-.1, tclass: 'symbol1'},
     {c: '&#x2205;', tclass: 'symbol'},
-    {c: '&#x211C;', tclass: 'symbol'},
-    {c: '&#x2111;', tclass: 'symbol'},
+    {c: '&#x211C;', tclass: 'asymbol'},
+    {c: '&#x2111;', tclass: 'asymbol'},
     {c: '&#x22A4;', tclass: 'symbol'},
     {c: '&#x22A5;', tclass: 'symbol'},
     // 40 - 4F
@@ -419,24 +419,24 @@ jsMath.Add(jsMath.TeX,{
     {c: '&#x22C1;', tclass: 'symbol'},
     // 60 - 6F
     {c: '&#x22A2;', tclass: 'symbol'},
-    {c: '&#x22A3;', tclass: 'symbol2'},
-    {c: '&#xF8F0;', a:.3, d:.2, tclass: 'normal'},
-    {c: '&#xF8FB;', a:.3, d:.2, tclass: 'normal'},
-    {c: '&#xF8EE;', a:.3, d:.2, tclass: 'normal'},
-    {c: '&#xF8F9;', a:.3, d:.2, tclass: 'normal'},
+    {c: '&#x22A3;', tclass: 'symbol'},
+    {c: '&#x23A3;', h:1, d:.3, tclass: 'asymbol'},
+    {c: '&#x23A6;', h:1, d:.3, tclass: 'asymbol'},
+    {c: '&#x23A1;', h:1, d:.3, tclass: 'asymbol'},
+    {c: '&#x23A4;', h:1, d:.3, tclass: 'asymbol'},
     {c: '{', d:.2, tclass: 'normal'},
     {c: '}', d:.2, tclass: 'normal'},
-    {c: '&#x3008;', a:.3, d:.2, tclass: 'normal'},
-    {c: '&#x3009;', a:.3, d:.2, tclass: 'normal'},
-    {c: '|', d:.1, tclass: 'vertical'},
-    {c: '||', d:.1, tclass: 'vertical'},
-    {c: '&#x2195;', h:1, d:.15, tclass: 'arrow1a'},
-    {c: '&#x21D5;', a:.2, d:.1, tclass: 'arrows'},
+    {c: '&#x27E8;', h:.9, d:.1, tclass: 'asymbol'},
+    {c: '&#x27E9;', h:.9, d:.1, tclass: 'asymbol'},
+    {c: '|', d:.2, tclass: 'vertical'},
+    {c: '||', d:.2, tclass: 'vertical'},
+    {c: '&#x2195;', d:.1, tclass: 'arrow1'},
+    {c: '&#x21D5;', d:.1, tclass: 'arrow1'},
     {c: '<span style="margin:-.1em">&#x2216;</span>', a:.3, d:.1, tclass: 'lucida'},
-    {c: '<span style="font-size: 75%; margin:-.3em">&#x2240;</span>', tclass: 'symbol'},
+    {c: '&#x2240;', tclass: 'asymbol'},
     // 70 - 7F
     {c: '<span style="position:relative; top: .86em">&#x221A;</span>', h:.04, d:.9, tclass: 'lucida'},
-    {c: '&#x2210;', a:.4, tclass: 'symbol'},
+    {c: '&#x2210;', d:.1, tclass: 'symbol'},
     {c: '&#x2207;', tclass: 'symbol'},
     {c: '&#x222B;', h:1, d:.1, ic: 0.111, tclass: 'root'},
     {c: '&#x2294;', tclass: 'symbol'},
@@ -459,10 +459,10 @@ jsMath.Add(jsMath.TeX,{
     {c: ')', h: 0.04, d: 1.16, n: 17, tclass: 'delim1'},
     {c: '[', h: 0.04, d: 1.16, n: 104, tclass: 'delim1'},
     {c: ']', h: 0.04, d: 1.16, n: 105, tclass: 'delim1'},
-    {c: '&#xF8F0', h: 0.04, d: 1.16, n: 106, tclass: 'delim1'},
-    {c: '&#xF8FB;', h: 0.04, d: 1.16, n: 107, tclass: 'delim1'},
-    {c: '&#xF8EE;', h: 0.04, d: 1.16, n: 108, tclass: 'delim1'},
-    {c: '&#xF8F9;', h: 0.04, d: 1.16, n: 109, tclass: 'delim1'},
+    {c: '&#x23A3', h: 0.04, d: 1.16, n: 106, tclass: 'delim1a'},
+    {c: '&#x23A6;', h: 0.04, d: 1.16, n: 107, tclass: 'delim1a'},
+    {c: '&#x23A1;', h: 0.04, d: 1.16, n: 108, tclass: 'delim1a'},
+    {c: '&#x23A4;', h: 0.04, d: 1.16, n: 109, tclass: 'delim1a'},
     {c: '{', h: 0.04, d: 1.16, n: 110, tclass: 'delim1'},
     {c: '}', h: 0.04, d: 1.16, n: 111, tclass: 'delim1'},
     {c: '&#x3008;', h: 0.04, d: 1.16, n: 68, tclass: 'delim1c'},
@@ -478,10 +478,10 @@ jsMath.Add(jsMath.TeX,{
     {c: ')', h: 0.04, d: 2.36, n: 33, tclass: 'delim3'},
     {c: '[', h: 0.04, d: 2.36, n: 34, tclass: 'delim3'},
     {c: ']', h: 0.04, d: 2.36, n: 35, tclass: 'delim3'},
-    {c: '&#xF8F0;', h: 0.04, d: 2.36, n: 36, tclass: 'delim3'},
-    {c: '&#xF8FB;', h: 0.04, d: 2.36, n: 37, tclass: 'delim3'},
-    {c: '&#xF8EE;', h: 0.04, d: 2.36, n: 38, tclass: 'delim3'},
-    {c: '&#xF8F9;', h: 0.04, d: 2.36, n: 39, tclass: 'delim3'},
+    {c: '&#x23A3;', h: 0.04, d: 2.36, n: 36, tclass: 'delim3a'},
+    {c: '&#x23A6;', h: 0.04, d: 2.36, n: 37, tclass: 'delim3a'},
+    {c: '&#x23A1;', h: 0.04, d: 2.36, n: 38, tclass: 'delim3a'},
+    {c: '&#x23A4;', h: 0.04, d: 2.36, n: 39, tclass: 'delim3a'},
     {c: '<span style="margin: -.1em">{</span>', h: 0.04, d: 2.36, n: 40, tclass: 'delim3'},
     {c: '<span style="margin: -.1em">}</span>', h: 0.04, d: 2.36, n: 41, tclass: 'delim3'},
     {c: '&#x3008;', h: 0.04, d: 2.36, n: 42, tclass: 'delim3c'},
@@ -493,10 +493,10 @@ jsMath.Add(jsMath.TeX,{
     {c: ')', h: 0.04, d: 2.96, n: 49, tclass: 'delim4'},
     {c: '[', h: 0.04, d: 2.96, n: 50, tclass: 'delim4'},
     {c: ']', h: 0.04, d: 2.96, n: 51, tclass: 'delim4'},
-    {c: '&#xF8F0;', h: 0.04, d: 2.96, n: 52, tclass: 'delim4'},
-    {c: '&#xF8FB;', h: 0.04, d: 2.96, n: 53, tclass: 'delim4'},
-    {c: '&#xF8EE;', h: 0.04, d: 2.96, n: 54, tclass: 'delim4'},
-    {c: '&#xF8F9;', h: 0.04, d: 2.96, n: 55, tclass: 'delim4'},
+    {c: '&#x23A3;', h: 0.04, d: 2.96, n: 52, tclass: 'delim4a'},
+    {c: '&#x23A6;', h: 0.04, d: 2.96, n: 53, tclass: 'delim4a'},
+    {c: '&#x23A1;', h: 0.04, d: 2.96, n: 54, tclass: 'delim4a'},
+    {c: '&#x23A4;', h: 0.04, d: 2.96, n: 55, tclass: 'delim4a'},
     {c: '<span style="margin: -.1em">{</span>', h: 0.04, d: 2.96, n: 56, tclass: 'delim4'},
     {c: '<span style="margin: -.1em">}</span>', h: 0.04, d: 2.96, n: 57, tclass: 'delim4'},
     {c: '&#x3008;', h: 0.04, d: 2.96, tclass: 'delim4c'},
@@ -506,59 +506,59 @@ jsMath.Add(jsMath.TeX,{
     {c: '&#x2215;', h: 0.04, d: 1.76, n: 30, tclass: 'delim2b'},
     {c: '&#x2216;', h: 0.04, d: 1.76, n: 31, tclass: 'delim2b'},
     // 30 - 3F
-    {c: '&#xF8EB;', h: .85, d: .2, delim: {top: 48, bot: 64, rep: 66}, tclass: 'normal'},
-    {c: '&#xF8F6;', h: .85, d: .2, delim: {top: 49, bot: 65, rep: 67}, tclass: 'normal'},
-    {c: '&#xF8EE;', h: .85, d: .2, delim: {top: 50, bot: 52, rep: 54}, tclass: 'normal'},
-    {c: '&#xF8F9;', h: .85, d: .2, delim: {top: 51, bot: 53, rep: 55}, tclass: 'normal'},
-    {c: '&#xF8F0;', h: .85, d: .2, delim: {bot: 52, rep: 54}, tclass: 'normal'},
-    {c: '&#xF8FB;', h: .85, d: .2, delim: {bot: 53, rep: 55}, tclass: 'normal'},
-    {c: '&#xF8EF;', h: .85, d: .2, delim: {top: 50, rep: 54}, tclass: 'normal'},
-    {c: '&#xF8FA;', h: .85, d: .2, delim: {top: 51, rep: 55}, tclass: 'normal'},
-    {c: '&#xF8F1;', h: .85, d: .2, delim: {top: 56, mid: 60, bot: 58, rep: 62}, tclass: 'normal'},
-    {c: '&#xF8FC;', h: .85, d: .2, delim: {top: 57, mid: 61, bot: 59, rep: 62}, tclass: 'normal'},
-    {c: '&#xF8F3;', h: .85, d: .2, delim: {top: 56, bot: 58, rep: 62}, tclass: 'normal'},
-    {c: '&#xF8FE;', h: .85, d: .2, delim: {top: 57, bot: 59, rep: 62}, tclass: 'normal'},
-    {c: '&#xF8F2;', h: .85, d: .2, delim: {rep: 63}, tclass: 'normal'},
-    {c: '&#xF8FD;', h: .85, d: .2, delim: {rep: 119}, tclass: 'normal'},
-    {c: '&#xF8F4;', h: .85, d: .2, delim: {rep: 62}, tclass: 'normal'},
-    {c: '|', h: .7, d: .15, delim: {top: 120, bot: 121, rep: 63}, tclass: 'vertical2'},
+    {c: '&#x239B;', h: 1, d: .2, delim: {top: 48, bot: 64, rep: 66}, tclass: 'asymbol'},
+    {c: '&#x239E;', h: 1, d: .2, delim: {top: 49, bot: 65, rep: 67}, tclass: 'asymbol'},
+    {c: '&#x23A1;', h: 1, d: .2, delim: {top: 50, bot: 52, rep: 54}, tclass: 'asymbol'},
+    {c: '&#x23A4;', h: 1, d: .2, delim: {top: 51, bot: 53, rep: 55}, tclass: 'asymbol'},
+    {c: '&#x23A3;', h: 1, d: .2, delim: {bot: 52, rep: 54}, tclass: 'asymbol'},
+    {c: '&#x23A6;', h: 1, d: .2, delim: {bot: 53, rep: 55}, tclass: 'asymbol'},
+    {c: '&#x23A2;', h: 1, d: .2, delim: {top: 50, rep: 54}, tclass: 'asymbol'},
+    {c: '&#x23A5;', h: 1, d: .2, delim: {top: 51, rep: 55}, tclass: 'asymbol'},
+    {c: '&#x23A7;', h: 1, d: .2, delim: {top: 56, mid: 60, bot: 58, rep: 62}, tclass: 'asymbol'},
+    {c: '&#x23AB;', h: 1, d: .2, delim: {top: 57, mid: 61, bot: 59, rep: 62}, tclass: 'asymbol'},
+    {c: '&#x23A9;', h: 1, d: .2, delim: {top: 56, bot: 58, rep: 62}, tclass: 'asymbol'},
+    {c: '&#x23AD;', h: 1, d: .2, delim: {top: 57, bot: 59, rep: 62}, tclass: 'asymbol'},
+    {c: '&#x23A8;', h: 1, d: .2, delim: {rep: 63}, tclass: 'asymbol'},
+    {c: '&#x23AC;', h: 1, d: .2, delim: {rep: 119}, tclass: 'asymbol'},
+    {c: '&#x23AA;', h: 1, d: .2, delim: {rep: 62}, tclass: 'asymbol'},
+    {c: '&#x23AA;', h: .95, d: .05, delim: {top: 120, bot: 121, rep: 63}, tclass: 'arrow1a'},
     // 40 - 4F
-    {c: '&#xF8ED;', h: .85, d: .2, delim: {top: 56, bot: 59, rep: 62}, tclass: 'normal'},
-    {c: '&#xF8F8;', h: .85, d: .2, delim: {top: 57, bot: 58, rep: 62}, tclass: 'normal'},
-    {c: '&#xF8EC;', h: .85, d: .2, delim: {rep: 66}, tclass: 'normal'},
-    {c: '&#xF8F7;', h: .85, d: .2, delim: {rep: 67}, tclass: 'normal'},
+    {c: '&#x239D;', h: 1, d: .2, delim: {top: 56, bot: 59, rep: 62}, tclass: 'asymbol'},
+    {c: '&#x23A0;', h: 1, d: .2, delim: {top: 57, bot: 58, rep: 62}, tclass: 'asymbol'},
+    {c: '&#x239C;', h: 1, d: .2, delim: {rep: 66}, tclass: 'asymbol'},
+    {c: '&#x239F;', h: 1, d: .2, delim: {rep: 67}, tclass: 'asymbol'},
     {c: '&#x3008;', h: 0.04, d: 1.76, n: 28, tclass: 'delim2c'},
     {c: '&#x3009;', h: 0.04, d: 1.76, n: 29, tclass: 'delim2c'},
-    {c: '&#x2294;', h: 0, d: 1, n: 71, tclass: 'bigop1'},
-    {c: '&#x2294;', h: 0.1, d: 1.5, tclass: 'bigop2'},
+    {c: '&#x2294;', h: -.2, d: 1, n: 71, tclass: 'bigop1'},
+    {c: '&#x2294;', h: -.1, d: 1.2, tclass: 'bigop2'},
     {c: '&#x222E;', h: 0, d: 1.11, ic: 0.095, n: 73, tclass: 'bigop1c'},
     {c: '&#x222E;', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
     {c: '&#x2299;', h: 0, d: 1, n: 75, tclass: 'bigop1'},
-    {c: '&#x2299;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    {c: '&#x2295;', h: 0, d: 1, n: 77, tclass: 'bigop1'},
-    {c: '&#x2295;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    {c: '&#x2297;', h: 0, d: 1, n: 79, tclass: 'bigop1'},
-    {c: '&#x2297;', h: 0.1, d: 1.5, tclass: 'bigop2'},
+    {c: '&#x2299;', h: 0.1, d: 1.2, tclass: 'bigop2'},
+    {c: '&#x2295;', h: .2, d: .9, n: 77, tclass: 'bigop1'},
+    {c: '&#x2295;', h: 0.4, d: 1.2, tclass: 'bigop2'},
+    {c: '&#x2297;', h: .2, d: .9, n: 79, tclass: 'bigop1'},
+    {c: '&#x2297;', h: 0.4, d: 1.2, tclass: 'bigop2'},
     // 50 - 5F
     {c: '&#x2211;', h: 0, d: 1, n: 88, tclass: 'bigop1a'},
     {c: '&#x220F;', h: 0, d: 1, n: 89, tclass: 'bigop1a'},
     {c: '&#x222B;', h: 0, d: 1.11, ic: 0.095, n: 90, tclass: 'bigop1c'},
     {c: '&#x222A;', h: 0, d: 1, n: 91, tclass: 'bigop1b'},
     {c: '&#x2229;', h: 0, d: 1, n: 92, tclass: 'bigop1b'},
-    {c: '&#x228E;', h: 0, d: 1, n: 93, tclass: 'bigop1b'},
+    {c: '&#x228E;', h: -.2, d: 1.1, n: 93, tclass: 'bigop1b'},
     {c: '&#x2227;', h: 0, d: 1, n: 94, tclass: 'bigop1'},
     {c: '&#x2228;', h: 0, d: 1, n: 95, tclass: 'bigop1'},
     {c: '&#x2211;', h: 0.1, d: 1.6, tclass: 'bigop2a'},
-    {c: '&#x220F;', h: 0.1, d: 1.5, tclass: 'bigop2a'},
+    {c: '&#x220F;', h: 0.1, d: 1.6, tclass: 'bigop2a'},
     {c: '&#x222B;', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
     {c: '&#x222A;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
     {c: '&#x2229;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
-    {c: '&#x228E;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
-    {c: '&#x2227;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    {c: '&#x2228;', h: 0.1, d: 1.5, tclass: 'bigop2'},
+    {c: '&#x228E;', h: -0.3, d: 1.6, tclass: 'bigop2b'},
+    {c: '&#x2227;', h: 0.1, d: 1.2, tclass: 'bigop2'},
+    {c: '&#x2228;', h: 0.1, d: 1.2, tclass: 'bigop2'},
     // 60 - 6F
-    {c: '&#x2210;', h: 0, d: 1, n: 97, tclass: 'bigop1a'},
-    {c: '&#x2210;', h: 0.1, d: 1.5, tclass: 'bigop2a'},
+    {c: '&#x2210;', h: 0, d: .9, n: 97, tclass: 'bigop1a'},
+    {c: '&#x2210;', h: 0.1, d: 1.4, tclass: 'bigop2a'},
     {c: '&#xFE3F;', h: 0.722, w: .65, n: 99, tclass: 'wide1'},
     {c: '&#xFE3F;', h: 0.85, w: 1.1, n: 100, tclass: 'wide2'},
     {c: '&#xFE3F;', h: 0.99, w: 1.65, tclass: 'wide3'},
@@ -567,10 +567,10 @@ jsMath.Add(jsMath.TeX,{
     {c: '&#x2053;', h: 0.99, w: 2, tclass: 'wide3a'},
     {c: '[', h: 0.04, d: 1.76, n: 20, tclass: 'delim2'},
     {c: ']', h: 0.04, d: 1.76, n: 21, tclass: 'delim2'},
-    {c: '&#xF8F0;', h: 0.04, d: 1.76, n: 22, tclass: 'delim2'},
-    {c: '&#xF8FB;', h: 0.04, d: 1.76, n: 23, tclass: 'delim2'},
-    {c: '&#xF8EE;', h: 0.04, d: 1.76, n: 24, tclass: 'delim2'},
-    {c: '&#xF8F9', h: 0.04, d: 1.76, n: 25, tclass: 'delim2'},
+    {c: '&#x23A3;', h: 0.04, d: 1.76, n: 22, tclass: 'delim2a'},
+    {c: '&#x23A6;', h: 0.04, d: 1.76, n: 23, tclass: 'delim2a'},
+    {c: '&#x23A1;', h: 0.04, d: 1.76, n: 24, tclass: 'delim2a'},
+    {c: '&#x23A4;', h: 0.04, d: 1.76, n: 25, tclass: 'delim2a'},
     {c: '<span style="margin: -.1em">{</span>', h: 0.04, d: 1.76, n: 26, tclass: 'delim2'},
     {c: '<span style="margin: -.1em">}</span>', h: 0.04, d: 1.76, n: 27, tclass: 'delim2'},
     // 70 - 7F
@@ -581,15 +581,15 @@ jsMath.Add(jsMath.TeX,{
     {c: '<span style="font-size: 400%; position:relative; top:.92em">&#x221A;</span>', h: 0.1, d: 3.75, n: 117, tclass: 'root'},
     {c: '<span style="font-size: 500%; position:relative; top:.9em">&#x221A;</span>', h: .12, d: 4.5, n: 118, tclass: 'root'},
     {c: '<span style="font-size: 625%; position:relative; top:.9em">&#x221A;</span>', h: .14, d: 5.7, tclass: 'root'},
-    {c: '||', h:.65, d:.15, delim: {top: 126, bot: 127, rep: 119}, tclass: 'vertical2'},
-    {c: '&#x25B5;', h:.4, delim: {top: 120, rep: 63}, tclass: 'arrow1b'},
-    {c: '&#x25BF;', h:.38, delim: {bot: 121, rep: 63}, tclass: 'arrow1b'},
+    {c: '<span style="font-size:130%">&#x2016;</span>', h:.9, delim: {top: 126, bot: 127, rep: 119}, tclass: 'asymbol'},
+    {c: '&#x2191;', h:.9, d:0, delim: {top: 120, rep: 63}, tclass: 'arrow1a'},
+    {c: '&#x2193;', h:.9, d:0, delim: {bot: 121, rep: 63}, tclass: 'arrow1a'},
     {c: '<span style="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">&#x256D;</span>', h:.1, tclass: 'symbol'},
     {c: '<span style="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">&#x256E;</span>', h:.1, tclass: 'symbol'},
     {c: '<span style="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">&#x2570;</span>', h:.1, tclass: 'symbol'},
     {c: '<span style="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">&#x256F;</span>', h:.1, tclass: 'symbol'},
-    {c: '&#x25B5;', h:.5, delim: {top: 126, rep: 119}, tclass: 'arrow2b'},
-    {c: '&#x25BF;', h:.6, d:-.1, delim: {bot: 127, rep: 119}, tclass: 'arrow2b'}
+    {c: '&#x21D1;', h:.7, delim: {top: 126, rep: 119}, tclass: 'asymbol'},
+    {c: '&#x21D3;', h:.7, delim: {bot: 127, rep: 119}, tclass: 'asymbol'}
   ],
   
   cmti10: [
@@ -877,43 +877,44 @@ jsMath.Setup.Styles({
     '.typeset .italic':         "font-style: italic",
     '.typeset .bold':           "font-weight: bold",
     '.typeset .lucida':         "font-family: 'Lucida Grande'",
-    '.typeset .asymbol':        "font-family: 'Apple Symbols'; font-size: 115%",
+    '.typeset .asymbol':        "font-family: 'Apple Symbols'; font-size: 125%",
     '.typeset .cal':            "font-family: 'Apple Chancery'",
     '.typeset .arrows':         "font-family: 'Hiragino Mincho Pro'",
+    '.typeset .Arrows':         "font-family: 'AppleGothic'",
     '.typeset .arrow1':         "font-family: 'Hiragino Mincho Pro'; position: relative; top: .075em; margin: -1px",
     '.typeset .arrow1a':        "font-family: 'Hiragino Mincho Pro'; margin:-.3em",
-    '.typeset .arrow1b':        "font-family: AppleGothic; font-size: 50%",
-    '.typeset .arrow2':         "font-family: Symbol; font-size: 140%; position: relative; top: .1em; margin:-1px",
-    '.typeset .arrow2a':        "font-family: Symbol",
-    '.typeset .arrow2b':        "font-family: AppleGothic; font-size: 67%",
     '.typeset .harpoon':        "font-family: AppleGothic; font-size: 90%",
     '.typeset .symbol':         "font-family: 'Hiragino Mincho Pro'",
     '.typeset .symbol2':        "font-family: 'Hiragino Mincho Pro'; margin:-.2em",
     '.typeset .symbol3':        "font-family: AppleGothic",
-    '.typeset .delim1':         "font-family: Times; font-size: 133%; position:relative; top:.75em",
+    '.typeset .delim1':         "font-family: Times; font-size: 133%; position:relative; top:.7em",
+    '.typeset .delim1a':        "font-family: 'Apple Symbols'; font-size: 125%; position:relative; top:.75em",
     '.typeset .delim1b':        "font-family: 'Hiragino Mincho Pro'; font-size: 133%; position:relative; top:.8em; margin: -.1em",
     '.typeset .delim1c':        "font-family: Symbol; font-size: 120%; position:relative; top:.8em;",
     '.typeset .delim2':         "font-family: Baskerville; font-size: 180%; position:relative; top:.75em",
+    '.typeset .delim2a':        "font-family: 'Apple Symbols'; font-size: 175%; position:relative; top:.8em",
     '.typeset .delim2b':        "font-family: 'Hiragino Mincho Pro'; font-size: 190%; position:relative; top:.8em; margin: -.1em",
     '.typeset .delim2c':        "font-family: Symbol; font-size: 167%; position:relative; top:.8em;",
     '.typeset .delim3':         "font-family: Baskerville; font-size: 250%; position:relative; top:.725em",
+    '.typeset .delim3a':        "font-family: 'Apple Symbols'; font-size: 240%; position:relative; top:.78em",
     '.typeset .delim3b':        "font-family: 'Hiragino Mincho Pro'; font-size: 250%; position:relative; top:.8em; margin: -.1em",
     '.typeset .delim3c':        "font-family: symbol; font-size: 240%; position:relative; top:.775em;",
     '.typeset .delim4':         "font-family: Baskerville; font-size: 325%; position:relative; top:.7em",
+    '.typeset .delim4a':        "font-family: 'Apple Symbols'; font-size: 310%; position:relative; top:.75em",
     '.typeset .delim4b':        "font-family: 'Hiragino Mincho Pro'; font-size: 325%; position:relative; top:.8em; margin: -.1em",
     '.typeset .delim4c':        "font-family: Symbol; font-size: 300%; position:relative; top:.8em;",
     '.typeset .vertical':       "font-family: Copperplate",
     '.typeset .vertical1':      "font-family: Copperplate; font-size: 85%; margin: .15em;",
     '.typeset .vertical2':      "font-family: Copperplate; font-size: 85%; margin: .17em;",
-    '.typeset .greek':          "font-family: serif",
-    '.typeset .igreek':         "font-family: serif; font-style:italic",
-    '.typeset .bgreek':         "font-family: serif; font-weight:bold",
-    '.typeset .bigop1':         "font-family: 'Hiragino Mincho Pro'; font-size: 133%; position: relative; top: .85em; margin:-.05em",
+    '.typeset .greek':          "font-family: 'Hiragino Mincho Pro', serif; margin-left:-.2em; margin-right:-.2em;",
+    '.typeset .igreek':         "font-family: 'Hiragino Mincho Pro', serif; font-style:italic; margin-left:-.2em; margin-right:-.1em",
+    '.typeset .bgreek':         "font-family: 'Hiragino Mincho Pro', serif; font-weight:bold",
+    '.typeset .bigop1':         "font-family: 'Hiragino Mincho Pro'; font-size: 133%; position: relative; top: .7em; margin:-.05em",
     '.typeset .bigop1a':        "font-family: Baskerville; font-size: 100%; position: relative; top: .775em;",
-    '.typeset .bigop1b':        "font-family: 'Hiragino Mincho Pro'; font-size: 160%; position: relative; top: .7em; margin:-.1em",
+    '.typeset .bigop1b':        "font-family: 'Hiragino Mincho Pro'; font-size: 160%; position: relative; top: .67em; margin:-.1em",
     '.typeset .bigop1c':        "font-family: 'Apple Symbols'; font-size: 125%; position: relative; top: .75em; margin:-.1em;",
-    '.typeset .bigop2':         "font-family: 'Hiragino Mincho Pro'; font-size: 200%; position: relative; top: .8em; margin:-.07em",
-    '.typeset .bigop2a':        "font-family: Baskerville; font-size: 175%; position: relative; top: .7em;",
+    '.typeset .bigop2':         "font-family: 'Hiragino Mincho Pro'; font-size: 200%; position: relative; top: .6em; margin:-.07em",
+    '.typeset .bigop2a':        "font-family: Baskerville; font-size: 175%; position: relative; top: .67em;",
     '.typeset .bigop2b':        "font-family: 'Hiragino Mincho Pro'; font-size: 270%; position: relative; top: .62em; margin:-.1em",
     '.typeset .bigop2c':        "font-family: 'Apple Symbols'; font-size: 250%; position: relative; top: .7em; margin:-.17em;",
     '.typeset .wide1':          "font-size: 67%; position: relative; top:-.8em",
@@ -928,43 +929,6 @@ jsMath.Setup.Styles({
     '.typeset .baccent':        "position: relative; top: .02em; font-weight:bold"
 });
 
-/*
- *  Check for ability to access Apple Symbols font
- */
-
-jsMath.noAppleSymbols =  (jsMath.BBoxFor('&#x2223;').w ==
-    jsMath.BBoxFor('<span style="font-family: \'Apple Symbols\'">&#x2223;</span>').w);
-
-if (jsMath.noAppleSymbols) {
-  jsMath.Update.TeXfonts({
-    cmsy10: {
-      '16': {c: '<span style="position:relative;top:.25em; font-size: 67%">&#x2323;</span><span style="position:relative;top:-.15em;font-size:67%;margin-left:-1em">&#x2322;</span>', tclass: 'normal'},
-      '22': {c: '&#x227A;<span style="position:relative;top:.3em; margin-left:-1em">&mdash;</span>', tclass: 'normal'},
-      '23': {c: '&#x227B;<span style="position:relative;top:.3em; margin-left:-1em">&mdash;</span>', tclass: 'normal'},
-      '91': {c: '&#x222A;'},
-      '92': {c: '&#x2229;'},
-      '93': {c: '&#x222A;<span style="font-size: 50%; margin-left:-1.1em; position: relative; top:-.3em; margin-right:.4em">+</span>'},
-      '94': {c: '&#x2227;'},
-      '95': {c: '&#x2228;'},
-      '96': {c: '|<span style="position:relative; top:-.15em; margin-left:-.1em">&ndash;</span>', tclass: 'normal'},
-      '109': {c: '&#x21D1;<span style="position:relative; top:.1em; margin-left:-.6em">&#x21D3;</span>', h:.9, d:.2, tclass: 'arrow2a'}
-    },
-    
-    cmex10: {
-      '85': {c: '&#x222A;<span style="font-size: 50%; margin-left:-1.1em; position: relative; top:-.3em; margin-right:.4em">+</span>'},
-      '93': {c: '&#x222A;<span style="font-size: 50%; margin-left:-1.1em; position: relative; top:-.3em; margin-right:.4em">+</span>'}
-    }
-  });
-
-  jsMath.Macro('rightleftharpoons','\\unicode{x21CC}');
-} else {
-  jsMath.Setup.Styles({
-    '.typeset .harpoon':   "font-family: 'Apple Symbols'; font-size: 125%"
-  });
-  
-}
-
-
 //
 //  Adjust for OmniWeb
 //
@@ -981,16 +945,6 @@ if (jsMath.browser == 'OmniWeb') {
     '.typeset .arrow2':   'font-family: Symbol; font-size: 100%; position: relative; top: -.1em; margin:-1px'
   });
   
-  if (jsMath.noAppleSymbols) {
-    jsMath.Update.TeXfonts({
-      cmsy10: {
-        '22': {c: '&#x227A;<span style="position:relative;top:.25em; margin-left:-.8em; margin-right:.2em">&ndash;</span>', tclass: 'normal'},
-        '23': {c: '&#x227B;<span style="position:relative;top:.25em; margin-left:-.7em; margin-right:.1em">&ndash;</span>', tclass: 'normal'},
-        '96': {c: '<span style="font-size:80%; position:relative; top:-.15em">|</span><span style="position:relative; top:-.1em; margin-left:-.1em">&ndash;</span>', tclass: 'normal'}
-      }
-    });
-  }
-  
 }
 
 //
diff --git a/src/main/webapp/static/js/jsMath/uncompressed/jsMath-fallback-pc.js b/src/main/webapp/static/js/jsMath/uncompressed/jsMath-fallback-pc.js
index 877a21340ad83125ad4cf76d1db6ab926a1c31cf..f7fb8ba0f83400a27d2aacae460bf2071b452923 100644
--- a/src/main/webapp/static/js/jsMath/uncompressed/jsMath-fallback-pc.js
+++ b/src/main/webapp/static/js/jsMath/uncompressed/jsMath-fallback-pc.js
@@ -8,7 +8,7 @@
  *
  *  ---------------------------------------------------------------------
  *
- *  Copyright 2004-2006 by Davide P. Cervone
+ *  Copyright 2004-2010 by Davide P. Cervone
  * 
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -223,8 +223,8 @@ jsMath.Add(jsMath.TeX,{
     {c: '&#x21BD;', a:0, d:-.1, tclass: 'arrows'},
     {c: '&#x21C0;', a:0, d:-.2, tclass: 'arrows'},
     {c: '&#x21C1;', a:0, d:-.1, tclass: 'arrows'},
-    {c: '<span style="position:relative; top:-.1em">&#x02D3;</span>', a:.1, tclass: 'symbol'},
-    {c: '<span style="position:relative; top:-.1em">&#x02D2;</span>', a:.1, tclass: 'symbol'},
+    {c: '<span style="position:relative; top:-.1em; display:inline-block">&#x02D3;</span>', a:.1, tclass: 'symbol'},
+    {c: '<span style="position:relative; top:-.1em; display:inline-block">&#x02D2;</span>', a:.1, tclass: 'symbol'},
     {c: '&#x25B9;', tclass: 'symbol'},
     {c: '&#x25C3;', tclass: 'symbol'},
     // 30 - 3F
@@ -241,7 +241,7 @@ jsMath.Add(jsMath.TeX,{
     {c: '.', a:-.3, tclass: 'normal'},
     {c: ',', a:-.3, d:.2, tclass: 'normal'},
     {c: '&lt;', a:.1, tclass: 'normal'},
-    {c: '<span style="font-size:133%; position:relative; top:.1em">/</span>', d:.1, krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}, tclass: 'normal'},
+    {c: '<span style="font-size:133%; position:relative; top:.1em; display:inline-block">/</span>', d:.1, krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}, tclass: 'normal'},
     {c: '&gt;', a:.1, tclass: 'normal'},
     {c: '&#x22C6;', a:0, tclass: 'arial'},
     // 40 - 4F
@@ -276,8 +276,8 @@ jsMath.Add(jsMath.TeX,{
     {c: '&#x266D;', tclass: 'symbol'},
     {c: '&#x266E;', tclass: 'symbol'},
     {c: '&#x266F;', tclass: 'symbol'},
-    {c: '<span style="position: relative; top:-.3em; font-size:75%">&#x203F;</span>', a:0, d:-.1, tclass: 'arial'},
-    {c: '<span style="position: relative; top:.4em; font-size:75%">&#x2040;</span>', a:0, d:-.1, tclass: 'arial'},
+    {c: '<span style="position:relative; top:-.3em; font-size:75%; display:inline-block">&#x203F;</span>', a:0, d:-.1, tclass: 'arial'},
+    {c: '<span style="position:relative; top:.4em; font-size:75%; display:inline-block">&#x2040;</span>', a:0, d:-.1, tclass: 'arial'},
     // 60 - 6F
     {c: '&#x2113;', krn: {'127': 0.111}, tclass: 'italic'},
     {c: 'a', a:0, tclass: 'italic'},
@@ -310,16 +310,16 @@ jsMath.Add(jsMath.TeX,{
     {c: '&#x131;', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
     {c: 'j', d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
     {c: '&#x2118;', a:0, d:.2, krn: {'127': 0.111}, tclass: 'arial'},
-    {c: '<span style="position:relative; left: .3em; top: -.65em; font-size: 67%">&#x2192;</span>', ic: 0.154, tclass: 'symbol'},
+    {c: '<span style="position:relative; left:.3em; top:-.65em; font-size: 67%; display:inline-block">&#x2192;</span>', ic: 0.154, tclass: 'symbol'},
     {c: '&#x0311;', ic: 0.399, tclass: 'normal'}
   ],
 
   cmsy10: [
     // 00 - 0F
-    {c: '<span style="position:relative; top:.1em">&#x2212;</span>', a:.1, tclass: 'symbol'},
+    {c: '<span style="position:relative; top:.1em; display:inline-block">&#x2212;</span>', a:.1, tclass: 'symbol'},
     {c: '&#xB7;', a:0, d:-.2, tclass: 'normal'},
     {c: '&#xD7;', a:0, tclass: 'normal'},
-    {c: '<span style="position:relative; top:.3em">&#x2A;</span>', a:0, tclass: 'normal'},
+    {c: '<span style="position:relative; top:.3em; display:inline-block">&#x2A;</span>', a:0, tclass: 'normal'},
     {c: '&#xF7;', a:0, tclass: 'normal'},
     {c: '&#x25CA;', tclass: 'symbol'},
     {c: '&#xB1;', a:.1, tclass: 'normal'},
@@ -367,14 +367,14 @@ jsMath.Add(jsMath.TeX,{
     {c: '&#x2199;', a:.1, tclass: 'arrows'},
     {c: '&#x221D;', a:.1, tclass: 'normal'},
     // 30 - 3F
-    {c: '<span style="font-size: 133%; margin-right: -.1em; position: relative; top:.4em">&#x2032;</span>', a: 0, tclass: 'lucida'},
+    {c: '<span style="font-size:133%; margin-right:-.1em; position: relative; top:.4em; display:inline-block">&#x2032;</span>', a: 0, tclass: 'lucida'},
     {c: '&#x221E;', a:.1, tclass: 'symbol'},
     {c: '&#x2208;', tclass: 'symbol'},
     {c: '&#x220B;', tclass: 'symbol'},
-    {c: '<span style="font-size: 150%; position:relative; top:.2em">&#x25B3;</span>', tclass: 'symbol'},
-    {c: '<span style="font-size: 150%; position:relative; top:.2em">&#x25BD;</span>', tclass: 'symbol'},
-    {c: '<span style="font-size: 133%; position:relative; top:.2em">/</span>', d:.2, tclass: 'normal'},
-    {c: '<span style="font-size: 67%; position: relative; top:-.15em; margin-right:-.3em">&#x22A2;</span>', tclass: 'symbol'},
+    {c: '<span style="font-size:150%; position:relative; top:.2em; display:inline-block">&#x25B3;</span>', tclass: 'symbol'},
+    {c: '<span style="font-size:150%; position:relative; top:.2em; display:inline-block">&#x25BD;</span>', tclass: 'symbol'},
+    {c: '<span style="font-size:133%; position:relative; top:.2em; display:inline-block">/</span>', d:.2, tclass: 'normal'},
+    {c: '<span style="font-size:67%; position: relative; top:-.15em; margin-right:-.3em; display:inline-block">&#x22A2;</span>', tclass: 'symbol'},
     {c: '&#x2200;', tclass: 'symbol'},
     {c: '&#x2203;', tclass: 'symbol'},
     {c: '&#xAC;', a:0, d:-.1, tclass: 'symbol'},
@@ -420,10 +420,10 @@ jsMath.Add(jsMath.TeX,{
     // 60 - 6F
     {c: '&#x22A2;', tclass: 'symbol'},
     {c: '&#x22A3;', tclass: 'symbol'},
-    {c: '&#x2308;', a:.3, d:.2, tclass: 'arial'},
-    {c: '&#x2309;', a:.3, d:.2, tclass: 'arial'},
-    {c: '&#x230A;', a:.3, d:.2, tclass: 'arial'},
-    {c: '&#x230B;', a:.3, d:.2, tclass: 'arial'},
+    {c: '&#x230A;', a:.3, d:.2, tclass: 'lucida'},
+    {c: '&#x230B;', a:.3, d:.2, tclass: 'lucida'},
+    {c: '&#x2308;', a:.3, d:.2, tclass: 'lucida'},
+    {c: '&#x2309;', a:.3, d:.2, tclass: 'lucida'},
     {c: '{', d:.2, tclass: 'normal'},
     {c: '}', d:.2, tclass: 'normal'},
     {c: '&#x2329;', a:.3, d:.2, tclass: 'symbol'},
@@ -435,10 +435,10 @@ jsMath.Add(jsMath.TeX,{
     {c: '&#x2216;', a:.3, d:.1, tclass: 'symbol'},
     {c: '&#x2240;', tclass: 'symbol'},
     // 70 - 7F
-    {c: '<span style="position:relative; top: .8em">&#x221A;</span>', h:.04, d:.8, tclass: 'symbol'},
+    {c: '<span style="display:inline-block; position:relative; top:.8em">&#x221A;</span>', h:.04, d:.8, tclass: 'symbol'},
     {c: '&#x2210;', a:.4, tclass: 'symbol'},
     {c: '&#x2207;', tclass: 'symbol'},
-    {c: '<span style="font-size: 85%; left:-.1em; margin-right:-.2em">&#x222B;</span>', a:.4, d:.1, ic: 0.111, tclass: 'lucida'},
+    {c: '<span style="display:inline-block; position:relative; font-size:85%; left:-.1em; margin-right:-.2em">&#x222B;</span>', a:.4, d:.1, ic: 0.111, tclass: 'lucida'},
     {c: '&#x2294;', tclass: 'symbol'},
     {c: '&#x2293;', tclass: 'symbol'},
     {c: '&#x2291;', tclass: 'symbol'},
@@ -459,12 +459,12 @@ jsMath.Add(jsMath.TeX,{
     {c: ')', h: 0.04, d: 1.16, n: 17, tclass: 'delim1'},
     {c: '[', h: 0.04, d: 1.16, n: 104, tclass: 'delim1'},
     {c: ']', h: 0.04, d: 1.16, n: 105, tclass: 'delim1'},
-    {c: '&#x2308;', h: 0.04, d: 1.16, n: 106, tclass: 'delim1a'},
-    {c: '&#x2309;', h: 0.04, d: 1.16, n: 107, tclass: 'delim1a'},
-    {c: '&#x230A;', h: 0.04, d: 1.16, n: 108, tclass: 'delim1a'},
-    {c: '&#x230B;', h: 0.04, d: 1.16, n: 109, tclass: 'delim1a'},
-    {c: '<span style="margin-left:-.1em">{</span>', h: 0.04, d: 1.16, n: 110, tclass: 'delim1'},
-    {c: '<span style="margin-right:-.1em">}</span>', h: 0.04, d: 1.16, n: 111, tclass: 'delim1'},
+    {c: '&#x230A;', h: 0.04, d: 1.16, n: 106, tclass: 'delim1a'},
+    {c: '&#x230B;', h: 0.04, d: 1.16, n: 107, tclass: 'delim1a'},
+    {c: '&#x2308;', h: 0.04, d: 1.16, n: 108, tclass: 'delim1a'},
+    {c: '&#x2309;', h: 0.04, d: 1.16, n: 109, tclass: 'delim1a'},
+    {c: '<span style="display:inline-block; margin-left:-.1em">{</span>', h: 0.04, d: 1.16, n: 110, tclass: 'delim1'},
+    {c: '<span style="display:inline-block; margin-right:-.1em">}</span>', h: 0.04, d: 1.16, n: 111, tclass: 'delim1'},
     {c: '&#x2329;', h: 0.04, d: 1.16, n: 68, tclass: 'delim1b'},
     {c: '&#x232A;', h: 0.04, d: 1.16, n: 69, tclass: 'delim1b'},
     {c: '&#x2223;', h:.7, d:.1, delim: {rep: 12}, tclass: 'symbol'},
@@ -478,12 +478,12 @@ jsMath.Add(jsMath.TeX,{
     {c: ')', h: 0.04, d: 2.36, n: 33, tclass: 'delim3'},
     {c: '[', h: 0.04, d: 2.36, n: 34, tclass: 'delim3'},
     {c: ']', h: 0.04, d: 2.36, n: 35, tclass: 'delim3'},
-    {c: '&#x2308;', h: 0.04, d: 2.36, n: 36, tclass: 'delim3a'},
-    {c: '&#x2309;', h: 0.04, d: 2.36, n: 37, tclass: 'delim3a'},
-    {c: '&#x230A;', h: 0.04, d: 2.36, n: 38, tclass: 'delim3a'},
-    {c: '&#x230B;', h: 0.04, d: 2.36, n: 39, tclass: 'delim3a'},
-    {c: '<span style="position:relative; left:-.1em; margin-right:-.1em">{</span>', h: 0.04, d: 2.36, n: 40, tclass: 'delim3'},
-    {c: '<span style="position:relative; left:-.05em; margin-right:-.1em">}</span>', h: 0.04, d: 2.36, n: 41, tclass: 'delim3'},
+    {c: '&#x230A;', h: 0.04, d: 2.36, n: 36, tclass: 'delim3a'},
+    {c: '&#x230B;', h: 0.04, d: 2.36, n: 37, tclass: 'delim3a'},
+    {c: '&#x2308;', h: 0.04, d: 2.36, n: 38, tclass: 'delim3a'},
+    {c: '&#x2309;', h: 0.04, d: 2.36, n: 39, tclass: 'delim3a'},
+    {c: '<span style="display:inline-block; position:relative; left:-.1em; margin-right:-.1em">{</span>', h: 0.04, d: 2.36, n: 40, tclass: 'delim3'},
+    {c: '<span style="display:inline-block; position:relative; left:-.05em; margin-right:-.1em">}</span>', h: 0.04, d: 2.36, n: 41, tclass: 'delim3'},
     {c: '&#x2329;', h: 0.04, d: 2.36, n: 42, tclass: 'delim3b'},
     {c: '&#x232A;', h: 0.04, d: 2.36, n: 43, tclass: 'delim3b'},
     {c: '/', h: 0.04, d: 2.36, n: 44, tclass: 'delim3a'},
@@ -493,12 +493,12 @@ jsMath.Add(jsMath.TeX,{
     {c: ')', h: 0.04, d: 2.96, n: 49, tclass: 'delim4'},
     {c: '[', h: 0.04, d: 2.96, n: 50, tclass: 'delim4'},
     {c: ']', h: 0.04, d: 2.96, n: 51, tclass: 'delim4'},
-    {c: '&#x2308;', h: 0.04, d: 2.96, n: 52, tclass: 'delim4a'},
-    {c: '&#x2309;', h: 0.04, d: 2.96, n: 53, tclass: 'delim4a'},
-    {c: '&#x230A;', h: 0.04, d: 2.96, n: 54, tclass: 'delim4a'},
-    {c: '&#x230B;', h: 0.04, d: 2.96, n: 55, tclass: 'delim4a'},
-    {c: '<span style="position:relative; left:-.1em; margin-right:-.1em">{</span>', h: 0.04, d: 2.96, n: 56, tclass: 'delim4'},
-    {c: '<span style="position:relative; left:-.1em; margin-right:-.1em">}</span>', h: 0.04, d: 2.96, n: 57, tclass: 'delim4'},
+    {c: '&#x230A;', h: 0.04, d: 2.96, n: 52, tclass: 'delim4a'},
+    {c: '&#x230B;', h: 0.04, d: 2.96, n: 53, tclass: 'delim4a'},
+    {c: '&#x2308;', h: 0.04, d: 2.96, n: 54, tclass: 'delim4a'},
+    {c: '&#x2309;', h: 0.04, d: 2.96, n: 55, tclass: 'delim4a'},
+    {c: '<span style="display:inline-block; position:relative; left:-.1em; margin-right:-.1em">{</span>', h: 0.04, d: 2.96, n: 56, tclass: 'delim4'},
+    {c: '<span style="display:inline-block; position:relative; left:-.1em; margin-right:-.1em">}</span>', h: 0.04, d: 2.96, n: 57, tclass: 'delim4'},
     {c: '&#x2329;', h: 0.04, d: 2.96, tclass: 'delim4b'},
     {c: '&#x232A;', h: 0.04, d: 2.96, tclass: 'delim4b'},
     {c: '/', h: 0.04, d: 2.96, tclass: 'delim4a'},
@@ -506,27 +506,27 @@ jsMath.Add(jsMath.TeX,{
     {c: '/', h: 0.04, d: 1.76, n: 30, tclass: 'delim2a'},
     {c: '&#x2216;', h: 0.04, d: 1.76, n: 31, tclass: 'delim2a'},
     // 30 - 3F
-    {c: '&#xE6;', h: .8, d: .2, delim: {top: 48, bot: 64, rep: 66}, tclass: 'delimx'},
-    {c: '&#xF6;', h: .8, d: .2, delim: {top: 49, bot: 65, rep: 67}, tclass: 'delimx'},
-    {c: '&#xE9;', h: .8, d: .2, delim: {top: 50, bot: 52, rep: 54}, tclass: 'delimx'},
-    {c: '&#xF9;', h: .8, d: .2, delim: {top: 51, bot: 53, rep: 55}, tclass: 'delimx'},
-    {c: '&#xEB;', h: .8, d: .2, delim: {bot: 52, rep: 54}, tclass: 'delimx'},
-    {c: '&#xFB;', h: .8, d: .2, delim: {bot: 53, rep: 55}, tclass: 'delimx'},
-    {c: '&#xEA;', h: .8, d: .2, delim: {top: 50, rep: 54}, tclass: 'delimx'},
-    {c: '&#xFA;', h: .8, d: .2, delim: {top: 51, rep: 55}, tclass: 'delimx'},
-    {c: '&#xEC;', h: .8, d: .2, delim: {top: 56, mid: 60, bot: 58, rep: 62}, tclass: 'delimx'},
-    {c: '&#xFC;', h: .8, d: .2, delim: {top: 57, mid: 61, bot: 59, rep: 62}, tclass: 'delimx'},
-    {c: '&#xEE;', h: .8, d: .2, delim: {top: 56, bot: 58, rep: 62}, tclass: 'delimx'},
-    {c: '&#xFE;', h: .8, d: .2, delim: {top: 57, bot: 59, rep: 62}, tclass: 'delimx'},
-    {c: '&#xED;', h: .8, d: .2, delim: {rep: 63}, tclass: 'delimx'},
-    {c: '&#xFD;', h: .8, d: .2, delim: {rep: 119}, tclass: 'delimx'},
-    {c: '&#xEF;', h: .8, d: .2, delim: {rep: 62}, tclass: 'delimx'},
-    {c: '<span style="margin:.125em">|</span>', h: .8, d: 0, delim: {top: 120, bot: 121, rep: 63}, tclass: 'normal'},
+    {c: '&#xE6;', h: 1, delim: {top: 48, bot: 64, rep: 66}, tclass: 'delimx'},
+    {c: '&#xF6;', h: 1, delim: {top: 49, bot: 65, rep: 67}, tclass: 'delimx'},
+    {c: '&#xE9;', h: 1, delim: {top: 50, bot: 52, rep: 54}, tclass: 'delimx'},
+    {c: '&#xF9;', h: 1, delim: {top: 51, bot: 53, rep: 55}, tclass: 'delimx'},
+    {c: '&#xEB;', h: 1, delim: {bot: 52, rep: 54}, tclass: 'delimx'},
+    {c: '&#xFB;', h: 1, delim: {bot: 53, rep: 55}, tclass: 'delimx'},
+    {c: '&#xEA;', h: 1, delim: {top: 50, rep: 54}, tclass: 'delimx'},
+    {c: '&#xFA;', h: 1, delim: {top: 51, rep: 55}, tclass: 'delimx'},
+    {c: '&#xEC;', h: 1, delim: {top: 56, mid: 60, bot: 58, rep: 62}, tclass: 'delimx'},
+    {c: '&#xFC;', h: 1, delim: {top: 57, mid: 61, bot: 59, rep: 62}, tclass: 'delimx'},
+    {c: '&#xEE;', h: 1, delim: {top: 56, bot: 58, rep: 62}, tclass: 'delimx'},
+    {c: '&#xFE;', h: 1, delim: {top: 57, bot: 59, rep: 62}, tclass: 'delimx'},
+    {c: '&#xED;', h: 1, delim: {rep: 63}, tclass: 'delimx'},
+    {c: '&#xFD;', h: 1, delim: {rep: 119}, tclass: 'delimx'},
+    {c: '&#xEF;', h: 1, delim: {rep: 62}, tclass: 'delimx'},
+    {c: '<span style="display:inline-block; margin-left:.14em; margin-right:.36em">|</span>', delim: {top: 120, bot: 121, rep: 63}, tclass: 'normal'},
     // 40 - 4F
-    {c: '&#xE8;', h: .8, d: .2, delim: {top: 56, bot: 59, rep: 62}, tclass: 'delimx'},
-    {c: '&#xF8;', h: .8, d: .2, delim: {top: 57, bot: 58, rep: 62}, tclass: 'delimx'},
-    {c: '&#xE7;', h: .8, d: .2, delim: {rep: 66}, tclass: 'delimx'},
-    {c: '&#xF7;', h: .8, d: .2, delim: {rep: 67}, tclass: 'delimx'},
+    {c: '&#xE8;', h: 1, delim: {top: 56, bot: 59, rep: 62}, tclass: 'delimx'},
+    {c: '&#xF8;', h: 1, delim: {top: 57, bot: 58, rep: 62}, tclass: 'delimx'},
+    {c: '&#xE7;', h: 1, delim: {rep: 66}, tclass: 'delimx'},
+    {c: '&#xF7;', h: 1, delim: {rep: 67}, tclass: 'delimx'},
     {c: '&#x2329;', h: 0.04, d: 1.76, n: 28, tclass: 'delim2b'},
     {c: '&#x232A;', h: 0.04, d: 1.76, n: 29, tclass: 'delim2b'},
     {c: '&#x2294;', h: 0, d: 1, n: 71, tclass: 'bigop1'},
@@ -559,11 +559,11 @@ jsMath.Add(jsMath.TeX,{
     // 60 - 6F
     {c: '&#x2210;', h: 0, d: 1, n: 97, tclass: 'bigop1a'},
     {c: '&#x2210;', h: 0.1, d: 1.5, tclass: 'bigop2a'},
-    {c: '&#xFE3F;', h: 0.722, w: .65, n: 99, tclass: 'wide1'},
+    {c: '&#xFE3F;', h: 0.8, d:0, w: .65, n: 99, tclass: 'wide1'},
     {c: '&#xFE3F;', h: 0.85, w: 1.1, n: 100, tclass: 'wide2'},
     {c: '&#xFE3F;', h: 0.99, w: 1.65, tclass: 'wide3'},
-    {c: '~', h: 0.722, w: .5, n: 102, tclass: 'wide1a'},
-    {c: '~', h: 0.8, w: .8, n: 103, tclass: 'wide2a'},
+    {c: '~', h: 1, w: .5, n: 102, tclass: 'wide1a'},
+    {c: '~', h: 1, w: .8, n: 103, tclass: 'wide2a'},
     {c: '~', h: 0.99, w: 1.3, tclass: 'wide3a'},
     {c: '[', h: 0.04, d: 1.76, n: 20, tclass: 'delim2'},
     {c: ']', h: 0.04, d: 1.76, n: 21, tclass: 'delim2'},
@@ -571,25 +571,25 @@ jsMath.Add(jsMath.TeX,{
     {c: '&#x2309;', h: 0.04, d: 1.76, n: 23, tclass: 'delim2a'},
     {c: '&#x230A;', h: 0.04, d: 1.76, n: 24, tclass: 'delim2a'},
     {c: '&#x230B;', h: 0.04, d: 1.76, n: 25, tclass: 'delim2a'},
-    {c: '<span style="position:relative; left:-.1em; margin-right:-.1em">{</span>', h: 0.04, d: 1.76, n: 26, tclass: 'delim2'},
-    {c: '<span style="position:relative; margin-right:-.1em; left:-.05em">}</span>', h: 0.04, d: 1.76, n: 27, tclass: 'delim2'},
+    {c: '<span style="display:inline-block; position:relative; left:-.1em; margin-right:-.1em">{</span>', h: 0.04, d: 1.76, n: 26, tclass: 'delim2'},
+    {c: '<span style="display:inline-block; position:relative; margin-right:-.1em; left:-.05em">}</span>', h: 0.04, d: 1.76, n: 27, tclass: 'delim2'},
     // 70 - 7F
-    {c: '<span style="font-size: 150%; position:relative; top:.8em">&#x221A;</span>', h: 0.04, d: 1.16, n: 113, tclass: 'root'},
-    {c: '<span style="font-size: 220%; position:relative; top:.8em">&#x221A;</span>', h: 0.04, d: 1.76, n: 114, tclass: 'root'},
-    {c: '<span style="font-size: 310%; position:relative; top:.8em; margin-right:-.01em">&#x221A;</span>', h: 0.06, d: 2.36, n: 115, tclass: 'root'},
-    {c: '<span style="font-size: 400%; position:relative; top:.8em; margin-right:-.025em">&#x221A;</span>', h: 0.08, d: 2.96, n: 116, tclass: 'root'},
-    {c: '<span style="font-size: 490%; position:relative; top:.8em; margin-right:-.03em">&#x221A;</span>', h: 0.1, d: 3.75, n: 117, tclass: 'root'},
-    {c: '<span style="font-size: 580%; position:relative; top:.775em; margin-right:-.04em">&#x221A;</span>', h: .12, d: 4.5, n: 118, tclass: 'root'},
-    {c: '<span style="font-size: 750%; position:relative; top:.775em;margin-right:-.04em">&#x221A;</span>', h: .14, d: 5.7, tclass: 'root'},
-    {c: '<span style="margin-left:.02em">|</span><span style="margin-left:.08em; margin-right:.125em">|</span>', h:.8, d:0, delim: {top: 126, bot: 127, rep: 119}, tclass: 'normal'},
+    {c: '<span style="font-size:150%; position:relative; top:.8em; display:inline-block">&#x221A;</span>', h: 0.04, d: 1.16, n: 113, tclass: 'root'},
+    {c: '<span style="font-size:220%; position:relative; top:.8em; display:inline-block">&#x221A;</span>', h: 0.04, d: 1.76, n: 114, tclass: 'root'},
+    {c: '<span style="font-size:310%; position:relative; top:.8em; margin-right:-.01em; display:inline-block">&#x221A;</span>', h: 0.06, d: 2.36, n: 115, tclass: 'root'},
+    {c: '<span style="font-size:400%; position:relative; top:.8em; margin-right:-.025em; display:inline-block">&#x221A;</span>', h: 0.08, d: 2.96, n: 116, tclass: 'root'},
+    {c: '<span style="font-size:490%; position:relative; top:.8em; margin-right:-.03em; display:inline-block">&#x221A;</span>', h: 0.1, d: 3.75, n: 117, tclass: 'root'},
+    {c: '<span style="font-size:580%; position:relative; top:.775em; margin-right:-.04em; display:inline-block">&#x221A;</span>', h: .12, d: 4.5, n: 118, tclass: 'root'},
+    {c: '<span style="font-size:750%; position:relative; top:.775em; margin-right:-.04em; display:inline-block">&#x221A;</span>', h: .14, d: 5.7, tclass: 'root'},
+    {c: '<span style="display:inline-block; margin-left:.04em">|</span><span style="display:inline-block; margin-left:.08em; margin-right:.125em">|</span>', delim: {top: 126, bot: 127, rep: 119}, tclass: 'normal'},
     {c: '&#x2191;', h:.7, d:0, delim: {top: 120, rep: 63}, tclass: 'arrow1a'},
-    {c: '&#x2193;', h:.65, d:0, delim: {bot: 121, rep: 63}, tclass: 'arrow1a'},
-    {c: '<span style="margin-left:-.1em"></span><span style="position:relative; top:.55em; margin-right:-.3em">&#x25DC;</span>', h: 0.05, tclass: 'symbol'},
-    {c: '<span style="margin-left:-.3em"></span><span style="position:relative; top:.55em; margin-right:-.1em">&#x25DD;</span>', h: 0.05, tclass: 'symbol'},
-    {c: '<span style="margin-left:-.1em"></span><span style="position:relative; top:.15em; margin-right:-.3em">&#x25DF;</span>', h: 0.05, tclass: 'symbol'},
-    {c: '<span style="margin-left:-.3em"></span><span style="position:relative; top:.15em; margin-right:-.1em">&#x25DE;</span>', h: 0.05, tclass: 'symbol'},
-    {c: '&#x21D1;', h: .7, d:0, delim: {top: 126, rep: 119}, tclass: 'arrow1a'},
-    {c: '&#x21D3;', h: .7, d:0, delim: {bot: 127, rep: 119}, tclass: 'arrow1a'}
+    {c: '&#x2193;', h:.7, d:0, delim: {bot: 121, rep: 63}, tclass: 'arrow1a'},
+    {c: '<span style="margin-left:-.1em"></span><span style="position:relative; top:.55em; margin-right:-.3em; display:inline-block">&#x25DC;</span>', h: 0.05, tclass: 'symbol'},
+    {c: '<span style="margin-left:-.3em"></span><span style="position:relative; top:.55em; margin-right:-.1em; display:inline-block">&#x25DD;</span>', h: 0.05, tclass: 'symbol'},
+    {c: '<span style="margin-left:-.1em"></span><span style="position:relative; top:.15em; margin-right:-.3em; display:inline-block">&#x25DF;</span>', h: 0.05, tclass: 'symbol'},
+    {c: '<span style="margin-left:-.3em"></span><span style="position:relative; top:.15em; margin-right:-.1em; display:inline-block">&#x25DE;</span>', h: 0.05, tclass: 'symbol'},
+    {c: '&#x21D1;', h: .65, d:0, delim: {top: 126, rep: 119}, tclass: 'arrow1a'},
+    {c: '&#x21D3;', h: .65, d:0, delim: {bot: 127, rep: 119}, tclass: 'arrow1a'}
   ],
   
   cmti10: [
@@ -873,53 +873,53 @@ jsMath.Add(jsMath.TeX,{
 
 
 jsMath.Setup.Styles({
-    '.typeset .cmr10':          "font-family: serif",
-    '.typeset .italic':         "font-style: italic",
-    '.typeset .bold':           "font-weight: bold",
-    '.typeset .lucida':         "font-family: 'lucida sans unicode'",
-    '.typeset .arial':          "font-family: 'arial unicode MS'",
-    '.typeset .cal':            "font-family: 'Script MT', 'Script MT Bold', cursive",
-    '.typeset .arrows':         "font-family: 'Arial unicode MS'",
-    '.typeset .arrow1':         "font-family: 'Arial unicode MS'",
-    '.typeset .arrow1a':        "font-family: 'Arial unicode MS'; position:relative; top:.05em;left:-.15em; margin-right:-.15em",
-    '.typeset .arrow2':         "font-family: 'Arial unicode MS'; position:relative; top:-.1em;",
-    '.typeset .arrow3':         "font-family: 'Arial unicode MS'; margin:.1em",
-    '.typeset .symbol':         "font-family: 'Arial unicode MS'",
-    '.typeset .symbol2':        "font-family: 'Arial unicode MS'",
-    '.typeset .delim1':         "font-family: 'Times New Roman'; font-size: 133%; position:relative; top:.7em",
-    '.typeset .delim1a':        "font-family: 'Lucida sans unicode'; font-size: 133%; position:relative; top:.8em",
-    '.typeset .delim1b':        "font-family: 'Arial unicode MS'; font-size: 133%; position:relative; top:.8em",
-    '.typeset .delim2':         "font-family: 'Times New Roman'; font-size: 180%; position:relative; top:.75em",
-    '.typeset .delim2a':        "font-family: 'Lucida sans unicode'; font-size: 180%; position:relative; top:.8em",
-    '.typeset .delim2b':        "font-family: 'Arial unicode MS'; font-size: 180%; position:relative; top:.8em",
-    '.typeset .delim3':         "font-family: 'Times New Roman'; font-size: 250%; position:relative; top:.725em",
-    '.typeset .delim3a':        "font-family: 'Lucida sans unicode'; font-size: 250%; position:relative; top:.775em",
-    '.typeset .delim3b':        "font-family: 'Arial unicode MS'; font-size: 250%; position:relative; top:.8em",
-    '.typeset .delim4':         "font-family: 'Times New Roman'; font-size: 325%; position:relative; top:.7em",
-    '.typeset .delim4a':        "font-family: 'Lucida sans unicode'; font-size: 325%; position:relative; top:.775em",
-    '.typeset .delim4b':        "font-family: 'Arial unicode MS'; font-size: 325%; position:relative; top:.8em",
-    '.typeset .delimx':         "font-family: Symbol; position:relative; top:.2em",
-    '.typeset .greek':          "font-family: 'Times New Roman'",
-    '.typeset .igreek':         "font-family: 'Times New Roman'; font-style:italic",
-    '.typeset .bgreek':         "font-family: 'Times New Roman'; font-weight:bold",
-    '.typeset .bigop1':         "font-family: 'Arial unicode MS'; font-size: 130%; position: relative; top: .7em; margin:-.05em",
-    '.typeset .bigop1a':        "font-family: 'Arial unicode MS'; font-size: 110%; position: relative; top: .85em;",
-    '.typeset .bigop1b':        "font-family: 'Arial unicode MS'; font-size: 180%; position: relative; top: .6em",
-    '.typeset .bigop1c':        "font-family: 'Arial unicode MS'; font-size: 85%; position: relative; top: 1em",
-    '.typeset .bigop2':         "font-family: 'Arial unicode MS'; font-size: 230%; position: relative; top: .6em; margin:-.05em",
-    '.typeset .bigop2a':        "font-family: 'Arial unicode MS'; font-size: 185%; position: relative; top: .75em",
-    '.typeset .bigop2b':        "font-family: 'Arial unicode MS'; font-size: 275%; position: relative; top: .55em",
-    '.typeset .bigop2c':        "font-family: 'Arial unicode MS'; font-size: 185%; position: relative; top: 1em; margin-right:-.1em",
-    '.typeset .wide1':          "font-size: 67%; position: relative; top:-.5em;",
-    '.typeset .wide2':          "font-size: 110%; position: relative; top:-.2em;",
-    '.typeset .wide3':          "font-size: 175%;",
-    '.typeset .wide1a':         "font-family: 'Times New Roman'; font-size: 75%; position: relative; top:-.5em",
-    '.typeset .wide2a':         "font-family: 'Times New Roman'; font-size: 133%; position: relative; top:-.2em",
-    '.typeset .wide3a':         "font-family: 'Times New Roman'; font-size: 200%; position: relative; top:-.1em",
-    '.typeset .root':           "font-family: 'Arial unicode MS'; margin-right:-.075em",
-    '.typeset .accent':         "font-family: 'Arial unicode MS'; position:relative; top:.05em; left:.15em",
-    '.typeset .iaccent':        "font-family: 'Arial unicode MS'; position:relative; top:.05em; left:.15em; font-style:italic",
-    '.typeset .baccent':        "font-family: 'Arial unicode MS'; position:relative; top:.05em; left:.15em; font-weight:bold"
+    '.typeset .cmr10':   "font-family: serif",
+    '.typeset .italic':  "font-style: italic",
+    '.typeset .bold':    "font-weight: bold",
+    '.typeset .lucida':  "font-family: 'lucida sans unicode'",
+    '.typeset .arial':   "font-family: 'Arial unicode MS'",
+    '.typeset .cal':     "font-family: 'Script MT', 'Script MT Bold', cursive",
+    '.typeset .arrows':  "font-family: 'Arial unicode MS'",
+    '.typeset .arrow1':  "font-family: 'Arial unicode MS'",
+    '.typeset .arrow1a': "font-family: 'Arial unicode MS'; position:relative; top:.05em;left:-.15em; margin-right:-.15em; display:inline-block",
+    '.typeset .arrow2':  "font-family: 'Arial unicode MS'; position:relative; top:-.1em; display:inline-block;",
+    '.typeset .arrow3':  "font-family: 'Arial unicode MS'; margin:.1em",
+    '.typeset .symbol':  "font-family: 'Arial unicode MS'",
+    '.typeset .symbol2': "font-family: 'Arial unicode MS'",
+    '.typeset .delim1':  "font-family: 'Times New Roman'; font-size: 133%; position:relative; top:.7em; display:inline-block",
+    '.typeset .delim1a': "font-family: 'Lucida sans unicode'; font-size: 133%; position:relative; top:.8em; display:inline-block",
+    '.typeset .delim1b': "font-family: 'Arial unicode MS'; font-size: 133%; position:relative; top:.7em; display:inline-block",
+    '.typeset .delim2':  "font-family: 'Times New Roman'; font-size: 180%; position:relative; top:.75em; display:inline-block",
+    '.typeset .delim2a': "font-family: 'Lucida sans unicode'; font-size: 180%; position:relative; top:.8em; display:inline-block",
+    '.typeset .delim2b': "font-family: 'Arial unicode MS'; font-size: 180%; position:relative; top:.7em; display:inline-block",
+    '.typeset .delim3':  "font-family: 'Times New Roman'; font-size: 250%; position:relative; top:.725em; display:inline-block",
+    '.typeset .delim3a': "font-family: 'Lucida sans unicode'; font-size: 250%; position:relative; top:.775em; display:inline-block",
+    '.typeset .delim3b': "font-family: 'Arial unicode MS'; font-size: 250%; position:relative; top:.7em; display:inline-block",
+    '.typeset .delim4':  "font-family: 'Times New Roman'; font-size: 325%; position:relative; top:.7em; display:inline-block",
+    '.typeset .delim4a': "font-family: 'Lucida sans unicode'; font-size: 325%; position:relative; top:.775em; display:inline-block",
+    '.typeset .delim4b': "font-family: 'Arial unicode MS'; font-size: 325%; position:relative; top:.7em; display:inline-block",
+    '.typeset .delimx':  "font-family: Symbol",
+    '.typeset .greek':   "font-family: 'Times New Roman'",
+    '.typeset .igreek':  "font-family: 'Times New Roman'; font-style:italic",
+    '.typeset .bgreek':  "font-family: 'Times New Roman'; font-weight:bold",
+    '.typeset .bigop1':  "font-family: 'Arial unicode MS'; font-size: 130%; position: relative; top: .7em; margin:-.05em; display:inline-block",
+    '.typeset .bigop1a': "font-family: 'Arial unicode MS'; font-size: 110%; position: relative; top: .85em; display:inline-block;",
+    '.typeset .bigop1b': "font-family: 'Arial unicode MS'; font-size: 180%; position: relative; top: .6em; display:inline-block",
+    '.typeset .bigop1c': "font-family: 'Arial unicode MS'; font-size: 85%; position: relative; top: 1em; display:inline-block",
+    '.typeset .bigop2':  "font-family: 'Arial unicode MS'; font-size: 230%; position: relative; top: .6em; margin:-.05em; display:inline-block",
+    '.typeset .bigop2a': "font-family: 'Arial unicode MS'; font-size: 185%; position: relative; top: .75em; display:inline-block",
+    '.typeset .bigop2b': "font-family: 'Arial unicode MS'; font-size: 275%; position: relative; top: .55em; display:inline-block",
+    '.typeset .bigop2c': "font-family: 'Arial unicode MS'; font-size: 185%; position: relative; top: 1em; margin-right:-.1em; display:inline-block",
+    '.typeset .wide1':   "font-family: 'Arial unicode MS'; font-size: 67%; position: relative; top:-.75em; display:inline-block;",
+    '.typeset .wide2':   "font-family: 'Arial unicode MS'; font-size: 110%; position: relative; top:-.4em; display:inline-block;",
+    '.typeset .wide3':   "font-family: 'Arial unicode MS'; font-size: 175%; position: relative; top:-.25em; display:inline-block",
+    '.typeset .wide1a':  "font-family: 'Times New Roman'; font-size: 75%; position: relative; top:-.5em; display:inline-block",
+    '.typeset .wide2a':  "font-family: 'Times New Roman'; font-size: 133%; position: relative; top:-.2em; display:inline-block",
+    '.typeset .wide3a':  "font-family: 'Times New Roman'; font-size: 200%; position: relative; top:-.1em; display:inline-block",
+    '.typeset .root':    "font-family: 'Arial unicode MS'; margin-right:-.075em; display:inline-block",
+    '.typeset .accent':  "font-family: 'Arial unicode MS'; position:relative; top:.05em; left:.15em; display:inline-block",
+    '.typeset .iaccent': "font-family: 'Arial unicode MS'; position:relative; top:.05em; left:.15em; font-style:italic; display:inline-block",
+    '.typeset .baccent': "font-family: 'Arial unicode MS'; position:relative; top:.05em; left:.15em; font-weight:bold; display:inline-block"
 });
 
 //
@@ -959,12 +959,6 @@ if (jsMath.browser == 'Mozilla') {
 //
 if (jsMath.browser == "MSIE") {
   jsMath.Browser.msieFontBug = 1;
-  jsMath.Update.TeXfonts({
-    cmex10: {
-      '63': {c: '<span style="position:relative; left:.125em; margin-right:.125em">|</span>'},
-      '119': {c: '<span style="position:relative; left:.02em; margin-right=.08em">|</span><span style="margin-right:.125em">|</span>'}
-    }
-  });
 }
 
 /*
diff --git a/src/main/webapp/static/js/jsMath/uncompressed/jsMath.js b/src/main/webapp/static/js/jsMath/uncompressed/jsMath.js
index 6b2ef280e6ebea334bb8116a9622d1a061fed655..3080cea643cef0dfedfdca9d1aca1ed66a52786d 100644
--- a/src/main/webapp/static/js/jsMath/uncompressed/jsMath.js
+++ b/src/main/webapp/static/js/jsMath/uncompressed/jsMath.js
@@ -10,7 +10,7 @@
  *
  *  for the latest version, and for documentation on how to use jsMath.
  *
- *  Copyright 2004-2008 by Davide P. Cervone
+ *  Copyright 2004-2010 by Davide P. Cervone
  * 
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -67,7 +67,7 @@ if (!document.getElementById || !document.childNodes || !document.createElement)
 
 window.jsMath = {
   
-  version: "3.6",  // change this if you edit the file, but don't edit this file
+  version: "3.6e",  // change this if you edit the file, but don't edit this file
   
   document: document,  // the document loading jsMath
   window: window,      // the window of the of loading document
@@ -93,26 +93,27 @@ window.jsMath = {
       'font-style':  'normal',
       'font-weight': 'normal',
       'line-height': 'normal',
-      'text-indent': '0px'
+      'text-indent': '0px',
+      'white-space': 'normal'
     },
     
     '.typeset .normal': {       // \hbox contents style
       'font-family': 'serif',
-      'font-style': 'normal',
+      'font-style':  'normal',
       'font-weight': 'normal'
     },
     
     'div.typeset': {            // display mathematics
-      'text-align': 'center',
+      'text-align':  'center',
        margin:       '1em 0px'
     },
     
     'span.typeset': {           // in-line mathematics
-      'text-align': 'left'
+      'text-align':  'left'
     },
     
     '.typeset span': {          // prevent outside CSS from setting these
-      'text-align': 'left',
+      'text-align':  'left',
        border:       '0px',
        margin:       '0px',
        padding:      '0px'
@@ -157,11 +158,11 @@ window.jsMath = {
     },
 
     '.typeset .blank': {       // internal use
-      display: 'inline-block',
+      display:  'inline-block',
       overflow: 'hidden',
-      border: '0px none',
-      width: '0px',
-      height: '0px'
+      border:   '0px none',
+      width:    '0px',
+      height:   '0px'
     },
     '.typeset .spacer': {      // internal use
       display: 'inline-block'
@@ -305,7 +306,8 @@ window.jsMath = {
   BBoxFor: function (s) {
     this.hidden.innerHTML = 
       '<nobr><span class="typeset"><span class="scale">'+s+'</span></span></nobr>';
-    var bbox = {w: this.hidden.offsetWidth, h: this.hidden.offsetHeight};
+    var math = (jsMath.Browser.msieBBoxBug ? this.hidden.firstChild.firstChild : this.hidden);
+    var bbox = {w: math.offsetWidth, h: this.hidden.offsetHeight};
     this.hidden.innerHTML = '';
     return bbox;
   },
@@ -324,24 +326,6 @@ window.jsMath = {
     return cache[this.em][s];
   },
 
-  /*
-   *  For browsers that don't handle sizes of italics properly (MSIE).
-   *  Check the cache first to see if we've already measured it.
-   */
-  EmBoxForItalics: function (s) {
-    var cache = jsMath.Global.cache.R;
-    if (!cache[this.em]) {cache[this.em] = {}}
-    if (!cache[this.em][s]) {
-      var bbox = this.BBoxFor(s);
-      if (s.match(/<i>|class=\"(icm|italic|igreek|iaccent)/i)) {
-        bbox.w = bbox.Mw = this.BBoxFor(s+jsMath.Browser.italicString).w
-                             - jsMath.Browser.italicCorrection;
-      }
-      cache[this.em][s] = {w: bbox.w/this.em, h: bbox.h/this.em};
-    }
-    return cache[this.em][s];
-  },
-
   /*
    *  Initialize jsMath.  This determines the em size, and a variety
    *  of other parameters used throughout jsMath.
@@ -362,9 +346,7 @@ window.jsMath = {
     if (!cache[this.em]) {
       cache[this.em] = {};
       cache[this.em].bb = this.BBoxFor('x'); var hh = cache[this.em].bb.h;
-      cache[this.em].d = this.BBoxFor('x'+jsMath.HTML.Rule(1,hh/jsMath.em)).h - hh;
-      if (jsMath.Browser.italicString) 
-        {cache[this.em].ic = jsMath.BBoxFor(jsMath.Browser.italicString).w}
+      cache[this.em].d = this.BBoxFor('x'+jsMath.HTML.Strut(hh/this.em)).h - hh;
     }
     jsMath.Browser.italicCorrection = cache[this.em].ic;
     var bb = cache[this.em].bb; var h = bb.h; var d = cache[this.em].d
@@ -400,10 +382,10 @@ window.jsMath = {
    *  Find the em size in effect at the current text location
    */
   CurrentEm: function () {
-    var em = this.BBoxFor('<span style="'+jsMath.Browser.block+';width:13em;height:1em"></span>').w/13;
+    var em = this.BBoxFor('<span style="'+jsMath.Browser.block+';width:27em;height:1em"></span>').w/27;
     if (em > 0) {return em}
     // handle older browsers
-    return this.BBoxFor('<img src="'+jsMath.blank+'" style="width:13em;height:1em"/>').w/13;
+    return this.BBoxFor('<img src="'+jsMath.blank+'" style="width:13em;height:1em" />').w/13;
   },
   
   /*
@@ -411,7 +393,7 @@ window.jsMath = {
    */
   Loaded: function () {
     if (jsMath_old) {
-      var override = ['Process', 'ProcessBeforeShowing',
+      var override = ['Process', 'ProcessBeforeShowing','ProcessElement',
         'ConvertTeX','ConvertTeX2','ConvertLaTeX','ConvertCustom',
         'CustomSearch', 'Synchronize', 'Macro', 'document'];
       for (var i = 0; i < override.length; i++) {
@@ -492,7 +474,7 @@ jsMath.Global = {
      */
     Register: function () {
       var parent = jsMath.window.parent;
-      if (!jsMath.isCHMode)
+      if (!jsMath.isCHMmode)
         {jsMath.isCHMmode = (jsMath.window.location.protocol == 'mk:')}
       try {
         if (!jsMath.isCHMmode) this.Domain();
@@ -504,12 +486,17 @@ jsMath.Global = {
     /*
      *  If we're not the parent window, try to set the domain to
      *  match the parent's domain (so we can use the Global data
-     *  if the surrounding frame is a Global frame.
+     *  if the surrounding frame is a Global frame).
      */
     Domain: function () {
       // MSIE/Mac can't do domain changes, so don't bother trying
       if (navigator.appName == 'Microsoft Internet Explorer' &&
           jsMath.platform == 'mac' && navigator.userProfile != null) return;
+      // MSIE/PC can do domain change, but gets mixed up if we don't
+      //  find a domain that works, and then can't look in window.location
+      //  any longer.  So don't try, since we can't afford to leave it confused.
+      if (jsMath.document.all && !jsMath.window.opera) return;
+
       if (window == parent) return;
       var oldDomain = jsMath.document.domain;
       try {
@@ -560,16 +547,16 @@ jsMath.Script = {
             //  Firefox3 has window.postMessage for inter-window communication. 
             //  It can be used to handle the new file:// security model,
             //  so set up the listener.
-            if (window.postMessage) {
+            if (window.postMessage && window.addEventListener) {
               this.mustPost = 1;
               jsMath.window.addEventListener("message",jsMath.Post.Listener,false);
             }
           }
         }
       }
-      if (!this.request && window.ActiveXObject) {
-        var xml = ["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0",
-                   "MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
+      if (!this.request && window.ActiveXObject && !this.mustPost) {
+        var xml = ["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0",
+                   "MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
         for (var i = 0; i < xml.length && !this.request; i++) {
           try {this.request = new ActiveXObject(xml[i])} catch (err) {}
         }
@@ -609,15 +596,15 @@ jsMath.Script = {
     } catch (err) {
       this.blocking = 0;
       if (jsMath.Translate.restart && jsMath.Translate.asynchronous) {return ""}
-      throw "jsMath can't load the file '"+url+"'\n"
-          + "Message: "+err.message;
+      throw Error("jsMath can't load the file '"+url+"'\n"
+          + "Message: "+err.message);
     }
     if (this.request.status != null && (this.request.status >= 400 || this.request.status < 0)) {
       // Do we need to deal with redirected links?
       this.blocking = 0;
       if (jsMath.Translate.restart && jsMath.Translate.asynchronous) {return ""}
-      throw "jsMath can't load the file '"+url+"'\n"
-          + "Error status: "+this.request.status;
+      throw Error("jsMath can't load the file '"+url+"'\n"
+          + "Error status: "+this.request.status);
     }
     if (!url.match(/\.js$/)) {return(this.request.responseText)}
     var tmpQueue = this.queue; this.queue = [];
@@ -811,9 +798,9 @@ jsMath.Post = {
     if (event.source != jsMath.Post.window) return;
     var domain = event.origin.replace(/^file:\/\//,'');
     var ddomain = document.domain.replace(/^file:\/\//,'');
-    if (domain == null || domain == "") {domain = "localhost"}
-    if (ddomain == null || ddomain == "") {ddomain = "localhost"}
-    if (domain != ddomain || !event.data.substr(0,6).match(/jsM(CP|LD):/)) return;
+    if (domain == null || domain == "" || domain == "null") {domain = "localhost"}
+    if (ddomain == null || ddomain == "" || ddomain == "null") {ddomain = "localhost"}
+    if (domain != ddomain || !event.data.substr(0,6).match(/jsM(CP|LD|AL):/)) return;
     var type = event.data.substr(6,3).replace(/ /g,'');
     var message = event.data.substr(10);
     if (jsMath.Post.Commands[type]) (jsMath.Post.Commands[type])(message);
@@ -856,15 +843,18 @@ jsMath.Message = {
    */
   Init: function () {
     if (!jsMath.document.body || !jsMath.Controls.cookie.progress) return;
-    if (jsMath.Setup.stylesReady) {
-      this.message = jsMath.Setup.DIV('message',{visibility:'hidden'},jsMath.fixedDiv);
-    } else {
-      this.message = jsMath.Setup.DIV('message',{
-        visibility:'hidden', position:'absolute', bottom:'1px', left:'2px',
-        backgroundColor:'#E6E6E6', border:'solid 1px #959595',
-        margin:'0px', padding:'1px 8px', zIndex:102,
-        color:'black', fontSize:'small', width:'auto'
-      },jsMath.fixedDiv);
+    this.message = jsMath.Element('message');
+    if (!this.message) {
+      if (jsMath.Setup.stylesReady) {
+        this.message = jsMath.Setup.DIV('message',{visibility:'hidden'},jsMath.fixedDiv);
+      } else {
+        this.message = jsMath.Setup.DIV('message',{
+          visibility:'hidden', position:'absolute', bottom:'1px', left:'2px',
+          backgroundColor:'#E6E6E6', border:'solid 1px #959595',
+          margin:'0px', padding:'1px 8px', zIndex:102,
+          color:'black', fontSize:'small', width:'auto'
+        },jsMath.fixedDiv);
+      }
     }
     this.text = jsMath.document.createTextNode('');
     this.message.appendChild(this.text);
@@ -1002,11 +992,8 @@ jsMath.Setup = {
     }
     if (jsMath.root.charAt(0) == '\\') {jsMath.root = jsMath.root.replace(/\\/g,'/')}
     if (jsMath.root.charAt(0) == '/') {
-      if (jsMath.root.charAt(1) != '/') {
-        if (jsMath.document.location.port)
-          {jsMath.root = ':' + jsMath.document.location.port + jsMath.root}
-        jsMath.root = '//' + jsMath.document.location.host + jsMath.root;
-      }
+      if (jsMath.root.charAt(1) != '/')
+        {jsMath.root = '//' + jsMath.document.location.host + jsMath.root}
       jsMath.root = jsMath.document.location.protocol + jsMath.root;
     } else if (!jsMath.root.match(/^[a-z]+:/i)) {
       var src = new String(jsMath.document.location);
@@ -1093,10 +1080,8 @@ jsMath.Setup = {
    */
   TeXfont: function (name) {
     var font = jsMath.TeX[name]; if (font == null) return;
-    var WH = jsMath.EmBoxFor('<span class="'+name+'">'+font[65].c+'</span>');
-    font.hd = WH.h; font.dh = .05;
-    font.d = jsMath.EmBoxFor('<span class="'+name+'">'+ font[65].c +
-      jsMath.HTML.Rule(1,font.hd) + '</span>').h - font.hd;
+    font.hd = jsMath.EmBoxFor('<span class="'+name+'">'+font[65].c+'</span>').h;
+    font.d  = jsMath.EmBoxFor('<span class="'+name+'">'+font[65].c+jsMath.HTML.Strut(font.hd)+'</span>').h - font.hd;
     font.h = font.hd - font.d;
     if (name == 'cmmi10') {font.skewchar = 0177} 
     else if (name == 'cmsy10') {font.skewchar = 060}
@@ -1166,15 +1151,20 @@ jsMath.Setup = {
   
   AddStyleSheet: function (styles) {
     var head = jsMath.document.getElementsByTagName('head')[0];
-    var string = this.StyleString(styles);
-    if (jsMath.document.createStyleSheet) {// check for MSIE
-      head.insertAdjacentHTML('beforeEnd',
-          '<span style="display:none">x</span>'  // MSIE needs this for some reason
-          + '<style type="text/css">'+string+'</style>');
-    } else {
-      var style = jsMath.document.createElement('style'); style.type = "text/css";
-      style.appendChild(jsMath.document.createTextNode(string));
-      head.appendChild(style);
+    if (head) {
+      var string = this.StyleString(styles);
+      if (jsMath.document.createStyleSheet) {// check for MSIE
+        head.insertAdjacentHTML('beforeEnd',
+            '<span style="display:none">x</span>'  // MSIE needs this for some reason
+            + '<style type="text/css">'+string+'</style>');
+      } else {
+        var style = jsMath.document.createElement('style'); style.type = "text/css";
+        style.appendChild(jsMath.document.createTextNode(string));
+        head.appendChild(style);
+      }
+    } else if (!jsMath.noHEAD) {
+      jsMath.noHEAD = 1;
+      alert("Document is missing its <HEAD> section.  Style sheet can't be created without it.");
     }
   },
 
@@ -1278,6 +1268,7 @@ jsMath.Browser = {
                               //   for them to be available
 
   delay: 1,                   // delay for asynchronous math processing
+  processAtOnce: 16,          // number of math elements to process before screen update
   
   version: 0,                 // browser version number (when needed)
 
@@ -1286,7 +1277,7 @@ jsMath.Browser = {
    *  or varies with the height of the rest of the line (MSIE).
    */
   TestSpanHeight: function () {
-    jsMath.hidden.innerHTML = '<span><span style="'+this.block+';height:2em;width:1px"></span></span>';
+    jsMath.hidden.innerHTML = '<span><span style="'+this.block+';height:2em;width:1px"></span>x</span>';
     var span = jsMath.hidden.firstChild;
     var img  = span.firstChild;
     this.spanHeightVaries = (span.offsetHeight >= img.offsetHeight && span.offsetHeight > 0);
@@ -1316,11 +1307,12 @@ jsMath.Browser = {
        '<span style="'+this.block+';height:'+h+'px;width:1px;vertical-align:-'+h+'px"></span>').h > 2*h;
     this.widthAddsBorder = jsMath.BBoxFor('<span style="'+this.block+
         ';overflow:hidden;height:1px;width:10px;border-left:10px solid"></span>').w > 10;
-    this.msieBorderBug =
-      jsMath.BBoxFor('<span style="'+this.block+';height:'+h+'px;width:1px"></span>x').h !=
-      jsMath.BBoxFor('<span style="'+this.block+';height:'+h+'px;width:1px;border-left:1px solid"></span>x').h;
-    this.blankWidthBug = this.msieBorderBug ||
-      jsMath.BBoxFor('<span style="'+this.block+';height:2em;width:0px"></span>').h == 0;
+    var h1 = jsMath.BBoxFor('<span style="'+this.block+';height:'+h+'px;width:1px"></span>x').h,
+        h2 = jsMath.BBoxFor('<span style="'+this.block+';height:'+h+'px;width:1px;border-left:1px solid"></span>x').h,
+        h3 = jsMath.BBoxFor('<span style="'+this.block+';height:2em"></span>').h;
+    this.msieBlockDepthBug = (h1 == h);
+    this.msieRuleDepthBug = (h2 == h);
+    this.blankWidthBug = (h3 == 0);
   },
   
   /*
@@ -1397,11 +1389,14 @@ jsMath.Browser = {
   //  Handle bug-filled Internet Explorer
   //
   MSIE: function () {
-    if (this.spanHeightVaries && !this.spanHeightTooBig) {
+    if (jsMath.BBoxFor("<!--[if IE]>IE<![endif]-->").w) {
       jsMath.browser = 'MSIE';
       if (jsMath.platform == 'pc') {
         this.IE7 = (window.XMLHttpRequest != null);
+        this.IE8 = (jsMath.BBoxFor("<!--[if gte IE 8]>IE8<![endif]-->").w > 0);
+        this.isReallyIE8 = (jsMath.document.documentMode != null);
         this.quirks = (jsMath.document.compatMode == "BackCompat");
+        this.msieMode = (jsMath.document.documentMode || (this.quirks ? 5 : 7));
         this.msieStandard6 = !this.quirks && !this.IE7;
         this.allowAbsoluteDelim = 1; this.separateSkips = 1;
         this.buttonCheck = 1; this.msieBlankBug = 1;
@@ -1411,9 +1406,11 @@ jsMath.Browser = {
         this.msieAlphaBug = !this.IE7; this.alphaPrintBug = !this.IE7;
         this.msieCenterBugFix = 'position:relative; ';
         this.msieInlineBlockFix = ' display:inline-block;';
-        this.msieTeXfontBaselineBug = !this.quirks;
-        this.msieBorderBug = this.blankWidthBug = 1; // force these, since IE7 doesn't register it
-        this.msieSpaceFix = '<span style="display:inline-block"></span>';
+        this.msie8HeightBug = this.msieBBoxBug = (this.msieMode == 8);
+        this.blankWidthBug = (this.msieMode != 8);
+        this.msieSpaceFix = (this.isReallyIE8 ?
+            '<span style="display:inline-block; margin-right:-1px; width:1px"></span>' :
+            '<span style="margin-right:-1px; width:1px"></span>');
         jsMath.Macro('joinrel','\\mathrel{\\kern-5mu}'),
         jsMath.Parser.prototype.mathchardef.mapstocharOrig = jsMath.Parser.prototype.mathchardef.mapstochar;
         delete jsMath.Parser.prototype.mathchardef.mapstochar;
@@ -1428,10 +1425,10 @@ jsMath.Browser = {
           jsMath.styles['#jsMath_button'].width = '1px';
           jsMath.styles['#jsMath_button'].position = 'absolute'
           delete jsMath.styles['#jsMath_button'].width;
-          jsMath.fixedDiv = jsMath.Setup.DIV("fixedDiv",{position:'absolute', zIndex: 101});
-          jsMath.window.attachEvent("onscroll",jsMath.Controls.MoveButton);
-          jsMath.window.attachEvent("onresize",jsMath.Controls.MoveButton);
-          jsMath.Controls.MoveButton();
+	  jsMath.fixedDiv = jsMath.Setup.DIV("fixedDiv",{position:'absolute', zIndex: 101});
+	  jsMath.window.attachEvent("onscroll",jsMath.Controls.MoveButton);
+	  jsMath.window.attachEvent("onresize",jsMath.Controls.MoveButton);
+	  jsMath.Controls.MoveButton();
 	}
         // Make MSIE put borders around the whole button
         jsMath.styles['#jsMath_noFont .link'].display = "inline-block";
@@ -1449,9 +1446,8 @@ jsMath.Browser = {
           this.imgScale *= screen.logicalXDPI/screen.deviceXDPI;
           jsMath.Controls.cookie.alpha = 0;
         }
-        // Handle bug with getting width of italic text
-        this.italicString = '<i>x</i>';
-        jsMath.EmBoxFor = jsMath.EmBoxForItalics;
+        //  IE8 doesn't puts ALL boxes at the bottom rather than on the baseline
+        if (this.msieRuleDepthBug) {jsMath.HTML.Strut = jsMath.HTML.msieStrut}
       } else if (jsMath.platform == 'mac') {
         this.msieAbsoluteBug = 1; this.msieButtonBug = 1;
         this.msieDivWidthBug = 1; this.msieBlankBug = 1;
@@ -1461,7 +1457,9 @@ jsMath.Browser = {
         jsMath.styles['#jsMath_panel'].width = '42em';
         jsMath.Controls.cookie.printwarn = 0; // MSIE/Mac doesn't handle '@media screen'
       }
+      this.processAtOnce = Math.max(Math.floor((this.processAtOnce+1)/2),1);
       jsMath.Macro('not','\\mathrel{\\rlap{\\kern3mu/}}');
+      jsMath.Macro('angle','\\raise1.84pt{\\kern2.5mu\\rlap{\\scriptstyle/}\\kern.5pt\\rule{.4em}{-1.5pt}{1.84pt}\\kern2.5mu}');
     }
   },
 
@@ -1469,17 +1467,19 @@ jsMath.Browser = {
   //  Handle Netscape/Mozilla (any flavor)
   //
   Mozilla: function () {
-    if (jsMath.hidden.ATTRIBUTE_NODE) {
+    if (jsMath.hidden.ATTRIBUTE_NODE && jsMath.window.directories) {
       jsMath.browser = 'Mozilla';
       if (jsMath.platform == 'pc') {this.alphaPrintBug = 1}
       this.allowAbsoluteDelim = 1;
       jsMath.styles['#jsMath_button'].cursor = jsMath.styles['#jsMath_noFont .link'].cursor = 'pointer',
       jsMath.Macro('not','\\mathrel{\\rlap{\\kern3mu/}}');
+      jsMath.Macro('angle','\\raise1.34pt{\\kern2.5mu\\rlap{\\scriptstyle/}\\rule{.4em}{-1pt}{1.34pt}\\kern2.5mu}');
       if (navigator.vendor == 'Firefox') {
         this.version = navigator.vendorSub;
       } else if (navigator.userAgent.match(' Firefox/([0-9.]+)([a-z ]|$)')) {
         this.version = RegExp.$1;
       }
+      if (this.VersionAtLeast("3.0")) {this.mozImageSizeBug = this.lineBreakBug = 1}
     }
   },
   
@@ -1510,8 +1510,8 @@ jsMath.Browser = {
       this.operaHiddenFix = '[Processing]';
       if (isOld) {jsMath.Setup.Script('jsMath-old-browsers.js')}
       var version = navigator.appVersion.match(/^(\d+\.\d+)/);
-      if (!version) {vesion = 0};
-      this.operaAbsoluteWidthBug = this.operaLineHeightBug = (version[1] >= 9.5);
+      if (version) {this.version = version[1]} else {this.vesion = 0}
+      this.operaAbsoluteWidthBug = this.operaLineHeightBug = (version[1] >= 9.5 && version[1] < 9.6);
     }
   },
 
@@ -1521,20 +1521,18 @@ jsMath.Browser = {
   Safari: function () {
     if (navigator.appVersion.match(/Safari\//)) {
       jsMath.browser = 'Safari';
+      if (navigator.vendor.match(/Google/)) {jsMath.browser = 'Chrome'}
       var version = navigator.userAgent.match("Safari/([0-9]+)");
-      version = (version)? version[1] : 400;
-      for (var i = 0; i < jsMath.TeX.fam.length; i++) {
-        if (jsMath.TeX.fam[i] && jsMath.TeX[jsMath.TeX.fam[i]])
-          {jsMath.TeX[jsMath.TeX.fam[i]].dh = .1}
-      }
+      version = (version)? version[1] : 400; this.version = version;
       jsMath.TeX.axis_height += .05;
-      jsMath.TeX.default_rule_thickness += .025;
       this.allowAbsoluteDelim = version >= 125;
       this.safariIFRAMEbug = version >= 312 && version < 412;
       this.safariButtonBug = version < 412;
       this.safariImgBug = 1; this.textNodeBug = 1;
+      this.lineBreakBug = version >= 526;
       this.buttonCheck = version < 500;
       this.styleChangeDelay = 1;
+      jsMath.Macro('not','\\mathrel{\\rlap{\\kern3.25mu/}}');
     }
   },
   
@@ -1555,12 +1553,12 @@ jsMath.Browser = {
       }
       //  Apparently, Konqueror wants the names without the hyphen
       jsMath.Add(jsMath.styles,{
-        '.typeset .cmr10':    'font-family: jsMath-cmr10, jsMath cmr10, serif',
-        '.typeset .cmbx10':   'font-family: jsMath-cmbx10, jsMath cmbx10, jsMath-cmr10, jsMath cmr10',
-        '.typeset .cmti10':   'font-family: jsMath-cmti10, jsMath cmti10, jsMath-cmr10, jsMath cmr10',
-        '.typeset .cmmi10':   'font-family: jsMath-cmmi10, jsMath cmmi10',
-        '.typeset .cmsy10':   'font-family: jsMath-cmsy10, jsMath cmsy10',
-        '.typeset .cmex10':   'font-family: jsMath-cmex10, jsMath cmex10'
+        '.typeset .cmr10':  'font-family: jsMath-cmr10, jsMath cmr10, serif',
+        '.typeset .cmbx10': 'font-family: jsMath-cmbx10, jsMath cmbx10, jsMath-cmr10, jsMath cmr10',
+        '.typeset .cmti10': 'font-family: jsMath-cmti10, jsMath cmti10, jsMath-cmr10, jsMath cmr10',
+        '.typeset .cmmi10': 'font-family: jsMath-cmmi10, jsMath cmmi10',
+        '.typeset .cmsy10': 'font-family: jsMath-cmsy10, jsMath cmsy10',
+        '.typeset .cmex10': 'font-family: jsMath-cmex10, jsMath cmex10'
       });
       jsMath.Font.testFont = "jsMath-cmex10, jsMath cmex10";
     }
@@ -1628,14 +1626,16 @@ jsMath.Font = {
     var wh = jsMath.BBoxFor('<span style="font-family: '+jsMath.Font.testFont+', serif">'+jsMath.TeX.cmex10[1].c+'</span>');
     jsMath.nofonts = ((wh.w*3 > wh.h || wh.h == 0) && !this.Test1('cmr10',null,null,'jsMath-'));
     if (!jsMath.nofonts) return;
-    if (jsMath.browser != 'Mozilla' ||
-         (jsMath.platform == "mac" &&
-           (!jsMath.Browser.VersionAtLeast(1.5) || jsMath.Browser.VersionAtLeast(3.0))) ||
-         (jsMath.platform != "mac" && !jsMath.Browser.VersionAtLeast(3.0))) {
-      wh = jsMath.BBoxFor('<span style="font-family: CMEX10, serif">'+jsMath.TeX.cmex10[1].c+'</span>');
-      jsMath.nofonts = ((wh.w*3 > wh.h || wh.h == 0) && !this.Test1('cmr10'));
-      if (!jsMath.nofonts) {jsMath.Setup.Script("jsMath-BaKoMa-fonts.js")}
-    }
+    /* 
+     * if (jsMath.browser != 'Mozilla' ||
+     *      (jsMath.platform == "mac" &&
+     *        (!jsMath.Browser.VersionAtLeast(1.5) || jsMath.Browser.VersionAtLeast(3.0))) ||
+     *      (jsMath.platform != "mac" && !jsMath.Browser.VersionAtLeast(3.0))) {
+     *   wh = jsMath.BBoxFor('<span style="font-family: CMEX10, serif">'+jsMath.TeX.cmex10[1].c+'</span>');
+     *   jsMath.nofonts = ((wh.w*3 > wh.h || wh.h == 0) && !this.Test1('cmr10'));
+     *   if (!jsMath.nofonts) {jsMath.Setup.Script("jsMath-BaKoMa-fonts.js")}
+     * }
+     */
   },
   
   /*
@@ -1885,10 +1885,12 @@ jsMath.Controls = {
    *  absolutely positioned, and then move the DIV.
    */
   MoveButton: function () {
-    jsMath.fixedDiv.style.left = document.body.scrollLeft + 'px';
-    jsMath.fixedDiv.style.top = document.body.scrollTop + 'px';
-    jsMath.fixedDiv.style.width = document.body.clientWidth + 'px';
-    jsMath.fixedDiv.style.height = document.body.clientHeight + 'px';
+    var body = (jsMath.Browser.quirks ? document.body : document.documentElement);
+    jsMath.fixedDiv.style.left = body.scrollLeft + 'px';
+    jsMath.fixedDiv.style.top = body.scrollTop + body.clientHeight + 'px';
+    jsMath.fixedDiv.style.width = body.clientWidth + 'px';
+//    jsMath.fixedDiv.style.top = body.scrollTop + 'px';
+//    jsMath.fixedDiv.style.height = body.clientHeight + 'px';
   },
 
   /*
@@ -2733,7 +2735,6 @@ jsMath.HTML = {
    *  using 0 when the value is near zero.
    */
   Em: function (m) {
-    var n = 5; if (m < 0) {n++}
     if (Math.abs(m) < .000001) {m = 0}
     var s = String(m); s = s.replace(/(\.\d\d\d).+/,'$1');
     return s+'em'
@@ -2776,7 +2777,7 @@ jsMath.HTML = {
       style += 'height:'+H+';';
     }
     if (jsMath.Browser.mozInlineBlockBug) {d = -h}
-    if (jsMath.Browser.msieBorderBug && !isRule) {d -= jsMath.d}
+    if (jsMath.Browser.msieBlockDepthBug && !isRule) {d -= jsMath.d}
     if (d) {style += 'vertical-align:'+this.Em(-d)}
     return backspace+'<span class="blank" style="'+style+'"></span>';
   },
@@ -2788,6 +2789,14 @@ jsMath.HTML = {
     if (h == null) {h = jsMath.TeX.default_rule_thickness}
     return this.Blank(w,h,0,1);
   },
+
+  /*
+   *  Create a strut for measuring position of baseline
+   */
+  Strut: function (h) {return this.Blank(1,h,0,1)},
+  msieStrut: function (h) {
+    return '<img style="width:1px; height:'+this.Em(h)+'"/>'
+  },
   
   /*
    *  Add a <SPAN> tag to activate a specific CSS class
@@ -2873,13 +2882,15 @@ jsMath.HTML = {
              + '</span>';
     }
     if (d == "none") {d = 0}
-    html += this.Blank(w,h-d,d);
+    html += this.Blank((jsMath.Browser.lineBreakBug ? 0 : w),h-d,d);
     if (jsMath.Browser.msieAbsoluteBug) {           // for MSIE (Mac)
       html = '<span style="position:relative;">' + html + '</span>';
     }
     html = '<span style="position:relative;'
          +   jsMath.Browser.msieInlineBlockFix
          + '">' + html + '</span>';
+    if (jsMath.Browser.lineBreakBug)
+      {html = '<span style="display:inline-block; width:'+jsMath.HTML.Em(w)+'">'+html+'</span>'}
     return html;
   }
 
@@ -2939,8 +2950,7 @@ jsMath.Add(jsMath.Box,{
     if (c.d == null) {c.d = 0}; if (c.h == null) {c.h = 0}
     if (c.img != null && c.c != '') this.TeXIMG(font,C,jsMath.Typeset.StyleSize(style,size));
     var scale = jsMath.Typeset.TeX(style,size).scale;
-    var h = c.h + jsMath.TeX[font].dh
-    var box = new jsMath.Box('text',c.c,c.w*scale,h*scale,c.d*scale);
+    var box = new jsMath.Box('text',c.c,c.w*scale,c.h*scale,c.d*scale);
     box.style = style; box.size = size;
     if (c.tclass) {
       box.tclass = c.tclass;
@@ -2978,7 +2988,7 @@ jsMath.Add(jsMath.Box,{
       var h = box.bd+box.bh;
       var html = jsMath.Typeset.AddClass(box.tclass,box.html);
           html = jsMath.Typeset.AddStyle(style,size,html);
-      box.bd = jsMath.EmBoxFor(html+jsMath.HTML.Blank(1,h)).h - h;
+      box.bd = jsMath.EmBoxFor(html + jsMath.HTML.Strut(h)).h - h;
       box.bh = h - box.bd;
       if (scale == 1) {c.bh = box.bh; c.bd = box.bd}
     }
@@ -3011,13 +3021,15 @@ jsMath.Add(jsMath.Box,{
     var wadjust = (c.w == null || Math.abs(c.w-w) < .01)? "" : " margin-right:"+jsMath.HTML.Em(c.w-w)+';';
     var resize = ""; C = jsMath.Img.HexCode[C];
     if (!mustScale && !jsMath.Controls.cookie.scaleImg) {
-      if (2*w < h || (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha))
-         {resize = "height:"+(img[1]*jsMath.Browser.imgScale)+'px;'}
+      if (jsMath.Browser.mozImageSizeBug || 2*w < h || 
+         (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha))
+           {resize = "height:"+(img[1]*jsMath.Browser.imgScale)+'px;'}
       resize += " width:"+(img[0]*jsMath.Browser.imgScale)+'px;'
       v = -img[2]+'px';
     } else {
-      if (2*w < h || (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha))
-         {resize = "height:"+jsMath.HTML.Em(h*jsMath.Browser.imgScale)+';'}
+      if (jsMath.Browser.mozImageSizeBug || 2*w < h ||
+         (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha))
+           {resize = "height:"+jsMath.HTML.Em(h*jsMath.Browser.imgScale)+';'}
       resize += " width:"+jsMath.HTML.Em(w*jsMath.Browser.imgScale)+';'
       v = jsMath.HTML.Em(d);
     }
@@ -3162,7 +3174,7 @@ jsMath.Add(jsMath.Box,{
       
       html = jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(top.tclass,top.c),0,0);
       h = rep.h+rep.d - .05; y = top.d-.05 + rep.h;
-      ext = jsMath.Typeset.AddClass(font,rep.c)
+      ext = jsMath.Typeset.AddClass(rep.tclass,rep.c)
       for (i = 0; i < n; i++) {html += jsMath.HTML.PlaceAbsolute(ext,0,y+i*h)}
       html += jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(mid.tclass,mid.c),0,y+n*h-rep.h+mid.h);
       y += n*h + mid.h+mid.d - .05;
@@ -3181,6 +3193,10 @@ jsMath.Add(jsMath.Box,{
     
     var w = top.w;
     if (nocenter) {h = top.h; y = 0} else {h = H/2 + a; y = h - top.h}
+    if (jsMath.Controls.cookie.font === "unicode") {
+      if (jsMath.Browser.msie8HeightBug) {y -= jsMath.hd}
+      else if (jsMath.Browser.msieBlockDepthBug) {y += jsMath.d}
+    }
     html = jsMath.HTML.Absolute(html,w,Font.h,"none",-y);
     var box = new jsMath.Box('html',html,rep.w,h,H-h);
     box.bh = jsMath.TeX[font].h; box.bd = jsMath.TeX[font].d;
@@ -3203,8 +3219,7 @@ jsMath.Add(jsMath.Box,{
     if (CFSH[2] == '')
       {return this.DelimExtend(H,CFSH[0],CFSH[1],TeX.axis_height,nocenter)}
     var box = jsMath.Box.TeX(CFSH[0],CFSH[1],CFSH[2],size).Styled();
-    if (nocenter) {box.y = -jsMath.TeX[CFSH[1]].dh*TeX.scale}
-      else {box.y = -((box.h+box.d)/2 - box.d - TeX.axis_height)}
+    if (!nocenter) {box.y = -((box.h+box.d)/2 - box.d - TeX.axis_height)}
     if (Math.abs(box.y) < .0001) {box.y = 0}
     if (box.y) {box = jsMath.Box.SetList([box],CFSH[2],size)}
     return box;
@@ -3328,7 +3343,6 @@ jsMath.Add(jsMath.Box,{
     if (rspacing == null) {rspacing = []}
     if (useStrut == null) {useStrut = 1}
     if (addWidth == null) {addWidth = 1}
-    
     // get row and column maximum dimensions
     var scale = jsMath.sizes[size]/100;
     var HD = useStrut*(jsMath.hd-.01)*scale;
@@ -3381,6 +3395,7 @@ jsMath.Add(jsMath.Box,{
 
     html = jsMath.HTML.Spacer(addWidth*scale/6)+html+jsMath.HTML.Spacer(addWidth*scale/6);
     if (jsMath.Browser.spanHeightVaries) {y = h-jsMath.h} else {y = 0}
+    if (jsMath.Browser.msie8HeightBug) {y = d-jsMath.d}
     html = jsMath.HTML.Absolute(html,w,h+d,d,y);
     var box = new jsMath.Box('html',html,w+addWidth*scale/3,h,d);
     return box;
@@ -3391,10 +3406,11 @@ jsMath.Add(jsMath.Box,{
    */
   InternalMath: function (text,size) {
     if (!jsMath.safeHBoxes) {text = text.replace(/@\(([^)]*)\)/g,'<$1>')}
-    if (!text.match(/\$|\\\(/)) {return this.Text(text,'normal','T',size).Styled()}
+    if (!text.match(/\$|\\\(/)) 
+      {return this.Text(this.safeHTML(text),'normal','T',size).Styled()}
 
     var i = 0; var k = 0; var c; var match = '';
-    var mlist = []; var parse;
+    var mlist = []; var parse, s;
     while (i < text.length) {
       c = text.charAt(i++);
       if (c == '$') {
@@ -3408,13 +3424,15 @@ jsMath.Add(jsMath.Box,{
           }
           match = ''; k = i;
         } else {
-          mlist[mlist.length] = this.Text(text.slice(k,i-1),'normal','T',size,1,.2);
+          s = this.safeHTML(text.slice(k,i-1));
+          mlist[mlist.length] = this.Text(s,'normal','T',size,1,.2);
           match = '$'; k = i;
         }
       } else if (c == '\\') {
         c = text.charAt(i++);
         if (c == '(' && match == '') {
-          mlist[mlist.length] = this.Text(text.slice(k,i-2),'normal','T',size,1,.2);
+          s = this.safeHTML(text.slice(k,i-2));
+          mlist[mlist.length] = this.Text(s,'normal','T',size,1,.2);
           match = ')'; k = i;
         } else if (c == ')' && match == ')') {
           parse = jsMath.Parse(text.slice(k,i-2),null,size);
@@ -3428,10 +3446,23 @@ jsMath.Add(jsMath.Box,{
         }
       }
     }
-    mlist[mlist.length] = this.Text(text.slice(k),'normal','T',size,1,.2);
+    s = this.safeHTML(text.slice(k));
+    mlist[mlist.length] = this.Text(s,'normal','T',size,1,.2);
     return this.SetList(mlist,'T',size);
   },
   
+  /*
+   *  Quote HTML characters if we are in safe mode
+   */
+  safeHTML: function (s) {
+    if (jsMath.safeHBoxes) {
+      s = s.replace(/&/g,'&amp;')
+           .replace(/</g,'&lt;')
+           .replace(/>/g,'&gt;');
+    }
+    return s;
+  },
+  
   /*
    *  Convert an abitrary box to a typeset box.  I.e., make an
    *  HTML version of the contents of the box, at its desired (x,y)
@@ -3494,7 +3525,11 @@ jsMath.Package(jsMath.Box,{
    *  Recompute the box width to make it more accurate.
    */
   Remeasured: function () {
-    if (this.w > 0) {this.w = jsMath.EmBoxFor(this.html).w}
+    if (this.w > 0) {
+      var w = this.w; this.w = jsMath.EmBoxFor(this.html).w;
+      if (this.w > this.Mw) {this.Mw = this.w}
+      w = this.w/w; if (Math.abs(w-1) > .05) {this.h *= w; this.d *= w}
+    }
     return this;
   }
 
@@ -4494,7 +4529,7 @@ jsMath.Package(jsMath.Typeset,{
       item.html = 
         jsMath.HTML.Spacer(lw-rw) +
         '<span style="position: relative; '
-            + 'top:'+jsMath.HTML.Em(-item.y)+';'
+            + 'top:'+jsMath.HTML.Em(-item.y)+'; '
             + 'left:'+jsMath.HTML.Em(rw)+'; width:'+jsMath.HTML.Em(W)+';">' +
           jsMath.HTML.Spacer(-lw) +
           item.html +
@@ -5052,7 +5087,8 @@ jsMath.Package(jsMath.Parser,{
 
     '_':        ['Replace','ord','_','normal',-.4,.1],
     ' ':        ['Replace','ord','&nbsp;','normal'],
-    angle:      ['Replace','ord','&#x2220;','normal'],
+//  angle:      ['Replace','ord','&#x2220;','normal'],
+    angle:      ['Macro','\\kern2.5mu\\raise1.54pt{\\rlap{\\scriptstyle \\char{cmsy10}{54}}\\kern1pt\\rule{.45em}{-1.2pt}{1.54pt}\\kern2.5mu}'],
         
     matrix:     'Matrix',
     array:      'Matrix',  // ### still need to do alignment options ###
@@ -5114,6 +5150,7 @@ jsMath.Package(jsMath.Parser,{
     Vmatrix:      ['Array','\\Vert','\\Vert','c'],
     cases:        ['Array','\\{','.','ll',null,2],
     eqnarray:     ['Array',null,null,'rcl',[5/18,5/18],3,'D'],
+    'eqnarray*':  ['Array',null,null,'rcl',[5/18,5/18],3,'D'],
     equation:     'Equation',
     'equation*':  'Equation',
 
@@ -5157,7 +5194,7 @@ jsMath.Package(jsMath.Parser,{
    *  Check if the next character is a space
    */
   nextIsSpace: function () {
-    return this.string.charAt(this.i) == ' ';
+    return this.string.charAt(this.i).match(/[ \n\r\t]/);
   },
   
   /*
@@ -5430,7 +5467,7 @@ jsMath.Package(jsMath.Parser,{
    */
   MoveLeftRight: function (name) {
     var x = this.GetDimen(this.cmd+name,1); if (this.error) return;
-    var box = this.ProcessArg(this.cmd+name); if (this.error) return;
+    var box = this.ProcessScriptArg(this.cmd+name); if (this.error) return;
     if (name == 'moveleft') {x = -x}
     this.mlist.Add(jsMath.mItem.Space(x));
     this.mlist.Add(jsMath.mItem.Atom('ord',box));
@@ -5519,7 +5556,7 @@ jsMath.Package(jsMath.Parser,{
       jsMath.TeX[font] = [];
       this.Extension(null,[jsMath.Font.URL(font)]);
     } else {
-      this.mlist.Add(jsMath.mItem.Typeset(jsMath.Box.TeX(n-0,font,'T',this.mlist.data.size)));
+      this.mlist.Add(jsMath.mItem.Typeset(jsMath.Box.TeX(n-0,font,this.mlist.data.style,this.mlist.data.size)));
     }
   },
   
@@ -6064,12 +6101,11 @@ jsMath.Package(jsMath.Parser,{
     if (box.bh > box.h && box.bh > jsMath.h+.001) {isSmall = 1}
     if (box.bd > box.d && box.bd > jsMath.d+.001) {isSmall = 1}
     if (box.h > jsMath.h || box.d > jsMath.d) {isBig = 1}
-
+    
     var html = box.html;
     if (isSmall) {// hide the extra size
       if (jsMath.Browser.allowAbsolute) {
-        var y = 0;
-        if (box.bh > jsMath.h+.001) {y = jsMath.h - box.bh}
+        var y = (box.bh > jsMath.h+.001 ? jsMath.h - box.bh : 0);
         html = jsMath.HTML.Absolute(html,box.w,jsMath.h,0,y);
       } else if (jsMath.Browser.valignBug) {
         // remove line height
@@ -6276,7 +6312,7 @@ jsMath.Translate = {
   recursiveElementText: function (element) {
     if (element.nodeValue != null) {
       if (element.nodeName !== "#comment") {return element.nodeValue}
-      return element.nodeValue.replace(/^\[CDATA\[(.*)\]\]$/,"$1");
+      return element.nodeValue.replace(/^\[CDATA\[((.|\n)*)\]\]$/,"$1");
     }
     if (element.childNodes.length === 0) {return " "}
     var text = '';
@@ -6328,9 +6364,9 @@ jsMath.Translate = {
     } catch (err) {
       if (element.alt) {
         var tex = element.alt;
-        tex = tex.replace(/&/g,'&amp;');
-        tex = tex.replace(/</g,'&lt;');
-        tex = tex.replace(/>/g,'&gt;');
+        tex = tex.replace(/&/g,'&amp;')
+                 .replace(/</g,'&lt;')
+                 .replace(/>/g,'&gt;');
         element.innerHTML = tex;
         element.className = 'math';
         if (noCache) {element.className += ' nocache'}
@@ -6341,32 +6377,37 @@ jsMath.Translate = {
 
   /*
    *  Asynchronously process all the math elements starting with
-   *  the k-th one
+   *  the k-th one.  Do them in blocks of 8 (more efficient than one
+   *  at a time, but still allows screen updates periodically).
    */
   ProcessElements: function (k) {
     jsMath.Script.blocking = 1;
-    if (k >= this.element.length || this.cancel) {
-      this.ProcessComplete();
-      if (this.cancel) {
-        jsMath.Message.Set("Process Math: Canceled");
-        jsMath.Message.Clear()
-      }
-      jsMath.Script.blocking = 0;
-      jsMath.Script.Process();
-    } else {
-      var savedQueue = jsMath.Script.SaveQueue();
-      this.ProcessElement(this.element[k]);
-      jsMath.Script.RestoreQueue(savedQueue);
-      if (this.restart) {
-        jsMath.Script.Push(this,'ProcessElements',k);
+    for (var i = 0; i < jsMath.Browser.processAtOnce; i++, k++) {
+      if (k >= this.element.length || this.cancel) {
+        this.ProcessComplete();
+        if (this.cancel) {
+          jsMath.Message.Set("Process Math: Canceled");
+          jsMath.Message.Clear()
+        }
         jsMath.Script.blocking = 0;
-        setTimeout('jsMath.Script.Process()',jsMath.Browser.delay);
+        jsMath.Script.Process();
+        return;
       } else {
-        k++; var p = Math.floor(100 * k / this.element.length);
-        jsMath.Message.Set('Processing Math: '+p+'%');
-        setTimeout('jsMath.Translate.ProcessElements('+k+')',jsMath.Browser.delay);
+        var savedQueue = jsMath.Script.SaveQueue();
+        this.ProcessElement(this.element[k]);
+        if (this.restart) {
+          jsMath.Script.Push(this,'ProcessElements',k);
+          jsMath.Script.RestoreQueue(savedQueue);
+          jsMath.Script.blocking = 0;
+          setTimeout('jsMath.Script.Process()',jsMath.Browser.delay);
+          return;
+        }
       }
     }
+    jsMath.Script.RestoreQueue(savedQueue);
+    var p = Math.floor(100 * k / this.element.length);
+    jsMath.Message.Set('Processing Math: '+p+'%');
+    setTimeout('jsMath.Translate.ProcessElements('+k+')',jsMath.Browser.delay);
   },
 
   /*
@@ -6522,6 +6563,7 @@ try {
   }
 } catch (err) {}
 
+ 
 jsMath.Global.Register();
 jsMath.Loaded();
 jsMath.Controls.GetCookie();
diff --git a/src/main/webapp/static/js/tinymce/openolat/plugins/olatmatheditor/js/jsmathdialog.js b/src/main/webapp/static/js/tinymce/openolat/plugins/olatmatheditor/js/jsmathdialog.js
index d991ec58ac4f67eec645799b96705c484c873fce..db0c688d3a0c86cd4f2b92f44f7dc073c3fab7ba 100644
--- a/src/main/webapp/static/js/tinymce/openolat/plugins/olatmatheditor/js/jsmathdialog.js
+++ b/src/main/webapp/static/js/tinymce/openolat/plugins/olatmatheditor/js/jsmathdialog.js
@@ -57,7 +57,9 @@ function updatePreview() {
     jsMath.Process();
     
     // After the offscreen preview has been rendered, copy it onscreen
-    jsMath.Synchronize(copyPreviewToScreen);
+    setTimeout(function() {
+    	jsMath.Synchronize(copyPreviewToScreen);
+    },100);
 }
 
 
@@ -126,5 +128,5 @@ tinyMCEPopup.onInit.add(JSMathDialog.init, JSMathDialog);
 
 //Update preview on load to show the preview correctly if there's already a formula
 window.onload = function() {
-	updatePreview();
+    setTimeout(updatePreview, 1000);
 };