{"version":3,"file":"builder.P8OhRle_.js","sources":["../../../../../../../../packages/common/src/embedded-link/enums.ts","../../../../../../../../node_modules/.pnpm/@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/conventions.js","../../../../../../../../node_modules/.pnpm/@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/dom.js","../../../../../../../../node_modules/.pnpm/@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/entities.js","../../../../../../../../node_modules/.pnpm/@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/sax.js","../../../../../../../../node_modules/.pnpm/@xmldom+xmldom@0.8.10/node_modules/@xmldom/xmldom/lib/dom-parser.js","../../../../../../../../node_modules/.pnpm/xpath@0.0.34/node_modules/xpath/xpath.js","../../../../../../../../packages/common/src/constants/builder.ts"],"sourcesContent":["export enum LinkTarget {\n\tBLANK = '_blank',\n\tSELF = '_self',\n\tMODAL = 'modal',\n}\n","'use strict'\n\n/**\n * Ponyfill for `Array.prototype.find` which is only available in ES6 runtimes.\n *\n * Works with anything that has a `length` property and index access properties, including NodeList.\n *\n * @template {unknown} T\n * @param {Array<T> | ({length:number, [number]: T})} list\n * @param {function (item: T, index: number, list:Array<T> | ({length:number, [number]: T})):boolean} predicate\n * @param {Partial<Pick<ArrayConstructor['prototype'], 'find'>>?} ac `Array.prototype` by default,\n * \t\t\t\tallows injecting a custom implementation in tests\n * @returns {T | undefined}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n * @see https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.find\n */\nfunction find(list, predicate, ac) {\n\tif (ac === undefined) {\n\t\tac = Array.prototype;\n\t}\n\tif (list && typeof ac.find === 'function') {\n\t\treturn ac.find.call(list, predicate);\n\t}\n\tfor (var i = 0; i < list.length; i++) {\n\t\tif (Object.prototype.hasOwnProperty.call(list, i)) {\n\t\t\tvar item = list[i];\n\t\t\tif (predicate.call(undefined, item, i, list)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * \"Shallow freezes\" an object to render it immutable.\n * Uses `Object.freeze` if available,\n * otherwise the immutability is only in the type.\n *\n * Is used to create \"enum like\" objects.\n *\n * @template T\n * @param {T} object the object to freeze\n * @param {Pick<ObjectConstructor, 'freeze'> = Object} oc `Object` by default,\n * \t\t\t\tallows to inject custom object constructor for tests\n * @returns {Readonly<T>}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n */\nfunction freeze(object, oc) {\n\tif (oc === undefined) {\n\t\toc = Object\n\t}\n\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object\n}\n\n/**\n * Since we can not rely on `Object.assign` we provide a simplified version\n * that is sufficient for our needs.\n *\n * @param {Object} target\n * @param {Object | null | undefined} source\n *\n * @returns {Object} target\n * @throws TypeError if target is not an object\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n * @see https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.assign\n */\nfunction assign(target, source) {\n\tif (target === null || typeof target !== 'object') {\n\t\tthrow new TypeError('target is not an object')\n\t}\n\tfor (var key in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\t\ttarget[key] = source[key]\n\t\t}\n\t}\n\treturn target\n}\n\n/**\n * All mime types that are allowed as input to `DOMParser.parseFromString`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec\n * @see DOMParser.prototype.parseFromString\n */\nvar MIME_TYPE = freeze({\n\t/**\n\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\n\t *\n\t * @see DOMParser.SupportedType.isHTML\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec\n\t */\n\tHTML: 'text/html',\n\n\t/**\n\t * Helper method to check a mime type if it indicates an HTML document\n\t *\n\t * @param {string} [value]\n\t * @returns {boolean}\n\t *\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring \t */\n\tisHTML: function (value) {\n\t\treturn value === MIME_TYPE.HTML\n\t},\n\n\t/**\n\t * `application/xml`, the standard mime type for XML documents.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_APPLICATION: 'application/xml',\n\n\t/**\n\t * `text/html`, an alias for `application/xml`.\n\t *\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\n\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_TEXT: 'text/xml',\n\n\t/**\n\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\n\t * but is parsed as an XML document.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\n\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\n\t */\n\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\n\n\t/**\n\t * `image/svg+xml`,\n\t *\n\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\n\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\n\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\n\t */\n\tXML_SVG_IMAGE: 'image/svg+xml',\n})\n\n/**\n * Namespaces that are used in this code base.\n *\n * @see http://www.w3.org/TR/REC-xml-names\n */\nvar NAMESPACE = freeze({\n\t/**\n\t * The XHTML namespace.\n\t *\n\t * @see http://www.w3.org/1999/xhtml\n\t */\n\tHTML: 'http://www.w3.org/1999/xhtml',\n\n\t/**\n\t * Checks if `uri` equals `NAMESPACE.HTML`.\n\t *\n\t * @param {string} [uri]\n\t *\n\t * @see NAMESPACE.HTML\n\t */\n\tisHTML: function (uri) {\n\t\treturn uri === NAMESPACE.HTML\n\t},\n\n\t/**\n\t * The SVG namespace.\n\t *\n\t * @see http://www.w3.org/2000/svg\n\t */\n\tSVG: 'http://www.w3.org/2000/svg',\n\n\t/**\n\t * The `xml:` namespace.\n\t *\n\t * @see http://www.w3.org/XML/1998/namespace\n\t */\n\tXML: 'http://www.w3.org/XML/1998/namespace',\n\n\t/**\n\t * The `xmlns:` namespace\n\t *\n\t * @see https://www.w3.org/2000/xmlns/\n\t */\n\tXMLNS: 'http://www.w3.org/2000/xmlns/',\n})\n\nexports.assign = assign;\nexports.find = find;\nexports.freeze = freeze;\nexports.MIME_TYPE = MIME_TYPE;\nexports.NAMESPACE = NAMESPACE;\n","var conventions = require(\"./conventions\");\n\nvar find = conventions.find;\nvar NAMESPACE = conventions.NAMESPACE;\n\n/**\n * A prerequisite for `[].filter`, to drop elements that are empty\n * @param {string} input\n * @returns {boolean}\n */\nfunction notEmptyString (input) {\n\treturn input !== ''\n}\n/**\n * @see https://infra.spec.whatwg.org/#split-on-ascii-whitespace\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * @param {string} input\n * @returns {string[]} (can be empty)\n */\nfunction splitOnASCIIWhitespace(input) {\n\t// U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, U+0020 SPACE\n\treturn input ? input.split(/[\\t\\n\\f\\r ]+/).filter(notEmptyString) : []\n}\n\n/**\n * Adds element as a key to current if it is not already present.\n *\n * @param {Record<string, boolean | undefined>} current\n * @param {string} element\n * @returns {Record<string, boolean | undefined>}\n */\nfunction orderedSetReducer (current, element) {\n\tif (!current.hasOwnProperty(element)) {\n\t\tcurrent[element] = true;\n\t}\n\treturn current;\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ordered-set\n * @param {string} input\n * @returns {string[]}\n */\nfunction toOrderedSet(input) {\n\tif (!input) return [];\n\tvar list = splitOnASCIIWhitespace(input);\n\treturn Object.keys(list.reduce(orderedSetReducer, {}))\n}\n\n/**\n * Uses `list.indexOf` to implement something like `Array.prototype.includes`,\n * which we can not rely on being available.\n *\n * @param {any[]} list\n * @returns {function(any): boolean}\n */\nfunction arrayIncludes (list) {\n\treturn function(element) {\n\t\treturn list && list.indexOf(element) !== -1;\n\t}\n}\n\nfunction copy(src,dest){\n\tfor(var p in src){\n\t\tif (Object.prototype.hasOwnProperty.call(src, p)) {\n\t\t\tdest[p] = src[p];\n\t\t}\n\t}\n}\n\n/**\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*((?:.*\\{\\s*?[\\r\\n][\\s\\S]*?^})|\\S.*?(?=[;\\r\\n]));?\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*(\\S.*?(?=[;\\r\\n]));?\n */\nfunction _extends(Class,Super){\n\tvar pt = Class.prototype;\n\tif(!(pt instanceof Super)){\n\t\tfunction t(){};\n\t\tt.prototype = Super.prototype;\n\t\tt = new t();\n\t\tcopy(pt,t);\n\t\tClass.prototype = pt = t;\n\t}\n\tif(pt.constructor != Class){\n\t\tif(typeof Class != 'function'){\n\t\t\tconsole.error(\"unknown Class:\"+Class)\n\t\t}\n\t\tpt.constructor = Class\n\t}\n}\n\n// Node Types\nvar NodeType = {}\nvar ELEMENT_NODE = NodeType.ELEMENT_NODE = 1;\nvar ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2;\nvar TEXT_NODE = NodeType.TEXT_NODE = 3;\nvar CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4;\nvar ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5;\nvar ENTITY_NODE = NodeType.ENTITY_NODE = 6;\nvar PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;\nvar COMMENT_NODE = NodeType.COMMENT_NODE = 8;\nvar DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9;\nvar DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10;\nvar DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11;\nvar NOTATION_NODE = NodeType.NOTATION_NODE = 12;\n\n// ExceptionCode\nvar ExceptionCode = {}\nvar ExceptionMessage = {};\nvar INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]=\"Index size error\"),1);\nvar DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]=\"DOMString size error\"),2);\nvar HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]=\"Hierarchy request error\"),3);\nvar WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]=\"Wrong document\"),4);\nvar INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]=\"Invalid character\"),5);\nvar NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]=\"No data allowed\"),6);\nvar NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]=\"No modification allowed\"),7);\nvar NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]=\"Not found\"),8);\nvar NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]=\"Not supported\"),9);\nvar INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]=\"Attribute in use\"),10);\n//level2\nvar INVALID_STATE_ERR \t= ExceptionCode.INVALID_STATE_ERR \t= ((ExceptionMessage[11]=\"Invalid state\"),11);\nvar SYNTAX_ERR \t= ExceptionCode.SYNTAX_ERR \t= ((ExceptionMessage[12]=\"Syntax error\"),12);\nvar INVALID_MODIFICATION_ERR \t= ExceptionCode.INVALID_MODIFICATION_ERR \t= ((ExceptionMessage[13]=\"Invalid modification\"),13);\nvar NAMESPACE_ERR \t= ExceptionCode.NAMESPACE_ERR \t= ((ExceptionMessage[14]=\"Invalid namespace\"),14);\nvar INVALID_ACCESS_ERR \t= ExceptionCode.INVALID_ACCESS_ERR \t= ((ExceptionMessage[15]=\"Invalid access\"),15);\n\n/**\n * DOM Level 2\n * Object DOMException\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html\n * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html\n */\nfunction DOMException(code, message) {\n\tif(message instanceof Error){\n\t\tvar error = message;\n\t}else{\n\t\terror = this;\n\t\tError.call(this, ExceptionMessage[code]);\n\t\tthis.message = ExceptionMessage[code];\n\t\tif(Error.captureStackTrace) Error.captureStackTrace(this, DOMException);\n\t}\n\terror.code = code;\n\tif(message) this.message = this.message + \": \" + message;\n\treturn error;\n};\nDOMException.prototype = Error.prototype;\ncopy(ExceptionCode,DOMException)\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177\n * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live.\n * The items in the NodeList are accessible via an integral index, starting from 0.\n */\nfunction NodeList() {\n};\nNodeList.prototype = {\n\t/**\n\t * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive.\n\t * @standard level1\n\t */\n\tlength:0,\n\t/**\n\t * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.\n\t * @standard level1\n\t * @param index unsigned long\n\t * Index into the collection.\n\t * @return Node\n\t * \tThe node at the indexth position in the NodeList, or null if that is not a valid index.\n\t */\n\titem: function(index) {\n\t\treturn index >= 0 && index < this.length ? this[index] : null;\n\t},\n\ttoString:function(isHTML,nodeFilter){\n\t\tfor(var buf = [], i = 0;i<this.length;i++){\n\t\t\tserializeToString(this[i],buf,isHTML,nodeFilter);\n\t\t}\n\t\treturn buf.join('');\n\t},\n\t/**\n\t * @private\n\t * @param {function (Node):boolean} predicate\n\t * @returns {Node[]}\n\t */\n\tfilter: function (predicate) {\n\t\treturn Array.prototype.filter.call(this, predicate);\n\t},\n\t/**\n\t * @private\n\t * @param {Node} item\n\t * @returns {number}\n\t */\n\tindexOf: function (item) {\n\t\treturn Array.prototype.indexOf.call(this, item);\n\t},\n};\n\nfunction LiveNodeList(node,refresh){\n\tthis._node = node;\n\tthis._refresh = refresh\n\t_updateLiveList(this);\n}\nfunction _updateLiveList(list){\n\tvar inc = list._node._inc || list._node.ownerDocument._inc;\n\tif (list._inc !== inc) {\n\t\tvar ls = list._refresh(list._node);\n\t\t__set__(list,'length',ls.length);\n\t\tif (!list.$$length || ls.length < list.$$length) {\n\t\t\tfor (var i = ls.length; i in list; i++) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(list, i)) {\n\t\t\t\t\tdelete list[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcopy(ls,list);\n\t\tlist._inc = inc;\n\t}\n}\nLiveNodeList.prototype.item = function(i){\n\t_updateLiveList(this);\n\treturn this[i] || null;\n}\n\n_extends(LiveNodeList,NodeList);\n\n/**\n * Objects implementing the NamedNodeMap interface are used\n * to represent collections of nodes that can be accessed by name.\n * Note that NamedNodeMap does not inherit from NodeList;\n * NamedNodeMaps are not maintained in any particular order.\n * Objects contained in an object implementing NamedNodeMap may also be accessed by an ordinal index,\n * but this is simply to allow convenient enumeration of the contents of a NamedNodeMap,\n * and does not imply that the DOM specifies an order to these Nodes.\n * NamedNodeMap objects in the DOM are live.\n * used for attributes or DocumentType entities\n */\nfunction NamedNodeMap() {\n};\n\nfunction _findNodeIndex(list,node){\n\tvar i = list.length;\n\twhile(i--){\n\t\tif(list[i] === node){return i}\n\t}\n}\n\nfunction _addNamedNode(el,list,newAttr,oldAttr){\n\tif(oldAttr){\n\t\tlist[_findNodeIndex(list,oldAttr)] = newAttr;\n\t}else{\n\t\tlist[list.length++] = newAttr;\n\t}\n\tif(el){\n\t\tnewAttr.ownerElement = el;\n\t\tvar doc = el.ownerDocument;\n\t\tif(doc){\n\t\t\toldAttr && _onRemoveAttribute(doc,el,oldAttr);\n\t\t\t_onAddAttribute(doc,el,newAttr);\n\t\t}\n\t}\n}\nfunction _removeNamedNode(el,list,attr){\n\t//console.log('remove attr:'+attr)\n\tvar i = _findNodeIndex(list,attr);\n\tif(i>=0){\n\t\tvar lastIndex = list.length-1\n\t\twhile(i<lastIndex){\n\t\t\tlist[i] = list[++i]\n\t\t}\n\t\tlist.length = lastIndex;\n\t\tif(el){\n\t\t\tvar doc = el.ownerDocument;\n\t\t\tif(doc){\n\t\t\t\t_onRemoveAttribute(doc,el,attr);\n\t\t\t\tattr.ownerElement = null;\n\t\t\t}\n\t\t}\n\t}else{\n\t\tthrow new DOMException(NOT_FOUND_ERR,new Error(el.tagName+'@'+attr))\n\t}\n}\nNamedNodeMap.prototype = {\n\tlength:0,\n\titem:NodeList.prototype.item,\n\tgetNamedItem: function(key) {\n//\t\tif(key.indexOf(':')>0 || key == 'xmlns'){\n//\t\t\treturn null;\n//\t\t}\n\t\t//console.log()\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar attr = this[i];\n\t\t\t//console.log(attr.nodeName,key)\n\t\t\tif(attr.nodeName == key){\n\t\t\t\treturn attr;\n\t\t\t}\n\t\t}\n\t},\n\tsetNamedItem: function(attr) {\n\t\tvar el = attr.ownerElement;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\tvar oldAttr = this.getNamedItem(attr.nodeName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\t/* returns Node */\n\tsetNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR\n\t\tvar el = attr.ownerElement, oldAttr;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\toldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\n\t/* returns Node */\n\tremoveNamedItem: function(key) {\n\t\tvar attr = this.getNamedItem(key);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\n\n\t},// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR\n\n\t//for level2\n\tremoveNamedItemNS:function(namespaceURI,localName){\n\t\tvar attr = this.getNamedItemNS(namespaceURI,localName);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\t},\n\tgetNamedItemNS: function(namespaceURI, localName) {\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar node = this[i];\n\t\t\tif(node.localName == localName && node.namespaceURI == namespaceURI){\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n};\n\n/**\n * The DOMImplementation interface represents an object providing methods\n * which are not dependent on any particular document.\n * Such an object is returned by the `Document.implementation` property.\n *\n * __The individual methods describe the differences compared to the specs.__\n *\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation MDN\n * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 DOM Level 1 Core (Initial)\n * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-102161490 DOM Level 2 Core\n * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-102161490 DOM Level 3 Core\n * @see https://dom.spec.whatwg.org/#domimplementation DOM Living Standard\n */\nfunction DOMImplementation() {\n}\n\nDOMImplementation.prototype = {\n\t/**\n\t * The DOMImplementation.hasFeature() method returns a Boolean flag indicating if a given feature is supported.\n\t * The different implementations fairly diverged in what kind of features were reported.\n\t * The latest version of the spec settled to force this method to always return true, where the functionality was accurate and in use.\n\t *\n\t * @deprecated It is deprecated and modern browsers return true in all cases.\n\t *\n\t * @param {string} feature\n\t * @param {string} [version]\n\t * @returns {boolean} always true\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature MDN\n\t * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-5CED94D7 DOM Level 1 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature DOM Living Standard\n\t */\n\thasFeature: function(feature, version) {\n\t\t\treturn true;\n\t},\n\t/**\n\t * Creates an XML Document object of the specified type with its document element.\n\t *\n\t * __It behaves slightly different from the description in the living standard__:\n\t * - There is no interface/class `XMLDocument`, it returns a `Document` instance.\n\t * - `contentType`, `encoding`, `mode`, `origin`, `url` fields are currently not declared.\n\t * - this implementation is not validating names or qualified names\n\t * (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string|null} namespaceURI\n\t * @param {string} qualifiedName\n\t * @param {DocumentType=null} doctype\n\t * @returns {Document}\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocument MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocument DOM Level 2 Core (initial)\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument DOM Level 2 Core\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocument: function(namespaceURI, qualifiedName, doctype){\n\t\tvar doc = new Document();\n\t\tdoc.implementation = this;\n\t\tdoc.childNodes = new NodeList();\n\t\tdoc.doctype = doctype || null;\n\t\tif (doctype){\n\t\t\tdoc.appendChild(doctype);\n\t\t}\n\t\tif (qualifiedName){\n\t\t\tvar root = doc.createElementNS(namespaceURI, qualifiedName);\n\t\t\tdoc.appendChild(root);\n\t\t}\n\t\treturn doc;\n\t},\n\t/**\n\t * Returns a doctype, with the given `qualifiedName`, `publicId`, and `systemId`.\n\t *\n\t * __This behavior is slightly different from the in the specs__:\n\t * - this implementation is not validating names or qualified names\n\t * (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string} qualifiedName\n\t * @param {string} [publicId]\n\t * @param {string} [systemId]\n\t * @returns {DocumentType} which can either be used with `DOMImplementation.createDocument` upon document creation\n\t * \t\t\t\t or can be put into the document via methods like `Node.insertBefore()` or `Node.replaceChild()`\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocumentType MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocType DOM Level 2 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype DOM Living Standard\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocumentType: function(qualifiedName, publicId, systemId){\n\t\tvar node = new DocumentType();\n\t\tnode.name = qualifiedName;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.publicId = publicId || '';\n\t\tnode.systemId = systemId || '';\n\n\t\treturn node;\n\t}\n};\n\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247\n */\n\nfunction Node() {\n};\n\nNode.prototype = {\n\tfirstChild : null,\n\tlastChild : null,\n\tpreviousSibling : null,\n\tnextSibling : null,\n\tattributes : null,\n\tparentNode : null,\n\tchildNodes : null,\n\townerDocument : null,\n\tnodeValue : null,\n\tnamespaceURI : null,\n\tprefix : null,\n\tlocalName : null,\n\t// Modified in DOM Level 2:\n\tinsertBefore:function(newChild, refChild){//raises\n\t\treturn _insertBefore(this,newChild,refChild);\n\t},\n\treplaceChild:function(newChild, oldChild){//raises\n\t\t_insertBefore(this, newChild,oldChild, assertPreReplacementValidityInDocument);\n\t\tif(oldChild){\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t},\n\tremoveChild:function(oldChild){\n\t\treturn _removeChild(this,oldChild);\n\t},\n\tappendChild:function(newChild){\n\t\treturn this.insertBefore(newChild,null);\n\t},\n\thasChildNodes:function(){\n\t\treturn this.firstChild != null;\n\t},\n\tcloneNode:function(deep){\n\t\treturn cloneNode(this.ownerDocument||this,this,deep);\n\t},\n\t// Modified in DOM Level 2:\n\tnormalize:function(){\n\t\tvar child = this.firstChild;\n\t\twhile(child){\n\t\t\tvar next = child.nextSibling;\n\t\t\tif(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){\n\t\t\t\tthis.removeChild(next);\n\t\t\t\tchild.appendData(next.data);\n\t\t\t}else{\n\t\t\t\tchild.normalize();\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t}\n\t},\n \t// Introduced in DOM Level 2:\n\tisSupported:function(feature, version){\n\t\treturn this.ownerDocument.implementation.hasFeature(feature,version);\n\t},\n // Introduced in DOM Level 2:\n hasAttributes:function(){\n \treturn this.attributes.length>0;\n },\n\t/**\n\t * Look up the prefix associated to the given namespace URI, starting from this node.\n\t * **The default namespace declarations are ignored by this method.**\n\t * See Namespace Prefix Lookup for details on the algorithm used by this method.\n\t *\n\t * _Note: The implementation seems to be incomplete when compared to the algorithm described in the specs._\n\t *\n\t * @param {string | null} namespaceURI\n\t * @returns {string | null}\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespacePrefix\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/namespaces-algorithms.html#lookupNamespacePrefixAlgo\n\t * @see https://dom.spec.whatwg.org/#dom-node-lookupprefix\n\t * @see https://github.com/xmldom/xmldom/issues/322\n\t */\n lookupPrefix:function(namespaceURI){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tfor(var n in map){\n\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(map, n) && map[n] === namespaceURI) {\n\t\t\t\t\t\t\treturn n;\n\t\t\t\t\t\t}\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n lookupNamespaceURI:function(prefix){\n \tvar el = this;\n \twhile(el){\n \t\tvar map = el._nsMap;\n \t\t//console.dir(map)\n \t\tif(map){\n \t\t\tif(Object.prototype.hasOwnProperty.call(map, prefix)){\n \t\t\t\treturn map[prefix] ;\n \t\t\t}\n \t\t}\n \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n \t}\n \treturn null;\n },\n // Introduced in DOM Level 3:\n isDefaultNamespace:function(namespaceURI){\n \tvar prefix = this.lookupPrefix(namespaceURI);\n \treturn prefix == null;\n }\n};\n\n\nfunction _xmlEncoder(c){\n\treturn c == '<' && '<' ||\n c == '>' && '>' ||\n c == '&' && '&' ||\n c == '\"' && '"' ||\n '&#'+c.charCodeAt()+';'\n}\n\n\ncopy(NodeType,Node);\ncopy(NodeType,Node.prototype);\n\n/**\n * @param callback return true for continue,false for break\n * @return boolean true: break visit;\n */\nfunction _visitNode(node,callback){\n\tif(callback(node)){\n\t\treturn true;\n\t}\n\tif(node = node.firstChild){\n\t\tdo{\n\t\t\tif(_visitNode(node,callback)){return true}\n }while(node=node.nextSibling)\n }\n}\n\n\n\nfunction Document(){\n\tthis.ownerDocument = this;\n}\n\nfunction _onAddAttribute(doc,el,newAttr){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tel._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value\n\t}\n}\n\nfunction _onRemoveAttribute(doc,el,newAttr,remove){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tdelete el._nsMap[newAttr.prefix?newAttr.localName:'']\n\t}\n}\n\n/**\n * Updates `el.childNodes`, updating the indexed items and it's `length`.\n * Passing `newChild` means it will be appended.\n * Otherwise it's assumed that an item has been removed,\n * and `el.firstNode` and it's `.nextSibling` are used\n * to walk the current list of child nodes.\n *\n * @param {Document} doc\n * @param {Node} el\n * @param {Node} [newChild]\n * @private\n */\nfunction _onUpdateChild (doc, el, newChild) {\n\tif(doc && doc._inc){\n\t\tdoc._inc++;\n\t\t//update childNodes\n\t\tvar cs = el.childNodes;\n\t\tif (newChild) {\n\t\t\tcs[cs.length++] = newChild;\n\t\t} else {\n\t\t\tvar child = el.firstChild;\n\t\t\tvar i = 0;\n\t\t\twhile (child) {\n\t\t\t\tcs[i++] = child;\n\t\t\t\tchild = child.nextSibling;\n\t\t\t}\n\t\t\tcs.length = i;\n\t\t\tdelete cs[cs.length];\n\t\t}\n\t}\n}\n\n/**\n * Removes the connections between `parentNode` and `child`\n * and any existing `child.previousSibling` or `child.nextSibling`.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n *\n * @param {Node} parentNode\n * @param {Node} child\n * @returns {Node} the child that was removed.\n * @private\n */\nfunction _removeChild (parentNode, child) {\n\tvar previous = child.previousSibling;\n\tvar next = child.nextSibling;\n\tif (previous) {\n\t\tprevious.nextSibling = next;\n\t} else {\n\t\tparentNode.firstChild = next;\n\t}\n\tif (next) {\n\t\tnext.previousSibling = previous;\n\t} else {\n\t\tparentNode.lastChild = previous;\n\t}\n\tchild.parentNode = null;\n\tchild.previousSibling = null;\n\tchild.nextSibling = null;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode);\n\treturn child;\n}\n\n/**\n * Returns `true` if `node` can be a parent for insertion.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasValidParentNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(node.nodeType === Node.DOCUMENT_NODE || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE || node.nodeType === Node.ELEMENT_NODE)\n\t);\n}\n\n/**\n * Returns `true` if `node` can be inserted according to it's `nodeType`.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasInsertableNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(isElementNode(node) ||\n\t\t\tisTextNode(node) ||\n\t\t\tisDocTypeNode(node) ||\n\t\t\tnode.nodeType === Node.DOCUMENT_FRAGMENT_NODE ||\n\t\t\tnode.nodeType === Node.COMMENT_NODE ||\n\t\t\tnode.nodeType === Node.PROCESSING_INSTRUCTION_NODE)\n\t);\n}\n\n/**\n * Returns true if `node` is a DOCTYPE node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isDocTypeNode(node) {\n\treturn node && node.nodeType === Node.DOCUMENT_TYPE_NODE;\n}\n\n/**\n * Returns true if the node is an element\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isElementNode(node) {\n\treturn node && node.nodeType === Node.ELEMENT_NODE;\n}\n/**\n * Returns true if `node` is a text node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isTextNode(node) {\n\treturn node && node.nodeType === Node.TEXT_NODE;\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Document} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementInsertionPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\tif (find(parentChildNodes, isElementNode) || isDocTypeNode(child)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Node} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementReplacementPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\n\tfunction hasElementChildThatIsNotChild(node) {\n\t\treturn isElementNode(node) && node !== child;\n\t}\n\n\tif (find(parentChildNodes, hasElementChildThatIsNotChild)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * @private\n * Steps 1-5 of the checks before inserting and before replacing a child are the same.\n *\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidity1to5(parent, node, child) {\n\t// 1. If `parent` is not a Document, DocumentFragment, or Element node, then throw a \"HierarchyRequestError\" DOMException.\n\tif (!hasValidParentNodeType(parent)) {\n\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Unexpected parent node type ' + parent.nodeType);\n\t}\n\t// 2. If `node` is a host-including inclusive ancestor of `parent`, then throw a \"HierarchyRequestError\" DOMException.\n\t// not implemented!\n\t// 3. If `child` is non-null and its parent is not `parent`, then throw a \"NotFoundError\" DOMException.\n\tif (child && child.parentNode !== parent) {\n\t\tthrow new DOMException(NOT_FOUND_ERR, 'child not in parent');\n\t}\n\tif (\n\t\t// 4. If `node` is not a DocumentFragment, DocumentType, Element, or CharacterData node, then throw a \"HierarchyRequestError\" DOMException.\n\t\t!hasInsertableNodeType(node) ||\n\t\t// 5. If either `node` is a Text node and `parent` is a document,\n\t\t// the sax parser currently adds top level text nodes, this will be fixed in 0.9.0\n\t\t// || (node.nodeType === Node.TEXT_NODE && parent.nodeType === Node.DOCUMENT_NODE)\n\t\t// or `node` is a doctype and `parent` is not a document, then throw a \"HierarchyRequestError\" DOMException.\n\t\t(isDocTypeNode(node) && parent.nodeType !== Node.DOCUMENT_NODE)\n\t) {\n\t\tthrow new DOMException(\n\t\t\tHIERARCHY_REQUEST_ERR,\n\t\t\t'Unexpected node type ' + node.nodeType + ' for parent node type ' + parent.nodeType\n\t\t);\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If node has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child,\n\t\t// `child` is a doctype, or `child` is non-null and a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child, `child` is a doctype,\n\t\t// or `child` is non-null and a doctype is following `child`.\n\t\tif (!isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\t// `parent` has a doctype child,\n\t\tif (find(parentChildNodes, isDocTypeNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// `child` is non-null and an element is preceding `child`,\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t\t// or `child` is null and `parent` has an element child.\n\t\tif (!child && parentElementChild) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can not be appended since element is present');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreReplacementValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If `node` has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (!isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\tfunction hasDoctypeChildThatIsNotChild(node) {\n\t\t\treturn isDocTypeNode(node) && node !== child;\n\t\t}\n\n\t\t// `parent` has a doctype child that is not `child`,\n\t\tif (find(parentChildNodes, hasDoctypeChildThatIsNotChild)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// or an element is preceding `child`.\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction _insertBefore(parent, node, child, _inDocumentAssertion) {\n\t// To ensure pre-insertion validity of a node into a parent before a child, run these steps:\n\tassertPreInsertionValidity1to5(parent, node, child);\n\n\t// If parent is a document, and any of the statements below, switched on the interface node implements,\n\t// are true, then throw a \"HierarchyRequestError\" DOMException.\n\tif (parent.nodeType === Node.DOCUMENT_NODE) {\n\t\t(_inDocumentAssertion || assertPreInsertionValidityInDocument)(parent, node, child);\n\t}\n\n\tvar cp = node.parentNode;\n\tif(cp){\n\t\tcp.removeChild(node);//remove and update\n\t}\n\tif(node.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\tvar newFirst = node.firstChild;\n\t\tif (newFirst == null) {\n\t\t\treturn node;\n\t\t}\n\t\tvar newLast = node.lastChild;\n\t}else{\n\t\tnewFirst = newLast = node;\n\t}\n\tvar pre = child ? child.previousSibling : parent.lastChild;\n\n\tnewFirst.previousSibling = pre;\n\tnewLast.nextSibling = child;\n\n\n\tif(pre){\n\t\tpre.nextSibling = newFirst;\n\t}else{\n\t\tparent.firstChild = newFirst;\n\t}\n\tif(child == null){\n\t\tparent.lastChild = newLast;\n\t}else{\n\t\tchild.previousSibling = newLast;\n\t}\n\tdo{\n\t\tnewFirst.parentNode = parent;\n\t}while(newFirst !== newLast && (newFirst= newFirst.nextSibling))\n\t_onUpdateChild(parent.ownerDocument||parent, parent);\n\t//console.log(parent.lastChild.nextSibling == null)\n\tif (node.nodeType == DOCUMENT_FRAGMENT_NODE) {\n\t\tnode.firstChild = node.lastChild = null;\n\t}\n\treturn node;\n}\n\n/**\n * Appends `newChild` to `parentNode`.\n * If `newChild` is already connected to a `parentNode` it is first removed from it.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n * @param {Node} parentNode\n * @param {Node} newChild\n * @returns {Node}\n * @private\n */\nfunction _appendSingleChild (parentNode, newChild) {\n\tif (newChild.parentNode) {\n\t\tnewChild.parentNode.removeChild(newChild);\n\t}\n\tnewChild.parentNode = parentNode;\n\tnewChild.previousSibling = parentNode.lastChild;\n\tnewChild.nextSibling = null;\n\tif (newChild.previousSibling) {\n\t\tnewChild.previousSibling.nextSibling = newChild;\n\t} else {\n\t\tparentNode.firstChild = newChild;\n\t}\n\tparentNode.lastChild = newChild;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode, newChild);\n\treturn newChild;\n}\n\nDocument.prototype = {\n\t//implementation : null,\n\tnodeName : '#document',\n\tnodeType : DOCUMENT_NODE,\n\t/**\n\t * The DocumentType node of the document.\n\t *\n\t * @readonly\n\t * @type DocumentType\n\t */\n\tdoctype : null,\n\tdocumentElement : null,\n\t_inc : 1,\n\n\tinsertBefore : function(newChild, refChild){//raises\n\t\tif(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){\n\t\t\tvar child = newChild.firstChild;\n\t\t\twhile(child){\n\t\t\t\tvar next = child.nextSibling;\n\t\t\t\tthis.insertBefore(child,refChild);\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t\treturn newChild;\n\t\t}\n\t\t_insertBefore(this, newChild, refChild);\n\t\tnewChild.ownerDocument = this;\n\t\tif (this.documentElement === null && newChild.nodeType === ELEMENT_NODE) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\n\t\treturn newChild;\n\t},\n\tremoveChild : function(oldChild){\n\t\tif(this.documentElement == oldChild){\n\t\t\tthis.documentElement = null;\n\t\t}\n\t\treturn _removeChild(this,oldChild);\n\t},\n\treplaceChild: function (newChild, oldChild) {\n\t\t//raises\n\t\t_insertBefore(this, newChild, oldChild, assertPreReplacementValidityInDocument);\n\t\tnewChild.ownerDocument = this;\n\t\tif (oldChild) {\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t\tif (isElementNode(newChild)) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\t},\n\t// Introduced in DOM Level 2:\n\timportNode : function(importedNode,deep){\n\t\treturn importNode(this,importedNode,deep);\n\t},\n\t// Introduced in DOM Level 2:\n\tgetElementById :\tfunction(id){\n\t\tvar rtv = null;\n\t\t_visitNode(this.documentElement,function(node){\n\t\t\tif(node.nodeType == ELEMENT_NODE){\n\t\t\t\tif(node.getAttribute('id') == id){\n\t\t\t\t\trtv = node;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\treturn rtv;\n\t},\n\n\t/**\n\t * The `getElementsByClassName` method of `Document` interface returns an array-like object\n\t * of all child elements which have **all** of the given class name(s).\n\t *\n\t * Returns an empty list if `classeNames` is an empty string or only contains HTML white space characters.\n\t *\n\t *\n\t * Warning: This is a live LiveNodeList.\n\t * Changes in the DOM will reflect in the array as the changes occur.\n\t * If an element selected by this array no longer qualifies for the selector,\n\t * it will automatically be removed. Be aware of this for iteration purposes.\n\t *\n\t * @param {string} classNames is a string representing the class name(s) to match; multiple class names are separated by (ASCII-)whitespace\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName\n\t * @see https://dom.spec.whatwg.org/#concept-getelementsbyclassname\n\t */\n\tgetElementsByClassName: function(classNames) {\n\t\tvar classNamesSet = toOrderedSet(classNames)\n\t\treturn new LiveNodeList(this, function(base) {\n\t\t\tvar ls = [];\n\t\t\tif (classNamesSet.length > 0) {\n\t\t\t\t_visitNode(base.documentElement, function(node) {\n\t\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE) {\n\t\t\t\t\t\tvar nodeClassNames = node.getAttribute('class')\n\t\t\t\t\t\t// can be null if the attribute does not exist\n\t\t\t\t\t\tif (nodeClassNames) {\n\t\t\t\t\t\t\t// before splitting and iterating just compare them for the most common case\n\t\t\t\t\t\t\tvar matches = classNames === nodeClassNames;\n\t\t\t\t\t\t\tif (!matches) {\n\t\t\t\t\t\t\t\tvar nodeClassNamesSet = toOrderedSet(nodeClassNames)\n\t\t\t\t\t\t\t\tmatches = classNamesSet.every(arrayIncludes(nodeClassNamesSet))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(matches) {\n\t\t\t\t\t\t\t\tls.push(node);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ls;\n\t\t});\n\t},\n\n\t//document factory method:\n\tcreateElement :\tfunction(tagName){\n\t\tvar node = new Element();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = tagName;\n\t\tnode.tagName = tagName;\n\t\tnode.localName = tagName;\n\t\tnode.childNodes = new NodeList();\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\tcreateDocumentFragment :\tfunction(){\n\t\tvar node = new DocumentFragment();\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\treturn node;\n\t},\n\tcreateTextNode :\tfunction(data){\n\t\tvar node = new Text();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateComment :\tfunction(data){\n\t\tvar node = new Comment();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateCDATASection :\tfunction(data){\n\t\tvar node = new CDATASection();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateProcessingInstruction :\tfunction(target,data){\n\t\tvar node = new ProcessingInstruction();\n\t\tnode.ownerDocument = this;\n\t\tnode.tagName = node.nodeName = node.target = target;\n\t\tnode.nodeValue = node.data = data;\n\t\treturn node;\n\t},\n\tcreateAttribute :\tfunction(name){\n\t\tvar node = new Attr();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.name = name;\n\t\tnode.nodeName\t= name;\n\t\tnode.localName = name;\n\t\tnode.specified = true;\n\t\treturn node;\n\t},\n\tcreateEntityReference :\tfunction(name){\n\t\tvar node = new EntityReference();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.nodeName\t= name;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateElementNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Element();\n\t\tvar pl = qualifiedName.split(':');\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tnode.childNodes = new NodeList();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.tagName = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateAttributeNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Attr();\n\t\tvar pl = qualifiedName.split(':');\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.name = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tnode.specified = true;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\treturn node;\n\t}\n};\n_extends(Document,Node);\n\n\nfunction Element() {\n\tthis._nsMap = {};\n};\nElement.prototype = {\n\tnodeType : ELEMENT_NODE,\n\thasAttribute : function(name){\n\t\treturn this.getAttributeNode(name)!=null;\n\t},\n\tgetAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name);\n\t\treturn attr && attr.value || '';\n\t},\n\tgetAttributeNode : function(name){\n\t\treturn this.attributes.getNamedItem(name);\n\t},\n\tsetAttribute : function(name, value){\n\t\tvar attr = this.ownerDocument.createAttribute(name);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tremoveAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name)\n\t\tattr && this.removeAttributeNode(attr);\n\t},\n\n\t//four real opeartion method\n\tappendChild:function(newChild){\n\t\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\t\treturn this.insertBefore(newChild,null);\n\t\t}else{\n\t\t\treturn _appendSingleChild(this,newChild);\n\t\t}\n\t},\n\tsetAttributeNode : function(newAttr){\n\t\treturn this.attributes.setNamedItem(newAttr);\n\t},\n\tsetAttributeNodeNS : function(newAttr){\n\t\treturn this.attributes.setNamedItemNS(newAttr);\n\t},\n\tremoveAttributeNode : function(oldAttr){\n\t\t//console.log(this == oldAttr.ownerElement)\n\t\treturn this.attributes.removeNamedItem(oldAttr.nodeName);\n\t},\n\t//get real attribute name,and remove it by removeAttributeNode\n\tremoveAttributeNS : function(namespaceURI, localName){\n\t\tvar old = this.getAttributeNodeNS(namespaceURI, localName);\n\t\told && this.removeAttributeNode(old);\n\t},\n\n\thasAttributeNS : function(namespaceURI, localName){\n\t\treturn this.getAttributeNodeNS(namespaceURI, localName)!=null;\n\t},\n\tgetAttributeNS : function(namespaceURI, localName){\n\t\tvar attr = this.getAttributeNodeNS(namespaceURI, localName);\n\t\treturn attr && attr.value || '';\n\t},\n\tsetAttributeNS : function(namespaceURI, qualifiedName, value){\n\t\tvar attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tgetAttributeNodeNS : function(namespaceURI, localName){\n\t\treturn this.attributes.getNamedItemNS(namespaceURI, localName);\n\t},\n\n\tgetElementsByTagName : function(tagName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t});\n\t},\n\tgetElementsByTagNameNS : function(namespaceURI, localName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\n\t\t});\n\t}\n};\nDocument.prototype.getElementsByTagName = Element.prototype.getElementsByTagName;\nDocument.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS;\n\n\n_extends(Element,Node);\nfunction Attr() {\n};\nAttr.prototype.nodeType = ATTRIBUTE_NODE;\n_extends(Attr,Node);\n\n\nfunction CharacterData() {\n};\nCharacterData.prototype = {\n\tdata : '',\n\tsubstringData : function(offset, count) {\n\t\treturn this.data.substring(offset, offset+count);\n\t},\n\tappendData: function(text) {\n\t\ttext = this.data+text;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t},\n\tinsertData: function(offset,text) {\n\t\tthis.replaceData(offset,0,text);\n\n\t},\n\tappendChild:function(newChild){\n\t\tthrow new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR])\n\t},\n\tdeleteData: function(offset, count) {\n\t\tthis.replaceData(offset,count,\"\");\n\t},\n\treplaceData: function(offset, count, text) {\n\t\tvar start = this.data.substring(0,offset);\n\t\tvar end = this.data.substring(offset+count);\n\t\ttext = start + text + end;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t}\n}\n_extends(CharacterData,Node);\nfunction Text() {\n};\nText.prototype = {\n\tnodeName : \"#text\",\n\tnodeType : TEXT_NODE,\n\tsplitText : function(offset) {\n\t\tvar text = this.data;\n\t\tvar newText = text.substring(offset);\n\t\ttext = text.substring(0, offset);\n\t\tthis.data = this.nodeValue = text;\n\t\tthis.length = text.length;\n\t\tvar newNode = this.ownerDocument.createTextNode(newText);\n\t\tif(this.parentNode){\n\t\t\tthis.parentNode.insertBefore(newNode, this.nextSibling);\n\t\t}\n\t\treturn newNode;\n\t}\n}\n_extends(Text,CharacterData);\nfunction Comment() {\n};\nComment.prototype = {\n\tnodeName : \"#comment\",\n\tnodeType : COMMENT_NODE\n}\n_extends(Comment,CharacterData);\n\nfunction CDATASection() {\n};\nCDATASection.prototype = {\n\tnodeName : \"#cdata-section\",\n\tnodeType : CDATA_SECTION_NODE\n}\n_extends(CDATASection,CharacterData);\n\n\nfunction DocumentType() {\n};\nDocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE;\n_extends(DocumentType,Node);\n\nfunction Notation() {\n};\nNotation.prototype.nodeType = NOTATION_NODE;\n_extends(Notation,Node);\n\nfunction Entity() {\n};\nEntity.prototype.nodeType = ENTITY_NODE;\n_extends(Entity,Node);\n\nfunction EntityReference() {\n};\nEntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE;\n_extends(EntityReference,Node);\n\nfunction DocumentFragment() {\n};\nDocumentFragment.prototype.nodeName =\t\"#document-fragment\";\nDocumentFragment.prototype.nodeType =\tDOCUMENT_FRAGMENT_NODE;\n_extends(DocumentFragment,Node);\n\n\nfunction ProcessingInstruction() {\n}\nProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE;\n_extends(ProcessingInstruction,Node);\nfunction XMLSerializer(){}\nXMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){\n\treturn nodeSerializeToString.call(node,isHtml,nodeFilter);\n}\nNode.prototype.toString = nodeSerializeToString;\nfunction nodeSerializeToString(isHtml,nodeFilter){\n\tvar buf = [];\n\tvar refNode = this.nodeType == 9 && this.documentElement || this;\n\tvar prefix = refNode.prefix;\n\tvar uri = refNode.namespaceURI;\n\n\tif(uri && prefix == null){\n\t\t//console.log(prefix)\n\t\tvar prefix = refNode.lookupPrefix(uri);\n\t\tif(prefix == null){\n\t\t\t//isHTML = true;\n\t\t\tvar visibleNamespaces=[\n\t\t\t{namespace:uri,prefix:null}\n\t\t\t//{namespace:uri,prefix:''}\n\t\t\t]\n\t\t}\n\t}\n\tserializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces);\n\t//console.log('###',this.nodeType,uri,prefix,buf.join(''))\n\treturn buf.join('');\n}\n\nfunction needNamespaceDefine(node, isHTML, visibleNamespaces) {\n\tvar prefix = node.prefix || '';\n\tvar uri = node.namespaceURI;\n\t// According to [Namespaces in XML 1.0](https://www.w3.org/TR/REC-xml-names/#ns-using) ,\n\t// and more specifically https://www.w3.org/TR/REC-xml-names/#nsc-NoPrefixUndecl :\n\t// > In a namespace declaration for a prefix [...], the attribute value MUST NOT be empty.\n\t// in a similar manner [Namespaces in XML 1.1](https://www.w3.org/TR/xml-names11/#ns-using)\n\t// and more specifically https://www.w3.org/TR/xml-names11/#nsc-NSDeclared :\n\t// > [...] Furthermore, the attribute value [...] must not be an empty string.\n\t// so serializing empty namespace value like xmlns:ds=\"\" would produce an invalid XML document.\n\tif (!uri) {\n\t\treturn false;\n\t}\n\tif (prefix === \"xml\" && uri === NAMESPACE.XML || uri === NAMESPACE.XMLNS) {\n\t\treturn false;\n\t}\n\n\tvar i = visibleNamespaces.length\n\twhile (i--) {\n\t\tvar ns = visibleNamespaces[i];\n\t\t// get namespace prefix\n\t\tif (ns.prefix === prefix) {\n\t\t\treturn ns.namespace !== uri;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n * Well-formed constraint: No < in Attribute Values\n * > The replacement text of any entity referred to directly or indirectly\n * > in an attribute value must not contain a <.\n * @see https://www.w3.org/TR/xml11/#CleanAttrVals\n * @see https://www.w3.org/TR/xml11/#NT-AttValue\n *\n * Literal whitespace other than space that appear in attribute values\n * are serialized as their entity references, so they will be preserved.\n * (In contrast to whitespace literals in the input which are normalized to spaces)\n * @see https://www.w3.org/TR/xml11/#AVNormalize\n * @see https://w3c.github.io/DOM-Parsing/#serializing-an-element-s-attributes\n */\nfunction addSerializedAttribute(buf, qualifiedName, value) {\n\tbuf.push(' ', qualifiedName, '=\"', value.replace(/[<>&\"\\t\\n\\r]/g, _xmlEncoder), '\"')\n}\n\nfunction serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){\n\tif (!visibleNamespaces) {\n\t\tvisibleNamespaces = [];\n\t}\n\n\tif(nodeFilter){\n\t\tnode = nodeFilter(node);\n\t\tif(node){\n\t\t\tif(typeof node == 'string'){\n\t\t\t\tbuf.push(node);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}else{\n\t\t\treturn;\n\t\t}\n\t\t//buf.sort.apply(attrs, attributeSorter);\n\t}\n\n\tswitch(node.nodeType){\n\tcase ELEMENT_NODE:\n\t\tvar attrs = node.attributes;\n\t\tvar len = attrs.length;\n\t\tvar child = node.firstChild;\n\t\tvar nodeName = node.tagName;\n\n\t\tisHTML = NAMESPACE.isHTML(node.namespaceURI) || isHTML\n\n\t\tvar prefixedNodeName = nodeName\n\t\tif (!isHTML && !node.prefix && node.namespaceURI) {\n\t\t\tvar defaultNS\n\t\t\t// lookup current default ns from `xmlns` attribute\n\t\t\tfor (var ai = 0; ai < attrs.length; ai++) {\n\t\t\t\tif (attrs.item(ai).name === 'xmlns') {\n\t\t\t\t\tdefaultNS = attrs.item(ai).value\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!defaultNS) {\n\t\t\t\t// lookup current default ns in visibleNamespaces\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.prefix === '' && namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tdefaultNS = namespace.namespace\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (defaultNS !== node.namespaceURI) {\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tif (namespace.prefix) {\n\t\t\t\t\t\t\tprefixedNodeName = namespace.prefix + ':' + nodeName\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tbuf.push('<', prefixedNodeName);\n\n\t\tfor(var i=0;i<len;i++){\n\t\t\t// add namespaces for attributes\n\t\t\tvar attr = attrs.item(i);\n\t\t\tif (attr.prefix == 'xmlns') {\n\t\t\t\tvisibleNamespaces.push({ prefix: attr.localName, namespace: attr.value });\n\t\t\t}else if(attr.nodeName == 'xmlns'){\n\t\t\t\tvisibleNamespaces.push({ prefix: '', namespace: attr.value });\n\t\t\t}\n\t\t}\n\n\t\tfor(var i=0;i<len;i++){\n\t\t\tvar attr = attrs.item(i);\n\t\t\tif (needNamespaceDefine(attr,isHTML, visibleNamespaces)) {\n\t\t\t\tvar prefix = attr.prefix||'';\n\t\t\t\tvar uri = attr.namespaceURI;\n\t\t\t\taddSerializedAttribute(buf, prefix ? 'xmlns:' + prefix : \"xmlns\", uri);\n\t\t\t\tvisibleNamespaces.push({ prefix: prefix, namespace:uri });\n\t\t\t}\n\t\t\tserializeToString(attr,buf,isHTML,nodeFilter,visibleNamespaces);\n\t\t}\n\n\t\t// add namespace for current node\n\t\tif (nodeName === prefixedNodeName && needNamespaceDefine(node, isHTML, visibleNamespaces)) {\n\t\t\tvar prefix = node.prefix||'';\n\t\t\tvar uri = node.namespaceURI;\n\t\t\taddSerializedAttribute(buf, prefix ? 'xmlns:' + prefix : \"xmlns\", uri);\n\t\t\tvisibleNamespaces.push({ prefix: prefix, namespace:uri });\n\t\t}\n\n\t\tif(child || isHTML && !/^(?:meta|link|img|br|hr|input)$/i.test(nodeName)){\n\t\t\tbuf.push('>');\n\t\t\t//if is cdata child node\n\t\t\tif(isHTML && /^script$/i.test(nodeName)){\n\t\t\t\twhile(child){\n\t\t\t\t\tif(child.data){\n\t\t\t\t\t\tbuf.push(child.data);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\t}\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}else\n\t\t\t{\n\t\t\t\twhile(child){\n\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuf.push('</',prefixedNodeName,'>');\n\t\t}else{\n\t\t\tbuf.push('/>');\n\t\t}\n\t\t// remove added visible namespaces\n\t\t//visibleNamespaces.length = startVisibleNamespaces;\n\t\treturn;\n\tcase DOCUMENT_NODE:\n\tcase DOCUMENT_FRAGMENT_NODE:\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t\treturn;\n\tcase ATTRIBUTE_NODE:\n\t\treturn addSerializedAttribute(buf, node.name, node.value);\n\tcase TEXT_NODE:\n\t\t/**\n\t\t * The ampersand character (&) and the left angle bracket (<) must not appear in their literal form,\n\t\t * except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section.\n\t\t * If they are needed elsewhere, they must be escaped using either numeric character references or the strings\n\t\t * `&` and `<` respectively.\n\t\t * The right angle bracket (>) may be represented using the string \" > \", and must, for compatibility,\n\t\t * be escaped using either `>` or a character reference when it appears in the string `]]>` in content,\n\t\t * when that string is not marking the end of a CDATA section.\n\t\t *\n\t\t * In the content of elements, character data is any string of characters\n\t\t * which does not contain the start-delimiter of any markup\n\t\t * and does not include the CDATA-section-close delimiter, `]]>`.\n\t\t *\n\t\t * @see https://www.w3.org/TR/xml/#NT-CharData\n\t\t * @see https://w3c.github.io/DOM-Parsing/#xml-serializing-a-text-node\n\t\t */\n\t\treturn buf.push(node.data\n\t\t\t.replace(/[<&>]/g,_xmlEncoder)\n\t\t);\n\tcase CDATA_SECTION_NODE:\n\t\treturn buf.push( '<![CDATA[',node.data,']]>');\n\tcase COMMENT_NODE:\n\t\treturn buf.push( \"<!--\",node.data,\"-->\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('<!DOCTYPE ',node.name);\n\t\tif(pubid){\n\t\t\tbuf.push(' PUBLIC ', pubid);\n\t\t\tif (sysid && sysid!='.') {\n\t\t\t\tbuf.push(' ', sysid);\n\t\t\t}\n\t\t\tbuf.push('>');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"<?\",node.target,\" \",node.data,\"?>\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i<len;i++){\n\t\t\t//node2.setAttributeNodeNS(importNode(doc,attrs.item(i),deep));\n\t\t//}\n\tcase DOCUMENT_FRAGMENT_NODE:\n\t\tbreak;\n\tcase ATTRIBUTE_NODE:\n\t\tdeep = true;\n\t\tbreak;\n\t//case ENTITY_REFERENCE_NODE:\n\t//case PROCESSING_INSTRUCTION_NODE:\n\t////case TEXT_NODE:\n\t//case CDATA_SECTION_NODE:\n\t//case COMMENT_NODE:\n\t//\tdeep = false;\n\t//\tbreak;\n\t//case DOCUMENT_NODE:\n\t//case DOCUMENT_TYPE_NODE:\n\t//cannot be imported.\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\t//can not hit in level3\n\t//default:throw e;\n\t}\n\tif(!node2){\n\t\tnode2 = node.cloneNode(false);//false\n\t}\n\tnode2.ownerDocument = doc;\n\tnode2.parentNode = null;\n\tif(deep){\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tnode2.appendChild(importNode(doc,child,deep));\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t}\n\treturn node2;\n}\n//\n//var _relationMap = {firstChild:1,lastChild:1,previousSibling:1,nextSibling:1,\n//\t\t\t\t\tattributes:1,childNodes:1,parentNode:1,documentElement:1,doctype,};\nfunction cloneNode(doc,node,deep){\n\tvar node2 = new node.constructor();\n\tfor (var n in node) {\n\t\tif (Object.prototype.hasOwnProperty.call(node, n)) {\n\t\t\tvar v = node[n];\n\t\t\tif (typeof v != \"object\") {\n\t\t\t\tif (v != node2[n]) {\n\t\t\t\t\tnode2[n] = v;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif(node.childNodes){\n\t\tnode2.childNodes = new NodeList();\n\t}\n\tnode2.ownerDocument = doc;\n\tswitch (node2.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tvar attrs\t= node.attributes;\n\t\tvar attrs2\t= node2.attributes = new NamedNodeMap();\n\t\tvar len = attrs.length\n\t\tattrs2._ownerElement = node2;\n\t\tfor(var i=0;i<len;i++){\n\t\t\tnode2.setAttributeNode(cloneNode(doc,attrs.item(i),true));\n\t\t}\n\t\tbreak;;\n\tcase ATTRIBUTE_NODE:\n\t\tdeep = true;\n\t}\n\tif(deep){\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tnode2.appendChild(cloneNode(doc,child,deep));\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t}\n\treturn node2;\n}\n\nfunction __set__(object,key,value){\n\tobject[key] = value\n}\n//do dynamic\ntry{\n\tif(Object.defineProperty){\n\t\tObject.defineProperty(LiveNodeList.prototype,'length',{\n\t\t\tget:function(){\n\t\t\t\t_updateLiveList(this);\n\t\t\t\treturn this.$$length;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(Node.prototype,'textContent',{\n\t\t\tget:function(){\n\t\t\t\treturn getTextContent(this);\n\t\t\t},\n\n\t\t\tset:function(data){\n\t\t\t\tswitch(this.nodeType){\n\t\t\t\tcase ELEMENT_NODE:\n\t\t\t\tcase DOCUMENT_FRAGMENT_NODE:\n\t\t\t\t\twhile(this.firstChild){\n\t\t\t\t\t\tthis.removeChild(this.firstChild);\n\t\t\t\t\t}\n\t\t\t\t\tif(data || String(data)){\n\t\t\t\t\t\tthis.appendChild(this.ownerDocument.createTextNode(data));\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.data = data;\n\t\t\t\t\tthis.value = data;\n\t\t\t\t\tthis.nodeValue = data;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tfunction getTextContent(node){\n\t\t\tswitch(node.nodeType){\n\t\t\tcase ELEMENT_NODE:\n\t\t\tcase DOCUMENT_FRAGMENT_NODE:\n\t\t\t\tvar buf = [];\n\t\t\t\tnode = node.firstChild;\n\t\t\t\twhile(node){\n\t\t\t\t\tif(node.nodeType!==7 && node.nodeType !==8){\n\t\t\t\t\t\tbuf.push(getTextContent(node));\n\t\t\t\t\t}\n\t\t\t\t\tnode = node.nextSibling;\n\t\t\t\t}\n\t\t\t\treturn buf.join('');\n\t\t\tdefault:\n\t\t\t\treturn node.nodeValue;\n\t\t\t}\n\t\t}\n\n\t\t__set__ = function(object,key,value){\n\t\t\t//console.log(value)\n\t\t\tobject['$$'+key] = value\n\t\t}\n\t}\n}catch(e){//ie8\n}\n\n//if(typeof require == 'function'){\n\texports.DocumentType = DocumentType;\n\texports.DOMException = DOMException;\n\texports.DOMImplementation = DOMImplementation;\n\texports.Element = Element;\n\texports.Node = Node;\n\texports.NodeList = NodeList;\n\texports.XMLSerializer = XMLSerializer;\n//}\n","'use strict';\n\nvar freeze = require('./conventions').freeze;\n\n/**\n * The entities that are predefined in every XML document.\n *\n * @see https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-predefined-ent W3C XML 1.1\n * @see https://www.w3.org/TR/2008/REC-xml-20081126/#sec-predefined-ent W3C XML 1.0\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML Wikipedia\n */\nexports.XML_ENTITIES = freeze({\n\tamp: '&',\n\tapos: \"'\",\n\tgt: '>',\n\tlt: '<',\n\tquot: '\"',\n});\n\n/**\n * A map of all entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see XML_ENTITIES\n * @see DOMParser.parseFromString\n * @see DOMImplementation.prototype.createHTMLDocument\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\n * @see https://html.spec.whatwg.org/entities.json JSON\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n\tAacute: '\\u00C1',\n\taacute: '\\u00E1',\n\tAbreve: '\\u0102',\n\tabreve: '\\u0103',\n\tac: '\\u223E',\n\tacd: '\\u223F',\n\tacE: '\\u223E\\u0333',\n\tAcirc: '\\u00C2',\n\tacirc: '\\u00E2',\n\tacute: '\\u00B4',\n\tAcy: '\\u0410',\n\tacy: '\\u0430',\n\tAElig: '\\u00C6',\n\taelig: '\\u00E6',\n\taf: '\\u2061',\n\tAfr: '\\uD835\\uDD04',\n\tafr: '\\uD835\\uDD1E',\n\tAgrave: '\\u00C0',\n\tagrave: '\\u00E0',\n\talefsym: '\\u2135',\n\taleph: '\\u2135',\n\tAlpha: '\\u0391',\n\talpha: '\\u03B1',\n\tAmacr: '\\u0100',\n\tamacr: '\\u0101',\n\tamalg: '\\u2A3F',\n\tAMP: '\\u0026',\n\tamp: '\\u0026',\n\tAnd: '\\u2A53',\n\tand: '\\u2227',\n\tandand: '\\u2A55',\n\tandd: '\\u2A5C',\n\tandslope: '\\u2A58',\n\tandv: '\\u2A5A',\n\tang: '\\u2220',\n\tange: '\\u29A4',\n\tangle: '\\u2220',\n\tangmsd: '\\u2221',\n\tangmsdaa: '\\u29A8',\n\tangmsdab: '\\u29A9',\n\tangmsdac: '\\u29AA',\n\tangmsdad: '\\u29AB',\n\tangmsdae: '\\u29AC',\n\tangmsdaf: '\\u29AD',\n\tangmsdag: '\\u29AE',\n\tangmsdah: '\\u29AF',\n\tangrt: '\\u221F',\n\tangrtvb: '\\u22BE',\n\tangrtvbd: '\\u299D',\n\tangsph: '\\u2222',\n\tangst: '\\u00C5',\n\tangzarr: '\\u237C',\n\tAogon: '\\u0104',\n\taogon: '\\u0105',\n\tAopf: '\\uD835\\uDD38',\n\taopf: '\\uD835\\uDD52',\n\tap: '\\u2248',\n\tapacir: '\\u2A6F',\n\tapE: '\\u2A70',\n\tape: '\\u224A',\n\tapid: '\\u224B',\n\tapos: '\\u0027',\n\tApplyFunction: '\\u2061',\n\tapprox: '\\u2248',\n\tapproxeq: '\\u224A',\n\tAring: '\\u00C5',\n\taring: '\\u00E5',\n\tAscr: '\\uD835\\uDC9C',\n\tascr: '\\uD835\\uDCB6',\n\tAssign: '\\u2254',\n\tast: '\\u002A',\n\tasymp: '\\u2248',\n\tasympeq: '\\u224D',\n\tAtilde: '\\u00C3',\n\tatilde: '\\u00E3',\n\tAuml: '\\u00C4',\n\tauml: '\\u00E4',\n\tawconint: '\\u2233',\n\tawint: '\\u2A11',\n\tbackcong: '\\u224C',\n\tbackepsilon: '\\u03F6',\n\tbackprime: '\\u2035',\n\tbacksim: '\\u223D',\n\tbacksimeq: '\\u22CD',\n\tBackslash: '\\u2216',\n\tBarv: '\\u2AE7',\n\tbarvee: '\\u22BD',\n\tBarwed: '\\u2306',\n\tbarwed: '\\u2305',\n\tbarwedge: '\\u2305',\n\tbbrk: '\\u23B5',\n\tbbrktbrk: '\\u23B6',\n\tbcong: '\\u224C',\n\tBcy: '\\u0411',\n\tbcy: '\\u0431',\n\tbdquo: '\\u201E',\n\tbecaus: '\\u2235',\n\tBecause: '\\u2235',\n\tbecause: '\\u2235',\n\tbemptyv: '\\u29B0',\n\tbepsi: '\\u03F6',\n\tbernou: '\\u212C',\n\tBernoullis: '\\u212C',\n\tBeta: '\\u0392',\n\tbeta: '\\u03B2',\n\tbeth: '\\u2136',\n\tbetween: '\\u226C',\n\tBfr: '\\uD835\\uDD05',\n\tbfr: '\\uD835\\uDD1F',\n\tbigcap: '\\u22C2',\n\tbigcirc: '\\u25EF',\n\tbigcup: '\\u22C3',\n\tbigodot: '\\u2A00',\n\tbigoplus: '\\u2A01',\n\tbigotimes: '\\u2A02',\n\tbigsqcup: '\\u2A06',\n\tbigstar: '\\u2605',\n\tbigtriangledown: '\\u25BD',\n\tbigtriangleup: '\\u25B3',\n\tbiguplus: '\\u2A04',\n\tbigvee: '\\u22C1',\n\tbigwedge: '\\u22C0',\n\tbkarow: '\\u290D',\n\tblacklozenge: '\\u29EB',\n\tblacksquare: '\\u25AA',\n\tblacktriangle: '\\u25B4',\n\tblacktriangledown: '\\u25BE',\n\tblacktriangleleft: '\\u25C2',\n\tblacktriangleright: '\\u25B8',\n\tblank: '\\u2423',\n\tblk12: '\\u2592',\n\tblk14: '\\u2591',\n\tblk34: '\\u2593',\n\tblock: '\\u2588',\n\tbne: '\\u003D\\u20E5',\n\tbnequiv: '\\u2261\\u20E5',\n\tbNot: '\\u2AED',\n\tbnot: '\\u2310',\n\tBopf: '\\uD835\\uDD39',\n\tbopf: '\\uD835\\uDD53',\n\tbot: '\\u22A5',\n\tbottom: '\\u22A5',\n\tbowtie: '\\u22C8',\n\tboxbox: '\\u29C9',\n\tboxDL: '\\u2557',\n\tboxDl: '\\u2556',\n\tboxdL: '\\u2555',\n\tboxdl: '\\u2510',\n\tboxDR: '\\u2554',\n\tboxDr: '\\u2553',\n\tboxdR: '\\u2552',\n\tboxdr: '\\u250C',\n\tboxH: '\\u2550',\n\tboxh: '\\u2500',\n\tboxHD: '\\u2566',\n\tboxHd: '\\u2564',\n\tboxhD: '\\u2565',\n\tboxhd: '\\u252C',\n\tboxHU: '\\u2569',\n\tboxHu: '\\u2567',\n\tboxhU: '\\u2568',\n\tboxhu: '\\u2534',\n\tboxminus: '\\u229F',\n\tboxplus: '\\u229E',\n\tboxtimes: '\\u22A0',\n\tboxUL: '\\u255D',\n\tboxUl: '\\u255C',\n\tboxuL: '\\u255B',\n\tboxul: '\\u2518',\n\tboxUR: '\\u255A',\n\tboxUr: '\\u2559',\n\tboxuR: '\\u2558',\n\tboxur: '\\u2514',\n\tboxV: '\\u2551',\n\tboxv: '\\u2502',\n\tboxVH: '\\u256C',\n\tboxVh: '\\u256B',\n\tboxvH: '\\u256A',\n\tboxvh: '\\u253C',\n\tboxVL: '\\u2563',\n\tboxVl: '\\u2562',\n\tboxvL: '\\u2561',\n\tboxvl: '\\u2524',\n\tboxVR: '\\u2560',\n\tboxVr: '\\u255F',\n\tboxvR: '\\u255E',\n\tboxvr: '\\u251C',\n\tbprime: '\\u2035',\n\tBreve: '\\u02D8',\n\tbreve: '\\u02D8',\n\tbrvbar: '\\u00A6',\n\tBscr: '\\u212C',\n\tbscr: '\\uD835\\uDCB7',\n\tbsemi: '\\u204F',\n\tbsim: '\\u223D',\n\tbsime: '\\u22CD',\n\tbsol: '\\u005C',\n\tbsolb: '\\u29C5',\n\tbsolhsub: '\\u27C8',\n\tbull: '\\u2022',\n\tbullet: '\\u2022',\n\tbump: '\\u224E',\n\tbumpE: '\\u2AAE',\n\tbumpe: '\\u224F',\n\tBumpeq: '\\u224E',\n\tbumpeq: '\\u224F',\n\tCacute: '\\u0106',\n\tcacute: '\\u0107',\n\tCap: '\\u22D2',\n\tcap: '\\u2229',\n\tcapand: '\\u2A44',\n\tcapbrcup: '\\u2A49',\n\tcapcap: '\\u2A4B',\n\tcapcup: '\\u2A47',\n\tcapdot: '\\u2A40',\n\tCapitalDifferentialD: '\\u2145',\n\tcaps: '\\u2229\\uFE00',\n\tcaret: '\\u2041',\n\tcaron: '\\u02C7',\n\tCayleys: '\\u212D',\n\tccaps: '\\u2A4D',\n\tCcaron: '\\u010C',\n\tccaron: '\\u010D',\n\tCcedil: '\\u00C7',\n\tccedil: '\\u00E7',\n\tCcirc: '\\u0108',\n\tccirc: '\\u0109',\n\tCconint: '\\u2230',\n\tccups: '\\u2A4C',\n\tccupssm: '\\u2A50',\n\tCdot: '\\u010A',\n\tcdot: '\\u010B',\n\tcedil: '\\u00B8',\n\tCedilla: '\\u00B8',\n\tcemptyv: '\\u29B2',\n\tcent: '\\u00A2',\n\tCenterDot: '\\u00B7',\n\tcenterdot: '\\u00B7',\n\tCfr: '\\u212D',\n\tcfr: '\\uD835\\uDD20',\n\tCHcy: '\\u0427',\n\tchcy: '\\u0447',\n\tcheck: '\\u2713',\n\tcheckmark: '\\u2713',\n\tChi: '\\u03A7',\n\tchi: '\\u03C7',\n\tcir: '\\u25CB',\n\tcirc: '\\u02C6',\n\tcirceq: '\\u2257',\n\tcirclearrowleft: '\\u21BA',\n\tcirclearrowright: '\\u21BB',\n\tcircledast: '\\u229B',\n\tcircledcirc: '\\u229A',\n\tcircleddash: '\\u229D',\n\tCircleDot: '\\u2299',\n\tcircledR: '\\u00AE',\n\tcircledS: '\\u24C8',\n\tCircleMinus: '\\u2296',\n\tCirclePlus: '\\u2295',\n\tCircleTimes: '\\u2297',\n\tcirE: '\\u29C3',\n\tcire: '\\u2257',\n\tcirfnint: '\\u2A10',\n\tcirmid: '\\u2AEF',\n\tcirscir: '\\u29C2',\n\tClockwiseContourIntegral: '\\u2232',\n\tCloseCurlyDoubleQuote: '\\u201D',\n\tCloseCurlyQuote: '\\u2019',\n\tclubs: '\\u2663',\n\tclubsuit: '\\u2663',\n\tColon: '\\u2237',\n\tcolon: '\\u003A',\n\tColone: '\\u2A74',\n\tcolone: '\\u2254',\n\tcoloneq: '\\u2254',\n\tcomma: '\\u002C',\n\tcommat: '\\u0040',\n\tcomp: '\\u2201',\n\tcompfn: '\\u2218',\n\tcomplement: '\\u2201',\n\tcomplexes: '\\u2102',\n\tcong: '\\u2245',\n\tcongdot: '\\u2A6D',\n\tCongruent: '\\u2261',\n\tConint: '\\u222F',\n\tconint: '\\u222E',\n\tContourIntegral: '\\u222E',\n\tCopf: '\\u2102',\n\tcopf: '\\uD835\\uDD54',\n\tcoprod: '\\u2210',\n\tCoproduct: '\\u2210',\n\tCOPY: '\\u00A9',\n\tcopy: '\\u00A9',\n\tcopysr: '\\u2117',\n\tCounterClockwiseContourIntegral: '\\u2233',\n\tcrarr: '\\u21B5',\n\tCross: '\\u2A2F',\n\tcross: '\\u2717',\n\tCscr: '\\uD835\\uDC9E',\n\tcscr: '\\uD835\\uDCB8',\n\tcsub: '\\u2ACF',\n\tcsube: '\\u2AD1',\n\tcsup: '\\u2AD0',\n\tcsupe: '\\u2AD2',\n\tctdot: '\\u22EF',\n\tcudarrl: '\\u2938',\n\tcudarrr: '\\u2935',\n\tcuepr: '\\u22DE',\n\tcuesc: '\\u22DF',\n\tcularr: '\\u21B6',\n\tcularrp: '\\u293D',\n\tCup: '\\u22D3',\n\tcup: '\\u222A',\n\tcupbrcap: '\\u2A48',\n\tCupCap: '\\u224D',\n\tcupcap: '\\u2A46',\n\tcupcup: '\\u2A4A',\n\tcupdot: '\\u228D',\n\tcupor: '\\u2A45',\n\tcups: '\\u222A\\uFE00',\n\tcurarr: '\\u21B7',\n\tcurarrm: '\\u293C',\n\tcurlyeqprec: '\\u22DE',\n\tcurlyeqsucc: '\\u22DF',\n\tcurlyvee: '\\u22CE',\n\tcurlywedge: '\\u22CF',\n\tcurren: '\\u00A4',\n\tcurvearrowleft: '\\u21B6',\n\tcurvearrowright: '\\u21B7',\n\tcuvee: '\\u22CE',\n\tcuwed: '\\u22CF',\n\tcwconint: '\\u2232',\n\tcwint: '\\u2231',\n\tcylcty: '\\u232D',\n\tDagger: '\\u2021',\n\tdagger: '\\u2020',\n\tdaleth: '\\u2138',\n\tDarr: '\\u21A1',\n\tdArr: '\\u21D3',\n\tdarr: '\\u2193',\n\tdash: '\\u2010',\n\tDashv: '\\u2AE4',\n\tdashv: '\\u22A3',\n\tdbkarow: '\\u290F',\n\tdblac: '\\u02DD',\n\tDcaron: '\\u010E',\n\tdcaron: '\\u010F',\n\tDcy: '\\u0414',\n\tdcy: '\\u0434',\n\tDD: '\\u2145',\n\tdd: '\\u2146',\n\tddagger: '\\u2021',\n\tddarr: '\\u21CA',\n\tDDotrahd: '\\u2911',\n\tddotseq: '\\u2A77',\n\tdeg: '\\u00B0',\n\tDel: '\\u2207',\n\tDelta: '\\u0394',\n\tdelta: '\\u03B4',\n\tdemptyv: '\\u29B1',\n\tdfisht: '\\u297F',\n\tDfr: '\\uD835\\uDD07',\n\tdfr: '\\uD835\\uDD21',\n\tdHar: '\\u2965',\n\tdharl: '\\u21C3',\n\tdharr: '\\u21C2',\n\tDiacriticalAcute: '\\u00B4',\n\tDiacriticalDot: '\\u02D9',\n\tDiacriticalDoubleAcute: '\\u02DD',\n\tDiacriticalGrave: '\\u0060',\n\tDiacriticalTilde: '\\u02DC',\n\tdiam: '\\u22C4',\n\tDiamond: '\\u22C4',\n\tdiamond: '\\u22C4',\n\tdiamondsuit: '\\u2666',\n\tdiams: '\\u2666',\n\tdie: '\\u00A8',\n\tDifferentialD: '\\u2146',\n\tdigamma: '\\u03DD',\n\tdisin: '\\u22F2',\n\tdiv: '\\u00F7',\n\tdivide: '\\u00F7',\n\tdivideontimes: '\\u22C7',\n\tdivonx: '\\u22C7',\n\tDJcy: '\\u0402',\n\tdjcy: '\\u0452',\n\tdlcorn: '\\u231E',\n\tdlcrop: '\\u230D',\n\tdollar: '\\u0024',\n\tDopf: '\\uD835\\uDD3B',\n\tdopf: '\\uD835\\uDD55',\n\tDot: '\\u00A8',\n\tdot: '\\u02D9',\n\tDotDot: '\\u20DC',\n\tdoteq: '\\u2250',\n\tdoteqdot: '\\u2251',\n\tDotEqual: '\\u2250',\n\tdotminus: '\\u2238',\n\tdotplus: '\\u2214',\n\tdotsquare: '\\u22A1',\n\tdoublebarwedge: '\\u2306',\n\tDoubleContourIntegral: '\\u222F',\n\tDoubleDot: '\\u00A8',\n\tDoubleDownArrow: '\\u21D3',\n\tDoubleLeftArrow: '\\u21D0',\n\tDoubleLeftRightArrow: '\\u21D4',\n\tDoubleLeftTee: '\\u2AE4',\n\tDoubleLongLeftArrow: '\\u27F8',\n\tDoubleLongLeftRightArrow: '\\u27FA',\n\tDoubleLongRightArrow: '\\u27F9',\n\tDoubleRightArrow: '\\u21D2',\n\tDoubleRightTee: '\\u22A8',\n\tDoubleUpArrow: '\\u21D1',\n\tDoubleUpDownArrow: '\\u21D5',\n\tDoubleVerticalBar: '\\u2225',\n\tDownArrow: '\\u2193',\n\tDownarrow: '\\u21D3',\n\tdownarrow: '\\u2193',\n\tDownArrowBar: '\\u2913',\n\tDownArrowUpArrow: '\\u21F5',\n\tDownBreve: '\\u0311',\n\tdowndownarrows: '\\u21CA',\n\tdownharpoonleft: '\\u21C3',\n\tdownharpoonright: '\\u21C2',\n\tDownLeftRightVector: '\\u2950',\n\tDownLeftTeeVector: '\\u295E',\n\tDownLeftVector: '\\u21BD',\n\tDownLeftVectorBar: '\\u2956',\n\tDownRightTeeVector: '\\u295F',\n\tDownRightVector: '\\u21C1',\n\tDownRightVectorBar: '\\u2957',\n\tDownTee: '\\u22A4',\n\tDownTeeArrow: '\\u21A7',\n\tdrbkarow: '\\u2910',\n\tdrcorn: '\\u231F',\n\tdrcrop: '\\u230C',\n\tDscr: '\\uD835\\uDC9F',\n\tdscr: '\\uD835\\uDCB9',\n\tDScy: '\\u0405',\n\tdscy: '\\u0455',\n\tdsol: '\\u29F6',\n\tDstrok: '\\u0110',\n\tdstrok: '\\u0111',\n\tdtdot: '\\u22F1',\n\tdtri: '\\u25BF',\n\tdtrif: '\\u25BE',\n\tduarr: '\\u21F5',\n\tduhar: '\\u296F',\n\tdwangle: '\\u29A6',\n\tDZcy: '\\u040F',\n\tdzcy: '\\u045F',\n\tdzigrarr: '\\u27FF',\n\tEacute: '\\u00C9',\n\teacute: '\\u00E9',\n\teaster: '\\u2A6E',\n\tEcaron: '\\u011A',\n\tecaron: '\\u011B',\n\tecir: '\\u2256',\n\tEcirc: '\\u00CA',\n\tecirc: '\\u00EA',\n\tecolon: '\\u2255',\n\tEcy: '\\u042D',\n\tecy: '\\u044D',\n\teDDot: '\\u2A77',\n\tEdot: '\\u0116',\n\teDot: '\\u2251',\n\tedot: '\\u0117',\n\tee: '\\u2147',\n\tefDot: '\\u2252',\n\tEfr: '\\uD835\\uDD08',\n\tefr: '\\uD835\\uDD22',\n\teg: '\\u2A9A',\n\tEgrave: '\\u00C8',\n\tegrave: '\\u00E8',\n\tegs: '\\u2A96',\n\tegsdot: '\\u2A98',\n\tel: '\\u2A99',\n\tElement: '\\u2208',\n\telinters: '\\u23E7',\n\tell: '\\u2113',\n\tels: '\\u2A95',\n\telsdot: '\\u2A97',\n\tEmacr: '\\u0112',\n\temacr: '\\u0113',\n\tempty: '\\u2205',\n\temptyset: '\\u2205',\n\tEmptySmallSquare: '\\u25FB',\n\temptyv: '\\u2205',\n\tEmptyVerySmallSquare: '\\u25AB',\n\temsp: '\\u2003',\n\temsp13: '\\u2004',\n\temsp14: '\\u2005',\n\tENG: '\\u014A',\n\teng: '\\u014B',\n\tensp: '\\u2002',\n\tEogon: '\\u0118',\n\teogon: '\\u0119',\n\tEopf: '\\uD835\\uDD3C',\n\teopf: '\\uD835\\uDD56',\n\tepar: '\\u22D5',\n\teparsl: '\\u29E3',\n\teplus: '\\u2A71',\n\tepsi: '\\u03B5',\n\tEpsilon: '\\u0395',\n\tepsilon: '\\u03B5',\n\tepsiv: '\\u03F5',\n\teqcirc: '\\u2256',\n\teqcolon: '\\u2255',\n\teqsim: '\\u2242',\n\teqslantgtr: '\\u2A96',\n\teqslantless: '\\u2A95',\n\tEqual: '\\u2A75',\n\tequals: '\\u003D',\n\tEqualTilde: '\\u2242',\n\tequest: '\\u225F',\n\tEquilibrium: '\\u21CC',\n\tequiv: '\\u2261',\n\tequivDD: '\\u2A78',\n\teqvparsl: '\\u29E5',\n\terarr: '\\u2971',\n\terDot: '\\u2253',\n\tEscr: '\\u2130',\n\tescr: '\\u212F',\n\tesdot: '\\u2250',\n\tEsim: '\\u2A73',\n\tesim: '\\u2242',\n\tEta: '\\u0397',\n\teta: '\\u03B7',\n\tETH: '\\u00D0',\n\teth: '\\u00F0',\n\tEuml: '\\u00CB',\n\teuml: '\\u00EB',\n\teuro: '\\u20AC',\n\texcl: '\\u0021',\n\texist: '\\u2203',\n\tExists: '\\u2203',\n\texpectation: '\\u2130',\n\tExponentialE: '\\u2147',\n\texponentiale: '\\u2147',\n\tfallingdotseq: '\\u2252',\n\tFcy: '\\u0424',\n\tfcy: '\\u0444',\n\tfemale: '\\u2640',\n\tffilig: '\\uFB03',\n\tfflig: '\\uFB00',\n\tffllig: '\\uFB04',\n\tFfr: '\\uD835\\uDD09',\n\tffr: '\\uD835\\uDD23',\n\tfilig: '\\uFB01',\n\tFilledSmallSquare: '\\u25FC',\n\tFilledVerySmallSquare: '\\u25AA',\n\tfjlig: '\\u0066\\u006A',\n\tflat: '\\u266D',\n\tfllig: '\\uFB02',\n\tfltns: '\\u25B1',\n\tfnof: '\\u0192',\n\tFopf: '\\uD835\\uDD3D',\n\tfopf: '\\uD835\\uDD57',\n\tForAll: '\\u2200',\n\tforall: '\\u2200',\n\tfork: '\\u22D4',\n\tforkv: '\\u2AD9',\n\tFouriertrf: '\\u2131',\n\tfpartint: '\\u2A0D',\n\tfrac12: '\\u00BD',\n\tfrac13: '\\u2153',\n\tfrac14: '\\u00BC',\n\tfrac15: '\\u2155',\n\tfrac16: '\\u2159',\n\tfrac18: '\\u215B',\n\tfrac23: '\\u2154',\n\tfrac25: '\\u2156',\n\tfrac34: '\\u00BE',\n\tfrac35: '\\u2157',\n\tfrac38: '\\u215C',\n\tfrac45: '\\u2158',\n\tfrac56: '\\u215A',\n\tfrac58: '\\u215D',\n\tfrac78: '\\u215E',\n\tfrasl: '\\u2044',\n\tfrown: '\\u2322',\n\tFscr: '\\u2131',\n\tfscr: '\\uD835\\uDCBB',\n\tgacute: '\\u01F5',\n\tGamma: '\\u0393',\n\tgamma: '\\u03B3',\n\tGammad: '\\u03DC',\n\tgammad: '\\u03DD',\n\tgap: '\\u2A86',\n\tGbreve: '\\u011E',\n\tgbreve: '\\u011F',\n\tGcedil: '\\u0122',\n\tGcirc: '\\u011C',\n\tgcirc: '\\u011D',\n\tGcy: '\\u0413',\n\tgcy: '\\u0433',\n\tGdot: '\\u0120',\n\tgdot: '\\u0121',\n\tgE: '\\u2267',\n\tge: '\\u2265',\n\tgEl: '\\u2A8C',\n\tgel: '\\u22DB',\n\tgeq: '\\u2265',\n\tgeqq: '\\u2267',\n\tgeqslant: '\\u2A7E',\n\tges: '\\u2A7E',\n\tgescc: '\\u2AA9',\n\tgesdot: '\\u2A80',\n\tgesdoto: '\\u2A82',\n\tgesdotol: '\\u2A84',\n\tgesl: '\\u22DB\\uFE00',\n\tgesles: '\\u2A94',\n\tGfr: '\\uD835\\uDD0A',\n\tgfr: '\\uD835\\uDD24',\n\tGg: '\\u22D9',\n\tgg: '\\u226B',\n\tggg: '\\u22D9',\n\tgimel: '\\u2137',\n\tGJcy: '\\u0403',\n\tgjcy: '\\u0453',\n\tgl: '\\u2277',\n\tgla: '\\u2AA5',\n\tglE: '\\u2A92',\n\tglj: '\\u2AA4',\n\tgnap: '\\u2A8A',\n\tgnapprox: '\\u2A8A',\n\tgnE: '\\u2269',\n\tgne: '\\u2A88',\n\tgneq: '\\u2A88',\n\tgneqq: '\\u2269',\n\tgnsim: '\\u22E7',\n\tGopf: '\\uD835\\uDD3E',\n\tgopf: '\\uD835\\uDD58',\n\tgrave: '\\u0060',\n\tGreaterEqual: '\\u2265',\n\tGreaterEqualLess: '\\u22DB',\n\tGreaterFullEqual: '\\u2267',\n\tGreaterGreater: '\\u2AA2',\n\tGreaterLess: '\\u2277',\n\tGreaterSlantEqual: '\\u2A7E',\n\tGreaterTilde: '\\u2273',\n\tGscr: '\\uD835\\uDCA2',\n\tgscr: '\\u210A',\n\tgsim: '\\u2273',\n\tgsime: '\\u2A8E',\n\tgsiml: '\\u2A90',\n\tGt: '\\u226B',\n\tGT: '\\u003E',\n\tgt: '\\u003E',\n\tgtcc: '\\u2AA7',\n\tgtcir: '\\u2A7A',\n\tgtdot: '\\u22D7',\n\tgtlPar: '\\u2995',\n\tgtquest: '\\u2A7C',\n\tgtrapprox: '\\u2A86',\n\tgtrarr: '\\u2978',\n\tgtrdot: '\\u22D7',\n\tgtreqless: '\\u22DB',\n\tgtreqqless: '\\u2A8C',\n\tgtrless: '\\u2277',\n\tgtrsim: '\\u2273',\n\tgvertneqq: '\\u2269\\uFE00',\n\tgvnE: '\\u2269\\uFE00',\n\tHacek: '\\u02C7',\n\thairsp: '\\u200A',\n\thalf: '\\u00BD',\n\thamilt: '\\u210B',\n\tHARDcy: '\\u042A',\n\thardcy: '\\u044A',\n\thArr: '\\u21D4',\n\tharr: '\\u2194',\n\tharrcir: '\\u2948',\n\tharrw: '\\u21AD',\n\tHat: '\\u005E',\n\thbar: '\\u210F',\n\tHcirc: '\\u0124',\n\thcirc: '\\u0125',\n\thearts: '\\u2665',\n\theartsuit: '\\u2665',\n\thellip: '\\u2026',\n\thercon: '\\u22B9',\n\tHfr: '\\u210C',\n\thfr: '\\uD835\\uDD25',\n\tHilbertSpace: '\\u210B',\n\thksearow: '\\u2925',\n\thkswarow: '\\u2926',\n\thoarr: '\\u21FF',\n\thomtht: '\\u223B',\n\thookleftarrow: '\\u21A9',\n\thookrightarrow: '\\u21AA',\n\tHopf: '\\u210D',\n\thopf: '\\uD835\\uDD59',\n\thorbar: '\\u2015',\n\tHorizontalLine: '\\u2500',\n\tHscr: '\\u210B',\n\thscr: '\\uD835\\uDCBD',\n\thslash: '\\u210F',\n\tHstrok: '\\u0126',\n\thstrok: '\\u0127',\n\tHumpDownHump: '\\u224E',\n\tHumpEqual: '\\u224F',\n\thybull: '\\u2043',\n\thyphen: '\\u2010',\n\tIacute: '\\u00CD',\n\tiacute: '\\u00ED',\n\tic: '\\u2063',\n\tIcirc: '\\u00CE',\n\ticirc: '\\u00EE',\n\tIcy: '\\u0418',\n\ticy: '\\u0438',\n\tIdot: '\\u0130',\n\tIEcy: '\\u0415',\n\tiecy: '\\u0435',\n\tiexcl: '\\u00A1',\n\tiff: '\\u21D4',\n\tIfr: '\\u2111',\n\tifr: '\\uD835\\uDD26',\n\tIgrave: '\\u00CC',\n\tigrave: '\\u00EC',\n\tii: '\\u2148',\n\tiiiint: '\\u2A0C',\n\tiiint: '\\u222D',\n\tiinfin: '\\u29DC',\n\tiiota: '\\u2129',\n\tIJlig: '\\u0132',\n\tijlig: '\\u0133',\n\tIm: '\\u2111',\n\tImacr: '\\u012A',\n\timacr: '\\u012B',\n\timage: '\\u2111',\n\tImaginaryI: '\\u2148',\n\timagline: '\\u2110',\n\timagpart: '\\u2111',\n\timath: '\\u0131',\n\timof: '\\u22B7',\n\timped: '\\u01B5',\n\tImplies: '\\u21D2',\n\tin: '\\u2208',\n\tincare: '\\u2105',\n\tinfin: '\\u221E',\n\tinfintie: '\\u29DD',\n\tinodot: '\\u0131',\n\tInt: '\\u222C',\n\tint: '\\u222B',\n\tintcal: '\\u22BA',\n\tintegers: '\\u2124',\n\tIntegral: '\\u222B',\n\tintercal: '\\u22BA',\n\tIntersection: '\\u22C2',\n\tintlarhk: '\\u2A17',\n\tintprod: '\\u2A3C',\n\tInvisibleComma: '\\u2063',\n\tInvisibleTimes: '\\u2062',\n\tIOcy: '\\u0401',\n\tiocy: '\\u0451',\n\tIogon: '\\u012E',\n\tiogon: '\\u012F',\n\tIopf: '\\uD835\\uDD40',\n\tiopf: '\\uD835\\uDD5A',\n\tIota: '\\u0399',\n\tiota: '\\u03B9',\n\tiprod: '\\u2A3C',\n\tiquest: '\\u00BF',\n\tIscr: '\\u2110',\n\tiscr: '\\uD835\\uDCBE',\n\tisin: '\\u2208',\n\tisindot: '\\u22F5',\n\tisinE: '\\u22F9',\n\tisins: '\\u22F4',\n\tisinsv: '\\u22F3',\n\tisinv: '\\u2208',\n\tit: '\\u2062',\n\tItilde: '\\u0128',\n\titilde: '\\u0129',\n\tIukcy: '\\u0406',\n\tiukcy: '\\u0456',\n\tIuml: '\\u00CF',\n\tiuml: '\\u00EF',\n\tJcirc: '\\u0134',\n\tjcirc: '\\u0135',\n\tJcy: '\\u0419',\n\tjcy: '\\u0439',\n\tJfr: '\\uD835\\uDD0D',\n\tjfr: '\\uD835\\uDD27',\n\tjmath: '\\u0237',\n\tJopf: '\\uD835\\uDD41',\n\tjopf: '\\uD835\\uDD5B',\n\tJscr: '\\uD835\\uDCA5',\n\tjscr: '\\uD835\\uDCBF',\n\tJsercy: '\\u0408',\n\tjsercy: '\\u0458',\n\tJukcy: '\\u0404',\n\tjukcy: '\\u0454',\n\tKappa: '\\u039A',\n\tkappa: '\\u03BA',\n\tkappav: '\\u03F0',\n\tKcedil: '\\u0136',\n\tkcedil: '\\u0137',\n\tKcy: '\\u041A',\n\tkcy: '\\u043A',\n\tKfr: '\\uD835\\uDD0E',\n\tkfr: '\\uD835\\uDD28',\n\tkgreen: '\\u0138',\n\tKHcy: '\\u0425',\n\tkhcy: '\\u0445',\n\tKJcy: '\\u040C',\n\tkjcy: '\\u045C',\n\tKopf: '\\uD835\\uDD42',\n\tkopf: '\\uD835\\uDD5C',\n\tKscr: '\\uD835\\uDCA6',\n\tkscr: '\\uD835\\uDCC0',\n\tlAarr: '\\u21DA',\n\tLacute: '\\u0139',\n\tlacute: '\\u013A',\n\tlaemptyv: '\\u29B4',\n\tlagran: '\\u2112',\n\tLambda: '\\u039B',\n\tlambda: '\\u03BB',\n\tLang: '\\u27EA',\n\tlang: '\\u27E8',\n\tlangd: '\\u2991',\n\tlangle: '\\u27E8',\n\tlap: '\\u2A85',\n\tLaplacetrf: '\\u2112',\n\tlaquo: '\\u00AB',\n\tLarr: '\\u219E',\n\tlArr: '\\u21D0',\n\tlarr: '\\u2190',\n\tlarrb: '\\u21E4',\n\tlarrbfs: '\\u291F',\n\tlarrfs: '\\u291D',\n\tlarrhk: '\\u21A9',\n\tlarrlp: '\\u21AB',\n\tlarrpl: '\\u2939',\n\tlarrsim: '\\u2973',\n\tlarrtl: '\\u21A2',\n\tlat: '\\u2AAB',\n\tlAtail: '\\u291B',\n\tlatail: '\\u2919',\n\tlate: '\\u2AAD',\n\tlates: '\\u2AAD\\uFE00',\n\tlBarr: '\\u290E',\n\tlbarr: '\\u290C',\n\tlbbrk: '\\u2772',\n\tlbrace: '\\u007B',\n\tlbrack: '\\u005B',\n\tlbrke: '\\u298B',\n\tlbrksld: '\\u298F',\n\tlbrkslu: '\\u298D',\n\tLcaron: '\\u013D',\n\tlcaron: '\\u013E',\n\tLcedil: '\\u013B',\n\tlcedil: '\\u013C',\n\tlceil: '\\u2308',\n\tlcub: '\\u007B',\n\tLcy: '\\u041B',\n\tlcy: '\\u043B',\n\tldca: '\\u2936',\n\tldquo: '\\u201C',\n\tldquor: '\\u201E',\n\tldrdhar: '\\u2967',\n\tldrushar: '\\u294B',\n\tldsh: '\\u21B2',\n\tlE: '\\u2266',\n\tle: '\\u2264',\n\tLeftAngleBracket: '\\u27E8',\n\tLeftArrow: '\\u2190',\n\tLeftarrow: '\\u21D0',\n\tleftarrow: '\\u2190',\n\tLeftArrowBar: '\\u21E4',\n\tLeftArrowRightArrow: '\\u21C6',\n\tleftarrowtail: '\\u21A2',\n\tLeftCeiling: '\\u2308',\n\tLeftDoubleBracket: '\\u27E6',\n\tLeftDownTeeVector: '\\u2961',\n\tLeftDownVector: '\\u21C3',\n\tLeftDownVectorBar: '\\u2959',\n\tLeftFloor: '\\u230A',\n\tleftharpoondown: '\\u21BD',\n\tleftharpoonup: '\\u21BC',\n\tleftleftarrows: '\\u21C7',\n\tLeftRightArrow: '\\u2194',\n\tLeftrightarrow: '\\u21D4',\n\tleftrightarrow: '\\u2194',\n\tleftrightarrows: '\\u21C6',\n\tleftrightharpoons: '\\u21CB',\n\tleftrightsquigarrow: '\\u21AD',\n\tLeftRightVector: '\\u294E',\n\tLeftTee: '\\u22A3',\n\tLeftTeeArrow: '\\u21A4',\n\tLeftTeeVector: '\\u295A',\n\tleftthreetimes: '\\u22CB',\n\tLeftTriangle: '\\u22B2',\n\tLeftTriangleBar: '\\u29CF',\n\tLeftTriangleEqual: '\\u22B4',\n\tLeftUpDownVector: '\\u2951',\n\tLeftUpTeeVector: '\\u2960',\n\tLeftUpVector: '\\u21BF',\n\tLeftUpVectorBar: '\\u2958',\n\tLeftVector: '\\u21BC',\n\tLeftVectorBar: '\\u2952',\n\tlEg: '\\u2A8B',\n\tleg: '\\u22DA',\n\tleq: '\\u2264',\n\tleqq: '\\u2266',\n\tleqslant: '\\u2A7D',\n\tles: '\\u2A7D',\n\tlescc: '\\u2AA8',\n\tlesdot: '\\u2A7F',\n\tlesdoto: '\\u2A81',\n\tlesdotor: '\\u2A83',\n\tlesg: '\\u22DA\\uFE00',\n\tlesges: '\\u2A93',\n\tlessapprox: '\\u2A85',\n\tlessdot: '\\u22D6',\n\tlesseqgtr: '\\u22DA',\n\tlesseqqgtr: '\\u2A8B',\n\tLessEqualGreater: '\\u22DA',\n\tLessFullEqual: '\\u2266',\n\tLessGreater: '\\u2276',\n\tlessgtr: '\\u2276',\n\tLessLess: '\\u2AA1',\n\tlesssim: '\\u2272',\n\tLessSlantEqual: '\\u2A7D',\n\tLessTilde: '\\u2272',\n\tlfisht: '\\u297C',\n\tlfloor: '\\u230A',\n\tLfr: '\\uD835\\uDD0F',\n\tlfr: '\\uD835\\uDD29',\n\tlg: '\\u2276',\n\tlgE: '\\u2A91',\n\tlHar: '\\u2962',\n\tlhard: '\\u21BD',\n\tlharu: '\\u21BC',\n\tlharul: '\\u296A',\n\tlhblk: '\\u2584',\n\tLJcy: '\\u0409',\n\tljcy: '\\u0459',\n\tLl: '\\u22D8',\n\tll: '\\u226A',\n\tllarr: '\\u21C7',\n\tllcorner: '\\u231E',\n\tLleftarrow: '\\u21DA',\n\tllhard: '\\u296B',\n\tlltri: '\\u25FA',\n\tLmidot: '\\u013F',\n\tlmidot: '\\u0140',\n\tlmoust: '\\u23B0',\n\tlmoustache: '\\u23B0',\n\tlnap: '\\u2A89',\n\tlnapprox: '\\u2A89',\n\tlnE: '\\u2268',\n\tlne: '\\u2A87',\n\tlneq: '\\u2A87',\n\tlneqq: '\\u2268',\n\tlnsim: '\\u22E6',\n\tloang: '\\u27EC',\n\tloarr: '\\u21FD',\n\tlobrk: '\\u27E6',\n\tLongLeftArrow: '\\u27F5',\n\tLongleftarrow: '\\u27F8',\n\tlongleftarrow: '\\u27F5',\n\tLongLeftRightArrow: '\\u27F7',\n\tLongleftrightarrow: '\\u27FA',\n\tlongleftrightarrow: '\\u27F7',\n\tlongmapsto: '\\u27FC',\n\tLongRightArrow: '\\u27F6',\n\tLongrightarrow: '\\u27F9',\n\tlongrightarrow: '\\u27F6',\n\tlooparrowleft: '\\u21AB',\n\tlooparrowright: '\\u21AC',\n\tlopar: '\\u2985',\n\tLopf: '\\uD835\\uDD43',\n\tlopf: '\\uD835\\uDD5D',\n\tloplus: '\\u2A2D',\n\tlotimes: '\\u2A34',\n\tlowast: '\\u2217',\n\tlowbar: '\\u005F',\n\tLowerLeftArrow: '\\u2199',\n\tLowerRightArrow: '\\u2198',\n\tloz: '\\u25CA',\n\tlozenge: '\\u25CA',\n\tlozf: '\\u29EB',\n\tlpar: '\\u0028',\n\tlparlt: '\\u2993',\n\tlrarr: '\\u21C6',\n\tlrcorner: '\\u231F',\n\tlrhar: '\\u21CB',\n\tlrhard: '\\u296D',\n\tlrm: '\\u200E',\n\tlrtri: '\\u22BF',\n\tlsaquo: '\\u2039',\n\tLscr: '\\u2112',\n\tlscr: '\\uD835\\uDCC1',\n\tLsh: '\\u21B0',\n\tlsh: '\\u21B0',\n\tlsim: '\\u2272',\n\tlsime: '\\u2A8D',\n\tlsimg: '\\u2A8F',\n\tlsqb: '\\u005B',\n\tlsquo: '\\u2018',\n\tlsquor: '\\u201A',\n\tLstrok: '\\u0141',\n\tlstrok: '\\u0142',\n\tLt: '\\u226A',\n\tLT: '\\u003C',\n\tlt: '\\u003C',\n\tltcc: '\\u2AA6',\n\tltcir: '\\u2A79',\n\tltdot: '\\u22D6',\n\tlthree: '\\u22CB',\n\tltimes: '\\u22C9',\n\tltlarr: '\\u2976',\n\tltquest: '\\u2A7B',\n\tltri: '\\u25C3',\n\tltrie: '\\u22B4',\n\tltrif: '\\u25C2',\n\tltrPar: '\\u2996',\n\tlurdshar: '\\u294A',\n\tluruhar: '\\u2966',\n\tlvertneqq: '\\u2268\\uFE00',\n\tlvnE: '\\u2268\\uFE00',\n\tmacr: '\\u00AF',\n\tmale: '\\u2642',\n\tmalt: '\\u2720',\n\tmaltese: '\\u2720',\n\tMap: '\\u2905',\n\tmap: '\\u21A6',\n\tmapsto: '\\u21A6',\n\tmapstodown: '\\u21A7',\n\tmapstoleft: '\\u21A4',\n\tmapstoup: '\\u21A5',\n\tmarker: '\\u25AE',\n\tmcomma: '\\u2A29',\n\tMcy: '\\u041C',\n\tmcy: '\\u043C',\n\tmdash: '\\u2014',\n\tmDDot: '\\u223A',\n\tmeasuredangle: '\\u2221',\n\tMediumSpace: '\\u205F',\n\tMellintrf: '\\u2133',\n\tMfr: '\\uD835\\uDD10',\n\tmfr: '\\uD835\\uDD2A',\n\tmho: '\\u2127',\n\tmicro: '\\u00B5',\n\tmid: '\\u2223',\n\tmidast: '\\u002A',\n\tmidcir: '\\u2AF0',\n\tmiddot: '\\u00B7',\n\tminus: '\\u2212',\n\tminusb: '\\u229F',\n\tminusd: '\\u2238',\n\tminusdu: '\\u2A2A',\n\tMinusPlus: '\\u2213',\n\tmlcp: '\\u2ADB',\n\tmldr: '\\u2026',\n\tmnplus: '\\u2213',\n\tmodels: '\\u22A7',\n\tMopf: '\\uD835\\uDD44',\n\tmopf: '\\uD835\\uDD5E',\n\tmp: '\\u2213',\n\tMscr: '\\u2133',\n\tmscr: '\\uD835\\uDCC2',\n\tmstpos: '\\u223E',\n\tMu: '\\u039C',\n\tmu: '\\u03BC',\n\tmultimap: '\\u22B8',\n\tmumap: '\\u22B8',\n\tnabla: '\\u2207',\n\tNacute: '\\u0143',\n\tnacute: '\\u0144',\n\tnang: '\\u2220\\u20D2',\n\tnap: '\\u2249',\n\tnapE: '\\u2A70\\u0338',\n\tnapid: '\\u224B\\u0338',\n\tnapos: '\\u0149',\n\tnapprox: '\\u2249',\n\tnatur: '\\u266E',\n\tnatural: '\\u266E',\n\tnaturals: '\\u2115',\n\tnbsp: '\\u00A0',\n\tnbump: '\\u224E\\u0338',\n\tnbumpe: '\\u224F\\u0338',\n\tncap: '\\u2A43',\n\tNcaron: '\\u0147',\n\tncaron: '\\u0148',\n\tNcedil: '\\u0145',\n\tncedil: '\\u0146',\n\tncong: '\\u2247',\n\tncongdot: '\\u2A6D\\u0338',\n\tncup: '\\u2A42',\n\tNcy: '\\u041D',\n\tncy: '\\u043D',\n\tndash: '\\u2013',\n\tne: '\\u2260',\n\tnearhk: '\\u2924',\n\tneArr: '\\u21D7',\n\tnearr: '\\u2197',\n\tnearrow: '\\u2197',\n\tnedot: '\\u2250\\u0338',\n\tNegativeMediumSpace: '\\u200B',\n\tNegativeThickSpace: '\\u200B',\n\tNegativeThinSpace: '\\u200B',\n\tNegativeVeryThinSpace: '\\u200B',\n\tnequiv: '\\u2262',\n\tnesear: '\\u2928',\n\tnesim: '\\u2242\\u0338',\n\tNestedGreaterGreater: '\\u226B',\n\tNestedLessLess: '\\u226A',\n\tNewLine: '\\u000A',\n\tnexist: '\\u2204',\n\tnexists: '\\u2204',\n\tNfr: '\\uD835\\uDD11',\n\tnfr: '\\uD835\\uDD2B',\n\tngE: '\\u2267\\u0338',\n\tnge: '\\u2271',\n\tngeq: '\\u2271',\n\tngeqq: '\\u2267\\u0338',\n\tngeqslant: '\\u2A7E\\u0338',\n\tnges: '\\u2A7E\\u0338',\n\tnGg: '\\u22D9\\u0338',\n\tngsim: '\\u2275',\n\tnGt: '\\u226B\\u20D2',\n\tngt: '\\u226F',\n\tngtr: '\\u226F',\n\tnGtv: '\\u226B\\u0338',\n\tnhArr: '\\u21CE',\n\tnharr: '\\u21AE',\n\tnhpar: '\\u2AF2',\n\tni: '\\u220B',\n\tnis: '\\u22FC',\n\tnisd: '\\u22FA',\n\tniv: '\\u220B',\n\tNJcy: '\\u040A',\n\tnjcy: '\\u045A',\n\tnlArr: '\\u21CD',\n\tnlarr: '\\u219A',\n\tnldr: '\\u2025',\n\tnlE: '\\u2266\\u0338',\n\tnle: '\\u2270',\n\tnLeftarrow: '\\u21CD',\n\tnleftarrow: '\\u219A',\n\tnLeftrightarrow: '\\u21CE',\n\tnleftrightarrow: '\\u21AE',\n\tnleq: '\\u2270',\n\tnleqq: '\\u2266\\u0338',\n\tnleqslant: '\\u2A7D\\u0338',\n\tnles: '\\u2A7D\\u0338',\n\tnless: '\\u226E',\n\tnLl: '\\u22D8\\u0338',\n\tnlsim: '\\u2274',\n\tnLt: '\\u226A\\u20D2',\n\tnlt: '\\u226E',\n\tnltri: '\\u22EA',\n\tnltrie: '\\u22EC',\n\tnLtv: '\\u226A\\u0338',\n\tnmid: '\\u2224',\n\tNoBreak: '\\u2060',\n\tNonBreakingSpace: '\\u00A0',\n\tNopf: '\\u2115',\n\tnopf: '\\uD835\\uDD5F',\n\tNot: '\\u2AEC',\n\tnot: '\\u00AC',\n\tNotCongruent: '\\u2262',\n\tNotCupCap: '\\u226D',\n\tNotDoubleVerticalBar: '\\u2226',\n\tNotElement: '\\u2209',\n\tNotEqual: '\\u2260',\n\tNotEqualTilde: '\\u2242\\u0338',\n\tNotExists: '\\u2204',\n\tNotGreater: '\\u226F',\n\tNotGreaterEqual: '\\u2271',\n\tNotGreaterFullEqual: '\\u2267\\u0338',\n\tNotGreaterGreater: '\\u226B\\u0338',\n\tNotGreaterLess: '\\u2279',\n\tNotGreaterSlantEqual: '\\u2A7E\\u0338',\n\tNotGreaterTilde: '\\u2275',\n\tNotHumpDownHump: '\\u224E\\u0338',\n\tNotHumpEqual: '\\u224F\\u0338',\n\tnotin: '\\u2209',\n\tnotindot: '\\u22F5\\u0338',\n\tnotinE: '\\u22F9\\u0338',\n\tnotinva: '\\u2209',\n\tnotinvb: '\\u22F7',\n\tnotinvc: '\\u22F6',\n\tNotLeftTriangle: '\\u22EA',\n\tNotLeftTriangleBar: '\\u29CF\\u0338',\n\tNotLeftTriangleEqual: '\\u22EC',\n\tNotLess: '\\u226E',\n\tNotLessEqual: '\\u2270',\n\tNotLessGreater: '\\u2278',\n\tNotLessLess: '\\u226A\\u0338',\n\tNotLessSlantEqual: '\\u2A7D\\u0338',\n\tNotLessTilde: '\\u2274',\n\tNotNestedGreaterGreater: '\\u2AA2\\u0338',\n\tNotNestedLessLess: '\\u2AA1\\u0338',\n\tnotni: '\\u220C',\n\tnotniva: '\\u220C',\n\tnotnivb: '\\u22FE',\n\tnotnivc: '\\u22FD',\n\tNotPrecedes: '\\u2280',\n\tNotPrecedesEqual: '\\u2AAF\\u0338',\n\tNotPrecedesSlantEqual: '\\u22E0',\n\tNotReverseElement: '\\u220C',\n\tNotRightTriangle: '\\u22EB',\n\tNotRightTriangleBar: '\\u29D0\\u0338',\n\tNotRightTriangleEqual: '\\u22ED',\n\tNotSquareSubset: '\\u228F\\u0338',\n\tNotSquareSubsetEqual: '\\u22E2',\n\tNotSquareSuperset: '\\u2290\\u0338',\n\tNotSquareSupersetEqual: '\\u22E3',\n\tNotSubset: '\\u2282\\u20D2',\n\tNotSubsetEqual: '\\u2288',\n\tNotSucceeds: '\\u2281',\n\tNotSucceedsEqual: '\\u2AB0\\u0338',\n\tNotSucceedsSlantEqual: '\\u22E1',\n\tNotSucceedsTilde: '\\u227F\\u0338',\n\tNotSuperset: '\\u2283\\u20D2',\n\tNotSupersetEqual: '\\u2289',\n\tNotTilde: '\\u2241',\n\tNotTildeEqual: '\\u2244',\n\tNotTildeFullEqual: '\\u2247',\n\tNotTildeTilde: '\\u2249',\n\tNotVerticalBar: '\\u2224',\n\tnpar: '\\u2226',\n\tnparallel: '\\u2226',\n\tnparsl: '\\u2AFD\\u20E5',\n\tnpart: '\\u2202\\u0338',\n\tnpolint: '\\u2A14',\n\tnpr: '\\u2280',\n\tnprcue: '\\u22E0',\n\tnpre: '\\u2AAF\\u0338',\n\tnprec: '\\u2280',\n\tnpreceq: '\\u2AAF\\u0338',\n\tnrArr: '\\u21CF',\n\tnrarr: '\\u219B',\n\tnrarrc: '\\u2933\\u0338',\n\tnrarrw: '\\u219D\\u0338',\n\tnRightarrow: '\\u21CF',\n\tnrightarrow: '\\u219B',\n\tnrtri: '\\u22EB',\n\tnrtrie: '\\u22ED',\n\tnsc: '\\u2281',\n\tnsccue: '\\u22E1',\n\tnsce: '\\u2AB0\\u0338',\n\tNscr: '\\uD835\\uDCA9',\n\tnscr: '\\uD835\\uDCC3',\n\tnshortmid: '\\u2224',\n\tnshortparallel: '\\u2226',\n\tnsim: '\\u2241',\n\tnsime: '\\u2244',\n\tnsimeq: '\\u2244',\n\tnsmid: '\\u2224',\n\tnspar: '\\u2226',\n\tnsqsube: '\\u22E2',\n\tnsqsupe: '\\u22E3',\n\tnsub: '\\u2284',\n\tnsubE: '\\u2AC5\\u0338',\n\tnsube: '\\u2288',\n\tnsubset: '\\u2282\\u20D2',\n\tnsubseteq: '\\u2288',\n\tnsubseteqq: '\\u2AC5\\u0338',\n\tnsucc: '\\u2281',\n\tnsucceq: '\\u2AB0\\u0338',\n\tnsup: '\\u2285',\n\tnsupE: '\\u2AC6\\u0338',\n\tnsupe: '\\u2289',\n\tnsupset: '\\u2283\\u20D2',\n\tnsupseteq: '\\u2289',\n\tnsupseteqq: '\\u2AC6\\u0338',\n\tntgl: '\\u2279',\n\tNtilde: '\\u00D1',\n\tntilde: '\\u00F1',\n\tntlg: '\\u2278',\n\tntriangleleft: '\\u22EA',\n\tntrianglelefteq: '\\u22EC',\n\tntriangleright: '\\u22EB',\n\tntrianglerighteq: '\\u22ED',\n\tNu: '\\u039D',\n\tnu: '\\u03BD',\n\tnum: '\\u0023',\n\tnumero: '\\u2116',\n\tnumsp: '\\u2007',\n\tnvap: '\\u224D\\u20D2',\n\tnVDash: '\\u22AF',\n\tnVdash: '\\u22AE',\n\tnvDash: '\\u22AD',\n\tnvdash: '\\u22AC',\n\tnvge: '\\u2265\\u20D2',\n\tnvgt: '\\u003E\\u20D2',\n\tnvHarr: '\\u2904',\n\tnvinfin: '\\u29DE',\n\tnvlArr: '\\u2902',\n\tnvle: '\\u2264\\u20D2',\n\tnvlt: '\\u003C\\u20D2',\n\tnvltrie: '\\u22B4\\u20D2',\n\tnvrArr: '\\u2903',\n\tnvrtrie: '\\u22B5\\u20D2',\n\tnvsim: '\\u223C\\u20D2',\n\tnwarhk: '\\u2923',\n\tnwArr: '\\u21D6',\n\tnwarr: '\\u2196',\n\tnwarrow: '\\u2196',\n\tnwnear: '\\u2927',\n\tOacute: '\\u00D3',\n\toacute: '\\u00F3',\n\toast: '\\u229B',\n\tocir: '\\u229A',\n\tOcirc: '\\u00D4',\n\tocirc: '\\u00F4',\n\tOcy: '\\u041E',\n\tocy: '\\u043E',\n\todash: '\\u229D',\n\tOdblac: '\\u0150',\n\todblac: '\\u0151',\n\todiv: '\\u2A38',\n\todot: '\\u2299',\n\todsold: '\\u29BC',\n\tOElig: '\\u0152',\n\toelig: '\\u0153',\n\tofcir: '\\u29BF',\n\tOfr: '\\uD835\\uDD12',\n\tofr: '\\uD835\\uDD2C',\n\togon: '\\u02DB',\n\tOgrave: '\\u00D2',\n\tograve: '\\u00F2',\n\togt: '\\u29C1',\n\tohbar: '\\u29B5',\n\tohm: '\\u03A9',\n\toint: '\\u222E',\n\tolarr: '\\u21BA',\n\tolcir: '\\u29BE',\n\tolcross: '\\u29BB',\n\toline: '\\u203E',\n\tolt: '\\u29C0',\n\tOmacr: '\\u014C',\n\tomacr: '\\u014D',\n\tOmega: '\\u03A9',\n\tomega: '\\u03C9',\n\tOmicron: '\\u039F',\n\tomicron: '\\u03BF',\n\tomid: '\\u29B6',\n\tominus: '\\u2296',\n\tOopf: '\\uD835\\uDD46',\n\toopf: '\\uD835\\uDD60',\n\topar: '\\u29B7',\n\tOpenCurlyDoubleQuote: '\\u201C',\n\tOpenCurlyQuote: '\\u2018',\n\toperp: '\\u29B9',\n\toplus: '\\u2295',\n\tOr: '\\u2A54',\n\tor: '\\u2228',\n\torarr: '\\u21BB',\n\tord: '\\u2A5D',\n\torder: '\\u2134',\n\torderof: '\\u2134',\n\tordf: '\\u00AA',\n\tordm: '\\u00BA',\n\torigof: '\\u22B6',\n\toror: '\\u2A56',\n\torslope: '\\u2A57',\n\torv: '\\u2A5B',\n\toS: '\\u24C8',\n\tOscr: '\\uD835\\uDCAA',\n\toscr: '\\u2134',\n\tOslash: '\\u00D8',\n\toslash: '\\u00F8',\n\tosol: '\\u2298',\n\tOtilde: '\\u00D5',\n\totilde: '\\u00F5',\n\tOtimes: '\\u2A37',\n\totimes: '\\u2297',\n\totimesas: '\\u2A36',\n\tOuml: '\\u00D6',\n\touml: '\\u00F6',\n\tovbar: '\\u233D',\n\tOverBar: '\\u203E',\n\tOverBrace: '\\u23DE',\n\tOverBracket: '\\u23B4',\n\tOverParenthesis: '\\u23DC',\n\tpar: '\\u2225',\n\tpara: '\\u00B6',\n\tparallel: '\\u2225',\n\tparsim: '\\u2AF3',\n\tparsl: '\\u2AFD',\n\tpart: '\\u2202',\n\tPartialD: '\\u2202',\n\tPcy: '\\u041F',\n\tpcy: '\\u043F',\n\tpercnt: '\\u0025',\n\tperiod: '\\u002E',\n\tpermil: '\\u2030',\n\tperp: '\\u22A5',\n\tpertenk: '\\u2031',\n\tPfr: '\\uD835\\uDD13',\n\tpfr: '\\uD835\\uDD2D',\n\tPhi: '\\u03A6',\n\tphi: '\\u03C6',\n\tphiv: '\\u03D5',\n\tphmmat: '\\u2133',\n\tphone: '\\u260E',\n\tPi: '\\u03A0',\n\tpi: '\\u03C0',\n\tpitchfork: '\\u22D4',\n\tpiv: '\\u03D6',\n\tplanck: '\\u210F',\n\tplanckh: '\\u210E',\n\tplankv: '\\u210F',\n\tplus: '\\u002B',\n\tplusacir: '\\u2A23',\n\tplusb: '\\u229E',\n\tpluscir: '\\u2A22',\n\tplusdo: '\\u2214',\n\tplusdu: '\\u2A25',\n\tpluse: '\\u2A72',\n\tPlusMinus: '\\u00B1',\n\tplusmn: '\\u00B1',\n\tplussim: '\\u2A26',\n\tplustwo: '\\u2A27',\n\tpm: '\\u00B1',\n\tPoincareplane: '\\u210C',\n\tpointint: '\\u2A15',\n\tPopf: '\\u2119',\n\tpopf: '\\uD835\\uDD61',\n\tpound: '\\u00A3',\n\tPr: '\\u2ABB',\n\tpr: '\\u227A',\n\tprap: '\\u2AB7',\n\tprcue: '\\u227C',\n\tprE: '\\u2AB3',\n\tpre: '\\u2AAF',\n\tprec: '\\u227A',\n\tprecapprox: '\\u2AB7',\n\tpreccurlyeq: '\\u227C',\n\tPrecedes: '\\u227A',\n\tPrecedesEqual: '\\u2AAF',\n\tPrecedesSlantEqual: '\\u227C',\n\tPrecedesTilde: '\\u227E',\n\tpreceq: '\\u2AAF',\n\tprecnapprox: '\\u2AB9',\n\tprecneqq: '\\u2AB5',\n\tprecnsim: '\\u22E8',\n\tprecsim: '\\u227E',\n\tPrime: '\\u2033',\n\tprime: '\\u2032',\n\tprimes: '\\u2119',\n\tprnap: '\\u2AB9',\n\tprnE: '\\u2AB5',\n\tprnsim: '\\u22E8',\n\tprod: '\\u220F',\n\tProduct: '\\u220F',\n\tprofalar: '\\u232E',\n\tprofline: '\\u2312',\n\tprofsurf: '\\u2313',\n\tprop: '\\u221D',\n\tProportion: '\\u2237',\n\tProportional: '\\u221D',\n\tpropto: '\\u221D',\n\tprsim: '\\u227E',\n\tprurel: '\\u22B0',\n\tPscr: '\\uD835\\uDCAB',\n\tpscr: '\\uD835\\uDCC5',\n\tPsi: '\\u03A8',\n\tpsi: '\\u03C8',\n\tpuncsp: '\\u2008',\n\tQfr: '\\uD835\\uDD14',\n\tqfr: '\\uD835\\uDD2E',\n\tqint: '\\u2A0C',\n\tQopf: '\\u211A',\n\tqopf: '\\uD835\\uDD62',\n\tqprime: '\\u2057',\n\tQscr: '\\uD835\\uDCAC',\n\tqscr: '\\uD835\\uDCC6',\n\tquaternions: '\\u210D',\n\tquatint: '\\u2A16',\n\tquest: '\\u003F',\n\tquesteq: '\\u225F',\n\tQUOT: '\\u0022',\n\tquot: '\\u0022',\n\trAarr: '\\u21DB',\n\trace: '\\u223D\\u0331',\n\tRacute: '\\u0154',\n\tracute: '\\u0155',\n\tradic: '\\u221A',\n\traemptyv: '\\u29B3',\n\tRang: '\\u27EB',\n\trang: '\\u27E9',\n\trangd: '\\u2992',\n\trange: '\\u29A5',\n\trangle: '\\u27E9',\n\traquo: '\\u00BB',\n\tRarr: '\\u21A0',\n\trArr: '\\u21D2',\n\trarr: '\\u2192',\n\trarrap: '\\u2975',\n\trarrb: '\\u21E5',\n\trarrbfs: '\\u2920',\n\trarrc: '\\u2933',\n\trarrfs: '\\u291E',\n\trarrhk: '\\u21AA',\n\trarrlp: '\\u21AC',\n\trarrpl: '\\u2945',\n\trarrsim: '\\u2974',\n\tRarrtl: '\\u2916',\n\trarrtl: '\\u21A3',\n\trarrw: '\\u219D',\n\trAtail: '\\u291C',\n\tratail: '\\u291A',\n\tratio: '\\u2236',\n\trationals: '\\u211A',\n\tRBarr: '\\u2910',\n\trBarr: '\\u290F',\n\trbarr: '\\u290D',\n\trbbrk: '\\u2773',\n\trbrace: '\\u007D',\n\trbrack: '\\u005D',\n\trbrke: '\\u298C',\n\trbrksld: '\\u298E',\n\trbrkslu: '\\u2990',\n\tRcaron: '\\u0158',\n\trcaron: '\\u0159',\n\tRcedil: '\\u0156',\n\trcedil: '\\u0157',\n\trceil: '\\u2309',\n\trcub: '\\u007D',\n\tRcy: '\\u0420',\n\trcy: '\\u0440',\n\trdca: '\\u2937',\n\trdldhar: '\\u2969',\n\trdquo: '\\u201D',\n\trdquor: '\\u201D',\n\trdsh: '\\u21B3',\n\tRe: '\\u211C',\n\treal: '\\u211C',\n\trealine: '\\u211B',\n\trealpart: '\\u211C',\n\treals: '\\u211D',\n\trect: '\\u25AD',\n\tREG: '\\u00AE',\n\treg: '\\u00AE',\n\tReverseElement: '\\u220B',\n\tReverseEquilibrium: '\\u21CB',\n\tReverseUpEquilibrium: '\\u296F',\n\trfisht: '\\u297D',\n\trfloor: '\\u230B',\n\tRfr: '\\u211C',\n\trfr: '\\uD835\\uDD2F',\n\trHar: '\\u2964',\n\trhard: '\\u21C1',\n\trharu: '\\u21C0',\n\trharul: '\\u296C',\n\tRho: '\\u03A1',\n\trho: '\\u03C1',\n\trhov: '\\u03F1',\n\tRightAngleBracket: '\\u27E9',\n\tRightArrow: '\\u2192',\n\tRightarrow: '\\u21D2',\n\trightarrow: '\\u2192',\n\tRightArrowBar: '\\u21E5',\n\tRightArrowLeftArrow: '\\u21C4',\n\trightarrowtail: '\\u21A3',\n\tRightCeiling: '\\u2309',\n\tRightDoubleBracket: '\\u27E7',\n\tRightDownTeeVector: '\\u295D',\n\tRightDownVector: '\\u21C2',\n\tRightDownVectorBar: '\\u2955',\n\tRightFloor: '\\u230B',\n\trightharpoondown: '\\u21C1',\n\trightharpoonup: '\\u21C0',\n\trightleftarrows: '\\u21C4',\n\trightleftharpoons: '\\u21CC',\n\trightrightarrows: '\\u21C9',\n\trightsquigarrow: '\\u219D',\n\tRightTee: '\\u22A2',\n\tRightTeeArrow: '\\u21A6',\n\tRightTeeVector: '\\u295B',\n\trightthreetimes: '\\u22CC',\n\tRightTriangle: '\\u22B3',\n\tRightTriangleBar: '\\u29D0',\n\tRightTriangleEqual: '\\u22B5',\n\tRightUpDownVector: '\\u294F',\n\tRightUpTeeVector: '\\u295C',\n\tRightUpVector: '\\u21BE',\n\tRightUpVectorBar: '\\u2954',\n\tRightVector: '\\u21C0',\n\tRightVectorBar: '\\u2953',\n\tring: '\\u02DA',\n\trisingdotseq: '\\u2253',\n\trlarr: '\\u21C4',\n\trlhar: '\\u21CC',\n\trlm: '\\u200F',\n\trmoust: '\\u23B1',\n\trmoustache: '\\u23B1',\n\trnmid: '\\u2AEE',\n\troang: '\\u27ED',\n\troarr: '\\u21FE',\n\trobrk: '\\u27E7',\n\tropar: '\\u2986',\n\tRopf: '\\u211D',\n\tropf: '\\uD835\\uDD63',\n\troplus: '\\u2A2E',\n\trotimes: '\\u2A35',\n\tRoundImplies: '\\u2970',\n\trpar: '\\u0029',\n\trpargt: '\\u2994',\n\trppolint: '\\u2A12',\n\trrarr: '\\u21C9',\n\tRrightarrow: '\\u21DB',\n\trsaquo: '\\u203A',\n\tRscr: '\\u211B',\n\trscr: '\\uD835\\uDCC7',\n\tRsh: '\\u21B1',\n\trsh: '\\u21B1',\n\trsqb: '\\u005D',\n\trsquo: '\\u2019',\n\trsquor: '\\u2019',\n\trthree: '\\u22CC',\n\trtimes: '\\u22CA',\n\trtri: '\\u25B9',\n\trtrie: '\\u22B5',\n\trtrif: '\\u25B8',\n\trtriltri: '\\u29CE',\n\tRuleDelayed: '\\u29F4',\n\truluhar: '\\u2968',\n\trx: '\\u211E',\n\tSacute: '\\u015A',\n\tsacute: '\\u015B',\n\tsbquo: '\\u201A',\n\tSc: '\\u2ABC',\n\tsc: '\\u227B',\n\tscap: '\\u2AB8',\n\tScaron: '\\u0160',\n\tscaron: '\\u0161',\n\tsccue: '\\u227D',\n\tscE: '\\u2AB4',\n\tsce: '\\u2AB0',\n\tScedil: '\\u015E',\n\tscedil: '\\u015F',\n\tScirc: '\\u015C',\n\tscirc: '\\u015D',\n\tscnap: '\\u2ABA',\n\tscnE: '\\u2AB6',\n\tscnsim: '\\u22E9',\n\tscpolint: '\\u2A13',\n\tscsim: '\\u227F',\n\tScy: '\\u0421',\n\tscy: '\\u0441',\n\tsdot: '\\u22C5',\n\tsdotb: '\\u22A1',\n\tsdote: '\\u2A66',\n\tsearhk: '\\u2925',\n\tseArr: '\\u21D8',\n\tsearr: '\\u2198',\n\tsearrow: '\\u2198',\n\tsect: '\\u00A7',\n\tsemi: '\\u003B',\n\tseswar: '\\u2929',\n\tsetminus: '\\u2216',\n\tsetmn: '\\u2216',\n\tsext: '\\u2736',\n\tSfr: '\\uD835\\uDD16',\n\tsfr: '\\uD835\\uDD30',\n\tsfrown: '\\u2322',\n\tsharp: '\\u266F',\n\tSHCHcy: '\\u0429',\n\tshchcy: '\\u0449',\n\tSHcy: '\\u0428',\n\tshcy: '\\u0448',\n\tShortDownArrow: '\\u2193',\n\tShortLeftArrow: '\\u2190',\n\tshortmid: '\\u2223',\n\tshortparallel: '\\u2225',\n\tShortRightArrow: '\\u2192',\n\tShortUpArrow: '\\u2191',\n\tshy: '\\u00AD',\n\tSigma: '\\u03A3',\n\tsigma: '\\u03C3',\n\tsigmaf: '\\u03C2',\n\tsigmav: '\\u03C2',\n\tsim: '\\u223C',\n\tsimdot: '\\u2A6A',\n\tsime: '\\u2243',\n\tsimeq: '\\u2243',\n\tsimg: '\\u2A9E',\n\tsimgE: '\\u2AA0',\n\tsiml: '\\u2A9D',\n\tsimlE: '\\u2A9F',\n\tsimne: '\\u2246',\n\tsimplus: '\\u2A24',\n\tsimrarr: '\\u2972',\n\tslarr: '\\u2190',\n\tSmallCircle: '\\u2218',\n\tsmallsetminus: '\\u2216',\n\tsmashp: '\\u2A33',\n\tsmeparsl: '\\u29E4',\n\tsmid: '\\u2223',\n\tsmile: '\\u2323',\n\tsmt: '\\u2AAA',\n\tsmte: '\\u2AAC',\n\tsmtes: '\\u2AAC\\uFE00',\n\tSOFTcy: '\\u042C',\n\tsoftcy: '\\u044C',\n\tsol: '\\u002F',\n\tsolb: '\\u29C4',\n\tsolbar: '\\u233F',\n\tSopf: '\\uD835\\uDD4A',\n\tsopf: '\\uD835\\uDD64',\n\tspades: '\\u2660',\n\tspadesuit: '\\u2660',\n\tspar: '\\u2225',\n\tsqcap: '\\u2293',\n\tsqcaps: '\\u2293\\uFE00',\n\tsqcup: '\\u2294',\n\tsqcups: '\\u2294\\uFE00',\n\tSqrt: '\\u221A',\n\tsqsub: '\\u228F',\n\tsqsube: '\\u2291',\n\tsqsubset: '\\u228F',\n\tsqsubseteq: '\\u2291',\n\tsqsup: '\\u2290',\n\tsqsupe: '\\u2292',\n\tsqsupset: '\\u2290',\n\tsqsupseteq: '\\u2292',\n\tsqu: '\\u25A1',\n\tSquare: '\\u25A1',\n\tsquare: '\\u25A1',\n\tSquareIntersection: '\\u2293',\n\tSquareSubset: '\\u228F',\n\tSquareSubsetEqual: '\\u2291',\n\tSquareSuperset: '\\u2290',\n\tSquareSupersetEqual: '\\u2292',\n\tSquareUnion: '\\u2294',\n\tsquarf: '\\u25AA',\n\tsquf: '\\u25AA',\n\tsrarr: '\\u2192',\n\tSscr: '\\uD835\\uDCAE',\n\tsscr: '\\uD835\\uDCC8',\n\tssetmn: '\\u2216',\n\tssmile: '\\u2323',\n\tsstarf: '\\u22C6',\n\tStar: '\\u22C6',\n\tstar: '\\u2606',\n\tstarf: '\\u2605',\n\tstraightepsilon: '\\u03F5',\n\tstraightphi: '\\u03D5',\n\tstrns: '\\u00AF',\n\tSub: '\\u22D0',\n\tsub: '\\u2282',\n\tsubdot: '\\u2ABD',\n\tsubE: '\\u2AC5',\n\tsube: '\\u2286',\n\tsubedot: '\\u2AC3',\n\tsubmult: '\\u2AC1',\n\tsubnE: '\\u2ACB',\n\tsubne: '\\u228A',\n\tsubplus: '\\u2ABF',\n\tsubrarr: '\\u2979',\n\tSubset: '\\u22D0',\n\tsubset: '\\u2282',\n\tsubseteq: '\\u2286',\n\tsubseteqq: '\\u2AC5',\n\tSubsetEqual: '\\u2286',\n\tsubsetneq: '\\u228A',\n\tsubsetneqq: '\\u2ACB',\n\tsubsim: '\\u2AC7',\n\tsubsub: '\\u2AD5',\n\tsubsup: '\\u2AD3',\n\tsucc: '\\u227B',\n\tsuccapprox: '\\u2AB8',\n\tsucccurlyeq: '\\u227D',\n\tSucceeds: '\\u227B',\n\tSucceedsEqual: '\\u2AB0',\n\tSucceedsSlantEqual: '\\u227D',\n\tSucceedsTilde: '\\u227F',\n\tsucceq: '\\u2AB0',\n\tsuccnapprox: '\\u2ABA',\n\tsuccneqq: '\\u2AB6',\n\tsuccnsim: '\\u22E9',\n\tsuccsim: '\\u227F',\n\tSuchThat: '\\u220B',\n\tSum: '\\u2211',\n\tsum: '\\u2211',\n\tsung: '\\u266A',\n\tSup: '\\u22D1',\n\tsup: '\\u2283',\n\tsup1: '\\u00B9',\n\tsup2: '\\u00B2',\n\tsup3: '\\u00B3',\n\tsupdot: '\\u2ABE',\n\tsupdsub: '\\u2AD8',\n\tsupE: '\\u2AC6',\n\tsupe: '\\u2287',\n\tsupedot: '\\u2AC4',\n\tSuperset: '\\u2283',\n\tSupersetEqual: '\\u2287',\n\tsuphsol: '\\u27C9',\n\tsuphsub: '\\u2AD7',\n\tsuplarr: '\\u297B',\n\tsupmult: '\\u2AC2',\n\tsupnE: '\\u2ACC',\n\tsupne: '\\u228B',\n\tsupplus: '\\u2AC0',\n\tSupset: '\\u22D1',\n\tsupset: '\\u2283',\n\tsupseteq: '\\u2287',\n\tsupseteqq: '\\u2AC6',\n\tsupsetneq: '\\u228B',\n\tsupsetneqq: '\\u2ACC',\n\tsupsim: '\\u2AC8',\n\tsupsub: '\\u2AD4',\n\tsupsup: '\\u2AD6',\n\tswarhk: '\\u2926',\n\tswArr: '\\u21D9',\n\tswarr: '\\u2199',\n\tswarrow: '\\u2199',\n\tswnwar: '\\u292A',\n\tszlig: '\\u00DF',\n\tTab: '\\u0009',\n\ttarget: '\\u2316',\n\tTau: '\\u03A4',\n\ttau: '\\u03C4',\n\ttbrk: '\\u23B4',\n\tTcaron: '\\u0164',\n\ttcaron: '\\u0165',\n\tTcedil: '\\u0162',\n\ttcedil: '\\u0163',\n\tTcy: '\\u0422',\n\ttcy: '\\u0442',\n\ttdot: '\\u20DB',\n\ttelrec: '\\u2315',\n\tTfr: '\\uD835\\uDD17',\n\ttfr: '\\uD835\\uDD31',\n\tthere4: '\\u2234',\n\tTherefore: '\\u2234',\n\ttherefore: '\\u2234',\n\tTheta: '\\u0398',\n\ttheta: '\\u03B8',\n\tthetasym: '\\u03D1',\n\tthetav: '\\u03D1',\n\tthickapprox: '\\u2248',\n\tthicksim: '\\u223C',\n\tThickSpace: '\\u205F\\u200A',\n\tthinsp: '\\u2009',\n\tThinSpace: '\\u2009',\n\tthkap: '\\u2248',\n\tthksim: '\\u223C',\n\tTHORN: '\\u00DE',\n\tthorn: '\\u00FE',\n\tTilde: '\\u223C',\n\ttilde: '\\u02DC',\n\tTildeEqual: '\\u2243',\n\tTildeFullEqual: '\\u2245',\n\tTildeTilde: '\\u2248',\n\ttimes: '\\u00D7',\n\ttimesb: '\\u22A0',\n\ttimesbar: '\\u2A31',\n\ttimesd: '\\u2A30',\n\ttint: '\\u222D',\n\ttoea: '\\u2928',\n\ttop: '\\u22A4',\n\ttopbot: '\\u2336',\n\ttopcir: '\\u2AF1',\n\tTopf: '\\uD835\\uDD4B',\n\ttopf: '\\uD835\\uDD65',\n\ttopfork: '\\u2ADA',\n\ttosa: '\\u2929',\n\ttprime: '\\u2034',\n\tTRADE: '\\u2122',\n\ttrade: '\\u2122',\n\ttriangle: '\\u25B5',\n\ttriangledown: '\\u25BF',\n\ttriangleleft: '\\u25C3',\n\ttrianglelefteq: '\\u22B4',\n\ttriangleq: '\\u225C',\n\ttriangleright: '\\u25B9',\n\ttrianglerighteq: '\\u22B5',\n\ttridot: '\\u25EC',\n\ttrie: '\\u225C',\n\ttriminus: '\\u2A3A',\n\tTripleDot: '\\u20DB',\n\ttriplus: '\\u2A39',\n\ttrisb: '\\u29CD',\n\ttritime: '\\u2A3B',\n\ttrpezium: '\\u23E2',\n\tTscr: '\\uD835\\uDCAF',\n\ttscr: '\\uD835\\uDCC9',\n\tTScy: '\\u0426',\n\ttscy: '\\u0446',\n\tTSHcy: '\\u040B',\n\ttshcy: '\\u045B',\n\tTstrok: '\\u0166',\n\ttstrok: '\\u0167',\n\ttwixt: '\\u226C',\n\ttwoheadleftarrow: '\\u219E',\n\ttwoheadrightarrow: '\\u21A0',\n\tUacute: '\\u00DA',\n\tuacute: '\\u00FA',\n\tUarr: '\\u219F',\n\tuArr: '\\u21D1',\n\tuarr: '\\u2191',\n\tUarrocir: '\\u2949',\n\tUbrcy: '\\u040E',\n\tubrcy: '\\u045E',\n\tUbreve: '\\u016C',\n\tubreve: '\\u016D',\n\tUcirc: '\\u00DB',\n\tucirc: '\\u00FB',\n\tUcy: '\\u0423',\n\tucy: '\\u0443',\n\tudarr: '\\u21C5',\n\tUdblac: '\\u0170',\n\tudblac: '\\u0171',\n\tudhar: '\\u296E',\n\tufisht: '\\u297E',\n\tUfr: '\\uD835\\uDD18',\n\tufr: '\\uD835\\uDD32',\n\tUgrave: '\\u00D9',\n\tugrave: '\\u00F9',\n\tuHar: '\\u2963',\n\tuharl: '\\u21BF',\n\tuharr: '\\u21BE',\n\tuhblk: '\\u2580',\n\tulcorn: '\\u231C',\n\tulcorner: '\\u231C',\n\tulcrop: '\\u230F',\n\tultri: '\\u25F8',\n\tUmacr: '\\u016A',\n\tumacr: '\\u016B',\n\tuml: '\\u00A8',\n\tUnderBar: '\\u005F',\n\tUnderBrace: '\\u23DF',\n\tUnderBracket: '\\u23B5',\n\tUnderParenthesis: '\\u23DD',\n\tUnion: '\\u22C3',\n\tUnionPlus: '\\u228E',\n\tUogon: '\\u0172',\n\tuogon: '\\u0173',\n\tUopf: '\\uD835\\uDD4C',\n\tuopf: '\\uD835\\uDD66',\n\tUpArrow: '\\u2191',\n\tUparrow: '\\u21D1',\n\tuparrow: '\\u2191',\n\tUpArrowBar: '\\u2912',\n\tUpArrowDownArrow: '\\u21C5',\n\tUpDownArrow: '\\u2195',\n\tUpdownarrow: '\\u21D5',\n\tupdownarrow: '\\u2195',\n\tUpEquilibrium: '\\u296E',\n\tupharpoonleft: '\\u21BF',\n\tupharpoonright: '\\u21BE',\n\tuplus: '\\u228E',\n\tUpperLeftArrow: '\\u2196',\n\tUpperRightArrow: '\\u2197',\n\tUpsi: '\\u03D2',\n\tupsi: '\\u03C5',\n\tupsih: '\\u03D2',\n\tUpsilon: '\\u03A5',\n\tupsilon: '\\u03C5',\n\tUpTee: '\\u22A5',\n\tUpTeeArrow: '\\u21A5',\n\tupuparrows: '\\u21C8',\n\turcorn: '\\u231D',\n\turcorner: '\\u231D',\n\turcrop: '\\u230E',\n\tUring: '\\u016E',\n\turing: '\\u016F',\n\turtri: '\\u25F9',\n\tUscr: '\\uD835\\uDCB0',\n\tuscr: '\\uD835\\uDCCA',\n\tutdot: '\\u22F0',\n\tUtilde: '\\u0168',\n\tutilde: '\\u0169',\n\tutri: '\\u25B5',\n\tutrif: '\\u25B4',\n\tuuarr: '\\u21C8',\n\tUuml: '\\u00DC',\n\tuuml: '\\u00FC',\n\tuwangle: '\\u29A7',\n\tvangrt: '\\u299C',\n\tvarepsilon: '\\u03F5',\n\tvarkappa: '\\u03F0',\n\tvarnothing: '\\u2205',\n\tvarphi: '\\u03D5',\n\tvarpi: '\\u03D6',\n\tvarpropto: '\\u221D',\n\tvArr: '\\u21D5',\n\tvarr: '\\u2195',\n\tvarrho: '\\u03F1',\n\tvarsigma: '\\u03C2',\n\tvarsubsetneq: '\\u228A\\uFE00',\n\tvarsubsetneqq: '\\u2ACB\\uFE00',\n\tvarsupsetneq: '\\u228B\\uFE00',\n\tvarsupsetneqq: '\\u2ACC\\uFE00',\n\tvartheta: '\\u03D1',\n\tvartriangleleft: '\\u22B2',\n\tvartriangleright: '\\u22B3',\n\tVbar: '\\u2AEB',\n\tvBar: '\\u2AE8',\n\tvBarv: '\\u2AE9',\n\tVcy: '\\u0412',\n\tvcy: '\\u0432',\n\tVDash: '\\u22AB',\n\tVdash: '\\u22A9',\n\tvDash: '\\u22A8',\n\tvdash: '\\u22A2',\n\tVdashl: '\\u2AE6',\n\tVee: '\\u22C1',\n\tvee: '\\u2228',\n\tveebar: '\\u22BB',\n\tveeeq: '\\u225A',\n\tvellip: '\\u22EE',\n\tVerbar: '\\u2016',\n\tverbar: '\\u007C',\n\tVert: '\\u2016',\n\tvert: '\\u007C',\n\tVerticalBar: '\\u2223',\n\tVerticalLine: '\\u007C',\n\tVerticalSeparator: '\\u2758',\n\tVerticalTilde: '\\u2240',\n\tVeryThinSpace: '\\u200A',\n\tVfr: '\\uD835\\uDD19',\n\tvfr: '\\uD835\\uDD33',\n\tvltri: '\\u22B2',\n\tvnsub: '\\u2282\\u20D2',\n\tvnsup: '\\u2283\\u20D2',\n\tVopf: '\\uD835\\uDD4D',\n\tvopf: '\\uD835\\uDD67',\n\tvprop: '\\u221D',\n\tvrtri: '\\u22B3',\n\tVscr: '\\uD835\\uDCB1',\n\tvscr: '\\uD835\\uDCCB',\n\tvsubnE: '\\u2ACB\\uFE00',\n\tvsubne: '\\u228A\\uFE00',\n\tvsupnE: '\\u2ACC\\uFE00',\n\tvsupne: '\\u228B\\uFE00',\n\tVvdash: '\\u22AA',\n\tvzigzag: '\\u299A',\n\tWcirc: '\\u0174',\n\twcirc: '\\u0175',\n\twedbar: '\\u2A5F',\n\tWedge: '\\u22C0',\n\twedge: '\\u2227',\n\twedgeq: '\\u2259',\n\tweierp: '\\u2118',\n\tWfr: '\\uD835\\uDD1A',\n\twfr: '\\uD835\\uDD34',\n\tWopf: '\\uD835\\uDD4E',\n\twopf: '\\uD835\\uDD68',\n\twp: '\\u2118',\n\twr: '\\u2240',\n\twreath: '\\u2240',\n\tWscr: '\\uD835\\uDCB2',\n\twscr: '\\uD835\\uDCCC',\n\txcap: '\\u22C2',\n\txcirc: '\\u25EF',\n\txcup: '\\u22C3',\n\txdtri: '\\u25BD',\n\tXfr: '\\uD835\\uDD1B',\n\txfr: '\\uD835\\uDD35',\n\txhArr: '\\u27FA',\n\txharr: '\\u27F7',\n\tXi: '\\u039E',\n\txi: '\\u03BE',\n\txlArr: '\\u27F8',\n\txlarr: '\\u27F5',\n\txmap: '\\u27FC',\n\txnis: '\\u22FB',\n\txodot: '\\u2A00',\n\tXopf: '\\uD835\\uDD4F',\n\txopf: '\\uD835\\uDD69',\n\txoplus: '\\u2A01',\n\txotime: '\\u2A02',\n\txrArr: '\\u27F9',\n\txrarr: '\\u27F6',\n\tXscr: '\\uD835\\uDCB3',\n\txscr: '\\uD835\\uDCCD',\n\txsqcup: '\\u2A06',\n\txuplus: '\\u2A04',\n\txutri: '\\u25B3',\n\txvee: '\\u22C1',\n\txwedge: '\\u22C0',\n\tYacute: '\\u00DD',\n\tyacute: '\\u00FD',\n\tYAcy: '\\u042F',\n\tyacy: '\\u044F',\n\tYcirc: '\\u0176',\n\tycirc: '\\u0177',\n\tYcy: '\\u042B',\n\tycy: '\\u044B',\n\tyen: '\\u00A5',\n\tYfr: '\\uD835\\uDD1C',\n\tyfr: '\\uD835\\uDD36',\n\tYIcy: '\\u0407',\n\tyicy: '\\u0457',\n\tYopf: '\\uD835\\uDD50',\n\tyopf: '\\uD835\\uDD6A',\n\tYscr: '\\uD835\\uDCB4',\n\tyscr: '\\uD835\\uDCCE',\n\tYUcy: '\\u042E',\n\tyucy: '\\u044E',\n\tYuml: '\\u0178',\n\tyuml: '\\u00FF',\n\tZacute: '\\u0179',\n\tzacute: '\\u017A',\n\tZcaron: '\\u017D',\n\tzcaron: '\\u017E',\n\tZcy: '\\u0417',\n\tzcy: '\\u0437',\n\tZdot: '\\u017B',\n\tzdot: '\\u017C',\n\tzeetrf: '\\u2128',\n\tZeroWidthSpace: '\\u200B',\n\tZeta: '\\u0396',\n\tzeta: '\\u03B6',\n\tZfr: '\\u2128',\n\tzfr: '\\uD835\\uDD37',\n\tZHcy: '\\u0416',\n\tzhcy: '\\u0436',\n\tzigrarr: '\\u21DD',\n\tZopf: '\\u2124',\n\tzopf: '\\uD835\\uDD6B',\n\tZscr: '\\uD835\\uDCB5',\n\tzscr: '\\uD835\\uDCCF',\n\tzwj: '\\u200D',\n\tzwnj: '\\u200C',\n});\n\n/**\n * @deprecated use `HTML_ENTITIES` instead\n * @see HTML_ENTITIES\n */\nexports.entityMap = exports.HTML_ENTITIES;\n","var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring\nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el<el />\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif (Object.hasOwnProperty.call(entityMap, k)) {\n\t\t\treturn entityMap[k];\n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t \t\t\tdoc.appendChild(text);\n\t \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t \t\tend = tagStart+1+tagName.length;\n\t \t}else if(tagName.match(/\\s</)){\n\t \t\ttagName = tagName.replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' maybe not complete');\n\t \t\tend = tagStart+1+tagName.length;\n\t\t\t\t}\n\t\t\t\tvar localNSMap = config.localNSMap;\n\t\t\t\tvar endMatch = config.tagName == tagName;\n\t\t\t\tvar endIgnoreCaseMach = endMatch || config.tagName&&config.tagName.toLowerCase() == tagName.toLowerCase()\n\t\t if(endIgnoreCaseMach){\n\t\t \tdomBuilder.endElement(config.uri,config.localName,tagName);\n\t\t\t\t\tif(localNSMap){\n\t\t\t\t\t\tfor (var prefix in localNSMap) {\n\t\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!endMatch){\n\t\t \terrorHandler.fatalError(\"end tag name: \"+tagName+' is not match the current start tagName:'+config.tagName ); // No known test case\n\t\t\t\t\t}\n\t\t }else{\n\t\t \tparseStack.push(config)\n\t\t }\n\n\t\t\t\tend++;\n\t\t\t\tbreak;\n\t\t\t\t// end elment\n\t\t\tcase '?':// <?...?>\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// <!doctype,<![CDATA,<!--\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseDCC(source,tagStart,domBuilder,errorHandler);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tvar el = new ElementAttributes();\n\t\t\t\tvar currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\t\t\t\t//elStartEnd\n\t\t\t\tvar end = parseElementStartPart(source,tagStart,el,currentNSMap,entityReplacer,errorHandler);\n\t\t\t\tvar len = el.length;\n\n\n\t\t\t\tif(!el.closed && fixSelfClosed(source,end,el.tagName,closeMap)){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tif(!entityMap.nbsp){\n\t\t\t\t\t\terrorHandler.warning('unclosed xml attribute');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(locator && len){\n\t\t\t\t\tvar locator2 = copyLocator(locator,{});\n\t\t\t\t\t//try{//attribute position fixed\n\t\t\t\t\tfor(var i = 0;i<len;i++){\n\t\t\t\t\t\tvar a = el[i];\n\t\t\t\t\t\tposition(a.offset);\n\t\t\t\t\t\ta.locator = copyLocator(locator,{});\n\t\t\t\t\t}\n\t\t\t\t\tdomBuilder.locator = locator2\n\t\t\t\t\tif(appendElement(el,domBuilder,currentNSMap)){\n\t\t\t\t\t\tparseStack.push(el)\n\t\t\t\t\t}\n\t\t\t\t\tdomBuilder.locator = locator;\n\t\t\t\t}else{\n\t\t\t\t\tif(appendElement(el,domBuilder,currentNSMap)){\n\t\t\t\t\t\tparseStack.push(el)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (NAMESPACE.isHTML(el.uri) && !el.closed) {\n\t\t\t\t\tend = parseHtmlSpecialContent(source,end,el.tagName,entityReplacer,domBuilder)\n\t\t\t\t} else {\n\t\t\t\t\tend++;\n\t\t\t\t}\n\t\t\t}\n\t\t}catch(e){\n\t\t\tif (e instanceof ParseError) {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t\terrorHandler.error('element parse error: '+e)\n\t\t\tend = -1;\n\t\t}\n\t\tif(end>start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有å¯èƒ½sax回退,有ä½ç½®é”™è¯¯é£Žé™©\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(\n\t\t\tqname,\n\t\t\t// @see https://www.w3.org/TR/xml/#AVNormalize\n\t\t\t// since the xmldom sax parser does not \"interpret\" DTD the following is not implemented:\n\t\t\t// - recursive replacement of (DTD) entity references\n\t\t\t// - trimming and collapsing multiple spaces into a single one for attributes that are not of type CDATA\n\t\t\tvalue.replace(/[\\t\\n\\r]/g, ' ').replace(/&#?\\w+;/g, entityReplacer),\n\t\t\tstartIndex\n\t\t)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tel.closed = true;\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start, p);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName = el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute\n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value)\n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart = source.indexOf('</'+tagName+'>',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos = source.lastIndexOf('</'+tagName+'>')\n\t\tif(pos<elStartEnd){//忘记é—åˆ\n\t\t\tpos = source.lastIndexOf('</'+tagName)\n\t\t}\n\t\tcloseMap[tagName] =pos\n\t}\n\treturn pos<elStartEnd;\n\t//}\n}\n\nfunction _copy (source, target) {\n\tfor (var n in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, n)) {\n\t\t\ttarget[n] = source[n];\n\t\t}\n\t}\n}\n\nfunction parseDCC(source,start,domBuilder,errorHandler){//sure start with '<!'\n\tvar next= source.charAt(start+2)\n\tswitch(next){\n\tcase '-':\n\t\tif(source.charAt(start + 3) === '-'){\n\t\t\tvar end = source.indexOf('-->',start+4);\n\t\t\t//append comment source.substring(4,end)//<!--\n\t\t\tif(end>start){\n\t\t\t\tdomBuilder.comment(source,start+4,end-start-4);\n\t\t\t\treturn end+3;\n\t\t\t}else{\n\t\t\t\terrorHandler.error(\"Unclosed comment\");\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}else{\n\t\t\t//error\n\t\t\treturn -1;\n\t\t}\n\tdefault:\n\t\tif(source.substr(start+3,6) == 'CDATA['){\n\t\t\tvar end = source.indexOf(']]>',start+9);\n\t\t\tdomBuilder.startCDATA();\n\t\t\tdomBuilder.characters(source,start+9,end-start-9);\n\t\t\tdomBuilder.endCDATA()\n\t\t\treturn end+3;\n\t\t}\n\t\t//<!DOCTYPE\n\t\t//startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)\n\t\tvar matchs = split(source,start);\n\t\tvar len = matchs.length;\n\t\tif(len>1 && /!doctype/i.test(matchs[0][0])){\n\t\t\tvar name = matchs[1][0];\n\t\t\tvar pubid = false;\n\t\t\tvar sysid = false;\n\t\t\tif(len>3){\n\t\t\t\tif(/^public$/i.test(matchs[2][0])){\n\t\t\t\t\tpubid = matchs[3][0];\n\t\t\t\t\tsysid = len>4 && matchs[4][0];\n\t\t\t\t}else if(/^system$/i.test(matchs[2][0])){\n\t\t\t\t\tsysid = matchs[3][0];\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar lastMatch = matchs[len-1]\n\t\t\tdomBuilder.startDTD(name, pubid, sysid);\n\t\t\tdomBuilder.endDTD();\n\n\t\t\treturn lastMatch.index+lastMatch[0].length\n\t\t}\n\t}\n\treturn -1;\n}\n\n\n\nfunction parseInstruction(source,start,domBuilder){\n\tvar end = source.indexOf('?>',start);\n\tif(end){\n\t\tvar match = source.substring(start,end).match(/^<\\?(\\S*)\\s*([\\s\\S]*?)\\s*$/);\n\t\tif(match){\n\t\t\tvar len = match[0].length;\n\t\t\tdomBuilder.processingInstruction(match[1], match[2]) ;\n\t\t\treturn end+2;\n\t\t}else{//error\n\t\t\treturn -1;\n\t\t}\n\t}\n\treturn -1;\n}\n\nfunction ElementAttributes(){\n\tthis.attributeNames = {}\n}\nElementAttributes.prototype = {\n\tsetTagName:function(tagName){\n\t\tif(!tagNamePattern.test(tagName)){\n\t\t\tthrow new Error('invalid tagName:'+tagName)\n\t\t}\n\t\tthis.tagName = tagName\n\t},\n\taddValue:function(qName, value, offset) {\n\t\tif(!tagNamePattern.test(qName)){\n\t\t\tthrow new Error('invalid attribute:'+qName)\n\t\t}\n\t\tthis.attributeNames[qName] = this.length;\n\t\tthis[this.length++] = {qName:qName,value:value,offset:offset}\n\t},\n\tlength:0,\n\tgetLocalName:function(i){return this[i].localName},\n\tgetLocator:function(i){return this[i].locator},\n\tgetQName:function(i){return this[i].qName},\n\tgetURI:function(i){return this[i].uri},\n\tgetValue:function(i){return this[i].value}\n//\t,getIndex:function(uri, localName)){\n//\t\tif(localName){\n//\n//\t\t}else{\n//\t\t\tvar qName = uri\n//\t\t}\n//\t},\n//\tgetValue:function(){return this.getValue(this.getIndex.apply(this,arguments))},\n//\tgetType:function(uri,localName){}\n//\tgetType:function(i){},\n}\n\n\n\nfunction split(source,start){\n\tvar match;\n\tvar buf = [];\n\tvar reg = /'[^']+'|\"[^\"]+\"|[^\\s<>\\/=]+=?|(\\/?\\s*>|<)/g;\n\treg.lastIndex = start;\n\treg.exec(source);//skip <\n\twhile(match = reg.exec(source)){\n\t\tbuf.push(match);\n\t\tif(match[1])return buf;\n\t}\n}\n\nexports.XMLReader = XMLReader;\nexports.ParseError = ParseError;\n","var conventions = require(\"./conventions\");\nvar dom = require('./dom')\nvar entities = require('./entities');\nvar sax = require('./sax');\n\nvar DOMImplementation = dom.DOMImplementation;\n\nvar NAMESPACE = conventions.NAMESPACE;\n\nvar ParseError = sax.ParseError;\nvar XMLReader = sax.XMLReader;\n\n/**\n * Normalizes line ending according to https://www.w3.org/TR/xml11/#sec-line-ends:\n *\n * > XML parsed entities are often stored in computer files which,\n * > for editing convenience, are organized into lines.\n * > These lines are typically separated by some combination\n * > of the characters CARRIAGE RETURN (#xD) and LINE FEED (#xA).\n * >\n * > To simplify the tasks of applications, the XML processor must behave\n * > as if it normalized all line breaks in external parsed entities (including the document entity)\n * > on input, before parsing, by translating all of the following to a single #xA character:\n * >\n * > 1. the two-character sequence #xD #xA\n * > 2. the two-character sequence #xD #x85\n * > 3. the single character #x85\n * > 4. the single character #x2028\n * > 5. any #xD character that is not immediately followed by #xA or #x85.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction normalizeLineEndings(input) {\n\treturn input\n\t\t.replace(/\\r[\\n\\u0085]/g, '\\n')\n\t\t.replace(/[\\r\\u0085\\u2028]/g, '\\n')\n}\n\n/**\n * @typedef Locator\n * @property {number} [columnNumber]\n * @property {number} [lineNumber]\n */\n\n/**\n * @typedef DOMParserOptions\n * @property {DOMHandler} [domBuilder]\n * @property {Function} [errorHandler]\n * @property {(string) => string} [normalizeLineEndings] used to replace line endings before parsing\n * \t\t\t\t\t\tdefaults to `normalizeLineEndings`\n * @property {Locator} [locator]\n * @property {Record<string, string>} [xmlns]\n *\n * @see normalizeLineEndings\n */\n\n/**\n * The DOMParser interface provides the ability to parse XML or HTML source code\n * from a string into a DOM `Document`.\n *\n * _xmldom is different from the spec in that it allows an `options` parameter,\n * to override the default behavior._\n *\n * @param {DOMParserOptions} [options]\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsing-and-serialization\n */\nfunction DOMParser(options){\n\tthis.options = options ||{locator:{}};\n}\n\nDOMParser.prototype.parseFromString = function(source,mimeType){\n\tvar options = this.options;\n\tvar sax = new XMLReader();\n\tvar domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler\n\tvar errorHandler = options.errorHandler;\n\tvar locator = options.locator;\n\tvar defaultNSMap = options.xmlns||{};\n\tvar isHTML = /\\/x?html?$/.test(mimeType);//mimeType.toLowerCase().indexOf('html') > -1;\n \tvar entityMap = isHTML ? entities.HTML_ENTITIES : entities.XML_ENTITIES;\n\tif(locator){\n\t\tdomBuilder.setDocumentLocator(locator)\n\t}\n\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\n\tsax.domBuilder = options.domBuilder || domBuilder;\n\tif(isHTML){\n\t\tdefaultNSMap[''] = NAMESPACE.HTML;\n\t}\n\tdefaultNSMap.xml = defaultNSMap.xml || NAMESPACE.XML;\n\tvar normalize = options.normalizeLineEndings || normalizeLineEndings;\n\tif (source && typeof source === 'string') {\n\t\tsax.parse(\n\t\t\tnormalize(source),\n\t\t\tdefaultNSMap,\n\t\t\tentityMap\n\t\t)\n\t} else {\n\t\tsax.errorHandler.error('invalid doc source')\n\t}\n\treturn domBuilder.doc;\n}\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\n\tif(!errorImpl){\n\t\tif(domBuilder instanceof DOMHandler){\n\t\t\treturn domBuilder;\n\t\t}\n\t\terrorImpl = domBuilder ;\n\t}\n\tvar errorHandler = {}\n\tvar isCallback = errorImpl instanceof Function;\n\tlocator = locator||{}\n\tfunction build(key){\n\t\tvar fn = errorImpl[key];\n\t\tif(!fn && isCallback){\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\n\t\t}\n\t\terrorHandler[key] = fn && function(msg){\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\n\t\t}||function(){};\n\t}\n\tbuild('warning');\n\tbuild('error');\n\tbuild('fatalError');\n\treturn errorHandler;\n}\n\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\n/**\n * +ContentHandler+ErrorHandler\n * +LexicalHandler+EntityResolver2\n * -DeclHandler-DTDHandler\n *\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\n */\nfunction DOMHandler() {\n this.cdata = false;\n}\nfunction position(locator,node){\n\tnode.lineNumber = locator.lineNumber;\n\tnode.columnNumber = locator.columnNumber;\n}\n/**\n * @see org.xml.sax.ContentHandler#startDocument\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\n */\nDOMHandler.prototype = {\n\tstartDocument : function() {\n \tthis.doc = new DOMImplementation().createDocument(null, null, null);\n \tif (this.locator) {\n \tthis.doc.documentURI = this.locator.systemId;\n \t}\n\t},\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\n\t\tvar doc = this.doc;\n\t var el = doc.createElementNS(namespaceURI, qName||localName);\n\t var len = attrs.length;\n\t appendElement(this, el);\n\t this.currentElement = el;\n\n\t\tthis.locator && position(this.locator,el)\n\t for (var i = 0 ; i < len; i++) {\n\t var namespaceURI = attrs.getURI(i);\n\t var value = attrs.getValue(i);\n\t var qName = attrs.getQName(i);\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\n\t\t\tattr.value = attr.nodeValue = value;\n\t\t\tel.setAttributeNode(attr)\n\t }\n\t},\n\tendElement:function(namespaceURI, localName, qName) {\n\t\tvar current = this.currentElement\n\t\tvar tagName = current.tagName;\n\t\tthis.currentElement = current.parentNode;\n\t},\n\tstartPrefixMapping:function(prefix, uri) {\n\t},\n\tendPrefixMapping:function(prefix) {\n\t},\n\tprocessingInstruction:function(target, data) {\n\t var ins = this.doc.createProcessingInstruction(target, data);\n\t this.locator && position(this.locator,ins)\n\t appendElement(this, ins);\n\t},\n\tignorableWhitespace:function(ch, start, length) {\n\t},\n\tcharacters:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t\t//console.log(chars)\n\t\tif(chars){\n\t\t\tif (this.cdata) {\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\n\t\t\t} else {\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\n\t\t\t}\n\t\t\tif(this.currentElement){\n\t\t\t\tthis.currentElement.appendChild(charNode);\n\t\t\t}else if(/^\\s*$/.test(chars)){\n\t\t\t\tthis.doc.appendChild(charNode);\n\t\t\t\t//process xml\n\t\t\t}\n\t\t\tthis.locator && position(this.locator,charNode)\n\t\t}\n\t},\n\tskippedEntity:function(name) {\n\t},\n\tendDocument:function() {\n\t\tthis.doc.normalize();\n\t},\n\tsetDocumentLocator:function (locator) {\n\t if(this.locator = locator){// && !('lineNumber' in locator)){\n\t \tlocator.lineNumber = 0;\n\t }\n\t},\n\t//LexicalHandler\n\tcomment:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t var comm = this.doc.createComment(chars);\n\t this.locator && position(this.locator,comm)\n\t appendElement(this, comm);\n\t},\n\n\tstartCDATA:function() {\n\t //used in characters() methods\n\t this.cdata = true;\n\t},\n\tendCDATA:function() {\n\t this.cdata = false;\n\t},\n\n\tstartDTD:function(name, publicId, systemId) {\n\t\tvar impl = this.doc.implementation;\n\t if (impl && impl.createDocumentType) {\n\t var dt = impl.createDocumentType(name, publicId, systemId);\n\t this.locator && position(this.locator,dt)\n\t appendElement(this, dt);\n\t\t\t\t\tthis.doc.doctype = dt;\n\t }\n\t},\n\t/**\n\t * @see org.xml.sax.ErrorHandler\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\n\t */\n\twarning:function(error) {\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\n\t},\n\terror:function(error) {\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\n\t},\n\tfatalError:function(error) {\n\t\tthrow new ParseError(error, this.locator);\n\t}\n}\nfunction _locator(l){\n\tif(l){\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\n\t}\n}\nfunction _toString(chars,start,length){\n\tif(typeof chars == 'string'){\n\t\treturn chars.substr(start,length)\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\n\t\tif(chars.length >= start+length || start){\n\t\t\treturn new java.lang.String(chars,start,length)+'';\n\t\t}\n\t\treturn chars;\n\t}\n}\n\n/*\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\n * used method of org.xml.sax.ext.LexicalHandler:\n * #comment(chars, start, length)\n * #startCDATA()\n * #endCDATA()\n * #startDTD(name, publicId, systemId)\n *\n *\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\n * #endDTD()\n * #startEntity(name)\n * #endEntity(name)\n *\n *\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\n * IGNORED method of org.xml.sax.ext.DeclHandler\n * \t#attributeDecl(eName, aName, type, mode, value)\n * #elementDecl(name, model)\n * #externalEntityDecl(name, publicId, systemId)\n * #internalEntityDecl(name, value)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\n * IGNORED method of org.xml.sax.EntityResolver2\n * #resolveEntity(String name,String publicId,String baseURI,String systemId)\n * #resolveEntity(publicId, systemId)\n * #getExternalSubset(name, baseURI)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\n * IGNORED method of org.xml.sax.DTDHandler\n * #notationDecl(name, publicId, systemId) {};\n * #unparsedEntityDecl(name, publicId, systemId, notationName) {};\n */\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\n\tDOMHandler.prototype[key] = function(){return null}\n})\n\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\nfunction appendElement (hander,node) {\n if (!hander.currentElement) {\n hander.doc.appendChild(node);\n } else {\n hander.currentElement.appendChild(node);\n }\n}//appendChild and setAttributeNS are preformance key\n\nexports.__DOMHandler = DOMHandler;\nexports.normalizeLineEndings = normalizeLineEndings;\nexports.DOMParser = DOMParser;\n","/*\r\n * xpath.js\r\n *\r\n * An XPath 1.0 library for JavaScript.\r\n *\r\n * Cameron McCormack <cam (at) mcc.id.au>\r\n *\r\n * This work is licensed under the MIT License.\r\n *\r\n * Revision 20: April 26, 2011\r\n * Fixed a typo resulting in FIRST_ORDERED_NODE_TYPE results being wrong,\r\n * thanks to <shi_a009 (at) hotmail.com>.\r\n *\r\n * Revision 19: November 29, 2005\r\n * Nodesets now store their nodes in a height balanced tree, increasing\r\n * performance for the common case of selecting nodes in document order,\r\n * thanks to Sébastien Cramatte <contact (at) zeninteractif.com>.\r\n * AVL tree code adapted from Raimund Neumann <rnova (at) gmx.net>.\r\n *\r\n * Revision 18: October 27, 2005\r\n * DOM 3 XPath support. Caveats:\r\n * - namespace prefixes aren't resolved in XPathEvaluator.createExpression,\r\n * but in XPathExpression.evaluate.\r\n * - XPathResult.invalidIteratorState is not implemented.\r\n *\r\n * Revision 17: October 25, 2005\r\n * Some core XPath function fixes and a patch to avoid crashing certain\r\n * versions of MSXML in PathExpr.prototype.getOwnerElement, thanks to\r\n * Sébastien Cramatte <contact (at) zeninteractif.com>.\r\n *\r\n * Revision 16: September 22, 2005\r\n * Workarounds for some IE 5.5 deficiencies.\r\n * Fixed problem with prefix node tests on attribute nodes.\r\n *\r\n * Revision 15: May 21, 2005\r\n * Fixed problem with QName node tests on elements with an xmlns=\"...\".\r\n *\r\n * Revision 14: May 19, 2005\r\n * Fixed QName node tests on attribute node regression.\r\n *\r\n * Revision 13: May 3, 2005\r\n * Node tests are case insensitive now if working in an HTML DOM.\r\n *\r\n * Revision 12: April 26, 2005\r\n * Updated licence. Slight code changes to enable use of Dean\r\n * Edwards' script compression, http://dean.edwards.name/packer/ .\r\n *\r\n * Revision 11: April 23, 2005\r\n * Fixed bug with 'and' and 'or' operators, fix thanks to\r\n * Sandy McArthur <sandy (at) mcarthur.org>.\r\n *\r\n * Revision 10: April 15, 2005\r\n * Added support for a virtual root node, supposedly helpful for\r\n * implementing XForms. Fixed problem with QName node tests and\r\n * the parent axis.\r\n *\r\n * Revision 9: March 17, 2005\r\n * Namespace resolver tweaked so using the document node as the context\r\n * for namespace lookups is equivalent to using the document element.\r\n *\r\n * Revision 8: February 13, 2005\r\n * Handle implicit declaration of 'xmlns' namespace prefix.\r\n * Fixed bug when comparing nodesets.\r\n * Instance data can now be associated with a FunctionResolver, and\r\n * workaround for MSXML not supporting 'localName' and 'getElementById',\r\n * thanks to Grant Gongaware.\r\n * Fix a few problems when the context node is the root node.\r\n *\r\n * Revision 7: February 11, 2005\r\n * Default namespace resolver fix from Grant Gongaware\r\n * <grant (at) gongaware.com>.\r\n *\r\n * Revision 6: February 10, 2005\r\n * Fixed bug in 'number' function.\r\n *\r\n * Revision 5: February 9, 2005\r\n * Fixed bug where text nodes not getting converted to string values.\r\n *\r\n * Revision 4: January 21, 2005\r\n * Bug in 'name' function, fix thanks to Bill Edney.\r\n * Fixed incorrect processing of namespace nodes.\r\n * Fixed NamespaceResolver to resolve 'xml' namespace.\r\n * Implemented union '|' operator.\r\n *\r\n * Revision 3: January 14, 2005\r\n * Fixed bug with nodeset comparisons, bug lexing < and >.\r\n *\r\n * Revision 2: October 26, 2004\r\n * QName node test namespace handling fixed. Few other bug fixes.\r\n *\r\n * Revision 1: August 13, 2004\r\n * Bug fixes from William J. Edney <bedney (at) technicalpursuit.com>.\r\n * Added minimal licence.\r\n *\r\n * Initial version: June 14, 2004\r\n */\r\n\r\n// non-node wrapper\r\nvar xpath = (typeof exports === 'undefined') ? {} : exports;\r\n\r\n(function (exports) {\r\n \"use strict\";\r\n\r\n // namespace nodes are not part of the DOM spec, so we use a custom nodetype for them.\r\n // should NOT be used externally\r\n var NAMESPACE_NODE_NODETYPE = '__namespace';\r\n\r\n var isNil = function (x) {\r\n return x === null || x === undefined;\r\n };\r\n\r\n var isValidNodeType = function (nodeType) {\r\n return nodeType === NAMESPACE_NODE_NODETYPE ||\r\n (Number.isInteger(nodeType)\r\n && nodeType >= 1\r\n && nodeType <= 11\r\n );\r\n };\r\n\r\n var isNodeLike = function (value) {\r\n return value\r\n && isValidNodeType(value.nodeType)\r\n && typeof value.nodeName === \"string\";\r\n };\r\n\r\n // functional helpers\r\n function curry(func) {\r\n var slice = Array.prototype.slice,\r\n totalargs = func.length,\r\n partial = function (args, fn) {\r\n return function () {\r\n return fn.apply(this, args.concat(slice.call(arguments)));\r\n }\r\n },\r\n fn = function () {\r\n var args = slice.call(arguments);\r\n return (args.length < totalargs) ?\r\n partial(args, fn) :\r\n func.apply(this, slice.apply(arguments, [0, totalargs]));\r\n };\r\n return fn;\r\n }\r\n\r\n var forEach = function (f, xs) {\r\n for (var i = 0; i < xs.length; i += 1) {\r\n f(xs[i], i, xs);\r\n }\r\n };\r\n\r\n var reduce = function (f, seed, xs) {\r\n var acc = seed;\r\n\r\n forEach(function (x, i) { acc = f(acc, x, i); }, xs);\r\n\r\n return acc;\r\n };\r\n\r\n var map = function (f, xs) {\r\n var mapped = new Array(xs.length);\r\n\r\n forEach(function (x, i) { mapped[i] = f(x); }, xs);\r\n\r\n return mapped;\r\n };\r\n\r\n var filter = function (f, xs) {\r\n var filtered = [];\r\n\r\n forEach(function (x, i) { if (f(x, i)) { filtered.push(x); } }, xs);\r\n\r\n return filtered;\r\n };\r\n\r\n var includes = function (values, value) {\r\n for (var i = 0; i < values.length; i += 1) {\r\n if (values[i] === value) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n function always(value) { return function () { return value; } }\r\n\r\n function toString(x) { return x.toString(); }\r\n var join = function (s, xs) { return xs.join(s); };\r\n var wrap = function (pref, suf, str) { return pref + str + suf; };\r\n\r\n var prototypeConcat = Array.prototype.concat;\r\n\r\n var sortNodes = function (nodes, reverse) {\r\n var ns = new XNodeSet();\r\n\r\n ns.addArray(nodes);\r\n\r\n var sorted = ns.toArray();\r\n\r\n return reverse ? sorted.reverse() : sorted;\r\n }\r\n\r\n // .apply() fails above a certain number of arguments - https://github.com/goto100/xpath/pull/98\r\n var MAX_ARGUMENT_LENGTH = 32767;\r\n\r\n function flatten(arr) {\r\n var result = [];\r\n\r\n for (var start = 0; start < arr.length; start += MAX_ARGUMENT_LENGTH) {\r\n var chunk = arr.slice(start, start + MAX_ARGUMENT_LENGTH);\r\n\r\n result = prototypeConcat.apply(result, chunk);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function assign(target, varArgs) { // .length of function is 2\r\n var to = Object(target);\r\n\r\n for (var index = 1; index < arguments.length; index++) {\r\n var nextSource = arguments[index];\r\n\r\n if (nextSource != null) { // Skip over if undefined or null\r\n for (var nextKey in nextSource) {\r\n // Avoid bugs when hasOwnProperty is shadowed\r\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n }\r\n }\r\n }\r\n\r\n return to;\r\n }\r\n\r\n var NodeTypes = {\r\n ELEMENT_NODE: 1,\r\n ATTRIBUTE_NODE: 2,\r\n TEXT_NODE: 3,\r\n CDATA_SECTION_NODE: 4,\r\n PROCESSING_INSTRUCTION_NODE: 7,\r\n COMMENT_NODE: 8,\r\n DOCUMENT_NODE: 9,\r\n DOCUMENT_TYPE_NODE: 10,\r\n DOCUMENT_FRAGMENT_NODE: 11,\r\n NAMESPACE_NODE: NAMESPACE_NODE_NODETYPE,\r\n };\r\n\r\n // XPathParser ///////////////////////////////////////////////////////////////\r\n\r\n XPathParser.prototype = new Object();\r\n XPathParser.prototype.constructor = XPathParser;\r\n XPathParser.superclass = Object.prototype;\r\n\r\n function XPathParser() {\r\n this.init();\r\n }\r\n\r\n XPathParser.prototype.init = function () {\r\n this.reduceActions = [];\r\n\r\n this.reduceActions[3] = function (rhs) {\r\n return new OrOperation(rhs[0], rhs[2]);\r\n };\r\n this.reduceActions[5] = function (rhs) {\r\n return new AndOperation(rhs[0], rhs[2]);\r\n };\r\n this.reduceActions[7] = function (rhs) {\r\n return new EqualsOperation(rhs[0], rhs[2]);\r\n };\r\n this.reduceActions[8] = function (rhs) {\r\n return new NotEqualOperation(rhs[0], rhs[2]);\r\n };\r\n this.reduceActions[10] = function (rhs) {\r\n return new LessThanOperation(rhs[0], rhs[2]);\r\n };\r\n this.reduceActions[11] = function (rhs) {\r\n return new GreaterThanOperation(rhs[0], rhs[2]);\r\n };\r\n this.reduceActions[12] = function (rhs) {\r\n return new LessThanOrEqualOperation(rhs[0], rhs[2]);\r\n };\r\n this.reduceActions[13] = function (rhs) {\r\n return new GreaterThanOrEqualOperation(rhs[0], rhs[2]);\r\n };\r\n this.reduceActions[15] = function (rhs) {\r\n return new PlusOperation(rhs[0], rhs[2]);\r\n };\r\n this.reduceActions[16] = function (rhs) {\r\n return new MinusOperation(rhs[0], rhs[2]);\r\n };\r\n this.reduceActions[18] = function (rhs) {\r\n return new MultiplyOperation(rhs[0], rhs[2]);\r\n };\r\n this.reduceActions[19] = function (rhs) {\r\n return new DivOperation(rhs[0], rhs[2]);\r\n };\r\n this.reduceActions[20] = function (rhs) {\r\n return new ModOperation(rhs[0], rhs[2]);\r\n };\r\n this.reduceActions[22] = function (rhs) {\r\n return new UnaryMinusOperation(rhs[1]);\r\n };\r\n this.reduceActions[24] = function (rhs) {\r\n return new BarOperation(rhs[0], rhs[2]);\r\n };\r\n this.reduceActions[25] = function (rhs) {\r\n return new PathExpr(undefined, undefined, rhs[0]);\r\n };\r\n this.reduceActions[27] = function (rhs) {\r\n rhs[0].locationPath = rhs[2];\r\n return rhs[0];\r\n };\r\n this.reduceActions[28] = function (rhs) {\r\n rhs[0].locationPath = rhs[2];\r\n rhs[0].locationPath.steps.unshift(new Step(Step.DESCENDANTORSELF, NodeTest.nodeTest, []));\r\n return rhs[0];\r\n };\r\n this.reduceActions[29] = function (rhs) {\r\n return new PathExpr(rhs[0], [], undefined);\r\n };\r\n this.reduceActions[30] = function (rhs) {\r\n if (Utilities.instance_of(rhs[0], PathExpr)) {\r\n if (rhs[0].filterPredicates == undefined) {\r\n rhs[0].filterPredicates = [];\r\n }\r\n rhs[0].filterPredicates.push(rhs[1]);\r\n return rhs[0];\r\n } else {\r\n return new PathExpr(rhs[0], [rhs[1]], undefined);\r\n }\r\n };\r\n this.reduceActions[32] = function (rhs) {\r\n return rhs[1];\r\n };\r\n this.reduceActions[33] = function (rhs) {\r\n return new XString(rhs[0]);\r\n };\r\n this.reduceActions[34] = function (rhs) {\r\n return new XNumber(rhs[0]);\r\n };\r\n this.reduceActions[36] = function (rhs) {\r\n return new FunctionCall(rhs[0], []);\r\n };\r\n this.reduceActions[37] = function (rhs) {\r\n return new FunctionCall(rhs[0], rhs[2]);\r\n };\r\n this.reduceActions[38] = function (rhs) {\r\n return [rhs[0]];\r\n };\r\n this.reduceActions[39] = function (rhs) {\r\n rhs[2].unshift(rhs[0]);\r\n return rhs[2];\r\n };\r\n this.reduceActions[43] = function (rhs) {\r\n return new LocationPath(true, []);\r\n };\r\n this.reduceActions[44] = function (rhs) {\r\n rhs[1].absolute = true;\r\n return rhs[1];\r\n };\r\n this.reduceActions[46] = function (rhs) {\r\n return new LocationPath(false, [rhs[0]]);\r\n };\r\n this.reduceActions[47] = function (rhs) {\r\n rhs[0].steps.push(rhs[2]);\r\n return rhs[0];\r\n };\r\n this.reduceActions[49] = function (rhs) {\r\n return new Step(rhs[0], rhs[1], []);\r\n };\r\n this.reduceActions[50] = function (rhs) {\r\n return new Step(Step.CHILD, rhs[0], []);\r\n };\r\n this.reduceActions[51] = function (rhs) {\r\n return new Step(rhs[0], rhs[1], rhs[2]);\r\n };\r\n this.reduceActions[52] = function (rhs) {\r\n return new Step(Step.CHILD, rhs[0], rhs[1]);\r\n };\r\n this.reduceActions[54] = function (rhs) {\r\n return [rhs[0]];\r\n };\r\n this.reduceActions[55] = function (rhs) {\r\n rhs[1].unshift(rhs[0]);\r\n return rhs[1];\r\n };\r\n this.reduceActions[56] = function (rhs) {\r\n if (rhs[0] == \"ancestor\") {\r\n return Step.ANCESTOR;\r\n } else if (rhs[0] == \"ancestor-or-self\") {\r\n return Step.ANCESTORORSELF;\r\n } else if (rhs[0] == \"attribute\") {\r\n return Step.ATTRIBUTE;\r\n } else if (rhs[0] == \"child\") {\r\n return Step.CHILD;\r\n } else if (rhs[0] == \"descendant\") {\r\n return Step.DESCENDANT;\r\n } else if (rhs[0] == \"descendant-or-self\") {\r\n return Step.DESCENDANTORSELF;\r\n } else if (rhs[0] == \"following\") {\r\n return Step.FOLLOWING;\r\n } else if (rhs[0] == \"following-sibling\") {\r\n return Step.FOLLOWINGSIBLING;\r\n } else if (rhs[0] == \"namespace\") {\r\n return Step.NAMESPACE;\r\n } else if (rhs[0] == \"parent\") {\r\n return Step.PARENT;\r\n } else if (rhs[0] == \"preceding\") {\r\n return Step.PRECEDING;\r\n } else if (rhs[0] == \"preceding-sibling\") {\r\n return Step.PRECEDINGSIBLING;\r\n } else if (rhs[0] == \"self\") {\r\n return Step.SELF;\r\n }\r\n return -1;\r\n };\r\n this.reduceActions[57] = function (rhs) {\r\n return Step.ATTRIBUTE;\r\n };\r\n this.reduceActions[59] = function (rhs) {\r\n if (rhs[0] == \"comment\") {\r\n return NodeTest.commentTest;\r\n } else if (rhs[0] == \"text\") {\r\n return NodeTest.textTest;\r\n } else if (rhs[0] == \"processing-instruction\") {\r\n return NodeTest.anyPiTest;\r\n } else if (rhs[0] == \"node\") {\r\n return NodeTest.nodeTest;\r\n }\r\n return new NodeTest(-1, undefined);\r\n };\r\n this.reduceActions[60] = function (rhs) {\r\n return new NodeTest.PITest(rhs[2]);\r\n };\r\n this.reduceActions[61] = function (rhs) {\r\n return rhs[1];\r\n };\r\n this.reduceActions[63] = function (rhs) {\r\n rhs[1].absolute = true;\r\n rhs[1].steps.unshift(new Step(Step.DESCENDANTORSELF, NodeTest.nodeTest, []));\r\n return rhs[1];\r\n };\r\n this.reduceActions[64] = function (rhs) {\r\n rhs[0].steps.push(new Step(Step.DESCENDANTORSELF, NodeTest.nodeTest, []));\r\n rhs[0].steps.push(rhs[2]);\r\n return rhs[0];\r\n };\r\n this.reduceActions[65] = function (rhs) {\r\n return new Step(Step.SELF, NodeTest.nodeTest, []);\r\n };\r\n this.reduceActions[66] = function (rhs) {\r\n return new Step(Step.PARENT, NodeTest.nodeTest, []);\r\n };\r\n this.reduceActions[67] = function (rhs) {\r\n return new VariableReference(rhs[1]);\r\n };\r\n this.reduceActions[68] = function (rhs) {\r\n return NodeTest.nameTestAny;\r\n };\r\n this.reduceActions[69] = function (rhs) {\r\n return new NodeTest.NameTestPrefixAny(rhs[0].split(':')[0]);\r\n };\r\n this.reduceActions[70] = function (rhs) {\r\n return new NodeTest.NameTestQName(rhs[0]);\r\n };\r\n };\r\n\r\n XPathParser.actionTable = [\r\n \" s s sssssssss s ss s ss\",\r\n \" s \",\r\n \"r rrrrrrrrr rrrrrrr rr r \",\r\n \" rrrrr \",\r\n \" s s sssssssss s ss s ss\",\r\n \"rs rrrrrrrr s sssssrrrrrr rrs rs \",\r\n \" s s sssssssss s ss s ss\",\r\n \" s \",\r\n \" s \",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \" s \",\r\n \" s \",\r\n \" s s sssss s s \",\r\n \"r rrrrrrrrr rrrrrrr rr r \",\r\n \"a \",\r\n \"r s rr r \",\r\n \"r sr rr r \",\r\n \"r s rr s rr r \",\r\n \"r rssrr rss rr r \",\r\n \"r rrrrr rrrss rr r \",\r\n \"r rrrrrsss rrrrr rr r \",\r\n \"r rrrrrrrr rrrrr rr r \",\r\n \"r rrrrrrrr rrrrrs rr r \",\r\n \"r rrrrrrrr rrrrrr rr r \",\r\n \"r rrrrrrrr rrrrrr rr r \",\r\n \"r srrrrrrrr rrrrrrs rr sr \",\r\n \"r srrrrrrrr rrrrrrs rr r \",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \"r rrrrrrrr rrrrrr rr r \",\r\n \"r rrrrrrrr rrrrrr rr r \",\r\n \"r rrrrrrrrr rrrrrrr rr r \",\r\n \"r rrrrrrrrr rrrrrrr rr r \",\r\n \" sssss \",\r\n \"r rrrrrrrrr rrrrrrr rr sr \",\r\n \"r rrrrrrrrr rrrrrrr rr r \",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \" s \",\r\n \"r srrrrrrrr rrrrrrs rr r \",\r\n \"r rrrrrrrr rrrrr rr r \",\r\n \" s \",\r\n \" s \",\r\n \" rrrrr \",\r\n \" s s sssssssss s sss s ss\",\r\n \"r srrrrrrrr rrrrrrs rr r \",\r\n \" s s sssssssss s ss s ss\",\r\n \" s s sssssssss s ss s ss\",\r\n \" s s sssssssss s ss s ss\",\r\n \" s s sssssssss s ss s ss\",\r\n \" s s sssssssss s ss s ss\",\r\n \" s s sssssssss s ss s ss\",\r\n \" s s sssssssss s ss s ss\",\r\n \" s s sssssssss s ss s ss\",\r\n \" s s sssssssss s ss s ss\",\r\n \" s s sssssssss s ss s ss\",\r\n \" s s sssssssss s ss s ss\",\r\n \" s s sssssssss s ss s ss\",\r\n \" s s sssssssss s ss s ss\",\r\n \" s s sssssssss ss s ss\",\r\n \" s s sssssssss s ss s ss\",\r\n \" s s sssss s s \",\r\n \" s s sssss s s \",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \" s s sssss s s \",\r\n \" s s sssss s s \",\r\n \"r rrrrrrrrr rrrrrrr rr sr \",\r\n \"r rrrrrrrrr rrrrrrr rr sr \",\r\n \"r rrrrrrrrr rrrrrrr rr r \",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \" s \",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \" rr \",\r\n \" s \",\r\n \" rs \",\r\n \"r sr rr r \",\r\n \"r s rr s rr r \",\r\n \"r rssrr rss rr r \",\r\n \"r rssrr rss rr r \",\r\n \"r rrrrr rrrss rr r \",\r\n \"r rrrrr rrrss rr r \",\r\n \"r rrrrr rrrss rr r \",\r\n \"r rrrrr rrrss rr r \",\r\n \"r rrrrrsss rrrrr rr r \",\r\n \"r rrrrrsss rrrrr rr r \",\r\n \"r rrrrrrrr rrrrr rr r \",\r\n \"r rrrrrrrr rrrrr rr r \",\r\n \"r rrrrrrrr rrrrr rr r \",\r\n \"r rrrrrrrr rrrrrr rr r \",\r\n \" r \",\r\n \" s \",\r\n \"r srrrrrrrr rrrrrrs rr r \",\r\n \"r srrrrrrrr rrrrrrs rr r \",\r\n \"r rrrrrrrrr rrrrrrr rr r \",\r\n \"r rrrrrrrrr rrrrrrr rr r \",\r\n \"r rrrrrrrrr rrrrrrr rr r \",\r\n \"r rrrrrrrrr rrrrrrr rr r \",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \" s s sssssssss s ss s ss\",\r\n \"r rrrrrrrrr rrrrrrr rr rr \",\r\n \" r \"\r\n ];\r\n\r\n XPathParser.actionTableNumber = [\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \" J \",\r\n \"a aaaaaaaaa aaaaaaa aa a \",\r\n \" YYYYY \",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \"K1 KKKKKKKK . +*)('KKKKKK KK# K\\\" \",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \" N \",\r\n \" O \",\r\n \"e eeeeeeeee eeeeeee ee ee \",\r\n \"f fffffffff fffffff ff ff \",\r\n \"d ddddddddd ddddddd dd dd \",\r\n \"B BBBBBBBBB BBBBBBB BB BB \",\r\n \"A AAAAAAAAA AAAAAAA AA AA \",\r\n \" P \",\r\n \" Q \",\r\n \" 1 . +*)(' # \\\" \",\r\n \"b bbbbbbbbb bbbbbbb bb b \",\r\n \" \",\r\n \"! S !! ! \",\r\n \"\\\" T\\\" \\\"\\\" \\\" \",\r\n \"$ V $$ U $$ $ \",\r\n \"& &ZY&& &XW && & \",\r\n \") ))))) )))\\\\[ )) ) \",\r\n \". ....._^] ..... .. . \",\r\n \"1 11111111 11111 11 1 \",\r\n \"5 55555555 55555` 55 5 \",\r\n \"7 77777777 777777 77 7 \",\r\n \"9 99999999 999999 99 9 \",\r\n \": c:::::::: ::::::b :: a: \",\r\n \"I fIIIIIIII IIIIIIe II I \",\r\n \"= ========= ======= == == \",\r\n \"? ????????? ??????? ?? ?? \",\r\n \"C CCCCCCCCC CCCCCCC CC CC \",\r\n \"J JJJJJJJJ JJJJJJ JJ J \",\r\n \"M MMMMMMMM MMMMMM MM M \",\r\n \"N NNNNNNNNN NNNNNNN NN N \",\r\n \"P PPPPPPPPP PPPPPPP PP P \",\r\n \" +*)(' \",\r\n \"R RRRRRRRRR RRRRRRR RR aR \",\r\n \"U UUUUUUUUU UUUUUUU UU U \",\r\n \"Z ZZZZZZZZZ ZZZZZZZ ZZ ZZ \",\r\n \"c ccccccccc ccccccc cc cc \",\r\n \" j \",\r\n \"L fLLLLLLLL LLLLLLe LL L \",\r\n \"6 66666666 66666 66 6 \",\r\n \" k \",\r\n \" l \",\r\n \" XXXXX \",\r\n \" 1 0 /.-,+*)(' & %$m # \\\"!\",\r\n \"_ f________ ______e __ _ \",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \" 1 0 /.-,+*)(' %$ # \\\"!\",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \" 1 . +*)(' # \\\" \",\r\n \" 1 . +*)(' # \\\" \",\r\n \"> >>>>>>>>> >>>>>>> >> >> \",\r\n \" 1 . +*)(' # \\\" \",\r\n \" 1 . +*)(' # \\\" \",\r\n \"Q QQQQQQQQQ QQQQQQQ QQ aQ \",\r\n \"V VVVVVVVVV VVVVVVV VV aV \",\r\n \"T TTTTTTTTT TTTTTTT TT T \",\r\n \"@ @@@@@@@@@ @@@@@@@ @@ @@ \",\r\n \" \\x87 \",\r\n \"[ [[[[[[[[[ [[[[[[[ [[ [[ \",\r\n \"D DDDDDDDDD DDDDDDD DD DD \",\r\n \" HH \",\r\n \" \\x88 \",\r\n \" F\\x89 \",\r\n \"# T# ## # \",\r\n \"% V %% U %% % \",\r\n \"' 'ZY'' 'XW '' ' \",\r\n \"( (ZY(( (XW (( ( \",\r\n \"+ +++++ +++\\\\[ ++ + \",\r\n \"* ***** ***\\\\[ ** * \",\r\n \"- ----- ---\\\\[ -- - \",\r\n \", ,,,,, ,,,\\\\[ ,, , \",\r\n \"0 00000_^] 00000 00 0 \",\r\n \"/ /////_^] ///// // / \",\r\n \"2 22222222 22222 22 2 \",\r\n \"3 33333333 33333 33 3 \",\r\n \"4 44444444 44444 44 4 \",\r\n \"8 88888888 888888 88 8 \",\r\n \" ^ \",\r\n \" \\x8a \",\r\n \"; f;;;;;;;; ;;;;;;e ;; ; \",\r\n \"< f<<<<<<<< <<<<<<e << < \",\r\n \"O OOOOOOOOO OOOOOOO OO O \",\r\n \"` ````````` ``````` `` ` \",\r\n \"S SSSSSSSSS SSSSSSS SS S \",\r\n \"W WWWWWWWWW WWWWWWW WW W \",\r\n \"\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\ \\\\\\\\ \",\r\n \"E EEEEEEEEE EEEEEEE EE EE \",\r\n \" 1 0 /.-,+*)(' & %$ # \\\"!\",\r\n \"] ]]]]]]]]] ]]]]]]] ]] ]] \",\r\n \" G \"\r\n ];\r\n\r\n XPathParser.gotoTable = [\r\n \"3456789:;<=>?@ AB CDEFGH IJ \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \"L456789:;<=>?@ AB CDEFGH IJ \",\r\n \" M EFGH IJ \",\r\n \" N;<=>?@ AB CDEFGH IJ \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" S EFGH IJ \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" e \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" h J \",\r\n \" i j \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \"o456789:;<=>?@ ABpqCDEFGH IJ \",\r\n \" \",\r\n \" r6789:;<=>?@ AB CDEFGH IJ \",\r\n \" s789:;<=>?@ AB CDEFGH IJ \",\r\n \" t89:;<=>?@ AB CDEFGH IJ \",\r\n \" u89:;<=>?@ AB CDEFGH IJ \",\r\n \" v9:;<=>?@ AB CDEFGH IJ \",\r\n \" w9:;<=>?@ AB CDEFGH IJ \",\r\n \" x9:;<=>?@ AB CDEFGH IJ \",\r\n \" y9:;<=>?@ AB CDEFGH IJ \",\r\n \" z:;<=>?@ AB CDEFGH IJ \",\r\n \" {:;<=>?@ AB CDEFGH IJ \",\r\n \" |;<=>?@ AB CDEFGH IJ \",\r\n \" };<=>?@ AB CDEFGH IJ \",\r\n \" ~;<=>?@ AB CDEFGH IJ \",\r\n \" \\x7f=>?@ AB CDEFGH IJ \",\r\n \"\\x80456789:;<=>?@ AB CDEFGH IJ\\x81\",\r\n \" \\x82 EFGH IJ \",\r\n \" \\x83 EFGH IJ \",\r\n \" \",\r\n \" \\x84 GH IJ \",\r\n \" \\x85 GH IJ \",\r\n \" i \\x86 \",\r\n \" i \\x87 \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \" \",\r\n \"o456789:;<=>?@ AB\\x8cqCDEFGH IJ \",\r\n \" \",\r\n \" \"\r\n ];\r\n\r\n XPathParser.productions = [\r\n [1, 1, 2],\r\n [2, 1, 3],\r\n [3, 1, 4],\r\n [3, 3, 3, -9, 4],\r\n [4, 1, 5],\r\n [4, 3, 4, -8, 5],\r\n [5, 1, 6],\r\n [5, 3, 5, -22, 6],\r\n [5, 3, 5, -5, 6],\r\n [6, 1, 7],\r\n [6, 3, 6, -23, 7],\r\n [6, 3, 6, -24, 7],\r\n [6, 3, 6, -6, 7],\r\n [6, 3, 6, -7, 7],\r\n [7, 1, 8],\r\n [7, 3, 7, -25, 8],\r\n [7, 3, 7, -26, 8],\r\n [8, 1, 9],\r\n [8, 3, 8, -12, 9],\r\n [8, 3, 8, -11, 9],\r\n [8, 3, 8, -10, 9],\r\n [9, 1, 10],\r\n [9, 2, -26, 9],\r\n [10, 1, 11],\r\n [10, 3, 10, -27, 11],\r\n [11, 1, 12],\r\n [11, 1, 13],\r\n [11, 3, 13, -28, 14],\r\n [11, 3, 13, -4, 14],\r\n [13, 1, 15],\r\n [13, 2, 13, 16],\r\n [15, 1, 17],\r\n [15, 3, -29, 2, -30],\r\n [15, 1, -15],\r\n [15, 1, -16],\r\n [15, 1, 18],\r\n [18, 3, -13, -29, -30],\r\n [18, 4, -13, -29, 19, -30],\r\n [19, 1, 20],\r\n [19, 3, 20, -31, 19],\r\n [20, 1, 2],\r\n [12, 1, 14],\r\n [12, 1, 21],\r\n [21, 1, -28],\r\n [21, 2, -28, 14],\r\n [21, 1, 22],\r\n [14, 1, 23],\r\n [14, 3, 14, -28, 23],\r\n [14, 1, 24],\r\n [23, 2, 25, 26],\r\n [23, 1, 26],\r\n [23, 3, 25, 26, 27],\r\n [23, 2, 26, 27],\r\n [23, 1, 28],\r\n [27, 1, 16],\r\n [27, 2, 16, 27],\r\n [25, 2, -14, -3],\r\n [25, 1, -32],\r\n [26, 1, 29],\r\n [26, 3, -20, -29, -30],\r\n [26, 4, -21, -29, -15, -30],\r\n [16, 3, -33, 30, -34],\r\n [30, 1, 2],\r\n [22, 2, -4, 14],\r\n [24, 3, 14, -4, 23],\r\n [28, 1, -35],\r\n [28, 1, -2],\r\n [17, 2, -36, -18],\r\n [29, 1, -17],\r\n [29, 1, -19],\r\n [29, 1, -18]\r\n ];\r\n\r\n XPathParser.DOUBLEDOT = 2;\r\n XPathParser.DOUBLECOLON = 3;\r\n XPathParser.DOUBLESLASH = 4;\r\n XPathParser.NOTEQUAL = 5;\r\n XPathParser.LESSTHANOREQUAL = 6;\r\n XPathParser.GREATERTHANOREQUAL = 7;\r\n XPathParser.AND = 8;\r\n XPathParser.OR = 9;\r\n XPathParser.MOD = 10;\r\n XPathParser.DIV = 11;\r\n XPathParser.MULTIPLYOPERATOR = 12;\r\n XPathParser.FUNCTIONNAME = 13;\r\n XPathParser.AXISNAME = 14;\r\n XPathParser.LITERAL = 15;\r\n XPathParser.NUMBER = 16;\r\n XPathParser.ASTERISKNAMETEST = 17;\r\n XPathParser.QNAME = 18;\r\n XPathParser.NCNAMECOLONASTERISK = 19;\r\n XPathParser.NODETYPE = 20;\r\n XPathParser.PROCESSINGINSTRUCTIONWITHLITERAL = 21;\r\n XPathParser.EQUALS = 22;\r\n XPathParser.LESSTHAN = 23;\r\n XPathParser.GREATERTHAN = 24;\r\n XPathParser.PLUS = 25;\r\n XPathParser.MINUS = 26;\r\n XPathParser.BAR = 27;\r\n XPathParser.SLASH = 28;\r\n XPathParser.LEFTPARENTHESIS = 29;\r\n XPathParser.RIGHTPARENTHESIS = 30;\r\n XPathParser.COMMA = 31;\r\n XPathParser.AT = 32;\r\n XPathParser.LEFTBRACKET = 33;\r\n XPathParser.RIGHTBRACKET = 34;\r\n XPathParser.DOT = 35;\r\n XPathParser.DOLLAR = 36;\r\n\r\n XPathParser.prototype.tokenize = function (s1) {\r\n var types = [];\r\n var values = [];\r\n var s = s1 + '\\0';\r\n\r\n var pos = 0;\r\n var c = s.charAt(pos++);\r\n while (1) {\r\n while (c == ' ' || c == '\\t' || c == '\\r' || c == '\\n') {\r\n c = s.charAt(pos++);\r\n }\r\n if (c == '\\0' || pos >= s.length) {\r\n break;\r\n }\r\n\r\n if (c == '(') {\r\n types.push(XPathParser.LEFTPARENTHESIS);\r\n values.push(c);\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n if (c == ')') {\r\n types.push(XPathParser.RIGHTPARENTHESIS);\r\n values.push(c);\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n if (c == '[') {\r\n types.push(XPathParser.LEFTBRACKET);\r\n values.push(c);\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n if (c == ']') {\r\n types.push(XPathParser.RIGHTBRACKET);\r\n values.push(c);\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n if (c == '@') {\r\n types.push(XPathParser.AT);\r\n values.push(c);\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n if (c == ',') {\r\n types.push(XPathParser.COMMA);\r\n values.push(c);\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n if (c == '|') {\r\n types.push(XPathParser.BAR);\r\n values.push(c);\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n if (c == '+') {\r\n types.push(XPathParser.PLUS);\r\n values.push(c);\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n if (c == '-') {\r\n types.push(XPathParser.MINUS);\r\n values.push(c);\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n if (c == '=') {\r\n types.push(XPathParser.EQUALS);\r\n values.push(c);\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n if (c == '$') {\r\n types.push(XPathParser.DOLLAR);\r\n values.push(c);\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n\r\n if (c == '.') {\r\n c = s.charAt(pos++);\r\n if (c == '.') {\r\n types.push(XPathParser.DOUBLEDOT);\r\n values.push(\"..\");\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n if (c >= '0' && c <= '9') {\r\n var number = \".\" + c;\r\n c = s.charAt(pos++);\r\n while (c >= '0' && c <= '9') {\r\n number += c;\r\n c = s.charAt(pos++);\r\n }\r\n types.push(XPathParser.NUMBER);\r\n values.push(number);\r\n continue;\r\n }\r\n types.push(XPathParser.DOT);\r\n values.push('.');\r\n continue;\r\n }\r\n\r\n if (c == '\\'' || c == '\"') {\r\n var delimiter = c;\r\n var literal = \"\";\r\n while (pos < s.length && (c = s.charAt(pos)) !== delimiter) {\r\n literal += c;\r\n pos += 1;\r\n }\r\n if (c !== delimiter) {\r\n throw XPathException.fromMessage(\"Unterminated string literal: \" + delimiter + literal);\r\n }\r\n pos += 1;\r\n types.push(XPathParser.LITERAL);\r\n values.push(literal);\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n\r\n if (c >= '0' && c <= '9') {\r\n var number = c;\r\n c = s.charAt(pos++);\r\n while (c >= '0' && c <= '9') {\r\n number += c;\r\n c = s.charAt(pos++);\r\n }\r\n if (c == '.') {\r\n if (s.charAt(pos) >= '0' && s.charAt(pos) <= '9') {\r\n number += c;\r\n number += s.charAt(pos++);\r\n c = s.charAt(pos++);\r\n while (c >= '0' && c <= '9') {\r\n number += c;\r\n c = s.charAt(pos++);\r\n }\r\n }\r\n }\r\n types.push(XPathParser.NUMBER);\r\n values.push(number);\r\n continue;\r\n }\r\n\r\n if (c == '*') {\r\n if (types.length > 0) {\r\n var last = types[types.length - 1];\r\n if (last != XPathParser.AT\r\n && last != XPathParser.DOUBLECOLON\r\n && last != XPathParser.LEFTPARENTHESIS\r\n && last != XPathParser.LEFTBRACKET\r\n && last != XPathParser.AND\r\n && last != XPathParser.OR\r\n && last != XPathParser.MOD\r\n && last != XPathParser.DIV\r\n && last != XPathParser.MULTIPLYOPERATOR\r\n && last != XPathParser.SLASH\r\n && last != XPathParser.DOUBLESLASH\r\n && last != XPathParser.BAR\r\n && last != XPathParser.PLUS\r\n && last != XPathParser.MINUS\r\n && last != XPathParser.EQUALS\r\n && last != XPathParser.NOTEQUAL\r\n && last != XPathParser.LESSTHAN\r\n && last != XPathParser.LESSTHANOREQUAL\r\n && last != XPathParser.GREATERTHAN\r\n && last != XPathParser.GREATERTHANOREQUAL) {\r\n types.push(XPathParser.MULTIPLYOPERATOR);\r\n values.push(c);\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n }\r\n types.push(XPathParser.ASTERISKNAMETEST);\r\n values.push(c);\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n\r\n if (c == ':') {\r\n if (s.charAt(pos) == ':') {\r\n types.push(XPathParser.DOUBLECOLON);\r\n values.push(\"::\");\r\n pos++;\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n }\r\n\r\n if (c == '/') {\r\n c = s.charAt(pos++);\r\n if (c == '/') {\r\n types.push(XPathParser.DOUBLESLASH);\r\n values.push(\"//\");\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n types.push(XPathParser.SLASH);\r\n values.push('/');\r\n continue;\r\n }\r\n\r\n if (c == '!') {\r\n if (s.charAt(pos) == '=') {\r\n types.push(XPathParser.NOTEQUAL);\r\n values.push(\"!=\");\r\n pos++;\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n }\r\n\r\n if (c == '<') {\r\n if (s.charAt(pos) == '=') {\r\n types.push(XPathParser.LESSTHANOREQUAL);\r\n values.push(\"<=\");\r\n pos++;\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n types.push(XPathParser.LESSTHAN);\r\n values.push('<');\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n\r\n if (c == '>') {\r\n if (s.charAt(pos) == '=') {\r\n types.push(XPathParser.GREATERTHANOREQUAL);\r\n values.push(\">=\");\r\n pos++;\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n types.push(XPathParser.GREATERTHAN);\r\n values.push('>');\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n\r\n if (c == '_' || Utilities.isLetter(c.charCodeAt(0))) {\r\n var name = c;\r\n c = s.charAt(pos++);\r\n while (Utilities.isNCNameChar(c.charCodeAt(0))) {\r\n name += c;\r\n c = s.charAt(pos++);\r\n }\r\n if (types.length > 0) {\r\n var last = types[types.length - 1];\r\n if (last != XPathParser.AT\r\n && last != XPathParser.DOUBLECOLON\r\n && last != XPathParser.LEFTPARENTHESIS\r\n && last != XPathParser.LEFTBRACKET\r\n && last != XPathParser.AND\r\n && last != XPathParser.OR\r\n && last != XPathParser.MOD\r\n && last != XPathParser.DIV\r\n && last != XPathParser.MULTIPLYOPERATOR\r\n && last != XPathParser.SLASH\r\n && last != XPathParser.DOUBLESLASH\r\n && last != XPathParser.BAR\r\n && last != XPathParser.PLUS\r\n && last != XPathParser.MINUS\r\n && last != XPathParser.EQUALS\r\n && last != XPathParser.NOTEQUAL\r\n && last != XPathParser.LESSTHAN\r\n && last != XPathParser.LESSTHANOREQUAL\r\n && last != XPathParser.GREATERTHAN\r\n && last != XPathParser.GREATERTHANOREQUAL) {\r\n if (name == \"and\") {\r\n types.push(XPathParser.AND);\r\n values.push(name);\r\n continue;\r\n }\r\n if (name == \"or\") {\r\n types.push(XPathParser.OR);\r\n values.push(name);\r\n continue;\r\n }\r\n if (name == \"mod\") {\r\n types.push(XPathParser.MOD);\r\n values.push(name);\r\n continue;\r\n }\r\n if (name == \"div\") {\r\n types.push(XPathParser.DIV);\r\n values.push(name);\r\n continue;\r\n }\r\n }\r\n }\r\n if (c == ':') {\r\n if (s.charAt(pos) == '*') {\r\n types.push(XPathParser.NCNAMECOLONASTERISK);\r\n values.push(name + \":*\");\r\n pos++;\r\n c = s.charAt(pos++);\r\n continue;\r\n }\r\n if (s.charAt(pos) == '_' || Utilities.isLetter(s.charCodeAt(pos))) {\r\n name += ':';\r\n c = s.charAt(pos++);\r\n while (Utilities.isNCNameChar(c.charCodeAt(0))) {\r\n name += c;\r\n c = s.charAt(pos++);\r\n }\r\n if (c == '(') {\r\n types.push(XPathParser.FUNCTIONNAME);\r\n values.push(name);\r\n continue;\r\n }\r\n types.push(XPathParser.QNAME);\r\n values.push(name);\r\n continue;\r\n }\r\n if (s.charAt(pos) == ':') {\r\n types.push(XPathParser.AXISNAME);\r\n values.push(name);\r\n continue;\r\n }\r\n }\r\n if (c == '(') {\r\n if (name == \"comment\" || name == \"text\" || name == \"node\") {\r\n types.push(XPathParser.NODETYPE);\r\n values.push(name);\r\n continue;\r\n }\r\n if (name == \"processing-instruction\") {\r\n if (s.charAt(pos) == ')') {\r\n types.push(XPathParser.NODETYPE);\r\n } else {\r\n types.push(XPathParser.PROCESSINGINSTRUCTIONWITHLITERAL);\r\n }\r\n values.push(name);\r\n continue;\r\n }\r\n types.push(XPathParser.FUNCTIONNAME);\r\n values.push(name);\r\n continue;\r\n }\r\n types.push(XPathParser.QNAME);\r\n values.push(name);\r\n continue;\r\n }\r\n\r\n throw new Error(\"Unexpected character \" + c);\r\n }\r\n types.push(1);\r\n values.push(\"[EOF]\");\r\n return [types, values];\r\n };\r\n\r\n XPathParser.SHIFT = 's';\r\n XPathParser.REDUCE = 'r';\r\n XPathParser.ACCEPT = 'a';\r\n\r\n XPathParser.prototype.parse = function (s) {\r\n if (!s) {\r\n throw new Error('XPath expression unspecified.');\r\n }\r\n if (typeof s !== 'string'){\r\n throw new Error('XPath expression must be a string.');\r\n }\r\n\r\n var types;\r\n var values;\r\n var res = this.tokenize(s);\r\n if (res == undefined) {\r\n return undefined;\r\n }\r\n types = res[0];\r\n values = res[1];\r\n var tokenPos = 0;\r\n var state = [];\r\n var tokenType = [];\r\n var tokenValue = [];\r\n var s;\r\n var a;\r\n var t;\r\n\r\n state.push(0);\r\n tokenType.push(1);\r\n tokenValue.push(\"_S\");\r\n\r\n a = types[tokenPos];\r\n t = values[tokenPos++];\r\n while (1) {\r\n s = state[state.length - 1];\r\n switch (XPathParser.actionTable[s].charAt(a - 1)) {\r\n case XPathParser.SHIFT:\r\n tokenType.push(-a);\r\n tokenValue.push(t);\r\n state.push(XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32);\r\n a = types[tokenPos];\r\n t = values[tokenPos++];\r\n break;\r\n case XPathParser.REDUCE:\r\n var num = XPathParser.productions[XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32][1];\r\n var rhs = [];\r\n for (var i = 0; i < num; i++) {\r\n tokenType.pop();\r\n rhs.unshift(tokenValue.pop());\r\n state.pop();\r\n }\r\n var s_ = state[state.length - 1];\r\n tokenType.push(XPathParser.productions[XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32][0]);\r\n if (this.reduceActions[XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32] == undefined) {\r\n tokenValue.push(rhs[0]);\r\n } else {\r\n tokenValue.push(this.reduceActions[XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32](rhs));\r\n }\r\n state.push(XPathParser.gotoTable[s_].charCodeAt(XPathParser.productions[XPathParser.actionTableNumber[s].charCodeAt(a - 1) - 32][0] - 2) - 33);\r\n break;\r\n case XPathParser.ACCEPT:\r\n return new XPath(tokenValue.pop());\r\n default:\r\n throw new Error(\"XPath parse error\");\r\n }\r\n }\r\n };\r\n\r\n // XPath /////////////////////////////////////////////////////////////////////\r\n\r\n XPath.prototype = new Object();\r\n XPath.prototype.constructor = XPath;\r\n XPath.superclass = Object.prototype;\r\n\r\n function XPath(e) {\r\n this.expression = e;\r\n }\r\n\r\n XPath.prototype.toString = function () {\r\n return this.expression.toString();\r\n };\r\n\r\n function setIfUnset(obj, prop, value) {\r\n if (!(prop in obj)) {\r\n obj[prop] = value;\r\n }\r\n }\r\n\r\n XPath.prototype.evaluate = function (c) {\r\n var node = c.expressionContextNode;\r\n\r\n if (!(isNil(node) || isNodeLike(node))) {\r\n throw new Error(\"Context node does not appear to be a valid DOM node.\");\r\n }\r\n\r\n c.contextNode = c.expressionContextNode;\r\n c.contextSize = 1;\r\n c.contextPosition = 1;\r\n\r\n // [2017-11-25] Removed usage of .implementation.hasFeature() since it does\r\n // not reliably detect HTML DOMs (always returns false in xmldom and true in browsers)\r\n if (c.isHtml) {\r\n setIfUnset(c, 'caseInsensitive', true);\r\n setIfUnset(c, 'allowAnyNamespaceForNoPrefix', true);\r\n }\r\n\r\n setIfUnset(c, 'caseInsensitive', false);\r\n\r\n return this.expression.evaluate(c);\r\n };\r\n\r\n XPath.XML_NAMESPACE_URI = \"http://www.w3.org/XML/1998/namespace\";\r\n XPath.XMLNS_NAMESPACE_URI = \"http://www.w3.org/2000/xmlns/\";\r\n\r\n // Expression ////////////////////////////////////////////////////////////////\r\n\r\n Expression.prototype = new Object();\r\n Expression.prototype.constructor = Expression;\r\n Expression.superclass = Object.prototype;\r\n\r\n function Expression() {\r\n }\r\n\r\n Expression.prototype.init = function () {\r\n };\r\n\r\n Expression.prototype.toString = function () {\r\n return \"<Expression>\";\r\n };\r\n\r\n Expression.prototype.evaluate = function (c) {\r\n throw new Error(\"Could not evaluate expression.\");\r\n };\r\n\r\n // UnaryOperation ////////////////////////////////////////////////////////////\r\n\r\n UnaryOperation.prototype = new Expression();\r\n UnaryOperation.prototype.constructor = UnaryOperation;\r\n UnaryOperation.superclass = Expression.prototype;\r\n\r\n function UnaryOperation(rhs) {\r\n if (arguments.length > 0) {\r\n this.init(rhs);\r\n }\r\n }\r\n\r\n UnaryOperation.prototype.init = function (rhs) {\r\n this.rhs = rhs;\r\n };\r\n\r\n // UnaryMinusOperation ///////////////////////////////////////////////////////\r\n\r\n UnaryMinusOperation.prototype = new UnaryOperation();\r\n UnaryMinusOperation.prototype.constructor = UnaryMinusOperation;\r\n UnaryMinusOperation.superclass = UnaryOperation.prototype;\r\n\r\n function UnaryMinusOperation(rhs) {\r\n if (arguments.length > 0) {\r\n this.init(rhs);\r\n }\r\n }\r\n\r\n UnaryMinusOperation.prototype.init = function (rhs) {\r\n UnaryMinusOperation.superclass.init.call(this, rhs);\r\n };\r\n\r\n UnaryMinusOperation.prototype.evaluate = function (c) {\r\n return this.rhs.evaluate(c).number().negate();\r\n };\r\n\r\n UnaryMinusOperation.prototype.toString = function () {\r\n return \"-\" + this.rhs.toString();\r\n };\r\n\r\n // BinaryOperation ///////////////////////////////////////////////////////////\r\n\r\n BinaryOperation.prototype = new Expression();\r\n BinaryOperation.prototype.constructor = BinaryOperation;\r\n BinaryOperation.superclass = Expression.prototype;\r\n\r\n function BinaryOperation(lhs, rhs) {\r\n if (arguments.length > 0) {\r\n this.init(lhs, rhs);\r\n }\r\n }\r\n\r\n BinaryOperation.prototype.init = function (lhs, rhs) {\r\n this.lhs = lhs;\r\n this.rhs = rhs;\r\n };\r\n\r\n // OrOperation ///////////////////////////////////////////////////////////////\r\n\r\n OrOperation.prototype = new BinaryOperation();\r\n OrOperation.prototype.constructor = OrOperation;\r\n OrOperation.superclass = BinaryOperation.prototype;\r\n\r\n function OrOperation(lhs, rhs) {\r\n if (arguments.length > 0) {\r\n this.init(lhs, rhs);\r\n }\r\n }\r\n\r\n OrOperation.prototype.init = function (lhs, rhs) {\r\n OrOperation.superclass.init.call(this, lhs, rhs);\r\n };\r\n\r\n OrOperation.prototype.toString = function () {\r\n return \"(\" + this.lhs.toString() + \" or \" + this.rhs.toString() + \")\";\r\n };\r\n\r\n OrOperation.prototype.evaluate = function (c) {\r\n var b = this.lhs.evaluate(c).bool();\r\n if (b.booleanValue()) {\r\n return b;\r\n }\r\n return this.rhs.evaluate(c).bool();\r\n };\r\n\r\n // AndOperation //////////////////////////////////////////////////////////////\r\n\r\n AndOperation.prototype = new BinaryOperation();\r\n AndOperation.prototype.constructor = AndOperation;\r\n AndOperation.superclass = BinaryOperation.prototype;\r\n\r\n function AndOperation(lhs, rhs) {\r\n if (arguments.length > 0) {\r\n this.init(lhs, rhs);\r\n }\r\n }\r\n\r\n AndOperation.prototype.init = function (lhs, rhs) {\r\n AndOperation.superclass.init.call(this, lhs, rhs);\r\n };\r\n\r\n AndOperation.prototype.toString = function () {\r\n return \"(\" + this.lhs.toString() + \" and \" + this.rhs.toString() + \")\";\r\n };\r\n\r\n AndOperation.prototype.evaluate = function (c) {\r\n var b = this.lhs.evaluate(c).bool();\r\n if (!b.booleanValue()) {\r\n return b;\r\n }\r\n return this.rhs.evaluate(c).bool();\r\n };\r\n\r\n // EqualsOperation ///////////////////////////////////////////////////////////\r\n\r\n EqualsOperation.prototype = new BinaryOperation();\r\n EqualsOperation.prototype.constructor = EqualsOperation;\r\n EqualsOperation.superclass = BinaryOperation.prototype;\r\n\r\n function EqualsOperation(lhs, rhs) {\r\n if (arguments.length > 0) {\r\n this.init(lhs, rhs);\r\n }\r\n }\r\n\r\n EqualsOperation.prototype.init = function (lhs, rhs) {\r\n EqualsOperation.superclass.init.call(this, lhs, rhs);\r\n };\r\n\r\n EqualsOperation.prototype.toString = function () {\r\n return \"(\" + this.lhs.toString() + \" = \" + this.rhs.toString() + \")\";\r\n };\r\n\r\n EqualsOperation.prototype.evaluate = function (c) {\r\n return this.lhs.evaluate(c).equals(this.rhs.evaluate(c));\r\n };\r\n\r\n // NotEqualOperation /////////////////////////////////////////////////////////\r\n\r\n NotEqualOperation.prototype = new BinaryOperation();\r\n NotEqualOperation.prototype.constructor = NotEqualOperation;\r\n NotEqualOperation.superclass = BinaryOperation.prototype;\r\n\r\n function NotEqualOperation(lhs, rhs) {\r\n if (arguments.length > 0) {\r\n this.init(lhs, rhs);\r\n }\r\n }\r\n\r\n NotEqualOperation.prototype.init = function (lhs, rhs) {\r\n NotEqualOperation.superclass.init.call(this, lhs, rhs);\r\n };\r\n\r\n NotEqualOperation.prototype.toString = function () {\r\n return \"(\" + this.lhs.toString() + \" != \" + this.rhs.toString() + \")\";\r\n };\r\n\r\n NotEqualOperation.prototype.evaluate = function (c) {\r\n return this.lhs.evaluate(c).notequal(this.rhs.evaluate(c));\r\n };\r\n\r\n // LessThanOperation /////////////////////////////////////////////////////////\r\n\r\n LessThanOperation.prototype = new BinaryOperation();\r\n LessThanOperation.prototype.constructor = LessThanOperation;\r\n LessThanOperation.superclass = BinaryOperation.prototype;\r\n\r\n function LessThanOperation(lhs, rhs) {\r\n if (arguments.length > 0) {\r\n this.init(lhs, rhs);\r\n }\r\n }\r\n\r\n LessThanOperation.prototype.init = function (lhs, rhs) {\r\n LessThanOperation.superclass.init.call(this, lhs, rhs);\r\n };\r\n\r\n LessThanOperation.prototype.evaluate = function (c) {\r\n return this.lhs.evaluate(c).lessthan(this.rhs.evaluate(c));\r\n };\r\n\r\n LessThanOperation.prototype.toString = function () {\r\n return \"(\" + this.lhs.toString() + \" < \" + this.rhs.toString() + \")\";\r\n };\r\n\r\n // GreaterThanOperation //////////////////////////////////////////////////////\r\n\r\n GreaterThanOperation.prototype = new BinaryOperation();\r\n GreaterThanOperation.prototype.constructor = GreaterThanOperation;\r\n GreaterThanOperation.superclass = BinaryOperation.prototype;\r\n\r\n function GreaterThanOperation(lhs, rhs) {\r\n if (arguments.length > 0) {\r\n this.init(lhs, rhs);\r\n }\r\n }\r\n\r\n GreaterThanOperation.prototype.init = function (lhs, rhs) {\r\n GreaterThanOperation.superclass.init.call(this, lhs, rhs);\r\n };\r\n\r\n GreaterThanOperation.prototype.evaluate = function (c) {\r\n return this.lhs.evaluate(c).greaterthan(this.rhs.evaluate(c));\r\n };\r\n\r\n GreaterThanOperation.prototype.toString = function () {\r\n return \"(\" + this.lhs.toString() + \" > \" + this.rhs.toString() + \")\";\r\n };\r\n\r\n // LessThanOrEqualOperation //////////////////////////////////////////////////\r\n\r\n LessThanOrEqualOperation.prototype = new BinaryOperation();\r\n LessThanOrEqualOperation.prototype.constructor = LessThanOrEqualOperation;\r\n LessThanOrEqualOperation.superclass = BinaryOperation.prototype;\r\n\r\n function LessThanOrEqualOperation(lhs, rhs) {\r\n if (arguments.length > 0) {\r\n this.init(lhs, rhs);\r\n }\r\n }\r\n\r\n LessThanOrEqualOperation.prototype.init = function (lhs, rhs) {\r\n LessThanOrEqualOperation.superclass.init.call(this, lhs, rhs);\r\n };\r\n\r\n LessThanOrEqualOperation.prototype.evaluate = function (c) {\r\n return this.lhs.evaluate(c).lessthanorequal(this.rhs.evaluate(c));\r\n };\r\n\r\n LessThanOrEqualOperation.prototype.toString = function () {\r\n return \"(\" + this.lhs.toString() + \" <= \" + this.rhs.toString() + \")\";\r\n };\r\n\r\n // GreaterThanOrEqualOperation ///////////////////////////////////////////////\r\n\r\n GreaterThanOrEqualOperation.prototype = new BinaryOperation();\r\n GreaterThanOrEqualOperation.prototype.constructor = GreaterThanOrEqualOperation;\r\n GreaterThanOrEqualOperation.superclass = BinaryOperation.prototype;\r\n\r\n function GreaterThanOrEqualOperation(lhs, rhs) {\r\n if (arguments.length > 0) {\r\n this.init(lhs, rhs);\r\n }\r\n }\r\n\r\n GreaterThanOrEqualOperation.prototype.init = function (lhs, rhs) {\r\n GreaterThanOrEqualOperation.superclass.init.call(this, lhs, rhs);\r\n };\r\n\r\n GreaterThanOrEqualOperation.prototype.evaluate = function (c) {\r\n return this.lhs.evaluate(c).greaterthanorequal(this.rhs.evaluate(c));\r\n };\r\n\r\n GreaterThanOrEqualOperation.prototype.toString = function () {\r\n return \"(\" + this.lhs.toString() + \" >= \" + this.rhs.toString() + \")\";\r\n };\r\n\r\n // PlusOperation /////////////////////////////////////////////////////////////\r\n\r\n PlusOperation.prototype = new BinaryOperation();\r\n PlusOperation.prototype.constructor = PlusOperation;\r\n PlusOperation.superclass = BinaryOperation.prototype;\r\n\r\n function PlusOperation(lhs, rhs) {\r\n if (arguments.length > 0) {\r\n this.init(lhs, rhs);\r\n }\r\n }\r\n\r\n PlusOperation.prototype.init = function (lhs, rhs) {\r\n PlusOperation.superclass.init.call(this, lhs, rhs);\r\n };\r\n\r\n PlusOperation.prototype.evaluate = function (c) {\r\n return this.lhs.evaluate(c).number().plus(this.rhs.evaluate(c).number());\r\n };\r\n\r\n PlusOperation.prototype.toString = function () {\r\n return \"(\" + this.lhs.toString() + \" + \" + this.rhs.toString() + \")\";\r\n };\r\n\r\n // MinusOperation ////////////////////////////////////////////////////////////\r\n\r\n MinusOperation.prototype = new BinaryOperation();\r\n MinusOperation.prototype.constructor = MinusOperation;\r\n MinusOperation.superclass = BinaryOperation.prototype;\r\n\r\n function MinusOperation(lhs, rhs) {\r\n if (arguments.length > 0) {\r\n this.init(lhs, rhs);\r\n }\r\n }\r\n\r\n MinusOperation.prototype.init = function (lhs, rhs) {\r\n MinusOperation.superclass.init.call(this, lhs, rhs);\r\n };\r\n\r\n MinusOperation.prototype.evaluate = function (c) {\r\n return this.lhs.evaluate(c).number().minus(this.rhs.evaluate(c).number());\r\n };\r\n\r\n MinusOperation.prototype.toString = function () {\r\n return \"(\" + this.lhs.toString() + \" - \" + this.rhs.toString() + \")\";\r\n };\r\n\r\n // MultiplyOperation /////////////////////////////////////////////////////////\r\n\r\n MultiplyOperation.prototype = new BinaryOperation();\r\n MultiplyOperation.prototype.constructor = MultiplyOperation;\r\n MultiplyOperation.superclass = BinaryOperation.prototype;\r\n\r\n function MultiplyOperation(lhs, rhs) {\r\n if (arguments.length > 0) {\r\n this.init(lhs, rhs);\r\n }\r\n }\r\n\r\n MultiplyOperation.prototype.init = function (lhs, rhs) {\r\n MultiplyOperation.superclass.init.call(this, lhs, rhs);\r\n };\r\n\r\n MultiplyOperation.prototype.evaluate = function (c) {\r\n return this.lhs.evaluate(c).number().multiply(this.rhs.evaluate(c).number());\r\n };\r\n\r\n MultiplyOperation.prototype.toString = function () {\r\n return \"(\" + this.lhs.toString() + \" * \" + this.rhs.toString() + \")\";\r\n };\r\n\r\n // DivOperation //////////////////////////////////////////////////////////////\r\n\r\n DivOperation.prototype = new BinaryOperation();\r\n DivOperation.prototype.constructor = DivOperation;\r\n DivOperation.superclass = BinaryOperation.prototype;\r\n\r\n function DivOperation(lhs, rhs) {\r\n if (arguments.length > 0) {\r\n this.init(lhs, rhs);\r\n }\r\n }\r\n\r\n DivOperation.prototype.init = function (lhs, rhs) {\r\n DivOperation.superclass.init.call(this, lhs, rhs);\r\n };\r\n\r\n DivOperation.prototype.evaluate = function (c) {\r\n return this.lhs.evaluate(c).number().div(this.rhs.evaluate(c).number());\r\n };\r\n\r\n DivOperation.prototype.toString = function () {\r\n return \"(\" + this.lhs.toString() + \" div \" + this.rhs.toString() + \")\";\r\n };\r\n\r\n // ModOperation //////////////////////////////////////////////////////////////\r\n\r\n ModOperation.prototype = new BinaryOperation();\r\n ModOperation.prototype.constructor = ModOperation;\r\n ModOperation.superclass = BinaryOperation.prototype;\r\n\r\n function ModOperation(lhs, rhs) {\r\n if (arguments.length > 0) {\r\n this.init(lhs, rhs);\r\n }\r\n }\r\n\r\n ModOperation.prototype.init = function (lhs, rhs) {\r\n ModOperation.superclass.init.call(this, lhs, rhs);\r\n };\r\n\r\n ModOperation.prototype.evaluate = function (c) {\r\n return this.lhs.evaluate(c).number().mod(this.rhs.evaluate(c).number());\r\n };\r\n\r\n ModOperation.prototype.toString = function () {\r\n return \"(\" + this.lhs.toString() + \" mod \" + this.rhs.toString() + \")\";\r\n };\r\n\r\n // BarOperation //////////////////////////////////////////////////////////////\r\n\r\n BarOperation.prototype = new BinaryOperation();\r\n BarOperation.prototype.constructor = BarOperation;\r\n BarOperation.superclass = BinaryOperation.prototype;\r\n\r\n function BarOperation(lhs, rhs) {\r\n if (arguments.length > 0) {\r\n this.init(lhs, rhs);\r\n }\r\n }\r\n\r\n BarOperation.prototype.init = function (lhs, rhs) {\r\n BarOperation.superclass.init.call(this, lhs, rhs);\r\n };\r\n\r\n BarOperation.prototype.evaluate = function (c) {\r\n return this.lhs.evaluate(c).nodeset().union(this.rhs.evaluate(c).nodeset());\r\n };\r\n\r\n BarOperation.prototype.toString = function () {\r\n return map(toString, [this.lhs, this.rhs]).join(' | ');\r\n };\r\n\r\n // PathExpr //////////////////////////////////////////////////////////////////\r\n\r\n PathExpr.prototype = new Expression();\r\n PathExpr.prototype.constructor = PathExpr;\r\n PathExpr.superclass = Expression.prototype;\r\n\r\n function PathExpr(filter, filterPreds, locpath) {\r\n if (arguments.length > 0) {\r\n this.init(filter, filterPreds, locpath);\r\n }\r\n }\r\n\r\n PathExpr.prototype.init = function (filter, filterPreds, locpath) {\r\n PathExpr.superclass.init.call(this);\r\n this.filter = filter;\r\n this.filterPredicates = filterPreds;\r\n this.locationPath = locpath;\r\n };\r\n\r\n /**\r\n * Returns the topmost node of the tree containing node\r\n */\r\n function findRoot(node) {\r\n while (node && node.parentNode) {\r\n node = node.parentNode;\r\n }\r\n\r\n return node;\r\n }\r\n\r\n var applyPredicates = function (predicates, c, nodes, reverse) {\r\n if (predicates.length === 0) {\r\n return nodes;\r\n }\r\n\r\n var ctx = c.extend({});\r\n\r\n return reduce(\r\n function (inNodes, pred) {\r\n ctx.contextSize = inNodes.length;\r\n\r\n return filter(\r\n function (node, i) {\r\n ctx.contextNode = node;\r\n ctx.contextPosition = i + 1;\r\n\r\n return PathExpr.predicateMatches(pred, ctx);\r\n },\r\n inNodes\r\n );\r\n },\r\n sortNodes(nodes, reverse),\r\n predicates\r\n );\r\n };\r\n\r\n PathExpr.getRoot = function (xpc, nodes) {\r\n var firstNode = nodes[0];\r\n\r\n // xpc.virtualRoot could possibly provide a root even if firstNode is null,\r\n // so using a guard here instead of throwing.\r\n if (firstNode && firstNode.nodeType === NodeTypes.DOCUMENT_NODE) {\r\n return firstNode;\r\n }\r\n\r\n if (xpc.virtualRoot) {\r\n return xpc.virtualRoot;\r\n }\r\n\r\n if (!firstNode) {\r\n throw new Error('Context node not found when determining document root.');\r\n }\r\n\r\n var ownerDoc = firstNode.ownerDocument;\r\n\r\n if (ownerDoc) {\r\n return ownerDoc;\r\n }\r\n\r\n // IE 5.5 doesn't have ownerDocument?\r\n var n = firstNode;\r\n while (n.parentNode != null) {\r\n n = n.parentNode;\r\n }\r\n return n;\r\n }\r\n\r\n var getPrefixForNamespaceNode = function (attrNode) {\r\n var nm = String(attrNode.name);\r\n\r\n if (nm === \"xmlns\") {\r\n return \"\";\r\n }\r\n\r\n if (nm.substring(0, 6) === \"xmlns:\") {\r\n return nm.substring(6, nm.length);\r\n }\r\n\r\n return null;\r\n };\r\n\r\n PathExpr.applyStep = function (step, xpc, node) {\r\n if (!node) {\r\n throw new Error('Context node not found when evaluating XPath step: ' + step);\r\n }\r\n\r\n var newNodes = [];\r\n xpc.contextNode = node;\r\n\r\n switch (step.axis) {\r\n case Step.ANCESTOR:\r\n // look at all the ancestor nodes\r\n if (xpc.contextNode === xpc.virtualRoot) {\r\n break;\r\n }\r\n var m;\r\n if (xpc.contextNode.nodeType == NodeTypes.ATTRIBUTE_NODE) {\r\n m = PathExpr.getOwnerElement(xpc.contextNode);\r\n } else {\r\n m = xpc.contextNode.parentNode;\r\n }\r\n while (m != null) {\r\n if (step.nodeTest.matches(m, xpc)) {\r\n newNodes.push(m);\r\n }\r\n if (m === xpc.virtualRoot) {\r\n break;\r\n }\r\n m = m.parentNode;\r\n }\r\n break;\r\n\r\n case Step.ANCESTORORSELF:\r\n // look at all the ancestor nodes and the current node\r\n for (var m = xpc.contextNode; m != null; m = m.nodeType == NodeTypes.ATTRIBUTE_NODE ? PathExpr.getOwnerElement(m) : m.parentNode) {\r\n if (step.nodeTest.matches(m, xpc)) {\r\n newNodes.push(m);\r\n }\r\n if (m === xpc.virtualRoot) {\r\n break;\r\n }\r\n }\r\n break;\r\n\r\n case Step.ATTRIBUTE:\r\n // look at the attributes\r\n var nnm = xpc.contextNode.attributes;\r\n if (nnm != null) {\r\n for (var k = 0; k < nnm.length; k++) {\r\n var m = nnm.item(k);\r\n if (step.nodeTest.matches(m, xpc)) {\r\n newNodes.push(m);\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case Step.CHILD:\r\n // look at all child elements\r\n for (var m = xpc.contextNode.firstChild; m != null; m = m.nextSibling) {\r\n if (step.nodeTest.matches(m, xpc)) {\r\n newNodes.push(m);\r\n }\r\n }\r\n break;\r\n\r\n case Step.DESCENDANT:\r\n // look at all descendant nodes\r\n var st = [xpc.contextNode.firstChild];\r\n while (st.length > 0) {\r\n for (var m = st.pop(); m != null;) {\r\n if (step.nodeTest.matches(m, xpc)) {\r\n newNodes.push(m);\r\n }\r\n if (m.firstChild != null) {\r\n st.push(m.nextSibling);\r\n m = m.firstChild;\r\n } else {\r\n m = m.nextSibling;\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case Step.DESCENDANTORSELF:\r\n // look at self\r\n if (step.nodeTest.matches(xpc.contextNode, xpc)) {\r\n newNodes.push(xpc.contextNode);\r\n }\r\n // look at all descendant nodes\r\n var st = [xpc.contextNode.firstChild];\r\n while (st.length > 0) {\r\n for (var m = st.pop(); m != null;) {\r\n if (step.nodeTest.matches(m, xpc)) {\r\n newNodes.push(m);\r\n }\r\n if (m.firstChild != null) {\r\n st.push(m.nextSibling);\r\n m = m.firstChild;\r\n } else {\r\n m = m.nextSibling;\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case Step.FOLLOWING:\r\n if (xpc.contextNode === xpc.virtualRoot) {\r\n break;\r\n }\r\n var st = [];\r\n if (xpc.contextNode.firstChild != null) {\r\n st.unshift(xpc.contextNode.firstChild);\r\n } else {\r\n st.unshift(xpc.contextNode.nextSibling);\r\n }\r\n for (var m = xpc.contextNode.parentNode; m != null && m.nodeType != NodeTypes.DOCUMENT_NODE && m !== xpc.virtualRoot; m = m.parentNode) {\r\n st.unshift(m.nextSibling);\r\n }\r\n do {\r\n for (var m = st.pop(); m != null;) {\r\n if (step.nodeTest.matches(m, xpc)) {\r\n newNodes.push(m);\r\n }\r\n if (m.firstChild != null) {\r\n st.push(m.nextSibling);\r\n m = m.firstChild;\r\n } else {\r\n m = m.nextSibling;\r\n }\r\n }\r\n } while (st.length > 0);\r\n break;\r\n\r\n case Step.FOLLOWINGSIBLING:\r\n if (xpc.contextNode === xpc.virtualRoot) {\r\n break;\r\n }\r\n for (var m = xpc.contextNode.nextSibling; m != null; m = m.nextSibling) {\r\n if (step.nodeTest.matches(m, xpc)) {\r\n newNodes.push(m);\r\n }\r\n }\r\n break;\r\n\r\n case Step.NAMESPACE:\r\n var nodes = {};\r\n\r\n if (xpc.contextNode.nodeType == NodeTypes.ELEMENT_NODE) {\r\n // BUG: This only collects the namespaces on the current node, but seemingly\r\n // it should collect all those in scope\r\n nodes[\"xml\"] = new XPathNamespace(\"xml\", null, XPath.XML_NAMESPACE_URI, xpc.contextNode);\r\n\r\n for (var m = xpc.contextNode; m != null && m.nodeType == NodeTypes.ELEMENT_NODE; m = m.parentNode) {\r\n for (var k = 0; k < m.attributes.length; k++) {\r\n var attr = m.attributes.item(k);\r\n\r\n var pre = getPrefixForNamespaceNode(attr);\r\n\r\n if (pre != null && nodes[pre] == undefined) {\r\n nodes[pre] = new XPathNamespace(pre, attr, attr.value, xpc.contextNode);\r\n }\r\n }\r\n }\r\n\r\n for (var pre in nodes) {\r\n var node = nodes[pre];\r\n\r\n if (step.nodeTest.matches(node, xpc)) {\r\n newNodes.push(node);\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case Step.PARENT:\r\n m = null;\r\n if (xpc.contextNode !== xpc.virtualRoot) {\r\n if (xpc.contextNode.nodeType == NodeTypes.ATTRIBUTE_NODE) {\r\n m = PathExpr.getOwnerElement(xpc.contextNode);\r\n } else {\r\n m = xpc.contextNode.parentNode;\r\n }\r\n }\r\n if (m != null && step.nodeTest.matches(m, xpc)) {\r\n newNodes.push(m);\r\n }\r\n break;\r\n\r\n case Step.PRECEDING:\r\n var st;\r\n if (xpc.virtualRoot != null) {\r\n st = [xpc.virtualRoot];\r\n } else {\r\n // cannot rely on .ownerDocument because the node may be in a document fragment\r\n st = [findRoot(xpc.contextNode)];\r\n }\r\n outer: while (st.length > 0) {\r\n for (var m = st.pop(); m != null;) {\r\n if (m == xpc.contextNode) {\r\n break outer;\r\n }\r\n if (step.nodeTest.matches(m, xpc)) {\r\n newNodes.unshift(m);\r\n }\r\n if (m.firstChild != null) {\r\n st.push(m.nextSibling);\r\n m = m.firstChild;\r\n } else {\r\n m = m.nextSibling;\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case Step.PRECEDINGSIBLING:\r\n if (xpc.contextNode === xpc.virtualRoot) {\r\n break;\r\n }\r\n for (var m = xpc.contextNode.previousSibling; m != null; m = m.previousSibling) {\r\n if (step.nodeTest.matches(m, xpc)) {\r\n newNodes.push(m);\r\n }\r\n }\r\n break;\r\n\r\n case Step.SELF:\r\n if (step.nodeTest.matches(xpc.contextNode, xpc)) {\r\n newNodes.push(xpc.contextNode);\r\n }\r\n break;\r\n\r\n default:\r\n }\r\n\r\n return newNodes;\r\n };\r\n\r\n function applyStepWithPredicates(step, xpc, node) {\r\n return applyPredicates(\r\n step.predicates,\r\n xpc,\r\n PathExpr.applyStep(step, xpc, node),\r\n includes(REVERSE_AXES, step.axis)\r\n );\r\n }\r\n\r\n function applyStepToNodes(context, nodes, step) {\r\n return flatten(\r\n map(\r\n applyStepWithPredicates.bind(null, step, context),\r\n nodes\r\n )\r\n );\r\n }\r\n\r\n PathExpr.applySteps = function (steps, xpc, nodes) {\r\n return reduce(\r\n applyStepToNodes.bind(null, xpc),\r\n nodes,\r\n steps\r\n );\r\n }\r\n\r\n PathExpr.prototype.applyFilter = function (c, xpc) {\r\n if (!this.filter) {\r\n return { nodes: [c.contextNode] };\r\n }\r\n\r\n var ns = this.filter.evaluate(c);\r\n\r\n if (!Utilities.instance_of(ns, XNodeSet)) {\r\n if (this.filterPredicates != null && this.filterPredicates.length > 0 || this.locationPath != null) {\r\n throw new Error(\"Path expression filter must evaluate to a nodeset if predicates or location path are used\");\r\n }\r\n\r\n return { nonNodes: ns };\r\n }\r\n\r\n return {\r\n nodes: applyPredicates(\r\n this.filterPredicates || [],\r\n xpc,\r\n ns.toUnsortedArray(),\r\n false // reverse\r\n )\r\n };\r\n };\r\n\r\n PathExpr.applyLocationPath = function (locationPath, xpc, nodes) {\r\n if (!locationPath) {\r\n return nodes;\r\n }\r\n\r\n var startNodes = locationPath.absolute ? [PathExpr.getRoot(xpc, nodes)] : nodes;\r\n\r\n return PathExpr.applySteps(locationPath.steps, xpc, startNodes);\r\n };\r\n\r\n PathExpr.prototype.evaluate = function (c) {\r\n var xpc = assign(new XPathContext(), c);\r\n\r\n var filterResult = this.applyFilter(c, xpc);\r\n\r\n if ('nonNodes' in filterResult) {\r\n return filterResult.nonNodes;\r\n }\r\n\r\n var ns = new XNodeSet();\r\n ns.addArray(PathExpr.applyLocationPath(this.locationPath, xpc, filterResult.nodes));\r\n return ns;\r\n };\r\n\r\n PathExpr.predicateMatches = function (pred, c) {\r\n var res = pred.evaluate(c);\r\n\r\n return Utilities.instance_of(res, XNumber)\r\n ? c.contextPosition === res.numberValue()\r\n : res.booleanValue();\r\n };\r\n\r\n PathExpr.predicateString = function (predicate) {\r\n return wrap('[', ']', predicate.toString());\r\n }\r\n\r\n PathExpr.predicatesString = function (predicates) {\r\n return join(\r\n '',\r\n map(PathExpr.predicateString, predicates)\r\n );\r\n }\r\n\r\n PathExpr.prototype.toString = function () {\r\n if (this.filter != undefined) {\r\n var filterStr = toString(this.filter);\r\n\r\n if (Utilities.instance_of(this.filter, XString)) {\r\n return wrap(\"'\", \"'\", filterStr);\r\n }\r\n if (this.filterPredicates != undefined && this.filterPredicates.length) {\r\n return wrap('(', ')', filterStr) +\r\n PathExpr.predicatesString(this.filterPredicates);\r\n }\r\n if (this.locationPath != undefined) {\r\n return filterStr +\r\n (this.locationPath.absolute ? '' : '/') +\r\n toString(this.locationPath);\r\n }\r\n\r\n return filterStr;\r\n }\r\n\r\n return toString(this.locationPath);\r\n };\r\n\r\n PathExpr.getOwnerElement = function (n) {\r\n // DOM 2 has ownerElement\r\n if (n.ownerElement) {\r\n return n.ownerElement;\r\n }\r\n // DOM 1 Internet Explorer can use selectSingleNode (ironically)\r\n try {\r\n if (n.selectSingleNode) {\r\n return n.selectSingleNode(\"..\");\r\n }\r\n } catch (e) {\r\n }\r\n // Other DOM 1 implementations must use this egregious search\r\n var doc = n.nodeType == NodeTypes.DOCUMENT_NODE\r\n ? n\r\n : n.ownerDocument;\r\n var elts = doc.getElementsByTagName(\"*\");\r\n for (var i = 0; i < elts.length; i++) {\r\n var elt = elts.item(i);\r\n var nnm = elt.attributes;\r\n for (var j = 0; j < nnm.length; j++) {\r\n var an = nnm.item(j);\r\n if (an === n) {\r\n return elt;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n // LocationPath //////////////////////////////////////////////////////////////\r\n\r\n LocationPath.prototype = new Object();\r\n LocationPath.prototype.constructor = LocationPath;\r\n LocationPath.superclass = Object.prototype;\r\n\r\n function LocationPath(abs, steps) {\r\n if (arguments.length > 0) {\r\n this.init(abs, steps);\r\n }\r\n }\r\n\r\n LocationPath.prototype.init = function (abs, steps) {\r\n this.absolute = abs;\r\n this.steps = steps;\r\n };\r\n\r\n LocationPath.prototype.toString = function () {\r\n return (\r\n (this.absolute ? '/' : '') +\r\n map(toString, this.steps).join('/')\r\n );\r\n };\r\n\r\n // Step //////////////////////////////////////////////////////////////////////\r\n\r\n Step.prototype = new Object();\r\n Step.prototype.constructor = Step;\r\n Step.superclass = Object.prototype;\r\n\r\n function Step(axis, nodetest, preds) {\r\n if (arguments.length > 0) {\r\n this.init(axis, nodetest, preds);\r\n }\r\n }\r\n\r\n Step.prototype.init = function (axis, nodetest, preds) {\r\n this.axis = axis;\r\n this.nodeTest = nodetest;\r\n this.predicates = preds;\r\n };\r\n\r\n Step.prototype.toString = function () {\r\n return Step.STEPNAMES[this.axis] +\r\n \"::\" +\r\n this.nodeTest.toString() +\r\n PathExpr.predicatesString(this.predicates);\r\n };\r\n\r\n\r\n Step.ANCESTOR = 0;\r\n Step.ANCESTORORSELF = 1;\r\n Step.ATTRIBUTE = 2;\r\n Step.CHILD = 3;\r\n Step.DESCENDANT = 4;\r\n Step.DESCENDANTORSELF = 5;\r\n Step.FOLLOWING = 6;\r\n Step.FOLLOWINGSIBLING = 7;\r\n Step.NAMESPACE = 8;\r\n Step.PARENT = 9;\r\n Step.PRECEDING = 10;\r\n Step.PRECEDINGSIBLING = 11;\r\n Step.SELF = 12;\r\n\r\n Step.STEPNAMES = reduce(function (acc, x) { return acc[x[0]] = x[1], acc; }, {}, [\r\n [Step.ANCESTOR, 'ancestor'],\r\n [Step.ANCESTORORSELF, 'ancestor-or-self'],\r\n [Step.ATTRIBUTE, 'attribute'],\r\n [Step.CHILD, 'child'],\r\n [Step.DESCENDANT, 'descendant'],\r\n [Step.DESCENDANTORSELF, 'descendant-or-self'],\r\n [Step.FOLLOWING, 'following'],\r\n [Step.FOLLOWINGSIBLING, 'following-sibling'],\r\n [Step.NAMESPACE, 'namespace'],\r\n [Step.PARENT, 'parent'],\r\n [Step.PRECEDING, 'preceding'],\r\n [Step.PRECEDINGSIBLING, 'preceding-sibling'],\r\n [Step.SELF, 'self']\r\n ]);\r\n\r\n var REVERSE_AXES = [\r\n Step.ANCESTOR,\r\n Step.ANCESTORORSELF,\r\n Step.PARENT,\r\n Step.PRECEDING,\r\n Step.PRECEDINGSIBLING\r\n ];\r\n\r\n // NodeTest //////////////////////////////////////////////////////////////////\r\n\r\n NodeTest.prototype = new Object();\r\n NodeTest.prototype.constructor = NodeTest;\r\n NodeTest.superclass = Object.prototype;\r\n\r\n function NodeTest(type, value) {\r\n if (arguments.length > 0) {\r\n this.init(type, value);\r\n }\r\n }\r\n\r\n NodeTest.prototype.init = function (type, value) {\r\n this.type = type;\r\n this.value = value;\r\n };\r\n\r\n NodeTest.prototype.toString = function () {\r\n return \"<unknown nodetest type>\";\r\n };\r\n\r\n NodeTest.prototype.matches = function (n, xpc) {\r\n console.warn('unknown node test type');\r\n };\r\n\r\n NodeTest.NAMETESTANY = 0;\r\n NodeTest.NAMETESTPREFIXANY = 1;\r\n NodeTest.NAMETESTQNAME = 2;\r\n NodeTest.COMMENT = 3;\r\n NodeTest.TEXT = 4;\r\n NodeTest.PI = 5;\r\n NodeTest.NODE = 6;\r\n\r\n NodeTest.isNodeType = function (types) {\r\n return function (node) {\r\n return includes(types, node.nodeType);\r\n };\r\n };\r\n\r\n NodeTest.makeNodeTestType = function (type, members, ctor) {\r\n var newType = ctor || function () { };\r\n\r\n newType.prototype = new NodeTest(type);\r\n newType.prototype.constructor = newType;\r\n\r\n assign(newType.prototype, members);\r\n\r\n return newType;\r\n };\r\n // create invariant node test for certain node types\r\n NodeTest.makeNodeTypeTest = function (type, nodeTypes, stringVal) {\r\n return new (NodeTest.makeNodeTestType(type, {\r\n matches: NodeTest.isNodeType(nodeTypes),\r\n toString: always(stringVal)\r\n }))();\r\n };\r\n\r\n NodeTest.hasPrefix = function (node) {\r\n return node.prefix || (node.nodeName || node.tagName).indexOf(':') !== -1;\r\n };\r\n\r\n NodeTest.isElementOrAttribute = NodeTest.isNodeType([1, 2]);\r\n NodeTest.nameSpaceMatches = function (prefix, xpc, n) {\r\n var nNamespace = (n.namespaceURI || '');\r\n\r\n if (!prefix) {\r\n return !nNamespace || (xpc.allowAnyNamespaceForNoPrefix && !NodeTest.hasPrefix(n));\r\n }\r\n\r\n var ns = xpc.namespaceResolver.getNamespace(prefix, xpc.expressionContextNode);\r\n\r\n if (ns == null) {\r\n throw new Error(\"Cannot resolve QName \" + prefix);\r\n }\r\n\r\n return ns === nNamespace;\r\n };\r\n NodeTest.localNameMatches = function (localName, xpc, n) {\r\n var nLocalName = (n.localName || n.nodeName);\r\n\r\n return xpc.caseInsensitive\r\n ? localName.toLowerCase() === nLocalName.toLowerCase()\r\n : localName === nLocalName;\r\n };\r\n\r\n NodeTest.NameTestPrefixAny = NodeTest.makeNodeTestType(\r\n NodeTest.NAMETESTPREFIXANY,\r\n {\r\n matches: function (n, xpc) {\r\n return NodeTest.isElementOrAttribute(n) &&\r\n NodeTest.nameSpaceMatches(this.prefix, xpc, n);\r\n },\r\n toString: function () {\r\n return this.prefix + \":*\";\r\n }\r\n },\r\n function NameTestPrefixAny(prefix) { this.prefix = prefix; }\r\n );\r\n\r\n NodeTest.NameTestQName = NodeTest.makeNodeTestType(\r\n NodeTest.NAMETESTQNAME,\r\n {\r\n matches: function (n, xpc) {\r\n return NodeTest.isNodeType(\r\n [\r\n NodeTypes.ELEMENT_NODE,\r\n NodeTypes.ATTRIBUTE_NODE,\r\n NodeTypes.NAMESPACE_NODE,\r\n ]\r\n )(n) &&\r\n NodeTest.nameSpaceMatches(this.prefix, xpc, n) &&\r\n NodeTest.localNameMatches(this.localName, xpc, n);\r\n },\r\n toString: function () {\r\n return this.name;\r\n }\r\n },\r\n function NameTestQName(name) {\r\n var nameParts = name.split(':');\r\n\r\n this.name = name;\r\n this.prefix = nameParts.length > 1 ? nameParts[0] : null;\r\n this.localName = nameParts[nameParts.length > 1 ? 1 : 0];\r\n }\r\n );\r\n\r\n NodeTest.PITest = NodeTest.makeNodeTestType(NodeTest.PI, {\r\n matches: function (n, xpc) {\r\n return NodeTest.isNodeType(\r\n [NodeTypes.PROCESSING_INSTRUCTION_NODE]\r\n )(n) &&\r\n (n.target || n.nodeName) === this.name;\r\n },\r\n toString: function () {\r\n return wrap('processing-instruction(\"', '\")', this.name);\r\n }\r\n }, function (name) { this.name = name; })\r\n\r\n // singletons\r\n\r\n // elements, attributes, namespaces\r\n NodeTest.nameTestAny = NodeTest.makeNodeTypeTest(\r\n NodeTest.NAMETESTANY,\r\n [\r\n NodeTypes.ELEMENT_NODE,\r\n NodeTypes.ATTRIBUTE_NODE,\r\n NodeTypes.NAMESPACE_NODE,\r\n ],\r\n '*'\r\n );\r\n // text, cdata\r\n NodeTest.textTest = NodeTest.makeNodeTypeTest(\r\n NodeTest.TEXT,\r\n [\r\n NodeTypes.TEXT_NODE,\r\n NodeTypes.CDATA_SECTION_NODE,\r\n ],\r\n 'text()'\r\n );\r\n NodeTest.commentTest = NodeTest.makeNodeTypeTest(\r\n NodeTest.COMMENT,\r\n [NodeTypes.COMMENT_NODE],\r\n 'comment()'\r\n );\r\n // elements, attributes, text, cdata, PIs, comments, document nodes\r\n NodeTest.nodeTest = NodeTest.makeNodeTypeTest(\r\n NodeTest.NODE,\r\n [\r\n NodeTypes.ELEMENT_NODE,\r\n NodeTypes.ATTRIBUTE_NODE,\r\n NodeTypes.TEXT_NODE,\r\n NodeTypes.CDATA_SECTION_NODE,\r\n NodeTypes.PROCESSING_INSTRUCTION_NODE,\r\n NodeTypes.COMMENT_NODE,\r\n NodeTypes.DOCUMENT_NODE,\r\n ],\r\n 'node()'\r\n );\r\n NodeTest.anyPiTest = NodeTest.makeNodeTypeTest(\r\n NodeTest.PI,\r\n [NodeTypes.PROCESSING_INSTRUCTION_NODE],\r\n 'processing-instruction()'\r\n );\r\n\r\n // VariableReference /////////////////////////////////////////////////////////\r\n\r\n VariableReference.prototype = new Expression();\r\n VariableReference.prototype.constructor = VariableReference;\r\n VariableReference.superclass = Expression.prototype;\r\n\r\n function VariableReference(v) {\r\n if (arguments.length > 0) {\r\n this.init(v);\r\n }\r\n }\r\n\r\n VariableReference.prototype.init = function (v) {\r\n this.variable = v;\r\n };\r\n\r\n VariableReference.prototype.toString = function () {\r\n return \"$\" + this.variable;\r\n };\r\n\r\n VariableReference.prototype.evaluate = function (c) {\r\n var parts = Utilities.resolveQName(this.variable, c.namespaceResolver, c.contextNode, false);\r\n\r\n if (parts[0] == null) {\r\n throw new Error(\"Cannot resolve QName \" + fn);\r\n }\r\n var result = c.variableResolver.getVariable(parts[1], parts[0]);\r\n if (!result) {\r\n throw XPathException.fromMessage(\"Undeclared variable: \" + this.toString());\r\n }\r\n return result;\r\n };\r\n\r\n // FunctionCall //////////////////////////////////////////////////////////////\r\n\r\n FunctionCall.prototype = new Expression();\r\n FunctionCall.prototype.constructor = FunctionCall;\r\n FunctionCall.superclass = Expression.prototype;\r\n\r\n function FunctionCall(fn, args) {\r\n if (arguments.length > 0) {\r\n this.init(fn, args);\r\n }\r\n }\r\n\r\n FunctionCall.prototype.init = function (fn, args) {\r\n this.functionName = fn;\r\n this.arguments = args;\r\n };\r\n\r\n FunctionCall.prototype.toString = function () {\r\n var s = this.functionName + \"(\";\r\n for (var i = 0; i < this.arguments.length; i++) {\r\n if (i > 0) {\r\n s += \", \";\r\n }\r\n s += this.arguments[i].toString();\r\n }\r\n return s + \")\";\r\n };\r\n\r\n FunctionCall.prototype.evaluate = function (c) {\r\n var f = FunctionResolver.getFunctionFromContext(this.functionName, c);\r\n\r\n if (!f) {\r\n throw new Error(\"Unknown function \" + this.functionName);\r\n }\r\n\r\n var a = [c].concat(this.arguments);\r\n return f.apply(c.functionResolver.thisArg, a);\r\n };\r\n\r\n // Operators /////////////////////////////////////////////////////////////////\r\n\r\n var Operators = new Object();\r\n\r\n Operators.equals = function (l, r) {\r\n return l.equals(r);\r\n };\r\n\r\n Operators.notequal = function (l, r) {\r\n return l.notequal(r);\r\n };\r\n\r\n Operators.lessthan = function (l, r) {\r\n return l.lessthan(r);\r\n };\r\n\r\n Operators.greaterthan = function (l, r) {\r\n return l.greaterthan(r);\r\n };\r\n\r\n Operators.lessthanorequal = function (l, r) {\r\n return l.lessthanorequal(r);\r\n };\r\n\r\n Operators.greaterthanorequal = function (l, r) {\r\n return l.greaterthanorequal(r);\r\n };\r\n\r\n // XString ///////////////////////////////////////////////////////////////////\r\n\r\n XString.prototype = new Expression();\r\n XString.prototype.constructor = XString;\r\n XString.superclass = Expression.prototype;\r\n\r\n function XString(s) {\r\n if (arguments.length > 0) {\r\n this.init(s);\r\n }\r\n }\r\n\r\n XString.prototype.init = function (s) {\r\n this.str = String(s);\r\n };\r\n\r\n XString.prototype.toString = function () {\r\n return this.str;\r\n };\r\n\r\n XString.prototype.evaluate = function (c) {\r\n return this;\r\n };\r\n\r\n XString.prototype.string = function () {\r\n return this;\r\n };\r\n\r\n XString.prototype.number = function () {\r\n return new XNumber(this.str);\r\n };\r\n\r\n XString.prototype.bool = function () {\r\n return new XBoolean(this.str);\r\n };\r\n\r\n XString.prototype.nodeset = function () {\r\n throw new Error(\"Cannot convert string to nodeset\");\r\n };\r\n\r\n XString.prototype.stringValue = function () {\r\n return this.str;\r\n };\r\n\r\n XString.prototype.numberValue = function () {\r\n return this.number().numberValue();\r\n };\r\n\r\n XString.prototype.booleanValue = function () {\r\n return this.bool().booleanValue();\r\n };\r\n\r\n XString.prototype.equals = function (r) {\r\n if (Utilities.instance_of(r, XBoolean)) {\r\n return this.bool().equals(r);\r\n }\r\n if (Utilities.instance_of(r, XNumber)) {\r\n return this.number().equals(r);\r\n }\r\n if (Utilities.instance_of(r, XNodeSet)) {\r\n return r.compareWithString(this, Operators.equals);\r\n }\r\n return new XBoolean(this.str == r.str);\r\n };\r\n\r\n XString.prototype.notequal = function (r) {\r\n if (Utilities.instance_of(r, XBoolean)) {\r\n return this.bool().notequal(r);\r\n }\r\n if (Utilities.instance_of(r, XNumber)) {\r\n return this.number().notequal(r);\r\n }\r\n if (Utilities.instance_of(r, XNodeSet)) {\r\n return r.compareWithString(this, Operators.notequal);\r\n }\r\n return new XBoolean(this.str != r.str);\r\n };\r\n\r\n XString.prototype.lessthan = function (r) {\r\n return this.number().lessthan(r);\r\n };\r\n\r\n XString.prototype.greaterthan = function (r) {\r\n return this.number().greaterthan(r);\r\n };\r\n\r\n XString.prototype.lessthanorequal = function (r) {\r\n return this.number().lessthanorequal(r);\r\n };\r\n\r\n XString.prototype.greaterthanorequal = function (r) {\r\n return this.number().greaterthanorequal(r);\r\n };\r\n\r\n // XNumber ///////////////////////////////////////////////////////////////////\r\n\r\n XNumber.prototype = new Expression();\r\n XNumber.prototype.constructor = XNumber;\r\n XNumber.superclass = Expression.prototype;\r\n\r\n function XNumber(n) {\r\n if (arguments.length > 0) {\r\n this.init(n);\r\n }\r\n }\r\n\r\n XNumber.prototype.init = function (n) {\r\n this.num = typeof n === \"string\" ? this.parse(n) : Number(n);\r\n };\r\n\r\n XNumber.prototype.numberFormat = /^\\s*-?[0-9]*\\.?[0-9]+\\s*$/;\r\n\r\n XNumber.prototype.parse = function (s) {\r\n // XPath representation of numbers is more restrictive than what Number() or parseFloat() allow\r\n return this.numberFormat.test(s) ? parseFloat(s) : Number.NaN;\r\n };\r\n\r\n function padSmallNumber(numberStr) {\r\n var parts = numberStr.split('e-');\r\n var base = parts[0].replace('.', '');\r\n var exponent = Number(parts[1]);\r\n\r\n for (var i = 0; i < exponent - 1; i += 1) {\r\n base = '0' + base;\r\n }\r\n\r\n return '0.' + base;\r\n }\r\n\r\n function padLargeNumber(numberStr) {\r\n var parts = numberStr.split('e');\r\n var base = parts[0].replace('.', '');\r\n var exponent = Number(parts[1]);\r\n var zerosToAppend = exponent + 1 - base.length;\r\n\r\n for (var i = 0; i < zerosToAppend; i += 1) {\r\n base += '0';\r\n }\r\n\r\n return base;\r\n }\r\n\r\n XNumber.prototype.toString = function () {\r\n var strValue = this.num.toString();\r\n\r\n if (strValue.indexOf('e-') !== -1) {\r\n return padSmallNumber(strValue);\r\n }\r\n\r\n if (strValue.indexOf('e') !== -1) {\r\n return padLargeNumber(strValue);\r\n }\r\n\r\n return strValue;\r\n };\r\n\r\n XNumber.prototype.evaluate = function (c) {\r\n return this;\r\n };\r\n\r\n XNumber.prototype.string = function () {\r\n\r\n\r\n return new XString(this.toString());\r\n };\r\n\r\n XNumber.prototype.number = function () {\r\n return this;\r\n };\r\n\r\n XNumber.prototype.bool = function () {\r\n return new XBoolean(this.num);\r\n };\r\n\r\n XNumber.prototype.nodeset = function () {\r\n throw new Error(\"Cannot convert number to nodeset\");\r\n };\r\n\r\n XNumber.prototype.stringValue = function () {\r\n return this.string().stringValue();\r\n };\r\n\r\n XNumber.prototype.numberValue = function () {\r\n return this.num;\r\n };\r\n\r\n XNumber.prototype.booleanValue = function () {\r\n return this.bool().booleanValue();\r\n };\r\n\r\n XNumber.prototype.negate = function () {\r\n return new XNumber(-this.num);\r\n };\r\n\r\n XNumber.prototype.equals = function (r) {\r\n if (Utilities.instance_of(r, XBoolean)) {\r\n return this.bool().equals(r);\r\n }\r\n if (Utilities.instance_of(r, XString)) {\r\n return this.equals(r.number());\r\n }\r\n if (Utilities.instance_of(r, XNodeSet)) {\r\n return r.compareWithNumber(this, Operators.equals);\r\n }\r\n return new XBoolean(this.num == r.num);\r\n };\r\n\r\n XNumber.prototype.notequal = function (r) {\r\n if (Utilities.instance_of(r, XBoolean)) {\r\n return this.bool().notequal(r);\r\n }\r\n if (Utilities.instance_of(r, XString)) {\r\n return this.notequal(r.number());\r\n }\r\n if (Utilities.instance_of(r, XNodeSet)) {\r\n return r.compareWithNumber(this, Operators.notequal);\r\n }\r\n return new XBoolean(this.num != r.num);\r\n };\r\n\r\n XNumber.prototype.lessthan = function (r) {\r\n if (Utilities.instance_of(r, XNodeSet)) {\r\n return r.compareWithNumber(this, Operators.greaterthan);\r\n }\r\n if (Utilities.instance_of(r, XBoolean) || Utilities.instance_of(r, XString)) {\r\n return this.lessthan(r.number());\r\n }\r\n return new XBoolean(this.num < r.num);\r\n };\r\n\r\n XNumber.prototype.greaterthan = function (r) {\r\n if (Utilities.instance_of(r, XNodeSet)) {\r\n return r.compareWithNumber(this, Operators.lessthan);\r\n }\r\n if (Utilities.instance_of(r, XBoolean) || Utilities.instance_of(r, XString)) {\r\n return this.greaterthan(r.number());\r\n }\r\n return new XBoolean(this.num > r.num);\r\n };\r\n\r\n XNumber.prototype.lessthanorequal = function (r) {\r\n if (Utilities.instance_of(r, XNodeSet)) {\r\n return r.compareWithNumber(this, Operators.greaterthanorequal);\r\n }\r\n if (Utilities.instance_of(r, XBoolean) || Utilities.instance_of(r, XString)) {\r\n return this.lessthanorequal(r.number());\r\n }\r\n return new XBoolean(this.num <= r.num);\r\n };\r\n\r\n XNumber.prototype.greaterthanorequal = function (r) {\r\n if (Utilities.instance_of(r, XNodeSet)) {\r\n return r.compareWithNumber(this, Operators.lessthanorequal);\r\n }\r\n if (Utilities.instance_of(r, XBoolean) || Utilities.instance_of(r, XString)) {\r\n return this.greaterthanorequal(r.number());\r\n }\r\n return new XBoolean(this.num >= r.num);\r\n };\r\n\r\n XNumber.prototype.plus = function (r) {\r\n return new XNumber(this.num + r.num);\r\n };\r\n\r\n XNumber.prototype.minus = function (r) {\r\n return new XNumber(this.num - r.num);\r\n };\r\n\r\n XNumber.prototype.multiply = function (r) {\r\n return new XNumber(this.num * r.num);\r\n };\r\n\r\n XNumber.prototype.div = function (r) {\r\n return new XNumber(this.num / r.num);\r\n };\r\n\r\n XNumber.prototype.mod = function (r) {\r\n return new XNumber(this.num % r.num);\r\n };\r\n\r\n // XBoolean //////////////////////////////////////////////////////////////////\r\n\r\n XBoolean.prototype = new Expression();\r\n XBoolean.prototype.constructor = XBoolean;\r\n XBoolean.superclass = Expression.prototype;\r\n\r\n function XBoolean(b) {\r\n if (arguments.length > 0) {\r\n this.init(b);\r\n }\r\n }\r\n\r\n XBoolean.prototype.init = function (b) {\r\n this.b = Boolean(b);\r\n };\r\n\r\n XBoolean.prototype.toString = function () {\r\n return this.b.toString();\r\n };\r\n\r\n XBoolean.prototype.evaluate = function (c) {\r\n return this;\r\n };\r\n\r\n XBoolean.prototype.string = function () {\r\n return new XString(this.b);\r\n };\r\n\r\n XBoolean.prototype.number = function () {\r\n return new XNumber(this.b);\r\n };\r\n\r\n XBoolean.prototype.bool = function () {\r\n return this;\r\n };\r\n\r\n XBoolean.prototype.nodeset = function () {\r\n throw new Error(\"Cannot convert boolean to nodeset\");\r\n };\r\n\r\n XBoolean.prototype.stringValue = function () {\r\n return this.string().stringValue();\r\n };\r\n\r\n XBoolean.prototype.numberValue = function () {\r\n return this.number().numberValue();\r\n };\r\n\r\n XBoolean.prototype.booleanValue = function () {\r\n return this.b;\r\n };\r\n\r\n XBoolean.prototype.not = function () {\r\n return new XBoolean(!this.b);\r\n };\r\n\r\n XBoolean.prototype.equals = function (r) {\r\n if (Utilities.instance_of(r, XString) || Utilities.instance_of(r, XNumber)) {\r\n return this.equals(r.bool());\r\n }\r\n if (Utilities.instance_of(r, XNodeSet)) {\r\n return r.compareWithBoolean(this, Operators.equals);\r\n }\r\n return new XBoolean(this.b == r.b);\r\n };\r\n\r\n XBoolean.prototype.notequal = function (r) {\r\n if (Utilities.instance_of(r, XString) || Utilities.instance_of(r, XNumber)) {\r\n return this.notequal(r.bool());\r\n }\r\n if (Utilities.instance_of(r, XNodeSet)) {\r\n return r.compareWithBoolean(this, Operators.notequal);\r\n }\r\n return new XBoolean(this.b != r.b);\r\n };\r\n\r\n XBoolean.prototype.lessthan = function (r) {\r\n return this.number().lessthan(r);\r\n };\r\n\r\n XBoolean.prototype.greaterthan = function (r) {\r\n return this.number().greaterthan(r);\r\n };\r\n\r\n XBoolean.prototype.lessthanorequal = function (r) {\r\n return this.number().lessthanorequal(r);\r\n };\r\n\r\n XBoolean.prototype.greaterthanorequal = function (r) {\r\n return this.number().greaterthanorequal(r);\r\n };\r\n\r\n XBoolean.true_ = new XBoolean(true);\r\n XBoolean.false_ = new XBoolean(false);\r\n\r\n // AVLTree ///////////////////////////////////////////////////////////////////\r\n\r\n AVLTree.prototype = new Object();\r\n AVLTree.prototype.constructor = AVLTree;\r\n AVLTree.superclass = Object.prototype;\r\n\r\n function AVLTree(n) {\r\n this.init(n);\r\n }\r\n\r\n AVLTree.prototype.init = function (n) {\r\n this.left = null;\r\n this.right = null;\r\n this.node = n;\r\n this.depth = 1;\r\n };\r\n\r\n AVLTree.prototype.balance = function () {\r\n var ldepth = this.left == null ? 0 : this.left.depth;\r\n var rdepth = this.right == null ? 0 : this.right.depth;\r\n\r\n if (ldepth > rdepth + 1) {\r\n // LR or LL rotation\r\n var lldepth = this.left.left == null ? 0 : this.left.left.depth;\r\n var lrdepth = this.left.right == null ? 0 : this.left.right.depth;\r\n\r\n if (lldepth < lrdepth) {\r\n // LR rotation consists of a RR rotation of the left child\r\n this.left.rotateRR();\r\n // plus a LL rotation of this node, which happens anyway\r\n }\r\n this.rotateLL();\r\n } else if (ldepth + 1 < rdepth) {\r\n // RR or RL rorarion\r\n var rrdepth = this.right.right == null ? 0 : this.right.right.depth;\r\n var rldepth = this.right.left == null ? 0 : this.right.left.depth;\r\n\r\n if (rldepth > rrdepth) {\r\n // RR rotation consists of a LL rotation of the right child\r\n this.right.rotateLL();\r\n // plus a RR rotation of this node, which happens anyway\r\n }\r\n this.rotateRR();\r\n }\r\n };\r\n\r\n AVLTree.prototype.rotateLL = function () {\r\n // the left side is too long => rotate from the left (_not_ leftwards)\r\n var nodeBefore = this.node;\r\n var rightBefore = this.right;\r\n this.node = this.left.node;\r\n this.right = this.left;\r\n this.left = this.left.left;\r\n this.right.left = this.right.right;\r\n this.right.right = rightBefore;\r\n this.right.node = nodeBefore;\r\n this.right.updateInNewLocation();\r\n this.updateInNewLocation();\r\n };\r\n\r\n AVLTree.prototype.rotateRR = function () {\r\n // the right side is too long => rotate from the right (_not_ rightwards)\r\n var nodeBefore = this.node;\r\n var leftBefore = this.left;\r\n this.node = this.right.node;\r\n this.left = this.right;\r\n this.right = this.right.right;\r\n this.left.right = this.left.left;\r\n this.left.left = leftBefore;\r\n this.left.node = nodeBefore;\r\n this.left.updateInNewLocation();\r\n this.updateInNewLocation();\r\n };\r\n\r\n AVLTree.prototype.updateInNewLocation = function () {\r\n this.getDepthFromChildren();\r\n };\r\n\r\n AVLTree.prototype.getDepthFromChildren = function () {\r\n this.depth = this.node == null ? 0 : 1;\r\n if (this.left != null) {\r\n this.depth = this.left.depth + 1;\r\n }\r\n if (this.right != null && this.depth <= this.right.depth) {\r\n this.depth = this.right.depth + 1;\r\n }\r\n };\r\n\r\n function nodeOrder(n1, n2) {\r\n if (n1 === n2) {\r\n return 0;\r\n }\r\n\r\n if (n1.compareDocumentPosition) {\r\n var cpos = n1.compareDocumentPosition(n2);\r\n\r\n if (cpos & 0x01) {\r\n // not in the same document; return an arbitrary result (is there a better way to do this)\r\n return 1;\r\n }\r\n if (cpos & 0x0A) {\r\n // n2 precedes or contains n1\r\n return 1;\r\n }\r\n if (cpos & 0x14) {\r\n // n2 follows or is contained by n1\r\n return -1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n var d1 = 0,\r\n d2 = 0;\r\n for (var m1 = n1; m1 != null; m1 = m1.parentNode || m1.ownerElement) {\r\n d1++;\r\n }\r\n for (var m2 = n2; m2 != null; m2 = m2.parentNode || m2.ownerElement) {\r\n d2++;\r\n }\r\n\r\n // step up to same depth\r\n if (d1 > d2) {\r\n while (d1 > d2) {\r\n n1 = n1.parentNode || n1.ownerElement;\r\n d1--;\r\n }\r\n if (n1 === n2) {\r\n return 1;\r\n }\r\n } else if (d2 > d1) {\r\n while (d2 > d1) {\r\n n2 = n2.parentNode || n2.ownerElement;\r\n d2--;\r\n }\r\n if (n1 === n2) {\r\n return -1;\r\n }\r\n }\r\n\r\n var n1Par = n1.parentNode || n1.ownerElement,\r\n n2Par = n2.parentNode || n2.ownerElement;\r\n\r\n // find common parent\r\n while (n1Par !== n2Par) {\r\n n1 = n1Par;\r\n n2 = n2Par;\r\n n1Par = n1.parentNode || n1.ownerElement;\r\n n2Par = n2.parentNode || n2.ownerElement;\r\n }\r\n\r\n var n1isAttr = isAttributeLike(n1);\r\n var n2isAttr = isAttributeLike(n2);\r\n\r\n if (n1isAttr && !n2isAttr) {\r\n return -1;\r\n }\r\n if (!n1isAttr && n2isAttr) {\r\n return 1;\r\n }\r\n\r\n // xml namespace node comes before others. namespace nodes before non-namespace nodes\r\n if (n1.isXPathNamespace) {\r\n if (n1.nodeValue === XPath.XML_NAMESPACE_URI) {\r\n return -1;\r\n }\r\n\r\n if (!n2.isXPathNamespace) {\r\n return -1;\r\n }\r\n\r\n if (n2.nodeValue === XPath.XML_NAMESPACE_URI) {\r\n return 1;\r\n }\r\n } else if (n2.isXPathNamespace) {\r\n return 1;\r\n }\r\n\r\n if (n1Par) {\r\n var cn = n1isAttr ? n1Par.attributes : n1Par.childNodes;\r\n var len = cn.length;\r\n var n1Compare = n1.baseNode || n1;\r\n var n2Compare = n2.baseNode || n2;\r\n\r\n for (var i = 0; i < len; i += 1) {\r\n var n = cn[i];\r\n if (n === n1Compare) {\r\n return -1;\r\n }\r\n if (n === n2Compare) {\r\n return 1;\r\n }\r\n }\r\n }\r\n\r\n throw new Error('Unexpected: could not determine node order');\r\n }\r\n\r\n AVLTree.prototype.add = function (n) {\r\n if (n === this.node) {\r\n return false;\r\n }\r\n\r\n var o = nodeOrder(n, this.node);\r\n\r\n var ret = false;\r\n if (o == -1) {\r\n if (this.left == null) {\r\n this.left = new AVLTree(n);\r\n ret = true;\r\n } else {\r\n ret = this.left.add(n);\r\n if (ret) {\r\n this.balance();\r\n }\r\n }\r\n } else if (o == 1) {\r\n if (this.right == null) {\r\n this.right = new AVLTree(n);\r\n ret = true;\r\n } else {\r\n ret = this.right.add(n);\r\n if (ret) {\r\n this.balance();\r\n }\r\n }\r\n }\r\n\r\n if (ret) {\r\n this.getDepthFromChildren();\r\n }\r\n return ret;\r\n };\r\n\r\n // XNodeSet //////////////////////////////////////////////////////////////////\r\n\r\n XNodeSet.prototype = new Expression();\r\n XNodeSet.prototype.constructor = XNodeSet;\r\n XNodeSet.superclass = Expression.prototype;\r\n\r\n function XNodeSet() {\r\n this.init();\r\n }\r\n\r\n XNodeSet.prototype.init = function () {\r\n this.tree = null;\r\n this.nodes = [];\r\n this.size = 0;\r\n };\r\n\r\n XNodeSet.prototype.toString = function () {\r\n var p = this.first();\r\n if (p == null) {\r\n return \"\";\r\n }\r\n return this.stringForNode(p);\r\n };\r\n\r\n XNodeSet.prototype.evaluate = function (c) {\r\n return this;\r\n };\r\n\r\n XNodeSet.prototype.string = function () {\r\n return new XString(this.toString());\r\n };\r\n\r\n XNodeSet.prototype.stringValue = function () {\r\n return this.toString();\r\n };\r\n\r\n XNodeSet.prototype.number = function () {\r\n return new XNumber(this.string());\r\n };\r\n\r\n XNodeSet.prototype.numberValue = function () {\r\n return Number(this.string());\r\n };\r\n\r\n XNodeSet.prototype.bool = function () {\r\n return new XBoolean(this.booleanValue());\r\n };\r\n\r\n XNodeSet.prototype.booleanValue = function () {\r\n return !!this.size;\r\n };\r\n\r\n XNodeSet.prototype.nodeset = function () {\r\n return this;\r\n };\r\n\r\n XNodeSet.prototype.stringForNode = function (n) {\r\n if (n.nodeType == NodeTypes.DOCUMENT_NODE ||\r\n n.nodeType == NodeTypes.ELEMENT_NODE ||\r\n n.nodeType === NodeTypes.DOCUMENT_FRAGMENT_NODE) {\r\n return this.stringForContainerNode(n);\r\n }\r\n if (n.nodeType === NodeTypes.ATTRIBUTE_NODE) {\r\n return n.value || n.nodeValue;\r\n }\r\n if (n.isNamespaceNode) {\r\n return n.namespace;\r\n }\r\n return n.nodeValue;\r\n };\r\n\r\n XNodeSet.prototype.stringForContainerNode = function (n) {\r\n var s = \"\";\r\n for (var n2 = n.firstChild; n2 != null; n2 = n2.nextSibling) {\r\n var nt = n2.nodeType;\r\n // Element, Text, CDATA, Document, Document Fragment\r\n if (nt === 1 || nt === 3 || nt === 4 || nt === 9 || nt === 11) {\r\n s += this.stringForNode(n2);\r\n }\r\n }\r\n return s;\r\n };\r\n\r\n XNodeSet.prototype.buildTree = function () {\r\n if (!this.tree && this.nodes.length) {\r\n this.tree = new AVLTree(this.nodes[0]);\r\n for (var i = 1; i < this.nodes.length; i += 1) {\r\n this.tree.add(this.nodes[i]);\r\n }\r\n }\r\n\r\n return this.tree;\r\n };\r\n\r\n XNodeSet.prototype.first = function () {\r\n var p = this.buildTree();\r\n if (p == null) {\r\n return null;\r\n }\r\n while (p.left != null) {\r\n p = p.left;\r\n }\r\n return p.node;\r\n };\r\n\r\n XNodeSet.prototype.add = function (n) {\r\n for (var i = 0; i < this.nodes.length; i += 1) {\r\n if (n === this.nodes[i]) {\r\n return;\r\n }\r\n }\r\n\r\n this.tree = null;\r\n this.nodes.push(n);\r\n this.size += 1;\r\n };\r\n\r\n XNodeSet.prototype.addArray = function (ns) {\r\n var self = this;\r\n\r\n forEach(function (x) { self.add(x); }, ns);\r\n };\r\n\r\n /**\r\n * Returns an array of the node set's contents in document order\r\n */\r\n XNodeSet.prototype.toArray = function () {\r\n var a = [];\r\n this.toArrayRec(this.buildTree(), a);\r\n return a;\r\n };\r\n\r\n XNodeSet.prototype.toArrayRec = function (t, a) {\r\n if (t != null) {\r\n this.toArrayRec(t.left, a);\r\n a.push(t.node);\r\n this.toArrayRec(t.right, a);\r\n }\r\n };\r\n\r\n /**\r\n * Returns an array of the node set's contents in arbitrary order\r\n */\r\n XNodeSet.prototype.toUnsortedArray = function () {\r\n return this.nodes.slice();\r\n };\r\n\r\n XNodeSet.prototype.compareWithString = function (r, o) {\r\n var a = this.toUnsortedArray();\r\n for (var i = 0; i < a.length; i++) {\r\n var n = a[i];\r\n var l = new XString(this.stringForNode(n));\r\n var res = o(l, r);\r\n if (res.booleanValue()) {\r\n return res;\r\n }\r\n }\r\n return new XBoolean(false);\r\n };\r\n\r\n XNodeSet.prototype.compareWithNumber = function (r, o) {\r\n var a = this.toUnsortedArray();\r\n for (var i = 0; i < a.length; i++) {\r\n var n = a[i];\r\n var l = new XNumber(this.stringForNode(n));\r\n var res = o(l, r);\r\n if (res.booleanValue()) {\r\n return res;\r\n }\r\n }\r\n return new XBoolean(false);\r\n };\r\n\r\n XNodeSet.prototype.compareWithBoolean = function (r, o) {\r\n return o(this.bool(), r);\r\n };\r\n\r\n XNodeSet.prototype.compareWithNodeSet = function (r, o) {\r\n var arr = this.toUnsortedArray();\r\n var oInvert = function (lop, rop) { return o(rop, lop); };\r\n\r\n for (var i = 0; i < arr.length; i++) {\r\n var l = new XString(this.stringForNode(arr[i]));\r\n\r\n var res = r.compareWithString(l, oInvert);\r\n if (res.booleanValue()) {\r\n return res;\r\n }\r\n }\r\n\r\n return new XBoolean(false);\r\n };\r\n\r\n XNodeSet.compareWith = curry(function (o, r) {\r\n if (Utilities.instance_of(r, XString)) {\r\n return this.compareWithString(r, o);\r\n }\r\n if (Utilities.instance_of(r, XNumber)) {\r\n return this.compareWithNumber(r, o);\r\n }\r\n if (Utilities.instance_of(r, XBoolean)) {\r\n return this.compareWithBoolean(r, o);\r\n }\r\n return this.compareWithNodeSet(r, o);\r\n });\r\n\r\n XNodeSet.prototype.equals = XNodeSet.compareWith(Operators.equals);\r\n XNodeSet.prototype.notequal = XNodeSet.compareWith(Operators.notequal);\r\n XNodeSet.prototype.lessthan = XNodeSet.compareWith(Operators.lessthan);\r\n XNodeSet.prototype.greaterthan = XNodeSet.compareWith(Operators.greaterthan);\r\n XNodeSet.prototype.lessthanorequal = XNodeSet.compareWith(Operators.lessthanorequal);\r\n XNodeSet.prototype.greaterthanorequal = XNodeSet.compareWith(Operators.greaterthanorequal);\r\n\r\n XNodeSet.prototype.union = function (r) {\r\n var ns = new XNodeSet();\r\n ns.addArray(this.toUnsortedArray());\r\n ns.addArray(r.toUnsortedArray());\r\n return ns;\r\n };\r\n\r\n // XPathNamespace ////////////////////////////////////////////////////////////\r\n\r\n XPathNamespace.prototype = new Object();\r\n XPathNamespace.prototype.constructor = XPathNamespace;\r\n XPathNamespace.superclass = Object.prototype;\r\n\r\n function XPathNamespace(pre, node, uri, p) {\r\n this.isXPathNamespace = true;\r\n this.baseNode = node;\r\n this.ownerDocument = p.ownerDocument;\r\n this.nodeName = pre;\r\n this.prefix = pre;\r\n this.localName = pre;\r\n this.namespaceURI = null;\r\n this.nodeValue = uri;\r\n this.ownerElement = p;\r\n this.nodeType = NodeTypes.NAMESPACE_NODE;\r\n }\r\n\r\n XPathNamespace.prototype.toString = function () {\r\n return \"{ \\\"\" + this.prefix + \"\\\", \\\"\" + this.namespaceURI + \"\\\" }\";\r\n };\r\n\r\n // XPathContext //////////////////////////////////////////////////////////////\r\n\r\n XPathContext.prototype = new Object();\r\n XPathContext.prototype.constructor = XPathContext;\r\n XPathContext.superclass = Object.prototype;\r\n\r\n function XPathContext(vr, nr, fr) {\r\n this.variableResolver = vr != null ? vr : new VariableResolver();\r\n this.namespaceResolver = nr != null ? nr : new NamespaceResolver();\r\n this.functionResolver = fr != null ? fr : new FunctionResolver();\r\n }\r\n\r\n XPathContext.prototype.extend = function (newProps) {\r\n return assign(new XPathContext(), this, newProps);\r\n };\r\n\r\n // VariableResolver //////////////////////////////////////////////////////////\r\n\r\n VariableResolver.prototype = new Object();\r\n VariableResolver.prototype.constructor = VariableResolver;\r\n VariableResolver.superclass = Object.prototype;\r\n\r\n function VariableResolver() {\r\n }\r\n\r\n VariableResolver.prototype.getVariable = function (ln, ns) {\r\n return null;\r\n };\r\n\r\n // FunctionResolver //////////////////////////////////////////////////////////\r\n\r\n FunctionResolver.prototype = new Object();\r\n FunctionResolver.prototype.constructor = FunctionResolver;\r\n FunctionResolver.superclass = Object.prototype;\r\n\r\n function FunctionResolver(thisArg) {\r\n this.thisArg = thisArg != null ? thisArg : Functions;\r\n this.functions = new Object();\r\n this.addStandardFunctions();\r\n }\r\n\r\n FunctionResolver.prototype.addStandardFunctions = function () {\r\n this.functions[\"{}last\"] = Functions.last;\r\n this.functions[\"{}position\"] = Functions.position;\r\n this.functions[\"{}count\"] = Functions.count;\r\n this.functions[\"{}id\"] = Functions.id;\r\n this.functions[\"{}local-name\"] = Functions.localName;\r\n this.functions[\"{}namespace-uri\"] = Functions.namespaceURI;\r\n this.functions[\"{}name\"] = Functions.name;\r\n this.functions[\"{}string\"] = Functions.string;\r\n this.functions[\"{}concat\"] = Functions.concat;\r\n this.functions[\"{}starts-with\"] = Functions.startsWith;\r\n this.functions[\"{}contains\"] = Functions.contains;\r\n this.functions[\"{}substring-before\"] = Functions.substringBefore;\r\n this.functions[\"{}substring-after\"] = Functions.substringAfter;\r\n this.functions[\"{}substring\"] = Functions.substring;\r\n this.functions[\"{}string-length\"] = Functions.stringLength;\r\n this.functions[\"{}normalize-space\"] = Functions.normalizeSpace;\r\n this.functions[\"{}translate\"] = Functions.translate;\r\n this.functions[\"{}boolean\"] = Functions.boolean_;\r\n this.functions[\"{}not\"] = Functions.not;\r\n this.functions[\"{}true\"] = Functions.true_;\r\n this.functions[\"{}false\"] = Functions.false_;\r\n this.functions[\"{}lang\"] = Functions.lang;\r\n this.functions[\"{}number\"] = Functions.number;\r\n this.functions[\"{}sum\"] = Functions.sum;\r\n this.functions[\"{}floor\"] = Functions.floor;\r\n this.functions[\"{}ceiling\"] = Functions.ceiling;\r\n this.functions[\"{}round\"] = Functions.round;\r\n };\r\n\r\n FunctionResolver.prototype.addFunction = function (ns, ln, f) {\r\n this.functions[\"{\" + ns + \"}\" + ln] = f;\r\n };\r\n\r\n FunctionResolver.getFunctionFromContext = function (qName, context) {\r\n var parts = Utilities.resolveQName(qName, context.namespaceResolver, context.contextNode, false);\r\n\r\n if (parts[0] === null) {\r\n throw new Error(\"Cannot resolve QName \" + name);\r\n }\r\n\r\n return context.functionResolver.getFunction(parts[1], parts[0]);\r\n };\r\n\r\n FunctionResolver.prototype.getFunction = function (localName, namespace) {\r\n return this.functions[\"{\" + namespace + \"}\" + localName];\r\n };\r\n\r\n // NamespaceResolver /////////////////////////////////////////////////////////\r\n\r\n NamespaceResolver.prototype = new Object();\r\n NamespaceResolver.prototype.constructor = NamespaceResolver;\r\n NamespaceResolver.superclass = Object.prototype;\r\n\r\n function NamespaceResolver() {\r\n }\r\n\r\n NamespaceResolver.prototype.getNamespace = function (prefix, n) {\r\n if (prefix == \"xml\") {\r\n return XPath.XML_NAMESPACE_URI;\r\n } else if (prefix == \"xmlns\") {\r\n return XPath.XMLNS_NAMESPACE_URI;\r\n }\r\n if (n.nodeType == NodeTypes.DOCUMENT_NODE) {\r\n n = n.documentElement;\r\n } else if (n.nodeType == NodeTypes.ATTRIBUTE_NODE) {\r\n n = PathExpr.getOwnerElement(n);\r\n } else if (n.nodeType != NodeTypes.ELEMENT_NODE) {\r\n n = n.parentNode;\r\n }\r\n while (n != null && n.nodeType == NodeTypes.ELEMENT_NODE) {\r\n var nnm = n.attributes;\r\n for (var i = 0; i < nnm.length; i++) {\r\n var a = nnm.item(i);\r\n var aname = a.name || a.nodeName;\r\n if ((aname === \"xmlns\" && prefix === \"\")\r\n || aname === \"xmlns:\" + prefix) {\r\n return String(a.value || a.nodeValue);\r\n }\r\n }\r\n n = n.parentNode;\r\n }\r\n return null;\r\n };\r\n\r\n // Functions /////////////////////////////////////////////////////////////////\r\n\r\n var Functions = new Object();\r\n\r\n Functions.last = function (c) {\r\n if (arguments.length != 1) {\r\n throw new Error(\"Function last expects ()\");\r\n }\r\n\r\n return new XNumber(c.contextSize);\r\n };\r\n\r\n Functions.position = function (c) {\r\n if (arguments.length != 1) {\r\n throw new Error(\"Function position expects ()\");\r\n }\r\n\r\n return new XNumber(c.contextPosition);\r\n };\r\n\r\n Functions.count = function () {\r\n var c = arguments[0];\r\n var ns;\r\n if (arguments.length != 2 || !Utilities.instance_of(ns = arguments[1].evaluate(c), XNodeSet)) {\r\n throw new Error(\"Function count expects (node-set)\");\r\n }\r\n return new XNumber(ns.size);\r\n };\r\n\r\n Functions.id = function () {\r\n var c = arguments[0];\r\n var id;\r\n if (arguments.length != 2) {\r\n throw new Error(\"Function id expects (object)\");\r\n }\r\n id = arguments[1].evaluate(c);\r\n if (Utilities.instance_of(id, XNodeSet)) {\r\n id = id.toArray().join(\" \");\r\n } else {\r\n id = id.stringValue();\r\n }\r\n var ids = id.split(/[\\x0d\\x0a\\x09\\x20]+/);\r\n var count = 0;\r\n var ns = new XNodeSet();\r\n var doc = c.contextNode.nodeType == NodeTypes.DOCUMENT_NODE\r\n ? c.contextNode\r\n : c.contextNode.ownerDocument;\r\n for (var i = 0; i < ids.length; i++) {\r\n var n;\r\n if (doc.getElementById) {\r\n n = doc.getElementById(ids[i]);\r\n } else {\r\n n = Utilities.getElementById(doc, ids[i]);\r\n }\r\n if (n != null) {\r\n ns.add(n);\r\n count++;\r\n }\r\n }\r\n return ns;\r\n };\r\n\r\n Functions.localName = function (c, eNode) {\r\n var n;\r\n\r\n if (arguments.length == 1) {\r\n n = c.contextNode;\r\n } else if (arguments.length == 2) {\r\n n = eNode.evaluate(c).first();\r\n } else {\r\n throw new Error(\"Function local-name expects (node-set?)\");\r\n }\r\n\r\n if (n == null) {\r\n return new XString(\"\");\r\n }\r\n\r\n return new XString(\r\n n.localName || // standard elements and attributes\r\n n.baseName || // IE\r\n n.target || // processing instructions\r\n n.nodeName || // DOM1 elements\r\n \"\" // fallback\r\n );\r\n };\r\n\r\n Functions.namespaceURI = function () {\r\n var c = arguments[0];\r\n var n;\r\n\r\n if (arguments.length == 1) {\r\n n = c.contextNode;\r\n } else if (arguments.length == 2) {\r\n n = arguments[1].evaluate(c).first();\r\n } else {\r\n throw new Error(\"Function namespace-uri expects (node-set?)\");\r\n }\r\n\r\n if (n == null) {\r\n return new XString(\"\");\r\n }\r\n return new XString(n.namespaceURI || '');\r\n };\r\n\r\n Functions.name = function () {\r\n var c = arguments[0];\r\n var n;\r\n if (arguments.length == 1) {\r\n n = c.contextNode;\r\n } else if (arguments.length == 2) {\r\n n = arguments[1].evaluate(c).first();\r\n } else {\r\n throw new Error(\"Function name expects (node-set?)\");\r\n }\r\n if (n == null) {\r\n return new XString(\"\");\r\n }\r\n if (n.nodeType == NodeTypes.ELEMENT_NODE) {\r\n return new XString(n.nodeName);\r\n } else if (n.nodeType == NodeTypes.ATTRIBUTE_NODE) {\r\n return new XString(n.name || n.nodeName);\r\n } else if (n.nodeType === NodeTypes.PROCESSING_INSTRUCTION_NODE) {\r\n return new XString(n.target || n.nodeName);\r\n } else if (n.localName == null) {\r\n return new XString(\"\");\r\n } else {\r\n return new XString(n.localName);\r\n }\r\n };\r\n\r\n Functions.string = function () {\r\n var c = arguments[0];\r\n if (arguments.length == 1) {\r\n return new XString(XNodeSet.prototype.stringForNode(c.contextNode));\r\n } else if (arguments.length == 2) {\r\n return arguments[1].evaluate(c).string();\r\n }\r\n throw new Error(\"Function string expects (object?)\");\r\n };\r\n\r\n Functions.concat = function (c) {\r\n if (arguments.length < 3) {\r\n throw new Error(\"Function concat expects (string, string[, string]*)\");\r\n }\r\n var s = \"\";\r\n for (var i = 1; i < arguments.length; i++) {\r\n s += arguments[i].evaluate(c).stringValue();\r\n }\r\n return new XString(s);\r\n };\r\n\r\n Functions.startsWith = function () {\r\n var c = arguments[0];\r\n if (arguments.length != 3) {\r\n throw new Error(\"Function startsWith expects (string, string)\");\r\n }\r\n var s1 = arguments[1].evaluate(c).stringValue();\r\n var s2 = arguments[2].evaluate(c).stringValue();\r\n return new XBoolean(s1.substring(0, s2.length) == s2);\r\n };\r\n\r\n Functions.contains = function () {\r\n var c = arguments[0];\r\n if (arguments.length != 3) {\r\n throw new Error(\"Function contains expects (string, string)\");\r\n }\r\n var s1 = arguments[1].evaluate(c).stringValue();\r\n var s2 = arguments[2].evaluate(c).stringValue();\r\n return new XBoolean(s1.indexOf(s2) !== -1);\r\n };\r\n\r\n Functions.substringBefore = function () {\r\n var c = arguments[0];\r\n if (arguments.length != 3) {\r\n throw new Error(\"Function substring-before expects (string, string)\");\r\n }\r\n var s1 = arguments[1].evaluate(c).stringValue();\r\n var s2 = arguments[2].evaluate(c).stringValue();\r\n return new XString(s1.substring(0, s1.indexOf(s2)));\r\n };\r\n\r\n Functions.substringAfter = function () {\r\n var c = arguments[0];\r\n if (arguments.length != 3) {\r\n throw new Error(\"Function substring-after expects (string, string)\");\r\n }\r\n var s1 = arguments[1].evaluate(c).stringValue();\r\n var s2 = arguments[2].evaluate(c).stringValue();\r\n if (s2.length == 0) {\r\n return new XString(s1);\r\n }\r\n var i = s1.indexOf(s2);\r\n if (i == -1) {\r\n return new XString(\"\");\r\n }\r\n return new XString(s1.substring(i + s2.length));\r\n };\r\n\r\n Functions.substring = function () {\r\n var c = arguments[0];\r\n if (!(arguments.length == 3 || arguments.length == 4)) {\r\n throw new Error(\"Function substring expects (string, number, number?)\");\r\n }\r\n var s = arguments[1].evaluate(c).stringValue();\r\n var n1 = Math.round(arguments[2].evaluate(c).numberValue()) - 1;\r\n var n2 = arguments.length == 4 ? n1 + Math.round(arguments[3].evaluate(c).numberValue()) : undefined;\r\n return new XString(s.substring(n1, n2));\r\n };\r\n\r\n Functions.stringLength = function () {\r\n var c = arguments[0];\r\n var s;\r\n if (arguments.length == 1) {\r\n s = XNodeSet.prototype.stringForNode(c.contextNode);\r\n } else if (arguments.length == 2) {\r\n s = arguments[1].evaluate(c).stringValue();\r\n } else {\r\n throw new Error(\"Function string-length expects (string?)\");\r\n }\r\n return new XNumber(s.length);\r\n };\r\n\r\n Functions.normalizeSpace = function () {\r\n var c = arguments[0];\r\n var s;\r\n if (arguments.length == 1) {\r\n s = XNodeSet.prototype.stringForNode(c.contextNode);\r\n } else if (arguments.length == 2) {\r\n s = arguments[1].evaluate(c).stringValue();\r\n } else {\r\n throw new Error(\"Function normalize-space expects (string?)\");\r\n }\r\n var i = 0;\r\n var j = s.length - 1;\r\n while (Utilities.isSpace(s.charCodeAt(j))) {\r\n j--;\r\n }\r\n var t = \"\";\r\n while (i <= j && Utilities.isSpace(s.charCodeAt(i))) {\r\n i++;\r\n }\r\n while (i <= j) {\r\n if (Utilities.isSpace(s.charCodeAt(i))) {\r\n t += \" \";\r\n while (i <= j && Utilities.isSpace(s.charCodeAt(i))) {\r\n i++;\r\n }\r\n } else {\r\n t += s.charAt(i);\r\n i++;\r\n }\r\n }\r\n return new XString(t);\r\n };\r\n\r\n Functions.translate = function (c, eValue, eFrom, eTo) {\r\n if (arguments.length != 4) {\r\n throw new Error(\"Function translate expects (string, string, string)\");\r\n }\r\n\r\n var value = eValue.evaluate(c).stringValue();\r\n var from = eFrom.evaluate(c).stringValue();\r\n var to = eTo.evaluate(c).stringValue();\r\n\r\n var cMap = reduce(function (acc, ch, i) {\r\n if (!(ch in acc)) {\r\n acc[ch] = i > to.length ? '' : to[i];\r\n }\r\n return acc;\r\n }, {}, from);\r\n\r\n var t = join(\r\n '',\r\n map(function (ch) {\r\n return ch in cMap ? cMap[ch] : ch;\r\n }, value)\r\n );\r\n\r\n return new XString(t);\r\n };\r\n\r\n Functions.boolean_ = function () {\r\n var c = arguments[0];\r\n if (arguments.length != 2) {\r\n throw new Error(\"Function boolean expects (object)\");\r\n }\r\n return arguments[1].evaluate(c).bool();\r\n };\r\n\r\n Functions.not = function (c, eValue) {\r\n if (arguments.length != 2) {\r\n throw new Error(\"Function not expects (object)\");\r\n }\r\n return eValue.evaluate(c).bool().not();\r\n };\r\n\r\n Functions.true_ = function () {\r\n if (arguments.length != 1) {\r\n throw new Error(\"Function true expects ()\");\r\n }\r\n return XBoolean.true_;\r\n };\r\n\r\n Functions.false_ = function () {\r\n if (arguments.length != 1) {\r\n throw new Error(\"Function false expects ()\");\r\n }\r\n return XBoolean.false_;\r\n };\r\n\r\n Functions.lang = function () {\r\n var c = arguments[0];\r\n if (arguments.length != 2) {\r\n throw new Error(\"Function lang expects (string)\");\r\n }\r\n var lang;\r\n for (var n = c.contextNode; n != null && n.nodeType != NodeTypes.DOCUMENT_NODE; n = n.parentNode) {\r\n var a = n.getAttributeNS(XPath.XML_NAMESPACE_URI, \"lang\");\r\n if (a != null) {\r\n lang = String(a);\r\n break;\r\n }\r\n }\r\n if (lang == null) {\r\n return XBoolean.false_;\r\n }\r\n var s = arguments[1].evaluate(c).stringValue();\r\n return new XBoolean(lang.substring(0, s.length) == s\r\n && (lang.length == s.length || lang.charAt(s.length) == '-'));\r\n };\r\n\r\n Functions.number = function () {\r\n var c = arguments[0];\r\n if (!(arguments.length == 1 || arguments.length == 2)) {\r\n throw new Error(\"Function number expects (object?)\");\r\n }\r\n if (arguments.length == 1) {\r\n return new XNumber(XNodeSet.prototype.stringForNode(c.contextNode));\r\n }\r\n return arguments[1].evaluate(c).number();\r\n };\r\n\r\n Functions.sum = function () {\r\n var c = arguments[0];\r\n var ns;\r\n if (arguments.length != 2 || !Utilities.instance_of((ns = arguments[1].evaluate(c)), XNodeSet)) {\r\n throw new Error(\"Function sum expects (node-set)\");\r\n }\r\n ns = ns.toUnsortedArray();\r\n var n = 0;\r\n for (var i = 0; i < ns.length; i++) {\r\n n += new XNumber(XNodeSet.prototype.stringForNode(ns[i])).numberValue();\r\n }\r\n return new XNumber(n);\r\n };\r\n\r\n Functions.floor = function () {\r\n var c = arguments[0];\r\n if (arguments.length != 2) {\r\n throw new Error(\"Function floor expects (number)\");\r\n }\r\n return new XNumber(Math.floor(arguments[1].evaluate(c).numberValue()));\r\n };\r\n\r\n Functions.ceiling = function () {\r\n var c = arguments[0];\r\n if (arguments.length != 2) {\r\n throw new Error(\"Function ceiling expects (number)\");\r\n }\r\n return new XNumber(Math.ceil(arguments[1].evaluate(c).numberValue()));\r\n };\r\n\r\n Functions.round = function () {\r\n var c = arguments[0];\r\n if (arguments.length != 2) {\r\n throw new Error(\"Function round expects (number)\");\r\n }\r\n return new XNumber(Math.round(arguments[1].evaluate(c).numberValue()));\r\n };\r\n\r\n // Utilities /////////////////////////////////////////////////////////////////\r\n\r\n var Utilities = new Object();\r\n\r\n // Returns true if the node is an attribute node or namespace node\r\n var isAttributeLike = function (val) {\r\n return val && (\r\n val.nodeType === NodeTypes.ATTRIBUTE_NODE ||\r\n val.ownerElement ||\r\n val.isXPathNamespace\r\n );\r\n }\r\n\r\n Utilities.splitQName = function (qn) {\r\n var i = qn.indexOf(\":\");\r\n if (i == -1) {\r\n return [null, qn];\r\n }\r\n return [qn.substring(0, i), qn.substring(i + 1)];\r\n };\r\n\r\n Utilities.resolveQName = function (qn, nr, n, useDefault) {\r\n var parts = Utilities.splitQName(qn);\r\n if (parts[0] != null) {\r\n parts[0] = nr.getNamespace(parts[0], n);\r\n } else {\r\n if (useDefault) {\r\n parts[0] = nr.getNamespace(\"\", n);\r\n if (parts[0] == null) {\r\n parts[0] = \"\";\r\n }\r\n } else {\r\n parts[0] = \"\";\r\n }\r\n }\r\n return parts;\r\n };\r\n\r\n Utilities.isSpace = function (c) {\r\n return c == 0x9 || c == 0xd || c == 0xa || c == 0x20;\r\n };\r\n\r\n Utilities.isLetter = function (c) {\r\n return c >= 0x0041 && c <= 0x005A ||\r\n c >= 0x0061 && c <= 0x007A ||\r\n c >= 0x00C0 && c <= 0x00D6 ||\r\n c >= 0x00D8 && c <= 0x00F6 ||\r\n c >= 0x00F8 && c <= 0x00FF ||\r\n c >= 0x0100 && c <= 0x0131 ||\r\n c >= 0x0134 && c <= 0x013E ||\r\n c >= 0x0141 && c <= 0x0148 ||\r\n c >= 0x014A && c <= 0x017E ||\r\n c >= 0x0180 && c <= 0x01C3 ||\r\n c >= 0x01CD && c <= 0x01F0 ||\r\n c >= 0x01F4 && c <= 0x01F5 ||\r\n c >= 0x01FA && c <= 0x0217 ||\r\n c >= 0x0250 && c <= 0x02A8 ||\r\n c >= 0x02BB && c <= 0x02C1 ||\r\n c == 0x0386 ||\r\n c >= 0x0388 && c <= 0x038A ||\r\n c == 0x038C ||\r\n c >= 0x038E && c <= 0x03A1 ||\r\n c >= 0x03A3 && c <= 0x03CE ||\r\n c >= 0x03D0 && c <= 0x03D6 ||\r\n c == 0x03DA ||\r\n c == 0x03DC ||\r\n c == 0x03DE ||\r\n c == 0x03E0 ||\r\n c >= 0x03E2 && c <= 0x03F3 ||\r\n c >= 0x0401 && c <= 0x040C ||\r\n c >= 0x040E && c <= 0x044F ||\r\n c >= 0x0451 && c <= 0x045C ||\r\n c >= 0x045E && c <= 0x0481 ||\r\n c >= 0x0490 && c <= 0x04C4 ||\r\n c >= 0x04C7 && c <= 0x04C8 ||\r\n c >= 0x04CB && c <= 0x04CC ||\r\n c >= 0x04D0 && c <= 0x04EB ||\r\n c >= 0x04EE && c <= 0x04F5 ||\r\n c >= 0x04F8 && c <= 0x04F9 ||\r\n c >= 0x0531 && c <= 0x0556 ||\r\n c == 0x0559 ||\r\n c >= 0x0561 && c <= 0x0586 ||\r\n c >= 0x05D0 && c <= 0x05EA ||\r\n c >= 0x05F0 && c <= 0x05F2 ||\r\n c >= 0x0621 && c <= 0x063A ||\r\n c >= 0x0641 && c <= 0x064A ||\r\n c >= 0x0671 && c <= 0x06B7 ||\r\n c >= 0x06BA && c <= 0x06BE ||\r\n c >= 0x06C0 && c <= 0x06CE ||\r\n c >= 0x06D0 && c <= 0x06D3 ||\r\n c == 0x06D5 ||\r\n c >= 0x06E5 && c <= 0x06E6 ||\r\n c >= 0x0905 && c <= 0x0939 ||\r\n c == 0x093D ||\r\n c >= 0x0958 && c <= 0x0961 ||\r\n c >= 0x0985 && c <= 0x098C ||\r\n c >= 0x098F && c <= 0x0990 ||\r\n c >= 0x0993 && c <= 0x09A8 ||\r\n c >= 0x09AA && c <= 0x09B0 ||\r\n c == 0x09B2 ||\r\n c >= 0x09B6 && c <= 0x09B9 ||\r\n c >= 0x09DC && c <= 0x09DD ||\r\n c >= 0x09DF && c <= 0x09E1 ||\r\n c >= 0x09F0 && c <= 0x09F1 ||\r\n c >= 0x0A05 && c <= 0x0A0A ||\r\n c >= 0x0A0F && c <= 0x0A10 ||\r\n c >= 0x0A13 && c <= 0x0A28 ||\r\n c >= 0x0A2A && c <= 0x0A30 ||\r\n c >= 0x0A32 && c <= 0x0A33 ||\r\n c >= 0x0A35 && c <= 0x0A36 ||\r\n c >= 0x0A38 && c <= 0x0A39 ||\r\n c >= 0x0A59 && c <= 0x0A5C ||\r\n c == 0x0A5E ||\r\n c >= 0x0A72 && c <= 0x0A74 ||\r\n c >= 0x0A85 && c <= 0x0A8B ||\r\n c == 0x0A8D ||\r\n c >= 0x0A8F && c <= 0x0A91 ||\r\n c >= 0x0A93 && c <= 0x0AA8 ||\r\n c >= 0x0AAA && c <= 0x0AB0 ||\r\n c >= 0x0AB2 && c <= 0x0AB3 ||\r\n c >= 0x0AB5 && c <= 0x0AB9 ||\r\n c == 0x0ABD ||\r\n c == 0x0AE0 ||\r\n c >= 0x0B05 && c <= 0x0B0C ||\r\n c >= 0x0B0F && c <= 0x0B10 ||\r\n c >= 0x0B13 && c <= 0x0B28 ||\r\n c >= 0x0B2A && c <= 0x0B30 ||\r\n c >= 0x0B32 && c <= 0x0B33 ||\r\n c >= 0x0B36 && c <= 0x0B39 ||\r\n c == 0x0B3D ||\r\n c >= 0x0B5C && c <= 0x0B5D ||\r\n c >= 0x0B5F && c <= 0x0B61 ||\r\n c >= 0x0B85 && c <= 0x0B8A ||\r\n c >= 0x0B8E && c <= 0x0B90 ||\r\n c >= 0x0B92 && c <= 0x0B95 ||\r\n c >= 0x0B99 && c <= 0x0B9A ||\r\n c == 0x0B9C ||\r\n c >= 0x0B9E && c <= 0x0B9F ||\r\n c >= 0x0BA3 && c <= 0x0BA4 ||\r\n c >= 0x0BA8 && c <= 0x0BAA ||\r\n c >= 0x0BAE && c <= 0x0BB5 ||\r\n c >= 0x0BB7 && c <= 0x0BB9 ||\r\n c >= 0x0C05 && c <= 0x0C0C ||\r\n c >= 0x0C0E && c <= 0x0C10 ||\r\n c >= 0x0C12 && c <= 0x0C28 ||\r\n c >= 0x0C2A && c <= 0x0C33 ||\r\n c >= 0x0C35 && c <= 0x0C39 ||\r\n c >= 0x0C60 && c <= 0x0C61 ||\r\n c >= 0x0C85 && c <= 0x0C8C ||\r\n c >= 0x0C8E && c <= 0x0C90 ||\r\n c >= 0x0C92 && c <= 0x0CA8 ||\r\n c >= 0x0CAA && c <= 0x0CB3 ||\r\n c >= 0x0CB5 && c <= 0x0CB9 ||\r\n c == 0x0CDE ||\r\n c >= 0x0CE0 && c <= 0x0CE1 ||\r\n c >= 0x0D05 && c <= 0x0D0C ||\r\n c >= 0x0D0E && c <= 0x0D10 ||\r\n c >= 0x0D12 && c <= 0x0D28 ||\r\n c >= 0x0D2A && c <= 0x0D39 ||\r\n c >= 0x0D60 && c <= 0x0D61 ||\r\n c >= 0x0E01 && c <= 0x0E2E ||\r\n c == 0x0E30 ||\r\n c >= 0x0E32 && c <= 0x0E33 ||\r\n c >= 0x0E40 && c <= 0x0E45 ||\r\n c >= 0x0E81 && c <= 0x0E82 ||\r\n c == 0x0E84 ||\r\n c >= 0x0E87 && c <= 0x0E88 ||\r\n c == 0x0E8A ||\r\n c == 0x0E8D ||\r\n c >= 0x0E94 && c <= 0x0E97 ||\r\n c >= 0x0E99 && c <= 0x0E9F ||\r\n c >= 0x0EA1 && c <= 0x0EA3 ||\r\n c == 0x0EA5 ||\r\n c == 0x0EA7 ||\r\n c >= 0x0EAA && c <= 0x0EAB ||\r\n c >= 0x0EAD && c <= 0x0EAE ||\r\n c == 0x0EB0 ||\r\n c >= 0x0EB2 && c <= 0x0EB3 ||\r\n c == 0x0EBD ||\r\n c >= 0x0EC0 && c <= 0x0EC4 ||\r\n c >= 0x0F40 && c <= 0x0F47 ||\r\n c >= 0x0F49 && c <= 0x0F69 ||\r\n c >= 0x10A0 && c <= 0x10C5 ||\r\n c >= 0x10D0 && c <= 0x10F6 ||\r\n c == 0x1100 ||\r\n c >= 0x1102 && c <= 0x1103 ||\r\n c >= 0x1105 && c <= 0x1107 ||\r\n c == 0x1109 ||\r\n c >= 0x110B && c <= 0x110C ||\r\n c >= 0x110E && c <= 0x1112 ||\r\n c == 0x113C ||\r\n c == 0x113E ||\r\n c == 0x1140 ||\r\n c == 0x114C ||\r\n c == 0x114E ||\r\n c == 0x1150 ||\r\n c >= 0x1154 && c <= 0x1155 ||\r\n c == 0x1159 ||\r\n c >= 0x115F && c <= 0x1161 ||\r\n c == 0x1163 ||\r\n c == 0x1165 ||\r\n c == 0x1167 ||\r\n c == 0x1169 ||\r\n c >= 0x116D && c <= 0x116E ||\r\n c >= 0x1172 && c <= 0x1173 ||\r\n c == 0x1175 ||\r\n c == 0x119E ||\r\n c == 0x11A8 ||\r\n c == 0x11AB ||\r\n c >= 0x11AE && c <= 0x11AF ||\r\n c >= 0x11B7 && c <= 0x11B8 ||\r\n c == 0x11BA ||\r\n c >= 0x11BC && c <= 0x11C2 ||\r\n c == 0x11EB ||\r\n c == 0x11F0 ||\r\n c == 0x11F9 ||\r\n c >= 0x1E00 && c <= 0x1E9B ||\r\n c >= 0x1EA0 && c <= 0x1EF9 ||\r\n c >= 0x1F00 && c <= 0x1F15 ||\r\n c >= 0x1F18 && c <= 0x1F1D ||\r\n c >= 0x1F20 && c <= 0x1F45 ||\r\n c >= 0x1F48 && c <= 0x1F4D ||\r\n c >= 0x1F50 && c <= 0x1F57 ||\r\n c == 0x1F59 ||\r\n c == 0x1F5B ||\r\n c == 0x1F5D ||\r\n c >= 0x1F5F && c <= 0x1F7D ||\r\n c >= 0x1F80 && c <= 0x1FB4 ||\r\n c >= 0x1FB6 && c <= 0x1FBC ||\r\n c == 0x1FBE ||\r\n c >= 0x1FC2 && c <= 0x1FC4 ||\r\n c >= 0x1FC6 && c <= 0x1FCC ||\r\n c >= 0x1FD0 && c <= 0x1FD3 ||\r\n c >= 0x1FD6 && c <= 0x1FDB ||\r\n c >= 0x1FE0 && c <= 0x1FEC ||\r\n c >= 0x1FF2 && c <= 0x1FF4 ||\r\n c >= 0x1FF6 && c <= 0x1FFC ||\r\n c == 0x2126 ||\r\n c >= 0x212A && c <= 0x212B ||\r\n c == 0x212E ||\r\n c >= 0x2180 && c <= 0x2182 ||\r\n c >= 0x3041 && c <= 0x3094 ||\r\n c >= 0x30A1 && c <= 0x30FA ||\r\n c >= 0x3105 && c <= 0x312C ||\r\n c >= 0xAC00 && c <= 0xD7A3 ||\r\n c >= 0x4E00 && c <= 0x9FA5 ||\r\n c == 0x3007 ||\r\n c >= 0x3021 && c <= 0x3029;\r\n };\r\n\r\n Utilities.isNCNameChar = function (c) {\r\n return c >= 0x0030 && c <= 0x0039\r\n || c >= 0x0660 && c <= 0x0669\r\n || c >= 0x06F0 && c <= 0x06F9\r\n || c >= 0x0966 && c <= 0x096F\r\n || c >= 0x09E6 && c <= 0x09EF\r\n || c >= 0x0A66 && c <= 0x0A6F\r\n || c >= 0x0AE6 && c <= 0x0AEF\r\n || c >= 0x0B66 && c <= 0x0B6F\r\n || c >= 0x0BE7 && c <= 0x0BEF\r\n || c >= 0x0C66 && c <= 0x0C6F\r\n || c >= 0x0CE6 && c <= 0x0CEF\r\n || c >= 0x0D66 && c <= 0x0D6F\r\n || c >= 0x0E50 && c <= 0x0E59\r\n || c >= 0x0ED0 && c <= 0x0ED9\r\n || c >= 0x0F20 && c <= 0x0F29\r\n || c == 0x002E\r\n || c == 0x002D\r\n || c == 0x005F\r\n || Utilities.isLetter(c)\r\n || c >= 0x0300 && c <= 0x0345\r\n || c >= 0x0360 && c <= 0x0361\r\n || c >= 0x0483 && c <= 0x0486\r\n || c >= 0x0591 && c <= 0x05A1\r\n || c >= 0x05A3 && c <= 0x05B9\r\n || c >= 0x05BB && c <= 0x05BD\r\n || c == 0x05BF\r\n || c >= 0x05C1 && c <= 0x05C2\r\n || c == 0x05C4\r\n || c >= 0x064B && c <= 0x0652\r\n || c == 0x0670\r\n || c >= 0x06D6 && c <= 0x06DC\r\n || c >= 0x06DD && c <= 0x06DF\r\n || c >= 0x06E0 && c <= 0x06E4\r\n || c >= 0x06E7 && c <= 0x06E8\r\n || c >= 0x06EA && c <= 0x06ED\r\n || c >= 0x0901 && c <= 0x0903\r\n || c == 0x093C\r\n || c >= 0x093E && c <= 0x094C\r\n || c == 0x094D\r\n || c >= 0x0951 && c <= 0x0954\r\n || c >= 0x0962 && c <= 0x0963\r\n || c >= 0x0981 && c <= 0x0983\r\n || c == 0x09BC\r\n || c == 0x09BE\r\n || c == 0x09BF\r\n || c >= 0x09C0 && c <= 0x09C4\r\n || c >= 0x09C7 && c <= 0x09C8\r\n || c >= 0x09CB && c <= 0x09CD\r\n || c == 0x09D7\r\n || c >= 0x09E2 && c <= 0x09E3\r\n || c == 0x0A02\r\n || c == 0x0A3C\r\n || c == 0x0A3E\r\n || c == 0x0A3F\r\n || c >= 0x0A40 && c <= 0x0A42\r\n || c >= 0x0A47 && c <= 0x0A48\r\n || c >= 0x0A4B && c <= 0x0A4D\r\n || c >= 0x0A70 && c <= 0x0A71\r\n || c >= 0x0A81 && c <= 0x0A83\r\n || c == 0x0ABC\r\n || c >= 0x0ABE && c <= 0x0AC5\r\n || c >= 0x0AC7 && c <= 0x0AC9\r\n || c >= 0x0ACB && c <= 0x0ACD\r\n || c >= 0x0B01 && c <= 0x0B03\r\n || c == 0x0B3C\r\n || c >= 0x0B3E && c <= 0x0B43\r\n || c >= 0x0B47 && c <= 0x0B48\r\n || c >= 0x0B4B && c <= 0x0B4D\r\n || c >= 0x0B56 && c <= 0x0B57\r\n || c >= 0x0B82 && c <= 0x0B83\r\n || c >= 0x0BBE && c <= 0x0BC2\r\n || c >= 0x0BC6 && c <= 0x0BC8\r\n || c >= 0x0BCA && c <= 0x0BCD\r\n || c == 0x0BD7\r\n || c >= 0x0C01 && c <= 0x0C03\r\n || c >= 0x0C3E && c <= 0x0C44\r\n || c >= 0x0C46 && c <= 0x0C48\r\n || c >= 0x0C4A && c <= 0x0C4D\r\n || c >= 0x0C55 && c <= 0x0C56\r\n || c >= 0x0C82 && c <= 0x0C83\r\n || c >= 0x0CBE && c <= 0x0CC4\r\n || c >= 0x0CC6 && c <= 0x0CC8\r\n || c >= 0x0CCA && c <= 0x0CCD\r\n || c >= 0x0CD5 && c <= 0x0CD6\r\n || c >= 0x0D02 && c <= 0x0D03\r\n || c >= 0x0D3E && c <= 0x0D43\r\n || c >= 0x0D46 && c <= 0x0D48\r\n || c >= 0x0D4A && c <= 0x0D4D\r\n || c == 0x0D57\r\n || c == 0x0E31\r\n || c >= 0x0E34 && c <= 0x0E3A\r\n || c >= 0x0E47 && c <= 0x0E4E\r\n || c == 0x0EB1\r\n || c >= 0x0EB4 && c <= 0x0EB9\r\n || c >= 0x0EBB && c <= 0x0EBC\r\n || c >= 0x0EC8 && c <= 0x0ECD\r\n || c >= 0x0F18 && c <= 0x0F19\r\n || c == 0x0F35\r\n || c == 0x0F37\r\n || c == 0x0F39\r\n || c == 0x0F3E\r\n || c == 0x0F3F\r\n || c >= 0x0F71 && c <= 0x0F84\r\n || c >= 0x0F86 && c <= 0x0F8B\r\n || c >= 0x0F90 && c <= 0x0F95\r\n || c == 0x0F97\r\n || c >= 0x0F99 && c <= 0x0FAD\r\n || c >= 0x0FB1 && c <= 0x0FB7\r\n || c == 0x0FB9\r\n || c >= 0x20D0 && c <= 0x20DC\r\n || c == 0x20E1\r\n || c >= 0x302A && c <= 0x302F\r\n || c == 0x3099\r\n || c == 0x309A\r\n || c == 0x00B7\r\n || c == 0x02D0\r\n || c == 0x02D1\r\n || c == 0x0387\r\n || c == 0x0640\r\n || c == 0x0E46\r\n || c == 0x0EC6\r\n || c == 0x3005\r\n || c >= 0x3031 && c <= 0x3035\r\n || c >= 0x309D && c <= 0x309E\r\n || c >= 0x30FC && c <= 0x30FE;\r\n };\r\n\r\n Utilities.coalesceText = function (n) {\r\n for (var m = n.firstChild; m != null; m = m.nextSibling) {\r\n if (m.nodeType == NodeTypes.TEXT_NODE || m.nodeType == NodeTypes.CDATA_SECTION_NODE) {\r\n var s = m.nodeValue;\r\n var first = m;\r\n m = m.nextSibling;\r\n while (m != null && (m.nodeType == NodeTypes.TEXT_NODE || m.nodeType == NodeTypes.CDATA_SECTION_NODE)) {\r\n s += m.nodeValue;\r\n var del = m;\r\n m = m.nextSibling;\r\n del.parentNode.removeChild(del);\r\n }\r\n if (first.nodeType == NodeTypes.CDATA_SECTION_NODE) {\r\n var p = first.parentNode;\r\n if (first.nextSibling == null) {\r\n p.removeChild(first);\r\n p.appendChild(p.ownerDocument.createTextNode(s));\r\n } else {\r\n var next = first.nextSibling;\r\n p.removeChild(first);\r\n p.insertBefore(p.ownerDocument.createTextNode(s), next);\r\n }\r\n } else {\r\n first.nodeValue = s;\r\n }\r\n if (m == null) {\r\n break;\r\n }\r\n } else if (m.nodeType == NodeTypes.ELEMENT_NODE) {\r\n Utilities.coalesceText(m);\r\n }\r\n }\r\n };\r\n\r\n Utilities.instance_of = function (o, c) {\r\n while (o != null) {\r\n if (o.constructor === c) {\r\n return true;\r\n }\r\n if (o === Object) {\r\n return false;\r\n }\r\n o = o.constructor.superclass;\r\n }\r\n return false;\r\n };\r\n\r\n Utilities.getElementById = function (n, id) {\r\n // Note that this does not check the DTD to check for actual\r\n // attributes of type ID, so this may be a bit wrong.\r\n if (n.nodeType == NodeTypes.ELEMENT_NODE) {\r\n if (n.getAttribute(\"id\") == id\r\n || n.getAttributeNS(null, \"id\") == id) {\r\n return n;\r\n }\r\n }\r\n for (var m = n.firstChild; m != null; m = m.nextSibling) {\r\n var res = Utilities.getElementById(m, id);\r\n if (res != null) {\r\n return res;\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n // XPathException ////////////////////////////////////////////////////////////\r\n\r\n var XPathException = (function () {\r\n function getMessage(code, exception) {\r\n var msg = exception ? \": \" + exception.toString() : \"\";\r\n switch (code) {\r\n case XPathException.INVALID_EXPRESSION_ERR:\r\n return \"Invalid expression\" + msg;\r\n case XPathException.TYPE_ERR:\r\n return \"Type error\" + msg;\r\n }\r\n return null;\r\n }\r\n\r\n function XPathException(code, error, message) {\r\n var err = Error.call(this, getMessage(code, error) || message);\r\n\r\n err.code = code;\r\n err.exception = error;\r\n\r\n return err;\r\n }\r\n\r\n XPathException.prototype = Object.create(Error.prototype);\r\n XPathException.prototype.constructor = XPathException;\r\n XPathException.superclass = Error;\r\n\r\n XPathException.prototype.toString = function () {\r\n return this.message;\r\n };\r\n\r\n XPathException.fromMessage = function (message, error) {\r\n return new XPathException(null, error, message);\r\n };\r\n\r\n XPathException.INVALID_EXPRESSION_ERR = 51;\r\n XPathException.TYPE_ERR = 52;\r\n\r\n return XPathException;\r\n })();\r\n\r\n // XPathExpression ///////////////////////////////////////////////////////////\r\n\r\n XPathExpression.prototype = {};\r\n XPathExpression.prototype.constructor = XPathExpression;\r\n XPathExpression.superclass = Object.prototype;\r\n\r\n function XPathExpression(e, r, p) {\r\n this.xpath = p.parse(e);\r\n this.context = new XPathContext();\r\n this.context.namespaceResolver = new XPathNSResolverWrapper(r);\r\n }\r\n\r\n XPathExpression.getOwnerDocument = function (n) {\r\n return n.nodeType === NodeTypes.DOCUMENT_NODE ? n : n.ownerDocument;\r\n }\r\n\r\n XPathExpression.detectHtmlDom = function (n) {\r\n if (!n) { return false; }\r\n\r\n var doc = XPathExpression.getOwnerDocument(n);\r\n\r\n try {\r\n return doc.implementation.hasFeature(\"HTML\", \"2.0\");\r\n } catch (e) {\r\n return true;\r\n }\r\n }\r\n\r\n XPathExpression.prototype.evaluate = function (n, t, res) {\r\n this.context.expressionContextNode = n;\r\n // backward compatibility - no reliable way to detect whether the DOM is HTML, but\r\n // this library has been using this method up until now, so we will continue to use it\r\n // ONLY when using an XPathExpression\r\n this.context.caseInsensitive = XPathExpression.detectHtmlDom(n);\r\n\r\n var result = this.xpath.evaluate(this.context);\r\n\r\n return new XPathResult(result, t);\r\n }\r\n\r\n // XPathNSResolverWrapper ////////////////////////////////////////////////////\r\n\r\n XPathNSResolverWrapper.prototype = {};\r\n XPathNSResolverWrapper.prototype.constructor = XPathNSResolverWrapper;\r\n XPathNSResolverWrapper.superclass = Object.prototype;\r\n\r\n function XPathNSResolverWrapper(r) {\r\n this.xpathNSResolver = r;\r\n }\r\n\r\n XPathNSResolverWrapper.prototype.getNamespace = function (prefix, n) {\r\n if (this.xpathNSResolver == null) {\r\n return null;\r\n }\r\n return this.xpathNSResolver.lookupNamespaceURI(prefix);\r\n };\r\n\r\n // NodeXPathNSResolver ///////////////////////////////////////////////////////\r\n\r\n NodeXPathNSResolver.prototype = {};\r\n NodeXPathNSResolver.prototype.constructor = NodeXPathNSResolver;\r\n NodeXPathNSResolver.superclass = Object.prototype;\r\n\r\n function NodeXPathNSResolver(n) {\r\n this.node = n;\r\n this.namespaceResolver = new NamespaceResolver();\r\n }\r\n\r\n NodeXPathNSResolver.prototype.lookupNamespaceURI = function (prefix) {\r\n return this.namespaceResolver.getNamespace(prefix, this.node);\r\n };\r\n\r\n // XPathResult ///////////////////////////////////////////////////////////////\r\n\r\n XPathResult.prototype = {};\r\n XPathResult.prototype.constructor = XPathResult;\r\n XPathResult.superclass = Object.prototype;\r\n\r\n function XPathResult(v, t) {\r\n if (t == XPathResult.ANY_TYPE) {\r\n if (v.constructor === XString) {\r\n t = XPathResult.STRING_TYPE;\r\n } else if (v.constructor === XNumber) {\r\n t = XPathResult.NUMBER_TYPE;\r\n } else if (v.constructor === XBoolean) {\r\n t = XPathResult.BOOLEAN_TYPE;\r\n } else if (v.constructor === XNodeSet) {\r\n t = XPathResult.UNORDERED_NODE_ITERATOR_TYPE;\r\n }\r\n }\r\n this.resultType = t;\r\n switch (t) {\r\n case XPathResult.NUMBER_TYPE:\r\n this.numberValue = v.numberValue();\r\n return;\r\n case XPathResult.STRING_TYPE:\r\n this.stringValue = v.stringValue();\r\n return;\r\n case XPathResult.BOOLEAN_TYPE:\r\n this.booleanValue = v.booleanValue();\r\n return;\r\n case XPathResult.ANY_UNORDERED_NODE_TYPE:\r\n case XPathResult.FIRST_ORDERED_NODE_TYPE:\r\n if (v.constructor === XNodeSet) {\r\n this.singleNodeValue = v.first();\r\n return;\r\n }\r\n break;\r\n case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:\r\n case XPathResult.ORDERED_NODE_ITERATOR_TYPE:\r\n if (v.constructor === XNodeSet) {\r\n this.invalidIteratorState = false;\r\n this.nodes = v.toArray();\r\n this.iteratorIndex = 0;\r\n return;\r\n }\r\n break;\r\n case XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE:\r\n case XPathResult.ORDERED_NODE_SNAPSHOT_TYPE:\r\n if (v.constructor === XNodeSet) {\r\n this.nodes = v.toArray();\r\n this.snapshotLength = this.nodes.length;\r\n return;\r\n }\r\n break;\r\n }\r\n throw new XPathException(XPathException.TYPE_ERR);\r\n };\r\n\r\n XPathResult.prototype.iterateNext = function () {\r\n if (this.resultType != XPathResult.UNORDERED_NODE_ITERATOR_TYPE\r\n && this.resultType != XPathResult.ORDERED_NODE_ITERATOR_TYPE) {\r\n throw new XPathException(XPathException.TYPE_ERR);\r\n }\r\n return this.nodes[this.iteratorIndex++];\r\n };\r\n\r\n XPathResult.prototype.snapshotItem = function (i) {\r\n if (this.resultType != XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE\r\n && this.resultType != XPathResult.ORDERED_NODE_SNAPSHOT_TYPE) {\r\n throw new XPathException(XPathException.TYPE_ERR);\r\n }\r\n return this.nodes[i];\r\n };\r\n\r\n XPathResult.ANY_TYPE = 0;\r\n XPathResult.NUMBER_TYPE = 1;\r\n XPathResult.STRING_TYPE = 2;\r\n XPathResult.BOOLEAN_TYPE = 3;\r\n XPathResult.UNORDERED_NODE_ITERATOR_TYPE = 4;\r\n XPathResult.ORDERED_NODE_ITERATOR_TYPE = 5;\r\n XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE = 6;\r\n XPathResult.ORDERED_NODE_SNAPSHOT_TYPE = 7;\r\n XPathResult.ANY_UNORDERED_NODE_TYPE = 8;\r\n XPathResult.FIRST_ORDERED_NODE_TYPE = 9;\r\n\r\n // DOM 3 XPath support ///////////////////////////////////////////////////////\r\n\r\n function installDOM3XPathSupport(doc, p) {\r\n doc.createExpression = function (e, r) {\r\n try {\r\n return new XPathExpression(e, r, p);\r\n } catch (e) {\r\n throw new XPathException(XPathException.INVALID_EXPRESSION_ERR, e);\r\n }\r\n };\r\n doc.createNSResolver = function (n) {\r\n return new NodeXPathNSResolver(n);\r\n };\r\n doc.evaluate = function (e, cn, r, t, res) {\r\n if (t < 0 || t > 9) {\r\n throw { code: 0, toString: function () { return \"Request type not supported\"; } };\r\n }\r\n return doc.createExpression(e, r, p).evaluate(cn, t, res);\r\n };\r\n };\r\n\r\n // ---------------------------------------------------------------------------\r\n\r\n // Install DOM 3 XPath support for the current document.\r\n try {\r\n var shouldInstall = true;\r\n try {\r\n if (document.implementation\r\n && document.implementation.hasFeature\r\n && document.implementation.hasFeature(\"XPath\", null)) {\r\n shouldInstall = false;\r\n }\r\n } catch (e) {\r\n }\r\n if (shouldInstall) {\r\n installDOM3XPathSupport(document, new XPathParser());\r\n }\r\n } catch (e) {\r\n }\r\n\r\n // ---------------------------------------------------------------------------\r\n // exports for node.js\r\n\r\n installDOM3XPathSupport(exports, new XPathParser());\r\n\r\n (function () {\r\n var parser = new XPathParser();\r\n\r\n var defaultNSResolver = new NamespaceResolver();\r\n var defaultFunctionResolver = new FunctionResolver();\r\n var defaultVariableResolver = new VariableResolver();\r\n\r\n function makeNSResolverFromFunction(func) {\r\n return {\r\n getNamespace: function (prefix, node) {\r\n var ns = func(prefix, node);\r\n\r\n return ns || defaultNSResolver.getNamespace(prefix, node);\r\n }\r\n };\r\n }\r\n\r\n function makeNSResolverFromObject(obj) {\r\n return makeNSResolverFromFunction(obj.getNamespace.bind(obj));\r\n }\r\n\r\n function makeNSResolverFromMap(map) {\r\n return makeNSResolverFromFunction(function (prefix) {\r\n return map[prefix];\r\n });\r\n }\r\n\r\n function makeNSResolver(resolver) {\r\n if (resolver && typeof resolver.getNamespace === \"function\") {\r\n return makeNSResolverFromObject(resolver);\r\n }\r\n\r\n if (typeof resolver === \"function\") {\r\n return makeNSResolverFromFunction(resolver);\r\n }\r\n\r\n // assume prefix -> uri mapping\r\n if (typeof resolver === \"object\") {\r\n return makeNSResolverFromMap(resolver);\r\n }\r\n\r\n return defaultNSResolver;\r\n }\r\n\r\n /** Converts native JavaScript types to their XPath library equivalent */\r\n function convertValue(value) {\r\n if (value === null ||\r\n typeof value === \"undefined\" ||\r\n value instanceof XString ||\r\n value instanceof XBoolean ||\r\n value instanceof XNumber ||\r\n value instanceof XNodeSet) {\r\n return value;\r\n }\r\n\r\n switch (typeof value) {\r\n case \"string\": return new XString(value);\r\n case \"boolean\": return new XBoolean(value);\r\n case \"number\": return new XNumber(value);\r\n }\r\n\r\n // assume node(s)\r\n var ns = new XNodeSet();\r\n ns.addArray([].concat(value));\r\n return ns;\r\n }\r\n\r\n function makeEvaluator(func) {\r\n return function (context) {\r\n var args = Array.prototype.slice.call(arguments, 1).map(function (arg) {\r\n return arg.evaluate(context);\r\n });\r\n var result = func.apply(this, [].concat(context, args));\r\n return convertValue(result);\r\n };\r\n }\r\n\r\n function makeFunctionResolverFromFunction(func) {\r\n return {\r\n getFunction: function (name, namespace) {\r\n var found = func(name, namespace);\r\n if (found) {\r\n return makeEvaluator(found);\r\n }\r\n return defaultFunctionResolver.getFunction(name, namespace);\r\n }\r\n };\r\n }\r\n\r\n function makeFunctionResolverFromObject(obj) {\r\n return makeFunctionResolverFromFunction(obj.getFunction.bind(obj));\r\n }\r\n\r\n function makeFunctionResolverFromMap(map) {\r\n return makeFunctionResolverFromFunction(function (name) {\r\n return map[name];\r\n });\r\n }\r\n\r\n function makeFunctionResolver(resolver) {\r\n if (resolver && typeof resolver.getFunction === \"function\") {\r\n return makeFunctionResolverFromObject(resolver);\r\n }\r\n\r\n if (typeof resolver === \"function\") {\r\n return makeFunctionResolverFromFunction(resolver);\r\n }\r\n\r\n // assume map\r\n if (typeof resolver === \"object\") {\r\n return makeFunctionResolverFromMap(resolver);\r\n }\r\n\r\n return defaultFunctionResolver;\r\n }\r\n\r\n function makeVariableResolverFromFunction(func) {\r\n return {\r\n getVariable: function (name, namespace) {\r\n var value = func(name, namespace);\r\n return convertValue(value);\r\n }\r\n };\r\n }\r\n\r\n function makeVariableResolver(resolver) {\r\n if (resolver) {\r\n if (typeof resolver.getVariable === \"function\") {\r\n return makeVariableResolverFromFunction(resolver.getVariable.bind(resolver));\r\n }\r\n\r\n if (typeof resolver === \"function\") {\r\n return makeVariableResolverFromFunction(resolver);\r\n }\r\n\r\n // assume map\r\n if (typeof resolver === \"object\") {\r\n return makeVariableResolverFromFunction(function (name) {\r\n return resolver[name];\r\n });\r\n }\r\n }\r\n\r\n return defaultVariableResolver;\r\n }\r\n\r\n function copyIfPresent(prop, dest, source) {\r\n if (prop in source) { dest[prop] = source[prop]; }\r\n }\r\n\r\n function makeContext(options) {\r\n var context = new XPathContext();\r\n\r\n if (options) {\r\n context.namespaceResolver = makeNSResolver(options.namespaces);\r\n context.functionResolver = makeFunctionResolver(options.functions);\r\n context.variableResolver = makeVariableResolver(options.variables);\r\n context.expressionContextNode = options.node;\r\n copyIfPresent('allowAnyNamespaceForNoPrefix', context, options);\r\n copyIfPresent('isHtml', context, options);\r\n } else {\r\n context.namespaceResolver = defaultNSResolver;\r\n }\r\n\r\n return context;\r\n }\r\n\r\n function evaluate(parsedExpression, options) {\r\n var context = makeContext(options);\r\n\r\n return parsedExpression.evaluate(context);\r\n }\r\n\r\n var evaluatorPrototype = {\r\n evaluate: function (options) {\r\n return evaluate(this.expression, options);\r\n }\r\n\r\n , evaluateNumber: function (options) {\r\n return this.evaluate(options).numberValue();\r\n }\r\n\r\n , evaluateString: function (options) {\r\n return this.evaluate(options).stringValue();\r\n }\r\n\r\n , evaluateBoolean: function (options) {\r\n return this.evaluate(options).booleanValue();\r\n }\r\n\r\n , evaluateNodeSet: function (options) {\r\n return this.evaluate(options).nodeset();\r\n }\r\n\r\n , select: function (options) {\r\n return this.evaluateNodeSet(options).toArray()\r\n }\r\n\r\n , select1: function (options) {\r\n return this.select(options)[0];\r\n }\r\n };\r\n\r\n function parse(xpath) {\r\n var parsed = parser.parse(xpath);\r\n\r\n return Object.create(evaluatorPrototype, {\r\n expression: {\r\n value: parsed\r\n }\r\n });\r\n }\r\n\r\n exports.parse = parse;\r\n })();\r\n\r\n assign(\r\n exports,\r\n {\r\n XPath: XPath,\r\n XPathParser: XPathParser,\r\n XPathResult: XPathResult,\r\n\r\n Step: Step,\r\n PathExpr: PathExpr,\r\n NodeTest: NodeTest,\r\n LocationPath: LocationPath,\r\n\r\n OrOperation: OrOperation,\r\n AndOperation: AndOperation,\r\n\r\n BarOperation: BarOperation,\r\n\r\n EqualsOperation: EqualsOperation,\r\n NotEqualOperation: NotEqualOperation,\r\n LessThanOperation: LessThanOperation,\r\n GreaterThanOperation: GreaterThanOperation,\r\n LessThanOrEqualOperation: LessThanOrEqualOperation,\r\n GreaterThanOrEqualOperation: GreaterThanOrEqualOperation,\r\n\r\n PlusOperation: PlusOperation,\r\n MinusOperation: MinusOperation,\r\n MultiplyOperation: MultiplyOperation,\r\n DivOperation: DivOperation,\r\n ModOperation: ModOperation,\r\n UnaryMinusOperation: UnaryMinusOperation,\r\n\r\n FunctionCall: FunctionCall,\r\n VariableReference: VariableReference,\r\n\r\n XPathContext: XPathContext,\r\n\r\n XNodeSet: XNodeSet,\r\n XBoolean: XBoolean,\r\n XString: XString,\r\n XNumber: XNumber,\r\n\r\n NamespaceResolver: NamespaceResolver,\r\n FunctionResolver: FunctionResolver,\r\n VariableResolver: VariableResolver,\r\n\r\n Utilities: Utilities,\r\n }\r\n );\r\n\r\n // helper\r\n exports.select = function (e, doc, single) {\r\n return exports.selectWithResolver(e, doc, null, single);\r\n };\r\n\r\n exports.useNamespaces = function (mappings) {\r\n var resolver = {\r\n mappings: mappings || {},\r\n lookupNamespaceURI: function (prefix) {\r\n return this.mappings[prefix];\r\n }\r\n };\r\n\r\n return function (e, doc, single) {\r\n return exports.selectWithResolver(e, doc, resolver, single);\r\n };\r\n };\r\n\r\n exports.selectWithResolver = function (e, doc, resolver, single) {\r\n var expression = new XPathExpression(e, resolver, new XPathParser());\r\n var type = XPathResult.ANY_TYPE;\r\n\r\n var result = expression.evaluate(doc, type, null);\r\n\r\n if (result.resultType == XPathResult.STRING_TYPE) {\r\n result = result.stringValue;\r\n }\r\n else if (result.resultType == XPathResult.NUMBER_TYPE) {\r\n result = result.numberValue;\r\n }\r\n else if (result.resultType == XPathResult.BOOLEAN_TYPE) {\r\n result = result.booleanValue;\r\n }\r\n else {\r\n result = result.nodes;\r\n if (single) {\r\n result = result[0];\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n exports.select1 = function (e, doc) {\r\n return exports.select(e, doc, true);\r\n };\r\n\r\n var isArrayOfNodes = function (value) {\r\n return Array.isArray(value) && value.every(isNodeLike);\r\n };\r\n\r\n var isNodeOfType = function (type) {\r\n return function (value) {\r\n return isNodeLike(value) && value.nodeType === type;\r\n };\r\n };\r\n\r\n assign(\r\n exports,\r\n {\r\n isNodeLike: isNodeLike,\r\n isArrayOfNodes: isArrayOfNodes,\r\n isElement: isNodeOfType(NodeTypes.ELEMENT_NODE),\r\n isAttribute: isNodeOfType(NodeTypes.ATTRIBUTE_NODE),\r\n isTextNode: isNodeOfType(NodeTypes.TEXT_NODE),\r\n isCDATASection: isNodeOfType(NodeTypes.CDATA_SECTION_NODE),\r\n isProcessingInstruction: isNodeOfType(NodeTypes.PROCESSING_INSTRUCTION_NODE),\r\n isComment: isNodeOfType(NodeTypes.COMMENT_NODE),\r\n isDocumentNode: isNodeOfType(NodeTypes.DOCUMENT_NODE),\r\n isDocumentTypeNode: isNodeOfType(NodeTypes.DOCUMENT_TYPE_NODE),\r\n isDocumentFragment: isNodeOfType(NodeTypes.DOCUMENT_FRAGMENT_NODE),\r\n }\r\n );\r\n // end non-node wrapper\r\n})(xpath);\r\n","import type {\n\tIAprimoIconMetadata,\n\tIAprimoImageMetadata,\n\tIAprimoOriginalImageMetadata,\n} from '../../../builder-oem/src/components/aprimo-dam/types';\nimport type { LinkFieldSet } from '../embedded-link';\nimport { LinkTarget } from '../embedded-link';\nimport type { PesImage } from '../types/pes';\n\nexport const BUILDER_API_V3_CONTENT = 'https://cdn.builder.io/api/v3/content';\n\nexport const EXAMPLE_VIDEO_LINK_EMBEDDED = {\n\tlinkType: 'videoLink',\n\ttarget: '_blank',\n\tlinkData: {\n\t\turl: 'https://www.youtube.com/watch?v=5iKMUPdfF0s',\n\t},\n\tresolvedUrl: 'https://www.youtube.com/watch?v=5iKMUPdfF0s',\n\tinvalid: false,\n};\n\nexport const EXAMPLE_LINK_EMBEDDED: LinkFieldSet = {\n\tlinkType: 'externalLink',\n\ttarget: LinkTarget.BLANK,\n\tlinkData: {\n\t\turl: 'https://www.se.com',\n\t},\n\tresolvedUrl: 'https://www.se.com',\n\tinvalid: false,\n} as const;\n\nexport const EXAMPLE_APRIMO_ICON: IAprimoIconMetadata = {\n\tid: '5040325ea0d94820be10b1a10104a341',\n\toriginalImageDetails: {\n\t\t'Expiration Date': '03/07/2028',\n\t},\n\ticonUri:\n\t\t'https://www.se.com/dam-assets/T5FksKZn8Roxg8yIQQzNMQ/nJOG8xfDLR_Yks5jYZtVqg/Original%20file/segment_building_small_green.svg',\n\tisLoadingResourceToAkamaiCdn: false,\n};\n\nexport const EXAMPLE_APRIMO_IMAGE: IAprimoImageMetadata = {\n\tid: '0dde2580e248499c86c9afdd01413425',\n\tversion: 1,\n\toriginalImageDetails: {\n\t\t'Expiration Date': '2024-02-14T16:35:59.087',\n\t},\n\tcropsDetails: {\n\t\thorizontal: {\n\t\t\tfileName: 'GettyImages-1319076271_BUILDER.IOHorizontal1920540.webp',\n\t\t\trenditionName: 'BUILDER.IO|Horizontal|1920|540',\n\t\t\turi: 'https://www.se.com/dam-assets/CS4gu-c_1CvflBIs3vMdPA/_xLvtaJWXhjKiRXU4j9Ojg/BUILDER.IO%7CHorizontal%7C1920%7C540/GettyImages-1319076271_BUILDER.IOHorizontal1920540.webp',\n\t\t\tid: '050f54369dd94cfe887354429f544921',\n\t\t\tisLoadingResourceToAkamaiCdn: false,\n\t\t\tfileSize: 201318,\n\t\t},\n\t\tsquare: {\n\t\t\tfileName: 'GettyImages-1319076271_BUILDER.IOSquare540540.webp',\n\t\t\trenditionName: 'BUILDER.IO|Square|540|540',\n\t\t\turi: 'https://www.se.com/dam-assets/CS4gu-c_1CvflBIs3vMdPA/_xLvtaJWXhjKiRXU4j9Ojg/BUILDER.IO%7CSquare%7C540%7C540/GettyImages-1319076271_BUILDER.IOSquare540540.webp',\n\t\t\tid: 'cf4ede966f854131bd3358ca5adbafec',\n\t\t\tisLoadingResourceToAkamaiCdn: false,\n\t\t\tfileSize: 54866,\n\t\t},\n\t\trectangle: {\n\t\t\tfileName: 'GettyImages-1319076271_BUILDER.IOSquare540540.webp',\n\t\t\trenditionName: 'BUILDER.IO|Square|540|540',\n\t\t\turi: 'https://www.se.com/dam-assets/CS4gu-c_1CvflBIs3vMdPA/_xLvtaJWXhjKiRXU4j9Ojg/BUILDER.IO%7CSquare%7C540%7C540/GettyImages-1319076271_BUILDER.IOSquare540540.webp',\n\t\t\tid: 'cf4ede966f854131bd3358ca5adbafec',\n\t\t\tisLoadingResourceToAkamaiCdn: false,\n\t\t\tfileSize: 54866,\n\t\t},\n\t\toriginal: {\n\t\t\tfileName: 'GettyImages-1319076271_BUILDER.IOSquare540540.webp',\n\t\t\trenditionName: 'Original',\n\t\t\turi: 'https://www.se.com/dam-assets/CS4gu-c_1CvflBIs3vMdPA/_xLvtaJWXhjKiRXU4j9Ojg/BUILDER.IO%7CSquare%7C540%7C540/GettyImages-1319076271_BUILDER.IOSquare540540.webp',\n\t\t\tid: 'cf4ede966f854131bd3358ca5adbafec',\n\t\t\tisLoadingResourceToAkamaiCdn: false,\n\t\t\tfileSize: 54866,\n\t\t},\n\t},\n\taltText: 'aprimo image alt text',\n};\n\nexport const EXAMPLE_VIDEO_FILE = {\n\tvideoUri:\n\t\t'https://www.se.com/dam-assets/616D-iicVvvCeswMR2ZmyA/AjgVRXpUyEne99tJHKSAyg/Original%20file/Train_02.mp4',\n\tassetId: '33fe0018a84d4da0b1c7b1e900fe9e89',\n\tadditionalFileId: null,\n\tstillImageUri:\n\t\t'https://s1.sb.previews.aprimo.com/schneiderelectric-sb1/2024/9/12_15/eaa7829d-67e7-463c-a75e-b1e900febbbf_92829ba4-aab2-4028-b739-f500c9c88d09_Prev.jpg?skoid=05c3646f-fde6-4deb-acce-3f9058246570&sktid=d05954c1-36eb-40b2-8f23-7f2ce352faf6&skt=2024-09-24T08%3A12%3A18Z&ske=2024-10-01T08%3A12%3A18Z&sks=b&skv=2021-10-04&sv=2021-10-04&st=2024-09-24T08%3A00%3A00Z&se=2024-10-01T10%3A00%3A00Z&sr=b&sp=r&sig=QyFBRGtoV0szVh2%2Fg4jV8QbdTxn2rFejhDQoe%2FvLa7M%3D',\n\toriginalVideoMetadata: {\n\t\tid: 'a1e289b95cd444ce88c8b1e900fe9faa',\n\t\turi: 'https://www.se.com/dam-assets/616D-iicVvvCeswMR2ZmyA/AjgVRXpUyEne99tJHKSAyg/Original%20file/Train_02.mp4',\n\t\trecordId: '33fe0018a84d4da0b1c7b1e900fe9e89',\n\t\trenditionId: 'a1e289b95cd444ce88c8b1e900fe9faa',\n\t\tversionLabel: '',\n\t\tversionNumber: 1,\n\t\tfileName: 'Train_02.mp4',\n\t\tfileCreatedOn: '2024-09-12T15:27:02Z',\n\t\tfileModifiedOn: '2024-09-12T15:27:02Z',\n\t\tfileSize: 1854555,\n\t\tfileExtension: 'mp4',\n\t\tcomment: '',\n\t\tcrc32: -1348835967,\n\t\tisLatest: true,\n\t},\n};\n\nexport const EXAMPLE_APRIMO_ORIGINAL_IMAGE: IAprimoOriginalImageMetadata = {\n\tid: '0dde2580e248499c86c9afdd01413425',\n\tversion: 1,\n\toriginalImageDetails: {\n\t\t'Expiration Date': '2024-02-14T16:35:59.087',\n\t},\n\tcropsDetails: {\n\t\toriginal: {\n\t\t\tfileName: 'GettyImages-1319076271_BUILDER.IOSquare540540.webp',\n\t\t\trenditionName: 'Original',\n\t\t\turi: 'https://www.se.com/dam-assets/CS4gu-c_1CvflBIs3vMdPA/_xLvtaJWXhjKiRXU4j9Ojg/BUILDER.IO%7CSquare%7C540%7C540/GettyImages-1319076271_BUILDER.IOSquare540540.webp',\n\t\t\tid: 'cf4ede966f854131bd3358ca5adbafec',\n\t\t\tisLoadingResourceToAkamaiCdn: false,\n\t\t},\n\t},\n\taltText: 'aprimo image alt text',\n};\n\nexport const EXAMPLE_PES_IMAGE: PesImage = {\n\tpesId: '',\n\tpicture: undefined,\n};\n\nexport const EXAMPLE_ICON_IMAGE: IAprimoIconMetadata = {\n\tid: '5e18e7baf1db4b2c9462b1230106f494',\n\toriginalImageDetails: { 'Expiration Date': '27.02.2028' },\n\ticonUri:\n\t\t'https://www.se.com/dam-assets/MGD879vBVUcYqPoPqTue-g/q66LdZxH_LbpzJSDoHVa-A/Original%20file/wind_turbine_green.svg',\n\tisLoadingResourceToAkamaiCdn: false,\n};\n\nexport const EXAMPLE_APRIMO_VIDEO = {\n\taprimoOptions: {\n\t\tstillImageUri:\n\t\t\t'https://s1.sb.previews.aprimo.com/schneiderelectric-sb1/2023/10/27_16/c50abfb0-54ca-4a8e-b2bb-b0a801152915_584005fd-afcb-4a7a-99ff-d5edcfea91e4_Prev.jpg?skoid=05c3646f-fde6-4deb-acce-3f9058246570&sktid=d05954c1-36eb-40b2-8f23-7f2ce352faf6&skt=2024-10-31T15%3A17%3A26Z&ske=2024-11-07T15%3A17%3A26Z&sks=b&skv=2024-11-04&sv=2024-11-04&st=2024-10-31T14%3A00%3A00Z&se=2024-11-07T16%3A00%3A00Z&sr=b&sp=r&sig=2EpMvU8QCFaG8NvhoYrpn%2FsGeozbmULctkkpg%2BrNCkc%3D',\n\t\tvideoUri:\n\t\t\t'https://www.se.com/dam-assets/v1F4Bv7m86_aLx71uMz2tw/z0X_kM7jIi9SiZidB5XM8Q/Original%20file/Train.mp4',\n\t},\n\tuploadDate: new Date(Date.now()).toString(),\n};\n\nexport const EXTERNAL_IMAGE_URL_PATTERN = `^(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]+\\.[^\\s]{2,})|([0-9]+\\s{0,1}%{0,1})$`;\n"],"names":["LinkTarget","find","list","predicate","ac","i","item","freeze","object","oc","assign","target","source","key","MIME_TYPE","value","NAMESPACE","uri","conventions","require$$0","notEmptyString","input","splitOnASCIIWhitespace","orderedSetReducer","current","element","toOrderedSet","arrayIncludes","copy","src","dest","p","_extends","Class","Super","pt","t","NodeType","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","NOTATION_NODE","ExceptionCode","ExceptionMessage","HIERARCHY_REQUEST_ERR","NOT_FOUND_ERR","INUSE_ATTRIBUTE_ERR","DOMException","code","message","error","NodeList","index","isHTML","nodeFilter","buf","serializeToString","LiveNodeList","node","refresh","_updateLiveList","inc","ls","__set__","NamedNodeMap","_findNodeIndex","_addNamedNode","el","newAttr","oldAttr","doc","_onRemoveAttribute","_onAddAttribute","_removeNamedNode","attr","lastIndex","namespaceURI","localName","DOMImplementation","feature","version","qualifiedName","doctype","Document","root","publicId","systemId","DocumentType","Node","newChild","refChild","_insertBefore","oldChild","assertPreReplacementValidityInDocument","_removeChild","deep","cloneNode","child","next","map","n","prefix","_xmlEncoder","c","_visitNode","callback","ns","remove","_onUpdateChild","cs","parentNode","previous","hasValidParentNodeType","hasInsertableNodeType","isElementNode","isTextNode","isDocTypeNode","isElementInsertionPossible","parentChildNodes","docTypeNode","isElementReplacementPossible","hasElementChildThatIsNotChild","assertPreInsertionValidity1to5","parent","assertPreInsertionValidityInDocument","nodeChildNodes","nodeChildElements","parentElementChild","_inDocumentAssertion","cp","newFirst","newLast","pre","_appendSingleChild","importedNode","importNode","id","rtv","classNames","classNamesSet","base","nodeClassNames","matches","nodeClassNamesSet","tagName","Element","attrs","DocumentFragment","data","Text","Comment","CDATASection","ProcessingInstruction","name","Attr","EntityReference","pl","old","CharacterData","offset","count","text","start","end","newText","newNode","Notation","Entity","XMLSerializer","isHtml","nodeSerializeToString","refNode","visibleNamespaces","needNamespaceDefine","addSerializedAttribute","len","nodeName","prefixedNodeName","defaultNS","ai","nsi","namespace","pubid","sysid","sub","node2","v","attrs2","getTextContent","dom","exports","nameStartChar","nameChar","tagNamePattern","S_TAG","S_ATTR","S_ATTR_SPACE","S_EQ","S_ATTR_NOQUOT_VALUE","S_ATTR_END","S_TAG_SPACE","S_TAG_CLOSE","ParseError","locator","XMLReader","defaultNSMap","entityMap","domBuilder","_copy","parse","defaultNSMapCopy","errorHandler","fixedFromCharCode","surrogate1","surrogate2","entityReplacer","a","k","appendText","xt","position","m","lineEnd","linePattern","lineStart","parseStack","closeMap","tagStart","config","localNSMap","endMatch","endIgnoreCaseMach","parseInstruction","parseDCC","ElementAttributes","currentNSMap","parseElementStartPart","fixSelfClosed","locator2","copyLocator","appendElement","parseHtmlSpecialContent","e","f","addAttribute","qname","startIndex","attrName","s","qName","nsp","nsPrefix","elStartEnd","elEndStart","pos","matchs","split","lastMatch","match","reg","sax","require$$1","entities","require$$2","require$$3","normalizeLineEndings","DOMParser","options","mimeType","DOMHandler","buildErrorHandler","normalize","errorImpl","isCallback","build","fn","msg","_locator","ins","ch","length","chars","_toString","charNode","comm","impl","dt","l","hander","domParser","xpath","NAMESPACE_NODE_NODETYPE","isNil","x","isValidNodeType","nodeType","isNodeLike","curry","func","slice","totalargs","partial","args","forEach","xs","reduce","seed","acc","mapped","filter","filtered","includes","values","always","toString","join","wrap","pref","suf","str","prototypeConcat","sortNodes","nodes","reverse","XNodeSet","sorted","MAX_ARGUMENT_LENGTH","flatten","arr","result","chunk","varArgs","to","nextSource","nextKey","NodeTypes","XPathParser","rhs","OrOperation","AndOperation","EqualsOperation","NotEqualOperation","LessThanOperation","GreaterThanOperation","LessThanOrEqualOperation","GreaterThanOrEqualOperation","PlusOperation","MinusOperation","MultiplyOperation","DivOperation","ModOperation","UnaryMinusOperation","BarOperation","PathExpr","Step","NodeTest","Utilities","XString","XNumber","FunctionCall","LocationPath","VariableReference","s1","types","number","delimiter","literal","XPathException","last","res","tokenPos","state","tokenType","tokenValue","num","s_","XPath","setIfUnset","obj","prop","Expression","UnaryOperation","BinaryOperation","lhs","b","filterPreds","locpath","findRoot","applyPredicates","predicates","ctx","inNodes","pred","xpc","firstNode","ownerDoc","getPrefixForNamespaceNode","attrNode","nm","step","newNodes","nnm","st","XPathNamespace","outer","applyStepWithPredicates","REVERSE_AXES","applyStepToNodes","context","steps","locationPath","startNodes","XPathContext","filterResult","filterStr","elts","elt","j","an","abs","axis","nodetest","preds","type","members","ctor","newType","nodeTypes","stringVal","nNamespace","nLocalName","nameParts","parts","FunctionResolver","Operators","r","XBoolean","padSmallNumber","numberStr","exponent","padLargeNumber","zerosToAppend","strValue","AVLTree","ldepth","rdepth","lldepth","lrdepth","rrdepth","rldepth","nodeBefore","rightBefore","leftBefore","nodeOrder","n1","n2","cpos","d1","d2","m1","m2","n1Par","n2Par","n1isAttr","isAttributeLike","n2isAttr","cn","n1Compare","n2Compare","o","ret","nt","self","oInvert","lop","rop","vr","nr","fr","VariableResolver","NamespaceResolver","newProps","ln","thisArg","Functions","aname","ids","eNode","s2","eValue","eFrom","eTo","from","cMap","lang","val","qn","useDefault","first","del","getMessage","exception","err","XPathExpression","XPathNSResolverWrapper","XPathResult","NodeXPathNSResolver","installDOM3XPathSupport","shouldInstall","parser","defaultNSResolver","defaultFunctionResolver","defaultVariableResolver","makeNSResolverFromFunction","makeNSResolverFromObject","makeNSResolverFromMap","makeNSResolver","resolver","convertValue","makeEvaluator","arg","makeFunctionResolverFromFunction","found","makeFunctionResolverFromObject","makeFunctionResolverFromMap","makeFunctionResolver","makeVariableResolverFromFunction","makeVariableResolver","copyIfPresent","makeContext","evaluate","parsedExpression","evaluatorPrototype","parsed","single","mappings","expression","isArrayOfNodes","isNodeOfType","EXAMPLE_VIDEO_LINK_EMBEDDED","EXAMPLE_LINK_EMBEDDED","EXAMPLE_APRIMO_ICON","EXAMPLE_APRIMO_IMAGE","EXAMPLE_VIDEO_FILE","EXAMPLE_APRIMO_ORIGINAL_IMAGE","EXAMPLE_PES_IMAGE","EXAMPLE_APRIMO_VIDEO","EXTERNAL_IMAGE_URL_PATTERN"],"mappings":"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ACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,sCACR,EAEIA,EAAY,kBAAoB,CAC5B,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,wCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,wCACA,wCACA,wCACA,wCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,uCACA,4DACA,uCACA,uCACA,uCACA,sCACR,EAEIA,EAAY,UAAY,CACpB,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCACA,gCAC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pBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MACLA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAC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","x_google_ignoreList":[1,2,3,4,5,6]}