/* * Copyright (c) 2008-2014 Mozilla Foundation * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ package nu.validator.htmlparser.impl; import java.util.Arrays; import nu.validator.htmlparser.annotation.Inline; import nu.validator.htmlparser.annotation.Local; import nu.validator.htmlparser.annotation.NoLength; import nu.validator.htmlparser.annotation.Virtual; import nu.validator.htmlparser.common.Interner; public final class ElementName // uncomment when regenerating self // implements Comparable<ElementName> { /** * The mask for extracting the dispatch group. */ public static final int GROUP_MASK = 127; /** * Indicates that the element is not a pre-interned element. Forbidden * on preinterned elements. */ public static final int CUSTOM = (1 << 30); /** * Indicates that the element is in the "special" category. This bit * should not be pre-set on MathML or SVG specials--only on HTML specials. */ public static final int SPECIAL = (1 << 29); /** * The element is foster-parenting. This bit should be pre-set on elements * that are foster-parenting as HTML. */ public static final int FOSTER_PARENTING = (1 << 28); /** * The element is scoping. This bit should be pre-set on elements * that are scoping as HTML. */ public static final int SCOPING = (1 << 27); /** * The element is scoping as SVG. */ public static final int SCOPING_AS_SVG = (1 << 26); /** * The element is scoping as MathML. */ public static final int SCOPING_AS_MATHML = (1 << 25); /** * The element is an HTML integration point. */ public static final int HTML_INTEGRATION_POINT = (1 << 24); /** * The element has an optional end tag. */ public static final int OPTIONAL_END_TAG = (1 << 23); public static final ElementName NULL_ELEMENT_NAME = new ElementName(null); public final @Local String name; public final @Local String camelCaseName; /** * The lowest 7 bits are the dispatch group. The high bits are flags. */ public final int flags; @Inline public int getFlags() { return flags; } public int getGroup() { return flags & GROUP_MASK; } public boolean isCustom() { return (flags & CUSTOM) != 0; } static ElementName elementNameByBuffer(@NoLength char[] buf, int offset, int length, Interner interner) { int hash = ElementName.bufToHash(buf, length); int index = Arrays.binarySearch(ElementName.ELEMENT_HASHES, hash); if (index < 0) { return new ElementName(Portability.newLocalNameFromBuffer(buf, offset, length, interner)); } else { ElementName elementName = ElementName.ELEMENT_NAMES[index]; @Local String name = elementName.name; if (!Portability.localEqualsBuffer(name, buf, offset, length)) { return new ElementName(Portability.newLocalNameFromBuffer(buf, offset, length, interner)); } return elementName; } } /** * This method has to return a unique integer for each well-known * lower-cased element name. * * @param buf * @param len * @return */ private static int bufToHash(@NoLength char[] buf, int len) { int hash = len; hash <<= 5; hash += buf[0] - 0x60; int j = len; for (int i = 0; i < 4 && j > 0; i++) { j--; hash <<= 5; hash += buf[j] - 0x60; } return hash; } private ElementName(@Local String name, @Local String camelCaseName, int flags) { this.name = name; this.camelCaseName = camelCaseName; this.flags = flags; } protected ElementName(@Local String name) { this.name = name; this.camelCaseName = name; this.flags = TreeBuilder.OTHER | CUSTOM; } @Virtual void release() { // No-op in Java. // Implement as delete this in subclass. // Be sure to release the local name } @SuppressWarnings("unused") @Virtual private void destructor() { } @Virtual public ElementName cloneElementName(Interner interner) { return this; } // START CODE ONLY USED FOR GENERATING CODE uncomment and run to regenerate // /** // * @see java.lang.Object#toString() // */ // @Override public String toString() { // return "(\"" + name + "\", \"" + camelCaseName + "\", " + decomposedFlags() + ")"; // } // // private String decomposedFlags() { // StringBuilder buf = new StringBuilder("TreeBuilder."); // buf.append(treeBuilderGroupToName()); // if ((flags & SPECIAL) != 0) { // buf.append(" | SPECIAL"); // } // if ((flags & FOSTER_PARENTING) != 0) { // buf.append(" | FOSTER_PARENTING"); // } // if ((flags & SCOPING) != 0) { // buf.append(" | SCOPING"); // } // if ((flags & SCOPING_AS_MATHML) != 0) { // buf.append(" | SCOPING_AS_MATHML"); // } // if ((flags & SCOPING_AS_SVG) != 0) { // buf.append(" | SCOPING_AS_SVG"); // } // if ((flags & OPTIONAL_END_TAG) != 0) { // buf.append(" | OPTIONAL_END_TAG"); // } // return buf.toString(); // } // // private String constName() { // char[] buf = new char[name.length()]; // for (int i = 0; i < name.length(); i++) { // char c = name.charAt(i); // if (c == '-') { // buf[i] = '_'; // } else if (c >= '0' && c <= '9') { // buf[i] = c; // } else { // buf[i] = (char) (c - 0x20); // } // } // return new String(buf); // } // // private int hash() { // return bufToHash(name.toCharArray(), name.length()); // } // // public int compareTo(ElementName other) { // int thisHash = this.hash(); // int otherHash = other.hash(); // if (thisHash < otherHash) { // return -1; // } else if (thisHash == otherHash) { // return 0; // } else { // return 1; // } // } // // private String treeBuilderGroupToName() { // switch (getGroup()) { // case TreeBuilder.OTHER: // return "OTHER"; // case TreeBuilder.A: // return "A"; // case TreeBuilder.BASE: // return "BASE"; // case TreeBuilder.BODY: // return "BODY"; // case TreeBuilder.BR: // return "BR"; // case TreeBuilder.BUTTON: // return "BUTTON"; // case TreeBuilder.CAPTION: // return "CAPTION"; // case TreeBuilder.COL: // return "COL"; // case TreeBuilder.COLGROUP: // return "COLGROUP"; // case TreeBuilder.FONT: // return "FONT"; // case TreeBuilder.FORM: // return "FORM"; // case TreeBuilder.FRAME: // return "FRAME"; // case TreeBuilder.FRAMESET: // return "FRAMESET"; // case TreeBuilder.IMAGE: // return "IMAGE"; // case TreeBuilder.INPUT: // return "INPUT"; // case TreeBuilder.ISINDEX: // return "ISINDEX"; // case TreeBuilder.LI: // return "LI"; // case TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND: // return "LINK_OR_BASEFONT_OR_BGSOUND"; // case TreeBuilder.MATH: // return "MATH"; // case TreeBuilder.META: // return "META"; // case TreeBuilder.SVG: // return "SVG"; // case TreeBuilder.HEAD: // return "HEAD"; // case TreeBuilder.HR: // return "HR"; // case TreeBuilder.HTML: // return "HTML"; // case TreeBuilder.KEYGEN: // return "KEYGEN"; // case TreeBuilder.NOBR: // return "NOBR"; // case TreeBuilder.NOFRAMES: // return "NOFRAMES"; // case TreeBuilder.NOSCRIPT: // return "NOSCRIPT"; // case TreeBuilder.OPTGROUP: // return "OPTGROUP"; // case TreeBuilder.OPTION: // return "OPTION"; // case TreeBuilder.P: // return "P"; // case TreeBuilder.PLAINTEXT: // return "PLAINTEXT"; // case TreeBuilder.SCRIPT: // return "SCRIPT"; // case TreeBuilder.SELECT: // return "SELECT"; // case TreeBuilder.STYLE: // return "STYLE"; // case TreeBuilder.TABLE: // return "TABLE"; // case TreeBuilder.TEXTAREA: // return "TEXTAREA"; // case TreeBuilder.TITLE: // return "TITLE"; // case TreeBuilder.TEMPLATE: // return "TEMPLATE"; // case TreeBuilder.TR: // return "TR"; // case TreeBuilder.XMP: // return "XMP"; // case TreeBuilder.TBODY_OR_THEAD_OR_TFOOT: // return "TBODY_OR_THEAD_OR_TFOOT"; // case TreeBuilder.TD_OR_TH: // return "TD_OR_TH"; // case TreeBuilder.DD_OR_DT: // return "DD_OR_DT"; // case TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6: // return "H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6"; // case TreeBuilder.OBJECT: // return "OBJECT"; // case TreeBuilder.OUTPUT: // return "OUTPUT"; // case TreeBuilder.MARQUEE_OR_APPLET: // return "MARQUEE_OR_APPLET"; // case TreeBuilder.PRE_OR_LISTING: // return "PRE_OR_LISTING"; // case TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U: // return "B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U"; // case TreeBuilder.UL_OR_OL_OR_DL: // return "UL_OR_OL_OR_DL"; // case TreeBuilder.IFRAME: // return "IFRAME"; // case TreeBuilder.NOEMBED: // return "NOEMBED"; // case TreeBuilder.EMBED: // return "EMBED"; // case TreeBuilder.IMG: // return "IMG"; // case TreeBuilder.AREA_OR_WBR: // return "AREA_OR_WBR"; // case TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU: // return "DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU"; // case TreeBuilder.FIELDSET: // return "FIELDSET"; // case TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY: // return "ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY"; // case TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR: // return "RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR"; // case TreeBuilder.RB_OR_RTC: // return "RB_OR_RTC"; // case TreeBuilder.RT_OR_RP: // return "RT_OR_RP"; // case TreeBuilder.PARAM_OR_SOURCE_OR_TRACK: // return "PARAM_OR_SOURCE_OR_TRACK"; // case TreeBuilder.MGLYPH_OR_MALIGNMARK: // return "MGLYPH_OR_MALIGNMARK"; // case TreeBuilder.MI_MO_MN_MS_MTEXT: // return "MI_MO_MN_MS_MTEXT"; // case TreeBuilder.ANNOTATION_XML: // return "ANNOTATION_XML"; // case TreeBuilder.FOREIGNOBJECT_OR_DESC: // return "FOREIGNOBJECT_OR_DESC"; // case TreeBuilder.MENUITEM: // return "MENUITEM"; // } // return null; // } // // /** // * Regenerate self // * // * @param args // */ // public static void main(String[] args) { // Arrays.sort(ELEMENT_NAMES); // for (int i = 1; i < ELEMENT_NAMES.length; i++) { // if (ELEMENT_NAMES[i].hash() == ELEMENT_NAMES[i - 1].hash()) { // System.err.println("Hash collision: " + ELEMENT_NAMES[i].name // + ", " + ELEMENT_NAMES[i - 1].name); // return; // } // } // for (int i = 0; i < ELEMENT_NAMES.length; i++) { // ElementName el = ELEMENT_NAMES[i]; // System.out.println("public static final ElementName " // + el.constName() + " = new ElementName" + el.toString() // + ";"); // } // System.out.println("private final static @NoLength ElementName[] ELEMENT_NAMES = {"); // for (int i = 0; i < ELEMENT_NAMES.length; i++) { // ElementName el = ELEMENT_NAMES[i]; // System.out.println(el.constName() + ","); // } // System.out.println("};"); // System.out.println("private final static int[] ELEMENT_HASHES = {"); // for (int i = 0; i < ELEMENT_NAMES.length; i++) { // ElementName el = ELEMENT_NAMES[i]; // System.out.println(Integer.toString(el.hash()) + ","); // } // System.out.println("};"); // } // START GENERATED CODE public static final ElementName A = new ElementName("a", "a", TreeBuilder.A); public static final ElementName B = new ElementName("b", "b", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); public static final ElementName G = new ElementName("g", "g", TreeBuilder.OTHER); public static final ElementName I = new ElementName("i", "i", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); public static final ElementName P = new ElementName("p", "p", TreeBuilder.P | SPECIAL | OPTIONAL_END_TAG); public static final ElementName Q = new ElementName("q", "q", TreeBuilder.OTHER); public static final ElementName S = new ElementName("s", "s", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); public static final ElementName U = new ElementName("u", "u", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); public static final ElementName BR = new ElementName("br", "br", TreeBuilder.BR | SPECIAL); public static final ElementName CI = new ElementName("ci", "ci", TreeBuilder.OTHER); public static final ElementName CN = new ElementName("cn", "cn", TreeBuilder.OTHER); public static final ElementName DD = new ElementName("dd", "dd", TreeBuilder.DD_OR_DT | SPECIAL | OPTIONAL_END_TAG); public static final ElementName DL = new ElementName("dl", "dl", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL); public static final ElementName DT = new ElementName("dt", "dt", TreeBuilder.DD_OR_DT | SPECIAL | OPTIONAL_END_TAG); public static final ElementName EM = new ElementName("em", "em", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); public static final ElementName EQ = new ElementName("eq", "eq", TreeBuilder.OTHER); public static final ElementName FN = new ElementName("fn", "fn", TreeBuilder.OTHER); public static final ElementName H1 = new ElementName("h1", "h1", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); public static final ElementName H2 = new ElementName("h2", "h2", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); public static final ElementName H3 = new ElementName("h3", "h3", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); public static final ElementName H4 = new ElementName("h4", "h4", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); public static final ElementName H5 = new ElementName("h5", "h5", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); public static final ElementName H6 = new ElementName("h6", "h6", TreeBuilder.H1_OR_H2_OR_H3_OR_H4_OR_H5_OR_H6 | SPECIAL); public static final ElementName GT = new ElementName("gt", "gt", TreeBuilder.OTHER); public static final ElementName HR = new ElementName("hr", "hr", TreeBuilder.HR | SPECIAL); public static final ElementName IN = new ElementName("in", "in", TreeBuilder.OTHER); public static final ElementName LI = new ElementName("li", "li", TreeBuilder.LI | SPECIAL | OPTIONAL_END_TAG); public static final ElementName LN = new ElementName("ln", "ln", TreeBuilder.OTHER); public static final ElementName LT = new ElementName("lt", "lt", TreeBuilder.OTHER); public static final ElementName MI = new ElementName("mi", "mi", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); public static final ElementName MN = new ElementName("mn", "mn", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); public static final ElementName MO = new ElementName("mo", "mo", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); public static final ElementName MS = new ElementName("ms", "ms", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); public static final ElementName OL = new ElementName("ol", "ol", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL); public static final ElementName OR = new ElementName("or", "or", TreeBuilder.OTHER); public static final ElementName PI = new ElementName("pi", "pi", TreeBuilder.OTHER); public static final ElementName RB = new ElementName("rb", "rb", TreeBuilder.RB_OR_RTC | OPTIONAL_END_TAG); public static final ElementName RP = new ElementName("rp", "rp", TreeBuilder.RT_OR_RP | OPTIONAL_END_TAG); public static final ElementName RT = new ElementName("rt", "rt", TreeBuilder.RT_OR_RP | OPTIONAL_END_TAG); public static final ElementName TD = new ElementName("td", "td", TreeBuilder.TD_OR_TH | SPECIAL | SCOPING | OPTIONAL_END_TAG); public static final ElementName TH = new ElementName("th", "th", TreeBuilder.TD_OR_TH | SPECIAL | SCOPING | OPTIONAL_END_TAG); public static final ElementName TR = new ElementName("tr", "tr", TreeBuilder.TR | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); public static final ElementName TT = new ElementName("tt", "tt", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); public static final ElementName UL = new ElementName("ul", "ul", TreeBuilder.UL_OR_OL_OR_DL | SPECIAL); public static final ElementName AND = new ElementName("and", "and", TreeBuilder.OTHER); public static final ElementName ARG = new ElementName("arg", "arg", TreeBuilder.OTHER); public static final ElementName ABS = new ElementName("abs", "abs", TreeBuilder.OTHER); public static final ElementName BIG = new ElementName("big", "big", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); public static final ElementName BDO = new ElementName("bdo", "bdo", TreeBuilder.OTHER); public static final ElementName CSC = new ElementName("csc", "csc", TreeBuilder.OTHER); public static final ElementName COL = new ElementName("col", "col", TreeBuilder.COL | SPECIAL); public static final ElementName COS = new ElementName("cos", "cos", TreeBuilder.OTHER); public static final ElementName COT = new ElementName("cot", "cot", TreeBuilder.OTHER); public static final ElementName DEL = new ElementName("del", "del", TreeBuilder.OTHER); public static final ElementName DFN = new ElementName("dfn", "dfn", TreeBuilder.OTHER); public static final ElementName DIR = new ElementName("dir", "dir", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); public static final ElementName DIV = new ElementName("div", "div", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); public static final ElementName EXP = new ElementName("exp", "exp", TreeBuilder.OTHER); public static final ElementName GCD = new ElementName("gcd", "gcd", TreeBuilder.OTHER); public static final ElementName GEQ = new ElementName("geq", "geq", TreeBuilder.OTHER); public static final ElementName IMG = new ElementName("img", "img", TreeBuilder.IMG | SPECIAL); public static final ElementName INS = new ElementName("ins", "ins", TreeBuilder.OTHER); public static final ElementName INT = new ElementName("int", "int", TreeBuilder.OTHER); public static final ElementName KBD = new ElementName("kbd", "kbd", TreeBuilder.OTHER); public static final ElementName LOG = new ElementName("log", "log", TreeBuilder.OTHER); public static final ElementName LCM = new ElementName("lcm", "lcm", TreeBuilder.OTHER); public static final ElementName LEQ = new ElementName("leq", "leq", TreeBuilder.OTHER); public static final ElementName MTD = new ElementName("mtd", "mtd", TreeBuilder.OTHER); public static final ElementName MIN = new ElementName("min", "min", TreeBuilder.OTHER); public static final ElementName MAP = new ElementName("map", "map", TreeBuilder.OTHER); public static final ElementName MTR = new ElementName("mtr", "mtr", TreeBuilder.OTHER); public static final ElementName MAX = new ElementName("max", "max", TreeBuilder.OTHER); public static final ElementName NEQ = new ElementName("neq", "neq", TreeBuilder.OTHER); public static final ElementName NOT = new ElementName("not", "not", TreeBuilder.OTHER); public static final ElementName NAV = new ElementName("nav", "nav", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); public static final ElementName PRE = new ElementName("pre", "pre", TreeBuilder.PRE_OR_LISTING | SPECIAL); public static final ElementName RTC = new ElementName("rtc", "rtc", TreeBuilder.RB_OR_RTC | OPTIONAL_END_TAG); public static final ElementName REM = new ElementName("rem", "rem", TreeBuilder.OTHER); public static final ElementName SUB = new ElementName("sub", "sub", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); public static final ElementName SEC = new ElementName("sec", "sec", TreeBuilder.OTHER); public static final ElementName SVG = new ElementName("svg", "svg", TreeBuilder.SVG); public static final ElementName SUM = new ElementName("sum", "sum", TreeBuilder.OTHER); public static final ElementName SIN = new ElementName("sin", "sin", TreeBuilder.OTHER); public static final ElementName SEP = new ElementName("sep", "sep", TreeBuilder.OTHER); public static final ElementName SUP = new ElementName("sup", "sup", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); public static final ElementName SET = new ElementName("set", "set", TreeBuilder.OTHER); public static final ElementName TAN = new ElementName("tan", "tan", TreeBuilder.OTHER); public static final ElementName USE = new ElementName("use", "use", TreeBuilder.OTHER); public static final ElementName VAR = new ElementName("var", "var", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); public static final ElementName WBR = new ElementName("wbr", "wbr", TreeBuilder.AREA_OR_WBR | SPECIAL); public static final ElementName XMP = new ElementName("xmp", "xmp", TreeBuilder.XMP | SPECIAL); public static final ElementName XOR = new ElementName("xor", "xor", TreeBuilder.OTHER); public static final ElementName AREA = new ElementName("area", "area", TreeBuilder.AREA_OR_WBR | SPECIAL); public static final ElementName ABBR = new ElementName("abbr", "abbr", TreeBuilder.OTHER); public static final ElementName BASE = new ElementName("base", "base", TreeBuilder.BASE | SPECIAL); public static final ElementName BVAR = new ElementName("bvar", "bvar", TreeBuilder.OTHER); public static final ElementName BODY = new ElementName("body", "body", TreeBuilder.BODY | SPECIAL | OPTIONAL_END_TAG); public static final ElementName CARD = new ElementName("card", "card", TreeBuilder.OTHER); public static final ElementName CODE = new ElementName("code", "code", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); public static final ElementName CITE = new ElementName("cite", "cite", TreeBuilder.OTHER); public static final ElementName CSCH = new ElementName("csch", "csch", TreeBuilder.OTHER); public static final ElementName COSH = new ElementName("cosh", "cosh", TreeBuilder.OTHER); public static final ElementName COTH = new ElementName("coth", "coth", TreeBuilder.OTHER); public static final ElementName CURL = new ElementName("curl", "curl", TreeBuilder.OTHER); public static final ElementName DESC = new ElementName("desc", "desc", TreeBuilder.FOREIGNOBJECT_OR_DESC | SCOPING_AS_SVG); public static final ElementName DIFF = new ElementName("diff", "diff", TreeBuilder.OTHER); public static final ElementName DEFS = new ElementName("defs", "defs", TreeBuilder.OTHER); public static final ElementName FORM = new ElementName("form", "form", TreeBuilder.FORM | SPECIAL); public static final ElementName FONT = new ElementName("font", "font", TreeBuilder.FONT); public static final ElementName GRAD = new ElementName("grad", "grad", TreeBuilder.OTHER); public static final ElementName HEAD = new ElementName("head", "head", TreeBuilder.HEAD | SPECIAL | OPTIONAL_END_TAG); public static final ElementName HTML = new ElementName("html", "html", TreeBuilder.HTML | SPECIAL | SCOPING | OPTIONAL_END_TAG); public static final ElementName LINE = new ElementName("line", "line", TreeBuilder.OTHER); public static final ElementName LINK = new ElementName("link", "link", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL); public static final ElementName LIST = new ElementName("list", "list", TreeBuilder.OTHER); public static final ElementName META = new ElementName("meta", "meta", TreeBuilder.META | SPECIAL); public static final ElementName MSUB = new ElementName("msub", "msub", TreeBuilder.OTHER); public static final ElementName MODE = new ElementName("mode", "mode", TreeBuilder.OTHER); public static final ElementName MATH = new ElementName("math", "math", TreeBuilder.MATH); public static final ElementName MARK = new ElementName("mark", "mark", TreeBuilder.OTHER); public static final ElementName MASK = new ElementName("mask", "mask", TreeBuilder.OTHER); public static final ElementName MEAN = new ElementName("mean", "mean", TreeBuilder.OTHER); public static final ElementName MAIN = new ElementName("main", "main", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); public static final ElementName MSUP = new ElementName("msup", "msup", TreeBuilder.OTHER); public static final ElementName MENU = new ElementName("menu", "menu", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); public static final ElementName MROW = new ElementName("mrow", "mrow", TreeBuilder.OTHER); public static final ElementName NONE = new ElementName("none", "none", TreeBuilder.OTHER); public static final ElementName NOBR = new ElementName("nobr", "nobr", TreeBuilder.NOBR); public static final ElementName NEST = new ElementName("nest", "nest", TreeBuilder.OTHER); public static final ElementName PATH = new ElementName("path", "path", TreeBuilder.OTHER); public static final ElementName PLUS = new ElementName("plus", "plus", TreeBuilder.OTHER); public static final ElementName RULE = new ElementName("rule", "rule", TreeBuilder.OTHER); public static final ElementName REAL = new ElementName("real", "real", TreeBuilder.OTHER); public static final ElementName RELN = new ElementName("reln", "reln", TreeBuilder.OTHER); public static final ElementName RECT = new ElementName("rect", "rect", TreeBuilder.OTHER); public static final ElementName ROOT = new ElementName("root", "root", TreeBuilder.OTHER); public static final ElementName RUBY = new ElementName("ruby", "ruby", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); public static final ElementName SECH = new ElementName("sech", "sech", TreeBuilder.OTHER); public static final ElementName SINH = new ElementName("sinh", "sinh", TreeBuilder.OTHER); public static final ElementName SPAN = new ElementName("span", "span", TreeBuilder.RUBY_OR_SPAN_OR_SUB_OR_SUP_OR_VAR); public static final ElementName SAMP = new ElementName("samp", "samp", TreeBuilder.OTHER); public static final ElementName STOP = new ElementName("stop", "stop", TreeBuilder.OTHER); public static final ElementName SDEV = new ElementName("sdev", "sdev", TreeBuilder.OTHER); public static final ElementName TIME = new ElementName("time", "time", TreeBuilder.OTHER); public static final ElementName TRUE = new ElementName("true", "true", TreeBuilder.OTHER); public static final ElementName TREF = new ElementName("tref", "tref", TreeBuilder.OTHER); public static final ElementName TANH = new ElementName("tanh", "tanh", TreeBuilder.OTHER); public static final ElementName TEXT = new ElementName("text", "text", TreeBuilder.OTHER); public static final ElementName VIEW = new ElementName("view", "view", TreeBuilder.OTHER); public static final ElementName ASIDE = new ElementName("aside", "aside", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); public static final ElementName AUDIO = new ElementName("audio", "audio", TreeBuilder.OTHER); public static final ElementName APPLY = new ElementName("apply", "apply", TreeBuilder.OTHER); public static final ElementName EMBED = new ElementName("embed", "embed", TreeBuilder.EMBED | SPECIAL); public static final ElementName FRAME = new ElementName("frame", "frame", TreeBuilder.FRAME | SPECIAL); public static final ElementName FALSE = new ElementName("false", "false", TreeBuilder.OTHER); public static final ElementName FLOOR = new ElementName("floor", "floor", TreeBuilder.OTHER); public static final ElementName GLYPH = new ElementName("glyph", "glyph", TreeBuilder.OTHER); public static final ElementName HKERN = new ElementName("hkern", "hkern", TreeBuilder.OTHER); public static final ElementName IMAGE = new ElementName("image", "image", TreeBuilder.IMAGE); public static final ElementName IDENT = new ElementName("ident", "ident", TreeBuilder.OTHER); public static final ElementName INPUT = new ElementName("input", "input", TreeBuilder.INPUT | SPECIAL); public static final ElementName LABEL = new ElementName("label", "label", TreeBuilder.OTHER); public static final ElementName LIMIT = new ElementName("limit", "limit", TreeBuilder.OTHER); public static final ElementName MFRAC = new ElementName("mfrac", "mfrac", TreeBuilder.OTHER); public static final ElementName MPATH = new ElementName("mpath", "mpath", TreeBuilder.OTHER); public static final ElementName METER = new ElementName("meter", "meter", TreeBuilder.OTHER); public static final ElementName MOVER = new ElementName("mover", "mover", TreeBuilder.OTHER); public static final ElementName MINUS = new ElementName("minus", "minus", TreeBuilder.OTHER); public static final ElementName MROOT = new ElementName("mroot", "mroot", TreeBuilder.OTHER); public static final ElementName MSQRT = new ElementName("msqrt", "msqrt", TreeBuilder.OTHER); public static final ElementName MTEXT = new ElementName("mtext", "mtext", TreeBuilder.MI_MO_MN_MS_MTEXT | SCOPING_AS_MATHML); public static final ElementName NOTIN = new ElementName("notin", "notin", TreeBuilder.OTHER); public static final ElementName PIECE = new ElementName("piece", "piece", TreeBuilder.OTHER); public static final ElementName PARAM = new ElementName("param", "param", TreeBuilder.PARAM_OR_SOURCE_OR_TRACK | SPECIAL); public static final ElementName POWER = new ElementName("power", "power", TreeBuilder.OTHER); public static final ElementName REALS = new ElementName("reals", "reals", TreeBuilder.OTHER); public static final ElementName STYLE = new ElementName("style", "style", TreeBuilder.STYLE | SPECIAL); public static final ElementName SMALL = new ElementName("small", "small", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); public static final ElementName THEAD = new ElementName("thead", "thead", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); public static final ElementName TABLE = new ElementName("table", "table", TreeBuilder.TABLE | SPECIAL | FOSTER_PARENTING | SCOPING); public static final ElementName TITLE = new ElementName("title", "title", TreeBuilder.TITLE | SPECIAL | SCOPING_AS_SVG); public static final ElementName TRACK = new ElementName("track", "track", TreeBuilder.PARAM_OR_SOURCE_OR_TRACK | SPECIAL); public static final ElementName TSPAN = new ElementName("tspan", "tspan", TreeBuilder.OTHER); public static final ElementName TIMES = new ElementName("times", "times", TreeBuilder.OTHER); public static final ElementName TFOOT = new ElementName("tfoot", "tfoot", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); public static final ElementName TBODY = new ElementName("tbody", "tbody", TreeBuilder.TBODY_OR_THEAD_OR_TFOOT | SPECIAL | FOSTER_PARENTING | OPTIONAL_END_TAG); public static final ElementName UNION = new ElementName("union", "union", TreeBuilder.OTHER); public static final ElementName VKERN = new ElementName("vkern", "vkern", TreeBuilder.OTHER); public static final ElementName VIDEO = new ElementName("video", "video", TreeBuilder.OTHER); public static final ElementName ARCSEC = new ElementName("arcsec", "arcsec", TreeBuilder.OTHER); public static final ElementName ARCCSC = new ElementName("arccsc", "arccsc", TreeBuilder.OTHER); public static final ElementName ARCTAN = new ElementName("arctan", "arctan", TreeBuilder.OTHER); public static final ElementName ARCSIN = new ElementName("arcsin", "arcsin", TreeBuilder.OTHER); public static final ElementName ARCCOS = new ElementName("arccos", "arccos", TreeBuilder.OTHER); public static final ElementName APPLET = new ElementName("applet", "applet", TreeBuilder.MARQUEE_OR_APPLET | SPECIAL | SCOPING); public static final ElementName ARCCOT = new ElementName("arccot", "arccot", TreeBuilder.OTHER); public static final ElementName APPROX = new ElementName("approx", "approx", TreeBuilder.OTHER); public static final ElementName BUTTON = new ElementName("button", "button", TreeBuilder.BUTTON | SPECIAL); public static final ElementName CIRCLE = new ElementName("circle", "circle", TreeBuilder.OTHER); public static final ElementName CENTER = new ElementName("center", "center", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); public static final ElementName CURSOR = new ElementName("cursor", "cursor", TreeBuilder.OTHER); public static final ElementName CANVAS = new ElementName("canvas", "canvas", TreeBuilder.OTHER); public static final ElementName DIVIDE = new ElementName("divide", "divide", TreeBuilder.OTHER); public static final ElementName DEGREE = new ElementName("degree", "degree", TreeBuilder.OTHER); public static final ElementName DOMAIN = new ElementName("domain", "domain", TreeBuilder.OTHER); public static final ElementName EXISTS = new ElementName("exists", "exists", TreeBuilder.OTHER); public static final ElementName FETILE = new ElementName("fetile", "feTile", TreeBuilder.OTHER); public static final ElementName FIGURE = new ElementName("figure", "figure", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); public static final ElementName FORALL = new ElementName("forall", "forall", TreeBuilder.OTHER); public static final ElementName FILTER = new ElementName("filter", "filter", TreeBuilder.OTHER); public static final ElementName FOOTER = new ElementName("footer", "footer", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); public static final ElementName HGROUP = new ElementName("hgroup", "hgroup", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); public static final ElementName HEADER = new ElementName("header", "header", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); public static final ElementName IFRAME = new ElementName("iframe", "iframe", TreeBuilder.IFRAME | SPECIAL); public static final ElementName KEYGEN = new ElementName("keygen", "keygen", TreeBuilder.KEYGEN); public static final ElementName LAMBDA = new ElementName("lambda", "lambda", TreeBuilder.OTHER); public static final ElementName LEGEND = new ElementName("legend", "legend", TreeBuilder.OTHER); public static final ElementName MSPACE = new ElementName("mspace", "mspace", TreeBuilder.OTHER); public static final ElementName MTABLE = new ElementName("mtable", "mtable", TreeBuilder.OTHER); public static final ElementName MSTYLE = new ElementName("mstyle", "mstyle", TreeBuilder.OTHER); public static final ElementName MGLYPH = new ElementName("mglyph", "mglyph", TreeBuilder.MGLYPH_OR_MALIGNMARK); public static final ElementName MEDIAN = new ElementName("median", "median", TreeBuilder.OTHER); public static final ElementName MUNDER = new ElementName("munder", "munder", TreeBuilder.OTHER); public static final ElementName MARKER = new ElementName("marker", "marker", TreeBuilder.OTHER); public static final ElementName MERROR = new ElementName("merror", "merror", TreeBuilder.OTHER); public static final ElementName MOMENT = new ElementName("moment", "moment", TreeBuilder.OTHER); public static final ElementName MATRIX = new ElementName("matrix", "matrix", TreeBuilder.OTHER); public static final ElementName OPTION = new ElementName("option", "option", TreeBuilder.OPTION | OPTIONAL_END_TAG); public static final ElementName OBJECT = new ElementName("object", "object", TreeBuilder.OBJECT | SPECIAL | SCOPING); public static final ElementName OUTPUT = new ElementName("output", "output", TreeBuilder.OUTPUT); public static final ElementName PRIMES = new ElementName("primes", "primes", TreeBuilder.OTHER); public static final ElementName SOURCE = new ElementName("source", "source", TreeBuilder.PARAM_OR_SOURCE_OR_TRACK); public static final ElementName STRIKE = new ElementName("strike", "strike", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); public static final ElementName STRONG = new ElementName("strong", "strong", TreeBuilder.B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U); public static final ElementName SWITCH = new ElementName("switch", "switch", TreeBuilder.OTHER); public static final ElementName SYMBOL = new ElementName("symbol", "symbol", TreeBuilder.OTHER); public static final ElementName SELECT = new ElementName("select", "select", TreeBuilder.SELECT | SPECIAL); public static final ElementName SUBSET = new ElementName("subset", "subset", TreeBuilder.OTHER); public static final ElementName SCRIPT = new ElementName("script", "script", TreeBuilder.SCRIPT | SPECIAL); public static final ElementName TBREAK = new ElementName("tbreak", "tbreak", TreeBuilder.OTHER); public static final ElementName VECTOR = new ElementName("vector", "vector", TreeBuilder.OTHER); public static final ElementName ARTICLE = new ElementName("article", "article", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); public static final ElementName ANIMATE = new ElementName("animate", "animate", TreeBuilder.OTHER); public static final ElementName ARCSECH = new ElementName("arcsech", "arcsech", TreeBuilder.OTHER); public static final ElementName ARCCSCH = new ElementName("arccsch", "arccsch", TreeBuilder.OTHER); public static final ElementName ARCTANH = new ElementName("arctanh", "arctanh", TreeBuilder.OTHER); public static final ElementName ARCSINH = new ElementName("arcsinh", "arcsinh", TreeBuilder.OTHER); public static final ElementName ARCCOSH = new ElementName("arccosh", "arccosh", TreeBuilder.OTHER); public static final ElementName ARCCOTH = new ElementName("arccoth", "arccoth", TreeBuilder.OTHER); public static final ElementName ACRONYM = new ElementName("acronym", "acronym", TreeBuilder.OTHER); public static final ElementName ADDRESS = new ElementName("address", "address", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); public static final ElementName BGSOUND = new ElementName("bgsound", "bgsound", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL); public static final ElementName COMPOSE = new ElementName("compose", "compose", TreeBuilder.OTHER); public static final ElementName CEILING = new ElementName("ceiling", "ceiling", TreeBuilder.OTHER); public static final ElementName CSYMBOL = new ElementName("csymbol", "csymbol", TreeBuilder.OTHER); public static final ElementName CAPTION = new ElementName("caption", "caption", TreeBuilder.CAPTION | SPECIAL | SCOPING); public static final ElementName DISCARD = new ElementName("discard", "discard", TreeBuilder.OTHER); public static final ElementName DECLARE = new ElementName("declare", "declare", TreeBuilder.OTHER); public static final ElementName DETAILS = new ElementName("details", "details", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); public static final ElementName ELLIPSE = new ElementName("ellipse", "ellipse", TreeBuilder.OTHER); public static final ElementName FEFUNCA = new ElementName("fefunca", "feFuncA", TreeBuilder.OTHER); public static final ElementName FEFUNCB = new ElementName("fefuncb", "feFuncB", TreeBuilder.OTHER); public static final ElementName FEBLEND = new ElementName("feblend", "feBlend", TreeBuilder.OTHER); public static final ElementName FEFLOOD = new ElementName("feflood", "feFlood", TreeBuilder.OTHER); public static final ElementName FEIMAGE = new ElementName("feimage", "feImage", TreeBuilder.OTHER); public static final ElementName FEMERGE = new ElementName("femerge", "feMerge", TreeBuilder.OTHER); public static final ElementName FEFUNCG = new ElementName("fefuncg", "feFuncG", TreeBuilder.OTHER); public static final ElementName FEFUNCR = new ElementName("fefuncr", "feFuncR", TreeBuilder.OTHER); public static final ElementName HANDLER = new ElementName("handler", "handler", TreeBuilder.OTHER); public static final ElementName INVERSE = new ElementName("inverse", "inverse", TreeBuilder.OTHER); public static final ElementName IMPLIES = new ElementName("implies", "implies", TreeBuilder.OTHER); public static final ElementName ISINDEX = new ElementName("isindex", "isindex", TreeBuilder.ISINDEX | SPECIAL); public static final ElementName LOGBASE = new ElementName("logbase", "logbase", TreeBuilder.OTHER); public static final ElementName LISTING = new ElementName("listing", "listing", TreeBuilder.PRE_OR_LISTING | SPECIAL); public static final ElementName MFENCED = new ElementName("mfenced", "mfenced", TreeBuilder.OTHER); public static final ElementName MPADDED = new ElementName("mpadded", "mpadded", TreeBuilder.OTHER); public static final ElementName MARQUEE = new ElementName("marquee", "marquee", TreeBuilder.MARQUEE_OR_APPLET | SPECIAL | SCOPING); public static final ElementName MACTION = new ElementName("maction", "maction", TreeBuilder.OTHER); public static final ElementName MSUBSUP = new ElementName("msubsup", "msubsup", TreeBuilder.OTHER); public static final ElementName NOEMBED = new ElementName("noembed", "noembed", TreeBuilder.NOEMBED | SPECIAL); public static final ElementName POLYGON = new ElementName("polygon", "polygon", TreeBuilder.OTHER); public static final ElementName PATTERN = new ElementName("pattern", "pattern", TreeBuilder.OTHER); public static final ElementName PICTURE = new ElementName("picture", "picture", TreeBuilder.OTHER); public static final ElementName PRODUCT = new ElementName("product", "product", TreeBuilder.OTHER); public static final ElementName SETDIFF = new ElementName("setdiff", "setdiff", TreeBuilder.OTHER); public static final ElementName SECTION = new ElementName("section", "section", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); public static final ElementName SUMMARY = new ElementName("summary", "summary", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); public static final ElementName TENDSTO = new ElementName("tendsto", "tendsto", TreeBuilder.OTHER); public static final ElementName UPLIMIT = new ElementName("uplimit", "uplimit", TreeBuilder.OTHER); public static final ElementName ALTGLYPH = new ElementName("altglyph", "altGlyph", TreeBuilder.OTHER); public static final ElementName BASEFONT = new ElementName("basefont", "basefont", TreeBuilder.LINK_OR_BASEFONT_OR_BGSOUND | SPECIAL); public static final ElementName CLIPPATH = new ElementName("clippath", "clipPath", TreeBuilder.OTHER); public static final ElementName CODOMAIN = new ElementName("codomain", "codomain", TreeBuilder.OTHER); public static final ElementName COLGROUP = new ElementName("colgroup", "colgroup", TreeBuilder.COLGROUP | SPECIAL | OPTIONAL_END_TAG); public static final ElementName EMPTYSET = new ElementName("emptyset", "emptyset", TreeBuilder.OTHER); public static final ElementName FACTOROF = new ElementName("factorof", "factorof", TreeBuilder.OTHER); public static final ElementName FIELDSET = new ElementName("fieldset", "fieldset", TreeBuilder.FIELDSET | SPECIAL); public static final ElementName FRAMESET = new ElementName("frameset", "frameset", TreeBuilder.FRAMESET | SPECIAL); public static final ElementName FEOFFSET = new ElementName("feoffset", "feOffset", TreeBuilder.OTHER); public static final ElementName GLYPHREF = new ElementName("glyphref", "glyphRef", TreeBuilder.OTHER); public static final ElementName INTERVAL = new ElementName("interval", "interval", TreeBuilder.OTHER); public static final ElementName INTEGERS = new ElementName("integers", "integers", TreeBuilder.OTHER); public static final ElementName INFINITY = new ElementName("infinity", "infinity", TreeBuilder.OTHER); public static final ElementName LISTENER = new ElementName("listener", "listener", TreeBuilder.OTHER); public static final ElementName LOWLIMIT = new ElementName("lowlimit", "lowlimit", TreeBuilder.OTHER); public static final ElementName METADATA = new ElementName("metadata", "metadata", TreeBuilder.OTHER); public static final ElementName MENCLOSE = new ElementName("menclose", "menclose", TreeBuilder.OTHER); public static final ElementName MENUITEM = new ElementName("menuitem", "menuitem", TreeBuilder.MENUITEM); public static final ElementName MPHANTOM = new ElementName("mphantom", "mphantom", TreeBuilder.OTHER); public static final ElementName NOFRAMES = new ElementName("noframes", "noframes", TreeBuilder.NOFRAMES | SPECIAL); public static final ElementName NOSCRIPT = new ElementName("noscript", "noscript", TreeBuilder.NOSCRIPT | SPECIAL); public static final ElementName OPTGROUP = new ElementName("optgroup", "optgroup", TreeBuilder.OPTGROUP | OPTIONAL_END_TAG); public static final ElementName POLYLINE = new ElementName("polyline", "polyline", TreeBuilder.OTHER); public static final ElementName PREFETCH = new ElementName("prefetch", "prefetch", TreeBuilder.OTHER); public static final ElementName PROGRESS = new ElementName("progress", "progress", TreeBuilder.OTHER); public static final ElementName PRSUBSET = new ElementName("prsubset", "prsubset", TreeBuilder.OTHER); public static final ElementName QUOTIENT = new ElementName("quotient", "quotient", TreeBuilder.OTHER); public static final ElementName SELECTOR = new ElementName("selector", "selector", TreeBuilder.OTHER); public static final ElementName TEXTAREA = new ElementName("textarea", "textarea", TreeBuilder.TEXTAREA | SPECIAL); public static final ElementName TEMPLATE = new ElementName("template", "template", TreeBuilder.TEMPLATE | SPECIAL | SCOPING); public static final ElementName TEXTPATH = new ElementName("textpath", "textPath", TreeBuilder.OTHER); public static final ElementName VARIANCE = new ElementName("variance", "variance", TreeBuilder.OTHER); public static final ElementName ANIMATION = new ElementName("animation", "animation", TreeBuilder.OTHER); public static final ElementName CONJUGATE = new ElementName("conjugate", "conjugate", TreeBuilder.OTHER); public static final ElementName CONDITION = new ElementName("condition", "condition", TreeBuilder.OTHER); public static final ElementName COMPLEXES = new ElementName("complexes", "complexes", TreeBuilder.OTHER); public static final ElementName FONT_FACE = new ElementName("font-face", "font-face", TreeBuilder.OTHER); public static final ElementName FACTORIAL = new ElementName("factorial", "factorial", TreeBuilder.OTHER); public static final ElementName INTERSECT = new ElementName("intersect", "intersect", TreeBuilder.OTHER); public static final ElementName IMAGINARY = new ElementName("imaginary", "imaginary", TreeBuilder.OTHER); public static final ElementName LAPLACIAN = new ElementName("laplacian", "laplacian", TreeBuilder.OTHER); public static final ElementName MATRIXROW = new ElementName("matrixrow", "matrixrow", TreeBuilder.OTHER); public static final ElementName NOTSUBSET = new ElementName("notsubset", "notsubset", TreeBuilder.OTHER); public static final ElementName OTHERWISE = new ElementName("otherwise", "otherwise", TreeBuilder.OTHER); public static final ElementName PIECEWISE = new ElementName("piecewise", "piecewise", TreeBuilder.OTHER); public static final ElementName PLAINTEXT = new ElementName("plaintext", "plaintext", TreeBuilder.PLAINTEXT | SPECIAL); public static final ElementName RATIONALS = new ElementName("rationals", "rationals", TreeBuilder.OTHER); public static final ElementName SEMANTICS = new ElementName("semantics", "semantics", TreeBuilder.OTHER); public static final ElementName TRANSPOSE = new ElementName("transpose", "transpose", TreeBuilder.OTHER); public static final ElementName ANNOTATION = new ElementName("annotation", "annotation", TreeBuilder.OTHER); public static final ElementName BLOCKQUOTE = new ElementName("blockquote", "blockquote", TreeBuilder.DIV_OR_BLOCKQUOTE_OR_CENTER_OR_MENU | SPECIAL); public static final ElementName DIVERGENCE = new ElementName("divergence", "divergence", TreeBuilder.OTHER); public static final ElementName EULERGAMMA = new ElementName("eulergamma", "eulergamma", TreeBuilder.OTHER); public static final ElementName EQUIVALENT = new ElementName("equivalent", "equivalent", TreeBuilder.OTHER); public static final ElementName FIGCAPTION = new ElementName("figcaption", "figcaption", TreeBuilder.ADDRESS_OR_ARTICLE_OR_ASIDE_OR_DETAILS_OR_DIR_OR_FIGCAPTION_OR_FIGURE_OR_FOOTER_OR_HEADER_OR_HGROUP_OR_MAIN_OR_NAV_OR_SECTION_OR_SUMMARY | SPECIAL); public static final ElementName IMAGINARYI = new ElementName("imaginaryi", "imaginaryi", TreeBuilder.OTHER); public static final ElementName MALIGNMARK = new ElementName("malignmark", "malignmark", TreeBuilder.MGLYPH_OR_MALIGNMARK); public static final ElementName MUNDEROVER = new ElementName("munderover", "munderover", TreeBuilder.OTHER); public static final ElementName MLABELEDTR = new ElementName("mlabeledtr", "mlabeledtr", TreeBuilder.OTHER); public static final ElementName NOTANUMBER = new ElementName("notanumber", "notanumber", TreeBuilder.OTHER); public static final ElementName SOLIDCOLOR = new ElementName("solidcolor", "solidcolor", TreeBuilder.OTHER); public static final ElementName ALTGLYPHDEF = new ElementName("altglyphdef", "altGlyphDef", TreeBuilder.OTHER); public static final ElementName DETERMINANT = new ElementName("determinant", "determinant", TreeBuilder.OTHER); public static final ElementName FEMERGENODE = new ElementName("femergenode", "feMergeNode", TreeBuilder.OTHER); public static final ElementName FECOMPOSITE = new ElementName("fecomposite", "feComposite", TreeBuilder.OTHER); public static final ElementName FESPOTLIGHT = new ElementName("fespotlight", "feSpotLight", TreeBuilder.OTHER); public static final ElementName MALIGNGROUP = new ElementName("maligngroup", "maligngroup", TreeBuilder.OTHER); public static final ElementName MPRESCRIPTS = new ElementName("mprescripts", "mprescripts", TreeBuilder.OTHER); public static final ElementName MOMENTABOUT = new ElementName("momentabout", "momentabout", TreeBuilder.OTHER); public static final ElementName NOTPRSUBSET = new ElementName("notprsubset", "notprsubset", TreeBuilder.OTHER); public static final ElementName PARTIALDIFF = new ElementName("partialdiff", "partialdiff", TreeBuilder.OTHER); public static final ElementName ALTGLYPHITEM = new ElementName("altglyphitem", "altGlyphItem", TreeBuilder.OTHER); public static final ElementName ANIMATECOLOR = new ElementName("animatecolor", "animateColor", TreeBuilder.OTHER); public static final ElementName DATATEMPLATE = new ElementName("datatemplate", "datatemplate", TreeBuilder.OTHER); public static final ElementName EXPONENTIALE = new ElementName("exponentiale", "exponentiale", TreeBuilder.OTHER); public static final ElementName FETURBULENCE = new ElementName("feturbulence", "feTurbulence", TreeBuilder.OTHER); public static final ElementName FEPOINTLIGHT = new ElementName("fepointlight", "fePointLight", TreeBuilder.OTHER); public static final ElementName FEDROPSHADOW = new ElementName("fedropshadow", "feDropShadow", TreeBuilder.OTHER); public static final ElementName FEMORPHOLOGY = new ElementName("femorphology", "feMorphology", TreeBuilder.OTHER); public static final ElementName OUTERPRODUCT = new ElementName("outerproduct", "outerproduct", TreeBuilder.OTHER); public static final ElementName ANIMATEMOTION = new ElementName("animatemotion", "animateMotion", TreeBuilder.OTHER); public static final ElementName COLOR_PROFILE = new ElementName("color-profile", "color-profile", TreeBuilder.OTHER); public static final ElementName FONT_FACE_SRC = new ElementName("font-face-src", "font-face-src", TreeBuilder.OTHER); public static final ElementName FONT_FACE_URI = new ElementName("font-face-uri", "font-face-uri", TreeBuilder.OTHER); public static final ElementName FOREIGNOBJECT = new ElementName("foreignobject", "foreignObject", TreeBuilder.FOREIGNOBJECT_OR_DESC | SCOPING_AS_SVG); public static final ElementName FECOLORMATRIX = new ElementName("fecolormatrix", "feColorMatrix", TreeBuilder.OTHER); public static final ElementName MISSING_GLYPH = new ElementName("missing-glyph", "missing-glyph", TreeBuilder.OTHER); public static final ElementName MMULTISCRIPTS = new ElementName("mmultiscripts", "mmultiscripts", TreeBuilder.OTHER); public static final ElementName SCALARPRODUCT = new ElementName("scalarproduct", "scalarproduct", TreeBuilder.OTHER); public static final ElementName VECTORPRODUCT = new ElementName("vectorproduct", "vectorproduct", TreeBuilder.OTHER); public static final ElementName ANNOTATION_XML = new ElementName("annotation-xml", "annotation-xml", TreeBuilder.ANNOTATION_XML | SCOPING_AS_MATHML); public static final ElementName DEFINITION_SRC = new ElementName("definition-src", "definition-src", TreeBuilder.OTHER); public static final ElementName FONT_FACE_NAME = new ElementName("font-face-name", "font-face-name", TreeBuilder.OTHER); public static final ElementName FEGAUSSIANBLUR = new ElementName("fegaussianblur", "feGaussianBlur", TreeBuilder.OTHER); public static final ElementName FEDISTANTLIGHT = new ElementName("fedistantlight", "feDistantLight", TreeBuilder.OTHER); public static final ElementName LINEARGRADIENT = new ElementName("lineargradient", "linearGradient", TreeBuilder.OTHER); public static final ElementName NATURALNUMBERS = new ElementName("naturalnumbers", "naturalnumbers", TreeBuilder.OTHER); public static final ElementName RADIALGRADIENT = new ElementName("radialgradient", "radialGradient", TreeBuilder.OTHER); public static final ElementName ANIMATETRANSFORM = new ElementName("animatetransform", "animateTransform", TreeBuilder.OTHER); public static final ElementName CARTESIANPRODUCT = new ElementName("cartesianproduct", "cartesianproduct", TreeBuilder.OTHER); public static final ElementName FONT_FACE_FORMAT = new ElementName("font-face-format", "font-face-format", TreeBuilder.OTHER); public static final ElementName FECONVOLVEMATRIX = new ElementName("feconvolvematrix", "feConvolveMatrix", TreeBuilder.OTHER); public static final ElementName FEDIFFUSELIGHTING = new ElementName("fediffuselighting", "feDiffuseLighting", TreeBuilder.OTHER); public static final ElementName FEDISPLACEMENTMAP = new ElementName("fedisplacementmap", "feDisplacementMap", TreeBuilder.OTHER); public static final ElementName FESPECULARLIGHTING = new ElementName("fespecularlighting", "feSpecularLighting", TreeBuilder.OTHER); public static final ElementName DOMAINOFAPPLICATION = new ElementName("domainofapplication", "domainofapplication", TreeBuilder.OTHER); public static final ElementName FECOMPONENTTRANSFER = new ElementName("fecomponenttransfer", "feComponentTransfer", TreeBuilder.OTHER); private final static @NoLength ElementName[] ELEMENT_NAMES = { A, B, G, I, P, Q, S, U, BR, CI, CN, DD, DL, DT, EM, EQ, FN, H1, H2, H3, H4, H5, H6, GT, HR, IN, LI, LN, LT, MI, MN, MO, MS, OL, OR, PI, RB, RP, RT, TD, TH, TR, TT, UL, AND, ARG, ABS, BIG, BDO, CSC, COL, COS, COT, DEL, DFN, DIR, DIV, EXP, GCD, GEQ, IMG, INS, INT, KBD, LOG, LCM, LEQ, MTD, MIN, MAP, MTR, MAX, NEQ, NOT, NAV, PRE, RTC, REM, SUB, SEC, SVG, SUM, SIN, SEP, SUP, SET, TAN, USE, VAR, WBR, XMP, XOR, AREA, ABBR, BASE, BVAR, BODY, CARD, CODE, CITE, CSCH, COSH, COTH, CURL, DESC, DIFF, DEFS, FORM, FONT, GRAD, HEAD, HTML, LINE, LINK, LIST, META, MSUB, MODE, MATH, MARK, MASK, MEAN, MAIN, MSUP, MENU, MROW, NONE, NOBR, NEST, PATH, PLUS, RULE, REAL, RELN, RECT, ROOT, RUBY, SECH, SINH, SPAN, SAMP, STOP, SDEV, TIME, TRUE, TREF, TANH, TEXT, VIEW, ASIDE, AUDIO, APPLY, EMBED, FRAME, FALSE, FLOOR, GLYPH, HKERN, IMAGE, IDENT, INPUT, LABEL, LIMIT, MFRAC, MPATH, METER, MOVER, MINUS, MROOT, MSQRT, MTEXT, NOTIN, PIECE, PARAM, POWER, REALS, STYLE, SMALL, THEAD, TABLE, TITLE, TRACK, TSPAN, TIMES, TFOOT, TBODY, UNION, VKERN, VIDEO, ARCSEC, ARCCSC, ARCTAN, ARCSIN, ARCCOS, APPLET, ARCCOT, APPROX, BUTTON, CIRCLE, CENTER, CURSOR, CANVAS, DIVIDE, DEGREE, DOMAIN, EXISTS, FETILE, FIGURE, FORALL, FILTER, FOOTER, HGROUP, HEADER, IFRAME, KEYGEN, LAMBDA, LEGEND, MSPACE, MTABLE, MSTYLE, MGLYPH, MEDIAN, MUNDER, MARKER, MERROR, MOMENT, MATRIX, OPTION, OBJECT, OUTPUT, PRIMES, SOURCE, STRIKE, STRONG, SWITCH, SYMBOL, SELECT, SUBSET, SCRIPT, TBREAK, VECTOR, ARTICLE, ANIMATE, ARCSECH, ARCCSCH, ARCTANH, ARCSINH, ARCCOSH, ARCCOTH, ACRONYM, ADDRESS, BGSOUND, COMPOSE, CEILING, CSYMBOL, CAPTION, DISCARD, DECLARE, DETAILS, ELLIPSE, FEFUNCA, FEFUNCB, FEBLEND, FEFLOOD, FEIMAGE, FEMERGE, FEFUNCG, FEFUNCR, HANDLER, INVERSE, IMPLIES, ISINDEX, LOGBASE, LISTING, MFENCED, MPADDED, MARQUEE, MACTION, MSUBSUP, NOEMBED, POLYGON, PATTERN, PICTURE, PRODUCT, SETDIFF, SECTION, SUMMARY, TENDSTO, UPLIMIT, ALTGLYPH, BASEFONT, CLIPPATH, CODOMAIN, COLGROUP, EMPTYSET, FACTOROF, FIELDSET, FRAMESET, FEOFFSET, GLYPHREF, INTERVAL, INTEGERS, INFINITY, LISTENER, LOWLIMIT, METADATA, MENCLOSE, MENUITEM, MPHANTOM, NOFRAMES, NOSCRIPT, OPTGROUP, POLYLINE, PREFETCH, PROGRESS, PRSUBSET, QUOTIENT, SELECTOR, TEXTAREA, TEMPLATE, TEXTPATH, VARIANCE, ANIMATION, CONJUGATE, CONDITION, COMPLEXES, FONT_FACE, FACTORIAL, INTERSECT, IMAGINARY, LAPLACIAN, MATRIXROW, NOTSUBSET, OTHERWISE, PIECEWISE, PLAINTEXT, RATIONALS, SEMANTICS, TRANSPOSE, ANNOTATION, BLOCKQUOTE, DIVERGENCE, EULERGAMMA, EQUIVALENT, FIGCAPTION, IMAGINARYI, MALIGNMARK, MUNDEROVER, MLABELEDTR, NOTANUMBER, SOLIDCOLOR, ALTGLYPHDEF, DETERMINANT, FEMERGENODE, FECOMPOSITE, FESPOTLIGHT, MALIGNGROUP, MPRESCRIPTS, MOMENTABOUT, NOTPRSUBSET, PARTIALDIFF, ALTGLYPHITEM, ANIMATECOLOR, DATATEMPLATE, EXPONENTIALE, FETURBULENCE, FEPOINTLIGHT, FEDROPSHADOW, FEMORPHOLOGY, OUTERPRODUCT, ANIMATEMOTION, COLOR_PROFILE, FONT_FACE_SRC, FONT_FACE_URI, FOREIGNOBJECT, FECOLORMATRIX, MISSING_GLYPH, MMULTISCRIPTS, SCALARPRODUCT, VECTORPRODUCT, ANNOTATION_XML, DEFINITION_SRC, FONT_FACE_NAME, FEGAUSSIANBLUR, FEDISTANTLIGHT, LINEARGRADIENT, NATURALNUMBERS, RADIALGRADIENT, ANIMATETRANSFORM, CARTESIANPRODUCT, FONT_FACE_FORMAT, FECONVOLVEMATRIX, FEDIFFUSELIGHTING, FEDISPLACEMENTMAP, FESPECULARLIGHTING, DOMAINOFAPPLICATION, FECOMPONENTTRANSFER, }; private final static int[] ELEMENT_HASHES = { 1057, 1090, 1255, 1321, 1552, 1585, 1651, 1717, 68162, 68899, 69059, 69764, 70020, 70276, 71077, 71205, 72134, 72232, 72264, 72296, 72328, 72360, 72392, 73351, 74312, 75209, 78124, 78284, 78476, 79149, 79309, 79341, 79469, 81295, 81487, 82224, 84050, 84498, 84626, 86164, 86292, 86612, 86676, 87445, 3183041, 3186241, 3198017, 3218722, 3226754, 3247715, 3256803, 3263971, 3264995, 3289252, 3291332, 3295524, 3299620, 3326725, 3379303, 3392679, 3448233, 3460553, 3461577, 3510347, 3546604, 3552364, 3556524, 3576461, 3586349, 3588141, 3590797, 3596333, 3622062, 3625454, 3627054, 3675728, 3739282, 3749042, 3771059, 3771571, 3776211, 3782323, 3782963, 3784883, 3785395, 3788979, 3815476, 3839605, 3885110, 3917911, 3948984, 3951096, 135304769, 135858241, 136498210, 136906434, 137138658, 137512995, 137531875, 137548067, 137629283, 137645539, 137646563, 137775779, 138529956, 138615076, 139040932, 140954086, 141179366, 141690439, 142738600, 143013512, 146979116, 147175724, 147475756, 147902637, 147936877, 148017645, 148131885, 148228141, 148229165, 148309165, 148317229, 148395629, 148551853, 148618829, 149076462, 149490158, 149572782, 151277616, 151639440, 153268914, 153486514, 153563314, 153750706, 153763314, 153914034, 154406067, 154417459, 154600979, 154678323, 154680979, 154866835, 155366708, 155375188, 155391572, 155465780, 155869364, 158045494, 168988979, 169321621, 169652752, 173151309, 174240818, 174247297, 174669292, 175391532, 176638123, 177380397, 177879204, 177886734, 180753473, 181020073, 181503558, 181686320, 181999237, 181999311, 182048201, 182074866, 182078003, 182083764, 182920847, 184716457, 184976961, 185145071, 187281445, 187872052, 188100653, 188875944, 188919873, 188920457, 189107250, 189203987, 189371817, 189414886, 189567458, 190266670, 191318187, 191337609, 202479203, 202493027, 202835587, 202843747, 203013219, 203036048, 203045987, 203177552, 203898516, 204648562, 205067918, 205078130, 205096654, 205689142, 205690439, 205988909, 207213161, 207794484, 207800999, 208023602, 208213644, 208213647, 210261490, 210310273, 210940978, 213325049, 213946445, 214055079, 215125040, 215134273, 215135028, 215237420, 215418148, 215553166, 215553394, 215563858, 215627949, 215754324, 217529652, 217713834, 217732628, 218731945, 221417045, 221424946, 221493746, 221515401, 221658189, 221908140, 221910626, 221921586, 222659762, 225001091, 236105833, 236113965, 236194995, 236195427, 236206132, 236206387, 236211683, 236212707, 236381647, 236571826, 237124271, 238210544, 238270764, 238435405, 238501172, 239224867, 239257644, 239710497, 240307721, 241208789, 241241557, 241318060, 241319404, 241343533, 241344069, 241405397, 241765845, 243864964, 244502085, 244946220, 245109902, 247647266, 247707956, 248648814, 248648836, 248682161, 248986932, 249058914, 249697357, 252132601, 252135604, 251841204, 252317348, 255007012, 255278388, 255641645, 256365156, 257566121, 269763372, 271202790, 271863856, 272049197, 272127474, 274339449, 274939471, 275388004, 275388005, 275388006, 275977800, 278267602, 278513831, 278712622, 281613765, 281683369, 282120228, 282250732, 282498697, 282508942, 283743649, 283787570, 284710386, 285391148, 285478533, 285854898, 285873762, 286931113, 288964227, 289445441, 289591340, 289689648, 291671489, 303512884, 305319975, 305610036, 305764101, 308448294, 308675890, 312085683, 312264750, 315032867, 316391000, 317331042, 317902135, 318950711, 319447220, 321499182, 322538804, 323145200, 337067316, 337826293, 339905989, 340833697, 341457068, 342310196, 345302593, 349554733, 349771471, 349786245, 350819405, 356072847, 370349192, 373962798, 375558638, 375574835, 376053993, 383276530, 383373833, 383407586, 384439906, 386079012, 404133513, 404307343, 407031852, 408072233, 409112005, 409608425, 409713793, 409771500, 419040932, 437730612, 439529766, 442616365, 442813037, 443157674, 443295316, 450118444, 450482697, 456789668, 459935396, 471217869, 474073645, 476230702, 476665218, 476717289, 483014825, 485083298, 489306281, 538364390, 540675748, 543819186, 543958612, 576960820, 577242548, 610515252, 642202932, 644420819, }; }